@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,822 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- import * as os from "os";
4
- import { createHash } from "crypto";
5
- import * as https from "https";
6
- import { KnowhowSimpleClient } from "./KnowhowClient";
7
- import { TraceAll } from "../util/Trace";
8
-
9
- // Default local install dir (relative to cwd)
10
- const LOCAL_SKILLS_DIR = ".knowhow/skills";
11
- // Lock file paths
12
- const LOCK_FILE_PRIMARY = ".knowhow/skills/skills-lock.json";
13
- const LOCK_FILE_LEGACY = "skills-lock.json";
14
- // Global install dir (absolute)
15
- const GLOBAL_SKILLS_DIR = path.join(os.homedir(), ".knowhow", "skills");
16
- const GLOBAL_LOCK_FILE = path.join(os.homedir(), ".knowhow", "skills", "skills-lock.json");
17
-
18
- const SKILLS_SH_API = "https://skills.sh";
19
-
20
- export interface SkillLockEntry {
21
- source: string;
22
- sourceType: "github" | "git" | "well-known" | string;
23
- skillPath?: string;
24
- computedHash: string;
25
- commitHash?: string;
26
- ref?: string;
27
- sourceUrl?: string;
28
- }
29
-
30
- export interface SkillsLock {
31
- version: number;
32
- skills: Record<string, SkillLockEntry>;
33
- }
34
-
35
- export interface SkillDownloadResponse {
36
- files: Array<{ path: string; contents: string }>;
37
- hash: string;
38
- }
39
-
40
- export interface SkillsServiceOptions {
41
- /** If true, use global ~/.knowhow/skills/ as install dir and lock file location */
42
- global?: boolean;
43
- /** Custom install directory (absolute or relative to cwd). Overrides global. */
44
- installDir?: string;
45
- /** Working directory (defaults to process.cwd()) */
46
- cwd?: string;
47
- }
48
-
49
- function createEmptyLock(): SkillsLock {
50
- return { version: 1, skills: {} };
51
- }
52
-
53
- /**
54
- * Compute the same hash as `npx skills` `computeSnapshotHash` does:
55
- * given an array of {path, contents} (as returned by skills.sh API),
56
- * sort by path, then sha256(path + contents) for each file.
57
- */
58
- export function computeSkillApiHash(
59
- files: Array<{ path: string; contents: string }>
60
- ): string {
61
- const sorted = [...files].sort((a, b) => a.path.localeCompare(b.path));
62
- const hash = createHash("sha256");
63
- for (const file of sorted) {
64
- hash.update(file.path);
65
- hash.update(Buffer.from(file.contents, "utf-8"));
66
- }
67
- return hash.digest("hex");
68
- }
69
-
70
- /**
71
- * Compute a content hash for an already-installed skill folder.
72
- * Sort files by relative path, then hash(relativePath + content) for each.
73
- */
74
- export function computeSkillFolderHash(skillDir: string): string {
75
- const files: Array<{ relativePath: string; content: Buffer }> = [];
76
- collectFiles(skillDir, skillDir, files);
77
- files.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
78
- const hash = createHash("sha256");
79
- for (const file of files) {
80
- hash.update(file.relativePath);
81
- hash.update(file.content);
82
- }
83
- return hash.digest("hex");
84
- }
85
-
86
- function collectFiles(
87
- baseDir: string,
88
- currentDir: string,
89
- results: Array<{ relativePath: string; content: Buffer }>
90
- ): void {
91
- if (!fs.existsSync(currentDir)) return;
92
- const entries = fs.readdirSync(currentDir, { withFileTypes: true });
93
- for (const entry of entries) {
94
- const fullPath = path.join(currentDir, entry.name);
95
- if (entry.isDirectory()) {
96
- if (entry.name === ".git" || entry.name === "node_modules") continue;
97
- collectFiles(baseDir, fullPath, results);
98
- } else if (entry.isFile()) {
99
- const content = fs.readFileSync(fullPath);
100
- const relativePath = path
101
- .relative(baseDir, fullPath)
102
- .split("\\")
103
- .join("/");
104
- results.push({ relativePath, content });
105
- }
106
- }
107
- }
108
-
109
- function fetchJson<T>(url: string): Promise<T> {
110
- return new Promise((resolve, reject) => {
111
- https
112
- .get(url, { headers: { "User-Agent": "knowhow-cli" } }, (res) => {
113
- const chunks: Buffer[] = [];
114
- res.on("data", (chunk: Buffer) => chunks.push(chunk));
115
- res.on("end", () => {
116
- try {
117
- const body = Buffer.concat(chunks).toString("utf-8");
118
- if (res.statusCode && res.statusCode >= 400) {
119
- reject(new Error(`HTTP ${res.statusCode}: ${body}`));
120
- return;
121
- }
122
- resolve(JSON.parse(body) as T);
123
- } catch (e) {
124
- reject(e);
125
- }
126
- });
127
- })
128
- .on("error", reject);
129
- });
130
- }
131
-
132
- function fetchRaw(url: string): Promise<string> {
133
- return new Promise((resolve, reject) => {
134
- https
135
- .get(url, { headers: { "User-Agent": "knowhow-cli" } }, (res) => {
136
- const chunks: Buffer[] = [];
137
- res.on("data", (chunk: Buffer) => chunks.push(chunk));
138
- res.on("end", () => {
139
- const body = Buffer.concat(chunks).toString("utf-8");
140
- if (res.statusCode && res.statusCode >= 400) {
141
- reject(new Error(`HTTP ${res.statusCode} fetching ${url}`));
142
- return;
143
- }
144
- resolve(body);
145
- });
146
- })
147
- .on("error", reject);
148
- });
149
- }
150
-
151
- /**
152
- * Fetch the latest commit SHA for a file path in a GitHub repo.
153
- */
154
- async function fetchLatestCommitHash(
155
- owner: string,
156
- repo: string,
157
- filePath: string
158
- ): Promise<string | undefined> {
159
- try {
160
- const url = `https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/commits?path=${encodeURIComponent(filePath)}&per_page=1`;
161
- const commits = await fetchJson<Array<{ sha: string }>>(url);
162
- if (Array.isArray(commits) && commits.length > 0) {
163
- return commits[0].sha;
164
- }
165
- } catch {
166
- // Non-fatal
167
- }
168
- return undefined;
169
- }
170
-
171
- /**
172
- * Parse a skill reference. Supports:
173
- * - "owner/repo@skill-name"
174
- * - "owner/repo"
175
- * - "https://github.com/owner/repo"
176
- * - "https://github.com/owner/repo@skill-name"
177
- * - GitHub URL with explicit skillName override
178
- */
179
- export function parseSkillRef(
180
- input: string,
181
- skillNameOverride?: string
182
- ): {
183
- owner: string;
184
- repo: string;
185
- skill?: string;
186
- sourceUrl?: string;
187
- } {
188
- // Strip trailing .git
189
- let normalized = input.replace(/\.git$/, "");
190
-
191
- // Extract @skill suffix before URL parsing
192
- let skillFromAt: string | undefined;
193
- const atIdx = normalized.lastIndexOf("@");
194
- // Only treat @ as skill separator if it's not part of the protocol (https://)
195
- if (atIdx > 0 && !normalized.slice(0, atIdx).match(/\/\/$/)) {
196
- const beforeAt = normalized.slice(0, atIdx);
197
- const afterAt = normalized.slice(atIdx + 1);
198
- // Make sure the beforeAt part contains a slash (it's a path, not a protocol)
199
- if (beforeAt.includes("/")) {
200
- skillFromAt = afterAt;
201
- normalized = beforeAt;
202
- }
203
- }
204
-
205
- let owner: string;
206
- let repo: string;
207
- let sourceUrl: string | undefined;
208
-
209
- // GitHub URL format
210
- const githubMatch = normalized.match(
211
- /^https?:\/\/github\.com\/([^/]+)\/([^/]+)\/?$/
212
- );
213
- if (githubMatch) {
214
- owner = githubMatch[1];
215
- repo = githubMatch[2];
216
- sourceUrl = `https://github.com/${owner}/${repo}`;
217
- } else {
218
- // owner/repo format
219
- const parts = normalized.split("/");
220
- if (parts.length < 2) {
221
- throw new Error(
222
- `Invalid skill reference "${input}". Expected formats:\n` +
223
- ` owner/repo@skill-name\n` +
224
- ` https://github.com/owner/repo --skill <name>`
225
- );
226
- }
227
- owner = parts[0];
228
- repo = parts[1];
229
- }
230
-
231
- // Precedence: explicit --skill flag > @skill in string
232
- const skill = skillNameOverride ?? skillFromAt;
233
-
234
- return { owner, repo, skill, sourceUrl };
235
- }
236
-
237
- @TraceAll()
238
- export class SkillsService {
239
- private cwd: string;
240
- private isGlobal: boolean;
241
- private customInstallDir?: string;
242
- public client = new KnowhowSimpleClient();
243
-
244
- constructor(opts: SkillsServiceOptions = {}) {
245
- this.cwd = opts.cwd ?? process.cwd();
246
- this.isGlobal = opts.global ?? false;
247
- this.customInstallDir = opts.installDir;
248
- }
249
-
250
- /** Absolute path to the skills install directory */
251
- getInstallDir(): string {
252
- if (this.customInstallDir) {
253
- return path.isAbsolute(this.customInstallDir)
254
- ? this.customInstallDir
255
- : path.join(this.cwd, this.customInstallDir);
256
- }
257
- if (this.isGlobal) {
258
- return GLOBAL_SKILLS_DIR;
259
- }
260
- return path.join(this.cwd, LOCAL_SKILLS_DIR);
261
- }
262
-
263
- /** Absolute path to the lock file */
264
- getLockPath(): string {
265
- if (this.isGlobal) {
266
- return GLOBAL_LOCK_FILE;
267
- }
268
- if (this.customInstallDir) {
269
- return path.join(this.getInstallDir(), "skills-lock.json");
270
- }
271
- // Local: prefer primary, fall back to legacy
272
- const primary = path.join(this.cwd, LOCK_FILE_PRIMARY);
273
- const legacy = path.join(this.cwd, LOCK_FILE_LEGACY);
274
- if (!fs.existsSync(primary) && fs.existsSync(legacy)) {
275
- return legacy;
276
- }
277
- return primary;
278
- }
279
-
280
- /** Absolute path to where we always write the lock file */
281
- getLockWritePath(): string {
282
- if (this.isGlobal) return GLOBAL_LOCK_FILE;
283
- if (this.customInstallDir) {
284
- return path.join(this.getInstallDir(), "skills-lock.json");
285
- }
286
- return path.join(this.cwd, LOCK_FILE_PRIMARY);
287
- }
288
-
289
- readLock(): SkillsLock {
290
- const lockPath = this.getLockPath();
291
- try {
292
- if (fs.existsSync(lockPath)) {
293
- const content = fs.readFileSync(lockPath, "utf-8");
294
- const parsed = JSON.parse(content) as SkillsLock;
295
- if (typeof parsed.version !== "number" || !parsed.skills) {
296
- return createEmptyLock();
297
- }
298
- return parsed;
299
- }
300
- } catch {
301
- // fall through
302
- }
303
- return createEmptyLock();
304
- }
305
-
306
- writeLock(lock: SkillsLock): void {
307
- const lockPath = this.getLockWritePath();
308
- const dir = path.dirname(lockPath);
309
- fs.mkdirSync(dir, { recursive: true });
310
-
311
- // Sort skills keys for deterministic output
312
- const sortedSkills: Record<string, SkillLockEntry> = {};
313
- for (const key of Object.keys(lock.skills).sort()) {
314
- sortedSkills[key] = lock.skills[key];
315
- }
316
- const sorted: SkillsLock = { version: lock.version, skills: sortedSkills };
317
- fs.writeFileSync(lockPath, JSON.stringify(sorted, null, 2) + "\n", "utf-8");
318
- }
319
-
320
- /**
321
- * Fetch skill from skills.sh CDN API.
322
- */
323
- async fetchSkillFromApi(
324
- owner: string,
325
- repo: string,
326
- skill: string
327
- ): Promise<SkillDownloadResponse> {
328
- const url = `${SKILLS_SH_API}/api/download/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/${encodeURIComponent(skill)}`;
329
- return fetchJson<SkillDownloadResponse>(url);
330
- }
331
-
332
- /**
333
- * Install a skill.
334
- *
335
- * @param skillRef - "owner/repo@skill", "owner/repo", or "https://github.com/owner/repo"
336
- * @param skillNameOverride - explicit skill name (from --skill flag), overrides @skill in ref
337
- */
338
- async add(skillRef: string, skillNameOverride?: string): Promise<void> {
339
- const { owner, repo, skill, sourceUrl } = parseSkillRef(skillRef, skillNameOverride);
340
- const source = `${owner}/${repo}`;
341
-
342
- if (!skill) {
343
- throw new Error(
344
- `Please specify a skill name:\n` +
345
- ` knowhow skills add ${source}@<skill-name>\n` +
346
- ` knowhow skills add https://github.com/${source} --skill <skill-name>`
347
- );
348
- }
349
-
350
- const installDir = this.getInstallDir();
351
- const scope = this.isGlobal ? "globally" : "locally";
352
- console.log(`📦 Fetching skill "${skill}" from ${source} (installing ${scope})...`);
353
-
354
- let download: SkillDownloadResponse;
355
- try {
356
- download = await this.fetchSkillFromApi(owner, repo, skill);
357
- } catch (e) {
358
- const msg = e instanceof Error ? e.message : String(e);
359
- throw new Error(
360
- `Failed to fetch skill "${skill}" from skills.sh API: ${msg}\n` +
361
- `Make sure the skill exists at: https://skills.sh/${source}/${skill}`
362
- );
363
- }
364
-
365
- if (!download.files || download.files.length === 0) {
366
- throw new Error(`No files found for skill "${skill}"`);
367
- }
368
-
369
- // Write files to install dir
370
- const skillInstallDir = path.join(installDir, skill);
371
- fs.mkdirSync(skillInstallDir, { recursive: true });
372
-
373
- for (const file of download.files) {
374
- const filePath = path.join(skillInstallDir, file.path);
375
- const fileDir = path.dirname(filePath);
376
- fs.mkdirSync(fileDir, { recursive: true });
377
- fs.writeFileSync(filePath, file.contents, "utf-8");
378
- }
379
-
380
- // Compute content hash from downloaded files
381
- const computedHash = computeSkillApiHash(download.files);
382
-
383
- if (download.hash && download.hash !== computedHash) {
384
- console.warn(
385
- `⚠ Note: API cached hash (${download.hash}) differs from computed hash (${computedHash}). Storing computed hash.`
386
- );
387
- }
388
-
389
- const skillPath = `skills/${skill}/SKILL.md`;
390
- const commitHash = await fetchLatestCommitHash(owner, repo, skillPath);
391
- if (commitHash) {
392
- console.log(`📎 Pinned to commit ${commitHash.slice(0, 8)}`);
393
- }
394
-
395
- // Update lock
396
- const lock = this.readLock();
397
- lock.skills[skill] = {
398
- source,
399
- sourceType: "github",
400
- skillPath,
401
- computedHash,
402
- ...(commitHash ? { commitHash } : {}),
403
- ...(sourceUrl ? { sourceUrl } : {}),
404
- };
405
- this.writeLock(lock);
406
-
407
- console.log(`✅ Installed skill "${skill}" to ${skillInstallDir}`);
408
- console.log(`🔒 Updated lock file at ${this.getLockWritePath()}`);
409
- }
410
-
411
- /**
412
- * Remove a skill by name.
413
- */
414
- remove(skillName: string): void {
415
- const lock = this.readLock();
416
-
417
- if (!lock.skills[skillName]) {
418
- console.warn(`⚠ Skill "${skillName}" not found in lock file.`);
419
- } else {
420
- delete lock.skills[skillName];
421
- this.writeLock(lock);
422
- console.log(`🗑 Removed "${skillName}" from lock file.`);
423
- }
424
-
425
- const installDir = path.join(this.getInstallDir(), skillName);
426
- if (fs.existsSync(installDir)) {
427
- fs.rmSync(installDir, { recursive: true, force: true });
428
- console.log(`🗑 Deleted ${installDir}`);
429
- } else {
430
- console.warn(`⚠ Skill directory not found: ${installDir}`);
431
- }
432
- }
433
-
434
- /**
435
- * List installed skills from lock file.
436
- */
437
- list(): void {
438
- const lock = this.readLock();
439
- const skillEntries = Object.entries(lock.skills);
440
-
441
- if (skillEntries.length === 0) {
442
- console.log(
443
- "No skills installed. Run `knowhow skills add <owner/repo@skill>` to install one."
444
- );
445
- return;
446
- }
447
-
448
- const installDir = this.getInstallDir();
449
- console.log(`Installed skills (${skillEntries.length}):\n`);
450
- for (const [name, entry] of skillEntries) {
451
- const skillDir = path.join(installDir, name);
452
- const installed = fs.existsSync(skillDir);
453
- const statusIcon = installed ? "✅" : "❌";
454
- console.log(` ${statusIcon} ${name}`);
455
- console.log(` source: ${entry.source}`);
456
- if (entry.skillPath) console.log(` path: ${entry.skillPath}`);
457
- console.log(` hash: ${entry.computedHash}`);
458
- }
459
- }
460
-
461
- /**
462
- * Install all skills from the lock file (restore).
463
- */
464
- async install(): Promise<void> {
465
- const lock = this.readLock();
466
- const skillEntries = Object.entries(lock.skills);
467
-
468
- if (skillEntries.length === 0) {
469
- console.log("No skills in lock file. Nothing to install.");
470
- return;
471
- }
472
-
473
- const installDir = this.getInstallDir();
474
- console.log(`📦 Installing ${skillEntries.length} skill(s) from lock file...\n`);
475
- let installed = 0;
476
- let skipped = 0;
477
- let failed = 0;
478
-
479
- for (const [name, entry] of skillEntries) {
480
- const skillDir = path.join(installDir, name);
481
-
482
- // Check if already installed with correct hash
483
- if (fs.existsSync(skillDir)) {
484
- const currentHash = computeSkillFolderHash(skillDir);
485
- if (currentHash === entry.computedHash) {
486
- console.log(` ⏭ ${name} (already up to date)`);
487
- skipped++;
488
- continue;
489
- }
490
- }
491
-
492
- const parts = entry.source.split("/");
493
- if (parts.length < 2 || entry.sourceType !== "github") {
494
- console.warn(
495
- ` ⚠ ${name}: unsupported sourceType "${entry.sourceType}", skipping`
496
- );
497
- failed++;
498
- continue;
499
- }
500
-
501
- const [owner, repo] = parts;
502
- let skillSlug = name;
503
- if (entry.skillPath) {
504
- const pathParts = entry.skillPath.split("/");
505
- if (pathParts.length >= 2) {
506
- skillSlug = pathParts[pathParts.length - 2];
507
- }
508
- }
509
-
510
- try {
511
- console.log(` 📥 Installing ${name}...`);
512
- const download = await this.fetchSkillFromApi(owner, repo, skillSlug);
513
- const files = download.files;
514
-
515
- fs.mkdirSync(skillDir, { recursive: true });
516
- for (const file of files) {
517
- const filePath = path.join(skillDir, file.path);
518
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
519
- fs.writeFileSync(filePath, file.contents, "utf-8");
520
- }
521
-
522
- const actualHash = computeSkillApiHash(files);
523
- if (actualHash !== entry.computedHash) {
524
- console.warn(
525
- ` ⚠ Hash mismatch for ${name}: locked ${entry.computedHash.slice(0, 16)}..., got ${actualHash.slice(0, 16)}...`
526
- );
527
- } else {
528
- console.log(` ✓ Hash verified`);
529
- }
530
-
531
- console.log(` ✅ ${name}`);
532
- installed++;
533
- } catch (e) {
534
- const msg = e instanceof Error ? e.message : String(e);
535
- console.error(` ❌ ${name}: ${msg}`);
536
- failed++;
537
- }
538
- }
539
-
540
- console.log(
541
- `\nDone: ${installed} installed, ${skipped} skipped, ${failed} failed.`
542
- );
543
- }
544
-
545
- /**
546
- * Update installed skills to their latest version.
547
- */
548
- async update(skillNames?: string[]): Promise<void> {
549
- const lock = this.readLock();
550
- const toUpdate =
551
- skillNames && skillNames.length > 0
552
- ? skillNames
553
- : Object.keys(lock.skills);
554
-
555
- if (toUpdate.length === 0) {
556
- console.log("No skills to update.");
557
- return;
558
- }
559
-
560
- const installDir = this.getInstallDir();
561
- console.log(`🔄 Updating ${toUpdate.length} skill(s)...\n`);
562
- let updated = 0;
563
- let unchanged = 0;
564
- let failed = 0;
565
-
566
- for (const name of toUpdate) {
567
- const entry = lock.skills[name];
568
- if (!entry) {
569
- console.warn(` ⚠ "${name}" not found in lock file, skipping.`);
570
- failed++;
571
- continue;
572
- }
573
-
574
- const parts = entry.source.split("/");
575
- if (parts.length < 2 || entry.sourceType !== "github") {
576
- console.warn(` ⚠ ${name}: unsupported sourceType, skipping`);
577
- failed++;
578
- continue;
579
- }
580
-
581
- const [owner, repo] = parts;
582
- let skillSlug = name;
583
- if (entry.skillPath) {
584
- const pathParts = entry.skillPath.split("/");
585
- if (pathParts.length >= 2) {
586
- skillSlug = pathParts[pathParts.length - 2];
587
- }
588
- }
589
-
590
- try {
591
- const download = await this.fetchSkillFromApi(owner, repo, skillSlug);
592
- const newHash = computeSkillApiHash(download.files);
593
-
594
- if (newHash === entry.computedHash) {
595
- console.log(` ⏭ ${name} (already up to date)`);
596
- unchanged++;
597
- continue;
598
- }
599
-
600
- const skillDir = path.join(installDir, name);
601
- fs.mkdirSync(skillDir, { recursive: true });
602
- for (const file of download.files) {
603
- const filePath = path.join(skillDir, file.path);
604
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
605
- fs.writeFileSync(filePath, file.contents, "utf-8");
606
- }
607
-
608
- lock.skills[name] = { ...entry, computedHash: newHash };
609
- console.log(` ✅ ${name} (updated)`);
610
- updated++;
611
- } catch (e) {
612
- const msg = e instanceof Error ? e.message : String(e);
613
- console.error(` ❌ ${name}: ${msg}`);
614
- failed++;
615
- }
616
- }
617
-
618
- if (updated > 0) {
619
- this.writeLock(lock);
620
- }
621
-
622
- console.log(
623
- `\nDone: ${updated} updated, ${unchanged} unchanged, ${failed} failed.`
624
- );
625
- }
626
-
627
- /**
628
- * Upload locally installed skills (from .knowhow/skills/<name>/SKILL.md) to the backend as behaviors.
629
- * Each skill is upserted: created if it has no id in frontmatter, updated if it does.
630
- */
631
- async upload(): Promise<void> {
632
- const installDir = this.getInstallDir();
633
-
634
- if (!fs.existsSync(installDir)) {
635
- console.error(
636
- `No skills directory found at ${installDir}. Run 'knowhow skills add <ref>' first.`
637
- );
638
- return;
639
- }
640
-
641
- const entries = fs.readdirSync(installDir, { withFileTypes: true });
642
- const skillDirs = entries.filter((e) => e.isDirectory());
643
-
644
- if (skillDirs.length === 0) {
645
- console.log("No skill directories found. Nothing to upload.");
646
- return;
647
- }
648
-
649
- let uploaded = 0;
650
- let failed = 0;
651
-
652
- for (const dir of skillDirs) {
653
- const skillFile = path.join(installDir, dir.name, "SKILL.md");
654
- if (!fs.existsSync(skillFile)) {
655
- console.warn(` ⚠ ${dir.name}: no SKILL.md found, skipping.`);
656
- continue;
657
- }
658
-
659
- try {
660
- const raw = fs.readFileSync(skillFile, "utf-8");
661
- const behavior = this.parseSkillMd(raw, dir.name);
662
-
663
- // Always mark as a skill
664
- const payload: Record<string, unknown> = {
665
- ...behavior,
666
- isSkill: true,
667
- };
668
-
669
- if (behavior.id) {
670
- await this.client.updateOrgBehavior(behavior.id as string, payload);
671
- console.log(` 📝 Updated: ${behavior.name} (${behavior.id as string})`);
672
- } else {
673
- const result = await this.client.createOrgBehavior(payload);
674
- const created = result.data as Record<string, unknown>;
675
- if (created.id) {
676
- // Write the assigned id back into the SKILL.md frontmatter so future uploads update instead of create
677
- const withId = this.injectIdIntoSkillMd(raw, created.id as string);
678
- fs.writeFileSync(skillFile, withId, "utf-8");
679
- console.log(` ✨ Created: ${behavior.name} (id: ${created.id})`);
680
- } else {
681
- console.log(` ✨ Created: ${behavior.name}`);
682
- }
683
- }
684
- uploaded++;
685
- } catch (e) {
686
- const msg = e instanceof Error ? e.message : String(e);
687
- console.error(` ❌ ${dir.name}: ${msg}`);
688
- failed++;
689
- }
690
- }
691
-
692
- console.log(`\nUploaded ${uploaded} skill(s). Failed: ${failed}.`);
693
- }
694
-
695
- /**
696
- * Download skill behaviors from the backend and write them as SKILL.md files
697
- * into the skills install directory (.knowhow/skills/<name>/SKILL.md).
698
- */
699
- async download(): Promise<void> {
700
- const installDir = this.getInstallDir();
701
- const result = await this.client.getOrgSkills(false); // false = exclude platform/internal skills
702
- const skills = result.data as Record<string, unknown>[];
703
-
704
- if (skills.length === 0) {
705
- console.log("No skills found on backend.");
706
- return;
707
- }
708
-
709
- let created = 0;
710
- let updated = 0;
711
- let unchanged = 0;
712
-
713
- for (const skill of skills) {
714
- const name = ((skill.name as string) || "unnamed")
715
- .toLowerCase()
716
- .replace(/[^a-z0-9-]+/g, "-");
717
- const skillDir = path.join(installDir, name);
718
- fs.mkdirSync(skillDir, { recursive: true });
719
-
720
- const skillFile = path.join(skillDir, "SKILL.md");
721
- const content = this.serializeSkillMd(skill);
722
-
723
- const hash = (s: string) => createHash("sha256").update(s).digest("hex");
724
- if (!fs.existsSync(skillFile)) {
725
- fs.writeFileSync(skillFile, content, "utf-8");
726
- console.log(` ✨ Created: ${skillFile}`);
727
- created++;
728
- } else {
729
- const existing = fs.readFileSync(skillFile, "utf-8");
730
- if (hash(existing) !== hash(content)) {
731
- fs.writeFileSync(skillFile, content, "utf-8");
732
- console.log(` 📝 Updated: ${skillFile}`);
733
- updated++;
734
- } else {
735
- unchanged++;
736
- }
737
- }
738
- }
739
-
740
- console.log(
741
- `\nSync complete: ${created} created, ${updated} updated, ${unchanged} unchanged → ${installDir}/`
742
- );
743
- }
744
-
745
- /**
746
- * Parse a SKILL.md file into a behavior object.
747
- * Falls back to using the directory name if name is missing from frontmatter.
748
- */
749
- private parseSkillMd(content: string, fallbackName: string): Record<string, unknown> {
750
- const match = content.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
751
- if (!match) {
752
- return { name: fallbackName, description: "", instructions: content.trim(), isSkill: true };
753
- }
754
-
755
- const meta: Record<string, string> = {};
756
- for (const line of match[1].split("\n")) {
757
- const colonIdx = line.indexOf(":");
758
- if (colonIdx > 0) {
759
- const key = line.slice(0, colonIdx).trim();
760
- const val = line.slice(colonIdx + 1).trim();
761
- meta[key] = val;
762
- }
763
- }
764
-
765
- return {
766
- id: meta.id || undefined,
767
- name: meta.name || fallbackName,
768
- description: meta.description || "",
769
- instructions: match[2].trim(),
770
- textTrigger: meta.textTrigger || undefined,
771
- semanticTriggerText: meta.semanticTriggerText || undefined,
772
- model: meta.model || undefined,
773
- mcpServers: meta.mcpServers || undefined,
774
- tools: meta.tools || undefined,
775
- embeddings: meta.embeddings || undefined,
776
- isSkill: true,
777
- isPublic: meta.isPublic === "true",
778
- };
779
- }
780
-
781
- /**
782
- * Serialize a backend behavior record as a SKILL.md string.
783
- */
784
- private serializeSkillMd(skill: Record<string, unknown>): string {
785
- const lines: string[] = ["---"];
786
- lines.push(`name: ${skill.name || ""}`);
787
- lines.push(`description: ${skill.description || ""}`);
788
- if (skill.model) lines.push(`model: ${skill.model}`);
789
- if (skill.textTrigger) lines.push(`textTrigger: ${skill.textTrigger}`);
790
- if (skill.semanticTriggerText) lines.push(`semanticTriggerText: ${skill.semanticTriggerText}`);
791
- if (skill.mcpServers) lines.push(`mcpServers: ${skill.mcpServers}`);
792
- if (skill.tools) lines.push(`tools: ${skill.tools}`);
793
- if (skill.embeddings) lines.push(`embeddings: ${skill.embeddings}`);
794
- if (skill.isPublic !== undefined) lines.push(`isPublic: ${skill.isPublic}`);
795
- if (skill.id) lines.push(`id: ${skill.id}`);
796
- lines.push("---");
797
- lines.push("");
798
- lines.push(((skill.instructions as string) || "").trim());
799
- lines.push("");
800
- return lines.join("\n");
801
- }
802
-
803
- /**
804
- * Inject or replace the `id:` field in a SKILL.md frontmatter.
805
- */
806
- private injectIdIntoSkillMd(content: string, id: string): string {
807
- const match = content.match(/^(---\n[\s\S]*?\n---\n?)([\s\S]*)$/);
808
- if (!match) return content;
809
-
810
- let frontmatter = match[1];
811
- const body = match[2];
812
-
813
- if (/^id:/m.test(frontmatter)) {
814
- frontmatter = frontmatter.replace(/^id:.*$/m, `id: ${id}`);
815
- } else {
816
- // Insert before closing ---
817
- frontmatter = frontmatter.replace(/\n---\n?$/, `\nid: ${id}\n---\n`);
818
- }
819
-
820
- return frontmatter + body;
821
- }
822
- }