Tianyi Cui
1145ee5fc3
fix(invariants): assert runtime relationships, not API shapes
2026-07-20 19:34:19 +08:00
Tianyi Cui
3b7ce2e682
fix(invariants): require justified empty companions
2026-07-20 18:39:37 +08:00
Tianyi Cui
c40e63d04b
fix(session-persistence-jsonl): require delegation depth
2026-07-20 17:51:21 +08:00
Tianyi Cui
7a9177d624
test(jsonl): pin corruption and storage-fault rejection
...
Identity validation must reject a header id that cannot derive a path, and only ENOENT may mean that storage is absent. Other root or per-path failures must remain visible instead of becoming an empty list or false miss.
Exercise those branches with narrow storage-mechanics cases, preserving per-file 100% coverage without restoring the flat-layout or multi-writer tests removed from the replacement design.
2026-07-20 17:46:51 +08:00
Tianyi Cui
c9d3d5d557
fix(jsonl): reject unusable roots at plugin load
...
A configured root that already exists as a file or unreadable directory cannot host cwd buckets, but the backend previously mounted and deferred that deterministic configuration error until a later list or write.
Probe the resolved root while the plugin loads, surface every error except ENOENT, and keep an absent root valid for lazy first materialization. Document the timing contract, regenerate the config catalog, and pin the non-directory case at the load boundary.
2026-07-20 17:42:44 +08:00
Tianyi Cui
73e3f658c6
fix(persistence): bind JSONL identity before mutation
...
JSONL discovered a log by the requested session id but later routed repair and append from the parsed header. A log selected for session A could therefore declare session B and redirect mutation to B.
Validate the requested id and exact header-derived cwd-bucket path before returning a stored prefix, reject duplicate ids across buckets, and repeat the id/cwd guards in the coordinator before repair or state publication. Collapse the redundant loadLive hook into loadStored while retaining the existing bucket layout and one-live-writer topology, avoiding flat-layout churn and a locator generic that SQLite and test backends do not need.
2026-07-20 17:42:44 +08:00
kingwl
d85d2a4be3
Merge remote-tracking branch 'origin/master' into jsonl-packed-chunk-rows
...
Conflicts: the four generated catalog docs (regenerated over merged sources),
session index.ts exports (keep chunk-rows exports + master's SessionSurface
re-export), stdio/acp demo config schema and persistence wiring (thread
packChunks through master's DEFAULT_PERSISTENCE_ROOT/UI shape), stdio README
config table, and the jsonl spec import line. The packed-chunk fixture also
gains the provenance field master made required on assistant/message.
2026-07-20 15:24:58 +08:00
Yichen Jiang
f2a813b791
Merge remote-tracking branch 'origin/master' into fix/subagent-depth-budget
2026-07-20 15:15:31 +08:00
Tianyi Cui
684fcf3357
Merge branch 'codex/invariant-package-registration-gate' into codex/package-invariant-checks
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.md
# .agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.zh.md
# .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml
# docs/rfc/INDEX.md
# packages/AGENTS.md
2026-07-20 00:54:28 +08:00
Tianyi Cui
941b0411d8
feat(invariants): implement package runtime checks
2026-07-20 00:38:37 +08:00
Tianyi Cui
6520f71f94
Merge remote-tracking branch 'origin/codex/invariant-service-seam' into codex/invariant-package-registration-gate
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml
# docs/core-data-structures/session.md
# docs/module-graph.md
# package.json
# packages/sdk/scripts/tsconfig.json
2026-07-20 00:35:06 +08:00
Tianyi Cui
7a4909f221
Merge remote-tracking branch 'origin/master' into codex/jsonl-zstd-persistence
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.md
# .agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.zh.md
# docs/rfc/INDEX.md
# packages/session-persistence/session-persistence-jsonl/README.md
2026-07-20 00:15:32 +08:00
Tianyi Cui
d139948ed2
feat(persistence): compress JSONL logs with Zstandard
2026-07-20 00:06:21 +08:00
Tianyi Cui
e8eddc7ef8
Rename RFCs to Agent Notes
2026-07-19 22:52:03 +08:00
Tianyi Cui
433670a754
feat(invariants): require package-owned companions
2026-07-19 22:13:50 +08:00
imccyu
6eabba8021
Merge branch 'master' into worktree-windows-runtime
2026-07-19 21:08:12 +08:00
Tianyi Cui
a278374e8f
docs: structure model experience fields
2026-07-19 18:08:42 +08:00
imccyu
3e9cb70c78
Merge remote-tracking branch 'origin/master' into worktree-windows-runtime
...
# Conflicts:
# packages/session-persistence/session-persistence-jsonl/README.md
# packages/session-persistence/session-persistence-jsonl/src/index.ts
# packages/session-persistence/session-persistence-jsonl/tests/jsonl.spec.ts
# packages/support/loader-smoke/tests/loader-smoke.spec.ts
2026-07-19 17:52:36 +08:00
Tianyi Cui
bcc920369c
docs: document package KV cache effects
2026-07-19 17:39:50 +08:00
Yichen Jiang
0d00106fa8
fix(session): persist the delegation depth in the session header
...
A subagent child's recursion depth lived only in runtime AgentOptions,
so a persisted child came back from resume counted as top-level and
maxDepth stopped binding after every restart. Add
SessionHeader.delegationDepth, round-trip it through the JSONL and
SQLite backends (SQLite schema v5), restore it on agent-loop resume,
and write it when the in-process backends create a child. The seam now
owns the shared depth vocabulary (delegationDepthOf): the persisted
header is authoritative and monotone — runtime options may deepen it
but never lower it.
2026-07-19 17:20:36 +08:00
Tianyi Cui
89987f0ad4
docs: align one-shot demo prose
2026-07-19 13:25:30 +08:00
Tianyi Cui
53c729e00b
Merge remote-tracking branch 'origin/master' into codex/cli-one-shot-demo
...
# Conflicts:
# AGENTS.md
# docs/architecture.md
# docs/capability-seams.md
# docs/cookbook/extension-cookbook.i18n.yaml
# docs/event-producer-consumer.md
# docs/module-graph.md
# knip.json
# packages/README.md
# packages/support/loader-smoke/README.md
# packages/support/loader-smoke/src/index.ts
# vitest.snapshot.config.ts
2026-07-19 13:11:50 +08:00
Tianyi Cui
4bf2ef89c4
fix(jsonl): bind MoveFileExW with the Win32 BOOL ABI
...
Declare MoveFileExW's return value as Koffi int and model it as a numeric 32-bit Win32 BOOL. The previous Koffi bool declaration represented a one-byte C boolean and could read the native return register with the wrong ABI.
Test zero and nonzero results explicitly and assert the binding result type while preserving the existing write-through flags, error translation, and durable directory race behavior.
2026-07-19 12:44:47 +08:00
imccyu
7d28b611b2
test(windows): align platform coverage ignores
2026-07-18 15:55:37 +08:00
imccyu
588f4d948d
test(windows): mark platform-only coverage branches
2026-07-18 12:40:13 +08:00
imccyu
86c09f6ca9
test(jsonl): mark native Windows ENOTDIR coverage
2026-07-18 12:40:12 +08:00
Huanqi Cao
5a2ca3ff3a
Restore JSONL ENOTDIR distinction on Windows
2026-07-18 12:40:12 +08:00
Huanqi Cao
e15a6168d2
Support durable JSONL persistence on Windows
2026-07-18 12:40:12 +08:00
Tianyi Cui
7a2d5cd28d
Merge master into codex/simp-session-log-representation
2026-07-17 22:33:42 +08:00
Tianyi Cui
53680ee6bc
Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
...
# Conflicts:
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# packages/context/time-context/tests/time-context.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/session/README.md
# packages/core/session/src/types.ts
# packages/core/session/tests/surface.spec.ts
# packages/examples/acp-demo/tests/acp-agent.spec.ts
# packages/examples/stdio-demo/tests/stdio-agent.spec.ts
# packages/hooks/hooks-claude/tests/coverage.spec.ts
# packages/hooks/hooks-codex/tests/coverage.spec.ts
# packages/session-query/session-query/tests/session-query.spec.ts
# packages/support/invariants/tests/invariants.spec.ts
# packages/ui/acp/tests/harness.ts
2026-07-17 21:56:10 +08:00
Tianyi Cui
ce393ccb93
Merge master into codex/simp-session-log-representation
2026-07-17 21:51:36 +08:00
Hypatia May
75e9958f11
fix(session-query): close review edge cases (round 4)
2026-07-17 09:39:39 +08:00
Tianyi Cui
7278fc21d8
fix(session-persistence): handle Windows directory fsync
2026-07-15 21:36:42 +08:00
kingwl
7ef21239ca
feat(session): opt-in packed chunk rows in the JSONL log
...
Providers stream token-sized deltas, so a session log stores hundreds of
near-identical assistant/chunk lines whose JSON envelopes dwarf their
payloads (~56x measured on a real DeepSeek session, 73% of file bytes).
Add a lossless storage codec to dsh-session: packChunkRuns() folds each
run of >=3 consecutive same-block delta chunks into one storage row --
text-chunks / reasoning-chunks / tool-call-chunks, bare slash-less tags
like the header line's 'session' so rows cannot be confused with session
events -- and decodeStorageRecord() expands rows back to the exact
original events (seq0/time0 + dt gap array reconstruct every member's
seq/time; tool-call rows carry the run-constant id/name). The encoder
whitelists exact shapes and stores anything unrecognized verbatim; the
decoder validates row-tagged values and fails loud on malformation.
The JSONL backend gains a packChunks config (default false). Writing
packs only when enabled -- default-off output stays byte-identical to
the previous layout, so snapshot goldens are untouched. Reading is
layout-blind: scanLog always decodes rows and now checks seq contiguity
with a cursor instead of the line index, so packed, unpacked, and mixed
files all load identically. Fixture readers (llm-replay parseSessionLog,
acp-snapshot normalizeSessionLog) share the codec; the normalizer zeroes
a row's time0/dt exactly like an event's time. The two demo bundles
plumb packChunks from cordis.yml to the backend.
Measured on a real coding session: 105 KB -> 42 KB (-60%), 475 lines ->
74, with reasoning/tool-call heavy sessions saving the most. Covered by
example + fast-check round-trip codec tests, backend packed/mixed/torn-
tail specs, and an end-to-end demo run loading a packed log through a
default-config backend.
2026-07-15 21:26:36 +08:00
Hypatia May
aa82ba4abc
Merge remote-tracking branch 'origin/master' into session-query-search
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/module-graph.md
# packages/session-persistence/session-persistence-jsonl/README.md
# packages/session-persistence/session-persistence-jsonl/src/index.ts
# packages/session-persistence/session-persistence-sqlite/README.md
# packages/session-persistence/session-persistence-sqlite/src/index.ts
# packages/session-persistence/session-persistence-sqlite/src/schema.ts
# packages/session-persistence/session-persistence-sqlite/tests/sqlite.spec.ts
# packages/session-persistence/session-persistence/README.md
# packages/session-persistence/session-persistence/src/coordinator.ts
# packages/session-persistence/session-persistence/tests/persistence.spec.ts
# packages/session-query/session-query/README.md
2026-07-15 16:17:59 +08:00
Tianyi Cui
281eed3e57
Merge remote-tracking branch 'origin/master' into codex/simp-session-log-representation
...
# Conflicts:
# docs/cordis-catalog/services.md
# docs/rfc/INDEX.md
# docs/rfc/implemented/testing/2026-07-06-pin-request-header-content-in-one-scenario.md
# docs/rfc/proposed/simplification/2026-07-12-simplify-session-log-representation.md
# packages/support/acp-snapshot/README.md
# packages/support/acp-snapshot/src/normalize.ts
# packages/support/acp-snapshot/src/suite.ts
# packages/support/acp-snapshot/tests/fixtures/suite/pin-turn/session.jsonl
# packages/support/acp-snapshot/tests/suite.spec.ts
2026-07-15 15:53:56 +08:00
Yichen Jiang
75331f03a6
Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
...
# Conflicts:
# docs/event-producer-consumer.md
2026-07-15 13:30:40 +08:00
Yichen Jiang
6edd4a205b
Merge remote-tracking branch 'origin/master' into codex/agent-session-jsonl-location
...
# Conflicts:
# packages/README.md
2026-07-15 13:25:29 +08:00
Hypatia May
35edf2a825
fix(session-query): qualify persistence revisions by store
2026-07-15 12:32:18 +08:00
Hypatia May
f88ca85ffd
fix(session-query): harden SQLite search reconciliation
2026-07-15 12:10:24 +08:00
imccyu
52264d87ee
fix: test
2026-07-15 11:31:55 +08:00
imccyu
31f4441fd4
pkg: update vendor dep
2026-07-15 11:28:45 +08:00
Yichen Jiang
904397a7ef
Merge remote-tracking branch 'origin/master' into codex/agent-session-jsonl-location
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/permission-switching/session.jsonl
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
# packages/session-persistence/session-persistence/src/index.ts
2026-07-15 11:12:39 +08:00
Yichen Jiang
35cae1d389
Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
...
# Conflicts:
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/code-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/permission-switching/session.jsonl
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
2026-07-15 10:15:06 +08:00
Yichen Jiang
815365dbbe
Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.md
# docs/event-producer-consumer.md
# docs/persistence-catalog.md
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
# examples/sandbox-acp-agent/cordis.yml
# examples/sandbox-acp-agent/tests/snapshots/escalation-approved/session.jsonl
# examples/sandbox-acp-agent/tests/snapshots/escalation-rejected/session.jsonl
# examples/sandbox-acp-agent/tests/snapshots/mode-switching/session.jsonl
# packages/compact/compact-basic/README.md
# packages/compact/compact-basic/src/index.ts
# packages/compact/compact-basic/tests/compact-basic.spec.ts
# packages/core/agent-loop/README.md
# packages/core/agent-loop/src/loop.ts
# packages/core/agent-loop/tests/properties.spec.ts
# packages/core/session/README.md
# packages/core/session/src/types.ts
# packages/core/session/tests/derived-cache.spec.ts
# packages/llm/llm-deepseek/src/index.ts
# packages/llm/llm-pi-ai/README.md
# packages/llm/llm-pi-ai/src/adapter.ts
# packages/llm/llm-pi-ai/src/convert.ts
# packages/llm/llm-pi-ai/tests/adapter.spec.ts
# packages/llm/llm/README.md
# packages/llm/llm/src/call-config.ts
# packages/llm/llm/src/index.ts
# packages/ui/acp-agent/src/index.ts
# packages/ui/acp/tests/harness.ts
# packages/ui/jsonrpc/README.md
# packages/ui/jsonrpc/src/server.ts
# packages/ui/stdio-agent/README.md
# packages/ui/stdio-agent/src/index.ts
# python/sdk/README.i18n.yaml
2026-07-14 22:17:50 +08:00
Yichen Jiang
e547980d77
feat(llm): route adapters by provider
2026-07-14 21:57:52 +08:00
Tianyi Cui
78276c52a7
Merge branch 'codex/simp-session-dead-surface' into codex/simp-session-log-representation
...
# Conflicts:
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.md
# docs/persistence-catalog.md
# docs/rfc/implemented/architecture/2026-07-05-reconstructable-requests.md
# docs/rfc/implemented/feature/2026-06-18-compaction-capability-seam.md
# docs/rfc/implemented/feature/2026-07-06-explicit-tool-order.md
# docs/rfc/implemented/feature/2026-07-06-sandbox.md
# docs/rfc/implemented/feature/2026-07-07-session-prefix.md
# packages/compact/compact-basic/src/index.ts
# packages/compact/compact-basic/tests/compact-basic.spec.ts
# packages/core/agent-loop/src/loop.ts
# packages/core/agent-loop/src/request-log.ts
# packages/core/agent-loop/tests/request-reconstruction.spec.ts
# packages/core/agent/src/types.ts
# packages/core/session/README.md
# packages/core/session/src/request-header.ts
# packages/core/session/src/surface.ts
# packages/core/session/src/tool-pairing.ts
# packages/core/session/src/types.ts
# packages/core/session/tests/surface.spec.ts
# packages/core/session/tests/tool-pairing.spec.ts
# packages/llm/llm/src/call-config.ts
# packages/support/acp-snapshot/src/suite.ts
# packages/support/invariants/README.md
# packages/ui/user-approval/README.md
2026-07-14 18:34:34 +08:00
Yichen Jiang
0d67c16d56
Merge remote-tracking branch 'origin/master' into codex/agent-session-jsonl-location
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/bash.md
# docs/module-graph.md
# docs/rfc/INDEX.md
# docs/rfc/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-surface.md
# docs/rfc/implemented/feature/2026-06-30-hook-bridges.md
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/system-prompt.golden.md
# examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/system-prompt.golden.md
# examples/acp-agent/tests/snapshots/code-mode-turn/system-prompt.golden.md
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
# examples/sandbox-acp-agent/tests/snapshots/mode-switching/session.jsonl
# packages/bash/bash-local/README.md
# packages/bash/bash-local/src/run.ts
# packages/bash/bash-local/tests/run.spec.ts
# packages/bash/bash/README.md
# packages/bash/tool-bash/README.md
# packages/bash/tool-bash/src/index.ts
# packages/bash/tool-bash/tests/tools.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/agent-core/src/index.ts
# packages/session-persistence/session-persistence-jsonl/src/index.ts
# packages/session-persistence/session-persistence-sqlite/src/index.ts
# packages/session-persistence/session-persistence/README.md
# packages/session-persistence/session-persistence/src/index.ts
# packages/ui/acp-agent/README.md
# packages/ui/stdio-agent/README.md
2026-07-14 18:04:05 +08:00
Tianyi Cui
34a059c9bc
Merge remote-tracking branch 'origin/master' into codex/simp-session-dead-surface
...
# Conflicts:
# docs/cordis-catalog/services.md
# packages/core/session/README.md
# packages/core/session/tests/derived-cache.spec.ts
# packages/session-persistence/session-persistence-jsonl/tests/jsonl.spec.ts
# packages/session-persistence/session-persistence/src/coordinator.ts
# packages/session-persistence/session-persistence/src/index.ts
2026-07-14 17:24:02 +08:00
Tianyi Cui
f0fc20ca42
docs: align prose with runtime contracts
2026-07-14 16:21:41 +08:00