Commit Graph

7384 Commits

Author SHA1 Message Date
Tianyi Cui
bec424b9f3 Merge latest master into worktree-config-settings-seam 2026-07-30 20:51:34 +08:00
Chinesezjc
689dcfe7d5 fix(web-presenter): dim-Markdown web fallback, memoize fetch conversion, strip note residue
Route a `web` result card's raw-content fallback through the TUI's dim
Markdown path (render() only recognized `card: 'generic'` as markdown
content, so web fallback rendered as bare undimmed text).

Memoize renderFetchOutput per (result, maxOutputChars) so the registry's
twin output.render / output.presentationMeta calls on the same frozen
result run one HTML->markdown conversion instead of two.

Remove the trailing `</content>`/`</invoke>` protocol residue from both
sides of the web-result-card Agent Note and re-record the pairing.
2026-07-30 20:48:19 +08:00
creatixchu
af73535b6a Merge remote-tracking branch 'origin/master' into feat/dir-selector-adaptive-default 2026-07-30 20:48:06 +08:00
CreatixChu
5335d61d11 Merge pull request #943 from deepseek-harness/feat/directory-picker-quiet-navigation
feat(directory-picker-browse): quiet navigation — one-frame landings and a slow-scan loading pill
2026-07-30 20:47:36 +08:00
Hypatia May
c6e06e289e Merge origin/master into fix/human-transcript-projection
Build-review integration round 1.
2026-07-30 20:45:39 +08:00
Yichen Jiang
a56678e115 Merge remote worktree-config-settings-seam 2026-07-30 20:28:53 +08:00
Yichen Jiang
ff5b65bb62 Merge latest master into worktree-config-settings-seam
# Conflicts:
#	packages/typert/generator/tests/cordis-catalog-contract.spec.ts
2026-07-30 20:28:25 +08:00
Tianyi Cui
780a601635 Merge latest master into worktree-config-settings-seam
# Conflicts:
#	packages/typert/generator/tests/cordis-catalog-contract.spec.ts
2026-07-30 20:26:36 +08:00
Wenlu Wang
9dc5b4f58d Merge branch 'master' into codex/queue-collapse 2026-07-30 20:24:12 +08:00
NI0317
936a487bb0 Merge remote-tracking branch 'origin/master' into codex/sandbox-policy-context 2026-07-30 20:23:17 +08:00
creatixchu
0ea0aef41a Merge remote-tracking branch 'origin/feat/directory-picker-quiet-navigation' into feat/dir-selector-adaptive-default 2026-07-30 20:23:11 +08:00
Chinesezjc
83c93bb18f Merge remote-tracking branch 'origin/master' into feat/web-presenter 2026-07-30 20:22:51 +08:00
creatixchu
b6fc6328f3 Merge remote-tracking branch 'origin/master' into feat/directory-picker-quiet-navigation 2026-07-30 20:22:35 +08:00
Tianyi Cui
bdc21717c0 Merge branch 'master' into worktree/fix-macos-web-replay 2026-07-30 20:22:12 +08:00
Tianyi Cui
2fb90a744e Merge pull request #929 from deepseek-harness/worktree-optgate
perf(scripts): gen-doc-graphs and typert gen
2026-07-30 20:21:18 +08:00
kingwl
29d8ca5ee5 Merge remote-tracking branch 'origin/master' into codex/queue-collapse
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-30 20:11:46 +08:00
imccyu
e3388cee87 ci: reduce typert cost 2026-07-30 20:03:58 +08:00
Chinesezjc
cc1bba31d8 fix(tool-web): align fetch card truncation, drop view content copies, sync card docs
Address the code-review bot findings on the web result card:
- web_fetch's card truncated now derives from the shared renderFetchOutput
  helper, matching the effective truncation the model-facing text reflects
  (provider cap, source cut, or output cap), instead of the provider-only flag.
- Drop the redundant content copy from both web result views; a UI without the
  web capability falls back to the raw tool/result content. Narrow the TUI
  transcript view.content access accordingly.
- Set the result-state title from the call args (query/url) so a window-
  truncated replay keeps a title.
- Project meta from the seam result types rather than hand-rolled value types.
- Sync the card vocabulary across core tools README, docs/core-data-structures,
  the adding-a-tool cookbook, and the tool-web package README (both languages,
  re-recorded pairings); regenerate the cordis api-catalog and cordis-inspect
  snapshot; revise the Agent Note.
