Skip to content

refactor: add SDK transcript identity target API#95030

Merged
jalehman merged 9 commits into
mainfrom
clawdbot-d02.1.9.1.20-24/31b-sdk-transcript-identity-target-api
Jun 20, 2026
Merged

refactor: add SDK transcript identity target API#95030
jalehman merged 9 commits into
mainfrom
clawdbot-d02.1.9.1.20-24/31b-sdk-transcript-identity-target-api

Conversation

@jalehman

@jalehman jalehman commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

What

Adds one combined public SDK transcript runtime API bundle for Path 3. This supersedes #89261 and #89262 by exposing the coherent contract in a single review unit: stable transcript identity plus scoped transcript target/read/write/publish/lock helpers.

Why

#89261 and #89262 were split across a stale stack, but the public API is one contract. Plugins need identity helpers and scoped target writers together so reads, appends, update publishes, and write locks bind to the same session transcript target without treating sessionFile as durable identity. The compatibility behavior remains additive and limited to callers that already receive active transcript artifacts.

Changes

  • Add transcript runtime SDK subpath
  • Add transcript memory keys
  • Add scoped target/write helpers
  • Keep identity reads read-only
  • Re-export memory keys from lightweight hit subpath
  • Update SDK docs and metadata
  • Refresh plugin SDK API baseline

Changes Walkthrough

File Change
src/plugin-sdk/session-transcript-runtime.ts Adds public identity, target, read, append, publish, and lock helpers
src/config/sessions/transcript-append.ts Adds scoped append transaction helper over existing write lock and FIFO
src/config/sessions/session-accessor.ts Preserves malformed-line tolerance for parsed transcript reads
src/plugin-sdk/session-transcript-hit.ts Re-exports transcript memory hit key helpers from a lightweight contract
src/plugin-sdk/session-transcript-memory-hit.ts Hosts shared memory key helpers without transcript writer imports
docs/plugins/sdk-runtime.md Documents the combined transcript runtime contract
docs/plugins/sdk-subpaths.md Lists the new SDK subpath
package.json / scripts/lib/plugin-sdk-entrypoints.json Publish the SDK subpath
docs/.generated/plugin-sdk-api-baseline.sha256 Refreshes the public API baseline hash

Verification

  • pnpm docs:list - passed after workspace deps installed
  • node scripts/run-vitest.mjs src/plugin-sdk/session-transcript-runtime.test.ts src/plugin-sdk/session-transcript-hit.test.ts src/config/sessions/session-accessor.test.ts - passed
  • node scripts/sync-plugin-sdk-exports.mjs --check - passed
  • node scripts/check-plugin-sdk-subpath-exports.mjs - passed
  • node --max-old-space-size=8192 --import tsx scripts/generate-plugin-sdk-api-baseline.ts --check - passed
  • node scripts/check-session-accessor-boundary.mjs - passed
  • ./node_modules/.bin/oxfmt --check --threads=1 ... - passed
  • node scripts/format-docs.mjs --check docs/plugins/sdk-runtime.md docs/plugins/sdk-subpaths.md - passed
  • node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json ... - passed
  • node scripts/run-tsgo.mjs -p tsconfig.core.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/sdk-transcript-api-core.tsbuildinfo - passed
  • node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.core.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/sdk-transcript-api-core-test.tsbuildinfo - passed
  • git diff --check - passed
  • .agents/skills/autoreview/scripts/autoreview --mode local --base upstream/main ... - first run found a read-side mutation bug; fixed and retested
  • .agents/skills/autoreview/scripts/autoreview --mode local --base upstream/main ... - clean

Refs #88838.
Supersedes #89261.
Supersedes #89262.

Real behavior proof

Behavior addressed: Public SDK transcript runtime contract for Path 3: stable transcript identity plus scoped target/read/write/lock helpers, including deprecated sessionFile compatibility for callers that already receive an active transcript artifact.

Real environment tested: Local PR checkout on macOS, PR head 1125743c702f0c66c609ff343090a0a0f7556385, Node v24.15.0. The proof imported the built package subpaths after corepack pnpm build.

Exact steps or command run after this patch:

