Commit Graph

4934 Commits

Author SHA1 Message Date
imccyu
2e27b8aeef chore(web): gate repairs for the config-tree boot round
Lint (bridge JSDoc params, service-class export shape, async invariant
listener form), regenerated doc catalogs/graphs with role classifications
for httpServer and clientModuleHost, catalog type-link exemptions for the
route/graph contracts, knip alignment (apps/cli composes via cordis.yml so
its yml-named deps are runtime edges knip cannot see; webserver's deleted
test dir), the zh side of the loading-model note brought along with its
pairing records, and coverage exclusions for the new web-transport halves
under the GUI test-lane TODO (real-composition harnesses land with that
lane).
2026-07-25 10:38:54 +08:00
imccyu
db59d32c9b docs(gui): agent notes for the config-tree boot and transport layering
New note records the dsh web composition decision (flat cordis.yml, the
AppCLIEntry/AppWebEntry class pair, one declaration place per config
source, the five-way transport split) with its rejected alternatives; the
client-plugin-loading note's roster endgame and HMR sections are brought
current with what shipped.
2026-07-25 10:25:02 +08:00
imccyu
5466a81474 feat(web): boot dsh web from a config tree via AppCLIEntry
apps/cli/cordis.yml holds the whole composition flat — the host runtime
rows, the api-gateway row, the webserver row, and the ten dshClient rows.
AppCLIEntry is the pre-cordis glue: layered env (ambient > cwd .env >
$DSH_HOME/.env, fixing DSH_HOME=... dsh web not finding its key), patch
composition from the three non-yml sources (profile json through the static
PROFILE_MAPPINGS table, CLI flags, the resolved frontend distIndex), the
Loader include boot (--dev appends the hmr row before the settle), and the
fail-loud triple (assertEntriesLoaded + installFailLoud + an all-ACTIVE
sweep for PENDING fibers). web.ts shrinks to argv parsing + the URL line.
2026-07-25 10:25:02 +08:00
imccyu
80cd8f54b5 refactor(web): collapse the shell boot into the AppWebEntry class
The four free functions in boot.tsx become one kernel class holding what
must exist before cordis: the parsed BootManifest, the ClientModuleSystem
instance, and the loading-page handles. Context/Loader setup runs in
parallel with the immediately-tier prefetch, but entry creation awaits the
prefetch: materialization is tree.import's synchronous require, so
cross-package require edges (i18n -> runtime/client) need every
immediately-tier factory registered first — unbarriered creation raced
10-25% of boots. The kernel adopts the modules entry (writes the
__DSH_MODULES__ slot pre-cordis, creates the entry first, skips its graph
row), and provide('modules') now lives in the adoption apply. apps/web
drops its host-package edges (composition is apps/cli's job).
2026-07-25 10:23:40 +08:00
imccyu
8d4aa73abe feat(web): grow real node halves in connection and hmr
connection binds the web transport: it injects httpServer + apiProxy and
registers toFetchHandler(ctx.apiProxy) under the /api prefix (the node:http
to fetch bridge moves in from the webserver, keeping the res-close disconnect
detection and drain/close backpressure waits). hmr owns dev reload: a
stat-poll watch per graph row driven by clientModuleHost.onGraphChanged,
rebuilt(id) on content change, and the /plugins/events SSE route (GET/HEAD
guarded); frame types are single-sourced in events.ts shared by both halves.
2026-07-25 10:23:40 +08:00
imccyu
c12277b4bb feat(web): make dsh-client-modules dual-face with an incremental host scan
The node half is ClientModuleHostService (ctx.clientModuleHost): it composes
the __DSH_BOOT__ graph by scanning loader entries for dshClient packages,
serves /plugins/<id>/client.js, taps the index render, and exposes
rebuilt/onRebuilt/onGraphChanged. Scanning is incremental per package — no
full-rescan path exists: internal/plugin marks the fiber's entry name dirty,
a flush reconciles each name against live entries, package metadata
(including negative verdicts) caches forever, and re-hashing is reachable
only through rebuilt(id). The browser half moves wholesale to the standard
./client export (ClientModuleSystem, parseBootManifest with the dual-view
BootManifest, and the adoption plugin face that reads the
window.__DSH_MODULES__ slot and provides ctx.modules).
2026-07-25 10:23:40 +08:00
imccyu
f499872cec refactor(web): rewrite webserver as a plain route-registration plugin
HttpServerService provides ctx.httpServer: register(route) -> disposer
(duplicate patterns throw), tapIndex transforms in registration order, and
the bound port; matching is exact > longest prefix > static dist fallback
(403/405/SPA semantics preserved). The server listens on activation, answers
per-request failures with 400 + a log line instead of exiting the process,
and knows no harness concepts — the boot graph, bundle routes, SSE channel,
and /api prefix all moved to their owning plugins.
2026-07-25 10:23:39 +08:00
imccyu
3cad7f6957 refactor(web): upgrade apiproxy to the api-gateway service plugin
createApiProxy moves from dsh-host-runtime into dsh-host-apiproxy (the
dependency direction already pointed this way); the package now
default-exports ApiProxyService (config {provider, model}, provides
ctx.apiProxy) while staying transport-agnostic — it registers no routes.
Runtime keeps bootHost/startHost for the headless path with its import
re-anchored, and drops the mountWebPlugins roster mounting helper.
2026-07-25 10:22:43 +08:00
Tianyi Cui
f7b36bd36d Merge pull request #618 from deepseek-harness/worktree/fix-master-ci-flakes
Stabilize master CI across platforms
2026-07-25 01:32:03 +08:00
Tianyi Cui
1d066e0f74 Fix remaining PTY and bundle watch races
Keep inherited child prompt markers bounded by the normal silence fallback. Stage web-plugin rescans atomically and retain missing watch state until a successful rebuild.
2026-07-25 00:33:33 +08:00
Tianyi Cui
f9a638b8a6 Stabilize master CI across platforms 2026-07-25 00:10:37 +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
158c5e913a docs(i18n): refresh persistence docs after master merge 2026-07-24 21:27:22 +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
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
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
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
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
Tianyi Cui
6a78b2cb2e Merge branch 'master' into feat/send-unify 2026-07-24 20:07:46 +08:00
_Kerman
6cb6d87ff3 Merge pull request #602 from deepseek-harness/xtr/rfc-context-injection-semantics
docs(agent): propose context injection semantics
2026-07-24 20:06:24 +08:00
Tianyi Cui
985aceaa75 Merge branch 'master' into feat/send-unify 2026-07-24 19:40:38 +08:00
Tianyi Cui
51f697db50 test(tui): wait for scoped file completion
The fake terminal retains earlier autocomplete frames, so the directory follow-up assertion could pass before the scoped lookup completed. Wait for the quoted file mention to be applied before submitting.
2026-07-24 19:38:31 +08:00
_Kerman
8d30062a17 Merge branch 'master' into xtr/rfc-context-injection-semantics 2026-07-24 19:37:30 +08:00
Tianyi Cui
f1fd9940c3 Merge commit 'de939d19b95074595910f2e53e463810094a297c' into worktree/pr345-retarget-stack 2026-07-24 19:33:08 +08:00
Tianyi Cui
0c8733bf47 Merge commit 'fd85df3d7f1c4904b9efd2066af230957b6c468b' into worktree/pr344-retarget-stack 2026-07-24 19:32:53 +08:00
Tianyi Cui
86d16d15b6 Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-24 19:32:25 +08:00
Tianyi Cui
fe84b446b0 Merge pull request #584 from deepseek-harness/worktree/fix-python-sdk-nested-subagent-notifications
fix(python-sdk): track recursive subagent notifications
2026-07-24 19:30:48 +08:00
Tianyi Cui
a229b095d6 Merge branch 'master' into fix/goal-completion-strict-fields 2026-07-24 19:19:57 +08:00
Tianyi Cui
e14bac2692 Merge branch 'master' into worktree/fix-python-sdk-nested-subagent-notifications 2026-07-24 19:17:03 +08:00
Tianyi Cui
1731243fa0 Merge branch 'master' into feat/send-unify 2026-07-24 19:13:11 +08:00
Tianyi Cui
e51ba79e53 Merge remote-tracking branch 'origin/docs/i18n-batch-cds-postmortem' into worktree/pr345-retarget-stack 2026-07-24 19:06:12 +08:00
Tianyi Cui
40ebf2e97f Merge remote-tracking branch 'origin/docs/i18n-batch-core' into worktree/pr344-retarget-stack 2026-07-24 19:05:26 +08:00
Tianyi Cui
572352fa0f Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-24 19:01:57 +08:00
Turtle
8975f12272 Merge pull request #593 from deepseek-harness/feat/examples-third-party-llm-docs
chore(examples): declare @deepseek-ai/dsh-llm-pi-ai as an example dep
2026-07-24 18:54:33 +08:00
Turtle
e525b68106 Merge branch 'master' into feat/examples-third-party-llm-docs 2026-07-24 18:48:01 +08:00
Tianyi Cui
1769fae588 Merge remote-tracking branch 'origin/docs/i18n-batch-cds-postmortem' into worktree/pr345-retarget-stack 2026-07-24 18:38:52 +08:00
Tianyi Cui
b65421431b docs(i18n): complete Agent Note translation fidelity 2026-07-24 18:38:27 +08:00
Tianyi Cui
6865b861d8 docs(site): preserve translated core fragment ids 2026-07-24 18:32:31 +08:00
Tianyi Cui
cf1fcd6871 Merge remote-tracking branch 'origin/docs/i18n-batch-cds-postmortem' into worktree/pr345-retarget-stack 2026-07-24 18:12:45 +08:00
Tianyi Cui
da3c12e548 docs(i18n): clarify subagent shutdown escalation 2026-07-24 18:12:16 +08:00
Tianyi Cui
ac93d00541 docs(site): publish translated core data pages 2026-07-24 18:07:56 +08:00
Tianyi Cui
da01b91c63 Merge refreshed #344 into docs/i18n-batch-rfc 2026-07-24 17:42:04 +08:00
Tianyi Cui
b7a8a97034 Merge refreshed #343 into docs/i18n-batch-cds-postmortem 2026-07-24 17:39:54 +08:00
Tianyi Cui
0191a014dd docs(i18n): preserve authority constraints 2026-07-24 17:39:22 +08:00
Tianyi Cui
305930712b docs(i18n): bind authority terminology 2026-07-24 17:39:11 +08:00