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.
Files changed (856) hide show
  1. package/README.md +50 -13
  2. package/agent-agy/dist/world-plugin.d.ts +1 -1
  3. package/agent-agy/dist/world-plugin.js +14 -27
  4. package/agent-agy-sdk/dist/world-plugin.d.ts +1 -1
  5. package/agent-agy-sdk/dist/world-plugin.js +14 -27
  6. package/agent-codex/dist/world-plugin.js +14 -27
  7. package/agent-codex-sdk/dist/world-plugin.js +14 -43
  8. package/agent-hermes/dist/world-plugin.js +14 -27
  9. package/agent-omp/dist/world-plugin.js +14 -39
  10. package/agent-omp/lib/client/index.js +258 -0
  11. package/agent-omp-sdk/dist/world-plugin.d.ts +1 -1
  12. package/agent-omp-sdk/dist/world-plugin.js +14 -43
  13. package/agent-pi/dist/world-plugin.js +14 -27
  14. package/bundles/better-dsh.tgz +0 -0
  15. package/bundles/manifest.json +10 -0
  16. package/client/index.js +434 -307
  17. package/cordis.patch.yml +7 -16
  18. package/node_modules/better-dsh/LICENSE +24 -0
  19. package/node_modules/better-dsh/README.md +323 -0
  20. package/node_modules/better-dsh/THIRD_PARTY_NOTICES.md +52 -0
  21. package/node_modules/better-dsh/cordis.patch.yml +139 -0
  22. package/node_modules/better-dsh/docs/00_adr/0001-bridge-tool-layer-not-service-layer.md +14 -0
  23. package/node_modules/better-dsh/docs/00_adr/0002-masking-is-presentation-only.md +15 -0
  24. package/node_modules/better-dsh/docs/10_plans/2026-09-23-remote-execution-framework.md +236 -0
  25. package/node_modules/better-dsh/docs/10_plans/2026-09-23-remote-framework-impl.md +2083 -0
  26. package/node_modules/better-dsh/docs/10_plans/2026-09-26-lsp-ast-reminder.md +64 -0
  27. package/node_modules/better-dsh/docs/10_plans/A2A-messaging-channel-test-archive.md +256 -0
  28. package/node_modules/better-dsh/docs/10_plans/code-mode-vs-rlm-ipython-comparison.md +137 -0
  29. package/node_modules/better-dsh/docs/10_plans/dashr-blueprint-review.md +201 -0
  30. package/node_modules/better-dsh/docs/10_plans/dashr-blueprint.md +561 -0
  31. package/node_modules/better-dsh/docs/10_plans/dashr-compaction-window-and-archive.md +307 -0
  32. package/node_modules/better-dsh/docs/10_plans/dashr-profile-layer-feasibility.md +367 -0
  33. package/node_modules/better-dsh/docs/10_plans/dashr-sandbox-escalation-semantics-gap.md +171 -0
  34. package/node_modules/better-dsh/docs/10_plans/dashr-security-sandbox-analysis.md +187 -0
  35. package/node_modules/better-dsh/docs/10_plans/dashr-surface-invariant-and-omp-imports.md +97 -0
  36. package/node_modules/better-dsh/docs/10_plans/ipython-kernel-interactive-interface-test-report.md +152 -0
  37. package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-IPython-Control-Prompt-draft.md +146 -0
  38. package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-IPython-Control-Prompt-draft_v3.md +50 -0
  39. package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-IPython-Control-Prompt-draft_v4.md +79 -0
  40. package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-vs-PrimeAgent-systemprompt-toolcatalog-comparison.md +138 -0
  41. package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/RLM-system-prompt-injection-gap-report.md +161 -0
  42. package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/V0.1.5-development-plan.md +109 -0
  43. package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/actinoable-surface-to-llm-in-agent-runtime_dsh.md +50 -0
  44. package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/actinoable-surface-to-llm-in-agent-runtime_prime.md +113 -0
  45. package/node_modules/better-dsh/docs/10_plans/recallable-compaction.md +147 -0
  46. package/node_modules/better-dsh/docs/10_plans/spike-tag-repro.mjs +102 -0
  47. package/node_modules/better-dsh/docs/10_plans/upstream-analysis.md +128 -0
  48. package/node_modules/better-dsh/docs/20_specs/agent/spec.md +54 -0
  49. package/node_modules/better-dsh/docs/20_specs/ast/spec.md +57 -0
  50. package/node_modules/better-dsh/docs/20_specs/compaction-recall/spec.md +46 -0
  51. package/node_modules/better-dsh/docs/20_specs/ctx/spec.md +107 -0
  52. package/node_modules/better-dsh/docs/20_specs/dsh/spec.md +47 -0
  53. package/node_modules/better-dsh/docs/20_specs/dvc/spec.md +106 -0
  54. package/node_modules/better-dsh/docs/20_specs/escalation-guidance/spec.md +44 -0
  55. package/node_modules/better-dsh/docs/20_specs/fs-scheme-resolution/spec.md +37 -0
  56. package/node_modules/better-dsh/docs/20_specs/hash-edit/spec.md +41 -0
  57. package/node_modules/better-dsh/docs/20_specs/http-read/spec.md +73 -0
  58. package/node_modules/better-dsh/docs/20_specs/kernel-provisioning/spec.md +53 -0
  59. package/node_modules/better-dsh/docs/20_specs/lsp/spec.md +121 -0
  60. package/node_modules/better-dsh/docs/20_specs/mobile-layout/spec.md +108 -0
  61. package/node_modules/better-dsh/docs/20_specs/model-failover/spec.md +20 -0
  62. package/node_modules/better-dsh/docs/20_specs/plugins-page-components/spec.md +79 -0
  63. package/node_modules/better-dsh/docs/20_specs/preact-ui-shell/spec.md +22 -0
  64. package/node_modules/better-dsh/docs/20_specs/repl-dispatch-resilience/spec.md +21 -0
  65. package/node_modules/better-dsh/docs/20_specs/skill/spec.md +58 -0
  66. package/node_modules/better-dsh/docs/20_specs/tool-surface/spec.md +222 -0
  67. package/node_modules/better-dsh/docs/20_specs/url-schema/spec.md +148 -0
  68. package/node_modules/better-dsh/docs/20_specs/web-trust-fence/spec.md +43 -0
  69. 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
  70. 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
  71. 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
  72. 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
  73. 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
  74. 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
  75. 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
  76. 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
  77. 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
  78. 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
  79. 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
  80. 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
  81. 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
  82. 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
  83. 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
  84. 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
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. 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
  91. 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
  92. 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
  93. 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
  94. 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
  95. 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
  96. 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
  97. 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
  98. 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
  99. 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
  100. 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
  101. 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
  102. 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
  103. 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
  104. package/node_modules/better-dsh/docs/50_test-reports/2026-10-06-authentication-only-web-admission-4999.md +63 -0
  105. package/node_modules/better-dsh/docs/50_test-reports/2026-10-07-better-dsh-welcome-self-contained-4999.md +52 -0
  106. 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
  107. package/node_modules/better-dsh/docs/50_test-reports/kernel-provisioning.md +44 -0
  108. package/node_modules/better-dsh/docs/50_test-reports/repl-kernel-provisioning-test-report.md +87 -0
  109. package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.2-alpha.5-local-test-report.md +81 -0
  110. package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.2-alpha.5-report.md +93 -0
  111. package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.3-alpha.2-local-test-report.md +44 -0
  112. package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.3-alpha.2-report.md +110 -0
  113. package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.5-rc.2-local-test-report.md +79 -0
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. 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
  123. 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
  124. 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
  125. 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
  126. 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
  127. package/node_modules/better-dsh/docs/50_test-reports/v0.2.1ef-dev-audit-report.md +73 -0
  128. 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
  129. 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
  130. 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
  131. 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
  132. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/SKILL.md +147 -0
  133. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch01-user-guide.md +123 -0
  134. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch02-plugin-basics.md +127 -0
  135. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch03-plugin-framework-practice.md +120 -0
  136. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch04-cordis-fundamentals.md +129 -0
  137. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch05-cordis-api.md +115 -0
  138. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch06-architecture.md +109 -0
  139. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch07-capability-seams.md +97 -0
  140. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch08-internals-pipelines.md +111 -0
  141. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch09-api-gateway.md +106 -0
  142. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch10-config-catalog.md +97 -0
  143. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch11-tool-catalog.md +121 -0
  144. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch12-persistence-catalog.md +109 -0
  145. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch13-subsystems-core-session.md +106 -0
  146. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch14-subsystems-agent-loop.md +111 -0
  147. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch15-subsystems-tool-execution.md +106 -0
  148. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch16-subsystems-session-data.md +132 -0
  149. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch17-subsystems-llm-streaming.md +128 -0
  150. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch18-subsystems-web-ui.md +142 -0
  151. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch19-cookbook.md +149 -0
  152. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch20-development-testing.md +87 -0
  153. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch21-postmortems.md +82 -0
  154. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch22-i18n.md +86 -0
  155. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/cheatsheet.md +67 -0
  156. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/glossary.md +57 -0
  157. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/patterns.md +88 -0
  158. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/AGENTS.md +75 -0
  159. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/agent-lifecycle.md +84 -0
  160. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/agent-lifecycle.zh.md +86 -0
  161. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/api-gateway.md +164 -0
  162. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/api-gateway.zh.md +164 -0
  163. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/architecture.md +150 -0
  164. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/architecture.zh.md +154 -0
  165. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/capability-seams.md +543 -0
  166. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/capability-seams.zh.md +545 -0
  167. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/config-catalog.md +3473 -0
  168. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/config-catalog.zh.md +3474 -0
  169. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-package.md +117 -0
  170. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-package.zh.md +119 -0
  171. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-remote-api.md +197 -0
  172. 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
  173. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-settings-card.md +102 -0
  174. 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
  175. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-tool.md +101 -0
  176. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-tool.zh.md +103 -0
  177. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-vendored-package.md +59 -0
  178. 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
  179. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-an-llm-adapter.md +43 -0
  180. 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
  181. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/extension-cookbook.md +132 -0
  182. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/extension-cookbook.zh.md +136 -0
  183. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/maintaining-dsh-code-review.md +64 -0
  184. 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
  185. 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
  186. 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
  187. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/context.md +364 -0
  188. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/context.zh.md +366 -0
  189. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/events.md +207 -0
  190. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/events.zh.md +209 -0
  191. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/fiber.md +375 -0
  192. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/fiber.zh.md +377 -0
  193. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/inherited.md +39 -0
  194. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/registry.md +152 -0
  195. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/registry.zh.md +154 -0
  196. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/service.md +102 -0
  197. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/service.zh.md +104 -0
  198. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-primer.md +45 -0
  199. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-primer.zh.md +51 -0
  200. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/01-first-plugin.md +95 -0
  201. 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
  202. 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
  203. 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
  204. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/03-services.md +98 -0
  205. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/03-services.zh.md +98 -0
  206. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/04-events.md +144 -0
  207. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/04-events.zh.md +144 -0
  208. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/05-config.md +84 -0
  209. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/05-config.zh.md +84 -0
  210. 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
  211. 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
  212. 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
  213. 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
  214. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/index.md +60 -0
  215. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/index.zh.md +62 -0
  216. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/deepseek-llm-api-wire-extensions.md +163 -0
  217. 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
  218. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/defensive-patterns.md +33 -0
  219. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/defensive-patterns.zh.md +35 -0
  220. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/development.md +167 -0
  221. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/development.zh.md +173 -0
  222. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/event-producer-consumer.md +86 -0
  223. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/event-producer-consumer.zh.md +88 -0
  224. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/glossary.md +45 -0
  225. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/glossary.zh.md +45 -0
  226. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/graph-atlas.md +22 -0
  227. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/graph-atlas.zh.md +24 -0
  228. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/README.md +60 -0
  229. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/README.zh.md +62 -0
  230. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/style-samples.md +87 -0
  231. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/terminology.md +214 -0
  232. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/translation-prompt.md +263 -0
  233. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/translation-rules.md +69 -0
  234. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/translation-rules.zh.md +69 -0
  235. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/module-graph.md +1411 -0
  236. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/module-graph.zh.md +1413 -0
  237. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/persistence-catalog.md +1075 -0
  238. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/persistence-catalog.zh.md +1077 -0
  239. 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
  240. 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
  241. 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
  242. 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
  243. 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
  244. 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
  245. 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
  246. 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
  247. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/README.md +18 -0
  248. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/README.zh.md +18 -0
  249. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/rescope.md +53 -0
  250. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/rescope.zh.md +53 -0
  251. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/README.md +61 -0
  252. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/README.zh.md +61 -0
  253. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/agent-team.md +207 -0
  254. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/agent-team.zh.md +207 -0
  255. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/approval.md +170 -0
  256. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/approval.zh.md +170 -0
  257. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/attachment.md +351 -0
  258. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/attachment.zh.md +351 -0
  259. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/client-modules.md +168 -0
  260. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/client-modules.zh.md +168 -0
  261. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/code-runtime.md +195 -0
  262. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/code-runtime.zh.md +195 -0
  263. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/commands.md +219 -0
  264. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/commands.zh.md +219 -0
  265. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/compaction.md +238 -0
  266. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/compaction.zh.md +238 -0
  267. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/conversation.md +258 -0
  268. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/conversation.zh.md +258 -0
  269. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/core.md +1209 -0
  270. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/core.zh.md +1219 -0
  271. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/credentials.md +329 -0
  272. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/credentials.zh.md +329 -0
  273. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/extensions.md +382 -0
  274. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/extensions.zh.md +382 -0
  275. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/feedback.md +266 -0
  276. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/feedback.zh.md +266 -0
  277. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/filesystem.md +505 -0
  278. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/filesystem.zh.md +505 -0
  279. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/goal.md +277 -0
  280. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/goal.zh.md +277 -0
  281. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/invariants.md +88 -0
  282. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/invariants.zh.md +88 -0
  283. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/jobs.md +290 -0
  284. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/jobs.zh.md +290 -0
  285. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/llm-streaming.md +1080 -0
  286. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/llm-streaming.zh.md +1086 -0
  287. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/lsp.md +202 -0
  288. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/lsp.zh.md +202 -0
  289. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/permission-presets.md +131 -0
  290. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/permission-presets.zh.md +131 -0
  291. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/persistence.md +395 -0
  292. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/persistence.zh.md +395 -0
  293. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/plan.md +87 -0
  294. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/plan.zh.md +87 -0
  295. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/sandbox.md +220 -0
  296. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/sandbox.zh.md +220 -0
  297. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/schedule.md +192 -0
  298. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/schedule.zh.md +192 -0
  299. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/scope.md +59 -0
  300. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/scope.zh.md +59 -0
  301. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-projection.md +354 -0
  302. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-projection.zh.md +354 -0
  303. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-query.md +509 -0
  304. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-query.zh.md +509 -0
  305. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-reference.md +219 -0
  306. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-reference.zh.md +219 -0
  307. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-telemetry.md +194 -0
  308. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-telemetry.zh.md +194 -0
  309. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-title.md +204 -0
  310. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-title.zh.md +204 -0
  311. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session.md +1155 -0
  312. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session.zh.md +1159 -0
  313. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/settings.md +405 -0
  314. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/settings.zh.md +405 -0
  315. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/shell.md +303 -0
  316. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/shell.zh.md +303 -0
  317. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/skills.md +354 -0
  318. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/skills.zh.md +354 -0
  319. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/slots.md +175 -0
  320. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/slots.zh.md +175 -0
  321. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/spill.md +117 -0
  322. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/spill.zh.md +117 -0
  323. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/storage.md +260 -0
  324. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/storage.zh.md +260 -0
  325. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subagent.md +766 -0
  326. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subagent.zh.md +770 -0
  327. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subprocess.md +324 -0
  328. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subprocess.zh.md +324 -0
  329. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/system-prompt.md +220 -0
  330. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/system-prompt.zh.md +220 -0
  331. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/terminal.md +184 -0
  332. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/terminal.zh.md +184 -0
  333. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/todo.md +32 -0
  334. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/todo.zh.md +32 -0
  335. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/token-meter.md +105 -0
  336. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/token-meter.zh.md +105 -0
  337. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/tools.md +720 -0
  338. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/tools.zh.md +720 -0
  339. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/typert.md +343 -0
  340. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/typert.zh.md +343 -0
  341. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/user-questions.md +178 -0
  342. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/user-questions.zh.md +178 -0
  343. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-client.md +95 -0
  344. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-client.zh.md +95 -0
  345. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-server.md +154 -0
  346. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-server.zh.md +154 -0
  347. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web.md +206 -0
  348. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web.zh.md +206 -0
  349. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/webhook.md +70 -0
  350. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/webhook.zh.md +70 -0
  351. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workflow.md +278 -0
  352. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workflow.zh.md +278 -0
  353. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workspace.md +321 -0
  354. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workspace.zh.md +321 -0
  355. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/testing.md +54 -0
  356. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/testing.zh.md +54 -0
  357. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-catalog.md +2225 -0
  358. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-catalog.zh.md +2233 -0
  359. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-execution-pipeline.md +62 -0
  360. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-execution-pipeline.zh.md +64 -0
  361. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/config.md +106 -0
  362. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/config.zh.md +106 -0
  363. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/index.md +144 -0
  364. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/index.zh.md +144 -0
  365. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/publish.md +183 -0
  366. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/publish.zh.md +183 -0
  367. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/tool.md +52 -0
  368. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/tool.zh.md +52 -0
  369. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/events.md +143 -0
  370. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/events.zh.md +143 -0
  371. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/index.md +137 -0
  372. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/index.zh.md +137 -0
  373. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/service.md +148 -0
  374. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/service.zh.md +150 -0
  375. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/dynamic-cordis.md +15 -0
  376. 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
  377. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/index.md +155 -0
  378. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/index.zh.md +155 -0
  379. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/llm-adapter.md +189 -0
  380. 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
  381. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/github-review.md +102 -0
  382. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/github-review.zh.md +102 -0
  383. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/index.md +30 -0
  384. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/index.zh.md +30 -0
  385. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/mcp-memory.md +101 -0
  386. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/mcp-memory.zh.md +101 -0
  387. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/network-proxy.md +85 -0
  388. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/network-proxy.zh.md +85 -0
  389. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/providers.md +190 -0
  390. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/providers.zh.md +190 -0
  391. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/python-sdk.md +150 -0
  392. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/python-sdk.zh.md +150 -0
  393. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/schedule.md +21 -0
  394. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/schedule.zh.md +21 -0
  395. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/index.md +11 -0
  396. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/index.zh.md +11 -0
  397. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/web-styling.md +29 -0
  398. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/web-styling.zh.md +29 -0
  399. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/site-pages-map.txt +234 -0
  400. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/site-pages.json +232 -0
  401. package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src-README.md +63 -0
  402. package/node_modules/better-dsh/docs/dev-test-environment-notes.md +137 -0
  403. package/node_modules/better-dsh/docs/distro-blueprint.md +81 -0
  404. package/node_modules/better-dsh/docs/dsh-webUI-with-rlm-mode.png +0 -0
  405. package/node_modules/better-dsh/docs/repositioning-and-rebranding.md +102 -0
  406. package/node_modules/better-dsh/docs/specs/agent/spec.md +54 -0
  407. package/node_modules/better-dsh/docs/specs/ast/spec.md +57 -0
  408. package/node_modules/better-dsh/docs/specs/ast-engine-deomp/spec.md +170 -0
  409. package/node_modules/better-dsh/docs/specs/authentication-only-web-admission/spec.md +51 -0
  410. package/node_modules/better-dsh/docs/specs/compaction-recall/spec.md +46 -0
  411. package/node_modules/better-dsh/docs/specs/ctx/spec.md +179 -0
  412. package/node_modules/better-dsh/docs/specs/docs-packaging-trim/spec.md +110 -0
  413. package/node_modules/better-dsh/docs/specs/dsh/spec.md +47 -0
  414. package/node_modules/better-dsh/docs/specs/dvc/spec.md +106 -0
  415. package/node_modules/better-dsh/docs/specs/escalation-guidance/spec.md +44 -0
  416. package/node_modules/better-dsh/docs/specs/fs-scheme-resolution/spec.md +37 -0
  417. package/node_modules/better-dsh/docs/specs/hash-edit/spec.md +41 -0
  418. package/node_modules/better-dsh/docs/specs/http-read/spec.md +73 -0
  419. package/node_modules/better-dsh/docs/specs/kernel-provisioning/spec.md +53 -0
  420. package/node_modules/better-dsh/docs/specs/lsp/spec.md +121 -0
  421. package/node_modules/better-dsh/docs/specs/mobile-layout/spec.md +108 -0
  422. package/node_modules/better-dsh/docs/specs/model-failover/spec.md +20 -0
  423. package/node_modules/better-dsh/docs/specs/model-picker-ios-blur/spec.md +168 -0
  424. package/node_modules/better-dsh/docs/specs/plugins-page-components/spec.md +79 -0
  425. package/node_modules/better-dsh/docs/specs/preact-ui-shell/spec.md +22 -0
  426. package/node_modules/better-dsh/docs/specs/remote-pty-label/spec.md +126 -0
  427. package/node_modules/better-dsh/docs/specs/repl-dispatch-resilience/spec.md +21 -0
  428. package/node_modules/better-dsh/docs/specs/skill/spec.md +58 -0
  429. package/node_modules/better-dsh/docs/specs/tool-surface/spec.md +222 -0
  430. package/node_modules/better-dsh/docs/specs/url-schema/spec.md +148 -0
  431. package/node_modules/better-dsh/docs/specs/web-trust-fence/spec.md +43 -0
  432. package/node_modules/better-dsh/docs/specs/welcome-self-contained/spec.md +13 -0
  433. package/node_modules/better-dsh/docs/specs/zero-npm-runtime-deps/spec.md +85 -0
  434. package/node_modules/better-dsh/docs/superpowers/plans/2026-10-02-ctx-navigation.md +319 -0
  435. package/node_modules/better-dsh/docs/superpowers/plans/2026-10-03-ast-engine-deomp.md +1214 -0
  436. package/node_modules/better-dsh/docs/superpowers/plans/2026-10-03-docs-packaging-trim.md +181 -0
  437. package/node_modules/better-dsh/docs/superpowers/specs/2026-10-02-ctx-navigation-design.md +209 -0
  438. package/node_modules/better-dsh/docs/upstream-dsh-0.1.5-rc.2-report.md +156 -0
  439. package/node_modules/better-dsh/dsh-docs/AGENTS.md +75 -0
  440. package/node_modules/better-dsh/dsh-docs/agent-lifecycle.md +84 -0
  441. package/node_modules/better-dsh/dsh-docs/agent-lifecycle.zh.md +86 -0
  442. package/node_modules/better-dsh/dsh-docs/api-gateway.md +164 -0
  443. package/node_modules/better-dsh/dsh-docs/api-gateway.zh.md +164 -0
  444. package/node_modules/better-dsh/dsh-docs/architecture.md +150 -0
  445. package/node_modules/better-dsh/dsh-docs/architecture.zh.md +154 -0
  446. package/node_modules/better-dsh/dsh-docs/capability-seams.md +543 -0
  447. package/node_modules/better-dsh/dsh-docs/capability-seams.zh.md +545 -0
  448. package/node_modules/better-dsh/dsh-docs/config-catalog.md +3473 -0
  449. package/node_modules/better-dsh/dsh-docs/config-catalog.zh.md +3474 -0
  450. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-package.md +117 -0
  451. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-package.zh.md +119 -0
  452. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-remote-api.md +197 -0
  453. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-remote-api.zh.md +197 -0
  454. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-session-format-version.md +109 -0
  455. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-session-format-version.zh.md +109 -0
  456. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-settings-card.md +102 -0
  457. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-settings-card.zh.md +102 -0
  458. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-tool.md +101 -0
  459. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-tool.zh.md +103 -0
  460. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-vendored-package.md +59 -0
  461. package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-vendored-package.zh.md +59 -0
  462. package/node_modules/better-dsh/dsh-docs/cookbook/adding-an-llm-adapter.md +43 -0
  463. package/node_modules/better-dsh/dsh-docs/cookbook/adding-an-llm-adapter.zh.md +43 -0
  464. package/node_modules/better-dsh/dsh-docs/cookbook/extension-cookbook.md +132 -0
  465. package/node_modules/better-dsh/dsh-docs/cookbook/extension-cookbook.zh.md +136 -0
  466. package/node_modules/better-dsh/dsh-docs/cookbook/maintaining-dsh-code-review.md +64 -0
  467. package/node_modules/better-dsh/dsh-docs/cookbook/maintaining-dsh-code-review.zh.md +64 -0
  468. package/node_modules/better-dsh/dsh-docs/cookbook/responding-to-pr-review-on-a-stack.md +32 -0
  469. package/node_modules/better-dsh/dsh-docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +32 -0
  470. package/node_modules/better-dsh/dsh-docs/cordis-api/context.md +364 -0
  471. package/node_modules/better-dsh/dsh-docs/cordis-api/context.zh.md +366 -0
  472. package/node_modules/better-dsh/dsh-docs/cordis-api/events.md +207 -0
  473. package/node_modules/better-dsh/dsh-docs/cordis-api/events.zh.md +209 -0
  474. package/node_modules/better-dsh/dsh-docs/cordis-api/fiber.md +375 -0
  475. package/node_modules/better-dsh/dsh-docs/cordis-api/fiber.zh.md +377 -0
  476. package/node_modules/better-dsh/dsh-docs/cordis-api/inherited.md +39 -0
  477. package/node_modules/better-dsh/dsh-docs/cordis-api/registry.md +152 -0
  478. package/node_modules/better-dsh/dsh-docs/cordis-api/registry.zh.md +154 -0
  479. package/node_modules/better-dsh/dsh-docs/cordis-api/service.md +102 -0
  480. package/node_modules/better-dsh/dsh-docs/cordis-api/service.zh.md +104 -0
  481. package/node_modules/better-dsh/dsh-docs/cordis-primer.md +45 -0
  482. package/node_modules/better-dsh/dsh-docs/cordis-primer.zh.md +51 -0
  483. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/01-first-plugin.md +95 -0
  484. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/01-first-plugin.zh.md +95 -0
  485. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/02-lifecycle-and-effects.md +98 -0
  486. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +98 -0
  487. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/03-services.md +98 -0
  488. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/03-services.zh.md +98 -0
  489. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/04-events.md +144 -0
  490. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/04-events.zh.md +144 -0
  491. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/05-config.md +84 -0
  492. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/05-config.zh.md +84 -0
  493. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/06-composition-and-hmr.md +113 -0
  494. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/06-composition-and-hmr.zh.md +113 -0
  495. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/07-into-the-harness.md +108 -0
  496. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/07-into-the-harness.zh.md +108 -0
  497. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/index.md +60 -0
  498. package/node_modules/better-dsh/dsh-docs/cordis-tutorial/index.zh.md +62 -0
  499. package/node_modules/better-dsh/dsh-docs/deepseek-llm-api-wire-extensions.md +163 -0
  500. package/node_modules/better-dsh/dsh-docs/deepseek-llm-api-wire-extensions.zh.md +163 -0
  501. package/node_modules/better-dsh/dsh-docs/defensive-patterns.md +33 -0
  502. package/node_modules/better-dsh/dsh-docs/defensive-patterns.zh.md +35 -0
  503. package/node_modules/better-dsh/dsh-docs/development.md +167 -0
  504. package/node_modules/better-dsh/dsh-docs/development.zh.md +173 -0
  505. package/node_modules/better-dsh/dsh-docs/event-producer-consumer.md +86 -0
  506. package/node_modules/better-dsh/dsh-docs/event-producer-consumer.zh.md +88 -0
  507. package/node_modules/better-dsh/dsh-docs/glossary.md +45 -0
  508. package/node_modules/better-dsh/dsh-docs/glossary.zh.md +45 -0
  509. package/node_modules/better-dsh/dsh-docs/graph-atlas.md +22 -0
  510. package/node_modules/better-dsh/dsh-docs/graph-atlas.zh.md +24 -0
  511. package/node_modules/better-dsh/dsh-docs/i18n/README.md +60 -0
  512. package/node_modules/better-dsh/dsh-docs/i18n/README.zh.md +62 -0
  513. package/node_modules/better-dsh/dsh-docs/i18n/style-samples.md +87 -0
  514. package/node_modules/better-dsh/dsh-docs/i18n/terminology.md +214 -0
  515. package/node_modules/better-dsh/dsh-docs/i18n/translation-prompt.md +263 -0
  516. package/node_modules/better-dsh/dsh-docs/i18n/translation-rules.md +69 -0
  517. package/node_modules/better-dsh/dsh-docs/i18n/translation-rules.zh.md +69 -0
  518. package/node_modules/better-dsh/dsh-docs/module-graph.md +1411 -0
  519. package/node_modules/better-dsh/dsh-docs/module-graph.zh.md +1413 -0
  520. package/node_modules/better-dsh/dsh-docs/persistence-catalog.md +1075 -0
  521. package/node_modules/better-dsh/dsh-docs/persistence-catalog.zh.md +1077 -0
  522. package/node_modules/better-dsh/dsh-docs/postmortem/0001-acp-default-export-drops-inject.md +113 -0
  523. package/node_modules/better-dsh/dsh-docs/postmortem/0001-acp-default-export-drops-inject.zh.md +113 -0
  524. package/node_modules/better-dsh/dsh-docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +47 -0
  525. package/node_modules/better-dsh/dsh-docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +47 -0
  526. package/node_modules/better-dsh/dsh-docs/postmortem/0003-web-agent-gui-feedback-loop.md +53 -0
  527. package/node_modules/better-dsh/dsh-docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +53 -0
  528. package/node_modules/better-dsh/dsh-docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +55 -0
  529. package/node_modules/better-dsh/dsh-docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +55 -0
  530. package/node_modules/better-dsh/dsh-docs/postmortem/README.md +18 -0
  531. package/node_modules/better-dsh/dsh-docs/postmortem/README.zh.md +18 -0
  532. package/node_modules/better-dsh/dsh-docs/rescope.md +53 -0
  533. package/node_modules/better-dsh/dsh-docs/rescope.zh.md +53 -0
  534. package/node_modules/better-dsh/dsh-docs/session-format-status.md +47 -0
  535. package/node_modules/better-dsh/dsh-docs/session-format-status.zh.md +47 -0
  536. package/node_modules/better-dsh/dsh-docs/subsystems/README.md +61 -0
  537. package/node_modules/better-dsh/dsh-docs/subsystems/README.zh.md +61 -0
  538. package/node_modules/better-dsh/dsh-docs/subsystems/agent-team.md +207 -0
  539. package/node_modules/better-dsh/dsh-docs/subsystems/agent-team.zh.md +207 -0
  540. package/node_modules/better-dsh/dsh-docs/subsystems/approval.md +170 -0
  541. package/node_modules/better-dsh/dsh-docs/subsystems/approval.zh.md +170 -0
  542. package/node_modules/better-dsh/dsh-docs/subsystems/attachment.md +351 -0
  543. package/node_modules/better-dsh/dsh-docs/subsystems/attachment.zh.md +351 -0
  544. package/node_modules/better-dsh/dsh-docs/subsystems/client-modules.md +168 -0
  545. package/node_modules/better-dsh/dsh-docs/subsystems/client-modules.zh.md +168 -0
  546. package/node_modules/better-dsh/dsh-docs/subsystems/client-resources.md +91 -0
  547. package/node_modules/better-dsh/dsh-docs/subsystems/client-resources.zh.md +91 -0
  548. package/node_modules/better-dsh/dsh-docs/subsystems/code-runtime.md +195 -0
  549. package/node_modules/better-dsh/dsh-docs/subsystems/code-runtime.zh.md +195 -0
  550. package/node_modules/better-dsh/dsh-docs/subsystems/commands.md +219 -0
  551. package/node_modules/better-dsh/dsh-docs/subsystems/commands.zh.md +219 -0
  552. package/node_modules/better-dsh/dsh-docs/subsystems/compaction.md +238 -0
  553. package/node_modules/better-dsh/dsh-docs/subsystems/compaction.zh.md +238 -0
  554. package/node_modules/better-dsh/dsh-docs/subsystems/conversation.md +258 -0
  555. package/node_modules/better-dsh/dsh-docs/subsystems/conversation.zh.md +258 -0
  556. package/node_modules/better-dsh/dsh-docs/subsystems/core.md +1209 -0
  557. package/node_modules/better-dsh/dsh-docs/subsystems/core.zh.md +1219 -0
  558. package/node_modules/better-dsh/dsh-docs/subsystems/credentials.md +329 -0
  559. package/node_modules/better-dsh/dsh-docs/subsystems/credentials.zh.md +329 -0
  560. package/node_modules/better-dsh/dsh-docs/subsystems/extensions.md +382 -0
  561. package/node_modules/better-dsh/dsh-docs/subsystems/extensions.zh.md +382 -0
  562. package/node_modules/better-dsh/dsh-docs/subsystems/feedback.md +266 -0
  563. package/node_modules/better-dsh/dsh-docs/subsystems/feedback.zh.md +266 -0
  564. package/node_modules/better-dsh/dsh-docs/subsystems/filesystem.md +505 -0
  565. package/node_modules/better-dsh/dsh-docs/subsystems/filesystem.zh.md +505 -0
  566. package/node_modules/better-dsh/dsh-docs/subsystems/goal.md +277 -0
  567. package/node_modules/better-dsh/dsh-docs/subsystems/goal.zh.md +277 -0
  568. package/node_modules/better-dsh/dsh-docs/subsystems/invariants.md +88 -0
  569. package/node_modules/better-dsh/dsh-docs/subsystems/invariants.zh.md +88 -0
  570. package/node_modules/better-dsh/dsh-docs/subsystems/jobs.md +290 -0
  571. package/node_modules/better-dsh/dsh-docs/subsystems/jobs.zh.md +290 -0
  572. package/node_modules/better-dsh/dsh-docs/subsystems/llm-streaming.md +1080 -0
  573. package/node_modules/better-dsh/dsh-docs/subsystems/llm-streaming.zh.md +1086 -0
  574. package/node_modules/better-dsh/dsh-docs/subsystems/lsp.md +202 -0
  575. package/node_modules/better-dsh/dsh-docs/subsystems/lsp.zh.md +202 -0
  576. package/node_modules/better-dsh/dsh-docs/subsystems/permission-presets.md +131 -0
  577. package/node_modules/better-dsh/dsh-docs/subsystems/permission-presets.zh.md +131 -0
  578. package/node_modules/better-dsh/dsh-docs/subsystems/persistence.md +395 -0
  579. package/node_modules/better-dsh/dsh-docs/subsystems/persistence.zh.md +395 -0
  580. package/node_modules/better-dsh/dsh-docs/subsystems/plan.md +87 -0
  581. package/node_modules/better-dsh/dsh-docs/subsystems/plan.zh.md +87 -0
  582. package/node_modules/better-dsh/dsh-docs/subsystems/sandbox.md +220 -0
  583. package/node_modules/better-dsh/dsh-docs/subsystems/sandbox.zh.md +220 -0
  584. package/node_modules/better-dsh/dsh-docs/subsystems/schedule.md +192 -0
  585. package/node_modules/better-dsh/dsh-docs/subsystems/schedule.zh.md +192 -0
  586. package/node_modules/better-dsh/dsh-docs/subsystems/scope.md +59 -0
  587. package/node_modules/better-dsh/dsh-docs/subsystems/scope.zh.md +59 -0
  588. package/node_modules/better-dsh/dsh-docs/subsystems/session-projection.md +354 -0
  589. package/node_modules/better-dsh/dsh-docs/subsystems/session-projection.zh.md +354 -0
  590. package/node_modules/better-dsh/dsh-docs/subsystems/session-query.md +509 -0
  591. package/node_modules/better-dsh/dsh-docs/subsystems/session-query.zh.md +509 -0
  592. package/node_modules/better-dsh/dsh-docs/subsystems/session-reference.md +219 -0
  593. package/node_modules/better-dsh/dsh-docs/subsystems/session-reference.zh.md +219 -0
  594. package/node_modules/better-dsh/dsh-docs/subsystems/session-telemetry.md +194 -0
  595. package/node_modules/better-dsh/dsh-docs/subsystems/session-telemetry.zh.md +194 -0
  596. package/node_modules/better-dsh/dsh-docs/subsystems/session-title.md +204 -0
  597. package/node_modules/better-dsh/dsh-docs/subsystems/session-title.zh.md +204 -0
  598. package/node_modules/better-dsh/dsh-docs/subsystems/session.md +1155 -0
  599. package/node_modules/better-dsh/dsh-docs/subsystems/session.zh.md +1159 -0
  600. package/node_modules/better-dsh/dsh-docs/subsystems/settings.md +405 -0
  601. package/node_modules/better-dsh/dsh-docs/subsystems/settings.zh.md +405 -0
  602. package/node_modules/better-dsh/dsh-docs/subsystems/shell.md +303 -0
  603. package/node_modules/better-dsh/dsh-docs/subsystems/shell.zh.md +303 -0
  604. package/node_modules/better-dsh/dsh-docs/subsystems/sidebar-right.md +148 -0
  605. package/node_modules/better-dsh/dsh-docs/subsystems/sidebar-right.zh.md +148 -0
  606. package/node_modules/better-dsh/dsh-docs/subsystems/skills.md +354 -0
  607. package/node_modules/better-dsh/dsh-docs/subsystems/skills.zh.md +354 -0
  608. package/node_modules/better-dsh/dsh-docs/subsystems/slots.md +175 -0
  609. package/node_modules/better-dsh/dsh-docs/subsystems/slots.zh.md +175 -0
  610. package/node_modules/better-dsh/dsh-docs/subsystems/spill.md +117 -0
  611. package/node_modules/better-dsh/dsh-docs/subsystems/spill.zh.md +117 -0
  612. package/node_modules/better-dsh/dsh-docs/subsystems/storage.md +260 -0
  613. package/node_modules/better-dsh/dsh-docs/subsystems/storage.zh.md +260 -0
  614. package/node_modules/better-dsh/dsh-docs/subsystems/subagent.md +766 -0
  615. package/node_modules/better-dsh/dsh-docs/subsystems/subagent.zh.md +770 -0
  616. package/node_modules/better-dsh/dsh-docs/subsystems/subprocess.md +324 -0
  617. package/node_modules/better-dsh/dsh-docs/subsystems/subprocess.zh.md +324 -0
  618. package/node_modules/better-dsh/dsh-docs/subsystems/system-prompt.md +220 -0
  619. package/node_modules/better-dsh/dsh-docs/subsystems/system-prompt.zh.md +220 -0
  620. package/node_modules/better-dsh/dsh-docs/subsystems/terminal.md +184 -0
  621. package/node_modules/better-dsh/dsh-docs/subsystems/terminal.zh.md +184 -0
  622. package/node_modules/better-dsh/dsh-docs/subsystems/todo.md +32 -0
  623. package/node_modules/better-dsh/dsh-docs/subsystems/todo.zh.md +32 -0
  624. package/node_modules/better-dsh/dsh-docs/subsystems/token-meter.md +105 -0
  625. package/node_modules/better-dsh/dsh-docs/subsystems/token-meter.zh.md +105 -0
  626. package/node_modules/better-dsh/dsh-docs/subsystems/tools.md +720 -0
  627. package/node_modules/better-dsh/dsh-docs/subsystems/tools.zh.md +720 -0
  628. package/node_modules/better-dsh/dsh-docs/subsystems/typert.md +343 -0
  629. package/node_modules/better-dsh/dsh-docs/subsystems/typert.zh.md +343 -0
  630. package/node_modules/better-dsh/dsh-docs/subsystems/user-questions.md +178 -0
  631. package/node_modules/better-dsh/dsh-docs/subsystems/user-questions.zh.md +178 -0
  632. package/node_modules/better-dsh/dsh-docs/subsystems/web-client.md +95 -0
  633. package/node_modules/better-dsh/dsh-docs/subsystems/web-client.zh.md +95 -0
  634. package/node_modules/better-dsh/dsh-docs/subsystems/web-server.md +154 -0
  635. package/node_modules/better-dsh/dsh-docs/subsystems/web-server.zh.md +154 -0
  636. package/node_modules/better-dsh/dsh-docs/subsystems/web.md +206 -0
  637. package/node_modules/better-dsh/dsh-docs/subsystems/web.zh.md +206 -0
  638. package/node_modules/better-dsh/dsh-docs/subsystems/webhook.md +70 -0
  639. package/node_modules/better-dsh/dsh-docs/subsystems/webhook.zh.md +70 -0
  640. package/node_modules/better-dsh/dsh-docs/subsystems/workflow.md +278 -0
  641. package/node_modules/better-dsh/dsh-docs/subsystems/workflow.zh.md +278 -0
  642. package/node_modules/better-dsh/dsh-docs/subsystems/workspace.md +321 -0
  643. package/node_modules/better-dsh/dsh-docs/subsystems/workspace.zh.md +321 -0
  644. package/node_modules/better-dsh/dsh-docs/testing.md +54 -0
  645. package/node_modules/better-dsh/dsh-docs/testing.zh.md +54 -0
  646. package/node_modules/better-dsh/dsh-docs/tool-catalog.md +2225 -0
  647. package/node_modules/better-dsh/dsh-docs/tool-catalog.zh.md +2233 -0
  648. package/node_modules/better-dsh/dsh-docs/tool-execution-pipeline.md +62 -0
  649. package/node_modules/better-dsh/dsh-docs/tool-execution-pipeline.zh.md +64 -0
  650. package/node_modules/better-dsh/dsh-docs/user/develop/basic/config.md +106 -0
  651. package/node_modules/better-dsh/dsh-docs/user/develop/basic/config.zh.md +106 -0
  652. package/node_modules/better-dsh/dsh-docs/user/develop/basic/index.md +144 -0
  653. package/node_modules/better-dsh/dsh-docs/user/develop/basic/index.zh.md +144 -0
  654. package/node_modules/better-dsh/dsh-docs/user/develop/basic/publish.md +183 -0
  655. package/node_modules/better-dsh/dsh-docs/user/develop/basic/publish.zh.md +183 -0
  656. package/node_modules/better-dsh/dsh-docs/user/develop/basic/tool.md +52 -0
  657. package/node_modules/better-dsh/dsh-docs/user/develop/basic/tool.zh.md +52 -0
  658. package/node_modules/better-dsh/dsh-docs/user/develop/framework/events.md +143 -0
  659. package/node_modules/better-dsh/dsh-docs/user/develop/framework/events.zh.md +143 -0
  660. package/node_modules/better-dsh/dsh-docs/user/develop/framework/index.md +137 -0
  661. package/node_modules/better-dsh/dsh-docs/user/develop/framework/index.zh.md +137 -0
  662. package/node_modules/better-dsh/dsh-docs/user/develop/framework/service.md +148 -0
  663. package/node_modules/better-dsh/dsh-docs/user/develop/framework/service.zh.md +150 -0
  664. package/node_modules/better-dsh/dsh-docs/user/develop/practice/dynamic-cordis.md +15 -0
  665. package/node_modules/better-dsh/dsh-docs/user/develop/practice/dynamic-cordis.zh.md +15 -0
  666. package/node_modules/better-dsh/dsh-docs/user/develop/practice/index.md +155 -0
  667. package/node_modules/better-dsh/dsh-docs/user/develop/practice/index.zh.md +155 -0
  668. package/node_modules/better-dsh/dsh-docs/user/develop/practice/llm-adapter.md +189 -0
  669. package/node_modules/better-dsh/dsh-docs/user/develop/practice/llm-adapter.zh.md +189 -0
  670. package/node_modules/better-dsh/dsh-docs/user/guide/github-review.md +102 -0
  671. package/node_modules/better-dsh/dsh-docs/user/guide/github-review.zh.md +102 -0
  672. package/node_modules/better-dsh/dsh-docs/user/guide/index.md +30 -0
  673. package/node_modules/better-dsh/dsh-docs/user/guide/index.zh.md +30 -0
  674. package/node_modules/better-dsh/dsh-docs/user/guide/mcp-memory.md +101 -0
  675. package/node_modules/better-dsh/dsh-docs/user/guide/mcp-memory.zh.md +101 -0
  676. package/node_modules/better-dsh/dsh-docs/user/guide/network-proxy.md +85 -0
  677. package/node_modules/better-dsh/dsh-docs/user/guide/network-proxy.zh.md +85 -0
  678. package/node_modules/better-dsh/dsh-docs/user/guide/providers.md +190 -0
  679. package/node_modules/better-dsh/dsh-docs/user/guide/providers.zh.md +190 -0
  680. package/node_modules/better-dsh/dsh-docs/user/guide/python-sdk.md +150 -0
  681. package/node_modules/better-dsh/dsh-docs/user/guide/python-sdk.zh.md +150 -0
  682. package/node_modules/better-dsh/dsh-docs/user/guide/schedule.md +21 -0
  683. package/node_modules/better-dsh/dsh-docs/user/guide/schedule.zh.md +21 -0
  684. package/node_modules/better-dsh/dsh-docs/user/index.md +11 -0
  685. package/node_modules/better-dsh/dsh-docs/user/index.zh.md +11 -0
  686. package/node_modules/better-dsh/dsh-docs/web-styling.md +29 -0
  687. package/node_modules/better-dsh/dsh-docs/web-styling.zh.md +29 -0
  688. package/node_modules/better-dsh/eval-description.md +33 -0
  689. package/node_modules/better-dsh/lib/BrowserWebSocketTransport-D1aFReu_.js +4 -0
  690. package/node_modules/better-dsh/lib/BrowserWebSocketTransport-wm99h94r.js +39 -0
  691. package/node_modules/better-dsh/lib/LaunchOptions-B874eBu2.js +4 -0
  692. package/node_modules/better-dsh/lib/LaunchOptions-kGXcZOe0.js +17 -0
  693. package/node_modules/better-dsh/lib/NodeWebSocketTransport-BRLjmu2R.js +4 -0
  694. package/node_modules/better-dsh/lib/NodeWebSocketTransport-D9ysYGLM.js +3634 -0
  695. package/node_modules/better-dsh/lib/ast-assets/ast-grep.wasm +0 -0
  696. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-bash.wasm +0 -0
  697. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-c.wasm +0 -0
  698. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-cpp.wasm +0 -0
  699. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-css.wasm +0 -0
  700. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-go.wasm +0 -0
  701. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-html.wasm +0 -0
  702. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-javascript.wasm +0 -0
  703. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-json.wasm +0 -0
  704. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-python.wasm +0 -0
  705. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-ruby.wasm +0 -0
  706. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-rust.wasm +0 -0
  707. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-tsx.wasm +0 -0
  708. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-typescript.wasm +0 -0
  709. package/node_modules/better-dsh/lib/ast-assets/tree-sitter-yaml.wasm +0 -0
  710. package/node_modules/better-dsh/lib/ast-assets/tree-sitter.wasm +0 -0
  711. package/node_modules/better-dsh/lib/bidi-BalpKaJc.js +16106 -0
  712. package/node_modules/better-dsh/lib/bundle-delivery.d.ts +20 -0
  713. package/node_modules/better-dsh/lib/bundle-delivery.js +209 -0
  714. package/node_modules/better-dsh/lib/chunk-DQxbwPpZ.js +30 -0
  715. package/node_modules/better-dsh/lib/client/index.js +712 -0
  716. package/node_modules/better-dsh/lib/compaction/index.d.ts +57 -0
  717. package/node_modules/better-dsh/lib/compaction/index.js +145 -0
  718. package/node_modules/better-dsh/lib/failover/index.d.ts +59 -0
  719. package/node_modules/better-dsh/lib/failover/index.js +147 -0
  720. package/node_modules/better-dsh/lib/fs-aware/sandbox-plugin.d.ts +71 -0
  721. package/node_modules/better-dsh/lib/fs-aware/sandbox-plugin.js +249 -0
  722. package/node_modules/better-dsh/lib/hmr.d.ts +32 -0
  723. package/node_modules/better-dsh/lib/hmr.js +49 -0
  724. package/node_modules/better-dsh/lib/index-DTDXUe6m.d.ts +208 -0
  725. package/node_modules/better-dsh/lib/index-browser-CysrjMyM.js +21061 -0
  726. package/node_modules/better-dsh/lib/index.d.ts +705 -0
  727. package/node_modules/better-dsh/lib/index.js +3816 -0
  728. package/node_modules/better-dsh/lib/kernel-bridge.py +172 -0
  729. package/node_modules/better-dsh/lib/kernel-env-D8UOWeji.js +195 -0
  730. package/node_modules/better-dsh/lib/kernel-env.d.ts +80 -0
  731. package/node_modules/better-dsh/lib/kernel-env.js +3 -0
  732. package/node_modules/better-dsh/lib/lib-C8_jXvwA.js +894 -0
  733. package/node_modules/better-dsh/lib/lsp-server-registry-BXvUTBY7.js +3 -0
  734. package/node_modules/better-dsh/lib/lsp-server-registry-CH9WNFFt.js +972 -0
  735. package/node_modules/better-dsh/lib/main-BQeFrBM1.js +3 -0
  736. package/node_modules/better-dsh/lib/main-CupOhMp5.js +1432 -0
  737. package/node_modules/better-dsh/lib/mobile/plugin.d.ts +29 -0
  738. package/node_modules/better-dsh/lib/mobile/plugin.js +54 -0
  739. package/node_modules/better-dsh/lib/native-capture-BEByDXYM.js +68 -0
  740. package/node_modules/better-dsh/lib/puppeteer-core-CSk2PtSm.js +1136 -0
  741. package/node_modules/better-dsh/lib/py-sdk-D7klhpWb.js +178 -0
  742. package/node_modules/better-dsh/lib/py-sdk.d.ts +19 -0
  743. package/node_modules/better-dsh/lib/py-sdk.js +3 -0
  744. package/node_modules/better-dsh/lib/remote/plugin.d.ts +24 -0
  745. package/node_modules/better-dsh/lib/remote/plugin.js +1190 -0
  746. package/node_modules/better-dsh/lib/url-schemes/index.d.ts +88 -0
  747. package/node_modules/better-dsh/lib/url-schemes/index.js +12229 -0
  748. package/node_modules/better-dsh/lib/util-BHL_dfV_.js +2953 -0
  749. package/node_modules/better-dsh/lib/wasm_bg-CNXhHjVg.js +1291 -0
  750. package/node_modules/better-dsh/lib/web-password.d.ts +156 -0
  751. package/node_modules/better-dsh/lib/web-password.js +562 -0
  752. package/node_modules/better-dsh/lib/web-tree-sitter-CPrPD4J2.js +3440 -0
  753. package/node_modules/better-dsh/lib/web-trust-D6gJpUMf.js +393 -0
  754. package/node_modules/better-dsh/lib/web-trust-Dej_RI2B.d.ts +113 -0
  755. package/node_modules/better-dsh/lib/web-trust.d.ts +3 -0
  756. package/node_modules/better-dsh/lib/web-trust.js +4 -0
  757. package/node_modules/better-dsh/lib/webserver.d.ts +10 -0
  758. package/node_modules/better-dsh/lib/webserver.js +19 -0
  759. package/node_modules/better-dsh/lib/welcome-notice.d.ts +18 -0
  760. package/node_modules/better-dsh/lib/welcome-notice.js +59 -0
  761. package/node_modules/better-dsh/lib/wrap-T4I0nfPM.js +750 -0
  762. package/node_modules/better-dsh/package.json +430 -0
  763. package/node_modules/better-dsh/scripts/kernel-provision.mjs +35 -0
  764. package/node_modules/better-dsh/scripts/register-bundle.mjs +80 -0
  765. package/node_modules/better-dsh/url-schemes-instruction.md +22 -0
  766. package/package.json +21 -6
  767. package/superd-hub/assets/icons/README.md +20 -0
  768. package/superd-hub/assets/icons/amp.png +0 -0
  769. package/superd-hub/assets/icons/ante.png +0 -0
  770. package/superd-hub/assets/icons/antigravity.png +0 -0
  771. package/superd-hub/assets/icons/aug.png +0 -0
  772. package/superd-hub/assets/icons/autohand.png +0 -0
  773. package/superd-hub/assets/icons/claude.svg +1 -0
  774. package/superd-hub/assets/icons/cline.png +0 -0
  775. package/superd-hub/assets/icons/codebuddy.png +0 -0
  776. package/superd-hub/assets/icons/codebuff.png +0 -0
  777. package/superd-hub/assets/icons/codex.svg +1 -0
  778. package/superd-hub/assets/icons/command-code.png +0 -0
  779. package/superd-hub/assets/icons/continue.png +0 -0
  780. package/superd-hub/assets/icons/copilot.png +0 -0
  781. package/superd-hub/assets/icons/crush.png +0 -0
  782. package/superd-hub/assets/icons/cursor.png +0 -0
  783. package/superd-hub/assets/icons/devin.png +0 -0
  784. package/superd-hub/assets/icons/droid.png +0 -0
  785. package/superd-hub/assets/icons/dsh-fish.svg +3 -0
  786. package/superd-hub/assets/icons/dsh.png +0 -0
  787. package/superd-hub/assets/icons/freebuff.png +0 -0
  788. package/superd-hub/assets/icons/gemini.png +0 -0
  789. package/superd-hub/assets/icons/goose.png +0 -0
  790. package/superd-hub/assets/icons/grok.png +0 -0
  791. package/superd-hub/assets/icons/hermes.png +0 -0
  792. package/superd-hub/assets/icons/jcode.png +0 -0
  793. package/superd-hub/assets/icons/kilo.png +0 -0
  794. package/superd-hub/assets/icons/kimi.png +0 -0
  795. package/superd-hub/assets/icons/kiro.png +0 -0
  796. package/superd-hub/assets/icons/manifest.json +20 -0
  797. package/superd-hub/assets/icons/mimo-code.png +0 -0
  798. package/superd-hub/assets/icons/mistral-vibe.png +0 -0
  799. package/superd-hub/assets/icons/muse.png +0 -0
  800. package/superd-hub/assets/icons/omp.svg +1 -0
  801. package/superd-hub/assets/icons/openclaude.png +0 -0
  802. package/superd-hub/assets/icons/openclaw.png +0 -0
  803. package/superd-hub/assets/icons/opencode.png +0 -0
  804. package/superd-hub/assets/icons/pi.svg +1 -0
  805. package/superd-hub/assets/icons/prime-agent.png +0 -0
  806. package/superd-hub/assets/icons/qoder-cn.png +0 -0
  807. package/superd-hub/assets/icons/qoder.png +0 -0
  808. package/superd-hub/assets/icons/qwen-code.png +0 -0
  809. package/superd-hub/assets/icons/rovo.png +0 -0
  810. package/superd-hub/assets/icons/trae.png +0 -0
  811. package/superd-hub/assets/icons/zcode.png +0 -0
  812. package/superd-hub/dist/a2a-row.js +1 -1
  813. package/superd-hub/dist/agent-roster.d.ts +8 -3
  814. package/superd-hub/dist/agent-roster.js +19 -7
  815. package/superd-hub/dist/bundle-setup.d.ts +2 -0
  816. package/superd-hub/dist/bundle-setup.js +2 -0
  817. package/superd-hub/dist/client/icon-assets.gen.d.ts +16 -0
  818. package/superd-hub/dist/client/icon-assets.gen.js +54 -0
  819. package/superd-hub/dist/client/mesh-api.d.ts +28 -17
  820. package/superd-hub/dist/client/mesh-api.js +44 -31
  821. package/superd-hub/dist/client/mesh-groups.d.ts +13 -11
  822. package/superd-hub/dist/client/mesh-groups.js +30 -10
  823. package/superd-hub/dist/client/roster.d.ts +7 -16
  824. package/superd-hub/dist/client/roster.js +5 -3
  825. package/superd-hub/dist/fusion-transport.d.ts +11 -10
  826. package/superd-hub/dist/fusion-transport.js +21 -11
  827. package/superd-hub/dist/index.d.ts +0 -1
  828. package/superd-hub/dist/index.js +0 -1
  829. package/superd-hub/dist/machines.d.ts +6 -3
  830. package/superd-hub/dist/machines.js +15 -3
  831. package/superd-hub/dist/mesh-federate.d.ts +18 -8
  832. package/superd-hub/dist/mesh-federate.js +14 -9
  833. package/superd-hub/dist/mesh-link.d.ts +37 -3
  834. package/superd-hub/dist/mesh-link.js +49 -4
  835. package/superd-hub/dist/mesh-rpc.d.ts +48 -16
  836. package/superd-hub/dist/mesh-rpc.js +139 -14
  837. package/superd-hub/dist/roster.d.ts +20 -0
  838. package/superd-hub/dist/roster.js +24 -0
  839. package/superd-hub/dist/switch-core.d.ts +3 -2
  840. package/superd-hub/dist/switch-core.js +1 -1
  841. package/superd-hub/dist/world-entry.d.ts +3 -0
  842. package/superd-hub/dist/world-entry.js +4 -1
  843. package/superd-hub/dist/world-host.d.ts +5 -2
  844. package/superd-hub/dist/world-host.js +6 -2
  845. package/superd-hub/dist/world-join.d.ts +1 -1
  846. package/superd-hub/dist/world-join.js +14 -32
  847. package/superd-hub/dist/world-lifecycle.d.ts +20 -0
  848. package/superd-hub/dist/world-lifecycle.js +69 -0
  849. package/superd-hub/dist/world-mount.d.ts +1 -1
  850. package/superd-hub/dist/world-mount.js +2 -2
  851. package/superd-hub/lib/client/index.js +434 -307
  852. package/superd-hub/package.json +3 -2
  853. package/superd-hub/dist/connection-trust.d.ts +0 -8
  854. package/superd-hub/dist/connection-trust.js +0 -16
  855. package/superd-hub/dist/web-trust.d.ts +0 -84
  856. package/superd-hub/dist/web-trust.js +0 -101