node scripts/run-vitest.mjs src/plugin-sdk/session-transcript-runtime.test.ts src/plugin-sdk/session-transcript-hit.test.ts test/scripts/plugin-sdk-surface-report.test.ts
node scripts/check-plugin-sdk-subpath-exports.mjs
node --max-old-space-size=8192 scripts/plugin-sdk-surface-report.mjs --check
node scripts/sync-plugin-sdk-exports.mjs --check
./node_modules/.bin/oxfmt --check --threads=1 src/plugin-sdk/session-transcript-memory-hit.ts src/plugin-sdk/session-transcript-hit.ts src/plugin-sdk/session-transcript-hit.test.ts src/plugin-sdk/session-transcript-runtime.ts src/plugin-sdk/session-transcript-runtime.test.ts
node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/plugin-sdk/session-transcript-memory-hit.ts src/plugin-sdk/session-transcript-hit.ts src/plugin-sdk/session-transcript-hit.test.ts src/plugin-sdk/session-transcript-runtime.ts src/plugin-sdk/session-transcript-runtime.test.ts
node scripts/run-tsgo.mjs -p tsconfig.core.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/sdk-transcript-api-core.tsbuildinfo
node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.core.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/sdk-transcript-api-core-test.tsbuildinfo
git diff --check
corepack pnpm build
node --input-type=module <<'NODE'
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
import {
  appendSessionTranscriptMessageByIdentity,
  formatSessionTranscriptMemoryHitKey,
  parseSessionTranscriptMemoryHitKey,
  publishSessionTranscriptUpdateByIdentity,
  readSessionTranscriptEvents,
  resolveSessionTranscriptIdentity,
  resolveSessionTranscriptMemoryHitKeyToSessionKeys,
  resolveSessionTranscriptTarget,
  withSessionTranscriptWriteLock,
} from 'openclaw/plugin-sdk/session-transcript-runtime';
import {
  formatSessionTranscriptMemoryHitKey as formatHitSubpathKey,
  parseSessionTranscriptMemoryHitKey as parseHitSubpathKey,
} from 'openclaw/plugin-sdk/session-transcript-hit';
import { getSessionEntry, upsertSessionEntry } from 'openclaw/plugin-sdk/session-store-runtime';
// Creates a temp sessions.json + active transcript JSONL, resolves identity,
// reads malformed-tolerant events, appends by identity, appends under lock,
// publishes with stale caller-supplied identity metadata, verifies persisted
// bytes and public shapes, then removes the temp root.
NODE
.agents/skills/autoreview/scripts/autoreview --mode local --base upstream/main --prompt 'Review only the local fix for PR #95030: memory hit key helpers were moved out of session-transcript-runtime so session-transcript-hit no longer imports the writer/read-lock runtime. Check public SDK export compatibility, module-load topology, and tests. Treat broader PR design questions outside this local patch as already tracked unless this patch regresses them.'

Evidence after fix: Focused Vitest passed 2 shards with 42 tests. SDK subpath/export/surface checks passed with public callable exports budgeted at 5183. Oxfmt, oxlint, both tsgo wrappers, git diff --check, and corepack pnpm build passed. The standalone package-import proof exited 0 and printed:

{
  "importSurface": "openclaw/plugin-sdk/session-transcript-runtime",
  "hitSubpathImportSurface": "openclaw/plugin-sdk/session-transcript-hit",
  "memoryKey": "transcript:main:proof-session%3Acurrent-head",
  "hitSubpathSameKey": true,
  "parsedAgentId": "main",
  "hitParsedAgentId": "main",
  "resolvedKeys": ["agent:main:proof"],
  "identityReturnedSessionFile": false,
  "targetReturnedSessionFile": false,
  "targetKind": "active-session-file",
  "lockedTargetReturnedSessionFile": false,
  "beforeCount": 2,
  "malformedLineSkipped": true,
  "appendReturnedMessage": true,
  "afterCount": 4,
  "persistedContainsAppend": true,
  "persistedContainsLockAppend": true,
  "publishWithStaleInputCompleted": true,
  "finalStoreSessionFileUnchanged": true
}
{"cleanupRemoved":true}

Autoreview result: .agents/skills/autoreview/scripts/autoreview --mode local --base upstream/main ... exited 0: autoreview clean: no accepted/actionable findings reported; overall patch correct, confidence 0.84.

