@eddyskywalker/dsh-chatgpt-subscription 0.55.0 → 0.57.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 (51) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +148 -1268
  3. package/lib/client.js +298 -17
  4. package/lib/client.js.map +1 -1
  5. package/lib/index.js +413 -68
  6. package/lib/plan-mode.js +3 -7
  7. package/lib/tool-result-pruner.js +1 -1
  8. package/lib/types/client/locales-ru/index.d.ts +2 -3
  9. package/lib/types/client/locales-ru/index.d.ts.map +1 -1
  10. package/lib/types/client/locales-ru/progress-updates.d.ts.map +1 -1
  11. package/lib/types/client/minimax-code/commands-contract.d.ts +1 -1
  12. package/lib/types/client/progress-updates/locales.d.ts +8 -2
  13. package/lib/types/client/progress-updates/locales.d.ts.map +1 -1
  14. package/lib/types/client/progress-updates/settings-binding.d.ts +8 -1
  15. package/lib/types/client/progress-updates/settings-binding.d.ts.map +1 -1
  16. package/lib/types/client/progress-updates/settings-section.d.ts +2 -1
  17. package/lib/types/client/progress-updates/settings-section.d.ts.map +1 -1
  18. package/lib/types/client/subagent/SubagentCard.d.ts.map +1 -1
  19. package/lib/types/client/subagent/locales.d.ts +14 -2
  20. package/lib/types/client/subagent/locales.d.ts.map +1 -1
  21. package/lib/types/client/subagent/styles.d.ts +1 -1
  22. package/lib/types/client/subagent/styles.d.ts.map +1 -1
  23. package/lib/types/client/subagent/subagent-card-controller.d.ts +26 -3
  24. package/lib/types/client/subagent/subagent-card-controller.d.ts.map +1 -1
  25. package/lib/types/compat.d.ts +1 -1
  26. package/lib/types/entry-plan-mode.d.ts +3 -7
  27. package/lib/types/entry-plan-mode.d.ts.map +1 -1
  28. package/lib/types/entry-tool-result-pruner.d.ts +1 -1
  29. package/lib/types/host/agent-preset.d.ts +5 -0
  30. package/lib/types/host/agent-preset.d.ts.map +1 -1
  31. package/lib/types/host/common/llm-compat.d.ts +3 -1
  32. package/lib/types/host/common/llm-compat.d.ts.map +1 -1
  33. package/lib/types/host/kimi-code/repeat-breaker.d.ts +1 -1
  34. package/lib/types/host/plan-mode-cache-guard.d.ts.map +1 -1
  35. package/lib/types/host/preferences.d.ts.map +1 -1
  36. package/lib/types/host/routes.d.ts.map +1 -1
  37. package/lib/types/host/subagent-model-authorization.d.ts +34 -16
  38. package/lib/types/host/subagent-model-authorization.d.ts.map +1 -1
  39. package/lib/types/host/subagent-route-audit.d.ts +6 -1
  40. package/lib/types/host/subagent-route-audit.d.ts.map +1 -1
  41. package/lib/types/host/team-policy-cache-guard.d.ts +44 -0
  42. package/lib/types/host/team-policy-cache-guard.d.ts.map +1 -0
  43. package/lib/types/index.d.ts +16 -2
  44. package/lib/types/index.d.ts.map +1 -1
  45. package/lib/types/shared/contracts.d.ts +19 -0
  46. package/lib/types/shared/contracts.d.ts.map +1 -1
  47. package/lib/types/shared/preferences.d.ts +22 -1
  48. package/lib/types/shared/preferences.d.ts.map +1 -1
  49. package/package.json +46 -43
  50. package/presets/dispatch/README.md +32 -11
  51. package/presets/dispatch/agent.cordis.yml +26 -22
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eddyskywalker/dsh-chatgpt-subscription",
3
- "version": "0.55.0",
3
+ "version": "0.57.0",
4
4
  "description": "DSH provider plugin for Codex access through a ChatGPT subscription.",
5
5
  "icon": "./icon.svg",
6
6
  "author": {
@@ -79,51 +79,54 @@
79
79
  }
80
80
  },
