@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.
- package/LICENSE +21 -0
- package/dist/.last_build +0 -0
- package/dist/src/amodal-config.d.ts +194 -0
- package/dist/src/amodal-config.js +326 -0
- package/dist/src/amodal-config.js.map +1 -0
- package/dist/src/audit/audit-logger.d.ts +52 -0
- package/dist/src/audit/audit-logger.js +137 -0
- package/dist/src/audit/audit-logger.js.map +1 -0
- package/dist/src/audit/audit-outputs.d.ts +34 -0
- package/dist/src/audit/audit-outputs.js +73 -0
- package/dist/src/audit/audit-outputs.js.map +1 -0
- package/dist/src/audit/audit-redact.d.ts +14 -0
- package/dist/src/audit/audit-redact.js +55 -0
- package/dist/src/audit/audit-redact.js.map +1 -0
- package/dist/src/audit/audit-types.d.ts +122 -0
- package/dist/src/audit/audit-types.js +64 -0
- package/dist/src/audit/audit-types.js.map +1 -0
- package/dist/src/audit/index.d.ts +10 -0
- package/dist/src/audit/index.js +10 -0
- package/dist/src/audit/index.js.map +1 -0
- package/dist/src/eval/eval-cost.d.ts +33 -0
- package/dist/src/eval/eval-cost.js +73 -0
- package/dist/src/eval/eval-cost.js.map +1 -0
- package/dist/src/eval/eval-diff.d.ts +11 -0
- package/dist/src/eval/eval-diff.js +97 -0
- package/dist/src/eval/eval-diff.js.map +1 -0
- package/dist/src/eval/eval-formatter.d.ts +23 -0
- package/dist/src/eval/eval-formatter.js +221 -0
- package/dist/src/eval/eval-formatter.js.map +1 -0
- package/dist/src/eval/eval-judge.d.ts +26 -0
- package/dist/src/eval/eval-judge.js +76 -0
- package/dist/src/eval/eval-judge.js.map +1 -0
- package/dist/src/eval/eval-run-builder.d.ts +25 -0
- package/dist/src/eval/eval-run-builder.js +78 -0
- package/dist/src/eval/eval-run-builder.js.map +1 -0
- package/dist/src/eval/eval-runner.d.ts +36 -0
- package/dist/src/eval/eval-runner.js +92 -0
- package/dist/src/eval/eval-runner.js.map +1 -0
- package/dist/src/eval/eval-session-provider.d.ts +40 -0
- package/dist/src/eval/eval-session-provider.js +46 -0
- package/dist/src/eval/eval-session-provider.js.map +1 -0
- package/dist/src/eval/eval-types.d.ts +146 -0
- package/dist/src/eval/eval-types.js +7 -0
- package/dist/src/eval/eval-types.js.map +1 -0
- package/dist/src/eval/experiment-runner.d.ts +16 -0
- package/dist/src/eval/experiment-runner.js +73 -0
- package/dist/src/eval/experiment-runner.js.map +1 -0
- package/dist/src/eval/experiment-types.d.ts +56 -0
- package/dist/src/eval/experiment-types.js +7 -0
- package/dist/src/eval/experiment-types.js.map +1 -0
- package/dist/src/eval/index.d.ts +22 -0
- package/dist/src/eval/index.js +18 -0
- package/dist/src/eval/index.js.map +1 -0
- package/dist/src/eval/multi-model-runner.d.ts +42 -0
- package/dist/src/eval/multi-model-runner.js +70 -0
- package/dist/src/eval/multi-model-runner.js.map +1 -0
- package/dist/src/eval/platform-eval-client.d.ts +105 -0
- package/dist/src/eval/platform-eval-client.js +155 -0
- package/dist/src/eval/platform-eval-client.js.map +1 -0
- package/dist/src/index.d.ts +41 -0
- package/dist/src/index.js +68 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/knowledge/index.d.ts +11 -0
- package/dist/src/knowledge/index.js +12 -0
- package/dist/src/knowledge/index.js.map +1 -0
- package/dist/src/knowledge/kb-formatter.d.ts +15 -0
- package/dist/src/knowledge/kb-formatter.js +78 -0
- package/dist/src/knowledge/kb-formatter.js.map +1 -0
- package/dist/src/knowledge/kb-index.d.ts +27 -0
- package/dist/src/knowledge/kb-index.js +66 -0
- package/dist/src/knowledge/kb-index.js.map +1 -0
- package/dist/src/knowledge/kb-types.d.ts +54 -0
- package/dist/src/knowledge/kb-types.js +7 -0
- package/dist/src/knowledge/kb-types.js.map +1 -0
- package/dist/src/knowledge/knowledge-store.d.ts +56 -0
- package/dist/src/knowledge/knowledge-store.js +141 -0
- package/dist/src/knowledge/knowledge-store.js.map +1 -0
- package/dist/src/knowledge/load-knowledge.d.ts +30 -0
- package/dist/src/knowledge/load-knowledge.js +161 -0
- package/dist/src/knowledge/load-knowledge.js.map +1 -0
- package/dist/src/knowledge/propose-kb-update.d.ts +32 -0
- package/dist/src/knowledge/propose-kb-update.js +148 -0
- package/dist/src/knowledge/propose-kb-update.js.map +1 -0
- package/dist/src/knowledge/propose-knowledge.d.ts +34 -0
- package/dist/src/knowledge/propose-knowledge.js +163 -0
- package/dist/src/knowledge/propose-knowledge.js.map +1 -0
- package/dist/src/mcp/index.d.ts +7 -0
- package/dist/src/mcp/index.js +7 -0
- package/dist/src/mcp/index.js.map +1 -0
- package/dist/src/mcp/mcp-manager.d.ts +96 -0
- package/dist/src/mcp/mcp-manager.js +192 -0
- package/dist/src/mcp/mcp-manager.js.map +1 -0
- package/dist/src/packages/config-deps.d.ts +20 -0
- package/dist/src/packages/config-deps.js +77 -0
- package/dist/src/packages/config-deps.js.map +1 -0
- package/dist/src/packages/env-file.d.ts +28 -0
- package/dist/src/packages/env-file.js +143 -0
- package/dist/src/packages/env-file.js.map +1 -0
- package/dist/src/packages/frontmatter.d.ts +28 -0
- package/dist/src/packages/frontmatter.js +77 -0
- package/dist/src/packages/frontmatter.js.map +1 -0
- package/dist/src/packages/index.d.ts +16 -0
- package/dist/src/packages/index.js +17 -0
- package/dist/src/packages/index.js.map +1 -0
- package/dist/src/packages/lock-file.d.ts +35 -0
- package/dist/src/packages/lock-file.js +117 -0
- package/dist/src/packages/lock-file.js.map +1 -0
- package/dist/src/packages/manifest-reader.d.ts +19 -0
- package/dist/src/packages/manifest-reader.js +91 -0
- package/dist/src/packages/manifest-reader.js.map +1 -0
- package/dist/src/packages/merge-engine.d.ts +63 -0
- package/dist/src/packages/merge-engine.js +357 -0
- package/dist/src/packages/merge-engine.js.map +1 -0
- package/dist/src/packages/npm-context.d.ts +56 -0
- package/dist/src/packages/npm-context.js +235 -0
- package/dist/src/packages/npm-context.js.map +1 -0
- package/dist/src/packages/npm-registry.d.ts +35 -0
- package/dist/src/packages/npm-registry.js +107 -0
- package/dist/src/packages/npm-registry.js.map +1 -0
- package/dist/src/packages/package-error.d.ts +16 -0
- package/dist/src/packages/package-error.js +17 -0
- package/dist/src/packages/package-error.js.map +1 -0
- package/dist/src/packages/package-types.d.ts +477 -0
- package/dist/src/packages/package-types.js +156 -0
- package/dist/src/packages/package-types.js.map +1 -0
- package/dist/src/packages/resolver.d.ts +41 -0
- package/dist/src/packages/resolver.js +353 -0
- package/dist/src/packages/resolver.js.map +1 -0
- package/dist/src/platform/config-builder.d.ts +24 -0
- package/dist/src/platform/config-builder.js +70 -0
- package/dist/src/platform/config-builder.js.map +1 -0
- package/dist/src/platform/index.d.ts +8 -0
- package/dist/src/platform/index.js +9 -0
- package/dist/src/platform/index.js.map +1 -0
- package/dist/src/platform/platform-client.d.ts +160 -0
- package/dist/src/platform/platform-client.js +486 -0
- package/dist/src/platform/platform-client.js.map +1 -0
- package/dist/src/platform/platform-types.d.ts +81 -0
- package/dist/src/platform/platform-types.js +18 -0
- package/dist/src/platform/platform-types.js.map +1 -0
- package/dist/src/providers/content-generator/google-to-llm.d.ts +87 -0
- package/dist/src/providers/content-generator/google-to-llm.js +226 -0
- package/dist/src/providers/content-generator/google-to-llm.js.map +1 -0
- package/dist/src/providers/content-generator/index.d.ts +10 -0
- package/dist/src/providers/content-generator/index.js +9 -0
- package/dist/src/providers/content-generator/index.js.map +1 -0
- package/dist/src/providers/content-generator/llm-to-google.d.ts +59 -0
- package/dist/src/providers/content-generator/llm-to-google.js +178 -0
- package/dist/src/providers/content-generator/llm-to-google.js.map +1 -0
- package/dist/src/providers/content-generator/multi-provider-content-generator.d.ts +61 -0
- package/dist/src/providers/content-generator/multi-provider-content-generator.js +144 -0
- package/dist/src/providers/content-generator/multi-provider-content-generator.js.map +1 -0
- package/dist/src/providers/runtime/anthropic-provider.d.ts +18 -0
- package/dist/src/providers/runtime/anthropic-provider.js +253 -0
- package/dist/src/providers/runtime/anthropic-provider.js.map +1 -0
- package/dist/src/providers/runtime/azure-provider.d.ts +25 -0
- package/dist/src/providers/runtime/azure-provider.js +206 -0
- package/dist/src/providers/runtime/azure-provider.js.map +1 -0
- package/dist/src/providers/runtime/bedrock-provider.d.ts +22 -0
- package/dist/src/providers/runtime/bedrock-provider.js +276 -0
- package/dist/src/providers/runtime/bedrock-provider.js.map +1 -0
- package/dist/src/providers/runtime/failover-provider.d.ts +30 -0
- package/dist/src/providers/runtime/failover-provider.js +124 -0
- package/dist/src/providers/runtime/failover-provider.js.map +1 -0
- package/dist/src/providers/runtime/google-provider.d.ts +17 -0
- package/dist/src/providers/runtime/google-provider.js +239 -0
- package/dist/src/providers/runtime/google-provider.js.map +1 -0
- package/dist/src/providers/runtime/index.d.ts +16 -0
- package/dist/src/providers/runtime/index.js +16 -0
- package/dist/src/providers/runtime/index.js.map +1 -0
- package/dist/src/providers/runtime/openai-provider.d.ts +21 -0
- package/dist/src/providers/runtime/openai-provider.js +266 -0
- package/dist/src/providers/runtime/openai-provider.js.map +1 -0
- package/dist/src/providers/runtime/provider-errors.d.ts +39 -0
- package/dist/src/providers/runtime/provider-errors.js +50 -0
- package/dist/src/providers/runtime/provider-errors.js.map +1 -0
- package/dist/src/providers/runtime/provider-factory.d.ts +19 -0
- package/dist/src/providers/runtime/provider-factory.js +45 -0
- package/dist/src/providers/runtime/provider-factory.js.map +1 -0
- package/dist/src/providers/runtime/runtime-provider-types.d.ts +63 -0
- package/dist/src/providers/runtime/runtime-provider-types.js +7 -0
- package/dist/src/providers/runtime/runtime-provider-types.js.map +1 -0
- package/dist/src/providers/runtime/streaming-types.d.ts +40 -0
- package/dist/src/providers/runtime/streaming-types.js +7 -0
- package/dist/src/providers/runtime/streaming-types.js.map +1 -0
- package/dist/src/repo/config-schema.d.ts +238 -0
- package/dist/src/repo/config-schema.js +155 -0
- package/dist/src/repo/config-schema.js.map +1 -0
- package/dist/src/repo/connection-schemas.d.ts +449 -0
- package/dist/src/repo/connection-schemas.js +109 -0
- package/dist/src/repo/connection-schemas.js.map +1 -0
- package/dist/src/repo/connection-types.d.ts +29 -0
- package/dist/src/repo/connection-types.js +7 -0
- package/dist/src/repo/connection-types.js.map +1 -0
- package/dist/src/repo/drift-detector.d.ts +26 -0
- package/dist/src/repo/drift-detector.js +66 -0
- package/dist/src/repo/drift-detector.js.map +1 -0
- package/dist/src/repo/graphql-drift-detector.d.ts +27 -0
- package/dist/src/repo/graphql-drift-detector.js +66 -0
- package/dist/src/repo/graphql-drift-detector.js.map +1 -0
- package/dist/src/repo/graphql-parser.d.ts +30 -0
- package/dist/src/repo/graphql-parser.js +125 -0
- package/dist/src/repo/graphql-parser.js.map +1 -0
- package/dist/src/repo/graphql-surface-parser.d.ts +20 -0
- package/dist/src/repo/graphql-surface-parser.js +74 -0
- package/dist/src/repo/graphql-surface-parser.js.map +1 -0
- package/dist/src/repo/index.d.ts +30 -0
- package/dist/src/repo/index.js +29 -0
- package/dist/src/repo/index.js.map +1 -0
- package/dist/src/repo/local-reader.d.ts +10 -0
- package/dist/src/repo/local-reader.js +299 -0
- package/dist/src/repo/local-reader.js.map +1 -0
- package/dist/src/repo/openapi-parser.d.ts +35 -0
- package/dist/src/repo/openapi-parser.js +93 -0
- package/dist/src/repo/openapi-parser.js.map +1 -0
- package/dist/src/repo/parsers.d.ts +91 -0
- package/dist/src/repo/parsers.js +454 -0
- package/dist/src/repo/parsers.js.map +1 -0
- package/dist/src/repo/platform-reader.d.ts +10 -0
- package/dist/src/repo/platform-reader.js +206 -0
- package/dist/src/repo/platform-reader.js.map +1 -0
- package/dist/src/repo/repo-loader.d.ts +14 -0
- package/dist/src/repo/repo-loader.js +25 -0
- package/dist/src/repo/repo-loader.js.map +1 -0
- package/dist/src/repo/repo-types.d.ts +159 -0
- package/dist/src/repo/repo-types.js +17 -0
- package/dist/src/repo/repo-types.js.map +1 -0
- package/dist/src/repo/spec-syncer.d.ts +30 -0
- package/dist/src/repo/spec-syncer.js +85 -0
- package/dist/src/repo/spec-syncer.js.map +1 -0
- package/dist/src/repo/store-loader.d.ts +19 -0
- package/dist/src/repo/store-loader.js +94 -0
- package/dist/src/repo/store-loader.js.map +1 -0
- package/dist/src/repo/store-schemas.d.ts +313 -0
- package/dist/src/repo/store-schemas.js +103 -0
- package/dist/src/repo/store-schemas.js.map +1 -0
- package/dist/src/repo/store-tool-schema.d.ts +29 -0
- package/dist/src/repo/store-tool-schema.js +103 -0
- package/dist/src/repo/store-tool-schema.js.map +1 -0
- package/dist/src/repo/store-types.d.ts +91 -0
- package/dist/src/repo/store-types.js +7 -0
- package/dist/src/repo/store-types.js.map +1 -0
- package/dist/src/repo/surface-parser.d.ts +17 -0
- package/dist/src/repo/surface-parser.js +75 -0
- package/dist/src/repo/surface-parser.js.map +1 -0
- package/dist/src/repo/tool-loader.d.ts +33 -0
- package/dist/src/repo/tool-loader.js +240 -0
- package/dist/src/repo/tool-loader.js.map +1 -0
- package/dist/src/repo/tool-types.d.ts +205 -0
- package/dist/src/repo/tool-types.js +61 -0
- package/dist/src/repo/tool-types.js.map +1 -0
- package/dist/src/roles/index.d.ts +7 -0
- package/dist/src/roles/index.js +8 -0
- package/dist/src/roles/index.js.map +1 -0
- package/dist/src/roles/role-filter.d.ts +33 -0
- package/dist/src/roles/role-filter.js +55 -0
- package/dist/src/roles/role-filter.js.map +1 -0
- package/dist/src/roles/role-types.d.ts +76 -0
- package/dist/src/roles/role-types.js +38 -0
- package/dist/src/roles/role-types.js.map +1 -0
- package/dist/src/runtime/connection-bridge.d.ts +19 -0
- package/dist/src/runtime/connection-bridge.js +103 -0
- package/dist/src/runtime/connection-bridge.js.map +1 -0
- package/dist/src/runtime/context-compiler.d.ts +35 -0
- package/dist/src/runtime/context-compiler.js +183 -0
- package/dist/src/runtime/context-compiler.js.map +1 -0
- package/dist/src/runtime/default-prompt.d.ts +28 -0
- package/dist/src/runtime/default-prompt.js +71 -0
- package/dist/src/runtime/default-prompt.js.map +1 -0
- package/dist/src/runtime/explore-tool.d.ts +96 -0
- package/dist/src/runtime/explore-tool.js +111 -0
- package/dist/src/runtime/explore-tool.js.map +1 -0
- package/dist/src/runtime/index.d.ts +26 -0
- package/dist/src/runtime/index.js +19 -0
- package/dist/src/runtime/index.js.map +1 -0
- package/dist/src/runtime/output-pipeline.d.ts +62 -0
- package/dist/src/runtime/output-pipeline.js +69 -0
- package/dist/src/runtime/output-pipeline.js.map +1 -0
- package/dist/src/runtime/plan-mode.d.ts +39 -0
- package/dist/src/runtime/plan-mode.js +81 -0
- package/dist/src/runtime/plan-mode.js.map +1 -0
- package/dist/src/runtime/preference-client.d.ts +39 -0
- package/dist/src/runtime/preference-client.js +70 -0
- package/dist/src/runtime/preference-client.js.map +1 -0
- package/dist/src/runtime/preference-detector.d.ts +22 -0
- package/dist/src/runtime/preference-detector.js +95 -0
- package/dist/src/runtime/preference-detector.js.map +1 -0
- package/dist/src/runtime/request-integration.d.ts +18 -0
- package/dist/src/runtime/request-integration.js +36 -0
- package/dist/src/runtime/request-integration.js.map +1 -0
- package/dist/src/runtime/runtime-types.d.ts +48 -0
- package/dist/src/runtime/runtime-types.js +7 -0
- package/dist/src/runtime/runtime-types.js.map +1 -0
- package/dist/src/runtime/session-setup.d.ts +53 -0
- package/dist/src/runtime/session-setup.js +90 -0
- package/dist/src/runtime/session-setup.js.map +1 -0
- package/dist/src/runtime/telemetry-client.d.ts +39 -0
- package/dist/src/runtime/telemetry-client.js +87 -0
- package/dist/src/runtime/telemetry-client.js.map +1 -0
- package/dist/src/runtime/telemetry-hooks.d.ts +47 -0
- package/dist/src/runtime/telemetry-hooks.js +115 -0
- package/dist/src/runtime/telemetry-hooks.js.map +1 -0
- package/dist/src/runtime/token-allocator.d.ts +34 -0
- package/dist/src/runtime/token-allocator.js +86 -0
- package/dist/src/runtime/token-allocator.js.map +1 -0
- package/dist/src/runtime/user-context.d.ts +49 -0
- package/dist/src/runtime/user-context.js +135 -0
- package/dist/src/runtime/user-context.js.map +1 -0
- package/dist/src/sdk.d.ts +57 -0
- package/dist/src/sdk.js +377 -0
- package/dist/src/sdk.js.map +1 -0
- package/dist/src/security/action-gate.d.ts +23 -0
- package/dist/src/security/action-gate.js +78 -0
- package/dist/src/security/action-gate.js.map +1 -0
- package/dist/src/security/field-scrubber.d.ts +27 -0
- package/dist/src/security/field-scrubber.js +152 -0
- package/dist/src/security/field-scrubber.js.map +1 -0
- package/dist/src/security/index.d.ts +14 -0
- package/dist/src/security/index.js +15 -0
- package/dist/src/security/index.js.map +1 -0
- package/dist/src/security/leak-detector.d.ts +23 -0
- package/dist/src/security/leak-detector.js +51 -0
- package/dist/src/security/leak-detector.js.map +1 -0
- package/dist/src/security/output-guard.d.ts +33 -0
- package/dist/src/security/output-guard.js +118 -0
- package/dist/src/security/output-guard.js.map +1 -0
- package/dist/src/security/pattern-scanner.d.ts +19 -0
- package/dist/src/security/pattern-scanner.js +66 -0
- package/dist/src/security/pattern-scanner.js.map +1 -0
- package/dist/src/security/scope-checker.d.ts +27 -0
- package/dist/src/security/scope-checker.js +52 -0
- package/dist/src/security/scope-checker.js.map +1 -0
- package/dist/src/security/scrub-tracker.d.ts +21 -0
- package/dist/src/security/scrub-tracker.js +39 -0
- package/dist/src/security/scrub-tracker.js.map +1 -0
- package/dist/src/security/security-types.d.ts +69 -0
- package/dist/src/security/security-types.js +17 -0
- package/dist/src/security/security-types.js.map +1 -0
- package/dist/src/security/threshold-evaluator.d.ts +13 -0
- package/dist/src/security/threshold-evaluator.js +44 -0
- package/dist/src/security/threshold-evaluator.js.map +1 -0
- package/dist/src/snapshot/index.d.ts +8 -0
- package/dist/src/snapshot/index.js +9 -0
- package/dist/src/snapshot/index.js.map +1 -0
- package/dist/src/snapshot/snapshot-builder.d.ts +37 -0
- package/dist/src/snapshot/snapshot-builder.js +152 -0
- package/dist/src/snapshot/snapshot-builder.js.map +1 -0
- package/dist/src/snapshot/snapshot-loader.d.ts +29 -0
- package/dist/src/snapshot/snapshot-loader.js +188 -0
- package/dist/src/snapshot/snapshot-loader.js.map +1 -0
- package/dist/src/snapshot/snapshot-types.d.ts +1940 -0
- package/dist/src/snapshot/snapshot-types.js +145 -0
- package/dist/src/snapshot/snapshot-types.js.map +1 -0
- package/dist/src/stores/index.d.ts +6 -0
- package/dist/src/stores/index.js +7 -0
- package/dist/src/stores/index.js.map +1 -0
- package/dist/src/stores/store-backend.d.ts +135 -0
- package/dist/src/stores/store-backend.js +7 -0
- package/dist/src/stores/store-backend.js.map +1 -0
- package/dist/src/templates/connections.d.ts +14 -0
- package/dist/src/templates/connections.js +7 -0
- package/dist/src/templates/connections.js.map +1 -0
- package/dist/src/templates/index.d.ts +7 -0
- package/dist/src/templates/index.js +8 -0
- package/dist/src/templates/index.js.map +1 -0
- package/dist/src/templates/template-resolver.d.ts +45 -0
- package/dist/src/templates/template-resolver.js +121 -0
- package/dist/src/templates/template-resolver.js.map +1 -0
- package/dist/src/tool-context.d.ts +33 -0
- package/dist/src/tool-context.js +7 -0
- package/dist/src/tool-context.js.map +1 -0
- package/dist/src/tool-registration.d.ts +14 -0
- package/dist/src/tool-registration.js +51 -0
- package/dist/src/tool-registration.js.map +1 -0
- package/dist/src/tools/amodal-tool-errors.d.ts +24 -0
- package/dist/src/tools/amodal-tool-errors.js +28 -0
- package/dist/src/tools/amodal-tool-errors.js.map +1 -0
- package/dist/src/tools/amodal-tool-names.d.ts +14 -0
- package/dist/src/tools/amodal-tool-names.js +15 -0
- package/dist/src/tools/amodal-tool-names.js.map +1 -0
- package/dist/src/tools/chain-tool-registry.d.ts +20 -0
- package/dist/src/tools/chain-tool-registry.js +49 -0
- package/dist/src/tools/chain-tool-registry.js.map +1 -0
- package/dist/src/tools/chain-tool-types.d.ts +190 -0
- package/dist/src/tools/chain-tool-types.js +50 -0
- package/dist/src/tools/chain-tool-types.js.map +1 -0
- package/dist/src/tools/chain-tool.d.ts +34 -0
- package/dist/src/tools/chain-tool.js +294 -0
- package/dist/src/tools/chain-tool.js.map +1 -0
- package/dist/src/tools/custom-tool-registrar.d.ts +8 -0
- package/dist/src/tools/custom-tool-registrar.js +10 -0
- package/dist/src/tools/custom-tool-registrar.js.map +1 -0
- package/dist/src/tools/definitions/amodal-tools.d.ts +9 -0
- package/dist/src/tools/definitions/amodal-tools.js +192 -0
- package/dist/src/tools/definitions/amodal-tools.js.map +1 -0
- package/dist/src/tools/function-tool-registry.d.ts +22 -0
- package/dist/src/tools/function-tool-registry.js +45 -0
- package/dist/src/tools/function-tool-registry.js.map +1 -0
- package/dist/src/tools/function-tool-types.d.ts +76 -0
- package/dist/src/tools/function-tool-types.js +27 -0
- package/dist/src/tools/function-tool-types.js.map +1 -0
- package/dist/src/tools/function-tool.d.ts +34 -0
- package/dist/src/tools/function-tool.js +97 -0
- package/dist/src/tools/function-tool.js.map +1 -0
- package/dist/src/tools/http-tool-registry.d.ts +20 -0
- package/dist/src/tools/http-tool-registry.js +34 -0
- package/dist/src/tools/http-tool-registry.js.map +1 -0
- package/dist/src/tools/http-tool-types.d.ts +92 -0
- package/dist/src/tools/http-tool-types.js +44 -0
- package/dist/src/tools/http-tool-types.js.map +1 -0
- package/dist/src/tools/http-tool.d.ts +32 -0
- package/dist/src/tools/http-tool.js +176 -0
- package/dist/src/tools/http-tool.js.map +1 -0
- package/dist/src/tools/merge-template.d.ts +33 -0
- package/dist/src/tools/merge-template.js +65 -0
- package/dist/src/tools/merge-template.js.map +1 -0
- package/dist/src/tools/request-tool-types.d.ts +46 -0
- package/dist/src/tools/request-tool-types.js +20 -0
- package/dist/src/tools/request-tool-types.js.map +1 -0
- package/dist/src/tools/request-tool.d.ts +29 -0
- package/dist/src/tools/request-tool.js +268 -0
- package/dist/src/tools/request-tool.js.map +1 -0
- package/dist/src/tools/store-query-tool.d.ts +29 -0
- package/dist/src/tools/store-query-tool.js +82 -0
- package/dist/src/tools/store-query-tool.js.map +1 -0
- package/dist/src/tools/store-write-tool.d.ts +26 -0
- package/dist/src/tools/store-write-tool.js +84 -0
- package/dist/src/tools/store-write-tool.js.map +1 -0
- package/dist/src/tools/tool-definition-types.d.ts +21 -0
- package/dist/src/tools/tool-definition-types.js +7 -0
- package/dist/src/tools/tool-definition-types.js.map +1 -0
- package/dist/src/tools/tool-utils.d.ts +29 -0
- package/dist/src/tools/tool-utils.js +66 -0
- package/dist/src/tools/tool-utils.js.map +1 -0
- package/dist/src/versions/bundle-loader.d.ts +37 -0
- package/dist/src/versions/bundle-loader.js +99 -0
- package/dist/src/versions/bundle-loader.js.map +1 -0
- package/dist/src/versions/dependency-manager.d.ts +54 -0
- package/dist/src/versions/dependency-manager.js +132 -0
- package/dist/src/versions/dependency-manager.js.map +1 -0
- package/dist/src/versions/handler-loader.d.ts +27 -0
- package/dist/src/versions/handler-loader.js +62 -0
- package/dist/src/versions/handler-loader.js.map +1 -0
- package/dist/src/versions/index.d.ts +10 -0
- package/dist/src/versions/index.js +11 -0
- package/dist/src/versions/index.js.map +1 -0
- package/dist/src/versions/version-bundle-types.d.ts +1278 -0
- package/dist/src/versions/version-bundle-types.js +207 -0
- package/dist/src/versions/version-bundle-types.js.map +1 -0
- package/dist/src/versions/version-manager.d.ts +89 -0
- package/dist/src/versions/version-manager.js +124 -0
- package/dist/src/versions/version-manager.js.map +1 -0
- package/dist/src/widgets/index.d.ts +8 -0
- package/dist/src/widgets/index.js +8 -0
- package/dist/src/widgets/index.js.map +1 -0
- package/dist/src/widgets/present-tool.d.ts +21 -0
- package/dist/src/widgets/present-tool.js +107 -0
- package/dist/src/widgets/present-tool.js.map +1 -0
- package/dist/src/widgets/widget-types.d.ts +78 -0
- package/dist/src/widgets/widget-types.js +28 -0
- package/dist/src/widgets/widget-types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,26 @@
|
|
|
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 { LoadedStore } from '../repo/store-types.js';
|
|
10
|
+
import type { StoreBackend } from '../stores/store-backend.js';
|
|
11
|
+
interface StoreWriteParams {
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Tool for writing a document to a specific store collection.
|
|
16
|
+
* One instance per store definition. The LLM fills in the entity fields
|
|
17
|
+
* and the tool resolves the key, validates, and persists.
|
|
18
|
+
*/
|
|
19
|
+
export declare class StoreWriteTool extends BaseDeclarativeTool<StoreWriteParams, ToolResult> {
|
|
20
|
+
private readonly store;
|
|
21
|
+
private readonly backend;
|
|
22
|
+
private readonly tenantId;
|
|
23
|
+
constructor(store: LoadedStore, backend: StoreBackend, tenantId: string, messageBus: MessageBus);
|
|
24
|
+
protected createInvocation(params: StoreWriteParams, messageBus: MessageBus, _toolName?: string, _toolDisplayName?: string): ToolInvocation<StoreWriteParams, ToolResult>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { BaseDeclarativeTool, BaseToolInvocation, Kind } from '@google/gemini-cli-core';
|
|
7
|
+
import { ToolErrorType } from '@google/gemini-cli-core';
|
|
8
|
+
import { storeToToolName, storeToJsonSchema } from '../repo/store-tool-schema.js';
|
|
9
|
+
/**
|
|
10
|
+
* Resolve a key template (e.g., "{alert_id}") from payload values.
|
|
11
|
+
*/
|
|
12
|
+
function resolveKey(template, payload) {
|
|
13
|
+
return template.replace(/\{(\w+)\}/g, (_match, field) => {
|
|
14
|
+
const value = payload[field];
|
|
15
|
+
if (value === undefined || value === null) {
|
|
16
|
+
throw new Error(`Missing required field "${field}" for key template "${template}"`);
|
|
17
|
+
}
|
|
18
|
+
return String(value);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
class StoreWriteInvocation extends BaseToolInvocation {
|
|
22
|
+
store;
|
|
23
|
+
backend;
|
|
24
|
+
tenantId;
|
|
25
|
+
constructor(params, messageBus, store, backend, tenantId, _toolName, _toolDisplayName) {
|
|
26
|
+
super(params, messageBus, _toolName, _toolDisplayName);
|
|
27
|
+
this.store = store;
|
|
28
|
+
this.backend = backend;
|
|
29
|
+
this.tenantId = tenantId;
|
|
30
|
+
}
|
|
31
|
+
getDescription() {
|
|
32
|
+
return `Store a ${this.store.entity.name} to ${this.store.name}`;
|
|
33
|
+
}
|
|
34
|
+
async execute(_signal) {
|
|
35
|
+
let key;
|
|
36
|
+
try {
|
|
37
|
+
key = resolveKey(this.store.entity.key, this.params);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
41
|
+
return {
|
|
42
|
+
llmContent: `Error: ${message}`,
|
|
43
|
+
returnDisplay: `Error: ${message}`,
|
|
44
|
+
error: { message, type: ToolErrorType.INVALID_TOOL_PARAMS },
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const result = await this.backend.put(this.tenantId, this.store.name, key, this.params, {});
|
|
49
|
+
const output = JSON.stringify(result);
|
|
50
|
+
return {
|
|
51
|
+
llmContent: output,
|
|
52
|
+
returnDisplay: `Stored ${this.store.entity.name} with key "${key}" (v${String(result.version)})`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
57
|
+
return {
|
|
58
|
+
llmContent: `Error: ${message}`,
|
|
59
|
+
returnDisplay: `Error storing ${this.store.entity.name}`,
|
|
60
|
+
error: { message, type: ToolErrorType.EXECUTION_FAILED },
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Tool for writing a document to a specific store collection.
|
|
67
|
+
* One instance per store definition. The LLM fills in the entity fields
|
|
68
|
+
* and the tool resolves the key, validates, and persists.
|
|
69
|
+
*/
|
|
70
|
+
export class StoreWriteTool extends BaseDeclarativeTool {
|
|
71
|
+
store;
|
|
72
|
+
backend;
|
|
73
|
+
tenantId;
|
|
74
|
+
constructor(store, backend, tenantId, messageBus) {
|
|
75
|
+
super(storeToToolName(store.name), `Store ${store.entity.name}`, `Store a ${store.entity.name} to the ${store.name} collection.`, Kind.Execute, storeToJsonSchema(store), messageBus, false, false);
|
|
76
|
+
this.store = store;
|
|
77
|
+
this.backend = backend;
|
|
78
|
+
this.tenantId = tenantId;
|
|
79
|
+
}
|
|
80
|
+
createInvocation(params, messageBus, _toolName, _toolDisplayName) {
|
|
81
|
+
return new StoreWriteInvocation(params, messageBus, this.store, this.backend, this.tenantId, _toolName, _toolDisplayName);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=store-write-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-write-tool.js","sourceRoot":"","sources":["../../../src/tools/store-write-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Tool definition shape used by amodal tools.
|
|
8
|
+
* Mirrors the upstream ToolDefinition interface without importing it
|
|
9
|
+
* (since it's not exported from @google/gemini-cli-core's public API).
|
|
10
|
+
*/
|
|
11
|
+
export interface ToolDefinition {
|
|
12
|
+
base: {
|
|
13
|
+
name: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
parametersJsonSchema?: Record<string, unknown>;
|
|
16
|
+
};
|
|
17
|
+
overrides?: Record<string, {
|
|
18
|
+
description?: string;
|
|
19
|
+
parametersJsonSchema?: Record<string, unknown>;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-definition-types.js","sourceRoot":"","sources":["../../../src/tools/tool-definition-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import type { TemplateError } from '../templates/template-resolver.js';
|
|
7
|
+
import type { ResponseShaping } from './http-tool-types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Make an HTTP request with abort-signal-based timeout.
|
|
10
|
+
*/
|
|
11
|
+
export declare function httpFetch(url: string, options: {
|
|
12
|
+
method: string;
|
|
13
|
+
headers: Record<string, string>;
|
|
14
|
+
body?: string;
|
|
15
|
+
timeout: number;
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
}): Promise<Response>;
|
|
18
|
+
/**
|
|
19
|
+
* Extract a value at a dot-separated path from a parsed JSON object.
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractPath(obj: unknown, path: string): unknown;
|
|
22
|
+
/**
|
|
23
|
+
* Shape a response according to the responseShaping config.
|
|
24
|
+
*/
|
|
25
|
+
export declare function shapeResponse(data: unknown, shaping: ResponseShaping | undefined): string;
|
|
26
|
+
/**
|
|
27
|
+
* Format template resolution errors into a human-readable string.
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatTemplateErrors(errors: TemplateError[]): string;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Make an HTTP request with abort-signal-based timeout.
|
|
8
|
+
*/
|
|
9
|
+
export async function httpFetch(url, options) {
|
|
10
|
+
const controller = new AbortController();
|
|
11
|
+
const timeoutId = setTimeout(() => controller.abort(), options.timeout);
|
|
12
|
+
// If an external signal is provided, listen for it
|
|
13
|
+
if (options.signal) {
|
|
14
|
+
options.signal.addEventListener('abort', () => controller.abort(), {
|
|
15
|
+
once: true,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
return await fetch(url, {
|
|
20
|
+
method: options.method,
|
|
21
|
+
headers: options.headers,
|
|
22
|
+
body: options.body,
|
|
23
|
+
signal: controller.signal,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
clearTimeout(timeoutId);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extract a value at a dot-separated path from a parsed JSON object.
|
|
32
|
+
*/
|
|
33
|
+
export function extractPath(obj, path) {
|
|
34
|
+
const segments = path.split('.');
|
|
35
|
+
let current = obj;
|
|
36
|
+
for (const segment of segments) {
|
|
37
|
+
if (current === null || current === undefined || typeof current !== 'object') {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
current = current[segment]; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
41
|
+
}
|
|
42
|
+
return current;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Shape a response according to the responseShaping config.
|
|
46
|
+
*/
|
|
47
|
+
export function shapeResponse(data, shaping) {
|
|
48
|
+
let result = data;
|
|
49
|
+
if (shaping?.path) {
|
|
50
|
+
const extracted = extractPath(data, shaping.path);
|
|
51
|
+
result = extracted !== undefined ? extracted : data;
|
|
52
|
+
}
|
|
53
|
+
const str = typeof result === 'string' ? result : JSON.stringify(result);
|
|
54
|
+
const maxLength = shaping?.maxLength ?? 50000;
|
|
55
|
+
if (str.length > maxLength) {
|
|
56
|
+
return str.slice(0, maxLength) + '\n... [truncated]';
|
|
57
|
+
}
|
|
58
|
+
return str;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Format template resolution errors into a human-readable string.
|
|
62
|
+
*/
|
|
63
|
+
export function formatTemplateErrors(errors) {
|
|
64
|
+
return errors.map((e) => ` - {{${e.expression}}}: ${e.message}`).join('\n');
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=tool-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-utils.js","sourceRoot":"","sources":["../../../src/tools/tool-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,OAMC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAExE,mDAAmD;IACnD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE;YACjE,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,IAAY;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC7E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC,CAAC,kEAAkE;IAC7H,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAa,EACb,OAAoC;IAEpC,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;IAE9C,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,mBAAmB,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,UAAU,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import type { VersionBundle } from './version-bundle-types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Error codes for bundle loading failures.
|
|
9
|
+
*/
|
|
10
|
+
export type VersionBundleErrorCode = 'FETCH_FAILED' | 'PARSE_FAILED' | 'VALIDATION_FAILED';
|
|
11
|
+
/**
|
|
12
|
+
* Error thrown when a version bundle cannot be loaded.
|
|
13
|
+
*/
|
|
14
|
+
export declare class VersionBundleError extends Error {
|
|
15
|
+
readonly code: VersionBundleErrorCode;
|
|
16
|
+
constructor(code: VersionBundleErrorCode, message: string, cause?: unknown);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Source for loading a bundle — either a URL or a local file path.
|
|
20
|
+
*/
|
|
21
|
+
export interface BundleSource {
|
|
22
|
+
url?: string;
|
|
23
|
+
path?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Load a version bundle from a remote URL.
|
|
27
|
+
*/
|
|
28
|
+
export declare function loadBundleFromUrl(url: string, timeout?: number): Promise<VersionBundle>;
|
|
29
|
+
/**
|
|
30
|
+
* Load a version bundle from a local file.
|
|
31
|
+
*/
|
|
32
|
+
export declare function loadBundleFromFile(filePath: string): Promise<VersionBundle>;
|
|
33
|
+
/**
|
|
34
|
+
* Load a bundle from either a URL or file path.
|
|
35
|
+
* Exactly one of `url` or `path` must be provided.
|
|
36
|
+
*/
|
|
37
|
+
export declare function loadBundle(source: BundleSource): Promise<VersionBundle>;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { readFile } from 'node:fs/promises';
|
|
7
|
+
import { ZodError } from 'zod';
|
|
8
|
+
import { VersionBundleSchema } from './version-bundle-types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Error thrown when a version bundle cannot be loaded.
|
|
11
|
+
*/
|
|
12
|
+
export class VersionBundleError extends Error {
|
|
13
|
+
code;
|
|
14
|
+
constructor(code, message, cause) {
|
|
15
|
+
super(message, { cause });
|
|
16
|
+
this.name = 'VersionBundleError';
|
|
17
|
+
this.code = code;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Load a version bundle from a remote URL.
|
|
22
|
+
*/
|
|
23
|
+
export async function loadBundleFromUrl(url, timeout = 30000) {
|
|
24
|
+
let response;
|
|
25
|
+
try {
|
|
26
|
+
const controller = new AbortController();
|
|
27
|
+
const timer = setTimeout(() => controller.abort(), timeout);
|
|
28
|
+
response = await fetch(url, { signal: controller.signal });
|
|
29
|
+
clearTimeout(timer);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
throw new VersionBundleError('FETCH_FAILED', `Failed to fetch bundle from ${url}`, err);
|
|
33
|
+
}
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
throw new VersionBundleError('FETCH_FAILED', `HTTP ${String(response.status)} fetching bundle from ${url}`);
|
|
36
|
+
}
|
|
37
|
+
let data;
|
|
38
|
+
try {
|
|
39
|
+
data = await response.json();
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
throw new VersionBundleError('PARSE_FAILED', `Invalid JSON in bundle from ${url}`, err);
|
|
43
|
+
}
|
|
44
|
+
return validateBundle(data);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Load a version bundle from a local file.
|
|
48
|
+
*/
|
|
49
|
+
export async function loadBundleFromFile(filePath) {
|
|
50
|
+
let raw;
|
|
51
|
+
try {
|
|
52
|
+
raw = await readFile(filePath, 'utf-8');
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
throw new VersionBundleError('FETCH_FAILED', `Failed to read bundle file: ${filePath}`, err);
|
|
56
|
+
}
|
|
57
|
+
let data;
|
|
58
|
+
try {
|
|
59
|
+
data = JSON.parse(raw);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
throw new VersionBundleError('PARSE_FAILED', `Invalid JSON in bundle file: ${filePath}`, err);
|
|
63
|
+
}
|
|
64
|
+
return validateBundle(data);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Load a bundle from either a URL or file path.
|
|
68
|
+
* Exactly one of `url` or `path` must be provided.
|
|
69
|
+
*/
|
|
70
|
+
export async function loadBundle(source) {
|
|
71
|
+
if (source.url && source.path) {
|
|
72
|
+
throw new VersionBundleError('VALIDATION_FAILED', 'Provide either url or path, not both');
|
|
73
|
+
}
|
|
74
|
+
if (source.url) {
|
|
75
|
+
return loadBundleFromUrl(source.url);
|
|
76
|
+
}
|
|
77
|
+
if (source.path) {
|
|
78
|
+
return loadBundleFromFile(source.path);
|
|
79
|
+
}
|
|
80
|
+
throw new VersionBundleError('VALIDATION_FAILED', 'Either url or path must be provided');
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validate raw data against the VersionBundle schema.
|
|
84
|
+
*/
|
|
85
|
+
function validateBundle(data) {
|
|
86
|
+
try {
|
|
87
|
+
return VersionBundleSchema.parse(data);
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
if (err instanceof ZodError) {
|
|
91
|
+
const issues = err.issues
|
|
92
|
+
.map((i) => `${i.path.join('.')}: ${i.message}`)
|
|
93
|
+
.join('; ');
|
|
94
|
+
throw new VersionBundleError('VALIDATION_FAILED', `Bundle validation failed: ${issues}`, err);
|
|
95
|
+
}
|
|
96
|
+
throw new VersionBundleError('VALIDATION_FAILED', 'Bundle validation failed', err);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=bundle-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-loader.js","sourceRoot":"","sources":["../../../src/versions/bundle-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import type { BundleDependencies } from './version-bundle-types.js';
|
|
7
|
+
export interface DependencyDiff {
|
|
8
|
+
npm: {
|
|
9
|
+
added: Record<string, string>;
|
|
10
|
+
removed: string[];
|
|
11
|
+
changed: Record<string, string>;
|
|
12
|
+
};
|
|
13
|
+
pip: {
|
|
14
|
+
added: Record<string, string>;
|
|
15
|
+
removed: string[];
|
|
16
|
+
changed: Record<string, string>;
|
|
17
|
+
};
|
|
18
|
+
system: {
|
|
19
|
+
added: string[];
|
|
20
|
+
removed: string[];
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Compute the difference between old and new dependencies.
|
|
25
|
+
* Pure function — no side effects.
|
|
26
|
+
*/
|
|
27
|
+
export declare function diffDependencies(oldDeps: BundleDependencies, newDeps: BundleDependencies): DependencyDiff;
|
|
28
|
+
/**
|
|
29
|
+
* Install npm dependencies into a version directory.
|
|
30
|
+
* Creates a package.json and runs `pnpm install --prod`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function installNpmDependencies(deps: Record<string, string>, versionDir: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Install pip dependencies into a version directory.
|
|
35
|
+
* Uses `pip install --target <dir>/python_modules`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function installPipDependencies(deps: Record<string, string>, versionDir: string): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Verify that required system binaries are available.
|
|
40
|
+
* Returns the list of missing binaries.
|
|
41
|
+
*/
|
|
42
|
+
export declare function verifySystemBinaries(binaries: string[]): Promise<{
|
|
43
|
+
missing: string[];
|
|
44
|
+
}>;
|
|
45
|
+
export interface DependencyInstallResult {
|
|
46
|
+
npmInstalled: boolean;
|
|
47
|
+
pipInstalled: boolean;
|
|
48
|
+
missingBinaries: string[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Install all dependencies from a diff into a version directory.
|
|
52
|
+
* Returns the installation result. Throws if system binaries are missing.
|
|
53
|
+
*/
|
|
54
|
+
export declare function installDependencies(diff: DependencyDiff, versionDir: string): Promise<DependencyInstallResult>;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { execFile } from 'node:child_process';
|
|
7
|
+
import { writeFile, mkdir } from 'node:fs/promises';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { promisify } from 'node:util';
|
|
10
|
+
const execFileAsync = promisify(execFile);
|
|
11
|
+
/** Maximum time (ms) for dependency installation commands. */
|
|
12
|
+
const INSTALL_TIMEOUT = 120_000;
|
|
13
|
+
/** Maximum time (ms) for `which` binary check. */
|
|
14
|
+
const WHICH_TIMEOUT = 5_000;
|
|
15
|
+
/**
|
|
16
|
+
* Compute the difference between old and new dependencies.
|
|
17
|
+
* Pure function — no side effects.
|
|
18
|
+
*/
|
|
19
|
+
export function diffDependencies(oldDeps, newDeps) {
|
|
20
|
+
return {
|
|
21
|
+
npm: diffPackages(oldDeps.npm ?? {}, newDeps.npm ?? {}),
|
|
22
|
+
pip: diffPackages(oldDeps.pip ?? {}, newDeps.pip ?? {}),
|
|
23
|
+
system: diffArrays(oldDeps.system ?? [], newDeps.system ?? []),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function diffPackages(oldPkgs, newPkgs) {
|
|
27
|
+
const added = {};
|
|
28
|
+
const removed = [];
|
|
29
|
+
const changed = {};
|
|
30
|
+
for (const [name, version] of Object.entries(newPkgs)) {
|
|
31
|
+
if (!(name in oldPkgs)) {
|
|
32
|
+
added[name] = version;
|
|
33
|
+
}
|
|
34
|
+
else if (oldPkgs[name] !== version) {
|
|
35
|
+
changed[name] = version;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
for (const name of Object.keys(oldPkgs)) {
|
|
39
|
+
if (!(name in newPkgs)) {
|
|
40
|
+
removed.push(name);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return { added, removed, changed };
|
|
44
|
+
}
|
|
45
|
+
function diffArrays(oldArr, newArr) {
|
|
46
|
+
const oldSet = new Set(oldArr);
|
|
47
|
+
const newSet = new Set(newArr);
|
|
48
|
+
return {
|
|
49
|
+
added: newArr.filter((s) => !oldSet.has(s)),
|
|
50
|
+
removed: oldArr.filter((s) => !newSet.has(s)),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
// npm dependency installation
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
/**
|
|
57
|
+
* Install npm dependencies into a version directory.
|
|
58
|
+
* Creates a package.json and runs `pnpm install --prod`.
|
|
59
|
+
*/
|
|
60
|
+
export async function installNpmDependencies(deps, versionDir) {
|
|
61
|
+
if (Object.keys(deps).length === 0)
|
|
62
|
+
return;
|
|
63
|
+
const pkgJson = {
|
|
64
|
+
name: 'version-bundle-deps',
|
|
65
|
+
version: '0.0.0',
|
|
66
|
+
private: true,
|
|
67
|
+
dependencies: deps,
|
|
68
|
+
};
|
|
69
|
+
await mkdir(versionDir, { recursive: true });
|
|
70
|
+
await writeFile(path.join(versionDir, 'package.json'), JSON.stringify(pkgJson, null, 2));
|
|
71
|
+
await execFileAsync('pnpm', ['install', '--prod'], {
|
|
72
|
+
cwd: versionDir,
|
|
73
|
+
timeout: INSTALL_TIMEOUT,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// pip dependency installation
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
/**
|
|
80
|
+
* Install pip dependencies into a version directory.
|
|
81
|
+
* Uses `pip install --target <dir>/python_modules`.
|
|
82
|
+
*/
|
|
83
|
+
export async function installPipDependencies(deps, versionDir) {
|
|
84
|
+
if (Object.keys(deps).length === 0)
|
|
85
|
+
return;
|
|
86
|
+
const targetDir = path.join(versionDir, 'python_modules');
|
|
87
|
+
await mkdir(targetDir, { recursive: true });
|
|
88
|
+
const packages = Object.entries(deps).map(([name, version]) => `${name}==${version}`);
|
|
89
|
+
await execFileAsync('pip', ['install', '--target', targetDir, ...packages], { cwd: versionDir, timeout: INSTALL_TIMEOUT });
|
|
90
|
+
}
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
// System binary verification
|
|
93
|
+
// ---------------------------------------------------------------------------
|
|
94
|
+
/**
|
|
95
|
+
* Verify that required system binaries are available.
|
|
96
|
+
* Returns the list of missing binaries.
|
|
97
|
+
*/
|
|
98
|
+
export async function verifySystemBinaries(binaries) {
|
|
99
|
+
if (binaries.length === 0)
|
|
100
|
+
return { missing: [] };
|
|
101
|
+
const missing = [];
|
|
102
|
+
for (const binary of binaries) {
|
|
103
|
+
try {
|
|
104
|
+
await execFileAsync('which', [binary], { timeout: WHICH_TIMEOUT });
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
missing.push(binary);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return { missing };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Install all dependencies from a diff into a version directory.
|
|
114
|
+
* Returns the installation result. Throws if system binaries are missing.
|
|
115
|
+
*/
|
|
116
|
+
export async function installDependencies(diff, versionDir) {
|
|
117
|
+
// Merge added + changed into a single set to install
|
|
118
|
+
const npmToInstall = { ...diff.npm.added, ...diff.npm.changed };
|
|
119
|
+
const pipToInstall = { ...diff.pip.added, ...diff.pip.changed };
|
|
120
|
+
// Install npm and pip in parallel
|
|
121
|
+
const [, , systemResult] = await Promise.all([
|
|
122
|
+
installNpmDependencies(npmToInstall, versionDir),
|
|
123
|
+
installPipDependencies(pipToInstall, versionDir),
|
|
124
|
+
verifySystemBinaries(diff.system.added),
|
|
125
|
+
]);
|
|
126
|
+
return {
|
|
127
|
+
npmInstalled: Object.keys(npmToInstall).length > 0,
|
|
128
|
+
pipInstalled: Object.keys(pipToInstall).length > 0,
|
|
129
|
+
missingBinaries: systemResult.missing,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=dependency-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-manager.js","sourceRoot":"","sources":["../../../src/versions/dependency-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import type { BundleHandler } from './version-bundle-types.js';
|
|
7
|
+
import type { FunctionHandlerMap } from '../tools/function-tool-types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Convert a .ts entry filename to .mjs for Node ESM dynamic import.
|
|
10
|
+
*/
|
|
11
|
+
export declare function toMjsFilename(filename: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Write handler source files to disk.
|
|
14
|
+
* Each handler's files are written to `<versionDir>/handlers/<handlerName>/`.
|
|
15
|
+
* Entry .ts files are written as .mjs for ESM compatibility.
|
|
16
|
+
*/
|
|
17
|
+
export declare function writeHandlerFiles(handlers: Record<string, BundleHandler>, versionDir: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Dynamically import handler entry files and extract default exports.
|
|
20
|
+
* Each handler must export a default function matching FunctionToolHandler.
|
|
21
|
+
*/
|
|
22
|
+
export declare function importHandlers(handlers: Record<string, BundleHandler>, versionDir: string): Promise<FunctionHandlerMap>;
|
|
23
|
+
/**
|
|
24
|
+
* Write handler files to disk and import them.
|
|
25
|
+
* Combined convenience function.
|
|
26
|
+
*/
|
|
27
|
+
export declare function loadHandlers(handlers: Record<string, BundleHandler>, versionDir: string): Promise<FunctionHandlerMap>;
|