@compass-ai/nova 1.0.74 → 1.0.76

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 (973) hide show
  1. package/dist/cli.js +557 -555
  2. package/dist/index.js +10 -8
  3. package/package.json +1 -1
  4. package/dist/acp/agent.d.ts +0 -318
  5. package/dist/acp/agent.d.ts.map +0 -1
  6. package/dist/acp/agent.js +0 -795
  7. package/dist/acp/agent.js.map +0 -1
  8. package/dist/acp/backpressure-writer.d.ts +0 -49
  9. package/dist/acp/backpressure-writer.d.ts.map +0 -1
  10. package/dist/acp/backpressure-writer.js +0 -153
  11. package/dist/acp/backpressure-writer.js.map +0 -1
  12. package/dist/acp/event-adapter.d.ts +0 -242
  13. package/dist/acp/event-adapter.d.ts.map +0 -1
  14. package/dist/acp/event-adapter.js +0 -456
  15. package/dist/acp/event-adapter.js.map +0 -1
  16. package/dist/acp/index.d.ts +0 -30
  17. package/dist/acp/index.d.ts.map +0 -1
  18. package/dist/acp/index.js +0 -36
  19. package/dist/acp/index.js.map +0 -1
  20. package/dist/acp/modes.d.ts +0 -56
  21. package/dist/acp/modes.d.ts.map +0 -1
  22. package/dist/acp/modes.js +0 -135
  23. package/dist/acp/modes.js.map +0 -1
  24. package/dist/acp/session-manager.d.ts +0 -170
  25. package/dist/acp/session-manager.d.ts.map +0 -1
  26. package/dist/acp/session-manager.js +0 -381
  27. package/dist/acp/session-manager.js.map +0 -1
  28. package/dist/acp/text-coalescer.d.ts +0 -45
  29. package/dist/acp/text-coalescer.d.ts.map +0 -1
  30. package/dist/acp/text-coalescer.js +0 -110
  31. package/dist/acp/text-coalescer.js.map +0 -1
  32. package/dist/acp/tool-bridge.d.ts +0 -156
  33. package/dist/acp/tool-bridge.d.ts.map +0 -1
  34. package/dist/acp/tool-bridge.js +0 -381
  35. package/dist/acp/tool-bridge.js.map +0 -1
  36. package/dist/acp/types.d.ts +0 -314
  37. package/dist/acp/types.d.ts.map +0 -1
  38. package/dist/acp/types.js +0 -8
  39. package/dist/acp/types.js.map +0 -1
  40. package/dist/cli.d.ts +0 -9
  41. package/dist/cli.d.ts.map +0 -1
  42. package/dist/cli.js.map +0 -1
  43. package/dist/commands/acp.d.ts +0 -26
  44. package/dist/commands/acp.d.ts.map +0 -1
  45. package/dist/commands/acp.js +0 -492
  46. package/dist/commands/acp.js.map +0 -1
  47. package/dist/commands/cache.d.ts +0 -33
  48. package/dist/commands/cache.d.ts.map +0 -1
  49. package/dist/commands/cache.js +0 -537
  50. package/dist/commands/cache.js.map +0 -1
  51. package/dist/commands/config.d.ts +0 -10
  52. package/dist/commands/config.d.ts.map +0 -1
  53. package/dist/commands/config.js +0 -367
  54. package/dist/commands/config.js.map +0 -1
  55. package/dist/commands/consent.d.ts +0 -21
  56. package/dist/commands/consent.d.ts.map +0 -1
  57. package/dist/commands/consent.js +0 -334
  58. package/dist/commands/consent.js.map +0 -1
  59. package/dist/commands/data.d.ts +0 -24
  60. package/dist/commands/data.d.ts.map +0 -1
  61. package/dist/commands/data.js +0 -586
  62. package/dist/commands/data.js.map +0 -1
  63. package/dist/commands/index.d.ts +0 -145
  64. package/dist/commands/index.d.ts.map +0 -1
  65. package/dist/commands/index.js +0 -210
  66. package/dist/commands/index.js.map +0 -1
  67. package/dist/commands/init.d.ts +0 -106
  68. package/dist/commands/init.d.ts.map +0 -1
  69. package/dist/commands/init.js +0 -349
  70. package/dist/commands/init.js.map +0 -1
  71. package/dist/commands/logs.d.ts +0 -13
  72. package/dist/commands/logs.d.ts.map +0 -1
  73. package/dist/commands/logs.js +0 -359
  74. package/dist/commands/logs.js.map +0 -1
  75. package/dist/commands/mcp.d.ts +0 -20
  76. package/dist/commands/mcp.d.ts.map +0 -1
  77. package/dist/commands/mcp.js +0 -687
  78. package/dist/commands/mcp.js.map +0 -1
  79. package/dist/commands/reset.d.ts +0 -20
  80. package/dist/commands/reset.d.ts.map +0 -1
  81. package/dist/commands/reset.js +0 -372
  82. package/dist/commands/reset.js.map +0 -1
  83. package/dist/commands/setup.d.ts +0 -74
  84. package/dist/commands/setup.d.ts.map +0 -1
  85. package/dist/commands/setup.js +0 -863
  86. package/dist/commands/setup.js.map +0 -1
  87. package/dist/commands/slash/agents.d.ts +0 -40
  88. package/dist/commands/slash/agents.d.ts.map +0 -1
  89. package/dist/commands/slash/agents.js +0 -519
  90. package/dist/commands/slash/agents.js.map +0 -1
  91. package/dist/commands/slash/approve.d.ts +0 -46
  92. package/dist/commands/slash/approve.d.ts.map +0 -1
  93. package/dist/commands/slash/approve.js +0 -239
  94. package/dist/commands/slash/approve.js.map +0 -1
  95. package/dist/commands/slash/attach.d.ts +0 -70
  96. package/dist/commands/slash/attach.d.ts.map +0 -1
  97. package/dist/commands/slash/attach.js +0 -333
  98. package/dist/commands/slash/attach.js.map +0 -1
  99. package/dist/commands/slash/clear.d.ts +0 -47
  100. package/dist/commands/slash/clear.d.ts.map +0 -1
  101. package/dist/commands/slash/clear.js +0 -261
  102. package/dist/commands/slash/clear.js.map +0 -1
  103. package/dist/commands/slash/commit.d.ts +0 -40
  104. package/dist/commands/slash/commit.d.ts.map +0 -1
  105. package/dist/commands/slash/commit.js +0 -337
  106. package/dist/commands/slash/commit.js.map +0 -1
  107. package/dist/commands/slash/compact.d.ts +0 -48
  108. package/dist/commands/slash/compact.d.ts.map +0 -1
  109. package/dist/commands/slash/compact.js +0 -288
  110. package/dist/commands/slash/compact.js.map +0 -1
  111. package/dist/commands/slash/config.d.ts +0 -20
  112. package/dist/commands/slash/config.d.ts.map +0 -1
  113. package/dist/commands/slash/config.js +0 -136
  114. package/dist/commands/slash/config.js.map +0 -1
  115. package/dist/commands/slash/context.d.ts +0 -49
  116. package/dist/commands/slash/context.d.ts.map +0 -1
  117. package/dist/commands/slash/context.js +0 -430
  118. package/dist/commands/slash/context.js.map +0 -1
  119. package/dist/commands/slash/cost.d.ts +0 -34
  120. package/dist/commands/slash/cost.d.ts.map +0 -1
  121. package/dist/commands/slash/cost.js +0 -312
  122. package/dist/commands/slash/cost.js.map +0 -1
  123. package/dist/commands/slash/custom.d.ts +0 -41
  124. package/dist/commands/slash/custom.d.ts.map +0 -1
  125. package/dist/commands/slash/custom.js +0 -126
  126. package/dist/commands/slash/custom.js.map +0 -1
  127. package/dist/commands/slash/exit.d.ts +0 -25
  128. package/dist/commands/slash/exit.d.ts.map +0 -1
  129. package/dist/commands/slash/exit.js +0 -186
  130. package/dist/commands/slash/exit.js.map +0 -1
  131. package/dist/commands/slash/export.d.ts +0 -27
  132. package/dist/commands/slash/export.d.ts.map +0 -1
  133. package/dist/commands/slash/export.js +0 -318
  134. package/dist/commands/slash/export.js.map +0 -1
  135. package/dist/commands/slash/files.d.ts +0 -47
  136. package/dist/commands/slash/files.d.ts.map +0 -1
  137. package/dist/commands/slash/files.js +0 -521
  138. package/dist/commands/slash/files.js.map +0 -1
  139. package/dist/commands/slash/help.d.ts +0 -50
  140. package/dist/commands/slash/help.d.ts.map +0 -1
  141. package/dist/commands/slash/help.js +0 -282
  142. package/dist/commands/slash/help.js.map +0 -1
  143. package/dist/commands/slash/index-cmd.d.ts +0 -41
  144. package/dist/commands/slash/index-cmd.d.ts.map +0 -1
  145. package/dist/commands/slash/index-cmd.js +0 -349
  146. package/dist/commands/slash/index-cmd.js.map +0 -1
  147. package/dist/commands/slash/index.d.ts +0 -97
  148. package/dist/commands/slash/index.d.ts.map +0 -1
  149. package/dist/commands/slash/index.js +0 -251
  150. package/dist/commands/slash/index.js.map +0 -1
  151. package/dist/commands/slash/login.d.ts +0 -23
  152. package/dist/commands/slash/login.d.ts.map +0 -1
  153. package/dist/commands/slash/login.js +0 -175
  154. package/dist/commands/slash/login.js.map +0 -1
  155. package/dist/commands/slash/logout.d.ts +0 -23
  156. package/dist/commands/slash/logout.d.ts.map +0 -1
  157. package/dist/commands/slash/logout.js +0 -153
  158. package/dist/commands/slash/logout.js.map +0 -1
  159. package/dist/commands/slash/logs.d.ts +0 -29
  160. package/dist/commands/slash/logs.d.ts.map +0 -1
  161. package/dist/commands/slash/logs.js +0 -423
  162. package/dist/commands/slash/logs.js.map +0 -1
  163. package/dist/commands/slash/mcp.d.ts +0 -29
  164. package/dist/commands/slash/mcp.d.ts.map +0 -1
  165. package/dist/commands/slash/mcp.js +0 -1026
  166. package/dist/commands/slash/mcp.js.map +0 -1
  167. package/dist/commands/slash/model.d.ts +0 -60
  168. package/dist/commands/slash/model.d.ts.map +0 -1
  169. package/dist/commands/slash/model.js +0 -466
  170. package/dist/commands/slash/model.js.map +0 -1
  171. package/dist/commands/slash/personality.d.ts +0 -40
  172. package/dist/commands/slash/personality.d.ts.map +0 -1
  173. package/dist/commands/slash/personality.js +0 -272
  174. package/dist/commands/slash/personality.js.map +0 -1
  175. package/dist/commands/slash/purge.d.ts +0 -42
  176. package/dist/commands/slash/purge.d.ts.map +0 -1
  177. package/dist/commands/slash/purge.js +0 -233
  178. package/dist/commands/slash/purge.js.map +0 -1
  179. package/dist/commands/slash/reset.d.ts +0 -44
  180. package/dist/commands/slash/reset.d.ts.map +0 -1
  181. package/dist/commands/slash/reset.js +0 -326
  182. package/dist/commands/slash/reset.js.map +0 -1
  183. package/dist/commands/slash/skills.d.ts +0 -40
  184. package/dist/commands/slash/skills.d.ts.map +0 -1
  185. package/dist/commands/slash/skills.js +0 -207
  186. package/dist/commands/slash/skills.js.map +0 -1
  187. package/dist/commands/slash/tokens.d.ts +0 -34
  188. package/dist/commands/slash/tokens.d.ts.map +0 -1
  189. package/dist/commands/slash/tokens.js +0 -205
  190. package/dist/commands/slash/tokens.js.map +0 -1
  191. package/dist/commands/slash/unleash.d.ts +0 -50
  192. package/dist/commands/slash/unleash.d.ts.map +0 -1
  193. package/dist/commands/slash/unleash.js +0 -262
  194. package/dist/commands/slash/unleash.js.map +0 -1
  195. package/dist/commands/slash/update.d.ts +0 -34
  196. package/dist/commands/slash/update.d.ts.map +0 -1
  197. package/dist/commands/slash/update.js +0 -364
  198. package/dist/commands/slash/update.js.map +0 -1
  199. package/dist/commands/slash/wrap.d.ts +0 -18
  200. package/dist/commands/slash/wrap.d.ts.map +0 -1
  201. package/dist/commands/slash/wrap.js +0 -21
  202. package/dist/commands/slash/wrap.js.map +0 -1
  203. package/dist/commands/tokens.d.ts +0 -26
  204. package/dist/commands/tokens.d.ts.map +0 -1
  205. package/dist/commands/tokens.js +0 -245
  206. package/dist/commands/tokens.js.map +0 -1
  207. package/dist/constants/builtin-agents.d.ts +0 -27
  208. package/dist/constants/builtin-agents.d.ts.map +0 -1
  209. package/dist/constants/builtin-agents.js +0 -710
  210. package/dist/constants/builtin-agents.js.map +0 -1
  211. package/dist/constants/builtin-skills.d.ts +0 -32
  212. package/dist/constants/builtin-skills.d.ts.map +0 -1
  213. package/dist/constants/builtin-skills.js +0 -389
  214. package/dist/constants/builtin-skills.js.map +0 -1
  215. package/dist/constants/defaults.d.ts +0 -448
  216. package/dist/constants/defaults.d.ts.map +0 -1
  217. package/dist/constants/defaults.js +0 -829
  218. package/dist/constants/defaults.js.map +0 -1
  219. package/dist/constants/index.d.ts +0 -27
  220. package/dist/constants/index.d.ts.map +0 -1
  221. package/dist/constants/index.js +0 -85
  222. package/dist/constants/index.js.map +0 -1
  223. package/dist/constants/install-hints.d.ts +0 -7
  224. package/dist/constants/install-hints.d.ts.map +0 -1
  225. package/dist/constants/install-hints.js +0 -123
  226. package/dist/constants/install-hints.js.map +0 -1
  227. package/dist/constants/models.d.ts +0 -255
  228. package/dist/constants/models.d.ts.map +0 -1
  229. package/dist/constants/models.js +0 -596
  230. package/dist/constants/models.js.map +0 -1
  231. package/dist/constants/schedule.d.ts +0 -43
  232. package/dist/constants/schedule.d.ts.map +0 -1
  233. package/dist/constants/schedule.js +0 -110
  234. package/dist/constants/schedule.js.map +0 -1
  235. package/dist/constants/system-utilities.d.ts +0 -57
  236. package/dist/constants/system-utilities.d.ts.map +0 -1
  237. package/dist/constants/system-utilities.js +0 -421
  238. package/dist/constants/system-utilities.js.map +0 -1
  239. package/dist/constants/token-limits.d.ts +0 -102
  240. package/dist/constants/token-limits.d.ts.map +0 -1
  241. package/dist/constants/token-limits.js +0 -286
  242. package/dist/constants/token-limits.js.map +0 -1
  243. package/dist/core/autocomplete.d.ts +0 -132
  244. package/dist/core/autocomplete.d.ts.map +0 -1
  245. package/dist/core/autocomplete.js +0 -653
  246. package/dist/core/autocomplete.js.map +0 -1
  247. package/dist/core/command-parser.d.ts +0 -301
  248. package/dist/core/command-parser.d.ts.map +0 -1
  249. package/dist/core/command-parser.js +0 -526
  250. package/dist/core/command-parser.js.map +0 -1
  251. package/dist/core/context-builder.d.ts +0 -264
  252. package/dist/core/context-builder.d.ts.map +0 -1
  253. package/dist/core/context-builder.js +0 -1018
  254. package/dist/core/context-builder.js.map +0 -1
  255. package/dist/core/event-emitter.d.ts +0 -411
  256. package/dist/core/event-emitter.d.ts.map +0 -1
  257. package/dist/core/event-emitter.js +0 -138
  258. package/dist/core/event-emitter.js.map +0 -1
  259. package/dist/core/history-manager.d.ts +0 -62
  260. package/dist/core/history-manager.d.ts.map +0 -1
  261. package/dist/core/history-manager.js +0 -151
  262. package/dist/core/history-manager.js.map +0 -1
  263. package/dist/core/slash-command-handler.d.ts +0 -352
  264. package/dist/core/slash-command-handler.d.ts.map +0 -1
  265. package/dist/core/slash-command-handler.js +0 -563
  266. package/dist/core/slash-command-handler.js.map +0 -1
  267. package/dist/core/task-processor.d.ts +0 -179
  268. package/dist/core/task-processor.d.ts.map +0 -1
  269. package/dist/core/task-processor.js +0 -519
  270. package/dist/core/task-processor.js.map +0 -1
  271. package/dist/index.d.ts +0 -90
  272. package/dist/index.d.ts.map +0 -1
  273. package/dist/index.js.map +0 -1
  274. package/dist/prompts/agent-prompt-generator.d.ts +0 -26
  275. package/dist/prompts/agent-prompt-generator.d.ts.map +0 -1
  276. package/dist/prompts/agent-prompt-generator.js +0 -244
  277. package/dist/prompts/agent-prompt-generator.js.map +0 -1
  278. package/dist/prompts/commit-message.d.ts +0 -35
  279. package/dist/prompts/commit-message.d.ts.map +0 -1
  280. package/dist/prompts/commit-message.js +0 -187
  281. package/dist/prompts/commit-message.js.map +0 -1
  282. package/dist/prompts/conversation.d.ts +0 -51
  283. package/dist/prompts/conversation.d.ts.map +0 -1
  284. package/dist/prompts/conversation.js +0 -115
  285. package/dist/prompts/conversation.js.map +0 -1
  286. package/dist/prompts/index.d.ts +0 -39
  287. package/dist/prompts/index.d.ts.map +0 -1
  288. package/dist/prompts/index.js +0 -74
  289. package/dist/prompts/index.js.map +0 -1
  290. package/dist/prompts/memory.d.ts +0 -6
  291. package/dist/prompts/memory.d.ts.map +0 -1
  292. package/dist/prompts/memory.js +0 -29
  293. package/dist/prompts/memory.js.map +0 -1
  294. package/dist/prompts/personality.d.ts +0 -77
  295. package/dist/prompts/personality.d.ts.map +0 -1
  296. package/dist/prompts/personality.js +0 -393
  297. package/dist/prompts/personality.js.map +0 -1
  298. package/dist/prompts/plan-generator.d.ts +0 -144
  299. package/dist/prompts/plan-generator.d.ts.map +0 -1
  300. package/dist/prompts/plan-generator.js +0 -553
  301. package/dist/prompts/plan-generator.js.map +0 -1
  302. package/dist/prompts/system.d.ts +0 -95
  303. package/dist/prompts/system.d.ts.map +0 -1
  304. package/dist/prompts/system.js +0 -461
  305. package/dist/prompts/system.js.map +0 -1
  306. package/dist/prompts/task-processor.d.ts +0 -94
  307. package/dist/prompts/task-processor.d.ts.map +0 -1
  308. package/dist/prompts/task-processor.js +0 -554
  309. package/dist/prompts/task-processor.js.map +0 -1
  310. package/dist/prompts/unguarded.d.ts +0 -78
  311. package/dist/prompts/unguarded.d.ts.map +0 -1
  312. package/dist/prompts/unguarded.js +0 -418
  313. package/dist/prompts/unguarded.js.map +0 -1
  314. package/dist/prompts/utils.d.ts +0 -73
  315. package/dist/prompts/utils.d.ts.map +0 -1
  316. package/dist/prompts/utils.js +0 -114
  317. package/dist/prompts/utils.js.map +0 -1
  318. package/dist/prompts/workflow.d.ts +0 -241
  319. package/dist/prompts/workflow.d.ts.map +0 -1
  320. package/dist/prompts/workflow.js +0 -608
  321. package/dist/prompts/workflow.js.map +0 -1
  322. package/dist/services/action-logger.d.ts +0 -383
  323. package/dist/services/action-logger.d.ts.map +0 -1
  324. package/dist/services/action-logger.js +0 -544
  325. package/dist/services/action-logger.js.map +0 -1
  326. package/dist/services/agent-budget-allocator.d.ts +0 -111
  327. package/dist/services/agent-budget-allocator.d.ts.map +0 -1
  328. package/dist/services/agent-budget-allocator.js +0 -278
  329. package/dist/services/agent-budget-allocator.js.map +0 -1
  330. package/dist/services/agent-manager.d.ts +0 -181
  331. package/dist/services/agent-manager.d.ts.map +0 -1
  332. package/dist/services/agent-manager.js +0 -749
  333. package/dist/services/agent-manager.js.map +0 -1
  334. package/dist/services/agent-spawner.d.ts +0 -138
  335. package/dist/services/agent-spawner.d.ts.map +0 -1
  336. package/dist/services/agent-spawner.js +0 -748
  337. package/dist/services/agent-spawner.js.map +0 -1
  338. package/dist/services/agent-state-service.d.ts +0 -145
  339. package/dist/services/agent-state-service.d.ts.map +0 -1
  340. package/dist/services/agent-state-service.js +0 -247
  341. package/dist/services/agent-state-service.js.map +0 -1
  342. package/dist/services/anthropic-client.d.ts +0 -357
  343. package/dist/services/anthropic-client.d.ts.map +0 -1
  344. package/dist/services/anthropic-client.js +0 -1451
  345. package/dist/services/anthropic-client.js.map +0 -1
  346. package/dist/services/approval-manager.d.ts +0 -385
  347. package/dist/services/approval-manager.d.ts.map +0 -1
  348. package/dist/services/approval-manager.js +0 -1044
  349. package/dist/services/approval-manager.js.map +0 -1
  350. package/dist/services/audit-logger.d.ts +0 -245
  351. package/dist/services/audit-logger.d.ts.map +0 -1
  352. package/dist/services/audit-logger.js +0 -324
  353. package/dist/services/audit-logger.js.map +0 -1
  354. package/dist/services/backup-manager.d.ts +0 -136
  355. package/dist/services/backup-manager.d.ts.map +0 -1
  356. package/dist/services/backup-manager.js +0 -260
  357. package/dist/services/backup-manager.js.map +0 -1
  358. package/dist/services/cache-service.d.ts +0 -247
  359. package/dist/services/cache-service.d.ts.map +0 -1
  360. package/dist/services/cache-service.js +0 -558
  361. package/dist/services/cache-service.js.map +0 -1
  362. package/dist/services/chat-archival-service.d.ts +0 -108
  363. package/dist/services/chat-archival-service.d.ts.map +0 -1
  364. package/dist/services/chat-archival-service.js +0 -465
  365. package/dist/services/chat-archival-service.js.map +0 -1
  366. package/dist/services/codebase-indexer.d.ts +0 -272
  367. package/dist/services/codebase-indexer.d.ts.map +0 -1
  368. package/dist/services/codebase-indexer.js +0 -863
  369. package/dist/services/codebase-indexer.js.map +0 -1
  370. package/dist/services/compass-auth-service.d.ts +0 -204
  371. package/dist/services/compass-auth-service.d.ts.map +0 -1
  372. package/dist/services/compass-auth-service.js +0 -391
  373. package/dist/services/compass-auth-service.js.map +0 -1
  374. package/dist/services/complexity-classifier.d.ts +0 -208
  375. package/dist/services/complexity-classifier.d.ts.map +0 -1
  376. package/dist/services/complexity-classifier.js +0 -1410
  377. package/dist/services/complexity-classifier.js.map +0 -1
  378. package/dist/services/config-manager.d.ts +0 -278
  379. package/dist/services/config-manager.d.ts.map +0 -1
  380. package/dist/services/config-manager.js +0 -651
  381. package/dist/services/config-manager.js.map +0 -1
  382. package/dist/services/consent-manager.d.ts +0 -239
  383. package/dist/services/consent-manager.d.ts.map +0 -1
  384. package/dist/services/consent-manager.js +0 -516
  385. package/dist/services/consent-manager.js.map +0 -1
  386. package/dist/services/conversation-compactor.d.ts +0 -223
  387. package/dist/services/conversation-compactor.d.ts.map +0 -1
  388. package/dist/services/conversation-compactor.js +0 -750
  389. package/dist/services/conversation-compactor.js.map +0 -1
  390. package/dist/services/cost-tracker.d.ts +0 -167
  391. package/dist/services/cost-tracker.d.ts.map +0 -1
  392. package/dist/services/cost-tracker.js +0 -199
  393. package/dist/services/cost-tracker.js.map +0 -1
  394. package/dist/services/credential-store.d.ts +0 -273
  395. package/dist/services/credential-store.d.ts.map +0 -1
  396. package/dist/services/credential-store.js +0 -877
  397. package/dist/services/credential-store.js.map +0 -1
  398. package/dist/services/custom-command-service.d.ts +0 -112
  399. package/dist/services/custom-command-service.d.ts.map +0 -1
  400. package/dist/services/custom-command-service.js +0 -464
  401. package/dist/services/custom-command-service.js.map +0 -1
  402. package/dist/services/default-statusline-renderer.d.ts +0 -60
  403. package/dist/services/default-statusline-renderer.d.ts.map +0 -1
  404. package/dist/services/default-statusline-renderer.js +0 -110
  405. package/dist/services/default-statusline-renderer.js.map +0 -1
  406. package/dist/services/enhanced-context-gatherer.d.ts +0 -116
  407. package/dist/services/enhanced-context-gatherer.d.ts.map +0 -1
  408. package/dist/services/enhanced-context-gatherer.js +0 -605
  409. package/dist/services/enhanced-context-gatherer.js.map +0 -1
  410. package/dist/services/file-hash-tracker.d.ts +0 -95
  411. package/dist/services/file-hash-tracker.d.ts.map +0 -1
  412. package/dist/services/file-hash-tracker.js +0 -199
  413. package/dist/services/file-hash-tracker.js.map +0 -1
  414. package/dist/services/file-service.d.ts +0 -274
  415. package/dist/services/file-service.d.ts.map +0 -1
  416. package/dist/services/file-service.js +0 -876
  417. package/dist/services/file-service.js.map +0 -1
  418. package/dist/services/git-service.d.ts +0 -536
  419. package/dist/services/git-service.d.ts.map +0 -1
  420. package/dist/services/git-service.js +0 -1215
  421. package/dist/services/git-service.js.map +0 -1
  422. package/dist/services/hook-service.d.ts +0 -148
  423. package/dist/services/hook-service.d.ts.map +0 -1
  424. package/dist/services/hook-service.js +0 -705
  425. package/dist/services/hook-service.js.map +0 -1
  426. package/dist/services/ide-state-service.d.ts +0 -114
  427. package/dist/services/ide-state-service.d.ts.map +0 -1
  428. package/dist/services/ide-state-service.js +0 -204
  429. package/dist/services/ide-state-service.js.map +0 -1
  430. package/dist/services/interactive-clarifier.d.ts +0 -90
  431. package/dist/services/interactive-clarifier.d.ts.map +0 -1
  432. package/dist/services/interactive-clarifier.js +0 -446
  433. package/dist/services/interactive-clarifier.js.map +0 -1
  434. package/dist/services/iteration-scoper.d.ts +0 -225
  435. package/dist/services/iteration-scoper.d.ts.map +0 -1
  436. package/dist/services/iteration-scoper.js +0 -387
  437. package/dist/services/iteration-scoper.js.map +0 -1
  438. package/dist/services/llm-plan-generator.d.ts +0 -44
  439. package/dist/services/llm-plan-generator.d.ts.map +0 -1
  440. package/dist/services/llm-plan-generator.js +0 -863
  441. package/dist/services/llm-plan-generator.js.map +0 -1
  442. package/dist/services/llm-system-prompt-generator.d.ts +0 -85
  443. package/dist/services/llm-system-prompt-generator.d.ts.map +0 -1
  444. package/dist/services/llm-system-prompt-generator.js +0 -257
  445. package/dist/services/llm-system-prompt-generator.js.map +0 -1
  446. package/dist/services/log-interpreter.d.ts +0 -190
  447. package/dist/services/log-interpreter.d.ts.map +0 -1
  448. package/dist/services/log-interpreter.js +0 -520
  449. package/dist/services/log-interpreter.js.map +0 -1
  450. package/dist/services/mcp-config-manager.d.ts +0 -141
  451. package/dist/services/mcp-config-manager.d.ts.map +0 -1
  452. package/dist/services/mcp-config-manager.js +0 -678
  453. package/dist/services/mcp-config-manager.js.map +0 -1
  454. package/dist/services/mcp-oauth-service.d.ts +0 -170
  455. package/dist/services/mcp-oauth-service.d.ts.map +0 -1
  456. package/dist/services/mcp-oauth-service.js +0 -892
  457. package/dist/services/mcp-oauth-service.js.map +0 -1
  458. package/dist/services/mcp-plugin-support.d.ts +0 -81
  459. package/dist/services/mcp-plugin-support.d.ts.map +0 -1
  460. package/dist/services/mcp-plugin-support.js +0 -305
  461. package/dist/services/mcp-plugin-support.js.map +0 -1
  462. package/dist/services/mcp-server-manager.d.ts +0 -134
  463. package/dist/services/mcp-server-manager.d.ts.map +0 -1
  464. package/dist/services/mcp-server-manager.js +0 -613
  465. package/dist/services/mcp-server-manager.js.map +0 -1
  466. package/dist/services/mcp-tool-integration.d.ts +0 -119
  467. package/dist/services/mcp-tool-integration.d.ts.map +0 -1
  468. package/dist/services/mcp-tool-integration.js +0 -381
  469. package/dist/services/mcp-tool-integration.js.map +0 -1
  470. package/dist/services/mcp-transport.d.ts +0 -105
  471. package/dist/services/mcp-transport.d.ts.map +0 -1
  472. package/dist/services/mcp-transport.js +0 -1316
  473. package/dist/services/mcp-transport.js.map +0 -1
  474. package/dist/services/memory-service.d.ts +0 -55
  475. package/dist/services/memory-service.d.ts.map +0 -1
  476. package/dist/services/memory-service.js +0 -251
  477. package/dist/services/memory-service.js.map +0 -1
  478. package/dist/services/model-availability.d.ts +0 -64
  479. package/dist/services/model-availability.d.ts.map +0 -1
  480. package/dist/services/model-availability.js +0 -114
  481. package/dist/services/model-availability.js.map +0 -1
  482. package/dist/services/plan-generator.d.ts +0 -98
  483. package/dist/services/plan-generator.d.ts.map +0 -1
  484. package/dist/services/plan-generator.js +0 -658
  485. package/dist/services/plan-generator.js.map +0 -1
  486. package/dist/services/plan-mode-fallback.d.ts +0 -80
  487. package/dist/services/plan-mode-fallback.d.ts.map +0 -1
  488. package/dist/services/plan-mode-fallback.js +0 -307
  489. package/dist/services/plan-mode-fallback.js.map +0 -1
  490. package/dist/services/plan-mode-handler.d.ts +0 -42
  491. package/dist/services/plan-mode-handler.d.ts.map +0 -1
  492. package/dist/services/plan-mode-handler.js +0 -388
  493. package/dist/services/plan-mode-handler.js.map +0 -1
  494. package/dist/services/plan-persistence.d.ts +0 -203
  495. package/dist/services/plan-persistence.d.ts.map +0 -1
  496. package/dist/services/plan-persistence.js +0 -538
  497. package/dist/services/plan-persistence.js.map +0 -1
  498. package/dist/services/prompt-preprocessor.d.ts +0 -73
  499. package/dist/services/prompt-preprocessor.d.ts.map +0 -1
  500. package/dist/services/prompt-preprocessor.js +0 -146
  501. package/dist/services/prompt-preprocessor.js.map +0 -1
  502. package/dist/services/rating-service.d.ts +0 -84
  503. package/dist/services/rating-service.d.ts.map +0 -1
  504. package/dist/services/rating-service.js +0 -171
  505. package/dist/services/rating-service.js.map +0 -1
  506. package/dist/services/rating-state-manager.d.ts +0 -131
  507. package/dist/services/rating-state-manager.d.ts.map +0 -1
  508. package/dist/services/rating-state-manager.js +0 -270
  509. package/dist/services/rating-state-manager.js.map +0 -1
  510. package/dist/services/sdk-runner.d.ts +0 -113
  511. package/dist/services/sdk-runner.d.ts.map +0 -1
  512. package/dist/services/sdk-runner.js +0 -1424
  513. package/dist/services/sdk-runner.js.map +0 -1
  514. package/dist/services/session-manager.d.ts +0 -528
  515. package/dist/services/session-manager.d.ts.map +0 -1
  516. package/dist/services/session-manager.js +0 -1184
  517. package/dist/services/session-manager.js.map +0 -1
  518. package/dist/services/shell-executor.d.ts +0 -337
  519. package/dist/services/shell-executor.d.ts.map +0 -1
  520. package/dist/services/shell-executor.js +0 -1201
  521. package/dist/services/shell-executor.js.map +0 -1
  522. package/dist/services/skill-service.d.ts +0 -149
  523. package/dist/services/skill-service.d.ts.map +0 -1
  524. package/dist/services/skill-service.js +0 -594
  525. package/dist/services/skill-service.js.map +0 -1
  526. package/dist/services/statusline-executor.d.ts +0 -102
  527. package/dist/services/statusline-executor.d.ts.map +0 -1
  528. package/dist/services/statusline-executor.js +0 -305
  529. package/dist/services/statusline-executor.js.map +0 -1
  530. package/dist/services/step-tracker.d.ts +0 -356
  531. package/dist/services/step-tracker.d.ts.map +0 -1
  532. package/dist/services/step-tracker.js +0 -634
  533. package/dist/services/step-tracker.js.map +0 -1
  534. package/dist/services/system-event-logger.d.ts +0 -473
  535. package/dist/services/system-event-logger.d.ts.map +0 -1
  536. package/dist/services/system-event-logger.js +0 -790
  537. package/dist/services/system-event-logger.js.map +0 -1
  538. package/dist/services/system-utility-detector.d.ts +0 -91
  539. package/dist/services/system-utility-detector.d.ts.map +0 -1
  540. package/dist/services/system-utility-detector.js +0 -238
  541. package/dist/services/system-utility-detector.js.map +0 -1
  542. package/dist/services/team-context-store.d.ts +0 -100
  543. package/dist/services/team-context-store.d.ts.map +0 -1
  544. package/dist/services/team-context-store.js +0 -513
  545. package/dist/services/team-context-store.js.map +0 -1
  546. package/dist/services/temp-file-service.d.ts +0 -164
  547. package/dist/services/temp-file-service.d.ts.map +0 -1
  548. package/dist/services/temp-file-service.js +0 -303
  549. package/dist/services/temp-file-service.js.map +0 -1
  550. package/dist/services/token-limit-enforcer.d.ts +0 -53
  551. package/dist/services/token-limit-enforcer.d.ts.map +0 -1
  552. package/dist/services/token-limit-enforcer.js +0 -90
  553. package/dist/services/token-limit-enforcer.js.map +0 -1
  554. package/dist/services/token-limit-store.d.ts +0 -105
  555. package/dist/services/token-limit-store.d.ts.map +0 -1
  556. package/dist/services/token-limit-store.js +0 -288
  557. package/dist/services/token-limit-store.js.map +0 -1
  558. package/dist/services/token-tracker.d.ts +0 -290
  559. package/dist/services/token-tracker.d.ts.map +0 -1
  560. package/dist/services/token-tracker.js +0 -751
  561. package/dist/services/token-tracker.js.map +0 -1
  562. package/dist/services/tool-registry.d.ts +0 -302
  563. package/dist/services/tool-registry.d.ts.map +0 -1
  564. package/dist/services/tool-registry.js +0 -606
  565. package/dist/services/tool-registry.js.map +0 -1
  566. package/dist/services/tools-logger.d.ts +0 -152
  567. package/dist/services/tools-logger.d.ts.map +0 -1
  568. package/dist/services/tools-logger.js +0 -222
  569. package/dist/services/tools-logger.js.map +0 -1
  570. package/dist/services/update-plan-handler.d.ts +0 -56
  571. package/dist/services/update-plan-handler.d.ts.map +0 -1
  572. package/dist/services/update-plan-handler.js +0 -372
  573. package/dist/services/update-plan-handler.js.map +0 -1
  574. package/dist/services/update-service.d.ts +0 -197
  575. package/dist/services/update-service.d.ts.map +0 -1
  576. package/dist/services/update-service.js +0 -749
  577. package/dist/services/update-service.js.map +0 -1
  578. package/dist/services/verifier.d.ts +0 -113
  579. package/dist/services/verifier.d.ts.map +0 -1
  580. package/dist/services/verifier.js +0 -541
  581. package/dist/services/verifier.js.map +0 -1
  582. package/dist/services/workflow-manager.d.ts +0 -277
  583. package/dist/services/workflow-manager.d.ts.map +0 -1
  584. package/dist/services/workflow-manager.js +0 -616
  585. package/dist/services/workflow-manager.js.map +0 -1
  586. package/dist/services/workflow-orchestrator.d.ts +0 -148
  587. package/dist/services/workflow-orchestrator.d.ts.map +0 -1
  588. package/dist/services/workflow-orchestrator.js +0 -617
  589. package/dist/services/workflow-orchestrator.js.map +0 -1
  590. package/dist/services/worktree-manager.d.ts +0 -36
  591. package/dist/services/worktree-manager.d.ts.map +0 -1
  592. package/dist/services/worktree-manager.js +0 -185
  593. package/dist/services/worktree-manager.js.map +0 -1
  594. package/dist/templates/ascii-art.d.ts +0 -136
  595. package/dist/templates/ascii-art.d.ts.map +0 -1
  596. package/dist/templates/ascii-art.js +0 -286
  597. package/dist/templates/ascii-art.js.map +0 -1
  598. package/dist/templates/help.d.ts +0 -186
  599. package/dist/templates/help.d.ts.map +0 -1
  600. package/dist/templates/help.js +0 -588
  601. package/dist/templates/help.js.map +0 -1
  602. package/dist/templates/prompts/workflow-prompts.d.ts +0 -9
  603. package/dist/templates/prompts/workflow-prompts.d.ts.map +0 -1
  604. package/dist/templates/prompts/workflow-prompts.js +0 -9
  605. package/dist/templates/prompts/workflow-prompts.js.map +0 -1
  606. package/dist/tools/agent-tools.d.ts +0 -9
  607. package/dist/tools/agent-tools.d.ts.map +0 -1
  608. package/dist/tools/agent-tools.js +0 -349
  609. package/dist/tools/agent-tools.js.map +0 -1
  610. package/dist/tools/edit-replacers.d.ts +0 -90
  611. package/dist/tools/edit-replacers.d.ts.map +0 -1
  612. package/dist/tools/edit-replacers.js +0 -553
  613. package/dist/tools/edit-replacers.js.map +0 -1
  614. package/dist/tools/file-tools.d.ts +0 -13
  615. package/dist/tools/file-tools.d.ts.map +0 -1
  616. package/dist/tools/file-tools.js +0 -954
  617. package/dist/tools/file-tools.js.map +0 -1
  618. package/dist/tools/git-tools.d.ts +0 -9
  619. package/dist/tools/git-tools.d.ts.map +0 -1
  620. package/dist/tools/git-tools.js +0 -261
  621. package/dist/tools/git-tools.js.map +0 -1
  622. package/dist/tools/index.d.ts +0 -13
  623. package/dist/tools/index.d.ts.map +0 -1
  624. package/dist/tools/index.js +0 -70
  625. package/dist/tools/index.js.map +0 -1
  626. package/dist/tools/network-tools.d.ts +0 -8
  627. package/dist/tools/network-tools.d.ts.map +0 -1
  628. package/dist/tools/network-tools.js +0 -261
  629. package/dist/tools/network-tools.js.map +0 -1
  630. package/dist/tools/openai-tools.d.ts +0 -16
  631. package/dist/tools/openai-tools.d.ts.map +0 -1
  632. package/dist/tools/openai-tools.js +0 -385
  633. package/dist/tools/openai-tools.js.map +0 -1
  634. package/dist/tools/plan-tools.d.ts +0 -9
  635. package/dist/tools/plan-tools.d.ts.map +0 -1
  636. package/dist/tools/plan-tools.js +0 -223
  637. package/dist/tools/plan-tools.js.map +0 -1
  638. package/dist/tools/schedule-tools.d.ts +0 -9
  639. package/dist/tools/schedule-tools.d.ts.map +0 -1
  640. package/dist/tools/schedule-tools.js +0 -405
  641. package/dist/tools/schedule-tools.js.map +0 -1
  642. package/dist/tools/search-tools.d.ts +0 -8
  643. package/dist/tools/search-tools.d.ts.map +0 -1
  644. package/dist/tools/search-tools.js +0 -357
  645. package/dist/tools/search-tools.js.map +0 -1
  646. package/dist/tools/shared-utils.d.ts +0 -91
  647. package/dist/tools/shared-utils.d.ts.map +0 -1
  648. package/dist/tools/shared-utils.js +0 -385
  649. package/dist/tools/shared-utils.js.map +0 -1
  650. package/dist/tools/shell-tools.d.ts +0 -9
  651. package/dist/tools/shell-tools.d.ts.map +0 -1
  652. package/dist/tools/shell-tools.js +0 -409
  653. package/dist/tools/shell-tools.js.map +0 -1
  654. package/dist/tools/skill-tools.d.ts +0 -13
  655. package/dist/tools/skill-tools.d.ts.map +0 -1
  656. package/dist/tools/skill-tools.js +0 -244
  657. package/dist/tools/skill-tools.js.map +0 -1
  658. package/dist/tools/swarm-tools.d.ts +0 -9
  659. package/dist/tools/swarm-tools.d.ts.map +0 -1
  660. package/dist/tools/swarm-tools.js +0 -422
  661. package/dist/tools/swarm-tools.js.map +0 -1
  662. package/dist/tools/user-tools.d.ts +0 -13
  663. package/dist/tools/user-tools.d.ts.map +0 -1
  664. package/dist/tools/user-tools.js +0 -232
  665. package/dist/tools/user-tools.js.map +0 -1
  666. package/dist/types/agent-process.d.ts +0 -244
  667. package/dist/types/agent-process.d.ts.map +0 -1
  668. package/dist/types/agent-process.js +0 -93
  669. package/dist/types/agent-process.js.map +0 -1
  670. package/dist/types/agent.d.ts +0 -358
  671. package/dist/types/agent.d.ts.map +0 -1
  672. package/dist/types/agent.js +0 -171
  673. package/dist/types/agent.js.map +0 -1
  674. package/dist/types/anthropic.d.ts +0 -438
  675. package/dist/types/anthropic.d.ts.map +0 -1
  676. package/dist/types/anthropic.js +0 -9
  677. package/dist/types/anthropic.js.map +0 -1
  678. package/dist/types/approval.d.ts +0 -332
  679. package/dist/types/approval.d.ts.map +0 -1
  680. package/dist/types/approval.js +0 -44
  681. package/dist/types/approval.js.map +0 -1
  682. package/dist/types/autocomplete.d.ts +0 -57
  683. package/dist/types/autocomplete.d.ts.map +0 -1
  684. package/dist/types/autocomplete.js +0 -7
  685. package/dist/types/autocomplete.js.map +0 -1
  686. package/dist/types/chat-archive.d.ts +0 -161
  687. package/dist/types/chat-archive.d.ts.map +0 -1
  688. package/dist/types/chat-archive.js +0 -36
  689. package/dist/types/chat-archive.js.map +0 -1
  690. package/dist/types/config.d.ts +0 -268
  691. package/dist/types/config.d.ts.map +0 -1
  692. package/dist/types/config.js +0 -188
  693. package/dist/types/config.js.map +0 -1
  694. package/dist/types/consent.d.ts +0 -191
  695. package/dist/types/consent.d.ts.map +0 -1
  696. package/dist/types/consent.js +0 -119
  697. package/dist/types/consent.js.map +0 -1
  698. package/dist/types/custom-command.d.ts +0 -139
  699. package/dist/types/custom-command.d.ts.map +0 -1
  700. package/dist/types/custom-command.js +0 -7
  701. package/dist/types/custom-command.js.map +0 -1
  702. package/dist/types/git.d.ts +0 -20
  703. package/dist/types/git.d.ts.map +0 -1
  704. package/dist/types/git.js +0 -2
  705. package/dist/types/git.js.map +0 -1
  706. package/dist/types/hook.d.ts +0 -342
  707. package/dist/types/hook.d.ts.map +0 -1
  708. package/dist/types/hook.js +0 -84
  709. package/dist/types/hook.js.map +0 -1
  710. package/dist/types/index.d.ts +0 -86
  711. package/dist/types/index.d.ts.map +0 -1
  712. package/dist/types/index.js +0 -71
  713. package/dist/types/index.js.map +0 -1
  714. package/dist/types/mcp.d.ts +0 -456
  715. package/dist/types/mcp.d.ts.map +0 -1
  716. package/dist/types/mcp.js +0 -94
  717. package/dist/types/mcp.js.map +0 -1
  718. package/dist/types/rating.d.ts +0 -110
  719. package/dist/types/rating.d.ts.map +0 -1
  720. package/dist/types/rating.js +0 -53
  721. package/dist/types/rating.js.map +0 -1
  722. package/dist/types/schedule.d.ts +0 -91
  723. package/dist/types/schedule.d.ts.map +0 -1
  724. package/dist/types/schedule.js +0 -8
  725. package/dist/types/schedule.js.map +0 -1
  726. package/dist/types/session.d.ts +0 -361
  727. package/dist/types/session.d.ts.map +0 -1
  728. package/dist/types/session.js +0 -9
  729. package/dist/types/session.js.map +0 -1
  730. package/dist/types/skill.d.ts +0 -258
  731. package/dist/types/skill.d.ts.map +0 -1
  732. package/dist/types/skill.js +0 -79
  733. package/dist/types/skill.js.map +0 -1
  734. package/dist/types/statusline.d.ts +0 -212
  735. package/dist/types/statusline.d.ts.map +0 -1
  736. package/dist/types/statusline.js +0 -8
  737. package/dist/types/statusline.js.map +0 -1
  738. package/dist/types/stream.d.ts +0 -61
  739. package/dist/types/stream.d.ts.map +0 -1
  740. package/dist/types/stream.js +0 -17
  741. package/dist/types/stream.js.map +0 -1
  742. package/dist/types/swarm.d.ts +0 -132
  743. package/dist/types/swarm.d.ts.map +0 -1
  744. package/dist/types/swarm.js +0 -21
  745. package/dist/types/swarm.js.map +0 -1
  746. package/dist/types/token-limits.d.ts +0 -107
  747. package/dist/types/token-limits.d.ts.map +0 -1
  748. package/dist/types/token-limits.js +0 -57
  749. package/dist/types/token-limits.js.map +0 -1
  750. package/dist/types/token.d.ts +0 -329
  751. package/dist/types/token.d.ts.map +0 -1
  752. package/dist/types/token.js +0 -9
  753. package/dist/types/token.js.map +0 -1
  754. package/dist/types/update.d.ts +0 -189
  755. package/dist/types/update.d.ts.map +0 -1
  756. package/dist/types/update.js +0 -55
  757. package/dist/types/update.js.map +0 -1
  758. package/dist/types/workflow.d.ts +0 -396
  759. package/dist/types/workflow.d.ts.map +0 -1
  760. package/dist/types/workflow.js +0 -46
  761. package/dist/types/workflow.js.map +0 -1
  762. package/dist/ui/App.d.ts +0 -62
  763. package/dist/ui/App.d.ts.map +0 -1
  764. package/dist/ui/App.js +0 -511
  765. package/dist/ui/App.js.map +0 -1
  766. package/dist/ui/InteractiveSession.d.ts +0 -34
  767. package/dist/ui/InteractiveSession.d.ts.map +0 -1
  768. package/dist/ui/InteractiveSession.js +0 -3611
  769. package/dist/ui/InteractiveSession.js.map +0 -1
  770. package/dist/ui/MCPApprovalPrompt.d.ts +0 -27
  771. package/dist/ui/MCPApprovalPrompt.d.ts.map +0 -1
  772. package/dist/ui/MCPApprovalPrompt.js +0 -51
  773. package/dist/ui/MCPApprovalPrompt.js.map +0 -1
  774. package/dist/ui/SetupWizard.d.ts +0 -26
  775. package/dist/ui/SetupWizard.d.ts.map +0 -1
  776. package/dist/ui/SetupWizard.js +0 -396
  777. package/dist/ui/SetupWizard.js.map +0 -1
  778. package/dist/ui/components/AgentCreationWizard.d.ts +0 -36
  779. package/dist/ui/components/AgentCreationWizard.d.ts.map +0 -1
  780. package/dist/ui/components/AgentCreationWizard.js +0 -619
  781. package/dist/ui/components/AgentCreationWizard.js.map +0 -1
  782. package/dist/ui/components/AgentManager.d.ts +0 -41
  783. package/dist/ui/components/AgentManager.d.ts.map +0 -1
  784. package/dist/ui/components/AgentManager.js +0 -343
  785. package/dist/ui/components/AgentManager.js.map +0 -1
  786. package/dist/ui/components/ApprovalDialog.d.ts +0 -18
  787. package/dist/ui/components/ApprovalDialog.d.ts.map +0 -1
  788. package/dist/ui/components/ApprovalDialog.js +0 -439
  789. package/dist/ui/components/ApprovalDialog.js.map +0 -1
  790. package/dist/ui/components/AsciiArt.d.ts +0 -54
  791. package/dist/ui/components/AsciiArt.d.ts.map +0 -1
  792. package/dist/ui/components/AsciiArt.js +0 -89
  793. package/dist/ui/components/AsciiArt.js.map +0 -1
  794. package/dist/ui/components/ClarificationWizard.d.ts +0 -36
  795. package/dist/ui/components/ClarificationWizard.d.ts.map +0 -1
  796. package/dist/ui/components/ClarificationWizard.js +0 -407
  797. package/dist/ui/components/ClarificationWizard.js.map +0 -1
  798. package/dist/ui/components/CompassSpinner.d.ts +0 -15
  799. package/dist/ui/components/CompassSpinner.d.ts.map +0 -1
  800. package/dist/ui/components/CompassSpinner.js +0 -50
  801. package/dist/ui/components/CompassSpinner.js.map +0 -1
  802. package/dist/ui/components/ConfirmationSelector.d.ts +0 -45
  803. package/dist/ui/components/ConfirmationSelector.d.ts.map +0 -1
  804. package/dist/ui/components/ConfirmationSelector.js +0 -106
  805. package/dist/ui/components/ConfirmationSelector.js.map +0 -1
  806. package/dist/ui/components/ContextUsage.d.ts +0 -76
  807. package/dist/ui/components/ContextUsage.d.ts.map +0 -1
  808. package/dist/ui/components/ContextUsage.js +0 -188
  809. package/dist/ui/components/ContextUsage.js.map +0 -1
  810. package/dist/ui/components/DiffPreview.d.ts +0 -13
  811. package/dist/ui/components/DiffPreview.d.ts.map +0 -1
  812. package/dist/ui/components/DiffPreview.js +0 -30
  813. package/dist/ui/components/DiffPreview.js.map +0 -1
  814. package/dist/ui/components/ExecutionModeSelector.d.ts +0 -45
  815. package/dist/ui/components/ExecutionModeSelector.d.ts.map +0 -1
  816. package/dist/ui/components/ExecutionModeSelector.js +0 -120
  817. package/dist/ui/components/ExecutionModeSelector.js.map +0 -1
  818. package/dist/ui/components/FileTree.d.ts +0 -47
  819. package/dist/ui/components/FileTree.d.ts.map +0 -1
  820. package/dist/ui/components/FileTree.js +0 -258
  821. package/dist/ui/components/FileTree.js.map +0 -1
  822. package/dist/ui/components/HelpMenu.d.ts +0 -49
  823. package/dist/ui/components/HelpMenu.d.ts.map +0 -1
  824. package/dist/ui/components/HelpMenu.js +0 -91
  825. package/dist/ui/components/HelpMenu.js.map +0 -1
  826. package/dist/ui/components/InterleavedStream.d.ts +0 -42
  827. package/dist/ui/components/InterleavedStream.d.ts.map +0 -1
  828. package/dist/ui/components/InterleavedStream.js +0 -1500
  829. package/dist/ui/components/InterleavedStream.js.map +0 -1
  830. package/dist/ui/components/ModelSelector.d.ts +0 -81
  831. package/dist/ui/components/ModelSelector.d.ts.map +0 -1
  832. package/dist/ui/components/ModelSelector.js +0 -305
  833. package/dist/ui/components/ModelSelector.js.map +0 -1
  834. package/dist/ui/components/PlanApprovalDialog.d.ts +0 -21
  835. package/dist/ui/components/PlanApprovalDialog.d.ts.map +0 -1
  836. package/dist/ui/components/PlanApprovalDialog.js +0 -189
  837. package/dist/ui/components/PlanApprovalDialog.js.map +0 -1
  838. package/dist/ui/components/PlanExecutionTracker.d.ts +0 -53
  839. package/dist/ui/components/PlanExecutionTracker.d.ts.map +0 -1
  840. package/dist/ui/components/PlanExecutionTracker.js +0 -113
  841. package/dist/ui/components/PlanExecutionTracker.js.map +0 -1
  842. package/dist/ui/components/ProgressIndicator.d.ts +0 -151
  843. package/dist/ui/components/ProgressIndicator.d.ts.map +0 -1
  844. package/dist/ui/components/ProgressIndicator.js +0 -171
  845. package/dist/ui/components/ProgressIndicator.js.map +0 -1
  846. package/dist/ui/components/Prompt.d.ts +0 -47
  847. package/dist/ui/components/Prompt.d.ts.map +0 -1
  848. package/dist/ui/components/Prompt.js +0 -632
  849. package/dist/ui/components/Prompt.js.map +0 -1
  850. package/dist/ui/components/RatingPanel.d.ts +0 -45
  851. package/dist/ui/components/RatingPanel.d.ts.map +0 -1
  852. package/dist/ui/components/RatingPanel.js +0 -119
  853. package/dist/ui/components/RatingPanel.js.map +0 -1
  854. package/dist/ui/components/StatusLine.d.ts +0 -43
  855. package/dist/ui/components/StatusLine.d.ts.map +0 -1
  856. package/dist/ui/components/StatusLine.js +0 -44
  857. package/dist/ui/components/StatusLine.js.map +0 -1
  858. package/dist/ui/components/StreamingResponse.d.ts +0 -45
  859. package/dist/ui/components/StreamingResponse.d.ts.map +0 -1
  860. package/dist/ui/components/StreamingResponse.js +0 -56
  861. package/dist/ui/components/StreamingResponse.js.map +0 -1
  862. package/dist/ui/components/TokenUsage.d.ts +0 -89
  863. package/dist/ui/components/TokenUsage.d.ts.map +0 -1
  864. package/dist/ui/components/TokenUsage.js +0 -99
  865. package/dist/ui/components/TokenUsage.js.map +0 -1
  866. package/dist/ui/components/ToolSummary.d.ts +0 -77
  867. package/dist/ui/components/ToolSummary.d.ts.map +0 -1
  868. package/dist/ui/components/ToolSummary.js +0 -162
  869. package/dist/ui/components/ToolSummary.js.map +0 -1
  870. package/dist/ui/components/UpdateNotification.d.ts +0 -65
  871. package/dist/ui/components/UpdateNotification.d.ts.map +0 -1
  872. package/dist/ui/components/UpdateNotification.js +0 -166
  873. package/dist/ui/components/UpdateNotification.js.map +0 -1
  874. package/dist/ui/diff-renderer.d.ts +0 -18
  875. package/dist/ui/diff-renderer.d.ts.map +0 -1
  876. package/dist/ui/diff-renderer.js +0 -206
  877. package/dist/ui/diff-renderer.js.map +0 -1
  878. package/dist/ui/themes/markdown-theme.d.ts +0 -48
  879. package/dist/ui/themes/markdown-theme.d.ts.map +0 -1
  880. package/dist/ui/themes/markdown-theme.js +0 -79
  881. package/dist/ui/themes/markdown-theme.js.map +0 -1
  882. package/dist/ui/themes/ui-theme.d.ts +0 -301
  883. package/dist/ui/themes/ui-theme.d.ts.map +0 -1
  884. package/dist/ui/themes/ui-theme.js +0 -204
  885. package/dist/ui/themes/ui-theme.js.map +0 -1
  886. package/dist/utils/attachment-handler.d.ts +0 -129
  887. package/dist/utils/attachment-handler.d.ts.map +0 -1
  888. package/dist/utils/attachment-handler.js +0 -280
  889. package/dist/utils/attachment-handler.js.map +0 -1
  890. package/dist/utils/backup-cleanup.d.ts +0 -28
  891. package/dist/utils/backup-cleanup.d.ts.map +0 -1
  892. package/dist/utils/backup-cleanup.js +0 -99
  893. package/dist/utils/backup-cleanup.js.map +0 -1
  894. package/dist/utils/clipboard-handler.d.ts +0 -82
  895. package/dist/utils/clipboard-handler.d.ts.map +0 -1
  896. package/dist/utils/clipboard-handler.js +0 -311
  897. package/dist/utils/clipboard-handler.js.map +0 -1
  898. package/dist/utils/cloud-detection.d.ts +0 -14
  899. package/dist/utils/cloud-detection.d.ts.map +0 -1
  900. package/dist/utils/cloud-detection.js +0 -92
  901. package/dist/utils/cloud-detection.js.map +0 -1
  902. package/dist/utils/command-parser.d.ts +0 -56
  903. package/dist/utils/command-parser.d.ts.map +0 -1
  904. package/dist/utils/command-parser.js +0 -206
  905. package/dist/utils/command-parser.js.map +0 -1
  906. package/dist/utils/console-capture.d.ts +0 -30
  907. package/dist/utils/console-capture.d.ts.map +0 -1
  908. package/dist/utils/console-capture.js +0 -88
  909. package/dist/utils/console-capture.js.map +0 -1
  910. package/dist/utils/cron-parser.d.ts +0 -52
  911. package/dist/utils/cron-parser.d.ts.map +0 -1
  912. package/dist/utils/cron-parser.js +0 -455
  913. package/dist/utils/cron-parser.js.map +0 -1
  914. package/dist/utils/crypto.d.ts +0 -351
  915. package/dist/utils/crypto.d.ts.map +0 -1
  916. package/dist/utils/crypto.js +0 -615
  917. package/dist/utils/crypto.js.map +0 -1
  918. package/dist/utils/diff.d.ts +0 -311
  919. package/dist/utils/diff.d.ts.map +0 -1
  920. package/dist/utils/diff.js +0 -566
  921. package/dist/utils/diff.js.map +0 -1
  922. package/dist/utils/editor.d.ts +0 -12
  923. package/dist/utils/editor.d.ts.map +0 -1
  924. package/dist/utils/editor.js +0 -30
  925. package/dist/utils/editor.js.map +0 -1
  926. package/dist/utils/file-system.d.ts +0 -512
  927. package/dist/utils/file-system.d.ts.map +0 -1
  928. package/dist/utils/file-system.js +0 -798
  929. package/dist/utils/file-system.js.map +0 -1
  930. package/dist/utils/format.d.ts +0 -318
  931. package/dist/utils/format.d.ts.map +0 -1
  932. package/dist/utils/format.js +0 -587
  933. package/dist/utils/format.js.map +0 -1
  934. package/dist/utils/ignore-patterns.d.ts +0 -93
  935. package/dist/utils/ignore-patterns.d.ts.map +0 -1
  936. package/dist/utils/ignore-patterns.js +0 -710
  937. package/dist/utils/ignore-patterns.js.map +0 -1
  938. package/dist/utils/log-cleanup.d.ts +0 -16
  939. package/dist/utils/log-cleanup.d.ts.map +0 -1
  940. package/dist/utils/log-cleanup.js +0 -51
  941. package/dist/utils/log-cleanup.js.map +0 -1
  942. package/dist/utils/logger.d.ts +0 -305
  943. package/dist/utils/logger.d.ts.map +0 -1
  944. package/dist/utils/logger.js +0 -447
  945. package/dist/utils/logger.js.map +0 -1
  946. package/dist/utils/path.d.ts +0 -406
  947. package/dist/utils/path.d.ts.map +0 -1
  948. package/dist/utils/path.js +0 -549
  949. package/dist/utils/path.js.map +0 -1
  950. package/dist/utils/schedule-file.d.ts +0 -63
  951. package/dist/utils/schedule-file.d.ts.map +0 -1
  952. package/dist/utils/schedule-file.js +0 -244
  953. package/dist/utils/schedule-file.js.map +0 -1
  954. package/dist/utils/task-id.d.ts +0 -29
  955. package/dist/utils/task-id.d.ts.map +0 -1
  956. package/dist/utils/task-id.js +0 -53
  957. package/dist/utils/task-id.js.map +0 -1
  958. package/dist/utils/temp-cleanup.d.ts +0 -46
  959. package/dist/utils/temp-cleanup.d.ts.map +0 -1
  960. package/dist/utils/temp-cleanup.js +0 -95
  961. package/dist/utils/temp-cleanup.js.map +0 -1
  962. package/dist/utils/terminal-output.d.ts +0 -34
  963. package/dist/utils/terminal-output.d.ts.map +0 -1
  964. package/dist/utils/terminal-output.js +0 -40
  965. package/dist/utils/terminal-output.js.map +0 -1
  966. package/dist/utils/token-counter.d.ts +0 -224
  967. package/dist/utils/token-counter.d.ts.map +0 -1
  968. package/dist/utils/token-counter.js +0 -332
  969. package/dist/utils/token-counter.js.map +0 -1
  970. package/dist/utils/tool-mapper.d.ts +0 -70
  971. package/dist/utils/tool-mapper.d.ts.map +0 -1
  972. package/dist/utils/tool-mapper.js +0 -234
  973. package/dist/utils/tool-mapper.js.map +0 -1
