Commit Graph

170 Commits

Author SHA1 Message Date
NI0317
890343751a feat(tui): add versioned first-run welcome 2026-07-30 22:29:35 +08:00
Turtle
a51143bded fix(cli): close shared config review gaps 2026-07-30 14:56:39 +08:00
Turtle
208944645c fix(cli): align shared config lifecycle docs 2026-07-30 11:34:46 +08:00
Turtle
cd100a81f1 fix(cli): harden launcher lifecycle 2026-07-30 11:14:18 +08:00
Turtle
93748e5b47 fix(cli): preserve DSH home fallback in config 2026-07-30 11:00:59 +08:00
Turtle
f224bc347b test(cli): follow consolidated config tree 2026-07-30 10:59:56 +08:00
Turtle
efcffa0495 fix(cli): evaluate session root in config context 2026-07-30 10:53:43 +08:00
Turtle
c086de2074 fix(docs): align catalogs with consolidated CLI 2026-07-30 10:34:21 +08:00
Turtle
83360c3dca fix(cli): default session root in shipped config 2026-07-30 10:24:04 +08:00
Turtle
5dbcedfbba Merge origin/master into feature/shared-cli-config-foundation 2026-07-30 10:11:38 +08:00
Turtle
3685740179 test(cli): move skill policy snapshot fixture 2026-07-30 00:23:58 +08:00
Turtle
7dfead7799 test(cli): keep file completion in source plane 2026-07-30 00:09:03 +08:00
Turtle
c00a54d334 Merge remote-tracking branch 'origin/master' into feature/shared-cli-config-foundation
# Conflicts:
#	packages/host/apiproxy/README.i18n.yaml
2026-07-30 00:01:13 +08:00
Turtle
74f75e9005 test(cli): align autocomplete test deadline 2026-07-29 23:47:46 +08:00
Turtle
19fc1575f3 Merge remote-tracking branch 'origin/master' into feature/shared-cli-config-foundation
# Conflicts:
#	packages/host/apiproxy/README.i18n.yaml
2026-07-29 23:41:20 +08:00
Turtle
c19facf9db refactor(cli): share app boot driver 2026-07-29 23:39:09 +08:00
Turtle
d2270eefcd fix(cli): align personal overlay semantics 2026-07-29 23:36:58 +08:00
Turtle
5b35132e62 test(cli): allow artifact PTY startup contention 2026-07-29 22:28:34 +08:00
Turtle
3d3a261793 docs(cli): remove stale composition references 2026-07-29 21:59:44 +08:00
Turtle
dfca95e93f fix(tui): remove disposable query index on exit 2026-07-29 21:51:22 +08:00
Turtle
bdc2b4667f refactor(cli): keep hmr in shared base 2026-07-29 21:43:33 +08:00
Turtle
ff126751d8 refactor(cli): keep migrate out of scope 2026-07-29 21:41:51 +08:00
Turtle
d8e4fd3b75 fix(cli): align meta invocation contract 2026-07-29 21:39:38 +08:00
Turtle
a01c1bccd6 fix(docs): parse inserted composition rows 2026-07-29 21:30:51 +08:00
Turtle
b1697ffd29 fix(web): assemble and package the shipped overlay 2026-07-29 21:28:05 +08:00
Turtle
9bbaea45fd docs(cli): explain config overlay modes 2026-07-29 21:15:48 +08:00
Turtle
984830c940 fix(tui): isolate each process query index 2026-07-29 21:15:48 +08:00
Turtle
d44fce8a39 fix(cli): keep meta as a fresh-session command 2026-07-29 21:15:48 +08:00
Turtle
857a4941be fix(cli): restore shipped surface capabilities 2026-07-29 21:15:48 +08:00
Turtle
bee0a77aad chore: refresh generated review records 2026-07-29 21:15:48 +08:00
Turtle
030b044350 fix(cli): reject leaked config replacement flags 2026-07-29 21:15:48 +08:00
Turtle
ea9315841f refactor(session): exclude live-session registry foundation 2026-07-29 21:15:48 +08:00
Turtle
9e2c3d3093 refactor(cli): exclude tmux context and source guard 2026-07-29 21:15:48 +08:00
Turtle
c1324ee896 fix(cli): preserve overlays without session registration 2026-07-29 21:15:42 +08:00
Turtle
8f2f6ef0ac refactor(cli): exclude live-session registry surface 2026-07-29 21:15:42 +08:00
Turtle
a459a918e2 fix(cli): remove obsolete resolver dependencies 2026-07-29 21:15:42 +08:00
Turtle
571562788d chore: reconcile extracted foundation with current master 2026-07-29 21:15:42 +08:00
Turtle
10ff76de9c fix(cli): declare every plugin the shipped config trees name
The Loader resolves each config row against the composing app, so moving the
TUI composition from examples/ into apps/cli left eleven rows unresolvable from
the built bin: `node apps/cli/lib/bin.js` died at boot with "plugin(s) failed to
load". Source-mode runs hid it, because tsconfig paths resolve the whole
workspace regardless of who declares what.

Also declares `dsh-llm-pi-ai` and `dsh-tmux-context`, which a personal
`~/.dsh/config.yaml` inserts to swap the model adapter. Those previously
resolved only because the config lived under examples/, whose package.json
declares the union of every leaf's plugins.

