@machina.ai/cell-cli-core 1.10.0-rc1 → 1.13.0-rc1

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 (549) hide show
  1. package/dist/index.d.ts +5 -0
  2. package/dist/index.js +4 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +13 -5
  5. package/dist/src/agents/codebase-investigator.js +2 -5
  6. package/dist/src/agents/codebase-investigator.js.map +1 -1
  7. package/dist/src/agents/executor.d.ts +19 -0
  8. package/dist/src/agents/executor.js +234 -46
  9. package/dist/src/agents/executor.js.map +1 -1
  10. package/dist/src/agents/executor.test.js +371 -40
  11. package/dist/src/agents/executor.test.js.map +1 -1
  12. package/dist/src/agents/registry.js +4 -3
  13. package/dist/src/agents/registry.js.map +1 -1
  14. package/dist/src/agents/subagent-tool-wrapper.test.js +2 -4
  15. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  16. package/dist/src/agents/types.d.ts +2 -1
  17. package/dist/src/agents/types.js +1 -0
  18. package/dist/src/agents/types.js.map +1 -1
  19. package/dist/src/code_assist/converter.d.ts +1 -0
  20. package/dist/src/code_assist/converter.js +1 -0
  21. package/dist/src/code_assist/converter.js.map +1 -1
  22. package/dist/src/code_assist/converter.test.js +19 -0
  23. package/dist/src/code_assist/converter.test.js.map +1 -1
  24. package/dist/src/code_assist/experiments/client_metadata.d.ts +12 -0
  25. package/dist/src/code_assist/experiments/client_metadata.js +49 -0
  26. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -0
  27. package/dist/src/code_assist/experiments/experiments.d.ts +17 -0
  28. package/dist/src/code_assist/experiments/experiments.js +36 -0
  29. package/dist/src/code_assist/experiments/experiments.js.map +1 -0
  30. package/dist/src/code_assist/experiments/types.d.ts +35 -0
  31. package/dist/src/code_assist/experiments/types.js +7 -0
  32. package/dist/src/code_assist/experiments/types.js.map +1 -0
  33. package/dist/src/code_assist/oauth-credential-storage.js +5 -4
  34. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  35. package/dist/src/code_assist/oauth-credential-storage.test.js +15 -3
  36. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
  37. package/dist/src/code_assist/oauth2.d.ts +2 -2
  38. package/dist/src/code_assist/oauth2.js +64 -51
  39. package/dist/src/code_assist/oauth2.js.map +1 -1
  40. package/dist/src/code_assist/oauth2.test.js +65 -33
  41. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  42. package/dist/src/code_assist/server.d.ts +6 -4
  43. package/dist/src/code_assist/server.js +11 -0
  44. package/dist/src/code_assist/server.js.map +1 -1
  45. package/dist/src/code_assist/server.test.js +17 -0
  46. package/dist/src/code_assist/server.test.js.map +1 -1
  47. package/dist/src/code_assist/setup.d.ts +2 -2
  48. package/dist/src/code_assist/setup.js.map +1 -1
  49. package/dist/src/code_assist/types.d.ts +1 -1
  50. package/dist/src/code_assist/types.js.map +1 -1
  51. package/dist/src/commands/extensions.d.ts +7 -0
  52. package/dist/src/commands/extensions.js +9 -0
  53. package/dist/src/commands/extensions.js.map +1 -0
  54. package/dist/src/commands/extensions.test.js +19 -0
  55. package/dist/src/commands/extensions.test.js.map +1 -0
  56. package/dist/src/config/config.d.ts +81 -32
  57. package/dist/src/config/config.js +193 -66
  58. package/dist/src/config/config.js.map +1 -1
  59. package/dist/src/config/config.test.js +115 -36
  60. package/dist/src/config/config.test.js.map +1 -1
  61. package/dist/src/config/models.d.ts +1 -1
  62. package/dist/src/config/models.js +2 -2
  63. package/dist/src/config/models.js.map +1 -1
  64. package/dist/src/config/storage.d.ts +3 -0
  65. package/dist/src/config/storage.js +20 -0
  66. package/dist/src/config/storage.js.map +1 -1
  67. package/dist/src/confirmation-bus/message-bus.d.ts +2 -1
  68. package/dist/src/confirmation-bus/message-bus.js +7 -1
  69. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  70. package/dist/src/confirmation-bus/types.d.ts +12 -2
  71. package/dist/src/confirmation-bus/types.js +1 -0
  72. package/dist/src/confirmation-bus/types.js.map +1 -1
  73. package/dist/src/core/apiKeyCredentialStorage.d.ts +17 -0
  74. package/dist/src/core/apiKeyCredentialStorage.js +64 -0
  75. package/dist/src/core/apiKeyCredentialStorage.js.map +1 -0
  76. package/dist/src/core/apiKeyCredentialStorage.test.d.ts +6 -0
  77. package/dist/src/core/apiKeyCredentialStorage.test.js +71 -0
  78. package/dist/src/core/apiKeyCredentialStorage.test.js.map +1 -0
  79. package/dist/src/core/client.d.ts +2 -11
  80. package/dist/src/core/client.js +31 -170
  81. package/dist/src/core/client.js.map +1 -1
  82. package/dist/src/core/client.test.js +107 -429
  83. package/dist/src/core/client.test.js.map +1 -1
  84. package/dist/src/core/contentGenerator.js +64 -59
  85. package/dist/src/core/contentGenerator.js.map +1 -1
  86. package/dist/src/core/contentGenerator.test.js +38 -4
  87. package/dist/src/core/contentGenerator.test.js.map +1 -1
  88. package/dist/src/core/coreToolScheduler.d.ts +8 -2
  89. package/dist/src/core/coreToolScheduler.js +337 -172
  90. package/dist/src/core/coreToolScheduler.js.map +1 -1
  91. package/dist/src/core/coreToolScheduler.test.js +363 -12
  92. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  93. package/dist/src/core/fakeContentGenerator.d.ts +33 -0
  94. package/dist/src/core/fakeContentGenerator.js +58 -0
  95. package/dist/src/core/fakeContentGenerator.js.map +1 -0
  96. package/dist/src/core/fakeContentGenerator.test.d.ts +6 -0
  97. package/dist/src/core/fakeContentGenerator.test.js +127 -0
  98. package/dist/src/core/fakeContentGenerator.test.js.map +1 -0
  99. package/dist/src/core/geminiChat.d.ts +2 -0
  100. package/dist/src/core/geminiChat.js +7 -2
  101. package/dist/src/core/geminiChat.js.map +1 -1
  102. package/dist/src/core/geminiChat.test.js +15 -3
  103. package/dist/src/core/geminiChat.test.js.map +1 -1
  104. package/dist/src/core/logger.js +21 -19
  105. package/dist/src/core/logger.js.map +1 -1
  106. package/dist/src/core/loggingContentGenerator.d.ts +1 -0
  107. package/dist/src/core/loggingContentGenerator.js +113 -33
  108. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  109. package/dist/src/core/nonInteractiveToolExecutor.js +5 -4
  110. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  111. package/dist/src/core/nonInteractiveToolExecutor.test.js +3 -0
  112. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  113. package/dist/src/core/prompts.js +115 -72
  114. package/dist/src/core/prompts.js.map +1 -1
  115. package/dist/src/core/prompts.test.js +30 -108
  116. package/dist/src/core/prompts.test.js.map +1 -1
  117. package/dist/src/core/recordingContentGenerator.d.ts +18 -0
  118. package/dist/src/core/recordingContentGenerator.js +77 -0
  119. package/dist/src/core/recordingContentGenerator.js.map +1 -0
  120. package/dist/src/core/recordingContentGenerator.test.d.ts +6 -0
  121. package/dist/src/core/recordingContentGenerator.test.js +101 -0
  122. package/dist/src/core/recordingContentGenerator.test.js.map +1 -0
  123. package/dist/src/core/turn.d.ts +2 -0
  124. package/dist/src/core/turn.js +3 -1
  125. package/dist/src/core/turn.js.map +1 -1
  126. package/dist/src/core/turn.test.js +48 -0
  127. package/dist/src/core/turn.test.js.map +1 -1
  128. package/dist/src/fallback/handler.js +2 -0
  129. package/dist/src/fallback/handler.js.map +1 -1
  130. package/dist/src/generated/git-commit.d.ts +2 -2
  131. package/dist/src/generated/git-commit.js +2 -2
  132. package/dist/src/hooks/hookPlanner.d.ts +46 -0
  133. package/dist/src/hooks/hookPlanner.js +108 -0
  134. package/dist/src/hooks/hookPlanner.js.map +1 -0
  135. package/dist/src/hooks/hookPlanner.test.d.ts +6 -0
  136. package/dist/src/hooks/hookPlanner.test.js +255 -0
  137. package/dist/src/hooks/hookPlanner.test.js.map +1 -0
  138. package/dist/src/hooks/hookRegistry.d.ts +87 -0
  139. package/dist/src/hooks/hookRegistry.js +198 -0
  140. package/dist/src/hooks/hookRegistry.js.map +1 -0
  141. package/dist/src/hooks/hookRegistry.test.d.ts +6 -0
  142. package/dist/src/hooks/hookRegistry.test.js +341 -0
  143. package/dist/src/hooks/hookRegistry.test.js.map +1 -0
  144. package/dist/src/hooks/hookTranslator.d.ts +113 -0
  145. package/dist/src/hooks/hookTranslator.js +232 -0
  146. package/dist/src/hooks/hookTranslator.js.map +1 -0
  147. package/dist/src/hooks/hookTranslator.test.d.ts +6 -0
  148. package/dist/src/hooks/hookTranslator.test.js +192 -0
  149. package/dist/src/hooks/hookTranslator.test.js.map +1 -0
  150. package/dist/src/hooks/types.d.ts +384 -0
  151. package/dist/src/hooks/types.js +284 -0
  152. package/dist/src/hooks/types.js.map +1 -0
  153. package/dist/src/hooks/types.test.d.ts +6 -0
  154. package/dist/src/hooks/types.test.js +35 -0
  155. package/dist/src/hooks/types.test.js.map +1 -0
  156. package/dist/src/ide/ide-client.js +2 -1
  157. package/dist/src/ide/ide-client.js.map +1 -1
  158. package/dist/src/index.d.ts +15 -0
  159. package/dist/src/index.js +18 -0
  160. package/dist/src/index.js.map +1 -1
  161. package/dist/src/mcp/google-auth-provider.d.ts +2 -0
  162. package/dist/src/mcp/google-auth-provider.js +21 -3
  163. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  164. package/dist/src/mcp/google-auth-provider.test.js +42 -9
  165. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  166. package/dist/src/mcp/mcpLauncher.d.ts +26 -0
  167. package/dist/src/mcp/mcpLauncher.js +238 -0
  168. package/dist/src/mcp/mcpLauncher.js.map +1 -0
  169. package/dist/src/mcp/oauth-provider.d.ts +8 -5
  170. package/dist/src/mcp/oauth-provider.js +140 -55
  171. package/dist/src/mcp/oauth-provider.js.map +1 -1
  172. package/dist/src/mcp/oauth-provider.test.js +191 -2
  173. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  174. package/dist/src/mcp/oauth-token-storage.js +5 -4
  175. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  176. package/dist/src/mcp/oauth-token-storage.test.js +17 -11
  177. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  178. package/dist/src/mcp/oauth-utils.d.ts +7 -0
  179. package/dist/src/mcp/oauth-utils.js +28 -8
  180. package/dist/src/mcp/oauth-utils.js.map +1 -1
  181. package/dist/src/mcp/oauth-utils.test.js +45 -2
  182. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  183. package/dist/src/mcp/sa-impersonation-provider.d.ts +0 -6
  184. package/dist/src/mcp/sa-impersonation-provider.js +6 -23
  185. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
  186. package/dist/src/mcp/token-storage/base-token-storage.test.js +75 -84
  187. package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -1
  188. package/dist/src/mcp/token-storage/file-token-storage.js +1 -1
  189. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
  190. package/dist/src/mcp/token-storage/file-token-storage.test.js +7 -5
  191. package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -1
  192. package/dist/src/mcp/token-storage/hybrid-token-storage.js +1 -1
  193. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
  194. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +2 -2
  195. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -1
  196. package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +6 -2
  197. package/dist/src/mcp/token-storage/keychain-token-storage.js +63 -7
  198. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  199. package/dist/src/mcp/token-storage/keychain-token-storage.test.js +54 -3
  200. package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -1
  201. package/dist/src/mcp/token-storage/types.d.ts +6 -0
  202. package/dist/src/mcp/token-storage/types.js.map +1 -1
  203. package/dist/src/output/stream-json-formatter.d.ts +32 -0
  204. package/dist/src/output/stream-json-formatter.js +52 -0
  205. package/dist/src/output/stream-json-formatter.js.map +1 -0
  206. package/dist/src/output/stream-json-formatter.test.d.ts +6 -0
  207. package/dist/src/output/stream-json-formatter.test.js +479 -0
  208. package/dist/src/output/stream-json-formatter.test.js.map +1 -0
  209. package/dist/src/output/types.d.ts +63 -1
  210. package/dist/src/output/types.js +11 -0
  211. package/dist/src/output/types.js.map +1 -1
  212. package/dist/src/policy/config.d.ts +31 -0
  213. package/dist/src/policy/config.js +197 -0
  214. package/dist/src/policy/config.js.map +1 -0
  215. package/dist/src/policy/config.test.d.ts +6 -0
  216. package/dist/src/policy/config.test.js +404 -0
  217. package/dist/src/policy/config.test.js.map +1 -0
  218. package/dist/src/policy/index.d.ts +2 -0
  219. package/dist/src/policy/index.js +2 -0
  220. package/dist/src/policy/index.js.map +1 -1
  221. package/dist/src/policy/policies/read-only.toml +56 -0
  222. package/dist/src/policy/policies/write.toml +63 -0
  223. package/dist/src/policy/policies/yolo.toml +31 -0
  224. package/dist/src/policy/policy-engine.js +4 -0
  225. package/dist/src/policy/policy-engine.js.map +1 -1
  226. package/dist/src/policy/toml-loader.d.ts +46 -0
  227. package/dist/src/policy/toml-loader.js +314 -0
  228. package/dist/src/policy/toml-loader.js.map +1 -0
  229. package/dist/src/policy/toml-loader.test.d.ts +6 -0
  230. package/dist/src/policy/toml-loader.test.js +522 -0
  231. package/dist/src/policy/toml-loader.test.js.map +1 -0
  232. package/dist/src/policy/types.d.ts +18 -0
  233. package/dist/src/policy/types.js +6 -0
  234. package/dist/src/policy/types.js.map +1 -1
  235. package/dist/src/prompts/prompt-registry.js +2 -1
  236. package/dist/src/prompts/prompt-registry.js.map +1 -1
  237. package/dist/src/routing/strategies/classifierStrategy.js +3 -2
  238. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  239. package/dist/src/services/chatCompressionService.d.ts +32 -0
  240. package/dist/src/services/chatCompressionService.js +162 -0
  241. package/dist/src/services/chatCompressionService.js.map +1 -0
  242. package/dist/src/services/chatCompressionService.test.d.ts +6 -0
  243. package/dist/src/services/chatCompressionService.test.js +209 -0
  244. package/dist/src/services/chatCompressionService.test.js.map +1 -0
  245. package/dist/src/services/chatRecordingService.js +9 -8
  246. package/dist/src/services/chatRecordingService.js.map +1 -1
  247. package/dist/src/services/fileDiscoveryService.d.ts +2 -14
  248. package/dist/src/services/fileDiscoveryService.js +19 -55
  249. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  250. package/dist/src/services/fileDiscoveryService.test.js +91 -11
  251. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  252. package/dist/src/services/loopDetectionService.d.ts +1 -1
  253. package/dist/src/services/loopDetectionService.js +27 -13
  254. package/dist/src/services/loopDetectionService.js.map +1 -1
  255. package/dist/src/services/loopDetectionService.test.js +119 -11
  256. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  257. package/dist/src/services/shellExecutionService.js +50 -23
  258. package/dist/src/services/shellExecutionService.js.map +1 -1
  259. package/dist/src/services/shellExecutionService.test.js +82 -15
  260. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  261. package/dist/src/telemetry/activity-monitor.d.ts +116 -0
  262. package/dist/src/telemetry/activity-monitor.js +209 -0
  263. package/dist/src/telemetry/activity-monitor.js.map +1 -0
  264. package/dist/src/telemetry/activity-monitor.test.d.ts +6 -0
  265. package/dist/src/telemetry/activity-monitor.test.js +248 -0
  266. package/dist/src/telemetry/activity-monitor.test.js.map +1 -0
  267. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +5 -1
  268. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +135 -57
  269. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  270. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +43 -75
  271. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  272. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +7 -1
  273. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +13 -1
  274. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  275. package/dist/src/telemetry/gcp-exporters.js +0 -1
  276. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  277. package/dist/src/telemetry/gcp-exporters.test.js +1 -1
  278. package/dist/src/telemetry/gcp-exporters.test.js.map +1 -1
  279. package/dist/src/telemetry/index.d.ts +4 -2
  280. package/dist/src/telemetry/index.js +5 -3
  281. package/dist/src/telemetry/index.js.map +1 -1
  282. package/dist/src/telemetry/loggers.d.ts +2 -1
  283. package/dist/src/telemetry/loggers.js +37 -26
  284. package/dist/src/telemetry/loggers.js.map +1 -1
  285. package/dist/src/telemetry/loggers.test.js +215 -56
  286. package/dist/src/telemetry/loggers.test.js.map +1 -1
  287. package/dist/src/telemetry/metrics.d.ts +55 -6
  288. package/dist/src/telemetry/metrics.js +89 -1
  289. package/dist/src/telemetry/metrics.js.map +1 -1
  290. package/dist/src/telemetry/metrics.test.js +172 -213
  291. package/dist/src/telemetry/metrics.test.js.map +1 -1
  292. package/dist/src/telemetry/sdk.js +3 -2
  293. package/dist/src/telemetry/sdk.js.map +1 -1
  294. package/dist/src/telemetry/semantic.d.ts +82 -0
  295. package/dist/src/telemetry/semantic.js +269 -0
  296. package/dist/src/telemetry/semantic.js.map +1 -0
  297. package/dist/src/telemetry/semantic.test.d.ts +6 -0
  298. package/dist/src/telemetry/semantic.test.js +387 -0
  299. package/dist/src/telemetry/semantic.test.js.map +1 -0
  300. package/dist/src/telemetry/telemetry-utils.test.js +29 -28
  301. package/dist/src/telemetry/telemetry-utils.test.js.map +1 -1
  302. package/dist/src/telemetry/trace.d.ts +46 -0
  303. package/dist/src/telemetry/trace.js +121 -0
  304. package/dist/src/telemetry/trace.js.map +1 -0
  305. package/dist/src/telemetry/types.d.ts +79 -34
  306. package/dist/src/telemetry/types.js +191 -61
  307. package/dist/src/telemetry/types.js.map +1 -1
  308. package/dist/src/telemetry/uiTelemetry.js +6 -6
  309. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  310. package/dist/src/telemetry/uiTelemetry.test.js +88 -66
  311. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  312. package/dist/src/tools/edit.d.ts +3 -2
  313. package/dist/src/tools/edit.js +24 -19
  314. package/dist/src/tools/edit.js.map +1 -1
  315. package/dist/src/tools/edit.test.js +78 -2
  316. package/dist/src/tools/edit.test.js.map +1 -1
  317. package/dist/src/tools/glob.d.ts +3 -2
  318. package/dist/src/tools/glob.js +15 -19
  319. package/dist/src/tools/glob.js.map +1 -1
  320. package/dist/src/tools/glob.test.js +203 -199
  321. package/dist/src/tools/glob.test.js.map +1 -1
  322. package/dist/src/tools/grep.d.ts +3 -2
  323. package/dist/src/tools/grep.js +22 -16
  324. package/dist/src/tools/grep.js.map +1 -1
  325. package/dist/src/tools/ls.d.ts +3 -2
  326. package/dist/src/tools/ls.js +15 -20
  327. package/dist/src/tools/ls.js.map +1 -1
  328. package/dist/src/tools/ls.test.js +2 -9
  329. package/dist/src/tools/ls.test.js.map +1 -1
  330. package/dist/src/tools/mcp-client-manager.d.ts +49 -11
  331. package/dist/src/tools/mcp-client-manager.js +209 -31
  332. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  333. package/dist/src/tools/mcp-client-manager.test.js +132 -25
  334. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  335. package/dist/src/tools/mcp-client.d.ts +5 -1
  336. package/dist/src/tools/mcp-client.js +85 -104
  337. package/dist/src/tools/mcp-client.js.map +1 -1
  338. package/dist/src/tools/mcp-client.test.js +65 -6
  339. package/dist/src/tools/mcp-client.test.js.map +1 -1
  340. package/dist/src/tools/mcp-tool.d.ts +5 -2
  341. package/dist/src/tools/mcp-tool.js +16 -8
  342. package/dist/src/tools/mcp-tool.js.map +1 -1
  343. package/dist/src/tools/memoryTool.d.ts +6 -4
  344. package/dist/src/tools/memoryTool.js +13 -10
  345. package/dist/src/tools/memoryTool.js.map +1 -1
  346. package/dist/src/tools/message-bus-integration.test.js +14 -1
  347. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  348. package/dist/src/tools/modifiable-tool.js +3 -2
  349. package/dist/src/tools/modifiable-tool.js.map +1 -1
  350. package/dist/src/tools/read-file.d.ts +4 -3
  351. package/dist/src/tools/read-file.js +16 -11
  352. package/dist/src/tools/read-file.js.map +1 -1
  353. package/dist/src/tools/read-file.test.js +25 -2
  354. package/dist/src/tools/read-file.test.js.map +1 -1
  355. package/dist/src/tools/read-many-files.d.ts +4 -3
  356. package/dist/src/tools/read-many-files.js +19 -37
  357. package/dist/src/tools/read-many-files.js.map +1 -1
  358. package/dist/src/tools/read-many-files.test.js +0 -1
  359. package/dist/src/tools/read-many-files.test.js.map +1 -1
  360. package/dist/src/tools/ripGrep.d.ts +3 -2
  361. package/dist/src/tools/ripGrep.js +47 -17
  362. package/dist/src/tools/ripGrep.js.map +1 -1
  363. package/dist/src/tools/ripGrep.test.js +106 -60
  364. package/dist/src/tools/ripGrep.test.js.map +1 -1
  365. package/dist/src/tools/shell.d.ts +7 -5
  366. package/dist/src/tools/shell.js +39 -68
  367. package/dist/src/tools/shell.js.map +1 -1
  368. package/dist/src/tools/shell.test.js +69 -9
  369. package/dist/src/tools/shell.test.js.map +1 -1
  370. package/dist/src/tools/smart-edit.d.ts +3 -2
  371. package/dist/src/tools/smart-edit.js +30 -18
  372. package/dist/src/tools/smart-edit.js.map +1 -1
  373. package/dist/src/tools/smart-edit.test.js +62 -2
  374. package/dist/src/tools/smart-edit.test.js.map +1 -1
  375. package/dist/src/tools/tool-names.d.ts +8 -0
  376. package/dist/src/tools/tool-names.js +8 -5
  377. package/dist/src/tools/tool-names.js.map +1 -1
  378. package/dist/src/tools/tool-registry.d.ts +6 -19
  379. package/dist/src/tools/tool-registry.js +14 -49
  380. package/dist/src/tools/tool-registry.js.map +1 -1
  381. package/dist/src/tools/tool-registry.test.js +2 -24
  382. package/dist/src/tools/tool-registry.test.js.map +1 -1
  383. package/dist/src/tools/tools.d.ts +22 -8
  384. package/dist/src/tools/tools.js +65 -36
  385. package/dist/src/tools/tools.js.map +1 -1
  386. package/dist/src/tools/web-fetch.d.ts +4 -3
  387. package/dist/src/tools/web-fetch.js +37 -25
  388. package/dist/src/tools/web-fetch.js.map +1 -1
  389. package/dist/src/tools/web-fetch.test.js +262 -1
  390. package/dist/src/tools/web-fetch.test.js.map +1 -1
  391. package/dist/src/tools/web-search.d.ts +4 -3
  392. package/dist/src/tools/web-search.js +8 -6
  393. package/dist/src/tools/web-search.js.map +1 -1
  394. package/dist/src/tools/write-file.d.ts +3 -2
  395. package/dist/src/tools/write-file.js +8 -8
  396. package/dist/src/tools/write-file.js.map +1 -1
  397. package/dist/src/tools/write-file.test.js +1 -2
  398. package/dist/src/tools/write-file.test.js.map +1 -1
  399. package/dist/src/tools/write-todos.d.ts +4 -8
  400. package/dist/src/tools/write-todos.js +15 -6
  401. package/dist/src/tools/write-todos.js.map +1 -1
  402. package/dist/src/tools/write-todos.test.js +2 -2
  403. package/dist/src/tools/write-todos.test.js.map +1 -1
  404. package/dist/src/utils/bfsFileSearch.js +3 -2
  405. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  406. package/dist/src/utils/channel.d.ts +19 -0
  407. package/dist/src/utils/channel.js +49 -0
  408. package/dist/src/utils/channel.js.map +1 -0
  409. package/dist/src/utils/channel.test.d.ts +6 -0
  410. package/dist/src/utils/channel.test.js +170 -0
  411. package/dist/src/utils/channel.test.js.map +1 -0
  412. package/dist/src/utils/debugLogger.d.ts +25 -0
  413. package/dist/src/utils/debugLogger.js +33 -0
  414. package/dist/src/utils/debugLogger.js.map +1 -0
  415. package/dist/src/utils/debugLogger.test.d.ts +6 -0
  416. package/dist/src/utils/debugLogger.test.js +67 -0
  417. package/dist/src/utils/debugLogger.test.js.map +1 -0
  418. package/dist/src/utils/delay.d.ts +16 -0
  419. package/dist/src/utils/delay.js +43 -0
  420. package/dist/src/utils/delay.js.map +1 -0
  421. package/dist/src/utils/delay.test.d.ts +6 -0
  422. package/dist/src/utils/delay.test.js +88 -0
  423. package/dist/src/utils/delay.test.js.map +1 -0
  424. package/dist/src/utils/editCorrector.js +5 -9
  425. package/dist/src/utils/editCorrector.js.map +1 -1
  426. package/dist/src/utils/editCorrector.test.js +3 -5
  427. package/dist/src/utils/editCorrector.test.js.map +1 -1
  428. package/dist/src/utils/editor.js +33 -38
  429. package/dist/src/utils/editor.js.map +1 -1
  430. package/dist/src/utils/environmentContext.d.ts +2 -1
  431. package/dist/src/utils/environmentContext.js +18 -33
  432. package/dist/src/utils/environmentContext.js.map +1 -1
  433. package/dist/src/utils/environmentContext.test.js +0 -34
  434. package/dist/src/utils/environmentContext.test.js.map +1 -1
  435. package/dist/src/utils/errorParsing.d.ts +1 -1
  436. package/dist/src/utils/errorParsing.js +5 -33
  437. package/dist/src/utils/errorParsing.js.map +1 -1
  438. package/dist/src/utils/errorParsing.test.js +0 -88
  439. package/dist/src/utils/errorParsing.test.js.map +1 -1
  440. package/dist/src/utils/errors.d.ts +3 -0
  441. package/dist/src/utils/errors.js +6 -0
  442. package/dist/src/utils/errors.js.map +1 -1
  443. package/dist/src/utils/events.d.ts +88 -0
  444. package/dist/src/utils/events.js +77 -0
  445. package/dist/src/utils/events.js.map +1 -0
  446. package/dist/src/utils/events.test.d.ts +6 -0
  447. package/dist/src/utils/events.test.js +131 -0
  448. package/dist/src/utils/events.test.js.map +1 -0
  449. package/dist/src/utils/extensionLoader.d.ts +78 -0
  450. package/dist/src/utils/extensionLoader.js +162 -0
  451. package/dist/src/utils/extensionLoader.js.map +1 -0
  452. package/dist/src/utils/extensionLoader.test.d.ts +6 -0
  453. package/dist/src/utils/extensionLoader.test.js +90 -0
  454. package/dist/src/utils/extensionLoader.test.js.map +1 -0
  455. package/dist/src/utils/fetch.d.ts +1 -0
  456. package/dist/src/utils/fetch.js +4 -0
  457. package/dist/src/utils/fetch.js.map +1 -1
  458. package/dist/src/utils/fileUtils.d.ts +4 -0
  459. package/dist/src/utils/fileUtils.js +34 -2
  460. package/dist/src/utils/fileUtils.js.map +1 -1
  461. package/dist/src/utils/fileUtils.test.js +12 -1
  462. package/dist/src/utils/fileUtils.test.js.map +1 -1
  463. package/dist/src/utils/flashFallback.test.js +26 -45
  464. package/dist/src/utils/flashFallback.test.js.map +1 -1
  465. package/dist/src/utils/getFolderStructure.js +9 -17
  466. package/dist/src/utils/getFolderStructure.js.map +1 -1
  467. package/dist/src/utils/gitIgnoreParser.d.ts +4 -1
  468. package/dist/src/utils/gitIgnoreParser.js +28 -10
  469. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  470. package/dist/src/utils/gitIgnoreParser.test.js +58 -0
  471. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  472. package/dist/src/utils/googleErrors.d.ts +104 -0
  473. package/dist/src/utils/googleErrors.js +152 -0
  474. package/dist/src/utils/googleErrors.js.map +1 -0
  475. package/dist/src/utils/googleErrors.test.d.ts +6 -0
  476. package/dist/src/utils/googleErrors.test.js +301 -0
  477. package/dist/src/utils/googleErrors.test.js.map +1 -0
  478. package/dist/src/utils/googleQuotaErrors.d.ts +36 -0
  479. package/dist/src/utils/googleQuotaErrors.js +149 -0
  480. package/dist/src/utils/googleQuotaErrors.js.map +1 -0
  481. package/dist/src/utils/googleQuotaErrors.test.d.ts +6 -0
  482. package/dist/src/utils/googleQuotaErrors.test.js +311 -0
  483. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -0
  484. package/dist/src/utils/ignorePatterns.test.js +26 -30
  485. package/dist/src/utils/ignorePatterns.test.js.map +1 -1
  486. package/dist/src/utils/installationManager.js +2 -1
  487. package/dist/src/utils/installationManager.js.map +1 -1
  488. package/dist/src/utils/installationManager.test.js +3 -3
  489. package/dist/src/utils/installationManager.test.js.map +1 -1
  490. package/dist/src/utils/llm-edit-fixer.d.ts +1 -1
  491. package/dist/src/utils/llm-edit-fixer.js +29 -4
  492. package/dist/src/utils/llm-edit-fixer.js.map +1 -1
  493. package/dist/src/utils/llm-edit-fixer.test.js +21 -0
  494. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
  495. package/dist/src/utils/memoryDiscovery.d.ts +11 -1
  496. package/dist/src/utils/memoryDiscovery.js +150 -11
  497. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  498. package/dist/src/utils/memoryDiscovery.test.js +157 -19
  499. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  500. package/dist/src/utils/memoryImportProcessor.js +3 -2
  501. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  502. package/dist/src/utils/nextSpeakerChecker.js +2 -1
  503. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  504. package/dist/src/utils/package.d.ts +12 -0
  505. package/dist/src/utils/package.js +15 -0
  506. package/dist/src/utils/package.js.map +1 -0
  507. package/dist/src/utils/paths.js +126 -26
  508. package/dist/src/utils/paths.js.map +1 -1
  509. package/dist/src/utils/paths.test.js +200 -68
  510. package/dist/src/utils/paths.test.js.map +1 -1
  511. package/dist/src/utils/quotaErrorDetection.d.ts +0 -2
  512. package/dist/src/utils/quotaErrorDetection.js +0 -46
  513. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  514. package/dist/src/utils/retry.d.ts +1 -0
  515. package/dist/src/utils/retry.js +57 -158
  516. package/dist/src/utils/retry.js.map +1 -1
  517. package/dist/src/utils/retry.test.js +48 -109
  518. package/dist/src/utils/retry.test.js.map +1 -1
  519. package/dist/src/utils/safeJsonStringify.d.ts +4 -4
  520. package/dist/src/utils/safeJsonStringify.js +31 -7
  521. package/dist/src/utils/safeJsonStringify.js.map +1 -1
  522. package/dist/src/utils/shell-utils.d.ts +14 -2
  523. package/dist/src/utils/shell-utils.js +381 -136
  524. package/dist/src/utils/shell-utils.js.map +1 -1
  525. package/dist/src/utils/shell-utils.test.js +242 -60
  526. package/dist/src/utils/shell-utils.test.js.map +1 -1
  527. package/dist/src/utils/summarizer.js +2 -1
  528. package/dist/src/utils/summarizer.js.map +1 -1
  529. package/dist/src/utils/summarizer.test.js +0 -1
  530. package/dist/src/utils/summarizer.test.js.map +1 -1
  531. package/dist/src/utils/systemEncoding.js +5 -4
  532. package/dist/src/utils/systemEncoding.js.map +1 -1
  533. package/dist/src/utils/tool-utils.d.ts +2 -2
  534. package/dist/src/utils/tool-utils.js +14 -5
  535. package/dist/src/utils/tool-utils.js.map +1 -1
  536. package/dist/src/utils/userAccountManager.js +5 -4
  537. package/dist/src/utils/userAccountManager.js.map +1 -1
  538. package/dist/src/utils/workspaceContext.js +3 -2
  539. package/dist/src/utils/workspaceContext.js.map +1 -1
  540. package/dist/src/utils/workspaceContext.test.js +2 -2
  541. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  542. package/dist/tsconfig.tsbuildinfo +1 -1
  543. package/package.json +13 -5
  544. package/dist/src/core/subagent.d.ts +0 -236
  545. package/dist/src/core/subagent.js +0 -482
  546. package/dist/src/core/subagent.js.map +0 -1
  547. package/dist/src/core/subagent.test.js +0 -556
  548. package/dist/src/core/subagent.test.js.map +0 -1
  549. /package/dist/src/{core/subagent.test.d.ts → commands/extensions.test.d.ts} +0 -0
