@office-ai/aioncli-core 0.30.0 → 0.30.1

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 (325) hide show
  1. package/dist/docs/assets/theme-ansi-dark.png +0 -0
  2. package/dist/docs/assets/theme-atom-one-dark.png +0 -0
  3. package/dist/docs/assets/theme-ayu-dark.png +0 -0
  4. package/dist/docs/assets/theme-default-dark.png +0 -0
  5. package/dist/docs/assets/theme-dracula-dark.png +0 -0
  6. package/dist/docs/assets/theme-github-dark.png +0 -0
  7. package/dist/docs/assets/theme-holiday-dark.png +0 -0
  8. package/dist/docs/assets/theme-shades-of-purple-dark.png +0 -0
  9. package/dist/docs/assets/theme-solarized-dark.png +0 -0
  10. package/dist/docs/assets/theme-solarized-light.png +0 -0
  11. package/dist/docs/cli/notifications.md +58 -0
  12. package/dist/docs/redirects.json +20 -0
  13. package/dist/docs/reference/commands.md +563 -0
  14. package/dist/docs/reference/configuration.md +1804 -0
  15. package/dist/docs/reference/keyboard-shortcuts.md +168 -0
  16. package/dist/docs/reference/memport.md +246 -0
  17. package/dist/docs/reference/policy-engine.md +386 -0
  18. package/dist/docs/reference/tools.md +106 -0
  19. package/dist/docs/resources/faq.md +175 -0
  20. package/dist/docs/resources/quota-and-pricing.md +199 -0
  21. package/dist/docs/resources/tos-privacy.md +102 -0
  22. package/dist/docs/resources/troubleshooting.md +176 -0
  23. package/dist/docs/resources/uninstall.md +56 -0
  24. package/dist/src/agents/a2a-errors.d.ts +65 -0
  25. package/dist/src/agents/a2a-errors.js +164 -0
  26. package/dist/src/agents/a2a-errors.js.map +1 -0
  27. package/dist/src/agents/a2a-errors.test.d.ts +6 -0
  28. package/dist/src/agents/a2a-errors.test.js +183 -0
  29. package/dist/src/agents/a2a-errors.test.js.map +1 -0
  30. package/dist/src/agents/auth-provider/api-key-provider.d.ts +30 -0
  31. package/dist/src/agents/auth-provider/api-key-provider.js +66 -0
  32. package/dist/src/agents/auth-provider/api-key-provider.js.map +1 -0
  33. package/dist/src/agents/auth-provider/api-key-provider.test.d.ts +6 -0
  34. package/dist/src/agents/auth-provider/api-key-provider.test.js +130 -0
  35. package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -0
  36. package/dist/src/agents/auth-provider/http-provider.d.ts +28 -0
  37. package/dist/src/agents/auth-provider/http-provider.js +73 -0
  38. package/dist/src/agents/auth-provider/http-provider.js.map +1 -0
  39. package/dist/src/agents/auth-provider/http-provider.test.d.ts +6 -0
  40. package/dist/src/agents/auth-provider/http-provider.test.js +112 -0
  41. package/dist/src/agents/auth-provider/http-provider.test.js.map +1 -0
  42. package/dist/src/agents/auth-provider/oauth2-provider.d.ts +65 -0
  43. package/dist/src/agents/auth-provider/oauth2-provider.js +233 -0
  44. package/dist/src/agents/auth-provider/oauth2-provider.js.map +1 -0
  45. package/dist/src/agents/auth-provider/oauth2-provider.test.d.ts +6 -0
  46. package/dist/src/agents/auth-provider/oauth2-provider.test.js +490 -0
  47. package/dist/src/agents/auth-provider/oauth2-provider.test.js.map +1 -0
  48. package/dist/src/agents/browser/analyzeScreenshot.d.ts +35 -0
  49. package/dist/src/agents/browser/analyzeScreenshot.js +183 -0
  50. package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -0
  51. package/dist/src/agents/browser/analyzeScreenshot.test.d.ts +6 -0
  52. package/dist/src/agents/browser/analyzeScreenshot.test.js +161 -0
  53. package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -0
  54. package/dist/src/agents/browser/automationOverlay.d.ts +26 -0
  55. package/dist/src/agents/browser/automationOverlay.js +100 -0
  56. package/dist/src/agents/browser/automationOverlay.js.map +1 -0
  57. package/dist/src/agents/browser/browserAgentDefinition.d.ts +50 -0
  58. package/dist/src/agents/browser/browserAgentDefinition.js +141 -0
  59. package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -0
  60. package/dist/src/agents/browser/browserAgentFactory.d.ts +42 -0
  61. package/dist/src/agents/browser/browserAgentFactory.js +116 -0
  62. package/dist/src/agents/browser/browserAgentFactory.js.map +1 -0
  63. package/dist/src/agents/browser/browserAgentFactory.test.d.ts +6 -0
  64. package/dist/src/agents/browser/browserAgentFactory.test.js +240 -0
  65. package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -0
  66. package/dist/src/agents/browser/browserAgentInvocation.d.ts +34 -0
  67. package/dist/src/agents/browser/browserAgentInvocation.js +386 -0
  68. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -0
  69. package/dist/src/agents/browser/browserAgentInvocation.test.d.ts +6 -0
  70. package/dist/src/agents/browser/browserAgentInvocation.test.js +382 -0
  71. package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -0
  72. package/dist/src/agents/browser/browserManager.d.ts +115 -0
  73. package/dist/src/agents/browser/browserManager.js +370 -0
  74. package/dist/src/agents/browser/browserManager.js.map +1 -0
  75. package/dist/src/agents/browser/browserManager.test.d.ts +6 -0
  76. package/dist/src/agents/browser/browserManager.test.js +382 -0
  77. package/dist/src/agents/browser/browserManager.test.js.map +1 -0
  78. package/dist/src/agents/browser/mcpToolWrapper.d.ts +45 -0
  79. package/dist/src/agents/browser/mcpToolWrapper.js +358 -0
  80. package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -0
  81. package/dist/src/agents/browser/mcpToolWrapper.test.d.ts +6 -0
  82. package/dist/src/agents/browser/mcpToolWrapper.test.js +126 -0
  83. package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -0
  84. package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.d.ts +6 -0
  85. package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js +59 -0
  86. package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js.map +1 -0
  87. package/dist/src/agents/browser/modelAvailability.d.ts +23 -0
  88. package/dist/src/agents/browser/modelAvailability.js +23 -0
  89. package/dist/src/agents/browser/modelAvailability.js.map +1 -0
  90. package/dist/src/agents/cli-help-agent.d.ts +2 -2
  91. package/dist/src/billing/billing.d.ts +80 -0
  92. package/dist/src/billing/billing.js +128 -0
  93. package/dist/src/billing/billing.js.map +1 -0
  94. package/dist/src/billing/billing.test.d.ts +6 -0
  95. package/dist/src/billing/billing.test.js +182 -0
  96. package/dist/src/billing/billing.test.js.map +1 -0
  97. package/dist/src/billing/index.d.ts +6 -0
  98. package/dist/src/billing/index.js +7 -0
  99. package/dist/src/billing/index.js.map +1 -0
  100. package/dist/src/code_assist/oauth2.d.ts +1 -1
  101. package/dist/src/code_assist/types.d.ts +26 -26
  102. package/dist/src/config/agent-loop-context.d.ts +22 -0
  103. package/dist/src/config/agent-loop-context.js +7 -0
  104. package/dist/src/config/agent-loop-context.js.map +1 -0
  105. package/dist/src/config/trackerFeatureFlag.test.d.ts +6 -0
  106. package/dist/src/config/trackerFeatureFlag.test.js +43 -0
  107. package/dist/src/config/trackerFeatureFlag.test.js.map +1 -0
  108. package/dist/src/config/userHintService.d.ts +46 -0
  109. package/dist/src/config/userHintService.js +81 -0
  110. package/dist/src/config/userHintService.js.map +1 -0
  111. package/dist/src/config/userHintService.test.d.ts +6 -0
  112. package/dist/src/config/userHintService.test.js +62 -0
  113. package/dist/src/config/userHintService.test.js.map +1 -0
  114. package/dist/src/core/localLiteRtLmClient.d.ts +24 -0
  115. package/dist/src/core/localLiteRtLmClient.js +77 -0
  116. package/dist/src/core/localLiteRtLmClient.js.map +1 -0
  117. package/dist/src/core/localLiteRtLmClient.test.d.ts +6 -0
  118. package/dist/src/core/localLiteRtLmClient.test.js +87 -0
  119. package/dist/src/core/localLiteRtLmClient.test.js.map +1 -0
  120. package/dist/src/core/openaiContentGenerator.d.ts +1 -0
  121. package/dist/src/core/openaiContentGenerator.js +13 -13
  122. package/dist/src/core/openaiContentGenerator.js.map +1 -1
  123. package/dist/src/hooks/runtimeHooks.test.d.ts +6 -0
  124. package/dist/src/hooks/runtimeHooks.test.js +100 -0
  125. package/dist/src/hooks/runtimeHooks.test.js.map +1 -0
  126. package/dist/src/ide/types.d.ts +6 -6
  127. package/dist/src/mcp/mcp-oauth-provider.d.ts +43 -0
  128. package/dist/src/mcp/mcp-oauth-provider.js +67 -0
  129. package/dist/src/mcp/mcp-oauth-provider.js.map +1 -0
  130. package/dist/src/mcp/mcp-oauth-provider.test.d.ts +6 -0
  131. package/dist/src/mcp/mcp-oauth-provider.test.js +63 -0
  132. package/dist/src/mcp/mcp-oauth-provider.test.js.map +1 -0
  133. package/dist/src/policy/integrity.d.ts +45 -0
  134. package/dist/src/policy/integrity.js +121 -0
  135. package/dist/src/policy/integrity.js.map +1 -0
  136. package/dist/src/policy/integrity.test.d.ts +6 -0
  137. package/dist/src/policy/integrity.test.js +132 -0
  138. package/dist/src/policy/integrity.test.js.map +1 -0
  139. package/dist/src/policy/policies/conseca.toml +6 -0
  140. package/dist/src/policy/workspace-policy.test.js +231 -0
  141. package/dist/src/policy/workspace-policy.test.js.map +1 -0
  142. package/dist/src/routing/strategies/approvalModeStrategy.d.ts +18 -0
  143. package/dist/src/routing/strategies/approvalModeStrategy.js +59 -0
  144. package/dist/src/routing/strategies/approvalModeStrategy.js.map +1 -0
  145. package/dist/src/routing/strategies/approvalModeStrategy.test.d.ts +6 -0
  146. package/dist/src/routing/strategies/approvalModeStrategy.test.js +140 -0
  147. package/dist/src/routing/strategies/approvalModeStrategy.test.js.map +1 -0
  148. package/dist/src/routing/strategies/gemmaClassifierStrategy.d.ts +14 -0
  149. package/dist/src/routing/strategies/gemmaClassifierStrategy.js +182 -0
  150. package/dist/src/routing/strategies/gemmaClassifierStrategy.js.map +1 -0
  151. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.d.ts +6 -0
  152. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js +218 -0
  153. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js.map +1 -0
  154. package/dist/src/safety/conseca/conseca.d.ts +31 -0
  155. package/dist/src/safety/conseca/conseca.js +105 -0
  156. package/dist/src/safety/conseca/conseca.js.map +1 -0
  157. package/dist/src/safety/conseca/conseca.test.js +226 -0
  158. package/dist/src/safety/conseca/conseca.test.js.map +1 -0
  159. package/dist/src/safety/conseca/integration.test.js +19 -0
  160. package/dist/src/safety/conseca/integration.test.js.map +1 -0
  161. package/dist/src/safety/conseca/policy-enforcer.d.ts +13 -0
  162. package/dist/src/safety/conseca/policy-enforcer.js +135 -0
  163. package/dist/src/safety/conseca/policy-enforcer.js.map +1 -0
  164. package/dist/src/safety/conseca/policy-enforcer.test.js +141 -0
  165. package/dist/src/safety/conseca/policy-enforcer.test.js.map +1 -0
  166. package/dist/src/safety/conseca/policy-generator.d.ts +15 -0
  167. package/dist/src/safety/conseca/policy-generator.js +144 -0
  168. package/dist/src/safety/conseca/policy-generator.js.map +1 -0
  169. package/dist/src/safety/conseca/policy-generator.test.d.ts +6 -0
  170. package/dist/src/safety/conseca/policy-generator.test.js +84 -0
  171. package/dist/src/safety/conseca/policy-generator.test.js.map +1 -0
  172. package/dist/src/safety/conseca/types.d.ts +15 -0
  173. package/dist/src/safety/conseca/types.js +7 -0
  174. package/dist/src/safety/conseca/types.js.map +1 -0
  175. package/dist/src/scheduler/scheduler_parallel.test.d.ts +6 -0
  176. package/dist/src/scheduler/scheduler_parallel.test.js +401 -0
  177. package/dist/src/scheduler/scheduler_parallel.test.js.map +1 -0
  178. package/dist/src/services/FolderTrustDiscoveryService.d.ts +32 -0
  179. package/dist/src/services/FolderTrustDiscoveryService.js +169 -0
  180. package/dist/src/services/FolderTrustDiscoveryService.js.map +1 -0
  181. package/dist/src/services/FolderTrustDiscoveryService.test.d.ts +6 -0
  182. package/dist/src/services/FolderTrustDiscoveryService.test.js +118 -0
  183. package/dist/src/services/FolderTrustDiscoveryService.test.js.map +1 -0
  184. package/dist/src/services/fileKeychain.d.ts +24 -0
  185. package/dist/src/services/fileKeychain.js +123 -0
  186. package/dist/src/services/fileKeychain.js.map +1 -0
  187. package/dist/src/services/keychainService.d.ts +51 -0
  188. package/dist/src/services/keychainService.js +133 -0
  189. package/dist/src/services/keychainService.js.map +1 -0
  190. package/dist/src/services/keychainService.test.d.ts +6 -0
  191. package/dist/src/services/keychainService.test.js +150 -0
  192. package/dist/src/services/keychainService.test.js.map +1 -0
  193. package/dist/src/services/keychainTypes.d.ts +41 -0
  194. package/dist/src/services/keychainTypes.js +18 -0
  195. package/dist/src/services/keychainTypes.js.map +1 -0
  196. package/dist/src/services/trackerService.d.ts +49 -0
  197. package/dist/src/services/trackerService.js +193 -0
  198. package/dist/src/services/trackerService.js.map +1 -0
  199. package/dist/src/services/trackerService.test.d.ts +6 -0
  200. package/dist/src/services/trackerService.test.js +117 -0
  201. package/dist/src/services/trackerService.test.js.map +1 -0
  202. package/dist/src/services/trackerTypes.d.ts +51 -0
  203. package/dist/src/services/trackerTypes.js +33 -0
  204. package/dist/src/services/trackerTypes.js.map +1 -0
  205. package/dist/src/telemetry/billingEvents.d.ts +75 -0
  206. package/dist/src/telemetry/billingEvents.js +181 -0
  207. package/dist/src/telemetry/billingEvents.js.map +1 -0
  208. package/dist/src/telemetry/billingEvents.test.d.ts +6 -0
  209. package/dist/src/telemetry/billingEvents.test.js +139 -0
  210. package/dist/src/telemetry/billingEvents.test.js.map +1 -0
  211. package/dist/src/telemetry/conseca-logger.d.ts +9 -0
  212. package/dist/src/telemetry/conseca-logger.js +91 -0
  213. package/dist/src/telemetry/conseca-logger.js.map +1 -0
  214. package/dist/src/telemetry/conseca-logger.test.d.ts +6 -0
  215. package/dist/src/telemetry/conseca-logger.test.js +90 -0
  216. package/dist/src/telemetry/conseca-logger.test.js.map +1 -0
  217. package/dist/src/telemetry/trace.test.d.ts +6 -0
  218. package/dist/src/telemetry/trace.test.js +116 -0
  219. package/dist/src/telemetry/trace.test.js.map +1 -0
  220. package/dist/src/tools/definitions/trackerTools.d.ts +12 -0
  221. package/dist/src/tools/definitions/trackerTools.js +146 -0
  222. package/dist/src/tools/definitions/trackerTools.js.map +1 -0
  223. package/dist/src/tools/diff-utils.d.ts +9 -0
  224. package/dist/src/tools/diff-utils.js +66 -0
  225. package/dist/src/tools/diff-utils.js.map +1 -0
  226. package/dist/src/tools/diff-utils.test.d.ts +6 -0
  227. package/dist/src/tools/diff-utils.test.js +53 -0
  228. package/dist/src/tools/diff-utils.test.js.map +1 -0
  229. package/dist/src/tools/grep-utils.d.ts +49 -0
  230. package/dist/src/tools/grep-utils.js +147 -0
  231. package/dist/src/tools/grep-utils.js.map +1 -0
  232. package/dist/src/tools/omissionPlaceholderDetector.d.ts +15 -0
  233. package/dist/src/tools/omissionPlaceholderDetector.js +90 -0
  234. package/dist/src/tools/omissionPlaceholderDetector.js.map +1 -0
  235. package/dist/src/tools/omissionPlaceholderDetector.test.d.ts +6 -0
  236. package/dist/src/tools/omissionPlaceholderDetector.test.js +49 -0
  237. package/dist/src/tools/omissionPlaceholderDetector.test.js.map +1 -0
  238. package/dist/src/tools/trackerTools.d.ts +122 -0
  239. package/dist/src/tools/trackerTools.js +365 -0
  240. package/dist/src/tools/trackerTools.js.map +1 -0
  241. package/dist/src/tools/trackerTools.test.d.ts +6 -0
  242. package/dist/src/tools/trackerTools.test.js +97 -0
  243. package/dist/src/tools/trackerTools.test.js.map +1 -0
  244. package/dist/src/utils/approvalModeUtils.d.ts +14 -0
  245. package/dist/src/utils/approvalModeUtils.js +35 -0
  246. package/dist/src/utils/approvalModeUtils.js.map +1 -0
  247. package/dist/src/utils/approvalModeUtils.test.d.ts +6 -0
  248. package/dist/src/utils/approvalModeUtils.test.js +36 -0
  249. package/dist/src/utils/approvalModeUtils.test.js.map +1 -0
  250. package/dist/src/utils/cache.d.ts +63 -0
  251. package/dist/src/utils/cache.js +103 -0
  252. package/dist/src/utils/cache.js.map +1 -0
  253. package/dist/src/utils/cache.test.d.ts +6 -0
  254. package/dist/src/utils/cache.test.js +158 -0
  255. package/dist/src/utils/cache.test.js.map +1 -0
  256. package/dist/src/utils/checkpointUtils.d.ts +2 -2
  257. package/dist/src/utils/compatibility.d.ts +41 -0
  258. package/dist/src/utils/compatibility.js +112 -0
  259. package/dist/src/utils/compatibility.js.map +1 -0
  260. package/dist/src/utils/compatibility.test.d.ts +6 -0
  261. package/dist/src/utils/compatibility.test.js +233 -0
  262. package/dist/src/utils/compatibility.test.js.map +1 -0
  263. package/dist/src/utils/envExpansion.d.ts +18 -0
  264. package/dist/src/utils/envExpansion.js +46 -0
  265. package/dist/src/utils/envExpansion.js.map +1 -0
  266. package/dist/src/utils/envExpansion.test.d.ts +6 -0
  267. package/dist/src/utils/envExpansion.test.js +110 -0
  268. package/dist/src/utils/envExpansion.test.js.map +1 -0
  269. package/dist/src/utils/errors_timeout.test.d.ts +6 -0
  270. package/dist/src/utils/errors_timeout.test.js +40 -0
  271. package/dist/src/utils/errors_timeout.test.js.map +1 -0
  272. package/dist/src/utils/fetch.test.d.ts +6 -0
  273. package/dist/src/utils/fetch.test.js +206 -0
  274. package/dist/src/utils/fetch.test.js.map +1 -0
  275. package/dist/src/utils/markdownUtils.d.ts +22 -0
  276. package/dist/src/utils/markdownUtils.js +126 -0
  277. package/dist/src/utils/markdownUtils.js.map +1 -0
  278. package/dist/src/utils/markdownUtils.test.d.ts +6 -0
  279. package/dist/src/utils/markdownUtils.test.js +107 -0
  280. package/dist/src/utils/markdownUtils.test.js.map +1 -0
  281. package/dist/src/utils/oauth-flow.d.ts +105 -0
  282. package/dist/src/utils/oauth-flow.js +370 -0
  283. package/dist/src/utils/oauth-flow.js.map +1 -0
  284. package/dist/src/utils/oauth-flow.test.d.ts +6 -0
  285. package/dist/src/utils/oauth-flow.test.js +360 -0
  286. package/dist/src/utils/oauth-flow.test.js.map +1 -0
  287. package/dist/src/utils/sessionUtils.d.ts +14 -0
  288. package/dist/src/utils/sessionUtils.js +122 -0
  289. package/dist/src/utils/sessionUtils.js.map +1 -0
  290. package/dist/src/utils/sessionUtils.test.d.ts +1 -0
  291. package/dist/src/utils/sessionUtils.test.js +171 -0
  292. package/dist/src/utils/sessionUtils.test.js.map +1 -0
  293. package/dist/src/voice/responseFormatter.d.ts +38 -0
  294. package/dist/src/voice/responseFormatter.js +130 -0
  295. package/dist/src/voice/responseFormatter.js.map +1 -0
  296. package/dist/src/voice/responseFormatter.test.d.ts +6 -0
  297. package/dist/src/voice/responseFormatter.test.js +214 -0
  298. package/dist/src/voice/responseFormatter.test.js.map +1 -0
  299. package/dist/tsconfig.tsbuildinfo +1 -1
  300. package/package.json +1 -1
  301. package/dist/docs/CONTRIBUTING.md +0 -555
  302. package/dist/src/agents/executor.d.ts +0 -114
  303. package/dist/src/agents/executor.js +0 -779
  304. package/dist/src/agents/executor.js.map +0 -1
  305. package/dist/src/agents/executor.test.js +0 -1362
  306. package/dist/src/agents/executor.test.js.map +0 -1
  307. package/dist/src/agents/invocation.d.ts +0 -46
  308. package/dist/src/agents/invocation.js +0 -102
  309. package/dist/src/agents/invocation.js.map +0 -1
  310. package/dist/src/agents/invocation.test.js +0 -215
  311. package/dist/src/agents/invocation.test.js.map +0 -1
  312. package/dist/src/core/subagent.d.ts +0 -236
  313. package/dist/src/core/subagent.js +0 -482
  314. package/dist/src/core/subagent.js.map +0 -1
  315. package/dist/src/core/subagent.test.js +0 -530
  316. package/dist/src/core/subagent.test.js.map +0 -1
  317. package/dist/src/tools/smart-edit.d.ts +0 -78
  318. package/dist/src/tools/smart-edit.js +0 -717
  319. package/dist/src/tools/smart-edit.js.map +0 -1
  320. package/dist/src/tools/smart-edit.test.js +0 -592
  321. package/dist/src/tools/smart-edit.test.js.map +0 -1
  322. /package/dist/src/{agents/executor.test.d.ts → policy/workspace-policy.test.d.ts} +0 -0
  323. /package/dist/src/{agents/invocation.test.d.ts → safety/conseca/conseca.test.d.ts} +0 -0
  324. /package/dist/src/{core/subagent.test.d.ts → safety/conseca/integration.test.d.ts} +0 -0
  325. /package/dist/src/{tools/smart-edit.test.d.ts → safety/conseca/policy-enforcer.test.d.ts} +0 -0
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Detects shorthand omission placeholders such as:
8
+ * - (rest of methods ...)
9
+ * - (rest of code ...)
10
+ * - (unchanged code ...)
11
+ * - // rest of methods ...
12
+ *
13
+ * Returns all placeholders found as normalized tokens.
14
+ */
15
+ export declare function detectOmissionPlaceholders(text: string): string[];
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ const OMITTED_PREFIXES = new Set([
7
+ 'rest of',
8
+ 'rest of method',
9
+ 'rest of methods',
10
+ 'rest of code',
11
+ 'unchanged code',
12
+ 'unchanged method',
13
+ 'unchanged methods',
14
+ ]);
15
+ function isAllDots(str) {
16
+ if (str.length === 0) {
17
+ return false;
18
+ }
19
+ for (let i = 0; i < str.length; i++) {
20
+ if (str[i] !== '.') {
21
+ return false;
22
+ }
23
+ }
24
+ return true;
25
+ }
26
+ function normalizeWhitespace(input) {
27
+ const segments = [];
28
+ let current = '';
29
+ for (const char of input) {
30
+ if (char === ' ' || char === '\t' || char === '\n' || char === '\r') {
31
+ if (current.length > 0) {
32
+ segments.push(current);
33
+ current = '';
34
+ }
35
+ continue;
36
+ }
37
+ current += char;
38
+ }
39
+ if (current.length > 0) {
40
+ segments.push(current);
41
+ }
42
+ return segments.join(' ');
43
+ }
44
+ function normalizePlaceholder(line) {
45
+ let text = line.trim();
46
+ if (!text) {
47
+ return null;
48
+ }
49
+ if (text.startsWith('//')) {
50
+ text = text.slice(2).trim();
51
+ }
52
+ if (text.startsWith('(') && text.endsWith(')')) {
53
+ text = text.slice(1, -1).trim();
54
+ }
55
+ const ellipsisStart = text.indexOf('...');
56
+ if (ellipsisStart < 0) {
57
+ return null;
58
+ }
59
+ const prefixRaw = text.slice(0, ellipsisStart).trim().toLowerCase();
60
+ const suffixRaw = text.slice(ellipsisStart + 3).trim();
61
+ const prefix = normalizeWhitespace(prefixRaw);
62
+ if (!OMITTED_PREFIXES.has(prefix)) {
63
+ return null;
64
+ }
65
+ if (suffixRaw.length > 0 && !isAllDots(suffixRaw)) {
66
+ return null;
67
+ }
68
+ return `${prefix} ...`;
69
+ }
70
+ /**
71
+ * Detects shorthand omission placeholders such as:
72
+ * - (rest of methods ...)
73
+ * - (rest of code ...)
74
+ * - (unchanged code ...)
75
+ * - // rest of methods ...
76
+ *
77
+ * Returns all placeholders found as normalized tokens.
78
+ */
79
+ export function detectOmissionPlaceholders(text) {
80
+ const lines = text.replaceAll('\r\n', '\n').split('\n');
81
+ const matches = [];
82
+ for (const rawLine of lines) {
83
+ const normalized = normalizePlaceholder(rawLine);
84
+ if (normalized) {
85
+ matches.push(normalized);
86
+ }
87
+ }
88
+ return matches;
89
+ }
90
+ //# sourceMappingURL=omissionPlaceholderDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omissionPlaceholderDetector.js","sourceRoot":"","sources":["../../../src/tools/omissionPlaceholderDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, expect, it } from 'vitest';
7
+ import { detectOmissionPlaceholders } from './omissionPlaceholderDetector.js';
8
+ describe('detectOmissionPlaceholders', () => {
9
+ it('detects standalone placeholder lines', () => {
10
+ expect(detectOmissionPlaceholders('(rest of methods ...)')).toEqual([
11
+ 'rest of methods ...',
12
+ ]);
13
+ expect(detectOmissionPlaceholders('(rest of code ...)')).toEqual([
14
+ 'rest of code ...',
15
+ ]);
16
+ expect(detectOmissionPlaceholders('(unchanged code ...)')).toEqual([
17
+ 'unchanged code ...',
18
+ ]);
19
+ expect(detectOmissionPlaceholders('// rest of methods ...')).toEqual([
20
+ 'rest of methods ...',
21
+ ]);
22
+ });
23
+ it('detects case-insensitive placeholders', () => {
24
+ expect(detectOmissionPlaceholders('(Rest Of Methods ...)')).toEqual([
25
+ 'rest of methods ...',
26
+ ]);
27
+ });
28
+ it('detects multiple placeholder lines in one input', () => {
29
+ const text = `class Example {
30
+ run() {}
31
+ (rest of methods ...)
32
+ (unchanged code ...)
33
+ }`;
34
+ expect(detectOmissionPlaceholders(text)).toEqual([
35
+ 'rest of methods ...',
36
+ 'unchanged code ...',
37
+ ]);
38
+ });
39
+ it('does not detect placeholders embedded in normal code', () => {
40
+ expect(detectOmissionPlaceholders('const note = "(rest of methods ...)";\nconsole.log(note);')).toEqual([]);
41
+ });
42
+ it('does not detect omission phrase when inline in a comment', () => {
43
+ expect(detectOmissionPlaceholders('return value; // rest of methods ...')).toEqual([]);
44
+ });
45
+ it('does not detect unrelated ellipsis text', () => {
46
+ expect(detectOmissionPlaceholders('const message = "loading...";')).toEqual([]);
47
+ });
48
+ });
49
+ //# sourceMappingURL=omissionPlaceholderDetector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omissionPlaceholderDetector.test.js","sourceRoot":"","sources":["../../../src/tools/omissionPlaceholderDetector.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC;YAClE,qBAAqB;SACtB,CAAC,CAAC;QACH,MAAM,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/D,kBAAkB;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC;YACjE,oBAAoB;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,qBAAqB;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC;YAClE,qBAAqB;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,IAAI,GAAG;;;;EAIf,CAAC;QACC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/C,qBAAqB;YACrB,oBAAoB;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CACJ,0BAA0B,CACxB,2DAA2D,CAC5D,CACF,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,CACJ,0BAA0B,CAAC,sCAAsC,CAAC,CACnE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,0BAA0B,CAAC,+BAA+B,CAAC,CAAC,CAAC,OAAO,CACzE,EAAE,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { Config } from '../config/config.js';
7
+ import type { MessageBus } from '../confirmation-bus/message-bus.js';
8
+ import type { ToolResult } from './tools.js';
9
+ import { BaseDeclarativeTool, BaseToolInvocation } from './tools.js';
10
+ import type { TaskType } from '../services/trackerTypes.js';
11
+ import { TaskStatus } from '../services/trackerTypes.js';
12
+ interface CreateTaskParams {
13
+ title: string;
14
+ description: string;
15
+ type: TaskType;
16
+ parentId?: string;
17
+ dependencies?: string[];
18
+ }
19
+ declare class TrackerCreateTaskInvocation extends BaseToolInvocation<CreateTaskParams, ToolResult> {
20
+ private readonly config;
21
+ constructor(config: Config, params: CreateTaskParams, messageBus: MessageBus, toolName: string);
22
+ private get service();
23
+ getDescription(): string;
24
+ execute(_signal: AbortSignal): Promise<ToolResult>;
25
+ }
26
+ export declare class TrackerCreateTaskTool extends BaseDeclarativeTool<CreateTaskParams, ToolResult> {
27
+ private config;
28
+ static readonly Name = "tracker_create_task";
29
+ constructor(config: Config, messageBus: MessageBus);
30
+ protected createInvocation(params: CreateTaskParams, messageBus: MessageBus): TrackerCreateTaskInvocation;
31
+ getSchema(modelId?: string): import("@google/genai").FunctionDeclaration;
32
+ }
33
+ interface UpdateTaskParams {
34
+ id: string;
35
+ title?: string;
36
+ description?: string;
37
+ status?: TaskStatus;
38
+ dependencies?: string[];
39
+ }
40
+ declare class TrackerUpdateTaskInvocation extends BaseToolInvocation<UpdateTaskParams, ToolResult> {
41
+ private readonly config;
42
+ constructor(config: Config, params: UpdateTaskParams, messageBus: MessageBus, toolName: string);
43
+ private get service();
44
+ getDescription(): string;
45
+ execute(_signal: AbortSignal): Promise<ToolResult>;
46
+ }
47
+ export declare class TrackerUpdateTaskTool extends BaseDeclarativeTool<UpdateTaskParams, ToolResult> {
48
+ private config;
49
+ static readonly Name = "tracker_update_task";
50
+ constructor(config: Config, messageBus: MessageBus);
51
+ protected createInvocation(params: UpdateTaskParams, messageBus: MessageBus): TrackerUpdateTaskInvocation;
52
+ getSchema(modelId?: string): import("@google/genai").FunctionDeclaration;
53
+ }
54
+ interface GetTaskParams {
55
+ id: string;
56
+ }
57
+ declare class TrackerGetTaskInvocation extends BaseToolInvocation<GetTaskParams, ToolResult> {
58
+ private readonly config;
59
+ constructor(config: Config, params: GetTaskParams, messageBus: MessageBus, toolName: string);
60
+ private get service();
61
+ getDescription(): string;
62
+ execute(_signal: AbortSignal): Promise<ToolResult>;
63
+ }
64
+ export declare class TrackerGetTaskTool extends BaseDeclarativeTool<GetTaskParams, ToolResult> {
65
+ private config;
66
+ static readonly Name = "tracker_get_task";
67
+ constructor(config: Config, messageBus: MessageBus);
68
+ protected createInvocation(params: GetTaskParams, messageBus: MessageBus): TrackerGetTaskInvocation;
69
+ getSchema(modelId?: string): import("@google/genai").FunctionDeclaration;
70
+ }
71
+ interface ListTasksParams {
72
+ status?: TaskStatus;
73
+ type?: TaskType;
74
+ parentId?: string;
75
+ }
76
+ declare class TrackerListTasksInvocation extends BaseToolInvocation<ListTasksParams, ToolResult> {
77
+ private readonly config;
78
+ constructor(config: Config, params: ListTasksParams, messageBus: MessageBus, toolName: string);
79
+ private get service();
80
+ getDescription(): string;
81
+ execute(_signal: AbortSignal): Promise<ToolResult>;
82
+ }
83
+ export declare class TrackerListTasksTool extends BaseDeclarativeTool<ListTasksParams, ToolResult> {
84
+ private config;
85
+ static readonly Name = "tracker_list_tasks";
86
+ constructor(config: Config, messageBus: MessageBus);
87
+ protected createInvocation(params: ListTasksParams, messageBus: MessageBus): TrackerListTasksInvocation;
88
+ getSchema(modelId?: string): import("@google/genai").FunctionDeclaration;
89
+ }
90
+ interface AddDependencyParams {
91
+ taskId: string;
92
+ dependencyId: string;
93
+ }
94
+ declare class TrackerAddDependencyInvocation extends BaseToolInvocation<AddDependencyParams, ToolResult> {
95
+ private readonly config;
96
+ constructor(config: Config, params: AddDependencyParams, messageBus: MessageBus, toolName: string);
97
+ private get service();
98
+ getDescription(): string;
99
+ execute(_signal: AbortSignal): Promise<ToolResult>;
100
+ }
101
+ export declare class TrackerAddDependencyTool extends BaseDeclarativeTool<AddDependencyParams, ToolResult> {
102
+ private config;
103
+ static readonly Name = "tracker_add_dependency";
104
+ constructor(config: Config, messageBus: MessageBus);
105
+ protected createInvocation(params: AddDependencyParams, messageBus: MessageBus): TrackerAddDependencyInvocation;
106
+ getSchema(modelId?: string): import("@google/genai").FunctionDeclaration;
107
+ }
108
+ declare class TrackerVisualizeInvocation extends BaseToolInvocation<Record<string, never>, ToolResult> {
109
+ private readonly config;
110
+ constructor(config: Config, params: Record<string, never>, messageBus: MessageBus, toolName: string);
111
+ private get service();
112
+ getDescription(): string;
113
+ execute(_signal: AbortSignal): Promise<ToolResult>;
114
+ }
115
+ export declare class TrackerVisualizeTool extends BaseDeclarativeTool<Record<string, never>, ToolResult> {
116
+ private config;
117
+ static readonly Name = "tracker_visualize";
118
+ constructor(config: Config, messageBus: MessageBus);
119
+ protected createInvocation(params: Record<string, never>, messageBus: MessageBus): TrackerVisualizeInvocation;
120
+ getSchema(modelId?: string): import("@google/genai").FunctionDeclaration;
121
+ }
122
+ export {};
@@ -0,0 +1,365 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { TRACKER_ADD_DEPENDENCY_DEFINITION, TRACKER_CREATE_TASK_DEFINITION, TRACKER_GET_TASK_DEFINITION, TRACKER_LIST_TASKS_DEFINITION, TRACKER_UPDATE_TASK_DEFINITION, TRACKER_VISUALIZE_DEFINITION, } from './definitions/trackerTools.js';
7
+ import { resolveToolDeclaration } from './definitions/resolver.js';
8
+ import { TRACKER_ADD_DEPENDENCY_TOOL_NAME, TRACKER_CREATE_TASK_TOOL_NAME, TRACKER_GET_TASK_TOOL_NAME, TRACKER_LIST_TASKS_TOOL_NAME, TRACKER_UPDATE_TASK_TOOL_NAME, TRACKER_VISUALIZE_TOOL_NAME, } from './tool-names.js';
9
+ import { BaseDeclarativeTool, BaseToolInvocation, Kind } from './tools.js';
10
+ import { ToolErrorType } from './tool-error.js';
11
+ import { TaskStatus } from '../services/trackerTypes.js';
12
+ class TrackerCreateTaskInvocation extends BaseToolInvocation {
13
+ config;
14
+ constructor(config, params, messageBus, toolName) {
15
+ super(params, messageBus, toolName);
16
+ this.config = config;
17
+ }
18
+ get service() {
19
+ return this.config.getTrackerService();
20
+ }
21
+ getDescription() {
22
+ return `Creating task: ${this.params.title}`;
23
+ }
24
+ async execute(_signal) {
25
+ try {
26
+ const task = await this.service.createTask({
27
+ title: this.params.title,
28
+ description: this.params.description,
29
+ type: this.params.type,
30
+ status: TaskStatus.OPEN,
31
+ parentId: this.params.parentId,
32
+ dependencies: this.params.dependencies ?? [],
33
+ });
34
+ return {
35
+ llmContent: `Created task ${task.id}: ${task.title}`,
36
+ returnDisplay: `Created task ${task.id}.`,
37
+ };
38
+ }
39
+ catch (error) {
40
+ const errorMessage = error instanceof Error ? error.message : String(error);
41
+ return {
42
+ llmContent: `Error creating task: ${errorMessage}`,
43
+ returnDisplay: 'Failed to create task.',
44
+ error: {
45
+ message: errorMessage,
46
+ type: ToolErrorType.EXECUTION_FAILED,
47
+ },
48
+ };
49
+ }
50
+ }
51
+ }
52
+ export class TrackerCreateTaskTool extends BaseDeclarativeTool {
53
+ config;
54
+ static Name = TRACKER_CREATE_TASK_TOOL_NAME;
55
+ constructor(config, messageBus) {
56
+ super(TrackerCreateTaskTool.Name, 'Create Task', TRACKER_CREATE_TASK_DEFINITION.base.description, Kind.Edit, TRACKER_CREATE_TASK_DEFINITION.base.parametersJsonSchema, messageBus);
57
+ this.config = config;
58
+ }
59
+ createInvocation(params, messageBus) {
60
+ return new TrackerCreateTaskInvocation(this.config, params, messageBus, this.name);
61
+ }
62
+ getSchema(modelId) {
63
+ return resolveToolDeclaration(TRACKER_CREATE_TASK_DEFINITION, modelId);
64
+ }
65
+ }
66
+ class TrackerUpdateTaskInvocation extends BaseToolInvocation {
67
+ config;
68
+ constructor(config, params, messageBus, toolName) {
69
+ super(params, messageBus, toolName);
70
+ this.config = config;
71
+ }
72
+ get service() {
73
+ return this.config.getTrackerService();
74
+ }
75
+ getDescription() {
76
+ return `Updating task ${this.params.id}`;
77
+ }
78
+ async execute(_signal) {
79
+ const { id, ...updates } = this.params;
80
+ try {
81
+ const task = await this.service.updateTask(id, updates);
82
+ return {
83
+ llmContent: `Updated task ${task.id}. Status: ${task.status}`,
84
+ returnDisplay: `Updated task ${task.id}.`,
85
+ };
86
+ }
87
+ catch (error) {
88
+ const errorMessage = error instanceof Error ? error.message : String(error);
89
+ return {
90
+ llmContent: `Error updating task: ${errorMessage}`,
91
+ returnDisplay: 'Failed to update task.',
92
+ error: {
93
+ message: errorMessage,
94
+ type: ToolErrorType.EXECUTION_FAILED,
95
+ },
96
+ };
97
+ }
98
+ }
99
+ }
100
+ export class TrackerUpdateTaskTool extends BaseDeclarativeTool {
101
+ config;
102
+ static Name = TRACKER_UPDATE_TASK_TOOL_NAME;
103
+ constructor(config, messageBus) {
104
+ super(TrackerUpdateTaskTool.Name, 'Update Task', TRACKER_UPDATE_TASK_DEFINITION.base.description, Kind.Edit, TRACKER_UPDATE_TASK_DEFINITION.base.parametersJsonSchema, messageBus);
105
+ this.config = config;
106
+ }
107
+ createInvocation(params, messageBus) {
108
+ return new TrackerUpdateTaskInvocation(this.config, params, messageBus, this.name);
109
+ }
110
+ getSchema(modelId) {
111
+ return resolveToolDeclaration(TRACKER_UPDATE_TASK_DEFINITION, modelId);
112
+ }
113
+ }
114
+ class TrackerGetTaskInvocation extends BaseToolInvocation {
115
+ config;
116
+ constructor(config, params, messageBus, toolName) {
117
+ super(params, messageBus, toolName);
118
+ this.config = config;
119
+ }
120
+ get service() {
121
+ return this.config.getTrackerService();
122
+ }
123
+ getDescription() {
124
+ return `Retrieving task ${this.params.id}`;
125
+ }
126
+ async execute(_signal) {
127
+ const task = await this.service.getTask(this.params.id);
128
+ if (!task) {
129
+ return {
130
+ llmContent: `Task ${this.params.id} not found.`,
131
+ returnDisplay: 'Task not found.',
132
+ };
133
+ }
134
+ return {
135
+ llmContent: JSON.stringify(task, null, 2),
136
+ returnDisplay: `Retrieved task ${task.id}.`,
137
+ };
138
+ }
139
+ }
140
+ export class TrackerGetTaskTool extends BaseDeclarativeTool {
141
+ config;
142
+ static Name = TRACKER_GET_TASK_TOOL_NAME;
143
+ constructor(config, messageBus) {
144
+ super(TrackerGetTaskTool.Name, 'Get Task', TRACKER_GET_TASK_DEFINITION.base.description, Kind.Read, TRACKER_GET_TASK_DEFINITION.base.parametersJsonSchema, messageBus);
145
+ this.config = config;
146
+ }
147
+ createInvocation(params, messageBus) {
148
+ return new TrackerGetTaskInvocation(this.config, params, messageBus, this.name);
149
+ }
150
+ getSchema(modelId) {
151
+ return resolveToolDeclaration(TRACKER_GET_TASK_DEFINITION, modelId);
152
+ }
153
+ }
154
+ class TrackerListTasksInvocation extends BaseToolInvocation {
155
+ config;
156
+ constructor(config, params, messageBus, toolName) {
157
+ super(params, messageBus, toolName);
158
+ this.config = config;
159
+ }
160
+ get service() {
161
+ return this.config.getTrackerService();
162
+ }
163
+ getDescription() {
164
+ return 'Listing tasks.';
165
+ }
166
+ async execute(_signal) {
167
+ let tasks = await this.service.listTasks();
168
+ if (this.params.status) {
169
+ tasks = tasks.filter((t) => t.status === this.params.status);
170
+ }
171
+ if (this.params.type) {
172
+ tasks = tasks.filter((t) => t.type === this.params.type);
173
+ }
174
+ if (this.params.parentId) {
175
+ tasks = tasks.filter((t) => t.parentId === this.params.parentId);
176
+ }
177
+ if (tasks.length === 0) {
178
+ return {
179
+ llmContent: 'No tasks found matching the criteria.',
180
+ returnDisplay: 'No matching tasks.',
181
+ };
182
+ }
183
+ const content = tasks
184
+ .map((t) => `- [${t.id}] ${t.title} (${t.status})`)
185
+ .join('\n');
186
+ return {
187
+ llmContent: content,
188
+ returnDisplay: `Listed ${tasks.length} tasks.`,
189
+ };
190
+ }
191
+ }
192
+ export class TrackerListTasksTool extends BaseDeclarativeTool {
193
+ config;
194
+ static Name = TRACKER_LIST_TASKS_TOOL_NAME;
195
+ constructor(config, messageBus) {
196
+ super(TrackerListTasksTool.Name, 'List Tasks', TRACKER_LIST_TASKS_DEFINITION.base.description, Kind.Search, TRACKER_LIST_TASKS_DEFINITION.base.parametersJsonSchema, messageBus);
197
+ this.config = config;
198
+ }
199
+ createInvocation(params, messageBus) {
200
+ return new TrackerListTasksInvocation(this.config, params, messageBus, this.name);
201
+ }
202
+ getSchema(modelId) {
203
+ return resolveToolDeclaration(TRACKER_LIST_TASKS_DEFINITION, modelId);
204
+ }
205
+ }
206
+ class TrackerAddDependencyInvocation extends BaseToolInvocation {
207
+ config;
208
+ constructor(config, params, messageBus, toolName) {
209
+ super(params, messageBus, toolName);
210
+ this.config = config;
211
+ }
212
+ get service() {
213
+ return this.config.getTrackerService();
214
+ }
215
+ getDescription() {
216
+ return `Adding dependency: ${this.params.taskId} depends on ${this.params.dependencyId}`;
217
+ }
218
+ async execute(_signal) {
219
+ if (this.params.taskId === this.params.dependencyId) {
220
+ return {
221
+ llmContent: `Error: Task ${this.params.taskId} cannot depend on itself.`,
222
+ returnDisplay: 'Self-referential dependency rejected.',
223
+ error: {
224
+ message: 'Task cannot depend on itself',
225
+ type: ToolErrorType.EXECUTION_FAILED,
226
+ },
227
+ };
228
+ }
229
+ const [task, dep] = await Promise.all([
230
+ this.service.getTask(this.params.taskId),
231
+ this.service.getTask(this.params.dependencyId),
232
+ ]);
233
+ if (!task) {
234
+ return {
235
+ llmContent: `Task ${this.params.taskId} not found.`,
236
+ returnDisplay: 'Task not found.',
237
+ };
238
+ }
239
+ if (!dep) {
240
+ return {
241
+ llmContent: `Dependency task ${this.params.dependencyId} not found.`,
242
+ returnDisplay: 'Dependency not found.',
243
+ };
244
+ }
245
+ const newDeps = Array.from(new Set([...task.dependencies, this.params.dependencyId]));
246
+ try {
247
+ await this.service.updateTask(task.id, { dependencies: newDeps });
248
+ return {
249
+ llmContent: `Linked ${task.id} -> ${dep.id}.`,
250
+ returnDisplay: 'Dependency added.',
251
+ };
252
+ }
253
+ catch (error) {
254
+ const errorMessage = error instanceof Error ? error.message : String(error);
255
+ return {
256
+ llmContent: `Error adding dependency: ${errorMessage}`,
257
+ returnDisplay: 'Failed to add dependency.',
258
+ error: {
259
+ message: errorMessage,
260
+ type: ToolErrorType.EXECUTION_FAILED,
261
+ },
262
+ };
263
+ }
264
+ }
265
+ }
266
+ export class TrackerAddDependencyTool extends BaseDeclarativeTool {
267
+ config;
268
+ static Name = TRACKER_ADD_DEPENDENCY_TOOL_NAME;
269
+ constructor(config, messageBus) {
270
+ super(TrackerAddDependencyTool.Name, 'Add Dependency', TRACKER_ADD_DEPENDENCY_DEFINITION.base.description, Kind.Edit, TRACKER_ADD_DEPENDENCY_DEFINITION.base.parametersJsonSchema, messageBus);
271
+ this.config = config;
272
+ }
273
+ createInvocation(params, messageBus) {
274
+ return new TrackerAddDependencyInvocation(this.config, params, messageBus, this.name);
275
+ }
276
+ getSchema(modelId) {
277
+ return resolveToolDeclaration(TRACKER_ADD_DEPENDENCY_DEFINITION, modelId);
278
+ }
279
+ }
280
+ // --- tracker_visualize ---
281
+ class TrackerVisualizeInvocation extends BaseToolInvocation {
282
+ config;
283
+ constructor(config, params, messageBus, toolName) {
284
+ super(params, messageBus, toolName);
285
+ this.config = config;
286
+ }
287
+ get service() {
288
+ return this.config.getTrackerService();
289
+ }
290
+ getDescription() {
291
+ return 'Visualizing the task graph.';
292
+ }
293
+ async execute(_signal) {
294
+ const tasks = await this.service.listTasks();
295
+ if (tasks.length === 0) {
296
+ return {
297
+ llmContent: 'No tasks to visualize.',
298
+ returnDisplay: 'Empty tracker.',
299
+ };
300
+ }
301
+ const statusEmojis = {
302
+ open: '⭕',
303
+ in_progress: '🚧',
304
+ blocked: '🚫',
305
+ closed: '✅',
306
+ };
307
+ const typeLabels = {
308
+ epic: '[EPIC]',
309
+ task: '[TASK]',
310
+ bug: '[BUG]',
311
+ };
312
+ const childrenMap = new Map();
313
+ const roots = [];
314
+ for (const task of tasks) {
315
+ if (task.parentId) {
316
+ if (!childrenMap.has(task.parentId)) {
317
+ childrenMap.set(task.parentId, []);
318
+ }
319
+ childrenMap.get(task.parentId).push(task);
320
+ }
321
+ else {
322
+ roots.push(task);
323
+ }
324
+ }
325
+ let output = 'Task Tracker Graph:\n';
326
+ const renderTask = (task, depth, visited) => {
327
+ if (visited.has(task.id)) {
328
+ output += `${' '.repeat(depth)}[CYCLE DETECTED: ${task.id}]\n`;
329
+ return;
330
+ }
331
+ visited.add(task.id);
332
+ const indent = ' '.repeat(depth);
333
+ output += `${indent}${statusEmojis[task.status]} ${task.id} ${typeLabels[task.type]} ${task.title}\n`;
334
+ if (task.dependencies.length > 0) {
335
+ output += `${indent} └─ Depends on: ${task.dependencies.join(', ')}\n`;
336
+ }
337
+ const children = childrenMap.get(task.id) ?? [];
338
+ for (const child of children) {
339
+ renderTask(child, depth + 1, new Set(visited));
340
+ }
341
+ };
342
+ for (const root of roots) {
343
+ renderTask(root, 0, new Set());
344
+ }
345
+ return {
346
+ llmContent: output,
347
+ returnDisplay: output,
348
+ };
349
+ }
350
+ }
351
+ export class TrackerVisualizeTool extends BaseDeclarativeTool {
352
+ config;
353
+ static Name = TRACKER_VISUALIZE_TOOL_NAME;
354
+ constructor(config, messageBus) {
355
+ super(TrackerVisualizeTool.Name, 'Visualize Tracker', TRACKER_VISUALIZE_DEFINITION.base.description, Kind.Read, TRACKER_VISUALIZE_DEFINITION.base.parametersJsonSchema, messageBus);
356
+ this.config = config;
357
+ }
358
+ createInvocation(params, messageBus) {
359
+ return new TrackerVisualizeInvocation(this.config, params, messageBus, this.name);
360
+ }
361
+ getSchema(modelId) {
362
+ return resolveToolDeclaration(TRACKER_VISUALIZE_DEFINITION, modelId);
363
+ }
364
+ }
365
+ //# sourceMappingURL=trackerTools.js.map