Observed result after fix: The built public package export resolved from openclaw/plugin-sdk/session-transcript-runtime, and the existing hit subpath resolved the same memory key helpers without importing the transcript runtime writer/read-lock path. Identity, target, and locked target helpers returned public shapes without sessionFile. Reads skipped malformed JSONL rows, append and write-lock helpers persisted to the active transcript target, publish helpers completed while overriding stale caller-supplied publish identity internally, and cleanup removed the temporary proof state.

What was not tested: No third-party plugin package was installed, no future SQLite runtime flip was exercised, and no broad Crabbox/Testbox matrix was run for this narrow import-boundary fix. The proof used the current built package and focused SDK/runtime checks rather than restarting the local live gateway. A full local pnpm test run was also attempted on this machine and failed in unrelated provider, tooling, infra, media, iMessage, and security shards; the transcript SDK tests and SDK surface checks pass after the budget correction.

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 20, 2026, 1:27 PM ET / 17:27 UTC.

Summary
The PR adds a public openclaw/plugin-sdk/session-transcript-runtime subpath with transcript identity, target/read/write/publish/lock helpers, memory-hit exports, docs, export metadata, API baseline updates, and focused tests.

PR surface: Source +406, Tests +441, Docs +3, Config +4, Generated 0, Other +5. Total +859 across 14 files.

Reproducibility: not applicable. This is a public SDK/API refactor PR rather than a bug report; the review target is API behavior, proof quality, and merge risk.

Review metrics: 1 noteworthy metric.

  • SDK Surface Budget: +1 public entrypoint, +30 public exports, +10 public function exports, +1 deprecated-export entrypoint budget. The budget deltas quantify that this is a real public SDK expansion maintainers should consciously accept before merge.

Stored data model
Persistent data-model change detected: serialized state: src/config/sessions/session-accessor.ts, serialized state: src/config/sessions/transcript-append.ts, serialized state: src/plugin-sdk/session-transcript-hit.test.ts, serialized state: src/plugin-sdk/session-transcript-hit.ts, serialized state: src/plugin-sdk/session-transcript-memory-hit.ts, serialized state: src/plugin-sdk/session-transcript-runtime.test.ts, and 6 more. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #88838
Summary: This PR is a candidate implementation slice for the broader Path 3 session/transcript SQLite accessor-seam migration; the earlier split PRs are superseded by this combined review unit.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Record maintainer acceptance of the public transcript SDK boundary before merge.

Risk before merge

  • [P1] Once released, the new SDK subpath, helper names, behavior, and deprecated sessionFile compatibility parameter become third-party plugin compatibility constraints.
  • [P1] The helpers intentionally expose trusted-plugin read/write/publish/lock access to persistent transcript state, so maintainers need to accept the plugin data boundary and target-binding semantics before merge.
  • [P1] The proof is strong for the current file-backed built package, but it does not prove a separately installed third-party plugin package or the future SQLite-backed implementation.

Maintainer options:

  1. Accept The SDK Contract
    A maintainer can approve the new subpath as the intended plugin contract after confirming the compatibility window and transcript access boundary are acceptable.
  2. Narrow The Public Surface
    If write, publish, or lock helpers are too broad for the first public release, remove or defer those exports while keeping only the identity/read portion maintainers are ready to support.
  3. Pause Behind The Migration Tracker
    If the API should wait for more Path 3 migration slices, keep this PR open or pause it under the canonical tracker rather than freezing the SDK now.

Next step before merge

  • [P2] The next action is human maintainer judgment on the public SDK transcript contract; no narrow automated code repair is indicated.

Security
Cleared: No concrete supply-chain, secrets, workflow, dependency, or code-execution regression was found; trusted-plugin transcript access remains a maintainer merge-risk decision.

Review details

Best possible solution:

Merge only after maintainers explicitly accept this transcript SDK contract as the intended Path 3 public boundary and are comfortable with the upgrade, security-boundary, and session-state implications.

Do we have a high-confidence way to reproduce the issue?

Not applicable. This is a public SDK/API refactor PR rather than a bug report; the review target is API behavior, proof quality, and merge risk.

