@tyvm/knowhow 0.0.159 → 0.0.160

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 (870) hide show
  1. package/package.json +1 -1
  2. package/ts_build/package.json +1 -1
  3. package/ts_build/src/chat/CliChatService.d.ts +2 -1
  4. package/ts_build/src/chat/CliChatService.js +29 -3
  5. package/ts_build/src/chat/CliChatService.js.map +1 -1
  6. package/ts_build/src/chat/modules/AgentModule.js +21 -17
  7. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  8. package/ts_build/src/chat/renderer/ConsoleRenderer.js +32 -25
  9. package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -1
  10. package/ts_build/src/logger.d.ts +1 -0
  11. package/ts_build/src/logger.js +13 -1
  12. package/ts_build/src/logger.js.map +1 -1
  13. package/ts_build/src/utils/InputQueueManager.d.ts +8 -1
  14. package/ts_build/src/utils/InputQueueManager.js +72 -2
  15. package/ts_build/src/utils/InputQueueManager.js.map +1 -1
  16. package/ts_build/src/utils/index.d.ts +3 -1
  17. package/ts_build/src/utils/index.js +11 -3
  18. package/ts_build/src/utils/index.js.map +1 -1
  19. package/CONFIG.md +0 -429
  20. package/PROCESSING.md +0 -450
  21. package/WORKER.md +0 -260
  22. package/autodoc/README.md +0 -324
  23. package/autodoc/chat-guide.md +0 -444
  24. package/autodoc/cli-reference.md +0 -720
  25. package/autodoc/config-reference.md +0 -642
  26. package/autodoc/embeddings-guide.md +0 -467
  27. package/autodoc/generate-guide.md +0 -437
  28. package/autodoc/language-plugin-guide.md +0 -417
  29. package/autodoc/modules-guide.md +0 -379
  30. package/autodoc/plugins-guide.md +0 -721
  31. package/autodoc/quickstart-guide.md +0 -126
  32. package/autodoc/skills-guide.md +0 -584
  33. package/autodoc/worker-guide.md +0 -519
  34. package/docs/input-queue-manager.md +0 -142
  35. package/docs/multi-worker-management.md +0 -142
  36. package/docs/shell-commands.md +0 -174
  37. package/jest.config.js +0 -19
  38. package/jest.manual.config.js +0 -19
  39. package/scripts/README.md +0 -119
  40. package/scripts/build-for-node.sh +0 -148
  41. package/scripts/cache-miss-debug.ts +0 -365
  42. package/scripts/check-isolated-deps.sh +0 -69
  43. package/scripts/check-model-pricing.ts +0 -509
  44. package/scripts/compare-openrouter-coverage.ts +0 -576
  45. package/scripts/migrate-usage-json.js +0 -147
  46. package/scripts/publish.sh +0 -86
  47. package/scripts/restore_keys.sh +0 -59
  48. package/scripts/test-repetition-hint.ts +0 -302
  49. package/scripts/unset_keys.sh +0 -60
  50. package/src/agents/base/base.ts +0 -1963
  51. package/src/agents/base/prompt.ts +0 -55
  52. package/src/agents/configurable/ConfigAgent.ts +0 -24
  53. package/src/agents/developer/developer.ts +0 -76
  54. package/src/agents/historyRollback.ts +0 -36
  55. package/src/agents/index.ts +0 -52
  56. package/src/agents/interface.ts +0 -11
  57. package/src/agents/patcher/codebase.md +0 -27
  58. package/src/agents/patcher/patcher.ts +0 -131
  59. package/src/agents/researcher/researcher.ts +0 -115
  60. package/src/agents/setup/setup.ts +0 -63
  61. package/src/agents/tools/addInternalTools.ts +0 -21
  62. package/src/agents/tools/agentCall.ts +0 -34
  63. package/src/agents/tools/aiClient.ts +0 -178
  64. package/src/agents/tools/askHuman.ts +0 -10
  65. package/src/agents/tools/callPlugin.ts +0 -10
  66. package/src/agents/tools/connectAgent.ts +0 -355
  67. package/src/agents/tools/embeddingSearch.ts +0 -6
  68. package/src/agents/tools/execCommand.ts +0 -162
  69. package/src/agents/tools/fileSearch.ts +0 -35
  70. package/src/agents/tools/finalAnswer.ts +0 -4
  71. package/src/agents/tools/googleSearch.ts +0 -243
  72. package/src/agents/tools/index.ts +0 -33
  73. package/src/agents/tools/language/definitions.ts +0 -105
  74. package/src/agents/tools/language/index.ts +0 -20
  75. package/src/agents/tools/lazy/definitions.ts +0 -72
  76. package/src/agents/tools/lazy/disableTools.ts +0 -16
  77. package/src/agents/tools/lazy/enableTools.ts +0 -16
  78. package/src/agents/tools/lazy/index.ts +0 -3
  79. package/src/agents/tools/lazy/listAvailableTools.ts +0 -17
  80. package/src/agents/tools/lintFile.ts +0 -19
  81. package/src/agents/tools/list.ts +0 -739
  82. package/src/agents/tools/loadImageAsBase64.ts +0 -83
  83. package/src/agents/tools/loadWebpage.ts +0 -19
  84. package/src/agents/tools/mcp/connectMcpServer.ts +0 -40
  85. package/src/agents/tools/mcp/definitions.ts +0 -67
  86. package/src/agents/tools/mcp/disconnectMcpServer.ts +0 -40
  87. package/src/agents/tools/mcp/index.ts +0 -3
  88. package/src/agents/tools/mcp/listAvailableMcpServers.ts +0 -28
  89. package/src/agents/tools/minimal/callTool.ts +0 -45
  90. package/src/agents/tools/minimal/definitions.ts +0 -50
  91. package/src/agents/tools/minimal/index.ts +0 -3
  92. package/src/agents/tools/minimal/inspectTools.ts +0 -27
  93. package/src/agents/tools/modifyFile.ts +0 -53
  94. package/src/agents/tools/observe.ts +0 -247
  95. package/src/agents/tools/patch.ts +0 -1287
  96. package/src/agents/tools/readBlocks.ts +0 -83
  97. package/src/agents/tools/readFile.ts +0 -105
  98. package/src/agents/tools/replyToParent.ts +0 -123
  99. package/src/agents/tools/runGenerate.ts +0 -210
  100. package/src/agents/tools/scanFile.ts +0 -16
  101. package/src/agents/tools/sendAgentMessage.ts +0 -139
  102. package/src/agents/tools/skills.ts +0 -79
  103. package/src/agents/tools/startAgentTask.ts +0 -393
  104. package/src/agents/tools/stringReplace.ts +0 -105
  105. package/src/agents/tools/textSearch.ts +0 -128
  106. package/src/agents/tools/types/fileblock.ts +0 -5
  107. package/src/agents/tools/visionTool.ts +0 -35
  108. package/src/agents/tools/waitForAgentCompleted.ts +0 -270
  109. package/src/agents/tools/writeFile.ts +0 -106
  110. package/src/agents/tools/ycmd/client.ts +0 -608
  111. package/src/agents/tools/ycmd/definitions.ts +0 -294
  112. package/src/agents/tools/ycmd/detection.ts +0 -211
  113. package/src/agents/tools/ycmd/index.ts +0 -11
  114. package/src/agents/tools/ycmd/installer.ts +0 -251
  115. package/src/agents/tools/ycmd/server.ts +0 -545
  116. package/src/agents/tools/ycmd/serverManager.ts +0 -316
  117. package/src/agents/tools/ycmd/tools/completion.ts +0 -113
  118. package/src/agents/tools/ycmd/tools/diagnostics.ts +0 -166
  119. package/src/agents/tools/ycmd/tools/getLocations.ts +0 -173
  120. package/src/agents/tools/ycmd/tools/goto.ts +0 -169
  121. package/src/agents/tools/ycmd/tools/refactor.ts +0 -204
  122. package/src/agents/tools/ycmd/tools/signature.ts +0 -174
  123. package/src/agents/tools/ycmd/tools/start.ts +0 -95
  124. package/src/agents/tools/ycmd/utils/pathUtils.ts +0 -59
  125. package/src/ai.ts +0 -306
  126. package/src/auth/browserLogin.ts +0 -406
  127. package/src/auth/environmentAuth.ts +0 -51
  128. package/src/auth/errors.ts +0 -6
  129. package/src/auth/jwtStore.ts +0 -70
  130. package/src/auth/keyAuth.ts +0 -142
  131. package/src/auth/keyManager.ts +0 -331
  132. package/src/auth/registerIdentity.ts +0 -67
  133. package/src/auth/spinner.ts +0 -23
  134. package/src/chat/CliChatService.ts +0 -438
  135. package/src/chat/modules/AgentModule.ts +0 -1664
  136. package/src/chat/modules/AskModule.ts +0 -98
  137. package/src/chat/modules/BaseChatModule.ts +0 -65
  138. package/src/chat/modules/ClipboardImageModule.ts +0 -136
  139. package/src/chat/modules/CustomCommandsModule.ts +0 -80
  140. package/src/chat/modules/InternalChatModule.ts +0 -216
  141. package/src/chat/modules/RemoteSyncModule.ts +0 -482
  142. package/src/chat/modules/RendererModule.ts +0 -139
  143. package/src/chat/modules/SearchModule.ts +0 -168
  144. package/src/chat/modules/SessionsModule.ts +0 -969
  145. package/src/chat/modules/SetupModule.ts +0 -185
  146. package/src/chat/modules/ShellCommandModule.ts +0 -98
  147. package/src/chat/modules/SystemModule.ts +0 -161
  148. package/src/chat/modules/ToolCommandModule.ts +0 -102
  149. package/src/chat/modules/VoiceModule.ts +0 -70
  150. package/src/chat/modules/index.ts +0 -8
  151. package/src/chat/renderer/CompactRenderer.ts +0 -229
  152. package/src/chat/renderer/ConsoleRenderer.ts +0 -160
  153. package/src/chat/renderer/FancyRenderer.ts +0 -440
  154. package/src/chat/renderer/PlainRenderer.ts +0 -218
  155. package/src/chat/renderer/index.ts +0 -6
  156. package/src/chat/renderer/loadRenderer.ts +0 -316
  157. package/src/chat/renderer/messagesToRenderEvents.ts +0 -96
  158. package/src/chat/renderer/types.ts +0 -99
  159. package/src/chat/types.ts +0 -146
  160. package/src/chat.ts +0 -140
  161. package/src/cli.ts +0 -180
  162. package/src/clients/anthropic.ts +0 -772
  163. package/src/clients/attribution.ts +0 -53
  164. package/src/clients/cerebras.ts +0 -10
  165. package/src/clients/contextLimits.ts +0 -263
  166. package/src/clients/copilot.ts +0 -23
  167. package/src/clients/deepseek.ts +0 -16
  168. package/src/clients/fireworks.ts +0 -71
  169. package/src/clients/gemini.ts +0 -1169
  170. package/src/clients/github.ts +0 -16
  171. package/src/clients/groq.ts +0 -15
  172. package/src/clients/http.ts +0 -719
  173. package/src/clients/index.ts +0 -1153
  174. package/src/clients/knowhow.ts +0 -130
  175. package/src/clients/knowhowMcp.ts +0 -118
  176. package/src/clients/llama.ts +0 -16
  177. package/src/clients/meta.ts +0 -27
  178. package/src/clients/mistral.ts +0 -16
  179. package/src/clients/nvidia.ts +0 -16
  180. package/src/clients/openai.ts +0 -1186
  181. package/src/clients/openrouter.ts +0 -24
  182. package/src/clients/pricing/anthropic.ts +0 -149
  183. package/src/clients/pricing/cerebras.ts +0 -11
  184. package/src/clients/pricing/copilot.ts +0 -60
  185. package/src/clients/pricing/deepseek.ts +0 -15
  186. package/src/clients/pricing/fireworks.ts +0 -182
  187. package/src/clients/pricing/github.ts +0 -69
  188. package/src/clients/pricing/google.ts +0 -385
  189. package/src/clients/pricing/groq.ts +0 -56
  190. package/src/clients/pricing/index.ts +0 -44
  191. package/src/clients/pricing/llama.ts +0 -18
  192. package/src/clients/pricing/meta.ts +0 -12
  193. package/src/clients/pricing/mistral.ts +0 -34
  194. package/src/clients/pricing/models.ts +0 -25
  195. package/src/clients/pricing/nvidia.ts +0 -102
  196. package/src/clients/pricing/openai.ts +0 -409
  197. package/src/clients/pricing/openrouter.ts +0 -36
  198. package/src/clients/pricing/qwen.ts +0 -80
  199. package/src/clients/pricing/types.ts +0 -125
  200. package/src/clients/pricing/xai.ts +0 -137
  201. package/src/clients/qwen.ts +0 -16
  202. package/src/clients/responseMetadata.ts +0 -221
  203. package/src/clients/types.ts +0 -531
  204. package/src/clients/withRetry.ts +0 -89
  205. package/src/clients/xai.ts +0 -693
  206. package/src/cloudWorker.ts +0 -394
  207. package/src/commands/agent.ts +0 -342
  208. package/src/commands/agents.ts +0 -1037
  209. package/src/commands/behaviors.ts +0 -47
  210. package/src/commands/convert.ts +0 -291
  211. package/src/commands/hash.ts +0 -179
  212. package/src/commands/mcp.ts +0 -743
  213. package/src/commands/misc.ts +0 -373
  214. package/src/commands/modules.ts +0 -704
  215. package/src/commands/processes.ts +0 -248
  216. package/src/commands/remote.ts +0 -77
  217. package/src/commands/replay.ts +0 -503
  218. package/src/commands/sandbox.ts +0 -566
  219. package/src/commands/services.ts +0 -168
  220. package/src/commands/skills.ts +0 -107
  221. package/src/commands/workers.ts +0 -168
  222. package/src/config.ts +0 -468
  223. package/src/conversion.ts +0 -69
  224. package/src/dataset/diffs/README.md +0 -12
  225. package/src/dataset/diffs/debug-errors.ts +0 -29
  226. package/src/dataset/diffs/debug.ts +0 -64
  227. package/src/dataset/diffs/generate.ts +0 -71
  228. package/src/dataset/diffs/jsonl.ts +0 -53
  229. package/src/dataset/diffs/test.ts +0 -194
  230. package/src/embeddings.ts +0 -494
  231. package/src/fileSync.ts +0 -369
  232. package/src/generate.ts +0 -529
  233. package/src/hashes.ts +0 -180
  234. package/src/index.ts +0 -261
  235. package/src/logger.ts +0 -197
  236. package/src/login.ts +0 -209
  237. package/src/microphone.ts +0 -141
  238. package/src/migrations.ts +0 -151
  239. package/src/plugins/AgentsMdPlugin.ts +0 -118
  240. package/src/plugins/GitPlugin.ts +0 -598
  241. package/src/plugins/LinterPlugin.ts +0 -214
  242. package/src/plugins/PluginBase.ts +0 -70
  243. package/src/plugins/SkillsPlugin.ts +0 -37
  244. package/src/plugins/embedding.ts +0 -82
  245. package/src/plugins/exec.ts +0 -70
  246. package/src/plugins/language.ts +0 -290
  247. package/src/plugins/plugins.ts +0 -175
  248. package/src/plugins/tmux.ts +0 -132
  249. package/src/plugins/types.ts +0 -36
  250. package/src/plugins/url.ts +0 -101
  251. package/src/plugins/vim.ts +0 -89
  252. package/src/processes/ProcessManager.ts +0 -96
  253. package/src/processes/managedProcessShim.ts +0 -138
  254. package/src/processors/Base64ImageDetector.ts +0 -502
  255. package/src/processors/CustomVariables.ts +0 -693
  256. package/src/processors/GemmaToolProcessor.ts +0 -163
  257. package/src/processors/HarmonyToolProcessor.ts +0 -264
  258. package/src/processors/JsonCompressor.ts +0 -510
  259. package/src/processors/MinimalToolsMessageProcessor.ts +0 -113
  260. package/src/processors/TokenCompressor.ts +0 -620
  261. package/src/processors/ToolResponseCache.ts +0 -322
  262. package/src/processors/XmlToolCallProcessor.ts +0 -533
  263. package/src/processors/index.ts +0 -14
  264. package/src/processors/tools/boundedToolResponse.ts +0 -49
  265. package/src/processors/tools/grepToolResponse.ts +0 -230
  266. package/src/processors/tools/index.ts +0 -23
  267. package/src/processors/tools/jqToolResponse.ts +0 -159
  268. package/src/processors/tools/listStoredToolResponses.ts +0 -124
  269. package/src/processors/tools/tailToolResponse.ts +0 -148
  270. package/src/prompts/BasicCodeDocumenter.ts +0 -1
  271. package/src/prompts/BasicProjectDocumenter.ts +0 -1
  272. package/src/prompts/EmbeddingSeachHelper.ts +0 -1
  273. package/src/prompts/KnowhowConfigExamples.ts +0 -376
  274. package/src/prompts/index.ts +0 -9
  275. package/src/remotes.ts +0 -110
  276. package/src/server/index.ts +0 -16
  277. package/src/services/AgentService.ts +0 -134
  278. package/src/services/AgentSyncFs.ts +0 -775
  279. package/src/services/AgentSyncKnowhowWeb.ts +0 -389
  280. package/src/services/BehaviorsService.ts +0 -466
  281. package/src/services/DockerService.ts +0 -511
  282. package/src/services/EmbeddingService.ts +0 -427
  283. package/src/services/EmbeddingsService.ts +0 -73
  284. package/src/services/EventService.ts +0 -279
  285. package/src/services/ExtensionsService.ts +0 -25
  286. package/src/services/KnowhowClient.ts +0 -928
  287. package/src/services/LazyToolsService.ts +0 -210
  288. package/src/services/Mcp.ts +0 -727
  289. package/src/services/McpServer.ts +0 -155
  290. package/src/services/McpWebsocketTransport.ts +0 -87
  291. package/src/services/MediaProcessorService.ts +0 -669
  292. package/src/services/MessageProcessor.ts +0 -114
  293. package/src/services/MinimalToolsService.ts +0 -177
  294. package/src/services/RuntimeReloadService.ts +0 -31
  295. package/src/services/S3.ts +0 -61
  296. package/src/services/SessionManager.ts +0 -358
  297. package/src/services/SkillsService.ts +0 -822
  298. package/src/services/SyncedAgentWatcher.ts +0 -124
  299. package/src/services/SyncerService.ts +0 -191
  300. package/src/services/TaskRegistry.ts +0 -110
  301. package/src/services/Tools.ts +0 -580
  302. package/src/services/TracingService.ts +0 -116
  303. package/src/services/conversion/ConversionService.ts +0 -757
  304. package/src/services/conversion/index.ts +0 -2
  305. package/src/services/conversion/types.ts +0 -87
  306. package/src/services/flags.ts +0 -51
  307. package/src/services/index.ts +0 -117
  308. package/src/services/modules/computerUse.ts +0 -218
  309. package/src/services/modules/index.ts +0 -314
  310. package/src/services/modules/types.ts +0 -109
  311. package/src/services/types.ts +0 -60
  312. package/src/services/watchers/FsSyncer.ts +0 -199
  313. package/src/services/watchers/RemoteSyncer.ts +0 -196
  314. package/src/services/watchers/index.ts +0 -2
  315. package/src/tunnel.ts +0 -243
  316. package/src/types.ts +0 -282
  317. package/src/util/Trace.ts +0 -236
  318. package/src/utils/InputQueueManager.ts +0 -493
  319. package/src/utils/errors.ts +0 -0
  320. package/src/utils/http.ts +0 -150
  321. package/src/utils/index.ts +0 -111
  322. package/src/worker.ts +0 -696
  323. package/src/workerRegistry.ts +0 -152
  324. package/src/workers/auth/PasskeySetup.ts +0 -181
  325. package/src/workers/auth/WorkerPasskeyAuth.ts +0 -190
  326. package/src/workers/auth/WsMiddleware.ts +0 -99
  327. package/src/workers/auth/authMiddleware.ts +0 -104
  328. package/src/workers/auth/types.ts +0 -70
  329. package/src/workers/tools/getChallenge.ts +0 -33
  330. package/src/workers/tools/index.ts +0 -20
  331. package/src/workers/tools/listAllowedPorts.ts +0 -30
  332. package/src/workers/tools/lock.ts +0 -31
  333. package/src/workers/tools/reloadConfig.ts +0 -84
  334. package/src/workers/tools/unlock.ts +0 -116
  335. package/tests/XmlToolCallProcessor.test.ts +0 -468
  336. package/tests/agents/interrupt.test.ts +0 -200
  337. package/tests/agents/observe-base.test.ts +0 -183
  338. package/tests/agents/tools/connectAgent.test.ts +0 -138
  339. package/tests/agents/tools/observe.test.ts +0 -179
  340. package/tests/agents/tools/readFile.test.ts +0 -88
  341. package/tests/agents/tools/replyToParent.test.ts +0 -125
  342. package/tests/agents/tools/sendAgentMessage.test.ts +0 -99
  343. package/tests/agents/tools/waitForAgentCompleted.test.ts +0 -147
  344. package/tests/chat/detach-attach-rendering.test.ts +0 -315
  345. package/tests/clients/AIClient.test.ts +0 -668
  346. package/tests/clients/anthropic.test.ts +0 -202
  347. package/tests/clients/contextLimits.test.ts +0 -97
  348. package/tests/clients/fireworks.test.ts +0 -65
  349. package/tests/clients/openai.images.test.ts +0 -105
  350. package/tests/clients/pricing.test.ts +0 -206
  351. package/tests/clients/reasoningEffort.test.ts +0 -140
  352. package/tests/compressor/bigstring.test.ts +0 -450
  353. package/tests/compressor/bigstring.txt +0 -1
  354. package/tests/compressor/githubjson.txt +0 -1
  355. package/tests/compressor/toolResponseCache.test.ts +0 -304
  356. package/tests/compressor/usageBase64.json +0 -159
  357. package/tests/compressor/usageBase64.test.ts +0 -175
  358. package/tests/fixtures/fake-secret.txt +0 -1
  359. package/tests/manual/agent-events/run-test.ts +0 -203
  360. package/tests/manual/browser-login/README.md +0 -189
  361. package/tests/manual/browser-login/test_browser_login_basic.ts +0 -115
  362. package/tests/manual/browser-login/test_cli_integration.ts +0 -169
  363. package/tests/manual/browser-login/test_cross_platform_browser.ts +0 -186
  364. package/tests/manual/browser-login/test_error_scenarios.ts +0 -223
  365. package/tests/manual/cli/no-env.sh +0 -274
  366. package/tests/manual/clients/completions.json +0 -1151
  367. package/tests/manual/clients/completions.test.ts +0 -198
  368. package/tests/manual/file-edits/figma.test.ts +0 -3
  369. package/tests/manual/file-edits/fileblocks/readwrite.test.ts +0 -100
  370. package/tests/manual/file-edits/patching/input.txt +0 -145
  371. package/tests/manual/file-edits/patching/output.txt +0 -145
  372. package/tests/manual/file-edits/patching/patch.txt +0 -15
  373. package/tests/manual/file-edits/patching/unseen.txt +0 -80
  374. package/tests/manual/file-edits/patching.test.ts +0 -139
  375. package/tests/manual/modalities/README.md +0 -157
  376. package/tests/manual/modalities/google.modalities.test.ts +0 -335
  377. package/tests/manual/modalities/openai.modalities.test.ts +0 -329
  378. package/tests/manual/modalities/streaming.test.ts +0 -260
  379. package/tests/manual/modalities/xai.modalities.test.ts +0 -294
  380. package/tests/manual/test-concurrent-ask.ts +0 -43
  381. package/tests/manual/ycmd/debug_diagnostics_test.ts +0 -127
  382. package/tests/manual/ycmd/fixtures/debug_diagnostics.ts +0 -26
  383. package/tests/manual/ycmd/fixtures/file_change_test.ts +0 -17
  384. package/tests/manual/ycmd/minimal_advanced_test.ts +0 -108
  385. package/tests/manual/ycmd/simple_diagnostics_test.ts +0 -61
  386. package/tests/manual/ycmd/simple_test.ts +0 -74
  387. package/tests/manual/ycmd/test-typescript-sample.ts +0 -34
  388. package/tests/manual/ycmd/test_advanced_features.ts +0 -407
  389. package/tests/manual/ycmd/test_advanced_with_tools.ts +0 -320
  390. package/tests/manual/ycmd/test_comprehensive_typescript.ts +0 -179
  391. package/tests/manual/ycmd/test_diagnostics_file_changes.ts +0 -249
  392. package/tests/manual/ycmd/test_diagnostics_fix.ts +0 -99
  393. package/tests/manual/ycmd/test_diagnostics_simple.ts +0 -100
  394. package/tests/manual/ycmd/test_diagnostics_timing.ts +0 -120
  395. package/tests/manual/ycmd/test_discover_commands.ts +0 -310
  396. package/tests/manual/ycmd/test_endpoints.ts +0 -115
  397. package/tests/manual/ycmd/test_final_comprehensive.ts +0 -218
  398. package/tests/manual/ycmd/test_final_validation.ts +0 -150
  399. package/tests/manual/ycmd/test_implementation.js +0 -42
  400. package/tests/manual/ycmd/test_individual_ycmd_tool.ts +0 -39
  401. package/tests/manual/ycmd/test_server_manager.ts +0 -52
  402. package/tests/manual/ycmd/test_simple_debug.ts +0 -86
  403. package/tests/manual/ycmd/test_tsserver_workflow.js +0 -83
  404. package/tests/manual/ycmd/test_tsserver_workflow.ts +0 -122
  405. package/tests/manual/ycmd/test_typescript_simple.ts +0 -48
  406. package/tests/manual/ycmd/test_typescript_ycmd.ts +0 -105
  407. package/tests/manual/ycmd/test_workspace_config.ts +0 -90
  408. package/tests/manual/ycmd/test_ycmd_auto_start.ts +0 -137
  409. package/tests/manual/ycmd/test_ycmd_comprehensive.ts +0 -73
  410. package/tests/manual/ycmd/test_ycmd_connection.py +0 -10
  411. package/tests/manual/ycmd/test_ycmd_direct.ts +0 -142
  412. package/tests/manual/ycmd/test_ycmd_experiment.ts +0 -48
  413. package/tests/manual/ycmd/test_ycmd_final.ts +0 -200
  414. package/tests/manual/ycmd/test_ycmd_fixed.py +0 -18
  415. package/tests/manual/ycmd/test_ycmd_integration.ts +0 -112
  416. package/tests/manual/ycmd/test_ycmd_simple.ts +0 -45
  417. package/tests/manual/ycmd/test_ycmd_usage.py +0 -27
  418. package/tests/manual/ycmd/working_simple_test.ts +0 -134
  419. package/tests/patching/corrupted.test.ts +0 -78
  420. package/tests/patching/fixtures/transcript-mangles/agent-sync-fs-nested-catch.json +0 -9
  421. package/tests/patching/fixtures/transcript-mangles/automation-functions-crossed.json +0 -9
  422. package/tests/patching/fixtures/transcript-mangles/fruit-ninja-confirmed-retirement.json +0 -8
  423. package/tests/patching/imports.patch.txt +0 -11
  424. package/tests/patching/imports.test.ts +0 -43
  425. package/tests/patching/imports.txt +0 -11
  426. package/tests/patching/interface.patch.txt +0 -15
  427. package/tests/patching/interface.txt +0 -7
  428. package/tests/patching/patchFileOutput.test.ts +0 -328
  429. package/tests/patching/regression-2026.test.ts +0 -752
  430. package/tests/patching/transcriptMangleRegression.test.ts +0 -125
  431. package/tests/plugins/language/languagePlugin-content-triggers.test.ts +0 -346
  432. package/tests/plugins/language/languagePlugin-integration.test.ts +0 -471
  433. package/tests/plugins/language/languagePlugin.test.ts +0 -385
  434. package/tests/processes/managedProcessShim.test.ts +0 -59
  435. package/tests/processors/Base64ImageDetector.test.ts +0 -979
  436. package/tests/processors/CustomVariables.test.ts +0 -981
  437. package/tests/processors/CustomVariablesBenchmark.test.ts +0 -237
  438. package/tests/processors/HarmonyToolProcessor.test.ts +0 -490
  439. package/tests/processors/TokenCompressor.test.ts +0 -674
  440. package/tests/processors/ToolResponseCache.test.ts +0 -864
  441. package/tests/processors/tools/boundedRetrievalTools.test.ts +0 -68
  442. package/tests/processors/tools/grepToolResponse.test.ts +0 -159
  443. package/tests/services/ConversionService.test.ts +0 -154
  444. package/tests/services/DockerService.test.ts +0 -24
  445. package/tests/services/Tools.test.ts +0 -1738
  446. package/tests/services/ToolsService.setFunction.test.ts +0 -68
  447. package/tests/services/WorkerReloadConfig.test.ts +0 -141
  448. package/tests/test.spec.ts +0 -163
  449. package/tests/unit/InputQueueManager.test.ts +0 -174
  450. package/tests/unit/McpWebsocketTransport.test.ts +0 -56
  451. package/tests/unit/agents/historyRollback.test.ts +0 -53
  452. package/tests/unit/agents/tools/loadImageAsBase64.test.ts +0 -44
  453. package/tests/unit/auth/jwtStore.test.ts +0 -55
  454. package/tests/unit/auth/keyAuth.test.ts +0 -152
  455. package/tests/unit/auth/keyManager.test.ts +0 -130
  456. package/tests/unit/auth/registerIdentity.test.ts +0 -99
  457. package/tests/unit/chat/ToolCommandModule.test.ts +0 -71
  458. package/tests/unit/chat/historyCommandArgs.test.ts +0 -37
  459. package/tests/unit/clients/AIClient.test.ts +0 -454
  460. package/tests/unit/clients/anthropic.responseMetadata.test.ts +0 -81
  461. package/tests/unit/clients/attribution.test.ts +0 -185
  462. package/tests/unit/clients/http.responseMetadata.test.ts +0 -86
  463. package/tests/unit/clients/openai.responseMetadata.test.ts +0 -90
  464. package/tests/unit/clients/responseMetadata.test.ts +0 -123
  465. package/tests/unit/clients/withRetry.test.ts +0 -319
  466. package/tests/unit/commands/agents.test.ts +0 -111
  467. package/tests/unit/commands/github-credentials.test.ts +0 -210
  468. package/tests/unit/commands/misc.test.ts +0 -85
  469. package/tests/unit/commands/remote.test.ts +0 -79
  470. package/tests/unit/commands/sandbox.test.ts +0 -350
  471. package/tests/unit/hashes.test.ts +0 -23
  472. package/tests/unit/input-queue.test.ts +0 -80
  473. package/tests/unit/login.test.ts +0 -218
  474. package/tests/unit/modules/moduleLoading.test.ts +0 -305
  475. package/tests/unit/plugins/pluginLoading.test.ts +0 -97
  476. package/tests/unit/services/AgentSyncKnowhowWeb.test.ts +0 -38
  477. package/tests/unit/services/KnowhowClient.test.ts +0 -84
  478. package/tests/unit/services/LazyToolsService.test.ts +0 -53
  479. package/tests/unit/services/Mcp.test.ts +0 -56
  480. package/tests/unit/services/MinimalToolsService.test.ts +0 -424
  481. package/tests/unit/services/RuntimeReloadService.test.ts +0 -29
  482. package/tests/unit/services/SessionManager.test.ts +0 -43
  483. package/tests/unit/services/SyncedAgentWatcher.test.ts +0 -89
  484. package/tests/unit/services/SyncerService.test.ts +0 -45
  485. package/tests/unit/tunnel.test.ts +0 -51
  486. package/tests/unit/util/Trace.test.ts +0 -119
  487. package/tests/unit/utils/http.test.ts +0 -43
  488. package/ts_build/tests/XmlToolCallProcessor.test.d.ts +0 -1
  489. package/ts_build/tests/XmlToolCallProcessor.test.js +0 -376
  490. package/ts_build/tests/XmlToolCallProcessor.test.js.map +0 -1
  491. package/ts_build/tests/agents/interrupt.test.d.ts +0 -14
  492. package/ts_build/tests/agents/interrupt.test.js +0 -136
  493. package/ts_build/tests/agents/interrupt.test.js.map +0 -1
  494. package/ts_build/tests/agents/observe-base.test.d.ts +0 -1
  495. package/ts_build/tests/agents/observe-base.test.js +0 -149
  496. package/ts_build/tests/agents/observe-base.test.js.map +0 -1
  497. package/ts_build/tests/agents/tools/connectAgent.test.d.ts +0 -1
  498. package/ts_build/tests/agents/tools/connectAgent.test.js +0 -142
  499. package/ts_build/tests/agents/tools/connectAgent.test.js.map +0 -1
  500. package/ts_build/tests/agents/tools/observe.test.d.ts +0 -1
  501. package/ts_build/tests/agents/tools/observe.test.js +0 -148
  502. package/ts_build/tests/agents/tools/observe.test.js.map +0 -1
  503. package/ts_build/tests/agents/tools/readFile.test.d.ts +0 -1
  504. package/ts_build/tests/agents/tools/readFile.test.js +0 -90
  505. package/ts_build/tests/agents/tools/readFile.test.js.map +0 -1
  506. package/ts_build/tests/agents/tools/replyToParent.test.d.ts +0 -1
  507. package/ts_build/tests/agents/tools/replyToParent.test.js +0 -116
  508. package/ts_build/tests/agents/tools/replyToParent.test.js.map +0 -1
  509. package/ts_build/tests/agents/tools/sendAgentMessage.test.d.ts +0 -1
  510. package/ts_build/tests/agents/tools/sendAgentMessage.test.js +0 -112
  511. package/ts_build/tests/agents/tools/sendAgentMessage.test.js.map +0 -1
  512. package/ts_build/tests/agents/tools/waitForAgentCompleted.test.d.ts +0 -1
  513. package/ts_build/tests/agents/tools/waitForAgentCompleted.test.js +0 -147
  514. package/ts_build/tests/agents/tools/waitForAgentCompleted.test.js.map +0 -1
  515. package/ts_build/tests/chat/detach-attach-rendering.test.d.ts +0 -1
  516. package/ts_build/tests/chat/detach-attach-rendering.test.js +0 -168
  517. package/ts_build/tests/chat/detach-attach-rendering.test.js.map +0 -1
  518. package/ts_build/tests/clients/AIClient.test.d.ts +0 -1
  519. package/ts_build/tests/clients/AIClient.test.js +0 -483
  520. package/ts_build/tests/clients/AIClient.test.js.map +0 -1
  521. package/ts_build/tests/clients/anthropic.test.d.ts +0 -1
  522. package/ts_build/tests/clients/anthropic.test.js +0 -159
  523. package/ts_build/tests/clients/anthropic.test.js.map +0 -1
  524. package/ts_build/tests/clients/contextLimits.test.d.ts +0 -1
  525. package/ts_build/tests/clients/contextLimits.test.js +0 -69
  526. package/ts_build/tests/clients/contextLimits.test.js.map +0 -1
  527. package/ts_build/tests/clients/fireworks.test.d.ts +0 -1
  528. package/ts_build/tests/clients/fireworks.test.js +0 -65
  529. package/ts_build/tests/clients/fireworks.test.js.map +0 -1
  530. package/ts_build/tests/clients/openai.images.test.d.ts +0 -1
  531. package/ts_build/tests/clients/openai.images.test.js +0 -94
  532. package/ts_build/tests/clients/openai.images.test.js.map +0 -1
  533. package/ts_build/tests/clients/pricing.test.d.ts +0 -1
  534. package/ts_build/tests/clients/pricing.test.js +0 -124
  535. package/ts_build/tests/clients/pricing.test.js.map +0 -1
  536. package/ts_build/tests/clients/reasoningEffort.test.d.ts +0 -1
  537. package/ts_build/tests/clients/reasoningEffort.test.js +0 -116
  538. package/ts_build/tests/clients/reasoningEffort.test.js.map +0 -1
  539. package/ts_build/tests/compressor/bigstring.test.d.ts +0 -1
  540. package/ts_build/tests/compressor/bigstring.test.js +0 -275
  541. package/ts_build/tests/compressor/bigstring.test.js.map +0 -1
  542. package/ts_build/tests/compressor/toolResponseCache.test.d.ts +0 -1
  543. package/ts_build/tests/compressor/toolResponseCache.test.js +0 -250
  544. package/ts_build/tests/compressor/toolResponseCache.test.js.map +0 -1
  545. package/ts_build/tests/compressor/usageBase64.test.d.ts +0 -1
  546. package/ts_build/tests/compressor/usageBase64.test.js +0 -109
  547. package/ts_build/tests/compressor/usageBase64.test.js.map +0 -1
  548. package/ts_build/tests/manual/agent-events/run-test.d.ts +0 -2
  549. package/ts_build/tests/manual/agent-events/run-test.js +0 -148
  550. package/ts_build/tests/manual/agent-events/run-test.js.map +0 -1
  551. package/ts_build/tests/manual/browser-login/test_browser_login_basic.d.ts +0 -2
  552. package/ts_build/tests/manual/browser-login/test_browser_login_basic.js +0 -118
  553. package/ts_build/tests/manual/browser-login/test_browser_login_basic.js.map +0 -1
  554. package/ts_build/tests/manual/browser-login/test_cli_integration.d.ts +0 -2
  555. package/ts_build/tests/manual/browser-login/test_cli_integration.js +0 -163
  556. package/ts_build/tests/manual/browser-login/test_cli_integration.js.map +0 -1
  557. package/ts_build/tests/manual/browser-login/test_cross_platform_browser.d.ts +0 -2
  558. package/ts_build/tests/manual/browser-login/test_cross_platform_browser.js +0 -169
  559. package/ts_build/tests/manual/browser-login/test_cross_platform_browser.js.map +0 -1
  560. package/ts_build/tests/manual/browser-login/test_error_scenarios.d.ts +0 -2
  561. package/ts_build/tests/manual/browser-login/test_error_scenarios.js +0 -207
  562. package/ts_build/tests/manual/browser-login/test_error_scenarios.js.map +0 -1
  563. package/ts_build/tests/manual/clients/completions.test.d.ts +0 -1
  564. package/ts_build/tests/manual/clients/completions.test.js +0 -151
  565. package/ts_build/tests/manual/clients/completions.test.js.map +0 -1
  566. package/ts_build/tests/manual/file-edits/figma.test.d.ts +0 -0
  567. package/ts_build/tests/manual/file-edits/figma.test.js +0 -2
  568. package/ts_build/tests/manual/file-edits/figma.test.js.map +0 -1
  569. package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.d.ts +0 -1
  570. package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.js +0 -110
  571. package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.js.map +0 -1
  572. package/ts_build/tests/manual/file-edits/patching.test.d.ts +0 -1
  573. package/ts_build/tests/manual/file-edits/patching.test.js +0 -129
  574. package/ts_build/tests/manual/file-edits/patching.test.js.map +0 -1
  575. package/ts_build/tests/manual/modalities/google.modalities.test.d.ts +0 -1
  576. package/ts_build/tests/manual/modalities/google.modalities.test.js +0 -262
  577. package/ts_build/tests/manual/modalities/google.modalities.test.js.map +0 -1
  578. package/ts_build/tests/manual/modalities/openai.modalities.test.d.ts +0 -1
  579. package/ts_build/tests/manual/modalities/openai.modalities.test.js +0 -262
  580. package/ts_build/tests/manual/modalities/openai.modalities.test.js.map +0 -1
  581. package/ts_build/tests/manual/modalities/streaming.test.d.ts +0 -1
  582. package/ts_build/tests/manual/modalities/streaming.test.js +0 -216
  583. package/ts_build/tests/manual/modalities/streaming.test.js.map +0 -1
  584. package/ts_build/tests/manual/modalities/xai.modalities.test.d.ts +0 -1
  585. package/ts_build/tests/manual/modalities/xai.modalities.test.js +0 -219
  586. package/ts_build/tests/manual/modalities/xai.modalities.test.js.map +0 -1
  587. package/ts_build/tests/manual/test-concurrent-ask.d.ts +0 -1
  588. package/ts_build/tests/manual/test-concurrent-ask.js +0 -22
  589. package/ts_build/tests/manual/test-concurrent-ask.js.map +0 -1
  590. package/ts_build/tests/manual/ycmd/debug_diagnostics_test.d.ts +0 -1
  591. package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js +0 -124
  592. package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js.map +0 -1
  593. package/ts_build/tests/manual/ycmd/minimal_advanced_test.d.ts +0 -2
  594. package/ts_build/tests/manual/ycmd/minimal_advanced_test.js +0 -114
  595. package/ts_build/tests/manual/ycmd/minimal_advanced_test.js.map +0 -1
  596. package/ts_build/tests/manual/ycmd/simple_diagnostics_test.d.ts +0 -1
  597. package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js +0 -84
  598. package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js.map +0 -1
  599. package/ts_build/tests/manual/ycmd/simple_test.d.ts +0 -2
  600. package/ts_build/tests/manual/ycmd/simple_test.js +0 -92
  601. package/ts_build/tests/manual/ycmd/simple_test.js.map +0 -1
  602. package/ts_build/tests/manual/ycmd/test-typescript-sample.d.ts +0 -14
  603. package/ts_build/tests/manual/ycmd/test-typescript-sample.js +0 -20
  604. package/ts_build/tests/manual/ycmd/test-typescript-sample.js.map +0 -1
  605. package/ts_build/tests/manual/ycmd/test_advanced_features.d.ts +0 -2
  606. package/ts_build/tests/manual/ycmd/test_advanced_features.js +0 -306
  607. package/ts_build/tests/manual/ycmd/test_advanced_features.js.map +0 -1
  608. package/ts_build/tests/manual/ycmd/test_advanced_with_tools.d.ts +0 -3
  609. package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js +0 -271
  610. package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js.map +0 -1
  611. package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.d.ts +0 -2
  612. package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js +0 -196
  613. package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js.map +0 -1
  614. package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.d.ts +0 -1
  615. package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js +0 -184
  616. package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js.map +0 -1
  617. package/ts_build/tests/manual/ycmd/test_diagnostics_fix.d.ts +0 -2
  618. package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js +0 -116
  619. package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js.map +0 -1
  620. package/ts_build/tests/manual/ycmd/test_diagnostics_simple.d.ts +0 -1
  621. package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js +0 -114
  622. package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js.map +0 -1
  623. package/ts_build/tests/manual/ycmd/test_diagnostics_timing.d.ts +0 -1
  624. package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js +0 -129
  625. package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js.map +0 -1
  626. package/ts_build/tests/manual/ycmd/test_discover_commands.d.ts +0 -2
  627. package/ts_build/tests/manual/ycmd/test_discover_commands.js +0 -252
  628. package/ts_build/tests/manual/ycmd/test_discover_commands.js.map +0 -1
  629. package/ts_build/tests/manual/ycmd/test_endpoints.d.ts +0 -2
  630. package/ts_build/tests/manual/ycmd/test_endpoints.js +0 -130
  631. package/ts_build/tests/manual/ycmd/test_endpoints.js.map +0 -1
  632. package/ts_build/tests/manual/ycmd/test_final_comprehensive.d.ts +0 -2
  633. package/ts_build/tests/manual/ycmd/test_final_comprehensive.js +0 -231
  634. package/ts_build/tests/manual/ycmd/test_final_comprehensive.js.map +0 -1
  635. package/ts_build/tests/manual/ycmd/test_final_validation.d.ts +0 -2
  636. package/ts_build/tests/manual/ycmd/test_final_validation.js +0 -170
  637. package/ts_build/tests/manual/ycmd/test_final_validation.js.map +0 -1
  638. package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.d.ts +0 -2
  639. package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js +0 -37
  640. package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js.map +0 -1
  641. package/ts_build/tests/manual/ycmd/test_server_manager.d.ts +0 -1
  642. package/ts_build/tests/manual/ycmd/test_server_manager.js +0 -38
  643. package/ts_build/tests/manual/ycmd/test_server_manager.js.map +0 -1
  644. package/ts_build/tests/manual/ycmd/test_simple_debug.d.ts +0 -2
  645. package/ts_build/tests/manual/ycmd/test_simple_debug.js +0 -109
  646. package/ts_build/tests/manual/ycmd/test_simple_debug.js.map +0 -1
  647. package/ts_build/tests/manual/ycmd/test_tsserver_workflow.d.ts +0 -1
  648. package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js +0 -138
  649. package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js.map +0 -1
  650. package/ts_build/tests/manual/ycmd/test_typescript_simple.d.ts +0 -1
  651. package/ts_build/tests/manual/ycmd/test_typescript_simple.js +0 -76
  652. package/ts_build/tests/manual/ycmd/test_typescript_simple.js.map +0 -1
  653. package/ts_build/tests/manual/ycmd/test_typescript_ycmd.d.ts +0 -1
  654. package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js +0 -115
  655. package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js.map +0 -1
  656. package/ts_build/tests/manual/ycmd/test_workspace_config.d.ts +0 -1
  657. package/ts_build/tests/manual/ycmd/test_workspace_config.js +0 -99
  658. package/ts_build/tests/manual/ycmd/test_workspace_config.js.map +0 -1
  659. package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.d.ts +0 -2
  660. package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js +0 -140
  661. package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js.map +0 -1
  662. package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.d.ts +0 -1
  663. package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js +0 -93
  664. package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js.map +0 -1
  665. package/ts_build/tests/manual/ycmd/test_ycmd_direct.d.ts +0 -2
  666. package/ts_build/tests/manual/ycmd/test_ycmd_direct.js +0 -159
  667. package/ts_build/tests/manual/ycmd/test_ycmd_direct.js.map +0 -1
  668. package/ts_build/tests/manual/ycmd/test_ycmd_experiment.d.ts +0 -15
  669. package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js +0 -68
  670. package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js.map +0 -1
  671. package/ts_build/tests/manual/ycmd/test_ycmd_final.d.ts +0 -2
  672. package/ts_build/tests/manual/ycmd/test_ycmd_final.js +0 -205
  673. package/ts_build/tests/manual/ycmd/test_ycmd_final.js.map +0 -1
  674. package/ts_build/tests/manual/ycmd/test_ycmd_integration.d.ts +0 -3
  675. package/ts_build/tests/manual/ycmd/test_ycmd_integration.js +0 -119
  676. package/ts_build/tests/manual/ycmd/test_ycmd_integration.js.map +0 -1
  677. package/ts_build/tests/manual/ycmd/test_ycmd_simple.d.ts +0 -2
  678. package/ts_build/tests/manual/ycmd/test_ycmd_simple.js +0 -36
  679. package/ts_build/tests/manual/ycmd/test_ycmd_simple.js.map +0 -1
  680. package/ts_build/tests/manual/ycmd/working_simple_test.d.ts +0 -2
  681. package/ts_build/tests/manual/ycmd/working_simple_test.js +0 -144
  682. package/ts_build/tests/manual/ycmd/working_simple_test.js.map +0 -1
  683. package/ts_build/tests/patching/corrupted.test.d.ts +0 -1
  684. package/ts_build/tests/patching/corrupted.test.js +0 -53
  685. package/ts_build/tests/patching/corrupted.test.js.map +0 -1
  686. package/ts_build/tests/patching/imports.test.d.ts +0 -1
  687. package/ts_build/tests/patching/imports.test.js +0 -71
  688. package/ts_build/tests/patching/imports.test.js.map +0 -1
  689. package/ts_build/tests/patching/patchFileOutput.test.d.ts +0 -1
  690. package/ts_build/tests/patching/patchFileOutput.test.js +0 -269
  691. package/ts_build/tests/patching/patchFileOutput.test.js.map +0 -1
  692. package/ts_build/tests/patching/regression-2026.test.d.ts +0 -1
  693. package/ts_build/tests/patching/regression-2026.test.js +0 -528
  694. package/ts_build/tests/patching/regression-2026.test.js.map +0 -1
  695. package/ts_build/tests/patching/transcriptMangleRegression.test.d.ts +0 -1
  696. package/ts_build/tests/patching/transcriptMangleRegression.test.js +0 -104
  697. package/ts_build/tests/patching/transcriptMangleRegression.test.js.map +0 -1
  698. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.d.ts +0 -1
  699. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js +0 -294
  700. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js.map +0 -1
  701. package/ts_build/tests/plugins/language/languagePlugin-integration.test.d.ts +0 -1
  702. package/ts_build/tests/plugins/language/languagePlugin-integration.test.js +0 -343
  703. package/ts_build/tests/plugins/language/languagePlugin-integration.test.js.map +0 -1
  704. package/ts_build/tests/plugins/language/languagePlugin.test.d.ts +0 -1
  705. package/ts_build/tests/plugins/language/languagePlugin.test.js +0 -315
  706. package/ts_build/tests/plugins/language/languagePlugin.test.js.map +0 -1
  707. package/ts_build/tests/processes/managedProcessShim.test.d.ts +0 -1
  708. package/ts_build/tests/processes/managedProcessShim.test.js +0 -92
  709. package/ts_build/tests/processes/managedProcessShim.test.js.map +0 -1
  710. package/ts_build/tests/processors/Base64ImageDetector.test.d.ts +0 -1
  711. package/ts_build/tests/processors/Base64ImageDetector.test.js +0 -792
  712. package/ts_build/tests/processors/Base64ImageDetector.test.js.map +0 -1
  713. package/ts_build/tests/processors/CustomVariables.test.d.ts +0 -1
  714. package/ts_build/tests/processors/CustomVariables.test.js +0 -764
  715. package/ts_build/tests/processors/CustomVariables.test.js.map +0 -1
  716. package/ts_build/tests/processors/CustomVariablesBenchmark.test.d.ts +0 -1
  717. package/ts_build/tests/processors/CustomVariablesBenchmark.test.js +0 -179
  718. package/ts_build/tests/processors/CustomVariablesBenchmark.test.js.map +0 -1
  719. package/ts_build/tests/processors/HarmonyToolProcessor.test.d.ts +0 -1
  720. package/ts_build/tests/processors/HarmonyToolProcessor.test.js +0 -382
  721. package/ts_build/tests/processors/HarmonyToolProcessor.test.js.map +0 -1
  722. package/ts_build/tests/processors/TokenCompressor.test.d.ts +0 -1
  723. package/ts_build/tests/processors/TokenCompressor.test.js +0 -473
  724. package/ts_build/tests/processors/TokenCompressor.test.js.map +0 -1
  725. package/ts_build/tests/processors/ToolResponseCache.test.d.ts +0 -1
  726. package/ts_build/tests/processors/ToolResponseCache.test.js +0 -657
  727. package/ts_build/tests/processors/ToolResponseCache.test.js.map +0 -1
  728. package/ts_build/tests/processors/tools/boundedRetrievalTools.test.d.ts +0 -1
  729. package/ts_build/tests/processors/tools/boundedRetrievalTools.test.js +0 -57
  730. package/ts_build/tests/processors/tools/boundedRetrievalTools.test.js.map +0 -1
  731. package/ts_build/tests/processors/tools/grepToolResponse.test.d.ts +0 -1
  732. package/ts_build/tests/processors/tools/grepToolResponse.test.js +0 -77
  733. package/ts_build/tests/processors/tools/grepToolResponse.test.js.map +0 -1
  734. package/ts_build/tests/services/ConversionService.test.d.ts +0 -1
  735. package/ts_build/tests/services/ConversionService.test.js +0 -154
  736. package/ts_build/tests/services/ConversionService.test.js.map +0 -1
  737. package/ts_build/tests/services/DockerService.test.d.ts +0 -1
  738. package/ts_build/tests/services/DockerService.test.js +0 -22
  739. package/ts_build/tests/services/DockerService.test.js.map +0 -1
  740. package/ts_build/tests/services/Tools.test.d.ts +0 -1
  741. package/ts_build/tests/services/Tools.test.js +0 -1365
  742. package/ts_build/tests/services/Tools.test.js.map +0 -1
  743. package/ts_build/tests/services/ToolsService.setFunction.test.d.ts +0 -1
  744. package/ts_build/tests/services/ToolsService.setFunction.test.js +0 -51
  745. package/ts_build/tests/services/ToolsService.setFunction.test.js.map +0 -1
  746. package/ts_build/tests/services/WorkerReloadConfig.test.d.ts +0 -1
  747. package/ts_build/tests/services/WorkerReloadConfig.test.js +0 -86
  748. package/ts_build/tests/services/WorkerReloadConfig.test.js.map +0 -1
  749. package/ts_build/tests/test.spec.d.ts +0 -1
  750. package/ts_build/tests/test.spec.js +0 -139
  751. package/ts_build/tests/test.spec.js.map +0 -1
  752. package/ts_build/tests/unit/InputQueueManager.test.d.ts +0 -1
  753. package/ts_build/tests/unit/InputQueueManager.test.js +0 -104
  754. package/ts_build/tests/unit/InputQueueManager.test.js.map +0 -1
  755. package/ts_build/tests/unit/McpWebsocketTransport.test.d.ts +0 -1
  756. package/ts_build/tests/unit/McpWebsocketTransport.test.js +0 -47
  757. package/ts_build/tests/unit/McpWebsocketTransport.test.js.map +0 -1
  758. package/ts_build/tests/unit/agents/historyRollback.test.d.ts +0 -1
  759. package/ts_build/tests/unit/agents/historyRollback.test.js +0 -42
  760. package/ts_build/tests/unit/agents/historyRollback.test.js.map +0 -1
  761. package/ts_build/tests/unit/agents/tools/loadImageAsBase64.test.d.ts +0 -1
  762. package/ts_build/tests/unit/agents/tools/loadImageAsBase64.test.js +0 -67
  763. package/ts_build/tests/unit/agents/tools/loadImageAsBase64.test.js.map +0 -1
  764. package/ts_build/tests/unit/auth/jwtStore.test.d.ts +0 -1
  765. package/ts_build/tests/unit/auth/jwtStore.test.js +0 -46
  766. package/ts_build/tests/unit/auth/jwtStore.test.js.map +0 -1
  767. package/ts_build/tests/unit/auth/keyAuth.test.d.ts +0 -1
  768. package/ts_build/tests/unit/auth/keyAuth.test.js +0 -118
  769. package/ts_build/tests/unit/auth/keyAuth.test.js.map +0 -1
  770. package/ts_build/tests/unit/auth/keyManager.test.d.ts +0 -1
  771. package/ts_build/tests/unit/auth/keyManager.test.js +0 -96
  772. package/ts_build/tests/unit/auth/keyManager.test.js.map +0 -1
  773. package/ts_build/tests/unit/auth/registerIdentity.test.d.ts +0 -1
  774. package/ts_build/tests/unit/auth/registerIdentity.test.js +0 -92
  775. package/ts_build/tests/unit/auth/registerIdentity.test.js.map +0 -1
  776. package/ts_build/tests/unit/chat/ToolCommandModule.test.d.ts +0 -1
  777. package/ts_build/tests/unit/chat/ToolCommandModule.test.js +0 -61
  778. package/ts_build/tests/unit/chat/ToolCommandModule.test.js.map +0 -1
  779. package/ts_build/tests/unit/chat/historyCommandArgs.test.d.ts +0 -1
  780. package/ts_build/tests/unit/chat/historyCommandArgs.test.js +0 -29
  781. package/ts_build/tests/unit/chat/historyCommandArgs.test.js.map +0 -1
  782. package/ts_build/tests/unit/clients/AIClient.test.d.ts +0 -1
  783. package/ts_build/tests/unit/clients/AIClient.test.js +0 -342
  784. package/ts_build/tests/unit/clients/AIClient.test.js.map +0 -1
  785. package/ts_build/tests/unit/clients/anthropic.responseMetadata.test.d.ts +0 -1
  786. package/ts_build/tests/unit/clients/anthropic.responseMetadata.test.js +0 -77
  787. package/ts_build/tests/unit/clients/anthropic.responseMetadata.test.js.map +0 -1
  788. package/ts_build/tests/unit/clients/attribution.test.d.ts +0 -1
  789. package/ts_build/tests/unit/clients/attribution.test.js +0 -153
  790. package/ts_build/tests/unit/clients/attribution.test.js.map +0 -1
  791. package/ts_build/tests/unit/clients/http.responseMetadata.test.d.ts +0 -1
  792. package/ts_build/tests/unit/clients/http.responseMetadata.test.js +0 -77
  793. package/ts_build/tests/unit/clients/http.responseMetadata.test.js.map +0 -1
  794. package/ts_build/tests/unit/clients/openai.responseMetadata.test.d.ts +0 -1
  795. package/ts_build/tests/unit/clients/openai.responseMetadata.test.js +0 -86
  796. package/ts_build/tests/unit/clients/openai.responseMetadata.test.js.map +0 -1
  797. package/ts_build/tests/unit/clients/responseMetadata.test.d.ts +0 -1
  798. package/ts_build/tests/unit/clients/responseMetadata.test.js +0 -96
  799. package/ts_build/tests/unit/clients/responseMetadata.test.js.map +0 -1
  800. package/ts_build/tests/unit/clients/withRetry.test.d.ts +0 -1
  801. package/ts_build/tests/unit/clients/withRetry.test.js +0 -225
  802. package/ts_build/tests/unit/clients/withRetry.test.js.map +0 -1
  803. package/ts_build/tests/unit/commands/agents.test.d.ts +0 -1
  804. package/ts_build/tests/unit/commands/agents.test.js +0 -119
  805. package/ts_build/tests/unit/commands/agents.test.js.map +0 -1
  806. package/ts_build/tests/unit/commands/github-credentials.test.d.ts +0 -1
  807. package/ts_build/tests/unit/commands/github-credentials.test.js +0 -145
  808. package/ts_build/tests/unit/commands/github-credentials.test.js.map +0 -1
  809. package/ts_build/tests/unit/commands/misc.test.d.ts +0 -1
  810. package/ts_build/tests/unit/commands/misc.test.js +0 -70
  811. package/ts_build/tests/unit/commands/misc.test.js.map +0 -1
  812. package/ts_build/tests/unit/commands/remote.test.d.ts +0 -1
  813. package/ts_build/tests/unit/commands/remote.test.js +0 -70
  814. package/ts_build/tests/unit/commands/remote.test.js.map +0 -1
  815. package/ts_build/tests/unit/commands/sandbox.test.d.ts +0 -1
  816. package/ts_build/tests/unit/commands/sandbox.test.js +0 -258
  817. package/ts_build/tests/unit/commands/sandbox.test.js.map +0 -1
  818. package/ts_build/tests/unit/hashes.test.d.ts +0 -1
  819. package/ts_build/tests/unit/hashes.test.js +0 -25
  820. package/ts_build/tests/unit/hashes.test.js.map +0 -1
  821. package/ts_build/tests/unit/input-queue.test.d.ts +0 -1
  822. package/ts_build/tests/unit/input-queue.test.js +0 -32
  823. package/ts_build/tests/unit/input-queue.test.js.map +0 -1
  824. package/ts_build/tests/unit/login.test.d.ts +0 -1
  825. package/ts_build/tests/unit/login.test.js +0 -166
  826. package/ts_build/tests/unit/login.test.js.map +0 -1
  827. package/ts_build/tests/unit/modules/moduleLoading.test.d.ts +0 -1
  828. package/ts_build/tests/unit/modules/moduleLoading.test.js +0 -272
  829. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +0 -1
  830. package/ts_build/tests/unit/plugins/pluginLoading.test.d.ts +0 -1
  831. package/ts_build/tests/unit/plugins/pluginLoading.test.js +0 -117
  832. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +0 -1
  833. package/ts_build/tests/unit/services/AgentSyncKnowhowWeb.test.d.ts +0 -1
  834. package/ts_build/tests/unit/services/AgentSyncKnowhowWeb.test.js +0 -32
  835. package/ts_build/tests/unit/services/AgentSyncKnowhowWeb.test.js.map +0 -1
  836. package/ts_build/tests/unit/services/KnowhowClient.test.d.ts +0 -1
  837. package/ts_build/tests/unit/services/KnowhowClient.test.js +0 -69
  838. package/ts_build/tests/unit/services/KnowhowClient.test.js.map +0 -1
  839. package/ts_build/tests/unit/services/LazyToolsService.test.d.ts +0 -1
  840. package/ts_build/tests/unit/services/LazyToolsService.test.js +0 -47
  841. package/ts_build/tests/unit/services/LazyToolsService.test.js.map +0 -1
  842. package/ts_build/tests/unit/services/Mcp.test.d.ts +0 -1
  843. package/ts_build/tests/unit/services/Mcp.test.js +0 -45
  844. package/ts_build/tests/unit/services/Mcp.test.js.map +0 -1
  845. package/ts_build/tests/unit/services/MinimalToolsService.test.d.ts +0 -1
  846. package/ts_build/tests/unit/services/MinimalToolsService.test.js +0 -320
  847. package/ts_build/tests/unit/services/MinimalToolsService.test.js.map +0 -1
  848. package/ts_build/tests/unit/services/RuntimeReloadService.test.d.ts +0 -1
  849. package/ts_build/tests/unit/services/RuntimeReloadService.test.js +0 -26
  850. package/ts_build/tests/unit/services/RuntimeReloadService.test.js.map +0 -1
  851. package/ts_build/tests/unit/services/SessionManager.test.d.ts +0 -1
  852. package/ts_build/tests/unit/services/SessionManager.test.js +0 -72
  853. package/ts_build/tests/unit/services/SessionManager.test.js.map +0 -1
  854. package/ts_build/tests/unit/services/SyncedAgentWatcher.test.d.ts +0 -1
  855. package/ts_build/tests/unit/services/SyncedAgentWatcher.test.js +0 -78
  856. package/ts_build/tests/unit/services/SyncedAgentWatcher.test.js.map +0 -1
  857. package/ts_build/tests/unit/services/SyncerService.test.d.ts +0 -1
  858. package/ts_build/tests/unit/services/SyncerService.test.js +0 -40
  859. package/ts_build/tests/unit/services/SyncerService.test.js.map +0 -1
  860. package/ts_build/tests/unit/tunnel.test.d.ts +0 -1
  861. package/ts_build/tests/unit/tunnel.test.js +0 -47
  862. package/ts_build/tests/unit/tunnel.test.js.map +0 -1
  863. package/ts_build/tests/unit/util/Trace.test.d.ts +0 -1
  864. package/ts_build/tests/unit/util/Trace.test.js +0 -107
  865. package/ts_build/tests/unit/util/Trace.test.js.map +0 -1
  866. package/ts_build/tests/unit/utils/http.test.d.ts +0 -1
  867. package/ts_build/tests/unit/utils/http.test.js +0 -69
  868. package/ts_build/tests/unit/utils/http.test.js.map +0 -1
  869. package/tsconfig.json +0 -34
  870. package/tslint.json +0 -11
