@askdkc/dsh-cli 0.12.3 → 0.13.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 (162) hide show
  1. package/cordis.patch.yml +12 -131
  2. package/lib/types/adapter/channel/session-projection.d.ts.map +1 -1
  3. package/lib/types/adapter/channel/session-projection.js +0 -7
  4. package/lib/types/adapter/ports/channel-view.d.ts +1 -1
  5. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  6. package/lib/types/dsh-adapter/bundled-presets.d.ts +3 -8
  7. package/lib/types/dsh-adapter/bundled-presets.d.ts.map +1 -1
  8. package/lib/types/dsh-adapter/bundled-presets.js +5 -20
  9. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  10. package/lib/types/dsh-adapter/channel/binding-events.js +2 -9
  11. package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -1
  12. package/lib/types/dsh-adapter/channel/external-commands.js +9 -33
  13. package/lib/types/dsh-adapter/channel/local-actions.d.ts +2 -1
  14. package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
  15. package/lib/types/dsh-adapter/channel/local-actions.js +6 -2
  16. package/lib/types/dsh-adapter/channel/model-actions.js +3 -3
  17. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
  18. package/lib/types/dsh-adapter/channel/model-switch.js +0 -1
  19. package/lib/types/dsh-adapter/channel/permissions.d.ts +1 -6
  20. package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -1
  21. package/lib/types/dsh-adapter/channel/permissions.js +2 -54
  22. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
  23. package/lib/types/dsh-adapter/channel/projection.js +15 -70
  24. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
  25. package/lib/types/dsh-adapter/channel/session-fork.js +0 -1
  26. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
  27. package/lib/types/dsh-adapter/channel/session-metadata.js +1 -4
  28. package/lib/types/dsh-adapter/channel/session-resume.js +2 -2
  29. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
  30. package/lib/types/dsh-adapter/channel/session-rewind.js +0 -1
  31. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
  32. package/lib/types/dsh-adapter/channel/session-tree-actions.js +1 -2
  33. package/lib/types/dsh-adapter/channel/session-tree.d.ts.map +1 -1
  34. package/lib/types/dsh-adapter/channel/session-tree.js +9 -62
  35. package/lib/types/dsh-adapter/channel/skill-catalog.js +1 -1
  36. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
  37. package/lib/types/dsh-adapter/channel/subagent-projection.js +2 -8
  38. package/lib/types/dsh-adapter/channel/transcript.d.ts +0 -16
  39. package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
  40. package/lib/types/dsh-adapter/channel/transcript.js +0 -43
  41. package/lib/types/dsh-adapter/channel.js +2 -2
  42. package/lib/types/dsh-adapter/compat/index.d.ts +5 -25
  43. package/lib/types/dsh-adapter/compat/index.d.ts.map +1 -1
  44. package/lib/types/dsh-adapter/compat/index.js +5 -25
  45. package/lib/types/dsh-adapter/compat/liveSession.d.ts +12 -23
  46. package/lib/types/dsh-adapter/compat/liveSession.d.ts.map +1 -1
  47. package/lib/types/dsh-adapter/compat/liveSession.js +15 -68
  48. package/lib/types/dsh-adapter/compat/messages.d.ts +1 -3
  49. package/lib/types/dsh-adapter/compat/messages.d.ts.map +1 -1
  50. package/lib/types/dsh-adapter/compat/messages.js +2 -10
  51. package/lib/types/dsh-adapter/compat/persistence.d.ts +2 -3
  52. package/lib/types/dsh-adapter/compat/persistence.d.ts.map +1 -1
  53. package/lib/types/dsh-adapter/compat/persistence.js +9 -14
  54. package/lib/types/dsh-adapter/compat/sessionLog.d.ts +10 -144
  55. package/lib/types/dsh-adapter/compat/sessionLog.d.ts.map +1 -1
  56. package/lib/types/dsh-adapter/compat/sessionLog.js +45 -275
  57. package/lib/types/dsh-adapter/compat/settings.d.ts +4 -10
  58. package/lib/types/dsh-adapter/compat/settings.d.ts.map +1 -1
  59. package/lib/types/dsh-adapter/compat/settings.js +6 -23
  60. package/lib/types/dsh-adapter/compat/shell.d.ts +2 -3
  61. package/lib/types/dsh-adapter/compat/shell.d.ts.map +1 -1
  62. package/lib/types/dsh-adapter/compat/shell.js +2 -7
  63. package/lib/types/dsh-adapter/contract.d.ts +4 -34
  64. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  65. package/lib/types/dsh-adapter/contract.js +8 -83
  66. package/lib/types/dsh-adapter/packaged-presets.d.ts +0 -19
  67. package/lib/types/dsh-adapter/packaged-presets.d.ts.map +1 -1
  68. package/lib/types/dsh-adapter/packaged-presets.js +1 -83
  69. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  70. package/lib/types/dsh-adapter/plugin.js +25 -168
  71. package/lib/types/dsh-adapter/preset-resolution.d.ts +1 -22
  72. package/lib/types/dsh-adapter/preset-resolution.d.ts.map +1 -1
  73. package/lib/types/dsh-adapter/preset-resolution.js +0 -34
  74. package/lib/types/dsh-adapter/presets.d.ts +1 -4
  75. package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
  76. package/lib/types/dsh-adapter/presets.js +3 -6
  77. package/lib/types/dsh-adapter/questions-answerer.d.ts +5 -43
  78. package/lib/types/dsh-adapter/questions-answerer.d.ts.map +1 -1
  79. package/lib/types/dsh-adapter/questions-answerer.js +7 -63
  80. package/lib/types/dsh-adapter/sessionTree.d.ts +0 -19
  81. package/lib/types/dsh-adapter/sessionTree.d.ts.map +1 -1
  82. package/lib/types/dsh-adapter/sessionTree.js +2 -112
  83. package/lib/types/dsh-adapter/sessions/header.d.ts +2 -2
  84. package/lib/types/dsh-adapter/sessions/header.d.ts.map +1 -1
  85. package/lib/types/dsh-adapter/sessions/header.js +2 -8
  86. package/lib/types/dsh-adapter/sessions/list.d.ts +7 -28
  87. package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
  88. package/lib/types/dsh-adapter/sessions/list.js +48 -103
  89. package/lib/types/dsh-adapter/sessions/store.d.ts +1 -2
  90. package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
  91. package/lib/types/dsh-adapter/sessions/store.js +7 -10
  92. package/lib/types/dsh-adapter/sharp.d.ts.map +1 -1
  93. package/lib/types/dsh-adapter/sharp.js +0 -1
  94. package/lib/types/dsh-adapter/subagents.d.ts +1 -2
  95. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  96. package/lib/types/dsh-adapter/subagents.js +1 -12
  97. package/lib/types/dsh-adapter/trajectory/aggregate.d.ts +1 -1
  98. package/lib/types/dsh-adapter/trajectory/aggregate.js +1 -1
  99. package/lib/types/dsh-adapter/trajectory/guards.d.ts +5 -22
  100. package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
  101. package/lib/types/dsh-adapter/trajectory/guards.js +5 -23
  102. package/lib/types/dsh-adapter/trajectory/projection.d.ts +5 -21
  103. package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
  104. package/lib/types/dsh-adapter/trajectory/projection.js +4 -38
  105. package/lib/types/dsh-adapter/trajectory/types.d.ts +1 -1
  106. package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
  107. package/lib/types/i18n.d.ts +2 -22
  108. package/lib/types/i18n.d.ts.map +1 -1
  109. package/lib/types/i18n.js +2 -10
  110. package/lib/types/presetPrefs.d.ts +1 -3
  111. package/lib/types/presetPrefs.d.ts.map +1 -1
  112. package/lib/types/presetPrefs.js +2 -4
  113. package/node_modules/@askdkc/dsh-auth/README.ja.md +28 -9
  114. package/node_modules/@askdkc/dsh-auth/README.md +19 -8
  115. package/node_modules/@askdkc/dsh-auth/dsh-plugin.json +3 -3
  116. package/node_modules/@askdkc/dsh-auth/lib/THIRD_PARTY_NOTICES.txt +168 -0
  117. package/node_modules/@askdkc/dsh-auth/lib/abortable.d.ts +2 -0
  118. package/node_modules/@askdkc/dsh-auth/lib/abortable.js +9 -0
  119. package/node_modules/@askdkc/dsh-auth/lib/auth-contract.d.ts +66 -0
  120. package/node_modules/@askdkc/dsh-auth/lib/auth-contract.js +1 -0
  121. package/node_modules/@askdkc/dsh-auth/lib/command.js +15 -1
  122. package/node_modules/@askdkc/dsh-auth/lib/credentials.d.ts +8 -14
  123. package/node_modules/@askdkc/dsh-auth/lib/credentials.js +1 -1
  124. package/node_modules/@askdkc/dsh-auth/lib/index.d.ts +8 -28
  125. package/node_modules/@askdkc/dsh-auth/lib/index.js +67 -65
  126. package/node_modules/@askdkc/dsh-auth/lib/interaction.d.ts +5 -5
  127. package/node_modules/@askdkc/dsh-auth/lib/opencode-adapter.d.ts +37 -0
  128. package/node_modules/@askdkc/dsh-auth/lib/opencode-adapter.js +197 -0
  129. package/node_modules/@askdkc/dsh-auth/lib/opencode-catalog.d.ts +72 -0
  130. package/node_modules/@askdkc/dsh-auth/lib/opencode-catalog.js +252 -0
  131. package/node_modules/@askdkc/dsh-auth/lib/opencode-codec.d.ts +6 -0
  132. package/node_modules/@askdkc/dsh-auth/lib/opencode-codec.js +93 -0
  133. package/node_modules/@askdkc/dsh-auth/lib/opencode-owned.generated.d.ts +113 -0
  134. package/node_modules/@askdkc/dsh-auth/lib/opencode-owned.generated.js +2866 -0
  135. package/node_modules/@askdkc/dsh-auth/lib/opencode-replay.d.ts +15 -0
  136. package/node_modules/@askdkc/dsh-auth/lib/opencode-replay.js +141 -0
  137. package/node_modules/@askdkc/dsh-auth/lib/opencode-sdk.d.ts +5 -0
  138. package/node_modules/@askdkc/dsh-auth/lib/opencode-sdk.js +43465 -0
  139. package/node_modules/@askdkc/dsh-auth/lib/opencode-sdk.js.map +7 -0
  140. package/node_modules/@askdkc/dsh-auth/lib/opencode-transport.d.ts +5 -0
  141. package/node_modules/@askdkc/dsh-auth/lib/opencode-transport.js +69 -0
  142. package/node_modules/@askdkc/dsh-auth/lib/pi-routes.d.ts +32 -0
  143. package/node_modules/@askdkc/dsh-auth/lib/pi-routes.js +45 -0
  144. package/node_modules/@askdkc/dsh-auth/lib/profiles.d.ts +2 -20
  145. package/node_modules/@askdkc/dsh-auth/lib/profiles.js +6 -41
  146. package/node_modules/@askdkc/dsh-auth/lib/routes.d.ts +20 -0
  147. package/node_modules/@askdkc/dsh-auth/lib/routes.js +13 -0
  148. package/node_modules/@askdkc/dsh-auth/lib/service.d.ts +11 -2
  149. package/node_modules/@askdkc/dsh-auth/lib/service.js +26 -16
  150. package/node_modules/@askdkc/dsh-auth/package.json +26 -15
  151. package/package.json +100 -96
  152. package/lib/types/dsh-adapter/providerGuard.d.ts +0 -75
  153. package/lib/types/dsh-adapter/providerGuard.d.ts.map +0 -1
  154. package/lib/types/dsh-adapter/providerGuard.js +0 -104
  155. package/lib/types/migrationPrefs.d.ts +0 -60
  156. package/lib/types/migrationPrefs.d.ts.map +0 -1
  157. package/lib/types/migrationPrefs.js +0 -97
  158. package/node_modules/@askdkc/dsh-auth/lib/fresh-models.d.ts +0 -59
  159. package/node_modules/@askdkc/dsh-auth/lib/fresh-models.js +0 -246
  160. package/node_modules/@askdkc/dsh-auth/lib/opencode-snapshot.generated.d.ts +0 -321
  161. package/node_modules/@askdkc/dsh-auth/lib/opencode-snapshot.generated.js +0 -528
  162. package/presets/liangshen/.dsh-tui-managed.json +0 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askdkc/dsh-cli",
