@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,66 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Build a list of index entries from KB documents.
8
+ */
9
+ export function buildKnowledgeIndex(docs) {
10
+ return docs.map((doc) => ({
11
+ id: doc.id,
12
+ title: doc.title,
13
+ category: doc.category,
14
+ tags: doc.tags,
15
+ scope_type: doc.scope_type,
16
+ }));
17
+ }
18
+ const CATEGORY_DISPLAY_NAMES = {
19
+ system_docs: 'System Documentation',
20
+ methodology: 'Methodology',
21
+ patterns: 'Patterns',
22
+ false_positives: 'False Positive Patterns',
23
+ response_procedures: 'Response Procedures',
24
+ environment: 'Environment',
25
+ baselines: 'Baselines',
26
+ team: 'Team',
27
+ incident_history: 'Incident History',
28
+ working_memory: 'Working Memory',
29
+ };
30
+ /**
31
+ * Format KB documents as a compact index table for the system prompt.
32
+ * Groups by scope (application / tenant) and shows title, category, tags, and ID.
33
+ * The agent can then use `load_knowledge` to fetch full bodies on demand.
34
+ */
35
+ export function formatKnowledgeIndex(appDocs, tenantDocs) {
36
+ const sections = [];
37
+ if (appDocs.length > 0) {
38
+ sections.push(formatScopeIndex('Application', appDocs));
39
+ }
40
+ if (tenantDocs.length > 0) {
41
+ sections.push(formatScopeIndex('Tenant', tenantDocs));
42
+ }
43
+ if (sections.length === 0) {
44
+ return ('# Knowledge Base\n\n' +
45
+ 'No knowledge base documents are available. This means no connections have been configured yet — ' +
46
+ 'the agent has no system documentation, no credentials, and no domain knowledge to work with.\n\n' +
47
+ 'When the analyst asks you to investigate, triage, or scan systems, let them know that ' +
48
+ 'no connections are configured and suggest setting up connections through the admin UI first.\n\n' +
49
+ 'You can still have a general conversation, answer questions about investigation methodology, ' +
50
+ 'or help the analyst plan their setup.');
51
+ }
52
+ return (`# Available Knowledge Base\nUse \`load_knowledge\` to load documents when you need their content.\n\n` +
53
+ sections.join('\n\n'));
54
+ }
55
+ function formatScopeIndex(scopeLabel, docs) {
56
+ const header = `## ${scopeLabel} Knowledge (${String(docs.length)} document${docs.length === 1 ? '' : 's'})`;
57
+ const tableHeader = '| Title | Category | Tags | ID |';
58
+ const tableSep = '| --- | --- | --- | --- |';
59
+ const rows = docs.map((doc) => {
60
+ const displayCategory = CATEGORY_DISPLAY_NAMES[doc.category];
61
+ const tags = doc.tags.length > 0 ? doc.tags.join(', ') : '-';
62
+ return `| ${doc.title} | ${displayCategory} | ${tags} | ${doc.id} |`;
63
+ });
64
+ return [header, tableHeader, tableSep, ...rows].join('\n');
65
+ }
66
+ //# sourceMappingURL=kb-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kb-index.js","sourceRoot":"","sources":["../../../src/knowledge/kb-index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAkB;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,GAAG,CAAC,UAAU;KAC3B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,sBAAsB,GAAqC;IAC/D,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,yBAAyB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAqB,EACrB,UAAwB;IAExB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CACL,sBAAsB;YACtB,kGAAkG;YAClG,kGAAkG;YAClG,wFAAwF;YACxF,kGAAkG;YAClG,+FAA+F;YAC/F,uCAAuC,CACxC,CAAC;IACJ,CAAC;IAED,OAAO,CACL,uGAAuG;QACvG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB,EAAE,IAAkB;IAC9D,MAAM,MAAM,GAAG,MAAM,UAAU,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC7G,MAAM,WAAW,GAAG,kCAAkC,CAAC;IACvD,MAAM,QAAQ,GAAG,2BAA2B,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7D,OAAO,KAAK,GAAG,CAAC,KAAK,MAAM,eAAe,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Knowledge base document categories.
8
+ *
9
+ * Application-level categories (shared across all tenants):
10
+ * system_docs — API documentation, endpoint references (from connections)
11
+ * methodology — How to interpret data, what metrics mean, domain expertise
12
+ * patterns — Known bad patterns, attack signatures, indicators
13
+ * false_positives — Things that look bad but aren't
14
+ * response_procedures — SOPs, regulatory requirements, escalation frameworks
15
+ *
16
+ * Tenant-level categories (specific to one deployment):
17
+ * environment — Operational layout, known inventory, restrictions
18
+ * baselines — What "normal" looks like at this deployment
19
+ * team — Who works here, shifts, roles, preferences
20
+ * incident_history — Past incidents, resolutions, recurring patterns
21
+ * working_memory — Cross-session agent learning (auto-managed)
22
+ */
23
+ export type DocumentCategory = 'system_docs' | 'methodology' | 'patterns' | 'false_positives' | 'response_procedures' | 'environment' | 'baselines' | 'team' | 'incident_history' | 'working_memory';
24
+ /**
25
+ * Document scope: application-level (shared across all tenants) or tenant-level.
26
+ */
27
+ export type ScopeType = 'application' | 'tenant';
28
+ /**
29
+ * Declares which knowledge base documents a skill needs loaded when activated.
30
+ */
31
+ export interface SkillKnowledgeDeps {
32
+ /** Docs matching any of these tags are auto-loaded on skill activation. */
33
+ tags?: string[];
34
+ /** Restrict to a specific scope, or 'all' for both application and tenant. Default: 'all'. */
35
+ scope?: 'application' | 'tenant' | 'all';
36
+ }
37
+ /**
38
+ * A knowledge base document record.
39
+ * Mirrors the platform-api DocumentRecord shape (no cross-package import).
40
+ */
41
+ export interface KBDocument {
42
+ id: string;
43
+ scope_type: ScopeType;
44
+ scope_id: string;
45
+ title: string;
46
+ category: DocumentCategory;
47
+ body: string;
48
+ tags: string[];
49
+ status: string;
50
+ source?: string;
51
+ created_by: string;
52
+ created_at: string;
53
+ updated_at: string;
54
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=kb-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kb-types.js","sourceRoot":"","sources":["../../../src/knowledge/kb-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { KBDocument, ScopeType, SkillKnowledgeDeps } from './kb-types.js';
7
+ import type { KBIndexEntry } from './kb-index.js';
8
+ /**
9
+ * In-session knowledge base state. Holds all docs locally, tracks which
10
+ * are loaded into context, and provides load-by-tags / search / IDs
11
+ * methods. All docs are available from init; "loading" marks docs as
12
+ * actively included in the conversation context.
13
+ */
14
+ export declare class KnowledgeStore {
15
+ private readonly appDocs;
16
+ private readonly tenantDocs;
17
+ private readonly allDocsById;
18
+ private readonly loadedIds;
19
+ constructor(appDocs: KBDocument[], tenantDocs: KBDocument[]);
20
+ /** All index entries (compact, no body). */
21
+ getIndex(): KBIndexEntry[];
22
+ /** Formatted KB index suitable for the system prompt. */
23
+ getFormattedIndex(): string;
24
+ /** Load specific documents by ID. Marks them as loaded. */
25
+ loadByIds(ids: string[]): KBDocument[];
26
+ /**
27
+ * Load documents that match ANY of the given tags (OR logic).
28
+ * Also matches against document categories, so passing a category
29
+ * name like "system_docs" will find docs in that category even if
30
+ * they have no explicit tags.
31
+ * Optionally filter by scope type.
32
+ */
33
+ loadByTags(tags: string[], scope?: ScopeType): KBDocument[];
34
+ /**
35
+ * Load documents matching any of the given categories.
36
+ * Optionally filter by scope type.
37
+ */
38
+ loadByCategory(categories: string[], scope?: ScopeType): KBDocument[];
39
+ /** Load documents whose title or category contains the search query (case-insensitive). */
40
+ loadBySearch(query: string): KBDocument[];
41
+ /** Load documents required by a skill's knowledge deps. */
42
+ loadForSkill(deps: SkillKnowledgeDeps): KBDocument[];
43
+ /** Load ALL documents (marks everything as loaded). */
44
+ loadAll(): KBDocument[];
45
+ /** Get all documents that have been loaded into context. */
46
+ getLoadedDocuments(): KBDocument[];
47
+ /** Get all documents (loaded or not). */
48
+ getAllDocuments(): KBDocument[];
49
+ /** Get application-level documents. */
50
+ getAppDocuments(): KBDocument[];
51
+ /** Get tenant-level documents. */
52
+ getTenantDocuments(): KBDocument[];
53
+ /** Check whether a specific document has been loaded. */
54
+ isLoaded(id: string): boolean;
55
+ private getDocsForScope;
56
+ }
@@ -0,0 +1,141 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { buildKnowledgeIndex, formatKnowledgeIndex } from './kb-index.js';
7
+ /**
8
+ * In-session knowledge base state. Holds all docs locally, tracks which
9
+ * are loaded into context, and provides load-by-tags / search / IDs
10
+ * methods. All docs are available from init; "loading" marks docs as
11
+ * actively included in the conversation context.
12
+ */
13
+ export class KnowledgeStore {
14
+ appDocs;
15
+ tenantDocs;
16
+ allDocsById;
17
+ loadedIds = new Set();
18
+ constructor(appDocs, tenantDocs) {
19
+ this.appDocs = appDocs;
20
+ this.tenantDocs = tenantDocs;
21
+ this.allDocsById = new Map();
22
+ for (const doc of [...appDocs, ...tenantDocs]) {
23
+ this.allDocsById.set(doc.id, doc);
24
+ }
25
+ }
26
+ /** All index entries (compact, no body). */
27
+ getIndex() {
28
+ return buildKnowledgeIndex([...this.appDocs, ...this.tenantDocs]);
29
+ }
30
+ /** Formatted KB index suitable for the system prompt. */
31
+ getFormattedIndex() {
32
+ return formatKnowledgeIndex(this.appDocs, this.tenantDocs);
33
+ }
34
+ /** Load specific documents by ID. Marks them as loaded. */
35
+ loadByIds(ids) {
36
+ const results = [];
37
+ for (const id of ids) {
38
+ const doc = this.allDocsById.get(id);
39
+ if (doc) {
40
+ this.loadedIds.add(id);
41
+ results.push(doc);
42
+ }
43
+ }
44
+ return results;
45
+ }
46
+ /**
47
+ * Load documents that match ANY of the given tags (OR logic).
48
+ * Also matches against document categories, so passing a category
49
+ * name like "system_docs" will find docs in that category even if
50
+ * they have no explicit tags.
51
+ * Optionally filter by scope type.
52
+ */
53
+ loadByTags(tags, scope) {
54
+ if (tags.length === 0)
55
+ return [];
56
+ const tagSet = new Set(tags);
57
+ const docs = this.getDocsForScope(scope);
58
+ const matched = docs.filter((d) => d.tags.some((t) => tagSet.has(t)) || tagSet.has(d.category));
59
+ for (const doc of matched) {
60
+ this.loadedIds.add(doc.id);
61
+ }
62
+ return matched;
63
+ }
64
+ /**
65
+ * Load documents matching any of the given categories.
66
+ * Optionally filter by scope type.
67
+ */
68
+ loadByCategory(categories, scope) {
69
+ if (categories.length === 0)
70
+ return [];
71
+ const catSet = new Set(categories);
72
+ const docs = this.getDocsForScope(scope);
73
+ const matched = docs.filter((d) => catSet.has(d.category));
74
+ for (const doc of matched) {
75
+ this.loadedIds.add(doc.id);
76
+ }
77
+ return matched;
78
+ }
79
+ /** Load documents whose title or category contains the search query (case-insensitive). */
80
+ loadBySearch(query) {
81
+ if (!query)
82
+ return [];
83
+ const lower = query.toLowerCase();
84
+ const matched = [...this.allDocsById.values()].filter((d) => d.title.toLowerCase().includes(lower) ||
85
+ d.category.toLowerCase().includes(lower));
86
+ for (const doc of matched) {
87
+ this.loadedIds.add(doc.id);
88
+ }
89
+ return matched;
90
+ }
91
+ /** Load documents required by a skill's knowledge deps. */
92
+ loadForSkill(deps) {
93
+ const scope = deps.scope === 'all' || deps.scope === undefined
94
+ ? undefined
95
+ : deps.scope;
96
+ // If no tags specified and scope is 'all', load everything
97
+ if (!deps.tags || deps.tags.length === 0) {
98
+ if (deps.scope === 'all') {
99
+ return this.loadAll();
100
+ }
101
+ return [];
102
+ }
103
+ return this.loadByTags(deps.tags, scope);
104
+ }
105
+ /** Load ALL documents (marks everything as loaded). */
106
+ loadAll() {
107
+ const all = [...this.allDocsById.values()];
108
+ for (const doc of all) {
109
+ this.loadedIds.add(doc.id);
110
+ }
111
+ return all;
112
+ }
113
+ /** Get all documents that have been loaded into context. */
114
+ getLoadedDocuments() {
115
+ return [...this.allDocsById.values()].filter((d) => this.loadedIds.has(d.id));
116
+ }
117
+ /** Get all documents (loaded or not). */
118
+ getAllDocuments() {
119
+ return [...this.allDocsById.values()];
120
+ }
121
+ /** Get application-level documents. */
122
+ getAppDocuments() {
123
+ return this.appDocs;
124
+ }
125
+ /** Get tenant-level documents. */
126
+ getTenantDocuments() {
127
+ return this.tenantDocs;
128
+ }
129
+ /** Check whether a specific document has been loaded. */
130
+ isLoaded(id) {
131
+ return this.loadedIds.has(id);
132
+ }
133
+ getDocsForScope(scope) {
134
+ if (scope === 'application')
135
+ return this.appDocs;
136
+ if (scope === 'tenant')
137
+ return this.tenantDocs;
138
+ return [...this.appDocs, ...this.tenantDocs];
139
+ }
140
+ }
141
+ //# sourceMappingURL=knowledge-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-store.js","sourceRoot":"","sources":["../../../src/knowledge/knowledge-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { MessageBus } from '@google/gemini-cli-core';
7
+ import type { ToolResult, ToolInvocation } from '@google/gemini-cli-core';
8
+ import { BaseDeclarativeTool } from '@google/gemini-cli-core';
9
+ import type { KnowledgeStore } from './knowledge-store.js';
10
+ /**
11
+ * Parameters for the load_knowledge tool.
12
+ */
13
+ export interface LoadKnowledgeParams {
14
+ tags?: string[];
15
+ category?: string[];
16
+ search?: string;
17
+ ids?: string[];
18
+ }
19
+ /**
20
+ * Built-in tool for loading knowledge base documents on demand.
21
+ * Always available in every session. The agent uses this to load
22
+ * specific documents from the KB index instead of having all docs
23
+ * in the system prompt.
24
+ */
25
+ export declare class LoadKnowledgeTool extends BaseDeclarativeTool<LoadKnowledgeParams, ToolResult> {
26
+ private store;
27
+ static readonly Name = "load_knowledge";
28
+ constructor(store: KnowledgeStore, messageBus: MessageBus);
29
+ protected createInvocation(params: LoadKnowledgeParams, messageBus: MessageBus, _toolName?: string, _toolDisplayName?: string): ToolInvocation<LoadKnowledgeParams, ToolResult>;
30
+ }
@@ -0,0 +1,161 @@
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 { LOAD_KNOWLEDGE_TOOL_NAME } from '../tools/amodal-tool-names.js';
8
+ import { ToolErrorType } from '@google/gemini-cli-core';
9
+ /**
10
+ * Format loaded documents as a readable string for the LLM.
11
+ */
12
+ function formatLoadedDocs(docs, alreadyLoaded) {
13
+ const sections = [];
14
+ if (alreadyLoaded.length > 0) {
15
+ const names = alreadyLoaded.map((d) => d.title).join(', ');
16
+ sections.push(`Already loaded (skipped): ${names}`);
17
+ }
18
+ if (docs.length === 0 && alreadyLoaded.length > 0) {
19
+ return sections.join('\n\n');
20
+ }
21
+ if (docs.length === 0) {
22
+ return 'No matching documents found.';
23
+ }
24
+ for (const doc of docs) {
25
+ const tagStr = doc.tags.length > 0 ? ` [${doc.tags.join(', ')}]` : '';
26
+ sections.push(`## ${doc.title}${tagStr}\n` +
27
+ `*${doc.scope_type} | ${doc.category}*\n\n` +
28
+ doc.body);
29
+ }
30
+ return sections.join('\n\n---\n\n');
31
+ }
32
+ class LoadKnowledgeInvocation extends BaseToolInvocation {
33
+ store;
34
+ constructor(store, params, messageBus, _toolName, _toolDisplayName) {
35
+ super(params, messageBus, _toolName, _toolDisplayName);
36
+ this.store = store;
37
+ }
38
+ getDescription() {
39
+ if (this.params.category && this.params.category.length > 0) {
40
+ return `load_knowledge [category: ${this.params.category.join(', ')}]`;
41
+ }
42
+ if (this.params.tags && this.params.tags.length > 0) {
43
+ return `load_knowledge [tags: ${this.params.tags.join(', ')}]`;
44
+ }
45
+ if (this.params.search) {
46
+ return `load_knowledge [search: ${this.params.search}]`;
47
+ }
48
+ if (this.params.ids && this.params.ids.length > 0) {
49
+ return `load_knowledge [${String(this.params.ids.length)} docs]`;
50
+ }
51
+ return 'load_knowledge';
52
+ }
53
+ async getConfirmationDetails(_abortSignal) {
54
+ // Loading knowledge is read-only, no confirmation needed
55
+ return false;
56
+ }
57
+ async execute(_signal) {
58
+ const { tags, category, search, ids } = this.params;
59
+ // Validate at least one param
60
+ if ((!tags || tags.length === 0) &&
61
+ (!category || category.length === 0) &&
62
+ (!search || search.length === 0) &&
63
+ (!ids || ids.length === 0)) {
64
+ const errorMessage = 'At least one of tags, category, search, or ids must be provided.';
65
+ return {
66
+ llmContent: `Error: ${errorMessage}`,
67
+ returnDisplay: `Error: ${errorMessage}`,
68
+ error: {
69
+ message: errorMessage,
70
+ type: ToolErrorType.INVALID_TOOL_PARAMS,
71
+ },
72
+ };
73
+ }
74
+ const newDocs = [];
75
+ const alreadyLoaded = [];
76
+ // Collect docs from all provided params
77
+ const candidateDocs = [];
78
+ if (ids && ids.length > 0) {
79
+ candidateDocs.push(...this.store.loadByIds(ids));
80
+ }
81
+ if (category && category.length > 0) {
82
+ candidateDocs.push(...this.store.loadByCategory(category));
83
+ }
84
+ if (tags && tags.length > 0) {
85
+ candidateDocs.push(...this.store.loadByTags(tags));
86
+ }
87
+ if (search) {
88
+ candidateDocs.push(...this.store.loadBySearch(search));
89
+ }
90
+ // Deduplicate and split into new vs already-loaded
91
+ const seen = new Set();
92
+ for (const doc of candidateDocs) {
93
+ if (seen.has(doc.id))
94
+ continue;
95
+ seen.add(doc.id);
96
+ // Note: loadByIds/loadByTags/loadBySearch already mark docs as loaded,
97
+ // so we check if the doc was loaded BEFORE this call by checking if it
98
+ // was already in the loaded set. However, the store.load* methods mark
99
+ // them immediately. For simplicity, we track "already loaded" as docs
100
+ // that were loaded before this invocation. We'll re-check:
101
+ // Actually the store marks them loaded during this call, but we still
102
+ // want to show the full content for newly loaded docs.
103
+ newDocs.push(doc);
104
+ }
105
+ const result = formatLoadedDocs(newDocs, alreadyLoaded);
106
+ return {
107
+ llmContent: result,
108
+ returnDisplay: `Loaded ${String(newDocs.length)} knowledge document(s).`,
109
+ };
110
+ }
111
+ }
112
+ /**
113
+ * Tool parameter schema for load_knowledge.
114
+ */
115
+ const LOAD_KNOWLEDGE_SCHEMA = {
116
+ type: 'object',
117
+ properties: {
118
+ tags: {
119
+ type: 'array',
120
+ items: { type: 'string' },
121
+ description: 'Load documents matching any of these tags. Tags are shown in the KB index.',
122
+ },
123
+ category: {
124
+ type: 'array',
125
+ items: { type: 'string' },
126
+ description: 'Load documents matching any of these categories. ' +
127
+ 'Valid categories: system_docs, methodology, patterns, false_positives, ' +
128
+ 'response_procedures, environment, baselines, team, incident_history, working_memory.',
129
+ },
130
+ search: {
131
+ type: 'string',
132
+ description: 'Search documents by title or category keyword.',
133
+ },
134
+ ids: {
135
+ type: 'array',
136
+ items: { type: 'string' },
137
+ description: 'Load specific documents by ID (from the KB index).',
138
+ },
139
+ },
140
+ };
141
+ /**
142
+ * Built-in tool for loading knowledge base documents on demand.
143
+ * Always available in every session. The agent uses this to load
144
+ * specific documents from the KB index instead of having all docs
145
+ * in the system prompt.
146
+ */
147
+ export class LoadKnowledgeTool extends BaseDeclarativeTool {
148
+ store;
149
+ static Name = LOAD_KNOWLEDGE_TOOL_NAME;
150
+ constructor(store, messageBus) {
151
+ super(LoadKnowledgeTool.Name, 'Load Knowledge', 'Load knowledge base documents by category, tags, search query, or IDs. ' +
152
+ 'The KB index in the system prompt shows available documents with their categories, tags, and IDs. ' +
153
+ 'Use this tool to load the full content of documents you need for the current task. ' +
154
+ 'Use the category parameter to load all documents in a category (e.g., "system_docs", "patterns").', Kind.Other, LOAD_KNOWLEDGE_SCHEMA, messageBus, true, false);
155
+ this.store = store;
156
+ }
157
+ createInvocation(params, messageBus, _toolName, _toolDisplayName) {
158
+ return new LoadKnowledgeInvocation(this.store, params, messageBus, _toolName, _toolDisplayName ?? 'Load Knowledge');
159
+ }
160
+ }
161
+ //# sourceMappingURL=load-knowledge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-knowledge.js","sourceRoot":"","sources":["../../../src/knowledge/load-knowledge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { MessageBus } from '@google/gemini-cli-core';
7
+ import type { ToolResult, ToolInvocation } from '@google/gemini-cli-core';
8
+ import { BaseDeclarativeTool } from '@google/gemini-cli-core';
9
+ import type { ToolContext } from '../tool-context.js';
10
+ /**
11
+ * Parameters for the propose_kb_update tool.
12
+ */
13
+ export interface ProposeKBUpdateParams {
14
+ action: 'create' | 'update';
15
+ scope: 'application' | 'tenant';
16
+ document_id?: string;
17
+ title: string;
18
+ category: 'system_docs' | 'methodology' | 'patterns' | 'false_positives' | 'response_procedures' | 'environment' | 'baselines' | 'team' | 'incident_history' | 'working_memory';
19
+ body: string;
20
+ reasoning: string;
21
+ }
22
+ /**
23
+ * Built-in tool for proposing knowledge base updates during conversations.
24
+ * Always available when platform API credentials are configured.
25
+ * Not subject to role filtering.
26
+ */
27
+ export declare class ProposeKBUpdateTool extends BaseDeclarativeTool<ProposeKBUpdateParams, ToolResult> {
28
+ private config;
29
+ static readonly Name = "propose_knowledge";
30
+ constructor(config: ToolContext, messageBus: MessageBus);
31
+ protected createInvocation(params: ProposeKBUpdateParams, messageBus: MessageBus, _toolName?: string, _toolDisplayName?: string): ToolInvocation<ProposeKBUpdateParams, ToolResult>;
32
+ }