Caught by running the built bin from a scratch directory, which is how a user
actually starts it.
2026-07-29 21:15:42 +08:00
Turtle
f290a8b851 refactor(cli)!: one shared base config with per-surface overlays
`dsh` shipped two config trees that were 43 rows the same: apps/cli/cordis.yml
composed web as 74 flat rows, while the TUI booted examples/tui-agent/cordis.yml
whose single `@deepseek-ai/dsh-tui-demo` row mounted twelve plugins behind a
twenty-key pass-through Config. Neither file was what its location claimed —
apps/cli hardcoded the "example" as the product default and the "demo" bundle
was the application — and every capability change had to be made twice.

- apps/cli/base.cordis.yml holds the 43 shared rows; tui.cordis.yml and
  web.cordis.yml are patch lists stating only what differs per surface
- overlays apply as SIBLING patch lists at one include level, because include
  patches never cross an include boundary. Precedence: base < surface <
  (--config | personal ~/.dsh/config.yaml) < launcher flag/profile patches
- `--config` now applies an overlay INSTEAD OF the personal one, so a demo or
  test tree never inherits the user's route; new `--config-replace` boots a file
  as the entire tree (the old `--config` behaviour). Both survive /resume
- vendor/include: index each `insert`ed row as it is added so a later patch can
  configure or disable it. Upstream built the id index once before the patch
  loop, leaving every surface-only row — the whole TUI front door — silently
  unpatchable from user config. Logged as local modification 8
- session identity moves to dsh-agent-loop's CONFIGURED_AGENT_IDENTITIES_KEY;
  dsh-tui's MAIN_SESSION_ID_KEY is deleted (only the bundle read it)
- delete examples/tui-agent, examples/cordis-agent, packages/examples/tui-demo;
  TUI tests → apps/cli/tests, cordis e2e → packages/cordis/tool-cordis/tests,
  examples/code-mode survives as an overlay leaf
- `dsh web` gains --config, threaded into AppCLIEntry as an extra overlay

Three latent defects surfaced and are fixed here: the TUI captured the optional
sessionQuery service once at construction and could permanently disable /resume
when it won the mount race; the session-store root silently reverted to a
project-local ./.sessions; --config-replace was dropped by the resume handoff.

Verified by booting each tree through the real Loader (TUI 55 entries, web 75,
zero unsettled) rather than reading YAML. All eight terminal snapshots replay
byte-identically; 14/14 PTY smoke, 112/112 snapshots, 25/25 doc-sync, hygiene
and lint clean.
2026-07-29 21:15:42 +08:00
Turtle
e7c0a5b794 Merge origin/master: web permission sandbox, default pi-ai providers 2026-07-29 21:15:34 +08:00
imccyu
4da1026956 Merge branch 'master' into xtr/dsh-source-launch-tsx-esm 2026-07-29 15:29:00 +08:00
kingwl
b48c76a63a Merge remote-tracking branch 'origin/master' into xtr/dsh-source-launch-tsx-esm
# Conflicts:
#	apps/cli/README.i18n.yaml
2026-07-29 13:45:21 +08:00
imccyu
07262d967c Merge branch 'master' into web-permission-sandbox 2026-07-29 13:41:23 +08:00
kingwl
2ca6f54c9e Merge remote-tracking branch 'origin/master' into xtr/dsh-source-launch-tsx-esm
# Conflicts:
#	apps/cli/README.i18n.yaml
2026-07-29 13:39:57 +08:00
Yichen Jiang
0dce3f57ca Merge remote-tracking branch 'origin/master' into worktree/default-pi-ai-providers
# Conflicts:
#	apps/cli/README.i18n.yaml
2026-07-29 13:25:06 +08:00
kingwl
aebf9c863b feat(cli): launch dsh source through the tsx ESM hook
Node 26.0.0 removed --experimental-transform-types, so the native
source-launch chain cannot start anywhere on that line, and strip-only
mode rejects the vendored syntax (parameter properties, decorators,
runtime enums/namespaces). Switch bin/dsh, the root dsh/demo:tui/
demo:web scripts, and the Code Mode TUI overlay to node --import
tsx/esm: one launch vector across the whole engines range, ~0.4s faster
than the full tsx default (the CJS hook stays off; the graph is
ESM-only).

Delete scripts/tspath-loader.ts and apps/cli/src/tsconfig-paths-loader.ts:
tsx owns both transformation and tsconfig paths projection. Add
dsh-source-launch-smoke to the node-compat gates so the 22.19/26 matrix
executes the real launch vector; no CI job did, which is how the Node 26
breakage shipped silently.

Supersedes the native-TypeScript-source-launch Agent Note (new note
records the profiling evidence and rejected alternatives).
2026-07-29 13:15:24 +08:00
imccyu
5c432955ed Merge remote-tracking branch 'origin/master' into web-permission-sandbox-merge-master 2026-07-29 11:16:49 +08:00
imccyu
8d0249d392 Merge branch 'feat/directory-picker' into feat/workspace-directory-browser 2026-07-29 10:42:19 +08:00
imccyu
ecc447daf5 Merge branch 'doc/host-client-group-readmes' into feat/directory-picker 2026-07-29 10:42:13 +08:00
imccyu
fa64ad39cb Merge branch 'master' into doc/host-client-group-readmes 2026-07-29 10:42:00 +08:00