2026-07-30 20:01:41 +08:00
Hypatia May
fe97451604 Merge remote-tracking branch 'origin/master' into fix/human-transcript-projection
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-17-dedicated-full-screen-tui-front-door.i18n.yaml
#	docs/cordis-catalog/services.md
#	packages/host/apiproxy/README.i18n.yaml
#	packages/ui/tui/README.i18n.yaml
2026-07-30 19:57:49 +08:00
imccyu
82a151ed35 ci: increase coverage memory 2026-07-30 19:57:18 +08:00
imccyu
67de3e12b6 ci: reduce coverage cocurrency 2026-07-30 19:57:18 +08:00
imccyu
9f0febe070 perf: typert add cache 2026-07-30 19:57:17 +08:00
imccyu
7326b9b2a4 fix(scripts): share package-source selection to clear the jscpd clone
The spec duplicated collectEventRelations' source-selection block; extract
collectPackageSources and use it from both sides.
2026-07-30 19:57:17 +08:00
imccyu
f988ca9b86 fix(scripts): own the locality proof's premises in gen-doc-graphs
Review follow-up. provenLocalCallee inferred file-local calls from module
scoping but borrowed non-exportedness from its one caller and never checked
module-ness: a helper in a global script file (no import/export) is
program-visible and callable cross-file with no same-file reference, so the
proof passed and those call sites were dropped as silently missing matrix
cells. Guard both premises at the proof entry, failing toward the global
fallback.

- State the EVENT_API_METHODS obligation: a visitSource branch for an
  unlisted method name is dead because the prefilter drops the call first.
- Add gen-doc-graphs.spec.ts pinning fast path vs global fallback equivalence
  on fixture programs: a proven-local helper, an alias-escaping helper, and a
  global-script helper (negative control that keeps the fallback exercised).
- Record the demand-driven indexing decision in the Program-backed semantic
  gates Agent Note (both languages, pairing re-recorded).

Generated docs stay byte-identical (verify-doc-graphs green).
2026-07-30 19:57:17 +08:00
imccyu
0a3cf3b5a6 perf(scripts): drop the whole-repo call-site pre-index from gen-doc-graphs
The event-relation collector resolved every CallExpression in all package
sources up front (getResolvedSignature is the most expensive checker query)
and type-classified every property-access receiver before looking at the
method name. Both costs served a tiny fraction of call sites.

- Filter by event API method name first; receiver classification now runs
  on those calls only.
- Replace the eager global call-site index with demand-driven indexing:
  when a non-exported local helper's same-file references are all provably
  direct callees, only that file is indexed; any other reference shape
  (alias escape) falls back to the original full package-source index.

Generated docs are byte-identical; verify-doc-graphs stays green. Halves
the script's CPU time (23.4s -> ~13s user on a warm run).
2026-07-30 19:57:16 +08:00
creatixchu
692ada7485 Merge remote-tracking branch 'origin/feat/directory-picker-quiet-navigation' into feat/dir-selector-adaptive-default 2026-07-30 19:48:45 +08:00
NI0317
0592d0fcea Merge remote-tracking branch 'origin/master' into codex/sandbox-policy-context 2026-07-30 19:48:35 +08:00
Tianyi Cui
9d5a59eadf Merge latest master into worktree-config-settings-seam 2026-07-30 19:48:06 +08:00
creatixchu
94f115725c Merge remote-tracking branch 'origin/master' into feat/directory-picker-quiet-navigation 2026-07-30 19:48:02 +08:00
Tianyi Cui
49678f38ae test(typert): allow catalog analysis under coverage 2026-07-30 19:46:47 +08:00
imccyu
e6a621d17d Merge pull request #968 from deepseek-harness/codex/figma-context-injection-row
feat(web): match context injection disclosure design
2026-07-30 19:45:57 +08:00
NI0317
1e56cd6765 Merge origin/master into codex/sandbox-policy-context 2026-07-30 19:40:26 +08:00
creatixchu
6d7bd7e703 fix(web): keep the plan card to decisions it can actually answer
Review follow-ups on the presentation intent.

The card claimed any single-question request declaring the intent, then sent one
of two labels — so a producer offering a third option, or a multi-select batch,
lost answers the generic flow would have shown. That contradicts the intent's
own contract, so `planReviewOf` now claims only a binary single choice and
leaves everything else to the flow that can express it.

`ask()` also rejects a plan-review intent on a question with no `detail`: the
intent declares detail IS the plan, and without one a honouring UI asks the
user to approve something invisible. The client keeps its own fallback — it sits
downstream of a wire boundary — but the misconfiguration now fails at the asker.

