Peter Steinberger
319df0e7a1
test: trim plugin test duplicates ( #126917 )
2026-08-20 18:07:27 -07:00
Vito Cappello
1b9d3ac57d
fix(claude-cli): apply thinking and keep live sessions warm ( #125528 )
...
* fix(models): preserve CLI runtime thinking capabilities
* fix(models): preserve configured thinking overrides
* fix: keep Claude live CLI process warm across captured turns
MCP delivery capture no longer kills the warm Claude process after every
turn. Capture-key admission is fenced by grant activate/deactivate so
prompt-cache continuity can survive across messages.
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(claude-cli): apply thinking levels
* fix(claude-cli): materialize thinking capabilities
* test(claude-cli): cover warm thinking budget reuse
* test(models): restore prepared catalog contracts
* fix(agents): restore catalog test boundaries
* fix(agents): break prepared catalog import cycle
* refactor(gateway): extract model-choice runtime resolution into public-projection module
Keeps models-list-result.ts under the max-lines cap after the origin/main
merge by moving resolveModelChoiceAgentRuntime next to the projection
helpers it feeds.
Claude-Session: https://claude.ai/code/session_01QXUQuDVataA5o16kxNnmoX
* test(claude-cli): cover thinking cache reuse
* test(claude-cli): cover captured live reuse
* fix(claude-cli): rotate MCP grants across live turns
* fix(anthropic): respect mandatory adaptive thinking
* fix(claude-cli): restore warm MCP bearer
* fix(anthropic): keep Mythos adaptive thinking
* test(claude-cli): prove live MCP cache reuse
* test(claude-cli): align live cache coverage
* fix(claude-cli): reuse live sessions across MCP grant rotation
* test(claude-cli): satisfy cache lane static gates
* fix(claude-cli): preserve runtime thinking policy
* fix(thinking): honor concrete runtime policy
* fix(gateway): honor mandatory thinking in model list
* refactor(auto-reply): extract prepared catalog merge
* docs(cli-backend): document thinking execution input
* refactor(auto-reply): extract catalog lookup helper
* style(auto-reply): format catalog helper import
* fix(claude-cli): stabilize live context budget
* fix(auto-reply): type prepared context metadata
---------
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-08-20 06:44:49 -07:00
Peter Steinberger
3378e07d50
refactor(plugin-sdk): promote shared runtime primitives ( #126193 )
...
* refactor(plugin-sdk): promote shared runtime primitives
* test(codex): keep one attempt tools owner
2026-08-19 01:10:18 -07:00
Peter Steinberger
5ebfbbf8d7
fix(plugins): honor per-agent runtime config ( #124978 )
...
* fix(plugins): resolve per-agent config through SDK
* test(codex): preserve agent runtime exports
* test(telegram): make default owner explicit
* refactor(plugins): use lightweight agent scope runtime
* fix(codex): preserve multi-agent execution ownership
* chore(plugin-sdk): record approved agent scope exports
* fix(codex): keep scoped sandbox ownership authoritative
* fix(codex): preserve agent scope in native side actions
* fix(ci): avoid counting node check as environment variable
2026-08-17 01:53:08 -07:00
Peter Steinberger
df2b83f7ae
refactor(anthropic): split session catalog into concept modules ( #124342 )
...
* refactor(anthropic): split session-catalog into concept modules
Follow the #124178 sibling seam pattern while preserving behavior. Remove the max-lines suppression and baseline entry after the split.
* refactor(anthropic): own record caches in session-catalog-discovery
The record-shaped caches (catalogDiscoveryCache, claudeSessionScanCache,
their entry types, bounds, and TTLs) are consumed only by discovery; moving
them out of scan removes the scan->discovery type-import edge flagged by the
madge topology gate and leaves scan as record-agnostic fs primitives.
2026-08-15 19:18:03 -07:00
Vito Cappello
7f93011562
fix: preserve Claude CLI prompt cache reuse across turns ( #124300 )
...
* fix: keep claude-cli prompt-cache prefix stable across turns
Claude CLI has no cache_control breakpoint, so mashed per-turn system
prompts rewrote the native prefix and burned cache hits on follow-ups.
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(cli): scope Claude prompt cache suffix
* docs: scope Claude CLI cache guidance
* test(cli): cover Claude cache prompt modes
* fix: gate Claude CLI prompt cache flag
* docs: clarify Claude CLI cache flag gate
* fix: preserve Claude CLI system prompt roles
* fix(claude-cli): close cache flag compatibility gaps
* fix(claude-cli): reject prerelease cache flag versions
---------
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-15 18:17:17 -07:00
Peter Steinberger
7862a5da15
refactor(session-catalog): split codex catalog modules and unify adoption coordination ( #124178 )
...
* refactor(session-catalog): unify adoption coordination
* refactor(codex): split session catalog modules
* fix(anthropic): narrow adopted history for import
The coordinator migration hoisted history to an optional outer binding;
afterCreate needs the definite array from the create scope.
Also drop the retired session-catalog max-lines ratchet entry.
2026-08-15 06:40:40 -07:00
WhatsSkiLL
632581477f
fix(session-catalog): preserve explicit agent ownership across UI and CLI ( #123899 )
...
* fix(session-catalog): preserve explicit agent ownership across UI and CLI
* fix(session-catalog): repair owner routing regressions
* Fix-session-catalog-CI-checks
* test(ui): split chat catalog pane coverage
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* refactor(session-catalog): bind Codex homes per request
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* refactor(session-catalog): centralize owner resolution
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* fix(codex): resolve session fork against the adopted home
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* refactor(ui): extract chat session discussion
* test(sessions): stabilize archive worker responsiveness check
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-15 04:47:28 -07:00
Peter Steinberger
5d601233df
refactor(types): remove chained type assertions in extensions ( #124079 )
...
* refactor(types): remove chained assertions in extensions
* fix(codex): preserve canonical binding identity
2026-08-15 01:39:26 -07:00
Peter Steinberger
6072a838a1
fix(anthropic): read keychain auth during non-interactive setup ( #123839 )
2026-08-14 14:31:15 -07:00
Vito Cappello
f5c46de8ac
fix(compaction): allow Claude CLI sessions to compact without API keys ( #120496 )
...
* fix(compaction): route manual CLI compaction natively
* fix(compaction): harden native CLI control operations
* fix(compaction): honor Claude native completion signals
* chore(plugin-sdk): refresh API baseline
* test(compaction): assert native session binding
* fix(compaction): preserve control session reuse
* fix(plugin-sdk): preserve boolean compaction ownership
* fix(agents): preserve native compaction ownership
* fix(compaction): bypass model auth for native control
* test(compaction): isolate authless control fixture
* test(compaction): isolate auth bypass regression
* fix(compaction): bypass generic auth for native CLI control
* fix(compaction): preserve native rejection failover
* test(compaction): isolate native queue regressions
* test(compaction): prevent native auth mock leakage
* fix(cli): isolate control operations from skill env
---------
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-08-14 09:30:15 -07:00
Peter Steinberger
25d4807b38
feat(anthropic): opt-in server-side compaction (compact-2026-01-12) ( #123402 )
...
* feat(anthropic): add server-side compaction replay
* docs(anthropic): document server compaction
* test(anthropic): harden compaction live probe
Fix the live fixture baseUrl (the SDK appends /v1 itself), fail fast on
errored turns instead of silently looping, assert request-side injection
before capture, and log per-turn stream outcomes for live debugging.
* test(anthropic): keep live settings type module-local
* refactor(agents): split transcript replay sanitizers
* test(anthropic): move compaction live probe into plugin tree
* refactor(anthropic): consolidate compaction replay duplication
* test(anthropic): align compaction threshold host coverage
* test(anthropic): fabricate checkpoints via capture tracker
Keeps captureAnthropicCompaction module-local; knip flags exports whose
only consumers are tests.
2026-08-13 21:28:19 -07:00
Peter Steinberger
b54034d5c2
fix: isolated gateways list and open the operator's HOME Claude/Codex/OpenCode/Pi sessions ( #122983 )
...
* fix(sessions): isolated gateways no longer inherit HOME external session catalogs
A gateway on isolated state (custom OPENCLAW_STATE_DIR/CONFIG_PATH/OPENCLAW_HOME,
relocated home, or any named profile) listed, read, continued, archived, and
reopened the operator's real Claude Code/Codex/OpenCode/Pi sessions from the
process HOME. External catalogs now require the default install identity for
process-HOME scans: every catalog verb receives the isolation policy and rejects
HOME-fallback local targets, unknown providers fail closed unless they declare
supportsProcessHomeIsolation, and one structured warning records the skip.
Paired-node hosts and explicitly rooted stores (CLAUDE_CONFIG_DIR, CODEX_HOME,
OPENCODE_DB, Pi session dirs) keep working; default-identity gateways are
unchanged.
* fix(sessions): inject catalog HOME-isolation fact at registry construction
* chore(sdk): regenerate plugin API baselines after rebase
* chore(sdk): regenerate plugin API baselines after rebase
2026-08-13 01:12:03 -07:00
Peter Steinberger
79380000e0
refactor(plugin-sdk): remove test-only facades ( #122807 )
2026-08-12 13:57:07 -07:00
Peter Steinberger
b080dd1e76
refactor: consolidate coercion contracts ( #122458 )
...
* refactor: consolidate coercion contracts
Centralize exact string, record, numeric, date, Boolean, argument, and structured-error coercions while preserving call-site semantics.
Migrate canonical-name collisions and deprecated internal SDK bypasses, deleting 55 net production/tooling lines. Expand declaration ownership enforcement to 101 allowed helpers and add a narrow export-completeness audit.
* fix: preserve standalone script coercions
Keep copied Control UI tooling self-contained and retain the trusted release harness module-relative source seam when the harness runs against an old target cwd.
2026-08-11 23:26:37 -07:00
Peter Steinberger
a5420dfd91
fix(windows): launch npm-installed native session CLIs ( #122334 )
...
* fix(windows): resolve runnable npm launchers
* fix(windows): preserve npm shim argv in terminal sessions
2026-08-11 18:41:35 -07:00
Peter Steinberger
86bc5aa726
test(plugins): remove stale test plumbing ( #122175 )
2026-08-11 11:01:05 -07:00
Peter Steinberger
cad77fb39c
refactor: consolidate remaining coercion helpers ( #122020 )
2026-08-11 10:22:01 -07:00
Peter Steinberger
fa03d9b913
refactor: consolidate coercion helpers ( #121366 )
...
* refactor: consolidate coercion helpers
* fix: remove duplicate coercion imports
* fix: preserve serialized coercion guard
* chore: ratchet coercion helper carve-outs
* fix(test): keep gauntlet subprocess startup lean
* fix: preserve imported session timestamp semantics
* fix: preserve catalog timestamp string semantics
* chore: align plugin SDK surface ratchet
* fix: preserve trajectory and SDK string contracts
* fix(test): preserve QA record assertion semantics
* fix: complete standalone record guard rename
* refactor(cron): use canonical string coercion
* fix(acpx): preserve Pi timestamp parsing
* test(channels): adapt custody test harnesses
* test(telegram): classify media harness as test support
* test(acpx): split timestamp contract coverage
* test(channels): support generated custody contracts
* chore: ban the full coercion helper name set
Extends the declaration guard to all eleven consolidated helper names and
renames the cron schedule-identity readNumber wrapper to readScheduleInteger
so the banned generic name cannot regrow.
* fix(scripts): repair release-validation guard drift and lint cause
Restores the renamed isJsonRecord guard in assertTrustedWorkflowHarness after
main added isRecord call sites in parallel, and attaches the caught YAML error
as the thrown error cause (preserve-caught-error was red on main).
* fix: preserve Claude timestamp string semantics
* fix: preserve persisted timestamp string semantics
* fix: preserve date-first timestamp contracts
* fix(openai): harden delegation failure formatting
* chore: close coercion helper guard gaps
* test(openai): model non-error delegation rejection
* chore: refresh plugin SDK API contract
* fix(tasks): use canonical string field reader
* fix(ai): use canonical provider error field coercion
* fix(browser): migrate native bootstrap coercion
* docs(plugin-sdk): clarify text record export compatibility
* fix(gateway): normalize approval execution identity
* test(outbound): isolate message action poll harness
2026-08-11 00:02:18 -07:00
sunlit-deng
078f3a6d59
fix(sessions): complete bounded short reads ( #115106 )
...
Punchcard-Session: amber-brook-cedar-se
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-11 08:05:30 +08:00
Peter Steinberger
fd1b965f2b
refactor(plugins): remove orphan test API barrels ( #121761 )
...
* test(plugins): remove orphan test API barrels
* refactor(plugins): remove orphan test-only exports
* refactor(imessage): remove orphan test plugin
* test(plugins): remove stale package guard timeout
2026-08-10 16:42:34 -07:00
Vito Cappello
67e653e580
fix(anthropic): reject leaked Claude tool protocol output ( #120734 )
...
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
2026-08-09 15:30:38 -07:00
Peter Steinberger
af4ffb2e8e
fix: exact dated models work after gateway ready ( #121119 )
...
* fix(agents): publish exact configured model facts
* fix(agents): keep prepared model completion internal
* fix(agents): scope prepared model plugin lookup
* refactor(agents): split prepared model configured facts
* fix(agents): keep configured catalog types acyclic
2026-08-09 11:23:32 -07:00
Peter Steinberger
9a96375e60
feat(gateway): session-catalog terminal start plans behind cliAgents gate ( #121020 )
...
* feat(gateway): add session-catalog terminal start plans
* refactor(gateway): split catalog terminal start handler
* fix(gateway): enforce catalog terminal start eligibility
* test(gateway): split session catalog snapshot coverage
2026-08-09 08:13:39 -07:00
Peter Steinberger
00194139ba
refactor(providers): consolidate contract fixtures ( #114424 )
2026-08-09 07:07:47 -07:00
Peter Steinberger
8616c0c374
refactor: finish shared test helper migrations ( #120996 )
...
* test: finish shared helper migrations
* test: fix helper migration CI
* style: fix test import ordering
* test(acpx): restore deferred void types
* test: fix helper migrations after rebase
2026-08-09 06:00:06 -07:00
Peter Steinberger
e1ec95dcbf
refactor(auth): dedupe profile upserts and approval resolvers ( #120831 )
...
* refactor(auth): dedupe profile upserts and approval resolvers
* test(auth): mock canonical locked upsert
* test(auth): mock locked upsert during onboarding
2026-08-08 21:14:16 -07:00
Peter Steinberger
75dbe52e3e
refactor: one code path behind doctor legacy-state migrations ( #120716 )
...
* refactor(doctor): prefer manifest route-state owners
* refactor(doctor): unify config repair declarations
* refactor(doctor): unify legacy state migrations
* fix(doctor): satisfy migration pipeline guards
* fix(plugin-sdk): keep doctor adapter inside boundary
2026-08-08 18:23:15 -07:00
Peter Steinberger
8cb53c7b55
perf(doctor): keep bundled doctor contract closures dependency-light ( #120698 )
...
* perf(doctor): keep bundled doctor contract closures dependency-light
Doctor contract enumeration cold-loads each plugin's doctor-contract-api
closure via jiti, so a static value import of openclaw/plugin-sdk/runtime-doctor
pulled the state-db/kysely graph (~4.3s per closure) into
listPluginDoctorLegacyConfigRules / listPluginDoctorStateMigrationEntries.
- migrate all light doctor-contract closures (66 files) to the
dependency-light openclaw/plugin-sdk/runtime-doctor-migrations subpath
- voice-call: load detect/repairOpenClawStateDatabaseSchema* lazily inside
the migration bodies; keep only a type-only static runtime-doctor import
- matrix: split pure credential record shapes/normalizers into
credentials-state.ts so the doctor closure no longer imports the sync
plugin-state store through credentials-read
- guard: doctor-contract-closure-guard.test.ts now forbids static value
imports of runtime-doctor in closures alongside agent-runtime
* fix(matrix): keep credential revocation record type module-local
Knip production scan flags the export as consumer-less; the type is only
referenced by the exported union and revocation guard signature.
2026-08-08 17:51:31 -07:00
Peter Steinberger
da4a656cdb
improve: doctor migration checks no longer load every bundled plugin runtime ( #120678 )
...
* perf(plugins): declare doctor contract surfaces
* perf(doctor): slim migration import closures
* perf(plugins): narrow doctor declaration record surface and wire owner-test lane
Registry records carry only the doctorContract declaration instead of the whole
parsed manifest, and check:changed now selects the src/plugins-owned declaration
honesty and closure-guard tests for extension module/manifest changes so
cross-lane drift cannot pass PR classification.
* fix(doctor): keep control-plane dist imports require-safe
Keep doctor and channel control-plane chunks off exec-class dependencies, and enforce native require(esm) loading during postbuild.
* chore(plugin-sdk): regenerate API baseline
* chore(plugin-sdk): sync export ordering
* fix(plugins): satisfy doctor contract CI boundaries
* perf(doctor): make qqbot doctor closure dependency-light
qqbot was the last plugin above 5s in doctor state-migration enumeration
(~8s under tsx/jiti). The cost was not the state-key builder (already a
leaf): its doctor closure value-imported the runtime-doctor SDK barrel,
whose plugin-state-store/state-db re-exports pull kysely (~330 modules),
plus security-runtime for one fileExists (~200 modules), all resolved
per-module by jiti during enumeration.
Split the migration-define helpers and light re-exports into a new
private-local plugin-sdk/runtime-doctor-migrations subpath; runtime-doctor
re-exports it so its public surface is byte-identical (API baseline hash
unchanged). qqbot's doctor-contract and state-migrations now import only
the light subpath, swapping fileExists for the equivalent async
legacyStateFileExists already in the closure.
qqbot enumeration: ~8.0s/531 modules -> ~0.25s/18 modules.
* chore(plugin-sdk): drop private-local subpath from API baseline
runtime-doctor-migrations is private-local-only; the baseline tracks public
modules, and the earlier line was generated before the classification.
* fix(plugins): register runtime-doctor-migrations boundary paths
The private-local subpath list feeds the extension package boundary map;
the shared paths config and xai's derived overrides must carry the same
entry or the boundary contract test fails.
2026-08-08 13:29:18 -07:00
Peter Steinberger
48639663b0
chore(release): prepare 2026.8.1 ( #120375 )
2026-08-07 18:44:12 -07:00
Peter Steinberger
bc0c3fcd63
refactor(providers): shared generated-media download guard and binary-response adoption ( #120351 )
...
* fix(agents): cancel rejected provider binary bodies
* refactor(providers): share generated media downloads
* refactor(providers): adopt payload patch stream wrapper
* fix(providers): preserve generated media helper contracts
2026-08-07 15:45:53 -07:00
Peter Steinberger
b4a26783f7
refactor(test): consolidate duplicated requireRecord and provider HTTP mock helpers ( #119982 )
...
* refactor(test): consolidate duplicated test helpers
* test: remove stale record guard import
* fix(test): remove orphaned record guards
* refactor(test): keep record requirement messages exhaustively typed
* fix(test): keep packages/ai record guard package-local
2026-08-06 14:48:01 -07:00
Vincent Koc
eba4487b3a
improve(anthropic): reduce session catalog startup memory ( #119619 )
...
* perf(anthropic): lazy-load session catalog runtime
Punchcard-Session: coral-workshop-workshop-3f
* fix(anthropic): keep session catalog helpers private
Punchcard-Session: coral-workshop-workshop-3f
* docs(plugin-sdk): document catalog create target
Punchcard-Session: coral-workshop-workshop-3f
* fix(plugins): continue catalog target selection
Punchcard-Session: coral-workshop-workshop-3f
2026-08-06 00:28:56 +08:00
joshavant
d636f5f8e0
fix(agents): gate Claude live session protocol
2026-08-04 02:08:23 -05:00
synth
0df66f6d63
fix(anthropic): honor configured model pricing ( #117275 )
2026-08-01 09:56:23 -07:00
Peter Steinberger
568ea29d2e
refactor(plugins): inherit shared package boundary settings ( #117474 )
2026-08-01 09:11:09 -07:00
Vincent Koc
f5a8cb02ea
test(release): repair full validation regressions ( #116931 )
...
* test(discord): mock thread delete listener
* test(qa): expect blocked update evidence
* test(telegram): preserve recovered context body
* fix(test): configure kitchen-sink personality
* test(browser): expect canonical staged upload paths
* test(browser): canonicalize macOS download roots
* test(feishu): seed legacy session rows offline
* test(telegram): isolate message context session stores
* test(qqbot): expect canonical media paths
* test(anthropic): match canonical transcript paths
* test(qa): expect canonical session store keys
* test(gateway): isolate rewind media reads
* test(release): review plugin child spawns
* test(plugins): expect process-stable manifest metadata
* test(google): retire usage telemetry contracts
2026-08-01 15:42:50 +08:00
Vincent Koc
007fdb1f7c
test(extensions): remove duplicate coverage ( #116643 )
2026-07-31 11:59:12 +08:00
Josh Avant
ce67ffb70e
feat(agents): add tool-free isolated completion ( #114343 )
...
* feat: add isolated pure-inference completion
* fix(google): block ambient system prompt writes
* docs: refresh generated map
2026-07-30 13:24:45 -05:00
Vincent Koc
bb68389a66
fix(ui): deduplicate gateway-native session hosts
2026-07-30 15:22:37 +08:00
Peter Steinberger
5bfc65d7f4
refactor: remove 3,543 lines of redundant runtime and tests ( #115961 )
...
* refactor: remove 3,543 lines of redundant runtime and tests
* refactor: ratchet production environment variable budget
2026-07-29 11:43:41 -04:00
Alex Knight
be24db5f72
fix(auth): reuse Claude CLI logins natively and stop forwarding expired OAuth tokens ( #115134 )
...
* fix(auth): refresh selected Claude CLI profiles
* fix(auth): run imported Claude CLI logins as verified native passthrough
* fix(auth): satisfy CLI auth failure exhaustiveness
* docs: remove PR changelog entry
---------
Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com >
2026-07-29 01:30:07 -04:00
Peter Steinberger
9ae79eed2d
perf(catalog): cadence-proof provider caches and parallelize the Claude scan ( #115259 )
2026-07-28 11:37:37 -04:00
Peter Steinberger
6dbe7ff1e2
perf(catalog): memoize probes and single-flight identical list requests ( #114961 )
2026-07-28 02:00:27 -04:00
Peter Steinberger
4273ca9dbd
refactor(sessions): remove file-era transcript runtime ( #113233 )
...
* refactor(sessions): keep helper transcripts in memory
* refactor(sessions): remove file-era transcript storage
* test(sessions): use SQLite identity in attempt persistence
* test(codex): isolate legacy transcript fixtures
* fix(sessions): preserve SQLite transcript identity
* fix(sessions): harden transcript lifecycle invariants
* fix(sessions): validate transcript identities
* fix(sessions): close identity compatibility gaps
* fix(sessions): preserve leaf and plugin identities
* fix(sessions): retain dispatch transcript targets
* fix(sessions): preserve active transcript context
* fix(sessions): isolate artifact accounting
* fix(sessions): bound SQLite usage accounting
* fix(sessions): retain bounded latest usage
* fix(sessions): align rebased transcript targets
* test(sessions): align accessor scope fixture
* fix(telegram): derive SQLite transcript identity
* refactor(sessions): remove file-era compaction residue
* chore(sessions): lower max-lines baseline
* fix(sessions): preserve structured transcript identity
* test(sessions): align doctor identity assertions
* fix(sessions): isolate default SDK database
* refactor(sessions): remove dead file-era exports
* fix(sessions): reconcile SQLite transcript identity
* fix(sessions): pass checkpoint identity explicitly
* test(sessions): make entry field probe explicit
* test(sessions): satisfy transcript cleanup lint
* test(sessions): align diagnostics identity proof
* fix(sessions): finish transcript runtime teardown
* fix(sessions): preserve transcript identity invariants
* fix(sessions): harden transcript compatibility edges
* fix(sessions): preserve checkpoint transcript anchors
* fix(sessions): preserve SQLite lifecycle invariants
* fix(sessions): retarget compaction successors
* test(sessions): preserve transcript fixture semantics
* feat(plugin-sdk): add command transcript targets
* fix(sessions): serialize transcript rewrites
* fix(sessions): validate legacy successor identity
* fix(sessions): normalize compaction ownership
* fix(sessions): validate successor identity before adoption
* fix(sessions): preserve plugin transcript ownership
* fix(sessions): carry transcript identity through commands
* fix(sessions): import legacy checkpoint artifacts into SQLite
* fix(sessions): preserve successor transcript ownership
* fix(sessions): align transcript consumers with target identity
* fix(sessions): scope transcript token estimates
* fix(sessions): retain agent identity across lifecycle hooks
* fix(sessions): resolve scoped SQLite targets
* fix(sessions): isolate lifecycle transcript targets
* fix(sessions): validate compaction agent ownership
* fix(sessions): preserve reset and cleanup lifecycle
* fix(sessions): serialize prompt cleanup lifecycle
* fix(sessions): remove stale lock import
* fix(sessions): preserve reset target context
* fix(sessions): fence prompt reload takeover
* fix(sessions): unblock abort and default lifecycle reads
* fix(sessions): validate legacy successor scope
* fix(sessions): reject metadata-only runtime rows
* fix(sessions): propagate custom transcript stores
* fix(sessions): preserve adopted retry targets
* fix(sessions): allow unkeyed usage reads
* fix(sessions): harden runtime target boundaries
* fix(sessions): serialize retry transcript writes
* fix(sessions): bound prompt reload disposal
* fix(sessions): complete retry marker identity
* fix(sessions): keep legacy marker identity minimal
* test(sessions): tighten teardown fixture types
* fix(sessions): preserve compatibility target identity
* test(sessions): persist post-checkpoint boundary turn
* test(sessions): align runtime store mock contracts
* style(sessions): simplify persisted identity guard
* fix(sessions): prefer complete typed targets
* fix(sessions): recover legacy marker targets
* test(sessions): align marker lookup fixture scope
* fix(sessions): validate partial transcript targets
* fix(sessions): reconcile partial transcript identities
* fix(sessions): canonicalize compatibility identities
* test(sessions): cover compatibility aliases
* fix(sessions): adopt legacy successor identity
* fix(sessions): preserve usage read identity
* fix(sessions): preserve partial marker compatibility
* fix(sessions): validate legacy successor mappings
* fix(sessions): reconcile marker store mappings
* fix(sessions): preserve legacy fallback identity
* fix(sessions): harden marker alias resolution
* fix(sessions): prefer verified successor aliases
* fix(sessions): resolve preferred marker aliases
* fix(sessions): serialize cleanup admission
* fix(sessions): align marker lookup scopes
* fix(codex): type marker alias summaries
* style(sessions): satisfy changed lint
* test(sessions): align structured target assertions
* fix(sessions): reconcile latest identity contracts
* fix(sessions): validate transcript identity boundaries
* docs(sessions): explain stable registry keys
* fix(sessions): harden compatibility target round trips
* fix(sessions): port usage identity to split modules
* test(sessions): align subagent transcript identity
* fix(sessions): finish transcript identity migration
* fix(agents): route subagent completion capture through transcript targets
* fix(agents): settle SQLite prompt handoff during cleanup
* chore: shrink max-lines baseline after teardown
* fix(sessions): port teardown across split runtime owners
* fix(sessions): carry transcript targets through split owners
* test(agents): use SQLite compaction target in abort coverage
* chore: retain unrelated max-lines suppressions
* chore: shrink max-lines baseline after main splits
* style(agents): const compaction checkpoint locals
* fix(sessions): harden SQLite teardown boundaries
* test(sessions): use typed metadata in predicate isolation fixture
* test(agents): cover malformed settlement rejections lint-safely
* fix(sessions): close remaining SQLite identity races
* fix(agents): fail closed on incomplete successor targets
* fix(sessions): preserve transcript identity fallbacks
* fix(agents): preserve session-key abort admission
* fix(trajectory): validate incomplete export targets
* test(sessions): drop retired pricing cache imports
* fix(sessions): validate partial transcript identities
* fix(sessions): close transcript identity edge cases
* fix(plugins): reserve retired transcript locator slot
* fix(sessions): scope transcript locks by target
* style(sessions): simplify SDK initialization error
* fix(sessions): preserve initialized transcript state
* fix(codex): verify mirrored history session keys
* fix(sessions): reject stale transcript ownership
* fix(sessions): anchor asynchronous transcript ownership
* fix(sessions): measure active transcript state
* fix(sessions): preserve scoped transcript compaction
* fix(sessions): harden transcript identity and lifecycle
* fix(sessions): resolve scoped command transcript stores
* fix(sessions): make transcript appends failure-atomic
* fix(sessions): enforce scoped transcript ownership
* fix(sessions): reject cross-owner transcript handoffs
* fix(sessions): fence cleanup transcript ownership
* fix(sessions): retire stale write ownership contexts
* fix(sessions): preserve pending session migration state
* fix(sessions): validate migrated transcript ownership
* fix(sessions): validate usage transcript targets
* fix(sessions): clear predecessor transcript metadata
* fix(sessions): align durable session event targets
* fix(sessions): fence late prompt handoffs
* fix(sessions): fence lifecycle transcript fallbacks
* fix(sessions): bound zero-length memory capture
* fix(sessions): preserve transcript teardown ownership
* fix(sessions): reject duplicate cleanup ownership
* fix(sessions): serialize runtime writes with sqlite leases
* fix(sessions): close sqlite teardown concurrency gaps
* fix(sessions): preserve nested lifecycle failures
* fix(sessions): canonicalize sqlite transcript ownership
* fix(sessions): settle disposed prompt handoffs
* fix(sessions): resolve canonical attempt lock targets
* test(sessions): align canonical target fixtures
* test(sessions): retire redundant jsonl parser coverage
* refactor(sessions): split active transcript cursors
* test(memory): retire legacy marker fixture
* fix(sessions): preserve canonical transcript access after rebase
* fix(sessions): fence prompt lease and return transcript targets
* fix(sessions): colocate transcript leases with target store
* fix(sessions): canonicalize transcript lease and worker targets
* fix(sessions): preserve plugin and fork identity markers
* fix(sessions): complete sqlite transcript target migration
* fix(sessions): integrate canonical followup identity
* fix(sessions): preserve bounded transcript topology
* fix(sessions): validate transcript identity boundaries
* fix(context): separate caller and successor targets
* test(sessions): split persistence compatibility coverage
* test(sessions): preserve fixture topology efficiently
* chore(sdk): refresh plugin api baseline
* test(agents): align compaction lock target mocks
* test(sessions): seed malformed transcript fixtures directly
* fix(agents): canonicalize transcript compatibility inputs
* fix(agents): type optional tool result ids
* test(ci): stabilize loaded process timing
* test(tui): wait for collect queue admission
2026-07-27 22:33:24 -04:00
Peter Steinberger
92fff941ef
perf(anthropic): memoize the local Claude session scan ( #114833 )
...
* perf(anthropic): memoize the local Claude session scan
* fix(anthropic): make the scan memo freshness gate race-safe
2026-07-27 21:13:12 -04:00
Peter Steinberger
7394262cd1
feat: per-model code-mode capability flags with an "auto" master-switch tier ( #114695 )
...
* feat(tools): per-model code-mode capability flags and auto master-switch tier
* feat(anthropic): flag claude-sonnet-4-6 as code-mode preferred
* revert(anthropic): drop claude-sonnet-4-6 from the code-mode preferred set
* test(anthropic): type the manifest compat field in the catalog contract test
* fix(anthropic): carry catalog compat onto hand-built forward-compat model rows
2026-07-27 16:47:41 -04:00
Peter Steinberger
8f8e40dabe
perf(gateway): share one node.list snapshot across session catalog providers ( #114646 )
2026-07-27 13:14:07 -04:00
Peter Steinberger
7b71d5608e
perf(gateway): reuse session catalog entry snapshots per request ( #114358 )
...
* perf(gateway): reuse session catalog entry snapshots
* chore(gateway): satisfy knip and typed-test lanes for catalog snapshot
2026-07-27 02:14:11 -04:00