@tyvm/knowhow 0.0.158 → 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 +2 -2
  2. package/ts_build/package.json +2 -2
  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,969 +0,0 @@
1
- /**
2
- * Sessions Chat Module - Handles session/attachment related commands
3
- * Extracted from AgentModule to keep AgentModule focused on agent running logic.
4
- *
5
- * Command semantics:
6
- * /attach <taskId> - Attach to a RUNNING session (in-memory, filesystem, or web).
7
- * If the task is completed, the user is told to use /resume instead.
8
- * /resume <taskId> [--rollback N] - Continue the same saved task.
9
- * /fork <taskId> [--rollback N] - Start a new task from saved history.
10
- * /sessions - List sessions that can be attached to or resumed.
11
- * /logs [N] - Show the last N messages from the currently attached agent.
12
- */
13
- import { BaseChatModule } from "./BaseChatModule";
14
- import { TraceAll } from "../../util/Trace";
15
- import { ChatCommand, ChatMode, ChatContext } from "../types";
16
- import { AgentModule } from "./AgentModule";
17
- import {
18
- FsSyncedAgentWatcher,
19
- WebSyncedAgentWatcher,
20
- WatcherBackedAgent,
21
- } from "../../services/index";
22
- import { TaskInfo, ChatSession } from "../types";
23
- import { KnowhowSimpleClient } from "../../services/KnowhowClient";
24
- import { messagesToRenderEvents } from "../renderer/messagesToRenderEvents";
25
- import { Marked } from "../../utils/index";
26
- import * as fs from "fs";
27
- import * as path from "path";
28
-
29
- export function parseHistoryCommandArgs(args: string[]): {
30
- id?: string;
31
- rollback: number;
32
- showAll: boolean;
33
- } {
34
- let id: string | undefined;
35
- let rollback = 0;
36
- let showAll = false;
37
- for (let i = 0; i < args.length; i++) {
38
- if (args[i] === "--all") {
39
- showAll = true;
40
- } else if (args[i] === "--rollback") {
41
- const value = args[++i];
42
- rollback = Number(value);
43
- if (!Number.isInteger(rollback) || rollback < 0) {
44
- throw new Error("--rollback must be a non-negative integer");
45
- }
46
- } else if (!id) {
47
- id = args[i];
48
- } else {
49
- throw new Error(`Unexpected argument: ${args[i]}`);
50
- }
51
- }
52
- return { id, rollback, showAll };
53
- }
54
-
55
- @TraceAll()
56
- export class SessionsModule extends BaseChatModule {
57
- name = "sessions";
58
- description = "Session and attachment management";
59
-
60
- private agentModule: AgentModule;
61
-
62
- constructor(agentModule: AgentModule) {
63
- super();
64
- this.agentModule = agentModule;
65
- }
66
-
67
- getCommands(): ChatCommand[] {
68
- return [
69
- {
70
- name: "attach",
71
- description:
72
- "Attach to a RUNNING session. Use --completed to also see completed sessions.",
73
- handler: this.handleAttachCommand.bind(this),
74
- },
75
- {
76
- name: "resume",
77
- description:
78
- "Resume a completed/saved session with optional additional context",
79
- handler: this.handleResumeCommand.bind(this),
80
- },
81
- {
82
- name: "fork",
83
- description:
84
- "Fork a saved session into a new task; use --rollback N to discard recent agent interactions",
85
- handler: this.handleForkCommand.bind(this),
86
- },
87
- {
88
- name: "sessions",
89
- description:
90
- "List running sessions. Use --completed to also show completed/saved sessions.",
91
- handler: this.handleSessionsCommand.bind(this),
92
- },
93
- {
94
- name: "logs",
95
- description: "Show recent messages from attached agent [N=20]",
96
- handler: this.handleLogsCommand.bind(this),
97
- modes: ["agent:attached"],
98
- },
99
- ];
100
- }
101
-
102
- // ─────────────────────────────────────────────────────────────────────────────
103
- // /logs [N]
104
- // ─────────────────────────────────────────────────────────────────────────────
105
-
106
- async handleLogsCommand(args: string[]): Promise<void> {
107
- const count = parseInt(args[0] || "20", 10) || 20;
108
- const activeSyncedWatcher = this.agentModule.getActiveSyncedWatcher();
109
- const renderer = this.agentModule.getRenderer();
110
- const taskRegistry = this.agentModule.getTaskRegistry();
111
-
112
- try {
113
- // Prefer the synced watcher (fs or web attach)
114
- if (activeSyncedWatcher) {
115
- const threads = await activeSyncedWatcher.getThreads();
116
- const lastThread = threads[threads.length - 1] || [];
117
- const events = messagesToRenderEvents(
118
- lastThread,
119
- activeSyncedWatcher.taskId,
120
- activeSyncedWatcher.agentName
121
- );
122
- renderer.logMessages(events, count);
123
- return;
124
- }
125
-
126
- // Fall back to in-process task
127
- const activeTaskId = renderer.getActiveTaskId();
128
- if (activeTaskId && taskRegistry.has(activeTaskId)) {
129
- const taskInfo = taskRegistry.get(activeTaskId);
130
- const agent = taskInfo?.agent;
131
- if (agent) {
132
- const threads = agent.getThreads();
133
- const lastThread = threads[threads.length - 1] || [];
134
- const events = messagesToRenderEvents(
135
- lastThread,
136
- activeTaskId,
137
- agent.name
138
- );
139
- renderer.logMessages(events, count);
140
- return;
141
- }
142
- }
143
-
144
- console.log(
145
- "No active agent to show logs for. Use /attach <taskId> to attach to an agent first."
146
- );
147
- } catch (error) {
148
- console.error("Error showing logs:", error);
149
- }
150
- }
151
-
152
- // ─────────────────────────────────────────────────────────────────────────────
153
- // Numbered selection helper
154
- // ─────────────────────────────────────────────────────────────────────────────
155
-
156
- /**
157
- * Shows a prompt and accepts a number (1-based index) to select from a list of IDs.
158
- * Returns the resolved ID, or undefined if cancelled.
159
- */
160
- private async selectByNumber(
161
- prompt: string,
162
- allIds: string[]
163
- ): Promise<string | undefined> {
164
- const numbers = allIds.map((_, i) => String(i + 1));
165
- const input = await this.chatService?.getInput(prompt, numbers);
166
- if (!input || !input.trim()) return undefined;
167
- const idx = parseInt(input.trim(), 10);
168
- if (isNaN(idx) || idx < 1 || idx > allIds.length) return undefined;
169
- return allIds[idx - 1];
170
- }
171
-
172
- // ─────────────────────────────────────────────────────────────────────────────
173
- // /attach [taskId]
174
- // Attaches to a RUNNING session only. Completed sessions → suggest /resume.
175
- // ─────────────────────────────────────────────────────────────────────────────
176
-
177
- async handleAttachCommand(args: string[]): Promise<void> {
178
- const taskRegistry = this.agentModule.getTaskRegistry();
179
- const sessionManager = this.agentModule.getSessionManager();
180
- const showCompleted = args.includes("--completed");
181
- const filteredArgs = args.filter((a) => a !== "--completed");
182
-
183
- if (filteredArgs.length === 0) {
184
- // Build list of running-only sessions for interactive selection
185
- const runningTasks = taskRegistry.getAll();
186
- const fsAgents = await this.getFsAgents(runningTasks);
187
- // If --completed flag, also fetch saved/completed sessions
188
- const savedSessions = showCompleted
189
- ? sessionManager.listAvailableSessions()
190
- : [];
191
-
192
- if (
193
- runningTasks.length === 0 &&
194
- fsAgents.length === 0 &&
195
- savedSessions.length === 0
196
- ) {
197
- console.log(
198
- "No running sessions found to attach to.\n" +
199
- "Use /attach --completed to also see completed sessions.\n" +
200
- "Use /resume <taskId> to resume a completed session."
201
- );
202
- return;
203
- }
204
-
205
- if (showCompleted) {
206
- this.logSessionsCompact(runningTasks, savedSessions, fsAgents);
207
- } else {
208
- this.printRunningTable(runningTasks, fsAgents);
209
- }
210
-
211
- const allIds = [
212
- ...runningTasks.map((t) => t.taskId),
213
- ...fsAgents.map((a) => a.taskId),
214
- ...(showCompleted ? savedSessions.map((s) => s.sessionId) : []),
215
- ];
216
-
217
- const selectedId = await this.selectByNumber(
218
- showCompleted
219
- ? "Enter number to attach/resume (or press Enter to cancel): "
220
- : "Enter number to attach to (or press Enter to cancel): ",
221
- allIds
222
- );
223
-
224
- if (selectedId) {
225
- const trimmed = selectedId;
226
- const isCompleted =
227
- showCompleted && savedSessions.some((s) => s.sessionId === trimmed);
228
- if (isCompleted) {
229
- await this.resumeById(trimmed);
230
- } else {
231
- await this.attachById(trimmed);
232
- }
233
- }
234
- return;
235
- }
236
-
237
- const taskId = filteredArgs[0];
238
- await this.attachById(taskId);
239
- }
240
-
241
- /**
242
- * Core attach logic — only attaches to RUNNING sessions.
243
- * Completed/saved sessions get a helpful message pointing to /resume.
244
- */
245
- private async attachById(id: string): Promise<void> {
246
- const taskRegistry = this.agentModule.getTaskRegistry();
247
- const sessionManager = this.agentModule.getSessionManager();
248
-
249
- // ── Case 1: in-memory running task ──────────────────────────────────────
250
- if (taskRegistry.has(id)) {
251
- const taskInfo = taskRegistry.get(id)!;
252
- const context = this.chatService?.getContext();
253
- const selectedAgent = taskInfo.agent;
254
-
255
- if (context && selectedAgent) {
256
- context.selectedAgent = selectedAgent;
257
- context.agentMode = true;
258
- context.currentAgent = taskInfo.agentName;
259
- context.currentModel = selectedAgent.getModel();
260
- context.currentProvider = selectedAgent.getProvider();
261
- }
262
-
263
- console.log(`🔄 Attached to running task: ${id}`);
264
- console.log(` Agent : ${taskInfo.agentName}`);
265
- console.log(` Task : ${taskInfo.initialInput}`);
266
- console.log(` Status: ${taskInfo.status}`);
267
- console.log(
268
- ` Type /logs to see recent messages, or /detach to detach.`
269
- );
270
-
271
- // Route through attachedAgentChatLoop so that:
272
- // 1. wireAgentRendering is called (new output becomes visible)
273
- // 2. attachedAgent is set (so /poke, /kill, /compact work)
274
- // 3. a done listener is registered (mode resets when agent finishes)
275
- // Do NOT pass initialInput — agent is already running, no need to call it again.
276
- await this.agentModule.attachedAgentChatLoop(id, selectedAgent as any);
277
- return;
278
- }
279
-
280
- // ── Case 2: filesystem agent directory ──────────────────────────────────
281
- const fsAgentPath = path.join(".knowhow", "processes", "agents", id);
282
- if (fs.existsSync(fsAgentPath)) {
283
- // Read status — only attach if running
284
- const status = this.readFsAgentStatus(fsAgentPath);
285
- if (status === "completed") {
286
- console.log(
287
- `⚠️ Task ${id} is completed.\n` +
288
- ` Use /resume ${id} to resume it with additional context.`
289
- );
290
- return;
291
- }
292
- await this.attachToFsAgent(id);
293
- return;
294
- }
295
-
296
- // ── Case 3: saved session (completed) ───────────────────────────────────
297
- try {
298
- const session = sessionManager.loadSession(id);
299
- if (session) {
300
- if (session.status === "completed") {
301
- console.log(
302
- `⚠️ Session ${id} is completed.\n` +
303
- ` Use /resume ${id} to resume it with additional context.`
304
- );
305
- } else {
306
- // Session exists but is not yet completed — treat as attach via fs watcher
307
- // (the agent may be running in another process)
308
- const fsPath = path.join(".knowhow", "processes", "agents", id);
309
- if (fs.existsSync(fsPath)) {
310
- await this.attachToFsAgent(id);
311
- } else {
312
- // Try web as last resort
313
- await this.attachToWebAgent(id);
314
- }
315
- }
316
- return;
317
- }
318
- } catch {
319
- // session not on disk, continue
320
- }
321
-
322
- // ── Case 4: web task ────────────────────────────────────────────────────
323
- try {
324
- await this.attachToWebAgent(id);
325
- return;
326
- } catch {
327
- // not found on web
328
- }
329
-
330
- console.log(
331
- `Session/Task "${id}" not found among running tasks, filesystem agents, or web.\n` +
332
- `Use /sessions to see all known sessions.`
333
- );
334
- }
335
-
336
- // ─────────────────────────────────────────────────────────────────────────────
337
- // /resume [taskId]
338
- // Resumes a completed/saved session with optional additional context.
339
- // ─────────────────────────────────────────────────────────────────────────────
340
-
341
- async handleResumeCommand(args: string[]): Promise<void> {
342
- const sessionManager = this.agentModule.getSessionManager();
343
- let parsed;
344
- try {
345
- parsed = parseHistoryCommandArgs(args);
346
- } catch (error: any) {
347
- console.error(`Usage: /resume <taskId> [--rollback N] [--all]\n${error.message}`);
348
- return;
349
- }
350
-
351
- if (!parsed.id) {
352
- // Interactive: show saved sessions for selection
353
- const showAll = parsed.showAll;
354
- const allSessions = sessionManager.listAvailableSessions();
355
- const savedSessions = showAll ? allSessions : allSessions.slice(0, 10);
356
- if (savedSessions.length === 0) {
357
- console.log("No saved sessions found to resume.");
358
- return;
359
- }
360
-
361
- this.printSavedSessionsTable(savedSessions);
362
- if (!showAll && allSessions.length > 10) {
363
- console.log(` ... and ${allSessions.length - 10} more. Use /resume --all to see all sessions.`);
364
- }
365
-
366
- const allIds = savedSessions.map((s) => s.sessionId);
367
- const selectedId = await this.selectByNumber(
368
- "Enter number to resume (or press Enter to cancel): ",
369
- allIds
370
- );
371
-
372
- if (selectedId) {
373
- await this.resumeById(selectedId, parsed.rollback);
374
- }
375
- return;
376
- }
377
-
378
- await this.resumeById(parsed.id, parsed.rollback);
379
- }
380
-
381
- async handleForkCommand(args: string[]): Promise<void> {
382
- let parsed;
383
- try {
384
- parsed = parseHistoryCommandArgs(args);
385
- } catch (error: any) {
386
- console.error(`Usage: /fork <taskId> [--rollback N]\n${error.message}`);
387
- return;
388
- }
389
- if (!parsed.id) {
390
- console.error("Usage: /fork <taskId> [--rollback N]");
391
- return;
392
- }
393
- await this.resumeById(parsed.id, parsed.rollback, true);
394
- }
395
-
396
- private async resumeById(id: string, rollback = 0, fork = false): Promise<void> {
397
- const sessionManager = this.agentModule.getSessionManager();
398
-
399
- try {
400
- const session = sessionManager.loadSession(id);
401
- if (session) {
402
- console.log(`\n📋 Session found: ${id}`);
403
- console.log(` Agent : ${session.agentName}`);
404
- console.log(` Task : ${session.initialInput}`);
405
- console.log(` Status : ${session.status}`);
406
-
407
- const additionalContext = await this.chatService?.getInput(
408
- `Add any additional context for ${fork ? "forking" : "resuming"} this session (or press Enter to skip): `
409
- );
410
- if (fork) {
411
- const result = await this.agentModule.resumeFromMessages({
412
- agentName: session.agentName,
413
- threads: session.threads,
414
- input: additionalContext?.trim() || session.initialInput,
415
- interactive: true,
416
- rollback,
417
- fork: true,
418
- model: session.model,
419
- provider: session.provider,
420
- reasoningEffort: session.reasoningEffort,
421
- summarizeReasoning: session.summarizeReasoning,
422
- enabledTools: session.enabledTools,
423
- });
424
- console.log(`🌿 Forked ${id} into new task ${result.taskId}`);
425
- } else {
426
- await this.agentModule.resumeSession(
427
- id,
428
- additionalContext?.trim() || undefined,
429
- rollback
430
- );
431
- }
432
- return;
433
- }
434
- } catch (e: any) {
435
- if (e?.message?.includes("rollback")) throw e;
436
- // not found as a saved session
437
- }
438
-
439
- const fsAgentPath = path.join(".knowhow", "processes", "agents", id);
440
- if (fs.existsSync(fsAgentPath)) {
441
- const metadataPath = path.join(fsAgentPath, "metadata.json");
442
- if (fs.existsSync(metadataPath)) {
443
- try {
444
- const metadata = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
445
- const threads: any[] = metadata.threads || [];
446
- const agentName = metadata.agentName || "Developer";
447
- const initialInput = metadata.initialInput || metadata.prompt || "";
448
-
449
- console.log(`\n📋 Found task in filesystem: ${id}`);
450
- console.log(` Agent : ${agentName}`);
451
- console.log(` Task : ${initialInput}`);
452
- console.log(` Status : ${metadata.status || "unknown"}`);
453
-
454
- const additionalContext = await this.chatService?.getInput(
455
- `Add any additional context for ${fork ? "forking" : "resuming"} this session (or press Enter to skip): `
456
- );
457
- const normalizedThreads = threads.length > 0 && !Array.isArray(threads[0])
458
- ? [threads]
459
- : threads;
460
- const result = await this.agentModule.resumeFromMessages({
461
- agentName,
462
- remoteTaskId: fork
463
- ? undefined
464
- : metadata.remoteTaskId || metadata.knowhowTaskId,
465
- taskId: fork ? undefined : id,
466
- threads: normalizedThreads,
467
- input: additionalContext?.trim() || initialInput,
468
- interactive: true,
469
- rollback,
470
- fork,
471
- model: metadata.model,
472
- provider: metadata.provider,
473
- reasoningEffort: metadata.reasoningEffort,
474
- summarizeReasoning: metadata.summarizeReasoning,
475
- enabledTools: metadata.enabledTools,
476
- });
477
- if (fork) console.log(`🌿 Forked ${id} into new task ${result.taskId}`);
478
- return;
479
- } catch (e: any) {
480
- console.error(`⚠️ Failed to load metadata for task ${id}: ${e.message}`);
481
- return;
482
- }
483
- }
484
- console.log(
485
- `⚠️ Task ${id} exists in the filesystem but has no saved session or metadata.\n` +
486
- ` Use /attach ${id} if it is still running.`
487
- );
488
- return;
489
- }
490
-
491
- console.log(`Session "${id}" not found. Use /sessions to list available sessions.`);
492
- }
493
-
494
- // ─────────────────────────────────────────────────────────────────────────────
495
- // /sessions [--all] [--csv]
496
- // Shows all sessions: running ones can be /attach'd, saved ones can be /resume'd
497
- // ─────────────────────────────────────────────────────────────────────────────
498
-
499
- async handleSessionsCommand(args: string[]): Promise<void> {
500
- try {
501
- const showCompleted =
502
- args.includes("--completed") || args.includes("--all");
503
- const showCsv = args.includes("--csv");
504
-
505
- const taskRegistry = this.agentModule.getTaskRegistry();
506
- const sessionManager = this.agentModule.getSessionManager();
507
- const runningTasks = taskRegistry.getAll();
508
- const fsAgents = await this.getFsAgents(runningTasks);
509
- // Only include saved/completed sessions when --completed (or --all) is passed
510
- const savedSessions = showCompleted
511
- ? sessionManager.listAvailableSessions()
512
- : [];
513
-
514
- if (showCompleted) {
515
- // Show running + completed together
516
- await this.logSessionTable(true, showCsv, true);
517
- } else {
518
- // Only show running tasks + fs agents
519
- if (runningTasks.length === 0 && fsAgents.length === 0) {
520
- console.log(
521
- "No running sessions. Use /sessions --completed to also see completed sessions."
522
- );
523
- } else if (showCsv) {
524
- this.logSessionsCsv(runningTasks, [], fsAgents);
525
- } else {
526
- this.logSessionsCompact(runningTasks, [], fsAgents);
527
- }
528
- }
529
-
530
- // Interactive selection — running → attach, completed → resume
531
- const allIds = [
532
- ...runningTasks.map((t) => t.taskId),
533
- ...fsAgents.map((a) => a.taskId),
534
- ...savedSessions.map((s) => s.sessionId),
535
- ];
536
-
537
- if (allIds.length > 0) {
538
- const selectedId = await this.selectByNumber(
539
- showCompleted
540
- ? "Enter number to attach/resume (or press Enter to skip): "
541
- : "Enter number to attach to (or press Enter to skip): ",
542
- allIds
543
- );
544
-
545
- if (selectedId) {
546
- const isRunning =
547
- taskRegistry.has(selectedId) ||
548
- fsAgents.some((a) => a.taskId === selectedId);
549
-
550
- if (isRunning) {
551
- await this.attachById(selectedId);
552
- } else {
553
- await this.resumeById(selectedId);
554
- }
555
- }
556
- }
557
- } catch (error) {
558
- console.error("Error listing sessions and tasks:", error);
559
- }
560
- }
561
-
562
- // ─────────────────────────────────────────────────────────────────────────────
563
- // Table rendering helpers
564
- // ─────────────────────────────────────────────────────────────────────────────
565
-
566
- /**
567
- * Main session table — shows running, saved, and fs agents.
568
- */
569
- async logSessionTable(
570
- all: boolean = false,
571
- csv: boolean = false,
572
- includeFs: boolean = false
573
- ) {
574
- const taskRegistry = this.agentModule.getTaskRegistry();
575
- const sessionManager = this.agentModule.getSessionManager();
576
- const runningTasks = taskRegistry.getAll();
577
- let savedSessions = sessionManager.listAvailableSessions();
578
-
579
- if (!all) {
580
- savedSessions = savedSessions.filter(
581
- (s) => s.startTime >= this.agentModule.getProcessStartTime()
582
- );
583
- const filteredTasks = runningTasks.filter(
584
- (t) => t.startTime >= this.agentModule.getProcessStartTime()
585
- );
586
-
587
- const fsAgents = includeFs ? await this.getFsAgents(runningTasks) : [];
588
- if (
589
- filteredTasks.length === 0 &&
590
- savedSessions.length === 0 &&
591
- fsAgents.length === 0
592
- ) {
593
- console.log(
594
- "No sessions from this process run. Use --all to see all historical sessions."
595
- );
596
- return;
597
- }
598
-
599
- if (csv) {
600
- this.logSessionsCsv(filteredTasks, savedSessions, fsAgents);
601
- } else {
602
- this.logSessionsCompact(filteredTasks, savedSessions, fsAgents);
603
- }
604
- return;
605
- }
606
-
607
- const fsAgents = includeFs
608
- ? await this.getFsAgentsIncludingCompleted(runningTasks)
609
- : [];
610
- if (csv) {
611
- this.logSessionsCsv(runningTasks, savedSessions, fsAgents);
612
- } else {
613
- this.logSessionsCompact(runningTasks, savedSessions, fsAgents);
614
- }
615
- }
616
-
617
- /** Compact table of ONLY running tasks + fs agents (for /attach interactive) */
618
- private printRunningTable(
619
- runningTasks: TaskInfo[],
620
- fsAgents: {
621
- taskId: string;
622
- agentName: string;
623
- status: string;
624
- totalCostUsd?: number;
625
- }[]
626
- ): void {
627
- const rows = [
628
- ...runningTasks.map((t) => ({
629
- id: t.taskId,
630
- agent: t.agentName,
631
- status: t.status,
632
- cost: `$${t.totalCost.toFixed(3)}`,
633
- type: "running",
634
- })),
635
- ...fsAgents.map((a) => ({
636
- id: a.taskId,
637
- agent: a.agentName,
638
- status: a.status,
639
- cost: a.totalCostUsd != null ? `$${a.totalCostUsd.toFixed(3)}` : "n/a",
640
- type: "fs",
641
- })),
642
- ];
643
-
644
- console.log("\n🏃 Running sessions (attach-able):");
645
- console.log("─".repeat(86));
646
- console.log(
647
- "#".padEnd(5) +
648
- "taskId".padEnd(40) +
649
- "agent".padEnd(14) +
650
- "status".padEnd(12) +
651
- "cost"
652
- );
653
- console.log("─".repeat(86));
654
- for (const r of rows) {
655
- const num = String(rows.indexOf(r) + 1).padEnd(5);
656
- const shortId = r.id.length > 38 ? r.id.substring(0, 35) + "..." : r.id;
657
- console.log(
658
- num +
659
- shortId.padEnd(40) +
660
- r.agent.padEnd(14) +
661
- r.status.padEnd(12) +
662
- r.cost
663
- );
664
- }
665
- console.log("─".repeat(86));
666
- }
667
-
668
- /** Compact table of ONLY saved sessions (for /resume interactive) */
669
- private printSavedSessionsTable(savedSessions: ChatSession[]): void {
670
- console.log("\n💾 Saved sessions (resumable):");
671
- console.log("─".repeat(86));
672
- console.log(
673
- "#".padEnd(5) +
674
- "taskId".padEnd(40) +
675
- "agent".padEnd(14) +
676
- "status".padEnd(12) +
677
- "cost"
678
- );
679
- console.log("─".repeat(86));
680
- for (let i = 0; i < savedSessions.length; i++) {
681
- const s = savedSessions[i];
682
- const num = String(i + 1).padEnd(5);
683
- const shortId =
684
- s.sessionId.length > 38
685
- ? s.sessionId.substring(0, 35) + "..."
686
- : s.sessionId;
687
- const cost = s.totalCost ? `$${s.totalCost.toFixed(3)}` : "$0.000";
688
- console.log(
689
- num +
690
- shortId.padEnd(40) +
691
- s.agentName.padEnd(14) +
692
- s.status.padEnd(12) +
693
- cost
694
- );
695
- }
696
- console.log("─".repeat(86));
697
- }
698
-
699
- /**
700
- * Full compact list: running + saved + fs agents, with type labels.
701
- */
702
- private logSessionsCompact(
703
- runningTasks: TaskInfo[],
704
- savedSessions: ChatSession[],
705
- fsAgents: {
706
- taskId: string;
707
- agentName: string;
708
- status: string;
709
- totalCostUsd?: number;
710
- }[] = []
711
- ): void {
712
- const runningTaskIds = new Set(runningTasks.map((t) => t.taskId));
713
- const savedIds = new Set(savedSessions.map((s) => s.sessionId));
714
- const dedupedSaved = savedSessions.filter(
715
- (s) => !runningTaskIds.has(s.sessionId)
716
- );
717
- const allKnownIds = new Set([...runningTaskIds, ...savedIds]);
718
- const dedupedFs = fsAgents.filter((a) => !allKnownIds.has(a.taskId));
719
-
720
- const rows = [
721
- ...runningTasks.map((t) => ({
722
- id: t.taskId,
723
- agent: t.agentName,
724
- status: t.status,
725
- cost: `$${t.totalCost.toFixed(3)}`,
726
- type: "running",
727
- action: "/attach",
728
- })),
729
- ...dedupedFs.map((a) => ({
730
- id: a.taskId,
731
- agent: a.agentName,
732
- status: a.status,
733
- cost: a.totalCostUsd != null ? `$${a.totalCostUsd.toFixed(3)}` : "n/a",
734
- type: "fs",
735
- action: a.status === "completed" ? "/resume" : "/attach",
736
- })),
737
- ...dedupedSaved.map((s) => ({
738
- id: s.sessionId,
739
- agent: s.agentName,
740
- status: s.status,
741
- cost: s.totalCost ? `$${s.totalCost.toFixed(3)}` : "$0.000",
742
- type: "saved",
743
- action: "/resume",
744
- })),
745
- ];
746
-
747
- if (rows.length === 0) {
748
- console.log("No sessions found.");
749
- return;
750
- }
751
-
752
- console.log("\n📋 Sessions:");
753
- console.log("─".repeat(109));
754
- console.log(
755
- "#".padEnd(5) +
756
- "taskId".padEnd(40) +
757
- "agent".padEnd(14) +
758
- "status".padEnd(12) +
759
- "type".padEnd(10) +
760
- "cost".padEnd(12) +
761
- "action"
762
- );
763
- console.log("─".repeat(109));
764
- for (let i = 0; i < rows.length; i++) {
765
- const r = rows[i];
766
- const num = String(i + 1).padEnd(5);
767
- const shortId = r.id.length > 38 ? r.id.substring(0, 35) + "..." : r.id;
768
- console.log(
769
- num +
770
- shortId.padEnd(40) +
771
- r.agent.padEnd(14) +
772
- r.status.padEnd(12) +
773
- r.type.padEnd(10) +
774
- r.cost.padEnd(12) +
775
- r.action
776
- );
777
- }
778
- console.log("─".repeat(109));
779
- }
780
-
781
- /**
782
- * CSV output for sessions.
783
- */
784
- private logSessionsCsv(
785
- runningTasks: TaskInfo[],
786
- savedSessions: ChatSession[],
787
- fsAgents: {
788
- taskId: string;
789
- agentName: string;
790
- status: string;
791
- totalCostUsd?: number;
792
- }[] = []
793
- ): void {
794
- const lines = ["taskId,agent,status,type,cost,startTime,initialInput"];
795
- const runningTaskIds = new Set(runningTasks.map((t) => t.taskId));
796
- const dedupedSaved = savedSessions.filter(
797
- (s) => !runningTaskIds.has(s.sessionId)
798
- );
799
-
800
- for (const t of runningTasks) {
801
- const input = (t.initialInput || "")
802
- .replace(/,/g, ";")
803
- .replace(/\n/g, " ");
804
- lines.push(
805
- `${t.taskId},${t.agentName},${t.status},running,${
806
- t.totalCost?.toFixed(3) || "0.000"
807
- },${t.startTime},"${input}"`
808
- );
809
- }
810
- for (const s of dedupedSaved) {
811
- const input = (s.initialInput || "")
812
- .replace(/,/g, ";")
813
- .replace(/\n/g, " ");
814
- lines.push(
815
- `${s.sessionId},${s.agentName},${s.status},saved,${
816
- s.totalCost?.toFixed(3) || "0.000"
817
- },${s.startTime},"${input}"`
818
- );
819
- }
820
- const allKnownIds = new Set([
821
- ...runningTaskIds,
822
- ...savedSessions.map((s) => s.sessionId),
823
- ]);
824
- for (const a of fsAgents) {
825
- if (!allKnownIds.has(a.taskId)) {
826
- lines.push(
827
- `${a.taskId},${a.agentName},${a.status},fs,${
828
- a.totalCostUsd != null ? a.totalCostUsd.toFixed(3) : "n/a"
829
- },n/a,""`
830
- );
831
- }
832
- }
833
- console.log(lines.join("\n"));
834
- }
835
-
836
- // ─────────────────────────────────────────────────────────────────────────────
837
- // Low-level attach helpers
838
- // ─────────────────────────────────────────────────────────────────────────────
839
-
840
- private async attachToFsAgent(taskId: string): Promise<void> {
841
- const existingWatcher = this.agentModule.getActiveSyncedWatcher();
842
- if (existingWatcher) {
843
- existingWatcher.stopWatching();
844
- this.agentModule.setActiveSyncedWatcher(undefined);
845
- }
846
-
847
- const watcher = new FsSyncedAgentWatcher();
848
- await watcher.startWatching(taskId);
849
- this.agentModule.setActiveSyncedWatcher(watcher);
850
-
851
- const context = this.chatService?.getContext();
852
- if (context) context.activeAgentTaskId = taskId;
853
-
854
- console.log(`📁 Attached to filesystem agent: ${taskId}`);
855
-
856
- // Enter interactive loop — this sets mode to "agent:attached" and blocks until detach/done/kill
857
- // attachedAgentChatLoop calls wireAgentRendering internally — do NOT call it here too,
858
- // otherwise two sets of listeners are registered and output is doubled (or, after detach,
859
- // the wrong agentEvents object holds the listeners).
860
- const fsWatcherAgent = new WatcherBackedAgent(watcher);
861
- await this.agentModule.attachedAgentChatLoop(taskId, fsWatcherAgent);
862
- }
863
-
864
- private async attachToWebAgent(taskId: string): Promise<void> {
865
- const client = new KnowhowSimpleClient();
866
- // Verify the task exists — throws if not found
867
- const details = await client.getTaskDetails(taskId);
868
-
869
- // Check if it's already completed on the web
870
- const webStatus = details?.data?.status;
871
- if (webStatus === "completed" || webStatus === "killed") {
872
- console.log(
873
- `⚠️ Web task ${taskId} has status: ${webStatus}.\n` +
874
- ` Use /resume ${taskId} to resume it with additional context.`
875
- );
876
- return;
877
- }
878
-
879
- const existingWatcher = this.agentModule.getActiveSyncedWatcher();
880
- if (existingWatcher) {
881
- existingWatcher.stopWatching();
882
- this.agentModule.setActiveSyncedWatcher(undefined);
883
- }
884
-
885
- const watcher = new WebSyncedAgentWatcher(client);
886
- await watcher.startWatching(taskId);
887
- this.agentModule.setActiveSyncedWatcher(watcher);
888
-
889
- const context = this.chatService?.getContext();
890
- if (context) context.activeAgentTaskId = taskId;
891
-
892
- console.log(`🌐 Attached to web agent: ${taskId}`);
893
-
894
- // Enter interactive loop — wireAgentRendering is called inside attachedAgentChatLoop.
895
- // Do NOT call it here too (would double-register listeners).
896
- const webWatcherAgent = new WatcherBackedAgent(watcher);
897
- await this.agentModule.attachedAgentChatLoop(taskId, webWatcherAgent);
898
- }
899
-
900
- // ─────────────────────────────────────────────────────────────────────────────
901
- // Utility helpers
902
- // ─────────────────────────────────────────────────────────────────────────────
903
-
904
- private readFsAgentStatus(agentPath: string): string {
905
- try {
906
- const statusPath = path.join(agentPath, "status.txt");
907
- if (fs.existsSync(statusPath)) {
908
- return fs.readFileSync(statusPath, "utf8").trim();
909
- }
910
- // Fall back to metadata.json
911
- const metaPath = path.join(agentPath, "metadata.json");
912
- if (fs.existsSync(metaPath)) {
913
- const meta = JSON.parse(fs.readFileSync(metaPath, "utf8"));
914
- return meta.status || "unknown";
915
- }
916
- } catch {
917
- // ignore
918
- }
919
- return "unknown";
920
- }
921
-
922
- private async getFsAgents(runningTasks: TaskInfo[]): Promise<
923
- {
924
- taskId: string;
925
- agentName: string;
926
- status: string;
927
- totalCostUsd?: number;
928
- }[]
929
- > {
930
- const sessionManager = this.agentModule.getSessionManager();
931
- const registeredIds = new Set(runningTasks.map((t) => t.taskId));
932
- return sessionManager.discoverFsAgents(registeredIds);
933
- }
934
-
935
- private async getFsAgentsIncludingCompleted(
936
- runningTasks: TaskInfo[]
937
- ): Promise<
938
- {
939
- taskId: string;
940
- agentName: string;
941
- status: string;
942
- totalCostUsd?: number;
943
- }[]
944
- > {
945
- const sessionManager = this.agentModule.getSessionManager();
946
- const registeredIds = new Set(runningTasks.map((t) => t.taskId));
947
- return sessionManager.discoverFsAgents(registeredIds, true);
948
- }
949
-
950
- // ─────────────────────────────────────────────────────────────────────────────
951
- // Public helpers used by CLI (src/cli.ts)
952
- // ─────────────────────────────────────────────────────────────────────────────
953
-
954
- public async listAvailableSessions(): Promise<ChatSession[]> {
955
- return this.agentModule.getSessionManager().listAvailableSessions();
956
- }
957
-
958
- public async listSessionsAndTasks(): Promise<{
959
- runningTasks: TaskInfo[];
960
- savedSessions: ChatSession[];
961
- }> {
962
- const taskRegistry = this.agentModule.getTaskRegistry();
963
- const sessionManager = this.agentModule.getSessionManager();
964
- return {
965
- runningTasks: taskRegistry.getAll(),
966
- savedSessions: sessionManager.listAvailableSessions(),
967
- };
968
- }
969
- }