@mmmbuto/gemini-cli-termux 0.30.3-termux → 0.30.5-termux

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 (400) hide show
  1. package/README.md +42 -193
  2. package/bundle/docs/cli/settings.md +8 -9
  3. package/bundle/docs/extensions/reference.md +14 -38
  4. package/bundle/docs/hooks/reference.md +0 -8
  5. package/bundle/docs/reference/configuration.md +0 -8
  6. package/bundle/gemini.js +10730 -11704
  7. package/bundle/node_modules/@google/gemini-cli-devtools/package.json +1 -1
  8. package/bundle/package.json +2 -1
  9. package/package.json +67 -5
  10. package/packages/cli/dist/index.js +0 -0
  11. package/packages/cli/dist/package.json +2 -2
  12. package/packages/cli/dist/src/commands/extensions/examples/custom-commands/gemini-extension.json +2 -2
  13. package/packages/cli/dist/src/commands/extensions/examples/exclude-tools/gemini-extension.json +3 -3
  14. package/packages/cli/dist/src/commands/extensions/examples/hooks/gemini-extension.json +2 -2
  15. package/packages/cli/dist/src/commands/extensions/examples/hooks/hooks/hooks.json +11 -11
  16. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.js +1 -1
  17. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/gemini-extension.json +8 -8
  18. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/package.json +9 -9
  19. package/packages/cli/dist/src/commands/extensions/examples/skills/gemini-extension.json +2 -2
  20. package/packages/cli/dist/src/commands/extensions/examples/themes-example/README.md +8 -5
  21. package/packages/cli/dist/src/commands/extensions/examples/themes-example/gemini-extension.json +27 -27
  22. package/packages/cli/dist/src/config/config.js +4 -65
  23. package/packages/cli/dist/src/config/config.js.map +1 -1
  24. package/packages/cli/dist/src/config/settingsSchema.d.ts +1 -235
  25. package/packages/cli/dist/src/config/settingsSchema.js +1 -235
  26. package/packages/cli/dist/src/config/settingsSchema.js.map +1 -1
  27. package/packages/cli/dist/src/gemini.js +0 -2
  28. package/packages/cli/dist/src/gemini.js.map +1 -1
  29. package/packages/cli/dist/src/generated/git-commit.d.ts +2 -2
  30. package/packages/cli/dist/src/generated/git-commit.js +2 -2
  31. package/packages/cli/dist/src/patches/empty-module.d.ts +2 -0
  32. package/packages/cli/dist/src/patches/empty-module.js +2 -0
  33. package/packages/cli/dist/src/patches/empty-module.js.map +1 -0
  34. package/packages/cli/dist/src/services/McpPromptLoader.js +3 -6
  35. package/packages/cli/dist/src/services/McpPromptLoader.js.map +1 -1
  36. package/packages/cli/dist/src/ui/components/AgentConfigDialog.js +19 -5
  37. package/packages/cli/dist/src/ui/components/AgentConfigDialog.js.map +1 -1
  38. package/packages/cli/dist/src/ui/components/AgentConfigDialog.test.js +41 -19
  39. package/packages/cli/dist/src/ui/components/AgentConfigDialog.test.js.map +1 -1
  40. package/packages/cli/dist/src/ui/components/DialogManager.d.ts +1 -1
  41. package/packages/cli/dist/src/ui/components/DialogManager.js +34 -7
  42. package/packages/cli/dist/src/ui/components/DialogManager.js.map +1 -1
  43. package/packages/cli/dist/src/ui/components/InputPrompt.d.ts +9 -0
  44. package/packages/cli/dist/src/ui/components/InputPrompt.js +350 -125
  45. package/packages/cli/dist/src/ui/components/InputPrompt.js.map +1 -1
  46. package/packages/cli/dist/src/ui/components/InputPrompt.test.js +788 -35
  47. package/packages/cli/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  48. package/packages/cli/dist/src/ui/components/messages/ShellToolMessage.js +2 -2
  49. package/packages/cli/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  50. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.js +4 -77
  51. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  52. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -51
  53. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  54. package/packages/cli/dist/src/ui/components/messages/ToolMessage.js +2 -2
  55. package/packages/cli/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  56. package/packages/cli/dist/src/ui/components/messages/ToolShared.d.ts +0 -1
  57. package/packages/cli/dist/src/ui/components/messages/ToolShared.js +2 -2
  58. package/packages/cli/dist/src/ui/components/messages/ToolShared.js.map +1 -1
  59. package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.js +4 -1
  60. package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
  61. package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.test.js +139 -40
  62. package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +1 -1
  63. package/packages/cli/dist/src/ui/components/shared/TextInput.js +2 -1
  64. package/packages/cli/dist/src/ui/components/shared/TextInput.js.map +1 -1
  65. package/packages/cli/dist/src/ui/hooks/toolMapping.js +0 -1
  66. package/packages/cli/dist/src/ui/hooks/toolMapping.js.map +1 -1
  67. package/packages/cli/dist/src/ui/hooks/toolMapping.test.js +0 -13
  68. package/packages/cli/dist/src/ui/hooks/toolMapping.test.js.map +1 -1
  69. package/packages/cli/dist/src/ui/hooks/useToolScheduler.js +2 -18
  70. package/packages/cli/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
  71. package/packages/cli/dist/src/ui/hooks/useToolScheduler.test.js +0 -44
  72. package/packages/cli/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  73. package/packages/cli/dist/src/ui/keyMatchers.test.js.map +1 -1
  74. package/packages/cli/dist/src/ui/types.d.ts +0 -1
  75. package/packages/cli/dist/src/ui/types.js.map +1 -1
  76. package/packages/cli/dist/src/ui/utils/commandUtils.js +4 -1
  77. package/packages/cli/dist/src/ui/utils/commandUtils.js.map +1 -1
  78. package/packages/cli/dist/src/utils/activityLogger.js +23 -94
  79. package/packages/cli/dist/src/utils/activityLogger.js.map +1 -1
  80. package/packages/cli/dist/src/utils/handleAutoUpdate.d.ts +1 -1
  81. package/packages/cli/dist/src/utils/handleAutoUpdate.js +1 -1
  82. package/packages/cli/dist/src/utils/handleAutoUpdate.js.map +1 -1
  83. package/packages/cli/dist/src/utils/handleAutoUpdate.test.js +11 -11
  84. package/packages/cli/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  85. package/{bundle/sandbox-macos-restrictive-closed.sb → packages/cli/dist/src/utils/sandbox-macos-strict-open.sb} +42 -4
  86. package/packages/cli/dist/src/utils/{sandbox-macos-restrictive-closed.sb → sandbox-macos-strict-proxied.sb} +44 -4
  87. package/packages/cli/dist/tsconfig.tsbuildinfo +1 -1
  88. package/packages/core/dist/docs/admin/enterprise-controls.md +115 -0
  89. package/packages/core/dist/docs/changelogs/index.md +57 -1
  90. package/packages/core/dist/docs/changelogs/latest.md +357 -314
  91. package/packages/core/dist/docs/changelogs/preview.md +288 -411
  92. package/packages/core/dist/docs/cli/checkpointing.md +2 -3
  93. package/packages/core/dist/docs/cli/cli-reference.md +42 -28
  94. package/packages/core/dist/docs/cli/custom-commands.md +3 -0
  95. package/packages/core/dist/docs/cli/enterprise.md +28 -8
  96. package/packages/core/dist/docs/cli/gemini-md.md +21 -13
  97. package/packages/core/dist/docs/cli/headless.md +34 -372
  98. package/packages/core/dist/docs/cli/model.md +1 -1
  99. package/packages/core/dist/docs/cli/plan-mode.md +245 -0
  100. package/packages/core/dist/docs/cli/rewind.md +11 -11
  101. package/packages/core/dist/docs/cli/sandbox.md +6 -5
  102. package/packages/core/dist/docs/cli/session-management.md +61 -44
  103. package/packages/core/dist/docs/cli/settings.md +64 -49
  104. package/packages/core/dist/docs/cli/skills.md +29 -7
  105. package/packages/core/dist/docs/cli/telemetry.md +41 -5
  106. package/packages/core/dist/docs/cli/themes.md +88 -54
  107. package/packages/core/dist/docs/cli/trusted-folders.md +31 -0
  108. package/packages/core/dist/docs/cli/tutorials/automation.md +187 -0
  109. package/packages/core/dist/docs/cli/tutorials/file-management.md +142 -0
  110. package/packages/core/dist/docs/cli/tutorials/mcp-setup.md +105 -0
  111. package/packages/core/dist/docs/cli/tutorials/memory-management.md +126 -0
  112. package/packages/core/dist/docs/cli/tutorials/session-management.md +105 -0
  113. package/packages/core/dist/docs/cli/tutorials/shell-commands.md +107 -0
  114. package/packages/core/dist/docs/cli/tutorials/skills-getting-started.md +36 -31
  115. package/packages/core/dist/docs/cli/tutorials/task-planning.md +93 -0
  116. package/packages/core/dist/docs/cli/tutorials/web-tools.md +78 -0
  117. package/packages/core/dist/docs/core/index.md +7 -7
  118. package/packages/core/dist/docs/core/subagents.md +40 -40
  119. package/packages/core/dist/docs/extensions/best-practices.md +102 -53
  120. package/packages/core/dist/docs/extensions/index.md +37 -21
  121. package/packages/core/dist/docs/extensions/reference.md +148 -219
  122. package/packages/core/dist/docs/extensions/releasing.md +93 -122
  123. package/packages/core/dist/docs/extensions/writing-extensions.md +87 -76
  124. package/packages/core/dist/docs/get-started/authentication.md +4 -4
  125. package/packages/core/dist/docs/get-started/examples.md +39 -119
  126. package/packages/core/dist/docs/get-started/gemini-3.md +17 -3
  127. package/packages/core/dist/docs/get-started/index.md +16 -5
  128. package/packages/core/dist/docs/get-started/installation.md +110 -77
  129. package/packages/core/dist/docs/hooks/best-practices.md +1 -1
  130. package/packages/core/dist/docs/hooks/reference.md +2 -2
  131. package/packages/core/dist/docs/index.md +142 -149
  132. package/packages/core/dist/docs/redirects.json +19 -0
  133. package/packages/core/dist/docs/reference/commands.md +523 -0
  134. package/{bundle/docs/get-started → packages/core/dist/docs/reference}/configuration.md +180 -71
  135. package/packages/core/dist/docs/{cli → reference}/keyboard-shortcuts.md +49 -35
  136. package/packages/core/dist/docs/{core → reference}/policy-engine.md +76 -32
  137. package/packages/core/dist/docs/releases.md +2 -2
  138. package/{bundle/docs → packages/core/dist/docs/resources}/faq.md +1 -1
  139. package/packages/core/dist/docs/{quota-and-pricing.md → resources/quota-and-pricing.md} +12 -5
  140. package/{bundle/docs → packages/core/dist/docs/resources}/tos-privacy.md +3 -3
  141. package/packages/core/dist/docs/{troubleshooting.md → resources/troubleshooting.md} +1 -1
  142. package/packages/core/dist/docs/sidebar.json +194 -113
  143. package/packages/core/dist/docs/tools/activate-skill.md +43 -0
  144. package/packages/core/dist/docs/tools/ask-user.md +95 -0
  145. package/packages/core/dist/docs/tools/file-system.md +55 -143
  146. package/packages/core/dist/docs/tools/index.md +97 -93
  147. package/packages/core/dist/docs/tools/internal-docs.md +46 -0
  148. package/packages/core/dist/docs/tools/mcp-server.md +65 -16
  149. package/packages/core/dist/docs/tools/memory.md +21 -40
  150. package/packages/core/dist/docs/tools/planning.md +57 -0
  151. package/packages/core/dist/docs/tools/shell.md +44 -88
  152. package/packages/core/dist/docs/tools/todos.md +22 -44
  153. package/packages/core/dist/docs/tools/web-fetch.md +22 -46
  154. package/packages/core/dist/docs/tools/web-search.md +19 -29
  155. package/packages/core/dist/src/code_assist/types.d.ts +14 -14
  156. package/packages/core/dist/src/config/config.d.ts +1 -13
  157. package/packages/core/dist/src/config/config.js +6 -39
  158. package/packages/core/dist/src/config/config.js.map +1 -1
  159. package/packages/core/dist/src/confirmation-bus/types.d.ts +0 -3
  160. package/packages/core/dist/src/confirmation-bus/types.js.map +1 -1
  161. package/packages/core/dist/src/core/coreToolHookTriggers.d.ts +1 -1
  162. package/packages/core/dist/src/core/coreToolHookTriggers.js +3 -8
  163. package/packages/core/dist/src/core/coreToolHookTriggers.js.map +1 -1
  164. package/packages/core/dist/src/generated/git-commit.d.ts +2 -2
  165. package/packages/core/dist/src/generated/git-commit.js +2 -2
  166. package/packages/core/dist/src/hooks/hookEventHandler.d.ts +2 -2
  167. package/packages/core/dist/src/hooks/hookEventHandler.js +2 -8
  168. package/packages/core/dist/src/hooks/hookEventHandler.js.map +1 -1
  169. package/packages/core/dist/src/hooks/hookSystem.d.ts +2 -2
  170. package/packages/core/dist/src/hooks/hookSystem.js +4 -4
  171. package/packages/core/dist/src/hooks/hookSystem.js.map +1 -1
  172. package/packages/core/dist/src/hooks/types.d.ts +0 -18
  173. package/packages/core/dist/src/hooks/types.js +0 -17
  174. package/packages/core/dist/src/hooks/types.js.map +1 -1
  175. package/packages/core/dist/src/ide/ide-client.js +1 -1
  176. package/packages/core/dist/src/ide/ide-client.js.map +1 -1
  177. package/packages/core/dist/src/ide/types.d.ts +8 -8
  178. package/packages/core/dist/src/index.d.ts +2 -0
  179. package/packages/core/dist/src/index.js +2 -0
  180. package/packages/core/dist/src/index.js.map +1 -1
  181. package/packages/core/dist/src/policy/policies/plan.toml +29 -43
  182. package/packages/core/dist/src/policy/policies/read-only.toml +12 -11
  183. package/packages/core/dist/src/policy/policies/write.toml +11 -10
  184. package/packages/core/dist/src/policy/policies/yolo.toml +24 -12
  185. package/packages/core/dist/src/policy/policy-engine.js +1 -5
  186. package/packages/core/dist/src/policy/policy-engine.js.map +1 -1
  187. package/packages/core/dist/src/policy/types.d.ts +1 -2
  188. package/packages/core/dist/src/policy/types.js +0 -1
  189. package/packages/core/dist/src/policy/types.js.map +1 -1
  190. package/packages/core/dist/src/safety/context-builder.d.ts +3 -3
  191. package/packages/core/dist/src/safety/context-builder.js +4 -60
  192. package/packages/core/dist/src/safety/context-builder.js.map +1 -1
  193. package/packages/core/dist/src/safety/context-builder.test.js +18 -98
  194. package/packages/core/dist/src/safety/context-builder.test.js.map +1 -1
  195. package/packages/core/dist/src/safety/protocol.d.ts +0 -4
  196. package/packages/core/dist/src/safety/registry.d.ts +1 -2
  197. package/packages/core/dist/src/safety/registry.js +4 -14
  198. package/packages/core/dist/src/safety/registry.js.map +1 -1
  199. package/packages/core/dist/src/safety/registry.test.js +2 -5
  200. package/packages/core/dist/src/safety/registry.test.js.map +1 -1
  201. package/packages/core/dist/src/scheduler/scheduler.d.ts +1 -1
  202. package/packages/core/dist/src/scheduler/scheduler.js +4 -49
  203. package/packages/core/dist/src/scheduler/scheduler.js.map +1 -1
  204. package/packages/core/dist/src/scheduler/scheduler.test.js +0 -91
  205. package/packages/core/dist/src/scheduler/scheduler.test.js.map +1 -1
  206. package/packages/core/dist/src/scheduler/state-manager.d.ts +0 -6
  207. package/packages/core/dist/src/scheduler/state-manager.js +0 -12
  208. package/packages/core/dist/src/scheduler/state-manager.js.map +1 -1
  209. package/packages/core/dist/src/scheduler/tool-executor.js +7 -9
  210. package/packages/core/dist/src/scheduler/tool-executor.js.map +1 -1
  211. package/packages/core/dist/src/scheduler/tool-executor.test.js +1 -1
  212. package/packages/core/dist/src/scheduler/tool-executor.test.js.map +1 -1
  213. package/packages/core/dist/src/scheduler/types.d.ts +0 -13
  214. package/packages/core/dist/src/services/shellExecutionService.d.ts +1 -1
  215. package/packages/core/dist/src/services/shellExecutionService.js +7 -8
  216. package/packages/core/dist/src/services/shellExecutionService.js.map +1 -1
  217. package/packages/core/dist/src/services/shellExecutionService.test.js +5 -5
  218. package/packages/core/dist/src/services/shellExecutionService.test.js.map +1 -1
  219. package/packages/core/dist/src/services/test-data/resolved-aliases-retry.golden.json +251 -251
  220. package/packages/core/dist/src/services/test-data/resolved-aliases.golden.json +251 -251
  221. package/packages/core/dist/src/skills/builtin/skill-creator/scripts/init_skill.cjs +5 -1
  222. package/packages/core/dist/src/skills/builtin/skill-creator/scripts/package_skill.cjs +5 -1
  223. package/packages/core/dist/src/skills/builtin/skill-creator/scripts/validate_skill.cjs +5 -1
  224. package/packages/core/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +1 -3
  225. package/packages/core/dist/src/telemetry/clearcut-logger/clearcut-logger.js +0 -2
  226. package/packages/core/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  227. package/packages/core/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +1 -9
  228. package/packages/core/dist/src/telemetry/clearcut-logger/event-metadata-key.js +1 -19
  229. package/packages/core/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  230. package/packages/core/dist/src/telemetry/index.d.ts +1 -2
  231. package/packages/core/dist/src/telemetry/index.js +1 -2
  232. package/packages/core/dist/src/telemetry/index.js.map +1 -1
  233. package/packages/core/dist/src/telemetry/loggers.js +0 -4
  234. package/packages/core/dist/src/telemetry/loggers.js.map +1 -1
  235. package/packages/core/dist/src/telemetry/trace.js.map +1 -1
  236. package/packages/core/dist/src/telemetry/types.d.ts +0 -26
  237. package/packages/core/dist/src/telemetry/types.js +2 -76
  238. package/packages/core/dist/src/telemetry/types.js.map +1 -1
  239. package/packages/core/dist/src/tools/diffOptions.d.ts +2 -2
  240. package/packages/core/dist/src/tools/diffOptions.js.map +1 -1
  241. package/packages/core/dist/src/tools/mcp-client.test.js.map +1 -1
  242. package/packages/core/dist/src/tools/mcp-tool.d.ts +1 -3
  243. package/packages/core/dist/src/tools/mcp-tool.js +2 -9
  244. package/packages/core/dist/src/tools/mcp-tool.js.map +1 -1
  245. package/packages/core/dist/src/tools/memoryTool.d.ts +0 -10
  246. package/packages/core/dist/src/tools/memoryTool.js +30 -25
  247. package/packages/core/dist/src/tools/memoryTool.js.map +1 -1
  248. package/packages/core/dist/src/tools/tool-names.d.ts +6 -0
  249. package/packages/core/dist/src/tools/tool-names.js +16 -1
  250. package/packages/core/dist/src/tools/tool-names.js.map +1 -1
  251. package/packages/core/dist/src/tools/tools.d.ts +0 -11
  252. package/packages/core/dist/src/tools/tools.js.map +1 -1
  253. package/packages/core/dist/src/utils/getPty.d.ts +14 -1
  254. package/packages/core/dist/src/utils/getPty.js +67 -2
  255. package/packages/core/dist/src/utils/getPty.js.map +1 -1
  256. package/packages/core/dist/src/utils/memoryDiscovery.d.ts +11 -3
  257. package/packages/core/dist/src/utils/memoryDiscovery.js +56 -21
  258. package/packages/core/dist/src/utils/memoryDiscovery.js.map +1 -1
  259. package/packages/core/dist/src/utils/secure-browser-launcher.js +40 -29
  260. package/packages/core/dist/src/utils/secure-browser-launcher.js.map +1 -1
  261. package/packages/core/dist/src/utils/textUtils.d.ts +0 -9
  262. package/packages/core/dist/src/utils/textUtils.js +0 -15
  263. package/packages/core/dist/src/utils/textUtils.js.map +1 -1
  264. package/packages/core/dist/src/utils/textUtils.test.js +1 -42
  265. package/packages/core/dist/src/utils/textUtils.test.js.map +1 -1
  266. package/packages/core/dist/tsconfig.tsbuildinfo +1 -1
  267. package/packages/test-utils/dist/tsconfig.tsbuildinfo +1 -1
  268. package/bundle/docs/ROADMAP.md +0 -113
  269. package/bundle/docs/TERMUX.md +0 -95
  270. package/bundle/docs/architecture.md +0 -80
  271. package/bundle/docs/assets/hero.png +0 -0
  272. package/bundle/docs/cli/authentication.md +0 -3
  273. package/bundle/docs/cli/commands.md +0 -430
  274. package/bundle/docs/cli/context-memory.md +0 -69
  275. package/bundle/docs/cli/index.md +0 -65
  276. package/bundle/docs/cli/keyboard-shortcuts.md +0 -140
  277. package/bundle/docs/cli/tutorials.md +0 -87
  278. package/bundle/docs/core/policy-engine.md +0 -305
  279. package/bundle/docs/get-started/configuration-v1.md +0 -888
  280. package/bundle/docs/patches/README.md +0 -74
  281. package/bundle/docs/patches/mcp-sdk-typings-shim.md +0 -27
  282. package/bundle/docs/quota-and-pricing.md +0 -158
  283. package/bundle/docs/termux-api/COMMANDS.md +0 -592
  284. package/bundle/docs/termux-api/DISCOVERY_SETUP.md +0 -670
  285. package/bundle/docs/termux-api/EXECUTION_PLAN.md +0 -532
  286. package/bundle/docs/termux-api/MERGE_STRATEGY.md +0 -365
  287. package/bundle/docs/termux-api/PATCHES.md +0 -480
  288. package/bundle/docs/termux-api/README.md +0 -416
  289. package/bundle/docs/troubleshooting.md +0 -173
  290. package/bundle/policies/conseca.toml +0 -6
  291. package/bundle/sandbox-macos-permissive-closed.sb +0 -32
  292. package/packages/cli/README.md +0 -173
  293. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.d.ts +0 -6
  294. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.js.map +0 -1
  295. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.test.d.ts +0 -6
  296. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.test.js +0 -111
  297. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +0 -1
  298. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.d.ts +0 -6
  299. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.js +0 -93
  300. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.js.map +0 -1
  301. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.d.ts +0 -42
  302. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.js +0 -105
  303. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.js.map +0 -1
  304. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.test.d.ts +0 -6
  305. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.test.js +0 -58
  306. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.test.js.map +0 -1
  307. package/packages/cli/dist/src/ui/hooks/useRefreshMemoryCommand.d.ts +0 -6
  308. package/packages/cli/dist/src/ui/hooks/useRefreshMemoryCommand.js +0 -7
  309. package/packages/cli/dist/src/ui/hooks/useRefreshMemoryCommand.js.map +0 -1
  310. package/packages/cli/dist/src/ui/hooks/useShowMemoryCommand.d.ts +0 -9
  311. package/packages/cli/dist/src/ui/hooks/useShowMemoryCommand.js +0 -59
  312. package/packages/cli/dist/src/ui/hooks/useShowMemoryCommand.js.map +0 -1
  313. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.d.ts +0 -30
  314. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.js +0 -149
  315. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.js.map +0 -1
  316. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.test.d.ts +0 -6
  317. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.test.js +0 -376
  318. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.test.js.map +0 -1
  319. package/packages/cli/dist/src/ui/hooks/useToolSchedulerFacade.test.d.ts +0 -6
  320. package/packages/cli/dist/src/ui/hooks/useToolSchedulerFacade.test.js +0 -45
  321. package/packages/cli/dist/src/ui/hooks/useToolSchedulerFacade.test.js.map +0 -1
  322. package/packages/cli/dist/src/ui/utils/InlineMarkdownRenderer.test.d.ts +0 -6
  323. package/packages/cli/dist/src/ui/utils/InlineMarkdownRenderer.test.js +0 -21
  324. package/packages/cli/dist/src/ui/utils/InlineMarkdownRenderer.test.js.map +0 -1
  325. package/packages/cli/dist/src/ui/utils/terminalUtils.test.d.ts +0 -6
  326. package/packages/cli/dist/src/ui/utils/terminalUtils.test.js +0 -40
  327. package/packages/cli/dist/src/ui/utils/terminalUtils.test.js.map +0 -1
  328. package/packages/cli/dist/src/utils/checks.d.ts +0 -19
  329. package/packages/cli/dist/src/utils/checks.js +0 -24
  330. package/packages/cli/dist/src/utils/checks.js.map +0 -1
  331. package/packages/cli/dist/src/utils/checks.test.d.ts +0 -6
  332. package/packages/cli/dist/src/utils/checks.test.js +0 -29
  333. package/packages/cli/dist/src/utils/checks.test.js.map +0 -1
  334. package/packages/cli/dist/src/utils/sandbox-macos-permissive-closed.sb +0 -32
  335. package/packages/cli/index.js +0 -2
  336. package/packages/core/dist/docs/TERMUX.md +0 -95
  337. package/packages/core/dist/docs/architecture.md +0 -80
  338. package/packages/core/dist/docs/assets/hero.png +0 -0
  339. package/packages/core/dist/docs/cli/authentication.md +0 -3
  340. package/packages/core/dist/docs/cli/commands.md +0 -430
  341. package/packages/core/dist/docs/cli/context-memory.md +0 -69
  342. package/packages/core/dist/docs/cli/index.md +0 -65
  343. package/packages/core/dist/docs/cli/tutorials.md +0 -87
  344. package/packages/core/dist/docs/cli/uninstall.md +0 -65
  345. package/packages/core/dist/docs/core/memport.md +0 -246
  346. package/packages/core/dist/docs/core/tools-api.md +0 -131
  347. package/packages/core/dist/docs/faq.md +0 -154
  348. package/packages/core/dist/docs/get-started/configuration-v1.md +0 -888
  349. package/packages/core/dist/docs/get-started/configuration.md +0 -1585
  350. package/packages/core/dist/docs/patches/README.md +0 -74
  351. package/packages/core/dist/docs/patches/mcp-sdk-typings-shim.md +0 -27
  352. package/packages/core/dist/docs/termux-api/COMMANDS.md +0 -592
  353. package/packages/core/dist/docs/termux-api/DISCOVERY_SETUP.md +0 -670
  354. package/packages/core/dist/docs/termux-api/EXECUTION_PLAN.md +0 -532
  355. package/packages/core/dist/docs/termux-api/MERGE_STRATEGY.md +0 -365
  356. package/packages/core/dist/docs/termux-api/PATCHES.md +0 -480
  357. package/packages/core/dist/docs/termux-api/README.md +0 -416
  358. package/packages/core/dist/docs/tos-privacy.md +0 -96
  359. package/packages/core/dist/src/safety/conseca/conseca.d.ts +0 -31
  360. package/packages/core/dist/src/safety/conseca/conseca.js +0 -105
  361. package/packages/core/dist/src/safety/conseca/conseca.js.map +0 -1
  362. package/packages/core/dist/src/safety/conseca/conseca.test.d.ts +0 -6
  363. package/packages/core/dist/src/safety/conseca/conseca.test.js +0 -226
  364. package/packages/core/dist/src/safety/conseca/conseca.test.js.map +0 -1
  365. package/packages/core/dist/src/safety/conseca/integration.test.d.ts +0 -6
  366. package/packages/core/dist/src/safety/conseca/integration.test.js +0 -19
  367. package/packages/core/dist/src/safety/conseca/integration.test.js.map +0 -1
  368. package/packages/core/dist/src/safety/conseca/policy-enforcer.d.ts +0 -13
  369. package/packages/core/dist/src/safety/conseca/policy-enforcer.js +0 -135
  370. package/packages/core/dist/src/safety/conseca/policy-enforcer.js.map +0 -1
  371. package/packages/core/dist/src/safety/conseca/policy-enforcer.test.d.ts +0 -6
  372. package/packages/core/dist/src/safety/conseca/policy-enforcer.test.js +0 -141
  373. package/packages/core/dist/src/safety/conseca/policy-enforcer.test.js.map +0 -1
  374. package/packages/core/dist/src/safety/conseca/policy-generator.d.ts +0 -15
  375. package/packages/core/dist/src/safety/conseca/policy-generator.js +0 -144
  376. package/packages/core/dist/src/safety/conseca/policy-generator.js.map +0 -1
  377. package/packages/core/dist/src/safety/conseca/policy-generator.test.d.ts +0 -6
  378. package/packages/core/dist/src/safety/conseca/policy-generator.test.js +0 -84
  379. package/packages/core/dist/src/safety/conseca/policy-generator.test.js.map +0 -1
  380. package/packages/core/dist/src/safety/conseca/types.d.ts +0 -15
  381. package/packages/core/dist/src/safety/conseca/types.js +0 -7
  382. package/packages/core/dist/src/safety/conseca/types.js.map +0 -1
  383. package/packages/core/dist/src/telemetry/conseca-logger.d.ts +0 -9
  384. package/packages/core/dist/src/telemetry/conseca-logger.js +0 -91
  385. package/packages/core/dist/src/telemetry/conseca-logger.js.map +0 -1
  386. package/packages/core/dist/src/telemetry/conseca-logger.test.d.ts +0 -6
  387. package/packages/core/dist/src/telemetry/conseca-logger.test.js +0 -89
  388. package/packages/core/dist/src/telemetry/conseca-logger.test.js.map +0 -1
  389. package/packages/core/dist/src/tools/mcpImportTool.d.ts +0 -31
  390. package/packages/core/dist/src/tools/mcpImportTool.js +0 -143
  391. package/packages/core/dist/src/tools/mcpImportTool.js.map +0 -1
  392. package/packages/core/dist/src/utils/contextMemory.d.ts +0 -67
  393. package/packages/core/dist/src/utils/contextMemory.js +0 -493
  394. package/packages/core/dist/src/utils/contextMemory.js.map +0 -1
  395. package/packages/core/dist/src/utils/contextMemory.test.d.ts +0 -6
  396. package/packages/core/dist/src/utils/contextMemory.test.js +0 -183
  397. package/packages/core/dist/src/utils/contextMemory.test.js.map +0 -1
  398. /package/{bundle/docs/core → packages/core/dist/docs/reference}/memport.md +0 -0
  399. /package/{bundle/docs/core → packages/core/dist/docs/reference}/tools-api.md +0 -0
  400. /package/{bundle/docs/cli → packages/core/dist/docs/resources}/uninstall.md +0 -0
