Commit Graph
5998 Commits
Author SHA1 Message Date
Turtle e996aabf47 Merge branch 'master' into worktree/dsh-arg-parser
Integrate the Commander adapter with master's `dsh web --workspace-root`
(workspace-aware session flow).

- args.ts: add `--workspace-root <path>` to the web subcommand; WebInvocation
  carries workspaceRoot.
- web.ts: keep the adapter-parsed signature, take (host, port, dev,
  workspaceRoot) and pass workspaceRoot through to AppCLIEntry (drop master's
  re-added parseArgs and CLI host/port validation — the schema owns those).
- bin.ts forwards invocation.workspaceRoot; args.spec + the Agent Note pair note
  the flag.
2026-07-25 18:05:39 +08:00
Turtle fd8d93da12 docs: prohibit creating PR labels 2026-07-25 18:02:36 +08:00
Turtle 17147df200 Merge remote-tracking branch 'origin/master' into codex/consolidate-agent-notes 2026-07-25 18:00:37 +08:00
Turtle 32a38b7060 Merge remote-tracking branch 'origin/master' into codex/require-pr-labels 2026-07-25 17:59:29 +08:00
Tianyi Cui 84be7cc622 Merge pull request #613 from deepseek-harness/worktree-workspace-gui
feat(gui): workspace entity + intent mode — picker, guidance, durable titles
2026-07-25 17:52:48 +08:00
Turtle 2243023575 Merge branch 'master' into worktree/dsh-arg-parser
Integrate the Commander adapter with master's headless rework (dsh -p now boots
through AppCLIEntry — the same cordis.yml composition as dsh web, web-observable
while it runs — via toFetchHandler(ctx.apiProxy)).

- headless.ts: keep master's AppCLIEntry-based body but take the adapter's
  pre-parsed `task` (drop the re-added parseArgs). Old startHost path and the
  now-deleted packages/host/runtime dependency are gone.
- remove the stale packages/host/runtime dir left on disk by master's deletion
  (mirrors the earlier packages/ui/acp cleanup).
2026-07-25 17:48:21 +08:00
imccyu 1f0d555f60 docs(missions): record workspace GUI closeout lessons 2026-07-25 17:46:05 +08:00
imccyu 1a9c1596b8 test(web): cover workspace UI branches 2026-07-25 17:46:05 +08:00
imccyu c06cb2deec test(web): stabilize workspace snapshots 2026-07-25 17:46:05 +08:00
imccyu 468c64a078 fix(web): keep composer add action attachment-only 2026-07-25 17:46:05 +08:00
imccyu 08ce02da2b docs(web): finalize workspace UI product flow 2026-07-25 17:46:04 +08:00
imccyu 9eb9c70a8a feat(web): add workspace-aware session flow 2026-07-25 17:45:26 +08:00
Turtle 5209656086 docs: clarify PR label selection 2026-07-25 17:43:26 +08:00
Turtle 67e2ef8ef2 chore: retrigger CI (synchronize event was missed) 2026-07-25 17:37:50 +08:00
Turtle 5a06b9e926 fix(cli): reject default-surface flags leaked onto the web subcommand
ds-review-bot: `dsh web -p task`, `dsh web --resume s`, and `dsh --config c.yml
web` reached the web action with those values in program.opts() but the action
ignored them and served — silently dropping mode-specific inputs. The web
action now reads the parent opts and fails loud (exit 1) on a leaked
--config/-p/--resume, matching the root mode's mixing guard. Covered in
args.spec.ts.

