Commit Graph
100 Commits
Author SHA1 Message Date
Turtle cc8ea70dc0 Merge pull request #2560 from deepseek-harness/codex/add-security-policy
docs: add bilingual experimental safety notice
2026-08-23 11:10:52 +08:00
Turtle de727c4a1b Merge pull request #2773 from deepseek-harness/codex/simplify-comments-and-docs
docs: remove implementation narration from prose
2026-08-21 22:51:38 +08:00
Turtle 51684bd6be Merge pull request #2901 from deepseek-harness/turtle/add-docs-link
docs: add documentation website link
2026-08-21 22:38:37 +08:00
Turtle 6b3e971805 docs: remove implementation narration from prose 2026-08-21 22:22:23 +08:00
Turtle 6ef68c3b96 docs: add documentation website link 2026-08-21 15:33:48 +08:00
Turtle 0e40664c67 Merge pull request #2862 from deepseek-harness/turtle/fix-translation-link-locale
docs: fix Chinese Agent Note link locale
2026-08-21 10:38:14 +08:00
Turtle d229df59dc docs: fix Chinese Agent Note link locale 2026-08-20 22:24:16 +08:00
Turtle 93a1b569ac Merge remote-tracking branch 'origin/master' into codex/remove-cordis-catalog-line-numbers
# Conflicts:
#	docs/subsystems/agent-team.i18n.yaml
#	docs/subsystems/approval.i18n.yaml
#	docs/subsystems/client-modules.i18n.yaml
#	docs/subsystems/client-modules.md
#	docs/subsystems/client-modules.zh.md
#	docs/subsystems/code-runtime.i18n.yaml
#	docs/subsystems/commands.i18n.yaml
#	docs/subsystems/commands.md
#	docs/subsystems/commands.zh.md
#	docs/subsystems/compaction.i18n.yaml
#	docs/subsystems/compaction.md
#	docs/subsystems/compaction.zh.md
#	docs/subsystems/core.i18n.yaml
#	docs/subsystems/core.md
#	docs/subsystems/core.zh.md
#	docs/subsystems/credentials.i18n.yaml
#	docs/subsystems/credentials.md
#	docs/subsystems/credentials.zh.md
#	docs/subsystems/feedback.i18n.yaml
#	docs/subsystems/filesystem.i18n.yaml
#	docs/subsystems/goal.i18n.yaml
#	docs/subsystems/http-server.md
#	docs/subsystems/http-server.zh.md
#	docs/subsystems/invariants.i18n.yaml
#	docs/subsystems/invariants.md
#	docs/subsystems/invariants.zh.md
#	docs/subsystems/jobs.i18n.yaml
#	docs/subsystems/llm-streaming.i18n.yaml
#	docs/subsystems/llm-streaming.md
#	docs/subsystems/llm-streaming.zh.md
#	docs/subsystems/permission-presets.md
#	docs/subsystems/permission-presets.zh.md
#	docs/subsystems/persistence.i18n.yaml
#	docs/subsystems/persistence.md
#	docs/subsystems/persistence.zh.md
#	docs/subsystems/plan.i18n.yaml
#	docs/subsystems/plan.md
#	docs/subsystems/plan.zh.md
#	docs/subsystems/sandbox.i18n.yaml
#	docs/subsystems/sandbox.md
#	docs/subsystems/sandbox.zh.md
#	docs/subsystems/schedule.i18n.yaml
#	docs/subsystems/session-projection.i18n.yaml
#	docs/subsystems/session-projection.md
#	docs/subsystems/session-projection.zh.md
#	docs/subsystems/session-query.i18n.yaml
#	docs/subsystems/session-reference.i18n.yaml
#	docs/subsystems/session-reference.md
#	docs/subsystems/session-reference.zh.md
#	docs/subsystems/session-telemetry.md
#	docs/subsystems/session-telemetry.zh.md
#	docs/subsystems/session-title.i18n.yaml
#	docs/subsystems/session.i18n.yaml
#	docs/subsystems/session.md
#	docs/subsystems/session.zh.md
#	docs/subsystems/settings.i18n.yaml
#	docs/subsystems/settings.md
#	docs/subsystems/settings.zh.md
#	docs/subsystems/shell.i18n.yaml
#	docs/subsystems/shell.md
#	docs/subsystems/shell.zh.md
#	docs/subsystems/skills.i18n.yaml
#	docs/subsystems/skills.md
#	docs/subsystems/skills.zh.md
#	docs/subsystems/spill.i18n.yaml
#	docs/subsystems/storage.i18n.yaml
#	docs/subsystems/subagent.i18n.yaml
#	docs/subsystems/subagent.md
#	docs/subsystems/subagent.zh.md
#	docs/subsystems/subprocess.i18n.yaml
#	docs/subsystems/system-prompt.i18n.yaml
#	docs/subsystems/system-prompt.md
#	docs/subsystems/system-prompt.zh.md
#	docs/subsystems/tasks.md
#	docs/subsystems/tasks.zh.md
#	docs/subsystems/terminal.md
#	docs/subsystems/terminal.zh.md
#	docs/subsystems/token-meter.i18n.yaml
#	docs/subsystems/tools.i18n.yaml
#	docs/subsystems/tools.md
#	docs/subsystems/tools.zh.md
#	docs/subsystems/typert.i18n.yaml
#	docs/subsystems/typert.md
#	docs/subsystems/typert.zh.md
#	docs/subsystems/user-interaction.i18n.yaml
#	docs/subsystems/user-questions.i18n.yaml
#	docs/subsystems/user-questions.md
#	docs/subsystems/user-questions.zh.md
#	docs/subsystems/web.i18n.yaml
#	docs/subsystems/workflow.i18n.yaml
#	docs/subsystems/workflow.md
#	docs/subsystems/workflow.zh.md
#	docs/subsystems/workspace.i18n.yaml
#	docs/subsystems/workspace.md
#	docs/subsystems/workspace.zh.md
#	packages/typert/generator/tests/cordis-catalog.spec.ts
2026-08-20 19:48:43 +08:00
Turtle b5aa2602a0 Merge pull request #2498 from deepseek-harness/codex/docs-publish-source-build
docs: add source build prerequisite to plugin tutorial
2026-08-13 18:04:52 +08:00
Turtle 7c94659ec4 docs: add source build prerequisite to plugin tutorial 2026-08-13 18:02:12 +08:00
Turtle 23da0fe91a Merge pull request #2481 from deepseek-harness/docs/community-support-channels-v2
docs: add localized community channels
2026-08-13 15:39:33 +08:00
Turtle 3c3121bf8a Update README.zh.md 2026-08-13 15:39:23 +08:00
Turtle c1ae458090 Merge pull request #2469 from deepseek-harness/codex/docs-release-smoke-fixes
docs: fix pre-release smoke test failures
2026-08-13 15:11:31 +08:00
Turtle 3a1a4e2cd8 docs: address fragment review feedback 2026-08-13 14:30:17 +08:00
Turtle 4201bbceca docs: use installed dsh command in publish tutorial 2026-08-13 14:20:09 +08:00
Turtle bca790481c docs: document stable fragment aliases 2026-08-13 14:20:09 +08:00
Turtle 62080d49c2 docs: fix release smoke test failures 2026-08-13 14:20:09 +08:00
Turtle a312675d10 Merge pull request #2454 from deepseek-harness/codex/capitalize-service-provider
docs: capitalize Service Provider across repository
2026-08-13 14:03:57 +08:00
Turtle 1540e76598 docs: capitalize Service Provider across repository 2026-08-13 13:31:30 +08:00
Turtle a0c60fc7b9 Merge pull request #2405 from deepseek-harness/codex/recommend-agent-architecture-docs
docs: recommend agent-assisted architecture exploration
2026-08-12 21:35:56 +08:00
Turtle ca5e67490e docs: recommend agent-assisted architecture exploration 2026-08-12 21:23:06 +08:00
Turtle 66c6059ca8 Merge pull request #2376 from deepseek-harness/human-doc
docs: rework the architecture map and sync its Chinese pair
2026-08-12 21:13:47 +08:00
Turtle 30b2a04b69 docs: correct the turn-flow event order and dispatch modes
turn/start precedes the first claim and pre-step, a rejected or empty first claim closes a zero-step turn, llm/stream and tools/* are their own domains, and agent/turn-stopping is serial. Regenerates the lifecycle diagram from the same facts and names --patch overlays exactly.
2026-08-12 21:03:15 +08:00
Turtle a204970725 test: refresh the translation-prompt snapshot for the clone URL
The reviewed example pair embeds README.md verbatim, so the deepseek-ai clone URL moves the expected request.
2026-08-12 21:01:58 +08:00
Turtle 7af0b8f6df docs: fix grammar and sync Chinese counterparts
Correct the reworked English wording in the CLI profile section, architecture map, and llm-streaming cross-reference, then bring every edited pair's Chinese side along and re-record the pairing hashes.
2026-08-12 21:01:45 +08:00
Turtle 988f4ad117 update architeture.md 2026-08-12 21:01:11 +08:00
Turtle 09981bf948 human touch 2026-08-12 21:00:46 +08:00
Turtle d8ef7785fd update readme 2026-08-12 21:00:46 +08:00
Turtle e091593866 replace url 2026-08-12 21:00:46 +08:00
Turtle 737c433036 Merge pull request #2305 from deepseek-harness/docs/post-v3-release-proofreading
docs(i18n): apply release proofreading updates
2026-08-12 21:00:12 +08:00
Turtle beb4502c27 Merge pull request #2335 from deepseek-harness/codex/comment-obvious-code
docs: discourage obvious code comments
2026-08-12 16:27:19 +08:00
Turtle b423ed15d7 Merge pull request #2319 from deepseek-harness/codex/separate-dsh-build
Keep pnpm dsh separate from the repository build
2026-08-12 15:53:57 +08:00
Turtle baf2bc6dc3 docs: clarify missing artifact failures 2026-08-12 15:41:53 +08:00
Turtle e6d2a97645 test: refresh translation prompt snapshot 2026-08-12 15:37:43 +08:00
Turtle 4e7f40382d docs: clarify source build prerequisite 2026-08-12 15:37:03 +08:00
Turtle 5d3fdf3042 docs: record separate dsh build decision 2026-08-12 15:37:03 +08:00
Turtle 4c49e7109b fix(cli): separate dsh from repository build 2026-08-12 15:37:03 +08:00
Turtle 9f2c64f175 docs: discourage obvious code comments 2026-08-12 15:22:09 +08:00
Turtle 07d7798127 Merge pull request #2334 from deepseek-harness/codex/fix-readme-webui-guide-link
docs: link Web UI guide index explicitly
2026-08-12 15:18:41 +08:00
Turtle 5142bc3eb6 test: refresh translation prompt snapshot 2026-08-12 14:18:37 +08:00
Turtle 0f13ffa458 docs: link Web UI guide index explicitly 2026-08-12 14:03:11 +08:00
Turtle 15c84cdc4b Merge pull request #2310 from deepseek-harness/refactor/cmdline-plan-trim
refactor(cmdline): run the program's own commander action instead of a plan callback
2026-08-12 13:20:30 +08:00
Turtle 54dd75a969 refactor(cmdline): run the program's own commander action instead of a plan callback
parseCmdline(ctx, program): void only adapts commander control flow to
the launcher: it parses the immutable cmdlineArgs snapshot and turns
help, version, parse errors, and action rejections into a ctx.appExit
request. App validation and the ctx.provide of the app-owned service
live in the program's own synchronous .action(), which commander runs
inside parse — program.error(...) there shares the exit path with a
grammar rejection. Deletes the CmdlinePlan export, its unread ctx
parameter, the type-unsound (() => ({}) as T) default, and the
T | undefined return with its per-caller publish guard.
2026-08-12 13:07:41 +08:00
Turtle 258331f0da Merge pull request #2261 from deepseek-harness/codex/linear-web-onboarding
docs: make Web UI the primary onboarding path
2026-08-12 12:01:14 +08:00
Turtle 04fe477e7e docs: make Web UI the primary onboarding path 2026-08-12 11:44:33 +08:00
Turtle 35b4214e4e Merge pull request #2260 from deepseek-harness/codex/add-contributing-guide
docs: add contribution guide
2026-08-11 19:04:42 +08:00
Turtle 8e1c1faaad Merge pull request #2239 from deepseek-harness/refactor/trim-cmdline-seams
refactor(cmdline): trim the command-line seams to existing interfaces
2026-08-11 18:17:46 +08:00
Turtle 8a6c3736e4 docs: separate contribution links from license 2026-08-11 18:16:29 +08:00
Turtle a11081ac84 test: refresh contribution pairing snapshot 2026-08-11 18:09:16 +08:00
Turtle e5b8b36471 test(e2e): disable the always-on client-hmr row in the preset boot
The suite disables the webserver and browser roster rows; the reload
chain waits on both, so the activation audit failed the boot.
2026-08-11 18:01:25 +08:00
Turtle 149a5674be fix(cli): contain app-exit races in watcher setup; sync watch docs
A fast one-shot can request exit through ctx.appExit while the launcher
still awaits its watcher setup; the failure guard now also swallows the
resulting rejections when the tree is no longer live, not only on
signal shutdown. Sync the app-boot README and headless bundle comment
with unconditional patch watching, and bring the two Agent Notes still
asserting the --dev row append and the headlessIo slot current.
2026-08-11 18:01:25 +08:00
Turtle 341051603f refactor(web): remove --dev; mount the reload chain unconditionally
The client-hmr row joins the web bundle as an ordinary always-on roster
row: without a rebuild watcher rewriting client bundles it polls
unchanged files and stays idle. This deletes the --dev flag, the web
runtime's mode config, the mode-forked prompt contract, the DSH_WEB_MODE
bash variable, and the post-settlement row-creation machinery the
conditional row required. dsh web + pnpm run dev:web remains the
development loop.
2026-08-11 18:01:25 +08:00
Turtle fb301ace65 fix(web-app): defer to a user-configured client-hmr row
The whole-tree name scan (entries() recurses into subtrees) already
skips creation when any patch layer carries the row, including a
disabled one; make that contract explicit in the comment, pin it with a
test, and record it in the Agent Note.
2026-08-11 18:00:15 +08:00
Turtle c598989d08 refactor(cmdline): trim the command-line seams to existing interfaces
The web runtime creates its dev-mode client-hmr row in the root tree
after Loader settlement with plain loader.create, deleting the vendored
Entry.enableRuntime state machine and dsh-cmdline's enableRow export.
Include declares the existing EntryGroup.key tree-carrier marker instead
of the EntryConfigResolver protocol (its own path stays literal; nothing
used a dynamic path). The launcher recognizes no app row: SIGTERM exits
0 on every surface, every boot watches its user patch layers, and the
headless runner exits through ctx.appExit, deleting ctx.headlessIo. Also
restores the vendor README rescope entry to the position the
rescope-vendor exact-edit anchor requires, fixing the master hygiene
regression.
2026-08-11 18:00:15 +08:00
Turtle 2f4bf08798 docs: add Chinese contribution guide 2026-08-11 17:55:49 +08:00
Turtle 00c4664370 test: refresh translation prompt snapshot 2026-08-11 17:55:49 +08:00
Turtle 59e98ca8dd docs: add contribution guide 2026-08-11 17:55:49 +08:00
Turtle 5d591e55c1 Merge pull request #610 from deepseek-harness/codex/replace-surface-terminology
Replace overloaded surface terminology
2026-08-11 15:34:34 +08:00
Turtle 096586886a fix(review): address terminology feedback 2026-08-11 15:23:05 +08:00
Turtle c6f3870b51 test: refresh terminology snapshots 2026-08-11 15:23:05 +08:00
Turtle 0c708cb10d refactor: replace overloaded surface terminology 2026-08-11 15:23:05 +08:00
Turtle d8e89e1644 Merge pull request #2198 from deepseek-harness/codex/fix-clone-instructions
docs: replace nonexistent repository references
2026-08-11 13:09:19 +08:00
Turtle d00590c707 docs: replace nonexistent repository references 2026-08-11 12:35:38 +08:00
Turtle a9852a2b5b Merge pull request #2152 from deepseek-harness/codex/remove-source-installer
cleanup: simplify source execution around pnpm dsh
2026-08-11 12:07:29 +08:00
Turtle 67ef355800 refactor(cli): inline source launch script 2026-08-11 11:58:47 +08:00
Turtle 53c58e3914 Merge pull request #2228 from deepseek-harness/codex/remove-experimental
chore(packages): remove empty experimental group
2026-08-11 11:22:37 +08:00
Turtle 6ad289809b fix(docs): keep upstream clone instructions 2026-08-11 11:22:08 +08:00
Turtle c3cb4b350e fix(docs): align source examples with headless profile 2026-08-11 11:22:08 +08:00
Turtle 3e7cd31ab3 fix(ci): retire root dsh Knip exemption 2026-08-11 11:22:08 +08:00
Turtle fc2adf8c6b fix(ci): isolate source launcher build smoke 2026-08-11 11:22:08 +08:00
Turtle 9d79da0c62 test(cli): pin source build-first launch 2026-08-11 11:22:08 +08:00
Turtle d8e50c2c0b fix(review): address source-run feedback 2026-08-11 11:22:08 +08:00
Turtle 01257351d9 fix(ci): recognize root dsh script 2026-08-11 11:22:08 +08:00
Turtle e59af75554 fix(cli): keep source launch output clean 2026-08-11 11:22:08 +08:00
Turtle 2765de87c8 fix(ci): await math snapshot metrics 2026-08-11 11:22:08 +08:00
Turtle 7e77fcb52b fix(ci): stabilize snapshot checks 2026-08-11 11:22:08 +08:00
Turtle c9e14307b8 docs: simplify source-run instructions 2026-08-11 11:22:08 +08:00
Turtle ee9465e4b3 build before source dsh launch 2026-08-11 11:22:08 +08:00
Turtle 34abf69730 cleanup: remove managed source installer 2026-08-11 11:22:08 +08:00
Turtle f5ac90412c Merge branch 'master' into codex/remove-experimental 2026-08-11 11:17:09 +08:00
Turtle 94abd8631a fix(feedback): include session id in acknowledgement 2026-08-11 11:01:43 +08:00
Turtle fd5365e374 chore(packages): remove empty experimental group 2026-08-11 10:44:09 +08:00
Turtle dab601e123 fix(vendor): align command providers with Cordis rescope 2026-08-10 23:45:05 +08:00
Turtle ca39194221 docs(web): align client roster terminology 2026-08-10 23:45:05 +08:00
Turtle 45b300dc58 docs(notes): archive superseded dsh run decision 2026-08-10 23:45:05 +08:00
Turtle 5dcee005dd test(cli): guard the headless composition boundary 2026-08-10 23:45:05 +08:00
Turtle 09e2d2ddc1 refactor(cmdline): make command providers ordinary 2026-08-10 23:45:05 +08:00
Turtle 668bdb3d8e refactor(cmdline): keep readiness in web app 2026-08-10 23:45:05 +08:00
Turtle 1ebb12432b test(cli): shut down startup fixtures portably 2026-08-10 23:45:05 +08:00
Turtle b374c16fac test(agent-loop): wait for asynchronous reload startup 2026-08-10 23:45:05 +08:00
Turtle 18328ce615 refactor(cli): remove the unused profile preparation hook 2026-08-10 23:45:05 +08:00
Turtle a4d8c0da9b fix(web): include the HMR receiver in the initial client graph 2026-08-10 23:45:04 +08:00
Turtle 37ee7b0f24 fix(cmdline): reject multiple command-line owners 2026-08-10 23:45:04 +08:00
Turtle d4ccfbd80f refactor(cli)!: complete app-owned profile startup 2026-08-10 23:45:04 +08:00
Turtle 7e3a82eacc refactor(loader): resolve config after injected services 2026-08-10 23:45:04 +08:00
Turtle b692f38506 refactor(cli): discover app startup rows from injection 2026-08-10 23:45:04 +08:00
Turtle 1f0a0440f3 refactor(cmdline)!: an app's entrypoint provides values its rows read
Replaces the patch round trip. An app's entrypoint resolves the command
line into a service, and the rows it configures read that service from
their own config — port: !!js ctx.get('webStartup')?.port ?? 3080 — so the
resolved value beats the value written beside it and nothing is written
back into a row or handed to the launcher.

A bundle names the entrypoint row in its manifest (dsh.bundle.entrypoint),
which is what lets the boot mount in two passes: entrypoints alone, then
the whole composition. That ordering is required, not cosmetic — a row's
config expressions are evaluated when the include applies the row, and a
strict ctx.get only answers for a service whose providing fiber is already
active.

What this removes: ctx.appPatches and the launcher-owned patch layer, the
disable/re-enable recycle and its in-flight-mount barrier, overrideConfig,
and the reload hazard they existed for. A live config edit now re-applies
the second pass against services that are still up, so a served port
survives by construction.

What it adds: ctx.appReady, because Loader settlement no longer means the
app is up — a row mounted in the second pass can observe a settled tree
while that pass is still running, or already rolling back. The web URL line
waits for it, so a boot that fails in the second pass announces nothing.
2026-08-10 23:45:04 +08:00
Turtle f749e04881 docs: record how an app comes to own its command line
The Agent Note keeps the three vendored-Loader facts the mechanism turns on
— a row's config is resolved and validated when its fiber is created, while
it is still waiting; an inject update loses the plugin's static injections;
a row cannot be inserted from inside a mounting plugin — with the
alternatives they ruled out.
2026-08-10 23:45:04 +08:00
Turtle 37cbd155f5 refactor(cli)!: the launcher parses only its own flags
Launcher flags come first and end at the first token dsh does not
recognize; everything after reaches the booted app verbatim, so
dsh --profile tui --resume <id> works with no launcher change and
dsh --profile web --help prints the web app's help. A bare dsh -h, which
has no app to hand the flag to, still prints the launcher's own.

src/web.ts is deleted: the Web flag family, its LAN-trust sampling, and the
one-shot task positional now live in their bundles, and runProfile no
longer knows any row id. What the startup row decides comes back as a
launcher-owned patch layer above every layer a user can edit, so a live
config edit recomposes the tree without resetting a served port.

dsh web and dsh --profile web finally boot through one path, which also
gives --profile web the harness-source prompt section that only the alias
used to add.
2026-08-10 23:45:04 +08:00
Turtle 82728808d4 feat(bundle): the web and one-shot apps own their own flags
dsh-web-app owns --host/--port/--dev/--workspace-root/--trusted-host and
its --help in a web-startup row; the rows it configures wait for the
webStartup service, and the client-plugin HMR receiver now ships disabled
so --dev is a row toggle rather than a runtime insert (the Loader cannot
resolve a row inserted from inside a mounting plugin).

dsh-headless owns the task positional and rejects a missing task as its own
usage error. Its runner ships disabled, not merely waiting: the schema
requires the task, and a row's config is validated when its fiber is
created, before the startup row can supply one. A composition has exactly
one command-line owner, so the patch disables the web startup row and this
one provides webStartup too, leaving the web rows on their composed
one-shot values.

The keyless web scaffold provides the same three values with no arguments,
which is what an embedding host with no command line does.
2026-08-10 23:45:04 +08:00