3
- "version": "0.12.3",
3
+ "version": "0.13.0",
4
4
  "description": "Interactive terminal interface for DeepSeek Harness agents, sessions and tools.",
5
5
  "keywords": [
6
6
  "dsh",
@@ -132,7 +132,6 @@
132
132
  "verify:boundary": "node --import tsx/esm scripts/verify-adapter-boundary.ts",
133
133
  "verify:i18n": "node --import tsx/esm scripts/verify-i18n.ts",
134
134
  "verify:contract": "node --import tsx/esm scripts/verify-upstream-contract.ts",
135
- "verify:alpha-source": "node scripts/verify-alpha-source.mjs",
136
135
  "verify:herdr": "node --import tsx/esm scripts/verify-herdr-integration.ts",
137
136
  "verify:manifest-deps": "node --import tsx/esm scripts/verify-manifest-deps.ts",
138
137
  "verify:patch-surface": "node --import tsx/esm scripts/verify-patch-surface.ts",
@@ -147,7 +146,8 @@
147
146
  "verify:liangshen-bootstrap": "node scripts/verify-liangshen-bootstrap.mjs",
148
147
  "verify:liangshen-instruction-hint": "node scripts/verify-liangshen-instruction-hint.mjs",
149
148
  "verify:liangshen-bash": "node scripts/verify-liangshen-bash.mjs",
150
- "verify:package": "node scripts/with-publish-manifest.mjs npm pack --dry-run --json --ignore-scripts | node scripts/verify-package.mjs",
149
+ "verify:package": "node scripts/verify-publish-manifest.mjs && node scripts/with-publish-manifest.mjs npm pack --dry-run --json --ignore-scripts | node scripts/verify-package.mjs",
150
+ "verify:publish-manifest": "node scripts/verify-publish-manifest.mjs",
151
151
  "verify:bun-package": "node scripts/verify-bun-package.mjs",
152
152
  "verify:prompt-debug": "npm run build && node scripts/verify-prompt-debug.mjs",
153
153
  "verify:clipboard-image": "node --import tsx/esm scripts/verify-clipboard-image.ts",
@@ -181,6 +181,7 @@
181
181
  "verify:live-session": "node --import tsx/esm scripts/verify-live-session.ts",
182
182
  "sync:profile": "node scripts/sync-profile.mjs",
183
183
  "sync:profile:check": "node scripts/sync-profile.mjs --check",
184
+ "verify:profile-sync": "node scripts/verify-profile-sync.mjs",
184
185
  "bundle:installer": "node scripts/make-installer-bundle.mjs",
185
186
  "bundle:standalone": "node scripts/make-standalone-bundle.mjs",
186
187
  "verify:image-downsample": "node --import tsx/esm scripts/verify-image-downsample.tsx",
@@ -229,39 +230,41 @@
229
230
  "verify:activity-store": "node --import tsx/esm scripts/verify-activity-store.ts",
230
231
  "verify:activity-store-render": "node --import tsx/esm scripts/verify-activity-store-render.tsx",
231
232
  "verify:activity-ownership": "node --import tsx/esm scripts/verify-activity-ownership.ts",
232
- "verify:progress-language": "node --import tsx/esm scripts/verify-progress-language.mjs"
233
+ "verify:progress-language": "node --import tsx/esm scripts/verify-progress-language.mjs",
234
+ "verify:opencode-profile": "node scripts/verify-opencode-profile.mjs",
235
+ "verify:upstream-source": "node scripts/verify-upstream-source.mjs"
233
236
  },