Is this the best way to solve the issue?

Yes, contingent on maintainer API acceptance. The combined identity/target/read/write/lock subpath is a coherent shape over the existing accessor seam and avoids the narrower raw-export approach, but it is still a public contract decision.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against ad5d2cbc1bcb.

Label changes

Label justifications:

  • P2: The PR expands a public SDK/session-state surface with bounded but real compatibility and data-boundary impact.
  • merge-risk: 🚨 compatibility: The diff adds a documented public plugin SDK subpath and transitional sessionFile parameter that third-party plugins may depend on after release.
  • merge-risk: 🚨 session-state: The new helpers can read, append, publish, and lock persistent transcript state by scoped session identity, so target-binding mistakes could affect session history.
  • merge-risk: 🚨 security-boundary: The new public helpers expand trusted-plugin transcript read/write/publish operations and require maintainer acceptance of that data boundary.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body includes current-head terminal proof from a built package covering import resolution, memory keys, read, append, lock, publish, and cleanup behavior.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes current-head terminal proof from a built package covering import resolution, memory keys, read, append, lock, publish, and cleanup behavior.
Evidence reviewed

PR surface:

Source +406, Tests +441, Docs +3, Config +4, Generated 0, Other +5. Total +859 across 14 files.

View PR surface stats
Area Files Added Removed Net
Source 5 408 2 +406
Tests 2 441 0 +441
Docs 2 4 1 +3
Config 1 4 0 +4
Generated 1 2 2 0
Other 3 8 3 +5
Total 14 867 8 +859

What I checked:

  • Repository policy applied: Root policy was read fully and treats plugin APIs, auth/session state, persisted preferences, config, migrations, and fallback behavior as compatibility-sensitive review surfaces. (AGENTS.md:1, ad5d2cbc1bcb)
  • Scoped SDK policy applied: The scoped SDK guide defines src/plugin-sdk as the public contract between plugins and core and requires narrow, documented, aligned public subpaths with cheap module load. (src/plugin-sdk/AGENTS.md:1, ad5d2cbc1bcb)
  • Live PR state requires human handling: Live GitHub state shows the PR open at head e93458f39e663d31857b9b6fd2e84559e28531c7 with maintainer, proof: sufficient, and compatibility/session-state/security-boundary merge-risk labels. (e93458f39e66)
  • Current main does not already implement the new subpath: Current main has plugin-sdk/session-transcript-hit and internal transcript helpers, but no ./plugin-sdk/session-transcript-runtime package export, so the PR is not obsolete on main. (package.json:982, ad5d2cbc1bcb)
  • Public SDK export is added: The PR adds ./plugin-sdk/session-transcript-runtime to package exports and session-transcript-runtime to the SDK entrypoint list. (package.json:978, e93458f39e66)
  • Runtime contract is coherent over accessor seam: The new SDK module exposes identity, target, read, append, publish, and write-lock helpers while keeping sessionFile marked as deprecated active-artifact compatibility. (src/plugin-sdk/session-transcript-runtime.ts:41, e93458f39e66)

Likely related people:

  • jalehman: Recent merged history includes Path 3/session accessor and SDK session compatibility slices that this public transcript SDK PR builds on; this goes beyond simply opening the current PR. (role: migration stack contributor; confidence: high; commits: d216f7c876dd, f1cab04966fa, 49e6f5a524bc; files: src/config/sessions/session-accessor.ts, src/plugin-sdk, docs/plugins/sdk-runtime.md)
  • vincentkoc: Recent history touches session accessor, transcript append, and session helper cleanup around the current-main code paths used by the PR. (role: recent area contributor; confidence: medium; commits: 6f5fdb1e6bea, cc451f98cbae, e2292d18e215; files: src/config/sessions/session-accessor.ts, src/config/sessions/transcript-append.ts, src/config/sessions/transcript-write-context.ts)
  • steipete: Recent history includes plugin SDK runtime documentation, session transcript helper docs, and broader plugin SDK boundary/import-surface refactors relevant to a new public subpath. (role: adjacent SDK and docs contributor; confidence: medium; commits: c1b49bb1d0e6, feffb6d02ff8, c74fd6f01540; files: docs/plugins/sdk-runtime.md, docs/plugins/sdk-subpaths.md, src/plugin-sdk)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jun 19, 2026
