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
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* stay correct even when the wire order changes or the roster is seeded
|
|
10
10
|
* from a stale baked global.
|
|
11
11
|
*
|
|
12
|
-
* The label map comes from `fetchMachines()` (mesh-api.ts): machine
|
|
13
|
-
*
|
|
12
|
+
* The label map comes from `fetchMachines()` (mesh-api.ts): the machine's
|
|
13
|
+
* `name` — its sole display identity — keyed by id;
|
|
14
14
|
* {@link machineLabelsFrom} builds it, and a machine the registry no longer
|
|
15
15
|
* knows simply keeps its raw m4 as the section label (never a crash).
|
|
16
16
|
*
|
|
@@ -27,13 +27,13 @@ import type { AgentLink } from './roster.js';
|
|
|
27
27
|
export declare const LOCAL_MACHINE_KEY = "local";
|
|
28
28
|
/** The LOCAL section's fixed display label — this machine needs no registry row to be named. */
|
|
29
29
|
export declare const LOCAL_MACHINE_LABEL = "This machine";
|
|
30
|
-
/** One machine's section: its grouping key, its display label, and its rows in
|
|
30
|
+
/** One machine's section: its grouping key, its display label, and its rows in DSH-first alphabetical order. */
|
|
31
31
|
export interface MachineAgentGroup {
|
|
32
32
|
/** The grouping key: {@link LOCAL_MACHINE_KEY} or the owning machine's m4. */
|
|
33
33
|
readonly key: string;
|
|
34
34
|
/** The section heading: the machine's display label ({@link LOCAL_MACHINE_LABEL} for local, the raw key when no label is known). */
|
|
35
35
|
readonly label: string;
|
|
36
|
-
/** This machine's roster rows,
|
|
36
|
+
/** This machine's roster rows: DSH first, then alphabetical (spec hub-roster-identity §4). */
|
|
37
37
|
readonly agents: readonly AgentLink[];
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
@@ -41,10 +41,11 @@ export interface MachineAgentGroup {
|
|
|
41
41
|
* roster rows: the LOCAL group first (label {@link LOCAL_MACHINE_LABEL};
|
|
42
42
|
* rows whose `machine` is `'local'` or absent), then one group per remote
|
|
43
43
|
* machine sorted by display label (code-unit order) with the machine key as
|
|
44
|
-
* the tiebreak. Members
|
|
45
|
-
* groups only exist for machines actually present in the
|
|
46
|
-
* local section when every row is federated). An unknown
|
|
47
|
-
* missing, or an empty string — falls back to the raw
|
|
44
|
+
* the tiebreak. Members are ordered DSH-first, then alphabetical, inside
|
|
45
|
+
* every group; groups only exist for machines actually present in the
|
|
46
|
+
* roster (no empty local section when every row is federated). An unknown
|
|
47
|
+
* label map entry — missing, or an empty string — falls back to the raw
|
|
48
|
+
* machine key.
|
|
48
49
|
*
|
|
49
50
|
* @param links - the roster rows (any order; the section order is derived, not inherited).
|
|
50
51
|
* @param machineLabels - machine key (m4) → display label; the machines API answer via {@link machineLabelsFrom}.
|
|
@@ -53,9 +54,10 @@ export interface MachineAgentGroup {
|
|
|
53
54
|
export declare function groupByMachine(links: readonly AgentLink[], machineLabels: Readonly<Record<string, string>>): MachineAgentGroup[];
|
|
54
55
|
/**
|
|
55
56
|
* The machines API answer → the grouping label map: every remote row's
|
|
56
|
-
* `id →
|
|
57
|
-
*
|
|
58
|
-
* the empty map — the caller's
|
|
57
|
+
* `id → name` (the machine's sole display identity — the retired separate
|
|
58
|
+
* label column no longer exists on the wire) plus the self block's own
|
|
59
|
+
* `m4 → label`. An absent list is the empty map — the caller's
|
|
60
|
+
* degrade-to-flat trigger, never a throw.
|
|
59
61
|
*
|
|
60
62
|
* @param list - the coerced `fetchMachines()` answer, when it succeeded.
|
|
61
63
|
* @returns machine key → display label (the raw key stays absent, not mapped).
|
|
@@ -6,15 +6,32 @@ export const LOCAL_MACHINE_LABEL = 'This machine';
|
|
|
6
6
|
function isLocalMachine(machine) {
|
|
7
7
|
return machine === undefined || machine === LOCAL_MACHINE_KEY;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* One group's member order (spec hub-roster-identity §4, uniform for local
|
|
11
|
+
* and remote machines): the native DSH row first, then label code-unit order
|
|
12
|
+
* with the key as the tiebreak.
|
|
13
|
+
*/
|
|
14
|
+
function sortMembers(agents) {
|
|
15
|
+
return [...agents].sort((a, b) => {
|
|
16
|
+
const nativeA = (a.runtimeId ?? a.key) === 'native' ? 0 : 1;
|
|
17
|
+
const nativeB = (b.runtimeId ?? b.key) === 'native' ? 0 : 1;
|
|
18
|
+
if (nativeA !== nativeB)
|
|
19
|
+
return nativeA - nativeB;
|
|
20
|
+
if (a.label !== b.label)
|
|
21
|
+
return a.label < b.label ? -1 : 1;
|
|
22
|
+
return a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
9
25
|
/**
|
|
10
26
|
* Group a roster into machine sections for the switch menu and the Hub
|
|
11
27
|
* roster rows: the LOCAL group first (label {@link LOCAL_MACHINE_LABEL};
|
|
12
28
|
* rows whose `machine` is `'local'` or absent), then one group per remote
|
|
13
29
|
* machine sorted by display label (code-unit order) with the machine key as
|
|
14
|
-
* the tiebreak. Members
|
|
15
|
-
* groups only exist for machines actually present in the
|
|
16
|
-
* local section when every row is federated). An unknown
|
|
17
|
-
* missing, or an empty string — falls back to the raw
|
|
30
|
+
* the tiebreak. Members are ordered DSH-first, then alphabetical, inside
|
|
31
|
+
* every group; groups only exist for machines actually present in the
|
|
32
|
+
* roster (no empty local section when every row is federated). An unknown
|
|
33
|
+
* label map entry — missing, or an empty string — falls back to the raw
|
|
34
|
+
* machine key.
|
|
18
35
|
*
|
|
19
36
|
* @param links - the roster rows (any order; the section order is derived, not inherited).
|
|
20
37
|
* @param machineLabels - machine key (m4) → display label; the machines API answer via {@link machineLabelsFrom}.
|
|
@@ -40,15 +57,18 @@ export function groupByMachine(links, machineLabels) {
|
|
|
40
57
|
return typeof label === 'string' && label !== '' ? label : key;
|
|
41
58
|
};
|
|
42
59
|
const remote = [...byKey.entries()]
|
|
43
|
-
.map(([key, agents]) => ({ key, label: labelOf(key), agents }))
|
|
60
|
+
.map(([key, agents]) => ({ key, label: labelOf(key), agents: sortMembers(agents) }))
|
|
44
61
|
.sort((a, b) => (a.label !== b.label ? (a.label < b.label ? -1 : 1) : (a.key < b.key ? -1 : a.key > b.key ? 1 : 0)));
|
|
45
|
-
return local.length > 0
|
|
62
|
+
return local.length > 0
|
|
63
|
+
? [{ key: LOCAL_MACHINE_KEY, label: LOCAL_MACHINE_LABEL, agents: sortMembers(local) }, ...remote]
|
|
64
|
+
: remote;
|
|
46
65
|
}
|
|
47
66
|
/**
|
|
48
67
|
* The machines API answer → the grouping label map: every remote row's
|
|
49
|
-
* `id →
|
|
50
|
-
*
|
|
51
|
-
* the empty map — the caller's
|
|
68
|
+
* `id → name` (the machine's sole display identity — the retired separate
|
|
69
|
+
* label column no longer exists on the wire) plus the self block's own
|
|
70
|
+
* `m4 → label`. An absent list is the empty map — the caller's
|
|
71
|
+
* degrade-to-flat trigger, never a throw.
|
|
52
72
|
*
|
|
53
73
|
* @param list - the coerced `fetchMachines()` answer, when it succeeded.
|
|
54
74
|
* @returns machine key → display label (the raw key stays absent, not mapped).
|
|
@@ -58,7 +78,7 @@ export function machineLabelsFrom(list) {
|
|
|
58
78
|
if (list === undefined)
|
|
59
79
|
return labels;
|
|
60
80
|
for (const machine of list.machines) {
|
|
61
|
-
labels[machine.id] = machine.
|
|
81
|
+
labels[machine.id] = machine.name;
|
|
62
82
|
}
|
|
63
83
|
if (list.self !== undefined)
|
|
64
84
|
labels[list.self.id] = list.self.label;
|
|
@@ -1,22 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared roster projection for the client half: the runtime list every Hub
|
|
3
|
-
* switch surface (the HubPanelIcon chevron menu, the HubPage Agent Runtimes
|
|
4
|
-
* rows — the sole agent-switch surface since the T-B RuntimeSeat retirement)
|
|
5
|
-
* renders. Source of truth = the hub's read-only `/api/agent-runtime` face;
|
|
6
|
-
* the baked `window.__DSH_AGENT_ROSTER__` global only seeds the first paint
|
|
7
|
-
* (a world page's baked copy can be stale, so the wire answer is
|
|
8
|
-
* authoritative).
|
|
9
|
-
*
|
|
10
|
-
* Node-safe by construction (no DOM globals, fetch only inside functions) —
|
|
11
|
-
* the host tsc dual-emits this file to `dist/client/roster.js` so
|
|
12
|
-
* test/client-mesh-groups.test.mjs can pin the coercion under `node --test`
|
|
13
|
-
* (the mesh-api/mesh-groups precedent).
|
|
14
|
-
*
|
|
15
|
-
* @module superd-hub/client/roster
|
|
16
|
-
*/
|
|
17
1
|
/** One runtime as the roster hands it over: key, display label, mount path, machine. */
|
|
18
2
|
export interface AgentLink {
|
|
19
3
|
readonly key: string;
|
|
4
|
+
/**
|
|
5
|
+
* The unified runtime identifier (adapter package name, `native` for DSH;
|
|
6
|
+
* spec hub-roster-identity §1) — the icon-matching key across machines.
|
|
7
|
+
* Optional at the parse boundary: an older host's rows lack it and the
|
|
8
|
+
* mark falls back to `runtimeIdOf(key)`.
|
|
9
|
+
*/
|
|
10
|
+
readonly runtimeId?: string;
|
|
20
11
|
readonly label: string;
|
|
21
12
|
readonly path: string;
|
|
22
13
|
/**
|
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @module superd-hub/client/roster
|
|
16
16
|
*/
|
|
17
|
+
import { runtimeIdOf } from '../roster.js';
|
|
17
18
|
/** The native runtime every composition can fall back to. */
|
|
18
|
-
export const NATIVE_LINK = { key: 'native', label: 'DSH', path: '/', machine: 'local', ready: true, failed: false };
|
|
19
|
+
export const NATIVE_LINK = { key: 'native', runtimeId: 'native', label: 'DSH', path: '/', machine: 'local', ready: true, failed: false };
|
|
19
20
|
/** Labels for the read-only face's bare keys (it reports keys, not labels). */
|
|
20
21
|
const FALLBACK_LABELS = {
|
|
21
22
|
native: 'DSH',
|
|
@@ -40,11 +41,12 @@ function coerceAgents(raw) {
|
|
|
40
41
|
for (const entry of raw) {
|
|
41
42
|
if (typeof entry !== 'object' || entry === null)
|
|
42
43
|
continue;
|
|
43
|
-
const { key, label, path, machine } = entry;
|
|
44
|
+
const { key, label, path, machine, runtimeId } = entry;
|
|
44
45
|
if (typeof key !== 'string' || typeof path !== 'string')
|
|
45
46
|
continue;
|
|
46
47
|
links.push({
|
|
47
48
|
key,
|
|
49
|
+
runtimeId: typeof runtimeId === 'string' && runtimeId !== '' ? runtimeId : undefined,
|
|
48
50
|
label: typeof label === 'string' ? label : (FALLBACK_LABELS[key] ?? key),
|
|
49
51
|
path,
|
|
50
52
|
// Passthrough (mesh P2 Task 4): a string machine id rides verbatim
|
|
@@ -93,7 +95,7 @@ export async function fetchRoster() {
|
|
|
93
95
|
continue;
|
|
94
96
|
links.push(key === 'native'
|
|
95
97
|
? NATIVE_LINK
|
|
96
|
-
: { key, label: FALLBACK_LABELS[key] ?? key, path: `/${key}/`, machine: 'local', ready: key === 'native' });
|
|
98
|
+
: { key, runtimeId: runtimeIdOf(key), label: FALLBACK_LABELS[key] ?? key, path: `/${key}/`, machine: 'local', ready: key === 'native' });
|
|
97
99
|
}
|
|
98
100
|
if (links.length > 0)
|
|
99
101
|
return links;
|
|
@@ -24,8 +24,11 @@
|
|
|
24
24
|
* restored after, so an agent switch re-targets the same anchor;
|
|
25
25
|
* 5. `Storage.prototype` get/set/removeItem — namespace read at call
|
|
26
26
|
* time: native = no prefix, foreign = `'<label>:'`.
|
|
27
|
-
* -
|
|
28
|
-
* the roster always talks to ctx0, so the user can always switch back
|
|
27
|
+
* - two control-plane exemptions: `/api/agent-runtime` is NEVER rewritten —
|
|
28
|
+
* the roster always talks to ctx0, so the user can always switch back —
|
|
29
|
+
* and neither is the hub's own `/api/superd` family (machines/a2a/exec),
|
|
30
|
+
* so the Hub panel's machine map + roster grouping stay live while a
|
|
31
|
+
* remote agent is active (2026-10-08 user report).
|
|
29
32
|
* Native mode is zero-interference: every patched face passes its exact
|
|
30
33
|
* arguments through untouched.
|
|
31
34
|
*
|
|
@@ -43,11 +46,10 @@
|
|
|
43
46
|
* Injection (the web-trust emission path, ordered AFTER it — spec §3.4 hard
|
|
44
47
|
* constraint): the row is a `webserver/index-inject` head script pushed by the
|
|
45
48
|
* `superd-fusion-transport` component, composed through the composite row
|
|
46
|
-
* `super-dsh/fusion-transport` positioned after `
|
|
47
|
-
* components
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* trust script is always evaluated before anything could own that global.
|
|
49
|
+
* `super-dsh/fusion-transport` positioned after `better-dsh/web-trust`. Both
|
|
50
|
+
* components wait for `webServer`; Better Dash prepends its ownership script
|
|
51
|
+
* to the injection table, so asynchronous module loading cannot place it after
|
|
52
|
+
* the fusion script. The ownership verdict executes before application boot.
|
|
51
53
|
* Row gate: the row config `enabled`, ON by default — the composite patch
|
|
52
54
|
* composing this row is the switch. `enabled: false` (or `disabled: true`)
|
|
53
55
|
* leaves the component dormant: no listener, no script, no flag global.
|
|
@@ -125,9 +127,8 @@ export declare const inject: string[];
|
|
|
125
127
|
/**
|
|
126
128
|
* Mount the fusion injection: one `webserver/index-inject` listener pushing
|
|
127
129
|
* the rendered head script row — the same emission path as the web-trust
|
|
128
|
-
* component, composed AFTER it
|
|
129
|
-
*
|
|
130
|
-
* cordis's FIFO effect order pushes the fusion row last; spec §3.4) — plus
|
|
130
|
+
* component, composed AFTER it. Better Dash prepends its ownership verdict to the public injection table,
|
|
131
|
+
* so asynchronous module loading cannot invert the script order (spec §3.4), plus
|
|
131
132
|
* the {@link FUSION_FLAG_GLOBAL} baked global row (Task 4): one gate, both
|
|
132
133
|
* halves.
|
|
133
134
|
*
|
|
@@ -24,8 +24,11 @@
|
|
|
24
24
|
* restored after, so an agent switch re-targets the same anchor;
|
|
25
25
|
* 5. `Storage.prototype` get/set/removeItem — namespace read at call
|
|
26
26
|
* time: native = no prefix, foreign = `'<label>:'`.
|
|
27
|
-
* -
|
|
28
|
-
* the roster always talks to ctx0, so the user can always switch back
|
|
27
|
+
* - two control-plane exemptions: `/api/agent-runtime` is NEVER rewritten —
|
|
28
|
+
* the roster always talks to ctx0, so the user can always switch back —
|
|
29
|
+
* and neither is the hub's own `/api/superd` family (machines/a2a/exec),
|
|
30
|
+
* so the Hub panel's machine map + roster grouping stay live while a
|
|
31
|
+
* remote agent is active (2026-10-08 user report).
|
|
29
32
|
* Native mode is zero-interference: every patched face passes its exact
|
|
30
33
|
* arguments through untouched.
|
|
31
34
|
*
|
|
@@ -43,11 +46,10 @@
|
|
|
43
46
|
* Injection (the web-trust emission path, ordered AFTER it — spec §3.4 hard
|
|
44
47
|
* constraint): the row is a `webserver/index-inject` head script pushed by the
|
|
45
48
|
* `superd-fusion-transport` component, composed through the composite row
|
|
46
|
-
* `super-dsh/fusion-transport` positioned after `
|
|
47
|
-
* components
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* trust script is always evaluated before anything could own that global.
|
|
49
|
+
* `super-dsh/fusion-transport` positioned after `better-dsh/web-trust`. Both
|
|
50
|
+
* components wait for `webServer`; Better Dash prepends its ownership script
|
|
51
|
+
* to the injection table, so asynchronous module loading cannot place it after
|
|
52
|
+
* the fusion script. The ownership verdict executes before application boot.
|
|
51
53
|
* Row gate: the row config `enabled`, ON by default — the composite patch
|
|
52
54
|
* composing this row is the switch. `enabled: false` (or `disabled: true`)
|
|
53
55
|
* leaves the component dormant: no listener, no script, no flag global.
|
|
@@ -95,7 +97,13 @@ try {
|
|
|
95
97
|
|
|
96
98
|
// ---- the one rewrite rule: '/api...' becomes '/hub/api...' + '?agent=<label>' ----
|
|
97
99
|
const HUB = '/hub'
|
|
100
|
+
// Control planes: the roster AND the hub's own '/api/superd' family
|
|
101
|
+
// (machines/a2a/exec — mesh-rpc.ts) always talk to ctx0. A foreign plane
|
|
102
|
+
// answers neither (a peer's world has no mesh routes), so a rewritten
|
|
103
|
+
// machines GET 404s and the Hub panel loses its machine map + roster
|
|
104
|
+
// grouping the moment a remote agent is active (2026-10-08 user report).
|
|
98
105
|
const CONTROL = '/api/agent-runtime'
|
|
106
|
+
const CONTROL_PREFIX = '/api/superd'
|
|
99
107
|
const origin = () => {
|
|
100
108
|
const loc = g.location
|
|
101
109
|
if (loc !== undefined && typeof loc.origin === 'string' && loc.origin !== 'null') return loc.origin
|
|
@@ -110,8 +118,11 @@ try {
|
|
|
110
118
|
}
|
|
111
119
|
}
|
|
112
120
|
const isApiPath = (path) => path === '/api' || path.startsWith('/api/')
|
|
113
|
-
// Control-plane exemption: the roster
|
|
121
|
+
// Control-plane exemption: the roster and the '/api/superd' family always
|
|
122
|
+
// hit ctx0, so the switch surfaces and the Hub panel work while any agent
|
|
123
|
+
// is active.
|
|
114
124
|
const isExempt = (path) => path === CONTROL || path.startsWith(CONTROL + '/')
|
|
125
|
+
|| path === CONTROL_PREFIX || path.startsWith(CONTROL_PREFIX + '/')
|
|
115
126
|
// Key compare matches the server demux shape: searchParams.get('agent')
|
|
116
127
|
// looks up PERCENT-DECODED keys, so '%61gent=x' demuxes as agent=x and the
|
|
117
128
|
// surgery must strip those spellings too (+' ' wins the '+' spelling).
|
|
@@ -343,9 +354,8 @@ export const inject = [];
|
|
|
343
354
|
/**
|
|
344
355
|
* Mount the fusion injection: one `webserver/index-inject` listener pushing
|
|
345
356
|
* the rendered head script row — the same emission path as the web-trust
|
|
346
|
-
* component, composed AFTER it
|
|
347
|
-
*
|
|
348
|
-
* cordis's FIFO effect order pushes the fusion row last; spec §3.4) — plus
|
|
357
|
+
* component, composed AFTER it. Better Dash prepends its ownership verdict to the public injection table,
|
|
358
|
+
* so asynchronous module loading cannot invert the script order (spec §3.4), plus
|
|
349
359
|
* the {@link FUSION_FLAG_GLOBAL} baked global row (Task 4): one gate, both
|
|
350
360
|
* halves.
|
|
351
361
|
*
|
|
@@ -35,7 +35,6 @@ export { agentLinks, agentRosterRow, AGENT_ROSTER_GLOBAL, type AgentLink } from
|
|
|
35
35
|
export { createOwnershipIndex, type OwnershipIndex, type OwnershipRow } from './ownership.js';
|
|
36
36
|
export { registerHostMount, takeHostMount, listHostMounts, noteWorldServer, worldServerOf, type HostMount } from './world-host.js';
|
|
37
37
|
export { worldMountPatches, superdTrustedHosts, WORLD_WAVE1_DISABLED_ROWS, WORLD_WAVE2_DISABLED_ROWS, WORLD_MOUNT_PLUGIN, WORLD_MOUNT_ROW_ID, WORLD_HUB_PLUGIN, WORLD_HUB_ROW_ID, type WorldPatchLayer, } from './world-mount.js';
|
|
38
|
-
export { buildTrustScript, deriveDefaultPageAuthorities, type BootScriptRow, type TrustConfig, } from './web-trust.js';
|
|
39
38
|
export { withSystemHead, type HeadAwareSessionFace, type HeadPlaceholder, type WithSystemHead } from './system-head.js';
|
|
40
39
|
export { default as worldApply, name as worldPluginName, type Config as WorldEntryConfig } from './world-entry.js';
|
|
41
40
|
export { default as joinApply, name as worldJoinPluginName, type Config as WorldJoinConfig } from './world-join.js';
|
package/superd-hub/dist/index.js
CHANGED
|
@@ -35,7 +35,6 @@ export { agentLinks, agentRosterRow, AGENT_ROSTER_GLOBAL } from './agent-roster.
|
|
|
35
35
|
export { createOwnershipIndex } from './ownership.js';
|
|
36
36
|
export { registerHostMount, takeHostMount, listHostMounts, noteWorldServer, worldServerOf } from './world-host.js';
|
|
37
37
|
export { worldMountPatches, superdTrustedHosts, WORLD_WAVE1_DISABLED_ROWS, WORLD_WAVE2_DISABLED_ROWS, WORLD_MOUNT_PLUGIN, WORLD_MOUNT_ROW_ID, WORLD_HUB_PLUGIN, WORLD_HUB_ROW_ID, } from './world-mount.js';
|
|
38
|
-
export { buildTrustScript, deriveDefaultPageAuthorities, } from './web-trust.js';
|
|
39
38
|
export { withSystemHead } from './system-head.js';
|
|
40
39
|
export { default as worldApply, name as worldPluginName } from './world-entry.js';
|
|
41
40
|
export { default as joinApply, name as worldJoinPluginName } from './world-join.js';
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
export interface MachineRow {
|
|
3
3
|
/** Machine id (m4) — minted by the owning machine, adopted as-is (D4). */
|
|
4
4
|
id: string;
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* The machine's display name — the operator-facing identifier the adder
|
|
7
|
+
* chose (spec hub-roster-identity §4: exactly TWO identities exist, this
|
|
8
|
+
* name and the internal `id`; the retired separate `label` field of older
|
|
9
|
+
* registries loads tolerantly and disappears on the next save).
|
|
10
|
+
*/
|
|
6
11
|
name: string;
|
|
7
|
-
/** Display label for the machines UI. */
|
|
8
|
-
label: string;
|
|
9
12
|
/** Base origin of the remote hub (`http://host:port`). */
|
|
10
13
|
origin: string;
|
|
11
14
|
/** Retained auth token for cookie re-mint; same sensitivity as the cookie itself. */
|
|
@@ -25,8 +25,8 @@ function isMachineRow(v) {
|
|
|
25
25
|
if (typeof v !== 'object' || v === null)
|
|
26
26
|
return false;
|
|
27
27
|
const r = v;
|
|
28
|
-
return (typeof r.id === 'string' && typeof r.name === 'string' &&
|
|
29
|
-
typeof r.origin === 'string' && typeof r.enabled === 'boolean' && typeof r.addedAt === 'number' &&
|
|
28
|
+
return (typeof r.id === 'string' && r.id !== '' && typeof r.name === 'string' && r.name !== '' &&
|
|
29
|
+
typeof r.origin === 'string' && r.origin !== '' && typeof r.enabled === 'boolean' && typeof r.addedAt === 'number' &&
|
|
30
30
|
(r.token === undefined || typeof r.token === 'string') &&
|
|
31
31
|
(r.cookie === undefined || typeof r.cookie === 'string') &&
|
|
32
32
|
(r.execEnabled === undefined || r.execEnabled === true || r.execEnabled === false));
|
|
@@ -69,7 +69,19 @@ export function loadMachines(home) {
|
|
|
69
69
|
if (typeof s.id !== 'string' || typeof s.label !== 'string' || !Array.isArray(o.remotes)) {
|
|
70
70
|
return emptyMachines();
|
|
71
71
|
}
|
|
72
|
-
|
|
72
|
+
// Projected field-by-field: older registries carry the retired `label`
|
|
73
|
+
// column on their rows — tolerated at load (never a whole-file reject),
|
|
74
|
+
// gone from memory so the next save writes the clean shape.
|
|
75
|
+
return { self: { id: s.id, label: s.label }, remotes: o.remotes.filter(isMachineRow).map((r) => ({
|
|
76
|
+
id: r.id,
|
|
77
|
+
name: r.name,
|
|
78
|
+
origin: r.origin,
|
|
79
|
+
enabled: r.enabled,
|
|
80
|
+
addedAt: r.addedAt,
|
|
81
|
+
...(r.token === undefined ? {} : { token: r.token }),
|
|
82
|
+
...(r.cookie === undefined ? {} : { cookie: r.cookie }),
|
|
83
|
+
...(r.execEnabled === undefined ? {} : { execEnabled: r.execEnabled }),
|
|
84
|
+
})) };
|
|
73
85
|
}
|
|
74
86
|
/** Persist the whole registry: recursive mkdir, tmp write, chmod 0600, atomic rename. */
|
|
75
87
|
export function saveMachines(home, file) {
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* peer's ctx0 `/api` surface, no demux key — exactly how a
|
|
14
14
|
* browser ON the peer consumes its native DSH (the `/hub`
|
|
15
15
|
* family would 404 `?agent=native` as foreign-only).
|
|
16
|
-
* roster.ts one row per agent: `{key: a6,
|
|
17
|
-
*
|
|
16
|
+
* roster.ts one row per agent: `{key: a6, runtimeId: <package id>,
|
|
17
|
+
* label, machine: m4, ready, failed}` — `machine` set marks
|
|
18
18
|
* the row federated; `agentLinks` projects it into the UI rows.
|
|
19
19
|
*
|
|
20
20
|
* The a6 IS the local registration key (spec §3.2): runtime keys are NOT
|
|
@@ -62,11 +62,18 @@ export interface FederatedAgent {
|
|
|
62
62
|
* anything at the peer; {@link gatewayFor} falls back to the a6 there
|
|
63
63
|
* (T3-M1) rather than shipping `?agent=` on the wire. */
|
|
64
64
|
key: string;
|
|
65
|
+
/**
|
|
66
|
+
* The peer's unified runtime identifier (adapter package name; spec
|
|
67
|
+
* hub-roster-identity §1). Absent from peers older than the field — the
|
|
68
|
+
* parse edge normalizes `key` so icon matching still speaks the common
|
|
69
|
+
* language.
|
|
70
|
+
*/
|
|
71
|
+
runtimeId?: string;
|
|
65
72
|
label: string;
|
|
66
73
|
ready: boolean;
|
|
67
74
|
failed: boolean;
|
|
68
75
|
}
|
|
69
|
-
/** The machine half of a federation fact (m4 + display name for
|
|
76
|
+
/** The machine half of a federation fact (m4 + display name for the UI's section heading). */
|
|
70
77
|
export interface FederatedMachine {
|
|
71
78
|
id: string;
|
|
72
79
|
name: string;
|
|
@@ -79,15 +86,18 @@ export interface FederationWireDeps {
|
|
|
79
86
|
}
|
|
80
87
|
/**
|
|
81
88
|
* Register one machine's probed agents — IDEMPOTENT replace per a6: a row
|
|
82
|
-
* whose key/label/machine/ready/failed all match the live registry
|
|
83
|
-
* untouched (zero roster churn on repeated probes); a changed row is
|
|
89
|
+
* whose key/runtimeId/label/machine/ready/failed all match the live registry
|
|
90
|
+
* is left untouched (zero roster churn on repeated probes); a changed row is
|
|
84
91
|
* unregistered then re-registered (`registerAgent` throws on duplicate keys —
|
|
85
92
|
* federate always unregisters first, so repeated probes never throw).
|
|
86
93
|
* Agents with an empty id (unkeyable) are skipped; EVERY keyed row
|
|
87
94
|
* federates — the peer's native row included (its `key:'native'` selects the
|
|
88
|
-
* native gateway face; see {@link gatewayFor}).
|
|
89
|
-
*
|
|
90
|
-
*
|
|
95
|
+
* native gateway face; see {@link gatewayFor}). The label is the PEER'S OWN
|
|
96
|
+
* runtime label, unsuffixed (2026-10-07 user ruling, spec
|
|
97
|
+
* hub-roster-identity §4): the machine context is the UI's group heading,
|
|
98
|
+
* not part of the runtime's name.
|
|
99
|
+
* @param machine - the peer's identity (m4 + name; the grouping's section label).
|
|
100
|
+
* @param agents - the probe's agent snapshot (a6 `id`, remote `key`, runtimeId, label, ready, failed).
|
|
91
101
|
* @param gatewayOf - gateway factory receiving the FULL agent row (the wiring
|
|
92
102
|
* derives the face from `agent.key`; tests inject fakes) — called once per
|
|
93
103
|
* (re)registration and once per converged-row target re-arm.
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* peer's ctx0 `/api` surface, no demux key — exactly how a
|
|
14
14
|
* browser ON the peer consumes its native DSH (the `/hub`
|
|
15
15
|
* family would 404 `?agent=native` as foreign-only).
|
|
16
|
-
* roster.ts one row per agent: `{key: a6,
|
|
17
|
-
*
|
|
16
|
+
* roster.ts one row per agent: `{key: a6, runtimeId: <package id>,
|
|
17
|
+
* label, machine: m4, ready, failed}` — `machine` set marks
|
|
18
18
|
* the row federated; `agentLinks` projects it into the UI rows.
|
|
19
19
|
*
|
|
20
20
|
* The a6 IS the local registration key (spec §3.2): runtime keys are NOT
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
*/
|
|
52
52
|
import { createRemoteGateway } from './mesh-gateway.js';
|
|
53
53
|
import { cookieOf, onMeshFederationEvent } from './mesh-link.js';
|
|
54
|
-
import { registerAgent, unregisterAgent, listAgents, setReady } from './roster.js';
|
|
54
|
+
import { registerAgent, unregisterAgent, listAgents, setReady, runtimeIdOf } from './roster.js';
|
|
55
55
|
import { registerForeignTarget, unregisterForeignTarget, getTarget } from './targets.js';
|
|
56
56
|
const gatewayMemo = new Map();
|
|
57
57
|
/** Roster rows of one machine (its a6s), from the live registry. */
|
|
@@ -71,15 +71,18 @@ function dropA6(a6) {
|
|
|
71
71
|
}
|
|
72
72
|
/**
|
|
73
73
|
* Register one machine's probed agents — IDEMPOTENT replace per a6: a row
|
|
74
|
-
* whose key/label/machine/ready/failed all match the live registry
|
|
75
|
-
* untouched (zero roster churn on repeated probes); a changed row is
|
|
74
|
+
* whose key/runtimeId/label/machine/ready/failed all match the live registry
|
|
75
|
+
* is left untouched (zero roster churn on repeated probes); a changed row is
|
|
76
76
|
* unregistered then re-registered (`registerAgent` throws on duplicate keys —
|
|
77
77
|
* federate always unregisters first, so repeated probes never throw).
|
|
78
78
|
* Agents with an empty id (unkeyable) are skipped; EVERY keyed row
|
|
79
79
|
* federates — the peer's native row included (its `key:'native'` selects the
|
|
80
|
-
* native gateway face; see {@link gatewayFor}).
|
|
81
|
-
*
|
|
82
|
-
*
|
|
80
|
+
* native gateway face; see {@link gatewayFor}). The label is the PEER'S OWN
|
|
81
|
+
* runtime label, unsuffixed (2026-10-07 user ruling, spec
|
|
82
|
+
* hub-roster-identity §4): the machine context is the UI's group heading,
|
|
83
|
+
* not part of the runtime's name.
|
|
84
|
+
* @param machine - the peer's identity (m4 + name; the grouping's section label).
|
|
85
|
+
* @param agents - the probe's agent snapshot (a6 `id`, remote `key`, runtimeId, label, ready, failed).
|
|
83
86
|
* @param gatewayOf - gateway factory receiving the FULL agent row (the wiring
|
|
84
87
|
* derives the face from `agent.key`; tests inject fakes) — called once per
|
|
85
88
|
* (re)registration and once per converged-row target re-arm.
|
|
@@ -90,13 +93,15 @@ export function federateAgents(machine, agents, gatewayOf) {
|
|
|
90
93
|
continue;
|
|
91
94
|
const desired = {
|
|
92
95
|
key: agent.id,
|
|
93
|
-
|
|
96
|
+
runtimeId: agent.runtimeId ?? runtimeIdOf(agent.key),
|
|
97
|
+
label: agent.label,
|
|
94
98
|
machine: machine.id,
|
|
95
99
|
ready: agent.ready === true,
|
|
96
100
|
failed: agent.failed === true,
|
|
97
101
|
};
|
|
98
102
|
const existing = listAgents().find((e) => e.key === agent.id);
|
|
99
103
|
if (existing !== undefined
|
|
104
|
+
&& existing.runtimeId === desired.runtimeId
|
|
100
105
|
&& existing.label === desired.label
|
|
101
106
|
&& existing.ready === desired.ready
|
|
102
107
|
&& (existing.failed ?? false) === desired.failed
|
|
@@ -25,6 +25,13 @@ import { type MachineRow, loadMachines, saveMachines } from './machines.js';
|
|
|
25
25
|
export interface ProbeAgent {
|
|
26
26
|
id: string;
|
|
27
27
|
key: string;
|
|
28
|
+
/**
|
|
29
|
+
* The peer's unified runtime identifier (adapter package name; spec
|
|
30
|
+
* hub-roster-identity §1) — the common language icon matching consumes.
|
|
31
|
+
* Optional on the wire: peers older than the field answer without it, and
|
|
32
|
+
* the federation edge falls back to normalizing `key`.
|
|
33
|
+
*/
|
|
34
|
+
runtimeId?: string;
|
|
28
35
|
label: string;
|
|
29
36
|
ready: boolean;
|
|
30
37
|
failed: boolean;
|
|
@@ -47,6 +54,30 @@ export interface PairOutcome {
|
|
|
47
54
|
machineId: string;
|
|
48
55
|
row: MachineRow;
|
|
49
56
|
probe: ProbeResult;
|
|
57
|
+
/** The mutual-pairing reverse leg's outcome — present exactly when the
|
|
58
|
+
* pairing input carried a {@link MutualPairing} self-description. */
|
|
59
|
+
mutual?: MutualOutcome;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Reverse-leg payload (mutual pairing, 2026-10-08 user ruling "加了对方就等于
|
|
63
|
+
* 双方都加了"): after a successful pair the INITIATOR offers the peer its own
|
|
64
|
+
* pairing input, so one user action leaves BOTH machines holding each other.
|
|
65
|
+
* The peer processes the offer as an ordinary pair POST carrying
|
|
66
|
+
* `mutual: true` — pairing WITHOUT its own reverse leg, which stops the
|
|
67
|
+
* recursion by construction.
|
|
68
|
+
*/
|
|
69
|
+
export interface MutualPairing {
|
|
70
|
+
/** This machine's tokenized pairing URL as the peer should dial it. */
|
|
71
|
+
selfTokenUrl: string;
|
|
72
|
+
/** This machine's operator-facing name (hostname, port-qualified per instance). */
|
|
73
|
+
selfName: string;
|
|
74
|
+
}
|
|
75
|
+
/** The reverse leg's outcome. `ok` is also true when the peer answered
|
|
76
|
+
* duplicate-machine-id — it already holds us, so mutual already holds. */
|
|
77
|
+
export interface MutualOutcome {
|
|
78
|
+
ok: boolean;
|
|
79
|
+
/** Why the offer failed; absent on success. The pairing itself never fails with it. */
|
|
80
|
+
error?: string;
|
|
50
81
|
}
|
|
51
82
|
/** Test injection seam: fetch + registry load/save overrides. */
|
|
52
83
|
export interface LinkDeps {
|
|
@@ -162,13 +193,16 @@ export declare function cookieOf(machineId: string, home?: string): string;
|
|
|
162
193
|
* Full pairing: parse the pasted token URL → mint a cookie → probe the roster
|
|
163
194
|
* → adopt the remote machine id (fail-loud on collision with self or an
|
|
164
195
|
* existing remote) → persist the row with the retained token and minted
|
|
165
|
-
* cookie → jar the cookie and mark the machine reachable.
|
|
166
|
-
*
|
|
196
|
+
* cookie → jar the cookie and mark the machine reachable. When the input
|
|
197
|
+
* carries a {@link MutualPairing} self-description, the REVERSE LEG follows
|
|
198
|
+
* (best-effort, never fails the pairing): this machine offers its own pairing
|
|
199
|
+
* input to the peer over the just-minted cookie, so both sides end up holding
|
|
200
|
+
* each other — the "加了对方就等于双方都加了" ruling.
|
|
167
201
|
*/
|
|
168
202
|
export declare function pairMachine(home: string, input: {
|
|
169
203
|
name: string;
|
|
170
|
-
label?: string;
|
|
171
204
|
tokenUrl: string;
|
|
205
|
+
mutual?: MutualPairing;
|
|
172
206
|
}, deps?: LinkDeps): Promise<PairOutcome>;
|
|
173
207
|
/**
|
|
174
208
|
* Re-probe a paired machine: the jar's cookie, falling back to the cookie
|
|
@@ -138,6 +138,7 @@ function coerceAgent(v) {
|
|
|
138
138
|
return {
|
|
139
139
|
id: typeof a.id === 'string' ? a.id : '',
|
|
140
140
|
key: typeof a.key === 'string' ? a.key : '',
|
|
141
|
+
runtimeId: typeof a.runtimeId === 'string' && a.runtimeId !== '' ? a.runtimeId : undefined,
|
|
141
142
|
label: typeof a.label === 'string' ? a.label : '',
|
|
142
143
|
ready: a.ready === true,
|
|
143
144
|
failed: a.failed === true,
|
|
@@ -268,8 +269,11 @@ function persistRow(home, row, deps) {
|
|
|
268
269
|
* Full pairing: parse the pasted token URL → mint a cookie → probe the roster
|
|
269
270
|
* → adopt the remote machine id (fail-loud on collision with self or an
|
|
270
271
|
* existing remote) → persist the row with the retained token and minted
|
|
271
|
-
* cookie → jar the cookie and mark the machine reachable.
|
|
272
|
-
*
|
|
272
|
+
* cookie → jar the cookie and mark the machine reachable. When the input
|
|
273
|
+
* carries a {@link MutualPairing} self-description, the REVERSE LEG follows
|
|
274
|
+
* (best-effort, never fails the pairing): this machine offers its own pairing
|
|
275
|
+
* input to the peer over the just-minted cookie, so both sides end up holding
|
|
276
|
+
* each other — the "加了对方就等于双方都加了" ruling.
|
|
273
277
|
*/
|
|
274
278
|
export async function pairMachine(home, input, deps) {
|
|
275
279
|
const fetchImpl = deps?.fetchImpl ?? globalThis.fetch;
|
|
@@ -287,7 +291,6 @@ export async function pairMachine(home, input, deps) {
|
|
|
287
291
|
const row = {
|
|
288
292
|
id: probe.machineId,
|
|
289
293
|
name: input.name,
|
|
290
|
-
label: input.label ?? input.name,
|
|
291
294
|
origin,
|
|
292
295
|
token,
|
|
293
296
|
cookie,
|
|
@@ -298,7 +301,49 @@ export async function pairMachine(home, input, deps) {
|
|
|
298
301
|
cookieJar.set(row.id, cookie);
|
|
299
302
|
recordStatus(row.id, 'reachable', undefined, versionWarningFor(probe.version, OWN_VERSION));
|
|
300
303
|
emitFederation({ type: 'federated', machineId: row.id, machineName: row.name, origin, agents: probe.agents });
|
|
301
|
-
|
|
304
|
+
const outcome = { machineId: row.id, row, probe };
|
|
305
|
+
if (input.mutual !== undefined)
|
|
306
|
+
outcome.mutual = await reversePair(row, input.mutual, fetchImpl);
|
|
307
|
+
return outcome;
|
|
308
|
+
}
|
|
309
|
+
const REVERSE_TIMEOUT_MS = 10_000;
|
|
310
|
+
/**
|
|
311
|
+
* The mutual-pairing reverse leg: offer THIS machine's pairing input to the
|
|
312
|
+
* just-paired peer over the cookie minted seconds ago (the peer then pairs
|
|
313
|
+
* back without its own reverse leg — the offer carries `mutual: true`). A
|
|
314
|
+
* duplicate-machine-id answer means the peer already holds us: mutual is
|
|
315
|
+
* already satisfied, reported as ok. EVERY failure lands on the outcome and
|
|
316
|
+
* never fails the pairing itself — the user sees it and can still add
|
|
317
|
+
* manually from the peer.
|
|
318
|
+
*/
|
|
319
|
+
async function reversePair(row, mutual, fetchImpl) {
|
|
320
|
+
let res;
|
|
321
|
+
try {
|
|
322
|
+
res = await fetchImpl(`${row.origin}/api/superd/machines`, {
|
|
323
|
+
method: 'POST',
|
|
324
|
+
headers: { cookie: row.cookie ?? '', 'content-type': 'application/json' },
|
|
325
|
+
body: JSON.stringify({ name: mutual.selfName, tokenUrl: mutual.selfTokenUrl, mutual: true }),
|
|
326
|
+
signal: AbortSignal.timeout(REVERSE_TIMEOUT_MS),
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
catch (err) {
|
|
330
|
+
return { ok: false, error: `the peer did not answer the mutual-pairing offer — ${errMsg(err)}` };
|
|
331
|
+
}
|
|
332
|
+
if (res.status === 400) {
|
|
333
|
+
let error = '';
|
|
334
|
+
try {
|
|
335
|
+
const body = await res.json();
|
|
336
|
+
if (typeof body.error === 'string')
|
|
337
|
+
error = body.error;
|
|
338
|
+
}
|
|
339
|
+
catch { /* unreadable body */ }
|
|
340
|
+
if (error.includes('duplicate-machine-id'))
|
|
341
|
+
return { ok: true };
|
|
342
|
+
return { ok: false, error: error === '' ? `the peer answered ${res.status}` : error };
|
|
343
|
+
}
|
|
344
|
+
if (res.status >= 200 && res.status < 300)
|
|
345
|
+
return { ok: true };
|
|
346
|
+
return { ok: false, error: `the peer answered ${res.status}` };
|
|
302
347
|
}
|
|
303
348
|
/**
|
|
304
349
|
* Re-probe a paired machine: the jar's cookie, falling back to the cookie
|