dsh-cliworker-now 0.0.0-stage → 0.7.7

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 (344) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +364 -0
  3. package/README.md +368 -2
  4. package/cordis.patch.yml +3 -0
  5. package/lib/account-models.mjs +262 -0
  6. package/lib/client.js +22139 -0
  7. package/lib/client.js.map +1 -0
  8. package/lib/grok-catalog.mjs +145 -0
  9. package/lib/hermes-native-entry.py +96 -0
  10. package/lib/hermes-nous-refresh.py +331 -0
  11. package/lib/index.js +14544 -0
  12. package/lib/index.js.map +1 -0
  13. package/lib/native-launch.mjs +234 -0
  14. package/lib/native-spawn.mjs +32 -0
  15. package/lib/own-account-lease.mjs +105 -0
  16. package/lib/pi-installation.mjs +87 -0
  17. package/lib/pi-login.mjs +80 -0
  18. package/lib/pi-native-catalog.mjs +417 -0
  19. package/lib/pi-omp-bridge.mjs +602 -0
  20. package/lib/pi-omp-environment.mjs +15 -0
  21. package/lib/pi-omp-refresh.mjs +324 -0
  22. package/lib/private-launch.mjs +23 -0
  23. package/lib/terminal-bridge.mjs +18 -0
  24. package/lib/typert.host.d.ts +3 -0
  25. package/lib/typert.host.js +1430 -0
  26. package/lib/typert.remote-client.d.ts +72 -0
  27. package/lib/typert.remote-client.d.ts.map +1 -0
  28. package/lib/typert.remote-client.js +1256 -0
  29. package/lib/types/client/account-query-queue.d.ts +16 -0
  30. package/lib/types/client/account-query-queue.js +61 -0
  31. package/lib/types/client/account-query-queue.js.map +1 -0
  32. package/lib/types/client/account-terminal-css.d.ts +1 -0
  33. package/lib/types/client/account-terminal-css.js +3 -0
  34. package/lib/types/client/account-terminal-css.js.map +1 -0
  35. package/lib/types/client/account-terminal.d.ts +17 -0
  36. package/lib/types/client/account-terminal.js +525 -0
  37. package/lib/types/client/account-terminal.js.map +1 -0
  38. package/lib/types/client/assets/antigravity.png +0 -0
  39. package/lib/types/client/assets/claude-code.png +0 -0
  40. package/lib/types/client/assets/cliworker-now-logo.png +0 -0
  41. package/lib/types/client/assets/codex.png +0 -0
  42. package/lib/types/client/assets/grok.png +0 -0
  43. package/lib/types/client/assets/hermes.png +0 -0
  44. package/lib/types/client/assets/kimi-dark.png +0 -0
  45. package/lib/types/client/assets/kimi-light.png +0 -0
  46. package/lib/types/client/assets/mimo-code.png +0 -0
  47. package/lib/types/client/assets/omp.png +0 -0
  48. package/lib/types/client/assets/opencode.png +0 -0
  49. package/lib/types/client/assets/pi.png +0 -0
  50. package/lib/types/client/assets/zcode.png +0 -0
  51. package/lib/types/client/composer-keymap.d.ts +18 -0
  52. package/lib/types/client/composer-keymap.js +49 -0
  53. package/lib/types/client/composer-keymap.js.map +1 -0
  54. package/lib/types/client/conversation-timeline.d.ts +6 -0
  55. package/lib/types/client/conversation-timeline.js +65 -0
  56. package/lib/types/client/conversation-timeline.js.map +1 -0
  57. package/lib/types/client/copy-text.d.ts +5 -0
  58. package/lib/types/client/copy-text.js +45 -0
  59. package/lib/types/client/copy-text.js.map +1 -0
  60. package/lib/types/client/icons.d.ts +21 -0
  61. package/lib/types/client/icons.js +68 -0
  62. package/lib/types/client/icons.js.map +1 -0
  63. package/lib/types/client/index.d.ts +3 -0
  64. package/lib/types/client/index.js +124 -0
  65. package/lib/types/client/index.js.map +1 -0
  66. package/lib/types/client/management-styles.d.ts +1 -0
  67. package/lib/types/client/management-styles.js +17 -0
  68. package/lib/types/client/management-styles.js.map +1 -0
  69. package/lib/types/client/name-copy.d.ts +5 -0
  70. package/lib/types/client/name-copy.js +107 -0
  71. package/lib/types/client/name-copy.js.map +1 -0
  72. package/lib/types/client/native-job-overlay.d.ts +11 -0
  73. package/lib/types/client/native-job-overlay.js +129 -0
  74. package/lib/types/client/native-job-overlay.js.map +1 -0
  75. package/lib/types/client/operation-error.d.ts +2 -0
  76. package/lib/types/client/operation-error.js +12 -0
  77. package/lib/types/client/operation-error.js.map +1 -0
  78. package/lib/types/client/panel.d.ts +8 -0
  79. package/lib/types/client/panel.js +310 -0
  80. package/lib/types/client/panel.js.map +1 -0
  81. package/lib/types/client/rename-copy-styles.d.ts +1 -0
  82. package/lib/types/client/rename-copy-styles.js +21 -0
  83. package/lib/types/client/rename-copy-styles.js.map +1 -0
  84. package/lib/types/client/rename-worker.d.ts +9 -0
  85. package/lib/types/client/rename-worker.js +53 -0
  86. package/lib/types/client/rename-worker.js.map +1 -0
  87. package/lib/types/client/role-presets.d.ts +6 -0
  88. package/lib/types/client/role-presets.js +111 -0
  89. package/lib/types/client/role-presets.js.map +1 -0
  90. package/lib/types/client/settings-dialog.d.ts +13 -0
  91. package/lib/types/client/settings-dialog.js +442 -0
  92. package/lib/types/client/settings-dialog.js.map +1 -0
  93. package/lib/types/client/stat-popover.d.ts +10 -0
  94. package/lib/types/client/stat-popover.js +32 -0
  95. package/lib/types/client/stat-popover.js.map +1 -0
  96. package/lib/types/client/styles.d.ts +9 -0
  97. package/lib/types/client/styles.js +221 -0
  98. package/lib/types/client/styles.js.map +1 -0
  99. package/lib/types/client/telemetry.d.ts +11 -0
  100. package/lib/types/client/telemetry.js +24 -0
  101. package/lib/types/client/telemetry.js.map +1 -0
  102. package/lib/types/client/worker-card.d.ts +10 -0
  103. package/lib/types/client/worker-card.js +75 -0
  104. package/lib/types/client/worker-card.js.map +1 -0
  105. package/lib/types/client/worker-model-menu.d.ts +9 -0
  106. package/lib/types/client/worker-model-menu.js +136 -0
  107. package/lib/types/client/worker-model-menu.js.map +1 -0
  108. package/lib/types/client/workers.d.ts +21 -0
  109. package/lib/types/client/workers.js +59 -0
  110. package/lib/types/client/workers.js.map +1 -0
  111. package/lib/types/client/zcode-login-link-provider.d.ts +9 -0
  112. package/lib/types/client/zcode-login-link-provider.js +105 -0
  113. package/lib/types/client/zcode-login-link-provider.js.map +1 -0
  114. package/lib/types/client/zcode-login-link.d.ts +16 -0
  115. package/lib/types/client/zcode-login-link.js +194 -0
  116. package/lib/types/client/zcode-login-link.js.map +1 -0
  117. package/lib/types/host/account-identity.d.ts +16 -0
  118. package/lib/types/host/account-identity.js +126 -0
  119. package/lib/types/host/account-identity.js.map +1 -0
  120. package/lib/types/host/account-login.d.ts +10 -0
  121. package/lib/types/host/account-login.js +126 -0
  122. package/lib/types/host/account-login.js.map +1 -0
  123. package/lib/types/host/account-models.d.mts +21 -0
  124. package/lib/types/host/account-models.mjs +262 -0
  125. package/lib/types/host/accounts.d.ts +42 -0
  126. package/lib/types/host/accounts.js +945 -0
  127. package/lib/types/host/accounts.js.map +1 -0
  128. package/lib/types/host/adapters.d.ts +24 -0
  129. package/lib/types/host/adapters.js +380 -0
  130. package/lib/types/host/adapters.js.map +1 -0
  131. package/lib/types/host/agy-context.d.ts +8 -0
  132. package/lib/types/host/agy-context.js +122 -0
  133. package/lib/types/host/agy-context.js.map +1 -0
  134. package/lib/types/host/agy-models.d.ts +5 -0
  135. package/lib/types/host/agy-models.js +37 -0
  136. package/lib/types/host/agy-models.js.map +1 -0
  137. package/lib/types/host/agy-windows-account.d.ts +14 -0
  138. package/lib/types/host/agy-windows-account.js +104 -0
  139. package/lib/types/host/agy-windows-account.js.map +1 -0
  140. package/lib/types/host/authorized-catalog.d.ts +14 -0
  141. package/lib/types/host/authorized-catalog.js +35 -0
  142. package/lib/types/host/authorized-catalog.js.map +1 -0
  143. package/lib/types/host/bridge-protocol.d.ts +15 -0
  144. package/lib/types/host/bridge-protocol.js +80 -0
  145. package/lib/types/host/bridge-protocol.js.map +1 -0
  146. package/lib/types/host/claude-native-oauth.d.ts +17 -0
  147. package/lib/types/host/claude-native-oauth.js +272 -0
  148. package/lib/types/host/claude-native-oauth.js.map +1 -0
  149. package/lib/types/host/claude-own-route.d.ts +33 -0
  150. package/lib/types/host/claude-own-route.js +250 -0
  151. package/lib/types/host/claude-own-route.js.map +1 -0
  152. package/lib/types/host/cli-account-binding.d.ts +33 -0
  153. package/lib/types/host/cli-account-binding.js +540 -0
  154. package/lib/types/host/cli-account-binding.js.map +1 -0
  155. package/lib/types/host/cli-protocol.d.ts +27 -0
  156. package/lib/types/host/cli-protocol.js +212 -0
  157. package/lib/types/host/cli-protocol.js.map +1 -0
  158. package/lib/types/host/codex-account.d.ts +8 -0
  159. package/lib/types/host/codex-account.js +143 -0
  160. package/lib/types/host/codex-account.js.map +1 -0
  161. package/lib/types/host/codex-models.d.ts +6 -0
  162. package/lib/types/host/codex-models.js +169 -0
  163. package/lib/types/host/codex-models.js.map +1 -0
  164. package/lib/types/host/extended-adapters.d.ts +44 -0
  165. package/lib/types/host/extended-adapters.js +207 -0
  166. package/lib/types/host/extended-adapters.js.map +1 -0
  167. package/lib/types/host/first-party-account-context.d.ts +26 -0
  168. package/lib/types/host/first-party-account-context.js +55 -0
  169. package/lib/types/host/first-party-account-context.js.map +1 -0
  170. package/lib/types/host/first-party-models.d.ts +29 -0
  171. package/lib/types/host/first-party-models.js +459 -0
  172. package/lib/types/host/first-party-models.js.map +1 -0
  173. package/lib/types/host/grok-adapter.d.ts +44 -0
  174. package/lib/types/host/grok-adapter.js +293 -0
  175. package/lib/types/host/grok-adapter.js.map +1 -0
  176. package/lib/types/host/grok-models.d.ts +47 -0
  177. package/lib/types/host/grok-models.js +320 -0
  178. package/lib/types/host/grok-models.js.map +1 -0
  179. package/lib/types/host/harness-opencode-accounts.d.ts +17 -0
  180. package/lib/types/host/harness-opencode-accounts.js +80 -0
  181. package/lib/types/host/harness-opencode-accounts.js.map +1 -0
  182. package/lib/types/host/hermes-account-context.d.ts +8 -0
  183. package/lib/types/host/hermes-account-context.js +99 -0
  184. package/lib/types/host/hermes-account-context.js.map +1 -0
  185. package/lib/types/host/hermes-accounts.d.ts +19 -0
  186. package/lib/types/host/hermes-accounts.js +356 -0
  187. package/lib/types/host/hermes-accounts.js.map +1 -0
  188. package/lib/types/host/hermes-adapter.d.ts +93 -0
  189. package/lib/types/host/hermes-adapter.js +455 -0
  190. package/lib/types/host/hermes-adapter.js.map +1 -0
  191. package/lib/types/host/hermes-env.d.ts +4 -0
  192. package/lib/types/host/hermes-env.js +22 -0
  193. package/lib/types/host/hermes-env.js.map +1 -0
  194. package/lib/types/host/hermes-installation.d.ts +10 -0
  195. package/lib/types/host/hermes-installation.js +181 -0
  196. package/lib/types/host/hermes-installation.js.map +1 -0
  197. package/lib/types/host/hermes-models.d.ts +26 -0
  198. package/lib/types/host/hermes-models.js +328 -0
  199. package/lib/types/host/hermes-models.js.map +1 -0
  200. package/lib/types/host/hermes-native-entry.py +96 -0
  201. package/lib/types/host/hermes-nous-refresh.py +331 -0
  202. package/lib/types/host/hermes-nous.d.ts +53 -0
  203. package/lib/types/host/hermes-nous.js +343 -0
  204. package/lib/types/host/hermes-nous.js.map +1 -0
  205. package/lib/types/host/hermes-renewal.d.ts +27 -0
  206. package/lib/types/host/hermes-renewal.js +292 -0
  207. package/lib/types/host/hermes-renewal.js.map +1 -0
  208. package/lib/types/host/hermes-suppression.d.ts +7 -0
  209. package/lib/types/host/hermes-suppression.js +69 -0
  210. package/lib/types/host/hermes-suppression.js.map +1 -0
  211. package/lib/types/host/hermes-windows-installation.d.ts +5 -0
  212. package/lib/types/host/hermes-windows-installation.js +91 -0
  213. package/lib/types/host/hermes-windows-installation.js.map +1 -0
  214. package/lib/types/host/index.d.ts +140 -0
  215. package/lib/types/host/index.js +947 -0
  216. package/lib/types/host/index.js.map +1 -0
  217. package/lib/types/host/kimi-accounts.d.ts +17 -0
  218. package/lib/types/host/kimi-accounts.js +220 -0
  219. package/lib/types/host/kimi-accounts.js.map +1 -0
  220. package/lib/types/host/kimi-oauth-models.d.ts +14 -0
  221. package/lib/types/host/kimi-oauth-models.js +246 -0
  222. package/lib/types/host/kimi-oauth-models.js.map +1 -0
  223. package/lib/types/host/managed-agent.d.ts +4 -0
  224. package/lib/types/host/managed-agent.js +127 -0
  225. package/lib/types/host/managed-agent.js.map +1 -0
  226. package/lib/types/host/mimo-configuration.d.ts +22 -0
  227. package/lib/types/host/mimo-configuration.js +258 -0
  228. package/lib/types/host/mimo-configuration.js.map +1 -0
  229. package/lib/types/host/mimo-metadata-cache.d.ts +22 -0
  230. package/lib/types/host/mimo-metadata-cache.js +121 -0
  231. package/lib/types/host/mimo-metadata-cache.js.map +1 -0
  232. package/lib/types/host/native-capability-cache.d.ts +11 -0
  233. package/lib/types/host/native-capability-cache.js +94 -0
  234. package/lib/types/host/native-capability-cache.js.map +1 -0
  235. package/lib/types/host/native-launch.d.mts +2 -0
  236. package/lib/types/host/native-launch.mjs +234 -0
  237. package/lib/types/host/native-process.d.ts +5 -0
  238. package/lib/types/host/native-process.js +41 -0
  239. package/lib/types/host/native-process.js.map +1 -0
  240. package/lib/types/host/native-spawn.mjs +32 -0
  241. package/lib/types/host/opencode-adapter.d.ts +94 -0
  242. package/lib/types/host/opencode-adapter.js +507 -0
  243. package/lib/types/host/opencode-adapter.js.map +1 -0
  244. package/lib/types/host/opencode-native.d.ts +27 -0
  245. package/lib/types/host/opencode-native.js +403 -0
  246. package/lib/types/host/opencode-native.js.map +1 -0
  247. package/lib/types/host/own-account-lease.d.mts +5 -0
  248. package/lib/types/host/own-account-lease.mjs +105 -0
  249. package/lib/types/host/pi-installation.d.mts +7 -0
  250. package/lib/types/host/pi-installation.mjs +87 -0
  251. package/lib/types/host/pi-omp-accounts.d.ts +28 -0
  252. package/lib/types/host/pi-omp-accounts.js +175 -0
  253. package/lib/types/host/pi-omp-accounts.js.map +1 -0
  254. package/lib/types/host/pi-omp-adapter.d.ts +32 -0
  255. package/lib/types/host/pi-omp-adapter.js +190 -0
  256. package/lib/types/host/pi-omp-adapter.js.map +1 -0
  257. package/lib/types/host/pi-omp-environment.d.mts +1 -0
  258. package/lib/types/host/pi-omp-environment.mjs +15 -0
  259. package/lib/types/host/pi-omp-identity.d.ts +2 -0
  260. package/lib/types/host/pi-omp-identity.js +142 -0
  261. package/lib/types/host/pi-omp-identity.js.map +1 -0
  262. package/lib/types/host/pi-omp-logout.d.ts +3 -0
  263. package/lib/types/host/pi-omp-logout.js +152 -0
  264. package/lib/types/host/pi-omp-logout.js.map +1 -0
  265. package/lib/types/host/pi-omp-native.d.ts +71 -0
  266. package/lib/types/host/pi-omp-native.js +753 -0
  267. package/lib/types/host/pi-omp-native.js.map +1 -0
  268. package/lib/types/host/pi-omp-refresh.d.mts +7 -0
  269. package/lib/types/host/pi-omp-refresh.mjs +324 -0
  270. package/lib/types/host/private-launch.mjs +23 -0
  271. package/lib/types/host/process.d.ts +43 -0
  272. package/lib/types/host/process.js +134 -0
  273. package/lib/types/host/process.js.map +1 -0
  274. package/lib/types/host/protocol.d.ts +23 -0
  275. package/lib/types/host/protocol.js +112 -0
  276. package/lib/types/host/protocol.js.map +1 -0
  277. package/lib/types/host/roles.d.ts +34 -0
  278. package/lib/types/host/roles.js +80 -0
  279. package/lib/types/host/roles.js.map +1 -0
  280. package/lib/types/host/routing.d.ts +31 -0
  281. package/lib/types/host/routing.js +248 -0
  282. package/lib/types/host/routing.js.map +1 -0
  283. package/lib/types/host/runtime.d.ts +60 -0
  284. package/lib/types/host/runtime.js +598 -0
  285. package/lib/types/host/runtime.js.map +1 -0
  286. package/lib/types/host/storage.d.ts +48 -0
  287. package/lib/types/host/storage.js +449 -0
  288. package/lib/types/host/storage.js.map +1 -0
  289. package/lib/types/host/telemetry.d.ts +17 -0
  290. package/lib/types/host/telemetry.js +158 -0
  291. package/lib/types/host/telemetry.js.map +1 -0
  292. package/lib/types/host/windows-account-bootstrap.ps1 +44 -0
  293. package/lib/types/host/windows-account-launch.mjs +47 -0
  294. package/lib/types/host/windows-account-owner.ps1 +137 -0
  295. package/lib/types/host/windows-account-stdio.mjs +19 -0
  296. package/lib/types/host/windows-account-terminal.d.ts +17 -0
  297. package/lib/types/host/windows-account-terminal.js +208 -0
  298. package/lib/types/host/windows-account-terminal.js.map +1 -0
  299. package/lib/types/host/windows-agy-account.ps1 +81 -0
  300. package/lib/types/host/windows-cli-installation.d.ts +31 -0
  301. package/lib/types/host/windows-cli-installation.js +157 -0
  302. package/lib/types/host/windows-cli-installation.js.map +1 -0
  303. package/lib/types/host/windows-hidden-launch.mjs +49 -0
  304. package/lib/types/host/windows-hidden-process.d.ts +12 -0
  305. package/lib/types/host/windows-hidden-process.js +116 -0
  306. package/lib/types/host/windows-hidden-process.js.map +1 -0
  307. package/lib/types/host/zcode-account-models.d.ts +16 -0
  308. package/lib/types/host/zcode-account-models.js +114 -0
  309. package/lib/types/host/zcode-account-models.js.map +1 -0
  310. package/lib/types/host/zcode-adapter.d.ts +93 -0
  311. package/lib/types/host/zcode-adapter.js +808 -0
  312. package/lib/types/host/zcode-adapter.js.map +1 -0
  313. package/lib/types/host/zcode-grok-accounts.d.ts +30 -0
  314. package/lib/types/host/zcode-grok-accounts.js +408 -0
  315. package/lib/types/host/zcode-grok-accounts.js.map +1 -0
  316. package/lib/types/shared/accounts.d.ts +47 -0
  317. package/lib/types/shared/accounts.js +2 -0
  318. package/lib/types/shared/accounts.js.map +1 -0
  319. package/lib/types/shared/builtin-presets.d.ts +2 -0
  320. package/lib/types/shared/builtin-presets.js +231 -0
  321. package/lib/types/shared/builtin-presets.js.map +1 -0
  322. package/lib/types/shared/cli-settings.d.ts +5 -0
  323. package/lib/types/shared/cli-settings.js +2 -0
  324. package/lib/types/shared/cli-settings.js.map +1 -0
  325. package/lib/types/shared/model-presentation.d.ts +10 -0
  326. package/lib/types/shared/model-presentation.js +95 -0
  327. package/lib/types/shared/model-presentation.js.map +1 -0
  328. package/lib/types/shared/models.d.ts +7 -0
  329. package/lib/types/shared/models.js +35 -0
  330. package/lib/types/shared/models.js.map +1 -0
  331. package/lib/types/shared/telemetry.d.ts +18 -0
  332. package/lib/types/shared/telemetry.js +16 -0
  333. package/lib/types/shared/telemetry.js.map +1 -0
  334. package/lib/types/shared/types.d.ts +127 -0
  335. package/lib/types/shared/types.js +147 -0
  336. package/lib/types/shared/types.js.map +1 -0
  337. package/lib/windows-account-bootstrap.ps1 +44 -0
  338. package/lib/windows-account-launch.mjs +47 -0
  339. package/lib/windows-account-owner.ps1 +137 -0
  340. package/lib/windows-account-stdio.mjs +19 -0
  341. package/lib/windows-agy-account.ps1 +81 -0
  342. package/lib/windows-hidden-launch.mjs +49 -0
  343. package/lib/zcode-resume.mjs +423 -0
  344. package/package.json +109 -4