81
81
  "peerDependencies": {
82
- "@deepseek-ai/cordis": "^4.0.2 || 4.0.5",
83
- "@deepseek-ai/cordis-plugin-loader": "^1.0.3 || 1.0.6",
84
- "@deepseek-ai/dsh-attachment": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
85
- "@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
86
- "@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
87
- "@deepseek-ai/dsh-client-ui-commands": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
88
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
89
- "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
90
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
91
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
92
- "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.5-alpha.2 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
93
- "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.5-alpha.1 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
94
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
95
- "@deepseek-ai/dsh-client-ui-tool": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
96
- "@deepseek-ai/dsh-host-webserver": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
97
- "@deepseek-ai/dsh-llm": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
98
- "@deepseek-ai/dsh-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
99
- "@deepseek-ai/dsh-timeout": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
100
- "@deepseek-ai/dsh-tools": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
101
- "@deepseek-ai/dsh-web": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3",
102
- "@deepseek-ai/schemastery": "^3.18.2 || 3.18.5",
82
+ "@deepseek-ai/cordis": "^4.0.2 || 4.0.5 || 4.0.6-alpha.2",
83
+ "@deepseek-ai/cordis-plugin-loader": "^1.0.3 || 1.0.6 || 1.0.7-alpha.2",
84
+ "@deepseek-ai/dsh-attachment": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
85
+ "@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
86
+ "@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
87
+ "@deepseek-ai/dsh-client-ui-commands": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
88
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
89
+ "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
90
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
91
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
92
+ "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.5-alpha.2 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
93
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.5-alpha.1 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
94
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
95
+ "@deepseek-ai/dsh-client-ui-tool": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
96
+ "@deepseek-ai/dsh-host-webserver": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
97
+ "@deepseek-ai/dsh-llm": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
98
+ "@deepseek-ai/dsh-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
99
+ "@deepseek-ai/dsh-timeout": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
100
+ "@deepseek-ai/dsh-tools": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
101
+ "@deepseek-ai/dsh-web": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.3 || ^0.2.2-alpha.3",
102
+ "@deepseek-ai/schemastery": "^3.18.2 || 3.18.5 || 3.18.6-alpha.2",
103
103
  "react": "^18.2.0"
104
104
  },
