Commit Graph
7784 Commits
Author SHA1 Message Date
Tianyi Cui 1e78054a78 ci: retrigger workflows (push event for 7a4cd7857 was dropped by Actions) 2026-07-24 23:04:57 +08:00
Chinesezjc 5818fd6224 ci: address second review round — dependabot lane, drop dead restore, update topology note
- Route untrusted PRs (forks + Dependabot, same author test as e2e.yml)
  back to the hosted enterprise pool via a runs-on expression: Dependabot
  PRs are same-repo, so the previous head.repo guard admitted
  dependency-supplied code onto the persistent self-hosted VM. A single
  job with pool selection keeps all-checks-passed free of skips.
- Drop the pnpm-store cache restore from this lane: on self-hosted the
  hosted-path cache actually HIT (Linux key) and spent ~52 s pulling
  181 MB into a path pnpm never reads; the persistent local store
  already serves warm installs in seconds.
- Update the larger-hosted-runners Agent Note (en/zh + i18n pairing
  record) so the decision record describes the shipped topology:
  coverage on the in-house vm-backup pool for trusted PRs, hosted
  Ubuntu 24.04 32-core retained for untrusted PRs.
2026-07-24 23:00:56 +08:00
_Kerman 6b4c26a1b9 fix(acp-snapshot): stabilize /private prefix and spill paths in snapshots
macOS symlinks /tmp → /private/tmp; when the session header cwd lacks
the /private prefix but fs tools resolve symlinks, tool result paths
get the prefix and the cwd replacement never matches.  Strip the prefix
before cwd→{{cwd}} replacement so both forms normalize identically.