@@ -98,64 +98,103 @@ function HubGlyph({ size }) {
98
98
  }
99
99
 
100
100
  //#endregion
101
- //#region src/client/runtime-icons.tsx
101
+ //#region src/client/icon-assets.gen.ts
102
+ const RUNTIME_ICON_ASSETS = {
103
+ "agent-agy": {
104
+ uri: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABYlBMVEVHcEw5iPw2i/IziPztaDo3ifeJwGA6iPhkhug3ifjtVEg6ivgujO00h/8wivRztHQ0iftrgdLrhy41ifA0iPs+mMJNrp7rWEgwifjgryrcVmJ4wXDiUlmPeMCGxWK3w0FhprPZVmJato0pktxVjflCqKqjbqeLxWKQeL/opSZBp6z1Uj3Xuy01ifwwiPg1h/87if8wh/wvivRCiv4vi+8zktxNjPsvjek1ltEwj+Q5nMTwV0BDpK9Rg+hZifJ5e8tMq6C7ZHk+h/k2h/nOW2lXsJBAn7mGdrx1vG9dgd1Jh/SebZ3lU07meDlitoKuZo1kfszdWlOgvlBWk69wgttBhe/Ia14/iOTaZ01Cj87gpSxzfbOHdqeVcaxMh9O7uz90loxwiKFah77GelWfrVdToKGSe4uud2+kcIXlky6Sm22+qENyp37Mh0iHq2pfpo6tmVeuh2LSszGJhonJlkKWi3VeO12PAAAALXRSTlMARBro/o/8f/1lxVMt8q79vAf6/cv6i23YVBo4QcePmg6TzuC5S3QaM6re4bufpM1dAAADxklEQVRYhZ2X+T9iURTAXz2VVIQYxowxY4wxM7wShWwVSrIvlchStopR+P/n3O0t3tqcH933/d5zzj339sFxBjE40dOz3dbxwegbI/z09AEE221tsf9STJyC4IEIYh2t83+aTVEAht+t8l+aRPC4TVJoNYfBi4tms3b6+voIhjw2fG1JcAFRq9WwoJxv2wdB7GMrBcgE5e18Pr8fy7ZSxPgBRKVSe35+fmyUy2VsiMU+WU8A85UKCBpIcAKCbDZrOYURkkDlqfpcbSDDyUl+HxmspjB84HQ6nyCq1epbo3F3d0INVlNwyniIO2RYW0OGbkv8kNOZTnd1ddXr9cvLt5e3WzDEicHanRjGfB3zl5cvL7e39/fxeBwMFmvA/E79LwQIrmSGtX0rwzSUTqd3dtYBv7k5PLyCOEOGXWywUEP3MObXAUcCMBSvzs62qMFKDV0if4ji+rpYLIJhaxcbzPlxzK+uLi5ubBz2AS8z7MbXzGepX+L7+gqFAjLsIcM5TsL8Un9T8oVSqbS3t7dSTFGDqYDxCwtzc8DnmCGVOscGs4MckvjC3OzsbC6XWyqVNsFAFLs/zFog7Y/w+RwyLG1Khs9mLZDx8/PRaDSHFZugoAZjvlvOR6Mzvb29x8fHS0s4CWRInf80FIwp+RlqOMaGoxWkMG5Cv5Kfnp5KJpMJ0QCKlHETfsl5wKeQIJkARYYYQGHEj0j8DOGxAAyZDBja25HAqAlj8v0RHgqFiAAZlrHhyGXUAjUPIYiG5XZQGDWhT1F/iPKCMCk3tOs/rXbF/qGQz+9wu12dvDAZDCbCCSRACpuuwE3nj/C8h/3dFhCCwWA4HIlEkMGhK+iU56/4zI0F4Qwx6AogAbw/4t3KJRsxkBzsOrxXxqvOSm5wa9EQDjpAwHeqV11YgAyR7zqCUfEAfFrLAZZCJKJ9kHapgZoHZReLiHi01jmX2AC/doYu0aBdwyi7QSG9LvvENmiterUnQB50GsLaNTjEG6A/6zwzaBXJTlA9AlLYBGYYUa15WAJJfZ7jBphBvcsAK0BvzHB4BWRACtUKK4A34jnOzwzv9/GzBPQvOw67QA3vNvIyPmDMw2ERQTCsPMkA8NPoDdObISl8NAdFCh46gkZHyMImCEQh/7aX8gPmPLxbzCBl20l+RKwUwIpACrFfbsZr31JVeAVqoJfGy34E9F/bd+GhBgEPg53xGs+YXriYAU0NT/PXeUW0w8EM3Zyr9f3lOTg4fqq1+lm4icDHEd7kBmiFF58mz9n40IDL2r8yqiQCvN/+D+aPcPZ+RgT3AAAAAElFTkSuQmCC",
105
+ ratio: 1
106
+ },
107
+ "agent-agy-sdk": {
108
+ uri: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABYlBMVEVHcEw5iPw2i/IziPztaDo3ifeJwGA6iPhkhug3ifjtVEg6ivgujO00h/8wivRztHQ0iftrgdLrhy41ifA0iPs+mMJNrp7rWEgwifjgryrcVmJ4wXDiUlmPeMCGxWK3w0FhprPZVmJato0pktxVjflCqKqjbqeLxWKQeL/opSZBp6z1Uj3Xuy01ifwwiPg1h/87if8wh/wvivRCiv4vi+8zktxNjPsvjek1ltEwj+Q5nMTwV0BDpK9Rg+hZifJ5e8tMq6C7ZHk+h/k2h/nOW2lXsJBAn7mGdrx1vG9dgd1Jh/SebZ3lU07meDlitoKuZo1kfszdWlOgvlBWk69wgttBhe/Ia14/iOTaZ01Cj87gpSxzfbOHdqeVcaxMh9O7uz90loxwiKFah77GelWfrVdToKGSe4uud2+kcIXlky6Sm22+qENyp37Mh0iHq2pfpo6tmVeuh2LSszGJhonJlkKWi3VeO12PAAAALXRSTlMARBro/o/8f/1lxVMt8q79vAf6/cv6i23YVBo4QcePmg6TzuC5S3QaM6re4bufpM1dAAADxklEQVRYhZ2X+T9iURTAXz2VVIQYxowxY4wxM7wShWwVSrIvlchStopR+P/n3O0t3tqcH933/d5zzj339sFxBjE40dOz3dbxwegbI/z09AEE221tsf9STJyC4IEIYh2t83+aTVEAht+t8l+aRPC4TVJoNYfBi4tms3b6+voIhjw2fG1JcAFRq9WwoJxv2wdB7GMrBcgE5e18Pr8fy7ZSxPgBRKVSe35+fmyUy2VsiMU+WU8A85UKCBpIcAKCbDZrOYURkkDlqfpcbSDDyUl+HxmspjB84HQ6nyCq1epbo3F3d0INVlNwyniIO2RYW0OGbkv8kNOZTnd1ddXr9cvLt5e3WzDEicHanRjGfB3zl5cvL7e39/fxeBwMFmvA/E79LwQIrmSGtX0rwzSUTqd3dtYBv7k5PLyCOEOGXWywUEP3MObXAUcCMBSvzs62qMFKDV0if4ji+rpYLIJhaxcbzPlxzK+uLi5ubBz2AS8z7MbXzGepX+L7+gqFAjLsIcM5TsL8Un9T8oVSqbS3t7dSTFGDqYDxCwtzc8DnmCGVOscGs4MckvjC3OzsbC6XWyqVNsFAFLs/zFog7Y/w+RwyLG1Khs9mLZDx8/PRaDSHFZugoAZjvlvOR6Mzvb29x8fHS0s4CWRInf80FIwp+RlqOMaGoxWkMG5Cv5Kfnp5KJpMJ0QCKlHETfsl5wKeQIJkARYYYQGHEj0j8DOGxAAyZDBja25HAqAlj8v0RHgqFiAAZlrHhyGXUAjUPIYiG5XZQGDWhT1F/iPKCMCk3tOs/rXbF/qGQz+9wu12dvDAZDCbCCSRACpuuwE3nj/C8h/3dFhCCwWA4HIlEkMGhK+iU56/4zI0F4Qwx6AogAbw/4t3KJRsxkBzsOrxXxqvOSm5wa9EQDjpAwHeqV11YgAyR7zqCUfEAfFrLAZZCJKJ9kHapgZoHZReLiHi01jmX2AC/doYu0aBdwyi7QSG9LvvENmiterUnQB50GsLaNTjEG6A/6zwzaBXJTlA9AlLYBGYYUa15WAJJfZ7jBphBvcsAK0BvzHB4BWRACtUKK4A34jnOzwzv9/GzBPQvOw67QA3vNvIyPmDMw2ERQTCsPMkA8NPoDdObISl8NAdFCh46gkZHyMImCEQh/7aX8gPmPLxbzCBl20l+RKwUwIpACrFfbsZr31JVeAVqoJfGy34E9F/bd+GhBgEPg53xGs+YXriYAU0NT/PXeUW0w8EM3Zyr9f3lOTg4fqq1+lm4icDHEd7kBmiFF58mz9n40IDL2r8yqiQCvN/+D+aPcPZ+RgT3AAAAAElFTkSuQmCC",
109
+ ratio: 1
110
+ },
111
+ "agent-claude": {
112
+ uri: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB3aWR0aD0iNjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC43MDkgMTUuOTU1bDQuNzItMi42NDcuMDgtLjIzLS4wOC0uMTI4SDkuMmwtLjc5LS4wNDgtMi42OTgtLjA3My0yLjMzOS0uMDk3LTIuMjY2LS4xMjItLjU3MS0uMTIxTDAgMTEuNzg0bC4wNTUtLjM1Mi40OC0uMzIxLjY4Ni4wNiAxLjUyLjEwMyAyLjI3OC4xNTggMS42NTIuMDk3IDIuNDQ5LjI1NWguMzg5bC4wNTUtLjE1Ny0uMTM0LS4wOTgtLjEwMy0uMDk3LTIuMzU4LTEuNTk2LTIuNTUyLTEuNjg4LTEuMzM2LS45NzItLjcyNC0uNDkxLS4zNjQtLjQ2Mi0uMTU4LTEuMDA4LjY1Ni0uNzIyLjg4MS4wNi4yMjUuMDYxLjg5My42ODYgMS45MDggMS40NzYgMi40OTEgMS44MzMuMzY1LjMwNC4xNDUtLjEwMy4wMTktLjA3My0uMTY0LS4yNzQtMS4zNTUtMi40NDYtMS40NDYtMi40OS0uNjQ0LTEuMDMyLS4xNy0uNjE5YTIuOTcgMi45NyAwIDAxLS4xMDQtLjcyOUw2LjI4My4xMzQgNi42OTYgMGwuOTk2LjEzNC40Mi4zNjQuNjIgMS40MTQgMS4wMDIgMi4yMjkgMS41NTUgMy4wMy40NTYuODk4LjI0My44MzIuMDkxLjI1NWguMTU4VjkuMDFsLjEyOC0xLjcwNi4yMzctMi4wOTUuMjMtMi42OTUuMDgtLjc2LjM3Ni0uOTEuNzQ3LS40OTIuNTg0LjI4LjQ4LjY4NS0uMDY3LjQ0NC0uMjg2IDEuODUxLS41NTkgMi45MDMtLjM2NCAxLjk0MmguMjEybC4yNDMtLjI0Mi45ODUtMS4zMDYgMS42NTItMi4wNjQuNzMtLjgyLjg1LS45MDQuNTQ3LS40MzFoMS4wMzNsLjc2IDEuMTI5LS4zNCAxLjE2Ni0xLjA2NCAxLjM0Ny0uODgxIDEuMTQyLTEuMjY0IDEuNy0uNzkgMS4zNi4wNzMuMTEuMTg4LS4wMiAyLjg1Ni0uNjA2IDEuNTQzLS4yOCAxLjg0MS0uMzE1LjgzMy4zODguMDkxLjM5NS0uMzI4LjgwNy0xLjk2OS40ODYtMi4zMDkuNDYyLTMuNDM5LjgxMy0uMDQyLjAzLjA0OS4wNjEgMS41NDkuMTQ2LjY2Mi4wMzZoMS42MjJsMy4wMi4yMjUuNzkuNTIyLjQ3NC42MzgtLjA3OS40ODUtMS4yMTUuNjItMS42NC0uMzg5LTMuODI5LS45MS0xLjMxMi0uMzI5aC0uMTgydi4xMWwxLjA5MyAxLjA2OCAyLjAwNiAxLjgxIDIuNTA5IDIuMzMuMTI3LjU3OC0uMzIyLjQ1NS0uMzQtLjA0OS0yLjIwNS0xLjY1Ny0uODUxLS43NDctMS45MjYtMS42MmgtLjEyOHYuMTdsLjQ0NC42NDkgMi4zNDUgMy41MjEuMTIyIDEuMDgtLjE3LjM1My0uNjA4LjIxMy0uNjY4LS4xMjItMS4zNzQtMS45MjUtMS40MTUtMi4xNjctMS4xNDMtMS45NDMtLjE0LjA4LS42NzQgNy4yNTQtLjMxNi4zNy0uNzI5LjI4LS42MDctLjQ2MS0uMzIyLS43NDcuMzIyLTEuNDc2LjM4OS0xLjkyNC4zMTUtMS41My4yODYtMS45LjE3LS42MzItLjAxMi0uMDQyLS4xNC4wMTgtMS40MzQgMS45NjctMi4xOCAyLjk0NS0xLjcyNiAxLjg0NS0uNDE0LjE2NC0uNzE3LS4zNy4wNjctLjY2Mi40MDEtLjU4OSAyLjM4OC0zLjAzNiAxLjQ0LTEuODgyLjkzLTEuMDg2LS4wMDYtLjE1OGgtLjA1NUw0LjEzMiAxOC41NmwtMS4xMy4xNDYtLjQ4Ny0uNDU2LjA2MS0uNzQ2LjIzMS0uMjQzIDEuOTA4LTEuMzEyLS4wMDYuMDA2eiIgZmlsbD0iI0Q5Nzc1NyIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+Cg==",
113
+ ratio: 1
114
+ },
115
+ "agent-codex": {
116
+ uri: "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaGVpZ2h0PSI2NCIgd2lkdGg9IjY0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkuMjA1IDguNjU4di0yLjI2YzAtLjE5LjA3Mi0uMzMzLjIzOC0uNDI4bDQuNTQzLTIuNjE2Yy42MTktLjM1NyAxLjM1Ni0uNTIzIDIuMTE3LS41MjMgMi44NTQgMCA0LjY2MiAyLjIxMiA0LjY2MiA0LjU2NiAwIC4xNjcgMCAuMzU3LS4wMjQuNTQ3bC00LjcxLTIuNzU5YS43OTcuNzk3IDAgMDAtLjg1NiAwbC01Ljk3IDMuNDczem0xMC42MDkgOC44VjEyLjA2YzAtLjMzMy0uMTQzLS41Ny0uNDI5LS43MzdsLTUuOTctMy40NzMgMS45NS0xLjExOGEuNDMzLjQzMyAwIDAxLjQ3NiAwbDQuNTQzIDIuNjE3YzEuMzA5Ljc2IDIuMTg5IDIuMzc4IDIuMTg5IDMuOTQ4IDAgMS44MDgtMS4wNyAzLjQ3My0yLjc2IDQuMTYzek03LjgwMiAxMi43MDNsLTEuOTUtMS4xNDJjLS4xNjctLjA5NS0uMjM5LS4yMzgtLjIzOS0uNDI4VjUuODk5YzAtMi41NDUgMS45NS00LjQ3MiA0LjU5MS00LjQ3MiAxIDAgMS45MjcuMzMzIDIuNzEyLjkyOEw4LjIzIDUuMDY3Yy0uMjg1LjE2Ni0uNDI4LjQwNC0uNDI4LjczN3Y2Ljg5OHpNMTIgMTUuMTI4bC0yLjc5NS0xLjU3di0zLjMzTDEyIDguNjU4bDIuNzk1IDEuNTd2My4zM0wxMiAxNS4xMjh6bTEuNzk2IDcuMjNjLTEgMC0xLjkyNy0uMzMyLTIuNzEyLS45MjdsNC42ODYtMi43MTJjLjI4NS0uMTY2LjQyOC0uNDA0LjQyOC0uNzM3di02Ljg5OGwxLjk3NCAxLjE0MmMuMTY3LjA5NS4yMzguMjM4LjIzOC40Mjh2NS4yMzNjMCAyLjU0NS0xLjk3NCA0LjQ3Mi00LjYxNCA0LjQ3MnptLTUuNjM3LTUuMzAzbC00LjU0NC0yLjYxN2MtMS4zMDgtLjc2MS0yLjE4OC0yLjM3OC0yLjE4OC0zLjk0OEE0LjQ4MiA0LjQ4MiAwIDAxNC4yMSA2LjMyN3Y1LjQyM2MwIC4zMzMuMTQzLjU3MS40MjguNzM4bDUuOTQ3IDMuNDQ5LTEuOTUgMS4xMThhLjQzMi40MzIgMCAwMS0uNDc2IDB6bS0uMjYyIDMuOWMtMi42ODggMC00LjY2Mi0yLjAyMS00LjY2Mi00LjUxOSAwLS4xOS4wMjQtLjM4LjA0Ny0uNTdsNC42ODYgMi43MWMuMjg2LjE2Ny41NzEuMTY3Ljg1NiAwbDUuOTctMy40NDh2Mi4yNmMwIC4xOS0uMDcuMzMzLS4yMzcuNDI4bC00LjU0MyAyLjYxNmMtLjYxOS4zNTctMS4zNTYuNTIzLTIuMTE3LjUyM3ptNS44OTkgMi44M2E1Ljk0NyA1Ljk0NyAwIDAwNS44MjctNC43NTZDMjIuMjg3IDE4LjMzOSAyNCAxNS44NCAyNCAxMy4yOTZjMC0xLjY2NS0uNzEzLTMuMjgyLTEuOTk4LTQuNDQ4LjExOS0uNS4xOS0uOTk5LjE5LTEuNDk4IDAtMy40MDEtMi43NTktNS45NDctNS45NDYtNS45NDctLjY0MiAwLTEuMjYuMDk1LTEuODguMzFBNS45NjIgNS45NjIgMCAwMDEwLjIwNSAwYTUuOTQ3IDUuOTQ3IDAgMDAtNS44MjcgNC43NTdDMS43MTMgNS40NDcgMCA3Ljk0NSAwIDEwLjQ5YzAgMS42NjYuNzEzIDMuMjgzIDEuOTk4IDQuNDQ4LS4xMTkuNS0uMTkgMS0uMTkgMS40OTkgMCAzLjQwMSAyLjc1OSA1Ljk0NiA1Ljk0NiA1Ljk0Ni42NDIgMCAxLjI2LS4wOTUgMS44OC0uMzA5YTUuOTYgNS45NiAwIDAwNC4xNjIgMS43MTN6Ii8+PC9zdmc+Cg==",
117
+ ratio: 1,
118
+ tile: "#FFFFFF"
119
+ },
120
+ "agent-codex-sdk": {
121
+ uri: "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaGVpZ2h0PSI2NCIgd2lkdGg9IjY0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkuMjA1IDguNjU4di0yLjI2YzAtLjE5LjA3Mi0uMzMzLjIzOC0uNDI4bDQuNTQzLTIuNjE2Yy42MTktLjM1NyAxLjM1Ni0uNTIzIDIuMTE3LS41MjMgMi44NTQgMCA0LjY2MiAyLjIxMiA0LjY2MiA0LjU2NiAwIC4xNjcgMCAuMzU3LS4wMjQuNTQ3bC00LjcxLTIuNzU5YS43OTcuNzk3IDAgMDAtLjg1NiAwbC01Ljk3IDMuNDczem0xMC42MDkgOC44VjEyLjA2YzAtLjMzMy0uMTQzLS41Ny0uNDI5LS43MzdsLTUuOTctMy40NzMgMS45NS0xLjExOGEuNDMzLjQzMyAwIDAxLjQ3NiAwbDQuNTQzIDIuNjE3YzEuMzA5Ljc2IDIuMTg5IDIuMzc4IDIuMTg5IDMuOTQ4IDAgMS44MDgtMS4wNyAzLjQ3My0yLjc2IDQuMTYzek03LjgwMiAxMi43MDNsLTEuOTUtMS4xNDJjLS4xNjctLjA5NS0uMjM5LS4yMzgtLjIzOS0uNDI4VjUuODk5YzAtMi41NDUgMS45NS00LjQ3MiA0LjU5MS00LjQ3MiAxIDAgMS45MjcuMzMzIDIuNzEyLjkyOEw4LjIzIDUuMDY3Yy0uMjg1LjE2Ni0uNDI4LjQwNC0uNDI4LjczN3Y2Ljg5OHpNMTIgMTUuMTI4bC0yLjc5NS0xLjU3di0zLjMzTDEyIDguNjU4bDIuNzk1IDEuNTd2My4zM0wxMiAxNS4xMjh6bTEuNzk2IDcuMjNjLTEgMC0xLjkyNy0uMzMyLTIuNzEyLS45MjdsNC42ODYtMi43MTJjLjI4NS0uMTY2LjQyOC0uNDA0LjQyOC0uNzM3di02Ljg5OGwxLjk3NCAxLjE0MmMuMTY3LjA5NS4yMzguMjM4LjIzOC40Mjh2NS4yMzNjMCAyLjU0NS0xLjk3NCA0LjQ3Mi00LjYxNCA0LjQ3MnptLTUuNjM3LTUuMzAzbC00LjU0NC0yLjYxN2MtMS4zMDgtLjc2MS0yLjE4OC0yLjM3OC0yLjE4OC0zLjk0OEE0LjQ4MiA0LjQ4MiAwIDAxNC4yMSA2LjMyN3Y1LjQyM2MwIC4zMzMuMTQzLjU3MS40MjguNzM4bDUuOTQ3IDMuNDQ5LTEuOTUgMS4xMThhLjQzMi40MzIgMCAwMS0uNDc2IDB6bS0uMjYyIDMuOWMtMi42ODggMC00LjY2Mi0yLjAyMS00LjY2Mi00LjUxOSAwLS4xOS4wMjQtLjM4LjA0Ny0uNTdsNC42ODYgMi43MWMuMjg2LjE2Ny41NzEuMTY3Ljg1NiAwbDUuOTctMy40NDh2Mi4yNmMwIC4xOS0uMDcuMzMzLS4yMzcuNDI4bC00LjU0MyAyLjYxNmMtLjYxOS4zNTctMS4zNTYuNTIzLTIuMTE3LjUyM3ptNS44OTkgMi44M2E1Ljk0NyA1Ljk0NyAwIDAwNS44MjctNC43NTZDMjIuMjg3IDE4LjMzOSAyNCAxNS44NCAyNCAxMy4yOTZjMC0xLjY2NS0uNzEzLTMuMjgyLTEuOTk4LTQuNDQ4LjExOS0uNS4xOS0uOTk5LjE5LTEuNDk4IDAtMy40MDEtMi43NTktNS45NDctNS45NDYtNS45NDctLjY0MiAwLTEuMjYuMDk1LTEuODguMzFBNS45NjIgNS45NjIgMCAwMDEwLjIwNSAwYTUuOTQ3IDUuOTQ3IDAgMDAtNS44MjcgNC43NTdDMS43MTMgNS40NDcgMCA3Ljk0NSAwIDEwLjQ5YzAgMS42NjYuNzEzIDMuMjgzIDEuOTk4IDQuNDQ4LS4xMTkuNS0uMTkgMS0uMTkgMS40OTkgMCAzLjQwMSAyLjc1OSA1Ljk0NiA1Ljk0NiA1Ljk0Ni42NDIgMCAxLjI2LS4wOTUgMS44OC0uMzA5YTUuOTYgNS45NiAwIDAwNC4xNjIgMS43MTN6Ii8+PC9zdmc+Cg==",
122
+ ratio: 1,
123
+ tile: "#FFFFFF"
124
+ },
125
+ "agent-hermes": {
126
+ uri: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAPFBMVEVzc3Pn5+ccHBszMzMBAQH///8AAAAYGBgLCwscHBxLS0vGxsbX19dfX19+fn7z8/OgoKCysrKGhoaSkpIgp1CAAAAACnRSTlP9////ff//gICA//OAVQAABGdJREFUWIWll4uWnCAMQANUuiXh/f//2gRQAZ1te8rZs6MOXPNOBn7Af60f8Cse/7HUF/xUn76MmIJ3zodM/w6IRDml4uxYgO+CfgBQShnba1U6ESa9IV4BebxXB/lK+QuBfwXI2t6rypOy3n4PIGeX5eTbcN36PwGS3ZcWzS8tLHwLiP5xnDVnQtTnrU7fAJTZT2vtq5eX5v5Ae4v4EaBMe89N8c5mMaoccSKMNiGpED8BjNO6ndKDYUhsZsHwf7SWTVlEm/QBUCoTjE38KvBOGOnIKpJxSkKqpphTjCyQia8AQiJvTMrVGeRHThIgskLGuiL+0Zg0uMTo/ArI/KFqbW+jopTsihGaI8SVirXjS8cAH18AlChGRVB9CRokgkz1tQ5rdDNa/muGohcAeO0L6OGD0+1mXJRDEQe0k7BgQHkBaDf5z27xbD00J8hzPWJrA9Dlu+7AjaCT9m6A9VBpBdRL7H4grAC2CHuAwabvCw8AbAeSXm61JAmf1q4D3ANwZdE4CHUFdN3ZGONefQaMK1pFuFXpn/hZhVFHfbeCeRCGii9GPBd5KLaqI0EpIe+EISDsADo3tNJbsTifh7NXXYYO5hFIvlmqUE+U3EpRV3TIMOLktJHaAapJB1jbKRLRi4V4AQIi+UkH3AFcj0wSo41UKxyvQJMEdrjYd5XqA8AZn9Em0+I8YoYS6MUGLRjtHUprVVY2lO4gzmw1jLg7cujwCkBrpkztK34A0Bsg28f528GbI9MbILFt9hacd8AQwb8BqlUYt2Hi6qx6Beg3ANgY9xa+F6crHegF4Cwbf7Ph5sVWFScjrAAu+Rj6ZHLaYrehVIYugnsC+G2eG5yBSQ1c9Ze6IlkhUsQHgPPBqoQHTmr0PL8tKScF4Ec6LAARN6h1lmqVxuAsQasyeVTWBdC2TePG5YSibgmGQqh7TRiAPgS2+WadYboT6JpQWmltgNCN0AHU63yY/HsCesyco9M16VjM3QgdUHoKzO6Z7Gr9FUy3N5D1TQoHwIdrs+wnTuZcId9hkGEHEErL9QPgzGWCeeUB4CKVt/M2ZjFXyQ3A013oe/UauNRtQE+4kSrsj+SjABScRbfs25pnHW7P+eVChqOaLkEYhbOWtUlbsO8dzqIYJRyg1c9mg96Asmixpi88ClJbukV4OkyXgDVE5BxoVlgaPSxNbwK0/+wJPyLRW5e6q+rcDOvh1TuhUThw8gBcU/aUNrbyZJm5bOCjRfeV2JPxSibsfSvOJohovKYRDM61YdmFU0dNYoUpG8lRXGcldhN3Kw4iFwqbHZCUwlJ6j7TJSWWe09k6EGEnKyJVUSCTwrudkpFMlARxcQV09dMUNO5g/7KYMgVODVAn1038KGkVCh2zybR1dCiltJ2LteKR3obR1B+/2u5O5NhLKJ360GuRYLXc2QMfgLsPmNrV9px4e7cBNw0Y64/v4UbIPKy2ccenAx4tV10/hBnwBeFe47zj4V3rwg+8haJ92Fc5L+DrN9ijZSiX90rqAAAAAElFTkSuQmCC",
127
+ ratio: 1
128
+ },
129
+ "agent-omp": {
130
+ uri: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJnaWQtb21wLWdyYWRpZW50IiB4MT0iMCIgeTE9IjAiIHgyPSIxIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJva2xjaCgwLjcgMC4yNCAzNDApIi8+PHN0b3Agb2Zmc2V0PSIuNSIgc3RvcC1jb2xvcj0ib2tsY2goMC42MiAwLjIxIDI5NSkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9Im9rbGNoKDAuODEgMC4xNCAyMDApIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0idXJsKCNnaWQtb21wLWdyYWRpZW50KSIgZD0iTTEwIDE0aDQ0djlINDN2MzNoLTlWMjNoLTl2MjJoLTlWMjNIMTB6Ii8+PC9zdmc+Cg==",
131
+ ratio: 1
132
+ },
133
+ "agent-omp-sdk": {
134
+ uri: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJnaWQtb21wLWdyYWRpZW50IiB4MT0iMCIgeTE9IjAiIHgyPSIxIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJva2xjaCgwLjcgMC4yNCAzNDApIi8+PHN0b3Agb2Zmc2V0PSIuNSIgc3RvcC1jb2xvcj0ib2tsY2goMC42MiAwLjIxIDI5NSkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9Im9rbGNoKDAuODEgMC4xNCAyMDApIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0idXJsKCNnaWQtb21wLWdyYWRpZW50KSIgZD0iTTEwIDE0aDQ0djlINDN2MzNoLTlWMjNoLTl2MjJoLTlWMjNIMTB6Ii8+PC9zdmc+Cg==",
135
+ ratio: 1
136
+ },
137
+ "agent-pi": {
138
+ uri: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB3aWR0aD0iNjQiIHZpZXdCb3g9IjAgMCA4MDAgODAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE2NS4yOSAxNjUuMjkgSDUxNy4zNiBWNDAwIEg0MDAgVjUxNy4zNiBIMjgyLjY1IFY2MzQuNzIgSDE2NS4yOSBaIE0yODIuNjUgMjgyLjY1IFY0MDAgSDQwMCBWMjgyLjY1IFoiLz48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNNTE3LjM2IDQwMCBINjM0LjcyIFY2MzQuNzIgSDUxNy4zNiBaIi8+PC9zdmc+Cg==",
139
+ ratio: 1,
140
+ tile: "#000000"
141
+ },
142
+ "native": {
143
+ uri: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjMuMTYiIGhlaWdodD0iMTcuMDQiIHZpZXdCb3g9IjAgMCAyMy4xNiAxNy4wNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBmaWxsPSIjNEQ2QkZFIiBkPSJNMjIuOTE2OCAxLjQzMDE4QzIyLjY3MTMgMS4zMTAxOCAyMi41NjU4IDEuNTM5MTggMjIuNDIyMyAxLjY1NTE5QzIyLjM3MzMgMS42OTI2OSAyMi4zMzE4IDEuNzQxNjkgMjIuMjkwMyAxLjc4NjY5QzIxLjkzMTcgMi4xNjk3IDIxLjUxMjcgMi40MjEyMSAyMC45NjU3IDIuMzkxMjFDMjAuMTY1NyAyLjM0NjIxIDE5LjQ4MjcgMi41OTc3MSAxOC44Nzg3IDMuMjA5NzNDMTguNzUwMiAyLjQ1NTIxIDE4LjMyMzYgMi4wMDQ3IDE3LjY3NDYgMS43MTU2OUMxNy4zMzUxIDEuNTY1NjggMTYuOTkxNiAxLjQxNTE4IDE2Ljc1MzYgMS4wODg2N0MxNi41ODc2IDAuODU2MTYzIDE2LjU0MjEgMC41OTcxNTUgMTYuNDU5MSAwLjM0MTY0N0MxNi40MDYxIDAuMTg3NjQzIDE2LjM1MzYgMC4wMzAxMzgyIDE2LjE3NjEgMC4wMDM2MzczOUMxNS45ODM2IC0wLjAyNjM2MzUgMTUuOTA4MSAwLjEzNTE0MSAxNS44MzI2IDAuMjcwMTQ1QzE1LjUzMDYgMC44MjIxNjIgMTUuNDEzNiAxLjQzMDE4IDE1LjQyNTEgMi4wNDYyQzE1LjQ1MTYgMy40MzE3NCAxNi4wMzY2IDQuNTM1MjcgMTcuMTk5MSA1LjMyMDNDMTcuMzMxMSA1LjQxMDMgMTcuMzY1MSA1LjUwMDMgMTcuMzIzNiA1LjYzMTgxQzE3LjI0NDEgNS45MDIzMSAxNy4xNTAxIDYuMTY0ODIgMTcuMDY3MSA2LjQzNTMzQzE3LjAxNDEgNi42MDc4NCAxNi45MzUxIDYuNjQ1ODQgMTYuNzUwMSA2LjU3MDMzQzE2LjExMjEgNi4zMDM4MyAxNS41NjExIDUuOTA5MzEgMTUuMDc0IDUuNDMyOEMxNC4yNDc1IDQuNjMzMjggMTMuNSAzLjc1MDc1IDEyLjU2OCAzLjA1OTczQzEyLjM0OSAyLjg5ODIyIDEyLjEzIDIuNzQ4MjIgMTEuOTAzNCAyLjYwNTIyQzEwLjk1MjQgMS42ODE2OSAxMi4wMjggMC45MjMxNjUgMTIuMjc3IDAuODMzMTYyQzEyLjUzNzUgMC43MzkxNTkgMTIuMzY3NSAwLjQxNjE1IDExLjUyNTkgMC40MjAxNUMxMC42ODQ0IDAuNDIzNjUgOS45MTQzOSAwLjcwNTY1OCA4LjkzMjg2IDEuMDgxMTdDOC43ODkzNSAxLjEzNzY3IDguNjM4MzUgMS4xNzg2NyA4LjQ4Mzg0IDEuMjEyNjdDNy41OTMzMiAxLjA0MzY3IDYuNjY4MjkgMS4wMDYxNyA1LjcwMjI2IDEuMTE1MTdDMy44ODMyMSAxLjMxNzY4IDIuNDMwMTYgMi4xNzc3IDEuMzYyMTMgMy42NDU3NUMwLjA3OTA5MjggNS40MTAzIC0wLjIyMjkxNiA3LjQxNTM2IDAuMTQ2NTk1IDkuNTA2NDJDMC41MzUxMDYgMTEuNzEwNSAxLjY2MDE0IDEzLjUzNSAzLjM4ODY5IDE0Ljk2MTZDNS4xODEyNSAxNi40NDA2IDcuMjQ1ODEgMTcuMTY1NyA5LjYwMTM4IDE3LjAyNjZDMTEuMDMxOSAxNi45NDQxIDEyLjYyNDUgMTYuNzUyNiAxNC40MjEgMTUuMjMyMUMxNC44NzQgMTUuNDU3NiAxNS4zNDk2IDE1LjU0NzYgMTYuMTM4MSAxNS42MTUxQzE2Ljc0NTYgMTUuNjcxNiAxNy4zMzA2IDE1LjU4NTEgMTcuNzgzNiAxNS40OTExQzE4LjQ5MzEgMTUuMzQxMSAxOC40NDQxIDE0LjY4NDEgMTguMTg3NiAxNC41NjM2QzE2LjEwODEgMTMuNTk1IDE2LjU2NDYgMTMuOTg5MSAxNi4xNDk2IDEzLjY3QzE3LjIwNjEgMTIuNDIgMTguODIwMiAxMC4xOTc5IDE5LjMxODIgNy4xNzIzNUMxOS4zNjcyIDYuODM4MzQgMTkuNDI5NyA2LjM2NzgzIDE5LjQyMjIgNi4wOTczMkMxOS40MTgyIDUuOTMyMzEgMTkuNDU2MiA1Ljg2ODMxIDE5LjY0NDcgNS44NDkzMUMyMC4xNjU3IDUuNzg5MzEgMjAuNjcxMiA1LjY0NjgxIDIxLjEzNTcgNS4zOTEzQzIyLjQ4MzMgNC42NTUyOCAyMy4wMjY4IDMuNDQ2MjQgMjMuMTU0OCAxLjk5NzJDMjMuMTczOCAxLjc3NTY5IDIzLjE1MDggMS41NDY2OCAyMi45MTY4IDEuNDMwMThaTTExLjE3NDkgMTQuNDczNkM5LjE1OTM2IDEyLjg4OSA4LjE4MTg0IDEyLjM2NzUgNy43NzgzMiAxMi4zOUM3LjQwMDgxIDEyLjQxMjUgNy40Njg4MSAxMi44NDQ1IDcuNTUxODIgMTMuMTI2QzcuNjM4ODIgMTMuNDA0IDcuNzUxODIgMTMuNTk1NSA3LjkxMDMzIDEzLjgzOTZDOC4wMTk4MyAxNC4wMDExIDguMDk1MzMgMTQuMjQxMSA3LjgwMDgzIDE0LjQyMTZDNy4xNTE4MSAxNC44MjMxIDYuMDIzMjcgMTQuMjg2NiA1Ljk3MDI3IDE0LjI2MDFDNC42NTY3MyAxMy40ODY1IDMuNTU4NyAxMi40NjU1IDIuNzg0NjcgMTEuMDY5QzIuMDM3MTUgOS43MjQ5MyAxLjYwMzE0IDguMjgyODkgMS41MzE2NCA2Ljc0Mzg0QzEuNTEyNjQgNi4zNzIzMyAxLjYyMjE0IDYuMjQwODIgMS45OTIxNSA2LjE3MzMyQzIuNDc5MTYgNi4wODMzMiAyLjk4MTE4IDYuMDY0MzIgMy40Njc2OSA2LjEzNTgyQzUuNTI0NzYgNi40MzYzMyA3LjI3NTgxIDcuMzU1ODYgOC43NDM4NSA4LjgxMjlDOS41ODE4OCA5LjY0MjQzIDEwLjIxNTkgMTAuNjM0IDEwLjg2ODkgMTEuNjAyNUMxMS41NjM0IDEyLjYzMSAxMi4zMTA1IDEzLjYxMSAxMy4yNjIgMTQuNDE0NkMxMy41OTggMTQuNjk2MSAxMy44NjYgMTQuOTEwMSAxNC4xMjI1IDE1LjA2ODFDMTMuMzQ5IDE1LjE1NDYgMTIuMDU4IDE1LjE3MzEgMTEuMTc0OSAxNC40NzQ2TDExLjE3NDkgMTQuNDczNlpNMTIuMTQxIDguMjU5ODhDMTIuMTQxIDguMDk0ODggMTIuMjczIDcuOTYzMzggMTIuNDM5IDcuOTYzMzhDMTIuNDc2NSA3Ljk2MzM4IDEyLjUxMDUgNy45NzA4OCAxMi41NDEgNy45ODE4OEMxMi41ODI1IDcuOTk2ODggMTIuNjIwNSA4LjAxOTM4IDEyLjY1MDUgOC4wNTMzOEMxMi43MDM1IDguMTA1ODggMTIuNzMzNSA4LjE4MDg4IDEyLjczMzUgOC4yNTk4OEMxMi43MzM1IDguNDI0ODkgMTIuNjAxNSA4LjU1NjM5IDEyLjQzNTUgOC41NTYzOUMxMi4yNjk1IDguNTU2MzkgMTIuMTQxIDguNDI0ODkgMTIuMTQxIDguMjU5ODhaTTE1LjE0MTUgOS43OTg5M0MxNC45NDkgOS44Nzc5MyAxNC43NTY1IDkuOTQ1NDQgMTQuNTcxNSA5Ljk1Mjk0QzE0LjI4NDUgOS45Njc5NCAxMy45NzE1IDkuODUxNDMgMTMuODAxNSA5LjcwODkzQzEzLjUzNzUgOS40ODc0MiAxMy4zNDg1IDkuMzYzNDIgMTMuMjY5NSA4Ljk3NjkxQzEzLjIzNTUgOC44MTE5IDEzLjI1NDUgOC41NTYzOSAxMy4yODQ1IDguNDA5ODlDMTMuMzUyNSA4LjA5NDM4IDEzLjI3NyA3Ljg5MTg3IDEzLjA1NDUgNy43MDc4N0MxMi44NzM1IDcuNTU3ODYgMTIuNjQzNSA3LjUxNjM2IDEyLjM5IDcuNTE2MzZDMTIuMjk1NSA3LjUxNjM2IDEyLjIwOTUgNy40NzQ4NiAxMi4xNDQ1IDcuNDQxMzZDMTIuMDM5NSA3LjM4ODg2IDExLjk1MTkgNy4yNTczNSAxMi4wMzUgNy4wOTU4NUMxMi4wNjE1IDcuMDQzMzUgMTIuMTkgNi45MTU4NCAxMi4yMiA2Ljg5MzM0QzEyLjU2MzUgNi42OTc4NCAxMi45NTk1IDYuNzYxODQgMTMuMzI2IDYuOTA4MzRDMTMuNjY1NSA3LjA0NzM1IDEzLjkyMjUgNy4zMDIzNiAxNC4yOTIgNy42NjI4N0MxNC42Njk1IDguMDk4MzggMTQuNzM3NSA4LjIxODM4IDE0Ljk1MjUgOC41NDUzOUMxNS4xMjI1IDguODAwOSAxNS4yNzc1IDkuMDYzNDEgMTUuMzgzMSA5LjM2MzkyQzE1LjQ0NzEgOS41NTE0MiAxNS4zNjQxIDkuNzA0OTMgMTUuMTQxNSA5Ljc5ODkzWiIvPgo8L3N2Zz4K",
144
+ ratio: 1.35915
145
+ }
146
+ };
147
+
148
+ //#endregion
149
+ //#region src/roster.ts
102
150
  /**
103
- * Per-runtime marks for the Agent Runtimes roster. Native carries the DSH
104
- * blue fish (the official website mark — the FishLogo geometry at the site's
105
- * #4D6BFE, redrawn in-bundle so no scheme detection is needed); the foreign
106
- * runtimes carry the curated agent-icon pack; any runtime whose key matches
107
- * no asset falls back to the subagent artwork (two stacked rounded squares —
108
- * the native Plugins page's stand-in for subagents) as the default
109
- * foreign-agent mark.
151
+ * Foreign agent roster (S2: plugin-presence IS the roster).
110
152
  *
111
- * @module superd-hub/client/runtime-icons
153
+ * No config file: an agent is in the roster exactly while its adapter
154
+ * plugin is loaded and registered. Adapter plugins self-register on
155
+ * activation (key/label/ready) and the Hub UI consumes the snapshot.
156
+ * Roster entries are inventory only: they carry NO selection —
157
+ * the addressed world is the request's mount path (`DL7`, 2026-09-16).
158
+ * one authority.
112
159
  */