@@ -1,1037 +0,0 @@
1
- /**
2
- * `knowhow agents` — CLI commands for inspecting running / recent agent tasks.
3
- *
4
- * Subcommands:
5
- * knowhow agents list — list all known agent task dirs + status + last-modified
6
- * knowhow agents status <taskId> — one-line summary (status, last tool, cost, elapsed)
7
- * knowhow agents tail <taskId> — print last N messages; without -f behaves like read-only attach
8
- * knowhow agents attach <taskId> — open the full knowhow chat interface attached to the agent
9
- * knowhow agents resume <taskId> — resume a task, optionally rolling back interactions
10
- * knowhow agents fork <taskId> — branch a task's history into a new task
11
- *
12
- * Both `status` and `tail` accept:
13
- * - A full task ID
14
- * - A partial task ID (substring match)
15
- * - `-i <number>` / `--index <number>` to select by row number from `agents list`
16
- *
17
- * Data source: .knowhow/processes/agents/<taskId>/metadata.json (written by AgentSyncFs)
18
- * and .knowhow/chats/sessions/<taskId>.json (written by SessionManager).
19
- */
20
-
21
- import { Command } from "commander";
22
- import * as fs from "fs";
23
- import * as path from "path";
24
- import { AgentModule } from "../chat/modules/AgentModule";
25
- import { startChat } from "../chat";
26
- import { PlainRenderer } from "../chat/renderer/PlainRenderer";
27
- import { loadRenderer } from "../chat/renderer/loadRenderer";
28
- import {
29
- CompletionOptions,
30
- isReasoningEffort,
31
- REASONING_EFFORTS,
32
- } from "../clients/types";
33
- import { getConfig } from "../config";
34
-
35
- const AGENTS_DIR = path.join(".knowhow", "processes", "agents");
36
- const SESSIONS_DIR = path.join(".knowhow", "chats", "sessions");
37
-
38
- const TERMINAL_STATUSES = new Set([
39
- "completed",
40
- "failed",
41
- "killed",
42
- "error",
43
- "done",
44
- ]);
45
- const ACTIVE_STATUSES = new Set(["running", "paused"]);
46
- // Older task records did not persist a pid. After this grace period, report
47
- // them as unverifiable rather than continuing to claim they are running.
48
- const UNVERIFIED_TASK_GRACE_MS = 5 * 60 * 1000;
49
-
50
- // ---------------------------------------------------------------------------
51
- // Helpers
52
- // ---------------------------------------------------------------------------
53
-
54
- function readJson(filePath: string): any | null {
55
- try {
56
- return JSON.parse(fs.readFileSync(filePath, "utf-8"));
57
- } catch {
58
- return null;
59
- }
60
- }
61
-
62
- function agentTaskIds(): string[] {
63
- if (!fs.existsSync(AGENTS_DIR)) return [];
64
- return fs
65
- .readdirSync(AGENTS_DIR, { withFileTypes: true })
66
- .filter((e) => e.isDirectory())
67
- .map((e) => e.name);
68
- }
69
-
70
- function loadMeta(taskId: string): any | null {
71
- return readJson(path.join(AGENTS_DIR, taskId, "metadata.json"));
72
- }
73
-
74
- function loadStatus(taskId: string): string {
75
- const f = path.join(AGENTS_DIR, taskId, "status.txt");
76
- try {
77
- return fs.readFileSync(f, "utf-8").trim();
78
- } catch {
79
- return "unknown";
80
- }
81
- }
82
-
83
- function pidAlive(pid: number): boolean {
84
- try {
85
- process.kill(pid, 0);
86
- return true;
87
- } catch (error: any) {
88
- // EPERM means the process exists but cannot be signalled by this user.
89
- return error?.code === "EPERM";
90
- }
91
- }
92
-
93
- /**
94
- * Get the effective status, reconciling persisted state with process liveness.
95
- * An agent can be terminated before AgentSyncFs gets a chance to finalize its
96
- * files; those records must not remain "running" forever.
97
- */
98
- export function getStatus(taskId: string, meta: any | null): string {
99
- const persisted = meta?.status || loadStatus(taskId) || "unknown";
100
- if (TERMINAL_STATUSES.has(persisted)) return persisted;
101
- if (meta?.inProgress === false) return "completed";
102
- if (!ACTIVE_STATUSES.has(persisted)) return persisted;
103
-
104
- const pid = meta?.pid ?? meta?.processId;
105
- if (typeof pid === "number") {
106
- return pidAlive(pid) ? persisted : "failed";
107
- }
108
-
109
- const lastKnownTime = meta?.lastUpdate ?? meta?.startTime;
110
- const lastKnownMs = lastKnownTime ? new Date(lastKnownTime).getTime() : NaN;
111
- if (
112
- !Number.isFinite(lastKnownMs) ||
113
- Date.now() - lastKnownMs > UNVERIFIED_TASK_GRACE_MS
114
- ) {
115
- return "stale";
116
- }
117
-
118
- return persisted;
119
- }
120
-
121
- function elapsedStr(startIso: string | undefined, endIso?: string): string {
122
- if (!startIso) return "?";
123
- const start = new Date(startIso).getTime();
124
- const end = endIso ? new Date(endIso).getTime() : Date.now();
125
- const ms = end - start;
126
- if (ms < 60_000) return `${Math.floor(ms / 1000)}s`;
127
- if (ms < 3_600_000)
128
- return `${Math.floor(ms / 60_000)}m ${Math.floor((ms % 60_000) / 1000)}s`;
129
- return `${Math.floor(ms / 3_600_000)}h ${Math.floor(
130
- (ms % 3_600_000) / 60_000
131
- )}m`;
132
- }
133
-
134
- function shortId(taskId: string, maxLen = 52): string {
135
- return taskId.length > maxLen ? taskId.slice(0, maxLen) + "…" : taskId;
136
- }
137
-
138
- /** Extract the last assistant message text from a thread */
139
- function lastAssistantMessage(thread: any[]): string | undefined {
140
- for (let i = thread.length - 1; i >= 0; i--) {
141
- const msg = thread[i];
142
- if (msg.role === "assistant") {
143
- if (typeof msg.content === "string" && msg.content.trim()) {
144
- return msg.content.trim();
145
- }
146
- if (Array.isArray(msg.content)) {
147
- const text = msg.content
148
- .filter((c: any) => c.type === "text")
149
- .map((c: any) => c.text)
150
- .join("\n")
151
- .trim();
152
- if (text) return text;
153
- }
154
- }
155
- }
156
- return undefined;
157
- }
158
-
159
- /** Extract last tool call name from a thread */
160
- function lastToolCall(thread: any[]): string | undefined {
161
- for (let i = thread.length - 1; i >= 0; i--) {
162
- const msg = thread[i];
163
- if (
164
- msg.role === "assistant" &&
165
- Array.isArray(msg.tool_calls) &&
166
- msg.tool_calls.length > 0
167
- ) {
168
- const last = msg.tool_calls[msg.tool_calls.length - 1];
169
- return last?.function?.name;
170
- }
171
- }
172
- return undefined;
173
- }
174
-
175
- /** Pretty-print a single message from a thread */
176
- function formatMessage(msg: any, index: number): string {
177
- const role = (msg.role as string).padEnd(9);
178
- let content = "";
179
-
180
- if (typeof msg.content === "string") {
181
- content = msg.content.trim().slice(0, 300);
182
- if (msg.content.length > 300) content += "…";
183
- } else if (Array.isArray(msg.content)) {
184
- content = msg.content
185
- .filter((c: any) => c.type === "text")
186
- .map((c: any) => (c.text as string).slice(0, 200))
187
- .join(" | ");
188
- }
189
-
190
- if (
191
- msg.role === "assistant" &&
192
- Array.isArray(msg.tool_calls) &&
193
- msg.tool_calls.length > 0
194
- ) {
195
- const tools = msg.tool_calls.map((tc: any) => {
196
- const name = tc?.function?.name ?? "?";
197
- let args = "";
198
- try {
199
- const parsed = JSON.parse(tc?.function?.arguments ?? "{}");
200
- const entries = Object.entries(parsed).slice(0, 2);
201
- args = entries
202
- .map(([k, v]) => `${k}=${String(v).slice(0, 40)}`)
203
- .join(", ");
204
- } catch {
205
- args = (tc?.function?.arguments ?? "").slice(0, 80);
206
- }
207
- return `[TOOL] ${name}(${args})`;
208
- });
209
- content = content
210
- ? content + "\n " + tools.join("\n ")
211
- : tools.join("\n ");
212
- }
213
-
214
- if (msg.role === "tool") {
215
- const result =
216
- typeof msg.content === "string"
217
- ? msg.content.slice(0, 200)
218
- : JSON.stringify(msg.content).slice(0, 200);
219
- content = `[RESULT] ${result}${
220
- (typeof msg.content === "string" ? msg.content : "").length > 200
221
- ? "…"
222
- : ""
223
- }`;
224
- }
225
-
226
- return ` #${String(index).padStart(3)} [${role}] ${content}`;
227
- }
228
-
229
- // ---------------------------------------------------------------------------
230
- // Row building (shared between list display and index resolution)
231
- // ---------------------------------------------------------------------------
232
-
233
- type Row = {
234
- taskId: string; // full task ID (not truncated)
235
- displayId: string; // truncated for display
236
- agentName: string;
237
- status: string;
238
- cost: string;
239
- elapsed: string;
240
- lastUpdate: string;
241
- };
242
-
243
- function buildRows(includeAll: boolean): Row[] {
244
- const taskIds = agentTaskIds();
245
- const rows: Row[] = [];
246
-
247
- for (const taskId of taskIds) {
248
- const meta = loadMeta(taskId);
249
- const status = getStatus(taskId, meta);
250
-
251
- if (!includeAll && (TERMINAL_STATUSES.has(status) || status === "stale")) {
252
- const lastUpdate = meta?.lastUpdate ?? "";
253
- if (lastUpdate) {
254
- const age = Date.now() - new Date(lastUpdate).getTime();
255
- if (age > 3_600_000) continue;
256
- } else {
257
- continue;
258
- }
259
- }
260
-
261
- const cost =
262
- meta?.totalCostUsd != null
263
- ? `$${(meta.totalCostUsd as number).toFixed(3)}`
264
- : "";
265
- const elapsed = elapsedStr(
266
- meta?.startTime,
267
- TERMINAL_STATUSES.has(status) || status === "stale"
268
- ? meta?.lastUpdate
269
- : undefined
270
- );
271
- const lastUpdate = meta?.lastUpdate
272
- ? new Date(meta.lastUpdate).toLocaleString()
273
- : "?";
274
-
275
- rows.push({
276
- taskId,
277
- displayId: shortId(taskId),
278
- agentName: meta?.agentName ?? "?",
279
- status: status ?? "unknown",
280
- cost,
281
- elapsed,
282
- lastUpdate,
283
- });
284
- }
285
-
286
- return rows;
287
- }
288
-
289
- /**
290
- * Resolve a task identifier to a real task ID.
291
- * Accepts:
292
- * - A numeric index string ("1", "2", …) — 1-based row from `agents list`
293
- * - An exact task ID
294
- * - A partial task ID (substring match)
295
- *
296
- * NOTE: numeric index always uses the same row set as `agents list` (includeAll=false)
297
- * so that index numbers are consistent across all subcommands.
298
- */
299
- function resolveTaskId(value: string, includeAll = false): string | null {
300
- const n = parseInt(value, 10);
301
- // Only treat as a numeric index if it's a small number (≤ 9999) — large numbers are timestamp-based task IDs
302
- if (!isNaN(n) && String(n) === value.trim() && n <= 9999) {
303
- const rows = buildRows(false);
304
- const row = rows[n - 1];
305
- return row ? row.taskId : null;
306
- }
307
-
308
- const all = agentTaskIds();
309
- if (all.includes(value)) return value;
310
- return all.find((id) => id.includes(value)) ?? null;
311
- }
312
-
313
- // ---------------------------------------------------------------------------
314
- // Command handlers
315
- // ---------------------------------------------------------------------------
316
-
317
- async function cmdList(opts: { all: boolean; json: boolean }): Promise<void> {
318
- const rows = buildRows(opts.all);
319
-
320
- if (rows.length === 0) {
321
- if (agentTaskIds().length === 0) {
322
- console.log("No agent task directories found under", AGENTS_DIR);
323
- } else {
324
- console.log(
325
- "No active agent tasks. Use --all to include completed tasks."
326
- );
327
- }
328
- return;
329
- }
330
-
331
- if (opts.json) {
332
- console.log(
333
- JSON.stringify(
334
- rows.map(
335
- ({ taskId, agentName, status, cost, elapsed, lastUpdate }) => ({
336
- taskId,
337
- agentName,
338
- status,
339
- cost,
340
- elapsed,
341
- lastUpdate,
342
- })
343
- ),
344
- null,
345
- 2
346
- )
347
- );
348
- return;
349
- }
350
-
351
- // Table output
352
- const COL_IDX = 4;
353
- const COL_ID = 55;
354
- const COL_AGENT = 14;
355
- const COL_STATUS = 12;
356
- const COL_COST = 8;
357
- const COL_ELAPSED = 10;
358
-
359
- const header =
360
- "#".padEnd(COL_IDX) +
361
- "TASK ID".padEnd(COL_ID) +
362
- "AGENT".padEnd(COL_AGENT) +
363
- "STATUS".padEnd(COL_STATUS) +
364
- "COST".padEnd(COL_COST) +
365
- "ELAPSED".padEnd(COL_ELAPSED) +
366
- "LAST UPDATE";
367
-
368
- console.log("\n" + header);
369
- console.log("─".repeat(120));
370
-
371
- rows.forEach((row, idx) => {
372
- process.stdout.write(
373
- String(idx + 1).padEnd(COL_IDX) +
374
- row.displayId.padEnd(COL_ID) +
375
- row.agentName.padEnd(COL_AGENT) +
376
- row.status.padEnd(COL_STATUS) +
377
- row.cost.padEnd(COL_COST) +
378
- row.elapsed.padEnd(COL_ELAPSED) +
379
- row.lastUpdate +
380
- "\n"
381
- );
382
- });
383
- console.log(
384
- "\nTip: use -i <#> with tail/status/attach to select by row number, e.g. knowhow agents attach -i 1\n"
385
- );
386
- }
387
-
388
- async function cmdStatus(
389
- taskIdOrIndex: string | undefined,
390
- opts: { index?: string }
391
- ): Promise<void> {
392
- const value = opts.index ?? taskIdOrIndex;
393
- if (!value) {
394
- console.error("Provide a task ID or use -i <number> to select by index.");
395
- process.exit(1);
396
- }
397
-
398
- const resolvedId = resolveTaskId(value);
399
- if (!resolvedId) {
400
- console.error(`Task not found: ${value}`);
401
- const rows = buildRows(true);
402
- if (rows.length > 0) {
403
- console.error("\nAvailable tasks:");
404
- rows.forEach((r, i) => console.error(` ${i + 1}. ${r.displayId}`));
405
- }
406
- process.exit(1);
407
- }
408
-
409
- if (resolvedId !== value) {
410
- console.log(`Resolved: ${resolvedId}`);
411
- }
412
-
413
- const meta = loadMeta(resolvedId!);
414
- const status = getStatus(resolvedId!, meta);
415
-
416
- console.log("\n📋 Agent Status");
417
- console.log("─".repeat(60));
418
- console.log(`Task ID: ${resolvedId}`);
419
- console.log(`Agent: ${meta?.agentName ?? "?"}`);
420
- console.log(`Status: ${status}`);
421
- console.log(
422
- `Cost: ${
423
- meta?.totalCostUsd != null
424
- ? "$" + (meta.totalCostUsd as number).toFixed(4)
425
- : "?"
426
- }`
427
- );
428
- console.log(
429
- `Started: ${
430
- meta?.startTime ? new Date(meta.startTime).toLocaleString() : "?"
431
- }`
432
- );
433
- console.log(
434
- `Last update:${
435
- meta?.lastUpdate ? " " + new Date(meta.lastUpdate).toLocaleString() : " ?"
436
- }`
437
- );
438
- console.log(`Elapsed: ${elapsedStr(meta?.startTime)}`);
439
-
440
- const threads: any[][] = meta?.threads ?? [];
441
- if (threads.length > 0) {
442
- const lastThread = threads[threads.length - 1];
443
- const msgCount = lastThread.length;
444
- const lastTool = lastToolCall(lastThread);
445
- const lastMsg = lastAssistantMessage(lastThread);
446
-
447
- console.log(`Messages: ${msgCount} in last thread`);
448
- if (lastTool) {
449
- console.log(`Last tool: ${lastTool}`);
450
- }
451
- if (lastMsg) {
452
- const preview = lastMsg.slice(0, 200);
453
- console.log(`Last msg: ${preview}${lastMsg.length > 200 ? "…" : ""}`);
454
- }
455
- }
456
-
457
- if (meta?.result) {
458
- const result = String(meta.result).slice(0, 300);
459
- console.log(`\nResult:\n ${result}`);
460
- }
461
-
462
- console.log("─".repeat(60));
463
- }
464
-
465
- async function cmdTail(
466
- taskIdOrIndex: string | undefined,
467
- opts: { count: number; raw: boolean; follow: boolean; index?: string }
468
- ): Promise<void> {
469
- const value = opts.index ?? taskIdOrIndex;
470
- if (!value) {
471
- console.error("Provide a task ID or use -i <number> to select by index.");
472
- process.exit(1);
473
- }
474
-
475
- const resolvedId = resolveTaskId(value);
476
- if (!resolvedId) {
477
- console.error(`Task not found: ${value}`);
478
- const rows = buildRows(true);
479
- if (rows.length > 0) {
480
- console.error("\nAvailable tasks:");
481
- rows.forEach((r, i) => console.error(` ${i + 1}. ${r.displayId}`));
482
- }
483
- process.exit(1);
484
- return;
485
- }
486
-
487
- if (resolvedId !== value) {
488
- console.log(`Resolved: ${resolvedId}`);
489
- }
490
-
491
- const meta = loadMeta(resolvedId);
492
- if (!meta) {
493
- console.error(`No metadata found for task: ${resolvedId}`);
494
- process.exit(1);
495
- }
496
-
497
- const threads: any[][] = meta.threads ?? [];
498
- if (threads.length === 0) {
499
- console.log(
500
- "No thread data found in metadata.json (agent may not have started yet)."
501
- );
502
- return;
503
- }
504
-
505
- const lastThread = threads[threads.length - 1];
506
-
507
- if (opts.raw) {
508
- const slice = lastThread.slice(-opts.count);
509
- console.log(JSON.stringify(slice, null, 2));
510
- if (!opts.follow) return;
511
- }
512
-
513
- const slice = lastThread.slice(-opts.count);
514
- const startIndex = lastThread.length - slice.length;
515
-
516
- console.log(`\n📜 Last ${slice.length} messages for task: ${resolvedId}`);
517
- console.log(
518
- ` Agent: ${meta.agentName} | Status: ${
519
- meta.status ?? loadStatus(resolvedId)
520
- } | Total messages: ${lastThread.length}`
521
- );
522
- console.log("─".repeat(80));
523
-
524
- for (let i = 0; i < slice.length; i++) {
525
- console.log(formatMessage(slice[i], startIndex + i));
526
- }
527
-
528
- console.log("─".repeat(80));
529
-
530
- const cost =
531
- meta.totalCostUsd != null
532
- ? `$${(meta.totalCostUsd as number).toFixed(4)}`
533
- : "?";
534
- const elapsed = elapsedStr(meta.startTime);
535
- const status = getStatus(resolvedId, meta);
536
- console.log(
537
- `Cost: ${cost} | Elapsed: ${elapsed} | Last update: ${
538
- meta.lastUpdate ? new Date(meta.lastUpdate).toLocaleString() : "?"
539
- }`
540
- );
541
-
542
- const isDone =
543
- status === "completed" || status === "failed" || status === "killed";
544
-
545
- if (opts.follow) {
546
- if (isDone) {
547
- console.log(`\n✅ Agent already ${status}. Nothing to follow.\n`);
548
- } else {
549
- await followTask(resolvedId, lastThread.length);
550
- }
551
- } else if (!isDone) {
552
- // Without -f, if agent is still running, hint that they can follow
553
- console.log(`\n⏳ Agent is ${status}. Use -f to follow live output.\n`);
554
- } else {
555
- console.log("");
556
- }
557
- }
558
-
559
- /**
560
- * Poll metadata.json every second, printing any new messages as they arrive.
561
- * Exits when the agent status becomes completed/failed/killed.
562
- */
563
- async function followTask(
564
- resolvedId: string,
565
- seenCount: number
566
- ): Promise<void> {
567
- console.log(`\n👁 Following agent output… (Ctrl+C to stop)\n`);
568
-
569
- // Check upfront — if already done, exit immediately
570
- const initialMeta = loadMeta(resolvedId);
571
- const initialStatus = getStatus(resolvedId, initialMeta);
572
- if (
573
- initialStatus === "completed" ||
574
- initialStatus === "failed" ||
575
- initialStatus === "killed"
576
- ) {
577
- console.log(`✅ Agent already ${initialStatus}. Nothing to follow.\n`);
578
- return;
579
- }
580
-
581
- let seen = seenCount;
582
-
583
- const interval = setInterval(() => {
584
- const meta = loadMeta(resolvedId);
585
- if (!meta) return;
586
-
587
- const threads: any[][] = meta.threads ?? [];
588
- if (threads.length === 0) return;
589
- const thread = threads[threads.length - 1];
590
-
591
- if (thread.length > seen) {
592
- for (let i = seen; i < thread.length; i++) {
593
- console.log(formatMessage(thread[i], i));
594
- }
595
- seen = thread.length;
596
- }
597
- const status = getStatus(resolvedId, meta);
598
- if (status === "completed" || status === "failed" || status === "killed") {
599
- const cost =
600
- meta.totalCostUsd != null
601
- ? `$${(meta.totalCostUsd as number).toFixed(4)}`
602
- : "?";
603
- console.log(
604
- `\n─────────────────────────────────────────────────────────────────────────────────`
605
- );
606
- console.log(
607
- `✅ Agent ${status}. Cost: ${cost} | Elapsed: ${elapsedStr(
608
- meta.startTime,
609
- meta.lastUpdate
610
- )}`
611
- );
612
- clearInterval(interval);
613
- process.exit(0);
614
- }
615
- }, 1000);
616
-
617
- // Keep process alive
618
- await new Promise<void>(() => {});
619
- }
620
-
621
- async function cmdAttach(
622
- taskIdOrIndex: string | undefined,
623
- opts: { index?: string }
624
- ): Promise<void> {
625
- const value = opts.index ?? taskIdOrIndex;
626
- if (!value) {
627
- console.error("Provide a task ID or use -i <number> to select by index.");
628
- process.exit(1);
629
- }
630
-
631
- const resolvedId = resolveTaskId(value);
632
- if (!resolvedId) {
633
- console.error(`Task not found: ${value}`);
634
- const rows = buildRows(true);
635
- if (rows.length > 0) {
636
- console.error("\nAvailable tasks:");
637
- rows.forEach((r, i) => console.error(` ${i + 1}. ${r.displayId}`));
638
- }
639
- process.exit(1);
640
- return;
641
- }
642
-
643
- // Delegate to the full knowhow chat interface.
644
- // This gives the complete interactive experience: /logs, /poke, /kill,
645
- // /detach — exactly the same as `knowhow chat` then typing the command.
646
- const { setupServices } = await import("./services");
647
- await setupServices();
648
-
649
- // Always use /attach — if the user wants to resume they can do so from chat
650
- await startChat(`/attach ${resolvedId}`);
651
- }
652
-
653
- /**
654
- * Print the final answer (the result of the agent's finalAnswer tool call) for
655
- * a completed task. Reads `metadata.result`, falling back to the last assistant
656
- * message in the thread if `result` isn't present. This lets a human read what
657
- * a finished agent concluded with, even if they never attached before it ended.
658
- */
659
- async function cmdAnswer(
660
- taskIdOrIndex: string | undefined,
661
- opts: { index?: string; raw: boolean }
662
- ): Promise<void> {
663
- const value = opts.index ?? taskIdOrIndex;
664
- if (!value) {
665
- console.error("Provide a task ID or use -i <number> to select by index.");
666
- process.exit(1);
667
- }
668
-
669
- const resolvedId = resolveTaskId(value, true);
670
- if (!resolvedId) {
671
- console.error(`Task not found: ${value}`);
672
- const rows = buildRows(true);
673
- if (rows.length > 0) {
674
- console.error("\nAvailable tasks:");
675
- rows.forEach((r, i) => console.error(` ${i + 1}. ${r.displayId}`));
676
- }
677
- process.exit(1);
678
- return;
679
- }
680
-
681
- const meta = loadMeta(resolvedId);
682
- if (!meta) {
683
- console.error(`No metadata found for task: ${resolvedId}`);
684
- process.exit(1);
685
- return;
686
- }
687
-
688
- // Prefer the stored finalAnswer result; fall back to the last assistant message.
689
- let answer: string | undefined =
690
- typeof meta.result === "string" && meta.result.trim()
691
- ? meta.result
692
- : undefined;
693
-
694
- if (!answer) {
695
- const threads: any[][] = meta.threads ?? [];
696
- if (threads.length > 0) {
697
- answer = lastAssistantMessage(threads[threads.length - 1]);
698
- }
699
- }
700
-
701
- if (opts.raw) {
702
- console.log(answer ?? "");
703
- return;
704
- }
705
-
706
- const status = getStatus(resolvedId, meta);
707
- if (!answer) {
708
- console.log(`\n📭 No final answer available for task: ${resolvedId}`);
709
- console.log(` Status: ${status}`);
710
- if (status !== "completed") {
711
- console.log(
712
- ` The agent hasn't finished yet — attach with 'knowhow agents attach' to follow it.`
713
- );
714
- }
715
- return;
716
- }
717
-
718
- console.log(`\n💬 Final answer for task: ${resolvedId}`);
719
- console.log(
720
- ` Agent: ${meta.agentName ?? "?"} | Status: ${status} | Cost: ${
721
- meta.totalCostUsd != null
722
- ? "$" + (meta.totalCostUsd as number).toFixed(4)
723
- : "?"
724
- }`
725
- );
726
- console.log("─".repeat(80));
727
- console.log(answer);
728
- console.log("─".repeat(80) + "\n");
729
- }
730
-
731
- interface HistoryRunOptions {
732
- rollback: string;
733
- input?: string;
734
- taskId?: string;
735
- messageId?: string;
736
- syncFs?: boolean;
737
- provider?: string;
738
- model?: string;
739
- agentName?: string;
740
- reasoningEffort?: string;
741
- renderer?: string;
742
- index?: string;
743
- headless?: boolean;
744
- }
745
-
746
- async function runFromHistory(
747
- sourceTaskId: string,
748
- options: HistoryRunOptions,
749
- fork: boolean,
750
- getChatService: () => any
751
- ): Promise<void> {
752
- const rollback = Number(options.rollback);
753
- if (!Number.isInteger(rollback) || rollback < 0) {
754
- throw new Error("--rollback must be a non-negative integer");
755
- }
756
- const hasHeadlessOverrides = !!(
757
- options.input || options.messageId || options.syncFs || options.provider ||
758
- options.model || options.agentName || options.reasoningEffort ||
759
- options.renderer || options.taskId
760
- );
761
- if (process.stdin.isTTY && !options.headless && !hasHeadlessOverrides) {
762
- const command = fork ? "/fork" : "/resume";
763
- const { setupServices } = await import("./services");
764
- await setupServices();
765
- await startChat(`${command} ${sourceTaskId} --rollback ${rollback}`);
766
- return;
767
- }
768
- const requestedReasoningEffortValue = options.reasoningEffort;
769
- if (
770
- requestedReasoningEffortValue !== undefined &&
771
- !isReasoningEffort(requestedReasoningEffortValue)
772
- ) {
773
- throw new Error(
774
- `Invalid reasoning effort "${requestedReasoningEffortValue}". Expected one of: ${REASONING_EFFORTS.join(
775
- ", "
776
- )}.`
777
- );
778
- }
779
- const requestedReasoningEffort =
780
- requestedReasoningEffortValue as CompletionOptions["reasoning_effort"];
781
-
782
- const { setupServices } = await import("./services");
783
- await setupServices();
784
- const chatService = getChatService();
785
- let config: any = {};
786
- try {
787
- config = await getConfig();
788
- } catch (_) {}
789
- const rendererSpecifier =
790
- options.renderer ?? config.chat?.renderer ?? "basic";
791
- const resolvedRenderer =
792
- rendererSpecifier === "basic" && !process.stdout.isTTY
793
- ? "plain"
794
- : rendererSpecifier;
795
- try {
796
- chatService.setContext({ renderer: await loadRenderer(resolvedRenderer) });
797
- } catch (err: any) {
798
- console.warn(
799
- `⚠ Could not load renderer "${resolvedRenderer}": ${err.message}`
800
- );
801
- chatService.setContext({
802
- renderer: !process.stdout.isTTY
803
- ? new PlainRenderer()
804
- : await loadRenderer("basic"),
805
- });
806
- }
807
-
808
- const agentModule = new AgentModule();
809
- const threads = await agentModule.loadThreadsForTask(
810
- sourceTaskId,
811
- options.messageId
812
- );
813
- const savedSettings = await agentModule.loadTaskSettings(
814
- sourceTaskId,
815
- options.messageId
816
- );
817
- await agentModule.initialize(chatService);
818
- const { taskCompleted } = await agentModule.resumeFromMessages({
819
- agentName: options.agentName || savedSettings.agentName || "Patcher",
820
- input: options.input || "Please continue from where you left off.",
821
- threads,
822
- messageId: fork ? undefined : options.messageId,
823
- taskId: fork ? options.taskId : sourceTaskId,
824
- // sourceTaskId may itself be a remote UUID when there is no local metadata;
825
- // AgentModule validates it and rejects filesystem slugs.
826
- remoteTaskId: fork ? undefined : savedSettings.remoteTaskId || sourceTaskId,
827
- syncFs: options.syncFs,
828
- rollback,
829
- fork,
830
- model: options.model || savedSettings.model,
831
- provider: options.provider || savedSettings.provider,
832
- reasoningEffort: requestedReasoningEffort || savedSettings.reasoningEffort,
833
- summarizeReasoning: savedSettings.summarizeReasoning,
834
- enabledTools: savedSettings.enabledTools,
835
- });
836
- await taskCompleted;
837
- }
838
-
839
- function addHistoryRunOptions(
840
- command: Command,
841
- includeDestinationTaskId: boolean
842
- ): Command {
843
- command
844
- .option(
845
- "-i, --index <number>",
846
- "Select task by row number from 'agents list'"
847
- )
848
- .option(
849
- "--rollback <count>",
850
- "Discard the newest N agent interactions before continuing",
851
- "0"
852
- )
853
- .option("--input <text>", "Message to send after restoring history")
854
- .option(
855
- "--message-id <messageId>",
856
- "Knowhow message ID for remote task lookup"
857
- )
858
- .option("--sync-fs", "Enable filesystem-based synchronization")
859
- .option("--provider <provider>", "Override the saved AI provider")
860
- .option("--model <model>", "Override the saved model")
861
- .option("--agent-name <name>", "Override the saved agent")
862
- .option(
863
- "--reasoning-effort <effort>",
864
- `Reasoning effort: ${REASONING_EFFORTS.join(", ")}`
865
- )
866
- .option(
867
- "--renderer <name>",
868
- "Renderer to use (default: from config or basic)"
869
- )
870
- .option(
871
- "--headless",
872
- "Run to completion without opening the attached chat interface"
873
- );
874
- if (includeDestinationTaskId) {
875
- command.option(
876
- "--task-id <taskId>",
877
- "Explicit task ID for the newly forked task"
878
- );
879
- }
880
- return command;
881
- }
882
-
883
- // ---------------------------------------------------------------------------
884
- // Command registration
885
- // ---------------------------------------------------------------------------
886
-
887
- export function addAgentsCommand(
888
- program: Command,
889
- getChatService: () => any
890
- ): void {
891
- const agents = program
892
- .command("agents")
893
- .description("Manage running, recent, and historical agent tasks");
894
-
895
- agents
896
- .command("list")
897
- .description(
898
- "List known agent task directories with their status and cost. " +
899
- "Shows only active/recent tasks by default; use --all to include completed."
900
- )
901
- .option("--all", "Include completed and killed tasks", false)
902
- .option("--json", "Output as JSON", false)
903
- .action(async (opts) => {
904
- await cmdList(opts);
905
- });
906
-
907
- agents
908
- .command("status [taskId]")
909
- .description(
910
- "Show a summary for a specific agent task: status, last tool, cost, elapsed. " +
911
- "Accepts a full task ID, partial substring, or -i <number> for row index from 'agents list'."
912
- )
913
- .option(
914
- "-i, --index <number>",
915
- "Select task by row number from 'agents list'"
916
- )
917
- .action(async (taskId: string | undefined, opts: { index?: string }) => {
918
- await cmdStatus(taskId, opts);
919
- });
920
-
921
- agents
922
- .command("tail [taskId]")
923
- .description(
924
- "Print the last N messages from an agent's persisted thread. " +
925
- "Accepts a full task ID, partial substring, or -i <number> for row index from 'agents list'. " +
926
- "Use -f to follow live output."
927
- )
928
- .option(
929
- "-i, --index <number>",
930
- "Select task by row number from 'agents list'"
931
- )
932
- .option(
933
- "-n, --count <number>",
934
- "Number of messages to show",
935
- (v) => parseInt(v, 10),
936
- 20
937
- )
938
- .option("--raw", "Output raw JSON of messages", false)
939
- .option("-f, --follow", "Follow live output (poll for new messages)", false)
940
- .action(
941
- async (
942
- taskId: string | undefined,
943
- opts: { count: number; raw: boolean; follow: boolean; index?: string }
944
- ) => {
945
- await cmdTail(taskId, opts);
946
- }
947
- );
948
-
949
- agents
950
- .command("attach [taskId]")
951
- .description(
952
- "Attach to a running agent and follow its live output. " +
953
- "Shows recent history then streams new messages as they arrive. " +
954
- "Accepts a full task ID, partial substring, or -i <number> for row index from 'agents list'."
955
- )
956
- .option(
957
- "-i, --index <number>",
958
- "Select task by row number from 'agents list'"
959
- )
960
- .action(async (taskId: string | undefined, opts: { index?: string }) => {
961
- await cmdAttach(taskId, opts);
962
- });
963
-
964
- agents
965
- .command("answer [taskId]")
966
- .description(
967
- "Print the final answer (finalAnswer result) of a completed agent task, formatted for reading. " +
968
- "Reads metadata.result, falling back to the last assistant message. " +
969
- "Accepts a full task ID, partial substring, or -i <number> for row index from 'agents list'."
970
- )
971
- .option(
972
- "-i, --index <number>",
973
- "Select task by row number from 'agents list'"
974
- )
975
- .option(
976
- "--raw",
977
- "Print only the raw answer text (no header/formatting)",
978
- false
979
- )
980
- .action(
981
- async (
982
- taskId: string | undefined,
983
- opts: { index?: string; raw: boolean }
984
- ) => {
985
- await cmdAnswer(taskId, opts);
986
- }
987
- );
988
- addHistoryRunOptions(
989
- agents
990
- .command("resume [taskId]")
991
- .description(
992
- "Resume an existing agent task. Accepts a task ID, partial substring, or -i <number> for row index from 'agents list'."
993
- ),
994
- false
995
- ).action(async (taskId: string | undefined, opts: HistoryRunOptions) => {
996
- try {
997
- const value = opts.index ?? taskId;
998
- if (!value) {
999
- throw new Error("Provide a task ID or use -i <number> to select by index.");
1000
- }
1001
- const resolvedId = resolveTaskId(value);
1002
- if (!resolvedId) {
1003
- throw new Error(`Task not found: ${value}`);
1004
- }
1005
- await runFromHistory(resolvedId, opts, false, getChatService);
1006
- } catch (error) {
1007
- console.error("Error resuming agent:", error);
1008
- process.exitCode = 1;
1009
- }
1010
- });
1011
-
1012
- addHistoryRunOptions(
1013
- agents
1014
- .command("fork [sourceTaskId]")
1015
- .description(
1016
- "Fork an existing agent task into a new task. Accepts a task ID, partial substring, or -i <number> for row index from 'agents list'."
1017
- ),
1018
- true
1019
- ).action(async (sourceTaskId: string | undefined, opts: HistoryRunOptions) => {
1020
- try {
1021
- const value = opts.index ?? sourceTaskId;
1022
- if (!value) {
1023
- throw new Error(
1024
- "Provide a task ID or use -i <number> to select by index."
1025
- );
1026
- }
1027
- const resolvedId = resolveTaskId(value);
1028
- if (!resolvedId) {
1029
- throw new Error(`Task not found: ${value}`);
1030
- }
1031
- await runFromHistory(resolvedId, opts, true, getChatService);
1032
- } catch (error) {
1033
- console.error("Error forking agent:", error);
1034
- process.exitCode = 1;
1035
- }
1036
- });
1037
- }