@@ -5,3 +5,5 @@
5
5
  */
6
6
  export * from './policy-engine.js';
7
7
  export * from './types.js';
8
+ export * from './toml-loader.js';
9
+ export * from './config.js';
@@ -5,4 +5,6 @@
5
5
  */
6
6
  export * from './policy-engine.js';
7
7
  export * from './types.js';
8
+ export * from './toml-loader.js';
9
+ export * from './config.js';
8
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/policy/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/policy/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,56 @@
1
+ # Priority system for policy rules:
2
+ # - Higher priority numbers win over lower priority numbers
3
+ # - When multiple rules match, the highest priority rule is applied
4
+ # - Rules are evaluated in order of priority (highest first)
5
+ #
6
+ # Priority bands (tiers):
7
+ # - Default policies (TOML): 1 + priority/1000 (e.g., priority 100 → 1.100)
8
+ # - User policies (TOML): 2 + priority/1000 (e.g., priority 100 → 2.100)
9
+ # - Admin policies (TOML): 3 + priority/1000 (e.g., priority 100 → 3.100)
10
+ #
11
+ # This ensures Admin > User > Default hierarchy is always preserved,
12
+ # while allowing user-specified priorities to work within each tier.
13
+ #
14
+ # Settings-based and dynamic rules (all in user tier 2.x):
15
+ # 2.95: Tools that the user has selected as "Always Allow" in the interactive UI
16
+ # 2.9: MCP servers excluded list (security: persistent server blocks)
17
+ # 2.4: Command line flag --exclude-tools (explicit temporary blocks)
18
+ # 2.3: Command line flag --allowed-tools (explicit temporary allows)
19
+ # 2.2: MCP servers with trust=true (persistent trusted servers)
20
+ # 2.1: MCP servers allowed list (persistent general server allows)
21
+ #
22
+ # TOML policy priorities (before transformation):
23
+ # 10: Write tools default to ASK_USER (becomes 1.010 in default tier)
24
+ # 15: Auto-edit tool override (becomes 1.015 in default tier)
25
+ # 50: Read-only tools (becomes 1.050 in default tier)
26
+ # 999: YOLO mode allow-all (becomes 1.999 in default tier)
27
+
28
+ [[rule]]
29
+ toolName = "glob"
30
+ decision = "allow"
31
+ priority = 50
32
+
33
+ [[rule]]
34
+ toolName = "search_file_content"
35
+ decision = "allow"
36
+ priority = 50
37
+
38
+ [[rule]]
39
+ toolName = "list_directory"
40
+ decision = "allow"
41
+ priority = 50
42
+
43
+ [[rule]]
44
+ toolName = "read_file"
45
+ decision = "allow"
46
+ priority = 50
47
+
48
+ [[rule]]
49
+ toolName = "read_many_files"
50
+ decision = "allow"
51
+ priority = 50
52
+
53
+ [[rule]]
54
+ toolName = "google_web_search"
55
+ decision = "allow"
56
+ priority = 50
@@ -0,0 +1,63 @@
1
+ # Priority system for policy rules:
2
+ # - Higher priority numbers win over lower priority numbers
3
+ # - When multiple rules match, the highest priority rule is applied
4
+ # - Rules are evaluated in order of priority (highest first)
5
+ #
6
+ # Priority bands (tiers):
7
+ # - Default policies (TOML): 1 + priority/1000 (e.g., priority 100 → 1.100)
8
+ # - User policies (TOML): 2 + priority/1000 (e.g., priority 100 → 2.100)
9
+ # - Admin policies (TOML): 3 + priority/1000 (e.g., priority 100 → 3.100)
10
+ #
11
+ # This ensures Admin > User > Default hierarchy is always preserved,
12
+ # while allowing user-specified priorities to work within each tier.
13
+ #
14
+ # Settings-based and dynamic rules (all in user tier 2.x):
15
+ # 2.95: Tools that the user has selected as "Always Allow" in the interactive UI
16
+ # 2.9: MCP servers excluded list (security: persistent server blocks)
17
+ # 2.4: Command line flag --exclude-tools (explicit temporary blocks)
18
+ # 2.3: Command line flag --allowed-tools (explicit temporary allows)
19
+ # 2.2: MCP servers with trust=true (persistent trusted servers)
20
+ # 2.1: MCP servers allowed list (persistent general server allows)
21
+ #
22
+ # TOML policy priorities (before transformation):
23
+ # 10: Write tools default to ASK_USER (becomes 1.010 in default tier)
24
+ # 15: Auto-edit tool override (becomes 1.015 in default tier)
25
+ # 50: Read-only tools (becomes 1.050 in default tier)
26
+ # 999: YOLO mode allow-all (becomes 1.999 in default tier)
27
+
28
+ [[rule]]
29
+ toolName = "replace"
30
+ decision = "ask_user"
31
+ priority = 10
32
+
33
+ [[rule]]
34
+ toolName = "replace"
35
+ decision = "allow"
36
+ priority = 15
37
+ modes = ["autoEdit"]
38
+
39
+ [[rule]]
40
+ toolName = "save_memory"
41
+ decision = "ask_user"
42
+ priority = 10
43
+
44
+ [[rule]]
45
+ toolName = "run_shell_command"
46
+ decision = "ask_user"
47
+ priority = 10
48
+
49
+ [[rule]]
50
+ toolName = "write_file"
51
+ decision = "ask_user"
52
+ priority = 10
53
+
54
+ [[rule]]
55
+ toolName = "write_file"
56
+ decision = "allow"
57
+ priority = 15
58
+ modes = ["autoEdit"]
59
+
60
+ [[rule]]
61
+ toolName = "web_fetch"
62
+ decision = "ask_user"
63
+ priority = 10
@@ -0,0 +1,31 @@
1
+ # Priority system for policy rules:
2
+ # - Higher priority numbers win over lower priority numbers
3
+ # - When multiple rules match, the highest priority rule is applied
4
+ # - Rules are evaluated in order of priority (highest first)
5
+ #
6
+ # Priority bands (tiers):
7
+ # - Default policies (TOML): 1 + priority/1000 (e.g., priority 100 → 1.100)
8
+ # - User policies (TOML): 2 + priority/1000 (e.g., priority 100 → 2.100)
9
+ # - Admin policies (TOML): 3 + priority/1000 (e.g., priority 100 → 3.100)
10
+ #
11
+ # This ensures Admin > User > Default hierarchy is always preserved,
12
+ # while allowing user-specified priorities to work within each tier.
13
+ #
14
+ # Settings-based and dynamic rules (all in user tier 2.x):
15
+ # 2.95: Tools that the user has selected as "Always Allow" in the interactive UI
16
+ # 2.9: MCP servers excluded list (security: persistent server blocks)
17
+ # 2.4: Command line flag --exclude-tools (explicit temporary blocks)
18
+ # 2.3: Command line flag --allowed-tools (explicit temporary allows)
19
+ # 2.2: MCP servers with trust=true (persistent trusted servers)
20
+ # 2.1: MCP servers allowed list (persistent general server allows)
21
+ #
22
+ # TOML policy priorities (before transformation):
23
+ # 10: Write tools default to ASK_USER (becomes 1.010 in default tier)
24
+ # 15: Auto-edit tool override (becomes 1.015 in default tier)
25
+ # 50: Read-only tools (becomes 1.050 in default tier)
26
+ # 999: YOLO mode allow-all (becomes 1.999 in default tier)
27
+
28
+ [[rule]]
29
+ decision = "allow"
30
+ priority = 999
31
+ modes = ["yolo"]
@@ -6,6 +6,7 @@
6
6
  import {} from '@google/genai';