`planReviewOf` stops being a value export of the client contract face (client
export discipline: pure helpers stay internal; the tests already import it
relatively), and the ui-question README fallback list, both languages, now
states every condition the code enforces.
2026-07-30 19:38:18 +08:00
NI0317
c54fed8a20 Merge origin/master into codex/sandbox-policy-context 2026-07-30 19:31:17 +08:00
NI0317
598d0ea769 test(sandbox-policy): record wording evidence 2026-07-30 19:30:11 +08:00
Tianyi Cui
fb30187161 fix(web): isolate replay skill discovery 2026-07-30 19:30:06 +08:00
imccyu
a1f1f9c29a Merge branch 'master' into codex/figma-context-injection-row 2026-07-30 19:20:21 +08:00
kingwl
dec8173c43 Merge remote-tracking branch 'origin/master' into codex/queue-collapse 2026-07-30 19:20:20 +08:00
kingwl
5f87c7a89c fix(web): close queue collapse review gaps 2026-07-30 19:20:13 +08:00
creatixchu
132294fe8d fix(web): register the plan-review e2e lane in the host-plane program
The lane boots the host spine through the shared scaffold, so it belongs to
tsconfig.host.json and must stay out of the client-registered apps/web project
— one program cannot hold both sides of the cordis Context merges.
2026-07-30 19:12:02 +08:00
creatixchu
2363ef01eb feat(web): render a plan review as a decision card, not a quiz
The Web composer now renders a request that declares the `plan-review` intent
as its own surface: the waiting-approval card language — amber "Plan review"
strip, the plan as the scrolling markdown body, the question as the card's
accessible name — over one decision row of Chat about it / Refuse / Approve.
Gone from that surface are the 1/1 pager, the numbered radio rows, the custom
answer row, and Skip/Submit, which made approving a plan read as sitting an
exam.

Approve and Refuse answer with the asker's own option labels and keep its
descriptions as tooltips; Chat about it cancels the request so the composer
returns and the user can simply say what they want. Copy is bilingual under the
existing `question` namespace.

The shape choice lives inside the single composer entry rather than a second
chain registration, so the two surfaces cannot race the same carrier, and
`planReviewOf` falls back to the generic flow for any request it cannot render
as a card — the client sits downstream of a wire boundary and every request
must stay answerable.
2026-07-30 19:09:35 +08:00
creatixchu
89d30b0ef7 feat(user-interaction): declare a plan-review presentation intent on questions
A question may now carry `intent`, a tagged declaration that it IS a decision
of a known shape, so a UI that recognises the tag can present it as such
instead of as a generic option list. The one member is
`{ kind: 'plan-review', approve }`, which plan-mode sets on the exit_plan_mode
review.

An intent shapes presentation only: a UI honouring it answers with the same
option labels a generic UI would send, so the tool reads one answer shape
either way, and a UI that does not know the tag renders the generic flow.
`approve` names the affirmative option rather than relying on option order;
since no type can tie that label to the question's own option list, `ask()`
rejects a mismatch as BAD_INTENT, and the wire schema rejects an unknown tag
outright rather than silently rendering generic.

plan-mode also stops reporting a dismissed review as "the user cancelled
ask_user_question" — a tool it never called. A dismissal now tells the model
the user took the turn back to speak, and to stay in plan mode and wait; every
other ask failure keeps its own message.
2026-07-30 19:09:19 +08:00
Tianyi Cui
b5662f918d Merge remote-tracking branch 'origin/master' into worktree/ci-independent-consumer-build 2026-07-30 19:02:32 +08:00
Tianyi Cui
6d6c146f81 ci: allocate consumer runner independently 2026-07-30 19:02:10 +08:00
Chinesezjc
6b7987d813 test(snapshot): re-apply web card type surface after master merge 2026-07-30 19:01:27 +08:00
Chinesezjc
122006bcbe Merge remote-tracking branch 'origin/master' into feat/web-presenter
# Conflicts:
#	examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
2026-07-30 18:59:46 +08:00
creatixchu
f5ab6d94a8 Merge remote-tracking branch 'origin/master' into worktree/approval-panel-max-height 2026-07-30 18:59:06 +08:00
Tianyi Cui
0c1285e249 Merge latest master into worktree-config-settings-seam 2026-07-30 18:55:15 +08:00
creatixchu
ca3510e243 Merge remote-tracking branch 'origin/feat/directory-picker-quiet-navigation' into feat/dir-selector-adaptive-default 2026-07-30 18:55:13 +08:00
Chinesezjc
e034a173d6 test(snapshot): re-record ACP goldens for the web card tag
web_fetch now projects presentationMeta ({url, statusCode, truncated}) onto its
tool/result, so the web-fetch scenario carries that meta; cordis-inspect-jsdoc
shifts with the widened ToolResultView type surface. Model-facing text is
unchanged. Refreshed keyless.
2026-07-30 18:54:51 +08:00