Commit Graph
4169 Commits
Author SHA1 Message Date
kingwl 3922e956db Merge remote-tracking branch 'origin/master' into jsonl-packed-chunk-rows
Master removed the stdio demo (#702c8cc30) — accept the deletion; this
branch's packChunks passthrough survives in acp-demo (auto-merged), and
cli-demo/tui-demo arrived from master without one (the follow-up snapshot
PR decides which demos expose the switch). Generated catalogs regenerated
over merged sources; the hand-written session.md durability paragraph
re-weaves this branch's lossless-encoding wording with master's invariant-
companion sentence.
2026-07-22 15:46:12 +08:00
Tianyi Cui 0f57eafc36 ci: collapse cold setup waves 2026-07-22 15:44:11 +08:00
Turtle 06827eb868 test(e2e): drive the TUI keyless smoke through the cross-platform PTY harness
The smoke's inline Python pty driver only ran on POSIX (no termios on
Windows). Rebuild every scenario — banner sweep, scripted conversation with
model switch, /skill:, Code Mode overlay, resume failure, and the dsh CLI
suite (default boot, personal overlay, invalid overlay, --resume flag,
source-path prompt) — as marker-gated action lists on pty-harness.ts, which
drives ConPTY via node-pty on Windows and the Python driver elsewhere. The
harness gains configArgs (bins with built-in default configs), prepare
(workspace seeding), and inspect (post-run log assertions); examples/
declares the session-title provider the shipped cordis.yml now mounts.
2026-07-22 15:35:19 +08:00
Tianyi Cui cc22492ddd docs: record consolidated runner decision 2026-07-22 15:30:02 +08:00
Tianyi Cui 990f82b85c ci: tune consolidated runner concurrency 2026-07-22 15:17:17 +08:00
Tianyi Cui 3db0b71f91 ci: consolidate gates on large runners 2026-07-22 15:04:24 +08:00
Turtle 2a9f248594 refactor(tui): drop the TUI-local auto-title; titles come from the session-title service
Master's log-backed session-title capability already titles sessions durably
(deterministic fallback in the spine, optional model providers). Remove the
TUI's own autoTitle generation — the latch, prompt, cap, and llm stream call —
and keep the terminal rename: the TUI folds the logged title on mount and sets
'<session title> — <configured title>' on every accepted session/title event.
The tui-agent example and the scripted PTY fixture mount
session-title-first-message-llm so titles stay model-made; the scripted
adapter's tool-less branch now answers that provider's auxiliary request.

See .agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.md
2026-07-22 15:01:54 +08:00
Tianyi Cui 03348aa382 ci: parallelize aggregate lint 2026-07-22 14:53:46 +08:00
Turtle f1f35ccaef test(e2e): align keyless expectations with the shipped config and scope keys
The acp escalation smoke advertises the shipped deepseek-v4-pro; the
workspace-context e2e asserts the per-candidate scope key. The PTY harness
drops COLORTERM (deterministic banner) and gains configArgs/prepare/inspect
for the dsh CLI scenarios.
2026-07-22 14:48:34 +08:00
Tianyi Cui e65ea9bdbc ci: benchmark consolidated hosted gates 2026-07-22 14:42:43 +08:00
Tianyi Cui 2a8e7c661d test(windows): use native PATH delimiter 2026-07-22 14:42:11 +08:00
Tianyi Cui 7b6b544243 test(windows): cover teardown decisions deterministically 2026-07-22 14:34:26 +08:00
Tianyi Cui a8a18f309a feat(mode): register one slash command per mode
Replace /mode [name] with same-named no-argument commands such as /plan. Update the TUI and ACP snapshots, and validate mode names against command syntax.
2026-07-22 14:32:35 +08:00
Turtle a58229187f chore(llm-pi-ai): bump pi-ai to 0.81.1 for the gpt-5.6 model catalog
pi-ai 0.80 restructured its entrypoints: the static catalog reads now
live on /providers/all as getBuiltinModels/getBuiltinProviders (keyed by
the catalog-only BuiltinProvider type, replacing KnownProvider at those
call sites), and the global streamSimple moved to /compat. The config
schema gains the new 'max' reasoning level.
2026-07-22 14:30:01 +08:00
Turtle 478079cc98 test: close the merged branches' coverage gaps
Cover the fs-provider load path without a cancellation signal, the app-level
resumeCommand forwarding, and a command returning an error result.
2026-07-22 14:30:01 +08:00
Turtle cf95986d5b fix(examples): restore the tui-demo pre-boot TTY refusal and stabilize the PTY smoke
The built-bin fail-loud test needs the TTY refusal before Loader boot (a
compose-time throw is logged per-entry, not rethrown); the PTY driver drops
COLORTERM so a developer's truecolor shell cannot flip the banner to the
gradient path mid-assertion; the scripted fixture persists raw JSONL so the
smoke's system-prompt inspection can read the log.
2026-07-22 14:30:01 +08:00
Turtle 66c4a353b9 docs: regenerate catalogs, graphs, and the README pairing record after the rebase 2026-07-22 14:30:01 +08:00
Turtle 7eec0d81ec test(snapshot): reconcile replay overlays with the merged configs and fixtures
- acp/headless whole-config snapshot patches restate persistenceCompression:
  none so raw JSONL fixtures stay harvestable, and re-pin the recorded
  deepseek-v4-flash where the shipped config moved to pro
