@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,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":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAE/F,kEAAkE;AAClE,MAAM,CAAC,MAAM,wCAAwC,GAAG,kCAAkC,CAAC;AAE3F,kEAAkE;AAClE,MAAM,CAAC,MAAM,oCAAoC,GAAG,6BAA6B,CAAC;AAkClF,gFAAgF;AAChF,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACxB;IAArB,YAAqB,IAA8B,EAAE,OAAe;QAClE,KAAK,CAAC,OAAO,CAAC,CAAC;QADI,SAAI,GAAJ,IAAI,CAA0B;QAEjD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,UAAU,kCAAkC,CAAC,KAAc;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,2DAA2D,CAAC,CAAC;IAC1H,CAAC;IACD,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,IAAI,SAAS,CAAC,QAAQ,KAAK,4BAA4B,EAAE,CAAC;QACxD,MAAM,IAAI,oBAAoB,CAC5B,gCAAgC,EAChC,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,KAAK,wCAAwC,EAAE,CAAC;QACpE,MAAM,IAAI,oBAAoB,CAC5B,0BAA0B,EAC1B,sBAAsB,wCAAwC,gBAAgB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAC5G,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,SAAS,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QACnF,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,0CAA0C,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,iDAAiD,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,SAAS,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,OAAO,SAAS,CAAC,gBAAgB,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACvI,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,6CAA6C,CAAC,CAAC;IAC5G,CAAC;IACD,IAAI,SAAS,CAAC,gBAAgB,KAAK,SAAS,CAAC,aAAa,EAAE,CAAC;QAC3D,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,oEAAoE,CAAC,CAAC;IACnI,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,UAAuC,EAAE,CAAC;QACtE,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,+DAA+D,CAAC,CAAC;QAC9H,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,EAAE,oCAAoC,GAAG,EAAE,CAAC,CAAC;QACzH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,SAAqD,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAuC;IAClF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,sCAAsC,CAAC,QAAuC;IAC5F,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type AppErrorObject, type JsonValue } from "../../protocol/dist/index.d.ts";
|
|
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 "../../protocol/dist/index.js";
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Private bridge used by the bundled server workspace. Not re-exported by the SDK. */
|
|
2
|
+
export { AsyncChannel, type StreamExecution } from "./public.js";
|
|
3
|
+
export { toWireError } from "./sanitize.js";
|
|
4
|
+
export type { AppPortApplication } from "./application.js";
|
|
5
|
+
//# sourceMappingURL=server-internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-internal.d.ts","sourceRoot":"","sources":["../src/server-internal.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-internal.js","sourceRoot":"","sources":["../src/server-internal.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type Principal, type Session } from "../../protocol/dist/index.d.ts";
|
|
2
|
+
export interface CreateSessionInput {
|
|
3
|
+
applicationId: string;
|
|
4
|
+
principal?: Principal;
|
|
5
|
+
permissions?: readonly string[];
|
|
6
|
+
ttlMs?: number;
|
|
7
|
+
attributes?: Session["attributes"];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Session storage (specification §36). Sessions are transport-neutral: the same
|
|
11
|
+
* session may be observed over IPC and HTTP.
|
|
12
|
+
*/
|
|
13
|
+
export interface SessionStore {
|
|
14
|
+
create(input: CreateSessionInput): Promise<Session>;
|
|
15
|
+
get(id: string): Promise<Session | undefined>;
|
|
16
|
+
/** Replaces a session record; used to refresh expiry or permissions. */
|
|
17
|
+
put(session: Session): Promise<void>;
|
|
18
|
+
delete(id: string): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
/** In-memory session store. The default for local runtimes and tests. */
|
|
21
|
+
export declare class MemorySessionStore implements SessionStore {
|
|
22
|
+
#private;
|
|
23
|
+
create(input: CreateSessionInput): Promise<Session>;
|
|
24
|
+
get(id: string): Promise<Session | undefined>;
|
|
25
|
+
put(session: Session): Promise<void>;
|
|
26
|
+
delete(id: string): Promise<void>;
|
|
27
|
+
get size(): number;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjG,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9C,wEAAwE;IACxE,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,yEAAyE;AACzE,qBAAa,kBAAmB,YAAW,YAAY;;IAG/C,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAenD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAU7C,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { isSessionExpired, newSessionId } from "../../protocol/dist/index.js";
|
|
2
|
+
/** In-memory session store. The default for local runtimes and tests. */
|
|
3
|
+
export class MemorySessionStore {
|
|
4
|
+
#sessions = new Map();
|
|
5
|
+
async create(input) {
|
|
6
|
+
const now = Date.now();
|
|
7
|
+
const session = {
|
|
8
|
+
id: newSessionId(),
|
|
9
|
+
applicationId: input.applicationId,
|
|
10
|
+
createdAt: new Date(now).toISOString(),
|
|
11
|
+
...(input.principal ? { principal: input.principal } : {}),
|
|
12
|
+
...(input.permissions ? { permissions: [...input.permissions] } : {}),
|
|
13
|
+
...(input.ttlMs ? { expiresAt: new Date(now + input.ttlMs).toISOString() } : {}),
|
|
14
|
+
...(input.attributes ? { attributes: input.attributes } : {})
|
|
15
|
+
};
|
|
16
|
+
this.#sessions.set(session.id, session);
|
|
17
|
+
return session;
|
|
18
|
+
}
|
|
19
|
+
async get(id) {
|
|
20
|
+
const session = this.#sessions.get(id);
|
|
21
|
+
if (!session)
|
|
22
|
+
return undefined;
|
|
23
|
+
if (isSessionExpired(session)) {
|
|
24
|
+
this.#sessions.delete(id);
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
return session;
|
|
28
|
+
}
|
|
29
|
+
async put(session) {
|
|
30
|
+
this.#sessions.set(session.id, session);
|
|
31
|
+
}
|
|
32
|
+
async delete(id) {
|
|
33
|
+
this.#sessions.delete(id);
|
|
34
|
+
}
|
|
35
|
+
get size() {
|
|
36
|
+
return this.#sessions.size;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAgC,MAAM,mBAAmB,CAAC;AAsBjG,yEAAyE;AACzE,MAAM,OAAO,kBAAkB;IACpB,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAEhD,KAAK,CAAC,MAAM,CAAC,KAAyB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAY;YACvB,EAAE,EAAE,YAAY,EAAE;YAClB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YACtC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB;QACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha256.d.ts","sourceRoot":"","sources":["../src/sha256.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsB5C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Small synchronous SHA-256 used for canonical protocol fingerprints in every runtime. */
|
|
2
|
+
export function sha256(value) {
|
|
3
|
+
const bytes = new TextEncoder().encode(value);
|
|
4
|
+
const length = bytes.length;
|
|
5
|
+
const padded = new Uint8Array(((length + 9 + 63) >> 6) << 6);
|
|
6
|
+
padded.set(bytes);
|
|
7
|
+
padded[length] = 0x80;
|
|
8
|
+
const bits = length * 8;
|
|
9
|
+
const view = new DataView(padded.buffer);
|
|
10
|
+
view.setUint32(padded.length - 4, bits >>> 0);
|
|
11
|
+
view.setUint32(padded.length - 8, Math.floor(bits / 0x100000000));
|
|
12
|
+
const k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
|
|
13
|
+
const h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];
|
|
14
|
+
const w = new Uint32Array(64);
|
|
15
|
+
const r = (x, n) => (x >>> n) | (x << (32 - n));
|
|
16
|
+
for (let offset = 0; offset < padded.length; offset += 64) {
|
|
17
|
+
for (let i = 0; i < 16; i++)
|
|
18
|
+
w[i] = view.getUint32(offset + i * 4);
|
|
19
|
+
for (let i = 16; i < 64; i++) {
|
|
20
|
+
const a = r(w[i - 15], 7) ^ r(w[i - 15], 18) ^ (w[i - 15] >>> 3), b = r(w[i - 2], 17) ^ r(w[i - 2], 19) ^ (w[i - 2] >>> 10);
|
|
21
|
+
w[i] = (w[i - 16] + a + w[i - 7] + b) >>> 0;
|
|
22
|
+
}
|
|
23
|
+
let [a, b, c, d, e, f, g, hh] = h;
|
|
24
|
+
for (let i = 0; i < 64; i++) {
|
|
25
|
+
const s1 = r(e, 6) ^ r(e, 11) ^ r(e, 25), ch = (e & f) ^ (~e & g), t1 = (hh + s1 + ch + k[i] + w[i]) >>> 0, s0 = r(a, 2) ^ r(a, 13) ^ r(a, 22), maj = (a & b) ^ (a & c) ^ (b & c), t2 = (s0 + maj) >>> 0;
|
|
26
|
+
hh = g;
|
|
27
|
+
g = f;
|
|
28
|
+
f = e;
|
|
29
|
+
e = (d + t1) >>> 0;
|
|
30
|
+
d = c;
|
|
31
|
+
c = b;
|
|
32
|
+
b = a;
|
|
33
|
+
a = (t1 + t2) >>> 0;
|
|
34
|
+
}
|
|
35
|
+
h[0] = (h[0] + a) >>> 0;
|
|
36
|
+
h[1] = (h[1] + b) >>> 0;
|
|
37
|
+
h[2] = (h[2] + c) >>> 0;
|
|
38
|
+
h[3] = (h[3] + d) >>> 0;
|
|
39
|
+
h[4] = (h[4] + e) >>> 0;
|
|
40
|
+
h[5] = (h[5] + f) >>> 0;
|
|
41
|
+
h[6] = (h[6] + g) >>> 0;
|
|
42
|
+
h[7] = (h[7] + hh) >>> 0;
|
|
43
|
+
}
|
|
44
|
+
return h.map(n => n.toString(16).padStart(8, "0")).join("");
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=sha256.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha256.js","sourceRoot":"","sources":["../src/sha256.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Verification (F6)
|
|
3
|
+
*
|
|
4
|
+
* A repository URL is not verification. A source becomes eligible to provide an
|
|
5
|
+
* implementation only after it establishes, together:
|
|
6
|
+
*
|
|
7
|
+
* repository/source identity
|
|
8
|
+
* + verified commit/ref
|
|
9
|
+
* + appboundry.contract.json fingerprint
|
|
10
|
+
* + runtime implementation coverage
|
|
11
|
+
*
|
|
12
|
+
* Verification is provider-neutral: `sourceType = "repository"` is the AppPort
|
|
13
|
+
* concept, and a GitHub (or any other) adapter merely populates the fields.
|
|
14
|
+
*/
|
|
15
|
+
import { type AppBoundryContractDocument } from "./appboundry-contract.js";
|
|
16
|
+
import { type AuthoritativeContract, type ContractAttestation, type CoverageEvaluation } from "./contract-attestation.js";
|
|
17
|
+
import { type RuntimeImplementationManifest } from "./runtime-manifest.js";
|
|
18
|
+
/** Evidence a source presents for verification. */
|
|
19
|
+
export interface RepositorySourceObservation {
|
|
20
|
+
readonly sourceType: "repository";
|
|
21
|
+
/** Provider-neutral source identity, e.g. "github/acme/tracker-history". */
|
|
22
|
+
readonly repositoryIdentity: string;
|
|
23
|
+
readonly ref?: string;
|
|
24
|
+
/** Verified commit. Without it the source is unverified by construction. */
|
|
25
|
+
readonly commitSha?: string;
|
|
26
|
+
/** Raw contents of `appboundry.contract.json`. */
|
|
27
|
+
readonly contractDocument: unknown;
|
|
28
|
+
/** Raw contents of the runtime implementation manifest. */
|
|
29
|
+
readonly runtimeManifest: unknown;
|
|
30
|
+
}
|
|
31
|
+
export type SourceVerificationFailure = "CONTRACT_DOCUMENT_INVALID" | "CONTRACT_DOCUMENT_NOT_A_CONTRACT" | "CONTRACT_DOCUMENT_FINGERPRINT_INVALID" | "CONTRACT_MISMATCH" | "IDENTITY_MISMATCH" | "RUNTIME_MANIFEST_INVALID" | "RUNTIME_MANIFEST_IS_A_CONTRACT" | "RUNTIME_MANIFEST_APPLICATION_MISMATCH" | "UNVERIFIED_SOURCE" | "NO_COVERED_CAPABILITY";
|
|
32
|
+
/** The outcome of verifying one source observation. */
|
|
33
|
+
export interface SourceVerification {
|
|
34
|
+
readonly verified: boolean;
|
|
35
|
+
readonly repositoryIdentity: string;
|
|
36
|
+
readonly ref?: string;
|
|
37
|
+
readonly verifiedCommitSha?: string;
|
|
38
|
+
readonly contract?: AppBoundryContractDocument;
|
|
39
|
+
readonly attestation?: ContractAttestation;
|
|
40
|
+
readonly runtime?: RuntimeImplementationManifest;
|
|
41
|
+
readonly coverage: CoverageEvaluation;
|
|
42
|
+
readonly failures: readonly SourceVerificationFailure[];
|
|
43
|
+
readonly reasons: readonly string[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Verify a source observation against the authoritative application contract.
|
|
47
|
+
*
|
|
48
|
+
* The contract attestation and the implementation coverage are computed from
|
|
49
|
+
* two different documents on purpose: a contract mismatch can never be repaired
|
|
50
|
+
* by a runtime manifest that happens to look compatible.
|
|
51
|
+
*/
|
|
52
|
+
export declare function verifySourceObservation(applicationId: string, observation: RepositorySourceObservation, authoritative: AuthoritativeContract, attestedAt?: string): SourceVerification;
|
|
53
|
+
//# sourceMappingURL=source-verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-verification.d.ts","sourceRoot":"","sources":["../src/source-verification.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAA2B,KAAK,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACpG,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAoE,KAAK,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAE7I,mDAAmD;AACnD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,2DAA2D;IAC3D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,yBAAyB,GACjC,2BAA2B,GAC3B,kCAAkC,GAClC,uCAAuC,GACvC,mBAAmB,GACnB,mBAAmB,GACnB,0BAA0B,GAC1B,gCAAgC,GAChC,uCAAuC,GACvC,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,6BAA6B,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACxD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAID;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,2BAA2B,EACxC,aAAa,EAAE,qBAAqB,EACpC,UAAU,GAAE,MAAiC,GAC5C,kBAAkB,CAsEpB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Verification (F6)
|
|
3
|
+
*
|
|
4
|
+
* A repository URL is not verification. A source becomes eligible to provide an
|
|
5
|
+
* implementation only after it establishes, together:
|
|
6
|
+
*
|
|
7
|
+
* repository/source identity
|
|
8
|
+
* + verified commit/ref
|
|
9
|
+
* + appboundry.contract.json fingerprint
|
|
10
|
+
* + runtime implementation coverage
|
|
11
|
+
*
|
|
12
|
+
* Verification is provider-neutral: `sourceType = "repository"` is the AppPort
|
|
13
|
+
* concept, and a GitHub (or any other) adapter merely populates the fields.
|
|
14
|
+
*/
|
|
15
|
+
import { parseAppBoundryContract } from "./appboundry-contract.js";
|
|
16
|
+
import { attestAppBoundryContract, evaluateCoverage } from "./contract-attestation.js";
|
|
17
|
+
import { deriveImplementationCoverage, parseRuntimeImplementationManifest } from "./runtime-manifest.js";
|
|
18
|
+
const EMPTY_COVERAGE = { covered: [], undeclared: [], uncovered: [], reasons: [] };
|
|
19
|
+
/**
|
|
20
|
+
* Verify a source observation against the authoritative application contract.
|
|
21
|
+
*
|
|
22
|
+
* The contract attestation and the implementation coverage are computed from
|
|
23
|
+
* two different documents on purpose: a contract mismatch can never be repaired
|
|
24
|
+
* by a runtime manifest that happens to look compatible.
|
|
25
|
+
*/
|
|
26
|
+
export function verifySourceObservation(applicationId, observation, authoritative, attestedAt = new Date().toISOString()) {
|
|
27
|
+
const failures = [];
|
|
28
|
+
const reasons = [];
|
|
29
|
+
if (observation.sourceType !== "repository") {
|
|
30
|
+
failures.push("UNVERIFIED_SOURCE");
|
|
31
|
+
reasons.push(`Unsupported source type "${String(observation.sourceType)}"`);
|
|
32
|
+
}
|
|
33
|
+
if (!observation.repositoryIdentity || !observation.repositoryIdentity.trim()) {
|
|
34
|
+
failures.push("UNVERIFIED_SOURCE");
|
|
35
|
+
reasons.push("A source identity is required");
|
|
36
|
+
}
|
|
37
|
+
if (!observation.commitSha || !observation.commitSha.trim()) {
|
|
38
|
+
failures.push("UNVERIFIED_SOURCE");
|
|
39
|
+
reasons.push("A verified commit is required: a source location alone is not verification");
|
|
40
|
+
}
|
|
41
|
+
let contract;
|
|
42
|
+
try {
|
|
43
|
+
contract = parseAppBoundryContract(observation.contractDocument);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const code = error.code ?? "CONTRACT_DOCUMENT_INVALID";
|
|
47
|
+
failures.push(code);
|
|
48
|
+
reasons.push(error instanceof Error ? error.message : String(error));
|
|
49
|
+
}
|
|
50
|
+
let runtime;
|
|
51
|
+
try {
|
|
52
|
+
runtime = parseRuntimeImplementationManifest(observation.runtimeManifest);
|
|
53
|
+
if (runtime.applicationId !== applicationId) {
|
|
54
|
+
runtime = undefined;
|
|
55
|
+
failures.push("RUNTIME_MANIFEST_APPLICATION_MISMATCH");
|
|
56
|
+
reasons.push("The runtime implementation manifest references a different application");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const code = error.code ?? "RUNTIME_MANIFEST_INVALID";
|
|
61
|
+
failures.push(code);
|
|
62
|
+
reasons.push(error instanceof Error ? error.message : String(error));
|
|
63
|
+
}
|
|
64
|
+
const attestation = contract ? attestAppBoundryContract(applicationId, contract, authoritative, attestedAt) : undefined;
|
|
65
|
+
if (attestation && attestation.status !== "verified") {
|
|
66
|
+
failures.push(attestation.status);
|
|
67
|
+
reasons.push(...attestation.reasons);
|
|
68
|
+
}
|
|
69
|
+
// Coverage is derived from the runtime manifest and validated against the
|
|
70
|
+
// authoritative contract; it is never derived from the contract document.
|
|
71
|
+
const coverage = runtime ? evaluateCoverage(deriveImplementationCoverage(runtime), authoritative) : EMPTY_COVERAGE;
|
|
72
|
+
reasons.push(...coverage.reasons);
|
|
73
|
+
// Undeclared coverage is dropped, not fatal: a source may still implement the
|
|
74
|
+
// capabilities the contract does declare (F6.6).
|
|
75
|
+
if (runtime && coverage.covered.length === 0) {
|
|
76
|
+
failures.push("NO_COVERED_CAPABILITY");
|
|
77
|
+
reasons.push("The source implements no capability declared by the application contract");
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
verified: failures.length === 0,
|
|
81
|
+
repositoryIdentity: observation.repositoryIdentity,
|
|
82
|
+
...(observation.ref ? { ref: observation.ref } : {}),
|
|
83
|
+
...(observation.commitSha ? { verifiedCommitSha: observation.commitSha } : {}),
|
|
84
|
+
...(contract ? { contract } : {}),
|
|
85
|
+
...(attestation ? { attestation } : {}),
|
|
86
|
+
...(runtime ? { runtime } : {}),
|
|
87
|
+
coverage,
|
|
88
|
+
failures,
|
|
89
|
+
reasons
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=source-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-verification.js","sourceRoot":"","sources":["../src/source-verification.ts"],"names":[],"mappings":"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"}
|