113
- /** Curated per-runtime assets, base64 data URIs keyed by roster key. */
114
- const RUNTIME_ICON_URIS = {
115
- claude: `data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB3aWR0aD0iNjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC43MDkgMTUuOTU1bDQuNzItMi42NDcuMDgtLjIzLS4wOC0uMTI4SDkuMmwtLjc5LS4wNDgtMi42OTgtLjA3My0yLjMzOS0uMDk3LTIuMjY2LS4xMjItLjU3MS0uMTIxTDAgMTEuNzg0bC4wNTUtLjM1Mi40OC0uMzIxLjY4Ni4wNiAxLjUyLjEwMyAyLjI3OC4xNTggMS42NTIuMDk3IDIuNDQ5LjI1NWguMzg5bC4wNTUtLjE1Ny0uMTM0LS4wOTgtLjEwMy0uMDk3LTIuMzU4LTEuNTk2LTIuNTUyLTEuNjg4LTEuMzM2LS45NzItLjcyNC0uNDkxLS4zNjQtLjQ2Mi0uMTU4LTEuMDA4LjY1Ni0uNzIyLjg4MS4wNi4yMjUuMDYxLjg5My42ODYgMS45MDggMS40NzYgMi40OTEgMS44MzMuMzY1LjMwNC4xNDUtLjEwMy4wMTktLjA3My0uMTY0LS4yNzQtMS4zNTUtMi40NDYtMS40NDYtMi40OS0uNjQ0LTEuMDMyLS4xNy0uNjE5YTIuOTcgMi45NyAwIDAxLS4xMDQtLjcyOUw2LjI4My4xMzQgNi42OTYgMGwuOTk2LjEzNC40Mi4zNjQuNjIgMS40MTQgMS4wMDIgMi4yMjkgMS41NTUgMy4wMy40NTYuODk4LjI0My44MzIuMDkxLjI1NWguMTU4VjkuMDFsLjEyOC0xLjcwNi4yMzctMi4wOTUuMjMtMi42OTUuMDgtLjc2LjM3Ni0uOTEuNzQ3LS40OTIuNTg0LjI4LjQ4LjY4NS0uMDY3LjQ0NC0uMjg2IDEuODUxLS41NTkgMi45MDMtLjM2NCAxLjk0MmguMjEybC4yNDMtLjI0Mi45ODUtMS4zMDYgMS42NTItMi4wNjQuNzMtLjgyLjg1LS45MDQuNTQ3LS40MzFoMS4wMzNsLjc2IDEuMTI5LS4zNCAxLjE2Ni0xLjA2NCAxLjM0Ny0uODgxIDEuMTQyLTEuMjY0IDEuNy0uNzkgMS4zNi4wNzMuMTEuMTg4LS4wMiAyLjg1Ni0uNjA2IDEuNTQzLS4yOCAxLjg0MS0uMzE1LjgzMy4zODguMDkxLjM5NS0uMzI4LjgwNy0xLjk2OS40ODYtMi4zMDkuNDYyLTMuNDM5LjgxMy0uMDQyLjAzLjA0OS4wNjEgMS41NDkuMTQ2LjY2Mi4wMzZoMS42MjJsMy4wMi4yMjUuNzkuNTIyLjQ3NC42MzgtLjA3OS40ODUtMS4yMTUuNjItMS42NC0uMzg5LTMuODI5LS45MS0xLjMxMi0uMzI5aC0uMTgydi4xMWwxLjA5MyAxLjA2OCAyLjAwNiAxLjgxIDIuNTA5IDIuMzMuMTI3LjU3OC0uMzIyLjQ1NS0uMzQtLjA0OS0yLjIwNS0xLjY1Ny0uODUxLS43NDctMS45MjYtMS42MmgtLjEyOHYuMTdsLjQ0NC42NDkgMi4zNDUgMy41MjEuMTIyIDEuMDgtLjE3LjM1My0uNjA4LjIxMy0uNjY4LS4xMjItMS4zNzQtMS45MjUtMS40MTUtMi4xNjctMS4xNDMtMS45NDMtLjE0LjA4LS42NzQgNy4yNTQtLjMxNi4zNy0uNzI5LjI4LS42MDctLjQ2MS0uMzIyLS43NDcuMzIyLTEuNDc2LjM4OS0xLjkyNC4zMTUtMS41My4yODYtMS45LjE3LS42MzItLjAxMi0uMDQyLS4xNC4wMTgtMS40MzQgMS45NjctMi4xOCAyLjk0NS0xLjcyNiAxLjg0NS0uNDE0LjE2NC0uNzE3LS4zNy4wNjctLjY2Mi40MDEtLjU4OSAyLjM4OC0zLjAzNiAxLjQ0LTEuODgyLjkzLTEuMDg2LS4wMDYtLjE1OGgtLjA1NUw0LjEzMiAxOC41NmwtMS4xMy4xNDYtLjQ4Ny0uNDU2LjA2MS0uNzQ2LjIzMS0uMjQzIDEuOTA4LTEuMzEyLS4wMDYuMDA2eiIgZmlsbD0iI0Q5Nzc1NyIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+Cg==`,
116
- codex: `data:image/svg+xml;base64,PHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaGVpZ2h0PSI2NCIgd2lkdGg9IjY0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkuMjA1IDguNjU4di0yLjI2YzAtLjE5LjA3Mi0uMzMzLjIzOC0uNDI4bDQuNTQzLTIuNjE2Yy42MTktLjM1NyAxLjM1Ni0uNTIzIDIuMTE3LS41MjMgMi44NTQgMCA0LjY2MiAyLjIxMiA0LjY2MiA0LjU2NiAwIC4xNjcgMCAuMzU3LS4wMjQuNTQ3bC00LjcxLTIuNzU5YS43OTcuNzk3IDAgMDAtLjg1NiAwbC01Ljk3IDMuNDczem0xMC42MDkgOC44VjEyLjA2YzAtLjMzMy0uMTQzLS41Ny0uNDI5LS43MzdsLTUuOTctMy40NzMgMS45NS0xLjExOGEuNDMzLjQzMyAwIDAxLjQ3NiAwbDQuNTQzIDIuNjE3YzEuMzA5Ljc2IDIuMTg5IDIuMzc4IDIuMTg5IDMuOTQ4IDAgMS44MDgtMS4wNyAzLjQ3My0yLjc2IDQuMTYzek03LjgwMiAxMi43MDNsLTEuOTUtMS4xNDJjLS4xNjctLjA5NS0uMjM5LS4yMzgtLjIzOS0uNDI4VjUuODk5YzAtMi41NDUgMS45NS00LjQ3MiA0LjU5MS00LjQ3MiAxIDAgMS45MjcuMzMzIDIuNzEyLjkyOEw4LjIzIDUuMDY3Yy0uMjg1LjE2Ni0uNDI4LjQwNC0uNDI4LjczN3Y2Ljg5OHpNMTIgMTUuMTI4bC0yLjc5NS0xLjU3di0zLjMzTDEyIDguNjU4bDIuNzk1IDEuNTd2My4zM0wxMiAxNS4xMjh6bTEuNzk2IDcuMjNjLTEgMC0xLjkyNy0uMzMyLTIuNzEyLS45MjdsNC42ODYtMi43MTJjLjI4NS0uMTY2LjQyOC0uNDA0LjQyOC0uNzM3di02Ljg5OGwxLjk3NCAxLjE0MmMuMTY3LjA5NS4yMzguMjM4LjIzOC40Mjh2NS4yMzNjMCAyLjU0NS0xLjk3NCA0LjQ3Mi00LjYxNCA0LjQ3MnptLTUuNjM3LTUuMzAzbC00LjU0NC0yLjYxN2MtMS4zMDgtLjc2MS0yLjE4OC0yLjM3OC0yLjE4OC0zLjk0OEE0LjQ4MiA0LjQ4MiAwIDAxNC4yMSA2LjMyN3Y1LjQyM2MwIC4zMzMuMTQzLjU3MS40MjguNzM4bDUuOTQ3IDMuNDQ5LTEuOTUgMS4xMThhLjQzMi40MzIgMCAwMS0uNDc2IDB6bS0uMjYyIDMuOWMtMi42ODggMC00LjY2Mi0yLjAyMS00LjY2Mi00LjUxOSAwLS4xOS4wMjQtLjM4LjA0Ny0uNTdsNC42ODYgMi43MWMuMjg2LjE2Ny41NzEuMTY3Ljg1NiAwbDUuOTctMy40NDh2Mi4yNmMwIC4xOS0uMDcuMzMzLS4yMzcuNDI4bC00LjU0MyAyLjYxNmMtLjYxOS4zNTctMS4zNTYuNTIzLTIuMTE3LjUyM3ptNS44OTkgMi44M2E1Ljk0NyA1Ljk0NyAwIDAwNS44MjctNC43NTZDMjIuMjg3IDE4LjMzOSAyNCAxNS44NCAyNCAxMy4yOTZjMC0xLjY2NS0uNzEzLTMuMjgyLTEuOTk4LTQuNDQ4LjExOS0uNS4xOS0uOTk5LjE5LTEuNDk4IDAtMy40MDEtMi43NTktNS45NDctNS45NDYtNS45NDctLjY0MiAwLTEuMjYuMDk1LTEuODguMzFBNS45NjIgNS45NjIgMCAwMDEwLjIwNSAwYTUuOTQ3IDUuOTQ3IDAgMDAtNS44MjcgNC43NTdDMS43MTMgNS40NDcgMCA3Ljk0NSAwIDEwLjQ5YzAgMS42NjYuNzEzIDMuMjgzIDEuOTk4IDQuNDQ4LS4xMTkuNS0uMTkgMS0uMTkgMS40OTkgMCAzLjQwMSAyLjc1OSA1Ljk0NiA1Ljk0NiA1Ljk0Ni42NDIgMCAxLjI2LS4wOTUgMS44OC0uMzA5YTUuOTYgNS45NiAwIDAwNC4xNjIgMS43MTN6Ii8+PC9zdmc+Cg==`,
117
- omp: `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJnaWQtb21wLWdyYWRpZW50IiB4MT0iMCIgeTE9IjAiIHgyPSIxIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJva2xjaCgwLjcgMC4yNCAzNDApIi8+PHN0b3Agb2Zmc2V0PSIuNSIgc3RvcC1jb2xvcj0ib2tsY2goMC42MiAwLjIxIDI5NSkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9Im9rbGNoKDAuODEgMC4xNCAyMDApIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0idXJsKCNnaWQtb21wLWdyYWRpZW50KSIgZD0iTTEwIDE0aDQ0djlINDN2MzNoLTlWMjNoLTl2MjJoLTlWMjNIMTB6Ii8+PC9zdmc+Cg==`,
118
- pi: `data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB3aWR0aD0iNjQiIHZpZXdCb3g9IjAgMCA4MDAgODAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE2NS4yOSAxNjUuMjkgSDUxNy4zNiBWNDAwIEg0MDAgVjUxNy4zNiBIMjgyLjY1IFY2MzQuNzIgSDE2NS4yOSBaIE0yODIuNjUgMjgyLjY1IFY0MDAgSDQwMCBWMjgyLjY1IFoiLz48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNNTE3LjM2IDQwMCBINjM0LjcyIFY2MzQuNzIgSDUxNy4zNiBaIi8+PC9zdmc+Cg==`,
119
- hermes: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAPFBMVEVzc3Pn5+ccHBszMzMBAQH///8AAAAYGBgLCwscHBxLS0vGxsbX19dfX19+fn7z8/OgoKCysrKGhoaSkpIgp1CAAAAACnRSTlP9////ff//gICA//OAVQAABGdJREFUWIWll4uWnCAMQANUuiXh/f//2gRQAZ1te8rZs6MOXPNOBn7Af60f8Cse/7HUF/xUn76MmIJ3zodM/w6IRDml4uxYgO+CfgBQShnba1U6ESa9IV4BebxXB/lK+QuBfwXI2t6rypOy3n4PIGeX5eTbcN36PwGS3ZcWzS8tLHwLiP5xnDVnQtTnrU7fAJTZT2vtq5eX5v5Ae4v4EaBMe89N8c5mMaoccSKMNiGpED8BjNO6ndKDYUhsZsHwf7SWTVlEm/QBUCoTjE38KvBOGOnIKpJxSkKqpphTjCyQia8AQiJvTMrVGeRHThIgskLGuiL+0Zg0uMTo/ArI/KFqbW+jopTsihGaI8SVirXjS8cAH18AlChGRVB9CRokgkz1tQ5rdDNa/muGohcAeO0L6OGD0+1mXJRDEQe0k7BgQHkBaDf5z27xbD00J8hzPWJrA9Dlu+7AjaCT9m6A9VBpBdRL7H4grAC2CHuAwabvCw8AbAeSXm61JAmf1q4D3ANwZdE4CHUFdN3ZGONefQaMK1pFuFXpn/hZhVFHfbeCeRCGii9GPBd5KLaqI0EpIe+EISDsADo3tNJbsTifh7NXXYYO5hFIvlmqUE+U3EpRV3TIMOLktJHaAapJB1jbKRLRi4V4AQIi+UkH3AFcj0wSo41UKxyvQJMEdrjYd5XqA8AZn9Em0+I8YoYS6MUGLRjtHUprVVY2lO4gzmw1jLg7cujwCkBrpkztK34A0Bsg28f528GbI9MbILFt9hacd8AQwb8BqlUYt2Hi6qx6Beg3ANgY9xa+F6crHegF4Cwbf7Ph5sVWFScjrAAu+Rj6ZHLaYrehVIYugnsC+G2eG5yBSQ1c9Ze6IlkhUsQHgPPBqoQHTmr0PL8tKScF4Ec6LAARN6h1lmqVxuAsQasyeVTWBdC2TePG5YSibgmGQqh7TRiAPgS2+WadYboT6JpQWmltgNCN0AHU63yY/HsCesyco9M16VjM3QgdUHoKzO6Z7Gr9FUy3N5D1TQoHwIdrs+wnTuZcId9hkGEHEErL9QPgzGWCeeUB4CKVt/M2ZjFXyQ3A013oe/UauNRtQE+4kSrsj+SjABScRbfs25pnHW7P+eVChqOaLkEYhbOWtUlbsO8dzqIYJRyg1c9mg96Asmixpi88ClJbukV4OkyXgDVE5BxoVlgaPSxNbwK0/+wJPyLRW5e6q+rcDOvh1TuhUThw8gBcU/aUNrbyZJm5bOCjRfeV2JPxSibsfSvOJohovKYRDM61YdmFU0dNYoUpG8lRXGcldhN3Kw4iFwqbHZCUwlJ6j7TJSWWe09k6EGEnKyJVUSCTwrudkpFMlARxcQV09dMUNO5g/7KYMgVODVAn1038KGkVCh2zybR1dCiltJ2LteKR3obR1B+/2u5O5NhLKJ360GuRYLXc2QMfgLsPmNrV9px4e7cBNw0Y64/v4UbIPKy2ccenAx4tV10/hBnwBeFe47zj4V3rwg+8haJ92Fc5L+DrN9ijZSiX90rqAAAAAElFTkSuQmCC`,
120
- agy: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABYlBMVEVHcEw5iPw2i/IziPztaDo3ifeJwGA6iPhkhug3ifjtVEg6ivgujO00h/8wivRztHQ0iftrgdLrhy41ifA0iPs+mMJNrp7rWEgwifjgryrcVmJ4wXDiUlmPeMCGxWK3w0FhprPZVmJato0pktxVjflCqKqjbqeLxWKQeL/opSZBp6z1Uj3Xuy01ifwwiPg1h/87if8wh/wvivRCiv4vi+8zktxNjPsvjek1ltEwj+Q5nMTwV0BDpK9Rg+hZifJ5e8tMq6C7ZHk+h/k2h/nOW2lXsJBAn7mGdrx1vG9dgd1Jh/SebZ3lU07meDlitoKuZo1kfszdWlOgvlBWk69wgttBhe/Ia14/iOTaZ01Cj87gpSxzfbOHdqeVcaxMh9O7uz90loxwiKFah77GelWfrVdToKGSe4uud2+kcIXlky6Sm22+qENyp37Mh0iHq2pfpo6tmVeuh2LSszGJhonJlkKWi3VeO12PAAAALXRSTlMARBro/o/8f/1lxVMt8q79vAf6/cv6i23YVBo4QcePmg6TzuC5S3QaM6re4bufpM1dAAADxklEQVRYhZ2X+T9iURTAXz2VVIQYxowxY4wxM7wShWwVSrIvlchStopR+P/n3O0t3tqcH933/d5zzj339sFxBjE40dOz3dbxwegbI/z09AEE221tsf9STJyC4IEIYh2t83+aTVEAht+t8l+aRPC4TVJoNYfBi4tms3b6+voIhjw2fG1JcAFRq9WwoJxv2wdB7GMrBcgE5e18Pr8fy7ZSxPgBRKVSe35+fmyUy2VsiMU+WU8A85UKCBpIcAKCbDZrOYURkkDlqfpcbSDDyUl+HxmspjB84HQ6nyCq1epbo3F3d0INVlNwyniIO2RYW0OGbkv8kNOZTnd1ddXr9cvLt5e3WzDEicHanRjGfB3zl5cvL7e39/fxeBwMFmvA/E79LwQIrmSGtX0rwzSUTqd3dtYBv7k5PLyCOEOGXWywUEP3MObXAUcCMBSvzs62qMFKDV0if4ji+rpYLIJhaxcbzPlxzK+uLi5ubBz2AS8z7MbXzGepX+L7+gqFAjLsIcM5TsL8Un9T8oVSqbS3t7dSTFGDqYDxCwtzc8DnmCGVOscGs4MckvjC3OzsbC6XWyqVNsFAFLs/zFog7Y/w+RwyLG1Khs9mLZDx8/PRaDSHFZugoAZjvlvOR6Mzvb29x8fHS0s4CWRInf80FIwp+RlqOMaGoxWkMG5Cv5Kfnp5KJpMJ0QCKlHETfsl5wKeQIJkARYYYQGHEj0j8DOGxAAyZDBja25HAqAlj8v0RHgqFiAAZlrHhyGXUAjUPIYiG5XZQGDWhT1F/iPKCMCk3tOs/rXbF/qGQz+9wu12dvDAZDCbCCSRACpuuwE3nj/C8h/3dFhCCwWA4HIlEkMGhK+iU56/4zI0F4Qwx6AogAbw/4t3KJRsxkBzsOrxXxqvOSm5wa9EQDjpAwHeqV11YgAyR7zqCUfEAfFrLAZZCJKJ9kHapgZoHZReLiHi01jmX2AC/doYu0aBdwyi7QSG9LvvENmiterUnQB50GsLaNTjEG6A/6zwzaBXJTlA9AlLYBGYYUa15WAJJfZ7jBphBvcsAK0BvzHB4BWRACtUKK4A34jnOzwzv9/GzBPQvOw67QA3vNvIyPmDMw2ERQTCsPMkA8NPoDdObISl8NAdFCh46gkZHyMImCEQh/7aX8gPmPLxbzCBl20l+RKwUwIpACrFfbsZr31JVeAVqoJfGy34E9F/bd+GhBgEPg53xGs+YXriYAU0NT/PXeUW0w8EM3Zyr9f3lOTg4fqq1+lm4icDHEd7kBmiFF58mz9n40IDL2r8yqiQCvN/+D+aPcPZ+RgT3AAAAAElFTkSuQmCC`
121
- };
160
+ /** The canonical runtime identifier of the NATIVE DSH runtime (not an adapter — no package). */
161
+ const NATIVE_RUNTIME_ID = "native";
122
162
  /**
123
- * The DSH fish silhouette (FishLogo geometry, tight 23.16:17.04 viewBox) at
124
- * the official site's brand blue.
125
- *
126
- * @param props - `size`: width in pixels (height keeps the native ratio).
127
- * @returns the blue fish mark.
163
+ * The unified runtime identifier convention: an adapter's roster key MUST be
164
+ * its package name's `agent-` suffix (`omp` ↔ `agent-omp`, `omp-sdk` ↔
165
+ * `agent-omp-sdk`), so one derivation IS the cross-machine agreement — the
166
+ * same ID travels on local rows and on every federated row (spec
167
+ * hub-roster-identity §1). `native` is the reserved DSH spelling.
168
+ * @param key - the roster key (`native`, or the adapter's runtime key).
169
+ * @returns the adapter package identifier (`agent-omp`, …) or `native`.
128
170
  */
129
- function DshFish({ size }) {
130
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
131
- width: size,
132
- height: size * 17.04 / 23.16,
133
- viewBox: "0 0 23.16 17.04",
134
- fill: "none",
135
- xmlns: "http://www.w3.org/2000/svg",
136
- "aria-hidden": "true",
137
- style: {
138
- display: "block",
139
- flex: "none"
140
- },
141
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
142
- fill: "#4D6BFE",
143
- d: "M22.9168 1.43018C22.6713 1.31018 22.5658 1.53918 22.4223 1.65519C22.3733 1.69269 22.3318 1.74169 22.2903 1.78669C21.9317 2.1697 21.5127 2.42121 20.9657 2.39121C20.1657 2.34621 19.4827 2.59771 18.8787 3.20973C18.7502 2.45521 18.3236 2.0047 17.6746 1.71569C17.3351 1.56568 16.9916 1.41518 16.7536 1.08867C16.5876 0.856163 16.5421 0.597155 16.4591 0.341647C16.4061 0.187643 16.3536 0.0301382 16.1761 0.00363739C15.9836 -0.0263635 15.9081 0.135141 15.8326 0.270145C15.5306 0.822162 15.4136 1.43018 15.4251 2.0462C15.4516 3.43174 16.0366 4.53527 17.1991 5.3203C17.3311 5.4103 17.3651 5.5003 17.3236 5.63181C17.2441 5.90231 17.1501 6.16482 17.0671 6.43533C17.0141 6.60784 16.9351 6.64584 16.7501 6.57033C16.1121 6.30383 15.5611 5.90931 15.074 5.4328C14.2475 4.63328 13.5 3.75075 12.568 3.05973C12.349 2.89822 12.13 2.74822 11.9034 2.60522C10.9524 1.68169 12.028 0.923165 12.277 0.833162C12.5375 0.739159 12.3675 0.41615 11.5259 0.42015C10.6844 0.42365 9.91439 0.705658 8.93286 1.08117C8.78935 1.13767 8.63835 1.17867 8.48384 1.21267C7.59332 1.04367 6.66829 1.00617 5.70226 1.11517C3.88321 1.31768 2.43016 2.1777 1.36213 3.64575C0.0790928 5.4103 -0.222916 7.41536 0.146595 9.50642C0.535106 11.7105 1.66014 13.535 3.38869 14.9616C5.18125 16.4406 7.24581 17.1657 9.60138 17.0266C11.0319 16.9441 12.6245 16.7526 14.421 15.2321C14.874 15.4576 15.3496 15.5476 16.1381 15.6151C16.7456 15.6716 17.3306 15.5851 17.7836 15.4911C18.4931 15.3411 18.4441 14.6841 18.1876 14.5636C16.1081 13.595 16.5646 13.9891 16.1496 13.67C17.2061 12.42 18.8202 10.1979 19.3182 7.17235C19.3672 6.83834 19.4297 6.36783 19.4222 6.09732C19.4182 5.93231 19.4562 5.86831 19.6447 5.84931C20.1657 5.78931 20.6712 5.64681 21.1357 5.3913C22.4833 4.65528 23.0268 3.44624 23.1548 1.9972C23.1738 1.77569 23.1508 1.54668 22.9168 1.43018ZM11.1749 14.4736C9.15936 12.889 8.18184 12.3675 7.77832 12.39C7.40081 12.4125 7.46881 12.8445 7.55182 13.126C7.63882 13.404 7.75182 13.5955 7.91033 13.8396C8.01983 14.0011 8.09533 14.2411 7.80083 14.4216C7.15181 14.8231 6.02327 14.2866 5.97027 14.2601C4.65673 13.4865 3.5587 12.4655 2.78467 11.069C2.03715 9.72493 1.60314 8.28289 1.53164 6.74384C1.51264 6.37233 1.62214 6.24082 1.99215 6.17332C2.47916 6.08332 2.98118 6.06432 3.46769 6.13582C5.52476 6.43633 7.27581 7.35586 8.74385 8.8129C9.58188 9.64243 10.2159 10.634 10.8689 11.6025C11.5634 12.631 12.3105 13.611 13.262 14.4146C13.598 14.6961 13.866 14.9101 14.1225 15.0681C13.349 15.1546 12.058 15.1731 11.1749 14.4746L11.1749 14.4736ZM12.141 8.25988C12.141 8.09488 12.273 7.96338 12.439 7.96338C12.4765 7.96338 12.5105 7.97088 12.541 7.98188C12.5825 7.99688 12.6205 8.01938 12.6505 8.05338C12.7035 8.10588 12.7335 8.18088 12.7335 8.25988C12.7335 8.42489 12.6015 8.55639 12.4355 8.55639C12.2695 8.55639 12.141 8.42489 12.141 8.25988ZM15.1415 9.79893C14.949 9.87793 14.7565 9.94544 14.5715 9.95294C14.2845 9.96794 13.9715 9.85143 13.8015 9.70893C13.5375 9.48742 13.3485 9.36342 13.2695 8.97691C13.2355 8.8119 13.2545 8.55639 13.2845 8.40989C13.3525 8.09438 13.277 7.89187 13.0545 7.70787C12.8735 7.55786 12.6435 7.51636 12.39 7.51636C12.2955 7.51636 12.2095 7.47486 12.1445 7.44136C12.0395 7.38886 11.9519 7.25735 12.035 7.09585C12.0615 7.04335 12.19 6.91584 12.22 6.89334C12.5635 6.69784 12.9595 6.76184 13.326 6.90834C13.6655 7.04735 13.9225 7.30236 14.292 7.66287C14.6695 8.09838 14.7375 8.21838 14.9525 8.54539C15.1225 8.8009 15.2775 9.06341 15.3831 9.36392C15.4471 9.55142 15.3641 9.70493 15.1415 9.79893Z"
144
- })
145
- });
171
+ function runtimeIdOf(key) {
172
+ return key === "native" ? NATIVE_RUNTIME_ID : `agent-${key}`;
146
173
  }
147
- /** Opaque tile backgrounds for marks that would vanish on a dark frame. */
148
- const RUNTIME_TILE_BG = {
149
- codex: "#FFFFFF",
150
- pi: "#000000"
151
- };
174
+
175
+ //#endregion
176
+ //#region src/client/runtime-icons.tsx
177
+ /**
178
+ * Per-runtime marks for the Agent Runtimes roster, keyed by the unified
179
+ * runtime identifier (spec `docs/specs/hub-roster-identity/spec.md`): the
180
+ * adapter package name (`agent-omp`, `agent-omp-sdk`, …) on every LOCAL and
181
+ * FEDERATED row alike, `native` for DSH. The marks come from the icon asset
182
+ * pack (`assets/icons/` → `icon-assets.gen.ts`); a runtime whose id maps to
183
+ * no asset — a remote peer running an adapter this build has never seen —
184
+ * falls back to the subagent artwork (two stacked rounded squares — the
185
+ * native Plugins page's stand-in for subagents) as the default foreign-agent
186
+ * mark.
187
+ *
188
+ * @module superd-hub/client/runtime-icons
189
+ */
152
190
  /** Sanitized useId: raw React ids contain colons, kept out of url(#…) refs. */
153
191
  function useGlyphId() {
154
192
  return `superd_subagent_${react.useId().replaceAll(":", "")}`;
155
193
  }
156
194
  /**
157
195
  * The subagent mark: two stacked rounded squares (the Plugins page's
158
- * subagent artwork, redrawn in-bundle) — the default foreign-agent icon.
196
+ * subagent artwork, redrawn in-bundle) — the default foreign-agent icon for
197
+ * a runtimeId with no pack asset.
159
198
  *
160
199
  * @param props - `size`: square edge in pixels.
161
200
  * @returns the subagent mark.
@@ -233,19 +272,33 @@ function imgMark(uri, size) {
233
272
  });
234
273
  }
235
274
  /**
236
- * Render one runtime's mark: the DSH app icon for native (scheme-aware), the
237
- * curated asset for a matching roster key, the subagent mark otherwise.
275
+ * Render one runtime's mark: the asset the runtime identifier maps to in the
276
+ * icon pack, the subagent mark when nothing maps (unknown remote adapter).
277
+ * `runtimeId` is the wire field; `agentKey` is the compatibility leg for
278
+ * callers that only hold a roster key (baked globals, the selector's active
279
+ * key) — both resolve through `runtimeIdOf`, so an SDK half and its main
280
+ * line carry the same mark exactly as the manifest says.
238
281
  *
239
- * @param props - `agentKey`: the roster key; `size`: square edge in pixels.
282
+ * @param props - `runtimeId`: the roster row's unified id; `agentKey`: the
283
+ * roster key when no id is at hand; `size`: square edge in pixels.
240
284
  * @returns the runtime mark.
241
285
  */
242
- function RuntimeMark({ agentKey, size }) {
243
- if (agentKey === "native") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DshFish, { size });
244
- const base = agentKey.endsWith("-sdk") ? agentKey.slice(0, -4) : agentKey;
245
- const uri = RUNTIME_ICON_URIS[base];
246
- if (uri === void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SubagentGlyph, { size });
247
- const tile = RUNTIME_TILE_BG[base];
248
- if (tile === void 0) return imgMark(uri, size);
286
+ function RuntimeMark({ runtimeId, agentKey, size }) {
287
+ const resolved = runtimeId ?? (agentKey !== void 0 ? runtimeIdOf(agentKey) : void 0);
288
+ const asset = resolved === void 0 ? void 0 : RUNTIME_ICON_ASSETS[resolved];
289
+ if (asset === void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SubagentGlyph, { size });
290
+ const height = asset.ratio === 1 ? size : Math.round(size / asset.ratio * 100) / 100;
291
+ if (asset.tile === void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
292
+ src: asset.uri,
293
+ alt: "",
294
+ width: size,
295
+ height,
296
+ style: {
297
+ display: "block",
298
+ flex: "none",
299
+ objectFit: "contain"
300
+ }
301
+ });
249
302
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
250
303
  "aria-hidden": "true",
251
304
  style: {
@@ -253,12 +306,96 @@ function RuntimeMark({ agentKey, size }) {
253
306
  height: size,
254
307
  flex: "none",
255
308
  borderRadius: Math.max(3, Math.round(size * .2)),
256
- background: tile,
309
+ background: asset.tile,
257
310
  display: "inline-flex",
258
311
  alignItems: "center",
259
312
  justifyContent: "center"
260
313
  },
261
- children: imgMark(uri, Math.round(size * .74))
314
+ children: imgMark(asset.uri, Math.round(size * .74))
315
+ });
316
+ }
317
+
318
+ //#endregion
319
+ //#region src/client/status-mark.tsx
320
+ /**
321
+ * The machine row's connection mark: a Wi-Fi-style signal glyph (drawn
322
+ * in-bundle — the official primitives catalog has no antenna/wifi icon, and
323
+ * the pack precedent for missing official artwork is an in-bundle redraw)
324
+ * standing in for the retired status word chip (2026-10-07 user ruling, spec
325
+ * hub-roster-identity §4). The four health states keep their text semantics
326
+ * on the `title` and differ by color; the two failure states add the strike.
327
+ *
328
+ * @module superd-hub/client/status-mark
329
+ */
330
+ /** The color of one machine health state (the dot palette the chips used). */
331
+ function statusColor(status) {
332
+ if (status === "reachable") return "var(--dsw-alias-state-success-primary)";
333
+ if (status === "auth-expired") return "var(--dsw-alias-state-error-primary)";
334
+ if (status === "unreachable") return "var(--dsw-alias-state-warn-primary)";
335
+ return "var(--dsw-alias-label-caption)";
336
+ }
337
+ /** The word the icon replaces — tooltip and accessibility text. */
338
+ const STATUS_TEXT = {
339
+ reachable: "reachable",
340
+ pending: "pending",
341
+ unreachable: "unreachable",
342
+ "auth-expired": "auth expired"
343
+ };
344
+ /**
345
+ * The signal mark for one machine health state.
346
+ *
347
+ * @param props - `status`: the machine's health; `size`: square edge in pixels.
348
+ * @returns the status mark.
349
+ */
350
+ function StatusMark({ status, size }) {
351
+ const failed = status === "unreachable" || status === "auth-expired";
352
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
353
+ width: size,
354
+ height: size,
355
+ viewBox: "0 0 16 16",
356
+ fill: "none",
357
+ xmlns: "http://www.w3.org/2000/svg",
358
+ "aria-hidden": "true",
359
+ role: "img",
360
+ "aria-label": STATUS_TEXT[status],
361
+ style: {
362
+ display: "block",
363
+ flex: "none",
364
+ color: statusColor(status)
365
+ },
366
+ children: [
367
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
368
+ cx: "8",
369
+ cy: "12.6",
370
+ r: "1.5",
371
+ fill: "currentColor"
372
+ }),
373
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
374
+ d: "M5.1 9.9a4.4 4.4 0 0 1 5.8 0",
375
+ stroke: "currentColor",
376
+ strokeWidth: "1.5",
377
+ strokeLinecap: "round"
378
+ }),
379
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
380
+ d: "M2.9 7.5a7.6 7.6 0 0 1 10.2 0",
381
+ stroke: "currentColor",
382
+ strokeWidth: "1.5",
383
+ strokeLinecap: "round"
384
+ }),
385
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
386
+ d: "M0.9 5.2a10.6 10.6 0 0 1 14.2 0",
387
+ stroke: "currentColor",
388
+ strokeWidth: "1.5",
389
+ strokeLinecap: "round",
390
+ opacity: status === "pending" ? .45 : 1
391
+ }),
392
+ failed && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
393
+ d: "M2 14.2 14 2.2",
394
+ stroke: "currentColor",
395
+ strokeWidth: "1.5",
396
+ strokeLinecap: "round"
397
+ })
398
+ ]
262
399
  });
263
400
  }
264
401
 
@@ -267,6 +404,7 @@ function RuntimeMark({ agentKey, size }) {
267
404
  /** The native runtime every composition can fall back to. */
268
405
  const NATIVE_LINK = {
269
406
  key: "native",
407
+ runtimeId: "native",
270
408
  label: "DSH",
271
409
  path: "/",
272
410
  machine: "local",
@@ -292,10 +430,11 @@ function coerceAgents(raw) {
292
430
  const links = [];
293
431
  for (const entry of raw) {
294
432
  if (typeof entry !== "object" || entry === null) continue;
295
- const { key, label, path, machine } = entry;
433
+ const { key, label, path, machine, runtimeId } = entry;
296
434
  if (typeof key !== "string" || typeof path !== "string") continue;
297
435
  links.push({
298
436
  key,
437
+ runtimeId: typeof runtimeId === "string" && runtimeId !== "" ? runtimeId : void 0,
299
438
  label: typeof label === "string" ? label : FALLBACK_LABELS[key] ?? key,
300
439
  path,
301
440
  machine: typeof machine === "string" && machine !== "" ? machine : void 0,
@@ -336,6 +475,7 @@ async function fetchRoster() {
336
475
  if (typeof key !== "string") continue;
337
476
  links.push(key === "native" ? NATIVE_LINK : {
338
477
  key,
478
+ runtimeId: runtimeIdOf(key),
339
479
  label: FALLBACK_LABELS[key] ?? key,
340
480
  path: `/${key}/`,
341
481
  machine: "local",
@@ -385,11 +525,12 @@ const STATUSES = [
385
525
  /** Coerce the self block; a shape without a non-empty string id + string label is simply absent. */
386
526
  function coerceSelf(raw) {
387
527
  if (typeof raw !== "object" || raw === null || Array.isArray(raw)) return void 0;
388
- const { id, label } = raw;
528
+ const { id, label, tokenPreview } = raw;
389
529
  if (typeof id !== "string" || id === "" || typeof label !== "string") return void 0;
390
530
  return {
391
531
  id,
392
- label
532
+ label,
533
+ ...typeof tokenPreview === "string" && tokenPreview !== "" ? { tokenPreview } : {}
393
534
  };
394
535
  }
395
536
  /**
@@ -415,19 +556,14 @@ function coerceMachineList(raw) {
415
556
  const base = {
416
557
  id: row.id,
417
558
  name: row.name,
418
- label: typeof row.label === "string" && row.label !== "" ? row.label : row.name,
419
559
  origin: row.origin,
420
560
  status,
421
561
  self: self !== void 0 && row.id === self.id
422
562
  };
423
- const withProbe = typeof row.lastProbeAt === "number" ? {
424
- ...base,
425
- lastProbeAt: row.lastProbeAt
426
- } : base;
427
563
  machines.push(typeof row.versionWarning === "string" && row.versionWarning !== "" ? {
428
- ...withProbe,
564
+ ...base,
429
565
  versionWarning: row.versionWarning
430
- } : withProbe);
566
+ } : base);
431
567
  }
432
568
  return self === void 0 ? { machines } : {
433
569
  self,
@@ -464,25 +600,31 @@ async function fetchMachines() {
464
600
  return coerceMachineList(await response.json().catch(() => void 0));
465
601
  }
466
602
  /**
467
- * POST a pairing `{name, label?, tokenUrl}` (label omitted → the server
468
- * collapses it to the name).
603
+ * POST a pairing `{name, tokenUrl}` — mutual by design: the peer is offered
604
+ * our own pairing input, so one action pairs both machines.
469
605
  *
606
+ * @returns the reverse leg's outcome when the answer carried one.
470
607
  * @throws Error(body.error) when the face answers non-2xx — the message is
471
608
  * mesh-link's own, already token-redacted.
472
609
  */
473
610
  async function addMachine(input) {
474
- const body = {
475
- name: input.name,
476
- tokenUrl: input.tokenUrl
477
- };
478
- if (typeof input.label === "string" && input.label !== "") body.label = input.label;
479
611
  const response = await fetch(MESH_API_BASE, {
480
612
  credentials: "same-origin",
481
613
  method: "POST",
482
614
  headers: { "content-type": "application/json" },
483
- body: JSON.stringify(body)
615
+ body: JSON.stringify({
616
+ name: input.name,
617
+ tokenUrl: input.tokenUrl
618
+ })
484
619
  });
485
620
  if (!response.ok) throw new Error(await errorText(response));
621
+ const body = await response.json().catch(() => void 0);
622
+ if (typeof body?.mutual !== "object" || body.mutual === null) return {};
623
+ const raw = body.mutual;
624
+ return { mutual: {
625
+ ok: raw.ok === true,
626
+ ...typeof raw.error === "string" && raw.error !== "" ? { error: raw.error } : {}
627
+ } };
486
628
  }
487
629
  /**
488
630
  * DELETE one remote row by id (`{removed: boolean}` answers even for
@@ -523,23 +665,30 @@ async function reprobeMachine(id) {
523
665
  */
524
666
  const AUTO_REFRESH_NOTE = "auto-refreshes every 5 min";
525
667
  /**
526
- * The per-machine last-fetch line, shaped from the row's `lastProbeAt`
527
- * (the hub's status table stamp — mesh-rpc joins it on every GET).
528
- * Pure by design (the UI passes its own `now`): headless-testable without
529
- * jsdom, same presence contract as {@link machineVersionChip} — absent or
530
- * non-finite stamp means "never probed" and the panel omits the line.
668
+ * Ask the hub to tokenize the caller's origin with the process's live launch
669
+ * token (spec hub-roster-identity §3): the pairing URL a user copies onto
670
+ * another machine's Add-machine form. The host mints through the connection
671
+ * face's public `authenticatedUrl` — this client never sees the raw token
672
+ * anywhere else.
531
673
  *
532
- * @param lastProbeAt - epoch ms of the machine's last recorded probe.
533
- * @param now - epoch ms the panel renders at.
534
- * @returns "Updated 2m ago" / "Updated just now" / … , or undefined.
674
+ * @param origin - the page's own origin (`location.origin`), a bare http(s) origin.
675
+ * @returns the tokenized pairing URL.
676
+ * @throws Error(body.error) on a non-2xx answer (validation or missing host face).
535
677
  */
536
- function lastFetchLabel(lastProbeAt, now) {
537
- if (typeof lastProbeAt !== "number" || !Number.isFinite(lastProbeAt)) return void 0;
538
- const seconds = Math.max(0, Math.floor((now - lastProbeAt) / 1e3));
539
- if (seconds < 60) return "Updated just now";
540
- if (seconds < 3600) return `Updated ${Math.floor(seconds / 60)}m ago`;
541
- if (seconds < 86400) return `Updated ${Math.floor(seconds / 3600)}h ago`;
542
- return `Updated ${Math.floor(seconds / 86400)}d ago`;
678
+ async function fetchPairingUrl(origin) {
679
+ const response = await fetch(MESH_API_BASE, {
680
+ credentials: "same-origin",
681
+ method: "POST",
682
+ headers: { "content-type": "application/json" },
683
+ body: JSON.stringify({
684
+ op: "tokenUrl",
685
+ origin
686
+ })
687
+ });
688
+ if (!response.ok) throw new Error(await errorText(response));
689
+ const body = await response.json().catch(() => void 0);
690
+ if (typeof body?.tokenUrl !== "string" || body.tokenUrl === "") throw new Error("mesh-api: tokenUrl op answered no tokenUrl");
691
+ return body.tokenUrl;
543
692
  }
544
693
  /**
545
694
  * Client-side pre-check before a pairing submit: a parseable absolute
@@ -563,6 +712,81 @@ function validTokenUrl(input) {
563
712
  return token !== null && token !== "";
564
713
  }
565
714
 
715
+ //#endregion
716
+ //#region src/toast-core.ts
717
+ /** Failures that name what broke need a longer read than a one-liner. */
718
+ const TOAST_DEFAULT_HOLD_MS = 6e3;
719
+ /** The exact props the official primitive receives (pure — the unit seam). */
720
+ function toastProps(text, options = {}) {
721
+ const props = {
722
+ text,
723
+ holdMs: options.holdMs ?? TOAST_DEFAULT_HOLD_MS
724
+ };
725
+ if (options.tone !== void 0) props.tone = options.tone;
726
+ return props;
727
+ }
728
+ let seq = 0;
729
+ let current;
730
+ const listeners = /* @__PURE__ */ new Set();
731
+ function emit() {
732
+ for (const fn of [...listeners]) try {
733
+ fn(current);
734
+ } catch {}
735
+ }
736
+ /** Fire one toast (best-effort: without a mounted owner nothing renders). */
737
+ function showSuperdToast(text, options = {}) {
738
+ current = {
739
+ seq: ++seq,
740
+ text,
741
+ options
742
+ };
743
+ emit();
744
+ }
745
+ /** Clear a shown toast (the fade's `onDone`); stale sequences are no-ops. */
746
+ function clearSuperdToast(done) {
747
+ if (current === void 0 || current.seq !== done) return;
748
+ current = void 0;
749
+ emit();
750
+ }
751
+ /** Subscribe to the store (the host's effect face); returns unsubscribe. */
752
+ function onSuperdToast(fn) {
753
+ listeners.add(fn);
754
+ try {
755
+ fn(current);
756
+ } catch {}
757
+ return () => {
758
+ listeners.delete(fn);
759
+ };
760
+ }
761
+
762
+ //#endregion
763
+ //#region src/client/toast.ts
764
+ /**
765
+ * The element for one pending toast: keyed by sequence so a newer toast
766
+ * remounts the primitive and restarts its slide-in cycle (the primitive's
767
+ * own re-show contract).
768
+ */
769
+ function superdToastElement(toast) {
770
+ return react.createElement(__deepseek_ai_dsh_client_ui_primitives.Toast, {
771
+ key: toast.seq,
772
+ ...toastProps(toast.text, toast.options),
773
+ onDone: () => {
774
+ clearSuperdToast(toast.seq);
775
+ }
776
+ });
777
+ }
778
+ /**
779
+ * The always-mounted owner: subscribes to the store and renders the current
780
+ * toast (nothing while the store is empty). Mounted inside the Hub sidebar
781
+ * row — the primitive's body portal places the banner top-center regardless
782
+ * of where the owner sits.
783
+ */
784
+ function SuperdToastHost() {
785
+ const [toast, setToast] = react.useState(void 0);
786
+ react.useEffect(() => onSuperdToast(setToast), []);
787
+ return toast === void 0 ? null : superdToastElement(toast);
788
+ }
789
+
566
790
  //#endregion
567
791
  //#region src/client/mesh-groups.ts
568
792
  /** The machine key every LOCAL roster row carries (older host shapes may omit the field — grouping treats absent as local). */
@@ -574,14 +798,29 @@ function isLocalMachine(machine) {
574
798
  return machine === void 0 || machine === LOCAL_MACHINE_KEY;
575
799
  }
576
800
  /**
801
+ * One group's member order (spec hub-roster-identity §4, uniform for local
802
+ * and remote machines): the native DSH row first, then label code-unit order
803
+ * with the key as the tiebreak.
804
+ */
805
+ function sortMembers(agents) {
806
+ return [...agents].sort((a, b) => {
807
+ const nativeA = (a.runtimeId ?? a.key) === "native" ? 0 : 1;
808
+ const nativeB = (b.runtimeId ?? b.key) === "native" ? 0 : 1;
809
+ if (nativeA !== nativeB) return nativeA - nativeB;
810
+ if (a.label !== b.label) return a.label < b.label ? -1 : 1;
811
+ return a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
812
+ });
813
+ }
814
+ /**
577
815
  * Group a roster into machine sections for the switch menu and the Hub
578
816
  * roster rows: the LOCAL group first (label {@link LOCAL_MACHINE_LABEL};
579
817
  * rows whose `machine` is `'local'` or absent), then one group per remote
580
818
  * machine sorted by display label (code-unit order) with the machine key as
581
- * the tiebreak. Members keep the roster's given order inside their group;
582
- * groups only exist for machines actually present in the roster (no empty
583
- * local section when every row is federated). An unknown label map entry —
584
- * missing, or an empty string — falls back to the raw machine key.
819
+ * the tiebreak. Members are ordered DSH-first, then alphabetical, inside
820
+ * every group; groups only exist for machines actually present in the
821
+ * roster (no empty local section when every row is federated). An unknown
822
+ * label map entry — missing, or an empty string — falls back to the raw
823
+ * machine key.
585
824
  *
586
825
  * @param links - the roster rows (any order; the section order is derived, not inherited).
587
826
  * @param machineLabels - machine key (m4) → display label; the machines API answer via {@link machineLabelsFrom}.
@@ -607,19 +846,20 @@ function groupByMachine(links, machineLabels) {
607
846
  const remote = [...byKey.entries()].map(([key, agents]) => ({
608
847
  key,
609
848
  label: labelOf(key),
610
- agents
849
+ agents: sortMembers(agents)
611
850
  })).sort((a, b) => a.label !== b.label ? a.label < b.label ? -1 : 1 : a.key < b.key ? -1 : a.key > b.key ? 1 : 0);
612
851
  return local.length > 0 ? [{
613
852
  key: LOCAL_MACHINE_KEY,
614
853
  label: LOCAL_MACHINE_LABEL,
615
- agents: local
854
+ agents: sortMembers(local)
616
855
  }, ...remote] : remote;
617
856
  }
618
857
  /**
619
858
  * The machines API answer → the grouping label map: every remote row's
620
- * `id → label` (mesh-api's coercion already collapsed an empty label to the
621
- * machine name) plus the self block's own `m4 → label`. An absent list is
622
- * the empty map — the caller's degrade-to-flat trigger, never a throw.
859
+ * `id → name` (the machine's sole display identity — the retired separate
860
+ * label column no longer exists on the wire) plus the self block's own
861
+ * `m4 → label`. An absent list is the empty map — the caller's
862
+ * degrade-to-flat trigger, never a throw.
623
863
  *
624
864
  * @param list - the coerced `fetchMachines()` answer, when it succeeded.
625
865
  * @returns machine key → display label (the raw key stays absent, not mapped).
@@ -627,7 +867,7 @@ function groupByMachine(links, machineLabels) {
627
867
  function machineLabelsFrom(list) {
628
868
  const labels = {};
629
869
  if (list === void 0) return labels;
630
- for (const machine of list.machines) labels[machine.id] = machine.label !== "" ? machine.label : machine.name;
870
+ for (const machine of list.machines) labels[machine.id] = machine.name;
631
871
  if (list.self !== void 0) labels[list.self.id] = list.self.label;
632
872
  return labels;
633
873
  }
@@ -1295,7 +1535,7 @@ function runMachineDownFeedback(label, row, faces) {
1295
1535
  if (enriched !== void 0) {
1296
1536
  const found = enriched.machines.find((entry) => entry.id === row.machine);
1297
1537
  if (found !== void 0) {
1298
- machineName = found.label;
1538
+ machineName = found.name;
1299
1539
  if (found.status === "unreachable" || found.status === "auth-expired") status = found.status;
1300
1540
  }
1301
1541
  }
@@ -1362,53 +1602,6 @@ function createReadinessWaiter(faces, options = {}) {
1362
1602
  };
1363
1603
  }
1364
1604
 
1365
- //#endregion
1366
- //#region src/toast-core.ts
1367
- /** Failures that name what broke need a longer read than a one-liner. */
1368
- const TOAST_DEFAULT_HOLD_MS = 6e3;
1369
- /** The exact props the official primitive receives (pure — the unit seam). */
1370
- function toastProps(text, options = {}) {
1371
- const props = {
1372
- text,
1373
- holdMs: options.holdMs ?? TOAST_DEFAULT_HOLD_MS
1374
- };
1375
- if (options.tone !== void 0) props.tone = options.tone;
1376
- return props;
1377
- }
1378
- let seq = 0;
1379
- let current;
1380
- const listeners = /* @__PURE__ */ new Set();
1381
- function emit() {
1382
- for (const fn of [...listeners]) try {
1383
- fn(current);
1384
- } catch {}
1385
- }
1386
- /** Fire one toast (best-effort: without a mounted owner nothing renders). */
1387
- function showSuperdToast(text, options = {}) {
1388
- current = {
1389
- seq: ++seq,
1390
- text,
1391
- options
1392
- };
1393
- emit();
1394
- }
1395
- /** Clear a shown toast (the fade's `onDone`); stale sequences are no-ops. */
1396
- function clearSuperdToast(done) {
1397
- if (current === void 0 || current.seq !== done) return;
1398
- current = void 0;
1399
- emit();
1400
- }
1401
- /** Subscribe to the store (the host's effect face); returns unsubscribe. */
1402
- function onSuperdToast(fn) {
1403
- listeners.add(fn);
1404
- try {
1405
- fn(current);
1406
- } catch {}
1407
- return () => {
1408
- listeners.delete(fn);
1409
- };
1410
- }
1411
-
1412
1605
  //#endregion
1413
1606
  //#region src/client/switch.ts
1414
1607
  /** Whether this page is a fusion page: the baked flag global is present. */
@@ -2012,18 +2205,10 @@ const chipSelf = {
2012
2205
  background: "color-mix(in srgb, var(--dsw-alias-state-success-primary) 14%, transparent)",
2013
2206
  color: "var(--dsw-alias-state-success-primary)"
2014
2207
  };
2015
- const chipPending = {
2016
- ...chip,
2017
- color: "var(--dsw-alias-label-caption)"
2018
- };
2019
2208
  const chipWarn = {
2020
2209
  ...chip,
2021
2210
  color: "var(--dsw-alias-state-warn-primary)"
2022
2211
  };
2023
- const chipError = {
2024
- ...chip,
2025
- color: "var(--dsw-alias-state-error-primary)"
2026
- };
2027
2212
  /** Machine id chip (the m4): the monospace chip look the roster's path tags use. */
2028
2213
  const chipMonoId = {
2029
2214
  ...chip,
@@ -2071,7 +2256,7 @@ const panelStyle = {
2071
2256
  background: "var(--dsw-alias-interactive-bg-hover)",
2072
2257
  fontSize: 12.5
2073
2258
  };
2074
- /** The icon action (remove ✕) seat. */
2259
+ /** The icon action (remove / refresh / copy) seat. */
2075
2260
  const iconActionStyle = {
2076
2261
  display: "inline-flex",
2077
2262
  alignItems: "center",
@@ -2085,17 +2270,6 @@ const iconActionStyle = {
2085
2270
  font: "inherit",
2086
2271
  cursor: "pointer"
2087
2272
  };
2088
- /** The quiet text action (reprobe) — the switch/row-action look. */
2089
- const textActionStyle = {
2090
- border: "none",
2091
- background: "transparent",
2092
- padding: 0,
2093
- font: "inherit",
2094
- fontSize: 12.5,
2095
- color: "var(--dsw-alias-label-secondary)",
2096
- cursor: "pointer",
2097
- whiteSpace: "nowrap"
2098
- };
2099
2273
  /** The row's settings panel heading. */
2100
2274
  const panelHeadStyle = {
2101
2275
  margin: "0 0 6px",
@@ -2118,38 +2292,6 @@ const optionStyle = {
2118
2292
  fontSize: 12.5,
2119
2293
  color: "var(--dsw-alias-label-primary)"
2120
2294
  };
2121
- /** The status dot's color: reachable green, pending grey, unreachable amber, auth-expired red. */
2122
- function statusDotColor(status) {
2123
- if (status === "reachable") return "var(--dsw-alias-state-success-primary)";
2124
- if (status === "auth-expired") return "var(--dsw-alias-state-error-primary)";
2125
- if (status === "unreachable") return "var(--dsw-alias-state-warn-primary)";
2126
- return "var(--dsw-alias-label-caption)";
2127
- }
2128
- /** The last-fetch caption's style (R7): quiet tertiary text beside the status chip. */
2129
- const ageStyle = {
2130
- fontSize: 11.5,
2131
- color: "var(--dsw-alias-label-tertiary)",
2132
- whiteSpace: "nowrap"
2133
- };
2134
- /** The status chip (style + text) for one remote row. */
2135
- function statusChip(machine) {
2136
- if (machine.status === "reachable") return {
2137
- style: chipSelf,
2138
- text: "reachable"
2139
- };
2140
- if (machine.status === "auth-expired") return {
2141
- style: chipError,
2142
- text: "auth expired"
2143
- };
2144
- if (machine.status === "unreachable") return {
2145
- style: chipWarn,
2146
- text: "unreachable"
2147
- };
2148
- return {
2149
- style: chipPending,
2150
- text: "pending"
2151
- };
2152
- }
2153
2295
  /** One line of error text for the panel's inline error line. */
2154
2296
  function errText(err) {
2155
2297
  return err instanceof Error ? err.message : String(err);
@@ -2944,6 +3086,8 @@ function HubPage() {
2944
3086
  const [meshReloads, setMeshReloads] = react.useState(0);
2945
3087
  const [showAdd, setShowAdd] = react.useState(false);
2946
3088
  const [draft, setDraft] = react.useState(EMPTY_DRAFT);
3089
+ /** The self row's pairing-URL mint/clipboard round trip is in flight. */
3090
+ const [pairingBusy, setPairingBusy] = react.useState(false);
2947
3091
  const [agents, setAgents] = react.useState(() => rosterFromGlobal() ?? null);
2948
3092
  const [rosterFailed, setRosterFailed] = react.useState(false);
2949
3093
  const [tab, setTab] = react.useState("home");
@@ -3045,6 +3189,7 @@ function HubPage() {
3045
3189
  },
3046
3190
  children: [
3047
3191
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeMark, {
3192
+ runtimeId: agent.runtimeId,
3048
3193
  agentKey: agent.key,
3049
3194
  size: 20
3050
3195
  }),
@@ -3104,11 +3249,13 @@ function HubPage() {
3104
3249
  addMachine({
3105
3250
  name,
3106
3251
  tokenUrl
3107
- }).then(() => {
3252
+ }).then((out) => {
3108
3253
  setDraft(EMPTY_DRAFT);
3109
3254
  setShowAdd(false);
3110
3255
  setMeshError(null);
3111
3256
  reloadMachines();
3257
+ if (out.mutual !== void 0 && !out.mutual.ok) showSuperdToast(`Super D: paired with ${name}, but the mutual half failed (${out.mutual.error}) — add this machine from the peer manually.`);
3258
+ else showSuperdToast(`Super D: paired with ${name} — the peer also added this machine (mutual).`, { tone: "success" });
3112
3259
  }).catch((err) => {
3113
3260
  setMeshError(errText(err));
3114
3261
  }).finally(() => {
@@ -3131,6 +3278,21 @@ function HubPage() {
3131
3278
  setMeshError(errText(err));
3132
3279
  });
3133
3280
  };
3281
+ /** The self row's copy affordance: one explicit mint (the token rides no
3282
+ * GET), one clipboard write, the outcome on the shared toast. */
3283
+ const copyPairingUrl = () => {
3284
+ if (pairingBusy) return;
3285
+ const origin = typeof location === "undefined" ? "" : location.origin;
3286
+ if (origin === "") return;
3287
+ setPairingBusy(true);
3288
+ fetchPairingUrl(origin).then((url) => (0, __deepseek_ai_dsh_client_ui_primitives.writeClipboard)(url)).then((copied) => {
3289
+ showSuperdToast(copied ? "Pairing URL copied — paste it into Add machine on the other machine" : "Copy failed — the browser refused clipboard access", copied ? { tone: "success" } : {});
3290
+ }).catch((err) => {
3291
+ setMeshError(errText(err));
3292
+ }).finally(() => {
3293
+ setPairingBusy(false);
3294
+ });
3295
+ };
3134
3296
  const draftValid = draft.name.trim() !== "" && validTokenUrl(draft.tokenUrl.trim());
3135
3297
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3136
3298
  style: {
@@ -3301,7 +3463,7 @@ function HubPage() {
3301
3463
  color: "var(--dsw-alias-label-tertiary)"
3302
3464
  },
3303
3465
  children: [
3304
- "Add another DSH from remote machines, provide the token URL. Status ",
3466
+ "Add another DSH from remote machines, provide the token URL. Pairing is mutual — the peer adds this machine back automatically. Status ",
3305
3467
  AUTO_REFRESH_NOTE,
3306
3468
  "."
3307
3469
  ]
@@ -3351,10 +3513,25 @@ function HubPage() {
3351
3513
  },
3352
3514
  children: mesh.self.label
3353
3515
  }),
3354
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3355
- style: originStyle,
3356
- children: hereOrigin
3516
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3517
+ style: {
3518
+ ...originStyle,
3519
+ flex: "0 0 auto"
3520
+ },
3521
+ children: [hereOrigin, mesh.self.tokenPreview !== void 0 ? `/?token=${mesh.self.tokenPreview}` : ""]
3522
+ }),
3523
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3524
+ type: "button",
3525
+ "aria-label": "Copy this machine's pairing URL",
3526
+ title: pairingBusy ? "Minting pairing URL…" : "Copy the token URL another machine can Add machine with",
3527
+ disabled: pairingBusy,
3528
+ onClick: () => {
3529
+ copyPairingUrl();
3530
+ },
3531
+ style: iconActionStyle,
3532
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__deepseek_ai_dsh_client_ui_primitives.IconCopyOutlineRegular, { size: 15 })
3357
3533
  }),
3534
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { style: { flex: 1 } }),
3358
3535
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3359
3536
  style: chipMonoId,
3360
3537
  children: mesh.self.id
@@ -3364,80 +3541,55 @@ function HubPage() {
3364
3541
  children: "self"
3365
3542
  })
3366
3543
  ] }),
3367
- mesh.machines.map((machine) => {
3368
- const status = statusChip(machine);
3369
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(HoverRow, { children: [
3370
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3371
- "aria-hidden": true,
3372
- style: {
3373
- ...dotStyle,
3374
- background: statusDotColor(machine.status)
3375
- }
3376
- }),
3377
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3378
- style: {
3379
- fontWeight: 500,
3380
- whiteSpace: "nowrap"
3381
- },
3382
- children: machine.name
3383
- }),
3384
- machine.label !== machine.name && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3385
- style: chip,
3386
- children: machine.label
3387
- }),
3388
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3389
- style: originStyle,
3390
- children: machine.origin
3391
- }),
3392
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3393
- style: chipMonoId,
3394
- children: machine.id
3395
- }),
3396
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3397
- style: status.style,
3398
- children: status.text
3399
- }),
3400
- lastFetchLabel(machine.lastProbeAt, Date.now()) !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3401
- style: ageStyle,
3402
- children: lastFetchLabel(machine.lastProbeAt, Date.now())
3403
- }),
3404
- machineVersionChip(machine) !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3405
- style: chipWarn,
3406
- title: `machine ${machine.id}`,
3407
- children: machine.versionWarning
3408
- }),
3409
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3410
- type: "button",
3411
- "aria-label": `Refresh ${machine.name}`,
3412
- onClick: () => {
3413
- reprobeRemote(machine.id);
3414
- },
3415
- style: textActionStyle,
3416
- children: "refresh"
3417
- }),
3418
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3419
- type: "button",
3420
- "aria-label": `Remove ${machine.name}`,
3421
- onClick: () => {
3422
- removeRemote(machine.id);
3423
- },
3424
- style: iconActionStyle,
3425
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
3426
- width: "11",
3427
- height: "11",
3428
- viewBox: "0 0 11 11",
3429
- fill: "none",
3430
- "aria-hidden": "true",
3431
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
3432
- d: "M2.5 2.5L8.5 8.5M8.5 2.5L2.5 8.5",
3433
- stroke: "currentColor",
3434
- strokeWidth: "1.4",
3435
- strokeLinecap: "round"
3436
- })
3437
- })
3544
+ mesh.machines.map((machine) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(HoverRow, { children: [
3545
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3546
+ title: machine.status,
3547
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StatusMark, {
3548
+ status: machine.status,
3549
+ size: 16
3438
3550
  })
3439
- ] }, machine.id);
3440
- })
3551
+ }),
3552
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3553
+ style: {
3554
+ fontWeight: 500,
3555
+ whiteSpace: "nowrap"
3556
+ },
3557
+ children: machine.name
3558
+ }),
3559
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3560
+ style: originStyle,
3561
+ children: machine.origin
3562
+ }),
3563
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3564
+ style: chipMonoId,
3565
+ children: machine.id
3566
+ }),
3567
+ machineVersionChip(machine) !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3568
+ style: chipWarn,
3569
+ title: `machine ${machine.id}`,
3570
+ children: machine.versionWarning
3571
+ }),
3572
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3573
+ type: "button",
3574
+ "aria-label": `Refresh ${machine.name}`,
3575
+ title: `Refresh ${machine.name}`,
3576
+ onClick: () => {
3577
+ reprobeRemote(machine.id);
3578
+ },
3579
+ style: iconActionStyle,
3580
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 15 })
3581
+ }),
3582
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3583
+ type: "button",
3584
+ "aria-label": `Remove ${machine.name}`,
3585
+ title: `Remove ${machine.name}`,
3586
+ onClick: () => {
3587
+ removeRemote(machine.id);
3588
+ },
3589
+ style: iconActionStyle,
3590
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 15 })
3591
+ })
3592
+ ] }, machine.id))
3441
3593
  ]
3442
3594
  }),
3443
3595
  showAdd && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -3583,34 +3735,6 @@ function HubPage() {
3583
3735
  });
3584
3736
  }
3585
3737
 
3586
- //#endregion
3587
- //#region src/client/toast.ts
3588
- /**
3589
- * The element for one pending toast: keyed by sequence so a newer toast
3590
- * remounts the primitive and restarts its slide-in cycle (the primitive's
3591
- * own re-show contract).
3592
- */
3593
- function superdToastElement(toast) {
3594
- return react.createElement(__deepseek_ai_dsh_client_ui_primitives.Toast, {
3595
- key: toast.seq,
3596
- ...toastProps(toast.text, toast.options),
3597
- onDone: () => {
3598
- clearSuperdToast(toast.seq);
3599
- }
3600
- });
3601
- }
3602
- /**
3603
- * The always-mounted owner: subscribes to the store and renders the current
3604
- * toast (nothing while the store is empty). Mounted inside the Hub sidebar
3605
- * row — the primitive's body portal places the banner top-center regardless
3606
- * of where the owner sits.
3607
- */
3608
- function SuperdToastHost() {
3609
- const [toast, setToast] = react.useState(void 0);
3610
- react.useEffect(() => onSuperdToast(setToast), []);
3611
- return toast === void 0 ? null : superdToastElement(toast);
3612
- }
3613
-
3614
3738
  //#endregion
3615
3739
  //#region src/client/HubPanelIcon.tsx
3616
3740
  /** Runtime-mark edge inside the selector, and the chevron's own default edge. */
@@ -3725,6 +3849,7 @@ function HubPanelIcon({ size }) {
3725
3849
  id: agent.key,
3726
3850
  label: agent.label,
3727
3851
  icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeMark, {
3852
+ runtimeId: agent.runtimeId,
3728
3853
  agentKey: agent.key,
3729
3854
  size: 14
3730
3855
  })
@@ -3734,6 +3859,7 @@ function HubPanelIcon({ size }) {
3734
3859
  id: agent.key,
3735
3860
  label: agent.label,
3736
3861
  icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeMark, {
3862
+ runtimeId: agent.runtimeId,
3737
3863
  agentKey: agent.key,
3738
3864
  size: 14
3739
3865
  })
@@ -3815,6 +3941,7 @@ function HubPanelIcon({ size }) {
3815
3941
  if (event.key === "Enter" || event.key === " ") toggle(event);
3816
3942
  },
3817
3943
  children: [activeKey !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RuntimeMark, {
3944
+ runtimeId: agents.find((row) => row.key === activeKey)?.runtimeId,
3818
3945
  agentKey: activeKey,
3819
3946
  size: MARK_SIZE
3820
3947
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: CHEVRON_SIZE })]