- depth-two overlay gains the app-config re-pin master's other overlays carry
- headless-agent stays on flash: goal/ralph overlays include it via a nested
  include, which a config patch cannot reach to re-pin
- workspace-context scenarios re-record their session fixtures for the
  per-candidate scope keys and both-siblings loading; acp session fixtures
  otherwise return to master's (session/title + delegationDepth events)
2026-07-22 14:29:52 +08:00
Turtle dfd1eeeadb test: align merged suites with master's cancel cause and optional welcome
workspace-context's abort-tool test uses agent.cancel({kind:'user'}) (master's
AgentCancelCause shape); tui-demo forwards no welcome when none is configured.
2026-07-22 14:29:52 +08:00
Turtle 30c7e76ea5 fix(tui): reconcile master's model selector and session titles with the staging footer and status line
Post-rebase reconciliation of the two TUI lines that evolved in parallel:
- header subtitle prefers the latest logged session title over the configured
  welcome; the process-local auto-title owns the whole terminal title while a
  logged session/title still wins through the suffixed form
- footer keeps staging's model/cwd/usage/cache layout and gains master's
  context-percent segment; per-step usage dedup carries cache buckets
- test harness only stubs the llm catalog when the test did not mount the
  real LlmService, and defaults the TUI clock to the real Date.now
- the plugin-shaped /reload test composes commands+llm like the shipped app
2026-07-22 14:29:52 +08:00
Turtle 2464d6169f feat(app-boot): move personal config to the Harness home (~/.dsh)
Squashes feat/personal-config-dsh-home: personal config.yaml and .env move
from ~/.config/dsh to the Harness home (~/.dsh), plus the module-graph,
lockfile, and i18n pairing regeneration that followed.
2026-07-22 14:29:52 +08:00
Turtle a5dfffcbe5 chore(examples): make todo_write opt-in for the tui-agent example
Make todo_write opt-in for the tui-agent example (disabled by default; TUI
still renders plans when the tool is loaded). Both enabled and disabled cases
covered by tests.
2026-07-22 14:29:52 +08:00
Turtle f503d838e9 feat(tui): default auto-title on and re-derive it on resume 2026-07-22 14:29:52 +08:00
Turtle 5773ef9b0c fix(gates): bound pre-push test gate vitest workers 2026-07-22 14:29:52 +08:00
Turtle 717f301cdd feat: curl one-liner install script for dsh
Squashes feat/install-script, feat/install-default-master, and
install-skip-clone: DSH_REF defaults to master, and running the script from
inside an existing checkout reuses it and skips the clone.
2026-07-22 14:29:52 +08:00
Turtle 8995ce367f feat(tui): remove the /cancel slash command 2026-07-22 14:29:52 +08:00
Turtle d04ec5a6db feat(tui): restore the startup banner borderless, painted in the DeepSeek brand gradient
Squashes feat/tui-borderless-banner and feat/tui-banner-brand-gradient.
2026-07-22 14:29:52 +08:00
Turtle bffd80fa12 feat(tui): add /skill:<name> manual skill invocation command 2026-07-22 14:29:52 +08:00
Turtle 2a5dfb7d35 feat(tui): session resume — /resume command, exit hint, and dsh --resume <id>
Squashes feat/tui-resume-command, fix/tui-resume-desc, and
feat/tui-resume-flag.
2026-07-22 14:29:52 +08:00
Turtle 87899ae161 feat(workspace-context): load all instruction candidates, dedup by trimmed content, follow symlinks
Squashes feat/instruction-load-all-dedup and feat/allow-instruction-symlink.
2026-07-22 14:29:52 +08:00
Turtle dd55b2cc62 feat(tui): verbose turn-phase status line with elapsed timing and cache hit rate
Squashes feat/tui-cache-hit-rate and feat/tui-verbose-status: the footer
shows cache hit rate and the running status line reports turn phase with
elapsed timing.
2026-07-22 14:29:28 +08:00
Turtle ea93166e57 feat(tui): auto-title the terminal pane from the first user message 2026-07-22 14:29:28 +08:00
Turtle 9c8994f65a feat(tui): experimental dev-only /reload command for loader configs
Squashes feat/tui-reload-command and fix/reload-idle-only: /reload requires
an idle agent.
2026-07-22 14:29:28 +08:00
Turtle 19f9a509aa feat(cli): tell the agent where its own source lives and invite it to extend dsh
Squashes feat/dsh-system-prompt-source-path and feat/dsh-source-extend-hint.
2026-07-22 14:29:28 +08:00
Turtle 0e06d0691d feat(examples): default agent configs to DeepSeek Pro Max Thinking 2026-07-22 14:29:28 +08:00
Turtle 7dbe99f008 feat(tui): badge queued steering count on the running status line 2026-07-22 14:29:28 +08:00
Turtle c8cc087e05 feat(workspace-context): load .local. instruction overlays by default
Load a per-directory local overlay in addition to the base instruction
file, matching the Claude Code AGENTS.local.md / CLAUDE.local.md
convention for git-ignored personal guidance.