234
237
  "peerDependencies": {
235
238
  "@deepseek-ai/cordis": "^4.0.1",
236
- "@deepseek-ai/dsh-agent": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
237
- "@deepseek-ai/dsh-agent-instructions": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
238
- "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
239
- "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
240
- "@deepseek-ai/dsh-commands": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
241
- "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
242
- "@deepseek-ai/dsh-invariants": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
243
- "@deepseek-ai/dsh-llm": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
244
- "@deepseek-ai/dsh-llm-pi-ai": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
245
- "@deepseek-ai/dsh-persona": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
246
- "@deepseek-ai/dsh-ptc-runtime-node": "0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
247
- "@deepseek-ai/dsh-session": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
248
- "@deepseek-ai/dsh-settings": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
249
- "@deepseek-ai/dsh-skill": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
250
- "@deepseek-ai/dsh-storage": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
251
- "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
252
- "@deepseek-ai/dsh-storage-json": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
253
- "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
254
- "@deepseek-ai/dsh-terminal": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
255
- "@deepseek-ai/dsh-terminal-bash": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
256
- "@deepseek-ai/dsh-tool-ask-user": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
257
- "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
258
- "@deepseek-ai/dsh-tool-cordis": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
259
- "@deepseek-ai/dsh-tool-subagent": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
260
- "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
261
- "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
262
- "@deepseek-ai/dsh-workspace": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
263
- "@deepseek-ai/schemastery": "^3.18.1",
264
- "@deepseek-ai/dsh-web-app": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2"
239
+ "@deepseek-ai/dsh-agent": "0.2.0-rc.2",
240
+ "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2",
241
+ "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2",
242
+ "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2",
243
+ "@deepseek-ai/dsh-commands": "0.2.0-rc.2",
244
+ "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2",
245
+ "@deepseek-ai/dsh-invariants": "0.2.0-rc.2",
246
+ "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
247
+ "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2",
248
+ "@deepseek-ai/dsh-persona": "0.2.0-rc.2",
249
+ "@deepseek-ai/dsh-ptc-runtime-node": "0.2.0-rc.2",
250
+ "@deepseek-ai/dsh-session": "0.2.0-rc.2",
251
+ "@deepseek-ai/dsh-settings": "0.2.0-rc.2",
252
+ "@deepseek-ai/dsh-skill": "0.2.0-rc.2",
253
+ "@deepseek-ai/dsh-storage": "0.2.0-rc.2",
254
+ "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2",
255
+ "@deepseek-ai/dsh-storage-json": "0.2.0-rc.2",
256
+ "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2",
257
+ "@deepseek-ai/dsh-terminal": "0.2.0-rc.2",
258
+ "@deepseek-ai/dsh-terminal-bash": "0.2.0-rc.2",
259
+ "@deepseek-ai/dsh-tool-ask-user": "0.2.0-rc.2",
260
+ "@deepseek-ai/dsh-tool-bash-persistent": "0.2.0-rc.2",
261
+ "@deepseek-ai/dsh-tool-cordis": "0.2.0-rc.2",
262
+ "@deepseek-ai/dsh-tool-subagent": "0.2.0-rc.2",
263
+ "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2",
264
+ "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2",
265
+ "@deepseek-ai/dsh-web-app": "0.2.0-rc.2",
266
+ "@deepseek-ai/dsh-workspace": "0.2.0-rc.2",
267
+ "@deepseek-ai/schemastery": "^3.18.1"
265
268
  },