@@ -1,226 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, beforeEach, vi } from 'vitest';
7
- import { ConsecaSafetyChecker } from './conseca.js';
8
- import { SafetyCheckDecision } from '../protocol.js';
9
- import { logConsecaPolicyGeneration, logConsecaVerdict, } from '../../telemetry/index.js';
10
- import * as policyGenerator from './policy-generator.js';
11
- import * as policyEnforcer from './policy-enforcer.js';
12
- vi.mock('../../telemetry/index.js', () => ({
13
- logConsecaPolicyGeneration: vi.fn(),
14
- ConsecaPolicyGenerationEvent: vi.fn(),
15
- logConsecaVerdict: vi.fn(),
16
- ConsecaVerdictEvent: vi.fn(),
17
- }));
18
- vi.mock('./policy-generator.js');
19
- vi.mock('./policy-enforcer.js');
20
- describe('ConsecaSafetyChecker', () => {
21
- let checker;
22
- let mockConfig;
23
- beforeEach(() => {
24
- // Reset singleton instance to ensure clean state
25
- ConsecaSafetyChecker.resetInstance();
26
- // Get the fresh singleton instance
27
- checker = ConsecaSafetyChecker.getInstance();
28
- mockConfig = {
29
- enableConseca: true,
30
- getToolRegistry: vi.fn().mockReturnValue({
31
- getFunctionDeclarations: vi.fn().mockReturnValue([]),
32
- }),
33
- };
34
- checker.setConfig(mockConfig);
35
- vi.clearAllMocks();
36
- // Default mock implementations
37
- vi.mocked(policyGenerator.generatePolicy).mockResolvedValue({ policy: {} });
38
- vi.mocked(policyEnforcer.enforcePolicy).mockResolvedValue({
39
- decision: SafetyCheckDecision.ALLOW,
40
- });
41
- });
42
- it('should be a singleton', () => {
43
- const instance1 = ConsecaSafetyChecker.getInstance();
44
- const instance2 = ConsecaSafetyChecker.getInstance();
45
- expect(instance1).toBe(instance2);
46
- });
47
- it('should return ALLOW when no user prompt is present in context', async () => {
48
- const input = {
49
- protocolVersion: '1.0.0',
50
- toolCall: { name: 'testTool' },
51
- context: {
52
- environment: { cwd: '/tmp', workspaces: [] },
53
- },
54
- };
55
- const result = await checker.check(input);
56
- expect(result.decision).toBe(SafetyCheckDecision.ALLOW);
57
- });
58
- it('should return ALLOW if enableConseca is false', async () => {
59
- const disabledConfig = {
60
- enableConseca: false,
61
- };
62
- checker.setConfig(disabledConfig);
63
- const input = {
64
- protocolVersion: '1.0.0',
65
- toolCall: { name: 'testTool' },
66
- context: {
67
- environment: { cwd: '/tmp', workspaces: [] },
68
- },
69
- };
70
- const result = await checker.check(input);
71
- expect(result.decision).toBe(SafetyCheckDecision.ALLOW);
72
- expect(result.reason).toBe('Conseca is disabled');
73
- expect(policyGenerator.generatePolicy).not.toHaveBeenCalled();
74
- });
75
- it('getPolicy should return cached policy if user prompt matches', async () => {
76
- const mockPolicy = {
77
- tool: {
78
- permissions: SafetyCheckDecision.ALLOW,
79
- constraints: 'None',
80
- rationale: 'Test',
81
- },
82
- };
83
- vi.mocked(policyGenerator.generatePolicy).mockResolvedValue({
84
- policy: mockPolicy,
85
- });
86
- const policy1 = await checker.getPolicy('prompt', 'trusted', mockConfig);
87
- const policy2 = await checker.getPolicy('prompt', 'trusted', mockConfig);
88
- expect(policy1).toBe(mockPolicy);
89
- expect(policy2).toBe(mockPolicy);
90
- expect(policyGenerator.generatePolicy).toHaveBeenCalledTimes(1);
91
- });
92
- it('getPolicy should generate new policy if user prompt changes', async () => {
93
- const mockPolicy1 = {
94
- tool1: {
95
- permissions: SafetyCheckDecision.ALLOW,
96
- constraints: 'None',
97
- rationale: 'Test',
98
- },
99
- };
100
- const mockPolicy2 = {
101
- tool2: {
102
- permissions: SafetyCheckDecision.ALLOW,
103
- constraints: 'None',
104
- rationale: 'Test',
105
- },
106
- };
107
- vi.mocked(policyGenerator.generatePolicy)
108
- .mockResolvedValueOnce({ policy: mockPolicy1 })
109
- .mockResolvedValueOnce({ policy: mockPolicy2 });
110
- const policy1 = await checker.getPolicy('prompt1', 'trusted', mockConfig);
111
- const policy2 = await checker.getPolicy('prompt2', 'trusted', mockConfig);
112
- expect(policy1).toBe(mockPolicy1);
113
- expect(policy2).toBe(mockPolicy2);
114
- expect(policyGenerator.generatePolicy).toHaveBeenCalledTimes(2);
115
- });
116
- it('check should call getPolicy and enforcePolicy', async () => {
117
- const mockPolicy = {
118
- tool: {
119
- permissions: SafetyCheckDecision.ALLOW,
120
- constraints: 'None',
121
- rationale: 'Test',
122
- },
123
- };
124
- vi.mocked(policyGenerator.generatePolicy).mockResolvedValue({
125
- policy: mockPolicy,
126
- });
127
- vi.mocked(policyEnforcer.enforcePolicy).mockResolvedValue({
128
- decision: SafetyCheckDecision.ALLOW,
129
- });
130
- const input = {
131
- protocolVersion: '1.0.0',
132
- toolCall: { name: 'tool', args: {} },
133
- context: {
134
- environment: { cwd: '.', workspaces: [] },
135
- history: {
136
- turns: [
137
- {
138
- user: { text: 'user prompt' },
139
- model: {},
140
- },
141
- ],
142
- },
143
- },
144
- };
145
- const result = await checker.check(input);
146
- expect(policyGenerator.generatePolicy).toHaveBeenCalledWith('user prompt', expect.any(String), mockConfig);
147
- expect(policyEnforcer.enforcePolicy).toHaveBeenCalledWith(mockPolicy, input.toolCall, mockConfig);
148
- expect(result.decision).toBe(SafetyCheckDecision.ALLOW);
149
- });
150
- it('check should return ALLOW if no user prompt found (fallback)', async () => {
151
- const input = {
152
- protocolVersion: '1.0.0',
153
- toolCall: { name: 'tool', args: {} },
154
- context: {
155
- environment: { cwd: '.', workspaces: [] },
156
- },
157
- };
158
- const result = await checker.check(input);
159
- expect(policyGenerator.generatePolicy).not.toHaveBeenCalled();
160
- expect(result.decision).toBe(SafetyCheckDecision.ALLOW);
161
- });
162
- // Test state helpers
163
- it('should expose current state via helpers', async () => {
164
- const mockPolicy = {
165
- tool: {
166
- permissions: SafetyCheckDecision.ALLOW,
167
- constraints: 'None',
168
- rationale: 'Test',
169
- },
170
- };
171
- vi.mocked(policyGenerator.generatePolicy).mockResolvedValue({
172
- policy: mockPolicy,
173
- });
174
- await checker.getPolicy('prompt', 'trusted', mockConfig);
175
- expect(checker.getCurrentPolicy()).toBe(mockPolicy);
176
- expect(checker.getActiveUserPrompt()).toBe('prompt');
177
- });
178
- it('should log policy generation event when config is set', async () => {
179
- const mockPolicy = {
180
- tool: {
181
- permissions: SafetyCheckDecision.ALLOW,
182
- constraints: 'None',
183
- rationale: 'Test',
184
- },
185
- };
186
- vi.mocked(policyGenerator.generatePolicy).mockResolvedValue({
187
- policy: mockPolicy,
188
- });
189
- await checker.getPolicy('telemetry_prompt', 'trusted', mockConfig);
190
- expect(logConsecaPolicyGeneration).toHaveBeenCalledWith(mockConfig, expect.anything());
191
- });
192
- it('should log verdict event on check', async () => {
193
- const mockPolicy = {
194
- tool: {
195
- permissions: SafetyCheckDecision.ALLOW,
196
- constraints: 'None',
197
- rationale: 'Test',
198
- },
199
- };
200
- vi.mocked(policyGenerator.generatePolicy).mockResolvedValue({
201
- policy: mockPolicy,
202
- });
203
- vi.mocked(policyEnforcer.enforcePolicy).mockResolvedValue({
204
- decision: SafetyCheckDecision.ALLOW,
205
- reason: 'Allowed by policy',
206
- });
207
- const input = {
208
- protocolVersion: '1.0.0',
209
- toolCall: { name: 'tool', args: {} },
210
- context: {
211
- environment: { cwd: '.', workspaces: [] },
212
- history: {
213
- turns: [
214
- {
215
- user: { text: 'user prompt' },
216
- model: {},
217
- },
218
- ],
219
- },
220
- },
221
- };
222
- await checker.check(input);
223
- expect(logConsecaVerdict).toHaveBeenCalledWith(mockConfig, expect.anything());
224
- });
225
- });
226
- //# sourceMappingURL=conseca.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conseca.test.js","sourceRoot":"","sources":["../../../../src/safety/conseca/conseca.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,19 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect } from 'vitest';
7
- import { ConsecaSafetyChecker } from './conseca.js';
8
- import { InProcessCheckerType } from '../../policy/types.js';
9
- import { CheckerRegistry } from '../registry.js';
10
- describe('Conseca Integration', () => {
11
- it('should be registered and resolvable via CheckerRegistry', () => {
12
- const registry = new CheckerRegistry('.');
13
- const checker = registry.resolveInProcess(InProcessCheckerType.CONSECA);
14
- expect(checker).toBeDefined();
15
- expect(checker).toBeInstanceOf(ConsecaSafetyChecker);
16
- expect(checker).toBe(ConsecaSafetyChecker.getInstance());
17
- });
18
- });
19
- //# sourceMappingURL=integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../../src/safety/conseca/integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAExE,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import type { Config } from '../../config/config.js';
7
- import type { FunctionCall } from '@google/genai';
8
- import { type SafetyCheckResult } from '../protocol.js';
9
- import type { SecurityPolicy } from './types.js';
10
- /**
11
- * Enforces the security policy for a given tool call.
12
- */
13
- export declare function enforcePolicy(policy: SecurityPolicy, toolCall: FunctionCall, config: Config): Promise<SafetyCheckResult>;
@@ -1,135 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { SafetyCheckDecision } from '../protocol.js';
7
- import { getResponseText } from '../../utils/partUtils.js';
8
- import { safeTemplateReplace } from '../../utils/textUtils.js';
9
- import { DEFAULT_GEMINI_FLASH_MODEL } from '../../config/models.js';
10
- import { debugLogger } from '../../utils/debugLogger.js';
11
- import { LlmRole } from '../../telemetry/index.js';
12
- const CONSECA_ENFORCEMENT_PROMPT = `
13
- You are a security enforcement engine. Your goal is to check if a specific tool call complies with a given security policy.
14
-
15
- Input:
16
- 1. **Security Policy:** A set of rules defining allowed and denied actions for this specific tool.
17
- 2. **Tool Call:** The actual function call the system intends to execute.
18
-
19
- Security Policy:
20
- {{policy}}
21
-
22
- Tool Call:
23
- {{tool_call}}
24
-
25
- Evaluate the tool call against the policy.
26
- 1. Check if the tool is allowed.
27
- 2. Check if the arguments match the constraints.
28
- 3. Output a JSON object with:
29
- - "decision": "allow", "deny", or "ask_user".
30
- - "reason": A brief explanation.
31
-
32
- Output strictly JSON.
33
- `;
34
- import { z } from 'zod';
35
- import { zodToJsonSchema } from 'zod-to-json-schema';
36
- const EnforcementResultSchema = z.object({
37
- decision: z.enum(['allow', 'deny', 'ask_user']),
38
- reason: z.string(),
39
- });
40
- /**
41
- * Enforces the security policy for a given tool call.
42
- */
43
- export async function enforcePolicy(policy, toolCall, config) {
44
- const model = DEFAULT_GEMINI_FLASH_MODEL;
45
- const contentGenerator = config.getContentGenerator();
46
- if (!contentGenerator) {
47
- return {
48
- decision: SafetyCheckDecision.ALLOW,
49
- reason: 'Content generator not initialized',
50
- error: 'Content generator not initialized',
51
- };
52
- }
53
- const toolName = toolCall.name;
54
- // If tool name is missing, we cannot enforce the policy. Allow by default.
55
- if (!toolName) {
56
- return {
57
- decision: SafetyCheckDecision.ALLOW,
58
- reason: 'Tool name is missing',
59
- error: 'Tool name is missing',
60
- };
61
- }
62
- const toolPolicyStr = JSON.stringify(policy[toolName] || {}, null, 2);
63
- const toolCallStr = JSON.stringify(toolCall, null, 2);
64
- debugLogger.debug(`[Conseca] Enforcing policy for tool: ${toolName}`, toolCall, toolPolicyStr, toolCallStr);
65
- try {
66
- const result = await contentGenerator.generateContent({
67
- model,
68
- config: {
69
- responseMimeType: 'application/json',
70
- responseSchema: zodToJsonSchema(EnforcementResultSchema, {
71
- target: 'openApi3',
72
- }),
73
- },
74
- contents: [
75
- {
76
- role: 'user',
77
- parts: [
78
- {
79
- text: safeTemplateReplace(CONSECA_ENFORCEMENT_PROMPT, {
80
- policy: toolPolicyStr,
81
- tool_call: toolCallStr,
82
- }),
83
- },
84
- ],
85
- },
86
- ],
87
- }, 'conseca-policy-enforcement', LlmRole.SUBAGENT);
88
- const responseText = getResponseText(result);
89
- debugLogger.debug(`[Conseca] Enforcement Raw Response: ${responseText}`);
90
- if (!responseText) {
91
- return {
92
- decision: SafetyCheckDecision.ALLOW,
93
- reason: 'Empty response from policy enforcer',
94
- error: 'Empty response from policy enforcer',
95
- };
96
- }
97
- try {
98
- const parsed = EnforcementResultSchema.parse(JSON.parse(responseText));
99
- debugLogger.debug(`[Conseca] Enforcement Parsed:`, parsed);
100
- let decision;
101
- switch (parsed.decision) {
102
- case 'allow':
103
- decision = SafetyCheckDecision.ALLOW;
104
- break;
105
- case 'ask_user':
106
- decision = SafetyCheckDecision.ASK_USER;
107
- break;
108
- case 'deny':
109
- default:
110
- decision = SafetyCheckDecision.DENY;
111
- break;
112
- }
113
- return {
114
- decision,
115
- reason: parsed.reason,
116
- };
117
- }
118
- catch (parseError) {
119
- return {
120
- decision: SafetyCheckDecision.ALLOW,
121
- reason: 'JSON Parse Error in enforcement response',
122
- error: `JSON Parse Error: ${parseError instanceof Error ? parseError.message : String(parseError)}. Raw: ${responseText}`,
123
- };
124
- }
125
- }
126
- catch (error) {
127
- debugLogger.error('Policy enforcement failed:', error);
128
- return {
129
- decision: SafetyCheckDecision.ALLOW,
130
- reason: 'Policy enforcement failed',
131
- error: `Policy enforcement failed: ${error instanceof Error ? error.message : String(error)}`,
132
- };
133
- }
134
- }
135
- //# sourceMappingURL=policy-enforcer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy-enforcer.js","sourceRoot":"","sources":["../../../../src/safety/conseca/policy-enforcer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,141 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, vi, beforeEach } from 'vitest';
7
- import { enforcePolicy } from './policy-enforcer.js';
8
- import { SafetyCheckDecision } from '../protocol.js';
9
- import { LlmRole } from '../../telemetry/index.js';
10
- describe('policy_enforcer', () => {
11
- let mockConfig;
12
- let mockContentGenerator;
13
- beforeEach(() => {
14
- vi.clearAllMocks();
15
- mockContentGenerator = {
16
- generateContent: vi.fn(),
17
- };
18
- mockConfig = {
19
- getContentGenerator: vi.fn().mockReturnValue(mockContentGenerator),
20
- };
21
- });
22
- it('should return ALLOW when content generator returns ALLOW', async () => {
23
- mockContentGenerator.generateContent = vi.fn().mockResolvedValue({
24
- candidates: [
25
- {
26
- content: {
27
- parts: [
28
- { text: JSON.stringify({ decision: 'allow', reason: 'Safe' }) },
29
- ],
30
- },
31
- },
32
- ],
33
- });
34
- const toolCall = { name: 'testTool', args: {} };
35
- const policy = {
36
- testTool: {
37
- permissions: SafetyCheckDecision.ALLOW,
38
- constraints: 'None',
39
- rationale: 'Test',
40
- },
41
- };
42
- const result = await enforcePolicy(policy, toolCall, mockConfig);
43
- expect(mockConfig.getContentGenerator).toHaveBeenCalled();
44
- expect(mockContentGenerator.generateContent).toHaveBeenCalledWith(expect.objectContaining({
45
- model: expect.any(String),
46
- config: expect.objectContaining({
47
- responseMimeType: 'application/json',
48
- responseSchema: expect.any(Object),
49
- }),
50
- contents: expect.arrayContaining([
51
- expect.objectContaining({
52
- role: 'user',
53
- parts: expect.arrayContaining([
54
- expect.objectContaining({
55
- text: expect.stringContaining('Security Policy:'),
56
- }),
57
- ]),
58
- }),
59
- ]),
60
- }), 'conseca-policy-enforcement', LlmRole.SUBAGENT);
61
- expect(result.decision).toBe(SafetyCheckDecision.ALLOW);
62
- });
63
- it('should handle missing content generator gracefully (error case)', async () => {
64
- vi.mocked(mockConfig.getContentGenerator).mockReturnValue(undefined);
65
- const toolCall = { name: 'testTool', args: {} };
66
- const policy = {
67
- testTool: {
68
- permissions: SafetyCheckDecision.ALLOW,
69
- constraints: 'None',
70
- rationale: 'Test',
71
- },
72
- };
73
- const result = await enforcePolicy(policy, toolCall, mockConfig);
74
- expect(result.decision).toBe(SafetyCheckDecision.ALLOW);
75
- });
76
- it('should ALLOW if tool name is missing with the reason and error as tool name is missing', async () => {
77
- const toolCall = { args: {} };
78
- const policy = {};
79
- const result = await enforcePolicy(policy, toolCall, mockConfig);
80
- expect(result.decision).toBe(SafetyCheckDecision.ALLOW);
81
- expect(result.reason).toBe('Tool name is missing');
82
- if (result.decision === SafetyCheckDecision.ALLOW) {
83
- expect(result.error).toBe('Tool name is missing');
84
- }
85
- });
86
- it('should handle empty policy by checking with LLM (fail-open/check behavior)', async () => {
87
- // Even if policy is empty for the tool, we currently send it to LLM.
88
- // The LLM might ALLOW or DENY based on its own judgment of "no policy".
89
- // We simulate the LLM allowing the action to match the current fail-open strategy.
90
- mockContentGenerator.generateContent = vi.fn().mockResolvedValue({
91
- candidates: [
92
- {
93
- content: {
94
- parts: [
95
- {
96
- text: JSON.stringify({
97
- decision: 'allow',
98
- reason: 'No restrictions',
99
- }),
100
- },
101
- ],
102
- },
103
- },
104
- ],
105
- });
106
- const toolCall = { name: 'unknownTool', args: {} };
107
- const policy = {}; // Empty policy
108
- const result = await enforcePolicy(policy, toolCall, mockConfig);
109
- expect(result.decision).toBe(SafetyCheckDecision.ALLOW);
110
- expect(mockContentGenerator.generateContent).toHaveBeenCalled();
111
- if (result.decision === SafetyCheckDecision.ALLOW) {
112
- expect(result.error).toBeUndefined();
113
- }
114
- });
115
- it('should handle malformed JSON response from LLM by failing open (ALLOW)', async () => {
116
- mockContentGenerator.generateContent = vi.fn().mockResolvedValue({
117
- candidates: [
118
- {
119
- content: {
120
- parts: [{ text: 'This is not JSON' }],
121
- },
122
- },
123
- ],
124
- });
125
- const toolCall = { name: 'testTool', args: {} };
126
- const policy = {
127
- testTool: {
128
- permissions: SafetyCheckDecision.ALLOW,
129
- constraints: 'None',
130
- rationale: 'Test',
131
- },
132
- };
133
- const result = await enforcePolicy(policy, toolCall, mockConfig);
134
- expect(result.decision).toBe(SafetyCheckDecision.ALLOW);
135
- expect(result.reason).toContain('JSON Parse Error');
136
- if (result.decision === SafetyCheckDecision.ALLOW) {
137
- expect(result.error).toContain('JSON Parse Error');
138
- }
139
- });
140
- });
141
- //# sourceMappingURL=policy-enforcer.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy-enforcer.test.js","sourceRoot":"","sources":["../../../../src/safety/conseca/policy-enforcer.test.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import type { Config } from '../../config/config.js';
7
- import type { SecurityPolicy } from './types.js';
8
- export interface PolicyGenerationResult {
9
- policy: SecurityPolicy;
10
- error?: string;
11
- }
12
- /**
13
- * Generates a security policy for the given user prompt and trusted content.
14
- */
15
- export declare function generatePolicy(userPrompt: string, trustedContent: string, config: Config): Promise<PolicyGenerationResult>;