@appport/sdk 1.0.1
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 +126 -0
- package/README.md +39 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/node.d.ts +3 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +3 -0
- package/dist/node.js.map +1 -0
- package/node_modules/@appport/authorization/README.md +28 -0
- package/node_modules/@appport/authorization/dist/index.d.ts +94 -0
- package/node_modules/@appport/authorization/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/authorization/dist/index.js +131 -0
- package/node_modules/@appport/authorization/dist/index.js.map +1 -0
- package/node_modules/@appport/authorization/package.json +28 -0
- package/node_modules/@appport/client/README.md +35 -0
- package/node_modules/@appport/client/dist/channel.d.ts +14 -0
- package/node_modules/@appport/client/dist/channel.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/channel.js +58 -0
- package/node_modules/@appport/client/dist/channel.js.map +1 -0
- package/node_modules/@appport/client/dist/client.d.ts +61 -0
- package/node_modules/@appport/client/dist/client.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/client.js +214 -0
- package/node_modules/@appport/client/dist/client.js.map +1 -0
- package/node_modules/@appport/client/dist/contract.d.ts +55 -0
- package/node_modules/@appport/client/dist/contract.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/contract.js +12 -0
- package/node_modules/@appport/client/dist/contract.js.map +1 -0
- package/node_modules/@appport/client/dist/discovery.d.ts +17 -0
- package/node_modules/@appport/client/dist/discovery.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/discovery.js +56 -0
- package/node_modules/@appport/client/dist/discovery.js.map +1 -0
- package/node_modules/@appport/client/dist/duplex.d.ts +25 -0
- package/node_modules/@appport/client/dist/duplex.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/duplex.js +194 -0
- package/node_modules/@appport/client/dist/duplex.js.map +1 -0
- package/node_modules/@appport/client/dist/index.d.ts +13 -0
- package/node_modules/@appport/client/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/index.js +13 -0
- package/node_modules/@appport/client/dist/index.js.map +1 -0
- package/node_modules/@appport/client/dist/transport.d.ts +42 -0
- package/node_modules/@appport/client/dist/transport.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/transport.js +2 -0
- package/node_modules/@appport/client/dist/transport.js.map +1 -0
- package/node_modules/@appport/client/package.json +32 -0
- package/node_modules/@appport/core/README.md +91 -0
- package/node_modules/@appport/core/dist/appboundry-contract.d.ts +80 -0
- package/node_modules/@appport/core/dist/appboundry-contract.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/appboundry-contract.js +160 -0
- package/node_modules/@appport/core/dist/appboundry-contract.js.map +1 -0
- package/node_modules/@appport/core/dist/application-implementation.d.ts +125 -0
- package/node_modules/@appport/core/dist/application-implementation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application-implementation.js +220 -0
- package/node_modules/@appport/core/dist/application-implementation.js.map +1 -0
- package/node_modules/@appport/core/dist/application-lifecycle.d.ts +150 -0
- package/node_modules/@appport/core/dist/application-lifecycle.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application-lifecycle.js +70 -0
- package/node_modules/@appport/core/dist/application-lifecycle.js.map +1 -0
- package/node_modules/@appport/core/dist/application-source.d.ts +109 -0
- package/node_modules/@appport/core/dist/application-source.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application-source.js +186 -0
- package/node_modules/@appport/core/dist/application-source.js.map +1 -0
- package/node_modules/@appport/core/dist/application.d.ts +122 -0
- package/node_modules/@appport/core/dist/application.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application.js +515 -0
- package/node_modules/@appport/core/dist/application.js.map +1 -0
- package/node_modules/@appport/core/dist/artifact.d.ts +395 -0
- package/node_modules/@appport/core/dist/artifact.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/artifact.js +392 -0
- package/node_modules/@appport/core/dist/artifact.js.map +1 -0
- package/node_modules/@appport/core/dist/assembly.d.ts +237 -0
- package/node_modules/@appport/core/dist/assembly.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/assembly.js +458 -0
- package/node_modules/@appport/core/dist/assembly.js.map +1 -0
- package/node_modules/@appport/core/dist/authority-attestation.d.ts +34 -0
- package/node_modules/@appport/core/dist/authority-attestation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/authority-attestation.js +72 -0
- package/node_modules/@appport/core/dist/authority-attestation.js.map +1 -0
- package/node_modules/@appport/core/dist/authorization-grant.d.ts +107 -0
- package/node_modules/@appport/core/dist/authorization-grant.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/authorization-grant.js +131 -0
- package/node_modules/@appport/core/dist/authorization-grant.js.map +1 -0
- package/node_modules/@appport/core/dist/binding.d.ts +294 -0
- package/node_modules/@appport/core/dist/binding.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/binding.js +263 -0
- package/node_modules/@appport/core/dist/binding.js.map +1 -0
- package/node_modules/@appport/core/dist/builtins.d.ts +18 -0
- package/node_modules/@appport/core/dist/builtins.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/builtins.js +38 -0
- package/node_modules/@appport/core/dist/builtins.js.map +1 -0
- package/node_modules/@appport/core/dist/capability.d.ts +94 -0
- package/node_modules/@appport/core/dist/capability.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/capability.js +85 -0
- package/node_modules/@appport/core/dist/capability.js.map +1 -0
- package/node_modules/@appport/core/dist/concurrency.d.ts +16 -0
- package/node_modules/@appport/core/dist/concurrency.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/concurrency.js +46 -0
- package/node_modules/@appport/core/dist/concurrency.js.map +1 -0
- package/node_modules/@appport/core/dist/context.d.ts +59 -0
- package/node_modules/@appport/core/dist/context.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/context.js +14 -0
- package/node_modules/@appport/core/dist/context.js.map +1 -0
- package/node_modules/@appport/core/dist/contract-artifact.d.ts +15 -0
- package/node_modules/@appport/core/dist/contract-artifact.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/contract-artifact.js +152 -0
- package/node_modules/@appport/core/dist/contract-artifact.js.map +1 -0
- package/node_modules/@appport/core/dist/contract-attestation.d.ts +68 -0
- package/node_modules/@appport/core/dist/contract-attestation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/contract-attestation.js +76 -0
- package/node_modules/@appport/core/dist/contract-attestation.js.map +1 -0
- package/node_modules/@appport/core/dist/crash-injection.d.ts +3 -0
- package/node_modules/@appport/core/dist/crash-injection.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/crash-injection.js +8 -0
- package/node_modules/@appport/core/dist/crash-injection.js.map +1 -0
- package/node_modules/@appport/core/dist/events.d.ts +33 -0
- package/node_modules/@appport/core/dist/events.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/events.js +79 -0
- package/node_modules/@appport/core/dist/events.js.map +1 -0
- package/node_modules/@appport/core/dist/execution-barrier.d.ts +13 -0
- package/node_modules/@appport/core/dist/execution-barrier.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/execution-barrier.js +33 -0
- package/node_modules/@appport/core/dist/execution-barrier.js.map +1 -0
- package/node_modules/@appport/core/dist/execution-ledger.d.ts +81 -0
- package/node_modules/@appport/core/dist/execution-ledger.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/execution-ledger.js +173 -0
- package/node_modules/@appport/core/dist/execution-ledger.js.map +1 -0
- package/node_modules/@appport/core/dist/execution.d.ts +387 -0
- package/node_modules/@appport/core/dist/execution.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/execution.js +165 -0
- package/node_modules/@appport/core/dist/execution.js.map +1 -0
- package/node_modules/@appport/core/dist/idempotency.d.ts +36 -0
- package/node_modules/@appport/core/dist/idempotency.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/idempotency.js +36 -0
- package/node_modules/@appport/core/dist/idempotency.js.map +1 -0
- package/node_modules/@appport/core/dist/implementation.d.ts +110 -0
- package/node_modules/@appport/core/dist/implementation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/implementation.js +65 -0
- package/node_modules/@appport/core/dist/implementation.js.map +1 -0
- package/node_modules/@appport/core/dist/index.d.ts +44 -0
- package/node_modules/@appport/core/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/index.js +44 -0
- package/node_modules/@appport/core/dist/index.js.map +1 -0
- package/node_modules/@appport/core/dist/invocation.d.ts +253 -0
- package/node_modules/@appport/core/dist/invocation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/invocation.js +258 -0
- package/node_modules/@appport/core/dist/invocation.js.map +1 -0
- package/node_modules/@appport/core/dist/manifest.d.ts +157 -0
- package/node_modules/@appport/core/dist/manifest.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/manifest.js +255 -0
- package/node_modules/@appport/core/dist/manifest.js.map +1 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.d.ts +19 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.js +161 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.js.map +1 -0
- package/node_modules/@appport/core/dist/operations.d.ts +61 -0
- package/node_modules/@appport/core/dist/operations.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/operations.js +210 -0
- package/node_modules/@appport/core/dist/operations.js.map +1 -0
- package/node_modules/@appport/core/dist/public.d.ts +19 -0
- package/node_modules/@appport/core/dist/public.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/public.js +18 -0
- package/node_modules/@appport/core/dist/public.js.map +1 -0
- package/node_modules/@appport/core/dist/registration.d.ts +165 -0
- package/node_modules/@appport/core/dist/registration.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/registration.js +253 -0
- package/node_modules/@appport/core/dist/registration.js.map +1 -0
- package/node_modules/@appport/core/dist/registry.d.ts +29 -0
- package/node_modules/@appport/core/dist/registry.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/registry.js +148 -0
- package/node_modules/@appport/core/dist/registry.js.map +1 -0
- package/node_modules/@appport/core/dist/repository-connection.d.ts +100 -0
- package/node_modules/@appport/core/dist/repository-connection.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/repository-connection.js +57 -0
- package/node_modules/@appport/core/dist/repository-connection.js.map +1 -0
- package/node_modules/@appport/core/dist/resolver.d.ts +130 -0
- package/node_modules/@appport/core/dist/resolver.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/resolver.js +252 -0
- package/node_modules/@appport/core/dist/resolver.js.map +1 -0
- package/node_modules/@appport/core/dist/runtime-manifest.d.ts +68 -0
- package/node_modules/@appport/core/dist/runtime-manifest.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/runtime-manifest.js +84 -0
- package/node_modules/@appport/core/dist/runtime-manifest.js.map +1 -0
- package/node_modules/@appport/core/dist/sanitize.d.ts +14 -0
- package/node_modules/@appport/core/dist/sanitize.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/sanitize.js +49 -0
- package/node_modules/@appport/core/dist/sanitize.js.map +1 -0
- package/node_modules/@appport/core/dist/server-internal.d.ts +5 -0
- package/node_modules/@appport/core/dist/server-internal.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/server-internal.js +4 -0
- package/node_modules/@appport/core/dist/server-internal.js.map +1 -0
- package/node_modules/@appport/core/dist/sessions.d.ts +29 -0
- package/node_modules/@appport/core/dist/sessions.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/sessions.js +39 -0
- package/node_modules/@appport/core/dist/sessions.js.map +1 -0
- package/node_modules/@appport/core/dist/sha256.d.ts +3 -0
- package/node_modules/@appport/core/dist/sha256.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/sha256.js +46 -0
- package/node_modules/@appport/core/dist/sha256.js.map +1 -0
- package/node_modules/@appport/core/dist/source-verification.d.ts +53 -0
- package/node_modules/@appport/core/dist/source-verification.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/source-verification.js +92 -0
- package/node_modules/@appport/core/dist/source-verification.js.map +1 -0
- package/node_modules/@appport/core/dist/state-context.d.ts +312 -0
- package/node_modules/@appport/core/dist/state-context.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/state-context.js +100 -0
- package/node_modules/@appport/core/dist/state-context.js.map +1 -0
- package/node_modules/@appport/core/dist/state.d.ts +96 -0
- package/node_modules/@appport/core/dist/state.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/state.js +89 -0
- package/node_modules/@appport/core/dist/state.js.map +1 -0
- package/node_modules/@appport/core/dist/streams.d.ts +38 -0
- package/node_modules/@appport/core/dist/streams.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/streams.js +123 -0
- package/node_modules/@appport/core/dist/streams.js.map +1 -0
- package/node_modules/@appport/core/dist/telemetry.d.ts +42 -0
- package/node_modules/@appport/core/dist/telemetry.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/telemetry.js +32 -0
- package/node_modules/@appport/core/dist/telemetry.js.map +1 -0
- package/node_modules/@appport/core/dist/wasm-engine.d.ts +22 -0
- package/node_modules/@appport/core/dist/wasm-engine.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/wasm-engine.js +367 -0
- package/node_modules/@appport/core/dist/wasm-engine.js.map +1 -0
- package/node_modules/@appport/core/package.json +58 -0
- package/node_modules/@appport/mobile/README.md +10 -0
- package/node_modules/@appport/mobile/dist/index.d.ts +66 -0
- package/node_modules/@appport/mobile/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/mobile/dist/index.js +182 -0
- package/node_modules/@appport/mobile/dist/index.js.map +1 -0
- package/node_modules/@appport/mobile/package.json +33 -0
- package/node_modules/@appport/protocol/README.md +41 -0
- package/node_modules/@appport/protocol/dist/blob.d.ts +46 -0
- package/node_modules/@appport/protocol/dist/blob.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/blob.js +23 -0
- package/node_modules/@appport/protocol/dist/blob.js.map +1 -0
- package/node_modules/@appport/protocol/dist/compatibility.d.ts +25 -0
- package/node_modules/@appport/protocol/dist/compatibility.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/compatibility.js +189 -0
- package/node_modules/@appport/protocol/dist/compatibility.js.map +1 -0
- package/node_modules/@appport/protocol/dist/envelopes.d.ts +175 -0
- package/node_modules/@appport/protocol/dist/envelopes.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/envelopes.js +97 -0
- package/node_modules/@appport/protocol/dist/envelopes.js.map +1 -0
- package/node_modules/@appport/protocol/dist/errors.d.ts +74 -0
- package/node_modules/@appport/protocol/dist/errors.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/errors.js +91 -0
- package/node_modules/@appport/protocol/dist/errors.js.map +1 -0
- package/node_modules/@appport/protocol/dist/ids.d.ts +12 -0
- package/node_modules/@appport/protocol/dist/ids.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/ids.js +50 -0
- package/node_modules/@appport/protocol/dist/ids.js.map +1 -0
- package/node_modules/@appport/protocol/dist/index.d.ts +20 -0
- package/node_modules/@appport/protocol/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/index.js +20 -0
- package/node_modules/@appport/protocol/dist/index.js.map +1 -0
- package/node_modules/@appport/protocol/dist/jsonschema.d.ts +50 -0
- package/node_modules/@appport/protocol/dist/jsonschema.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/jsonschema.js +6 -0
- package/node_modules/@appport/protocol/dist/jsonschema.js.map +1 -0
- package/node_modules/@appport/protocol/dist/manifest.d.ts +131 -0
- package/node_modules/@appport/protocol/dist/manifest.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/manifest.js +20 -0
- package/node_modules/@appport/protocol/dist/manifest.js.map +1 -0
- package/node_modules/@appport/protocol/dist/names.d.ts +26 -0
- package/node_modules/@appport/protocol/dist/names.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/names.js +85 -0
- package/node_modules/@appport/protocol/dist/names.js.map +1 -0
- package/node_modules/@appport/protocol/dist/operations.d.ts +34 -0
- package/node_modules/@appport/protocol/dist/operations.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/operations.js +9 -0
- package/node_modules/@appport/protocol/dist/operations.js.map +1 -0
- package/node_modules/@appport/protocol/dist/session.d.ts +27 -0
- package/node_modules/@appport/protocol/dist/session.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/session.js +7 -0
- package/node_modules/@appport/protocol/dist/session.js.map +1 -0
- package/node_modules/@appport/protocol/dist/validate.d.ts +37 -0
- package/node_modules/@appport/protocol/dist/validate.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/validate.js +321 -0
- package/node_modules/@appport/protocol/dist/validate.js.map +1 -0
- package/node_modules/@appport/protocol/dist/version.d.ts +27 -0
- package/node_modules/@appport/protocol/dist/version.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/version.js +26 -0
- package/node_modules/@appport/protocol/dist/version.js.map +1 -0
- package/node_modules/@appport/protocol/package.json +25 -0
- package/node_modules/@appport/schema/README.md +32 -0
- package/node_modules/@appport/schema/dist/builder.d.ts +85 -0
- package/node_modules/@appport/schema/dist/builder.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/builder.js +278 -0
- package/node_modules/@appport/schema/dist/builder.js.map +1 -0
- package/node_modules/@appport/schema/dist/from-json-schema.d.ts +12 -0
- package/node_modules/@appport/schema/dist/from-json-schema.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/from-json-schema.js +186 -0
- package/node_modules/@appport/schema/dist/from-json-schema.js.map +1 -0
- package/node_modules/@appport/schema/dist/index.d.ts +23 -0
- package/node_modules/@appport/schema/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/index.js +22 -0
- package/node_modules/@appport/schema/dist/index.js.map +1 -0
- package/node_modules/@appport/schema/dist/standard.d.ts +46 -0
- package/node_modules/@appport/schema/dist/standard.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/standard.js +42 -0
- package/node_modules/@appport/schema/dist/standard.js.map +1 -0
- package/node_modules/@appport/schema/dist/types.d.ts +40 -0
- package/node_modules/@appport/schema/dist/types.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/types.js +19 -0
- package/node_modules/@appport/schema/dist/types.js.map +1 -0
- package/node_modules/@appport/schema/package.json +28 -0
- package/node_modules/@appport/server/README.md +39 -0
- package/node_modules/@appport/server/dist/connection.d.ts +45 -0
- package/node_modules/@appport/server/dist/connection.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/connection.js +217 -0
- package/node_modules/@appport/server/dist/connection.js.map +1 -0
- package/node_modules/@appport/server/dist/fetch.d.ts +10 -0
- package/node_modules/@appport/server/dist/fetch.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/fetch.js +50 -0
- package/node_modules/@appport/server/dist/fetch.js.map +1 -0
- package/node_modules/@appport/server/dist/http.d.ts +80 -0
- package/node_modules/@appport/server/dist/http.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/http.js +306 -0
- package/node_modules/@appport/server/dist/http.js.map +1 -0
- package/node_modules/@appport/server/dist/index.d.ts +11 -0
- package/node_modules/@appport/server/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/index.js +11 -0
- package/node_modules/@appport/server/dist/index.js.map +1 -0
- package/node_modules/@appport/server/dist/node-entry.d.ts +4 -0
- package/node_modules/@appport/server/dist/node-entry.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/node-entry.js +4 -0
- package/node_modules/@appport/server/dist/node-entry.js.map +1 -0
- package/node_modules/@appport/server/dist/node.d.ts +45 -0
- package/node_modules/@appport/server/dist/node.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/node.js +190 -0
- package/node_modules/@appport/server/dist/node.js.map +1 -0
- package/node_modules/@appport/server/dist/server.d.ts +83 -0
- package/node_modules/@appport/server/dist/server.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/server.js +114 -0
- package/node_modules/@appport/server/dist/server.js.map +1 -0
- package/node_modules/@appport/server/dist/websocket.d.ts +25 -0
- package/node_modules/@appport/server/dist/websocket.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/websocket.js +221 -0
- package/node_modules/@appport/server/dist/websocket.js.map +1 -0
- package/node_modules/@appport/server/package.json +34 -0
- package/node_modules/@appport/transport-electron/README.md +56 -0
- package/node_modules/@appport/transport-electron/dist/index.d.ts +11 -0
- package/node_modules/@appport/transport-electron/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/index.js +11 -0
- package/node_modules/@appport/transport-electron/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/main.d.ts +31 -0
- package/node_modules/@appport/transport-electron/dist/main.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/main.js +61 -0
- package/node_modules/@appport/transport-electron/dist/main.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/preload.d.ts +22 -0
- package/node_modules/@appport/transport-electron/dist/preload.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/preload.js +29 -0
- package/node_modules/@appport/transport-electron/dist/preload.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/renderer.d.ts +16 -0
- package/node_modules/@appport/transport-electron/dist/renderer.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/renderer.js +36 -0
- package/node_modules/@appport/transport-electron/dist/renderer.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/types.d.ts +49 -0
- package/node_modules/@appport/transport-electron/dist/types.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/types.js +5 -0
- package/node_modules/@appport/transport-electron/dist/types.js.map +1 -0
- package/node_modules/@appport/transport-electron/package.json +46 -0
- package/node_modules/@appport/transport-http/README.md +24 -0
- package/node_modules/@appport/transport-http/dist/index.d.ts +18 -0
- package/node_modules/@appport/transport-http/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-http/dist/index.js +223 -0
- package/node_modules/@appport/transport-http/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-http/package.json +29 -0
- package/node_modules/@appport/transport-inprocess/README.md +24 -0
- package/node_modules/@appport/transport-inprocess/dist/index.d.ts +16 -0
- package/node_modules/@appport/transport-inprocess/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-inprocess/dist/index.js +30 -0
- package/node_modules/@appport/transport-inprocess/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-inprocess/package.json +30 -0
- package/node_modules/@appport/transport-tauri/README.md +45 -0
- package/node_modules/@appport/transport-tauri/dist/index.d.ts +23 -0
- package/node_modules/@appport/transport-tauri/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-tauri/dist/index.js +44 -0
- package/node_modules/@appport/transport-tauri/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-tauri/package.json +29 -0
- package/node_modules/@appport/transport-websocket/README.md +22 -0
- package/node_modules/@appport/transport-websocket/dist/index.d.ts +26 -0
- package/node_modules/@appport/transport-websocket/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-websocket/dist/index.js +72 -0
- package/node_modules/@appport/transport-websocket/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-websocket/package.json +29 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-connection.js","sourceRoot":"","sources":["../src/repository-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Dependency Resolver (PR22)
|
|
3
|
+
*
|
|
4
|
+
* Deterministic resolution of application capability requirements against
|
|
5
|
+
* the Application Registry.
|
|
6
|
+
*
|
|
7
|
+
* Key principles:
|
|
8
|
+
* - Discovery via ApplicationRegistry (who provides this capability?)
|
|
9
|
+
* - Compatibility evaluation (can this provider satisfy this requirement?)
|
|
10
|
+
* - Deterministic selection (same registry state always produces same result)
|
|
11
|
+
* - No authorization checks (authorization is a separate layer)
|
|
12
|
+
* - No execution (resolution produces metadata only)
|
|
13
|
+
*/
|
|
14
|
+
import type { ApplicationState } from "./state.js";
|
|
15
|
+
import type { ApplicationRegistry } from "./registration.js";
|
|
16
|
+
import type { CapabilityManifestEntry, RequirementManifestEntry } from "./manifest.js";
|
|
17
|
+
/**
|
|
18
|
+
* Extended requirement with version constraint and provider constraint support.
|
|
19
|
+
*
|
|
20
|
+
* Extends RequirementManifestEntry to support semantic version constraints
|
|
21
|
+
* and provider constraints for deterministic resolution.
|
|
22
|
+
*/
|
|
23
|
+
export interface RequirementWithConstraints extends RequirementManifestEntry {
|
|
24
|
+
readonly versionConstraint?: string;
|
|
25
|
+
readonly provider?: {
|
|
26
|
+
readonly applicationId?: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Compatibility result: detailed assessment of whether a provider can satisfy a requirement.
|
|
31
|
+
*/
|
|
32
|
+
export interface CompatibilityResult {
|
|
33
|
+
readonly compatible: boolean;
|
|
34
|
+
readonly reasons: readonly string[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A resolved requirement: provider has been selected.
|
|
38
|
+
*/
|
|
39
|
+
export interface ResolvedRequirement {
|
|
40
|
+
readonly kind: "resolved";
|
|
41
|
+
readonly requirement: RequirementWithConstraints;
|
|
42
|
+
readonly provider: ApplicationState;
|
|
43
|
+
readonly capability: CapabilityManifestEntry;
|
|
44
|
+
readonly compatibility: CompatibilityResult;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* An unresolved requirement: no compatible provider found.
|
|
48
|
+
*/
|
|
49
|
+
export interface UnresolvedRequirement {
|
|
50
|
+
readonly kind: "unresolved";
|
|
51
|
+
readonly requirement: RequirementWithConstraints;
|
|
52
|
+
readonly candidates: readonly ApplicationState[];
|
|
53
|
+
readonly reason: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* An ambiguous requirement: multiple equally valid providers exist.
|
|
57
|
+
*/
|
|
58
|
+
export interface AmbiguousRequirement {
|
|
59
|
+
readonly kind: "ambiguous";
|
|
60
|
+
readonly requirement: RequirementWithConstraints;
|
|
61
|
+
readonly candidates: readonly ApplicationState[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A resolution result: resolved, unresolved, or ambiguous.
|
|
65
|
+
*/
|
|
66
|
+
export type ResolutionResult = ResolvedRequirement | UnresolvedRequirement | AmbiguousRequirement;
|
|
67
|
+
/**
|
|
68
|
+
* Full application resolution: all requirements resolved/unresolved/ambiguous.
|
|
69
|
+
*/
|
|
70
|
+
export interface ApplicationResolution {
|
|
71
|
+
readonly application: ApplicationState;
|
|
72
|
+
readonly results: readonly ResolutionResult[];
|
|
73
|
+
readonly resolved: readonly ResolvedRequirement[];
|
|
74
|
+
readonly unresolved: readonly UnresolvedRequirement[];
|
|
75
|
+
readonly ambiguous: readonly AmbiguousRequirement[];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Parse a semantic version constraint string and check if a provided version satisfies it.
|
|
79
|
+
*
|
|
80
|
+
* Supports:
|
|
81
|
+
* - Exact: "1" (matches 1 only)
|
|
82
|
+
* - Caret: "^1" (matches 1.x.x, i.e., >= 1 and < 2)
|
|
83
|
+
* - Tilde: "~1.2" (matches 1.2.x, i.e., >= 1.2 and < 1.3, but for major version numbers)
|
|
84
|
+
* - Comparison: ">=1", ">1", "<=1", "<1"
|
|
85
|
+
*
|
|
86
|
+
* Returns true if the provided version satisfies the constraint.
|
|
87
|
+
*/
|
|
88
|
+
export declare function satisfiesVersionConstraint(providedVersion: number, constraint: string): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Evaluate capability compatibility between a provider and a requirement.
|
|
91
|
+
*
|
|
92
|
+
* Checks:
|
|
93
|
+
* - Capability name matches exactly
|
|
94
|
+
* - Provider version satisfies version constraint
|
|
95
|
+
* - Provider passes provider constraint (if specified)
|
|
96
|
+
*
|
|
97
|
+
* Returns a CompatibilityResult with detailed reasons.
|
|
98
|
+
*/
|
|
99
|
+
export declare function evaluateCompatibility(requirement: RequirementWithConstraints, provider: ApplicationState): CompatibilityResult;
|
|
100
|
+
/**
|
|
101
|
+
* Application Dependency Resolver
|
|
102
|
+
*
|
|
103
|
+
* Resolves application requirements against the Application Registry using
|
|
104
|
+
* deterministic compatibility evaluation and provider selection.
|
|
105
|
+
*/
|
|
106
|
+
export declare class ApplicationDependencyResolver {
|
|
107
|
+
#private;
|
|
108
|
+
constructor(registry: ApplicationRegistry);
|
|
109
|
+
/**
|
|
110
|
+
* Resolve a single requirement against the registry.
|
|
111
|
+
*
|
|
112
|
+
* Flow:
|
|
113
|
+
* 1. Discover candidate providers (findByCapability)
|
|
114
|
+
* 2. Evaluate compatibility for each candidate
|
|
115
|
+
* 3. Apply provider constraints
|
|
116
|
+
* 4. Select deterministically or report ambiguity
|
|
117
|
+
* 5. Return ResolvedRequirement, UnresolvedRequirement, or AmbiguousRequirement
|
|
118
|
+
*/
|
|
119
|
+
resolveRequirement(requirement: RequirementWithConstraints): Promise<ResolutionResult>;
|
|
120
|
+
/**
|
|
121
|
+
* Resolve all requirements of an application.
|
|
122
|
+
*
|
|
123
|
+
* Returns a comprehensive ApplicationResolution containing:
|
|
124
|
+
* - All resolution results
|
|
125
|
+
* - Separated resolved/unresolved/ambiguous for easy access
|
|
126
|
+
* - The application state (unchanged)
|
|
127
|
+
*/
|
|
128
|
+
resolveApplication(application: ApplicationState): Promise<ApplicationResolution>;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAuB,MAAM,eAAe,CAAC;AAG5G;;;;;GAKG;AACH,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IAC1E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAElG;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACrD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAqD/F;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,0BAA0B,EACvC,QAAQ,EAAE,gBAAgB,GACzB,mBAAmB,CAgCrB;AAED;;;;;GAKG;AACH,qBAAa,6BAA6B;;gBAG5B,QAAQ,EAAE,mBAAmB;IAIzC;;;;;;;;;OASG;IACG,kBAAkB,CAAC,WAAW,EAAE,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwG5F;;;;;;;OAOG;IACG,kBAAkB,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAyBxF"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Dependency Resolver (PR22)
|
|
3
|
+
*
|
|
4
|
+
* Deterministic resolution of application capability requirements against
|
|
5
|
+
* the Application Registry.
|
|
6
|
+
*
|
|
7
|
+
* Key principles:
|
|
8
|
+
* - Discovery via ApplicationRegistry (who provides this capability?)
|
|
9
|
+
* - Compatibility evaluation (can this provider satisfy this requirement?)
|
|
10
|
+
* - Deterministic selection (same registry state always produces same result)
|
|
11
|
+
* - No authorization checks (authorization is a separate layer)
|
|
12
|
+
* - No execution (resolution produces metadata only)
|
|
13
|
+
*/
|
|
14
|
+
import { attestResolution } from "./authority-attestation.js";
|
|
15
|
+
/**
|
|
16
|
+
* Parse a semantic version constraint string and check if a provided version satisfies it.
|
|
17
|
+
*
|
|
18
|
+
* Supports:
|
|
19
|
+
* - Exact: "1" (matches 1 only)
|
|
20
|
+
* - Caret: "^1" (matches 1.x.x, i.e., >= 1 and < 2)
|
|
21
|
+
* - Tilde: "~1.2" (matches 1.2.x, i.e., >= 1.2 and < 1.3, but for major version numbers)
|
|
22
|
+
* - Comparison: ">=1", ">1", "<=1", "<1"
|
|
23
|
+
*
|
|
24
|
+
* Returns true if the provided version satisfies the constraint.
|
|
25
|
+
*/
|
|
26
|
+
export function satisfiesVersionConstraint(providedVersion, constraint) {
|
|
27
|
+
const trimmed = constraint.trim();
|
|
28
|
+
// Caret range: ^1 matches >= 1 and < 2
|
|
29
|
+
if (trimmed.startsWith("^")) {
|
|
30
|
+
const versionStr = trimmed.substring(1);
|
|
31
|
+
const [major] = versionStr.split(".").map(Number);
|
|
32
|
+
return providedVersion >= major && providedVersion < major + 1;
|
|
33
|
+
}
|
|
34
|
+
// Tilde range: ~1.2 matches >= 1.2 and < 1.3 (but for major version numbers)
|
|
35
|
+
if (trimmed.startsWith("~")) {
|
|
36
|
+
const versionStr = trimmed.substring(1);
|
|
37
|
+
const [major, minor] = versionStr.split(".").map(Number);
|
|
38
|
+
if (minor === undefined) {
|
|
39
|
+
// ~1 is equivalent to ^1
|
|
40
|
+
return providedVersion >= major && providedVersion < major + 1;
|
|
41
|
+
}
|
|
42
|
+
// For ~1.2, since we're dealing with major version numbers, only match the major
|
|
43
|
+
return providedVersion === major;
|
|
44
|
+
}
|
|
45
|
+
// Greater than or equal: >=1
|
|
46
|
+
if (trimmed.startsWith(">=")) {
|
|
47
|
+
const version = parseInt(trimmed.substring(2), 10);
|
|
48
|
+
return providedVersion >= version;
|
|
49
|
+
}
|
|
50
|
+
// Greater than: >1
|
|
51
|
+
if (trimmed.startsWith(">")) {
|
|
52
|
+
const version = parseInt(trimmed.substring(1), 10);
|
|
53
|
+
return providedVersion > version;
|
|
54
|
+
}
|
|
55
|
+
// Less than or equal: <=1
|
|
56
|
+
if (trimmed.startsWith("<=")) {
|
|
57
|
+
const version = parseInt(trimmed.substring(2), 10);
|
|
58
|
+
return providedVersion <= version;
|
|
59
|
+
}
|
|
60
|
+
// Less than: <1
|
|
61
|
+
if (trimmed.startsWith("<")) {
|
|
62
|
+
const version = parseInt(trimmed.substring(1), 10);
|
|
63
|
+
return providedVersion < version;
|
|
64
|
+
}
|
|
65
|
+
// Exact version: 1
|
|
66
|
+
const version = parseInt(trimmed, 10);
|
|
67
|
+
if (!Number.isNaN(version)) {
|
|
68
|
+
return providedVersion === version;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Evaluate capability compatibility between a provider and a requirement.
|
|
74
|
+
*
|
|
75
|
+
* Checks:
|
|
76
|
+
* - Capability name matches exactly
|
|
77
|
+
* - Provider version satisfies version constraint
|
|
78
|
+
* - Provider passes provider constraint (if specified)
|
|
79
|
+
*
|
|
80
|
+
* Returns a CompatibilityResult with detailed reasons.
|
|
81
|
+
*/
|
|
82
|
+
export function evaluateCompatibility(requirement, provider) {
|
|
83
|
+
const reasons = [];
|
|
84
|
+
// Find the capability in the provider's manifest
|
|
85
|
+
const capability = provider.manifest.provides.find((cap) => cap.name === requirement.name);
|
|
86
|
+
if (!capability) {
|
|
87
|
+
reasons.push(`Provider ${provider.id} does not provide capability "${requirement.name}"`);
|
|
88
|
+
return { compatible: false, reasons };
|
|
89
|
+
}
|
|
90
|
+
// Check version constraint
|
|
91
|
+
const versionConstraint = requirement.versionConstraint || String(requirement.version);
|
|
92
|
+
if (!satisfiesVersionConstraint(capability.version, versionConstraint)) {
|
|
93
|
+
reasons.push(`Provider version ${capability.version} does not satisfy constraint "${versionConstraint}" for "${requirement.name}"`);
|
|
94
|
+
return { compatible: false, reasons };
|
|
95
|
+
}
|
|
96
|
+
// Check provider constraint
|
|
97
|
+
if (requirement.provider?.applicationId) {
|
|
98
|
+
if (provider.id !== requirement.provider.applicationId) {
|
|
99
|
+
reasons.push(`Requirement specifies provider "${requirement.provider.applicationId}" but got provider "${provider.id}"`);
|
|
100
|
+
return { compatible: false, reasons };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// All checks passed
|
|
104
|
+
return { compatible: true, reasons: [] };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Application Dependency Resolver
|
|
108
|
+
*
|
|
109
|
+
* Resolves application requirements against the Application Registry using
|
|
110
|
+
* deterministic compatibility evaluation and provider selection.
|
|
111
|
+
*/
|
|
112
|
+
export class ApplicationDependencyResolver {
|
|
113
|
+
#registry;
|
|
114
|
+
constructor(registry) {
|
|
115
|
+
this.#registry = registry;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Resolve a single requirement against the registry.
|
|
119
|
+
*
|
|
120
|
+
* Flow:
|
|
121
|
+
* 1. Discover candidate providers (findByCapability)
|
|
122
|
+
* 2. Evaluate compatibility for each candidate
|
|
123
|
+
* 3. Apply provider constraints
|
|
124
|
+
* 4. Select deterministically or report ambiguity
|
|
125
|
+
* 5. Return ResolvedRequirement, UnresolvedRequirement, or AmbiguousRequirement
|
|
126
|
+
*/
|
|
127
|
+
async resolveRequirement(requirement) {
|
|
128
|
+
// If requirement has a provider constraint, look for that specific provider
|
|
129
|
+
if (requirement.provider?.applicationId) {
|
|
130
|
+
const provider = await this.#registry.get(requirement.provider.applicationId);
|
|
131
|
+
if (!provider) {
|
|
132
|
+
return {
|
|
133
|
+
kind: "unresolved",
|
|
134
|
+
requirement,
|
|
135
|
+
candidates: [],
|
|
136
|
+
reason: `Provider "${requirement.provider.applicationId}" not found in registry`
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const compat = evaluateCompatibility(requirement, provider);
|
|
140
|
+
if (compat.compatible) {
|
|
141
|
+
const capability = provider.manifest.provides.find((cap) => cap.name === requirement.name);
|
|
142
|
+
const resolution = {
|
|
143
|
+
kind: "resolved",
|
|
144
|
+
requirement,
|
|
145
|
+
provider,
|
|
146
|
+
capability,
|
|
147
|
+
compatibility: compat
|
|
148
|
+
};
|
|
149
|
+
attestResolution(resolution, this.#registry);
|
|
150
|
+
return resolution;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
return {
|
|
154
|
+
kind: "unresolved",
|
|
155
|
+
requirement,
|
|
156
|
+
candidates: [provider],
|
|
157
|
+
reason: compat.reasons.join("; ")
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Discover candidates: applications providing this capability
|
|
162
|
+
const candidates = await this.#registry.findByCapability(requirement.name);
|
|
163
|
+
if (candidates.length === 0) {
|
|
164
|
+
return {
|
|
165
|
+
kind: "unresolved",
|
|
166
|
+
requirement,
|
|
167
|
+
candidates: [],
|
|
168
|
+
reason: `No providers found for capability "${requirement.name}"`
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// Evaluate compatibility for each candidate
|
|
172
|
+
const compatible = [];
|
|
173
|
+
for (const candidate of candidates) {
|
|
174
|
+
const compat = evaluateCompatibility(requirement, candidate);
|
|
175
|
+
if (compat.compatible) {
|
|
176
|
+
const capability = candidate.manifest.provides.find((cap) => cap.name === requirement.name);
|
|
177
|
+
compatible.push({ provider: candidate, capability });
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (compatible.length === 0) {
|
|
181
|
+
return {
|
|
182
|
+
kind: "unresolved",
|
|
183
|
+
requirement,
|
|
184
|
+
candidates,
|
|
185
|
+
reason: `No compatible providers found for "${requirement.name}"`
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
if (compatible.length > 1) {
|
|
189
|
+
// Apply deterministic selection: highest version, then by application ID
|
|
190
|
+
compatible.sort((a, b) => {
|
|
191
|
+
const versionDiff = b.capability.version - a.capability.version;
|
|
192
|
+
if (versionDiff !== 0)
|
|
193
|
+
return versionDiff;
|
|
194
|
+
return a.provider.id.localeCompare(b.provider.id);
|
|
195
|
+
});
|
|
196
|
+
// Check if the top candidate is unique
|
|
197
|
+
const top = compatible[0];
|
|
198
|
+
const second = compatible[1];
|
|
199
|
+
if (top.capability.version === second.capability.version &&
|
|
200
|
+
top.provider.id !== second.provider.id) {
|
|
201
|
+
// Ambiguous: multiple providers with same version
|
|
202
|
+
return {
|
|
203
|
+
kind: "ambiguous",
|
|
204
|
+
requirement,
|
|
205
|
+
candidates: compatible.map((c) => c.provider)
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Return the selected provider
|
|
210
|
+
const selected = compatible[0];
|
|
211
|
+
const resolution = {
|
|
212
|
+
kind: "resolved",
|
|
213
|
+
requirement,
|
|
214
|
+
provider: selected.provider,
|
|
215
|
+
capability: selected.capability,
|
|
216
|
+
compatibility: { compatible: true, reasons: [] }
|
|
217
|
+
};
|
|
218
|
+
attestResolution(resolution, this.#registry);
|
|
219
|
+
return resolution;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Resolve all requirements of an application.
|
|
223
|
+
*
|
|
224
|
+
* Returns a comprehensive ApplicationResolution containing:
|
|
225
|
+
* - All resolution results
|
|
226
|
+
* - Separated resolved/unresolved/ambiguous for easy access
|
|
227
|
+
* - The application state (unchanged)
|
|
228
|
+
*/
|
|
229
|
+
async resolveApplication(application) {
|
|
230
|
+
const results = [];
|
|
231
|
+
for (const requirement of application.manifest.requires) {
|
|
232
|
+
const requirementWithConstraints = {
|
|
233
|
+
...requirement,
|
|
234
|
+
versionConstraint: requirement.versionConstraint || String(requirement.version)
|
|
235
|
+
};
|
|
236
|
+
const result = await this.resolveRequirement(requirementWithConstraints);
|
|
237
|
+
results.push(result);
|
|
238
|
+
}
|
|
239
|
+
// Separate into categories
|
|
240
|
+
const resolved = results.filter((r) => r.kind === "resolved");
|
|
241
|
+
const unresolved = results.filter((r) => r.kind === "unresolved");
|
|
242
|
+
const ambiguous = results.filter((r) => r.kind === "ambiguous");
|
|
243
|
+
return {
|
|
244
|
+
application,
|
|
245
|
+
results,
|
|
246
|
+
resolved,
|
|
247
|
+
unresolved,
|
|
248
|
+
ambiguous
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Implementation Manifest (F6)
|
|
3
|
+
*
|
|
4
|
+
* The local, per-source description of what a repository/runtime actually
|
|
5
|
+
* implements. It is implementation metadata and nothing else.
|
|
6
|
+
*
|
|
7
|
+
* It establishes:
|
|
8
|
+
* - implementation capability coverage
|
|
9
|
+
*
|
|
10
|
+
* It does NOT establish:
|
|
11
|
+
* - application identity
|
|
12
|
+
* - contract authority
|
|
13
|
+
* - the application fingerprint
|
|
14
|
+
* - authorization
|
|
15
|
+
* - provider identity
|
|
16
|
+
*
|
|
17
|
+
* This schema is deliberately distinct from `AppBoundryContractDocument`. The
|
|
18
|
+
* two documents are never aliased, and parsing one rejects the other so a
|
|
19
|
+
* contract mismatch can never be converted into a runtime-manifest match.
|
|
20
|
+
*/
|
|
21
|
+
/** Protocol identifier of the runtime implementation manifest. */
|
|
22
|
+
export declare const RUNTIME_IMPLEMENTATION_MANIFEST_PROTOCOL = "AppPort/runtime-implementation/1";
|
|
23
|
+
/** Canonical file name of the runtime implementation manifest. */
|
|
24
|
+
export declare const RUNTIME_IMPLEMENTATION_MANIFEST_FILE = "appport.implementation.json";
|
|
25
|
+
/** A capability this source claims to implement. */
|
|
26
|
+
export interface RuntimeImplementedCapability {
|
|
27
|
+
readonly name: string;
|
|
28
|
+
readonly version: number;
|
|
29
|
+
/** Optional implementation entry point, meaningful only to the source. */
|
|
30
|
+
readonly entry?: string;
|
|
31
|
+
}
|
|
32
|
+
/** What a particular source implements of an application it does not own. */
|
|
33
|
+
export interface RuntimeImplementationManifest {
|
|
34
|
+
readonly protocol: typeof RUNTIME_IMPLEMENTATION_MANIFEST_PROTOCOL;
|
|
35
|
+
/** Reference to the AppBoundry application. The source never owns this id. */
|
|
36
|
+
readonly applicationId: string;
|
|
37
|
+
/** Stable identity of this implementation, distinct from the application. */
|
|
38
|
+
readonly implementationId?: string;
|
|
39
|
+
/** Provider-neutral source connection identity established by AppBoundry. */
|
|
40
|
+
readonly sourceId?: string;
|
|
41
|
+
readonly implements: readonly RuntimeImplementedCapability[];
|
|
42
|
+
readonly build?: {
|
|
43
|
+
readonly command?: string;
|
|
44
|
+
readonly artifactPath?: string;
|
|
45
|
+
};
|
|
46
|
+
readonly runtime?: {
|
|
47
|
+
readonly engine?: "wasm";
|
|
48
|
+
readonly artifactHash?: string;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export type RuntimeManifestErrorCode = "RUNTIME_MANIFEST_INVALID" | "RUNTIME_MANIFEST_IS_A_CONTRACT";
|
|
52
|
+
/** Explicit runtime-manifest failure; never silently promoted to a contract. */
|
|
53
|
+
export declare class RuntimeManifestError extends Error {
|
|
54
|
+
readonly code: RuntimeManifestErrorCode;
|
|
55
|
+
constructor(code: RuntimeManifestErrorCode, message: string);
|
|
56
|
+
}
|
|
57
|
+
/** Parse a runtime implementation manifest, rejecting contract documents. */
|
|
58
|
+
export declare function parseRuntimeImplementationManifest(value: unknown): RuntimeImplementationManifest;
|
|
59
|
+
/**
|
|
60
|
+
* Derive implementation coverage from a runtime manifest.
|
|
61
|
+
*
|
|
62
|
+
* Coverage is a claim, not an authority. It becomes meaningful only once
|
|
63
|
+
* validated against the authoritative contract (see `contract-attestation.ts`).
|
|
64
|
+
*/
|
|
65
|
+
export declare function deriveImplementationCoverage(manifest: RuntimeImplementationManifest): readonly string[];
|
|
66
|
+
/** Render a runtime implementation manifest for a repository to commit. */
|
|
67
|
+
export declare function serializeRuntimeImplementationManifest(manifest: RuntimeImplementationManifest): string;
|
|
68
|
+
//# sourceMappingURL=runtime-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-manifest.d.ts","sourceRoot":"","sources":["../src/runtime-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,kEAAkE;AAClE,eAAO,MAAM,wCAAwC,qCAAqC,CAAC;AAE3F,kEAAkE;AAClE,eAAO,MAAM,oCAAoC,gCAAgC,CAAC;AAElF,oDAAoD;AACpD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,6EAA6E;AAC7E,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,OAAO,wCAAwC,CAAC;IACnE,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;CACH;AAED,MAAM,MAAM,wBAAwB,GAChC,0BAA0B,GAC1B,gCAAgC,CAAC;AAErC,gFAAgF;AAChF,qBAAa,oBAAqB,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,wBAAwB;gBAA9B,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM;CAIrE;AAED,6EAA6E;AAC7E,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,6BAA6B,CAuChG;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,6BAA6B,GAAG,SAAS,MAAM,EAAE,CAEvG;AAED,2EAA2E;AAC3E,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,6BAA6B,GAAG,MAAM,CAEtG"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Implementation Manifest (F6)
|
|
3
|
+
*
|
|
4
|
+
* The local, per-source description of what a repository/runtime actually
|
|
5
|
+
* implements. It is implementation metadata and nothing else.
|
|
6
|
+
*
|
|
7
|
+
* It establishes:
|
|
8
|
+
* - implementation capability coverage
|
|
9
|
+
*
|
|
10
|
+
* It does NOT establish:
|
|
11
|
+
* - application identity
|
|
12
|
+
* - contract authority
|
|
13
|
+
* - the application fingerprint
|
|
14
|
+
* - authorization
|
|
15
|
+
* - provider identity
|
|
16
|
+
*
|
|
17
|
+
* This schema is deliberately distinct from `AppBoundryContractDocument`. The
|
|
18
|
+
* two documents are never aliased, and parsing one rejects the other so a
|
|
19
|
+
* contract mismatch can never be converted into a runtime-manifest match.
|
|
20
|
+
*/
|
|
21
|
+
import { APPBOUNDRY_CONTRACT_PROTOCOL, capabilityCoverageKey } from "./appboundry-contract.js";
|
|
22
|
+
/** Protocol identifier of the runtime implementation manifest. */
|
|
23
|
+
export const RUNTIME_IMPLEMENTATION_MANIFEST_PROTOCOL = "AppPort/runtime-implementation/1";
|
|
24
|
+
/** Canonical file name of the runtime implementation manifest. */
|
|
25
|
+
export const RUNTIME_IMPLEMENTATION_MANIFEST_FILE = "appport.implementation.json";
|
|
26
|
+
/** Explicit runtime-manifest failure; never silently promoted to a contract. */
|
|
27
|
+
export class RuntimeManifestError extends Error {
|
|
28
|
+
code;
|
|
29
|
+
constructor(code, message) {
|
|
30
|
+
super(message);
|
|
31
|
+
this.code = code;
|
|
32
|
+
this.name = "RuntimeManifestError";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Parse a runtime implementation manifest, rejecting contract documents. */
|
|
36
|
+
export function parseRuntimeImplementationManifest(value) {
|
|
37
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
38
|
+
throw new RuntimeManifestError("RUNTIME_MANIFEST_INVALID", "The runtime implementation manifest must be a JSON object");
|
|
39
|
+
}
|
|
40
|
+
const candidate = value;
|
|
41
|
+
if (candidate.protocol === APPBOUNDRY_CONTRACT_PROTOCOL) {
|
|
42
|
+
throw new RuntimeManifestError("RUNTIME_MANIFEST_IS_A_CONTRACT", "An AppBoundry contract is not a runtime implementation manifest");
|
|
43
|
+
}
|
|
44
|
+
if (candidate.protocol !== RUNTIME_IMPLEMENTATION_MANIFEST_PROTOCOL) {
|
|
45
|
+
throw new RuntimeManifestError("RUNTIME_MANIFEST_INVALID", `Expected protocol "${RUNTIME_IMPLEMENTATION_MANIFEST_PROTOCOL}" but found "${String(candidate.protocol)}"`);
|
|
46
|
+
}
|
|
47
|
+
if (typeof candidate.applicationId !== "string" || !candidate.applicationId.length) {
|
|
48
|
+
throw new RuntimeManifestError("RUNTIME_MANIFEST_INVALID", "applicationId must be a non-empty string");
|
|
49
|
+
}
|
|
50
|
+
if (!Array.isArray(candidate.implements) || candidate.implements.length === 0) {
|
|
51
|
+
throw new RuntimeManifestError("RUNTIME_MANIFEST_INVALID", "implements must declare at least one capability");
|
|
52
|
+
}
|
|
53
|
+
if (candidate.implementationId !== undefined && (typeof candidate.implementationId !== "string" || !candidate.implementationId.length)) {
|
|
54
|
+
throw new RuntimeManifestError("RUNTIME_MANIFEST_INVALID", "implementationId must be a non-empty string");
|
|
55
|
+
}
|
|
56
|
+
if (candidate.implementationId === candidate.applicationId) {
|
|
57
|
+
throw new RuntimeManifestError("RUNTIME_MANIFEST_INVALID", "implementation identity must be distinct from application identity");
|
|
58
|
+
}
|
|
59
|
+
const seen = new Set();
|
|
60
|
+
for (const entry of candidate.implements) {
|
|
61
|
+
if (typeof entry?.name !== "string" || !Number.isInteger(entry?.version)) {
|
|
62
|
+
throw new RuntimeManifestError("RUNTIME_MANIFEST_INVALID", "every implemented capability needs a name and integer version");
|
|
63
|
+
}
|
|
64
|
+
const key = `${entry.name}@${entry.version}`;
|
|
65
|
+
if (seen.has(key))
|
|
66
|
+
throw new RuntimeManifestError("RUNTIME_MANIFEST_INVALID", `duplicate implemented capability ${key}`);
|
|
67
|
+
seen.add(key);
|
|
68
|
+
}
|
|
69
|
+
return candidate;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Derive implementation coverage from a runtime manifest.
|
|
73
|
+
*
|
|
74
|
+
* Coverage is a claim, not an authority. It becomes meaningful only once
|
|
75
|
+
* validated against the authoritative contract (see `contract-attestation.ts`).
|
|
76
|
+
*/
|
|
77
|
+
export function deriveImplementationCoverage(manifest) {
|
|
78
|
+
return [...new Set(manifest.implements.map(capabilityCoverageKey))].sort();
|
|
79
|
+
}
|
|
80
|
+
/** Render a runtime implementation manifest for a repository to commit. */
|
|
81
|
+
export function serializeRuntimeImplementationManifest(manifest) {
|
|
82
|
+
return `${JSON.stringify(manifest, null, 2)}\n`;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=runtime-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-manifest.js","sourceRoot":"","sources":["../src/runtime-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type AppErrorObject, type JsonValue } from "@appport/protocol";
|
|
2
|
+
/**
|
|
3
|
+
* Error sanitization (specification §16).
|
|
4
|
+
*
|
|
5
|
+
* Production responses never carry stack traces, filesystem paths, credentials
|
|
6
|
+
* or raw driver errors. Development mode may attach diagnostics, and does so
|
|
7
|
+
* under an explicitly namespaced `diagnostic` detail so it is obvious when a
|
|
8
|
+
* deployment is leaking.
|
|
9
|
+
*/
|
|
10
|
+
export type RuntimeMode = "development" | "production";
|
|
11
|
+
/** Redacts values whose key suggests a credential. */
|
|
12
|
+
export declare function redact(value: JsonValue, depth?: number): JsonValue;
|
|
13
|
+
export declare function toWireError(error: unknown, mode?: RuntimeMode): AppErrorObject;
|
|
14
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9F;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;AAIvD,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,SAAI,GAAG,SAAS,CAQ7D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,WAA0B,GAAG,cAAc,CAoB5F"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AppPortError, errors } from "@appport/protocol";
|
|
2
|
+
const SENSITIVE_KEY = /(password|secret|token|credential|authorization|api[-_]?key|cookie|session[-_]?id)/i;
|
|
3
|
+
/** Redacts values whose key suggests a credential. */
|
|
4
|
+
export function redact(value, depth = 0) {
|
|
5
|
+
if (depth > 6 || value === null || typeof value !== "object")
|
|
6
|
+
return value;
|
|
7
|
+
if (Array.isArray(value))
|
|
8
|
+
return value.map((entry) => redact(entry, depth + 1));
|
|
9
|
+
const out = {};
|
|
10
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
11
|
+
out[key] = SENSITIVE_KEY.test(key) ? "[redacted]" : redact(entry, depth + 1);
|
|
12
|
+
}
|
|
13
|
+
return out;
|
|
14
|
+
}
|
|
15
|
+
export function toWireError(error, mode = "production") {
|
|
16
|
+
if (AppPortError.is(error)) {
|
|
17
|
+
const wire = error.toErrorObject();
|
|
18
|
+
if (wire.details !== undefined)
|
|
19
|
+
wire.details = redact(wire.details);
|
|
20
|
+
if (mode === "development" && error.internal !== undefined) {
|
|
21
|
+
wire.details = {
|
|
22
|
+
...(typeof wire.details === "object" && wire.details !== null && !Array.isArray(wire.details)
|
|
23
|
+
? wire.details
|
|
24
|
+
: {}),
|
|
25
|
+
diagnostic: describe(error.internal)
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return wire;
|
|
29
|
+
}
|
|
30
|
+
const wire = errors.internal().toErrorObject();
|
|
31
|
+
if (mode === "development") {
|
|
32
|
+
wire.details = { diagnostic: describe(error) };
|
|
33
|
+
}
|
|
34
|
+
return wire;
|
|
35
|
+
}
|
|
36
|
+
function describe(value) {
|
|
37
|
+
if (value instanceof Error) {
|
|
38
|
+
return {
|
|
39
|
+
name: value.name,
|
|
40
|
+
message: value.message,
|
|
41
|
+
...(value.stack ? { stack: value.stack.split("\n").slice(0, 8).join("\n") } : {})
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean" || value === null) {
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
return String(value);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=sanitize.js.map
|