@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,137 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { MUTATOR_KINDS } from '@google/gemini-cli-core';
7
+ import { ConsoleAuditOutput, FileAuditOutput, RemoteAuditOutput, } from './audit-outputs.js';
8
+ import { redactSensitiveParams } from './audit-redact.js';
9
+ /**
10
+ * Structured audit logger. Emits entries to configured outputs.
11
+ *
12
+ * Audit must never throw or crash the process — all errors are swallowed.
13
+ */
14
+ export class AuditLogger {
15
+ outputs;
16
+ config;
17
+ context;
18
+ constructor(config, context) {
19
+ this.config = config;
20
+ this.context = context;
21
+ this.outputs = this.createOutputs(config);
22
+ }
23
+ /**
24
+ * Log a tool call event.
25
+ */
26
+ logToolCall(name, params, durationMs) {
27
+ this.emit({
28
+ event: 'tool_call',
29
+ tool: name,
30
+ params,
31
+ duration_ms: durationMs,
32
+ });
33
+ }
34
+ /**
35
+ * Log a write operation event (mutations: edit, delete, move, execute).
36
+ */
37
+ logWriteOp(name, params, durationMs) {
38
+ this.emit({
39
+ event: 'write_op',
40
+ tool: name,
41
+ params,
42
+ duration_ms: durationMs,
43
+ });
44
+ }
45
+ /**
46
+ * Log session start.
47
+ */
48
+ logSessionStart() {
49
+ this.emit({ event: 'session_start' });
50
+ }
51
+ /**
52
+ * Log session end.
53
+ */
54
+ logSessionEnd() {
55
+ this.emit({ event: 'session_end' });
56
+ }
57
+ /**
58
+ * Log a version bundle load.
59
+ */
60
+ logVersionLoad(version) {
61
+ this.emit({
62
+ event: 'version_load',
63
+ params: { version },
64
+ });
65
+ }
66
+ /**
67
+ * Log a knowledge base proposal event.
68
+ */
69
+ logKbProposal(scope, title, proposalId) {
70
+ this.emit({
71
+ event: 'kb_proposal',
72
+ params: { scope, title, proposal_id: proposalId },
73
+ });
74
+ }
75
+ /**
76
+ * Flush all outputs that support it.
77
+ */
78
+ async flush() {
79
+ const promises = this.outputs
80
+ .filter((o) => o.flush)
81
+ .map((o) => o.flush());
82
+ await Promise.allSettled(promises);
83
+ }
84
+ /**
85
+ * Check whether a tool kind represents a write/mutation operation.
86
+ */
87
+ static isWriteOperation(kind) {
88
+ return MUTATOR_KINDS.includes(kind);
89
+ }
90
+ emit(partial) {
91
+ if (!this.config.enabled) {
92
+ return;
93
+ }
94
+ try {
95
+ const entry = {
96
+ timestamp: new Date().toISOString(),
97
+ version: this.context.version,
98
+ session_id: this.context.sessionId,
99
+ user: this.context.user,
100
+ role: this.context.role,
101
+ source: this.context.source,
102
+ ...partial,
103
+ };
104
+ // Redact sensitive params if configured
105
+ if (this.config.redactParams && entry.params) {
106
+ entry.params = redactSensitiveParams(entry.params);
107
+ }
108
+ for (const output of this.outputs) {
109
+ try {
110
+ output.write(entry);
111
+ }
112
+ catch {
113
+ // Swallow — individual output failure must not affect others
114
+ }
115
+ }
116
+ }
117
+ catch {
118
+ // Swallow — audit must never crash the process
119
+ }
120
+ }
121
+ createOutputs(config) {
122
+ const outputs = [];
123
+ for (const type of config.outputs) {
124
+ if (type === 'console') {
125
+ outputs.push(new ConsoleAuditOutput());
126
+ }
127
+ else if (type === 'file' && config.filePath) {
128
+ outputs.push(new FileAuditOutput(config.filePath));
129
+ }
130
+ else if (type === 'remote' && config.remoteUrl) {
131
+ outputs.push(new RemoteAuditOutput(config.remoteUrl));
132
+ }
133
+ }
134
+ return outputs;
135
+ }
136
+ }
137
+ //# sourceMappingURL=audit-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logger.js","sourceRoot":"","sources":["../../../src/audit/audit-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { AuditEntry, AuditOutput } from './audit-types.js';
7
+ /**
8
+ * Writes audit entries as JSON lines to stderr.
9
+ * Non-blocking — uses process.stderr.write.
10
+ */
11
+ export declare class ConsoleAuditOutput implements AuditOutput {
12
+ write(entry: AuditEntry): void;
13
+ }
14
+ /**
15
+ * Appends audit entries as JSON lines to a file.
16
+ * Fire-and-forget — errors are swallowed.
17
+ */
18
+ export declare class FileAuditOutput implements AuditOutput {
19
+ private readonly filePath;
20
+ constructor(filePath: string);
21
+ write(entry: AuditEntry): void;
22
+ }
23
+ /**
24
+ * Buffers audit entries and POSTs them to a remote URL in batches.
25
+ * Auto-flushes at 100 items. Errors are swallowed.
26
+ */
27
+ export declare class RemoteAuditOutput implements AuditOutput {
28
+ private readonly url;
29
+ private buffer;
30
+ private readonly maxBufferSize;
31
+ constructor(url: string);
32
+ write(entry: AuditEntry): void;
33
+ flush(): Promise<void>;
34
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import * as fs from 'node:fs';
7
+ /**
8
+ * Writes audit entries as JSON lines to stderr.
9
+ * Non-blocking — uses process.stderr.write.
10
+ */
11
+ export class ConsoleAuditOutput {
12
+ write(entry) {
13
+ try {
14
+ process.stderr.write(JSON.stringify(entry) + '\n');
15
+ }
16
+ catch {
17
+ // Swallow — audit must never crash the process
18
+ }
19
+ }
20
+ }
21
+ /**
22
+ * Appends audit entries as JSON lines to a file.
23
+ * Fire-and-forget — errors are swallowed.
24
+ */
25
+ export class FileAuditOutput {
26
+ filePath;
27
+ constructor(filePath) {
28
+ this.filePath = filePath;
29
+ }
30
+ write(entry) {
31
+ // Fire-and-forget append
32
+ fs.promises.appendFile(this.filePath, JSON.stringify(entry) + '\n').catch(() => {
33
+ // Swallow — audit must never crash the process
34
+ });
35
+ }
36
+ }
37
+ /**
38
+ * Buffers audit entries and POSTs them to a remote URL in batches.
39
+ * Auto-flushes at 100 items. Errors are swallowed.
40
+ */
41
+ export class RemoteAuditOutput {
42
+ url;
43
+ buffer = [];
44
+ maxBufferSize = 100;
45
+ constructor(url) {
46
+ this.url = url;
47
+ }
48
+ write(entry) {
49
+ this.buffer.push(entry);
50
+ if (this.buffer.length >= this.maxBufferSize) {
51
+ // Fire-and-forget flush
52
+ void this.flush();
53
+ }
54
+ }
55
+ async flush() {
56
+ if (this.buffer.length === 0) {
57
+ return;
58
+ }
59
+ const batch = this.buffer;
60
+ this.buffer = [];
61
+ try {
62
+ await fetch(this.url, {
63
+ method: 'POST',
64
+ headers: { 'Content-Type': 'application/json' },
65
+ body: JSON.stringify(batch),
66
+ });
67
+ }
68
+ catch {
69
+ // Swallow — audit must never crash the process
70
+ }
71
+ }
72
+ }
73
+ //# sourceMappingURL=audit-outputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-outputs.js","sourceRoot":"","sources":["../../../src/audit/audit-outputs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,KAAiB;QACrB,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEjD,KAAK,CAAC,KAAiB;QACrB,yBAAyB;QACzB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CACvE,GAAG,EAAE;YACH,+CAA+C;QACjD,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAIC;IAHrB,MAAM,GAAiB,EAAE,CAAC;IACjB,aAAa,GAAG,GAAG,CAAC;IAErC,YAA6B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAE5C,KAAK,CAAC,KAAiB;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7C,wBAAwB;YACxB,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACpB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC5B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Checks whether a single key name matches any sensitive pattern.
8
+ */
9
+ export declare function isSensitiveKey(key: string): boolean;
10
+ /**
11
+ * Deep-clones a params object and replaces values of sensitive keys
12
+ * with "[REDACTED]". Returns a new object — the original is not mutated.
13
+ */
14
+ export declare function redactSensitiveParams(params: Record<string, unknown>): Record<string, unknown>;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Patterns that match sensitive parameter key names.
8
+ * Case-insensitive matching is applied when checking.
9
+ */
10
+ const SENSITIVE_PATTERNS = [
11
+ /api[_-]?key/i,
12
+ /secret/i,
13
+ /password/i,
14
+ /token/i,
15
+ /\bauth\b/i,
16
+ /credential/i,
17
+ /bearer/i,
18
+ /authorization/i,
19
+ ];
20
+ const REDACTED = '[REDACTED]';
21
+ /**
22
+ * Checks whether a single key name matches any sensitive pattern.
23
+ */
24
+ export function isSensitiveKey(key) {
25
+ return SENSITIVE_PATTERNS.some((pattern) => pattern.test(key));
26
+ }
27
+ /**
28
+ * Deep-clones a params object and replaces values of sensitive keys
29
+ * with "[REDACTED]". Returns a new object — the original is not mutated.
30
+ */
31
+ export function redactSensitiveParams(params) {
32
+ return redactObject(params);
33
+ }
34
+ function redactObject(obj) {
35
+ const result = {};
36
+ for (const [key, value] of Object.entries(obj)) {
37
+ if (isSensitiveKey(key)) {
38
+ result[key] = REDACTED;
39
+ }
40
+ else if (isPlainObject(value)) {
41
+ result[key] = redactObject(value);
42
+ }
43
+ else if (Array.isArray(value)) {
44
+ result[key] = value.map((item) => isPlainObject(item) ? redactObject(item) : item);
45
+ }
46
+ else {
47
+ result[key] = value;
48
+ }
49
+ }
50
+ return result;
51
+ }
52
+ function isPlainObject(value) {
53
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
54
+ }
55
+ //# sourceMappingURL=audit-redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-redact.js","sourceRoot":"","sources":["../../../src/audit/audit-redact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,kBAAkB,GAAa;IACnC,cAAc;IACd,SAAS;IACT,WAAW;IACX,QAAQ;IACR,WAAW;IACX,aAAa;IACb,SAAS;IACT,gBAAgB;CACjB,CAAC;AAEF,MAAM,QAAQ,GAAG,YAAY,CAAC;AAE9B;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA+B;IAE/B,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CACnB,GAA4B;IAE5B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QACzB,CAAC;aAAM,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAChD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Types of audit events the system can emit.
9
+ */
10
+ export declare const AuditEventTypeSchema: z.ZodEnum<["tool_call", "session_start", "session_end", "write_op", "version_load", "kb_proposal"]>;
11
+ export type AuditEventType = z.infer<typeof AuditEventTypeSchema>;
12
+ /**
13
+ * Audit source: interactive session or a named automation.
14
+ */
15
+ export declare const AuditSourceSchema: z.ZodEffects<z.ZodString, string, string>;
16
+ export type AuditSource = z.infer<typeof AuditSourceSchema>;
17
+ /**
18
+ * A single audit log entry.
19
+ */
20
+ export declare const AuditEntrySchema: z.ZodObject<{
21
+ /** ISO 8601 timestamp */
22
+ timestamp: z.ZodString;
23
+ /** Active version bundle (defaults to "local") */
24
+ version: z.ZodString;
25
+ /** Session identifier */
26
+ session_id: z.ZodString;
27
+ /** User identifier */
28
+ user: z.ZodString;
29
+ /** Active role name */
30
+ role: z.ZodString;
31
+ /** Type of event */
32
+ event: z.ZodEnum<["tool_call", "session_start", "session_end", "write_op", "version_load", "kb_proposal"]>;
33
+ /** Tool name (for tool_call and write_op events) */
34
+ tool: z.ZodOptional<z.ZodString>;
35
+ /** Tool parameters (may be redacted) */
36
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
37
+ /** Duration in milliseconds */
38
+ duration_ms: z.ZodOptional<z.ZodNumber>;
39
+ /** Source of the event */
40
+ source: z.ZodEffects<z.ZodString, string, string>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ timestamp: string;
43
+ version: string;
44
+ session_id: string;
45
+ user: string;
46
+ role: string;
47
+ event: "tool_call" | "session_start" | "session_end" | "write_op" | "version_load" | "kb_proposal";
48
+ source: string;
49
+ params?: Record<string, unknown> | undefined;
50
+ tool?: string | undefined;
51
+ duration_ms?: number | undefined;
52
+ }, {
53
+ timestamp: string;
54
+ version: string;
55
+ session_id: string;
56
+ user: string;
57
+ role: string;
58
+ event: "tool_call" | "session_start" | "session_end" | "write_op" | "version_load" | "kb_proposal";
59
+ source: string;
60
+ params?: Record<string, unknown> | undefined;
61
+ tool?: string | undefined;
62
+ duration_ms?: number | undefined;
63
+ }>;
64
+ export type AuditEntry = z.infer<typeof AuditEntrySchema>;
65
+ /**
66
+ * Interface for audit output sinks.
67
+ */
68
+ export interface AuditOutput {
69
+ /** Write a single audit entry to this output. */
70
+ write(entry: AuditEntry): void;
71
+ /** Flush any buffered entries. Optional for sync outputs. */
72
+ flush?(): Promise<void>;
73
+ }
74
+ /**
75
+ * Configuration for the audit logging system.
76
+ */
77
+ export declare const AuditConfigSchema: z.ZodObject<{
78
+ /** Whether audit logging is enabled */
79
+ enabled: z.ZodDefault<z.ZodBoolean>;
80
+ /** Output sinks to write to */
81
+ outputs: z.ZodDefault<z.ZodArray<z.ZodEnum<["console", "file", "remote"]>, "many">>;
82
+ /** File path for file output */
83
+ filePath: z.ZodOptional<z.ZodString>;
84
+ /** Remote URL for remote output */
85
+ remoteUrl: z.ZodOptional<z.ZodString>;
86
+ /** Whether to redact sensitive params (default true) */
87
+ redactParams: z.ZodDefault<z.ZodBoolean>;
88
+ }, "strip", z.ZodTypeAny, {
89
+ enabled: boolean;
90
+ outputs: ("console" | "file" | "remote")[];
91
+ redactParams: boolean;
92
+ filePath?: string | undefined;
93
+ remoteUrl?: string | undefined;
94
+ }, {
95
+ enabled?: boolean | undefined;
96
+ outputs?: ("console" | "file" | "remote")[] | undefined;
97
+ filePath?: string | undefined;
98
+ remoteUrl?: string | undefined;
99
+ redactParams?: boolean | undefined;
100
+ }>;
101
+ export type AuditConfig = z.infer<typeof AuditConfigSchema>;
102
+ /**
103
+ * Context for creating audit entries — set once at logger creation.
104
+ */
105
+ export interface AuditContext {
106
+ version: string;
107
+ sessionId: string;
108
+ user: string;
109
+ role: string;
110
+ source: string;
111
+ }
112
+ /**
113
+ * An immutable audit entry with hash chain for tamper detection.
114
+ */
115
+ export interface ImmutableAuditEntry extends AuditEntry {
116
+ /** Monotonically increasing sequence number within the session */
117
+ sequence: number;
118
+ /** SHA-256 hash of the previous entry (empty string for first) */
119
+ previousHash: string;
120
+ /** SHA-256 hash of this entry (including previousHash) */
121
+ entryHash: string;
122
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Types of audit events the system can emit.
9
+ */
10
+ export const AuditEventTypeSchema = z.enum([
11
+ 'tool_call',
12
+ 'session_start',
13
+ 'session_end',
14
+ 'write_op',
15
+ 'version_load',
16
+ 'kb_proposal',
17
+ ]);
18
+ /**
19
+ * Audit source: interactive session or a named automation.
20
+ */
21
+ export const AuditSourceSchema = z
22
+ .string()
23
+ .refine((val) => val === 'interactive' || val.startsWith('automation:') || val.startsWith('heartbeat:'), { message: 'Source must be "interactive" or "automation:<name>"' });
24
+ /**
25
+ * A single audit log entry.
26
+ */
27
+ export const AuditEntrySchema = z.object({
28
+ /** ISO 8601 timestamp */
29
+ timestamp: z.string(),
30
+ /** Active version bundle (defaults to "local") */
31
+ version: z.string(),
32
+ /** Session identifier */
33
+ session_id: z.string(),
34
+ /** User identifier */
35
+ user: z.string(),
36
+ /** Active role name */
37
+ role: z.string(),
38
+ /** Type of event */
39
+ event: AuditEventTypeSchema,
40
+ /** Tool name (for tool_call and write_op events) */
41
+ tool: z.string().optional(),
42
+ /** Tool parameters (may be redacted) */
43
+ params: z.record(z.unknown()).optional(),
44
+ /** Duration in milliseconds */
45
+ duration_ms: z.number().optional(),
46
+ /** Source of the event */
47
+ source: AuditSourceSchema,
48
+ });
49
+ /**
50
+ * Configuration for the audit logging system.
51
+ */
52
+ export const AuditConfigSchema = z.object({
53
+ /** Whether audit logging is enabled */
54
+ enabled: z.boolean().default(true),
55
+ /** Output sinks to write to */
56
+ outputs: z.array(z.enum(['console', 'file', 'remote'])).default(['console']),
57
+ /** File path for file output */
58
+ filePath: z.string().optional(),
59
+ /** Remote URL for remote output */
60
+ remoteUrl: z.string().url().optional(),
61
+ /** Whether to redact sensitive params (default true) */
62
+ redactParams: z.boolean().default(true),
63
+ });
64
+ //# sourceMappingURL=audit-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-types.js","sourceRoot":"","sources":["../../../src/audit/audit-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,WAAW;IACX,eAAe;IACf,aAAa;IACb,UAAU;IACV,cAAc;IACd,aAAa;CACd,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,aAAa,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAC/F,EAAE,OAAO,EAAE,qDAAqD,EAAE,CACnE,CAAC;AAIJ;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,yBAAyB;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,kDAAkD;IAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,yBAAyB;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,sBAAsB;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,uBAAuB;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,oBAAoB;IACpB,KAAK,EAAE,oBAAoB;IAC3B,oDAAoD;IACpD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,wCAAwC;IACxC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,+BAA+B;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,0BAA0B;IAC1B,MAAM,EAAE,iBAAiB;CAC1B,CAAC,CAAC;AAcH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,uCAAuC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,+BAA+B;IAC/B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5E,gCAAgC;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,mCAAmC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,wDAAwD;IACxD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACxC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export { AuditEventTypeSchema, AuditSourceSchema, AuditEntrySchema, AuditConfigSchema, } from './audit-types.js';
7
+ export type { AuditEventType, AuditSource, AuditEntry, AuditOutput, AuditConfig, AuditContext, } from './audit-types.js';
8
+ export { AuditLogger } from './audit-logger.js';
9
+ export { redactSensitiveParams, isSensitiveKey } from './audit-redact.js';
10
+ export { ConsoleAuditOutput, FileAuditOutput, RemoteAuditOutput, } from './audit-outputs.js';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export { AuditEventTypeSchema, AuditSourceSchema, AuditEntrySchema, AuditConfigSchema, } from './audit-types.js';
7
+ export { AuditLogger } from './audit-logger.js';
8
+ export { redactSensitiveParams, isSensitiveKey } from './audit-redact.js';
9
+ export { ConsoleAuditOutput, FileAuditOutput, RemoteAuditOutput, } from './audit-outputs.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { EvalCostInfo } from './eval-types.js';
7
+ /**
8
+ * Pricing per million tokens (in microdollars) for known models.
9
+ * Prices are approximate and should be updated as providers change pricing.
10
+ */
11
+ export declare const MODEL_PRICING: Record<string, {
12
+ inputPerMToken: number;
13
+ outputPerMToken: number;
14
+ }>;
15
+ /**
16
+ * Look up pricing for a model, falling back to default for unknown models.
17
+ */
18
+ export declare function getModelPricing(model: string): {
19
+ inputPerMToken: number;
20
+ outputPerMToken: number;
21
+ };
22
+ /**
23
+ * Compute cost info from token counts and model identity.
24
+ */
25
+ export declare function computeEvalCost(inputTokens: number, outputTokens: number, model: string): EvalCostInfo;
26
+ /**
27
+ * Aggregate multiple per-case costs into a total.
28
+ */
29
+ export declare function aggregateRunCost(perCaseCosts: EvalCostInfo[]): EvalCostInfo;
30
+ /**
31
+ * Format microdollars as a human-readable dollar string.
32
+ */
33
+ export declare function formatCostMicros(micros: number): string;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Pricing per million tokens (in microdollars) for known models.
8
+ * Prices are approximate and should be updated as providers change pricing.
9
+ */
10
+ export const MODEL_PRICING = {
11
+ // Anthropic
12
+ 'claude-opus-4-20250514': { inputPerMToken: 15_000_000, outputPerMToken: 75_000_000 },
13
+ 'claude-sonnet-4-20250514': { inputPerMToken: 3_000_000, outputPerMToken: 15_000_000 },
14
+ 'claude-sonnet-4-6-20250626': { inputPerMToken: 3_000_000, outputPerMToken: 15_000_000 },
15
+ 'claude-haiku-3-5-20241022': { inputPerMToken: 800_000, outputPerMToken: 4_000_000 },
16
+ 'claude-haiku-4-5-20251001': { inputPerMToken: 800_000, outputPerMToken: 4_000_000 },
17
+ // OpenAI
18
+ 'gpt-4o': { inputPerMToken: 2_500_000, outputPerMToken: 10_000_000 },
19
+ 'gpt-4o-mini': { inputPerMToken: 150_000, outputPerMToken: 600_000 },
20
+ 'gpt-4.1': { inputPerMToken: 2_000_000, outputPerMToken: 8_000_000 },
21
+ 'gpt-4.1-mini': { inputPerMToken: 400_000, outputPerMToken: 1_600_000 },
22
+ 'gpt-4.1-nano': { inputPerMToken: 100_000, outputPerMToken: 400_000 },
23
+ // Google
24
+ 'gemini-2.5-pro': { inputPerMToken: 1_250_000, outputPerMToken: 10_000_000 },
25
+ 'gemini-2.5-flash': { inputPerMToken: 150_000, outputPerMToken: 600_000 },
26
+ 'gemini-2.0-flash': { inputPerMToken: 100_000, outputPerMToken: 400_000 },
27
+ };
28
+ // Default pricing for unknown models (conservative estimate)
29
+ const DEFAULT_PRICING = { inputPerMToken: 3_000_000, outputPerMToken: 15_000_000 };
30
+ /**
31
+ * Look up pricing for a model, falling back to default for unknown models.
32
+ */
33
+ export function getModelPricing(model) {
34
+ return MODEL_PRICING[model] ?? DEFAULT_PRICING;
35
+ }
36
+ /**
37
+ * Compute cost info from token counts and model identity.
38
+ */
39
+ export function computeEvalCost(inputTokens, outputTokens, model) {
40
+ const pricing = getModelPricing(model);
41
+ const totalTokens = inputTokens + outputTokens;
42
+ const estimatedCostMicros = Math.round((inputTokens * pricing.inputPerMToken + outputTokens * pricing.outputPerMToken) / 1_000_000);
43
+ return { inputTokens, outputTokens, totalTokens, estimatedCostMicros };
44
+ }
45
+ /**
46
+ * Aggregate multiple per-case costs into a total.
47
+ */
48
+ export function aggregateRunCost(perCaseCosts) {
49
+ const result = {
50
+ inputTokens: 0,
51
+ outputTokens: 0,
52
+ totalTokens: 0,
53
+ estimatedCostMicros: 0,
54
+ };
55
+ for (const cost of perCaseCosts) {
56
+ result.inputTokens += cost.inputTokens;
57
+ result.outputTokens += cost.outputTokens;
58
+ result.totalTokens += cost.totalTokens;
59
+ result.estimatedCostMicros += cost.estimatedCostMicros;
60
+ }
61
+ return result;
62
+ }
63
+ /**
64
+ * Format microdollars as a human-readable dollar string.
65
+ */
66
+ export function formatCostMicros(micros) {
67
+ const dollars = micros / 1_000_000;
68
+ if (dollars < 0.01) {
69
+ return `$${dollars.toFixed(4)}`;
70
+ }
71
+ return `$${dollars.toFixed(2)}`;
72
+ }
73
+ //# sourceMappingURL=eval-cost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-cost.js","sourceRoot":"","sources":["../../../src/eval/eval-cost.ts"],"names":[],"mappings":"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"}