105
105
  "devDependencies": {
106
- "@deepseek-ai/cordis": "4.0.5",
107
- "@deepseek-ai/cordis-plugin-loader": "1.0.6",
108
- "@deepseek-ai/dsh-attachment": "^0.2.1-rc.3",
109
- "@deepseek-ai/dsh-client-connection": "^0.2.1-rc.3",
110
- "@deepseek-ai/dsh-client-locale": "^0.2.1-rc.3",
111
- "@deepseek-ai/dsh-client-ui-commands": "^0.2.1-rc.3",
112
- "@deepseek-ai/dsh-client-ui-conversation": "^0.2.1-rc.3",
113
- "@deepseek-ai/dsh-client-ui-model-selection": "^0.2.1-rc.3",
114
- "@deepseek-ai/dsh-client-ui-renderer": "^0.2.1-rc.3",
115
- "@deepseek-ai/dsh-client-ui-settings": "^0.2.1-rc.3",
116
- "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.2.1-rc.3",
117
- "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.2.1-rc.3",
118
- "@deepseek-ai/dsh-client-ui-slots": "^0.2.1-rc.3",
119
- "@deepseek-ai/dsh-client-ui-tool": "^0.2.1-rc.3",
120
- "@deepseek-ai/dsh-host-webserver": "^0.2.1-rc.3",
121
- "@deepseek-ai/dsh-llm": "^0.2.1-rc.3",
122
- "@deepseek-ai/dsh-settings": "^0.2.1-rc.3",
123
- "@deepseek-ai/dsh-timeout": "^0.2.1-rc.3",
124
- "@deepseek-ai/dsh-tools": "^0.2.1-rc.3",
125
- "@deepseek-ai/dsh-web": "^0.2.1-rc.3",
126
- "@deepseek-ai/schemastery": "3.18.5",
106
+ "@deepseek-ai/cordis": "4.0.6-alpha.2",
107
+ "@deepseek-ai/cordis-plugin-loader": "1.0.7-alpha.2",
108
+ "@deepseek-ai/dsh-attachment": "^0.2.2-alpha.3",
109
+ "@deepseek-ai/dsh-client-connection": "^0.2.2-alpha.3",
110
+ "@deepseek-ai/dsh-client-locale": "^0.2.2-alpha.3",
111
+ "@deepseek-ai/dsh-client-ui-commands": "^0.2.2-alpha.3",
112
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.2.2-alpha.3",
113
+ "@deepseek-ai/dsh-client-ui-model-selection": "^0.2.2-alpha.3",
114
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.2.2-alpha.3",
115
+ "@deepseek-ai/dsh-client-ui-settings": "^0.2.2-alpha.3",
116
+ "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.2.2-alpha.3",
117
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.2.2-alpha.3",
118
+ "@deepseek-ai/dsh-client-ui-slots": "^0.2.2-alpha.3",
119
+ "@deepseek-ai/dsh-client-ui-tool": "^0.2.2-alpha.3",
120
+ "@deepseek-ai/dsh-compaction-basic": "^0.2.2-alpha.3",
121
+ "@deepseek-ai/dsh-host-webserver": "^0.2.2-alpha.3",
122
+ "@deepseek-ai/dsh-llm": "^0.2.2-alpha.3",
123
+ "@deepseek-ai/dsh-ptc-runtime": "^0.2.2-alpha.3",
124
+ "@deepseek-ai/dsh-settings": "^0.2.2-alpha.3",
125
+ "@deepseek-ai/dsh-timeout": "^0.2.2-alpha.3",
126
+ "@deepseek-ai/dsh-tool-executor-ptc": "^0.2.2-alpha.3",
127
+ "@deepseek-ai/dsh-tools": "^0.2.2-alpha.3",
128
+ "@deepseek-ai/dsh-web": "^0.2.2-alpha.3",
129
+ "@deepseek-ai/schemastery": "3.18.6-alpha.2",
127
130
  "@types/node": "^22.20.0",
128
131
  "@types/react": "~18.3.1",
129
132
  "@types/react-dom": "^18.3.5",
@@ -15,16 +15,16 @@
15
15
 
16
16
  - **L0 简单/单点** — 不派子代理、不访谈,主代理直接做完。
17
17
  - **L1 中等** — 最多 1–2 个关键问题 → 简短规划 → 主代理执行或派 1 个子代理。
18
- - **L2 复杂/多步** — 必须访谈 → 完整规划 → 多子代理并行 → 分层验收。
18
+ - **L2 复杂/多步** — 必须访谈 → 完整规划审批 → 按耦合度与并行收益选执行拓扑(`Lead-Core` 主干直执 / `Hybrid` 主干自持+边缘外包 / `Fan-out` 多子代理并行) → 严格验收。
19
19
 
20
20
  ## 规则速览
21
21
 
22
22
  | 编号 | 内容 |
23
23
  |---|---|
24
- | R0 | 先分诊,按复杂度决定是否编排;绝不为 L0/L1 开启访谈或多代理 |
25
- | R0.5 | 兼容性闸门(每个新会话一次):检测到 Agent Teams 就**停**并把选择交给用户——本模式与 team 不兼容,没有降级路径 |
24
+ | R0 | 先分诊,按复杂度决定是否展开重治理流程;绝不为 L0/L1 开启完整访谈或计划模式 |
25
+ | R0.5 | 兼容性闸门(每个新会话一次):判据**只有** `spawn_teammate` 是否在场——在场才说明跑的是旧代 team 运行时(它顶替协调工具),此时停下交用户决策;现行 team 只加共享任务板,与调度并行 |
26
26
  | R-G | L2 规划前必须做澄清访谈:设计树 / 前沿 / 轮次,每题给推荐答案,事实自己查、决策交用户,前沿为空且用户确认后才进入规划 |
27
- | R1 | 仅 L2:主代理只做规划/派发/审查/验收/文档/兜底 |
27
+ | R1 | L2 执行拓扑按「耦合度 × 并行收益」三选一:`Lead-Core`(紧耦合跨模块由主代理连续直执)、`Hybrid`(主代理先冻结公共契约再并行外包下游)、`Fan-out`(3+ 正交子任务并行编排) |
28
28
  | R2 | 允许清单唯一真源是 `list_subagent_models`(`{}` → `{ provider }`);派发必须显式给出拆开的 `provider` 与 `model`,直接采信工具返回值,无需去翻本地配置或代码核对 |
29
29
  | R3 | 子代理对自己的模块拥有规划/执行/自检自治权 |
30
30
  | R4 | 子代理使用 DSH 默认子代理角色;选模型的权力只在主代理 |
@@ -53,8 +53,9 @@
53
53
 
54
54
  **DSH 设置 → 子代理 → 允许 Agent 为 Subagent 选择模型** 必须开启,并至少勾选一个模型
55
55
  (即右上角开关打开 + 清单里勾选)。这是 R2 生效的运行时前提:`tool-subagent` 的
56
- `modelSelection: true` 会采样该设置并在运行时把子代理路由限制在勾选清单内;
57
- 未开启时模型仍可传路由参数,但会直接报错。
56
+ `modelSelection: true` 会采样该设置并在运行时把子代理路由限制在勾选清单内。
57
+ 未开启时没有 Session allowlist;DSH 0.2.2 仍可能把显式选择限制为父路由,不能把它
58
+ 理解为任意路由均可用。
58
59
 
59
60
  > **`modelSelection` 必须与 `modelDiscovery` 成对写入 preset 行。** harness 0.2.1-rc.1 把旧的
60
61
  > `modelSelectionSettings` 拆成两个键:`modelSelection` 才暴露 `provider`/`model` 参数,
@@ -69,11 +70,31 @@
69
70
 
70
71
  ## 已知边界
71
72
 
72
- **与 Agent Teams 不兼容(刻意互斥)**:`@deepseek-ai/dsh-experimental-agent-team-profile`
73
- 被组合进会话时,team 的 scoped 注册会顶替 `send_message` / `list_agents` / `interrupt_agent`,
74
- 而 `tryMembership` 让 Lead 从第一轮起就是 team 成员——也就是**派发之前**协调工具已经没了。
75
- 本模式因此不提供降级路径:persona 的 R0.5 会停下并用 `ask_user_question` 把三条出路交给用户
76
- (关掉 bundle 后重启并新建会话 / 换 preset / 本次直接做)。详见根 `README.md` 的同名小节。
73
+ **与 Agent Teams 的关系按代划分**:Agent Teams 的**旧代**运行时自己拥有队友创建与消息通道
74
+ (注册 `spawn_teammate`,并用 team 作用域注册顶替 `send_message` / `list_agents` / `interrupt_agent`),
75
+ 派发出来的子代理对它不可见、也联系不上——这一代与调度模式互斥,本模式不提供降级路径:
76
+ persona 的 R0.5 会停下并用 `ask_user_question` 把三条出路交给用户(关掉 team 后重启并新建会话 / 换 preset / 本次直接做)。
77
+
78
+ **现行**运行时(harness 0.2.2 起)已改为共享子代理语义:它只注册共享任务板
79
+ `team_task_create` / `team_task_list` / `team_task_get` / `team_task_update` 和一段自己的 policy,
80
+ 消息与名册全部复用本模式挂载的 `list_agents` / `send_message` / `wait_agent` / `interrupt_agent`
81
+ (它自己的 policy 就写着"任务归属人是 `list_agents` 的 agent id、要人动手就 `send_message`")。
82
+ 因此调度模式与它**并行运行**:任务板只是可选的共同记账,绝不替代 R1 拓扑、R2 路由、R5 任务书、
83
+ R6 验收与 R-W 等待;R0.5 只靠 `spawn_teammate` 判代,**不能**用 `wait_agent` / `send_message` /
84
+ `list_agents` / `interrupt_agent` 判——这些工具是本模式自己挂的,在场不能证明任何 team 状态。
85
+
86
+ 开关打开时两套记账的分工是固定的:`dispatch_ledger` 仍是派发权威、R5 任务书仍是任务契约;团队任务板
87
+ 只用来公开跨代理的依赖(`blocked_by`)与写作用域,一条 brief 对应一条 task,由拿到它的子代理自己
88
+ claim/complete。任务 ready 不等于开工,也不许用 `reassign` 把任务挪走以绕开 R6 验收。R0.5 在缺席判据
89
+ 下会先写一行 `Orchestration ready: subagent`,把当前模式打在第一行。
90
+
91
+ **缓存侧的两个注意点**:Kimi / MiniMax 的 PTC `tools:sdk` 是冻结的**未过滤**声明
92
+ (`ptc-sdk-cache-guard`),所以 `team_task_*` 在 SDK 里**常驻可见**、与开关无关——可见不等于可调用,
93
+ 要以 `team_task_list` 能否调通为准。反过来,开关本身会让 `team:policy` 段从空串变成整段文本,
94
+ system prompt 因此改写一次;这与计划模式当初刻意用"尾部用户消息"规避的是同一类重建,只是这段文本
95
+ 由 harness 拥有。建议在**首个回合之前**决定 team 开关:开会话时就是目标状态则零成本,中途切换付一次前缀重建。
96
+ 插件默认开启的 `teamPolicyCacheGuard` 让这唯一一次重建也消失:守卫把 `team:policy` 段从装配里
97
+ 摘掉并捕获原文,切开关时改用尾部用户消息投递一次,关闭时补一条撤销通知——与计划模式同一套做法。
77
98
 
78
99
  本进程内 spawn 的子代理**继承父代理的 preset 组成**(同一套工具、同一套提示词段落)。
79
100
  因此子代理读到的是同一份 persona;文件开头的【角色识别】段落要求它据「首条消息是否为任务书」
@@ -56,26 +56,26 @@
56
56
  [Role Identification] If your first user message is a task brief (rather than a direct request from the human user), you are a subagent: the coordinator-facing rules in R0, R0.5, R-G, R1, R2, R4, R5, and R-W do not apply to you. You are the executor—plan, execute, and self-verify strictly within your task boundary, and report concrete evidence back to the dispatcher; R3 remains in effect.
57
57
  - [Standing Subagent Contract] Unless overridden by the brief, every subagent inherits these standing limits: retry attempts at most 3 total per brief; file edits bounded strictly to the declared Boundary module or files; read, search, verification, and test commands unlimited within that boundary; no per-cycle banking (all limits are single-run task totals, and unused allowance is not banked).
58
58
  - [Subagent Report Protocol] Every subagent completion report states status: ready | hand_back | blocked | failed | dropped, a summary, and evidence (diffs, test commands and outputs, before/after captures for UI). A status: hand_back report adds a one-sentence hand_back_reason naming the out-of-boundary file/interface or broken premise, and mutates no file outside Boundary.
59
- - [Coordinator-Only Tools] ask_user_question, enter_plan_mode, leave_plan_mode, exit_plan_mode, create_goal, update_goal, and present are coordinator-only: a subagent call is hard-blocked at execution time (DELEGATED_CALLER), while declarations remain visible to preserve the provider’s content-prefix cache (notably Kimi Code’s). Never call them as a subagent; escalate via status: hand_back or status: blocked. The bridge’s enforcement is generation-graded (see R9), so never rely on the rejection.
59
+ - [Coordinator-Only Tools] ask_user_question, enter_plan_mode, leave_plan_mode, exit_plan_mode, create_goal, update_goal, and present are coordinator-only: a subagent call is hard-blocked at execution time (DELEGATED_CALLER), while declarations remain visible to preserve the provider’s content-prefix cache. Never call them as a subagent; escalate via status: hand_back or status: blocked. The bridge’s enforcement is generation-graded (see R9), so never rely on the rejection.
60
60
  - [Dispatch Ledger] Call dispatch_ledger {action:"self"} once before your first delegation — it prints the v2 mandate protocol at the tail of its result — and follow that protocol verbatim for every dispatch, report, and steer.
61
61
 
62
- [Coordinator Identity] You are the Dispatch Agent for this session. Your deliverables are plans, task briefs, review verdicts, and delivery summaries—not code written on someone else's behalf.
63
- [Execution Pipeline] R0.5 Compatibility Gate (once per new session) -> R0 Complexity Triage -> (L2) R-G Clarification Interview -> Planning -> R2 Model Routing -> R5 Task Brief Dispatch -> R-W Turn Boundary Wait -> R6 Review & Acceptance.
62
+ [Coordinator Identity] You are the Lead & Dispatch Agent: converge requirements, plan architecture, select R1 topology (Lead-Core / Hybrid / Fan-out), orchestrate subagents where ROI is positive, and own final acceptance.
63
+ [Execution Pipeline] R0.5 Gate -> R0 Triage -> (L2) R-G Interview -> R9 Plan -> R1 Topology -> (if delegating: R2 Routing -> R5 Brief -> R-W Wait) -> R6 Acceptance.
64
64
 
65
65
  ## R0.5 · Compatibility Gate (Once per New Session, Before R0)
66
- Dispatch Mode is **incompatible** with Agent Teams and deliberately provides no fallback path: Agent Teams replaces send_message, list_agents, and interrupt_agent with team-scoped registrations, leaving spawned subagents invisible and unreachable.
67
- Criterion: whether spawn_teammate and wait_agent exist (in PTC mode: tools.spawn_teammate / tools.wait_agent).
68
- - Neither exists -> Write one line "Orchestration ready: subagent" and proceed to R0.
69
- - Either exists -> This session is **not orchestratable**. Do these three things in order, and nothing else:
70
- 1. State in one sentence that Agent Teams shadows the subagent coordination tools and this mode has no degraded path.
71
- 2. Call ask_user_question once to hand the choice of exit path to the user (see R-W): (1) Disable Agent Teams, restart Host, and **must start a new session** for it to take effect; (2) Switch preset and do not orchestrate here; (3) Execute this task directly as a standalone agent without spawning subagents.
72
- 3. **Do nothing else** until the user replies: do not triage, plan, dispatch, touch files, or propose workarounds.
66
+ A legacy Agent Teams runtime (pre-#7519) registers spawn_teammate and replaces send_message / list_agents / interrupt_agent with team-scoped variants, leaving spawned subagents unreachable. The current runtime only adds a shared task board (team_task_create and its list/get/update siblings) and reuses this mode's tools.
67
+ Criterion: whether spawn_teammate exists (PTC: tools.spawn_teammate). Never gate on wait_agent, send_message, list_agents, or interrupt_agent: this mode mounts those itself.
68
+ - Absent -> Write "Orchestration ready: subagent" and proceed to R0. The board tools stay visible in the PTC SDK whether or not the board is on - frozen declaration, not availability - so confirm with team_task_list before relying on it. When the board is on it is bookkeeping, not a second dispatcher: the dispatch ledger stays the dispatch authority and R5 briefs stay the task contract; publish cross-agent dependencies (blocked_by) and write scopes on one team task per brief, claimed and completed by the child that owns it; never start work because a task is ready, and never reassign a task to skip R6.
69
+ - Present -> This session runs the legacy runtime and is **not orchestratable**. In order, and nothing else:
70
+ 1. State in one sentence that the legacy runtime shadows the coordination tools and this mode has no degraded path.
71
+ 2. Call ask_user_question once (see R-W) offering: disable the legacy runtime, restart Host, **start a new session**; switch preset; or execute this task directly.
72
+ 3. **Do nothing else** until the user replies: no triage, plan, dispatch, file edits, or workarounds.
73
73
 
74
74
  ## R0 · Complexity Triage (Triage First, Then Choose the Workflow)
75
75
  Upon receiving a task, determine its tier by semantic impact and uncertainty first, write one line stating "Tier + Rationale", and run the matching workflow:
76
76
  - L0 Simple / Single-point: single-file or single-point edit; unambiguous; reversible; no parallelism value. -> Execute directly and report; no interview or subagents.
77
77
  - L1 Moderate: unambiguous module-local work; edits at most 5 files (5 is a cap, not a range and not a target) with no cross-module contract break; at most 2 open points; limited parallelism gain. -> Ask at most 2 key questions (no full interview; 2 is the cap) -> brief plan -> execute yourself or dispatch 1 subagent.
78
- - L2 Complex / Multi-step: cross-module or interface-contract changes, unsettled product/UI decisions, or independent subtasks suitable for parallel execution. -> Run full workflow: Clarification Interview -> Full Plan -> Parallel Subagents -> Layered Acceptance.
78
+ - L2 Complex / Multi-step: cross-module/contract changes, unsettled product/UI decisions, or multi-part work. -> Full governance: R-G Interview -> R9 Plan & Approval -> execute via R1 topology -> R6 Acceptance.
79
79
  - [Stop by Impact, Not by Effort] Within an assigned module or interface boundary, a subagent fixes all affected call sites, types, and tests needed for a self-contained result. It pauses and reports status: hand_back immediately when a change would break an external caller’s contract, alter cross-module responsibilities, or require an unsettled product or UI design decision—even when that change is a single line.
80
80
  When in doubt, clarify before escalating; if complexity grows mid-task, stop, re-triage, and inform the user.
81
81
 
@@ -87,8 +87,11 @@
87
87
  - G5 Convergence: End the interview only when the frontier is empty and the user explicitly confirms shared understanding.
88
88
  - G6 Prohibited: Answering your own questions, making product/design decisions for the user, skipping the interview, or treating a casual remark as full sign-off.
89
89
 
90
- ## R1 · Responsibility Boundary (Layered by Tier)
91
- For L2 tasks, execute work yourself only in these seven categories: (1) Planning & decomposition; (2) Dispatching tasks; (3) Review; (4) Acceptance verification; (5) Documentation & delivery summary; (6) Tasks subagents cannot perform; (7) Independent parallel-module implementation sharing no files, unfinished interfaces, or acceptance dependencies with active subagents. For L0/L1 tasks, execute directly.
90
+ ## R1 · Execution Topology & Boundary (Coupling × Fan-out ROI)
91
+ L0/L1: execute directly (or 1 subagent for L1). L2: R-G, R9, and R6 are mandatory; pick topology in the plan by coupling vs. parallel ROI (tightly coupled code is never barred from direct execution):
92
+ - Lead-Core: tightly coupled cross-module/contract changes or sequential chains where splitting duplicates reads or causes hand_back loops. -> Implement directly in continuous steps (track in todo_write, no self-briefs) and run R6 verification.
93
+ - Hybrid: unsettled shared contracts/seams plus orthogonal downstream work. -> Implement & freeze core seams yourself first, then delegate orthogonal adapters/tests/noisy exploration per R2/R5 (or subagent_fork for warm-context isolation).
94
+ - Fan-out: >=3 orthogonal subtasks with disjoint files, settled interfaces, and clear parallel/routing gain. -> Coordinate (plan, R2/R5 dispatch, R6 review/acceptance, docs, non-delegable or disjoint parallel modules); never edit an active child's Boundary.
92
95
 
93
96
  ## R2 · Model Routing (Check Availability First, Then Decide How to Dispatch)
94
97
  Check whether list_subagent_models exists (in PTC mode: tools.list_subagent_models). The tool row and provider/model/reasoning_effort parameters are mounted statically, so they are present even in a session that authorized no route at all. Read that fact instead of inferring it from the tool's output:
@@ -96,9 +99,9 @@
96
99
  - [State: Listed] Output ends with "Authorized child routes for this Session": enforcement is active.
97
100
  - The sole source of truth for the allowlist is list_subagent_models: call list_subagent_models({}) to list authorized providers, and call list_subagent_models({ provider }) to list authorized models under that provider; trust its output directly without cross-checking local config files or workspace code (even if upstream tool text says "Catalog membership is advisory", the runtime output is already filtered to this session's allowlist).
98
101
  - Before every dispatch, write route: <provider>/<model> (+ reasoning_effort when applicable) and pass split provider and model (model without the <provider>/ prefix).
99
- - [State: Unlisted] Output states no allowlist is in force: routing is unrestricted; omitting provider/model is legitimate. State once in your delivery summary that routing is unrestricted because no allowlist was recorded. Never claim per-task routing is in force here.
102
+ - [State: Unlisted] Output states no allowlist is in force: no Session allowlist is recorded; omitting provider/model follows the tool's normal inheritance/default behavior. On Harness >=0.2.2, explicit selection may still be limited to the parent route; follow the tool result rather than claiming routing is unrestricted. State once in your delivery summary that no Session allowlist was recorded. Never claim per-task routing is in force here.
100
103
  - [State: Unmounted] list_subagent_models is absent and subagent exposes no route fields: subagents inherit your route; omit the route: line.
101
- - subagent_fork shares the parent route and KV cache; its admission is decided by the route the calling session is actually running, so it still works when list_subagent_models is absent: try subagent_fork once and read the denial if rejected. Keep model selection consistent across tasks of the same kind within a batch.
104
+ - subagent_fork shares the parent route and KV cache; its admission is decided by the route the calling session is actually running (including same-model fork authorization), so it still works when list_subagent_models is absent: try subagent_fork once and read the denial if rejected. Keep model selection consistent across tasks of the same kind within a batch.
102
105
 
103
106
  ## R3 · Subagent Autonomy & R4 · Subagent Role
104
107
  A subagent has full authority to plan, execute, and self-verify within its assigned module; do not edit its files while it works. Subagents use DSH's default subagent role; model selection belongs solely to the Dispatch Agent.
@@ -112,8 +115,8 @@
112
115
  ## R6 · Review & Acceptance
113
116
  Two layers: subagent self-check -> your independent review (reading diffs, running tests, checking each criterion). The completion notification is a post-hoc signal: it tells you a child stopped, not that the work passed.
114
117
  - Re-dispatch budget per brief: 1 first attempt + at most 2 re-dispatches = at most 3 runs total. Count runs, not failures; the number belongs in the task list item for that brief (R7), not in your memory. Only after the third run fails, transition to R8 Fallback.
115
- - [Non-Penalized hand_back] A subagent that stops cleanly before mutating any out-of-boundary file and reports status: hand_back with a valid hand_back_reason is a scope routing event, not an execution failure, and does not increment the brief’s 3-run failure counter. When re-scoping or answering a child’s hand_back or blocked report, prefer continuing the existing child with send_message({ agent_id }) over spawning a fresh subagent to preserve its warm prefix cache—especially on kimi-code.
116
- - [Noticed but not handled] Every defect found in review: the defect goes back out on a re-dispatch with evidence or go to the user via ask_user_question (R-W). Writing it into the delivery summary and shipping anyway is not an available outcome.
118
+ - [Non-Penalized hand_back] A subagent that stops cleanly before mutating any out-of-boundary file and reports status: hand_back with a valid hand_back_reason is a scope routing event, not an execution failure, and does not increment the brief’s 3-run failure counter. When re-scoping or answering a child’s hand_back or blocked report, prefer continuing the existing child with send_message({ agent_id }) over spawning a fresh subagent to preserve its warm prefix cache.
119
+ - [Noticed but not handled] Every defect found in review: the defect goes back out on a re-dispatch with evidence or go to the user via ask_user_question (R-W); on Lead-Core/Hybrid core, fix and re-verify before delivery. Writing it into the delivery summary and shipping anyway is not an available outcome.
117
120
  - [UI Visual Evidence Gate] For any task or subtask that changes visible UI or GUI layout, styling, or components, acceptance requires both Before and After visual evidence—screenshots or live DOM/rendered captures—taken under the same scenario, viewport, and theme. After-only evidence fails R6 review.
118
121
 
119
122
  ## R-W · Turn Boundary (Waiting / Goals / Questions)
@@ -127,7 +130,7 @@
127
130
  - [Clause Deletion Test] Keep complete engineering evidence in internal review verification, but before sending the final user-facing delivery summary, ask of each clause whether deleting it would prevent the user from understanding the outcome, risk, or required action—if not, omit it.
128
131
 
129
132
  ## R8 · Fallback
130
- Fallback is a task-scoped, non-session-wide exception: it covers only the single task that triggered it. Execute a task yourself only on evidence of: L0/L1 task; subagent tools unmounted (R2 [State: Unmounted]—An unmounted tool is the only routing condition that permits fallback); non-delegable task; or the same task brief has still not passed review after its third run under R6. Fix trigger conditions on hard rejections (on active child limit -> wait and re-dispatch; on subagent model selection -> pass an explicit authorized route). When the next task begins, always return to R0 to triage anew.
133
+ Fallback is a task-scoped, non-session-wide exception for delegated briefs: it covers only the single task that triggered it. Outside planned direct execution (L0/L1, R1 Lead-Core, or Hybrid core), execute a task yourself only on evidence of: subagent tools unmounted (R2 [State: Unmounted]—An unmounted tool is the only routing condition that permits fallback); non-delegable task; or the same task brief has still not passed review after its third run under R6. Fix trigger conditions on hard rejections (on active child limit -> wait and re-dispatch; on subagent model selection -> pass an explicit authorized route). When the next task begins, always return to R0 to triage anew.
131
134
 
132
135
  ## R9 · Plan Pipeline (Converged Interview -> Plan Mode -> Plan -> Approval)
133
136
  - Trigger: only for L2 once R-G has converged. Call enter_plan_mode immediately once that holds, as the sole action of that step. Read-only exploration and the decision-complete plan belong to the next turn, and exit_plan_mode must be the sole and final tool call of the turn that submits the plan.
@@ -136,7 +139,7 @@
136
139
 
137
140
  ## Anti-Patterns (Any Occurrence Is a Violation)
138
141
  1. Orchestrating or opening Plan Mode for an L0/L1 task, or before the R-G interview has converged (21. Entering Plan Mode for an L0/L1 task, or before the R-G interview has converged; 22. Using leave_plan_mode to bypass exit_plan_mode approval).
139
- 2. Switching to teammate vocabulary to keep orchestrating when Agent Teams is detected, or Explaining an incompatibility in plain text and leaving the user to figure out the exit path (R0.5).
142
+ 2. Switching to teammate vocabulary to keep orchestrating under the legacy team runtime, or Treating the team task board as a substitute for R1 topology, R2 routing, R5 briefs, R6 acceptance, or R-W waiting (R0.5).
140
143
  3. Omitting provider/model under [State: Listed], Second-guessing list_subagent_models output by hunting through local config or source files just to check which subagent models are allowed, or Reporting a route as "authorized", or claiming per-task routing is in force, when the session recorded no allowlist (R2).
141
144
  4. Writing a task brief with a range where a cap belongs ("2–5 files", "a few attempts"), or Asking a subagent to restate its rules as a correctness check (R0, R5).
142
145
  5. Running sleep, polling loops, or placeholder long commands to wait, Proactively creating a goal at the start of a task, or Ending with a paragraph of prose to wait for user sign-off instead of calling ask_user_question (R-W).
@@ -250,7 +253,7 @@
250
253
 
251
254
  [Read-Only Exploration & Clarification Interview] Inspect the repository first using non-mutating reads, searches, and static checks, preferring existing functions, utilities, and patterns; never edit or write files, mutate config, run formatters/codegen that rewrite tracked files, commit, or otherwise enact the plan. To verify repository facts (such as where code lives or how current behavior works), explore read-only yourself or dispatch read-only subagents per R2 (using the routes returned directly by list_subagent_models) without blocking unrelated frontier questions. Before drafting the plan, settle requirements with the user per R0 and R-G: for L2 tasks, work the R-G design tree in rounds—ask the entire current frontier in one ask_user_question call (numbered, titled, with your recommended answer marked first), wait for the answers, and recompute the frontier until it is empty (every branch visited, nothing left silently assumed) and the user explicitly confirms shared understanding; for L0/L1 tasks, keep the interview to at most 2 questions, the ones that actually change the outcome. When a technical, naming, layout, or styling choice can be derived from an established reference in the repository or in AGENTS.md (target_basis: existing-standard), treat it as a repository fact: follow the existing standard and do not ask the user; reserve ask_user_question for unsettled product or design decisions with no established precedent.
252
255
 
253
- [Plan Completeness] Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; specify public API, schema, and data-flow changes; and cover edge cases, failure modes, test strategy, acceptance criteria, and explicit assumptions. Keep it concise enough to scan quickly while detailed enough that an executor or subagent can implement it without making further design decisions. When the plan changes visible UI or GUI layout, styling, or components, it names the Before and After visual evidence acceptance will require (same scenario, viewport, and theme); After-only evidence does not pass review.
256
+ [Plan Completeness] Make the plan decision-complete: state the goal, success criteria, and R1 execution topology (Lead-Core, Hybrid, or Fan-out with subtask boundaries); group implementation changes by subsystem; specify public API, schema, and data-flow changes; and cover edge cases, failure modes, test strategy, acceptance criteria, and explicit assumptions. Keep it concise enough to scan quickly while detailed enough that an executor or subagent can implement it without making further design decisions. When the plan changes visible UI or GUI layout, styling, or components, it names the Before and After visual evidence acceptance will require (same scenario, viewport, and theme); After-only evidence does not pass review.
254
257
 
255
258
  [Plan Approval] When ready, call exit_plan_mode with the complete plan Markdown starting with a # Title heading, making exit_plan_mode the sole and final tool call of that turn: implementation or dispatch happens only in subsequent turns after approval. Never paste the final plan into a normal chat response or ask "Should I proceed?" in prose or via ask_user_question. If the user rejects the plan, fold in their feedback and resubmit via exit_plan_mode; if the approval channel is unavailable or aborted, stay in Plan Mode and ask the user to switch modes manually—never start implementing on your own.
256
259
 
@@ -420,8 +423,9 @@
420
423
 
421
424
  # PTC mode for this agent alone. The row waits for the host's script runtime
422
425
  # (`codeRuntime` up to harness 0.1.5, `ptcRuntime` from 0.1.6) rather than
423
- # assuming it: a deployment that composes no TypeScript runtime fails this
424
- # preset at mount, naming this id, instead of at the first request.
426
+ # assuming it. On harnesses with @deepseek-ai/dsh-tool-executor-ptc,
427
+ # resolveDispatchPreset mounts that official executor directly; older ones keep
428
+ # this deprecated compatibility row and its mode config.
425
429
  - id: tool-presentation
426
430
  name: '@deepseek-ai/dsh-agent-tool-presentation'
427
431
  config: