@appport/sdk 1.1.19 → 1.1.20
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 +86 -9
- package/dist/application-onboarding.d.ts +52 -0
- package/dist/application-onboarding.d.ts.map +1 -0
- package/dist/application-onboarding.js +50 -0
- package/dist/application-onboarding.js.map +1 -0
- package/dist/external-compatibility.d.ts +142 -0
- package/dist/external-compatibility.d.ts.map +1 -0
- package/dist/external-compatibility.js +132 -0
- package/dist/external-compatibility.js.map +1 -0
- package/dist/index.d.ts +18 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -13
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +1 -1
- package/dist/node.js +1 -1
- package/dist/provider-lifecycle.d.ts +247 -0
- package/dist/provider-lifecycle.d.ts.map +1 -0
- package/dist/provider-lifecycle.js +314 -0
- package/dist/provider-lifecycle.js.map +1 -0
- package/dist/resolution-policy.d.ts +81 -0
- package/dist/resolution-policy.d.ts.map +1 -0
- package/dist/resolution-policy.js +131 -0
- package/dist/resolution-policy.js.map +1 -0
- package/package.json +32 -22
- package/vendor/@appport/authorization/README.md +28 -0
- package/vendor/@appport/authorization/dist/index.d.ts +94 -0
- package/vendor/@appport/authorization/dist/index.d.ts.map +1 -0
- package/vendor/@appport/authorization/dist/index.js +131 -0
- package/vendor/@appport/authorization/dist/index.js.map +1 -0
- package/vendor/@appport/authorization/package.json +28 -0
- package/vendor/@appport/client/README.md +35 -0
- package/vendor/@appport/client/dist/channel.d.ts +14 -0
- package/vendor/@appport/client/dist/channel.d.ts.map +1 -0
- package/vendor/@appport/client/dist/channel.js +58 -0
- package/vendor/@appport/client/dist/channel.js.map +1 -0
- package/vendor/@appport/client/dist/client.d.ts +61 -0
- package/vendor/@appport/client/dist/client.d.ts.map +1 -0
- package/vendor/@appport/client/dist/client.js +214 -0
- package/vendor/@appport/client/dist/client.js.map +1 -0
- package/vendor/@appport/client/dist/contract.d.ts +55 -0
- package/vendor/@appport/client/dist/contract.d.ts.map +1 -0
- package/vendor/@appport/client/dist/contract.js +12 -0
- package/vendor/@appport/client/dist/contract.js.map +1 -0
- package/vendor/@appport/client/dist/discovery.d.ts +17 -0
- package/vendor/@appport/client/dist/discovery.d.ts.map +1 -0
- package/vendor/@appport/client/dist/discovery.js +56 -0
- package/vendor/@appport/client/dist/discovery.js.map +1 -0
- package/vendor/@appport/client/dist/duplex.d.ts +25 -0
- package/vendor/@appport/client/dist/duplex.d.ts.map +1 -0
- package/vendor/@appport/client/dist/duplex.js +194 -0
- package/vendor/@appport/client/dist/duplex.js.map +1 -0
- package/vendor/@appport/client/dist/host.d.ts +62 -0
- package/vendor/@appport/client/dist/host.d.ts.map +1 -0
- package/vendor/@appport/client/dist/host.js +139 -0
- package/vendor/@appport/client/dist/host.js.map +1 -0
- package/vendor/@appport/client/dist/index.d.ts +14 -0
- package/vendor/@appport/client/dist/index.d.ts.map +1 -0
- package/vendor/@appport/client/dist/index.js +14 -0
- package/vendor/@appport/client/dist/index.js.map +1 -0
- package/vendor/@appport/client/dist/transport.d.ts +42 -0
- package/vendor/@appport/client/dist/transport.d.ts.map +1 -0
- package/vendor/@appport/client/dist/transport.js +2 -0
- package/vendor/@appport/client/dist/transport.js.map +1 -0
- package/vendor/@appport/client/package.json +32 -0
- package/vendor/@appport/core/README.md +91 -0
- package/vendor/@appport/core/dist/appboundry-capability-catalog.d.ts +930 -0
- package/vendor/@appport/core/dist/appboundry-capability-catalog.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-capability-catalog.js +352 -0
- package/vendor/@appport/core/dist/appboundry-capability-catalog.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-composition.d.ts +93 -0
- package/vendor/@appport/core/dist/appboundry-composition.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-composition.js +184 -0
- package/vendor/@appport/core/dist/appboundry-composition.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-contract.d.ts +80 -0
- package/vendor/@appport/core/dist/appboundry-contract.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-contract.js +160 -0
- package/vendor/@appport/core/dist/appboundry-contract.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-diagnostics.d.ts +107 -0
- package/vendor/@appport/core/dist/appboundry-diagnostics.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-diagnostics.js +358 -0
- package/vendor/@appport/core/dist/appboundry-diagnostics.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-discovery.d.ts +110 -0
- package/vendor/@appport/core/dist/appboundry-discovery.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-discovery.js +141 -0
- package/vendor/@appport/core/dist/appboundry-discovery.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-entitlements.d.ts +128 -0
- package/vendor/@appport/core/dist/appboundry-entitlements.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-entitlements.js +312 -0
- package/vendor/@appport/core/dist/appboundry-entitlements.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-execution.d.ts +84 -0
- package/vendor/@appport/core/dist/appboundry-execution.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-execution.js +150 -0
- package/vendor/@appport/core/dist/appboundry-execution.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-exercise.d.ts +152 -0
- package/vendor/@appport/core/dist/appboundry-exercise.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-exercise.js +416 -0
- package/vendor/@appport/core/dist/appboundry-exercise.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-materialization.d.ts +222 -0
- package/vendor/@appport/core/dist/appboundry-materialization.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-materialization.js +494 -0
- package/vendor/@appport/core/dist/appboundry-materialization.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-migration.d.ts +195 -0
- package/vendor/@appport/core/dist/appboundry-migration.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-migration.js +227 -0
- package/vendor/@appport/core/dist/appboundry-migration.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-onboarding.d.ts +70 -0
- package/vendor/@appport/core/dist/appboundry-onboarding.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-onboarding.js +232 -0
- package/vendor/@appport/core/dist/appboundry-onboarding.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-operation-discovery.d.ts +93 -0
- package/vendor/@appport/core/dist/appboundry-operation-discovery.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-operation-discovery.js +89 -0
- package/vendor/@appport/core/dist/appboundry-operation-discovery.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-resolution.d.ts +160 -0
- package/vendor/@appport/core/dist/appboundry-resolution.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-resolution.js +218 -0
- package/vendor/@appport/core/dist/appboundry-resolution.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-surface.d.ts +96 -0
- package/vendor/@appport/core/dist/appboundry-surface.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-surface.js +223 -0
- package/vendor/@appport/core/dist/appboundry-surface.js.map +1 -0
- package/vendor/@appport/core/dist/appboundry-usage.d.ts +94 -0
- package/vendor/@appport/core/dist/appboundry-usage.d.ts.map +1 -0
- package/vendor/@appport/core/dist/appboundry-usage.js +80 -0
- package/vendor/@appport/core/dist/appboundry-usage.js.map +1 -0
- package/vendor/@appport/core/dist/application-conformance.d.ts +68 -0
- package/vendor/@appport/core/dist/application-conformance.d.ts.map +1 -0
- package/vendor/@appport/core/dist/application-conformance.js +108 -0
- package/vendor/@appport/core/dist/application-conformance.js.map +1 -0
- package/vendor/@appport/core/dist/application-implementation.d.ts +125 -0
- package/vendor/@appport/core/dist/application-implementation.d.ts.map +1 -0
- package/vendor/@appport/core/dist/application-implementation.js +220 -0
- package/vendor/@appport/core/dist/application-implementation.js.map +1 -0
- package/vendor/@appport/core/dist/application-lifecycle.d.ts +150 -0
- package/vendor/@appport/core/dist/application-lifecycle.d.ts.map +1 -0
- package/vendor/@appport/core/dist/application-lifecycle.js +70 -0
- package/vendor/@appport/core/dist/application-lifecycle.js.map +1 -0
- package/vendor/@appport/core/dist/application-package.d.ts +105 -0
- package/vendor/@appport/core/dist/application-package.d.ts.map +1 -0
- package/vendor/@appport/core/dist/application-package.js +349 -0
- package/vendor/@appport/core/dist/application-package.js.map +1 -0
- package/vendor/@appport/core/dist/application-source.d.ts +109 -0
- package/vendor/@appport/core/dist/application-source.d.ts.map +1 -0
- package/vendor/@appport/core/dist/application-source.js +186 -0
- package/vendor/@appport/core/dist/application-source.js.map +1 -0
- package/vendor/@appport/core/dist/application.d.ts +124 -0
- package/vendor/@appport/core/dist/application.d.ts.map +1 -0
- package/vendor/@appport/core/dist/application.js +518 -0
- package/vendor/@appport/core/dist/application.js.map +1 -0
- package/vendor/@appport/core/dist/artifact.d.ts +395 -0
- package/vendor/@appport/core/dist/artifact.d.ts.map +1 -0
- package/vendor/@appport/core/dist/artifact.js +392 -0
- package/vendor/@appport/core/dist/artifact.js.map +1 -0
- package/vendor/@appport/core/dist/assembly.d.ts +237 -0
- package/vendor/@appport/core/dist/assembly.d.ts.map +1 -0
- package/vendor/@appport/core/dist/assembly.js +458 -0
- package/vendor/@appport/core/dist/assembly.js.map +1 -0
- package/vendor/@appport/core/dist/authority-attestation.d.ts +34 -0
- package/vendor/@appport/core/dist/authority-attestation.d.ts.map +1 -0
- package/vendor/@appport/core/dist/authority-attestation.js +72 -0
- package/vendor/@appport/core/dist/authority-attestation.js.map +1 -0
- package/vendor/@appport/core/dist/authorization-grant.d.ts +107 -0
- package/vendor/@appport/core/dist/authorization-grant.d.ts.map +1 -0
- package/vendor/@appport/core/dist/authorization-grant.js +131 -0
- package/vendor/@appport/core/dist/authorization-grant.js.map +1 -0
- package/vendor/@appport/core/dist/binding.d.ts +294 -0
- package/vendor/@appport/core/dist/binding.d.ts.map +1 -0
- package/vendor/@appport/core/dist/binding.js +263 -0
- package/vendor/@appport/core/dist/binding.js.map +1 -0
- package/vendor/@appport/core/dist/builtins.d.ts +18 -0
- package/vendor/@appport/core/dist/builtins.d.ts.map +1 -0
- package/vendor/@appport/core/dist/builtins.js +38 -0
- package/vendor/@appport/core/dist/builtins.js.map +1 -0
- package/vendor/@appport/core/dist/capability.d.ts +94 -0
- package/vendor/@appport/core/dist/capability.d.ts.map +1 -0
- package/vendor/@appport/core/dist/capability.js +85 -0
- package/vendor/@appport/core/dist/capability.js.map +1 -0
- package/vendor/@appport/core/dist/concurrency.d.ts +16 -0
- package/vendor/@appport/core/dist/concurrency.d.ts.map +1 -0
- package/vendor/@appport/core/dist/concurrency.js +46 -0
- package/vendor/@appport/core/dist/concurrency.js.map +1 -0
- package/vendor/@appport/core/dist/context.d.ts +59 -0
- package/vendor/@appport/core/dist/context.d.ts.map +1 -0
- package/vendor/@appport/core/dist/context.js +14 -0
- package/vendor/@appport/core/dist/context.js.map +1 -0
- package/vendor/@appport/core/dist/contract-artifact.d.ts +15 -0
- package/vendor/@appport/core/dist/contract-artifact.d.ts.map +1 -0
- package/vendor/@appport/core/dist/contract-artifact.js +161 -0
- package/vendor/@appport/core/dist/contract-artifact.js.map +1 -0
- package/vendor/@appport/core/dist/contract-attestation.d.ts +68 -0
- package/vendor/@appport/core/dist/contract-attestation.d.ts.map +1 -0
- package/vendor/@appport/core/dist/contract-attestation.js +76 -0
- package/vendor/@appport/core/dist/contract-attestation.js.map +1 -0
- package/vendor/@appport/core/dist/crash-injection.d.ts +3 -0
- package/vendor/@appport/core/dist/crash-injection.d.ts.map +1 -0
- package/vendor/@appport/core/dist/crash-injection.js +8 -0
- package/vendor/@appport/core/dist/crash-injection.js.map +1 -0
- package/vendor/@appport/core/dist/events.d.ts +33 -0
- package/vendor/@appport/core/dist/events.d.ts.map +1 -0
- package/vendor/@appport/core/dist/events.js +79 -0
- package/vendor/@appport/core/dist/events.js.map +1 -0
- package/vendor/@appport/core/dist/execution-barrier.d.ts +13 -0
- package/vendor/@appport/core/dist/execution-barrier.d.ts.map +1 -0
- package/vendor/@appport/core/dist/execution-barrier.js +33 -0
- package/vendor/@appport/core/dist/execution-barrier.js.map +1 -0
- package/vendor/@appport/core/dist/execution-ledger.d.ts +81 -0
- package/vendor/@appport/core/dist/execution-ledger.d.ts.map +1 -0
- package/vendor/@appport/core/dist/execution-ledger.js +173 -0
- package/vendor/@appport/core/dist/execution-ledger.js.map +1 -0
- package/vendor/@appport/core/dist/execution.d.ts +387 -0
- package/vendor/@appport/core/dist/execution.d.ts.map +1 -0
- package/vendor/@appport/core/dist/execution.js +165 -0
- package/vendor/@appport/core/dist/execution.js.map +1 -0
- package/vendor/@appport/core/dist/idempotency.d.ts +36 -0
- package/vendor/@appport/core/dist/idempotency.d.ts.map +1 -0
- package/vendor/@appport/core/dist/idempotency.js +36 -0
- package/vendor/@appport/core/dist/idempotency.js.map +1 -0
- package/vendor/@appport/core/dist/implementation.d.ts +110 -0
- package/vendor/@appport/core/dist/implementation.d.ts.map +1 -0
- package/vendor/@appport/core/dist/implementation.js +65 -0
- package/vendor/@appport/core/dist/implementation.js.map +1 -0
- package/vendor/@appport/core/dist/index.d.ts +62 -0
- package/vendor/@appport/core/dist/index.d.ts.map +1 -0
- package/vendor/@appport/core/dist/index.js +61 -0
- package/vendor/@appport/core/dist/index.js.map +1 -0
- package/vendor/@appport/core/dist/invocation.d.ts +253 -0
- package/vendor/@appport/core/dist/invocation.d.ts.map +1 -0
- package/vendor/@appport/core/dist/invocation.js +258 -0
- package/vendor/@appport/core/dist/invocation.js.map +1 -0
- package/vendor/@appport/core/dist/manifest.d.ts +157 -0
- package/vendor/@appport/core/dist/manifest.d.ts.map +1 -0
- package/vendor/@appport/core/dist/manifest.js +255 -0
- package/vendor/@appport/core/dist/manifest.js.map +1 -0
- package/vendor/@appport/core/dist/memory-application-data-store.d.ts +19 -0
- package/vendor/@appport/core/dist/memory-application-data-store.d.ts.map +1 -0
- package/vendor/@appport/core/dist/memory-application-data-store.js +161 -0
- package/vendor/@appport/core/dist/memory-application-data-store.js.map +1 -0
- package/vendor/@appport/core/dist/operations.d.ts +61 -0
- package/vendor/@appport/core/dist/operations.d.ts.map +1 -0
- package/vendor/@appport/core/dist/operations.js +210 -0
- package/vendor/@appport/core/dist/operations.js.map +1 -0
- package/vendor/@appport/core/dist/provider-contract.d.ts +89 -0
- package/vendor/@appport/core/dist/provider-contract.d.ts.map +1 -0
- package/vendor/@appport/core/dist/provider-contract.js +40 -0
- package/vendor/@appport/core/dist/provider-contract.js.map +1 -0
- package/vendor/@appport/core/dist/public.d.ts +23 -0
- package/vendor/@appport/core/dist/public.d.ts.map +1 -0
- package/vendor/@appport/core/dist/public.js +22 -0
- package/vendor/@appport/core/dist/public.js.map +1 -0
- package/vendor/@appport/core/dist/registration.d.ts +165 -0
- package/vendor/@appport/core/dist/registration.d.ts.map +1 -0
- package/vendor/@appport/core/dist/registration.js +253 -0
- package/vendor/@appport/core/dist/registration.js.map +1 -0
- package/vendor/@appport/core/dist/registry.d.ts +30 -0
- package/vendor/@appport/core/dist/registry.d.ts.map +1 -0
- package/vendor/@appport/core/dist/registry.js +149 -0
- package/vendor/@appport/core/dist/registry.js.map +1 -0
- package/vendor/@appport/core/dist/resolver.d.ts +130 -0
- package/vendor/@appport/core/dist/resolver.d.ts.map +1 -0
- package/vendor/@appport/core/dist/resolver.js +252 -0
- package/vendor/@appport/core/dist/resolver.js.map +1 -0
- package/vendor/@appport/core/dist/runtime-manifest.d.ts +68 -0
- package/vendor/@appport/core/dist/runtime-manifest.d.ts.map +1 -0
- package/vendor/@appport/core/dist/runtime-manifest.js +84 -0
- package/vendor/@appport/core/dist/runtime-manifest.js.map +1 -0
- package/vendor/@appport/core/dist/sanitize.d.ts +14 -0
- package/vendor/@appport/core/dist/sanitize.d.ts.map +1 -0
- package/vendor/@appport/core/dist/sanitize.js +49 -0
- package/vendor/@appport/core/dist/sanitize.js.map +1 -0
- package/vendor/@appport/core/dist/server-internal.d.ts +5 -0
- package/vendor/@appport/core/dist/server-internal.d.ts.map +1 -0
- package/vendor/@appport/core/dist/server-internal.js +4 -0
- package/vendor/@appport/core/dist/server-internal.js.map +1 -0
- package/vendor/@appport/core/dist/sessions.d.ts +29 -0
- package/vendor/@appport/core/dist/sessions.d.ts.map +1 -0
- package/vendor/@appport/core/dist/sessions.js +39 -0
- package/vendor/@appport/core/dist/sessions.js.map +1 -0
- package/vendor/@appport/core/dist/sha256.d.ts +3 -0
- package/vendor/@appport/core/dist/sha256.d.ts.map +1 -0
- package/vendor/@appport/core/dist/sha256.js +46 -0
- package/vendor/@appport/core/dist/sha256.js.map +1 -0
- package/vendor/@appport/core/dist/source-verification.d.ts +53 -0
- package/vendor/@appport/core/dist/source-verification.d.ts.map +1 -0
- package/vendor/@appport/core/dist/source-verification.js +92 -0
- package/vendor/@appport/core/dist/source-verification.js.map +1 -0
- package/vendor/@appport/core/dist/state-context.d.ts +312 -0
- package/vendor/@appport/core/dist/state-context.d.ts.map +1 -0
- package/vendor/@appport/core/dist/state-context.js +100 -0
- package/vendor/@appport/core/dist/state-context.js.map +1 -0
- package/vendor/@appport/core/dist/state.d.ts +96 -0
- package/vendor/@appport/core/dist/state.d.ts.map +1 -0
- package/vendor/@appport/core/dist/state.js +89 -0
- package/vendor/@appport/core/dist/state.js.map +1 -0
- package/vendor/@appport/core/dist/streams.d.ts +38 -0
- package/vendor/@appport/core/dist/streams.d.ts.map +1 -0
- package/vendor/@appport/core/dist/streams.js +123 -0
- package/vendor/@appport/core/dist/streams.js.map +1 -0
- package/vendor/@appport/core/dist/telemetry.d.ts +42 -0
- package/vendor/@appport/core/dist/telemetry.d.ts.map +1 -0
- package/vendor/@appport/core/dist/telemetry.js +32 -0
- package/vendor/@appport/core/dist/telemetry.js.map +1 -0
- package/vendor/@appport/core/dist/wasm-engine.d.ts +24 -0
- package/vendor/@appport/core/dist/wasm-engine.d.ts.map +1 -0
- package/vendor/@appport/core/dist/wasm-engine.js +376 -0
- package/vendor/@appport/core/dist/wasm-engine.js.map +1 -0
- package/vendor/@appport/core/package.json +58 -0
- package/vendor/@appport/mcp/README.md +29 -0
- package/vendor/@appport/mcp/dist/index.d.ts +59 -0
- package/vendor/@appport/mcp/dist/index.d.ts.map +1 -0
- package/vendor/@appport/mcp/dist/index.js +70 -0
- package/vendor/@appport/mcp/dist/index.js.map +1 -0
- package/vendor/@appport/mcp/package.json +29 -0
- package/vendor/@appport/mobile/README.md +10 -0
- package/vendor/@appport/mobile/dist/index.d.ts +66 -0
- package/vendor/@appport/mobile/dist/index.d.ts.map +1 -0
- package/vendor/@appport/mobile/dist/index.js +182 -0
- package/vendor/@appport/mobile/dist/index.js.map +1 -0
- package/vendor/@appport/mobile/package.json +33 -0
- package/vendor/@appport/protocol/README.md +41 -0
- package/vendor/@appport/protocol/dist/blob.d.ts +46 -0
- package/vendor/@appport/protocol/dist/blob.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/blob.js +23 -0
- package/vendor/@appport/protocol/dist/blob.js.map +1 -0
- package/vendor/@appport/protocol/dist/compatibility.d.ts +25 -0
- package/vendor/@appport/protocol/dist/compatibility.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/compatibility.js +189 -0
- package/vendor/@appport/protocol/dist/compatibility.js.map +1 -0
- package/vendor/@appport/protocol/dist/envelopes.d.ts +175 -0
- package/vendor/@appport/protocol/dist/envelopes.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/envelopes.js +97 -0
- package/vendor/@appport/protocol/dist/envelopes.js.map +1 -0
- package/vendor/@appport/protocol/dist/errors.d.ts +74 -0
- package/vendor/@appport/protocol/dist/errors.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/errors.js +92 -0
- package/vendor/@appport/protocol/dist/errors.js.map +1 -0
- package/vendor/@appport/protocol/dist/ids.d.ts +12 -0
- package/vendor/@appport/protocol/dist/ids.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/ids.js +50 -0
- package/vendor/@appport/protocol/dist/ids.js.map +1 -0
- package/vendor/@appport/protocol/dist/index.d.ts +21 -0
- package/vendor/@appport/protocol/dist/index.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/index.js +21 -0
- package/vendor/@appport/protocol/dist/index.js.map +1 -0
- package/vendor/@appport/protocol/dist/jsonschema.d.ts +50 -0
- package/vendor/@appport/protocol/dist/jsonschema.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/jsonschema.js +6 -0
- package/vendor/@appport/protocol/dist/jsonschema.js.map +1 -0
- package/vendor/@appport/protocol/dist/manifest.d.ts +134 -0
- package/vendor/@appport/protocol/dist/manifest.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/manifest.js +20 -0
- package/vendor/@appport/protocol/dist/manifest.js.map +1 -0
- package/vendor/@appport/protocol/dist/materialization.d.ts +59 -0
- package/vendor/@appport/protocol/dist/materialization.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/materialization.js +2 -0
- package/vendor/@appport/protocol/dist/materialization.js.map +1 -0
- package/vendor/@appport/protocol/dist/names.d.ts +26 -0
- package/vendor/@appport/protocol/dist/names.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/names.js +85 -0
- package/vendor/@appport/protocol/dist/names.js.map +1 -0
- package/vendor/@appport/protocol/dist/operations.d.ts +34 -0
- package/vendor/@appport/protocol/dist/operations.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/operations.js +9 -0
- package/vendor/@appport/protocol/dist/operations.js.map +1 -0
- package/vendor/@appport/protocol/dist/session.d.ts +27 -0
- package/vendor/@appport/protocol/dist/session.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/session.js +7 -0
- package/vendor/@appport/protocol/dist/session.js.map +1 -0
- package/vendor/@appport/protocol/dist/validate.d.ts +37 -0
- package/vendor/@appport/protocol/dist/validate.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/validate.js +321 -0
- package/vendor/@appport/protocol/dist/validate.js.map +1 -0
- package/vendor/@appport/protocol/dist/version.d.ts +27 -0
- package/vendor/@appport/protocol/dist/version.d.ts.map +1 -0
- package/vendor/@appport/protocol/dist/version.js +26 -0
- package/vendor/@appport/protocol/dist/version.js.map +1 -0
- package/vendor/@appport/protocol/package.json +25 -0
- package/vendor/@appport/schema/README.md +32 -0
- package/vendor/@appport/schema/dist/builder.d.ts +85 -0
- package/vendor/@appport/schema/dist/builder.d.ts.map +1 -0
- package/vendor/@appport/schema/dist/builder.js +278 -0
- package/vendor/@appport/schema/dist/builder.js.map +1 -0
- package/vendor/@appport/schema/dist/from-json-schema.d.ts +12 -0
- package/vendor/@appport/schema/dist/from-json-schema.d.ts.map +1 -0
- package/vendor/@appport/schema/dist/from-json-schema.js +186 -0
- package/vendor/@appport/schema/dist/from-json-schema.js.map +1 -0
- package/vendor/@appport/schema/dist/index.d.ts +23 -0
- package/vendor/@appport/schema/dist/index.d.ts.map +1 -0
- package/vendor/@appport/schema/dist/index.js +22 -0
- package/vendor/@appport/schema/dist/index.js.map +1 -0
- package/vendor/@appport/schema/dist/standard.d.ts +46 -0
- package/vendor/@appport/schema/dist/standard.d.ts.map +1 -0
- package/vendor/@appport/schema/dist/standard.js +42 -0
- package/vendor/@appport/schema/dist/standard.js.map +1 -0
- package/vendor/@appport/schema/dist/types.d.ts +40 -0
- package/vendor/@appport/schema/dist/types.d.ts.map +1 -0
- package/vendor/@appport/schema/dist/types.js +19 -0
- package/vendor/@appport/schema/dist/types.js.map +1 -0
- package/vendor/@appport/schema/package.json +28 -0
- package/vendor/@appport/server/README.md +39 -0
- package/vendor/@appport/server/dist/connection.d.ts +45 -0
- package/vendor/@appport/server/dist/connection.d.ts.map +1 -0
- package/vendor/@appport/server/dist/connection.js +217 -0
- package/vendor/@appport/server/dist/connection.js.map +1 -0
- package/vendor/@appport/server/dist/fetch.d.ts +10 -0
- package/vendor/@appport/server/dist/fetch.d.ts.map +1 -0
- package/vendor/@appport/server/dist/fetch.js +50 -0
- package/vendor/@appport/server/dist/fetch.js.map +1 -0
- package/vendor/@appport/server/dist/http.d.ts +80 -0
- package/vendor/@appport/server/dist/http.d.ts.map +1 -0
- package/vendor/@appport/server/dist/http.js +307 -0
- package/vendor/@appport/server/dist/http.js.map +1 -0
- package/vendor/@appport/server/dist/index.d.ts +11 -0
- package/vendor/@appport/server/dist/index.d.ts.map +1 -0
- package/vendor/@appport/server/dist/index.js +11 -0
- package/vendor/@appport/server/dist/index.js.map +1 -0
- package/vendor/@appport/server/dist/node-entry.d.ts +4 -0
- package/vendor/@appport/server/dist/node-entry.d.ts.map +1 -0
- package/vendor/@appport/server/dist/node-entry.js +4 -0
- package/vendor/@appport/server/dist/node-entry.js.map +1 -0
- package/vendor/@appport/server/dist/node.d.ts +45 -0
- package/vendor/@appport/server/dist/node.d.ts.map +1 -0
- package/vendor/@appport/server/dist/node.js +190 -0
- package/vendor/@appport/server/dist/node.js.map +1 -0
- package/vendor/@appport/server/dist/server.d.ts +83 -0
- package/vendor/@appport/server/dist/server.d.ts.map +1 -0
- package/vendor/@appport/server/dist/server.js +114 -0
- package/vendor/@appport/server/dist/server.js.map +1 -0
- package/vendor/@appport/server/dist/websocket.d.ts +25 -0
- package/vendor/@appport/server/dist/websocket.d.ts.map +1 -0
- package/vendor/@appport/server/dist/websocket.js +221 -0
- package/vendor/@appport/server/dist/websocket.js.map +1 -0
- package/vendor/@appport/server/package.json +34 -0
- package/vendor/@appport/transport-electron/README.md +56 -0
- package/vendor/@appport/transport-electron/dist/index.d.ts +11 -0
- package/vendor/@appport/transport-electron/dist/index.d.ts.map +1 -0
- package/vendor/@appport/transport-electron/dist/index.js +11 -0
- package/vendor/@appport/transport-electron/dist/index.js.map +1 -0
- package/vendor/@appport/transport-electron/dist/main.d.ts +31 -0
- package/vendor/@appport/transport-electron/dist/main.d.ts.map +1 -0
- package/vendor/@appport/transport-electron/dist/main.js +61 -0
- package/vendor/@appport/transport-electron/dist/main.js.map +1 -0
- package/vendor/@appport/transport-electron/dist/preload.d.ts +22 -0
- package/vendor/@appport/transport-electron/dist/preload.d.ts.map +1 -0
- package/vendor/@appport/transport-electron/dist/preload.js +29 -0
- package/vendor/@appport/transport-electron/dist/preload.js.map +1 -0
- package/vendor/@appport/transport-electron/dist/renderer.d.ts +16 -0
- package/vendor/@appport/transport-electron/dist/renderer.d.ts.map +1 -0
- package/vendor/@appport/transport-electron/dist/renderer.js +36 -0
- package/vendor/@appport/transport-electron/dist/renderer.js.map +1 -0
- package/vendor/@appport/transport-electron/dist/types.d.ts +49 -0
- package/vendor/@appport/transport-electron/dist/types.d.ts.map +1 -0
- package/vendor/@appport/transport-electron/dist/types.js +5 -0
- package/vendor/@appport/transport-electron/dist/types.js.map +1 -0
- package/vendor/@appport/transport-electron/package.json +46 -0
- package/vendor/@appport/transport-http/README.md +24 -0
- package/vendor/@appport/transport-http/dist/index.d.ts +18 -0
- package/vendor/@appport/transport-http/dist/index.d.ts.map +1 -0
- package/vendor/@appport/transport-http/dist/index.js +223 -0
- package/vendor/@appport/transport-http/dist/index.js.map +1 -0
- package/vendor/@appport/transport-http/package.json +29 -0
- package/vendor/@appport/transport-inprocess/README.md +24 -0
- package/vendor/@appport/transport-inprocess/dist/index.d.ts +16 -0
- package/vendor/@appport/transport-inprocess/dist/index.d.ts.map +1 -0
- package/vendor/@appport/transport-inprocess/dist/index.js +30 -0
- package/vendor/@appport/transport-inprocess/dist/index.js.map +1 -0
- package/vendor/@appport/transport-inprocess/package.json +30 -0
- package/vendor/@appport/transport-tauri/README.md +45 -0
- package/vendor/@appport/transport-tauri/dist/index.d.ts +23 -0
- package/vendor/@appport/transport-tauri/dist/index.d.ts.map +1 -0
- package/vendor/@appport/transport-tauri/dist/index.js +44 -0
- package/vendor/@appport/transport-tauri/dist/index.js.map +1 -0
- package/vendor/@appport/transport-tauri/package.json +29 -0
- package/vendor/@appport/transport-websocket/README.md +22 -0
- package/vendor/@appport/transport-websocket/dist/index.d.ts +26 -0
- package/vendor/@appport/transport-websocket/dist/index.d.ts.map +1 -0
- package/vendor/@appport/transport-websocket/dist/index.js +72 -0
- package/vendor/@appport/transport-websocket/dist/index.js.map +1 -0
- package/vendor/@appport/transport-websocket/package.json +29 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Implementations (F6)
|
|
3
|
+
*
|
|
4
|
+
* An implementation is the executable association between an application
|
|
5
|
+
* capability, a verified source connection, and an artifact. It carries no
|
|
6
|
+
* application identity and no authorization of its own.
|
|
7
|
+
*
|
|
8
|
+
* Runtime order is unchanged by F6:
|
|
9
|
+
*
|
|
10
|
+
* discovery → compatibility → authorization → binding
|
|
11
|
+
* → implementation selection → materialization → execution
|
|
12
|
+
*
|
|
13
|
+
* Implementation selection therefore requires an authorized binding, and the
|
|
14
|
+
* selection is revalidated against durable authority before materialization so
|
|
15
|
+
* a serialized binding can never turn eligibility into an in-memory assumption.
|
|
16
|
+
*/
|
|
17
|
+
import { randomUUID } from "node:crypto";
|
|
18
|
+
import { capabilityCoverageKey } from "./appboundry-contract.js";
|
|
19
|
+
import { sourceIsEligible } from "./application-source.js";
|
|
20
|
+
import { assertBindingAuthoritative } from "./authority-attestation.js";
|
|
21
|
+
import { assertIssuedAuthorizedBinding } from "./binding.js";
|
|
22
|
+
export class ApplicationImplementationConflictError extends Error {
|
|
23
|
+
constructor(id) {
|
|
24
|
+
super(`Concurrent application implementation update rejected for "${id}"`);
|
|
25
|
+
this.name = "ApplicationImplementationConflictError";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class MemoryApplicationImplementationStore {
|
|
29
|
+
#records = new Map();
|
|
30
|
+
async get(applicationId, implementationId) {
|
|
31
|
+
const found = this.#records.get(`${applicationId}:${implementationId}`);
|
|
32
|
+
return found && structuredClone(found);
|
|
33
|
+
}
|
|
34
|
+
async put(record, expectedSequence) {
|
|
35
|
+
const key = `${record.applicationId}:${record.id}`;
|
|
36
|
+
if (this.#records.get(key)?.sequence !== expectedSequence)
|
|
37
|
+
throw new ApplicationImplementationConflictError(record.id);
|
|
38
|
+
this.#records.set(key, structuredClone(record));
|
|
39
|
+
}
|
|
40
|
+
async list(applicationId) {
|
|
41
|
+
return [...this.#records.values()]
|
|
42
|
+
.filter((record) => !applicationId || record.applicationId === applicationId)
|
|
43
|
+
.map((record) => structuredClone(record))
|
|
44
|
+
.sort((left, right) => left.id.localeCompare(right.id));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const issuedSelections = new WeakSet();
|
|
48
|
+
const selectionValidators = new WeakMap();
|
|
49
|
+
/** Throws unless the selection was issued by ApplicationImplementationOperations. */
|
|
50
|
+
export function assertIssuedImplementationSelection(selection) {
|
|
51
|
+
if (typeof selection !== "object" || selection === null || !issuedSelections.has(selection)) {
|
|
52
|
+
throw new Error("Implementation selection was not issued by application implementation authority");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Revalidate the selection against durable source/implementation authority. */
|
|
56
|
+
export async function assertImplementationSelectionEligible(selection) {
|
|
57
|
+
assertIssuedImplementationSelection(selection);
|
|
58
|
+
await selectionValidators.get(selection)?.();
|
|
59
|
+
}
|
|
60
|
+
/** The artifact must be the exact artifact the selected implementation names. */
|
|
61
|
+
export function assertArtifactMatchesSelection(selection, artifact) {
|
|
62
|
+
if (artifact.contentHash !== selection.artifactHash) {
|
|
63
|
+
throw new Error(`Artifact ${artifact.contentHash} is not the selected implementation artifact ${selection.artifactHash}`);
|
|
64
|
+
}
|
|
65
|
+
if (artifact.metadata.contractFingerprint !== selection.contractFingerprint) {
|
|
66
|
+
throw new Error("Artifact contract fingerprint does not match the selected implementation");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** Registers, revalidates and selects implementations from verified sources. */
|
|
70
|
+
export class ApplicationImplementationOperations {
|
|
71
|
+
store;
|
|
72
|
+
sources;
|
|
73
|
+
authority;
|
|
74
|
+
now;
|
|
75
|
+
constructor(store, sources, authority, now = () => new Date().toISOString()) {
|
|
76
|
+
this.store = store;
|
|
77
|
+
this.sources = sources;
|
|
78
|
+
this.authority = authority;
|
|
79
|
+
this.now = now;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Register an executable implementation for a verified source.
|
|
83
|
+
*
|
|
84
|
+
* The contract fingerprint is derived from authority, never accepted from the
|
|
85
|
+
* caller, and the capability must be covered by the source connection.
|
|
86
|
+
*/
|
|
87
|
+
async register(input) {
|
|
88
|
+
const authoritative = await this.#authoritative(input.applicationId);
|
|
89
|
+
const source = await this.sources.get(input.applicationId, input.sourceConnectionId);
|
|
90
|
+
if (!source)
|
|
91
|
+
throw new Error(`Unknown application source "${input.sourceConnectionId}"`);
|
|
92
|
+
if (!sourceIsEligible(source, authoritative.fingerprint)) {
|
|
93
|
+
throw new Error(`Source "${source.id}" is not a verified implementation source (${source.status})`);
|
|
94
|
+
}
|
|
95
|
+
const key = capabilityCoverageKey(input.capability);
|
|
96
|
+
if (!source.coveredCapabilities.includes(key)) {
|
|
97
|
+
throw new Error(`Source "${source.id}" does not cover capability ${key}`);
|
|
98
|
+
}
|
|
99
|
+
if (typeof input.artifactHash !== "string" || !input.artifactHash.length) {
|
|
100
|
+
throw new Error("artifactHash must be a non-empty string");
|
|
101
|
+
}
|
|
102
|
+
const at = this.now();
|
|
103
|
+
const existing = (await this.store.list(input.applicationId)).find((record) => record.sourceConnectionId === source.id &&
|
|
104
|
+
capabilityCoverageKey(record.capability) === key &&
|
|
105
|
+
record.contractFingerprint === authoritative.fingerprint);
|
|
106
|
+
const record = {
|
|
107
|
+
id: existing?.id ?? `impl_${randomUUID()}`,
|
|
108
|
+
applicationId: input.applicationId,
|
|
109
|
+
sourceConnectionId: source.id,
|
|
110
|
+
capability: { name: input.capability.name, version: input.capability.version },
|
|
111
|
+
contractFingerprint: authoritative.fingerprint,
|
|
112
|
+
artifactHash: input.artifactHash,
|
|
113
|
+
status: "verified",
|
|
114
|
+
sequence: (existing?.sequence ?? 0) + 1,
|
|
115
|
+
createdAt: existing?.createdAt ?? at,
|
|
116
|
+
verifiedAt: at
|
|
117
|
+
};
|
|
118
|
+
await this.store.put(record, existing?.sequence);
|
|
119
|
+
return record;
|
|
120
|
+
}
|
|
121
|
+
/** Revoke an implementation without touching the application or its history. */
|
|
122
|
+
async revoke(applicationId, implementationId) {
|
|
123
|
+
const current = await this.store.get(applicationId, implementationId);
|
|
124
|
+
if (!current)
|
|
125
|
+
throw new Error(`Unknown implementation "${implementationId}"`);
|
|
126
|
+
if (current.status === "revoked")
|
|
127
|
+
return current;
|
|
128
|
+
const next = { ...current, status: "revoked", sequence: current.sequence + 1 };
|
|
129
|
+
await this.store.put(next, current.sequence);
|
|
130
|
+
return next;
|
|
131
|
+
}
|
|
132
|
+
/** Mark implementations of superseded contract revisions stale. */
|
|
133
|
+
async refresh(applicationId) {
|
|
134
|
+
const authoritative = await this.#authoritative(applicationId);
|
|
135
|
+
const refreshed = [];
|
|
136
|
+
for (const record of await this.store.list(applicationId)) {
|
|
137
|
+
if (record.status !== "verified" || record.contractFingerprint === authoritative.fingerprint) {
|
|
138
|
+
refreshed.push(record);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const next = { ...record, status: "stale", sequence: record.sequence + 1 };
|
|
142
|
+
await this.store.put(next, record.sequence);
|
|
143
|
+
refreshed.push(next);
|
|
144
|
+
}
|
|
145
|
+
return refreshed;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Implementations that may currently execute a capability, in deterministic
|
|
149
|
+
* order: source identity first, then implementation identity. Selection is
|
|
150
|
+
* never timing-dependent.
|
|
151
|
+
*/
|
|
152
|
+
async eligible(applicationId, capability) {
|
|
153
|
+
const authoritative = await this.#authoritative(applicationId);
|
|
154
|
+
const sources = new Map((await this.sources.list(applicationId)).map((source) => [source.id, source]));
|
|
155
|
+
const key = capabilityCoverageKey(capability);
|
|
156
|
+
return (await this.store.list(applicationId))
|
|
157
|
+
.filter((record) => this.#eligible(record, sources.get(record.sourceConnectionId), authoritative.fingerprint, key))
|
|
158
|
+
.sort((left, right) => this.#order(left, right, sources));
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Select an implementation for an authorized binding.
|
|
162
|
+
*
|
|
163
|
+
* Provider resolution has already chosen the *application*; this chooses an
|
|
164
|
+
* eligible source/artifact for it. Without an authorized, still-authoritative
|
|
165
|
+
* binding there is no selection and therefore no materialization.
|
|
166
|
+
*/
|
|
167
|
+
async selectForBinding(binding, capability) {
|
|
168
|
+
assertIssuedAuthorizedBinding(binding);
|
|
169
|
+
await assertBindingAuthoritative(binding);
|
|
170
|
+
const applicationId = binding.provider.id;
|
|
171
|
+
const candidates = await this.eligible(applicationId, capability);
|
|
172
|
+
const chosen = candidates[0];
|
|
173
|
+
if (!chosen) {
|
|
174
|
+
throw new Error(`No eligible implementation for ${capabilityCoverageKey(capability)} of application "${applicationId}"`);
|
|
175
|
+
}
|
|
176
|
+
const selection = {
|
|
177
|
+
implementationId: chosen.id,
|
|
178
|
+
sourceConnectionId: chosen.sourceConnectionId,
|
|
179
|
+
applicationId,
|
|
180
|
+
capability: { name: capability.name, version: capability.version },
|
|
181
|
+
contractFingerprint: chosen.contractFingerprint,
|
|
182
|
+
artifactHash: chosen.artifactHash
|
|
183
|
+
};
|
|
184
|
+
issuedSelections.add(selection);
|
|
185
|
+
selectionValidators.set(selection, () => this.#assertStillEligible(selection));
|
|
186
|
+
return selection;
|
|
187
|
+
}
|
|
188
|
+
get = (applicationId, implementationId) => this.store.get(applicationId, implementationId);
|
|
189
|
+
list = (applicationId) => this.store.list(applicationId);
|
|
190
|
+
/** Re-read durable authority and confirm the selection is still executable. */
|
|
191
|
+
async #assertStillEligible(selection) {
|
|
192
|
+
const authoritative = await this.#authoritative(selection.applicationId);
|
|
193
|
+
const record = await this.store.get(selection.applicationId, selection.implementationId);
|
|
194
|
+
const source = await this.sources.get(selection.applicationId, selection.sourceConnectionId);
|
|
195
|
+
const key = capabilityCoverageKey(selection.capability);
|
|
196
|
+
if (!record || !this.#eligible(record, source, authoritative.fingerprint, key) || record.artifactHash !== selection.artifactHash) {
|
|
197
|
+
throw new Error(`Implementation "${selection.implementationId}" is no longer an eligible implementation`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
#eligible(record, source, authoritativeFingerprint, capabilityKey) {
|
|
201
|
+
return (record.status === "verified" &&
|
|
202
|
+
record.contractFingerprint === authoritativeFingerprint &&
|
|
203
|
+
capabilityCoverageKey(record.capability) === capabilityKey &&
|
|
204
|
+
!!source &&
|
|
205
|
+
sourceIsEligible(source, authoritativeFingerprint) &&
|
|
206
|
+
source.coveredCapabilities.includes(capabilityKey));
|
|
207
|
+
}
|
|
208
|
+
#order(left, right, sources) {
|
|
209
|
+
const leftSource = sources.get(left.sourceConnectionId)?.repositoryIdentity ?? left.sourceConnectionId;
|
|
210
|
+
const rightSource = sources.get(right.sourceConnectionId)?.repositoryIdentity ?? right.sourceConnectionId;
|
|
211
|
+
return leftSource.localeCompare(rightSource) || left.artifactHash.localeCompare(right.artifactHash) || left.id.localeCompare(right.id);
|
|
212
|
+
}
|
|
213
|
+
async #authoritative(applicationId) {
|
|
214
|
+
const authoritative = await this.authority.get(applicationId);
|
|
215
|
+
if (!authoritative)
|
|
216
|
+
throw new Error(`Unknown application "${applicationId}"`);
|
|
217
|
+
return authoritative;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=application-implementation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-implementation.js","sourceRoot":"","sources":["../src/application-implementation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { type ApplicationManifest } from "./manifest.js";
|
|
2
|
+
import type { ApplicationRegistry } from "./registration.js";
|
|
3
|
+
export type ApplicationLifecyclePhase = "DRAFT" | "VALIDATED" | "REGISTERED" | "ACTIVE" | "CHANGE_PROPOSED" | "RETIRED";
|
|
4
|
+
export type LifecycleEventType = "DEFINED" | "VALIDATED" | "VALIDATION_FAILED" | "REGISTERED" | "CHANGE_PROPOSED" | "CHANGE_APPLIED" | "PROMOTED" | "RETIRED";
|
|
5
|
+
export interface ContractValidation {
|
|
6
|
+
readonly validationId: string;
|
|
7
|
+
readonly fingerprint: string;
|
|
8
|
+
readonly valid: boolean;
|
|
9
|
+
readonly reasons: readonly string[];
|
|
10
|
+
readonly validatedAt: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ContractRevision {
|
|
13
|
+
readonly revisionId: string;
|
|
14
|
+
readonly version: string;
|
|
15
|
+
readonly fingerprint: string;
|
|
16
|
+
readonly manifest: ApplicationManifest;
|
|
17
|
+
readonly disposition: "DRAFT" | "ACTIVE" | "SUPERSEDED";
|
|
18
|
+
readonly createdAt: string;
|
|
19
|
+
}
|
|
20
|
+
export interface PromotionRecord {
|
|
21
|
+
readonly promotionId: string;
|
|
22
|
+
readonly revisionId: string;
|
|
23
|
+
readonly fingerprint: string;
|
|
24
|
+
readonly promotedAt: string;
|
|
25
|
+
}
|
|
26
|
+
export interface LifecycleEvent {
|
|
27
|
+
readonly eventId: string;
|
|
28
|
+
readonly sequence: number;
|
|
29
|
+
readonly type: LifecycleEventType;
|
|
30
|
+
readonly from?: ApplicationLifecyclePhase;
|
|
31
|
+
readonly to: ApplicationLifecyclePhase;
|
|
32
|
+
readonly revisionId: string;
|
|
33
|
+
readonly fingerprint: string;
|
|
34
|
+
readonly occurredAt: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ApplicationLifecycleRecord {
|
|
37
|
+
readonly applicationId: string;
|
|
38
|
+
readonly phase: ApplicationLifecyclePhase;
|
|
39
|
+
readonly sequence: number;
|
|
40
|
+
readonly pendingRevisionId: string;
|
|
41
|
+
readonly activeRevisionId?: string;
|
|
42
|
+
readonly registrationId?: string;
|
|
43
|
+
readonly revisions: readonly ContractRevision[];
|
|
44
|
+
readonly validations: readonly ContractValidation[];
|
|
45
|
+
readonly promotions: readonly PromotionRecord[];
|
|
46
|
+
readonly history: readonly LifecycleEvent[];
|
|
47
|
+
readonly updatedAt: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ApplicationLifecycleStore {
|
|
50
|
+
get(applicationId: string): Promise<ApplicationLifecycleRecord | undefined>;
|
|
51
|
+
put(record: ApplicationLifecycleRecord, expectedSequence: number | undefined): Promise<void>;
|
|
52
|
+
list(): Promise<ApplicationLifecycleRecord[]>;
|
|
53
|
+
}
|
|
54
|
+
export declare class LifecycleConflictError extends Error {
|
|
55
|
+
constructor(id: string);
|
|
56
|
+
}
|
|
57
|
+
export declare class MemoryApplicationLifecycleStore implements ApplicationLifecycleStore {
|
|
58
|
+
private readonly records;
|
|
59
|
+
get(id: string): Promise<ApplicationLifecycleRecord | undefined>;
|
|
60
|
+
put(record: ApplicationLifecycleRecord, expected: number | undefined): Promise<void>;
|
|
61
|
+
list(): Promise<ApplicationLifecycleRecord[]>;
|
|
62
|
+
}
|
|
63
|
+
export interface LifecycleRegistrationGateway {
|
|
64
|
+
validate(revision: ContractRevision): Promise<{
|
|
65
|
+
valid: boolean;
|
|
66
|
+
reasons: readonly string[];
|
|
67
|
+
}>;
|
|
68
|
+
register(revision: ContractRevision): Promise<{
|
|
69
|
+
registrationId: string;
|
|
70
|
+
}>;
|
|
71
|
+
promote(revision: ContractRevision, registrationId: string): Promise<void>;
|
|
72
|
+
apply(revision: ContractRevision, registrationId: string): Promise<void>;
|
|
73
|
+
retire(applicationId: string, registrationId: string): Promise<void>;
|
|
74
|
+
promotionChecks(revision: ContractRevision): Promise<{
|
|
75
|
+
valid: boolean;
|
|
76
|
+
reasons: readonly string[];
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
79
|
+
/** Connects lifecycle commands to the existing authoritative registry boundary. */
|
|
80
|
+
export declare class ApplicationRegistryLifecycleGateway implements LifecycleRegistrationGateway {
|
|
81
|
+
private readonly registry;
|
|
82
|
+
private readonly checks;
|
|
83
|
+
constructor(registry: ApplicationRegistry, checks?: (revision: ContractRevision) => Promise<{
|
|
84
|
+
valid: boolean;
|
|
85
|
+
reasons: readonly string[];
|
|
86
|
+
}>);
|
|
87
|
+
validate(revision: ContractRevision): Promise<{
|
|
88
|
+
valid: boolean;
|
|
89
|
+
reasons: readonly string[];
|
|
90
|
+
}>;
|
|
91
|
+
register(revision: ContractRevision): Promise<{
|
|
92
|
+
registrationId: string;
|
|
93
|
+
}>;
|
|
94
|
+
promote(revision: ContractRevision, registrationId: string): Promise<void>;
|
|
95
|
+
apply(revision: ContractRevision, registrationId: string): Promise<void>;
|
|
96
|
+
retire(applicationId: string, registrationId: string): Promise<void>;
|
|
97
|
+
promotionChecks(revision: ContractRevision): Promise<{
|
|
98
|
+
valid: boolean;
|
|
99
|
+
reasons: readonly string[];
|
|
100
|
+
}>;
|
|
101
|
+
}
|
|
102
|
+
/** The only command boundary allowed to manufacture authoritative lifecycle facts. */
|
|
103
|
+
export declare class ApplicationLifecycleOperations {
|
|
104
|
+
private readonly store;
|
|
105
|
+
private readonly gateway;
|
|
106
|
+
private readonly now;
|
|
107
|
+
constructor(store: ApplicationLifecycleStore, gateway: LifecycleRegistrationGateway, now?: () => string);
|
|
108
|
+
define(manifest: ApplicationManifest): Promise<ApplicationLifecycleRecord>;
|
|
109
|
+
validate(id: string): Promise<ApplicationLifecycleRecord>;
|
|
110
|
+
register(id: string): Promise<ApplicationLifecycleRecord>;
|
|
111
|
+
promote(id: string): Promise<{
|
|
112
|
+
phase: "ACTIVE";
|
|
113
|
+
sequence: number;
|
|
114
|
+
activeRevisionId: string;
|
|
115
|
+
revisions: ContractRevision[];
|
|
116
|
+
promotions: PromotionRecord[];
|
|
117
|
+
history: LifecycleEvent[];
|
|
118
|
+
updatedAt: string;
|
|
119
|
+
applicationId: string;
|
|
120
|
+
pendingRevisionId: string;
|
|
121
|
+
registrationId?: string;
|
|
122
|
+
validations: readonly ContractValidation[];
|
|
123
|
+
}>;
|
|
124
|
+
proposeChange(id: string, manifest: ApplicationManifest): Promise<ApplicationLifecycleRecord>;
|
|
125
|
+
applyChange(id: string): Promise<{
|
|
126
|
+
phase: "ACTIVE";
|
|
127
|
+
sequence: number;
|
|
128
|
+
activeRevisionId: string;
|
|
129
|
+
revisions: ContractRevision[];
|
|
130
|
+
promotions: PromotionRecord[];
|
|
131
|
+
history: LifecycleEvent[];
|
|
132
|
+
updatedAt: string;
|
|
133
|
+
applicationId: string;
|
|
134
|
+
pendingRevisionId: string;
|
|
135
|
+
registrationId?: string;
|
|
136
|
+
validations: readonly ContractValidation[];
|
|
137
|
+
}>;
|
|
138
|
+
retire(id: string): Promise<ApplicationLifecycleRecord>;
|
|
139
|
+
get: (id: string) => Promise<ApplicationLifecycleRecord | undefined>;
|
|
140
|
+
list: () => Promise<ApplicationLifecycleRecord[]>;
|
|
141
|
+
private activate;
|
|
142
|
+
private advance;
|
|
143
|
+
private revision;
|
|
144
|
+
private event;
|
|
145
|
+
private required;
|
|
146
|
+
private expect;
|
|
147
|
+
private pending;
|
|
148
|
+
private active;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=application-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-lifecycle.d.ts","sourceRoot":"","sources":["../src/application-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { fingerprintManifest } from "./manifest.js";
|
|
3
|
+
export class LifecycleConflictError extends Error {
|
|
4
|
+
constructor(id) { super(`Concurrent lifecycle update rejected for "${id}"`); this.name = "LifecycleConflictError"; }
|
|
5
|
+
}
|
|
6
|
+
export class MemoryApplicationLifecycleStore {
|
|
7
|
+
records = new Map();
|
|
8
|
+
async get(id) { const record = this.records.get(id); return record ? structuredClone(record) : undefined; }
|
|
9
|
+
async put(record, expected) { const current = this.records.get(record.applicationId); if (current?.sequence !== expected)
|
|
10
|
+
throw new LifecycleConflictError(record.applicationId); this.records.set(record.applicationId, structuredClone(record)); }
|
|
11
|
+
async list() { return [...this.records.values()].map(record => structuredClone(record)).sort((a, b) => a.applicationId.localeCompare(b.applicationId)); }
|
|
12
|
+
}
|
|
13
|
+
/** Connects lifecycle commands to the existing authoritative registry boundary. */
|
|
14
|
+
export class ApplicationRegistryLifecycleGateway {
|
|
15
|
+
registry;
|
|
16
|
+
checks;
|
|
17
|
+
constructor(registry, checks = async () => ({ valid: true, reasons: [] })) {
|
|
18
|
+
this.registry = registry;
|
|
19
|
+
this.checks = checks;
|
|
20
|
+
}
|
|
21
|
+
validate(revision) { return this.checks(revision); }
|
|
22
|
+
async register(revision) { const state = await this.registry.registerWithValidation({ identity: revision.manifest.application, manifest: revision.manifest, fingerprint: revision.fingerprint, verification: { ready: true, errors: [], warnings: [], provides: revision.manifest.provides.map(item => ({ name: item.name, version: item.version })), requires: revision.manifest.requires.map(item => ({ name: item.name, version: item.version })), implementations: new Map(revision.manifest.provides.map(item => [`${item.name}@${item.version}`, "bound"])) } }); return { registrationId: state.registrationId }; }
|
|
23
|
+
async promote(revision, registrationId) { const current = await this.registry.get(revision.manifest.application.id); if (!current || current.registrationId !== registrationId)
|
|
24
|
+
throw new Error("Registration incarnation changed before promotion"); await this.registry.activate(current.id); }
|
|
25
|
+
async apply(revision, registrationId) { const current = await this.registry.get(revision.manifest.application.id); if (!current || current.registrationId !== registrationId)
|
|
26
|
+
throw new Error("Registration incarnation changed before applying lifecycle revision"); await this.register(revision); }
|
|
27
|
+
async retire(applicationId, registrationId) { const current = await this.registry.get(applicationId); if (!current || current.registrationId !== registrationId)
|
|
28
|
+
throw new Error("Registration incarnation changed before retirement"); await this.registry.retire(applicationId); }
|
|
29
|
+
promotionChecks(revision) { return this.checks(revision); }
|
|
30
|
+
}
|
|
31
|
+
/** The only command boundary allowed to manufacture authoritative lifecycle facts. */
|
|
32
|
+
export class ApplicationLifecycleOperations {
|
|
33
|
+
store;
|
|
34
|
+
gateway;
|
|
35
|
+
now;
|
|
36
|
+
constructor(store, gateway, now = () => new Date().toISOString()) {
|
|
37
|
+
this.store = store;
|
|
38
|
+
this.gateway = gateway;
|
|
39
|
+
this.now = now;
|
|
40
|
+
}
|
|
41
|
+
async define(manifest) { if (await this.store.get(manifest.application.id))
|
|
42
|
+
throw new Error(`Application "${manifest.application.id}" already exists; propose a change`); const at = this.now(), revision = this.revision(manifest, at); const record = { applicationId: manifest.application.id, phase: "DRAFT", sequence: 1, pendingRevisionId: revision.revisionId, revisions: [revision], validations: [], promotions: [], history: [this.event(1, "DEFINED", undefined, "DRAFT", revision, at)], updatedAt: at }; await this.store.put(record, undefined); return record; }
|
|
43
|
+
async validate(id) { const current = await this.required(id); this.expect(current, ["DRAFT", "CHANGE_PROPOSED"]); const revision = this.pending(current), canonical = fingerprintManifest(revision.manifest), external = await this.gateway.validate(revision), reasons = [...(canonical === revision.fingerprint ? [] : ["Canonical contract fingerprint mismatch"]), ...external.reasons], valid = external.valid && canonical === revision.fingerprint, validation = { validationId: `val_${randomUUID()}`, fingerprint: revision.fingerprint, valid, reasons, validatedAt: this.now() }; return this.advance(current, valid ? "VALIDATED" : current.phase, valid ? "VALIDATED" : "VALIDATION_FAILED", revision, { validations: [...current.validations, validation] }); }
|
|
44
|
+
async register(id) { const current = await this.required(id); this.expect(current, ["VALIDATED"]); if (current.activeRevisionId)
|
|
45
|
+
throw new Error("An active application change must be applied, not registered again"); const revision = this.pending(current), registration = await this.gateway.register(revision); return this.advance(current, "REGISTERED", "REGISTERED", revision, { registrationId: registration.registrationId }); }
|
|
46
|
+
async promote(id) { const current = await this.required(id); this.expect(current, ["REGISTERED"]); return this.activate(current, "PROMOTED"); }
|
|
47
|
+
async proposeChange(id, manifest) { const current = await this.required(id); this.expect(current, ["ACTIVE"]); if (manifest.application.id !== id)
|
|
48
|
+
throw new Error("A change cannot alter application identity"); const revision = this.revision(manifest, this.now()); if (revision.fingerprint === this.active(current).fingerprint)
|
|
49
|
+
throw new Error("Proposed contract is identical to active contract"); return this.advance(current, "CHANGE_PROPOSED", "CHANGE_PROPOSED", revision, { pendingRevisionId: revision.revisionId, revisions: [...current.revisions, revision] }); }
|
|
50
|
+
async applyChange(id) { const current = await this.required(id); this.expect(current, ["VALIDATED"]); if (!current.activeRevisionId || !current.registrationId)
|
|
51
|
+
throw new Error("No active application exists for this change"); const revision = this.pending(current), checks = await this.gateway.promotionChecks(revision); if (!checks.valid)
|
|
52
|
+
throw new Error(`Promotion checks failed: ${checks.reasons.join("; ")}`); await this.gateway.apply(revision, current.registrationId); return this.activate(current, "CHANGE_APPLIED", checks); }
|
|
53
|
+
async retire(id) { const current = await this.required(id); this.expect(current, ["ACTIVE"]); if (!current.registrationId)
|
|
54
|
+
throw new Error("Cannot retire an unregistered application"); await this.gateway.retire(id, current.registrationId); return this.advance(current, "RETIRED", "RETIRED", this.active(current)); }
|
|
55
|
+
get = (id) => this.store.get(id);
|
|
56
|
+
list = () => this.store.list();
|
|
57
|
+
async activate(current, event, checked) { const revision = this.pending(current), checks = checked ?? await this.gateway.promotionChecks(revision); if (!checks.valid)
|
|
58
|
+
throw new Error("Promotion checks failed"); if (!current.registrationId)
|
|
59
|
+
throw new Error("Promotion requires an authoritative registration"); await this.gateway.promote(revision, current.registrationId); const at = this.now(), sequence = current.sequence + 1, revisions = current.revisions.map(item => item.revisionId === revision.revisionId ? { ...item, disposition: "ACTIVE" } : item.disposition === "ACTIVE" ? { ...item, disposition: "SUPERSEDED" } : item), promotion = { promotionId: `promo_${randomUUID()}`, revisionId: revision.revisionId, fingerprint: revision.fingerprint, promotedAt: at }, next = { ...current, phase: "ACTIVE", sequence, activeRevisionId: revision.revisionId, revisions, promotions: [...current.promotions, promotion], history: [...current.history, this.event(sequence, event, current.phase, "ACTIVE", revision, at)], updatedAt: at }; await this.store.put(next, current.sequence); return next; }
|
|
60
|
+
async advance(current, to, type, revision, patch = {}) { const at = this.now(), sequence = current.sequence + 1, next = { ...current, ...patch, phase: to, sequence, history: [...current.history, this.event(sequence, type, current.phase, to, revision, at)], updatedAt: at }; await this.store.put(next, current.sequence); return next; }
|
|
61
|
+
revision(manifest, at) { return { revisionId: `rev_${randomUUID()}`, version: manifest.application.version, fingerprint: fingerprintManifest(manifest), manifest, disposition: "DRAFT", createdAt: at }; }
|
|
62
|
+
event(sequence, type, from, to, revision, at) { return { eventId: `life_${randomUUID()}`, sequence, type, ...(from ? { from } : {}), to, revisionId: revision.revisionId, fingerprint: revision.fingerprint, occurredAt: at }; }
|
|
63
|
+
async required(id) { const value = await this.store.get(id); if (!value)
|
|
64
|
+
throw new Error(`Unknown application "${id}"`); return value; }
|
|
65
|
+
expect(record, phases) { if (!phases.includes(record.phase))
|
|
66
|
+
throw new Error(`Illegal lifecycle operation from ${record.phase}`); }
|
|
67
|
+
pending(record) { return record.revisions.find(item => item.revisionId === record.pendingRevisionId); }
|
|
68
|
+
active(record) { return record.revisions.find(item => item.revisionId === record.activeRevisionId); }
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=application-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-lifecycle.js","sourceRoot":"","sources":["../src/application-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAA4B,MAAM,eAAe,CAAC;AAW9E,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAAG,YAAY,EAAU,IAAI,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,CAAC,CAAC;CAAE;AAClL,MAAM,OAAO,+BAA+B;IACzB,OAAO,GAAG,IAAI,GAAG,EAAsC,CAAC;IACzE,KAAK,CAAC,GAAG,CAAC,EAAU,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACnH,KAAK,CAAC,GAAG,CAAC,MAAkC,EAAE,QAA4B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,QAAQ,KAAK,QAAQ;QAAE,MAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACpS,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1J;AAGD,mFAAmF;AACnF,MAAM,OAAO,mCAAmC;IACjB;IAAgD;IAA7E,YAA6B,QAA6B,EAAmB,SAAkG,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAA5L,aAAQ,GAAR,QAAQ,CAAqB;QAAmB,WAAM,GAAN,MAAM,CAAsI;IAAG,CAAC;IAC7N,QAAQ,CAAC,QAA0B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtE,KAAK,CAAC,QAAQ,CAAC,QAA0B,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,OAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACrnB,KAAK,CAAC,OAAO,CAAC,QAA0B,EAAE,cAAsB,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,KAAK,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3T,KAAK,CAAC,KAAK,CAAC,QAA0B,EAAE,cAAsB,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,KAAK,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChU,KAAK,CAAC,MAAM,CAAC,aAAqB,EAAE,cAAsB,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,KAAK,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACpS,eAAe,CAAC,QAA0B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC9E;AAED,sFAAsF;AACtF,MAAM,OAAO,8BAA8B;IACZ;IAAmD;IAAwD;IAAxI,YAA6B,KAAgC,EAAmB,OAAqC,EAAmB,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAA/I,UAAK,GAAL,KAAK,CAA2B;QAAmB,YAAO,GAAP,OAAO,CAA8B;QAAmB,QAAG,GAAH,GAAG,CAAiC;IAAG,CAAC;IAChL,KAAK,CAAC,MAAM,CAAC,QAA6B,IAAI,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,CAAC,WAAW,CAAC,EAAE,oCAAoC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,GAA+B,EAAE,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC;IACjmB,KAAK,CAAC,QAAQ,CAAC,EAAU,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,SAAS,KAAK,QAAQ,CAAC,WAAW,EAAE,UAAU,GAAG,EAAE,YAAY,EAAE,OAAO,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrvB,KAAK,CAAC,QAAQ,CAAC,EAAU,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,gBAAgB;QAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IACpb,KAAK,CAAC,OAAO,CAAC,EAAU,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACvJ,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,QAA6B,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACllB,KAAK,CAAC,WAAW,CAAC,EAAU,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3hB,KAAK,CAAC,MAAM,CAAC,EAAU,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACnU,GAAG,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACjE,KAAK,CAAC,QAAQ,CAAC,OAAmC,EAAE,KAAoC,EAAE,OAA4B,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,QAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,YAAqB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,EAAE,WAAW,EAAE,SAAS,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,QAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3qC,KAAK,CAAC,OAAO,CAAC,OAAmC,EAAE,EAA6B,EAAE,IAAwB,EAAE,QAA0B,EAAE,QAA6C,EAAE,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,GAA+B,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC5e,QAAQ,CAAC,QAA6B,EAAE,EAAU,IAAsB,OAAO,EAAE,UAAU,EAAE,OAAO,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACzP,KAAK,CAAC,QAAgB,EAAE,IAAwB,EAAE,IAA2C,EAAE,EAA6B,EAAE,QAA0B,EAAE,EAAU,IAAoB,OAAO,EAAE,OAAO,EAAE,QAAQ,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACxW,KAAK,CAAC,QAAQ,CAAC,EAAU,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;IAChJ,MAAM,CAAC,MAAkC,EAAE,MAAmC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5L,OAAO,CAAC,MAAkC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,iBAAiB,CAAE,CAAC,CAAC,CAAC;IACpI,MAAM,CAAC,MAAkC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,gBAAgB,CAAE,CAAC,CAAC,CAAC;CAC3I"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { AuthoredApplication, CapabilityReference, VerificationIssue, VerificationResult } from "./assembly.js";
|
|
2
|
+
import { type AppBoundryContractDocument } from "./appboundry-contract.js";
|
|
3
|
+
import { type RuntimeImplementationManifest } from "./runtime-manifest.js";
|
|
4
|
+
export declare const APPPORT_APPLICATION_PACKAGE_PROTOCOL: "AppPort/application-bundle/1";
|
|
5
|
+
export declare const APPPORT_APPLICATION_PACKAGE_MANIFEST_FILE: "manifest";
|
|
6
|
+
export declare const APPPORT_APPLICATION_PACKAGE_ARTIFACT_FILE: "application.wasm";
|
|
7
|
+
export declare const APPPORT_APPLICATION_PACKAGE_IDENTITY_ALGORITHM: "sha256";
|
|
8
|
+
export interface CreateApplicationPackageOptions {
|
|
9
|
+
/** Compiled WASM bytes that AppBoundry will execute from the `.app` bundle. */
|
|
10
|
+
readonly artifact: Uint8Array;
|
|
11
|
+
/** Stable identity of this runtime implementation, distinct from the application id. */
|
|
12
|
+
readonly implementationId?: string;
|
|
13
|
+
/** Optional source-attestation identity already established by AppBoundry. */
|
|
14
|
+
readonly sourceId?: string;
|
|
15
|
+
/** Contract revision to emit in the AppBoundry contract document. Defaults to 1. */
|
|
16
|
+
readonly contractRevision?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AppPortApplicationPackageManifest {
|
|
19
|
+
readonly protocol: typeof APPPORT_APPLICATION_PACKAGE_PROTOCOL;
|
|
20
|
+
readonly packageReference: string;
|
|
21
|
+
readonly packageIdentity: AppPortApplicationPackageIdentity;
|
|
22
|
+
readonly application: AppBoundryContractDocument["application"];
|
|
23
|
+
readonly appBoundryApplicationId: string;
|
|
24
|
+
readonly contractFingerprint: string;
|
|
25
|
+
readonly verification: AppPortApplicationPackageVerificationEvidence;
|
|
26
|
+
readonly artifact: {
|
|
27
|
+
readonly path: typeof APPPORT_APPLICATION_PACKAGE_ARTIFACT_FILE;
|
|
28
|
+
readonly format: "wasm/1";
|
|
29
|
+
readonly hash: string;
|
|
30
|
+
};
|
|
31
|
+
readonly contract: AppBoundryContractDocument;
|
|
32
|
+
readonly implementation: RuntimeImplementationManifest;
|
|
33
|
+
readonly immutable: true;
|
|
34
|
+
}
|
|
35
|
+
export interface AppPortApplicationPackageVerificationEvidence {
|
|
36
|
+
readonly protocol: "AppPort/application-package-verification/1";
|
|
37
|
+
readonly ready: true;
|
|
38
|
+
readonly errors: readonly [];
|
|
39
|
+
readonly warnings: readonly VerificationIssue[];
|
|
40
|
+
readonly provides: readonly CapabilityReference[];
|
|
41
|
+
readonly requires: readonly CapabilityReference[];
|
|
42
|
+
readonly implementations: readonly {
|
|
43
|
+
readonly capability: string;
|
|
44
|
+
readonly status: "bound";
|
|
45
|
+
}[];
|
|
46
|
+
}
|
|
47
|
+
export interface AppPortApplicationPackageIdentity {
|
|
48
|
+
readonly reference: string;
|
|
49
|
+
readonly algorithm: typeof APPPORT_APPLICATION_PACKAGE_IDENTITY_ALGORITHM;
|
|
50
|
+
readonly digest: string;
|
|
51
|
+
readonly contentAddress: `sha256:${string}`;
|
|
52
|
+
readonly immutable: true;
|
|
53
|
+
}
|
|
54
|
+
export interface AppPortApplicationPackageFile {
|
|
55
|
+
readonly path: typeof APPPORT_APPLICATION_PACKAGE_MANIFEST_FILE | typeof APPPORT_APPLICATION_PACKAGE_ARTIFACT_FILE;
|
|
56
|
+
readonly contents: string | Uint8Array;
|
|
57
|
+
}
|
|
58
|
+
export interface AppPortApplicationPackage {
|
|
59
|
+
readonly verification: VerificationResult;
|
|
60
|
+
readonly packageReference: string;
|
|
61
|
+
readonly packageIdentity: AppPortApplicationPackageIdentity;
|
|
62
|
+
readonly manifest: AppPortApplicationPackageManifest;
|
|
63
|
+
readonly contract: AppBoundryContractDocument;
|
|
64
|
+
readonly runtimeManifest: RuntimeImplementationManifest;
|
|
65
|
+
readonly contractFingerprint: string;
|
|
66
|
+
readonly artifactHash: string;
|
|
67
|
+
readonly files: readonly AppPortApplicationPackageFile[];
|
|
68
|
+
}
|
|
69
|
+
export interface ResolveApplicationPackageMetadataOptions {
|
|
70
|
+
readonly manifest: string | unknown;
|
|
71
|
+
readonly artifact: Uint8Array;
|
|
72
|
+
}
|
|
73
|
+
export interface ResolvedApplicationPackageMetadata {
|
|
74
|
+
readonly packageReference: string;
|
|
75
|
+
readonly packageIdentity: AppPortApplicationPackageIdentity;
|
|
76
|
+
readonly manifest: AppPortApplicationPackageManifest;
|
|
77
|
+
readonly contract: AppBoundryContractDocument;
|
|
78
|
+
readonly runtimeManifest: RuntimeImplementationManifest;
|
|
79
|
+
readonly contractFingerprint: string;
|
|
80
|
+
readonly artifactHash: string;
|
|
81
|
+
readonly verified: true;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Produce the canonical AppPort application package consumed by AppBoundry.
|
|
85
|
+
*
|
|
86
|
+
* The package is derived from the SDK application definition: verification must
|
|
87
|
+
* pass before any bundle manifest is emitted, the contract fingerprint is
|
|
88
|
+
* calculated from the canonical manifest, and runtime bindings are limited to
|
|
89
|
+
* AppBoundry's implementation coverage plus the WASM artifact hash.
|
|
90
|
+
*/
|
|
91
|
+
export declare function createApplicationPackage(application: AuthoredApplication, options: CreateApplicationPackageOptions): AppPortApplicationPackage;
|
|
92
|
+
/** Build a canonical immutable `.app` manifest from verified contract, runtime, and artifact metadata. */
|
|
93
|
+
export declare function createApplicationPackageManifest(contract: AppBoundryContractDocument, runtimeManifest: RuntimeImplementationManifest, artifactHash: string, verification?: AppPortApplicationPackageVerificationEvidence): AppPortApplicationPackageManifest;
|
|
94
|
+
/** Canonical portable reference for an already-packaged AppPort application. */
|
|
95
|
+
export declare function createApplicationPackageReference(application: {
|
|
96
|
+
readonly id: string;
|
|
97
|
+
readonly version: string;
|
|
98
|
+
}): string;
|
|
99
|
+
/** Inspect and verify the content-addressed identity declared by a package manifest. */
|
|
100
|
+
export declare function inspectApplicationPackageIdentity(manifest: string | unknown): AppPortApplicationPackageIdentity;
|
|
101
|
+
/** Resolve package metadata only after verifying manifest, identity, contract, runtime, and artifact bytes. */
|
|
102
|
+
export declare function resolveApplicationPackageMetadata(options: ResolveApplicationPackageMetadataOptions): ResolvedApplicationPackageMetadata;
|
|
103
|
+
/** Parse the `.app` manifest and reject mutable or self-inconsistent package metadata. */
|
|
104
|
+
export declare function parseApplicationPackageManifest(input: string | unknown): AppPortApplicationPackageManifest;
|
|
105
|
+
//# sourceMappingURL=application-package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-package.d.ts","sourceRoot":"","sources":["../src/application-package.ts"],"names":[],"mappings":"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"}
|