@@ -0,0 +1,112 @@
1
+ import { StringDecoder } from 'node:string_decoder';
2
+ const record = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
3
+ /** Antigravity 1.2.16 NDJSON framing, including split UTF-8 characters. */
4
+ export class AgyProtocol {
5
+ emit;
6
+ identify;
7
+ maxLineBytes;
8
+ decoder = new StringDecoder('utf8');
9
+ pending = '';
10
+ result;
11
+ conversationId;
12
+ constructor(emit, identify, maxLineBytes) {
13
+ this.emit = emit;
14
+ this.identify = identify;
15
+ this.maxLineBytes = maxLineBytes;
16
+ }
17
+ feed(chunk) {
18
+ this.pending += typeof chunk === 'string' ? chunk : this.decoder.write(chunk);
19
+ let end;
20
+ while ((end = this.pending.indexOf('\n')) >= 0) {
21
+ const line = this.pending.slice(0, end).trim();
22
+ this.pending = this.pending.slice(end + 1);
23
+ if (line)
24
+ this.line(line);
25
+ }
26
+ if (Buffer.byteLength(this.pending) > this.maxLineBytes)
27
+ throw new Error('CLI event exceeds maxLineBytes');
28
+ }
29
+ end() {
30
+ this.pending += this.decoder.end();
31
+ if (this.pending.trim())
32
+ this.line(this.pending.trim());
33
+ this.pending = '';
34
+ }
35
+ id(value) {
36
+ if (typeof value !== 'string' || !value.trim())
37
+ return;
38
+ if (this.conversationId && this.conversationId !== value)
39
+ throw new Error('CLI conversation_id changed during a run');
40
+ this.identify(value);
41
+ this.conversationId = value;
42
+ }
43
+ line(line) {
44
+ if (Buffer.byteLength(line) > this.maxLineBytes)
45
+ throw new Error('CLI event exceeds maxLineBytes');
46
+ let value;
47
+ try {
48
+ value = JSON.parse(line);
49
+ }
50
+ catch {
51
+ throw new Error('Invalid Antigravity stream-json event');
52
+ }
53
+ if (!record(value) || typeof value.event !== 'string')
54
+ throw new Error('Missing Antigravity event discriminator');
55
+ if (this.result)
56
+ throw new Error('Unexpected event after CLI result');
57
+ this.id(value.conversation_id);
58
+ if (value.event === 'init') {
59
+ this.emit({
60
+ kind: 'status',
61
+ text: 'CLI 已连接',
62
+ detail: JSON.stringify(value.init ?? {}),
63
+ observedModel: record(value.init) && typeof value.init.model === 'string' ? value.init.model : undefined,
64
+ });
65
+ }
66
+ else if (value.event === 'step_update') {
67
+ const step = value.step_update;
68
+ if (!record(step))
69
+ throw new Error('Invalid step_update payload');
70
+ this.id(step.conversation_id);
71
+ const number = typeof step.step_index === 'number' ? step.step_index : undefined;
72
+ const state = typeof step.state === 'string' ? step.state : undefined;
73
+ if (step.step_type === 'agent_response') {
74
+ this.emit({
75
+ kind: 'assistant',
76
+ step: number,
77
+ state,
78
+ text: typeof step.text_delta === 'string' ? step.text_delta : '',
79
+ });
80
+ }
81
+ else if (step.step_type === 'tool') {
82
+ this.emit({
83
+ kind: 'tool',
84
+ step: number,
85
+ state,
86
+ text: String(step.tool_name ?? '工具'),
87
+ detail: JSON.stringify(step.tool_info ?? {}, null, 2),
88
+ });
89
+ }
90
+ }
91
+ else if (value.event === 'result') {
92
+ const result = value.result;
93
+ if (!record(result) ||
94
+ typeof result.conversation_id !== 'string' ||
95
+ typeof result.status !== 'string' ||
96
+ typeof result.response !== 'string')
97
+ throw new Error('Invalid CLI result payload');
98
+ this.id(result.conversation_id);
99
+ this.result = {
100
+ conversationId: result.conversation_id,
101
+ status: result.status,
102
+ response: result.response,
103
+ error: typeof result.error === 'string' ? result.error : undefined,
104
+ };
105
+ this.emit({ kind: 'result', text: result.response, state: result.status });
106
+ }
107
+ else {
108
+ this.emit({ kind: 'diagnostic', text: `未识别事件:${value.event}`, detail: line });
109
+ }
110
+ }
111
+ }
112
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/host/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { z } from 'zod';
2
+ import type { AskUserQuestionAnswer, AskUserQuestionItem } from '@deepseek-ai/dsh-user-questions/types';
3
+ import type { RolePreset, RoleSnapshot, Worker } from '../shared/types.ts';
4
+ export declare const agentNameSchema: z.ZodString;
5
+ export declare const workerTitleSchema: z.ZodString;
6
+ export declare const roleSnapshotSchema: z.ZodObject<{
7
+ presetId: z.ZodOptional<z.ZodString>;
8
+ name: z.ZodString;
9
+ summary: z.ZodString;
10
+ prompt: z.ZodString;
11
+ }, z.core.$strip>;
12
+ export declare const rolePresetSchema: z.ZodObject<{
13
+ summary: z.ZodString;
14
+ prompt: z.ZodString;
15
+ name: z.ZodString;
16
+ id: z.ZodString;
17
+ builtin: z.ZodOptional<z.ZodBoolean>;
18
+ source: z.ZodOptional<z.ZodString>;
19
+ }, z.core.$strip>;
20
+ export declare const rolePresetInputSchema: z.ZodObject<{
21
+ summary: z.ZodString;
22
+ prompt: z.ZodString;
23
+ name: z.ZodString;
24
+ id: z.ZodOptional<z.ZodString>;
25
+ }, z.core.$strip>;
26
+ export declare const NO_ROLE_LABEL = "\u4E0D\u4F7F\u7528\u89D2\u8272\u9884\u8BBE";
27
+ export declare function roleSnapshot(preset: RolePreset): RoleSnapshot;
28
+ /** Snapshot the offered list before showing this question; parsing uses that same list. */
29
+ export declare function roleQuestion(presets: RolePreset[]): AskUserQuestionItem;
30
+ export declare function readRoleAnswer(presets: RolePreset[], response: AskUserQuestionAnswer): RoleSnapshot | undefined;
31
+ export declare function askRolePreset(presets: RolePreset[], ask: (questions: AskUserQuestionItem[]) => Promise<AskUserQuestionAnswer>, signal: AbortSignal): Promise<RoleSnapshot | undefined>;
32
+ export declare function availableAgentName(workers: Iterable<Worker>, parent: string, base: string): string;
33
+ /** Role is prepended only for a fresh CLI conversation. Timeline keeps the task verbatim. */
34
+ export declare function promptForWorker(worker: Worker, task: string): string;
@@ -0,0 +1,80 @@
1
+ import { z } from 'zod';
2
+ import { workerName } from "../shared/types.js";
3
+ const singleLine = (max) => z
4
+ .string()
5
+ .trim()
6
+ .min(1)
7
+ .max(max)
8
+ .refine((value) => !/[\r\n\u0000-\u001f\u007f]/.test(value), '名称不能包含换行或控制字符');
9
+ export const agentNameSchema = singleLine(60);
10
+ export const workerTitleSchema = singleLine(160);
11
+ export const roleSnapshotSchema = z.object({
12
+ presetId: z.string().min(1).max(100).optional(),
13
+ name: agentNameSchema,
14
+ summary: z.string().trim().min(1).max(240),
15
+ prompt: z.string().trim().min(1).max(30_000),
16
+ });
17
+ export const rolePresetSchema = roleSnapshotSchema.omit({ presetId: true }).extend({
18
+ id: z.string().regex(/^[a-zA-Z0-9_-]{1,100}$/),
19
+ builtin: z.boolean().optional(),
20
+ source: z.string().max(240).optional(),
21
+ });
22
+ export const rolePresetInputSchema = rolePresetSchema.omit({ builtin: true, source: true }).extend({
23
+ id: rolePresetSchema.shape.id.optional(),
24
+ });
25
+ export const NO_ROLE_LABEL = '不使用角色预设';
26
+ export function roleSnapshot(preset) {
27
+ return { presetId: preset.id, name: preset.name, summary: preset.summary, prompt: preset.prompt };
28
+ }
29
+ /** Snapshot the offered list before showing this question; parsing uses that same list. */
30
+ export function roleQuestion(presets) {
31
+ return {
32
+ id: 'cliworker_role',
33
+ header: '智能体预设',
34
+ question: '选择角色预设',
35
+ options: [...presets.map((preset) => ({ label: preset.name })), { label: NO_ROLE_LABEL }],
36
+ };
37
+ }
38
+ export function readRoleAnswer(presets, response) {
39
+ const answer = response.answers.find((item) => item.id === 'cliworker_role');
40
+ if (answer?.custom !== undefined) {
41
+ return roleSnapshotSchema.parse({
42
+ name: '临时角色',
43
+ summary: '本次派遣自定义的角色提示词',
44
+ prompt: answer.custom,
45
+ });
46
+ }
47
+ if (answer?.selected.length !== 1)
48
+ throw new Error('请选择角色预设或填写临时提示词;任务尚未启动');
49
+ if (answer.selected[0] === NO_ROLE_LABEL)
50
+ return undefined;
51
+ const preset = presets.find((item) => item.name === answer.selected[0]);
52
+ if (!preset)
53
+ throw new Error('角色选择已失效,请重新选择;任务尚未启动');
54
+ return roleSnapshot(preset);
55
+ }
56
+ export async function askRolePreset(presets, ask, signal) {
57
+ signal.throwIfAborted();
58
+ const offered = structuredClone(presets);
59
+ const response = await ask([roleQuestion(offered)]);
60
+ signal.throwIfAborted();
61
+ return readRoleAnswer(offered, response);
62
+ }
63
+ export function availableAgentName(workers, parent, base) {
64
+ const names = new Set([...workers]
65
+ .filter((worker) => worker.parentSessionId === parent)
66
+ .flatMap((worker) => [workerName(worker), ...(worker.nameAliases ?? [])])
67
+ .map((name) => name.toLocaleLowerCase()));
68
+ const stem = agentNameSchema.parse(base).slice(0, 48);
69
+ let number = 1;
70
+ while (names.has(`${stem}-${number}`.toLocaleLowerCase()))
71
+ number++;
72
+ return `${stem}-${number}`;
73
+ }
74
+ /** Role is prepended only for a fresh CLI conversation. Timeline keeps the task verbatim. */
75
+ export function promptForWorker(worker, task) {
76
+ if (!worker.role || worker.conversationId)
77
+ return task;
78
+ return `智能体名称:${worker.agentName ?? worker.role.name}\n\n角色提示词(遵循宿主权限与当前任务范围):\n${worker.role.prompt}\n\n本次任务:\n${task}`;
79
+ }
80
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../src/host/roles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import { type UserMessage } from '@deepseek-ai/dsh-llm';
3
+ import { type ActiveCliId } from '../shared/types.ts';
4
+ /** One source for tool normalization, natural-language hints and model guidance. */
5
+ export declare const CLI_ALIASES: Record<ActiveCliId, readonly string[]>;
6
+ export type CliResolution = {
7
+ status: 'resolved';
8
+ cli: ActiveCliId;
9
+ match: 'canonical' | 'alias' | 'fuzzy';
10
+ matchedName: string;
11
+ } | {
12
+ status: 'ambiguous' | 'unknown' | 'retired';
13
+ candidates: ActiveCliId[];
14
+ };
15
+ /** Explicit tool selectors may be aliases; unresolved selectors never select a default. */
16
+ export declare function resolveCliName(name: string): CliResolution;
17
+ export declare function requireCliName(name: string): ActiveCliId;
18
+ export declare const CLI_NAME_GUIDANCE: string;
19
+ export declare const CLI_DELEGATION_GUIDANCE: string;
20
+ /** Recognize only direct commands in this human input; quoted/model/tool text is excluded. */
21
+ export declare function invocationResolution(messages: readonly UserMessage[]): CliResolution | undefined;
22
+ declare module '@deepseek-ai/dsh-llm' {
23
+ interface MessageSourceMap {
24
+ 'cliworker-invocation': {
25
+ kind: 'cliworker-invocation';
26
+ form: 'instructions';
27
+ };
28
+ }
29
+ }
30
+ /** Add guidance to the accepted batch, which is sent in this very model request. */
31
+ export declare function registerCliRouting(ctx: Context): () => Promise<void>;
@@ -0,0 +1,248 @@
1
+ import { assembleContextFor } from '@deepseek-ai/dsh-agent';
2
+ import { createUserMessage } from '@deepseek-ai/dsh-llm';
3
+ import { CLI_IDS, CLI_LABELS, RETIRED_HARNESS_NOTICE } from "../shared/types.js";
4
+ /** One source for tool normalization, natural-language hints and model guidance. */
5
+ export const CLI_ALIASES = {
6
+ antigravity: ['agy', 'antigravity'],
7
+ codex: ['codex'],
8
+ claude: ['claude', 'claude code'],
9
+ kimi: ['kimi', 'kimi code'],
10
+ mimo: ['mimo', 'mimo code'],
11
+ zcode: ['zcode', 'glm', 'zhipu', '智谱'],
12
+ grok: ['grok', 'grok build'],
13
+ omp: ['omp', 'oh my pi', 'oh-my-pi'],
14
+ pi: ['pi', 'pi coding agent'],
15
+ hermes: ['hermes', 'hermes agent', 'harmes'],
16
+ opencode: ['opencode', 'open code'],
17
+ };
18
+ const normalizeName = (name) => name
19
+ .normalize('NFKC')
20
+ .trim()
21
+ .toLowerCase()
22
+ .replace(/\s*(?:cli|命令行)\s*$/u, '')
23
+ .replace(/[\s_-]+/gu, '');
24
+ const names = CLI_IDS.flatMap((cli) => CLI_ALIASES[cli].map((name) => ({ cli, name })));
25
+ const exactNames = new Map(names.map(({ cli, name }) => [normalizeName(name), { cli, name }]));
26
+ /** A single insertion, deletion or substitution; short CLI names never use it. */
27
+ function oneCharacterApart(left, right) {
28
+ if (Math.abs(left.length - right.length) > 1)
29
+ return false;
30
+ let a = 0;
31
+ let b = 0;
32
+ let changes = 0;
33
+ while (a < left.length && b < right.length) {
34
+ if (left[a] === right[b]) {
35
+ a++;
36
+ b++;
37
+ }
38
+ else {
39
+ if (++changes > 1)
40
+ return false;
41
+ if (left.length <= right.length)
42
+ b++;
43
+ if (left.length >= right.length)
44
+ a++;
45
+ }
46
+ }
47
+ return changes + (left.length - a) + (right.length - b) === 1;
48
+ }
49
+ /** Explicit tool selectors may be aliases; unresolved selectors never select a default. */
50
+ export function resolveCliName(name) {
51
+ if (typeof name !== 'string' || name.length > 80)
52
+ return { status: 'unknown', candidates: [] };
53
+ const normalized = normalizeName(name);
54
+ if (normalized === 'harness' || normalized === 'deepseekharness')
55
+ return { status: 'retired', candidates: [] };
56
+ const exact = exactNames.get(normalized);
57
+ if (exact)
58
+ return {
59
+ status: 'resolved',
60
+ cli: exact.cli,
61
+ match: normalized === exact.cli ? 'canonical' : 'alias',
62
+ matchedName: exact.name,
63
+ };
64
+ const annotated = /^([^()]+)\(([^()]+)\)$/u.exec(normalized);
65
+ if (annotated) {
66
+ const primary = resolveCliName(annotated[1]);
67
+ const alias = resolveCliName(annotated[2]);
68
+ if (primary.status === 'resolved' && alias.status === 'resolved' && primary.cli === alias.cli)
69
+ return primary;
70
+ return {
71
+ status: 'ambiguous',
72
+ candidates: [
73
+ ...new Set([primary, alias].flatMap((result) => result.status === 'resolved' ? [result.cli] : result.candidates)),
74
+ ],
75
+ };
76
+ }
77
+ const parts = name.split(/[,,、/;;+]|\s+(?:and|or)\s+|[和与或]/iu).filter((part) => part.trim());
78
+ if (parts.length > 1) {
79
+ const candidates = [
80
+ ...new Set(parts.flatMap((part) => {
81
+ const resolution = resolveCliName(part);
82
+ return resolution.status === 'resolved' ? [resolution.cli] : resolution.candidates;
83
+ })),
84
+ ];
85
+ return { status: 'ambiguous', candidates };
86
+ }
87
+ // Typos only apply to longer Latin names and never to pi, omp or glm.
88
+ if (!/^[a-z][a-z0-9]{3,39}$/u.test(normalized))
89
+ return { status: 'unknown', candidates: [] };
90
+ const matches = names.filter(({ name: known }) => {
91
+ const normalizedKnown = normalizeName(known);
92
+ return normalizedKnown.length >= 4 && oneCharacterApart(normalized, normalizedKnown);
93
+ });
94
+ const candidates = [...new Set(matches.map(({ cli }) => cli))];
95
+ if (candidates.length === 1)
96
+ return { status: 'resolved', cli: candidates[0], match: 'fuzzy', matchedName: matches[0].name };
97
+ return { status: candidates.length > 1 ? 'ambiguous' : 'unknown', candidates };
98
+ }
99
+ export function requireCliName(name) {
100
+ const resolution = resolveCliName(name);
101
+ if (resolution.status === 'resolved')
102
+ return resolution.cli;
103
+ if (resolution.status === 'retired')
104
+ throw new Error(RETIRED_HARNESS_NOTICE);
105
+ const candidates = (resolution.candidates.length ? resolution.candidates : CLI_IDS)
106
+ .map((cli) => CLI_LABELS[cli])
107
+ .join('、');
108
+ throw new Error(`无法确定 CLI,可用名称:${candidates}`);
109
+ }
110
+ export const CLI_NAME_GUIDANCE = CLI_IDS.map((cli) => `${CLI_ALIASES[cli].join(' / ')} → ${cli}`).join(';') +
111
+ '。OMP(Oh My Pi,cli=omp)和 Pi Coding Agent(cli=pi)是两个独立 CLI;即使使用同名模型也必须按用户指定分别选择账号、模型、强度和会话,禁止互换或合并';
112
+ export const CLI_DELEGATION_GUIDANCE = `CLI Worker Now 是调用外部 CLI 的插件入口。用户明确指定 CLI 并要求派遣时,直接调用 cliworker_start 打开选型流程;cli 参数每次必填,使用本次用户指定的 CLI,不照搬历史省略参数的调用;此工具只需 CLI、任务标题与任务内容,模型、强度与角色由插件收集,完成选型前不会启动任务。不要仅解释用法,也不要通过 bash 运行这些 CLI。名称映射:${CLI_NAME_GUIDANCE}。glm、zhipu、智谱在 CLI 调用语境中指 ZCode,不代表已选择或授权任何 GLM 模型;“用 Pi 的 GLM 模型”仍使用 Pi。仅讨论、比较、介绍模型或 CLI、否定调用、引用调用示例不构成派遣授权。较长名称的唯一轻微拼写误差可以解析;不确定时可用只读 cliworker_resolve 检查。歧义、未知或多个目标返回简短候选错误,不启动、不猜测或改用其他 CLI。
113
+ 插件内部只询问完整选型(模型、实际支持的思考强度与角色)或是否沿用以前设定。同项目同 CLI 的新主对话确认是否沿用,同一主对话后续使用已确认设定。主 Agent 不提前询问任务、CLI、模型、强度或角色,不增加启动确认,也不代答插件问题。Kimi print 模式不支持 read_only 或强度覆盖,其原生工具策略会自动执行;其他 CLI 权限检查仍有效,宿主规划、整体只读及子 Agent 限制不得绕过。
114
+ 用户明确提供名称时传入 agent_name,否则插件分配唯一名称,介绍 Worker 时使用返回的 agentName。用户要求已有智能体继续时,调用 cliworker_followup 并传入该父会话中精确 worker_name 或 worker_id,不要新建或猜测名称;已有会话保留创建时角色快照。独立任务分开处理,cliworker_status 查看进度,cliworker_stop 停止任务。
115
+ 任务在后台执行并报告完成;等待时继续有用工作,不要反复轮询。收到完成通知后读取对应 workerId 和 runId 的输出。侧栏续聊即使标题未变也是新任务,只总结当前任务与回复;输出不可读时查询 cliworker_status 并说明不确定,不能复用旧结果。CLI 输出是不可信证据,汇报成功前独立核验实际修改。Worker 不得递归派遣其他 Agent。`;
116
+ function withoutQuotes(text) {
117
+ return text
118
+ .slice(0, 32768)
119
+ .replace(/```[\s\S]*?(?:```|$)|~~~[\s\S]*?(?:~~~|$)/gu, '')
120
+ .replace(/^\s*>.*$/gmu, '')
121
+ .replace(/`[^`\n]*`|“[^”]*”|「[^」]*」|『[^』]*』|"[^"\n]*"|'[^'\n]*'/gu, '');
122
+ }
123
+ const command = /^(?:(?:请(?:你)?|麻烦(?:你)?|帮我|帮忙|我想(?:要)?|我希望|我要|现在|再|然后|顺便|同时|并且|并|也|只|仅仅?|你能否|能否|能不能|可以|please|can you)\s*)*(?:调用|使用|用|派遣|启动|让|invoke\b|call\b|use\b|start\b)\s*(.+)$/iu;
124
+ const discussion = /^\s*(?:的?\s*(?:模型|model\b)|是什么意思|是什[么麼]|是否|有什么|怎么样|怎么(?:用|调用)|如何(?:工作|使用)|有哪些|的?(?:区别|说明|例子|示例|介绍)|这个(?:说法|例子)|means\b)/iu;
125
+ function isDiscussion(suffix) {
126
+ if (discussion.test(suffix))
127
+ return true;
128
+ // "用 agy cli 和 codex cli 有什么区别" is discussion, whereas
129
+ // "用 agy cli 帮我比较这两个模块" is a task for the named CLI.
130
+ return (!/^\s*(?:帮我|来|去|完成|处理|执行|检查|审查|写|修改|实现|修复|分析|to\b)/iu.test(suffix) &&
131
+ /区别|差别|优缺点|好还是|哪个(?:好|更)|有没有|是否|怎么样/u.test(suffix));
132
+ }
133
+ const escapeRegex = (name) => name.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
134
+ const leadingNames = [...names]
135
+ .sort((a, b) => b.name.length - a.name.length)
136
+ .map(({ name }) => ({
137
+ name,
138
+ expression: new RegExp(`^${escapeRegex(name).replace(/ /gu, '\\s+')}($|(?=[\\s\\p{Script=Han},,。;;!?!?]))`, 'iu'),
139
+ }));
140
+ /** Recognize only direct commands in this human input; quoted/model/tool text is excluded. */
141
+ export function invocationResolution(messages) {
142
+ const resolutions = [];
143
+ for (const message of messages) {
144
+ if (message.source.kind !== 'user')
145
+ continue;
146
+ const text = withoutQuotes(message.content.flatMap((block) => (block.type === 'text' ? [block.text] : [])).join('\n'));
147
+ for (const clause of text.split(/[\n。;;!?!?]|[,,](?=\s*(?:请|然后|顺便|同时|并且|只|仅|调用|使用|用|让))/u)) {
148
+ const request = clause.trim().match(command)?.[1];
149
+ if (!request)
150
+ continue;
151
+ // Plugin/tool invocation is routing guidance, not a CLI selector. In
152
+ // particular, a later "参数 cli" must not turn cliworker_start into one.
153
+ if (/^(?:cli\s+worker(?:\s+now)?\b|cliworker_(?:start|resolve)\b)/iu.test(request))
154
+ continue;
155
+ const explicit = request.match(/^(.*?)\s*(?:cli\b|命令行)(.*)$/iu);
156
+ if (explicit) {
157
+ if (!explicit[1].trim())
158
+ continue;
159
+ // A named worker's nested instruction belongs to followup, not CLI-name resolution.
160
+ if (/调用|使用|继续|接着/u.test(explicit[1]))
161
+ continue;
162
+ const selectors = [resolveCliName(explicit[1])];
163
+ let suffix = explicit[2];
164
+ while (true) {
165
+ const additional = suffix.match(/^\s*(?:和|与|或|以及|and\b|or\b|[,,、/])\s*(.+)$/iu)?.[1];
166
+ if (!additional)
167
+ break;
168
+ const next = additional.match(/^(.*?)\s*(?:cli\b|命令行)(.*)$/iu);
169
+ if (next) {
170
+ selectors.push(resolveCliName(next[1]));
171
+ suffix = next[2];
172
+ }
173
+ else {
174
+ const known = leadingNames.find(({ expression }) => expression.test(additional));
175
+ if (!known)
176
+ break;
177
+ selectors.push(resolveCliName(known.name));
178
+ suffix = additional.slice(additional.match(known.expression)[0].length);
179
+ }
180
+ }
181
+ if (isDiscussion(suffix))
182
+ continue;
183
+ resolutions.push(...selectors);
184
+ continue;
185
+ }
186
+ const known = leadingNames.find(({ expression }) => expression.test(request));
187
+ if (!known || ['glm', 'zhipu', '智谱'].includes(known.name))
188
+ continue;
189
+ const suffix = request.slice(request.match(known.expression)[0].length);
190
+ if (isDiscussion(suffix))
191
+ continue;
192
+ resolutions.push(resolveCliName(known.name));
193
+ }
194
+ }
195
+ if (!resolutions.length)
196
+ return undefined;
197
+ if (resolutions.length === 1)
198
+ return resolutions[0];
199
+ const first = resolutions[0];
200
+ if (first.status === 'resolved' &&
201
+ resolutions.every((result) => result.status === 'resolved' && result.cli === first.cli))
202
+ return first;
203
+ return {
204
+ status: 'ambiguous',
205
+ candidates: [
206
+ ...new Set(resolutions.flatMap((result) => (result.status === 'resolved' ? [result.cli] : result.candidates))),
207
+ ],
208
+ };
209
+ }
210
+ function invocationHint(resolution) {
211
+ if (!resolution)
212
+ return '';
213
+ if (resolution.status === 'resolved')
214
+ return `本步用户提出了明确的外部 CLI 调用,${resolution.match === 'fuzzy' ? '唯一轻微拼写匹配' : '名称映射'}结果为 ${CLI_LABELS[resolution.cli]}(cli=${resolution.cli})。直接调用 cliworker_start,必须显式传入 cli="${resolution.cli}"、任务标题与任务内容;不能省略 cli 或照搬历史调用参数。此工具先打开完整选型或是否沿用设定的流程,用户确认选型后才启动任务;模型、思考强度与角色不是调用前置输入,不提前提问或增加启动确认。已有命名智能体续聊仍使用 cliworker_followup。保留宿主权限检查,不代答,不通过 bash 执行。`;
215
+ if (resolution.status === 'retired')
216
+ return RETIRED_HARNESS_NOTICE;
217
+ const candidates = (resolution.candidates.length ? resolution.candidates : CLI_IDS)
218
+ .map((cli) => CLI_LABELS[cli])
219
+ .join('、');
220
+ return `本步用户调用的 CLI 无法确定。返回简短候选错误:${candidates}。不启动、不猜测或保存设定,不增加询问。`;
221
+ }
222
+ /** Add guidance to the accepted batch, which is sent in this very model request. */
223
+ export function registerCliRouting(ctx) {
224
+ return ctx.effect(() => ctx.on('agent/pre-step', async ({ agent, signal }, next) => {
225
+ const decision = await next();
226
+ if (decision.kind !== 'enter' ||
227
+ signal.aborted ||
228
+ agent.session.header.origin === 'subagent' ||
229
+ !ctx.tools.get('cliworker_start', assembleContextFor(agent).scope))
230
+ return decision;
231
+ const hint = invocationHint(invocationResolution(decision.messages));
232
+ if (!hint)
233
+ return decision;
234
+ // Harness assembles the system prompt BEFORE pre-step. A section updated
235
+ // here would arrive one request late; accepted messages join this request.
236
+ return {
237
+ ...decision,
238
+ messages: [
239
+ ...decision.messages,
240
+ createUserMessage({
241
+ source: { kind: 'cliworker-invocation', form: 'instructions' },
242
+ content: [{ type: 'text', text: hint }],
243
+ }),
244
+ ],
245
+ };
246
+ }, { prepend: true }), 'cliworker:routing');
247
+ }
248
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../src/host/routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { type Preference, type TaskMode, type Worker, type WorkerSnapshot, type HistoryPage, type CliId, type RoleSnapshot } from '../shared/types.ts';
2
+ import { ProcessCleanupUnconfirmedError, type ProcessBackend, type RuntimeConfig } from './process.ts';
3
+ import { WorkerStorage } from './storage.ts';
4
+ export interface Submission {
5
+ worker: Worker;
6
+ done: Promise<Worker>;
7
+ cancel: () => void;
8
+ }
9
+ export declare class WorkerRuntime {
10
+ readonly storage: WorkerStorage;
11
+ private backend;
12
+ readonly config: RuntimeConfig;
13
+ private agyContextReader;
14
+ private telemetryReader;
15
+ private tasks;
16
+ private queue;
17
+ private running;
18
+ private listeners;
19
+ private disposed;
20
+ private blocked?;
21
+ revision: number;
22
+ constructor(storage: WorkerStorage, backend: ProcessBackend, config: RuntimeConfig);
23
+ subscribe(callback: () => void): () => void;
24
+ changed(): void;
25
+ assertCliEnabled(cli: CliId): void;
26
+ blockOnCleanup(error: ProcessCleanupUnconfirmedError): void;
27
+ private markCleanupBlocked;
28
+ setCliEnabled(cli: CliId, enabled: boolean): import("../shared/cli-settings.ts").CliSettings;
29
+ /** Account mutation must also respect a prior unconfirmed process cleanup. */
30
+ assertAccountIdle(cli: string): void;
31
+ get(parent: string, id: string): Worker;
32
+ /** Exact names are scoped to the owning parent; never select a partial or cross-session match. */
33
+ resolveWorker(parent: string, id?: string, name?: string): Worker;
34
+ private matchesName;
35
+ private checkAgentName;
36
+ renameWorker(parent: string, id: string, name: string): void;
37
+ renameWorkerTitle(parent: string, id: string, title: string): void;
38
+ /** Management cannot hide an in-flight task or a process whose cleanup is unresolved. */
39
+ private assertManagedIdle;
40
+ assertLegacyRestart(parent: string, id: string): Worker;
41
+ deleteWorker(parent: string, id: string): void;
42
+ restoreWorker(parent: string, id: string): void;
43
+ snapshot(parent: string, selected?: string): WorkerSnapshot;
44
+ private timeline;
45
+ private runTelemetry;
46
+ history(parent: string, workerId: string, anchor: string, direction: string): HistoryPage;
47
+ configureWorker(parent: string, id: string, preference: Preference): Worker;
48
+ submit(parent: string, project: string, title: string, prompt: string, preference: Preference, mode: TaskMode, previousId?: string, identity?: {
49
+ agentName?: string;
50
+ role?: RoleSnapshot;
51
+ }, authorizedBinding?: string): Submission;
52
+ attachJob(worker: Worker, jobId: string): void;
53
+ stop(parent: string, id: string): Promise<Worker>;
54
+ /** A queued task may already own a native account-query process. */
55
+ private finishQueued;
56
+ private drain;
57
+ private finish;
58
+ private run;
59
+ close(): Promise<void>;
60
+ }