Also extend refreshFixtureReplacements to match spill paths by filename
suffix, preventing raw fixture churn when a refresh runs from a
different session directory.
2026-07-24 23:00:17 +08:00
Chinesezjc 729dd3e1b7 docs(agents): correct the web todo note to the shipped mechanisms
The projection sentence prescribed resetting todos on window rebuild —
the implementation deliberately preserves the tail-page seed and lets
only in-window/live writes overwrite. The toolview section named a
nonexistent ctx.toolviews registry — the shipped seam is the keyed
conversation.chat.toolview slot via ctx.slots.register. Both sides of
the bilingual pair re-recorded.
2026-07-24 22:56:12 +08:00
Chinesezjc ba75229638 fix(tool-todo): declare the unknown-key rejection in the item schema
additionalProperties stays true in the published schema while execute
rejected extra keys, so generated typings and validation disagreed with
runtime behavior. The item schema now declares additionalProperties:
false — the registry's arg validation rejects extra keys with a
path-qualified violation before execute runs — and the redundant manual
check is dropped (tool catalog regenerated).
2026-07-24 22:56:12 +08:00
Chinesezjc c1ae98940c fix(gui): gap repair adopts the repull response's todos projection
repairGap installed the repulled window without the response projection;
a todo/write missed during the gap and already outside the new tail page
kept the stale list. The spec pins adoption through the repair path.
2026-07-24 22:56:12 +08:00
Chinesezjc beb191d87f fix(gui): admit todos in the history wire schema
sessionHistoryValueSchema declared only events/hasMore, so the fetch
carrier's Zod parse stripped the tail page's todos projection — the
in-process and fixture paths carried it while a real WebApiClient lost it.
The fetch-carrier spec pins the field through the wire round trip.
2026-07-24 22:56:12 +08:00
Chinesezjc 1687c2c15c fix(gui): tail history page carries the full-log todo projection
The client's todos projection derived only from the paged display window,
so reopening a session whose last todo/write preceded the tail page showed
an empty plan until the user paged back — session-level state cannot be
reconstructed from an arbitrary window. The host owns the full log, so the
tail history response now attaches todos (latest todo/write backscan, the
same posture as the view pairing); installWindow seeds it, window rebuilds
preserve it, and any in-window or live write keeps overwriting it. The
fixture mirrors the host; docs and both Agent Notes record the mechanism.
2026-07-24 22:56:12 +08:00
Chinesezjc 356be9710a docs(gui): record the window-scoped todos gap and the web consumer
runtime README documents ConversationSnapshot.todos and its window-scoped
limitation; the todo tool README and Agent Note name the web client among
the event consumers; the web display note records the cold-load gap and
fix directions (bilingual pair re-recorded).
2026-07-24 22:56:12 +08:00
Chinesezjc 3b1ad3ee6c test(gui): keyless assembled todo-display pass in the fixture smoke
Eight real bundles through the DI chain in ?fixture mode: plan strip
content, dedicated row summary + details linkage, collapse hint, zero page
errors — the CI-gated assembled-surface coverage for the todo display.
2026-07-24 22:56:12 +08:00
Chinesezjc f2a9c09429 fix(gui): fixture emits todo/write at the real tool boundary
The tool appends the snapshot mid-execution, between tool/call and
tool/result; the fixture spliced it after step/end with a post-turn
timestamp, so acceptance never exercised the production ordering. A spec
pins call → snapshot → result with monotonic times.
2026-07-24 22:56:12 +08:00
Chinesezjc 02abe3c821 fix(gui): todo-row guards valid-JSON invalid-shape args before dereferencing
null roots, non-object roots, and null array items (retained verbatim on a
rejected tool/call) now take the documented generic-summary fallback instead
of throwing into the row error boundary.
2026-07-24 22:56:12 +08:00
Chinesezjc 2d95a60ac9 fix(tool-todo): reject unknown item keys instead of silently dropping them
An item carrying keys beyond content/status (ids, children, priority) was
flattened to {content, status} on append, so the logged snapshot diverged
from what the model believed it wrote (model-visible must equal logged).
Reject loudly; the isError result lets the model self-correct.
2026-07-24 22:56:12 +08:00
Chinesezjc 0a3c7f2b39 docs(agents): web todo display Agent Note — side-effect channel + two surfaces 2026-07-24 22:56:12 +08:00
Chinesezjc de4f818c80 test(gui): todo display fixture sample + browser acceptance script
fx-alpha gains turn 63: a todo_write call/result pair plus the todo/write
snapshot event, feeding both the TodoRow toolview and the TodoPanel strip
in ?fixture mode. verify-todo-display.mjs drives chromium through panel
visibility, content, row summary, details linkage, collapse and dark.
2026-07-24 22:56:12 +08:00
Chinesezjc 63109dab66 feat(gui): todo display — TodoPanel plan strip + todo_write toolview row
TodoPanel pins above the composer (776px card axis), hidden while empty,
collapsible with the active item as the collapsed hint; status glyphs
mirror the TUI plan panel. todo_write rows render a plan-flavored summary
(counts + active item) via the toolview registry, generic fallback on
malformed args. Existing fake snapshots gain the required todos field.
2026-07-24 22:56:12 +08:00
Chinesezjc a0c269b0fb feat(gui): fold todo/write into ConversationSnapshot.todos
Session consumes the todo/write session event as a per-event side effect
(last write wins), rebuilds it on window replay/paging/resync, and exposes
snapshot.todos. TodoItem re-exported through the runtime surface.
2026-07-24 22:55:17 +08:00
Tianyi Cui d01474d1d0 Merge pull request #616 from deepseek-harness/worktree/acp-automation-review-fixes
fix(acp): review fixes for the automation-only reduction
2026-07-24 22:54:13 +08:00
_Kerman b36a82fc98 Merge branch 'master' into xtr/agent-loop-message-machine 2026-07-24 22:48:18 +08:00
Tianyi Cui 13345fdadc docs(i18n): re-record web e2e note pair after the scaffold rename
The rename commit edited both sides of the bilingual pair but missed the
re-record; the pairing gate compares blob hashes and went red.
2026-07-24 22:46:04 +08:00
_Kerman 992cf894af refactor(agent): unify sourced message delivery 2026-07-24 22:38:50 +08:00
Tianyi Cui 88f3933327 fix(docs): address Codex round-1 findings on the review-fix stack
- gen-doc-graphs still summarized the ACP demo as 'text-only'; say
  baseline-prompt and regenerate composition.md.