Also (ds-review-bot): tui-demo/README documented the removed `dsh
[path-to-cordis.yml]` positional form; corrected to bare `dsh` / `dsh --config
<path>`. Agent Note + Chinese pair note the web-leak guard.
2026-07-25 17:24:39 +08:00
Turtle 38448a389e Merge remote-tracking branch 'origin/master' into codex/consolidate-agent-notes 2026-07-25 17:20:52 +08:00
Turtle 45034edd1a docs(skills): teach Agent Note consolidation 2026-07-25 17:20:49 +08:00
Tianyi Cui 755e2a8c51 Merge pull request #631 from deepseek-harness/worktree-webheadless
headless on the shared composition; boot visibility; webserver spec
2026-07-25 17:19:25 +08:00
Tianyi Cui 3b4bb4436f Merge branch 'master' into worktree-webheadless 2026-07-25 17:15:08 +08:00
_Kerman 7b875b9f62 fix(agent-loop): publish turn state only after turn/start commits
A pre-commit turn/start rejection previously left the machine bricked:
lastTurn had already advanced past a turn the log never recorded, so every
later turn/start violated the session invariant's contiguity rule, and the
admitted prompt lingered in the outbox to leak into the next turn's request.

Keep admitted input on the stack (an argument to run()) until turn/start
commits, then advance lastTurn, set turnOpen, and append the prompt and its
additional contexts as user/message events inside the now-existing turn.
A rejected turn/start therefore unwinds with zero shared state to roll
back, the turn number stays reusable, and the outbox never holds input for
a turn that does not exist. This also restores the documented event order:
the prompt follows turn/start directly instead of waiting in the outbox
behind any steering carried over by cancel({keepInbox}).
2026-07-25 17:06:51 +08:00
Turtle d616d4ca50 docs: state the shipped dsh CLI design, not the change history
Rewrite the Agent Note's Decision/Resume/front-door/Consequences sections and
its Chinese pair in present tense, dropping changelog phrasing ("X replaces an
earlier Y", "retired the env var", "which the merge brought in", "Anyone who
ran X now uses Y", "an earlier revision dispatched..."). The note now introduces
the current grammar directly; Problem and Alternatives keep the motivation and
rejected designs the format requires.
2026-07-25 16:49:45 +08:00
Turtle a70cea9a51 Merge remote-tracking branch 'origin/master' into codex/consolidate-agent-notes 2026-07-25 16:43:12 +08:00
Turtle 3feb05fef8 docs(agent-notes): consolidate superseded decisions 2026-07-25 16:43:07 +08:00
Turtle fcd355bf45 fix(examples): remove legacy retry rejection 2026-07-25 16:28:31 +08:00
Turtle 9f6dbde7f6 refactor(cli): let the webserver schema own web --host/--port validation
The adapter no longer validates --host/--port or declares the allowed set:
LOOPBACK_HOST/ALL_INTERFACES_HOST leave args.ts. --host/--port are now
unvalidated pass-through overrides — the adapter only Number-coerces the port
string (the dsh-host-webserver schema wants a number). That schema
(host a 127.0.0.1/0.0.0.0 literal union, port a natural <= 65535) is the single
source of both the default (the shipped cordis.yml webserver row) and validity;
AppCLIEntry patches an explicit flag into that row, so a bad host/port fails
loud at the schema on boot (verified: `dsh web --host 9.9.9.9` and `--port abc`
both exit 1 with the schema's ValidationError).

web.ts keeps two display-only literals (the printed loopback URL, the
all-interfaces LAN-detection check), commented as mirrors of the schema, not a
source of truth. Agent Note + Chinese pair and README updated; the args spec
drops the host/port exit-code cases (now the schema's job, covered by the web
smoke on boot).
2026-07-25 16:19:02 +08:00
Turtle 5345e93ceb Merge remote-tracking branch 'origin/master' into codex/provider-retry-policy
# Conflicts:
#	.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md
#	docs/core-data-structures/llm-streaming.i18n.yaml
#	packages/llm/llm-retry/README.md
#	packages/llm/llm-retry/src/index.ts
#	packages/llm/llm-retry/tests/retry.spec.ts
2026-07-25 16:05:05 +08:00
Turtle 6a8049879e docs(cli): trim bin.ts module comment to the non-obvious contract
Review (turtle1999): the opening narrated control flow. Drop the argv-parse/
switch narration; keep only the two non-obvious facts (per-mode dynamic imports,
and that the adapter exits so only a valid mode reaches the switch).
2026-07-25 15:50:10 +08:00
Turtle fca2dda37d refactor(cli): unify the arg grammar — one program, --config flag, real web subcommand
Drop the bare `dsh <config>` positional in favor of a `--config <path>` flag.
Without a root positional, `web` can be a real Commander subcommand in one
program instead of the reserved-first-token dispatch to a second parser, so
`dsh --help` lists every mode natively (no hand-pasted command text) and the
second parser + reserved-token machinery are gone.

Grammar:
  dsh                       TUI (shipped tree + ~/.dsh overlay)
  dsh --config <path>       TUI, alternate tree (demos/tests only)
  dsh --resume <id>         TUI, resume a session
  dsh -p "task"             headless one-shot
  dsh web [--host --port --dev]

`dsh` is the product front door with no positional; `--config` exists only so
demo:cordis, demo:code-mode, and the keyless PTY smokes can point the shipped
bin at an example tree. Those three sites and the /resume re-exec argv move to
`--config <path>`. The `-p` + `--config`/`--resume` mode-mixing guard and the
cordis.yml-owns-host/port-default fix are preserved.

Agent Note + Chinese pair, README, tui.ts docs updated. All 13 PTY smokes
(including code-mode via --config and the exec-replace resume handoff) green.
2026-07-25 15:47:55 +08:00
Hypatia May 7cf5b08d07 Merge remote-tracking branch 'origin/master' into session-query-tool
# Conflicts:
#	docs/core-data-structures/persistence.i18n.yaml
#	packages/session-persistence/session-persistence-jsonl/src/index.ts
2026-07-25 15:43:45 +08:00
Turtle efc725b7e4 fix(llm): isolate retry policy histories 2026-07-25 15:38:58 +08:00
Hypatia May 3da324d1e2 refactor(session-query): split model-facing tool modules 2026-07-25 15:38:09 +08:00
Tianyi Cui f51f1d6f9e Merge pull request #634 from deepseek-harness/codex/trim-redundant-comments
Trim redundant source comments
2026-07-25 15:37:35 +08:00
Tianyi Cui adedeb70a8 docs(skill): clarify comment guidance 2026-07-25 15:29:47 +08:00
Tianyi Cui d3b5988061 docs(subagent): restore refusal contract comment 2026-07-25 15:25:52 +08:00
Tianyi Cui a5820f264c Merge origin/master into codex/trim-redundant-comments 2026-07-25 15:22:13 +08:00
Tianyi Cui 4de92e62af Merge pull request #609 from deepseek-harness/codex/session-directory-layout
Group persisted sessions in project directories
2026-07-25 15:15:37 +08:00
Tianyi Cui 8a7bb03aab fix(persistence): reconcile project session layout 2026-07-25 15:11:17 +08:00
Turtle 91d86f9b21 fix(cli): let cordis.yml own the web host/port default (single source)
The merge's "always pass adapter-resolved host/port to AppCLIEntry" made the
adapter's 127.0.0.1/3080 shadow apps/cli/cordis.yml's webserver row — editing
the yml port would have had no effect, a duplicated default.

The adapter now assigns no host/port default: an absent --host/--port leaves the
field undefined (WebInvocation.host?/port?), runWeb forwards each to AppCLIEntry
only when present, and AppCLIEntry patches the webserver row only for an
explicit flag. cordis.yml is the single source of the host/port default; the
adapter still validates a flag when given. Removes the now-unused
DEFAULT_WEB_PORT; LOOPBACK_HOST/ALL_INTERFACES_HOST stay as the allowed-value
vocabulary (validation + the printed URL/LAN line).
2026-07-25 15:03:17 +08:00
Tianyi Cui c09397f833 Merge branch 'master' into codex/session-directory-layout 2026-07-25 14:53:20 +08:00
Turtle 222bebbbbe Clarify ACP workspace resolution 2026-07-25 14:50:22 +08:00
Tianyi Cui 4f5cda16c5 Merge pull request #607 from deepseek-harness/feat/llm-empty-response-retry
fix(llm): classify empty model completions as retryable EMPTY_RESPONSE
2026-07-25 14:49:06 +08:00
imccyu f7d85bf9f5 fix(headless): CI green + review-bot findings for the shared composition
Coverage: api-proxy.ts joins the web-transport exclusion block (its
behavior specs moved here with it; the assembled-entry coverage lands with
the GUI test lane). Static: config-catalog regenerated after the log-round
revert shifted a source anchor. Prose brought current per review: the cli
README now describes the one shared composition (and its build
prerequisite), the apiproxy README points at the api-gateway row instead of
the deleted runtime package, and the config-tree agent note's headless
deferral paragraph records what actually landed (bilingual pair
re-recorded).
2026-07-25 14:40:45 +08:00
imccyu 0e287b582c feat(headless): boot dsh -p from the shared composition; retire dsh-host-runtime
dsh -p now runs AppCLIEntry over the same cordis.yml as dsh web — one
composition, no disabled rows, no layer marks. The only surface difference
is port 0 (parallel runs never collide), and the printed URL opens the live
headless session in a browser while it runs. The model face gains what web
already had (ask_user_question, workspace context, model titles) per the
unification ruling. InProcessApiClient now wraps toFetchHandler(ctx.apiProxy)
directly, so bootHost/startHost lose their last consumer and the
dsh-host-runtime package retires; its api-proxy behavior specs move to
dsh-host-apiproxy where the implementation lives.
2026-07-25 14:40:45 +08:00
imccyu 4a27da44cf test(web): real-composition webserver spec
Boots a test-only cordis.yml through the real Loader and asserts the route
service's behavior surface: exact/longest-prefix matching, tapIndex
transform order and unsubscription, traversal 403, non-GET 405, SPA-200
fallback, malformed-request 400 without process exit, duplicate-pattern
throw, dispose closing held connections with register/disposer symmetry,
and a listen-failure fail-loud case (EADDRINUSE -> FAILED fiber + late
rejection). Replaces the retired factory-era specs.
2026-07-25 14:40:45 +08:00
Tianyi Cui ab63579d44 Merge origin/master into feat/llm-empty-response-retry 2026-07-25 14:40:14 +08:00
Tianyi Cui 9873240390 fix: align empty-response retry with current master 2026-07-25 14:39:57 +08:00
Tianyi Cui 0b1cd0a1cb Merge pull request #637 from deepseek-harness/codex/remove-missions
docs: remove missions directory
2026-07-25 14:38:11 +08:00
Turtle 2dfd8635e8 Merge branch 'master' into worktree/dsh-arg-parser
Integrate the Commander argument adapter and dsh-front-door work with master's
config-tree `dsh web` (#601: AppCLIEntry + apps/cli/cordis.yml) and the
packages/ui/acp → packages/acp/acp relocation.

- web.ts: keep master's AppCLIEntry-based boot, but take the adapter's parsed
  (host, port, dev) instead of an internal parseArgs. The adapter's host/port
  defaults (127.0.0.1/3080) match cordis.yml, so always passing them is
  behavior-equivalent to master's "undefined keeps the yml default".
- apps/cli/package.json: master's expanded config-tree dep set + commander.
- retire-readline Agent Note: point the TUI refusal proof at
  apps/cli/tests/built-bin.e2e.ts (both languages), re-record the pair.
- READMEs reconciled (demo-bin removal + master's ACP/channel rewording).
2026-07-25 14:37:57 +08:00
Turtle f7447b181d docs: remove missions directory 2026-07-25 14:36:31 +08:00
Turtle dc5045dc0a docs: keep PR label guidance general 2026-07-25 14:30:52 +08:00