266
269
  "peerDependenciesMeta": {
267
270
  "@deepseek-ai/dsh-web-app": {
@@ -409,75 +412,75 @@
409
412
  "dsh-working-activity"
410
413
  ],
411
414
  "devDependencies": {
412
- "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
413
- "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
414
415
  "@deepseek-ai/cordis": "^4.0.1",
415
416
  "@deepseek-ai/cordis-plugin-group": "^1.0.4",
416
417
  "@deepseek-ai/cordis-plugin-include": "^1.0.9",
417
418
  "@deepseek-ai/cordis-plugin-loader": "^1.0.5",
418
419
  "@deepseek-ai/cordis-plugin-timer": "^1.1.6",
419
420
  "@deepseek-ai/cosmokit": "^1.8.5",
420
- "@deepseek-ai/dsh-agent": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
421
- "@deepseek-ai/dsh-agent-instructions": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
422
- "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
423
- "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
424
- "@deepseek-ai/dsh-attachment": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
425
- "@deepseek-ai/dsh-brand": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
426
- "@deepseek-ai/dsh-command-compact": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
427
- "@deepseek-ai/dsh-commands": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
428
- "@deepseek-ai/dsh-compaction-basic": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
429
- "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
430
- "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
431
- "@deepseek-ai/dsh-fs": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
432
- "@deepseek-ai/dsh-fs-local": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
433
- "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
434
- "@deepseek-ai/dsh-invariants": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
435
- "@deepseek-ai/dsh-llm": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
436
- "@deepseek-ai/dsh-llm-pi-ai": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
437
- "@deepseek-ai/dsh-persona": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
438
- "@deepseek-ai/dsh-plan-mode": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
439
- "@deepseek-ai/dsh-ptc-runtime": "0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
440
- "@deepseek-ai/dsh-ptc-runtime-node": "0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
441
- "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
442
- "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
443
- "@deepseek-ai/dsh-scope": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
444
- "@deepseek-ai/dsh-session": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
445
- "@deepseek-ai/dsh-session-format-catalog": "0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
446
- "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
447
- "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
448
- "@deepseek-ai/dsh-settings": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
449
- "@deepseek-ai/dsh-skill": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
450
- "@deepseek-ai/dsh-skill-filesystem": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
451
- "@deepseek-ai/dsh-storage": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
452
- "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
453
- "@deepseek-ai/dsh-storage-json": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
454
- "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
455
- "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
456
- "@deepseek-ai/dsh-terminal": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
457
- "@deepseek-ai/dsh-terminal-bash": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
458
- "@deepseek-ai/dsh-timeout": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
459
- "@deepseek-ai/dsh-tool-ask-user": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
460
- "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
461
- "@deepseek-ai/dsh-tool-cordis": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
462
- "@deepseek-ai/dsh-tool-fs": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
463
- "@deepseek-ai/dsh-tool-fs-search": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
464
- "@deepseek-ai/dsh-tool-goal": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
465
- "@deepseek-ai/dsh-tool-jobs": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
466
- "@deepseek-ai/dsh-tool-ralph": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
467
- "@deepseek-ai/dsh-tool-str-replace-editor": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
468
- "@deepseek-ai/dsh-tool-subagent": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
469
- "@deepseek-ai/dsh-tool-subagent-control": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
470
- "@deepseek-ai/dsh-tool-todo": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
471
- "@deepseek-ai/dsh-tool-web": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
472
- "@deepseek-ai/dsh-tool-workflow": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
473
- "@deepseek-ai/dsh-tools": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
474
- "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
475
- "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
476
- "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
477
- "@deepseek-ai/dsh-web-app": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
478
- "@deepseek-ai/dsh-session-format-v3-to-v4": "0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
479
- "@deepseek-ai/dsh-workflow-ptc": "0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
480
- "@deepseek-ai/dsh-workspace": "^0.1.0-rc.6 || ^0.1.1-rc.1 || 0.1.2-alpha.3 || 0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-alpha.2 || 0.1.5-rc.1 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
421
+ "@deepseek-ai/dsh-agent": "0.2.0-rc.2",
422
+ "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2",
423
+ "@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2",
424
+ "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2",
425
+ "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2",
426
+ "@deepseek-ai/dsh-attachment": "0.2.0-rc.2",
427
+ "@deepseek-ai/dsh-brand": "0.2.0-rc.2",
428
+ "@deepseek-ai/dsh-command-compact": "0.2.0-rc.2",
429
+ "@deepseek-ai/dsh-commands": "0.2.0-rc.2",
430
+ "@deepseek-ai/dsh-compaction-basic": "0.2.0-rc.2",
431
+ "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.0-rc.2",
432
+ "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2",
433
+ "@deepseek-ai/dsh-fs": "0.2.0-rc.2",
434
+ "@deepseek-ai/dsh-fs-local": "0.2.0-rc.2",
435
+ "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2",
436
+ "@deepseek-ai/dsh-invariants": "0.2.0-rc.2",
437
+ "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
438
+ "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2",
439
+ "@deepseek-ai/dsh-persona": "0.2.0-rc.2",
440
+ "@deepseek-ai/dsh-plan-mode": "0.2.0-rc.2",
441
+ "@deepseek-ai/dsh-ptc-runtime": "0.2.0-rc.2",
442
+ "@deepseek-ai/dsh-ptc-runtime-node": "0.2.0-rc.2",
443
+ "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2",
444
+ "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2",
445
+ "@deepseek-ai/dsh-scope": "0.2.0-rc.2",
446
+ "@deepseek-ai/dsh-session": "0.2.0-rc.2",
447
+ "@deepseek-ai/dsh-session-format-catalog": "0.2.0-rc.2",
448
+ "@deepseek-ai/dsh-session-format-v3-to-v4": "0.2.0-rc.2",
449
+ "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2",
450
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.0-rc.2",
451
+ "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2",
452
+ "@deepseek-ai/dsh-settings": "0.2.0-rc.2",
453
+ "@deepseek-ai/dsh-skill": "0.2.0-rc.2",
454
+ "@deepseek-ai/dsh-skill-filesystem": "0.2.0-rc.2",
455
+ "@deepseek-ai/dsh-storage": "0.2.0-rc.2",
456
+ "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2",
457
+ "@deepseek-ai/dsh-storage-json": "0.2.0-rc.2",
458
+ "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2",
459
+ "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2",
460
+ "@deepseek-ai/dsh-terminal": "0.2.0-rc.2",
461
+ "@deepseek-ai/dsh-terminal-bash": "0.2.0-rc.2",
462
+ "@deepseek-ai/dsh-timeout": "0.2.0-rc.2",
463
+ "@deepseek-ai/dsh-tool-ask-user": "0.2.0-rc.2",
464
+ "@deepseek-ai/dsh-tool-bash-persistent": "0.2.0-rc.2",
465
+ "@deepseek-ai/dsh-tool-cordis": "0.2.0-rc.2",
466
+ "@deepseek-ai/dsh-tool-fs": "0.2.0-rc.2",
467
+ "@deepseek-ai/dsh-tool-fs-search": "0.2.0-rc.2",
468
+ "@deepseek-ai/dsh-tool-goal": "0.2.0-rc.2",
469
+ "@deepseek-ai/dsh-tool-jobs": "0.2.0-rc.2",
470
+ "@deepseek-ai/dsh-tool-ralph": "0.2.0-rc.2",
471
+ "@deepseek-ai/dsh-tool-str-replace-editor": "0.2.0-rc.2",
472
+ "@deepseek-ai/dsh-tool-subagent": "0.2.0-rc.2",
473
+ "@deepseek-ai/dsh-tool-subagent-control": "0.2.0-rc.2",
474
+ "@deepseek-ai/dsh-tool-todo": "0.2.0-rc.2",
475
+ "@deepseek-ai/dsh-tool-web": "0.2.0-rc.2",
476
+ "@deepseek-ai/dsh-tool-workflow": "0.2.0-rc.2",
477
+ "@deepseek-ai/dsh-tools": "0.2.0-rc.2",
478
+ "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2",
479
+ "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2",
480
+ "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2",
481
+ "@deepseek-ai/dsh-web-app": "0.2.0-rc.2",
482
+ "@deepseek-ai/dsh-workflow-ptc": "0.2.0-rc.2",
483
+ "@deepseek-ai/dsh-workspace": "0.2.0-rc.2",
481
484
  "@deepseek-ai/schemastery": "^3.18.1",
482
485
  "@types/lodash-es": "^4.17.0",
483
486
  "@types/node": "^26.4.0",
@@ -485,6 +488,7 @@
485
488
  "@types/react-reconciler": "^0.33.0",
486
489
  "@types/semver": "^7.0.0",
487
490
  "@xterm/headless": "^6.0.0",
491
+ "esbuild": "0.28.2",
488
492
  "tar": "^7.5.22",
489
493
  "tsx": "^4.0.0",
490
494
  "typescript": "^6.0.3"
@@ -1,75 +0,0 @@
1
- /**
2
- * Question-provider seat guard (issue #98 security follow-up).
3
- *
4
- * On the legacy/rc `registerProvider` API, the harness allows exactly ONE
5
- * user-questions provider per context. The original fix made this TUI yield
6
- * the seat silently on DUPLICATE_PROVIDER so profiles carrying
7
- * @deepseek-ai/dsh-web-app keep booting — but silence cuts both ways: a
8
- * malicious plugin that registers FIRST also gets silent ownership of the
9
- * questionnaire and can answer the model's ask_user_question on the user's
10
- * behalf.
11
- *
12
- * The upstream error carries no incumbent identity (fixed message + code
13
- * only), and the public API offers no query — but the service stores the
14
- * incumbent provider object on its `provider` property, which is reachable
15
- * structurally. This module turns that probe into a whitelist decision with
16
- * PROVENANCE: silent yields are reserved for host-verified identities (this
17
- * module's private symbol tag — the true host-coexistence scenario), while a
18
- * whitelist hit that the incumbent merely self-reported (name/hostId/id
19
- * fields any plugin can copy) gets an honest "identity not host-verified"
20
- * alert: forgeable silence is worse than a loud warning.
21
- */
22
- /**
23
- * Front doors allowed to hold the questionnaire seat without a notice.
24
- * Third-party plugins must not be listed here: the seat decides who speaks
25
- * FOR the user to the model.
26
- */
27
- export declare const QUESTION_PROVIDER_HOST_WHITELIST: readonly string[];
28
- /**
29
- * The incumbent provider's identity as probed off the service, plus whether
30
- * that identity is host-verified. `verified: true` can only be minted by
31
- * this module's private symbol tag; self-reported `name`/`hostId`/`id`
32
- * fields are readable but forgeable by any plugin.
33
- */
34
- export interface IncumbentQuestionProviderIdentity {
35
- readonly id: string;
36
- readonly verified: boolean;
37
- }
38
- /** What apply() should do after a DUPLICATE_PROVIDER registration attempt. */
39
- export interface QuestionProviderYieldDecision {
40
- /**
41
- * `silent` keeps the issue-#98 behavior (host-verified whitelist only);
42
- * `alert` notifies the user; `alert-unverified` is the honest variant for
43
- * a self-reported whitelist hit — the name matches a host front door but
44
- * nothing proves who wrote it.
45
- */
46
- readonly action: 'silent' | 'alert' | 'alert-unverified';
47
- /** The incumbent identity the decision was based on, when one was found. */
48
- readonly incumbentId: string | undefined;
49
- }
50
- /**
51
- * Decide how to react to an incumbent user-questions provider. Only a
52
- * HOST-VERIFIED whitelisted incumbent (the symbol tag) keeps the silent
53
- * yield: a self-reported `name: 'dsh-web-app'` is exactly what a seat
54
- * squatter would write, so whitelist hits without verification get the
55
- * unverified alert instead of silence. Third-party ids and no identity at
56
- * all alert — the conservative default, because silence is exactly what an
57
- * attacker squatting the seat wants.
58
- */
59
- export declare function decideQuestionProviderYield(incumbent: IncumbentQuestionProviderIdentity | undefined): QuestionProviderYieldDecision;
60
- /** Tag a provider this TUI is about to register so a later boot (recompose
61
- * leftover, restart race) can recognize itself in the seat. */
62
- export declare function tagTuiQuestionProvider(provider: object): void;
63
- /**
64
- * Probe the user-questions service for the incumbent provider's identity.
65
- *
66
- * Recognition order:
67
- * 1. this TUI's private symbol tag (unforgeable outside the module) —
68
- * reported as verified;
69
- * 2. an explicit identity marker the incumbent attached (`name`, `hostId`,
70
- * `id`) — readable for the notice text but reported as unverified,
71
- * because those fields are trivially copyable by a squatter;
72
- * 3. nothing — return undefined, which the decision maps to the alert path.
73
- */
74
- export declare function incumbentQuestionProviderId(service: object): IncumbentQuestionProviderIdentity | undefined;
75
- //# sourceMappingURL=providerGuard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"providerGuard.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/providerGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,EAAE,SAAS,MAAM,EAA+B,CAAA;AAE7F;;;;;GAKG;AACH,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC3B;AAED,8EAA8E;AAC9E,MAAM,WAAW,6BAA6B;IAC5C;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,kBAAkB,CAAA;IACxD,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,iCAAiC,GAAG,SAAS,GACvD,6BAA6B,CAM/B;AASD;+DAC+D;AAC/D,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAY7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,iCAAiC,GAAG,SAAS,CAoB1G"}
@@ -1,104 +0,0 @@
1
- /**
2
- * Question-provider seat guard (issue #98 security follow-up).
3
- *
4
- * On the legacy/rc `registerProvider` API, the harness allows exactly ONE
5
- * user-questions provider per context. The original fix made this TUI yield
6
- * the seat silently on DUPLICATE_PROVIDER so profiles carrying
7
- * @deepseek-ai/dsh-web-app keep booting — but silence cuts both ways: a
8
- * malicious plugin that registers FIRST also gets silent ownership of the
9
- * questionnaire and can answer the model's ask_user_question on the user's
10
- * behalf.
11
- *
12
- * The upstream error carries no incumbent identity (fixed message + code
13
- * only), and the public API offers no query — but the service stores the
14
- * incumbent provider object on its `provider` property, which is reachable
15
- * structurally. This module turns that probe into a whitelist decision with
16
- * PROVENANCE: silent yields are reserved for host-verified identities (this
17
- * module's private symbol tag — the true host-coexistence scenario), while a
18
- * whitelist hit that the incumbent merely self-reported (name/hostId/id
19
- * fields any plugin can copy) gets an honest "identity not host-verified"
20
- * alert: forgeable silence is worse than a loud warning.
21
- */
22
- /**
23
- * Front doors allowed to hold the questionnaire seat without a notice.
24
- * Third-party plugins must not be listed here: the seat decides who speaks
25
- * FOR the user to the model.
26
- */
27
- export const QUESTION_PROVIDER_HOST_WHITELIST = ['dsh-web-app', 'dsh-tui'];
28
- /**
29
- * Decide how to react to an incumbent user-questions provider. Only a
30
- * HOST-VERIFIED whitelisted incumbent (the symbol tag) keeps the silent
31
- * yield: a self-reported `name: 'dsh-web-app'` is exactly what a seat
32
- * squatter would write, so whitelist hits without verification get the
33
- * unverified alert instead of silence. Third-party ids and no identity at
34
- * all alert — the conservative default, because silence is exactly what an
35
- * attacker squatting the seat wants.
36
- */
37
- export function decideQuestionProviderYield(incumbent) {
38
- if (incumbent === undefined)
39
- return { action: 'alert', incumbentId: undefined };
40
- const whitelisted = QUESTION_PROVIDER_HOST_WHITELIST.includes(incumbent.id);
41
- if (incumbent.verified && whitelisted)
42
- return { action: 'silent', incumbentId: incumbent.id };
43
- if (whitelisted)
44
- return { action: 'alert-unverified', incumbentId: incumbent.id };
45
- return { action: 'alert', incumbentId: incumbent.id };
46
- }
47
- /**
48
- * Module-private tag marking a provider object as this TUI's own. Symbol-keyed
49
- * so a third party cannot forge the marker by copying visible fields onto its
50
- * provider (the symbol never leaves this module).
51
- */
52
- const TUI_PROVIDER_TAG = Symbol('dsh-tui question provider');
53
- /** Tag a provider this TUI is about to register so a later boot (recompose
54
- * leftover, restart race) can recognize itself in the seat. */
55
- export function tagTuiQuestionProvider(provider) {
56
- try {
57
- Object.defineProperty(provider, TUI_PROVIDER_TAG, {
58
- value: 'dsh-tui',
59
- configurable: false,
60
- writable: false,
61
- enumerable: false,
62
- });
63
- }
64
- catch {
65
- // A frozen provider from an older TUI copy simply stays untagged — the
66
- // decision then falls back to the conservative alert, never a crash.
67
- }
68
- }
69
- /**
70
- * Probe the user-questions service for the incumbent provider's identity.
71
- *
72
- * Recognition order:
73
- * 1. this TUI's private symbol tag (unforgeable outside the module) —
74
- * reported as verified;
75
- * 2. an explicit identity marker the incumbent attached (`name`, `hostId`,
76
- * `id`) — readable for the notice text but reported as unverified,
77
- * because those fields are trivially copyable by a squatter;
78
- * 3. nothing — return undefined, which the decision maps to the alert path.
79
- */
80
- export function incumbentQuestionProviderId(service) {
81
- let provider;
82
- try {
83
- provider = service.provider;
84
- }
85
- catch {
86
- return undefined;
87
- }
88
- if (provider === null || typeof provider !== 'object')
89
- return undefined;
90
- try {
91
- if (provider[TUI_PROVIDER_TAG] === 'dsh-tui') {
92
- return { id: 'dsh-tui', verified: true };
93
- }
94
- for (const key of ['name', 'hostId', 'id']) {
95
- const value = provider[key];
96
- if (typeof value === 'string' && value.trim() !== '')
97
- return { id: value.trim(), verified: false };
98
- }
99
- }
100
- catch {
101
- // A getter that throws must not take the boot down with it.
102
- }
103
- return undefined;
104
- }
@@ -1,60 +0,0 @@
1
- /**
2
- * One-time local migrations (`~/.dsh-tui/migrations.json`), keyed by stable
3
- * migration id → ISO timestamp. Named keys (not a bare flag) so later
4
- * migrations can append entries without a format change. Best-effort like
5
- * every prefs file: a missing/corrupt file reads as "nothing applied yet",
6
- * and a failed write simply leaves the migration to retry on a later boot.
7
- */
8
- /**
9
- * The fullscreen factory-default flip (schema + `cordis.patch.yml`, 0.9.x):
10
- * a `fullscreen: false` pinned in the settings user layer BEFORE the flip
11
- * keeps overriding the new default on every boot. The first boot past this
12
- * migration clears that stale explicit choice once — see
13
- * {@link planFullscreenFactoryMigration} for the decision table.
14
- */
15
- export declare const FULLSCREEN_FACTORY_MIGRATION = "fullscreen-factory-default";
16
- /**
17
- * Read the applied-migration map.
18
- * @param dir - Prefs directory (injectable for tests).
19
- * @returns Parsed migration map; empty on any read/parse failure.
20
- */
21
- export declare function readAppliedMigrations(dir?: string): Readonly<Record<string, unknown>>;
22
- /**
23
- * Record a migration as applied (merge write — other keys are never dropped).
24
- * @param id - Migration id.
25
- * @param dir - Prefs directory (injectable for tests).
26
- * @returns True when the file was written, false on failure.
27
- */
28
- export declare function markMigrationApplied(id: string, dir?: string): boolean;
29
- /** What this boot should do about the fullscreen factory-default flip. */
30
- export type FullscreenFactoryPlan = 'unset' | 'mark' | 'done';
31
- /**
32
- * Decide the migration step from the settings scope's RESOLVED fullscreen
33
- * value. The dsh-tui namespace declares no schema default and no `base`
34
- * layer for `fullscreen`, so a resolved `false` can only come from the user
35
- * layer — the pre-flip explicit choice this migration exists to clear:
36
- * - `done` — marker present: never touch the user layer again, so a
37
- * `false` written AFTER the migration (a deliberate /settings choice)
38
- * always stands;
39
- * - `unset` — stale pre-flip explicit `false`: the caller clears it via a
40
- * settings `unset` op and boots fullscreen regardless — the doc write
41
- * is async and must not race the synchronous boot decision, so the
42
- * caller shadows the stale value out of its first settings apply;
43
- * - `mark` — nothing to clear (unset or already `true`): record the
44
- * marker now so a `false` set later is never mistaken for a stale one.
45
- */
46
- export declare function planFullscreenFactoryMigration(resolvedFullscreen: unknown, migrations: Readonly<Record<string, unknown>>): FullscreenFactoryPlan;
47
- /**
48
- * Persist the plan's side effects. For `unset` the marker lands only after
49
- * the doc write succeeds — a failed write stays unmarked and the next boot
50
- * retries (that boot already ran fullscreen off the shadowed value).
51
- * Never rejects.
52
- * @param plan - Decision from {@link planFullscreenFactoryMigration}.
53
- * @param options - `unset` thunk issuing the settings write; `dir` injects
54
- * the prefs directory for tests.
55
- */
56
- export declare function commitFullscreenFactoryMigration(plan: FullscreenFactoryPlan, options: {
57
- unset: () => Promise<void>;
58
- dir?: string;
59
- }): Promise<void>;
60
- //# sourceMappingURL=migrationPrefs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrationPrefs.d.ts","sourceRoot":"","sources":["../../src/migrationPrefs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,+BAA+B,CAAA;AAExE;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAQhG;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,OAAO,CASjF;AAED,0EAA0E;AAC1E,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAC5C,kBAAkB,EAAE,OAAO,EAC3B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC5C,qBAAqB,CAGvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,qBAAqB,EAC3B,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,IAAI,CAAC,CAYf"}