- The llm-catalog note claimed unit coverage for per-agent target
  isolation that no test pins directly; state the actual basis
  (agent-scoped listener installation) in both languages and re-record.
2026-07-24 22:36:06 +08:00
Tianyi Cui b97b1b4a3f Merge pull request #343 from deepseek-harness/docs/i18n-batch-core
docs(i18n): publish Chinese core documentation and Agent Notes
2026-07-24 22:28:46 +08:00
Tianyi Cui 90057b25f2 docs(acp): state both arms of the spec's version-negotiation rule 2026-07-24 22:19:10 +08:00
Tianyi Cui 6d3c25f494 refactor(web-e2e): rename harness -> scaffold; add interaction coverage
The shared test module was named harness.ts inside a repo whose product
IS a harness — hopelessly ambiguous. Renamed to scaffold.ts with
launchWebScaffold/WebScaffold; tsconfig plane-split entries, the seam
JSDoc/README mentions, and both Agent Note languages updated.

Both scenarios gain a Playwright interaction step over the settled
transcript (after the golden capture, so committed aria surfaces stay
untouched): replay-round-trip clicks the reasoning fold open/closed over
wire-delivered state; seeded-history expands a read tool row rebuilt from
the cold log and asserts the recorded result text appears (read rows are
expand-in-place — rowExpands routes the click to the inline fold, not the
details column). test:web 30 passed | 1 skipped.
2026-07-24 22:18:19 +08:00
Tianyi Cui 5569f3f8ac docs: repair rewritten rationale and stale claims from the ACP reduction
The automation-only rewrite edited many implemented Agent Notes; several
edits replaced still-live or historical rationale instead of reframing:

- llm-model-catalog: restore the prompt/request consistency section and
  selection-ownership alternatives — installAgentLlmTarget and the TUI
  /model selector still ship that design; only the ACP wire is gone.
- plan-specific-collaboration-state, acp-multi-session, todo-write,
  ask-user-question: link the superseding automation-only note instead
  of silently rewriting the original decision or motivation; drop a
  paragraph duplicating the Web-provider facts stated two paragraphs up.
- sandbox: stop claiming unit coverage for turn-enclosed config writes
  (that mechanism left with the bridge) and retitle the commit-boundary
  paragraph accordingly.
- Fix the missing blank line before '## Consequences' in the
  plugin-command-registration pair, the JSON-RPC/Web render-intent
  consumer misattribution (the second consumer is the host/client
  runtime), stale bash_output/bash_kill names, and 'optional goals' in
  architecture.md.
- examples/acp-agent/README.md: point at the package contract instead
  of restating it; packages/ui/permission and plan-mode READMEs record
  the consumer-less preset service and the exit_plan_mode coverage gap
  under Known Limitations.
- 2026-06-19-acp-snapshot-tests: the new note defers the corpus
  migration rather than committing to it; say so.

Re-record the touched bilingual pairs.
2026-07-24 22:12:23 +08:00
Tianyi Cui 74d14f68bb fix(acp): accept baseline resource links and release a failed prompt slot
ACP v1 requires every agent to accept text AND resource_link prompt
content; the automation rewrite dropped the resource_link half of that
baseline. Restore the old bracketed-reference flattening in the codec,
reject only beyond-baseline blocks, and update the package contract and
Agent Note.