@jalehman
jalehman marked this pull request as ready for review June 19, 2026 17:00
@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 19, 2026
@jalehman

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 19, 2026
Comment thread docs/plugins/sdk-runtime.md Outdated

Prefer `getSessionEntry(...)`, `listSessionEntries(...)`, `patchSessionEntry(...)`, or `upsertSessionEntry(...)` for session workflows. These helpers address sessions by agent/session identity so plugins do not depend on the legacy `sessions.json` storage shape. Use `preserveActivity: true` for metadata-only patches that should not refresh session activity, and `replaceEntry: true` only when the callback returns a complete entry and deleted fields must stay deleted.

For transcript reads and writes, import `openclaw/plugin-sdk/session-transcript-runtime` and use `resolveSessionTranscriptIdentity(...)`, `resolveSessionTranscriptTarget(...)`, `readSessionTranscriptEvents(...)`, `appendSessionTranscriptMessageByIdentity(...)`, or `withSessionTranscriptWriteLock(...)` with `{ agentId, sessionKey, sessionId }`. These APIs return stable transcript identity and storage-neutral memory hit keys without exposing `sessionFile` as the identity. `sessionFile` is deprecated transitional compatibility for plugins that already own an active transcript file artifact during the pre-SQLite window and need scoped helpers to bind to that artifact; new code should use structured transcript identity before the SQLite storage flip.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This reads like implementation notes moreso than actual public documentation.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in f3d4c70: rewrote the SDK runtime docs to describe the caller-visible transcript operations and when to pass an active transcript artifact, without implementation/storage migration wording.

Comment thread docs/plugins/sdk-subpaths.md Outdated
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Narrow text/markdown chunking helpers |
| `plugin-sdk/session-store-runtime` | Session workflow helpers (`getSessionEntry`, `listSessionEntries`, `patchSessionEntry`, `upsertSessionEntry`), legacy session store path/session-key helpers, updated-at reads, and transition-only whole-store/file-path compatibility helpers |
| `plugin-sdk/session-transcript-runtime` | Transcript identity, scoped target/read/write helpers, and storage-neutral memory hit key helpers that do not expose `sessionFile` as identity |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See previous comment. No need to mention storage-neutral or not exposing sessionFile

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in f3d4c70: simplified the subpath row to list the public capabilities only.

return await activeLockRunner(() => appendSessionTranscriptMessageLocked(params));
}

export async function runSessionTranscriptAppendTransaction<T>(

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is public interface it should have a docstring

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in f3d4c70: added a docstring for runSessionTranscriptAppendTransaction.

}

