super-dsh 0.1.12 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -13
- package/agent-agy/dist/world-plugin.d.ts +1 -1
- package/agent-agy/dist/world-plugin.js +14 -27
- package/agent-agy-sdk/dist/world-plugin.d.ts +1 -1
- package/agent-agy-sdk/dist/world-plugin.js +14 -27
- package/agent-codex/dist/world-plugin.js +14 -27
- package/agent-codex-sdk/dist/world-plugin.js +14 -43
- package/agent-hermes/dist/world-plugin.js +14 -27
- package/agent-omp/dist/world-plugin.js +14 -39
- package/agent-omp/lib/client/index.js +258 -0
- package/agent-omp-sdk/dist/world-plugin.d.ts +1 -1
- package/agent-omp-sdk/dist/world-plugin.js +14 -43
- package/agent-pi/dist/world-plugin.js +14 -27
- package/bundles/better-dsh.tgz +0 -0
- package/bundles/manifest.json +10 -0
- package/client/index.js +434 -307
- package/cordis.patch.yml +7 -16
- package/node_modules/better-dsh/LICENSE +24 -0
- package/node_modules/better-dsh/README.md +323 -0
- package/node_modules/better-dsh/THIRD_PARTY_NOTICES.md +52 -0
- package/node_modules/better-dsh/cordis.patch.yml +139 -0
- package/node_modules/better-dsh/docs/00_adr/0001-bridge-tool-layer-not-service-layer.md +14 -0
- package/node_modules/better-dsh/docs/00_adr/0002-masking-is-presentation-only.md +15 -0
- package/node_modules/better-dsh/docs/10_plans/2026-09-23-remote-execution-framework.md +236 -0
- package/node_modules/better-dsh/docs/10_plans/2026-09-23-remote-framework-impl.md +2083 -0
- package/node_modules/better-dsh/docs/10_plans/2026-09-26-lsp-ast-reminder.md +64 -0
- package/node_modules/better-dsh/docs/10_plans/A2A-messaging-channel-test-archive.md +256 -0
- package/node_modules/better-dsh/docs/10_plans/code-mode-vs-rlm-ipython-comparison.md +137 -0
- package/node_modules/better-dsh/docs/10_plans/dashr-blueprint-review.md +201 -0
- package/node_modules/better-dsh/docs/10_plans/dashr-blueprint.md +561 -0
- package/node_modules/better-dsh/docs/10_plans/dashr-compaction-window-and-archive.md +307 -0
- package/node_modules/better-dsh/docs/10_plans/dashr-profile-layer-feasibility.md +367 -0
- package/node_modules/better-dsh/docs/10_plans/dashr-sandbox-escalation-semantics-gap.md +171 -0
- package/node_modules/better-dsh/docs/10_plans/dashr-security-sandbox-analysis.md +187 -0
- package/node_modules/better-dsh/docs/10_plans/dashr-surface-invariant-and-omp-imports.md +97 -0
- package/node_modules/better-dsh/docs/10_plans/ipython-kernel-interactive-interface-test-report.md +152 -0
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-IPython-Control-Prompt-draft.md +146 -0
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-IPython-Control-Prompt-draft_v3.md +50 -0
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-IPython-Control-Prompt-draft_v4.md +79 -0
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-vs-PrimeAgent-systemprompt-toolcatalog-comparison.md +138 -0
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/RLM-system-prompt-injection-gap-report.md +161 -0
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/V0.1.5-development-plan.md +109 -0
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/actinoable-surface-to-llm-in-agent-runtime_dsh.md +50 -0
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/actinoable-surface-to-llm-in-agent-runtime_prime.md +113 -0
- package/node_modules/better-dsh/docs/10_plans/recallable-compaction.md +147 -0
- package/node_modules/better-dsh/docs/10_plans/spike-tag-repro.mjs +102 -0
- package/node_modules/better-dsh/docs/10_plans/upstream-analysis.md +128 -0
- package/node_modules/better-dsh/docs/20_specs/agent/spec.md +54 -0
- package/node_modules/better-dsh/docs/20_specs/ast/spec.md +57 -0
- package/node_modules/better-dsh/docs/20_specs/compaction-recall/spec.md +46 -0
- package/node_modules/better-dsh/docs/20_specs/ctx/spec.md +107 -0
- package/node_modules/better-dsh/docs/20_specs/dsh/spec.md +47 -0
- package/node_modules/better-dsh/docs/20_specs/dvc/spec.md +106 -0
- package/node_modules/better-dsh/docs/20_specs/escalation-guidance/spec.md +44 -0
- package/node_modules/better-dsh/docs/20_specs/fs-scheme-resolution/spec.md +37 -0
- package/node_modules/better-dsh/docs/20_specs/hash-edit/spec.md +41 -0
- package/node_modules/better-dsh/docs/20_specs/http-read/spec.md +73 -0
- package/node_modules/better-dsh/docs/20_specs/kernel-provisioning/spec.md +53 -0
- package/node_modules/better-dsh/docs/20_specs/lsp/spec.md +121 -0
- package/node_modules/better-dsh/docs/20_specs/mobile-layout/spec.md +108 -0
- package/node_modules/better-dsh/docs/20_specs/model-failover/spec.md +20 -0
- package/node_modules/better-dsh/docs/20_specs/plugins-page-components/spec.md +79 -0
- package/node_modules/better-dsh/docs/20_specs/preact-ui-shell/spec.md +22 -0
- package/node_modules/better-dsh/docs/20_specs/repl-dispatch-resilience/spec.md +21 -0
- package/node_modules/better-dsh/docs/20_specs/skill/spec.md +58 -0
- package/node_modules/better-dsh/docs/20_specs/tool-surface/spec.md +222 -0
- package/node_modules/better-dsh/docs/20_specs/url-schema/spec.md +148 -0
- package/node_modules/better-dsh/docs/20_specs/web-trust-fence/spec.md +43 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-06-write/345/267/245/345/205/267sandbox/345/215/207/347/272/247/351/200/217/344/274/240bug/345/244/215/345/217/221/345/217/212/346/214/202/350/265/267-/344/272/213/344/273/266/346/212/245/345/221/212.md +176 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-08-hashline-edit-E_RANGE_UNVERIFIED/350/267/250/350/275/256/344/274/232/350/257/235/351/224/256/345/244/261/346/225/210-/350/257/212/346/226/255/346/212/245/345/221/212.md +226 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-11-control-prompt-into-eval-description/345/256/236/346/265/213/346/212/245/345/221/212.md +222 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-fs-scheme-resolution-/345/256/236/346/265/213/346/212/245/345/221/212.md +81 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-grammar-matrix/344/270/216catalog-centralize-/345/256/236/346/265/213/346/212/245/345/221/212.md +234 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-recallable-context-design/351/252/214/350/257/201/346/212/245/345/221/212.md +160 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-recallable-context-/345/256/236/346/265/213/345/211/247/346/234/254.md +44 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-recallable-context-/345/256/236/346/265/213/346/212/245/345/221/212.md +89 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-/345/205/255scheme/345/206/222/347/203/237/344/270/216/350/276/271/347/225/214/345/256/236/346/265/213/346/212/245/345/221/212.md +198 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-13-hashline-off/344/270/213scheme/345/217/257/350/276/276/346/200/247/345/267/245/345/205/267/351/235/242/344/270/215/345/257/271/347/247/260-/345/256/236/346/265/213/346/212/245/345/221/212.md +246 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-13-preact-ui-shell/345/256/236/346/265/213/346/212/245/345/221/212.md +50 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-14-4999-skill/346/270/205/345/215/225/344/270/216lsp-gate/345/256/236/346/265/213/346/212/245/345/221/212.md +63 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-17-plugins/351/241/265/345/205/255/347/273/204/344/273/266/346/213/206/345/210/206/345/256/236/346/265/213/346/212/245/345/221/212.md +76 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-22-4988/345/217/214/345/271/263/351/235/242/345/220/257/345/212/250/344/277/256/345/244/215/345/256/236/346/265/213/346/212/245/345/221/212.md +76 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-22-better-dsh/347/273/204/344/273/266/347/203/255/346/217/222/346/213/224/344/270/216/344/276/235/350/265/226/347/272/247/350/201/224/345/256/236/346/265/213/346/212/245/345/221/212.md +134 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-23-remote-framework/345/256/236/346/265/213/346/212/245/345/221/212.md +92 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-23-remote-framework/347/254/254/344/270/200/344/272/272/347/247/260/345/244/215/346/265/213/346/212/245/345/221/212.md +125 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-23-ssh/345/267/245/345/205/267assisted-pty/344/274/232/350/257/235framing/345/256/236/346/265/213/346/212/245/345/221/212.md +207 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-24-v0.1.7-rc.1/345/257/271/351/275/220/350/275/256-compaction/344/270/216failover/350/256/276/347/275/256/351/235/242/344/277/256/345/244/215/345/256/236/346/265/213/346/212/245/345/221/212.md +65 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-27-lsp-ast-reminder-4999/345/256/236/346/265/213/346/212/245/345/221/212.md +53 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-28-ctx-scheme/351/225/277/344/274/232/350/257/235utility/345/256/236/346/265/213/346/212/245/345/221/212.md +155 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-01-v0.2.4d-web-password-gate/345/256/236/346/265/213/346/212/245/345/221/212.md +105 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-02-better-dsh-schemastery/344/276/235/350/265/226/345/243/260/346/230/216/344/277/256/345/244/215/345/256/236/346/265/213/346/212/245/345/221/212.md +62 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-02-ctx-navigation/345/256/236/346/265/213/346/212/245/345/221/212.md +137 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-02-v0.2.0-rc.2/345/257/271/351/275/220/350/275/256/345/256/236/346/265/213/346/212/245/345/221/212.md +38 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-ast-engine-deomp-4999/345/256/236/346/265/213/346/212/245/345/221/212.md +325 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-better-dsh-tool-surface-repl-dvc-browser-ast-lsp-4999/345/256/236/346/265/213/346/212/245/345/221/212.md +185 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-docs-packaging-trim/345/256/236/346/265/213/346/212/245/345/221/212.md +82 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-physical-import/344/270/216llm-completion-ast/347/233/270/345/257/271/350/267/257/345/276/204/344/277/256/345/244/215/345/256/236/346/265/213/346/212/245/345/221/212.md +101 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-pnpm11/345/271/264/351/276/204/351/227/250/351/224/201/346/226/207/344/273/266/347/233/270/344/275/215/345/256/236/350/257/201.md +54 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-remote-BYO-PTY-label/351/207/215/346/236/204/347/254/254/344/270/200/344/272/272/347/247/260/345/256/236/346/265/213/346/212/245/345/221/212.md +447 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-schemastery-cosmokit/346/272/220/347/240/201/345/206/205/350/201/224/345/256/236/346/265/213/346/212/245/345/221/212.md +63 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-zero-npm-runtime-deps/345/256/236/346/265/213/346/212/245/345/221/212.md +82 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-04-ast-engine-deomp-0.2.5-d/345/217/221/345/270/203/351/252/214/346/224/266/346/212/245/345/221/212.md +220 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-04-ast_grep/344/270/216ast_edit/345/245/221/347/272/246/344/270/216/350/276/271/347/225/214/345/256/236/346/265/213/346/212/245/345/221/212.md +151 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-06-authentication-only-web-admission-4999.md +63 -0
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-07-better-dsh-welcome-self-contained-4999.md +52 -0
- package/node_modules/better-dsh/docs/50_test-reports/REPL-/345/267/245/345/205/267/350/260/203/347/224/250-/346/210/252/346/226/255/350/257/212/346/226/255.md +110 -0
- package/node_modules/better-dsh/docs/50_test-reports/kernel-provisioning.md +44 -0
- package/node_modules/better-dsh/docs/50_test-reports/repl-kernel-provisioning-test-report.md +87 -0
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.2-alpha.5-local-test-report.md +81 -0
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.2-alpha.5-report.md +93 -0
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.3-alpha.2-local-test-report.md +44 -0
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.3-alpha.2-report.md +110 -0
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.5-rc.2-local-test-report.md +79 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8-improved-/345/256/236/346/265/213/346/212/245/345/221/212.md +142 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8-/345/256/236/346/265/213/346/212/245/345/221/212.md +193 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8b-/345/256/236/346/265/213/346/212/245/345/221/212.md +96 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8c-/345/256/236/346/265/213/346/212/245/345/221/212.md +127 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8d-/345/256/236/346/265/213/346/212/245/345/221/212.md +150 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8e-/345/256/236/346/265/213/346/212/245/345/221/212.md +224 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.9a-/345/256/236/346/265/213/346/212/245/345/221/212.md +168 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.0b-/345/256/236/346/265/213/346/212/245/345/221/212.md +123 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1-/345/256/236/346/265/213/346/212/245/345/221/212.md +110 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1b-/345/256/236/346/265/213/346/212/245/345/221/212.md +86 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1c-/345/256/236/346/265/213/346/212/245/345/221/212.md +66 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1d-/345/256/236/346/265/213/346/212/245/345/221/212.md +67 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1e-P1-/345/256/236/346/265/213/346/212/245/345/221/212.md +136 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1ef-dev-audit-report.md +73 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1f-plugin-shipped-ui-patches/345/256/236/346/265/213/346/212/245/345/221/212.md +102 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.3b-hashline-content-locator/345/256/236/346/265/213/346/212/245/345/221/212.md +73 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.3c-mobile-wave/345/256/236/346/265/213/346/212/245/345/221/212.md +47 -0
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.4-ios-focus-zoom-suppression/345/256/236/346/265/213/346/212/245/345/221/212.md +158 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/SKILL.md +147 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch01-user-guide.md +123 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch02-plugin-basics.md +127 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch03-plugin-framework-practice.md +120 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch04-cordis-fundamentals.md +129 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch05-cordis-api.md +115 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch06-architecture.md +109 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch07-capability-seams.md +97 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch08-internals-pipelines.md +111 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch09-api-gateway.md +106 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch10-config-catalog.md +97 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch11-tool-catalog.md +121 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch12-persistence-catalog.md +109 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch13-subsystems-core-session.md +106 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch14-subsystems-agent-loop.md +111 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch15-subsystems-tool-execution.md +106 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch16-subsystems-session-data.md +132 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch17-subsystems-llm-streaming.md +128 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch18-subsystems-web-ui.md +142 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch19-cookbook.md +149 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch20-development-testing.md +87 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch21-postmortems.md +82 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch22-i18n.md +86 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/cheatsheet.md +67 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/glossary.md +57 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/patterns.md +88 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/AGENTS.md +75 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/agent-lifecycle.md +84 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/agent-lifecycle.zh.md +86 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/api-gateway.md +164 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/api-gateway.zh.md +164 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/architecture.md +150 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/architecture.zh.md +154 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/capability-seams.md +543 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/capability-seams.zh.md +545 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/config-catalog.md +3473 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/config-catalog.zh.md +3474 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-package.md +117 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-package.zh.md +119 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-remote-api.md +197 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-remote-api.zh.md +197 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-settings-card.md +102 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-settings-card.zh.md +102 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-tool.md +101 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-tool.zh.md +103 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-vendored-package.md +59 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-vendored-package.zh.md +59 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-an-llm-adapter.md +43 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-an-llm-adapter.zh.md +43 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/extension-cookbook.md +132 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/extension-cookbook.zh.md +136 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/maintaining-dsh-code-review.md +64 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/maintaining-dsh-code-review.zh.md +64 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/responding-to-pr-review-on-a-stack.md +32 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +32 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/context.md +364 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/context.zh.md +366 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/events.md +207 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/events.zh.md +209 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/fiber.md +375 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/fiber.zh.md +377 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/inherited.md +39 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/registry.md +152 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/registry.zh.md +154 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/service.md +102 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/service.zh.md +104 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-primer.md +45 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-primer.zh.md +51 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/01-first-plugin.md +95 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/01-first-plugin.zh.md +95 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/02-lifecycle-and-effects.md +98 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +98 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/03-services.md +98 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/03-services.zh.md +98 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/04-events.md +144 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/04-events.zh.md +144 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/05-config.md +84 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/05-config.zh.md +84 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/06-composition-and-hmr.md +113 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/06-composition-and-hmr.zh.md +113 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/07-into-the-harness.md +108 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/07-into-the-harness.zh.md +108 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/index.md +60 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/index.zh.md +62 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/deepseek-llm-api-wire-extensions.md +163 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/deepseek-llm-api-wire-extensions.zh.md +163 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/defensive-patterns.md +33 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/defensive-patterns.zh.md +35 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/development.md +167 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/development.zh.md +173 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/event-producer-consumer.md +86 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/event-producer-consumer.zh.md +88 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/glossary.md +45 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/glossary.zh.md +45 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/graph-atlas.md +22 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/graph-atlas.zh.md +24 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/README.md +60 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/README.zh.md +62 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/style-samples.md +87 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/terminology.md +214 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/translation-prompt.md +263 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/translation-rules.md +69 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/translation-rules.zh.md +69 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/module-graph.md +1411 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/module-graph.zh.md +1413 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/persistence-catalog.md +1075 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/persistence-catalog.zh.md +1077 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0001-acp-default-export-drops-inject.md +113 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0001-acp-default-export-drops-inject.zh.md +113 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +47 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +47 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0003-web-agent-gui-feedback-loop.md +53 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +53 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +55 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +55 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/README.md +18 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/README.zh.md +18 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/rescope.md +53 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/rescope.zh.md +53 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/README.md +61 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/README.zh.md +61 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/agent-team.md +207 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/agent-team.zh.md +207 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/approval.md +170 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/approval.zh.md +170 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/attachment.md +351 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/attachment.zh.md +351 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/client-modules.md +168 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/client-modules.zh.md +168 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/code-runtime.md +195 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/code-runtime.zh.md +195 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/commands.md +219 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/commands.zh.md +219 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/compaction.md +238 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/compaction.zh.md +238 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/conversation.md +258 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/conversation.zh.md +258 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/core.md +1209 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/core.zh.md +1219 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/credentials.md +329 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/credentials.zh.md +329 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/extensions.md +382 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/extensions.zh.md +382 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/feedback.md +266 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/feedback.zh.md +266 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/filesystem.md +505 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/filesystem.zh.md +505 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/goal.md +277 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/goal.zh.md +277 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/invariants.md +88 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/invariants.zh.md +88 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/jobs.md +290 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/jobs.zh.md +290 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/llm-streaming.md +1080 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/llm-streaming.zh.md +1086 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/lsp.md +202 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/lsp.zh.md +202 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/permission-presets.md +131 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/permission-presets.zh.md +131 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/persistence.md +395 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/persistence.zh.md +395 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/plan.md +87 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/plan.zh.md +87 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/sandbox.md +220 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/sandbox.zh.md +220 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/schedule.md +192 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/schedule.zh.md +192 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/scope.md +59 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/scope.zh.md +59 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-projection.md +354 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-projection.zh.md +354 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-query.md +509 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-query.zh.md +509 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-reference.md +219 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-reference.zh.md +219 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-telemetry.md +194 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-telemetry.zh.md +194 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-title.md +204 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-title.zh.md +204 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session.md +1155 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session.zh.md +1159 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/settings.md +405 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/settings.zh.md +405 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/shell.md +303 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/shell.zh.md +303 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/skills.md +354 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/skills.zh.md +354 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/slots.md +175 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/slots.zh.md +175 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/spill.md +117 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/spill.zh.md +117 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/storage.md +260 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/storage.zh.md +260 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subagent.md +766 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subagent.zh.md +770 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subprocess.md +324 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subprocess.zh.md +324 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/system-prompt.md +220 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/system-prompt.zh.md +220 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/terminal.md +184 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/terminal.zh.md +184 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/todo.md +32 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/todo.zh.md +32 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/token-meter.md +105 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/token-meter.zh.md +105 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/tools.md +720 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/tools.zh.md +720 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/typert.md +343 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/typert.zh.md +343 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/user-questions.md +178 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/user-questions.zh.md +178 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-client.md +95 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-client.zh.md +95 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-server.md +154 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-server.zh.md +154 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web.md +206 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web.zh.md +206 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/webhook.md +70 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/webhook.zh.md +70 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workflow.md +278 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workflow.zh.md +278 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workspace.md +321 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workspace.zh.md +321 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/testing.md +54 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/testing.zh.md +54 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-catalog.md +2225 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-catalog.zh.md +2233 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-execution-pipeline.md +62 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-execution-pipeline.zh.md +64 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/config.md +106 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/config.zh.md +106 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/index.md +144 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/index.zh.md +144 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/publish.md +183 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/publish.zh.md +183 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/tool.md +52 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/tool.zh.md +52 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/events.md +143 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/events.zh.md +143 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/index.md +137 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/index.zh.md +137 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/service.md +148 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/service.zh.md +150 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/dynamic-cordis.md +15 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/dynamic-cordis.zh.md +15 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/index.md +155 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/index.zh.md +155 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/llm-adapter.md +189 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/llm-adapter.zh.md +189 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/github-review.md +102 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/github-review.zh.md +102 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/index.md +30 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/index.zh.md +30 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/mcp-memory.md +101 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/mcp-memory.zh.md +101 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/network-proxy.md +85 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/network-proxy.zh.md +85 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/providers.md +190 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/providers.zh.md +190 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/python-sdk.md +150 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/python-sdk.zh.md +150 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/schedule.md +21 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/schedule.zh.md +21 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/index.md +11 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/index.zh.md +11 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/web-styling.md +29 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/web-styling.zh.md +29 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/site-pages-map.txt +234 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/site-pages.json +232 -0
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src-README.md +63 -0
- package/node_modules/better-dsh/docs/dev-test-environment-notes.md +137 -0
- package/node_modules/better-dsh/docs/distro-blueprint.md +81 -0
- package/node_modules/better-dsh/docs/dsh-webUI-with-rlm-mode.png +0 -0
- package/node_modules/better-dsh/docs/repositioning-and-rebranding.md +102 -0
- package/node_modules/better-dsh/docs/specs/agent/spec.md +54 -0
- package/node_modules/better-dsh/docs/specs/ast/spec.md +57 -0
- package/node_modules/better-dsh/docs/specs/ast-engine-deomp/spec.md +170 -0
- package/node_modules/better-dsh/docs/specs/authentication-only-web-admission/spec.md +51 -0
- package/node_modules/better-dsh/docs/specs/compaction-recall/spec.md +46 -0
- package/node_modules/better-dsh/docs/specs/ctx/spec.md +179 -0
- package/node_modules/better-dsh/docs/specs/docs-packaging-trim/spec.md +110 -0
- package/node_modules/better-dsh/docs/specs/dsh/spec.md +47 -0
- package/node_modules/better-dsh/docs/specs/dvc/spec.md +106 -0
- package/node_modules/better-dsh/docs/specs/escalation-guidance/spec.md +44 -0
- package/node_modules/better-dsh/docs/specs/fs-scheme-resolution/spec.md +37 -0
- package/node_modules/better-dsh/docs/specs/hash-edit/spec.md +41 -0
- package/node_modules/better-dsh/docs/specs/http-read/spec.md +73 -0
- package/node_modules/better-dsh/docs/specs/kernel-provisioning/spec.md +53 -0
- package/node_modules/better-dsh/docs/specs/lsp/spec.md +121 -0
- package/node_modules/better-dsh/docs/specs/mobile-layout/spec.md +108 -0
- package/node_modules/better-dsh/docs/specs/model-failover/spec.md +20 -0
- package/node_modules/better-dsh/docs/specs/model-picker-ios-blur/spec.md +168 -0
- package/node_modules/better-dsh/docs/specs/plugins-page-components/spec.md +79 -0
- package/node_modules/better-dsh/docs/specs/preact-ui-shell/spec.md +22 -0
- package/node_modules/better-dsh/docs/specs/remote-pty-label/spec.md +126 -0
- package/node_modules/better-dsh/docs/specs/repl-dispatch-resilience/spec.md +21 -0
- package/node_modules/better-dsh/docs/specs/skill/spec.md +58 -0
- package/node_modules/better-dsh/docs/specs/tool-surface/spec.md +222 -0
- package/node_modules/better-dsh/docs/specs/url-schema/spec.md +148 -0
- package/node_modules/better-dsh/docs/specs/web-trust-fence/spec.md +43 -0
- package/node_modules/better-dsh/docs/specs/welcome-self-contained/spec.md +13 -0
- package/node_modules/better-dsh/docs/specs/zero-npm-runtime-deps/spec.md +85 -0
- package/node_modules/better-dsh/docs/superpowers/plans/2026-10-02-ctx-navigation.md +319 -0
- package/node_modules/better-dsh/docs/superpowers/plans/2026-10-03-ast-engine-deomp.md +1214 -0
- package/node_modules/better-dsh/docs/superpowers/plans/2026-10-03-docs-packaging-trim.md +181 -0
- package/node_modules/better-dsh/docs/superpowers/specs/2026-10-02-ctx-navigation-design.md +209 -0
- package/node_modules/better-dsh/docs/upstream-dsh-0.1.5-rc.2-report.md +156 -0
- package/node_modules/better-dsh/dsh-docs/AGENTS.md +75 -0
- package/node_modules/better-dsh/dsh-docs/agent-lifecycle.md +84 -0
- package/node_modules/better-dsh/dsh-docs/agent-lifecycle.zh.md +86 -0
- package/node_modules/better-dsh/dsh-docs/api-gateway.md +164 -0
- package/node_modules/better-dsh/dsh-docs/api-gateway.zh.md +164 -0
- package/node_modules/better-dsh/dsh-docs/architecture.md +150 -0
- package/node_modules/better-dsh/dsh-docs/architecture.zh.md +154 -0
- package/node_modules/better-dsh/dsh-docs/capability-seams.md +543 -0
- package/node_modules/better-dsh/dsh-docs/capability-seams.zh.md +545 -0
- package/node_modules/better-dsh/dsh-docs/config-catalog.md +3473 -0
- package/node_modules/better-dsh/dsh-docs/config-catalog.zh.md +3474 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-package.md +117 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-package.zh.md +119 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-remote-api.md +197 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-remote-api.zh.md +197 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-session-format-version.md +109 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-session-format-version.zh.md +109 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-settings-card.md +102 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-settings-card.zh.md +102 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-tool.md +101 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-tool.zh.md +103 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-vendored-package.md +59 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-vendored-package.zh.md +59 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-an-llm-adapter.md +43 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-an-llm-adapter.zh.md +43 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/extension-cookbook.md +132 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/extension-cookbook.zh.md +136 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/maintaining-dsh-code-review.md +64 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/maintaining-dsh-code-review.zh.md +64 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/responding-to-pr-review-on-a-stack.md +32 -0
- package/node_modules/better-dsh/dsh-docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +32 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/context.md +364 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/context.zh.md +366 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/events.md +207 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/events.zh.md +209 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/fiber.md +375 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/fiber.zh.md +377 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/inherited.md +39 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/registry.md +152 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/registry.zh.md +154 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/service.md +102 -0
- package/node_modules/better-dsh/dsh-docs/cordis-api/service.zh.md +104 -0
- package/node_modules/better-dsh/dsh-docs/cordis-primer.md +45 -0
- package/node_modules/better-dsh/dsh-docs/cordis-primer.zh.md +51 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/01-first-plugin.md +95 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/01-first-plugin.zh.md +95 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/02-lifecycle-and-effects.md +98 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +98 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/03-services.md +98 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/03-services.zh.md +98 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/04-events.md +144 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/04-events.zh.md +144 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/05-config.md +84 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/05-config.zh.md +84 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/06-composition-and-hmr.md +113 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/06-composition-and-hmr.zh.md +113 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/07-into-the-harness.md +108 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/07-into-the-harness.zh.md +108 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/index.md +60 -0
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/index.zh.md +62 -0
- package/node_modules/better-dsh/dsh-docs/deepseek-llm-api-wire-extensions.md +163 -0
- package/node_modules/better-dsh/dsh-docs/deepseek-llm-api-wire-extensions.zh.md +163 -0
- package/node_modules/better-dsh/dsh-docs/defensive-patterns.md +33 -0
- package/node_modules/better-dsh/dsh-docs/defensive-patterns.zh.md +35 -0
- package/node_modules/better-dsh/dsh-docs/development.md +167 -0
- package/node_modules/better-dsh/dsh-docs/development.zh.md +173 -0
- package/node_modules/better-dsh/dsh-docs/event-producer-consumer.md +86 -0
- package/node_modules/better-dsh/dsh-docs/event-producer-consumer.zh.md +88 -0
- package/node_modules/better-dsh/dsh-docs/glossary.md +45 -0
- package/node_modules/better-dsh/dsh-docs/glossary.zh.md +45 -0
- package/node_modules/better-dsh/dsh-docs/graph-atlas.md +22 -0
- package/node_modules/better-dsh/dsh-docs/graph-atlas.zh.md +24 -0
- package/node_modules/better-dsh/dsh-docs/i18n/README.md +60 -0
- package/node_modules/better-dsh/dsh-docs/i18n/README.zh.md +62 -0
- package/node_modules/better-dsh/dsh-docs/i18n/style-samples.md +87 -0
- package/node_modules/better-dsh/dsh-docs/i18n/terminology.md +214 -0
- package/node_modules/better-dsh/dsh-docs/i18n/translation-prompt.md +263 -0
- package/node_modules/better-dsh/dsh-docs/i18n/translation-rules.md +69 -0
- package/node_modules/better-dsh/dsh-docs/i18n/translation-rules.zh.md +69 -0
- package/node_modules/better-dsh/dsh-docs/module-graph.md +1411 -0
- package/node_modules/better-dsh/dsh-docs/module-graph.zh.md +1413 -0
- package/node_modules/better-dsh/dsh-docs/persistence-catalog.md +1075 -0
- package/node_modules/better-dsh/dsh-docs/persistence-catalog.zh.md +1077 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/0001-acp-default-export-drops-inject.md +113 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/0001-acp-default-export-drops-inject.zh.md +113 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +47 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +47 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/0003-web-agent-gui-feedback-loop.md +53 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +53 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +55 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +55 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/README.md +18 -0
- package/node_modules/better-dsh/dsh-docs/postmortem/README.zh.md +18 -0
- package/node_modules/better-dsh/dsh-docs/rescope.md +53 -0
- package/node_modules/better-dsh/dsh-docs/rescope.zh.md +53 -0
- package/node_modules/better-dsh/dsh-docs/session-format-status.md +47 -0
- package/node_modules/better-dsh/dsh-docs/session-format-status.zh.md +47 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/README.md +61 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/README.zh.md +61 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/agent-team.md +207 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/agent-team.zh.md +207 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/approval.md +170 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/approval.zh.md +170 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/attachment.md +351 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/attachment.zh.md +351 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/client-modules.md +168 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/client-modules.zh.md +168 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/client-resources.md +91 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/client-resources.zh.md +91 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/code-runtime.md +195 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/code-runtime.zh.md +195 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/commands.md +219 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/commands.zh.md +219 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/compaction.md +238 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/compaction.zh.md +238 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/conversation.md +258 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/conversation.zh.md +258 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/core.md +1209 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/core.zh.md +1219 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/credentials.md +329 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/credentials.zh.md +329 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/extensions.md +382 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/extensions.zh.md +382 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/feedback.md +266 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/feedback.zh.md +266 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/filesystem.md +505 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/filesystem.zh.md +505 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/goal.md +277 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/goal.zh.md +277 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/invariants.md +88 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/invariants.zh.md +88 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/jobs.md +290 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/jobs.zh.md +290 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/llm-streaming.md +1080 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/llm-streaming.zh.md +1086 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/lsp.md +202 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/lsp.zh.md +202 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/permission-presets.md +131 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/permission-presets.zh.md +131 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/persistence.md +395 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/persistence.zh.md +395 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/plan.md +87 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/plan.zh.md +87 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/sandbox.md +220 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/sandbox.zh.md +220 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/schedule.md +192 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/schedule.zh.md +192 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/scope.md +59 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/scope.zh.md +59 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-projection.md +354 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-projection.zh.md +354 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-query.md +509 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-query.zh.md +509 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-reference.md +219 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-reference.zh.md +219 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-telemetry.md +194 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-telemetry.zh.md +194 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-title.md +204 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session-title.zh.md +204 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session.md +1155 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/session.zh.md +1159 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/settings.md +405 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/settings.zh.md +405 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/shell.md +303 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/shell.zh.md +303 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/sidebar-right.md +148 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/sidebar-right.zh.md +148 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/skills.md +354 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/skills.zh.md +354 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/slots.md +175 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/slots.zh.md +175 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/spill.md +117 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/spill.zh.md +117 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/storage.md +260 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/storage.zh.md +260 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/subagent.md +766 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/subagent.zh.md +770 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/subprocess.md +324 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/subprocess.zh.md +324 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/system-prompt.md +220 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/system-prompt.zh.md +220 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/terminal.md +184 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/terminal.zh.md +184 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/todo.md +32 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/todo.zh.md +32 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/token-meter.md +105 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/token-meter.zh.md +105 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/tools.md +720 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/tools.zh.md +720 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/typert.md +343 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/typert.zh.md +343 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/user-questions.md +178 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/user-questions.zh.md +178 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/web-client.md +95 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/web-client.zh.md +95 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/web-server.md +154 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/web-server.zh.md +154 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/web.md +206 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/web.zh.md +206 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/webhook.md +70 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/webhook.zh.md +70 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/workflow.md +278 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/workflow.zh.md +278 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/workspace.md +321 -0
- package/node_modules/better-dsh/dsh-docs/subsystems/workspace.zh.md +321 -0
- package/node_modules/better-dsh/dsh-docs/testing.md +54 -0
- package/node_modules/better-dsh/dsh-docs/testing.zh.md +54 -0
- package/node_modules/better-dsh/dsh-docs/tool-catalog.md +2225 -0
- package/node_modules/better-dsh/dsh-docs/tool-catalog.zh.md +2233 -0
- package/node_modules/better-dsh/dsh-docs/tool-execution-pipeline.md +62 -0
- package/node_modules/better-dsh/dsh-docs/tool-execution-pipeline.zh.md +64 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/config.md +106 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/config.zh.md +106 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/index.md +144 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/index.zh.md +144 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/publish.md +183 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/publish.zh.md +183 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/tool.md +52 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/tool.zh.md +52 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/events.md +143 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/events.zh.md +143 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/index.md +137 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/index.zh.md +137 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/service.md +148 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/service.zh.md +150 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/dynamic-cordis.md +15 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/dynamic-cordis.zh.md +15 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/index.md +155 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/index.zh.md +155 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/llm-adapter.md +189 -0
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/llm-adapter.zh.md +189 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/github-review.md +102 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/github-review.zh.md +102 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/index.md +30 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/index.zh.md +30 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/mcp-memory.md +101 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/mcp-memory.zh.md +101 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/network-proxy.md +85 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/network-proxy.zh.md +85 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/providers.md +190 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/providers.zh.md +190 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/python-sdk.md +150 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/python-sdk.zh.md +150 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/schedule.md +21 -0
- package/node_modules/better-dsh/dsh-docs/user/guide/schedule.zh.md +21 -0
- package/node_modules/better-dsh/dsh-docs/user/index.md +11 -0
- package/node_modules/better-dsh/dsh-docs/user/index.zh.md +11 -0
- package/node_modules/better-dsh/dsh-docs/web-styling.md +29 -0
- package/node_modules/better-dsh/dsh-docs/web-styling.zh.md +29 -0
- package/node_modules/better-dsh/eval-description.md +33 -0
- package/node_modules/better-dsh/lib/BrowserWebSocketTransport-D1aFReu_.js +4 -0
- package/node_modules/better-dsh/lib/BrowserWebSocketTransport-wm99h94r.js +39 -0
- package/node_modules/better-dsh/lib/LaunchOptions-B874eBu2.js +4 -0
- package/node_modules/better-dsh/lib/LaunchOptions-kGXcZOe0.js +17 -0
- package/node_modules/better-dsh/lib/NodeWebSocketTransport-BRLjmu2R.js +4 -0
- package/node_modules/better-dsh/lib/NodeWebSocketTransport-D9ysYGLM.js +3634 -0
- package/node_modules/better-dsh/lib/ast-assets/ast-grep.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-bash.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-c.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-cpp.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-css.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-go.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-html.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-javascript.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-json.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-python.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-ruby.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-rust.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-tsx.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-typescript.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-yaml.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter.wasm +0 -0
- package/node_modules/better-dsh/lib/bidi-BalpKaJc.js +16106 -0
- package/node_modules/better-dsh/lib/bundle-delivery.d.ts +20 -0
- package/node_modules/better-dsh/lib/bundle-delivery.js +209 -0
- package/node_modules/better-dsh/lib/chunk-DQxbwPpZ.js +30 -0
- package/node_modules/better-dsh/lib/client/index.js +712 -0
- package/node_modules/better-dsh/lib/compaction/index.d.ts +57 -0
- package/node_modules/better-dsh/lib/compaction/index.js +145 -0
- package/node_modules/better-dsh/lib/failover/index.d.ts +59 -0
- package/node_modules/better-dsh/lib/failover/index.js +147 -0
- package/node_modules/better-dsh/lib/fs-aware/sandbox-plugin.d.ts +71 -0
- package/node_modules/better-dsh/lib/fs-aware/sandbox-plugin.js +249 -0
- package/node_modules/better-dsh/lib/hmr.d.ts +32 -0
- package/node_modules/better-dsh/lib/hmr.js +49 -0
- package/node_modules/better-dsh/lib/index-DTDXUe6m.d.ts +208 -0
- package/node_modules/better-dsh/lib/index-browser-CysrjMyM.js +21061 -0
- package/node_modules/better-dsh/lib/index.d.ts +705 -0
- package/node_modules/better-dsh/lib/index.js +3816 -0
- package/node_modules/better-dsh/lib/kernel-bridge.py +172 -0
- package/node_modules/better-dsh/lib/kernel-env-D8UOWeji.js +195 -0
- package/node_modules/better-dsh/lib/kernel-env.d.ts +80 -0
- package/node_modules/better-dsh/lib/kernel-env.js +3 -0
- package/node_modules/better-dsh/lib/lib-C8_jXvwA.js +894 -0
- package/node_modules/better-dsh/lib/lsp-server-registry-BXvUTBY7.js +3 -0
- package/node_modules/better-dsh/lib/lsp-server-registry-CH9WNFFt.js +972 -0
- package/node_modules/better-dsh/lib/main-BQeFrBM1.js +3 -0
- package/node_modules/better-dsh/lib/main-CupOhMp5.js +1432 -0
- package/node_modules/better-dsh/lib/mobile/plugin.d.ts +29 -0
- package/node_modules/better-dsh/lib/mobile/plugin.js +54 -0
- package/node_modules/better-dsh/lib/native-capture-BEByDXYM.js +68 -0
- package/node_modules/better-dsh/lib/puppeteer-core-CSk2PtSm.js +1136 -0
- package/node_modules/better-dsh/lib/py-sdk-D7klhpWb.js +178 -0
- package/node_modules/better-dsh/lib/py-sdk.d.ts +19 -0
- package/node_modules/better-dsh/lib/py-sdk.js +3 -0
- package/node_modules/better-dsh/lib/remote/plugin.d.ts +24 -0
- package/node_modules/better-dsh/lib/remote/plugin.js +1190 -0
- package/node_modules/better-dsh/lib/url-schemes/index.d.ts +88 -0
- package/node_modules/better-dsh/lib/url-schemes/index.js +12229 -0
- package/node_modules/better-dsh/lib/util-BHL_dfV_.js +2953 -0
- package/node_modules/better-dsh/lib/wasm_bg-CNXhHjVg.js +1291 -0
- package/node_modules/better-dsh/lib/web-password.d.ts +156 -0
- package/node_modules/better-dsh/lib/web-password.js +562 -0
- package/node_modules/better-dsh/lib/web-tree-sitter-CPrPD4J2.js +3440 -0
- package/node_modules/better-dsh/lib/web-trust-D6gJpUMf.js +393 -0
- package/node_modules/better-dsh/lib/web-trust-Dej_RI2B.d.ts +113 -0
- package/node_modules/better-dsh/lib/web-trust.d.ts +3 -0
- package/node_modules/better-dsh/lib/web-trust.js +4 -0
- package/node_modules/better-dsh/lib/webserver.d.ts +10 -0
- package/node_modules/better-dsh/lib/webserver.js +19 -0
- package/node_modules/better-dsh/lib/welcome-notice.d.ts +18 -0
- package/node_modules/better-dsh/lib/welcome-notice.js +59 -0
- package/node_modules/better-dsh/lib/wrap-T4I0nfPM.js +750 -0
- package/node_modules/better-dsh/package.json +430 -0
- package/node_modules/better-dsh/scripts/kernel-provision.mjs +35 -0
- package/node_modules/better-dsh/scripts/register-bundle.mjs +80 -0
- package/node_modules/better-dsh/url-schemes-instruction.md +22 -0
- package/package.json +21 -6
- package/superd-hub/assets/icons/README.md +20 -0
- package/superd-hub/assets/icons/amp.png +0 -0
- package/superd-hub/assets/icons/ante.png +0 -0
- package/superd-hub/assets/icons/antigravity.png +0 -0
- package/superd-hub/assets/icons/aug.png +0 -0
- package/superd-hub/assets/icons/autohand.png +0 -0
- package/superd-hub/assets/icons/claude.svg +1 -0
- package/superd-hub/assets/icons/cline.png +0 -0
- package/superd-hub/assets/icons/codebuddy.png +0 -0
- package/superd-hub/assets/icons/codebuff.png +0 -0
- package/superd-hub/assets/icons/codex.svg +1 -0
- package/superd-hub/assets/icons/command-code.png +0 -0
- package/superd-hub/assets/icons/continue.png +0 -0
- package/superd-hub/assets/icons/copilot.png +0 -0
- package/superd-hub/assets/icons/crush.png +0 -0
- package/superd-hub/assets/icons/cursor.png +0 -0
- package/superd-hub/assets/icons/devin.png +0 -0
- package/superd-hub/assets/icons/droid.png +0 -0
- package/superd-hub/assets/icons/dsh-fish.svg +3 -0
- package/superd-hub/assets/icons/dsh.png +0 -0
- package/superd-hub/assets/icons/freebuff.png +0 -0
- package/superd-hub/assets/icons/gemini.png +0 -0
- package/superd-hub/assets/icons/goose.png +0 -0
- package/superd-hub/assets/icons/grok.png +0 -0
- package/superd-hub/assets/icons/hermes.png +0 -0
- package/superd-hub/assets/icons/jcode.png +0 -0
- package/superd-hub/assets/icons/kilo.png +0 -0
- package/superd-hub/assets/icons/kimi.png +0 -0
- package/superd-hub/assets/icons/kiro.png +0 -0
- package/superd-hub/assets/icons/manifest.json +20 -0
- package/superd-hub/assets/icons/mimo-code.png +0 -0
- package/superd-hub/assets/icons/mistral-vibe.png +0 -0
- package/superd-hub/assets/icons/muse.png +0 -0
- package/superd-hub/assets/icons/omp.svg +1 -0
- package/superd-hub/assets/icons/openclaude.png +0 -0
- package/superd-hub/assets/icons/openclaw.png +0 -0
- package/superd-hub/assets/icons/opencode.png +0 -0
- package/superd-hub/assets/icons/pi.svg +1 -0
- package/superd-hub/assets/icons/prime-agent.png +0 -0
- package/superd-hub/assets/icons/qoder-cn.png +0 -0
- package/superd-hub/assets/icons/qoder.png +0 -0
- package/superd-hub/assets/icons/qwen-code.png +0 -0
- package/superd-hub/assets/icons/rovo.png +0 -0
- package/superd-hub/assets/icons/trae.png +0 -0
- package/superd-hub/assets/icons/zcode.png +0 -0
- package/superd-hub/dist/a2a-row.js +1 -1
- package/superd-hub/dist/agent-roster.d.ts +8 -3
- package/superd-hub/dist/agent-roster.js +19 -7
- package/superd-hub/dist/bundle-setup.d.ts +2 -0
- package/superd-hub/dist/bundle-setup.js +2 -0
- package/superd-hub/dist/client/icon-assets.gen.d.ts +16 -0
- package/superd-hub/dist/client/icon-assets.gen.js +54 -0
- package/superd-hub/dist/client/mesh-api.d.ts +28 -17
- package/superd-hub/dist/client/mesh-api.js +44 -31
- package/superd-hub/dist/client/mesh-groups.d.ts +13 -11
- package/superd-hub/dist/client/mesh-groups.js +30 -10
- package/superd-hub/dist/client/roster.d.ts +7 -16
- package/superd-hub/dist/client/roster.js +5 -3
- package/superd-hub/dist/fusion-transport.d.ts +11 -10
- package/superd-hub/dist/fusion-transport.js +21 -11
- package/superd-hub/dist/index.d.ts +0 -1
- package/superd-hub/dist/index.js +0 -1
- package/superd-hub/dist/machines.d.ts +6 -3
- package/superd-hub/dist/machines.js +15 -3
- package/superd-hub/dist/mesh-federate.d.ts +18 -8
- package/superd-hub/dist/mesh-federate.js +14 -9
- package/superd-hub/dist/mesh-link.d.ts +37 -3
- package/superd-hub/dist/mesh-link.js +49 -4
- package/superd-hub/dist/mesh-rpc.d.ts +48 -16
- package/superd-hub/dist/mesh-rpc.js +139 -14
- package/superd-hub/dist/roster.d.ts +20 -0
- package/superd-hub/dist/roster.js +24 -0
- package/superd-hub/dist/switch-core.d.ts +3 -2
- package/superd-hub/dist/switch-core.js +1 -1
- package/superd-hub/dist/world-entry.d.ts +3 -0
- package/superd-hub/dist/world-entry.js +4 -1
- package/superd-hub/dist/world-host.d.ts +5 -2
- package/superd-hub/dist/world-host.js +6 -2
- package/superd-hub/dist/world-join.d.ts +1 -1
- package/superd-hub/dist/world-join.js +14 -32
- package/superd-hub/dist/world-lifecycle.d.ts +20 -0
- package/superd-hub/dist/world-lifecycle.js +69 -0
- package/superd-hub/dist/world-mount.d.ts +1 -1
- package/superd-hub/dist/world-mount.js +2 -2
- package/superd-hub/lib/client/index.js +434 -307
- package/superd-hub/package.json +3 -2
- package/superd-hub/dist/connection-trust.d.ts +0 -8
- package/superd-hub/dist/connection-trust.js +0 -16
- package/superd-hub/dist/web-trust.d.ts +0 -84
- package/superd-hub/dist/web-trust.js +0 -101
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# better-dsh:vendored 包改物理 import + `llm_completion` 返回形态 + ast 相对路径(2026-10-03)
|
|
2
|
+
|
|
3
|
+
- **对象**:better-dsh `0.2.5-a`(本地过程版本,未发布)
|
|
4
|
+
- **载体**:dev 树 + 4999 rig(`.test/home/compat`,unit `dsh-4999-test123`,core `0.2.0-rc.2`)
|
|
5
|
+
- **前序**:[2026-10-03-schemastery-cosmokit源码内联实测报告](2026-10-03-schemastery-cosmokit源码内联实测报告.md)、[2026-10-03-better-dsh-tool-surface-repl-dvc-browser-ast-lsp-4999实测报告](2026-10-03-better-dsh-tool-surface-repl-dvc-browser-ast-lsp-4999实测报告.md)(后者的 F1/F3 在本轮修复)
|
|
6
|
+
|
|
7
|
+
## 一、vendored 包改为"物理 import"(去掉我上一轮加的 shim)
|
|
8
|
+
|
|
9
|
+
user 裁决:不要额外逻辑,**物理 import** 即可 —— 文件名就叫 `@deepseek-ai/<pkg>`,目标只是避开构建期/运行期的解析 logistics。
|
|
10
|
+
|
|
11
|
+
**终态**(41 个文件 / **348 KB**):
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
third_party/
|
|
15
|
+
schemastery/ @deepseek-ai/schemastery 3.18.4 (MIT)
|
|
16
|
+
lib/index.mjs lib/index.cjs lib/types/…
|
|
17
|
+
lib/index.d.mts ← 唯一自加文件(见下)
|
|
18
|
+
src/index.ts LICENSE README.md package.json
|
|
19
|
+
node_modules/@deepseek-ai/cosmokit/ @deepseek-ai/cosmokit 1.8.5 (MIT)
|
|
20
|
+
node_modules/@standard-schema/spec/ 1.1.0 (MIT, 仅类型)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`package.json` 里一个子路径映射(**删除了 `src/schemastery.ts`**):
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
"imports": {
|
|
27
|
+
"#schemastery": {
|
|
28
|
+
"types": "./third_party/schemastery/lib/index.d.mts",
|
|
29
|
+
"default": "./third_party/schemastery/lib/index.mjs"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
9 个源文件统一 `import z from '#schemastery'`。
|
|
35
|
+
|
|
36
|
+
**两个必须知道的机制点**(都是实测撞出来的,不是猜的):
|
|
37
|
+
|
|
38
|
+
1. **TS 拒绝把 `imports` target 指进 `node_modules` 段**。最初的镜像布局是
|
|
39
|
+
`third_party/node_modules/@deepseek-ai/schemastery/…`,`tsc` 报
|
|
40
|
+
`package.json scope … has invalid type for target of specifier '#schemastery'`;
|
|
41
|
+
读 TS 源码定位到该诊断位于 `loadModuleFromTargetImportOrExport` 的
|
|
42
|
+
`!startsWith(target, "./")` 分支后,把 target 换成不含 `node_modules` 的路径即通。
|
|
43
|
+
于是 schemastery **平铺**在 `third_party/schemastery/`,而它的依赖仍按真实安装形态
|
|
44
|
+
**嵌在它自己的 `node_modules/` 里**——这样 schemastery 内部的
|
|
45
|
+
`import '@deepseek-ai/cosmokit'` 就地解析,**vendored 代码一行都不用改**(`diff -rq`
|
|
46
|
+
与上游逐字节一致,除我们新增的 `lib/index.d.mts`)。
|
|
47
|
+
2. **`lib/index.d.mts` 这一个两行文件是必需的**:本包 `"type": "module"`,TS 会把
|
|
48
|
+
`lib/types/index.d.ts` 当 CJS 声明,直接 import `lib/index.mjs` 时取不到类型;
|
|
49
|
+
`.d.mts` 是 TS 的标准 ESM 声明位。
|
|
50
|
+
|
|
51
|
+
**副产品(比预期更好)**:类型面也不再引用外部 —— `lib/*.d.ts` 现在从**本地 chunk**
|
|
52
|
+
(`import { t as Schema } from "./index-DZQNwO7f.js"`)取 `Schema`,`lib/` 里既无
|
|
53
|
+
`#schemastery` 也无裸 `@deepseek-ai/schemastery`。即发布物**运行期 + 类型面双双自包含**。
|
|
54
|
+
|
|
55
|
+
## 二、F3:`llm_completion` 返回形态统一(这是**我们自己**的工具)
|
|
56
|
+
|
|
57
|
+
它是本插件自研的 one-shot / 无工具 / 无上下文的工具(`src/llm-completion.ts`),桥接上游
|
|
58
|
+
`ctx.llm` 服务;不是上游工具。原实现**成功回裸 `str`、失败回 `{ error }`**,程序化调用方
|
|
59
|
+
`r["text"]` / `r.keys()` 会炸。
|
|
60
|
+
|
|
61
|
+
修法(三层一起改,缺一不可):
|
|
62
|
+
|
|
63
|
+
- 返回值:`{ ok: true, text }` / `{ ok: false, error }`(9 个错误点 + 1 个成功点);
|
|
64
|
+
- 工具 `output.schema`:`oneOf: [textVariant, errorVariant]`(原为 `oneOf: [string, errorVariant]`
|
|
65
|
+
—— **不改这里会直接报** `value must match exactly one oneOf branch (matched 0)`);
|
|
66
|
+
- `render`:成功时仍渲染纯文本(模型面可读),失败渲染 JSON;
|
|
67
|
+
- 描述补一句"直接调用成功时只渲染文本",消除"契约说对象、surface 是文本"的歧义(本轮第一人称
|
|
68
|
+
agent 如实报了这一点)。
|
|
69
|
+
- 测试同步:`test/surface-devices/llm-completion.spec.ts` 4/4 绿。
|
|
70
|
+
|
|
71
|
+
## 三、F1:ast 设备的相对路径基准改为**会话 workspace**
|
|
72
|
+
|
|
73
|
+
根因:eval 工具用的是 `exec.agent.session.header.cwd`(`src/index.ts:896`),而 dvc 写入这条路
|
|
74
|
+
只把 `session` 传进设备(`dispatchDvcWrite(path, content, meta.session)`),没传 cwd,
|
|
75
|
+
`ast-device` 的 `ctxCwd()` 只能回落到**守护进程 cwd**(= `upstream/deepseek-harness`)。
|
|
76
|
+
|
|
77
|
+
修法:把同一个 cwd 作为 transport 槽位补齐(不是 payload,避免触发设备的严格字段校验):
|
|
78
|
+
|
|
79
|
+
- `tools/write.ts`:`writeScheme(..., { session, ...exec.agent ? { cwd: exec.agent.session.header.cwd } : {} })`;
|
|
80
|
+
- `handlers/dvc.ts`:`dispatchDvcWrite(path, content, session?, cwd?)` → `device.execute(args, { session, ...(cwd ? { cwd } : {}) })`。
|
|
81
|
+
|
|
82
|
+
## 四、验证
|
|
83
|
+
|
|
84
|
+
| 项 | 结果 |
|
|
85
|
+
|---|---|
|
|
86
|
+
| `tsc --noEmit`(host + client) | **0 错** |
|
|
87
|
+
| `npm run build` | 通过;产物 JS 无任何裸 `@deepseek-ai/schemastery\|cosmokit`;`lib/` 无 `#schemastery` |
|
|
88
|
+
| 全量单测 | **57 文件 / 649 passed, 1 skipped** |
|
|
89
|
+
| rig 安装 | 两个 profile 均 **`Packages: +1`** |
|
|
90
|
+
| rig 启动 | 零 `failed to import` / `did not activate` / `EPIPE`(上一轮修的 EPIPE:新 boot 段实测干净) |
|
|
91
|
+
| **F1 第一人称** | `write dvc://ast_grep {"patterns":["loadPiNatives"],"path":"better-dsh/src"}` → 命中 2 文件 / 3 处,且返回 `path` 为 **workspace 相对**(`better-dsh/src/devices/ast/ast-device.ts`) |
|
|
92
|
+
| **F3 第一人称** | `llm_completion({prompt:'只回答一个词:OK'})` → 程序化值为 `{ok:true,text:"OK"}`;agent 观测到的 surface 为纯文本 `OK`(render 层行为,描述已写明) |
|
|
93
|
+
|
|
94
|
+
## 五、未做 / 限制
|
|
95
|
+
|
|
96
|
+
- **发布**:按 AGENTS.md §〇,`npm publish` 需 user 单次明确放行,本轮未发。
|
|
97
|
+
- `third_party/` **不随 tarball 发布**(`files` 不含它):`lib/` 已经内联了运行期与类型面,
|
|
98
|
+
发布物自包含;vendored 源码只服务本仓构建。`package.json#imports` 因此在发布物里是
|
|
99
|
+
"指向未发布文件"的悬空映射 —— 发布物内没有任何代码 import 它(已实测 `lib/` 零引用)。
|
|
100
|
+
- `llm_completion` 的 F5(`maxTokens` 过小时整次失败而非截断)**未动**,见汇报;改动它会变更语义。
|
|
101
|
+
- F2(browser 无 cookie 注入通道)、F4(REPL 子调用未并行)未动。
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# pnpm 11 年龄门:`minimumReleaseAgeExclude` 对"锁文件校验相位"完全无效(2026-10-03 实证)
|
|
2
|
+
|
|
3
|
+
- **触发**:user 在 homepc(prod)执行 `dsh plugin --profile web add better-dsh@0.2.5-b`,被拦:
|
|
4
|
+
```
|
|
5
|
+
✗ Lockfile failed supply-chain policy check (431 entries in 2.6s)
|
|
6
|
+
[ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION] 1 lockfile entries failed verification:
|
|
7
|
+
super-dsh@0.1.9 was published at 2026-10-02T07:45:36.963Z, within the minimumReleaseAge cutoff
|
|
8
|
+
```
|
|
9
|
+
即:**装 better-dsh 被 _另一个插件_ super-dsh@0.1.9 的年龄拦下**(该条目在 profile 锁文件里,发布未满 24h)。
|
|
10
|
+
- **环境**:pnpm 11.7.0,profile `~/.dsh/profiles/web`,core dsh 0.2.0-rc.2。
|
|
11
|
+
|
|
12
|
+
## 一、决定性 A/B(同一份 prod 锁文件,只改变量)
|
|
13
|
+
|
|
14
|
+
把 prod profile 的 `package.json` + `pnpm-lock.yaml` + `pnpm-workspace.yaml` 复制到 `.scratch/age-probe/`,
|
|
15
|
+
每个变体只往 `pnpm-workspace.yaml` 追加一行,跑 `pnpm install --lockfile-only`,只看策略结论行:
|
|
16
|
+
|
|
17
|
+
| 变体 | `minimumReleaseAgeExclude` 内容 | 结果 |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| **V1** 现状 | `better-dsh` + `super-dsh@0.1.5-a` + `super-dsh@0.1.9` | ✗ failed(复现现场报错) |
|
|
20
|
+
| **V2** | V1 + 裸名 `super-dsh` | ✗ failed |
|
|
21
|
+
| **V3** | V2 + 裸名 `better-dsh` | ✗ failed |
|
|
22
|
+
| **V4** | V1 + `minimumReleaseAge: 0` | **✓ passes** |
|
|
23
|
+
|
|
24
|
+
**结论**:在 pnpm 11.7.0 上,`minimumReleaseAgeExclude` —— 无论 `pkg@x.y.z` 形式还是裸包名 ——
|
|
25
|
+
**都不能豁免锁文件校验相位**;唯一有效旋钮是 `minimumReleaseAge` 本身(设 0,或设成小于该条目年龄的值)。
|
|
26
|
+
本仓 AGENTS.md 此前"持久形式 = 裸包名,全相位生效(scratch A5–A7 实证)"的结论**是错的,已订正**。
|
|
27
|
+
|
|
28
|
+
## 二、修复(prod 现场)
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
# ~/.dsh/profiles/web/pnpm-workspace.yaml (追加)
|
|
32
|
+
minimumReleaseAge: 0
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- 备份:`pnpm-workspace.yaml.bak-minimumReleaseAge-20261003`。
|
|
36
|
+
- 重跑 user 原命令:`Packages: +8 -95`,`Done in 4.8s`,pin 落到 `0.2.5-b`。
|
|
37
|
+
- 装机核查:`version 0.2.5-b` / `deps: None, optional: None` / `lib/kernel-bridge.py` 在位 /
|
|
38
|
+
树里无 `zeromq` / lockfile integrity `sha512-M93FoCq…BYYrHQ==`(与 registry 发布物、与 dev3 拉到的**同一份**)。
|
|
39
|
+
|
|
40
|
+
## 三、影响面与建议
|
|
41
|
+
|
|
42
|
+
- **任何"发布后立刻装"的 profile 都会撞这道门**,而且拦的往往是**别的**插件条目(本例是 super-dsh)。
|
|
43
|
+
当前 prod profile 的 `minimumReleaseAgeExclude` 三条全是无效配置(留着无害,但别再依赖它)。
|
|
44
|
+
- 两条可行路线:① profile 级 `minimumReleaseAge: 0`(本次采用,最省事,代价是该 profile 放弃 24h 冷却);
|
|
45
|
+
② 等服务窗口(super-dsh@0.1.9 → 2026-10-03T07:45Z / 15:45 HKT 自然解锁)——但装完 better-dsh@0.2.5-b 后,
|
|
46
|
+
它自己又变成"未满 24h 条目",后续任何 pnpm 操作会**再撞一次**,所以路线 ② 只是把窗口推后。
|
|
47
|
+
- `dsh plugin add` 输出里的 `dshmarket@1.40.0 is incompatible with dsh 0.2.0-rc.2`(peer 不符)是**既有**状态
|
|
48
|
+
(untouched 分支:保留安装、启动时 deny,需 `dsh plugin allow-version` 豁免),与本次改动无关。
|
|
49
|
+
|
|
50
|
+
## 四、未做
|
|
51
|
+
|
|
52
|
+
- 未重启 `dsh.service`:prod 运行中的 daemon 仍持有 0.2.5-a 的代码,激活需重启(重启会中断当前 GUI 会话;
|
|
53
|
+
session 数据在盘上,刷新即回)。
|
|
54
|
+
- 未提交 AGENTS.md 订正与本报(git 侧待 user 指示)。
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
# `remote` 工具(BYO-PTY label 重构)第一人称实测报告
|
|
2
|
+
|
|
3
|
+
- **日期**: 2026-10-03(矩阵 18:37–18:52 +08:00,UTC 10:37–10:52)
|
|
4
|
+
- **被测对象**: `better-dsh` 的 `remote` 工具(`src/remote/*`,11 模块)
|
|
5
|
+
- **代码身份**: 工作树 `better-dsh` @ HEAD `5aa48ea`(release 0.2.5-b)+ **未提交的 remote 重构改动**(6 文件,+296/−47:`driver.ts` / `pty-session.ts` / `status.ts` / `tool.ts` + 两个 spec)
|
|
6
|
+
- **实例**: Dev/Test 1 源码级 4999 rig(`.test/home/compat`,better-dsh 以 tarball 装入 profile);**本 agent 自己的 live session**
|
|
7
|
+
- **第一人称载体**: 本 session 直接派发 `remote` 工具,共 **60 处**工具调用记录(原生 `tool/call`+`tool/result`)
|
|
8
|
+
- **对照**: `docs/50_test-reports/2026-09-23-remote-framework实测报告.md`(18 case @ `c696fca`)、`…-第一人称复测报告.md`(@ `ac8720a`)
|
|
9
|
+
- **prod(3080)未触碰**;未改任何源码/构建产物;未重启 4999
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 一、被测代码身份(先证「所测即所构」)
|
|
14
|
+
|
|
15
|
+
| 锚点 | 值 |
|
|
16
|
+
|---|---|
|
|
17
|
+
| 构建产物 | `better-dsh/lib/remote/plugin.js`(18:28:44) |
|
|
18
|
+
| rig 装入物 | `.test/home/compat/profiles/web/node_modules/better-dsh/lib/remote/plugin.js`(18:29:06) |
|
|
19
|
+
| **md5(两者相同)** | `b9669d1bf34a4e975e2e55a38394a079` |
|
|
20
|
+
| 运行面证据 | 本 session 的 `remote` tool description 已含 `pty:<label>` / `[E_LABEL_CONFLICT]` / `[E_NO_SESSION]` 新文案;未提交新面活体生效 |
|
|
21
|
+
| 单测 | `npx vitest run test/remote/` → **11 files / 89 tests 全过**(原 78/78,本轮改动 +11) |
|
|
22
|
+
| 类型 | `npx tsc --noEmit` → **exit 0**(旧报告记录的 14 条基线错已归零) |
|
|
23
|
+
|
|
24
|
+
本次改动把 BYO-PTY 从「`{spawn, cmd}` 独立入口 + 池键 `s:<spawn原文>`」改为 **`{target:"pty:<label>", spawn?, cmd}`:label 自选、即复用入口;spawn 降级为「仅创建时出席」的伴生参数**,并新增池内活 label 作为裸名候选表末位、`pty:` 专用状态行、roster `pty:` 渲染与一族错误码。
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 二、结论速览
|
|
29
|
+
|
|
30
|
+
| 面 | 结果 |
|
|
31
|
+
|---|---|
|
|
32
|
+
| 三传输基线(ssh / docker / incus) | **全过**(oneshot 退出码、stderr 逐字、cwd/环境持久、超时打断、多行单帧、伪 marker 免疫、stdin、输出帽) |
|
|
33
|
+
| BYO-PTY 新面(建/复用/同源提示/冲突/no-session/裸名末位候选/mode 锁/标签字符集/状态行/roster) | **全过**(20+ 项,见 §四.D) |
|
|
34
|
+
| 路由优先级(ssh → docker → incus → 池内 pty → ssh 兜底) | **全过**,含 `corti`/`ctr-1` 撞名实测 |
|
|
35
|
+
| 参数守卫(9 个错误码) | **全过**,全部 fail-loud、零静默降级、提示可执行 |
|
|
36
|
+
| 失败路径观测 | **3 条记录在案**(§五 F1–F3),其中 F2 为真实 UX 缺陷 |
|
|
37
|
+
| 输出帽 | oneshot 30k 尾窗 ✅、pty 30k 尾窗 ✅(4M 环仅单测) |
|
|
38
|
+
| 审计 | 原生 `tool/call`+`tool/result` 60 条,无自定义事件(P17 决议保持一致) |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 三、方法与边界
|
|
43
|
+
|
|
44
|
+
- 全部 45 项检查均由本 agent 在**真实运行时**里以 `remote` 工具派发;无 headless 代跑、无桩。
|
|
45
|
+
- 逐条取证:文本取 verbatim 关键片段,退出码/时长/cwd/`session`/`truncated` 取自工具返回的结构化字段。
|
|
46
|
+
- 未覆盖(诚实边界):idle TTL **600s 实时收割**(单测覆盖)、4M pty 环形帽(单测 + 旧报告 live)、`ws://`(spec 远期)、ssh→docker 嵌套穿透(dev4 无 docker);`E_SESSION_START` 取 30s init 超时真路径(已实测)。
|
|
47
|
+
- 现场只做了只读型远程命令(`echo` / `hostname` / `uname` / `cat /etc/os-release` / `cd` / `export` / `kill -9 $$` 自杀 / `head -c`);未改任何远端文件。
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 四、矩阵逐条(verbatim)
|
|
52
|
+
|
|
53
|
+
### A. roster 与状态探测
|
|
54
|
+
|
|
55
|
+
| # | 调用 | 结果 | 判定 |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| A1 | `{}` | 4 行:`ssh hosts (~/.ssh/config): github.com, dev2, dev3, mac, dev1, 137.131.54.174, dev4, ctr-1` / `docker containers: corti (running), jellyfin (running)` / `incus containers: ctr-1 (RUNNING)` / `live pty sessions: …` | ✅ |
|
|
58
|
+
| A2 | `{dev4}` | `probe: reachable in 2666ms (just now, on demand)` + `session: none — dials on first exec` | ✅ |
|
|
59
|
+
| A3 | `{incus:ctr-1}` | `probe: container RUNNING (just now, on demand)` | ✅ |
|
|
60
|
+
| A4 | `{docker:corti}` | `probe: container running (just now, on demand)` | ✅ |
|
|
61
|
+
| A5 | `{192.0.2.1}`(TEST-NET 黑洞) | `probe: unreachable — ssh: connect to host 192.0.2.1 port 22: Connection timed out`;词汇表全程无 `offline` | ✅ |
|
|
62
|
+
|
|
63
|
+
### B. oneshot(ssh / docker / incus 三传输)
|
|
64
|
+
|
|
65
|
+
| # | 调用 | 结果 | 判定 |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| B1 | dev4 `echo "A1 $(whoami)@$(hostname)"; git --version; python3 -V` | `A1 u1@dev4` / `git version 2.43.0` / `Python 3.12.3`,`exit 0 · 2.4s` | ✅ |
|
|
68
|
+
| B2 | dev4 `echo A2-start; exit 42; echo unreachable` | 输出 `A2-start`,**`exit 42`**(二进制退出码零扫描) | ✅ |
|
|
69
|
+
| B3 | docker:corti | `A3 f698ca647029` / `Debian GNU/Linux 13 (trixie)`,`0.1s` | ✅ |
|
|
70
|
+
| B4 | incus:ctr-1 | `A4 ctr-1` / `Ubuntu 26.04 LTS` / `7.0.0-34-generic` | ✅ |
|
|
71
|
+
| B5 | ssh 不存在的 host | `exit 255`,`[stderr] ssh: Could not resolve hostname no-such-host-xyz: Temporary failure in name resolution` | ✅ 逐字 |
|
|
72
|
+
| B6 | docker 不存在的容器 | `exit 1`,`[stderr] Error response from daemon: No such container: no-such-ctr` | ✅ 逐字 |
|
|
73
|
+
| B7 | incus 不存在的容器 | `exit 1`,`[stderr] Error: Failed to fetch instance "no-such-ctr" in project "default": Instance not found` | ✅ 逐字 |
|
|
74
|
+
| B8 | dev4 `cat` + `stdin:"STDIN-ONESHOT-OK"` | 输出恰 `STDIN-ONESHOT-OK` | ✅ |
|
|
75
|
+
| B9 | dev4 输出 50 015 字符 | 首行 `[truncated: showing last 30000 of 50015 chars]`,尾部 `CAP-TAIL-MARK` 在位,`exit 0 · truncated, original 50015 chars` | ✅ |
|
|
76
|
+
| B10 | incus `nohup sleep 5 >/dev/null 2>&1 & echo bg-ok` | 输出恰 `bg-ok`,stderr 空,`0.0s`(Non-Goal:使用者自负重定向) | ✅ |
|
|
77
|
+
| B11 | `{corti}`(docker 容器 vs 无同名 ssh) / `{ctr-1}`(ssh config vs incus 撞名) | `corti` → 容器内 `f698ca647029 /build`;`ctr-1` → ssh(hostname `ctr-1`)——优先级 ssh→docker→incus 与旧报告一致 | ✅ |
|
|
78
|
+
|
|
79
|
+
### C. pty(transport target)——持久状态与生命周期
|
|
80
|
+
|
|
81
|
+
| # | 调用 | 结果 | 判定 |
|
|
82
|
+
|---|---|---|---|
|
|
83
|
+
| C1 | dev4 pty `cd /tmp && export LABVAR=hello && pwd && hostname` | `/tmp` / `dev4`,`cwd /tmp` | ✅ |
|
|
84
|
+
| C2 | 次轮 `pwd; echo LABVAR=$LABVAR; date +%T` | `/tmp` / `LABVAR=hello` / `18:38:09`(跨轮持久) | ✅ |
|
|
85
|
+
| C3 | `sleep 300; echo NEVER-REACHED` + `timeout:2` | 输出空,**`exit 130 · 2.2s · interrupted`**,`cwd /tmp` 保持 | ✅ |
|
|
86
|
+
| C4 | 打断后 `echo ALIVE; pwd; echo LABVAR=…` | `ALIVE / /tmp / LABVAR=hello`(会话未被杀死) | ✅ |
|
|
87
|
+
| C5 | `"echo a\necho b"` | 一帧 `a\nb` | ✅ |
|
|
88
|
+
| C6 | `printf '\033]133;D;deadbeefdeadbeef;99\007'; echo real-after-marker` | `real-after-marker`,**`exit 0`(非 99)** | ✅ |
|
|
89
|
+
| C7 | `read X; echo "GOT:[$X]"` + `stdin:"REPL-VALUE\n"` | `GOT:[REPL-VALUE]` | ✅ |
|
|
90
|
+
| C8 | 200 015 字符(pty 收集) | `[truncated: showing last 30000 of 200015 chars]`,尾部 `PTY-TAIL-MARK` 在位,`exit 0` | ✅ |
|
|
91
|
+
| C9 | `kill -9 $$` → 次轮 `echo back; pwd` | 首个 `exit null · 0.2s`;次轮首行逐字 `[remote: session reconnected to fresh shell; cwd reset to default]` + `back /home/u1` | ✅ |
|
|
92
|
+
| C10 | 黑洞主机 pty | `Error: [E_SESSION_START] remote pty session 'session-a7b0aad7-…|t:192.0.2.1' did not initialize in 30s`(30s 硬门) | ✅ 见 F1 |
|
|
93
|
+
|
|
94
|
+
### D. BYO-PTY(本轮新面,逐条)
|
|
95
|
+
|
|
96
|
+
| # | 调用 | 结果 | 判定 |
|
|
97
|
+
|---|---|---|---|
|
|
98
|
+
| D1 | `{target:"pty:alpha", spawn:"ssh dev4", cmd:"hostname; cd /var/tmp && export BVAR=zeta && pwd"}` | `dev4 / /var/tmp`,结构字段 `cwd=/var/tmp · pty:alpha`(**新:返回值带 session label**) | ✅ |
|
|
99
|
+
| D2 | `{target:"pty:alpha", cmd:"pwd; echo BVAR=$BVAR; whoami"}`(**无 spawn**) | `/var/tmp / BVAR=zeta / u1`(label 即复用入口) | ✅ |
|
|
100
|
+
| D3 | 同 label 再给**同源** spawn | 首行引导:`[remote: pty:alpha already runs that exact command and is persistent — reuse it with { target: "pty:alpha", cmd: "…" }; spawn is only needed to create.]`,命令照跑 | ✅ |
|
|
101
|
+
| D4 | 同 label 给**异源** spawn(`ssh dev3`)+ `cmd:"echo SHOULD-NOT-RUN"` | `Error: [E_LABEL_CONFLICT] … nothing was run.` + `existing spawn: "ssh dev4"` / `given spawn: "ssh dev3"` + 两条修复路径;**命令未执行** | ✅ |
|
|
102
|
+
| D5 | `{target:"pty:beta", spawn:"docker exec -it corti bash", …}` | 容器内 `f698ca647029` / `Debian 13`,`cwd /root` | ✅ |
|
|
103
|
+
| D6 | pty:beta `kill -9 $$` → 次轮 | `exit null` → 次轮 `[remote: session reconnected…]` + 容器 hostname(**按原 spawn 自愈重连**) | ✅ |
|
|
104
|
+
| D7 | 标签字符集正例 `pty:lab.2_x` | 创建成功,`session: idle 5s (connected)` | ✅ |
|
|
105
|
+
| D8 | `{target:"pty:corti", spawn:"docker exec -it corti bash"}` 存在时调 `{target:"corti", cmd…}` | 命中 **docker 容器**(容器内 `/build`),不命中活 pty 会话——「撞名靠前者胜」 | ✅ 见 F3 |
|
|
106
|
+
| D9 | `{target:"alpha", cmd:"echo BARE-HIT; pwd; echo BVAR=$BVAR"}`(裸名,无 mode) | `BARE-HIT / /var/tmp / BVAR=zeta`,结构字段 `pty:alpha`(**候选表末位命中**) | ✅ |
|
|
107
|
+
| D10 | `{target:"alpha", mode:"oneshot", cmd:…}` | `exit 255 · ssh: Could not resolve hostname alpha…`——显式 oneshot **不吃** pty 候选,旧行为逐位保留 | ✅ |
|
|
108
|
+
| D11 | `{target:"pty:probe-none"}` / `{target:"pty:alpha"}` / `{target:"pty:deadspawn"}` | `session: none — no live PTY under this label`(**不会自建**,与 transport 的 "dials on first exec" 明确区分)/ `idle 0s (connected)` / `died — next exec cold-starts a fresh shell` | ✅ |
|
|
109
|
+
| D12 | `{}`(池内有会话时) | `live pty sessions: dev4 [ready, idle 4s], pty:alpha [ready, idle 0s], pty:beta [ready, idle 4s]`——transport 会话裸名、BYO 会话 `pty:` 前缀,池内部标记(`sessionKey|p:`)零泄漏 | ✅ |
|
|
110
|
+
|
|
111
|
+
### E. 参数守卫(fail-loud)
|
|
112
|
+
|
|
113
|
+
| # | 输入 | 输出(verbatim 要点) |
|
|
114
|
+
|---|---|---|
|
|
115
|
+
| E1 | `pty:bad label` / `pty:`(空标签) | `[E_BAD_LABEL] … must match ^[A-Za-z0-9][A-Za-z0-9._-]*$ (got "bad label"/"")` |
|
|
116
|
+
| E2 | `pty:alpha` + `mode:"oneshot"` | `[E_BAD_MODE] remote: "pty:alpha" is a PTY selector — mode is locked to 'pty'` |
|
|
117
|
+
| E3 | `pty:ghost`(从未创建、无 spawn) | `[E_NO_SESSION] … it is reaped after the idle TTL (600s)` + `Create it: …` |
|
|
118
|
+
| E4 | `dev4` + `spawn` | `[E_PARAMS] remote: spawn requires a "pty:<label>" target …` |
|
|
119
|
+
| E5 | 仅 `{spawn, cmd}`(无 target) | 同上 E_PARAMS(spawn 不能独立成形) |
|
|
120
|
+
| E6 | `{target:"dev4", stdin:"…"}`(无 cmd) | `[E_STDIN_WITHOUT_CMD] remote: stdin requires cmd — status probes take no input` |
|
|
121
|
+
| E7 | `timeout:0` | `[E_BAD_TIMEOUT] … must be a positive number of seconds (got 0)` |
|
|
122
|
+
| E8 | `mode:"bogus"` | 宿主 schema 先拦:`Error: invalid arguments: "mode" must be one of ["oneshot","pty"]` |
|
|
123
|
+
| E9 | `pty:deadspawn` + spawn 坏命令(`ssh … no-such-host-xyz`) | `Error: [E_SESSION_DIED] remote pty session 'session-a7b0aad7-…\|p:deadspawn' died before initializing` |
|
|
124
|
+
| E10 | 死标签**复用**(无 spawn)/ 换 spawn | 复用 → 同 E_SESSION_DIED(重跑同一坏 spawn);换 spawn → E_LABEL_CONFLICT —— **标签被锁死**(F2) |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 五、问题与观察(按严重度排序)
|
|
129
|
+
|
|
130
|
+
### F1(中)`E_SESSION_DIED` / `E_SESSION_START` 泄漏池内部键,且丢掉原生传输错误
|
|
131
|
+
|
|
132
|
+
实测两条:
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
Error: [E_SESSION_DIED] remote pty session 'session-a7b0aad7-b3fc-4bff-949d-d12d4ab9d2b4|p:deadspawn' died before initializing
|
|
136
|
+
Error: [E_SESSION_START] remote pty session 'session-a7b0aad7-b3fc-4bff-949d-d12d4ab9d2b4|t:192.0.2.1' did not initialize in 30s
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
- 直接暴露内部池键(agent session id + `|p:` / `|t:` 内部标记 + pty label 或 target)。同一份代码在 roster 渲染处专门做了「池 key 内部标记剥离」(D12 实测),此处漏做——模型面两条规则不一致。
|
|
140
|
+
- 两条错误都**没有** `; transport stderr tail: …` 尾注(`doStart()` 里该分支存在),因为 BYO/ssh 的传输错误经 pty 从 `script`/`sshd` 走 **stdout**,而 `diag` 只收子进程 stderr ⇒ 原生原因(`Could not resolve hostname` / `Connection timed out`)在错误面消失。与「Native transport errors pass through verbatim」的对外承诺相邻面不一致:oneshot 逐字透传(B5–B7 实测),pty 初始化失败只给一个内部键。
|
|
141
|
+
- 建议:错误面统一走 `renderXXX` 的模型面形态(`pty:deadspawn — …`),并把 init 期内 pty 输出尾部也纳入 `diag`(或明确注明「无原生细节」)。
|
|
142
|
+
|
|
143
|
+
### F2(中)一次坏的 spawn 会把 label **锁死**,无自救入口
|
|
144
|
+
|
|
145
|
+
E9→E10 实测链条:
|
|
146
|
+
|
|
147
|
+
1. `{target:"pty:deadspawn", spawn:"ssh … no-such-host-xyz", cmd:…}` → E_SESSION_DIED;
|
|
148
|
+
2. 再复用(不给 spawn)→ **同一条 E_SESSION_DIED**(dispatch 对 `state==='dead'` 走 `start()`,重跑**冻结的**首建 argv);
|
|
149
|
+
3. 改给可用 spawn → **E_LABEL_CONFLICT**(origin 不同即拒),且提示 `To reuse it: … (drop spawn)` 对死会话是**无效建议**。
|
|
150
|
+
|
|
151
|
+
代码面进一步:`markDead()` 会 `clearIdleTimer()`,而 idle timer 仅在 `onFrame`(初始化成功)里 `resetIdleTimer()` —— **died-before-init 的会话没有任何收割定时器**,`PtyPool.disposeAll/onDead` 也不会触发,`getOrCreate` 只替换 `disposed` 态。⇒ 该池项在**进程生命周期内**留存,label 事实上永久不可复用(重启 rig 或换 label 是唯二出路)。单测只有「ready 后 idle TTL 收割」一条(`idle TTL disposes the session and drops it from the pool`),无 died-before-init 收割用例。
|
|
152
|
+
(诚实边界:600s 实时收割未跑;「永久」为代码推论 + 观察到的「复用仍死、换源被拒」。)
|
|
153
|
+
|
|
154
|
+
建议:a) `markDead()` 对 **init 期死亡**的会话安排一次 dispose/出池(或 `getOrCreate` 把 `dead` 且 `origin!==undefined` 的 BYO 项视同可替换);b) E_LABEL_CONFLICT 提示分叉:`existing.state==='dead'` 时改说「该 label 的首建命令已失败,请换 label 或先释放」。
|
|
155
|
+
|
|
156
|
+
### F3(低)裸名会被同名实体遮蔽,`pty:` 是唯一显式入口
|
|
157
|
+
|
|
158
|
+
`pty:corti` 活会话存在时,`{target:"corti"}` 仍命中 docker 容器(D8)——这与 description 的「on a collision the earlier source wins」完全一致,属**文档化行为**,不是 bug;但模型若用裸名做「按名找人」很容易把手伸进容器/主机而非自己的 BYO 会话。D9/D10 证明「裸名命中 pty」仅在三个 transport 都不撞名时成立。建议在 description 的裸名顺序里把这一后果写得更醒目(或让 `pty:` 成为文档首推写法)。
|
|
159
|
+
|
|
160
|
+
### F4(信息)轮次观察(不阻塞)
|
|
161
|
+
|
|
162
|
+
- 旧报告 §六.1「oneshot 等 ssh 会话通道」本轮未复测(B10 用 incus 0.0s 返回);该披露措辞仍开放。
|
|
163
|
+
- `E_SESSION_START` 的 30s 硬门在黑洞主机上如期触发(C10),无挂死、无残留(`{192.0.2.1}` 后续 status 报 `session: died`,语义自洽)。
|
|
164
|
+
- `pty` 面 stdout/stderr 合流(spec §4.2 诚实代价)保持不变。
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 六、单测 / 类型基线(工作树 @ 5aa48ea + 未提交改动)
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
npx vitest run test/remote/
|
|
172
|
+
Test Files 11 passed (11)
|
|
173
|
+
Tests 89 passed (89) Duration 24.55s
|
|
174
|
+
npx tsc --noEmit → exit 0(零错误)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
旧报告基线为「78/78(11 spec)+ tsc 14 既有错」;本轮改动新增 11 个用例(`driver.spec` +`tool.spec` 为主),类型面已归零。
|
|
178
|
+
|
|
179
|
+
## 七、审计与清理
|
|
180
|
+
|
|
181
|
+
- **审计**:本 session 日志 `session-a7b0aad7-b3fc-4bff-949d-d12d4ab9d2b4/session.v4.jsonl.zstd` 含 **60** 处 `"name":"remote"` 记录(原生 `tool/call`+`tool/result`);插件未注册任何自定义 session 事件(与 P17 决议一致)。
|
|
182
|
+
- **清理**:未改源码/产物、未重启 rig、未动 prod;远端只执行只读命令,无残留文件。内存池会话(`dev4` / `pty:alpha` / `pty:beta` / `pty:lab.2_x` / `pty:deadspawn` / `192.0.2.1`)留在本 agent 进程池内——ready 者由 600s idle TTL 收割,died-before-init 者按 F2 留存;工具面目前无显式 dispose 入口(可归入 F2 的修复面)。
|
|
183
|
+
|
|
184
|
+
## 八、遗留与后续建议
|
|
185
|
+
|
|
186
|
+
1. **F2 优先**:给 died-before-init 的 BYO 池项以出池路径(收割或可替换),并让 E_LABEL_CONFLICT 对死会话给有效建议。
|
|
187
|
+
2. **F1**:E_SESSION_* 错误面去内部键 + 补原生原因(或明示缺失)。
|
|
188
|
+
3. 仍未覆盖:600s TTL 真机收割(单测覆盖)、4M pty 环形帽真机(单测 + 旧报告 live)、`ws://`(远期)、ssh→docker 嵌套穿透。
|
|
189
|
+
4. 发布纪律:本轮为**未提交工作树**的第一人称实测,按 AGENTS.md §〇,这**不构成** npm publish 前置条件;若要把该重构发包,需先固化提交/版本号,再由 user 明确放行。
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 九、复核轮 v2(2026-10-03 19:00–19:06 +08:00)— `byop:` 改名 + F1/F2 修复后重测
|
|
194
|
+
|
|
195
|
+
> 阅读提示:§一–§八 记的是**改名前的构建**(选择器写作 `pty:`);本轮该选择器已改名为 `byop:`,其余面基本同构。
|
|
196
|
+
|
|
197
|
+
### 9.1 本轮被测身份
|
|
198
|
+
|
|
199
|
+
| 锚点 | 值 |
|
|
200
|
+
|---|---|
|
|
201
|
+
| 代码 | `better-dsh` @ HEAD `5aa48ea`(0.2.5-b)+ **更新后的未提交改动**(7 文件,+357/−55:`driver` / `pty-session` / `status` / `tool` + 2 spec,另 root `AGENTS.md`) |
|
|
202
|
+
| 规格 | 新增 **`docs/specs/remote-pty-label/spec.md`**(**126 行,9 条 Requirement + 17 个 Scenario**)——本轮首次有正式 spec 可对照。_(计数订正:§九 当时为 118 行 / 8 条 / 16 个 Scenario,原稿「14」为笔误;§十 的「roster 活性面按 agent session 作用域」再增 1 条 Requirement + 1 个 Scenario。)_ |
|
|
203
|
+
| 构建产物 | `better-dsh/lib/remote/plugin.js` 18:56:50,md5 **`ca2924024a724b508ca0d37bac9b81c6`** |
|
|
204
|
+
| rig 装入物 | profile 内同路径文件 18:57:11,**md5 相同**(所测即所构) |
|
|
205
|
+
| 实例 | rig 于 19:00 前后重启(`.scratch/dsh-4999-test123.log` 第三个 boot token `XDt0ul…`);本 session 继续、池从零起 |
|
|
206
|
+
|
|
207
|
+
**本轮改动点(对着 §八 建议看)**:
|
|
208
|
+
|
|
209
|
+
1. **选择器改名 `pty:` → `byop:`**,`byop:<label>` 成为 BYO-PTY 唯一入口,`spawn` 降级为「仅创建时出席」的伴生参数;
|
|
210
|
+
2. 新增 **`displayKey()`**(`pty-session.ts`)为「池键 → 模型面名字」的**唯一**映射,roster 与错误面共用;
|
|
211
|
+
3. `PtySession` 增 `everReady`;**init 期死亡(从未 ready)即 `dispose()` 出池**,ready 过的死亡仍走 reconnect;
|
|
212
|
+
4. description 补一句「A spawn that fails to come up leaves nothing behind — the label stays free」;
|
|
213
|
+
5. 单测 `driver.spec` +`tool.spec` 扩到 92 例。
|
|
214
|
+
|
|
215
|
+
### 9.2 两条旧发现复核
|
|
216
|
+
|
|
217
|
+
| 旧编号 | 结论 | 本轮 verbatim 证据 |
|
|
218
|
+
|---|---|---|
|
|
219
|
+
| **F1**(E_SESSION_* 泄漏池内部键) | **键泄漏已修**;(native cause 仍缺 → 见下) | `Error: [E_SESSION_DIED] remote pty session 'byop:deadspawn' died before initializing` · `Error: [E_SESSION_START] remote pty session '192.0.2.1' did not initialize in 30s`——只出现模型面名字,`session-<uuid>` 与 `\|p:` / `\|t:` **零出现** |
|
|
220
|
+
| **F1 残留**(原生原因丢失) | **未修,降为 low** | 两条错误均**无** `; transport stderr tail:` 尾注(init 期 pty 报文走 stdout,`diag` 只收子进程 stderr);`Native transport errors pass through verbatim` 在 pty 初始化失败面仍不成立 |
|
|
221
|
+
| **F2**(坏 spawn 锁死 label) | **全修** | ① 失败后 `{byop:deadspawn}` status = `session: none — no live PTY under this label`(**已出池**,不再是 `died`);② 无 spawn 复用 = `[E_NO_SESSION]`(不再重跑冻结 argv);③ 换 spawn 新建 = **成功**(`REPURPOSE-OK / dev4 / /home/u1 · byop:deadspawn`),无 `[E_LABEL_CONFLICT]` |
|
|
222
|
+
| **F3**(裸名被同名实体遮蔽) | 保持文档化行为 | 活着的 `byop:corti` 在池内时,`{corti}` 仍命中 docker 容器(`SHADOW-CORTI / f698ca647029 / /build`)——`byop:` 是唯一显式入口 |
|
|
223
|
+
| ready-death 半支(spec「已 ready 的会话死亡仍可重连」) | ✅ | `byop:beta` `kill -9 $$` → `exit null`;status 仍 `session: died — next exec cold-starts a fresh shell`(**留池**);下次调用 `[remote: session reconnected to fresh shell; cwd reset to default]` + 容器 hostname |
|
|
224
|
+
|
|
225
|
+
### 9.3 新发现 F4(low–medium):roster 不按 agent 作用域过滤
|
|
226
|
+
|
|
227
|
+
双 agent 实测(本 agent 派一个子 agent 做探针,同 daemon):
|
|
228
|
+
|
|
229
|
+
- 子 agent 调 `{target:"byop:alpha"}`(本 agent 的活 label)→ `[E_NO_SESSION]`;**寻址层隔离成立** ✅
|
|
230
|
+
- 子 agent 建 `{target:"byop:shared", spawn:"ssh dev4"}` → 正常创建(其自己的命名空间)
|
|
231
|
+
- 本 agent 调 `{target:"byop:shared"}` → `[E_NO_SESSION]`(反向也隔离)✅
|
|
232
|
+
- **但**本 agent 的 `{}` roster 里出现了它:
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
live pty sessions: byop:deadspawn [ready, …], byop:beta [ready, …], dev4 […], byop:alpha […],
|
|
236
|
+
byop:lab.2_x […], byop:corti […], byop:shared [ready, idle 5s]
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
即:roster 面 `this.pool.list()` 不带 sessionKey 过滤,于是**广告了调用方无法使用的 label**(照着用必得 `[E_NO_SESSION]`),并把他 agent 的 label 名暴露给本 agent。spec 只固定了「池键按 agent 隔离」与「B 拿 E_NO_SESSION」,**未写 roster 作用域**——属 spec 空白 + 面间不一致。建议:roster 按 `callCtx.sessionKey` 过滤(或在 spec 里显式承认全局可见)。
|
|
240
|
+
|
|
241
|
+
### 9.4 矩阵 v2(重跑 43 项)
|
|
242
|
+
|
|
243
|
+
| 组 | 项 | 结果 | 备注 |
|
|
244
|
+
|---|---|---|---|
|
|
245
|
+
| A roster / status(roster、byop:probe-none、dev4、incus、docker、192.0.2.1) | 6 | ✅ | `byop:` 状态行 `session: none — no live PTY under this label` |
|
|
246
|
+
| B oneshot(ssh/docker/incus、`exit 42`、stdin、ssh/docker/incus 三错误) | 8 | ✅ | 与 §四.B 同名用例逐条复现,stderr 仍逐字 |
|
|
247
|
+
| C pty transport(cwd/env 持久、`timeout:2` 打断 `exit 130 · interrupted`、打断后存活、多行单帧、伪 OSC marker `exit 0`、pty stdin、reconnect) | 9 | ✅ | |
|
|
248
|
+
| D BYO-PTY(建、无 spawn 复用、同源 spawn notice、异源 `E_LABEL_CONFLICT`、docker spawn、自愈重连、`byop:lab.2_x` 字符集、status、roster 渲染、裸名 `alpha`/`beta` 末位命中) | 10 | ✅ | 结果字段一律 `· byop:<label>` |
|
|
249
|
+
| E 守卫(`E_BAD_LABEL`×2、`E_BAD_MODE`、`E_NO_SESSION`、`E_PARAMS`×2、`E_STDIN_WITHOUT_CMD`、`E_BAD_TIMEOUT`、schema 拒 `mode:"bogus"`) | 9 | ✅ | 全部 fail-loud,提示形状均为 `byop:<label>` |
|
|
250
|
+
| F 路由/撞名(`alpha`+`mode:oneshot` 逃逸、`corti`→docker、`ctr-1`→ssh) | 3 | ✅ | 优先级 ssh→docker→incus→池内 pty→ssh 兜底一位不挪 |
|
|
251
|
+
| G 双 agent 隔离 | 2 | ⚠️ | 寻址 ✅ / roster ❌(F4) |
|
|
252
|
+
| **未重跑** | 3 | — | oneshot 30k 帽、pty 30k 帽、4M 环形帽:`oneshot.ts` / `tailWindow` / `nonce-framing.ts` 本轮未改,§四 的 live 证据仍有效 |
|
|
253
|
+
|
|
254
|
+
**改名破坏性观察**:旧写法的 `{target:"pty:alpha", spawn:…}` 现在**不再**是 PTY 选择器——`pty:alpha` 落裸名解析 → ssh 兜底,且 `spawn` 与它同席时报 `[E_PARAMS] spawn requires a "byop:<label>" target`。属未发布 API 的干净改名(无兼容包袱),但 prompt / 文档 / 记忆里所有 `pty:` 字样需同步。
|
|
255
|
+
|
|
256
|
+
### 9.5 单测 / 类型(v2)
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
npx vitest run test/remote/ → Test Files 11 passed (11) · Tests 92 passed (92)
|
|
260
|
+
npx tsc --noEmit → exit 0
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
较 v1 的 89 例 +3(覆盖 F1 `displayKey` 与 F2 出池/重建)。
|
|
264
|
+
|
|
265
|
+
### 9.6 附 A:`remote` 工具的 JSON Schema(权威版,由 `defineTool` 实构)
|
|
266
|
+
|
|
267
|
+
生成方式:以 stub driver 调 `createRemoteTool()`,序列化 `ToolDefinition.parameters`(编译后的输入 schema)与 `.output.schema`(字面声明)——`npx tsx .scratch/remote-schema-dump.ts`。
|
|
268
|
+
|
|
269
|
+
```json
|
|
270
|
+
{
|
|
271
|
+
"name": "remote",
|
|
272
|
+
"parameters": {
|
|
273
|
+
"type": "object",
|
|
274
|
+
"properties": {
|
|
275
|
+
"target": { "type": "string", "description": "Single entry point. Bare name / IP / domain matches in order: ssh config, then docker, then incus, then a live pty label (a collision goes to the earlier source). \"byop:<label>\" / \"docker:<name>\" / \"incus:<name>\" / \"ssh:<name>\" force a channel. For \"byop:<label>\", pass spawn the first time to create it and omit spawn afterwards to reuse it. Omit cmd → status probe." },
|
|
276
|
+
"spawn": { "type": "string", "description": "Only valid together with a \"byop:<label>\" target, and required the first time that label is created: …" },
|
|
277
|
+
"cmd": { "type": "string", "description": "One raw shell string parsed by the remote bash (multi-line = one compound; exit = last command's). Omit with target → status probe; omit everything → roster." },
|
|
278
|
+
"mode": { "type": "string", "enum": ["oneshot", "pty"], "description": "… A \"byop:<label>\" target locks mode to 'pty'." },
|
|
279
|
+
"stdin": { "type": "string", "description": "Input fed to the command. oneshot: piped to stdin. pty: written right after the command line (REPL-style) — only helps commands that read stdin there. Requires cmd." },
|
|
280
|
+
"timeout": { "type": "number", "description": "Per-command timeout in seconds (default 120, row-configurable). pty: Ctrl-C first, then kill; an interrupt does not kill the session." }
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"output": {
|
|
284
|
+
"type": "object",
|
|
285
|
+
"additionalProperties": false,
|
|
286
|
+
"required": ["kind", "text"],
|
|
287
|
+
"properties": {
|
|
288
|
+
"kind": { "type": "string", "enum": ["exec", "status", "roster"] },
|
|
289
|
+
"text": { "type": "string" },
|
|
290
|
+
"exit": { "oneOf": [{ "type": "integer" }, { "type": "null" }] },
|
|
291
|
+
"durationMs": { "type": "integer" },
|
|
292
|
+
"cwd": { "type": "string" },
|
|
293
|
+
"stderr": { "type": "string" },
|
|
294
|
+
"timedOut": { "type": "boolean" },
|
|
295
|
+
"reconnected":{ "type": "boolean" },
|
|
296
|
+
"truncated": { "type": "integer" },
|
|
297
|
+
"session": { "type": "string" },
|
|
298
|
+
"notice": { "type": "string" }
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
(输入面的 description 为节省篇幅有截断,`spawn`/`mode` 两条完整原文见 §一 与 §9.1;文档字符串的逐字全文在 `better-dsh/src/remote/tool.ts`。)
|
|
305
|
+
|
|
306
|
+
**schema 面的两个结构性事实**(值得记):
|
|
307
|
+
|
|
308
|
+
1. **输入参数是隐式开放对象**:编译结果只有 `type: "object"` + `properties`,**没有 `required` 数组、也没有 `additionalProperties: false`**。原因是 `remote` 的六个参数确实全部可选(`{}`=roster、`{target}`=status、`{target,cmd}`=oneshot);「哪个组合合法」由 `execute` 内的三闸守卫(`E_PARAMS` / `E_STDIN_WITHOUT_CMD` / `E_BAD_MODE`)在**运行期**表达,schema 只能表达单字段约束(`mode` 的 enum)。
|
|
309
|
+
2. **输出面相反,是封闭且必填的**:`additionalProperties: false` + `required: ["kind", "text"]`——与 `defineTool` 的 `output.schema` 必须显式声明开放性的契约一致(`output` 里每个属性写 `required: true` 就被投影进 `required` 数组)。
|
|
310
|
+
|
|
311
|
+
### 9.7 复核轮结论
|
|
312
|
+
|
|
313
|
+
- **F2 关闭**(出池 + label 自由,两个 spec Scenario 都实测通过);**F1 的键泄漏关闭、native-cause 残留降为 low**;**新记 F4(roster 未按 agent 过滤)**。
|
|
314
|
+
- 43 项重跑全过;92/92 单测;`tsc` 0 错。
|
|
315
|
+
- 与 v1 相同的发布纪律仍然适用:**未提交工作树**,不构成 publish 前置条件。
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## 十、增量复核 v3(2026-10-03 19:17–19:26 +08:00)— **只测改动面**
|
|
320
|
+
|
|
321
|
+
用户裁决:本轮只测有调整的面,不做全量回归。
|
|
322
|
+
|
|
323
|
+
### 10.1 范围声明与基线可及性
|
|
324
|
+
|
|
325
|
+
**不重跑**(附理由,不含糊带过):
|
|
326
|
+
|
|
327
|
+
| 不重跑项 | 理由 |
|
|
328
|
+
|---|---|
|
|
329
|
+
| oneshot 三 transport 矩阵 / `exit 42` / stdin / 原生错误透传 | `oneshot.ts` / `transports.ts` / `target.ts` 本轮零改动(mtime 停在 09-24) |
|
|
330
|
+
| 30k 输出帽(oneshot + pty 两处)、4M pty 环 | oneshot 帽在 `oneshot.ts`;pty 帽与 **4M 环都在 `pty-session.ts`(`OUTPUT_HARD_CAP` L45,采集处 L110/L111)**;帧协议在 `nonce-framing.ts`。本轮三者均未触碰采集/帽子路径(`pty-session.ts` 的改动是 v2 轮的 init 失败出池,与本面无关);v1/v2 活体证据仍有效 |
|
|
331
|
+
| pty 多行 / OSC 免疫 / `exit 130` / 重连 | 同上,本轮无差异被触发 |
|
|
332
|
+
| idle TTL 600s 现场回收 | 仅单测覆盖(§9.5),本轮仍不现场验证 |
|
|
333
|
+
|
|
334
|
+
**基线可及性声明(方法学)**:§9.1 记录的 §九 被测物 `ca292402…` 已在本轮被同路径同版本号覆盖,**无法逐字节 diff**。因此本轮 delta 不靠「两包对差」推出,而由三条独立证据合成:① 源文件 mtime(`driver/roster/tool.ts` 19:17 一批、两个 spec 19:17:48)与工作树 vs `HEAD` 的 diff;② 本轮新增/改写的单测所固定的契约;③ `docs/specs/remote-pty-label/spec.md` 19:18:00 的 Requirement/Scenario。每个 delta 项的「改动前」状态取 §一–§九 已记录的旧行为,逐条对照,不做无法证实的字节级断言。
|
|
335
|
+
|
|
336
|
+
### 10.2 被测身份
|
|
337
|
+
|
|
338
|
+
| 项 | 值 |
|
|
339
|
+
|---|---|
|
|
340
|
+
| 源码树 | `better-dsh` @ `5aa48ea` + 未提交工作树(8 文件 +397/−61,含根 `AGENTS.md` 2 行) |
|
|
341
|
+
| 构建产物 | `better-dsh/lib/remote/plugin.js` 19:18:41,md5 **`ecc5fd44f6ac5753b3edbdd0d0bf4371`** |
|
|
342
|
+
| 交付包 | `.scratch/better-dsh-0.2.5-b+byop.tgz` 19:18:52 → profile 装入 19:18:58,**md5 与构建产物一致** |
|
|
343
|
+
| rig | 4999 于 19:19:01 以该装入物重启(本轮第 4 个 boot token `GeAQIRcl…`),插件池冷启 |
|
|
344
|
+
| 身份证据 | 构建产物与 rig 装入物 **md5 相等**(`ecc5fd44…`),且 unit `ActiveEnterTimestamp=19:19:01` 即加载该装入物的那次 boot。<br>(附注:`{spawn, cmd}`(无 target)返回 `E_PARAMS` 只能区分 HEAD 与 v2+——该组合自引入 label 选择器那一轮起就是 `E_PARAMS`,见 §四.E 行 E5——**不能**区分 v2 与 v3,故不作为本轮身份证据。) |
|
|
345
|
+
|
|
346
|
+
### 10.3 delta 矩阵(26 项,全部第一人称在 4999 活体执行)
|
|
347
|
+
|
|
348
|
+
| # | 调用 | 本轮期望 | 实测 | 结论 |
|
|
349
|
+
|---|---|---|---|---|
|
|
350
|
+
| A1 | `{spawn:"bash", cmd:"echo hi"}`(无 target) | `E_PARAMS`:spawn 降格为修饰符,非独立入口 | 同(报文含 `spawn requires a "byop:<label>" target`) | ✓ 新行为(旧=直接建会话) |
|
|
351
|
+
| A2 | `{target:"dev4", spawn:"bash", cmd}` | `E_PARAMS`:spawn 仅配合 `byop:` | 同 | ✓ |
|
|
352
|
+
| A3 | `{target:"byop:", spawn:"bash", cmd}` | `E_BAD_LABEL` | `…label must match ^[A-Za-z0-9][A-Za-z0-9._-]*$ (got "")` | ✓ |
|
|
353
|
+
| A4 | `{target:"byop:has space", …}` | `E_BAD_LABEL` | 同型(`got "has space"`) | ✓ |
|
|
354
|
+
| A5 | `{target:"byop:lab3", spawn:"bash", cmd, mode:"oneshot"}` | `E_BAD_MODE`:锁 pty | `"byop:lab3" is a PTY selector — mode is locked to 'pty'` | ✓ |
|
|
355
|
+
| B1 | 建 `byop:d1`(spawn `bash`;`cd /tmp`) | 建成,退出行带 `· byop:d1` | `[exit 0 · 0.0s · cwd /tmp · byop:d1]` | ✓ 新 `session` 字段渲染在位 |
|
|
356
|
+
| B2 | 复用 `{target:"byop:d1", cmd}` | env/cwd 存活、无 notice | `live` + `/tmp`,无 notice | ✓ |
|
|
357
|
+
| B3 | 同 label **重复给同一 spawn** | 复用 + `notice` 教学行 + 仍执行 | notice 行「already runs that exact command…」+ `live` | ✓ 新 `notice` 字段 |
|
|
358
|
+
| B4 | 同 label 给**不同** spawn(`bash -l`) | `E_LABEL_CONFLICT`,零执行 | 四行冲突报文(existing / given / To reuse / To start new) | ✓ |
|
|
359
|
+
| B4v | B4 之后读 `$MARK3` | 仍 `live`(未被 clobber) | `MARK3=[live]` | ✓ 冲突确实没跑命令 |
|
|
360
|
+
| B5 | 未知 label 复用 | `E_NO_SESSION` + Create it 形态 | 同 | ✓ |
|
|
361
|
+
| B6 | 未知 label status | `byop:never — BYO pty session` + `session: none — no live PTY under this label` | 同 | ✓ 零拨号 |
|
|
362
|
+
| B7 | 活 label status | `session: idle 0s (connected)` | `byop:d1 — BYO pty session` + 同 | ✓ |
|
|
363
|
+
| C1 | 建 `byop:bareX` 后以**裸名** `bareX`(未指定 mode)跑 | 命中候选表末位 PTY:懒复用成立 | `baremark`,退出行 `· byop:bareX` | ✓ 新候选 |
|
|
364
|
+
| C2 | 裸名 `bareX` + `mode:"oneshot"` | 不吃末位候选,走 ssh 兜底原生错误、无 `session` 标记 | `[exit 255 · 0.0s]` + `ssh: Could not resolve hostname barex…`,无 pty 标记 | ✓ 旧行为逐位保留 |
|
|
365
|
+
| C3 | 裸名 `bareX` status | 同样落到 PTY 候选 | `byop:bareX — BYO pty session` + idle | ✓ status 与 exec 同一张候选表 |
|
|
366
|
+
| D1 | 我(sessionKey A)建 `byop:d1`/`byop:bareX` 后空调用 | 只列我的会话 | `live pty sessions: byop:d1 [ready, idle 4s], byop:bareX [ready, idle 13s]` | ✓ |
|
|
367
|
+
| D2 | 子 agent 建 `byop:subdelta` **之后**我再空调用 | 仍只列我的两条,**不含 subdelta** | 同上(读数 11s / 24s) | ✓ **即 F4 的反证** |
|
|
368
|
+
| D3 | 子 agent 空调用 | 只列 `byop:subdelta`,不含我的两条 | `live pty sessions: byop:subdelta [ready, idle 1s]` | ✓ |
|
|
369
|
+
| D4 | 我寻址 `byop:subdelta` | `E_NO_SESSION` | 同 | ✓ |
|
|
370
|
+
| D5 | 子 agent 寻址 `byop:d1` / `byop:bareX` | 双向 `E_NO_SESSION` | 两条同型报文 | ✓ 隔离是双向的 |
|
|
371
|
+
| D6 | 静态三段(ssh/docker/incus)双侧 | 全局可见、内容一致 | 双方各自列出同一 ssh hosts / docker / incus 三段 | ✓ 设计内(静态公共配置) |
|
|
372
|
+
| E1 | 重生成权威 JSON Schema(`.scratch/remote-schema-v3.json`) | 输出面 **9→11** 属性;`required` / `additionalProperties` 不变;输入面不变 | 见 §10.4 | ✓ |
|
|
373
|
+
| E2 | `npx vitest run test/remote/` | 全绿 | 11 文件 / **94 tests passed**(§九 基线 92,+2) | ✓ |
|
|
374
|
+
| E3 | `npx tsc --noEmit` | 0 错 | exit 0 | ✓ |
|
|
375
|
+
| E4 | status 回归抽查(改动行 `resolveBareName` 换了返回型) | ssh / docker 两分支照旧 | `dev4 — ssh host` + probe + `session: none — dials on first exec`;`corti — docker container` 同型 | ✓ |
|
|
376
|
+
|
|
377
|
+
### 10.4 关键证据(verbatim)
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
# A1 —— spawn 不再是入口(同时是本轮活体身份自证)
|
|
381
|
+
[E_PARAMS] remote: spawn requires a "byop:<label>" target — e.g. { target: "byop:dev3", spawn: "ssh dev3", cmd: "…" }; it is not a standalone entry point
|
|
382
|
+
|
|
383
|
+
# B3 —— 同 spawn 重复:notice 行(新字段)在前,命令照跑
|
|
384
|
+
[remote: byop:d1 already runs that exact command and is persistent — reuse it with { target: "byop:d1", cmd: "…" }; spawn is only needed to create.]
|
|
385
|
+
live
|
|
386
|
+
|
|
387
|
+
[exit 0 · 0.0s · cwd /tmp · byop:d1]
|
|
388
|
+
|
|
389
|
+
# B4 —— 异 spawn 冲突:零执行
|
|
390
|
+
[E_LABEL_CONFLICT] remote: byop:d1 already exists and was created by a different command — nothing was run.
|
|
391
|
+
existing spawn: "bash"
|
|
392
|
+
given spawn: "bash -l"
|
|
393
|
+
To reuse it: { target: "byop:d1", cmd: "…" } (drop spawn — spawn only ever creates)
|
|
394
|
+
To start new: pick another label, e.g. { target: "byop:d12", spawn: "bash -l", cmd: "…" }
|
|
395
|
+
|
|
396
|
+
# C2 —— 显式 oneshot 的逃生门:不吃末位候选,旧行为逐位保留
|
|
397
|
+
[exit 255 · 0.0s]
|
|
398
|
+
[stderr]
|
|
399
|
+
ssh: Could not resolve hostname barex: Temporary failure in name resolution
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
双侧 roster(D2 / D3,同一时刻、同一进程、不同 agent session):
|
|
403
|
+
|
|
404
|
+
```
|
|
405
|
+
# 我(sessionKey A)——D2:子 agent 的 byop:subdelta 已在池中,但不在我的名单里
|
|
406
|
+
ssh hosts (~/.ssh/config): github.com, dev2, dev3, mac, dev1, 137.131.54.174, dev4, ctr-1
|
|
407
|
+
docker containers: corti (running), jellyfin (running)
|
|
408
|
+
incus containers: ctr-1 (RUNNING)
|
|
409
|
+
live pty sessions: byop:d1 [ready, idle 11s], byop:bareX [ready, idle 24s]
|
|
410
|
+
|
|
411
|
+
# 子 agent(sessionKey B)——D3:看不到我的两条
|
|
412
|
+
live pty sessions: byop:subdelta [ready, idle 1s]
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
E1 输出面(`remote-schema-v3.json`,11 属性 + `required`/`additionalProperties` 不变):
|
|
416
|
+
|
|
417
|
+
```json
|
|
418
|
+
{ "type": "object", "additionalProperties": false,
|
|
419
|
+
"properties": { "kind": {"type":"string","enum":["exec","status","roster"]}, "text": {"type":"string"},
|
|
420
|
+
"exit": …, "durationMs": …, "cwd": …, "stderr": …, "timedOut": …, "reconnected": …, "truncated": …,
|
|
421
|
+
"session": { "type": "string" }, "notice": { "type": "string" } },
|
|
422
|
+
"required": ["kind", "text"] }
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
(输入面与 §9.6 一致:6 属性、**无 `required`**、无 `additionalProperties`——合法性仍由运行期守卫表达。)
|
|
426
|
+
|
|
427
|
+
### 10.5 F4 关闭
|
|
428
|
+
|
|
429
|
+
§9.3 记的 F4(roster 不按 agent 作用域过滤,low–medium)**关闭**:
|
|
430
|
+
|
|
431
|
+
- **实现**:`roster()` 以 `${sessionKey}|` 前缀过滤池,名字渲染收敛到单一定义 `displayKey(key)`;`ssh/docker/incus` 三段保持全局。
|
|
432
|
+
- **活体双侧反证**:D2 —— 子 agent 的 `byop:subdelta` 是**活会话**(其 roster 自见),而我的 roster 在同一时刻不含它;D5 —— 双向寻址皆 `E_NO_SESSION`。这正是 §9.3 记录的失败场景(当时我的名单里出现了别人的 label)在本轮的对照复现。
|
|
433
|
+
- **spec 同步**:`spec.md` 19:18:00 已含 `Requirement: roster 的活性面按 agent session 作用域`,并把「静态公共配置 vs 操作环境」的取舍写进理由,与实现逐条对齐。
|
|
434
|
+
|
|
435
|
+
### 10.6 观察与残留
|
|
436
|
+
|
|
437
|
+
- **F1(native-cause 残留,low)**:维持——本轮未触碰该段(init 期 pty 输出走 stdout、`diag` 只捞子进程 stderr)。
|
|
438
|
+
- **F3(裸名遮蔽,设计内)**:不变,且本轮把它的边界钉得更死——PTY label 只在候选表**末位**参与(C1/C3),撞名时 ssh/docker/incus 仍胜出;spec Scenario 明写「命中顺序即优先级」。
|
|
439
|
+
- **观察·构建卫生(附注不入发现账)**:仓库根 `better-dsh/better-dsh-0.2.5-b.tgz`(36,833 B,mtime 19:01:14)包内 `lib/remote/plugin.js` 是 **pre-refactor(spawn 键时代)** 产物——`byop:` 命中 0、`startsWith('pty:')` 命中 0(label 选择器从未发布过,故本就不该有)。**这是正确状态而非陈旧物**:它是 `5aa48ea "release 0.2.5-b"` 提交的、**被 git track 的发布记录**(`git check-ignore` 不忽略、`git ls-files 'better-dsh/*.tgz'` 列出五个、`git log -1 -- <file>` 指向该 release commit);mtime 19:01:14 来自一次 `git checkout --` 还原,不是 pack 时间。本轮 rig 的真实交付包装是 `.scratch/better-dsh-0.2.5-b+byop.tgz`(见 §10.2),二者各司其职——**不得重 pack 或删除仓库根那一份**。<br>(附注仍成立:`better-dsh` scripts 无 `prepack`,`npm pack` 只打包当下 `lib/`、不重建。)
|
|
440
|
+
- **观察·产品面(信息)**:退出行的 `· byop:<label>` 标签对**显式** `byop:` 调用是冗余(target 本就是模型写的),对 C1 那种**裸名懒复用**才是承载信息——它把「以为在打 ssh、实际落到 PTY」显式化。记录,不建议改。
|
|
441
|
+
- 未重跑项与理由见 §10.1。
|
|
442
|
+
|
|
443
|
+
### 10.7 结论
|
|
444
|
+
|
|
445
|
+
- 本轮 delta 的四个面(`spawn` 降格 / `byop:` status 零拨号 / 裸名末位 PTY 候选 / roster 调用方作用域)+ 输出结构面(`session`、`notice` 两字段)**全部实测通过:26/26**;`test/remote/` 94/94、`tsc` exit 0。
|
|
446
|
+
- **F4 关闭**;spec 与实现同步(19:18:00 的 spec 已覆盖三条新契约),无文档漂移。
|
|
447
|
+
- 发布纪律不变:本轮仍是**未提交工作树**,实测通过 ≠ 放行,**不构成 publish 前置条件**(AGENTS.md §〇:需 user 明确单次授权)。
|