@@ -1,1424 +0,0 @@
1
- /**
2
- * SDK Runner Service for non-interactive CLI mode
3
- *
4
- * This service handles the -p flag functionality where the CLI runs a single
5
- * query and exits. It provides the full agentic experience (tools, MCP, etc.)
6
- * with output suitable for programmatic consumption.
7
- *
8
- * Key features:
9
- * - Full agentic loop with tool execution
10
- * - MCP tool integration
11
- * - Streaming output to stdout
12
- * - Auto-approval mode for non-interactive use
13
- * - Piped input support with size limits
14
- */
15
- import { getAnthropicClient } from './anthropic-client.js';
16
- import { getSessionManager } from './session-manager.js';
17
- import { getTokenTracker } from './token-tracker.js';
18
- import { getConfigManager } from './config-manager.js';
19
- import { getConsentManager } from './consent-manager.js';
20
- import { getCredentialStore } from './credential-store.js';
21
- import { getContextBuilder } from '../core/context-builder.js';
22
- import { getToolRegistry } from './tool-registry.js';
23
- import { registerBuiltInTools } from '../tools/index.js';
24
- import { getMCPToolIntegration } from './mcp-tool-integration.js';
25
- import { getApprovalManager } from './approval-manager.js';
26
- import { getAuditLogger } from './audit-logger.js';
27
- import { buildSystemPrompt } from '../prompts/index.js';
28
- import { getSystemUtilitiesPromptSection } from './system-utility-detector.js';
29
- import { loadAllMemory } from './memory-service.js';
30
- import { ensureDir } from '../utils/file-system.js';
31
- import { getGlobalCompassDir, getProjectCompassDir } from '../utils/path.js';
32
- import { logger } from '../utils/logger.js';
33
- import { buildAttachmentContentBlocks } from '../utils/attachment-handler.js';
34
- import { ApprovalMode } from '../types/approval.js';
35
- import { getCompassAuthService } from './compass-auth-service.js';
36
- import { DEFAULT_MAX_TOKENS, DEFAULT_MAX_AGENTIC_ITERATIONS } from '../constants/defaults.js';
37
- import chalk from 'chalk';
38
- /** Maximum size for piped input in bytes (100KB) */
39
- const MAX_PIPED_INPUT_SIZE = 100 * 1024;
40
- /** Timeout for reading stdin in milliseconds */
41
- const STDIN_READ_TIMEOUT = 500;
42
- /**
43
- * Extracts a short summary from an error message
44
- */
45
- function summarizeError(error) {
46
- // Extract key information from common error patterns
47
- if (error.includes('not unique')) {
48
- const match = error.match(/Found (\d+) occurrences/i);
49
- return match ? `non-unique match (${match[1]} occurrences)` : 'non-unique match';
50
- }
51
- if (error.includes('not found in file')) {
52
- return 'text not found';
53
- }
54
- if (error.includes('Permission denied')) {
55
- return 'permission denied';
56
- }
57
- if (error.includes('File not found') || error.includes('ENOENT')) {
58
- return 'file not found';
59
- }
60
- // Fallback: truncate long errors
61
- const cleanError = error.replace(/^Error:\s*/i, '');
62
- return cleanError.length > 50 ? cleanError.slice(0, 47) + '...' : cleanError;
63
- }
64
- /**
65
- * Checks if the current tool call is a retry of the previous failed tool
66
- */
67
- function isConsecutiveRetry(currentToolName, currentInput, retryState) {
68
- if (!retryState)
69
- return false;
70
- // Must be the same tool
71
- if (retryState.toolName !== currentToolName)
72
- return false;
73
- // For file-based tools, check if targeting the same file
74
- const fileTools = ['edit_file', 'read_file', 'write_file'];
75
- if (fileTools.includes(currentToolName)) {
76
- const currentPath = currentInput.path;
77
- if (currentPath && retryState.targetPath && currentPath !== retryState.targetPath) {
78
- return false; // Different file, not a retry
79
- }
80
- }
81
- return true;
82
- }
83
- /**
84
- * Annotates tool result content with retry information
85
- */
86
- function annotateToolResult(content, isError, attemptCount, previousErrors) {
87
- if (attemptCount <= 1) {
88
- return content; // First attempt, no annotation needed
89
- }
90
- const previousSummary = previousErrors.join(' → ');
91
- if (isError) {
92
- // Still failing - show attempt count and history
93
- return `[Attempt ${attemptCount}] ${content}\n\n--- Previous attempts ---\n${previousErrors.map((e, i) => `#${i + 1}: ${e}`).join('\n')}`;
94
- }
95
- else {
96
- // Success after failures - show resolution info
97
- return `${content}\n\n[Resolved after ${attemptCount} attempts. Previous errors: ${previousSummary}]`;
98
- }
99
- }
100
- /**
101
- * Reads piped input from stdin with size limit and timeout
102
- * @returns The piped content or undefined if no pipe or empty
103
- */
104
- export async function readStdin() {
105
- // Only read stdin if data is being piped (not a TTY)
106
- if (process.stdin.isTTY) {
107
- return undefined;
108
- }
109
- return new Promise((resolve) => {
110
- let data = '';
111
- let resolved = false;
112
- const finish = (result) => {
113
- if (!resolved) {
114
- resolved = true;
115
- process.stdin.removeAllListeners();
116
- process.stdin.pause();
117
- resolve(result);
118
- }
119
- };
120
- process.stdin.setEncoding('utf8');
121
- process.stdin.on('data', (chunk) => {
122
- data += chunk;
123
- // Check size limit
124
- if (Buffer.byteLength(data, 'utf8') > MAX_PIPED_INPUT_SIZE) {
125
- logger.warn(`Piped input exceeds ${MAX_PIPED_INPUT_SIZE / 1024}KB limit, truncating`);
126
- data = data.slice(0, MAX_PIPED_INPUT_SIZE);
127
- finish(data);
128
- }
129
- });
130
- process.stdin.on('end', () => {
131
- finish(data || undefined);
132
- });
133
- process.stdin.on('error', (err) => {
134
- logger.debug('Error reading stdin', err);
135
- finish(undefined);
136
- });
137
- // Timeout to avoid hanging if no data
138
- setTimeout(() => {
139
- finish(data || undefined);
140
- }, STDIN_READ_TIMEOUT);
141
- // Start reading
142
- process.stdin.resume();
143
- });
144
- }
145
- /**
146
- * Maps agent-friendly tool aliases to registered tool names.
147
- * Agent definitions use Claude-Code-style names (Read, Grep, Bash, etc.)
148
- * but tools are registered with different names (read_file, search_code, etc.).
149
- */
150
- const TOOL_NAME_ALIASES = {
151
- 'grep': 'search_code',
152
- 'bash': 'execute_command',
153
- 'askuserquestion': 'ask_user',
154
- 'notebookedit': 'notebook_edit',
155
- // Swarm tools
156
- 'spawnteam': 'spawn_team',
157
- 'getteamstatus': 'get_team_status',
158
- 'listteams': 'list_teams',
159
- 'cancelteam': 'cancel_team',
160
- 'teammessage': 'team_message',
161
- };
162
- /**
163
- * Builds a set of tool names that are allowed by an agent's allowedTools list.
164
- * Resolves aliases and display names to actual registered tool names.
165
- */
166
- function resolveAllowedToolNames(allowedTools, toolRegistry) {
167
- const resolvedNames = new Set();
168
- for (const alias of allowedTools) {
169
- const lower = alias.toLowerCase();
170
- // Check direct alias mapping
171
- if (TOOL_NAME_ALIASES[lower]) {
172
- resolvedNames.add(TOOL_NAME_ALIASES[lower]);
173
- }
174
- // Also add the raw name (handles cases where allowedTools uses the actual name)
175
- resolvedNames.add(lower);
176
- }
177
- // Now build the final set: for each registered tool, check if it matches
178
- const allTools = toolRegistry.getToolDefinitions({ includeDisabled: true });
179
- const matchedNames = new Set();
180
- for (const tool of allTools) {
181
- const toolNameLower = tool.name.toLowerCase();
182
- const displayNameLower = toolRegistry.getDisplayName(tool.name).toLowerCase();
183
- if (resolvedNames.has(toolNameLower) || resolvedNames.has(displayNameLower)) {
184
- matchedNames.add(tool.name);
185
- }
186
- }
187
- return matchedNames;
188
- }
189
- /**
190
- * Tools that are safe to execute in parallel (read-only, no side effects)
191
- */
192
- const PARALLEL_SAFE_TOOLS = new Set([
193
- // File reads
194
- 'read_file',
195
- 'read_media_file',
196
- 'read_multiple_files',
197
- // Directory operations (read-only)
198
- 'list_files',
199
- 'list_directory',
200
- 'list_directory_with_sizes',
201
- 'directory_tree',
202
- 'get_file_info',
203
- // Search operations
204
- 'search_code',
205
- 'find_files',
206
- 'analyze_dependencies',
207
- // Git read operations
208
- 'git_status',
209
- 'git_diff',
210
- 'git_log',
211
- // Process/task listing
212
- 'list_processes',
213
- 'list_tasks',
214
- // NOTE: poll_task is NOT parallel-safe because it blocks by default until completion
215
- 'list_skills',
216
- ]);
217
- /**
218
- * Determines if a tool call is safe to execute in parallel
219
- */
220
- function isParallelSafe(toolName, toolInput) {
221
- // Check if tool is in the safe list
222
- if (PARALLEL_SAFE_TOOLS.has(toolName)) {
223
- return true;
224
- }
225
- // Special case: execute_command is safe if it's a read-only command
226
- if (toolName === 'execute_command') {
227
- const command = String(toolInput.command || '').trim().toLowerCase();
228
- // Common read-only command patterns
229
- const readOnlyPatterns = [
230
- /^git\s+(status|diff|log|show|branch|tag)/,
231
- /^ls\b/,
232
- /^cat\b/,
233
- /^echo\b/,
234
- /^pwd\b/,
235
- /^whoami\b/,
236
- /^which\b/,
237
- /^where\b/,
238
- /^node\s+--version/,
239
- /^npm\s+(list|ls|view|show)/,
240
- /^yarn\s+(list|info)/,
241
- /^pnpm\s+list/,
242
- /^python\s+--version/,
243
- /^java\s+-version/,
244
- ];
245
- return readOnlyPatterns.some(pattern => pattern.test(command));
246
- }
247
- // Default to sequential for safety
248
- return false;
249
- }
250
- /**
251
- * Executes a single tool call and returns formatted results
252
- */
253
- async function executeSingleTool(toolUse, projectRoot, toolRegistry) {
254
- const startTime = Date.now();
255
- let userRejected = false;
256
- let endTurn = false;
257
- try {
258
- const result = await toolRegistry.executeTool(toolUse.name, toolUse.input, { projectRoot, toolCallId: toolUse.id });
259
- const duration = Date.now() - startTime;
260
- if (result.success) {
261
- const toolData = result.data;
262
- const isToolRejection = toolData?.success === false &&
263
- (String(toolData?.error || '').toLowerCase().includes('rejected by user') ||
264
- String(toolData?.error || '').toLowerCase().includes('rejected'));
265
- // Check if a plan was cancelled — this signals the turn should end
266
- if (toolData?.planCancelled === true) {
267
- endTurn = true;
268
- logger.info(`Plan cancelled via ${toolUse.name} — will end turn`);
269
- }
270
- if (isToolRejection) {
271
- userRejected = true;
272
- return {
273
- toolResult: {
274
- type: 'tool_result',
275
- tool_use_id: toolUse.id,
276
- content: `Error: ${toolData?.error || 'Operation rejected by user'}`,
277
- is_error: true,
278
- },
279
- toolRecord: {
280
- name: toolUse.name,
281
- input: toolUse.input,
282
- result: null,
283
- success: false,
284
- error: String(toolData?.error || 'Operation rejected by user'),
285
- duration_ms: duration,
286
- },
287
- userRejected,
288
- endTurn,
289
- };
290
- }
291
- else {
292
- logger.debug(`Tool ${toolUse.name} succeeded in ${duration}ms`);
293
- return {
294
- toolResult: {
295
- type: 'tool_result',
296
- tool_use_id: toolUse.id,
297
- content: JSON.stringify(result.data, null, 2),
298
- },
299
- toolRecord: {
300
- name: toolUse.name,
301
- input: toolUse.input,
302
- result: result.data,
303
- success: true,
304
- duration_ms: duration,
305
- },
306
- userRejected,
307
- endTurn,
308
- };
309
- }
310
- }
311
- else {
312
- const isUserRejection = result.error?.toLowerCase().includes('rejected by user') ||
313
- result.error?.toLowerCase().includes('rejected');
314
- if (isUserRejection) {
315
- userRejected = true;
316
- }
317
- logger.debug(`Tool ${toolUse.name} failed: ${result.error}`);
318
- return {
319
- toolResult: {
320
- type: 'tool_result',
321
- tool_use_id: toolUse.id,
322
- content: `Error: ${result.error}`,
323
- is_error: true,
324
- },
325
- toolRecord: {
326
- name: toolUse.name,
327
- input: toolUse.input,
328
- result: null,
329
- success: false,
330
- error: result.error,
331
- duration_ms: duration,
332
- },
333
- userRejected,
334
- endTurn,
335
- };
336
- }
337
- }
338
- catch (err) {
339
- const duration = Date.now() - startTime;
340
- const errorMsg = err instanceof Error ? err.message : 'Tool execution failed';
341
- logger.error(`Tool ${toolUse.name} threw error`, err);
342
- return {
343
- toolResult: {
344
- type: 'tool_result',
345
- tool_use_id: toolUse.id,
346
- content: `Error: ${errorMsg}`,
347
- is_error: true,
348
- },
349
- toolRecord: {
350
- name: toolUse.name,
351
- input: toolUse.input,
352
- result: null,
353
- success: false,
354
- error: errorMsg,
355
- duration_ms: duration,
356
- },
357
- userRejected,
358
- endTurn,
359
- };
360
- }
361
- }
362
- /**
363
- * Executes tool calls and returns tool results.
364
- * Automatically runs tools in parallel when safe to do so.
365
- */
366
- async function executeToolCalls(toolUseBlocks, projectRoot) {
367
- const toolRegistry = getToolRegistry();
368
- let userRejected = false;
369
- let endTurn = false;
370
- // Check if all tools are safe for parallel execution
371
- const allSafeForParallel = toolUseBlocks.every(toolUse => isParallelSafe(toolUse.name, toolUse.input));
372
- if (allSafeForParallel && toolUseBlocks.length > 1) {
373
- // Execute all tools in parallel
374
- logger.debug(`Executing ${toolUseBlocks.length} tools in parallel: ${toolUseBlocks.map(t => t.name).join(', ')}`);
375
- const executionPromises = toolUseBlocks.map(toolUse => executeSingleTool(toolUse, projectRoot, toolRegistry));
376
- const executionResults = await Promise.all(executionPromises);
377
- // Extract results and check for user rejections
378
- const toolResults = [];
379
- const toolRecords = [];
380
- for (const execResult of executionResults) {
381
- toolResults.push(execResult.toolResult);
382
- toolRecords.push(execResult.toolRecord);
383
- if (execResult.userRejected) {
384
- userRejected = true;
385
- }
386
- if (execResult.endTurn) {
387
- endTurn = true;
388
- }
389
- }
390
- return { results: toolResults, records: toolRecords, userRejected, endTurn };
391
- }
392
- else {
393
- // Execute tools sequentially (original behavior)
394
- if (toolUseBlocks.length > 1) {
395
- logger.debug(`Executing ${toolUseBlocks.length} tools sequentially (contains write operations)`);
396
- }
397
- const toolResults = [];
398
- const toolRecords = [];
399
- for (const toolUse of toolUseBlocks) {
400
- logger.debug(`Executing tool: ${toolUse.name}`);
401
- const execResult = await executeSingleTool(toolUse, projectRoot, toolRegistry);
402
- toolResults.push(execResult.toolResult);
403
- toolRecords.push(execResult.toolRecord);
404
- if (execResult.userRejected) {
405
- userRejected = true;
406
- }
407
- if (execResult.endTurn) {
408
- endTurn = true;
409
- }
410
- }
411
- return { results: toolResults, records: toolRecords, userRejected, endTurn };
412
- }
413
- }
414
- /**
415
- * Runs a single query in non-interactive mode with full agentic capabilities
416
- * Outputs response to stdout for programmatic consumption
417
- */
418
- export async function runSDKQuery(options) {
419
- const { query, pipedInput, attachments, projectRoot, continueSession, debug, autoApprove = true, cliAgentsJson, agentConfig, standaloneAgent, callbacks, silent = false, } = options;
420
- // Helper to emit text chunks via callback or stdout
421
- const emitTextChunk = (chunk) => {
422
- if (callbacks?.onTextChunk) {
423
- callbacks.onTextChunk(chunk);
424
- }
425
- if (!silent) {
426
- process.stdout.write(chunk);
427
- }
428
- };
429
- // Helper to emit status updates via callback or stderr
430
- const emitStatus = (status) => {
431
- if (callbacks?.onStatusUpdate) {
432
- callbacks.onStatusUpdate(status);
433
- }
434
- };
435
- // Helper to emit tool events
436
- const emitToolStart = (toolName, toolId, input) => {
437
- if (callbacks?.onToolStart) {
438
- callbacks.onToolStart(toolName, toolId, input);
439
- }
440
- };
441
- const emitToolComplete = (toolName, toolId, result, success, error) => {
442
- if (callbacks?.onToolComplete) {
443
- callbacks.onToolComplete(toolName, toolId, result, success, error);
444
- }
445
- };
446
- // Helper to emit errors
447
- const emitError = (error) => {
448
- if (callbacks?.onError) {
449
- callbacks.onError(error);
450
- }
451
- if (!silent) {
452
- process.stderr.write(chalk.red(`Error: ${error}\n`));
453
- }
454
- };
455
- if (debug) {
456
- logger.configure({ level: 'debug' });
457
- }
458
- try {
459
- // === SUBAGENT FAST-PATH ===
460
- // When running as a subagent, skip all singleton re-initialization to avoid
461
- // corrupting parent process state (model, session, approval mode, etc.)
462
- // Uses the already-initialized singleton client but passes model per-call
463
- // instead of mutating with setModel().
464
- if (options.isSubagent) {
465
- logger.debug('Running in subagent mode - skipping singleton re-initialization');
466
- // Use the already-initialized singleton client (read-only - never call setModel)
467
- const client = await getAnthropicClient();
468
- if (!client.isInitialized()) {
469
- emitError('Subagent: API client not initialized.');
470
- return {
471
- success: false,
472
- content: '',
473
- error: 'Subagent: API client not initialized.',
474
- exitCode: 1,
475
- };
476
- }
477
- // Resolve the model to use per-call (without mutating the singleton)
478
- const { resolveModelId, getModelConfig } = await import('../constants/models.js');
479
- let subagentModelId; // undefined = use client's current default
480
- if (options.model) {
481
- subagentModelId = options.model.modelId;
482
- logger.debug(`Subagent using session model: ${options.model.providerId}/${subagentModelId}`);
483
- }
484
- if (agentConfig?.model && agentConfig.model !== 'inherit') {
485
- subagentModelId = resolveModelId(agentConfig.model);
486
- logger.debug(`Subagent using agent model: ${agentConfig.model} → ${subagentModelId}`);
487
- }
488
- // Resolve model config for system prompt (without mutating singleton)
489
- const modelConfig = subagentModelId
490
- ? (getModelConfig(subagentModelId) || client.getCurrentModel())
491
- : client.getCurrentModel();
492
- // Reuse existing tool registry (already registered by parent)
493
- const toolRegistry = getToolRegistry();
494
- let tools = toolRegistry.getToolDefinitions();
495
- // Filter tools if agent has allowedTools restriction
496
- if (agentConfig?.allowedTools && agentConfig.allowedTools.length > 0) {
497
- const allowedNames = resolveAllowedToolNames(agentConfig.allowedTools, toolRegistry);
498
- tools = tools.filter(tool => allowedNames.has(tool.name));
499
- logger.debug(`Subagent filtered tools (${tools.length} matched): ${tools.map(t => t.name).join(', ')}`);
500
- }
501
- // Build system prompt
502
- const contextBuilder = getContextBuilder({ projectRoot });
503
- const projectSummary = await contextBuilder.getProjectSummary();
504
- let systemPrompt;
505
- if (standaloneAgent && agentConfig?.systemPrompt) {
506
- systemPrompt = agentConfig.systemPrompt;
507
- }
508
- else {
509
- const sessionManager = getSessionManager();
510
- const personalityMode = sessionManager.getEffectivePersonalityMode();
511
- const unguardedMode = options.unguardedMode ?? sessionManager.getUnguardedMode();
512
- let systemUtilitiesSection;
513
- if (unguardedMode) {
514
- try {
515
- systemUtilitiesSection = await getSystemUtilitiesPromptSection();
516
- }
517
- catch (error) {
518
- logger.debug('Failed to generate system utilities section', error);
519
- }
520
- }
521
- systemPrompt = buildSystemPrompt({
522
- projectSummary: projectSummary ? { formatted: projectSummary.formatted } : null,
523
- workingDirectory: projectRoot,
524
- modelName: modelConfig.name,
525
- modelId: modelConfig.id,
526
- personalityMode,
527
- unguardedMode,
528
- systemUtilitiesSection,
529
- });
530
- if (agentConfig?.systemPrompt) {
531
- systemPrompt = `${agentConfig.systemPrompt}\n\n---\n\n${systemPrompt}`;
532
- }
533
- }
534
- if (options.systemPromptAddition) {
535
- systemPrompt = `${systemPrompt}\n\n${options.systemPromptAddition}`;
536
- }
537
- // Append memory content (NOVA.md + auto memory)
538
- try {
539
- const memoryContent = await loadAllMemory(projectRoot);
540
- if (memoryContent) {
541
- systemPrompt = `${systemPrompt}\n\n${memoryContent}`;
542
- }
543
- }
544
- catch (error) {
545
- logger.debug('Failed to load memory content for subagent', error);
546
- }
547
- // Build user message
548
- let userContent = query;
549
- if (pipedInput && pipedInput.trim()) {
550
- userContent = `Context:\n\`\`\`\n${pipedInput.trim()}\n\`\`\`\n\n${query}`;
551
- }
552
- let userMessageContent = userContent;
553
- if (attachments && attachments.length > 0) {
554
- const attachmentBlocks = buildAttachmentContentBlocks(attachments);
555
- userMessageContent = [
556
- { type: 'text', text: userContent },
557
- ...attachmentBlocks,
558
- ];
559
- }
560
- const messages = [];
561
- messages.push({ role: 'user', content: userMessageContent });
562
- // === SUBAGENT AGENTIC LOOP ===
563
- const configManager = getConfigManager();
564
- const agenticConfig = configManager.getValue('agentic');
565
- const maxIterations = agenticConfig?.maxIterations ?? DEFAULT_MAX_AGENTIC_ITERATIONS;
566
- let iterations = 0;
567
- let accumulatedText = '';
568
- let finalResponse = '';
569
- let hasStartedOutput = false;
570
- let toolRetryState = null;
571
- while (iterations < maxIterations) {
572
- iterations++;
573
- // Cancellation check
574
- if (options.processId) {
575
- const { getAgentSpawner } = await import('./agent-spawner.js');
576
- const spawner = getAgentSpawner();
577
- const proc = spawner.getProcess(options.processId);
578
- if (proc?.status === 'cancelled') {
579
- finalResponse = accumulatedText + '\n\n*(Process cancelled)*';
580
- break;
581
- }
582
- }
583
- // Budget enforcement
584
- if (options.budget) {
585
- const budget = options.budget;
586
- if (budget.turnsUsed >= budget.maxTurns) {
587
- finalResponse = accumulatedText + '\n\n*(Turn budget exceeded)*';
588
- if (options.onBudgetExceeded)
589
- options.onBudgetExceeded('turns');
590
- break;
591
- }
592
- if (budget.tokensUsed >= budget.maxTokens) {
593
- finalResponse = accumulatedText + '\n\n*(Token budget exceeded)*';
594
- if (options.onBudgetExceeded)
595
- options.onBudgetExceeded('tokens');
596
- break;
597
- }
598
- }
599
- if (callbacks?.onIterationStart) {
600
- callbacks.onIterationStart(iterations, maxIterations);
601
- }
602
- // Pass model per-call to avoid mutating the singleton
603
- const response = await client.createAgenticMessage(messages, { system: systemPrompt, tools, maxTokens: DEFAULT_MAX_TOKENS, model: subagentModelId }, (chunk) => {
604
- accumulatedText += chunk;
605
- if (!hasStartedOutput)
606
- hasStartedOutput = true;
607
- emitTextChunk(chunk);
608
- }, (toolEvent) => {
609
- if (toolEvent.type === 'tool_start') {
610
- emitToolStart(toolEvent.name, toolEvent.id, {});
611
- }
612
- else if (toolEvent.type === 'tool_complete') {
613
- emitToolComplete(toolEvent.name, toolEvent.id, toolEvent.input, true);
614
- }
615
- });
616
- // Budget tracking
617
- if (options.budget) {
618
- const tokensThisTurn = response.usage.inputTokens + response.usage.outputTokens;
619
- options.budget.tokensUsed += tokensThisTurn;
620
- options.budget.turnsUsed = iterations;
621
- }
622
- if (response.stopReason === 'max_tokens') {
623
- messages.push({ role: 'assistant', content: response.contentBlocks });
624
- messages.push({ role: 'user', content: 'Continue from where you left off.' });
625
- continue;
626
- }
627
- if (response.stopReason !== 'tool_use' || response.toolUseBlocks.length === 0) {
628
- finalResponse = accumulatedText;
629
- break;
630
- }
631
- // Execute tool calls
632
- const { results: toolResults, records: toolRecords, endTurn } = await executeToolCalls(response.toolUseBlocks, projectRoot);
633
- // End turn check (plan cancellation)
634
- if (endTurn) {
635
- logger.info('End turn signalled (plan cancelled) — stopping subagent agentic loop');
636
- finalResponse = accumulatedText;
637
- break;
638
- }
639
- // Cancellation check after tools
640
- if (options.processId) {
641
- const { getAgentSpawner } = await import('./agent-spawner.js');
642
- const spawner = getAgentSpawner();
643
- const proc = spawner.getProcess(options.processId);
644
- if (proc?.status === 'cancelled') {
645
- finalResponse = accumulatedText + '\n\n*(Process cancelled)*';
646
- break;
647
- }
648
- }
649
- // Tool retry replacement logic (same as parent loop)
650
- const isSingleToolCall = response.toolUseBlocks.length === 1;
651
- const singleTool = isSingleToolCall ? response.toolUseBlocks[0] : null;
652
- const singleToolResult = isSingleToolCall ? toolResults[0] : null;
653
- const singleToolRecord = isSingleToolCall ? toolRecords[0] : null;
654
- const shouldReplace = isSingleToolCall && singleTool && toolRetryState &&
655
- isConsecutiveRetry(singleTool.name, singleTool.input, toolRetryState);
656
- if (shouldReplace && singleToolResult && singleToolRecord) {
657
- const isCurrentError = singleToolResult.is_error === true;
658
- const currentContent = singleToolResult.content;
659
- if (isCurrentError) {
660
- toolRetryState.attemptCount++;
661
- toolRetryState.previousErrors.push(summarizeError(currentContent));
662
- }
663
- const annotatedContent = annotateToolResult(currentContent, isCurrentError, toolRetryState.attemptCount, toolRetryState.previousErrors.slice(0, -1));
664
- const annotatedToolResult = { ...singleToolResult, content: annotatedContent };
665
- messages.pop();
666
- messages.pop();
667
- messages.push({ role: 'assistant', content: response.contentBlocks });
668
- messages.push({ role: 'user', content: [annotatedToolResult] });
669
- if (!isCurrentError)
670
- toolRetryState = null;
671
- }
672
- else {
673
- messages.push({ role: 'assistant', content: response.contentBlocks });
674
- messages.push({ role: 'user', content: toolResults });
675
- if (isSingleToolCall && singleToolRecord && !singleToolRecord.success) {
676
- const toolInput = singleTool.input;
677
- toolRetryState = {
678
- toolName: singleTool.name,
679
- targetPath: toolInput.path,
680
- attemptCount: 1,
681
- previousErrors: [summarizeError(singleToolRecord.error || 'Unknown error')],
682
- };
683
- }
684
- else {
685
- toolRetryState = null;
686
- }
687
- }
688
- if (iterations >= maxIterations) {
689
- finalResponse = accumulatedText + '\n\n*(Reached maximum iterations)*';
690
- break;
691
- }
692
- }
693
- if (callbacks?.onComplete) {
694
- callbacks.onComplete(finalResponse, { inputTokens: 0, outputTokens: 0, totalTokens: 0 }, { inputCost: 0, outputCost: 0, totalCost: 0, currency: 'USD' });
695
- }
696
- return {
697
- success: true,
698
- content: finalResponse,
699
- exitCode: 0,
700
- };
701
- }
702
- // === INITIALIZATION PHASE (parent / non-subagent path) ===
703
- const _diag = silent
704
- ? (step) => process.stderr.write(`[SDK-DIAG] ${step} (${Date.now()})\n`)
705
- : (step) => logger.debug(`[SDK-DIAG] ${step}`);
706
- // Ensure directories exist
707
- _diag('ensureDir START');
708
- await ensureDir(getGlobalCompassDir());
709
- await ensureDir(getProjectCompassDir(projectRoot));
710
- _diag('ensureDir DONE');
711
- // Load configuration
712
- _diag('configManager.load START');
713
- const configManager = getConfigManager();
714
- await configManager.load(projectRoot);
715
- _diag('configManager.load DONE');
716
- // Check consent
717
- _diag('consentManager START');
718
- const consentManager = await getConsentManager();
719
- const consentStatus = await consentManager.getStatus();
720
- _diag('consentManager DONE');
721
- if (!consentStatus.isValid) {
722
- emitError('Consent not granted. Run "compass setup" first.');
723
- return {
724
- success: false,
725
- content: '',
726
- error: 'Consent not granted. Run "compass setup" first.',
727
- exitCode: 1,
728
- };
729
- }
730
- // Check API key
731
- _diag('credentialStore START');
732
- const credentialStore = await getCredentialStore();
733
- const hasApiKey = await credentialStore.hasApiKey();
734
- _diag('credentialStore DONE');
735
- if (!hasApiKey) {
736
- emitError('API key not configured. Run "compass setup" first.');
737
- return {
738
- success: false,
739
- content: '',
740
- error: 'API key not configured. Run "compass setup" first.',
741
- exitCode: 1,
742
- };
743
- }
744
- // Initialize Anthropic client
745
- _diag('client.initialize START');
746
- const client = await getAnthropicClient();
747
- const initialized = await client.initialize();
748
- _diag('client.initialize DONE');
749
- if (!initialized) {
750
- emitError('Failed to initialize API client.');
751
- return {
752
- success: false,
753
- content: '',
754
- error: 'Failed to initialize API client.',
755
- exitCode: 1,
756
- };
757
- }
758
- // Validate Compass API key to resolve subscription/plan status
759
- // Without this, compassAuth defaults to 'no_subscription' (150K limit)
760
- _diag('compassAuth.validateApiKey START');
761
- try {
762
- const compassAuth = getCompassAuthService();
763
- const compassKey = await credentialStore.getCompassApiKey();
764
- if (compassKey) {
765
- await compassAuth.validateApiKey(compassKey);
766
- logger.debug(`SDK mode plan status: ${compassAuth.getPlanStatus()}`);
767
- }
768
- }
769
- catch (planError) {
770
- logger.warn('Failed to validate Compass API key in SDK mode', planError);
771
- // Non-fatal — defaults to no_subscription limits
772
- }
773
- _diag('compassAuth.validateApiKey DONE');
774
- // Initialize token tracker
775
- _diag('tokenTracker START');
776
- const tokenTracker = await getTokenTracker();
777
- tokenTracker.startSession();
778
- _diag('tokenTracker DONE');
779
- // Register built-in tools
780
- _diag('registerBuiltInTools START');
781
- await registerBuiltInTools();
782
- _diag('registerBuiltInTools DONE');
783
- // Initialize MCP tool integration
784
- _diag('mcpToolIntegration.initialize START');
785
- try {
786
- const mcpToolIntegration = getMCPToolIntegration();
787
- await mcpToolIntegration.initialize(projectRoot);
788
- logger.debug('MCP tool integration initialized');
789
- }
790
- catch (mcpError) {
791
- logger.warn('Failed to initialize MCP tool integration', mcpError);
792
- // Non-fatal - continue without MCP tools
793
- }
794
- _diag('mcpToolIntegration.initialize DONE');
795
- // Initialize skill service with project root
796
- const { setSkillProjectRoot } = await import('./skill-service.js');
797
- setSkillProjectRoot(projectRoot);
798
- // Initialize custom command service with project root
799
- const { setCommandsProjectRoot } = await import('./custom-command-service.js');
800
- setCommandsProjectRoot(projectRoot);
801
- // Initialize hook service with project root
802
- const { setHooksProjectRoot } = await import('./hook-service.js');
803
- setHooksProjectRoot(projectRoot);
804
- // Initialize agent manager with CLI agents if provided
805
- if (cliAgentsJson) {
806
- try {
807
- const { initializeAgentManager } = await import('./agent-manager.js');
808
- await initializeAgentManager(projectRoot, cliAgentsJson);
809
- logger.debug('Agent manager initialized with CLI agents');
810
- }
811
- catch (agentError) {
812
- logger.warn('Failed to initialize agent manager with CLI agents', agentError);
813
- // Non-fatal - continue without CLI agents
814
- }
815
- }
816
- // Apply model configuration if provided (e.g., from ACP session)
817
- // This takes precedence over the default model but can be overridden by agentConfig
818
- if (options.model) {
819
- const modelIdToSet = options.model.modelId;
820
- client.setModel(modelIdToSet);
821
- logger.debug(`Switched to session model: ${options.model.providerId}/${modelIdToSet}`);
822
- }
823
- // Apply agent configuration if provided
824
- if (agentConfig) {
825
- logger.info(`Running with agent: ${agentConfig.name}`);
826
- // Switch model if agent specifies one (overrides session model)
827
- if (agentConfig.model && agentConfig.model !== 'inherit') {
828
- const { resolveModelId } = await import('../constants/models.js');
829
- const resolvedModelId = resolveModelId(agentConfig.model);
830
- client.setModel(resolvedModelId);
831
- logger.debug(`Switched to agent model: ${agentConfig.model}`);
832
- }
833
- }
834
- // Set approval mode for non-interactive use
835
- const approvalManager = getApprovalManager();
836
- if (autoApprove) {
837
- approvalManager.setMode(ApprovalMode.AUTO);
838
- approvalManager.enableSessionAutoApproval();
839
- logger.debug('Auto-approval enabled for non-interactive mode');
840
- }
841
- // Initialize session manager
842
- _diag('sessionManager.load START');
843
- const sessionManager = getSessionManager();
844
- const existingSession = await sessionManager.load(projectRoot);
845
- _diag('sessionManager.load DONE');
846
- if (!existingSession) {
847
- sessionManager.createSession(projectRoot);
848
- }
849
- // Initialize audit logger
850
- const auditLogger = getAuditLogger(projectRoot);
851
- const session = sessionManager.getSession();
852
- if (session) {
853
- auditLogger.setSessionId(session.id);
854
- }
855
- // Get conversation history and handle archival
856
- _diag('sessionArchival START');
857
- let messages = [];
858
- const state = sessionManager.getState();
859
- const hasHistory = state?.conversationHistory && state.conversationHistory.length > 0;
860
- const hasOperations = state?.operations && state.operations.length > 0;
861
- if (hasHistory) {
862
- if (continueSession) {
863
- // -c flag: Archive, load messages into context, then clear session.json
864
- const { archive, result } = await sessionManager.archiveAndClearSession();
865
- if (result.success && result.filename) {
866
- logger.info(`Archived previous session to: ${result.filename}`);
867
- }
868
- // Load archived messages into context
869
- if (archive && archive.messages.length > 0) {
870
- messages = archive.messages.map((msg) => ({
871
- role: msg.role,
872
- content: msg.content,
873
- }));
874
- logger.debug(`Continuing with ${messages.length} archived messages`);
875
- }
876
- }
877
- else {
878
- // No -c flag: Archive and clear, don't load into context
879
- const { result } = await sessionManager.archiveAndClearSession();
880
- if (result.success && result.filename) {
881
- logger.info(`Archived previous session to: ${result.filename}`);
882
- }
883
- }
884
- }
885
- else {
886
- // No conversation history — clear stale operations if any
887
- if (hasOperations) {
888
- sessionManager.clearHistory();
889
- }
890
- // -c flag: load latest archive even when session is clean
891
- if (continueSession) {
892
- const archivalService = sessionManager.getArchivalService();
893
- const archive = await archivalService.getLatestArchive();
894
- if (archive && archive.messages.length > 0) {
895
- messages = archive.messages.map((msg) => ({
896
- role: msg.role,
897
- content: msg.content,
898
- }));
899
- logger.debug(`Continuing with ${messages.length} messages from latest archive`);
900
- }
901
- }
902
- }
903
- _diag('sessionArchival DONE');
904
- // Build the user message with optional piped context and attachments
905
- let userContent = query;
906
- if (pipedInput && pipedInput.trim()) {
907
- userContent = `Context:\n\`\`\`\n${pipedInput.trim()}\n\`\`\`\n\n${query}`;
908
- }
909
- // Handle file attachments if provided
910
- let userMessageContent = userContent;
911
- if (attachments && attachments.length > 0) {
912
- // Build ContentBlock[] with text and attachments
913
- const attachmentBlocks = buildAttachmentContentBlocks(attachments);
914
- userMessageContent = [
915
- { type: 'text', text: userContent },
916
- ...attachmentBlocks,
917
- ];
918
- logger.info(`Added ${attachments.length} file attachment(s) to user message`);
919
- }
920
- // Add user message
921
- messages.push({
922
- role: 'user',
923
- content: userMessageContent,
924
- });
925
- // Build system prompt with project context
926
- _diag('contextBuilder.getProjectSummary START');
927
- const contextBuilder = getContextBuilder({ projectRoot });
928
- const projectSummary = await contextBuilder.getProjectSummary();
929
- _diag('contextBuilder.getProjectSummary DONE');
930
- const model = client.getCurrentModel();
931
- let systemPrompt;
932
- // Handle standalone agent mode - use ONLY the agent's system prompt
933
- if (standaloneAgent && agentConfig?.systemPrompt) {
934
- systemPrompt = agentConfig.systemPrompt;
935
- logger.info(`Running in standalone agent mode - using only agent's system prompt (${agentConfig.systemPrompt.length} chars)`);
936
- }
937
- else {
938
- // Get personality mode and unguarded mode from session (prefer explicit option over singleton)
939
- const sessionManager = getSessionManager();
940
- const personalityMode = sessionManager.getEffectivePersonalityMode();
941
- const unguardedMode = options.unguardedMode ?? sessionManager.getUnguardedMode();
942
- // Get system utilities section for unguarded mode
943
- let systemUtilitiesSection;
944
- if (unguardedMode) {
945
- try {
946
- systemUtilitiesSection = await getSystemUtilitiesPromptSection();
947
- if (systemUtilitiesSection) {
948
- logger.debug('System utilities section generated for unguarded mode');
949
- }
950
- }
951
- catch (error) {
952
- logger.debug('Failed to generate system utilities section', error);
953
- }
954
- }
955
- // Build default CLI system prompt with personality and unguarded mode
956
- systemPrompt = buildSystemPrompt({
957
- projectSummary: projectSummary ? { formatted: projectSummary.formatted } : null,
958
- workingDirectory: projectRoot,
959
- modelName: model.name,
960
- modelId: model.id,
961
- personalityMode,
962
- unguardedMode,
963
- systemUtilitiesSection,
964
- });
965
- // Prepend agent's system prompt if provided (non-standalone mode)
966
- if (agentConfig?.systemPrompt) {
967
- systemPrompt = `${agentConfig.systemPrompt}\n\n---\n\n${systemPrompt}`;
968
- logger.debug(`Applied agent system prompt (${agentConfig.systemPrompt.length} chars)`);
969
- }
970
- }
971
- // Apply mode-specific system prompt additions
972
- if (options.systemPromptAddition) {
973
- systemPrompt = `${systemPrompt}\n\n${options.systemPromptAddition}`;
974
- logger.debug(`Applied system prompt addition (${options.systemPromptAddition.length} chars)`);
975
- }
976
- // Append memory content (NOVA.md + auto memory)
977
- _diag('loadAllMemory START');
978
- try {
979
- const memoryContent = await loadAllMemory(projectRoot);
980
- if (memoryContent) {
981
- systemPrompt = `${systemPrompt}\n\n${memoryContent}`;
982
- logger.debug(`Applied memory content (${memoryContent.length} chars)`);
983
- }
984
- }
985
- catch (error) {
986
- logger.debug('Failed to load memory content', error);
987
- }
988
- _diag('loadAllMemory DONE');
989
- // Apply plan mode instructions if forced
990
- if (options.forcePlanMode) {
991
- const planModeInstructions = `
992
- ## ⚠️ PLAN MODE ENFORCED - MANDATORY TOOL CALL REQUIRED
993
-
994
- **CRITICAL REQUIREMENT**: You MUST call the \`enter_plan_mode\` tool as your FIRST action for ANY task that involves code changes, file modifications, or implementation work.
995
-
996
- ### Mandatory First Step
997
- Before doing ANYTHING else, call:
998
- \`\`\`
999
- enter_plan_mode({ task_summary: "<brief description of the task>" })
1000
- \`\`\`
1001
-
1002
- ### Rules You MUST Follow
1003
- 1. **ALWAYS call \`enter_plan_mode\` FIRST** - No exceptions. Do not analyze, do not explain, do not read files first. Call the tool immediately.
1004
- 2. **NO direct implementation** - You are FORBIDDEN from using file editing tools (edit_file, write_file) until a plan is approved.
1005
- 3. **NO skipping** - Even for "simple" tasks, you must use \`enter_plan_mode\`. The tool will assess complexity.
1006
- 4. **Wait for approval** - After the plan is generated, wait for user approval before executing any changes.
1007
-
1008
- ### What Happens If You Don't Comply
1009
- If you attempt to make code changes without first calling \`enter_plan_mode\`, you are violating the user's explicit mode selection. The user chose Plan Mode because they want to review and approve changes before they happen.
1010
-
1011
- ### After Plan Approval
1012
- - Execute tasks one at a time
1013
- - Call \`complete_plan_task\` after each task
1014
- - If issues arise, call \`update_plan\` instead of improvising
1015
-
1016
- **START by calling \`enter_plan_mode\` NOW.**
1017
- `;
1018
- systemPrompt = `${systemPrompt}\n\n${planModeInstructions}`;
1019
- logger.debug('Applied plan mode enforcement instructions');
1020
- }
1021
- // Log for audit
1022
- await auditLogger.logUserInput(userContent, false);
1023
- await auditLogger.logSystemPrompt(systemPrompt);
1024
- // Get tool definitions
1025
- const toolRegistry = getToolRegistry();
1026
- let tools = toolRegistry.getToolDefinitions();
1027
- // Filter tools if agent has allowedTools restriction
1028
- if (agentConfig?.allowedTools && agentConfig.allowedTools.length > 0) {
1029
- const allowedNames = resolveAllowedToolNames(agentConfig.allowedTools, toolRegistry);
1030
- tools = tools.filter(tool => allowedNames.has(tool.name));
1031
- logger.debug(`Filtered tools to agent's allowed list (${tools.length} matched): ${tools.map(t => t.name).join(', ')}`);
1032
- }
1033
- // Filter MCP tools if agent has mcpServers restriction
1034
- if (agentConfig?.mcpServers && agentConfig.mcpServers.length > 0) {
1035
- const mcpToolIntegration = getMCPToolIntegration();
1036
- const allowedMcpTools = new Set(mcpToolIntegration.getFilteredToolNames(agentConfig.mcpServers).map(t => t.toLowerCase()));
1037
- // Keep non-MCP tools and only MCP tools from allowed servers
1038
- tools = tools.filter(tool => {
1039
- const isFromMcp = mcpToolIntegration.isMCPTool(tool.name);
1040
- if (!isFromMcp) {
1041
- return true; // Keep all non-MCP tools
1042
- }
1043
- return allowedMcpTools.has(tool.name.toLowerCase());
1044
- });
1045
- logger.debug(`Filtered MCP tools to agent's allowed servers: ${agentConfig.mcpServers.join(', ')}`);
1046
- }
1047
- // === AGENTIC LOOP ===
1048
- _diag('INIT COMPLETE - entering agentic loop');
1049
- // Get MCP tool integration for silent tool checks
1050
- const mcpToolIntegration = getMCPToolIntegration();
1051
- // Load agentic configuration
1052
- const agenticConfig = configManager.getValue('agentic');
1053
- const maxIterations = agenticConfig?.maxIterations ?? DEFAULT_MAX_AGENTIC_ITERATIONS;
1054
- // Track agentic loop data
1055
- const loopStartTime = Date.now();
1056
- const agenticIterations = [];
1057
- let totalToolCalls = 0;
1058
- const totalUsage = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
1059
- const totalCost = { inputCost: 0, outputCost: 0, totalCost: 0, currency: 'USD' };
1060
- let iterations = 0;
1061
- let accumulatedText = '';
1062
- let finalResponse = '';
1063
- let reachedMaxIterations = false;
1064
- let hasStartedOutput = false;
1065
- // Track consecutive tool retry attempts to replace instead of accumulate
1066
- let toolRetryState = null;
1067
- while (iterations < maxIterations) {
1068
- iterations++;
1069
- logger.debug(`Agentic loop iteration ${iterations}`);
1070
- // === CANCELLATION CHECK ===
1071
- // Check if process was cancelled before each iteration
1072
- if (options.processId) {
1073
- const { getAgentSpawner } = await import('./agent-spawner.js');
1074
- const spawner = getAgentSpawner();
1075
- const process = spawner.getProcess(options.processId);
1076
- if (process?.status === 'cancelled') {
1077
- logger.info(`Process ${options.processId} was cancelled - stopping execution`);
1078
- finalResponse = accumulatedText + '\n\n*(Process cancelled)*';
1079
- break;
1080
- }
1081
- }
1082
- // === BUDGET ENFORCEMENT ===
1083
- // Check budget limits before each iteration
1084
- if (options.budget) {
1085
- const budget = options.budget;
1086
- // Check turn limit
1087
- if (budget.turnsUsed >= budget.maxTurns) {
1088
- logger.warn(`Agent turn budget exceeded: ${budget.turnsUsed}/${budget.maxTurns} turns`);
1089
- finalResponse = accumulatedText + '\n\n*(Turn budget exceeded)*';
1090
- if (options.onBudgetExceeded) {
1091
- options.onBudgetExceeded('turns');
1092
- }
1093
- break;
1094
- }
1095
- // Check token limit (pre-flight estimate)
1096
- if (budget.tokensUsed >= budget.maxTokens) {
1097
- logger.warn(`Agent token budget exceeded: ${budget.tokensUsed}/${budget.maxTokens} tokens`);
1098
- finalResponse = accumulatedText + '\n\n*(Token budget exceeded)*';
1099
- if (options.onBudgetExceeded) {
1100
- options.onBudgetExceeded('tokens');
1101
- }
1102
- break;
1103
- }
1104
- // Log budget status
1105
- const tokenPercent = ((budget.tokensUsed / budget.maxTokens) * 100).toFixed(1);
1106
- const turnPercent = ((budget.turnsUsed / budget.maxTurns) * 100).toFixed(1);
1107
- logger.debug(`Budget status: ${budget.tokensUsed}/${budget.maxTokens} tokens (${tokenPercent}%), ${budget.turnsUsed}/${budget.maxTurns} turns (${turnPercent}%)`);
1108
- }
1109
- // Emit iteration start event
1110
- if (callbacks?.onIterationStart) {
1111
- callbacks.onIterationStart(iterations, maxIterations);
1112
- }
1113
- // Call Claude with tools
1114
- _diag(`API CALL START (iteration ${iterations})`);
1115
- const response = await client.createAgenticMessage(messages, {
1116
- system: systemPrompt,
1117
- tools,
1118
- maxTokens: DEFAULT_MAX_TOKENS,
1119
- }, (chunk) => {
1120
- // Stream text chunks
1121
- accumulatedText += chunk;
1122
- if (!hasStartedOutput) {
1123
- hasStartedOutput = true;
1124
- }
1125
- emitTextChunk(chunk);
1126
- }, (toolEvent) => {
1127
- // Log tool events
1128
- if (toolEvent.type === 'tool_start') {
1129
- const isSilent = mcpToolIntegration.isSilentTool(toolEvent.name);
1130
- logger.debug(`Tool started: ${toolEvent.name}${isSilent ? ' (silent)' : ''}`);
1131
- if (!isSilent) {
1132
- emitToolStart(toolEvent.name, toolEvent.id, {});
1133
- if (hasStartedOutput && !silent) {
1134
- // Show tool execution in stderr so it doesn't pollute stdout
1135
- process.stderr.write(chalk.dim(`\n[Executing: ${toolEvent.name}]\n`));
1136
- }
1137
- }
1138
- }
1139
- else if (toolEvent.type === 'tool_complete') {
1140
- const isSilent = mcpToolIntegration.isSilentTool(toolEvent.name);
1141
- if (!isSilent) {
1142
- emitToolComplete(toolEvent.name, toolEvent.id, toolEvent.input, true);
1143
- }
1144
- }
1145
- });
1146
- _diag(`API CALL DONE (iteration ${iterations}, stopReason=${response.stopReason})`);
1147
- logger.debug(`Response stop_reason: ${response.stopReason}, tool calls: ${response.toolUseBlocks.length}`);
1148
- // Accumulate usage and cost
1149
- totalUsage.inputTokens += response.usage.inputTokens;
1150
- totalUsage.outputTokens += response.usage.outputTokens;
1151
- totalUsage.totalTokens += response.usage.totalTokens;
1152
- totalCost.inputCost += response.cost.inputCost;
1153
- totalCost.outputCost += response.cost.outputCost;
1154
- totalCost.totalCost += response.cost.totalCost;
1155
- // === BUDGET TRACKING ===
1156
- // Update budget usage after API call
1157
- if (options.budget) {
1158
- const tokensThisTurn = response.usage.inputTokens + response.usage.outputTokens;
1159
- options.budget.tokensUsed += tokensThisTurn;
1160
- options.budget.turnsUsed = iterations;
1161
- logger.debug(`Budget updated: +${tokensThisTurn} tokens this turn, total: ${options.budget.tokensUsed}/${options.budget.maxTokens}`);
1162
- // Check if we exceeded budget after this call
1163
- if (options.budget.tokensUsed >= options.budget.maxTokens) {
1164
- logger.warn(`Token budget exceeded after API call: ${options.budget.tokensUsed}/${options.budget.maxTokens}`);
1165
- // Don't break here - let the loop continue to process this response
1166
- // Budget will be checked at start of next iteration
1167
- }
1168
- }
1169
- // Handle max_tokens - prompt continuation
1170
- if (response.stopReason === 'max_tokens') {
1171
- logger.warn('Response truncated due to max_tokens - prompting continuation');
1172
- agenticIterations.push({
1173
- iteration: iterations,
1174
- llm_call: {
1175
- messages_count: messages.length,
1176
- response_text: response.textContent,
1177
- tool_calls_count: 0,
1178
- usage: response.usage,
1179
- cost: response.cost,
1180
- },
1181
- tool_calls: [],
1182
- stop_reason: response.stopReason,
1183
- });
1184
- messages.push({
1185
- role: 'assistant',
1186
- content: response.contentBlocks,
1187
- });
1188
- messages.push({
1189
- role: 'user',
1190
- content: 'Continue from where you left off.',
1191
- });
1192
- continue;
1193
- }
1194
- // If no tool calls, we're done
1195
- if (response.stopReason !== 'tool_use' || response.toolUseBlocks.length === 0) {
1196
- agenticIterations.push({
1197
- iteration: iterations,
1198
- llm_call: {
1199
- messages_count: messages.length,
1200
- response_text: response.textContent,
1201
- tool_calls_count: 0,
1202
- usage: response.usage,
1203
- cost: response.cost,
1204
- },
1205
- tool_calls: [],
1206
- stop_reason: response.stopReason,
1207
- });
1208
- finalResponse = accumulatedText;
1209
- break;
1210
- }
1211
- // Execute tool calls
1212
- emitStatus(`Running ${response.toolUseBlocks.length} tool(s)`);
1213
- // Emit tool start events for all non-silent tools about to be executed
1214
- for (const toolUse of response.toolUseBlocks) {
1215
- if (!mcpToolIntegration.isSilentTool(toolUse.name)) {
1216
- emitToolStart(toolUse.name, toolUse.id, toolUse.input);
1217
- }
1218
- else {
1219
- logger.debug(`Silent tool suppressed from UI: ${toolUse.name}`);
1220
- }
1221
- }
1222
- const { results: toolResults, records: toolRecords, userRejected, endTurn } = await executeToolCalls(response.toolUseBlocks, projectRoot);
1223
- totalToolCalls += toolRecords.length;
1224
- // Emit tool complete events for all executed tools
1225
- // Silent tools: suppress UI output unless there's an error (errors always surface)
1226
- for (let i = 0; i < toolRecords.length; i++) {
1227
- const record = toolRecords[i];
1228
- const toolUse = response.toolUseBlocks[i];
1229
- const isToolSilent = mcpToolIntegration.isSilentTool(record.name);
1230
- if (!isToolSilent || !record.success) {
1231
- // Always emit for non-silent tools; also emit for silent tools that errored
1232
- emitToolComplete(record.name, toolUse.id, record.result, record.success, record.error);
1233
- }
1234
- else {
1235
- logger.debug(`Silent tool result suppressed from UI: ${record.name}`);
1236
- }
1237
- }
1238
- // === CANCELLATION CHECK (after tool execution) ===
1239
- // Check again after tools complete, in case cancellation happened during tool execution
1240
- if (options.processId) {
1241
- const { getAgentSpawner } = await import('./agent-spawner.js');
1242
- const spawner = getAgentSpawner();
1243
- const process = spawner.getProcess(options.processId);
1244
- if (process?.status === 'cancelled') {
1245
- logger.info(`Process ${options.processId} was cancelled during tool execution - stopping`);
1246
- finalResponse = accumulatedText + '\n\n*(Process cancelled)*';
1247
- break;
1248
- }
1249
- }
1250
- // === END TURN CHECK (plan cancellation) ===
1251
- // If a plan tool signalled endTurn (user cancelled a plan), stop the loop immediately
1252
- if (endTurn) {
1253
- logger.info('End turn signalled (plan cancelled) — stopping agentic loop');
1254
- finalResponse = accumulatedText;
1255
- break;
1256
- }
1257
- // If user rejected an operation, log it but continue the loop
1258
- // The LLM will see the rejection error in the tool result and can decide what to do
1259
- if (userRejected) {
1260
- logger.info('Operation rejected - continuing agentic loop so LLM can respond');
1261
- }
1262
- // Log this iteration
1263
- agenticIterations.push({
1264
- iteration: iterations,
1265
- llm_call: {
1266
- messages_count: messages.length,
1267
- response_text: response.textContent,
1268
- tool_calls_count: response.toolUseBlocks.length,
1269
- usage: response.usage,
1270
- cost: response.cost,
1271
- },
1272
- tool_calls: toolRecords,
1273
- stop_reason: response.stopReason,
1274
- });
1275
- // === TOOL RETRY REPLACEMENT LOGIC ===
1276
- // Check if this is a consecutive retry of a single failed tool
1277
- const isSingleToolCall = response.toolUseBlocks.length === 1;
1278
- const singleTool = isSingleToolCall ? response.toolUseBlocks[0] : null;
1279
- const singleToolResult = isSingleToolCall ? toolResults[0] : null;
1280
- const singleToolRecord = isSingleToolCall ? toolRecords[0] : null;
1281
- // Determine if we should replace the previous failed attempt
1282
- const shouldReplace = isSingleToolCall &&
1283
- singleTool &&
1284
- toolRetryState &&
1285
- isConsecutiveRetry(singleTool.name, singleTool.input, toolRetryState);
1286
- if (shouldReplace && singleToolResult && singleToolRecord) {
1287
- // This is a retry - replace the previous messages instead of appending
1288
- const isCurrentError = singleToolResult.is_error === true;
1289
- const currentContent = singleToolResult.content;
1290
- // Update retry state
1291
- if (isCurrentError) {
1292
- toolRetryState.attemptCount++;
1293
- toolRetryState.previousErrors.push(summarizeError(currentContent));
1294
- }
1295
- // Annotate the tool result with retry information
1296
- const annotatedContent = annotateToolResult(currentContent, isCurrentError, toolRetryState.attemptCount, toolRetryState.previousErrors.slice(0, -1) // Exclude current error from "previous"
1297
- );
1298
- // Create annotated tool result
1299
- const annotatedToolResult = {
1300
- ...singleToolResult,
1301
- content: annotatedContent,
1302
- };
1303
- // Replace the last two messages (previous assistant + previous tool_result)
1304
- messages.pop(); // Remove previous tool_result
1305
- messages.pop(); // Remove previous assistant message
1306
- // Add updated messages
1307
- messages.push({
1308
- role: 'assistant',
1309
- content: response.contentBlocks,
1310
- });
1311
- messages.push({
1312
- role: 'user',
1313
- content: [annotatedToolResult],
1314
- });
1315
- logger.debug(`Tool retry detected: ${singleTool.name} attempt ${toolRetryState.attemptCount} (replaced previous)`);
1316
- // Reset retry state if this attempt succeeded
1317
- if (!isCurrentError) {
1318
- toolRetryState = null;
1319
- }
1320
- }
1321
- else {
1322
- // Not a retry or multiple tools - append normally
1323
- messages.push({
1324
- role: 'assistant',
1325
- content: response.contentBlocks,
1326
- });
1327
- messages.push({
1328
- role: 'user',
1329
- content: toolResults,
1330
- });
1331
- // Update retry state for potential future retries
1332
- if (isSingleToolCall && singleToolRecord && !singleToolRecord.success) {
1333
- // Single tool failed - start tracking for potential retry
1334
- const toolInput = singleTool.input;
1335
- toolRetryState = {
1336
- toolName: singleTool.name,
1337
- targetPath: toolInput.path,
1338
- attemptCount: 1,
1339
- previousErrors: [summarizeError(singleToolRecord.error || 'Unknown error')],
1340
- };
1341
- logger.debug(`Tool retry tracking started: ${singleTool.name}`);
1342
- }
1343
- else {
1344
- // Multiple tools or success - reset retry state
1345
- toolRetryState = null;
1346
- }
1347
- }
1348
- // Check iteration limit
1349
- if (iterations >= maxIterations) {
1350
- logger.warn('Agentic loop reached maximum iterations');
1351
- finalResponse = accumulatedText + '\n\n*(Reached maximum iterations)*';
1352
- reachedMaxIterations = true;
1353
- break;
1354
- }
1355
- }
1356
- // Ensure output ends with newline
1357
- if (finalResponse && !finalResponse.endsWith('\n') && !silent) {
1358
- process.stdout.write('\n');
1359
- }
1360
- // Emit completion callback
1361
- if (callbacks?.onComplete) {
1362
- callbacks.onComplete(finalResponse, totalUsage, totalCost);
1363
- }
1364
- // Log the complete agentic loop
1365
- const loopDuration = Date.now() - loopStartTime;
1366
- await auditLogger.logAgenticLoop({
1367
- user_input: userContent,
1368
- system_prompt: systemPrompt,
1369
- model: client.getCurrentModel().id,
1370
- iterations: agenticIterations,
1371
- final_response: finalResponse,
1372
- total_iterations: iterations,
1373
- total_tool_calls: totalToolCalls,
1374
- total_usage: totalUsage,
1375
- total_cost: totalCost,
1376
- duration_ms: loopDuration,
1377
- reached_max_iterations: reachedMaxIterations,
1378
- isPlanMode: false,
1379
- });
1380
- // Save conversation for potential continuation
1381
- // Convert ContentBlock[] to string for session storage
1382
- const userContentForStorage = typeof userMessageContent === 'string'
1383
- ? userMessageContent
1384
- : userMessageContent.map(block => {
1385
- if (block.type === 'text') {
1386
- return block.text;
1387
- }
1388
- else if (block.type === 'image' && block.source) {
1389
- return `[Image: ${block.source.media_type}]`;
1390
- }
1391
- else if (block.type === 'document' && block.source) {
1392
- return `[Document: ${block.source.media_type}]`;
1393
- }
1394
- return '[Unknown content type]';
1395
- }).join('\n');
1396
- const userMessageWithAttachments = attachments && attachments.length > 0
1397
- ? { role: 'user', content: userContentForStorage, attachments }
1398
- : { role: 'user', content: userContentForStorage };
1399
- sessionManager.addMessage(userMessageWithAttachments);
1400
- if (finalResponse) {
1401
- sessionManager.addMessage({ role: 'assistant', content: finalResponse });
1402
- }
1403
- await sessionManager.save();
1404
- // End token tracking
1405
- await tokenTracker.endSession();
1406
- return {
1407
- success: true,
1408
- content: finalResponse,
1409
- exitCode: 0,
1410
- };
1411
- }
1412
- catch (error) {
1413
- const errorMessage = error instanceof Error ? error.message : String(error);
1414
- logger.error('SDK runner error', error);
1415
- emitError(errorMessage);
1416
- return {
1417
- success: false,
1418
- content: '',
1419
- error: errorMessage,
1420
- exitCode: 1,
1421
- };
1422
- }
1423
- }
1424
- //# sourceMappingURL=sdk-runner.js.map