7
7
  import { PolicyDecision, } from './types.js';
8
8
  import { stableStringify } from './stable-stringify.js';
9
+ import { debugLogger } from '../utils/debugLogger.js';
9
10
  function ruleMatches(rule, toolCall, stringifiedArgs) {
10
11
  // Check tool name if specified
11
12
  if (rule.toolName) {
@@ -52,13 +53,16 @@ export class PolicyEngine {
52
53
  if (toolCall.args && this.rules.some((rule) => rule.argsPattern)) {
53
54
  stringifiedArgs = stableStringify(toolCall.args);
54
55
  }
56
+ debugLogger.debug(`[PolicyEngine.check] toolCall.name: ${toolCall.name}, stringifiedArgs: ${stringifiedArgs}`);
55
57
  // Find the first matching rule (already sorted by priority)
56
58
  for (const rule of this.rules) {
57
59
  if (ruleMatches(rule, toolCall, stringifiedArgs)) {
60
+ debugLogger.debug(`[PolicyEngine.check] MATCHED rule: toolName=${rule.toolName}, decision=${rule.decision}, priority=${rule.priority}, argsPattern=${rule.argsPattern?.source || 'none'}`);
58
61
  return this.applyNonInteractiveMode(rule.decision);
59
62
  }
60
63
  }
61
64
  // No matching rule found, use default decision
65
+ debugLogger.debug(`[PolicyEngine.check] NO MATCH - using default decision: ${this.defaultDecision}`);
62
66
  return this.applyNonInteractiveMode(this.defaultDecision);
63
67
  }
64
68
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../../../src/policy/policy-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../../../src/policy/policy-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type PolicyRule, type ApprovalMode } from './types.js';
7
+ /**
8
+ * Types of errors that can occur while loading policy files.
9
+ */
10
+ export type PolicyFileErrorType = 'file_read' | 'toml_parse' | 'schema_validation' | 'rule_validation' | 'regex_compilation';
11
+ /**
12
+ * Detailed error information for policy file loading failures.
13
+ */
14
+ export interface PolicyFileError {
15
+ filePath: string;
16
+ fileName: string;
17
+ tier: 'default' | 'user' | 'admin';
18
+ ruleIndex?: number;
19
+ errorType: PolicyFileErrorType;
20
+ message: string;
21
+ details?: string;
22
+ suggestion?: string;
23
+ }
24
+ /**
25
+ * Result of loading policies from TOML files.
26
+ */
27
+ export interface PolicyLoadResult {
28
+ rules: PolicyRule[];
29
+ errors: PolicyFileError[];
30
+ }
31
+ /**
32
+ * Loads and parses policies from TOML files in the specified directories.
33
+ *
34
+ * This function:
35
+ * 1. Scans directories for .toml files
36
+ * 2. Parses and validates each file
37
+ * 3. Transforms rules (commandPrefix, arrays, mcpName, priorities)
38
+ * 4. Filters rules by approval mode
39
+ * 5. Collects detailed error information for any failures
40
+ *
41
+ * @param approvalMode The current approval mode (for filtering rules by mode)
42
+ * @param policyDirs Array of directory paths to scan for policy files
43
+ * @param getPolicyTier Function to determine tier (1-3) for a directory
44
+ * @returns Object containing successfully parsed rules and any errors encountered
45
+ */
46
+ export declare function loadPoliciesFromToml(approvalMode: ApprovalMode, policyDirs: string[], getPolicyTier: (dir: string) => number): Promise<PolicyLoadResult>;
@@ -0,0 +1,314 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { PolicyDecision } from './types.js';
7
+ import fs from 'node:fs/promises';
8
+ import path from 'node:path';
9
+ import toml from '@iarna/toml';
10
+ import { z } from 'zod';
11
+ /**
12
+ * Schema for a single policy rule in the TOML file (before transformation).
13
+ */
14
+ const PolicyRuleSchema = z.object({
15
+ toolName: z.union([z.string(), z.array(z.string())]).optional(),
16
+ mcpName: z.string().optional(),
17
+ argsPattern: z.string().optional(),
18
+ commandPrefix: z.union([z.string(), z.array(z.string())]).optional(),
19
+ commandRegex: z.string().optional(),
20
+ decision: z.nativeEnum(PolicyDecision),
21
+ // Priority must be in range [0, 999] to prevent tier overflow.
22
+ // With tier transformation (tier + priority/1000), this ensures:
23
+ // - Tier 1 (default): range [1.000, 1.999]
24
+ // - Tier 2 (user): range [2.000, 2.999]
25
+ // - Tier 3 (admin): range [3.000, 3.999]
26
+ priority: z
27
+ .number({
28
+ required_error: 'priority is required',
29
+ invalid_type_error: 'priority must be a number',
30
+ })
31
+ .int({ message: 'priority must be an integer' })
32
+ .min(0, { message: 'priority must be >= 0' })
33
+ .max(999, {
34
+ message: 'priority must be <= 999 to prevent tier overflow. Priorities >= 1000 would jump to the next tier.',
35
+ }),
36
+ modes: z.array(z.string()).optional(),
37
+ });
38
+ /**
39
+ * Schema for the entire policy TOML file.
40
+ */
41
+ const PolicyFileSchema = z.object({
42
+ rule: z.array(PolicyRuleSchema),
43
+ });
44
+ /**
45
+ * Escapes special regex characters in a string for use in a regex pattern.
46
+ * This is used for commandPrefix to ensure literal string matching.
47
+ *
48
+ * @param str The string to escape
49
+ * @returns The escaped string safe for use in a regex
50
+ */
51
+ function escapeRegex(str) {
52
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
53
+ }
54
+ /**
55
+ * Converts a tier number to a human-readable tier name.
56
+ */
57
+ function getTierName(tier) {
58
+ if (tier === 1)
59
+ return 'default';
60
+ if (tier === 2)
61
+ return 'user';
62
+ if (tier === 3)
63
+ return 'admin';
64
+ return 'default';
65
+ }
66
+ /**
67
+ * Formats a Zod validation error into a readable error message.
68
+ */
69
+ function formatSchemaError(error, ruleIndex) {
70
+ const issues = error.issues
71
+ .map((issue) => {
72
+ const path = issue.path.join('.');
73
+ return ` - Field "${path}": ${issue.message}`;
74
+ })
75
+ .join('\n');
76
+ return `Invalid policy rule (rule #${ruleIndex + 1}):\n${issues}`;
77
+ }
78
+ /**
79
+ * Validates shell command convenience syntax rules.
80
+ * Returns an error message if invalid, or null if valid.
81
+ */
82
+ function validateShellCommandSyntax(rule, ruleIndex) {
83
+ const hasCommandPrefix = rule.commandPrefix !== undefined;
84
+ const hasCommandRegex = rule.commandRegex !== undefined;
85
+ const hasArgsPattern = rule.argsPattern !== undefined;
86
+ if (hasCommandPrefix || hasCommandRegex) {
87
+ // Must have exactly toolName = "run_shell_command"
88
+ if (rule.toolName !== 'run_shell_command' || Array.isArray(rule.toolName)) {
89
+ return (`Rule #${ruleIndex + 1}: commandPrefix and commandRegex can only be used with toolName = "run_shell_command"\n` +
90
+ ` Found: toolName = ${JSON.stringify(rule.toolName)}\n` +
91
+ ` Fix: Set toolName = "run_shell_command" (not an array)`);
92
+ }
93
+ // Can't combine with argsPattern
94
+ if (hasArgsPattern) {
95
+ return (`Rule #${ruleIndex + 1}: cannot use both commandPrefix/commandRegex and argsPattern\n` +
96
+ ` These fields are mutually exclusive\n` +
97
+ ` Fix: Use either commandPrefix/commandRegex OR argsPattern, not both`);
98
+ }
99
+ // Can't use both commandPrefix and commandRegex
100
+ if (hasCommandPrefix && hasCommandRegex) {
101
+ return (`Rule #${ruleIndex + 1}: cannot use both commandPrefix and commandRegex\n` +
102
+ ` These fields are mutually exclusive\n` +
103
+ ` Fix: Use either commandPrefix OR commandRegex, not both`);
104
+ }
105
+ }
106
+ return null;
107
+ }
108
+ /**
109
+ * Transforms a priority number based on the policy tier.
110
+ * Formula: tier + priority/1000
111
+ *
112
+ * @param priority The priority value from the TOML file
113
+ * @param tier The tier (1=default, 2=user, 3=admin)
114
+ * @returns The transformed priority
115
+ */
116
+ function transformPriority(priority, tier) {
117
+ return tier + priority / 1000;
118
+ }
119
+ /**
120
+ * Loads and parses policies from TOML files in the specified directories.
121
+ *
122
+ * This function:
123
+ * 1. Scans directories for .toml files
124
+ * 2. Parses and validates each file
125
+ * 3. Transforms rules (commandPrefix, arrays, mcpName, priorities)
126
+ * 4. Filters rules by approval mode
127
+ * 5. Collects detailed error information for any failures
128
+ *
129
+ * @param approvalMode The current approval mode (for filtering rules by mode)
130
+ * @param policyDirs Array of directory paths to scan for policy files
131
+ * @param getPolicyTier Function to determine tier (1-3) for a directory
132
+ * @returns Object containing successfully parsed rules and any errors encountered
133
+ */
134
+ export async function loadPoliciesFromToml(approvalMode, policyDirs, getPolicyTier) {
135
+ const rules = [];
136
+ const errors = [];
137
+ for (const dir of policyDirs) {
138
+ const tier = getPolicyTier(dir);
139
+ const tierName = getTierName(tier);
140
+ // Scan directory for all .toml files
141
+ let filesToLoad;
142
+ try {
143
+ const dirEntries = await fs.readdir(dir, { withFileTypes: true });
144
+ filesToLoad = dirEntries
145
+ .filter((entry) => entry.isFile() && entry.name.endsWith('.toml'))
146
+ .map((entry) => entry.name);
147
+ }
148
+ catch (e) {
149
+ const error = e;
150
+ if (error.code === 'ENOENT') {
151
+ // Directory doesn't exist, skip it (not an error)
152
+ continue;
153
+ }
154
+ errors.push({
155
+ filePath: dir,
156
+ fileName: path.basename(dir),
157
+ tier: tierName,
158
+ errorType: 'file_read',
159
+ message: `Failed to read policy directory`,
160
+ details: error.message,
161
+ });
162
+ continue;
163
+ }
164
+ for (const file of filesToLoad) {
165
+ const filePath = path.join(dir, file);
166
+ try {
167
+ // Read file
168
+ const fileContent = await fs.readFile(filePath, 'utf-8');
169
+ // Parse TOML
170
+ let parsed;
171
+ try {
172
+ parsed = toml.parse(fileContent);
173
+ }
174
+ catch (e) {
175
+ const error = e;
176
+ errors.push({
177
+ filePath,
178
+ fileName: file,
179
+ tier: tierName,
180
+ errorType: 'toml_parse',
181
+ message: 'TOML parsing failed',
182
+ details: error.message,
183
+ suggestion: 'Check for syntax errors like missing quotes, brackets, or commas',
184
+ });
185
+ continue;
186
+ }
187
+ // Validate schema
188
+ const validationResult = PolicyFileSchema.safeParse(parsed);
189
+ if (!validationResult.success) {
190
+ errors.push({
191
+ filePath,
192
+ fileName: file,
193
+ tier: tierName,
194
+ errorType: 'schema_validation',
195
+ message: 'Schema validation failed',
196
+ details: formatSchemaError(validationResult.error, 0),
197
+ suggestion: 'Ensure all required fields (decision, priority) are present with correct types',
198
+ });
199
+ continue;
200
+ }
201
+ // Validate shell command convenience syntax
202
+ for (let i = 0; i < validationResult.data.rule.length; i++) {
203
+ const rule = validationResult.data.rule[i];
204
+ const validationError = validateShellCommandSyntax(rule, i);
205
+ if (validationError) {
206
+ errors.push({
207
+ filePath,
208
+ fileName: file,
209
+ tier: tierName,
210
+ ruleIndex: i,
211
+ errorType: 'rule_validation',
212
+ message: 'Invalid shell command syntax',
213
+ details: validationError,
214
+ });
215
+ // Continue to next rule, don't skip the entire file
216
+ }
217
+ }
218
+ // Transform rules
219
+ const parsedRules = validationResult.data.rule
220
+ .filter((rule) => {
221
+ // Filter by mode
222
+ if (!rule.modes || rule.modes.length === 0) {
223
+ return true;
224
+ }
225
+ return rule.modes.includes(approvalMode);
226
+ })
227
+ .flatMap((rule) => {
228
+ // Transform commandPrefix/commandRegex to argsPattern
229
+ let effectiveArgsPattern = rule.argsPattern;
230
+ const commandPrefixes = [];
231
+ if (rule.commandPrefix) {
232
+ const prefixes = Array.isArray(rule.commandPrefix)
233
+ ? rule.commandPrefix
234
+ : [rule.commandPrefix];
235
+ commandPrefixes.push(...prefixes);
236
+ }
237
+ else if (rule.commandRegex) {
238
+ effectiveArgsPattern = `"command":"${rule.commandRegex}`;
239
+ }
240
+ // Expand command prefixes to multiple patterns
241
+ const argsPatterns = commandPrefixes.length > 0
242
+ ? commandPrefixes.map((prefix) => `"command":"${escapeRegex(prefix)}`)
243
+ : [effectiveArgsPattern];
244
+ // For each argsPattern, expand toolName arrays
245
+ return argsPatterns.flatMap((argsPattern) => {
246
+ const toolNames = rule.toolName
247
+ ? Array.isArray(rule.toolName)
248
+ ? rule.toolName
249
+ : [rule.toolName]
250
+ : [undefined];
251
+ // Create a policy rule for each tool name
252
+ return toolNames.map((toolName) => {
253
+ // Transform mcpName field to composite toolName format
254
+ let effectiveToolName;
255
+ if (rule.mcpName && toolName) {
256
+ effectiveToolName = `${rule.mcpName}__${toolName}`;
257
+ }
258
+ else if (rule.mcpName) {
259
+ effectiveToolName = `${rule.mcpName}__*`;
260
+ }
261
+ else {
262
+ effectiveToolName = toolName;
263
+ }
264
+ const policyRule = {
265
+ toolName: effectiveToolName,
266
+ decision: rule.decision,
267
+ priority: transformPriority(rule.priority, tier),
268
+ };
269
+ // Compile regex pattern
270
+ if (argsPattern) {
271
+ try {
272
+ policyRule.argsPattern = new RegExp(argsPattern);
273
+ }
274
+ catch (e) {
275
+ const error = e;
276
+ errors.push({
277
+ filePath,
278
+ fileName: file,
279
+ tier: tierName,
280
+ errorType: 'regex_compilation',
281
+ message: 'Invalid regex pattern',
282
+ details: `Pattern: ${argsPattern}\nError: ${error.message}`,
283
+ suggestion: 'Check regex syntax for errors like unmatched brackets or invalid escape sequences',
284
+ });
285
+ // Skip this rule if regex compilation fails
286
+ return null;
287
+ }
288
+ }
289
+ return policyRule;
290
+ });
291
+ });
292
+ })
293
+ .filter((rule) => rule !== null);
294
+ rules.push(...parsedRules);
295
+ }
296
+ catch (e) {
297
+ const error = e;
298
+ // Catch-all for unexpected errors
299
+ if (error.code !== 'ENOENT') {
300
+ errors.push({
301
+ filePath,
302
+ fileName: file,
303
+ tier: tierName,
304
+ errorType: 'file_read',
305
+ message: 'Failed to read policy file',
306
+ details: error.message,
307
+ });
308
+ }
309
+ }
310
+ }
311
+ }
312
+ return { rules, errors };
313
+ }
314
+ //# sourceMappingURL=toml-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toml-loader.js","sourceRoot":"","sources":["../../../src/policy/toml-loader.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 {};