noodleseed-cli 0.1.4
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 +176 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +625 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +52 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +77 -0
- package/dist/config.js.map +1 -0
- package/dist/control-plane.d.ts +33 -0
- package/dist/control-plane.d.ts.map +1 -0
- package/dist/control-plane.js +223 -0
- package/dist/control-plane.js.map +1 -0
- package/dist/deploy.d.ts +62 -0
- package/dist/deploy.d.ts.map +1 -0
- package/dist/deploy.js +182 -0
- package/dist/deploy.js.map +1 -0
- package/dist/dev.d.ts +50 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +223 -0
- package/dist/dev.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/validate.d.ts +37 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +46 -0
- package/dist/validate.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/index.d.ts +14 -0
- package/node_modules/@noodle-borg/auth/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/index.js +14 -0
- package/node_modules/@noodle-borg/auth/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts +21 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js +24 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/metadata.d.ts +27 -0
- package/node_modules/@noodle-borg/auth/dist/metadata.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/metadata.js +21 -0
- package/node_modules/@noodle-borg/auth/dist/metadata.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/signer.d.ts +45 -0
- package/node_modules/@noodle-borg/auth/dist/signer.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/signer.js +47 -0
- package/node_modules/@noodle-borg/auth/dist/signer.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts +42 -0
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/verify.js +48 -0
- package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -0
- package/node_modules/@noodle-borg/auth/package.json +27 -0
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts +200 -0
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/authoring/dist/index.js +504 -0
- package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/authoring/package.json +29 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +203 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.js +20 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.d.ts +13 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js +19 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/signature.d.ts +11 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/signature.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/signature.js +31 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/signature.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts +43 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.js +11 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/cli.d.ts +3 -0
- package/node_modules/@noodle-borg/compiler/dist/cli.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/cli.js +19 -0
- package/node_modules/@noodle-borg/compiler/dist/cli.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.d.ts +50 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.js +719 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +27 -0
- package/node_modules/@noodle-borg/compiler/dist/errors.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/errors.js +2 -0
- package/node_modules/@noodle-borg/compiler/dist/errors.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/index.d.ts +13 -0
- package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/index.js +11 -0
- package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.d.ts +136 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.js +552 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.d.ts +14 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.js +18 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.d.ts +24 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.js +149 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +97 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +157 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/schema-export.d.ts +6 -0
- package/node_modules/@noodle-borg/compiler/dist/schema-export.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/schema-export.js +28 -0
- package/node_modules/@noodle-borg/compiler/dist/schema-export.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/suggest.d.ts +41 -0
- package/node_modules/@noodle-borg/compiler/dist/suggest.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/suggest.js +105 -0
- package/node_modules/@noodle-borg/compiler/dist/suggest.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/uri-template.d.ts +33 -0
- package/node_modules/@noodle-borg/compiler/dist/uri-template.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/uri-template.js +83 -0
- package/node_modules/@noodle-borg/compiler/dist/uri-template.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/package.json +32 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts +45 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.js +53 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.js.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/engine.d.ts +73 -0
- package/node_modules/@noodle-borg/compute/dist/engine.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/engine.js +31 -0
- package/node_modules/@noodle-borg/compute/dist/engine.js.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/index.d.ts +4 -0
- package/node_modules/@noodle-borg/compute/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/index.js +4 -0
- package/node_modules/@noodle-borg/compute/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/quickjs-engine.d.ts +31 -0
- package/node_modules/@noodle-borg/compute/dist/quickjs-engine.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/quickjs-engine.js +271 -0
- package/node_modules/@noodle-borg/compute/dist/quickjs-engine.js.map +1 -0
- package/node_modules/@noodle-borg/compute/package.json +29 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts +46 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.js +289 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/index.d.ts +3 -0
- package/node_modules/@noodle-borg/connector-defs/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/index.js +3 -0
- package/node_modules/@noodle-borg/connector-defs/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +332 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.js +105 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/package.json +32 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +86 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +138 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/index.d.ts +3 -0
- package/node_modules/@noodle-borg/connector-http/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/index.js +3 -0
- package/node_modules/@noodle-borg/connector-http/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.d.ts +45 -0
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.js +57 -0
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.js.map +1 -0
- package/node_modules/@noodle-borg/connector-http/package.json +30 -0
- package/node_modules/@noodle-borg/protocol/dist/adapter.d.ts +73 -0
- package/node_modules/@noodle-borg/protocol/dist/adapter.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/adapter.js +2 -0
- package/node_modules/@noodle-borg/protocol/dist/adapter.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.d.ts +19 -0
- package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.js +34 -0
- package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts +5 -0
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/index.js +5 -0
- package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts +19 -0
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js +14 -0
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +133 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.js +181 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/negotiate.d.ts +13 -0
- package/node_modules/@noodle-borg/protocol/dist/negotiate.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/negotiate.js +18 -0
- package/node_modules/@noodle-borg/protocol/dist/negotiate.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/registry.d.ts +17 -0
- package/node_modules/@noodle-borg/protocol/dist/registry.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/registry.js +33 -0
- package/node_modules/@noodle-borg/protocol/dist/registry.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +22 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +91 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/server.d.ts +38 -0
- package/node_modules/@noodle-borg/protocol/dist/server.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/server.js +89 -0
- package/node_modules/@noodle-borg/protocol/dist/server.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/stateless.d.ts +14 -0
- package/node_modules/@noodle-borg/protocol/dist/stateless.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/stateless.js +28 -0
- package/node_modules/@noodle-borg/protocol/dist/stateless.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.d.ts +24 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.js +165 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.d.ts +4 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.js +10 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/inject.d.ts +8 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/inject.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/inject.js +36 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/inject.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/package.json +29 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/map.d.ts +29 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/map.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/map.js +38 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/map.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.d.ts +103 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.js +118 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/static.d.ts +12 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/static.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/static.js +15 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/static.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +28 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/types.js +2 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/types.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.d.ts +29 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.js +37 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +41 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.js +2 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.d.ts +39 -0
- package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.js +117 -0
- package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +47 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.js +297 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/index.d.ts +12 -0
- package/node_modules/@noodle-borg/runtime/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/index.js +8 -0
- package/node_modules/@noodle-borg/runtime/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.d.ts +10 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.js +13 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/types.d.ts +25 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/types.js +2 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/types.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/result.d.ts +19 -0
- package/node_modules/@noodle-borg/runtime/dist/result.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/result.js +2 -0
- package/node_modules/@noodle-borg/runtime/dist/result.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/package.json +27 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +48 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +79 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts +7 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/index.js +7 -0
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/main.d.ts +3 -0
- package/node_modules/@noodle-borg/service/dist/main.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/main.js +171 -0
- package/node_modules/@noodle-borg/service/dist/main.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts +14 -0
- package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/app.js +48 -0
- package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts +18 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.js +55 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/google.d.ts +31 -0
- package/node_modules/@noodle-borg/service/dist/oauth/google.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/google.js +39 -0
- package/node_modules/@noodle-borg/service/dist/oauth/google.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts +3 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.js +19 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts +61 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js +313 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts +29 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +176 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +85 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.js +57 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.js +13 -0
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.d.ts +36 -0
- package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.js +51 -0
- package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/service.d.ts +221 -0
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/service.js +1163 -0
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.d.ts +34 -0
- package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js +38 -0
- package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +56 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres.js +372 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store.d.ts +192 -0
- package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store.js +230 -0
- package/node_modules/@noodle-borg/service/dist/store.js.map +1 -0
- package/node_modules/@noodle-borg/service/package.json +44 -0
- package/node_modules/@noodle-borg/transport-http/dist/caller-auth.d.ts +15 -0
- package/node_modules/@noodle-borg/transport-http/dist/caller-auth.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/caller-auth.js +38 -0
- package/node_modules/@noodle-borg/transport-http/dist/caller-auth.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.d.ts +2 -0
- package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.js +129 -0
- package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/front-door.d.ts +46 -0
- package/node_modules/@noodle-borg/transport-http/dist/front-door.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/front-door.js +75 -0
- package/node_modules/@noodle-borg/transport-http/dist/front-door.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +142 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.js +387 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +6 -0
- package/node_modules/@noodle-borg/transport-http/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/index.js +6 -0
- package/node_modules/@noodle-borg/transport-http/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/logging.d.ts +41 -0
- package/node_modules/@noodle-borg/transport-http/dist/logging.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/logging.js +71 -0
- package/node_modules/@noodle-borg/transport-http/dist/logging.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/serve.d.ts +22 -0
- package/node_modules/@noodle-borg/transport-http/dist/serve.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/serve.js +25 -0
- package/node_modules/@noodle-borg/transport-http/dist/serve.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/package.json +30 -0
- package/package.json +78 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal URI-template support for MCP resources. We support **only** the RFC 6570 *simple* `{var}`
|
|
3
|
+
* form — the shape MCP examples use (`tickets://{id}`, `users://{userId}/posts/{postId}`). Operator
|
|
4
|
+
* forms (`{+var}`, `{#var}`, `{?q}`, `{var*}`, `{var:3}`, …) are rejected at compile time so behavior
|
|
5
|
+
* stays predictable and bounded.
|
|
6
|
+
*
|
|
7
|
+
* A variable matches a single path segment (`[^/]+`); a template with no `{var}` is a fixed URI. Matching
|
|
8
|
+
* is anchored and uses non-backtracking segment classes, so it is linear in the input length.
|
|
9
|
+
*/
|
|
10
|
+
export interface FixedUri {
|
|
11
|
+
readonly kind: 'fixed';
|
|
12
|
+
readonly uri: string;
|
|
13
|
+
}
|
|
14
|
+
export interface TemplateUri {
|
|
15
|
+
readonly kind: 'template';
|
|
16
|
+
readonly variables: readonly string[];
|
|
17
|
+
/** Match a concrete URI against this template; returns the extracted variables, or `null` on no match. */
|
|
18
|
+
match(uri: string): Record<string, string> | null;
|
|
19
|
+
}
|
|
20
|
+
export type ParsedUri = FixedUri | TemplateUri;
|
|
21
|
+
export type ParseUriResult = {
|
|
22
|
+
readonly ok: true;
|
|
23
|
+
readonly value: ParsedUri;
|
|
24
|
+
} | {
|
|
25
|
+
readonly ok: false;
|
|
26
|
+
readonly error: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Parse a resource `uri` into a fixed URI or a `{var}` template matcher. Returns an error string for an
|
|
30
|
+
* unsupported template (operator forms, duplicate/empty variables, or an out-of-bounds template).
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseUriTemplate(uri: string): ParseUriResult;
|
|
33
|
+
//# sourceMappingURL=uri-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uri-template.d.ts","sourceRoot":"","sources":["../src/uri-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,0GAA0G;IAC1G,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/C,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAOnD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA4D5D"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal URI-template support for MCP resources. We support **only** the RFC 6570 *simple* `{var}`
|
|
3
|
+
* form — the shape MCP examples use (`tickets://{id}`, `users://{userId}/posts/{postId}`). Operator
|
|
4
|
+
* forms (`{+var}`, `{#var}`, `{?q}`, `{var*}`, `{var:3}`, …) are rejected at compile time so behavior
|
|
5
|
+
* stays predictable and bounded.
|
|
6
|
+
*
|
|
7
|
+
* A variable matches a single path segment (`[^/]+`); a template with no `{var}` is a fixed URI. Matching
|
|
8
|
+
* is anchored and uses non-backtracking segment classes, so it is linear in the input length.
|
|
9
|
+
*/
|
|
10
|
+
/** Bounds (defense in depth against pathological templates). */
|
|
11
|
+
const MAX_URI_LENGTH = 2048;
|
|
12
|
+
const MAX_VARIABLES = 16;
|
|
13
|
+
/** A simple `{var}` name: letters, digits, underscores. */
|
|
14
|
+
const SIMPLE_VAR = /^[A-Za-z0-9_]+$/;
|
|
15
|
+
/** Escape a literal slice of the template for safe inclusion in the matcher regex. */
|
|
16
|
+
function escapeRegExp(literal) {
|
|
17
|
+
return literal.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Parse a resource `uri` into a fixed URI or a `{var}` template matcher. Returns an error string for an
|
|
21
|
+
* unsupported template (operator forms, duplicate/empty variables, or an out-of-bounds template).
|
|
22
|
+
*/
|
|
23
|
+
export function parseUriTemplate(uri) {
|
|
24
|
+
if (uri.length > MAX_URI_LENGTH) {
|
|
25
|
+
return { ok: false, error: `uri is too long (max ${MAX_URI_LENGTH} characters)` };
|
|
26
|
+
}
|
|
27
|
+
const variables = [];
|
|
28
|
+
let pattern = '';
|
|
29
|
+
let cursor = 0;
|
|
30
|
+
const re = /\{([^}]*)\}/g;
|
|
31
|
+
let m = re.exec(uri);
|
|
32
|
+
while (m !== null) {
|
|
33
|
+
const expression = m[1] ?? '';
|
|
34
|
+
if (!SIMPLE_VAR.test(expression)) {
|
|
35
|
+
return {
|
|
36
|
+
ok: false,
|
|
37
|
+
error: `unsupported URI template expression "{${expression}}"; only the simple {var} form is supported`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (variables.includes(expression)) {
|
|
41
|
+
return { ok: false, error: `duplicate template variable "${expression}"` };
|
|
42
|
+
}
|
|
43
|
+
if (variables.length >= MAX_VARIABLES) {
|
|
44
|
+
return { ok: false, error: `too many template variables (max ${MAX_VARIABLES})` };
|
|
45
|
+
}
|
|
46
|
+
variables.push(expression);
|
|
47
|
+
pattern += escapeRegExp(uri.slice(cursor, m.index));
|
|
48
|
+
pattern += '([^/]+)';
|
|
49
|
+
cursor = m.index + m[0].length;
|
|
50
|
+
m = re.exec(uri);
|
|
51
|
+
}
|
|
52
|
+
if (variables.length === 0) {
|
|
53
|
+
return { ok: true, value: { kind: 'fixed', uri } };
|
|
54
|
+
}
|
|
55
|
+
pattern += escapeRegExp(uri.slice(cursor));
|
|
56
|
+
const matcher = new RegExp(`^${pattern}$`);
|
|
57
|
+
const captured = variables.slice();
|
|
58
|
+
return {
|
|
59
|
+
ok: true,
|
|
60
|
+
value: {
|
|
61
|
+
kind: 'template',
|
|
62
|
+
variables: captured,
|
|
63
|
+
match(concrete) {
|
|
64
|
+
if (concrete.length > MAX_URI_LENGTH)
|
|
65
|
+
return null;
|
|
66
|
+
const result = matcher.exec(concrete);
|
|
67
|
+
if (!result)
|
|
68
|
+
return null;
|
|
69
|
+
const out = {};
|
|
70
|
+
for (const [i, name] of captured.entries()) {
|
|
71
|
+
try {
|
|
72
|
+
out[name] = decodeURIComponent(result[i + 1] ?? '');
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return out;
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=uri-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uri-template.js","sourceRoot":"","sources":["../src/uri-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@noodle-borg/compiler",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"noodle-compile": "./dist/cli.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.json",
|
|
22
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
23
|
+
"schema": "node dist/schema-export.js"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"yaml": "^2.9.0",
|
|
27
|
+
"zod": "^4.4.3"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^24.0.0"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { OperationSignature } from '@noodle-borg/compiler';
|
|
2
|
+
import type { Connector, ConnectorCall } from '@noodle-borg/runtime';
|
|
3
|
+
import { type ComputeEngine, type ComputeLimits, type ComputeModule } from './engine.js';
|
|
4
|
+
export interface CodeOperationCallRef {
|
|
5
|
+
readonly resolved: true;
|
|
6
|
+
readonly alias: string;
|
|
7
|
+
readonly connectorId: string;
|
|
8
|
+
readonly connectorVersion: string;
|
|
9
|
+
readonly operation: string;
|
|
10
|
+
readonly signatureHash: string;
|
|
11
|
+
}
|
|
12
|
+
/** One sandboxed-code operation: its declared signature and the content-addressed module that fulfils it. */
|
|
13
|
+
export interface CodeOperation {
|
|
14
|
+
readonly signature: OperationSignature;
|
|
15
|
+
readonly module: ComputeModule;
|
|
16
|
+
/** Per-operation resource bounds; falls back to {@link DEFAULT_LIMITS}. */
|
|
17
|
+
readonly limits?: ComputeLimits;
|
|
18
|
+
/** Host operations this compute operation is allowed to call, keyed by sandbox-local name. */
|
|
19
|
+
readonly calls?: Readonly<Record<string, CodeOperationCallRef>>;
|
|
20
|
+
}
|
|
21
|
+
export interface CodeConnectorConfig {
|
|
22
|
+
readonly id: string;
|
|
23
|
+
readonly version: string;
|
|
24
|
+
readonly engine: ComputeEngine;
|
|
25
|
+
readonly operations: Readonly<Record<string, CodeOperation>>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A connector whose operations run tenant-authored JavaScript in a {@link ComputeEngine} sandbox — the
|
|
29
|
+
* "code as a sandboxed connector operation" escape hatch
|
|
30
|
+
* ([ADR 0004](../../../docs/decisions/0004-code-as-sandboxed-connector.md)). It is a plain {@link Connector},
|
|
31
|
+
* so it resolves and invokes through the runtime exactly like any other connector: typed args in (already
|
|
32
|
+
* validated against the signature), typed output out (validated by the runtime), policy gate + broker
|
|
33
|
+
* around it. Declared host calls are the only outbound capability: sandbox-local names map to resolved
|
|
34
|
+
* connector operations and are mediated by the runtime host
|
|
35
|
+
* ([ADR 0014](../../../docs/decisions/0014-compute-engine-interface.md)).
|
|
36
|
+
*/
|
|
37
|
+
export declare class CodeConnector implements Connector {
|
|
38
|
+
#private;
|
|
39
|
+
readonly id: string;
|
|
40
|
+
readonly version: string;
|
|
41
|
+
constructor(config: CodeConnectorConfig);
|
|
42
|
+
signature(operation: string): OperationSignature | undefined;
|
|
43
|
+
invoke(call: ConnectorCall): Promise<unknown>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=code-connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-connector.d.ts","sourceRoot":"","sources":["../src/code-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AACxF,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,aAAa,EAClB,KAAK,aAAa,EAEnB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,6GAA6G;AAC7G,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;CAC9D;AAED;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,SAAS;;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAIb,MAAM,EAAE,mBAAmB;IAOvC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAItD,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAcpD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ComputeError, DEFAULT_LIMITS, } from './engine.js';
|
|
2
|
+
/**
|
|
3
|
+
* A connector whose operations run tenant-authored JavaScript in a {@link ComputeEngine} sandbox — the
|
|
4
|
+
* "code as a sandboxed connector operation" escape hatch
|
|
5
|
+
* ([ADR 0004](../../../docs/decisions/0004-code-as-sandboxed-connector.md)). It is a plain {@link Connector},
|
|
6
|
+
* so it resolves and invokes through the runtime exactly like any other connector: typed args in (already
|
|
7
|
+
* validated against the signature), typed output out (validated by the runtime), policy gate + broker
|
|
8
|
+
* around it. Declared host calls are the only outbound capability: sandbox-local names map to resolved
|
|
9
|
+
* connector operations and are mediated by the runtime host
|
|
10
|
+
* ([ADR 0014](../../../docs/decisions/0014-compute-engine-interface.md)).
|
|
11
|
+
*/
|
|
12
|
+
export class CodeConnector {
|
|
13
|
+
id;
|
|
14
|
+
version;
|
|
15
|
+
#engine;
|
|
16
|
+
#operations;
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.id = config.id;
|
|
19
|
+
this.version = config.version;
|
|
20
|
+
this.#engine = config.engine;
|
|
21
|
+
this.#operations = config.operations;
|
|
22
|
+
}
|
|
23
|
+
signature(operation) {
|
|
24
|
+
return this.#operations[operation]?.signature;
|
|
25
|
+
}
|
|
26
|
+
async invoke(call) {
|
|
27
|
+
const op = this.#operations[call.operation];
|
|
28
|
+
if (!op)
|
|
29
|
+
throw new Error(`connector "${this.id}" has no operation "${call.operation}"`);
|
|
30
|
+
const instance = await this.#engine.instantiate(op.module);
|
|
31
|
+
try {
|
|
32
|
+
return await instance.invoke(call.args, op.limits ?? DEFAULT_LIMITS, op.calls ? computeHost(op.calls, call.host) : undefined);
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
instance.dispose();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function computeHost(calls, host) {
|
|
40
|
+
return {
|
|
41
|
+
callOperation(name, args) {
|
|
42
|
+
if (!host) {
|
|
43
|
+
throw new ComputeError('host_call_failed', 'host call unavailable');
|
|
44
|
+
}
|
|
45
|
+
const ref = calls[name];
|
|
46
|
+
if (!ref) {
|
|
47
|
+
throw new ComputeError('host_call_denied', `host call "${name}" is not declared`);
|
|
48
|
+
}
|
|
49
|
+
return host.callOperation(ref, args, `host.${name}`);
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=code-connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-connector.js","sourceRoot":"","sources":["../src/code-connector.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,YAAY,EAIZ,cAAc,GACf,MAAM,aAAa,CAAC;AA4BrB;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;IACf,EAAE,CAAS;IACX,OAAO,CAAS;IAChB,OAAO,CAAgB;IACvB,WAAW,CAA0C;IAE9D,YAAY,MAA2B;QACrC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAmB;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,EAAE,uBAAuB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,MAAM,CAC1B,IAAI,CAAC,IAAI,EACT,EAAE,CAAC,MAAM,IAAI,cAAc,EAC3B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CACxD,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AAED,SAAS,WAAW,CAClB,KAAqD,EACrD,IAAmC;IAEnC,OAAO;QACL,aAAa,CAAC,IAAI,EAAE,IAAI;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,YAAY,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,YAAY,CAAC,kBAAkB,EAAE,cAAc,IAAI,mBAAmB,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The execution backend for sandboxed tenant code. The interface is **AOT-shaped**: code is treated as a
|
|
3
|
+
* **content-addressed compiled module** (`compile` → a digest; `instantiate` → a runnable instance), even
|
|
4
|
+
* though the first backend ([`QuickJsComputeEngine`](./quickjs-engine.ts)) interprets the source rather
|
|
5
|
+
* than ahead-of-time compiling it to WebAssembly. A production AOT backend (extism/wasmtime,
|
|
6
|
+
* [ADR 0010](../../../docs/decisions/0010-wasm-sandbox-compute-step.md)) drops in behind this same port —
|
|
7
|
+
* yielding dev-mode = interpreter, prod-mode = AOT
|
|
8
|
+
* ([ADR 0014](../../../docs/decisions/0014-compute-engine-interface.md)).
|
|
9
|
+
*
|
|
10
|
+
* The security core ([ADR 0004](../../../docs/decisions/0004-code-as-sandboxed-connector.md)): a backend
|
|
11
|
+
* grants **no ambient authority** — the sandbox sees only its typed `input`, never the network,
|
|
12
|
+
* filesystem, process environment, clock, randomness, secrets, connector credentials, or inbound tokens.
|
|
13
|
+
* Execution is bounded and fails closed (timeout, memory cap, output-size cap).
|
|
14
|
+
*/
|
|
15
|
+
export interface ComputeEngine {
|
|
16
|
+
readonly kind: 'interpreter' | 'aot';
|
|
17
|
+
/** Content-address a source unit. An AOT backend emits a WASM module here; the interpreter just hashes. */
|
|
18
|
+
compile(source: string): Promise<ComputeModule>;
|
|
19
|
+
/** Resolve a compiled module to a runnable instance. */
|
|
20
|
+
instantiate(module: ComputeModule): Promise<ComputeInstance>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A handle to a compiled code unit. Carries only the **digest** (content hash) — never the source — so a
|
|
24
|
+
* runtime artifact that references it stays reviewable as data
|
|
25
|
+
* ([ADR 0004](../../../docs/decisions/0004-code-as-sandboxed-connector.md)). The digest must **not** enter
|
|
26
|
+
* an operation's signature hash.
|
|
27
|
+
*/
|
|
28
|
+
export interface ComputeModule {
|
|
29
|
+
readonly digest: string;
|
|
30
|
+
readonly engine: 'interpreter' | 'aot';
|
|
31
|
+
}
|
|
32
|
+
/** A runnable instance of a compiled module. */
|
|
33
|
+
export interface ComputeInstance {
|
|
34
|
+
/** Run the module against `input` under the given resource limits; resolves with the JSON output. */
|
|
35
|
+
invoke(input: unknown, limits: ComputeLimits, host?: ComputeHost): Promise<unknown>;
|
|
36
|
+
/** Release any retained resources. */
|
|
37
|
+
dispose(): void;
|
|
38
|
+
}
|
|
39
|
+
/** Host capability available to sandboxed code when a compute operation declares outbound calls. */
|
|
40
|
+
export interface ComputeHost {
|
|
41
|
+
callOperation(name: string, args: Readonly<Record<string, unknown>>): Promise<unknown>;
|
|
42
|
+
}
|
|
43
|
+
/** Resource bounds for a single sandboxed execution. All bounds fail closed. */
|
|
44
|
+
export interface ComputeLimits {
|
|
45
|
+
/** Wall-clock budget; an over-running (e.g. infinite-looping) script is interrupted. */
|
|
46
|
+
readonly timeoutMs: number;
|
|
47
|
+
/** Hard cap on the sandbox heap, in bytes. */
|
|
48
|
+
readonly memoryBytes: number;
|
|
49
|
+
/** Hard cap on the serialized output, in bytes. */
|
|
50
|
+
readonly maxOutputBytes: number;
|
|
51
|
+
/** Maximum number of host-mediated connector calls one sandbox invocation may make. */
|
|
52
|
+
readonly maxHostCalls: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Conservative defaults for pure (non-suspending, no-outbound) compute. Instruction-fuel metering is a
|
|
56
|
+
* property of the future AOT/wasmtime backend; the interpreter bounds wall-clock + memory + output only.
|
|
57
|
+
*/
|
|
58
|
+
export declare const DEFAULT_LIMITS: ComputeLimits;
|
|
59
|
+
/** Reasons a sandboxed execution fails. The code is stable; the message never carries host state. */
|
|
60
|
+
export type ComputeErrorCode = 'unknown_module' | 'timeout' | 'memory' | 'output_too_large' | 'host_call_denied' | 'host_call_failed' | 'invalid_output' | 'runtime_error';
|
|
61
|
+
/**
|
|
62
|
+
* Raised when a sandboxed execution cannot complete. Carries a stable code and an optional path; the
|
|
63
|
+
* sandbox holds no host secrets (deny-by-default), so a bounded sandbox-internal message is safe to relay,
|
|
64
|
+
* but the host never injects its own values or source into it.
|
|
65
|
+
*/
|
|
66
|
+
export declare class ComputeError extends Error {
|
|
67
|
+
readonly code: ComputeErrorCode;
|
|
68
|
+
readonly path: string | undefined;
|
|
69
|
+
constructor(code: ComputeErrorCode, message: string, path?: string);
|
|
70
|
+
}
|
|
71
|
+
/** Content-address a source string as `sha256:<hex>` — the module digest. */
|
|
72
|
+
export declare function digestSource(source: string): string;
|
|
73
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,KAAK,CAAC;IACrC,2GAA2G;IAC3G,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD,wDAAwD;IACxD,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9D;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAAC;CACxC;AAED,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,qGAAqG;IACrG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,sCAAsC;IACtC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,oGAAoG;AACpG,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxF;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,wFAAwF;IACxF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,uFAAuF;IACvF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,aAK5B,CAAC;AAEF,qGAAqG;AACrG,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,SAAS,GACT,QAAQ,GACR,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,eAAe,CAAC;AAEpB;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEtB,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAMnE;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Conservative defaults for pure (non-suspending, no-outbound) compute. Instruction-fuel metering is a
|
|
4
|
+
* property of the future AOT/wasmtime backend; the interpreter bounds wall-clock + memory + output only.
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_LIMITS = {
|
|
7
|
+
timeoutMs: 1_000,
|
|
8
|
+
memoryBytes: 16 << 20, // 16 MiB
|
|
9
|
+
maxOutputBytes: 256 << 10, // 256 KiB
|
|
10
|
+
maxHostCalls: 16,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Raised when a sandboxed execution cannot complete. Carries a stable code and an optional path; the
|
|
14
|
+
* sandbox holds no host secrets (deny-by-default), so a bounded sandbox-internal message is safe to relay,
|
|
15
|
+
* but the host never injects its own values or source into it.
|
|
16
|
+
*/
|
|
17
|
+
export class ComputeError extends Error {
|
|
18
|
+
code;
|
|
19
|
+
path;
|
|
20
|
+
constructor(code, message, path) {
|
|
21
|
+
super(message);
|
|
22
|
+
this.name = 'ComputeError';
|
|
23
|
+
this.code = code;
|
|
24
|
+
this.path = path;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Content-address a source string as `sha256:<hex>` — the module digest. */
|
|
28
|
+
export function digestSource(source) {
|
|
29
|
+
return `sha256:${createHash('sha256').update(source, 'utf8').digest('hex')}`;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4DzC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS;IAChC,cAAc,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU;IACrC,YAAY,EAAE,EAAE;CACjB,CAAC;AAaF;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAmB;IACvB,IAAI,CAAqB;IAElC,YAAY,IAAsB,EAAE,OAAe,EAAE,IAAa;QAChE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { CodeConnector, type CodeConnectorConfig, type CodeOperation, type CodeOperationCallRef, } from './code-connector.js';
|
|
2
|
+
export { type ComputeEngine, ComputeError, type ComputeErrorCode, type ComputeHost, type ComputeInstance, type ComputeLimits, type ComputeModule, DEFAULT_LIMITS, digestSource, } from './engine.js';
|
|
3
|
+
export { QuickJsComputeEngine } from './quickjs-engine.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAId,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,YAAY,EAMZ,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ComputeEngine, type ComputeInstance, type ComputeModule } from './engine.js';
|
|
2
|
+
/**
|
|
3
|
+
* The first {@link ComputeEngine} backend: a QuickJS interpreter compiled to WebAssembly
|
|
4
|
+
* (`quickjs-emscripten`). It runs tenant-authored JavaScript with **no ambient authority** — a fresh
|
|
5
|
+
* QuickJS runtime per invocation, configured with nothing injected (no `fetch`, `console`, `process`,
|
|
6
|
+
* `require`, or other host bindings), nondeterministic globals removed (`Date`, `Math.random`), and hard,
|
|
7
|
+
* fail-closed bounds (wall-clock timeout, memory cap, output-size cap).
|
|
8
|
+
*
|
|
9
|
+
* The unit of code is **a JavaScript expression that evaluates to a function** `fn(input) -> output`
|
|
10
|
+
* (e.g. `(input) => { ... }`). Input is JSON-marshaled in, output JSON-marshaled out — the boundary never
|
|
11
|
+
* shares object references. When a host is provided, `callOperation` is the only injected capability and
|
|
12
|
+
* routes through the runtime's policy/broker/connector path.
|
|
13
|
+
*
|
|
14
|
+
* "Interpreter, code-as-data" is the dev-mode backend; the production AOT backend (extism/wasmtime, true
|
|
15
|
+
* instruction-fuel) plugs in behind the same {@link ComputeEngine} interface
|
|
16
|
+
* ([ADR 0014](../../../docs/decisions/0014-compute-engine-interface.md)).
|
|
17
|
+
*/
|
|
18
|
+
export declare class QuickJsComputeEngine implements ComputeEngine {
|
|
19
|
+
#private;
|
|
20
|
+
readonly kind: "interpreter";
|
|
21
|
+
/** Hash and retain the source. (An AOT backend would emit and store a WASM module here instead.) */
|
|
22
|
+
compile(source: string): Promise<ComputeModule>;
|
|
23
|
+
/**
|
|
24
|
+
* Synchronous content-addressing for the interpreter backend (hash + retain). Lets a synchronous
|
|
25
|
+
* caller (the connector-catalog compiler) register sources without going async; the AOT backend, whose
|
|
26
|
+
* compile genuinely does work, exposes only the async {@link compile}.
|
|
27
|
+
*/
|
|
28
|
+
registerSource(source: string): ComputeModule;
|
|
29
|
+
instantiate(module: ComputeModule): Promise<ComputeInstance>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=quickjs-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickjs-engine.d.ts","sourceRoot":"","sources":["../src/quickjs-engine.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAEnB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,oBAAqB,YAAW,aAAa;;IACxD,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IAIvC,oGAAoG;IAC9F,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrD;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAMvC,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;CAQnE"}
|