- New config `localInstructionFileCandidates`, default
  `['AGENTS.local.md', 'CLAUDE.local.md']`; empty disables the overlay.
  The default lives in the plugin Config schema, so every front door
  (TUI/ACP/headless) reads .local. files consistently.
- Per project directory the plugin loads the first-existing base
  candidate, then additively the first-existing local candidate,
  rendered after the base so it takes precedence within the byte budget.
- Base and local tiers get distinct scope keys via a NUL sentinel
  (scopeKey/decodeScopeKey) so they never collide in the baseline map,
  pending window, or version cache.
- The fixed user-global $DSH_HOME/AGENTS.md stays base-only.

Docs: README (config, lifecycle, Known Limitations), regenerated
config-catalog, and a new bilingual Agent Note cross-linked to the
owning workspace-context note. 100% per-file coverage retained.
2026-07-22 14:29:28 +08:00
Turtle 45868b940f feat(tui): startup banner iterations — slogans, sweep reveal, then no banner
Squashes three linearized steps (feat/tui-startup, feat/banner-reveal,
feat/remove-banner): the banner experiment converged on removing the
startup banner entirely; later commits restore it borderless and add the
brand gradient.
2026-07-22 14:29:28 +08:00
Turtle 6baa030594 feat(cli): dsh CLI with personal config overlays from ~/.config/dsh 2026-07-22 14:29:28 +08:00
Turtle a2f17d71ed fix(vendor/include): config hot-reload keeps the last good tree and its patches 2026-07-22 14:29:28 +08:00
Turtle a409f8b4ba feat(tui): detect terminal color scheme and apply light-optimised palette
Squash of the linearized fix/tui-color-scheme-v2 merge and the follow-up
catalog regeneration. Renders error cause chains at every diagnostic seam
(origin/fetch-failed-diagnostics) and adds color scheme detection with a
light-terminal palette.
2026-07-22 14:29:27 +08:00
Turtle 0c9a4d7c28 Retire the readline front door and the repl-agent example
Delete packages/ui/stdio and examples/repl-agent; rename stdio-demo to
@deepseek-ai/dsh-tui-demo (TUI-only, refuses pipes before Loader boot).
tui-agent owns the coding composition inline; echo-agent and the CI demo
smoke move to the one-shot cli-demo bin, which gains -p/--prompt. The
UI-independent with-key e2es move verbatim to tui-agent. SDK wizard's
'stdio' interface becomes 'tui'. PTY testing stays confined to TUI
surfaces; all other subprocess tests ride pipes.

See .agents/notes/implemented/simplification/2026-07-20-retire-readline-front-door.md
2026-07-22 14:29:27 +08:00
Tianyi Cui 95abe24cb7 ci: give snapshot lanes eight cores 2026-07-22 14:28:32 +08:00
Tianyi Cui 5da343126c fix(windows): restore LSP and TUI coverage 2026-07-22 14:23:44 +08:00
Tianyi Cui da1bee87c7 ci: use four-core hosted runners 2026-07-22 14:13:49 +08:00
kingwl b0008546be Merge remote-tracking branch 'origin/master' into feat/plan-mode 2026-07-22 13:57:03 +08:00
Tianyi Cui 753d168bb1 ci: benchmark larger hosted runners 2026-07-22 13:55:51 +08:00
Tianyi Cui 4267076407 Merge pull request #493 from deepseek-harness/worktree/disable-deepseek-web-search-e2e
test(ci): stabilize real-API and Windows coverage gates
2026-07-22 13:55:35 +08:00
Tianyi Cui 450e1fff6a test(windows): exclude deferred coverage paths 2026-07-22 13:47:24 +08:00
Tianyi Cui 6f16715299 test(windows): skip process-group disposal race 2026-07-22 13:37:44 +08:00