/**
* Builds the storage-neutral memory hit key for one session transcript.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stop talking about storage-neutral. That's an implementation detail.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in f3d4c70: removed storage implementation language from the public SDK docstrings and kept them focused on behavior.

@jalehman

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@jalehman

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@jalehman
jalehman force-pushed the clawdbot-d02.1.9.1.20-24/31b-sdk-transcript-identity-target-api branch 2 times, most recently from b562ce5 to cb9f329 Compare June 19, 2026 17:56
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jun 19, 2026
@clawsweeper clawsweeper Bot added merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. labels Jun 19, 2026
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Jun 19, 2026
@jalehman

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 20, 2026
@jalehman

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@jalehman
jalehman merged commit 7a0d36f into main Jun 20, 2026
174 of 176 checks passed
@jalehman
jalehman deleted the clawdbot-d02.1.9.1.20-24/31b-sdk-transcript-identity-target-api branch June 20, 2026 21:01
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 21, 2026
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Jun 24, 2026
…26.6.10) (#1256)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://github.com/openclaw/openclaw)) | patch | `2026.6.9` → `2026.6.10` |

---

### Release Notes

<details>
<summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary>

### [`v2026.6.10`](https://github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#2026610)

[Compare Source](openclaw/openclaw@v2026.6.9...v2026.6.10)

##### Highlights

- **Automatic fast mode for talks:** OpenClaw can enable fast mode for short conversational turns, then return to normal mode for longer runs with bounded fallback and delivery behavior. ([#&#8203;85104](openclaw/openclaw#85104)) Thanks [@&#8203;alexph-dev](https://github.com/alexph-dev) and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- **More reliable model routing:** Zai model synthesis, GLM overload failover, and native reasoning-level selection now follow the active model catalog more consistently. ([#&#8203;94461](openclaw/openclaw#94461), [#&#8203;93241](openclaw/openclaw#93241), [#&#8203;94067](openclaw/openclaw#94067), [#&#8203;94136](openclaw/openclaw#94136)) Thanks [@&#8203;Pandah97](https://github.com/Pandah97), [@&#8203;chrysb](https://github.com/chrysb), [@&#8203;0xghost42](https://github.com/0xghost42), [@&#8203;zhengli0922](https://github.com/zhengli0922), [@&#8203;openperf](https://github.com/openperf), [@&#8203;civiltox](https://github.com/civiltox), and [@&#8203;BorClaw](https://github.com/BorClaw).
- **Safer session and channel state:** channel switches reset stale origin fields, and cron delivery awareness stays attached to the target session. ([#&#8203;95328](openclaw/openclaw#95328), [#&#8203;93580](openclaw/openclaw#93580)) Thanks [@&#8203;ZengWen-DT](https://github.com/ZengWen-DT), [@&#8203;jalehman](https://github.com/jalehman), [@&#8203;gorkem2020](https://github.com/gorkem2020), and [@&#8203;scotthuang](https://github.com/scotthuang).
- **Trusted policies survive hook composition:** composed hook registries keep the trusted tool policies required by approval-sensitive flows. ([#&#8203;94545](openclaw/openclaw#94545)) Thanks [@&#8203;jesse-merhi](https://github.com/jesse-merhi).

##### Changes

- **Agent and channel runtime:** fast-mode state now survives retries, fallback transitions, progress events, and embedded/CLI/ACP normalization; session and channel routing retain the current target and delivery context. ([#&#8203;85104](openclaw/openclaw#85104), [#&#8203;93580](openclaw/openclaw#93580), [#&#8203;95328](openclaw/openclaw#95328)) Thanks [@&#8203;alexph-dev](https://github.com/alexph-dev), [@&#8203;vincentkoc](https://github.com/vincentkoc), [@&#8203;scotthuang](https://github.com/scotthuang), [@&#8203;ZengWen-DT](https://github.com/ZengWen-DT), [@&#8203;jalehman](https://github.com/jalehman), and [@&#8203;gorkem2020](https://github.com/gorkem2020).
- **Provider behavior:** model catalogs now supply the correct Zai base URL, overload classification, and native reasoning controls for live-discovered models. ([#&#8203;94461](openclaw/openclaw#94461), [#&#8203;93241](openclaw/openclaw#93241), [#&#8203;94067](openclaw/openclaw#94067), [#&#8203;94136](openclaw/openclaw#94136)) Thanks [@&#8203;Pandah97](https://github.com/Pandah97), [@&#8203;chrysb](https://github.com/chrysb), [@&#8203;0xghost42](https://github.com/0xghost42), [@&#8203;zhengli0922](https://github.com/zhengli0922), [@&#8203;openperf](https://github.com/openperf), [@&#8203;civiltox](https://github.com/civiltox), and [@&#8203;BorClaw](https://github.com/BorClaw).

##### Fixes

- **Fast-mode and policy correctness:** fallback cutoffs and reset notices are bounded, repeated progress events remain visible, Codex service-tier state is normalized, and trusted policies are not lost when hook registries are composed. ([#&#8203;85104](openclaw/openclaw#85104), [#&#8203;94545](openclaw/openclaw#94545)) Thanks [@&#8203;alexph-dev](https://github.com/alexph-dev), [@&#8203;vincentkoc](https://github.com/vincentkoc), and [@&#8203;jesse-merhi](https://github.com/jesse-merhi).
- **Model and delivery edge cases:** Zai and GLM failover paths use the right runtime metadata, while stale channel-origin state no longer leaks across session changes. ([#&#8203;94461](openclaw/openclaw#94461), [#&#8203;93241](openclaw/openclaw#93241), [#&#8203;95328](openclaw/openclaw#95328)) Thanks [@&#8203;Pandah97](https://github.com/Pandah97), [@&#8203;chrysb](https://github.com/chrysb), [@&#8203;0xghost42](https://github.com/0xghost42), [@&#8203;zhengli0922](https://github.com/zhengli0922), [@&#8203;ZengWen-DT](https://github.com/ZengWen-DT), [@&#8203;jalehman](https://github.com/jalehman), and [@&#8203;gorkem2020](https://github.com/gorkem2020).
- **Provider plugin onboarding:** setup refreshes provider plugin registry metadata after installing setup-selected provider plugins, so auth continuation uses the newly installed provider instead of stale registry state. ([#&#8203;95792](openclaw/openclaw#95792)) Thanks [@&#8203;snowzlmbot](https://github.com/snowzlmbot).

##### Complete contribution record

This audited record covers the complete v2026.6.9..HEAD history: 12 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.

##### Pull requests

- **PR [#&#8203;86627](openclaw/openclaw#86627 Keep core doctor health in contribution order. Thanks [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- **PR [#&#8203;93580](openclaw/openclaw#93580 fix: preserve cron delivery awareness for target sessions. Thanks [@&#8203;scotthuang](https://github.com/scotthuang) and [@&#8203;jalehman](https://github.com/jalehman).
- **PR [#&#8203;95030](openclaw/openclaw#95030 refactor: add SDK transcript identity target API. Thanks [@&#8203;jalehman](https://github.com/jalehman).
- **PR [#&#8203;94838](openclaw/openclaw#94838 refactor(copilot): complete harness lifecycle parity. Thanks [@&#8203;vincentkoc](https://github.com/vincentkoc).
- **PR [#&#8203;95328](openclaw/openclaw#95328 fix(sessions): reset stale per-channel origin fields on channel switch. Related [#&#8203;95325](openclaw/openclaw#95325). Thanks [@&#8203;ZengWen-DT](https://github.com/ZengWen-DT) and [@&#8203;jalehman](https://github.com/jalehman) and [@&#8203;gorkem2020](https://github.com/gorkem2020).
- **PR [#&#8203;94461](openclaw/openclaw#94461 fix(zai): fall back to manifest baseUrl for synthesized GLM-5 models. Related [#&#8203;94269](openclaw/openclaw#94269). Thanks [@&#8203;Pandah97](https://github.com/Pandah97) and [@&#8203;chrysb](https://github.com/chrysb).
- **PR [#&#8203;93241](openclaw/openclaw#93241 fix(agents): classify Zhipu GLM overload as overloaded for failover. Related [#&#8203;93211](openclaw/openclaw#93211). Thanks [@&#8203;0xghost42](https://github.com/0xghost42) and [@&#8203;zhengli0922](https://github.com/zhengli0922).
- **PR [#&#8203;94067](openclaw/openclaw#94067 fix(channels): resolve native /think menu levels via runtime catalog for live-discovered models. Related [#&#8203;93835](openclaw/openclaw#93835). Thanks [@&#8203;openperf](https://github.com/openperf) and [@&#8203;civiltox](https://github.com/civiltox).
- **PR [#&#8203;94136](openclaw/openclaw#94136 fix(zai): expose GLM-5.2 reasoning levels \[AI-assisted]. Thanks [@&#8203;BorClaw](https://github.com/BorClaw).
- **PR [#&#8203;85104](openclaw/openclaw#85104 feat: fast talks auto mode. Related [#&#8203;85087](openclaw/openclaw#85087). Thanks [@&#8203;alexph-dev](https://github.com/alexph-dev).
- **PR [#&#8203;94545](openclaw/openclaw#94545 fix: keep trusted policies with hook registry. Thanks [@&#8203;jesse-merhi](https://github.com/jesse-merhi).
- **PR [#&#8203;95792](openclaw/openclaw#95792 fix(onboard): refresh provider plugin registry after setup installs. Related [#&#8203;95765](openclaw/openclaw#95765). Thanks [@&#8203;snowzlmbot](https://github.com/snowzlmbot).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1256
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation maintainer Maintainer-authored PR merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P2 Normal backlog priority with limited blast radius. plugin: file-transfer proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts size: L status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant