@amodalai/core 0.1.0

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 (463) hide show
  1. package/LICENSE +21 -0
  2. package/dist/.last_build +0 -0
  3. package/dist/src/amodal-config.d.ts +194 -0
  4. package/dist/src/amodal-config.js +326 -0
  5. package/dist/src/amodal-config.js.map +1 -0
  6. package/dist/src/audit/audit-logger.d.ts +52 -0
  7. package/dist/src/audit/audit-logger.js +137 -0
  8. package/dist/src/audit/audit-logger.js.map +1 -0
  9. package/dist/src/audit/audit-outputs.d.ts +34 -0
  10. package/dist/src/audit/audit-outputs.js +73 -0
  11. package/dist/src/audit/audit-outputs.js.map +1 -0
  12. package/dist/src/audit/audit-redact.d.ts +14 -0
  13. package/dist/src/audit/audit-redact.js +55 -0
  14. package/dist/src/audit/audit-redact.js.map +1 -0
  15. package/dist/src/audit/audit-types.d.ts +122 -0
  16. package/dist/src/audit/audit-types.js +64 -0
  17. package/dist/src/audit/audit-types.js.map +1 -0
  18. package/dist/src/audit/index.d.ts +10 -0
  19. package/dist/src/audit/index.js +10 -0
  20. package/dist/src/audit/index.js.map +1 -0
  21. package/dist/src/eval/eval-cost.d.ts +33 -0
  22. package/dist/src/eval/eval-cost.js +73 -0
  23. package/dist/src/eval/eval-cost.js.map +1 -0
  24. package/dist/src/eval/eval-diff.d.ts +11 -0
  25. package/dist/src/eval/eval-diff.js +97 -0
  26. package/dist/src/eval/eval-diff.js.map +1 -0
  27. package/dist/src/eval/eval-formatter.d.ts +23 -0
  28. package/dist/src/eval/eval-formatter.js +221 -0
  29. package/dist/src/eval/eval-formatter.js.map +1 -0
  30. package/dist/src/eval/eval-judge.d.ts +26 -0
  31. package/dist/src/eval/eval-judge.js +76 -0
  32. package/dist/src/eval/eval-judge.js.map +1 -0
  33. package/dist/src/eval/eval-run-builder.d.ts +25 -0
  34. package/dist/src/eval/eval-run-builder.js +78 -0
  35. package/dist/src/eval/eval-run-builder.js.map +1 -0
  36. package/dist/src/eval/eval-runner.d.ts +36 -0
  37. package/dist/src/eval/eval-runner.js +92 -0
  38. package/dist/src/eval/eval-runner.js.map +1 -0
  39. package/dist/src/eval/eval-session-provider.d.ts +40 -0
  40. package/dist/src/eval/eval-session-provider.js +46 -0
  41. package/dist/src/eval/eval-session-provider.js.map +1 -0
  42. package/dist/src/eval/eval-types.d.ts +146 -0
  43. package/dist/src/eval/eval-types.js +7 -0
  44. package/dist/src/eval/eval-types.js.map +1 -0
  45. package/dist/src/eval/experiment-runner.d.ts +16 -0
  46. package/dist/src/eval/experiment-runner.js +73 -0
  47. package/dist/src/eval/experiment-runner.js.map +1 -0
  48. package/dist/src/eval/experiment-types.d.ts +56 -0
  49. package/dist/src/eval/experiment-types.js +7 -0
  50. package/dist/src/eval/experiment-types.js.map +1 -0
  51. package/dist/src/eval/index.d.ts +22 -0
  52. package/dist/src/eval/index.js +18 -0
  53. package/dist/src/eval/index.js.map +1 -0
  54. package/dist/src/eval/multi-model-runner.d.ts +42 -0
  55. package/dist/src/eval/multi-model-runner.js +70 -0
  56. package/dist/src/eval/multi-model-runner.js.map +1 -0
  57. package/dist/src/eval/platform-eval-client.d.ts +105 -0
  58. package/dist/src/eval/platform-eval-client.js +155 -0
  59. package/dist/src/eval/platform-eval-client.js.map +1 -0
  60. package/dist/src/index.d.ts +41 -0
  61. package/dist/src/index.js +68 -0
  62. package/dist/src/index.js.map +1 -0
  63. package/dist/src/knowledge/index.d.ts +11 -0
  64. package/dist/src/knowledge/index.js +12 -0
  65. package/dist/src/knowledge/index.js.map +1 -0
  66. package/dist/src/knowledge/kb-formatter.d.ts +15 -0
  67. package/dist/src/knowledge/kb-formatter.js +78 -0
  68. package/dist/src/knowledge/kb-formatter.js.map +1 -0
  69. package/dist/src/knowledge/kb-index.d.ts +27 -0
  70. package/dist/src/knowledge/kb-index.js +66 -0
  71. package/dist/src/knowledge/kb-index.js.map +1 -0
  72. package/dist/src/knowledge/kb-types.d.ts +54 -0
  73. package/dist/src/knowledge/kb-types.js +7 -0
  74. package/dist/src/knowledge/kb-types.js.map +1 -0
  75. package/dist/src/knowledge/knowledge-store.d.ts +56 -0
  76. package/dist/src/knowledge/knowledge-store.js +141 -0
  77. package/dist/src/knowledge/knowledge-store.js.map +1 -0
  78. package/dist/src/knowledge/load-knowledge.d.ts +30 -0
  79. package/dist/src/knowledge/load-knowledge.js +161 -0
  80. package/dist/src/knowledge/load-knowledge.js.map +1 -0
  81. package/dist/src/knowledge/propose-kb-update.d.ts +32 -0
  82. package/dist/src/knowledge/propose-kb-update.js +148 -0
  83. package/dist/src/knowledge/propose-kb-update.js.map +1 -0
  84. package/dist/src/knowledge/propose-knowledge.d.ts +34 -0
  85. package/dist/src/knowledge/propose-knowledge.js +163 -0
  86. package/dist/src/knowledge/propose-knowledge.js.map +1 -0
  87. package/dist/src/mcp/index.d.ts +7 -0
  88. package/dist/src/mcp/index.js +7 -0
  89. package/dist/src/mcp/index.js.map +1 -0
  90. package/dist/src/mcp/mcp-manager.d.ts +96 -0
  91. package/dist/src/mcp/mcp-manager.js +192 -0
  92. package/dist/src/mcp/mcp-manager.js.map +1 -0
  93. package/dist/src/packages/config-deps.d.ts +20 -0
  94. package/dist/src/packages/config-deps.js +77 -0
  95. package/dist/src/packages/config-deps.js.map +1 -0
  96. package/dist/src/packages/env-file.d.ts +28 -0
  97. package/dist/src/packages/env-file.js +143 -0
  98. package/dist/src/packages/env-file.js.map +1 -0
  99. package/dist/src/packages/frontmatter.d.ts +28 -0
  100. package/dist/src/packages/frontmatter.js +77 -0
  101. package/dist/src/packages/frontmatter.js.map +1 -0
  102. package/dist/src/packages/index.d.ts +16 -0
  103. package/dist/src/packages/index.js +17 -0
  104. package/dist/src/packages/index.js.map +1 -0
  105. package/dist/src/packages/lock-file.d.ts +35 -0
  106. package/dist/src/packages/lock-file.js +117 -0
  107. package/dist/src/packages/lock-file.js.map +1 -0
  108. package/dist/src/packages/manifest-reader.d.ts +19 -0
  109. package/dist/src/packages/manifest-reader.js +91 -0
  110. package/dist/src/packages/manifest-reader.js.map +1 -0
  111. package/dist/src/packages/merge-engine.d.ts +63 -0
  112. package/dist/src/packages/merge-engine.js +357 -0
  113. package/dist/src/packages/merge-engine.js.map +1 -0
  114. package/dist/src/packages/npm-context.d.ts +56 -0
  115. package/dist/src/packages/npm-context.js +235 -0
  116. package/dist/src/packages/npm-context.js.map +1 -0
  117. package/dist/src/packages/npm-registry.d.ts +35 -0
  118. package/dist/src/packages/npm-registry.js +107 -0
  119. package/dist/src/packages/npm-registry.js.map +1 -0
  120. package/dist/src/packages/package-error.d.ts +16 -0
  121. package/dist/src/packages/package-error.js +17 -0
  122. package/dist/src/packages/package-error.js.map +1 -0
  123. package/dist/src/packages/package-types.d.ts +477 -0
  124. package/dist/src/packages/package-types.js +156 -0
  125. package/dist/src/packages/package-types.js.map +1 -0
  126. package/dist/src/packages/resolver.d.ts +41 -0
  127. package/dist/src/packages/resolver.js +353 -0
  128. package/dist/src/packages/resolver.js.map +1 -0
  129. package/dist/src/platform/config-builder.d.ts +24 -0
  130. package/dist/src/platform/config-builder.js +70 -0
  131. package/dist/src/platform/config-builder.js.map +1 -0
  132. package/dist/src/platform/index.d.ts +8 -0
  133. package/dist/src/platform/index.js +9 -0
  134. package/dist/src/platform/index.js.map +1 -0
  135. package/dist/src/platform/platform-client.d.ts +160 -0
  136. package/dist/src/platform/platform-client.js +486 -0
  137. package/dist/src/platform/platform-client.js.map +1 -0
  138. package/dist/src/platform/platform-types.d.ts +81 -0
  139. package/dist/src/platform/platform-types.js +18 -0
  140. package/dist/src/platform/platform-types.js.map +1 -0
  141. package/dist/src/providers/content-generator/google-to-llm.d.ts +87 -0
  142. package/dist/src/providers/content-generator/google-to-llm.js +226 -0
  143. package/dist/src/providers/content-generator/google-to-llm.js.map +1 -0
  144. package/dist/src/providers/content-generator/index.d.ts +10 -0
  145. package/dist/src/providers/content-generator/index.js +9 -0
  146. package/dist/src/providers/content-generator/index.js.map +1 -0
  147. package/dist/src/providers/content-generator/llm-to-google.d.ts +59 -0
  148. package/dist/src/providers/content-generator/llm-to-google.js +178 -0
  149. package/dist/src/providers/content-generator/llm-to-google.js.map +1 -0
  150. package/dist/src/providers/content-generator/multi-provider-content-generator.d.ts +61 -0
  151. package/dist/src/providers/content-generator/multi-provider-content-generator.js +144 -0
  152. package/dist/src/providers/content-generator/multi-provider-content-generator.js.map +1 -0
  153. package/dist/src/providers/runtime/anthropic-provider.d.ts +18 -0
  154. package/dist/src/providers/runtime/anthropic-provider.js +253 -0
  155. package/dist/src/providers/runtime/anthropic-provider.js.map +1 -0
  156. package/dist/src/providers/runtime/azure-provider.d.ts +25 -0
  157. package/dist/src/providers/runtime/azure-provider.js +206 -0
  158. package/dist/src/providers/runtime/azure-provider.js.map +1 -0
  159. package/dist/src/providers/runtime/bedrock-provider.d.ts +22 -0
  160. package/dist/src/providers/runtime/bedrock-provider.js +276 -0
  161. package/dist/src/providers/runtime/bedrock-provider.js.map +1 -0
  162. package/dist/src/providers/runtime/failover-provider.d.ts +30 -0
  163. package/dist/src/providers/runtime/failover-provider.js +124 -0
  164. package/dist/src/providers/runtime/failover-provider.js.map +1 -0
  165. package/dist/src/providers/runtime/google-provider.d.ts +17 -0
  166. package/dist/src/providers/runtime/google-provider.js +239 -0
  167. package/dist/src/providers/runtime/google-provider.js.map +1 -0
  168. package/dist/src/providers/runtime/index.d.ts +16 -0
  169. package/dist/src/providers/runtime/index.js +16 -0
  170. package/dist/src/providers/runtime/index.js.map +1 -0
  171. package/dist/src/providers/runtime/openai-provider.d.ts +21 -0
  172. package/dist/src/providers/runtime/openai-provider.js +266 -0
  173. package/dist/src/providers/runtime/openai-provider.js.map +1 -0
  174. package/dist/src/providers/runtime/provider-errors.d.ts +39 -0
  175. package/dist/src/providers/runtime/provider-errors.js +50 -0
  176. package/dist/src/providers/runtime/provider-errors.js.map +1 -0
  177. package/dist/src/providers/runtime/provider-factory.d.ts +19 -0
  178. package/dist/src/providers/runtime/provider-factory.js +45 -0
  179. package/dist/src/providers/runtime/provider-factory.js.map +1 -0
  180. package/dist/src/providers/runtime/runtime-provider-types.d.ts +63 -0
  181. package/dist/src/providers/runtime/runtime-provider-types.js +7 -0
  182. package/dist/src/providers/runtime/runtime-provider-types.js.map +1 -0
  183. package/dist/src/providers/runtime/streaming-types.d.ts +40 -0
  184. package/dist/src/providers/runtime/streaming-types.js +7 -0
  185. package/dist/src/providers/runtime/streaming-types.js.map +1 -0
  186. package/dist/src/repo/config-schema.d.ts +238 -0
  187. package/dist/src/repo/config-schema.js +155 -0
  188. package/dist/src/repo/config-schema.js.map +1 -0
  189. package/dist/src/repo/connection-schemas.d.ts +449 -0
  190. package/dist/src/repo/connection-schemas.js +109 -0
  191. package/dist/src/repo/connection-schemas.js.map +1 -0
  192. package/dist/src/repo/connection-types.d.ts +29 -0
  193. package/dist/src/repo/connection-types.js +7 -0
  194. package/dist/src/repo/connection-types.js.map +1 -0
  195. package/dist/src/repo/drift-detector.d.ts +26 -0
  196. package/dist/src/repo/drift-detector.js +66 -0
  197. package/dist/src/repo/drift-detector.js.map +1 -0
  198. package/dist/src/repo/graphql-drift-detector.d.ts +27 -0
  199. package/dist/src/repo/graphql-drift-detector.js +66 -0
  200. package/dist/src/repo/graphql-drift-detector.js.map +1 -0
  201. package/dist/src/repo/graphql-parser.d.ts +30 -0
  202. package/dist/src/repo/graphql-parser.js +125 -0
  203. package/dist/src/repo/graphql-parser.js.map +1 -0
  204. package/dist/src/repo/graphql-surface-parser.d.ts +20 -0
  205. package/dist/src/repo/graphql-surface-parser.js +74 -0
  206. package/dist/src/repo/graphql-surface-parser.js.map +1 -0
  207. package/dist/src/repo/index.d.ts +30 -0
  208. package/dist/src/repo/index.js +29 -0
  209. package/dist/src/repo/index.js.map +1 -0
  210. package/dist/src/repo/local-reader.d.ts +10 -0
  211. package/dist/src/repo/local-reader.js +299 -0
  212. package/dist/src/repo/local-reader.js.map +1 -0
  213. package/dist/src/repo/openapi-parser.d.ts +35 -0
  214. package/dist/src/repo/openapi-parser.js +93 -0
  215. package/dist/src/repo/openapi-parser.js.map +1 -0
  216. package/dist/src/repo/parsers.d.ts +91 -0
  217. package/dist/src/repo/parsers.js +454 -0
  218. package/dist/src/repo/parsers.js.map +1 -0
  219. package/dist/src/repo/platform-reader.d.ts +10 -0
  220. package/dist/src/repo/platform-reader.js +206 -0
  221. package/dist/src/repo/platform-reader.js.map +1 -0
  222. package/dist/src/repo/repo-loader.d.ts +14 -0
  223. package/dist/src/repo/repo-loader.js +25 -0
  224. package/dist/src/repo/repo-loader.js.map +1 -0
  225. package/dist/src/repo/repo-types.d.ts +159 -0
  226. package/dist/src/repo/repo-types.js +17 -0
  227. package/dist/src/repo/repo-types.js.map +1 -0
  228. package/dist/src/repo/spec-syncer.d.ts +30 -0
  229. package/dist/src/repo/spec-syncer.js +85 -0
  230. package/dist/src/repo/spec-syncer.js.map +1 -0
  231. package/dist/src/repo/store-loader.d.ts +19 -0
  232. package/dist/src/repo/store-loader.js +94 -0
  233. package/dist/src/repo/store-loader.js.map +1 -0
  234. package/dist/src/repo/store-schemas.d.ts +313 -0
  235. package/dist/src/repo/store-schemas.js +103 -0
  236. package/dist/src/repo/store-schemas.js.map +1 -0
  237. package/dist/src/repo/store-tool-schema.d.ts +29 -0
  238. package/dist/src/repo/store-tool-schema.js +103 -0
  239. package/dist/src/repo/store-tool-schema.js.map +1 -0
  240. package/dist/src/repo/store-types.d.ts +91 -0
  241. package/dist/src/repo/store-types.js +7 -0
  242. package/dist/src/repo/store-types.js.map +1 -0
  243. package/dist/src/repo/surface-parser.d.ts +17 -0
  244. package/dist/src/repo/surface-parser.js +75 -0
  245. package/dist/src/repo/surface-parser.js.map +1 -0
  246. package/dist/src/repo/tool-loader.d.ts +33 -0
  247. package/dist/src/repo/tool-loader.js +240 -0
  248. package/dist/src/repo/tool-loader.js.map +1 -0
  249. package/dist/src/repo/tool-types.d.ts +205 -0
  250. package/dist/src/repo/tool-types.js +61 -0
  251. package/dist/src/repo/tool-types.js.map +1 -0
  252. package/dist/src/roles/index.d.ts +7 -0
  253. package/dist/src/roles/index.js +8 -0
  254. package/dist/src/roles/index.js.map +1 -0
  255. package/dist/src/roles/role-filter.d.ts +33 -0
  256. package/dist/src/roles/role-filter.js +55 -0
  257. package/dist/src/roles/role-filter.js.map +1 -0
  258. package/dist/src/roles/role-types.d.ts +76 -0
  259. package/dist/src/roles/role-types.js +38 -0
  260. package/dist/src/roles/role-types.js.map +1 -0
  261. package/dist/src/runtime/connection-bridge.d.ts +19 -0
  262. package/dist/src/runtime/connection-bridge.js +103 -0
  263. package/dist/src/runtime/connection-bridge.js.map +1 -0
  264. package/dist/src/runtime/context-compiler.d.ts +35 -0
  265. package/dist/src/runtime/context-compiler.js +183 -0
  266. package/dist/src/runtime/context-compiler.js.map +1 -0
  267. package/dist/src/runtime/default-prompt.d.ts +28 -0
  268. package/dist/src/runtime/default-prompt.js +71 -0
  269. package/dist/src/runtime/default-prompt.js.map +1 -0
  270. package/dist/src/runtime/explore-tool.d.ts +96 -0
  271. package/dist/src/runtime/explore-tool.js +111 -0
  272. package/dist/src/runtime/explore-tool.js.map +1 -0
  273. package/dist/src/runtime/index.d.ts +26 -0
  274. package/dist/src/runtime/index.js +19 -0
  275. package/dist/src/runtime/index.js.map +1 -0
  276. package/dist/src/runtime/output-pipeline.d.ts +62 -0
  277. package/dist/src/runtime/output-pipeline.js +69 -0
  278. package/dist/src/runtime/output-pipeline.js.map +1 -0
  279. package/dist/src/runtime/plan-mode.d.ts +39 -0
  280. package/dist/src/runtime/plan-mode.js +81 -0
  281. package/dist/src/runtime/plan-mode.js.map +1 -0
  282. package/dist/src/runtime/preference-client.d.ts +39 -0
  283. package/dist/src/runtime/preference-client.js +70 -0
  284. package/dist/src/runtime/preference-client.js.map +1 -0
  285. package/dist/src/runtime/preference-detector.d.ts +22 -0
  286. package/dist/src/runtime/preference-detector.js +95 -0
  287. package/dist/src/runtime/preference-detector.js.map +1 -0
  288. package/dist/src/runtime/request-integration.d.ts +18 -0
  289. package/dist/src/runtime/request-integration.js +36 -0
  290. package/dist/src/runtime/request-integration.js.map +1 -0
  291. package/dist/src/runtime/runtime-types.d.ts +48 -0
  292. package/dist/src/runtime/runtime-types.js +7 -0
  293. package/dist/src/runtime/runtime-types.js.map +1 -0
  294. package/dist/src/runtime/session-setup.d.ts +53 -0
  295. package/dist/src/runtime/session-setup.js +90 -0
  296. package/dist/src/runtime/session-setup.js.map +1 -0
  297. package/dist/src/runtime/telemetry-client.d.ts +39 -0
  298. package/dist/src/runtime/telemetry-client.js +87 -0
  299. package/dist/src/runtime/telemetry-client.js.map +1 -0
  300. package/dist/src/runtime/telemetry-hooks.d.ts +47 -0
  301. package/dist/src/runtime/telemetry-hooks.js +115 -0
  302. package/dist/src/runtime/telemetry-hooks.js.map +1 -0
  303. package/dist/src/runtime/token-allocator.d.ts +34 -0
  304. package/dist/src/runtime/token-allocator.js +86 -0
  305. package/dist/src/runtime/token-allocator.js.map +1 -0
  306. package/dist/src/runtime/user-context.d.ts +49 -0
  307. package/dist/src/runtime/user-context.js +135 -0
  308. package/dist/src/runtime/user-context.js.map +1 -0
  309. package/dist/src/sdk.d.ts +57 -0
  310. package/dist/src/sdk.js +377 -0
  311. package/dist/src/sdk.js.map +1 -0
  312. package/dist/src/security/action-gate.d.ts +23 -0
  313. package/dist/src/security/action-gate.js +78 -0
  314. package/dist/src/security/action-gate.js.map +1 -0
  315. package/dist/src/security/field-scrubber.d.ts +27 -0
  316. package/dist/src/security/field-scrubber.js +152 -0
  317. package/dist/src/security/field-scrubber.js.map +1 -0
  318. package/dist/src/security/index.d.ts +14 -0
  319. package/dist/src/security/index.js +15 -0
  320. package/dist/src/security/index.js.map +1 -0
  321. package/dist/src/security/leak-detector.d.ts +23 -0
  322. package/dist/src/security/leak-detector.js +51 -0
  323. package/dist/src/security/leak-detector.js.map +1 -0
  324. package/dist/src/security/output-guard.d.ts +33 -0
  325. package/dist/src/security/output-guard.js +118 -0
  326. package/dist/src/security/output-guard.js.map +1 -0
  327. package/dist/src/security/pattern-scanner.d.ts +19 -0
  328. package/dist/src/security/pattern-scanner.js +66 -0
  329. package/dist/src/security/pattern-scanner.js.map +1 -0
  330. package/dist/src/security/scope-checker.d.ts +27 -0
  331. package/dist/src/security/scope-checker.js +52 -0
  332. package/dist/src/security/scope-checker.js.map +1 -0
  333. package/dist/src/security/scrub-tracker.d.ts +21 -0
  334. package/dist/src/security/scrub-tracker.js +39 -0
  335. package/dist/src/security/scrub-tracker.js.map +1 -0
  336. package/dist/src/security/security-types.d.ts +69 -0
  337. package/dist/src/security/security-types.js +17 -0
  338. package/dist/src/security/security-types.js.map +1 -0
  339. package/dist/src/security/threshold-evaluator.d.ts +13 -0
  340. package/dist/src/security/threshold-evaluator.js +44 -0
  341. package/dist/src/security/threshold-evaluator.js.map +1 -0
  342. package/dist/src/snapshot/index.d.ts +8 -0
  343. package/dist/src/snapshot/index.js +9 -0
  344. package/dist/src/snapshot/index.js.map +1 -0
  345. package/dist/src/snapshot/snapshot-builder.d.ts +37 -0
  346. package/dist/src/snapshot/snapshot-builder.js +152 -0
  347. package/dist/src/snapshot/snapshot-builder.js.map +1 -0
  348. package/dist/src/snapshot/snapshot-loader.d.ts +29 -0
  349. package/dist/src/snapshot/snapshot-loader.js +188 -0
  350. package/dist/src/snapshot/snapshot-loader.js.map +1 -0
  351. package/dist/src/snapshot/snapshot-types.d.ts +1940 -0
  352. package/dist/src/snapshot/snapshot-types.js +145 -0
  353. package/dist/src/snapshot/snapshot-types.js.map +1 -0
  354. package/dist/src/stores/index.d.ts +6 -0
  355. package/dist/src/stores/index.js +7 -0
  356. package/dist/src/stores/index.js.map +1 -0
  357. package/dist/src/stores/store-backend.d.ts +135 -0
  358. package/dist/src/stores/store-backend.js +7 -0
  359. package/dist/src/stores/store-backend.js.map +1 -0
  360. package/dist/src/templates/connections.d.ts +14 -0
  361. package/dist/src/templates/connections.js +7 -0
  362. package/dist/src/templates/connections.js.map +1 -0
  363. package/dist/src/templates/index.d.ts +7 -0
  364. package/dist/src/templates/index.js +8 -0
  365. package/dist/src/templates/index.js.map +1 -0
  366. package/dist/src/templates/template-resolver.d.ts +45 -0
  367. package/dist/src/templates/template-resolver.js +121 -0
  368. package/dist/src/templates/template-resolver.js.map +1 -0
  369. package/dist/src/tool-context.d.ts +33 -0
  370. package/dist/src/tool-context.js +7 -0
  371. package/dist/src/tool-context.js.map +1 -0
  372. package/dist/src/tool-registration.d.ts +14 -0
  373. package/dist/src/tool-registration.js +51 -0
  374. package/dist/src/tool-registration.js.map +1 -0
  375. package/dist/src/tools/amodal-tool-errors.d.ts +24 -0
  376. package/dist/src/tools/amodal-tool-errors.js +28 -0
  377. package/dist/src/tools/amodal-tool-errors.js.map +1 -0
  378. package/dist/src/tools/amodal-tool-names.d.ts +14 -0
  379. package/dist/src/tools/amodal-tool-names.js +15 -0
  380. package/dist/src/tools/amodal-tool-names.js.map +1 -0
  381. package/dist/src/tools/chain-tool-registry.d.ts +20 -0
  382. package/dist/src/tools/chain-tool-registry.js +49 -0
  383. package/dist/src/tools/chain-tool-registry.js.map +1 -0
  384. package/dist/src/tools/chain-tool-types.d.ts +190 -0
  385. package/dist/src/tools/chain-tool-types.js +50 -0
  386. package/dist/src/tools/chain-tool-types.js.map +1 -0
  387. package/dist/src/tools/chain-tool.d.ts +34 -0
  388. package/dist/src/tools/chain-tool.js +294 -0
  389. package/dist/src/tools/chain-tool.js.map +1 -0
  390. package/dist/src/tools/custom-tool-registrar.d.ts +8 -0
  391. package/dist/src/tools/custom-tool-registrar.js +10 -0
  392. package/dist/src/tools/custom-tool-registrar.js.map +1 -0
  393. package/dist/src/tools/definitions/amodal-tools.d.ts +9 -0
  394. package/dist/src/tools/definitions/amodal-tools.js +192 -0
  395. package/dist/src/tools/definitions/amodal-tools.js.map +1 -0
  396. package/dist/src/tools/function-tool-registry.d.ts +22 -0
  397. package/dist/src/tools/function-tool-registry.js +45 -0
  398. package/dist/src/tools/function-tool-registry.js.map +1 -0
  399. package/dist/src/tools/function-tool-types.d.ts +76 -0
  400. package/dist/src/tools/function-tool-types.js +27 -0
  401. package/dist/src/tools/function-tool-types.js.map +1 -0
  402. package/dist/src/tools/function-tool.d.ts +34 -0
  403. package/dist/src/tools/function-tool.js +97 -0
  404. package/dist/src/tools/function-tool.js.map +1 -0
  405. package/dist/src/tools/http-tool-registry.d.ts +20 -0
  406. package/dist/src/tools/http-tool-registry.js +34 -0
  407. package/dist/src/tools/http-tool-registry.js.map +1 -0
  408. package/dist/src/tools/http-tool-types.d.ts +92 -0
  409. package/dist/src/tools/http-tool-types.js +44 -0
  410. package/dist/src/tools/http-tool-types.js.map +1 -0
  411. package/dist/src/tools/http-tool.d.ts +32 -0
  412. package/dist/src/tools/http-tool.js +176 -0
  413. package/dist/src/tools/http-tool.js.map +1 -0
  414. package/dist/src/tools/merge-template.d.ts +33 -0
  415. package/dist/src/tools/merge-template.js +65 -0
  416. package/dist/src/tools/merge-template.js.map +1 -0
  417. package/dist/src/tools/request-tool-types.d.ts +46 -0
  418. package/dist/src/tools/request-tool-types.js +20 -0
  419. package/dist/src/tools/request-tool-types.js.map +1 -0
  420. package/dist/src/tools/request-tool.d.ts +29 -0
  421. package/dist/src/tools/request-tool.js +268 -0
  422. package/dist/src/tools/request-tool.js.map +1 -0
  423. package/dist/src/tools/store-query-tool.d.ts +29 -0
  424. package/dist/src/tools/store-query-tool.js +82 -0
  425. package/dist/src/tools/store-query-tool.js.map +1 -0
  426. package/dist/src/tools/store-write-tool.d.ts +26 -0
  427. package/dist/src/tools/store-write-tool.js +84 -0
  428. package/dist/src/tools/store-write-tool.js.map +1 -0
  429. package/dist/src/tools/tool-definition-types.d.ts +21 -0
  430. package/dist/src/tools/tool-definition-types.js +7 -0
  431. package/dist/src/tools/tool-definition-types.js.map +1 -0
  432. package/dist/src/tools/tool-utils.d.ts +29 -0
  433. package/dist/src/tools/tool-utils.js +66 -0
  434. package/dist/src/tools/tool-utils.js.map +1 -0
  435. package/dist/src/versions/bundle-loader.d.ts +37 -0
  436. package/dist/src/versions/bundle-loader.js +99 -0
  437. package/dist/src/versions/bundle-loader.js.map +1 -0
  438. package/dist/src/versions/dependency-manager.d.ts +54 -0
  439. package/dist/src/versions/dependency-manager.js +132 -0
  440. package/dist/src/versions/dependency-manager.js.map +1 -0
  441. package/dist/src/versions/handler-loader.d.ts +27 -0
  442. package/dist/src/versions/handler-loader.js +62 -0
  443. package/dist/src/versions/handler-loader.js.map +1 -0
  444. package/dist/src/versions/index.d.ts +10 -0
  445. package/dist/src/versions/index.js +11 -0
  446. package/dist/src/versions/index.js.map +1 -0
  447. package/dist/src/versions/version-bundle-types.d.ts +1278 -0
  448. package/dist/src/versions/version-bundle-types.js +207 -0
  449. package/dist/src/versions/version-bundle-types.js.map +1 -0
  450. package/dist/src/versions/version-manager.d.ts +89 -0
  451. package/dist/src/versions/version-manager.js +124 -0
  452. package/dist/src/versions/version-manager.js.map +1 -0
  453. package/dist/src/widgets/index.d.ts +8 -0
  454. package/dist/src/widgets/index.js +8 -0
  455. package/dist/src/widgets/index.js.map +1 -0
  456. package/dist/src/widgets/present-tool.d.ts +21 -0
  457. package/dist/src/widgets/present-tool.js +107 -0
  458. package/dist/src/widgets/present-tool.js.map +1 -0
  459. package/dist/src/widgets/widget-types.d.ts +78 -0
  460. package/dist/src/widgets/widget-types.js +28 -0
  461. package/dist/src/widgets/widget-types.js.map +1 -0
  462. package/dist/tsconfig.tsbuildinfo +1 -0
  463. package/package.json +50 -0
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { z } from 'zod';
7
+ import type { ConnectionsMap } from '../templates/connections.js';
8
+ /**
9
+ * Context passed to function tool handlers.
10
+ */
11
+ export interface FunctionToolContext {
12
+ /** The global fetch function for making HTTP requests */
13
+ fetch: typeof globalThis.fetch;
14
+ /** Connection configs (API keys, base URLs) */
15
+ connections: ConnectionsMap;
16
+ }
17
+ /**
18
+ * A function tool handler — custom code that executes when the tool is called.
19
+ */
20
+ export type FunctionToolHandler = (params: Record<string, unknown>, context: FunctionToolContext) => Promise<unknown>;
21
+ /**
22
+ * Map of handler names to handler functions.
23
+ * Populated from version bundle in Step 8; passed in directly for now.
24
+ */
25
+ export type FunctionHandlerMap = Map<string, FunctionToolHandler>;
26
+ /**
27
+ * Schema for a function tool configuration.
28
+ */
29
+ export declare const FunctionToolConfigSchema: z.ZodObject<{
30
+ /** Internal tool name */
31
+ name: z.ZodString;
32
+ /** User-facing display name */
33
+ displayName: z.ZodString;
34
+ /** Description shown to the LLM */
35
+ description: z.ZodString;
36
+ /** Handler name — must match a key in the FunctionHandlerMap */
37
+ handler: z.ZodString;
38
+ /** JSON Schema describing parameters the LLM should provide */
39
+ parameters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
40
+ /** Response shaping for the handler result */
41
+ responseShaping: z.ZodOptional<z.ZodObject<{
42
+ path: z.ZodOptional<z.ZodString>;
43
+ maxLength: z.ZodDefault<z.ZodNumber>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ maxLength: number;
46
+ path?: string | undefined;
47
+ }, {
48
+ path?: string | undefined;
49
+ maxLength?: number | undefined;
50
+ }>>;
51
+ /** Execution timeout in milliseconds */
52
+ timeout: z.ZodDefault<z.ZodNumber>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ name: string;
55
+ displayName: string;
56
+ description: string;
57
+ parameters: Record<string, unknown>;
58
+ timeout: number;
59
+ handler: string;
60
+ responseShaping?: {
61
+ maxLength: number;
62
+ path?: string | undefined;
63
+ } | undefined;
64
+ }, {
65
+ name: string;
66
+ displayName: string;
67
+ description: string;
68
+ parameters: Record<string, unknown>;
69
+ handler: string;
70
+ responseShaping?: {
71
+ path?: string | undefined;
72
+ maxLength?: number | undefined;
73
+ } | undefined;
74
+ timeout?: number | undefined;
75
+ }>;
76
+ export type FunctionToolConfig = z.infer<typeof FunctionToolConfigSchema>;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { z } from 'zod';
7
+ import { ResponseShapingSchema } from './http-tool-types.js';
8
+ /**
9
+ * Schema for a function tool configuration.
10
+ */
11
+ export const FunctionToolConfigSchema = z.object({
12
+ /** Internal tool name */
13
+ name: z.string().min(1),
14
+ /** User-facing display name */
15
+ displayName: z.string().min(1),
16
+ /** Description shown to the LLM */
17
+ description: z.string().min(1),
18
+ /** Handler name — must match a key in the FunctionHandlerMap */
19
+ handler: z.string().min(1),
20
+ /** JSON Schema describing parameters the LLM should provide */
21
+ parameters: z.record(z.unknown()),
22
+ /** Response shaping for the handler result */
23
+ responseShaping: ResponseShapingSchema.optional(),
24
+ /** Execution timeout in milliseconds */
25
+ timeout: z.number().int().positive().default(30000),
26
+ });
27
+ //# sourceMappingURL=function-tool-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-tool-types.js","sourceRoot":"","sources":["../../../src/tools/function-tool-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AA2B7D;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,yBAAyB;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,+BAA+B;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,mCAAmC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,gEAAgE;IAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,+DAA+D;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACjC,8CAA8C;IAC9C,eAAe,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACjD,wCAAwC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACpD,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { BaseDeclarativeTool, BaseToolInvocation, type ToolResult, type ToolInvocation } from '@google/gemini-cli-core';
7
+ import type { FunctionToolConfig, FunctionToolHandler } from './function-tool-types.js';
8
+ import type { ConnectionsMap } from '../templates/connections.js';
9
+ import type { MessageBus } from '@google/gemini-cli-core';
10
+ type FunctionToolParams = Record<string, unknown>;
11
+ /**
12
+ * Invocation for a function tool call — executes a custom handler.
13
+ */
14
+ export declare class FunctionToolInvocation extends BaseToolInvocation<FunctionToolParams, ToolResult> {
15
+ private readonly config;
16
+ private readonly handler;
17
+ private readonly connections;
18
+ constructor(params: FunctionToolParams, messageBus: MessageBus, toolName: string, toolDisplayName: string, config: FunctionToolConfig, handler: FunctionToolHandler, connections: ConnectionsMap);
19
+ getDescription(): string;
20
+ execute(signal: AbortSignal): Promise<ToolResult>;
21
+ private errorResult;
22
+ }
23
+ /**
24
+ * A function tool — executes a custom handler from the version bundle.
25
+ * Uses Kind.Execute which triggers confirmation via MUTATOR_KINDS.
26
+ */
27
+ export declare class FunctionTool extends BaseDeclarativeTool<FunctionToolParams, ToolResult> {
28
+ private readonly functionConfig;
29
+ private readonly handler;
30
+ private readonly connections;
31
+ constructor(functionConfig: FunctionToolConfig, handler: FunctionToolHandler, connections: ConnectionsMap, messageBus: MessageBus);
32
+ protected createInvocation(params: FunctionToolParams, messageBus: MessageBus, toolName?: string, toolDisplayName?: string): ToolInvocation<FunctionToolParams, ToolResult>;
33
+ }
34
+ export {};
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { BaseDeclarativeTool, BaseToolInvocation, Kind, } from '@google/gemini-cli-core';
7
+ import { ToolErrorType } from '@google/gemini-cli-core';
8
+ import { shapeResponse } from './tool-utils.js';
9
+ /**
10
+ * Invocation for a function tool call — executes a custom handler.
11
+ */
12
+ export class FunctionToolInvocation extends BaseToolInvocation {
13
+ config;
14
+ handler;
15
+ connections;
16
+ constructor(params, messageBus, toolName, toolDisplayName, config, handler, connections) {
17
+ super(params, messageBus, toolName, toolDisplayName);
18
+ this.config = config;
19
+ this.handler = handler;
20
+ this.connections = connections;
21
+ }
22
+ getDescription() {
23
+ return `Function: ${this.config.handler}`;
24
+ }
25
+ async execute(signal) {
26
+ const context = {
27
+ fetch: globalThis.fetch.bind(globalThis),
28
+ connections: this.connections,
29
+ };
30
+ // Execute with timeout
31
+ const controller = new AbortController();
32
+ const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
33
+ // Forward external abort
34
+ if (signal.aborted) {
35
+ clearTimeout(timeoutId);
36
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, 'Function aborted before execution');
37
+ }
38
+ signal.addEventListener('abort', () => controller.abort(), { once: true });
39
+ try {
40
+ const resultPromise = this.handler(this.params, context);
41
+ // Race against timeout
42
+ const result = await Promise.race([
43
+ resultPromise,
44
+ new Promise((_resolve, reject) => {
45
+ controller.signal.addEventListener('abort', () => {
46
+ reject(new Error(`Function handler timed out after ${this.config.timeout}ms`));
47
+ }, { once: true });
48
+ }),
49
+ ]);
50
+ // Shape response
51
+ const shaped = shapeResponse(result, this.config.responseShaping);
52
+ return {
53
+ llmContent: shaped,
54
+ returnDisplay: shaped,
55
+ };
56
+ }
57
+ catch (error) {
58
+ const message = error instanceof Error ? error.message : String(error);
59
+ if (message.includes('timed out')) {
60
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, message);
61
+ }
62
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, `Function handler "${this.config.handler}" failed: ${message}`);
63
+ }
64
+ finally {
65
+ clearTimeout(timeoutId);
66
+ }
67
+ }
68
+ errorResult(type, message) {
69
+ return {
70
+ llmContent: `Error: ${message}`,
71
+ returnDisplay: message,
72
+ error: { message, type },
73
+ };
74
+ }
75
+ }
76
+ /**
77
+ * A function tool — executes a custom handler from the version bundle.
78
+ * Uses Kind.Execute which triggers confirmation via MUTATOR_KINDS.
79
+ */
80
+ export class FunctionTool extends BaseDeclarativeTool {
81
+ functionConfig;
82
+ handler;
83
+ connections;
84
+ constructor(functionConfig, handler, connections, messageBus) {
85
+ super(functionConfig.name, functionConfig.displayName, functionConfig.description, Kind.Execute, functionConfig.parameters, messageBus, false, // isOutputMarkdown
86
+ false, // canUpdateOutput
87
+ undefined, // extensionName
88
+ undefined);
89
+ this.functionConfig = functionConfig;
90
+ this.handler = handler;
91
+ this.connections = connections;
92
+ }
93
+ createInvocation(params, messageBus, toolName, toolDisplayName) {
94
+ return new FunctionToolInvocation(params, messageBus, toolName ?? this.name, toolDisplayName ?? this.displayName, this.functionConfig, this.handler, this.connections);
95
+ }
96
+ }
97
+ //# sourceMappingURL=function-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-tool.js","sourceRoot":"","sources":["../../../src/tools/function-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { ToolRegistry } from '@google/gemini-cli-core';
7
+ import type { ConnectionsMap } from '../templates/connections.js';
8
+ import type { MessageBus } from '@google/gemini-cli-core';
9
+ export interface RegisterHttpToolsResult {
10
+ registered: string[];
11
+ errors: Array<{
12
+ index: number;
13
+ error: string;
14
+ }>;
15
+ }
16
+ /**
17
+ * Validate and register HTTP tool configs into the tool registry.
18
+ * Invalid configs produce errors but don't block other registrations.
19
+ */
20
+ export declare function registerHttpTools(registry: ToolRegistry, configs: unknown[], connections: ConnectionsMap, messageBus: MessageBus): RegisterHttpToolsResult;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { HttpToolConfigSchema } from './http-tool-types.js';
7
+ import { HttpTool } from './http-tool.js';
8
+ import { debugLogger } from '@google/gemini-cli-core';
9
+ /**
10
+ * Validate and register HTTP tool configs into the tool registry.
11
+ * Invalid configs produce errors but don't block other registrations.
12
+ */
13
+ export function registerHttpTools(registry, configs, connections, messageBus) {
14
+ const registered = [];
15
+ const errors = [];
16
+ for (let i = 0; i < configs.length; i++) {
17
+ const raw = configs[i];
18
+ const parsed = HttpToolConfigSchema.safeParse(raw);
19
+ if (!parsed.success) {
20
+ const errorMsg = parsed.error.issues
21
+ .map((issue) => `${issue.path.join('.')}: ${issue.message}`)
22
+ .join('; ');
23
+ errors.push({ index: i, error: errorMsg });
24
+ debugLogger.log(`HTTP tool config #${i} invalid: ${errorMsg}`);
25
+ continue;
26
+ }
27
+ const config = parsed.data;
28
+ const tool = new HttpTool(config, connections, messageBus);
29
+ registry.registerTool(tool);
30
+ registered.push(config.name);
31
+ }
32
+ return { registered, errors };
33
+ }
34
+ //# sourceMappingURL=http-tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-tool-registry.js","sourceRoot":"","sources":["../../../src/tools/http-tool-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,OAAkB,EAClB,WAA2B,EAC3B,UAAsB;IAEtB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAA4C,EAAE,CAAC;IAE3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;iBACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;iBAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3C,WAAW,CAAC,GAAG,CAAC,qBAAqB,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAmB,MAAM,CAAC,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAC3D,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Schema for response shaping configuration.
9
+ * Allows extracting a specific path from the response and truncating.
10
+ */
11
+ export declare const ResponseShapingSchema: z.ZodObject<{
12
+ /** Dot-separated path to extract from JSON response (e.g., "data.items") */
13
+ path: z.ZodOptional<z.ZodString>;
14
+ /** Maximum length of the response string returned to the LLM */
15
+ maxLength: z.ZodDefault<z.ZodNumber>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ maxLength: number;
18
+ path?: string | undefined;
19
+ }, {
20
+ path?: string | undefined;
21
+ maxLength?: number | undefined;
22
+ }>;
23
+ /**
24
+ * Schema for a single HTTP tool configuration.
25
+ */
26
+ export declare const HttpToolConfigSchema: z.ZodObject<{
27
+ /** Internal tool name (used in API calls) */
28
+ name: z.ZodString;
29
+ /** User-facing display name */
30
+ displayName: z.ZodString;
31
+ /** Description of what the tool does (shown to the LLM) */
32
+ description: z.ZodString;
33
+ /** HTTP method */
34
+ method: z.ZodEnum<["GET", "POST", "PUT", "PATCH", "DELETE"]>;
35
+ /** URL template with {{connections.x}} and {{params.x}} placeholders */
36
+ urlTemplate: z.ZodString;
37
+ /** Header templates (values may contain {{}} expressions) */
38
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
39
+ /** Body template for POST/PUT/PATCH — string or object (values resolved) */
40
+ bodyTemplate: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>;
41
+ /** Query parameter templates (values may contain {{}} expressions) */
42
+ queryParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
43
+ /** Response shaping configuration */
44
+ responseShaping: z.ZodOptional<z.ZodObject<{
45
+ /** Dot-separated path to extract from JSON response (e.g., "data.items") */
46
+ path: z.ZodOptional<z.ZodString>;
47
+ /** Maximum length of the response string returned to the LLM */
48
+ maxLength: z.ZodDefault<z.ZodNumber>;
49
+ }, "strip", z.ZodTypeAny, {
50
+ maxLength: number;
51
+ path?: string | undefined;
52
+ }, {
53
+ path?: string | undefined;
54
+ maxLength?: number | undefined;
55
+ }>>;
56
+ /** JSON Schema describing parameters the LLM should provide */
57
+ parameters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
58
+ /** Request timeout in milliseconds */
59
+ timeout: z.ZodDefault<z.ZodNumber>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ method: "POST" | "GET" | "PUT" | "PATCH" | "DELETE";
62
+ name: string;
63
+ displayName: string;
64
+ description: string;
65
+ urlTemplate: string;
66
+ parameters: Record<string, unknown>;
67
+ timeout: number;
68
+ headers?: Record<string, string> | undefined;
69
+ bodyTemplate?: string | Record<string, unknown> | undefined;
70
+ queryParams?: Record<string, string> | undefined;
71
+ responseShaping?: {
72
+ maxLength: number;
73
+ path?: string | undefined;
74
+ } | undefined;
75
+ }, {
76
+ method: "POST" | "GET" | "PUT" | "PATCH" | "DELETE";
77
+ name: string;
78
+ displayName: string;
79
+ description: string;
80
+ urlTemplate: string;
81
+ parameters: Record<string, unknown>;
82
+ headers?: Record<string, string> | undefined;
83
+ bodyTemplate?: string | Record<string, unknown> | undefined;
84
+ queryParams?: Record<string, string> | undefined;
85
+ responseShaping?: {
86
+ path?: string | undefined;
87
+ maxLength?: number | undefined;
88
+ } | undefined;
89
+ timeout?: number | undefined;
90
+ }>;
91
+ export type HttpToolConfig = z.infer<typeof HttpToolConfigSchema>;
92
+ export type ResponseShaping = z.infer<typeof ResponseShapingSchema>;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Schema for response shaping configuration.
9
+ * Allows extracting a specific path from the response and truncating.
10
+ */
11
+ export const ResponseShapingSchema = z.object({
12
+ /** Dot-separated path to extract from JSON response (e.g., "data.items") */
13
+ path: z.string().optional(),
14
+ /** Maximum length of the response string returned to the LLM */
15
+ maxLength: z.number().int().positive().default(50000),
16
+ });
17
+ /**
18
+ * Schema for a single HTTP tool configuration.
19
+ */
20
+ export const HttpToolConfigSchema = z.object({
21
+ /** Internal tool name (used in API calls) */
22
+ name: z.string().min(1),
23
+ /** User-facing display name */
24
+ displayName: z.string().min(1),
25
+ /** Description of what the tool does (shown to the LLM) */
26
+ description: z.string().min(1),
27
+ /** HTTP method */
28
+ method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']),
29
+ /** URL template with {{connections.x}} and {{params.x}} placeholders */
30
+ urlTemplate: z.string().min(1),
31
+ /** Header templates (values may contain {{}} expressions) */
32
+ headers: z.record(z.string()).optional(),
33
+ /** Body template for POST/PUT/PATCH — string or object (values resolved) */
34
+ bodyTemplate: z.union([z.string(), z.record(z.unknown())]).optional(),
35
+ /** Query parameter templates (values may contain {{}} expressions) */
36
+ queryParams: z.record(z.string()).optional(),
37
+ /** Response shaping configuration */
38
+ responseShaping: ResponseShapingSchema.optional(),
39
+ /** JSON Schema describing parameters the LLM should provide */
40
+ parameters: z.record(z.unknown()),
41
+ /** Request timeout in milliseconds */
42
+ timeout: z.number().int().positive().default(30000),
43
+ });
44
+ //# sourceMappingURL=http-tool-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-tool-types.js","sourceRoot":"","sources":["../../../src/tools/http-tool-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,4EAA4E;IAC5E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,gEAAgE;IAChE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACtD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,6CAA6C;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,+BAA+B;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,2DAA2D;IAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,kBAAkB;IAClB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzD,wEAAwE;IACxE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,6DAA6D;IAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,4EAA4E;IAC5E,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrE,sEAAsE;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,qCAAqC;IACrC,eAAe,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACjD,+DAA+D;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACjC,sCAAsC;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACpD,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { BaseDeclarativeTool, BaseToolInvocation, type ToolResult, type ToolInvocation } from '@google/gemini-cli-core';
7
+ import type { HttpToolConfig } from './http-tool-types.js';
8
+ import type { ConnectionsMap } from '../templates/connections.js';
9
+ import type { MessageBus } from '@google/gemini-cli-core';
10
+ type HttpToolParams = Record<string, unknown>;
11
+ /**
12
+ * Invocation for an HTTP tool call.
13
+ */
14
+ export declare class HttpToolInvocation extends BaseToolInvocation<HttpToolParams, ToolResult> {
15
+ private readonly config;
16
+ private readonly connections;
17
+ constructor(params: HttpToolParams, messageBus: MessageBus, toolName: string, toolDisplayName: string, config: HttpToolConfig, connections: ConnectionsMap);
18
+ getDescription(): string;
19
+ execute(signal: AbortSignal): Promise<ToolResult>;
20
+ private templateError;
21
+ private errorResult;
22
+ }
23
+ /**
24
+ * A declarative HTTP tool — configured via JSON, no custom code.
25
+ */
26
+ export declare class HttpTool extends BaseDeclarativeTool<HttpToolParams, ToolResult> {
27
+ private readonly httpConfig;
28
+ private readonly connections;
29
+ constructor(httpConfig: HttpToolConfig, connections: ConnectionsMap, messageBus: MessageBus);
30
+ protected createInvocation(params: HttpToolParams, messageBus: MessageBus, toolName?: string, toolDisplayName?: string): ToolInvocation<HttpToolParams, ToolResult>;
31
+ }
32
+ export {};
@@ -0,0 +1,176 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { BaseDeclarativeTool, BaseToolInvocation, Kind, } from '@google/gemini-cli-core';
7
+ import { ToolErrorType } from '@google/gemini-cli-core';
8
+ import { resolveTemplate, resolveTemplateObject, } from '../templates/template-resolver.js';
9
+ import { isPrivateIp } from '@google/gemini-cli-core';
10
+ import { httpFetch, shapeResponse, formatTemplateErrors } from './tool-utils.js';
11
+ /**
12
+ * Invocation for an HTTP tool call.
13
+ */
14
+ export class HttpToolInvocation extends BaseToolInvocation {
15
+ config;
16
+ connections;
17
+ constructor(params, messageBus, toolName, toolDisplayName, config, connections) {
18
+ super(params, messageBus, toolName, toolDisplayName);
19
+ this.config = config;
20
+ this.connections = connections;
21
+ }
22
+ getDescription() {
23
+ return `${this.config.method} ${this.config.urlTemplate}`;
24
+ }
25
+ async execute(signal) {
26
+ const context = {
27
+ connections: this.connections,
28
+ params: this.params,
29
+ };
30
+ // 1. Resolve URL template
31
+ const urlResult = resolveTemplate(this.config.urlTemplate, context);
32
+ if (urlResult.errors.length > 0) {
33
+ return this.templateError('URL', urlResult.errors);
34
+ }
35
+ // 2. Resolve query params and append to URL
36
+ let fullUrl = urlResult.value;
37
+ if (this.config.queryParams) {
38
+ const qpResult = resolveTemplateObject(this.config.queryParams, context);
39
+ if (qpResult.errors.length > 0) {
40
+ return this.templateError('query params', qpResult.errors);
41
+ }
42
+ const searchParams = new URLSearchParams();
43
+ for (const [key, val] of Object.entries(qpResult.value)) {
44
+ searchParams.append(key, String(val));
45
+ }
46
+ const sep = fullUrl.includes('?') ? '&' : '?';
47
+ fullUrl = `${fullUrl}${sep}${searchParams.toString()}`;
48
+ }
49
+ // 3. Validate URL
50
+ let parsedUrl;
51
+ try {
52
+ parsedUrl = new URL(fullUrl);
53
+ }
54
+ catch {
55
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, `Invalid URL: ${fullUrl}`);
56
+ }
57
+ if (!['http:', 'https:'].includes(parsedUrl.protocol)) {
58
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, `Unsupported protocol: ${parsedUrl.protocol}. Only http and https are allowed.`);
59
+ }
60
+ // 4. Private IP check
61
+ if (isPrivateIp(fullUrl)) {
62
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, `Request to private IP address blocked: ${parsedUrl.hostname}`);
63
+ }
64
+ // 5. Resolve headers
65
+ const baseHeaders = {
66
+ 'Content-Type': 'application/json',
67
+ };
68
+ let resolvedHeaders = baseHeaders;
69
+ if (this.config.headers) {
70
+ const headersResult = resolveTemplateObject(this.config.headers, context);
71
+ if (headersResult.errors.length > 0) {
72
+ return this.templateError('headers', headersResult.errors);
73
+ }
74
+ resolvedHeaders = { ...baseHeaders, ...headersResult.value };
75
+ }
76
+ // 6. Resolve body for POST/PUT/PATCH
77
+ let body;
78
+ const methodsWithBody = ['POST', 'PUT', 'PATCH'];
79
+ if (methodsWithBody.includes(this.config.method) && this.config.bodyTemplate !== undefined) {
80
+ if (typeof this.config.bodyTemplate === 'string') {
81
+ const bodyResult = resolveTemplate(this.config.bodyTemplate, context);
82
+ if (bodyResult.errors.length > 0) {
83
+ return this.templateError('body', bodyResult.errors);
84
+ }
85
+ body = bodyResult.value;
86
+ }
87
+ else {
88
+ const bodyResult = resolveTemplateObject(this.config.bodyTemplate, context);
89
+ if (bodyResult.errors.length > 0) {
90
+ return this.templateError('body', bodyResult.errors);
91
+ }
92
+ body = JSON.stringify(bodyResult.value);
93
+ }
94
+ }
95
+ // 7. Make the HTTP request
96
+ let response;
97
+ try {
98
+ response = await httpFetch(fullUrl, {
99
+ method: this.config.method,
100
+ headers: resolvedHeaders,
101
+ body,
102
+ timeout: this.config.timeout,
103
+ signal,
104
+ });
105
+ }
106
+ catch (error) {
107
+ const message = error instanceof Error ? error.message : String(error);
108
+ if (message.includes('abort')) {
109
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, `Request timed out after ${this.config.timeout}ms`);
110
+ }
111
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, `HTTP request failed: ${message}`);
112
+ }
113
+ // 8. Handle HTTP errors
114
+ if (!response.ok) {
115
+ let errorBody;
116
+ try {
117
+ errorBody = await response.text();
118
+ }
119
+ catch {
120
+ errorBody = '';
121
+ }
122
+ const truncatedBody = errorBody.length > 500 ? errorBody.slice(0, 500) + '...' : errorBody;
123
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, `HTTP ${response.status} ${response.statusText}: ${truncatedBody}`);
124
+ }
125
+ // 9. Parse response
126
+ let responseData;
127
+ const contentType = response.headers.get('content-type') ?? '';
128
+ if (contentType.includes('application/json')) {
129
+ try {
130
+ responseData = await response.json();
131
+ }
132
+ catch {
133
+ responseData = await response.text();
134
+ }
135
+ }
136
+ else {
137
+ responseData = await response.text();
138
+ }
139
+ // 10. Shape response
140
+ const shaped = shapeResponse(responseData, this.config.responseShaping);
141
+ return {
142
+ llmContent: shaped,
143
+ returnDisplay: shaped,
144
+ };
145
+ }
146
+ templateError(location, errors) {
147
+ const msg = `Template resolution failed in ${location}:\n${formatTemplateErrors(errors)}`;
148
+ return this.errorResult(ToolErrorType.EXECUTION_FAILED, msg);
149
+ }
150
+ errorResult(type, message) {
151
+ return {
152
+ llmContent: `Error: ${message}`,
153
+ returnDisplay: message,
154
+ error: { message, type },
155
+ };
156
+ }
157
+ }
158
+ /**
159
+ * A declarative HTTP tool — configured via JSON, no custom code.
160
+ */
161
+ export class HttpTool extends BaseDeclarativeTool {
162
+ httpConfig;
163
+ connections;
164
+ constructor(httpConfig, connections, messageBus) {
165
+ super(httpConfig.name, httpConfig.displayName, httpConfig.description, Kind.Fetch, httpConfig.parameters, messageBus, false, // isOutputMarkdown
166
+ false, // canUpdateOutput
167
+ undefined, // extensionName
168
+ undefined);
169
+ this.httpConfig = httpConfig;
170
+ this.connections = connections;
171
+ }
172
+ createInvocation(params, messageBus, toolName, toolDisplayName) {
173
+ return new HttpToolInvocation(params, messageBus, toolName ?? this.name, toolDisplayName ?? this.displayName, this.httpConfig, this.connections);
174
+ }
175
+ }
176
+ //# sourceMappingURL=http-tool.js.map