Also release the per-session prompt slot when agent.send() throws
synchronously (an agent disposed outside the bridge would otherwise
wedge the session into permanent 'already in flight' rejections),
drop the tautological version-negotiation branch, prove the scenario
env layer reaches the snapshot subprocess, pin bridge-side fail-closed
permission errors, and correct two overpromising test names.
2026-07-24 22:11:49 +08:00
_Kerman 009d113e0e refactor(agent): trim obsolete loop surfaces 2026-07-24 21:58:07 +08:00
Turtle 1ffdacb2c4 fix(jsonl): handle filesystem path aliases 2026-07-24 21:50:11 +08:00
_Kerman 194b18a32f Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
# Conflicts:
#	docs/cordis-catalog/services.md
2026-07-24 21:41:02 +08:00
Tianyi Cui 158c5e913a docs(i18n): refresh persistence docs after master merge 2026-07-24 21:27:22 +08:00
Hypatia May 224e00b2bd fix: quiesce cancelled session reconciliation 2026-07-24 21:27:07 +08:00
_Kerman d92ce62e57 refactor(agent-loop): return request failures from steps 2026-07-24 21:27:02 +08:00
Tianyi Cui d847b48479 Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-24 21:21:22 +08:00
Tianyi Cui 2584f029bc Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master
# Conflicts:
#	docs/cookbook/extension-cookbook.i18n.yaml
#	docs/cookbook/extension-cookbook.zh.md
2026-07-24 21:20:17 +08:00
_Kerman b73eb7663c refactor(agent-loop): simplify observable state machine 2026-07-24 21:18:48 +08:00
Turtle c14f488b00 fix(persistence): use normalized project directory names 2026-07-24 21:15:53 +08:00
Tianyi Cui 478d9c17b2 Merge pull request #582 from deepseek-harness/codex/sqlite-metadata-contracts
fix(sqlite): preserve session metadata contracts
2026-07-24 21:14:06 +08:00
Tianyi Cui 46dfd503e0 Merge origin/master into codex/sqlite-metadata-contracts 2026-07-24 21:07:23 +08:00
Tianyi Cui 8f97f95d7b docs(i18n): bilingual pair for the web e2e lane Agent Note
Chinese counterpart translated per the terminology table and the
2026-07-18 TUI note's register; switcher lines added on both sides; pair
recorded. doc-sync 24/24.
2026-07-24 21:06:54 +08:00
Hypatia May cbc6d81fc3 Merge remote-tracking branch 'origin/master' into session-query-tool
# Conflicts:
#	docs/architecture.i18n.yaml
2026-07-24 20:59:18 +08:00
Tianyi Cui 199f59dc5e Merge pull request #344 from deepseek-harness/docs/i18n-batch-cds-postmortem
docs(i18n): core-data-structures and postmortem batch — 22 bilingual pairs
2026-07-24 20:58:42 +08:00
Tianyi Cui 19117d68f1 Merge pull request #345 from deepseek-harness/docs/i18n-batch-rfc
docs(i18n): RFC tree batch — 146 bilingual pairs via the committed pipeline
2026-07-24 20:58:25 +08:00
Tianyi Cui aef844e2e6 Merge pull request #591 from deepseek-harness/fix/goal-completion-strict-fields
fix(goal): loosen restriction for toolcall arguments
2026-07-24 20:52:23 +08:00
Hypatia May ba6fc1cfa3 fix: harden session query authorization 2026-07-24 20:50:53 +08:00
Tianyi Cui 9e691d54c0 fix(goal): normalize strict-schema fillers 2026-07-24 20:45:23 +08:00
Tianyi Cui 145ba169f6 Merge commit 'refs/codex-unblock/20260724/pr591-base-current' into worktree/unblock-pr-591-ci-20260724 2026-07-24 20:32:02 +08:00
Tianyi Cui d08050ab69 chore(web-e2e): gate fixes — catalog, budgets, knip
Regenerate config-catalog for the llm-replay paceMs row; condense the
testing.md web-lane entry to pointer form and raise its ceiling 1020->1060
(the two-sentence tier entry for a genuinely new surface does not fit the
old ceiling after relocation-first trims); internalize two harness helpers
knip flagged (rawSessionLog/normalizeAria are module-internal).
2026-07-24 20:30:33 +08:00
Tianyi Cui 15eb71fd7f Merge pull request #575 from deepseek-harness/feat/send-unify
feat(agent): unify send(target × wakeup) and coalesce context/message into user/message
2026-07-24 20:19:53 +08:00
Hypatia May 04c8a17de5 fix: cancel exact session observations 2026-07-24 20:08:38 +08:00