@appport/sdk 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +126 -0
- package/README.md +39 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/node.d.ts +3 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +3 -0
- package/dist/node.js.map +1 -0
- package/node_modules/@appport/authorization/README.md +28 -0
- package/node_modules/@appport/authorization/dist/index.d.ts +94 -0
- package/node_modules/@appport/authorization/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/authorization/dist/index.js +131 -0
- package/node_modules/@appport/authorization/dist/index.js.map +1 -0
- package/node_modules/@appport/authorization/package.json +28 -0
- package/node_modules/@appport/client/README.md +35 -0
- package/node_modules/@appport/client/dist/channel.d.ts +14 -0
- package/node_modules/@appport/client/dist/channel.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/channel.js +58 -0
- package/node_modules/@appport/client/dist/channel.js.map +1 -0
- package/node_modules/@appport/client/dist/client.d.ts +61 -0
- package/node_modules/@appport/client/dist/client.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/client.js +214 -0
- package/node_modules/@appport/client/dist/client.js.map +1 -0
- package/node_modules/@appport/client/dist/contract.d.ts +55 -0
- package/node_modules/@appport/client/dist/contract.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/contract.js +12 -0
- package/node_modules/@appport/client/dist/contract.js.map +1 -0
- package/node_modules/@appport/client/dist/discovery.d.ts +17 -0
- package/node_modules/@appport/client/dist/discovery.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/discovery.js +56 -0
- package/node_modules/@appport/client/dist/discovery.js.map +1 -0
- package/node_modules/@appport/client/dist/duplex.d.ts +25 -0
- package/node_modules/@appport/client/dist/duplex.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/duplex.js +194 -0
- package/node_modules/@appport/client/dist/duplex.js.map +1 -0
- package/node_modules/@appport/client/dist/index.d.ts +13 -0
- package/node_modules/@appport/client/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/index.js +13 -0
- package/node_modules/@appport/client/dist/index.js.map +1 -0
- package/node_modules/@appport/client/dist/transport.d.ts +42 -0
- package/node_modules/@appport/client/dist/transport.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/transport.js +2 -0
- package/node_modules/@appport/client/dist/transport.js.map +1 -0
- package/node_modules/@appport/client/package.json +32 -0
- package/node_modules/@appport/core/README.md +91 -0
- package/node_modules/@appport/core/dist/appboundry-contract.d.ts +80 -0
- package/node_modules/@appport/core/dist/appboundry-contract.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/appboundry-contract.js +160 -0
- package/node_modules/@appport/core/dist/appboundry-contract.js.map +1 -0
- package/node_modules/@appport/core/dist/application-implementation.d.ts +125 -0
- package/node_modules/@appport/core/dist/application-implementation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application-implementation.js +220 -0
- package/node_modules/@appport/core/dist/application-implementation.js.map +1 -0
- package/node_modules/@appport/core/dist/application-lifecycle.d.ts +150 -0
- package/node_modules/@appport/core/dist/application-lifecycle.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application-lifecycle.js +70 -0
- package/node_modules/@appport/core/dist/application-lifecycle.js.map +1 -0
- package/node_modules/@appport/core/dist/application-source.d.ts +109 -0
- package/node_modules/@appport/core/dist/application-source.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application-source.js +186 -0
- package/node_modules/@appport/core/dist/application-source.js.map +1 -0
- package/node_modules/@appport/core/dist/application.d.ts +122 -0
- package/node_modules/@appport/core/dist/application.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application.js +515 -0
- package/node_modules/@appport/core/dist/application.js.map +1 -0
- package/node_modules/@appport/core/dist/artifact.d.ts +395 -0
- package/node_modules/@appport/core/dist/artifact.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/artifact.js +392 -0
- package/node_modules/@appport/core/dist/artifact.js.map +1 -0
- package/node_modules/@appport/core/dist/assembly.d.ts +237 -0
- package/node_modules/@appport/core/dist/assembly.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/assembly.js +458 -0
- package/node_modules/@appport/core/dist/assembly.js.map +1 -0
- package/node_modules/@appport/core/dist/authority-attestation.d.ts +34 -0
- package/node_modules/@appport/core/dist/authority-attestation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/authority-attestation.js +72 -0
- package/node_modules/@appport/core/dist/authority-attestation.js.map +1 -0
- package/node_modules/@appport/core/dist/authorization-grant.d.ts +107 -0
- package/node_modules/@appport/core/dist/authorization-grant.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/authorization-grant.js +131 -0
- package/node_modules/@appport/core/dist/authorization-grant.js.map +1 -0
- package/node_modules/@appport/core/dist/binding.d.ts +294 -0
- package/node_modules/@appport/core/dist/binding.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/binding.js +263 -0
- package/node_modules/@appport/core/dist/binding.js.map +1 -0
- package/node_modules/@appport/core/dist/builtins.d.ts +18 -0
- package/node_modules/@appport/core/dist/builtins.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/builtins.js +38 -0
- package/node_modules/@appport/core/dist/builtins.js.map +1 -0
- package/node_modules/@appport/core/dist/capability.d.ts +94 -0
- package/node_modules/@appport/core/dist/capability.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/capability.js +85 -0
- package/node_modules/@appport/core/dist/capability.js.map +1 -0
- package/node_modules/@appport/core/dist/concurrency.d.ts +16 -0
- package/node_modules/@appport/core/dist/concurrency.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/concurrency.js +46 -0
- package/node_modules/@appport/core/dist/concurrency.js.map +1 -0
- package/node_modules/@appport/core/dist/context.d.ts +59 -0
- package/node_modules/@appport/core/dist/context.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/context.js +14 -0
- package/node_modules/@appport/core/dist/context.js.map +1 -0
- package/node_modules/@appport/core/dist/contract-artifact.d.ts +15 -0
- package/node_modules/@appport/core/dist/contract-artifact.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/contract-artifact.js +152 -0
- package/node_modules/@appport/core/dist/contract-artifact.js.map +1 -0
- package/node_modules/@appport/core/dist/contract-attestation.d.ts +68 -0
- package/node_modules/@appport/core/dist/contract-attestation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/contract-attestation.js +76 -0
- package/node_modules/@appport/core/dist/contract-attestation.js.map +1 -0
- package/node_modules/@appport/core/dist/crash-injection.d.ts +3 -0
- package/node_modules/@appport/core/dist/crash-injection.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/crash-injection.js +8 -0
- package/node_modules/@appport/core/dist/crash-injection.js.map +1 -0
- package/node_modules/@appport/core/dist/events.d.ts +33 -0
- package/node_modules/@appport/core/dist/events.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/events.js +79 -0
- package/node_modules/@appport/core/dist/events.js.map +1 -0
- package/node_modules/@appport/core/dist/execution-barrier.d.ts +13 -0
- package/node_modules/@appport/core/dist/execution-barrier.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/execution-barrier.js +33 -0
- package/node_modules/@appport/core/dist/execution-barrier.js.map +1 -0
- package/node_modules/@appport/core/dist/execution-ledger.d.ts +81 -0
- package/node_modules/@appport/core/dist/execution-ledger.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/execution-ledger.js +173 -0
- package/node_modules/@appport/core/dist/execution-ledger.js.map +1 -0
- package/node_modules/@appport/core/dist/execution.d.ts +387 -0
- package/node_modules/@appport/core/dist/execution.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/execution.js +165 -0
- package/node_modules/@appport/core/dist/execution.js.map +1 -0
- package/node_modules/@appport/core/dist/idempotency.d.ts +36 -0
- package/node_modules/@appport/core/dist/idempotency.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/idempotency.js +36 -0
- package/node_modules/@appport/core/dist/idempotency.js.map +1 -0
- package/node_modules/@appport/core/dist/implementation.d.ts +110 -0
- package/node_modules/@appport/core/dist/implementation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/implementation.js +65 -0
- package/node_modules/@appport/core/dist/implementation.js.map +1 -0
- package/node_modules/@appport/core/dist/index.d.ts +44 -0
- package/node_modules/@appport/core/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/index.js +44 -0
- package/node_modules/@appport/core/dist/index.js.map +1 -0
- package/node_modules/@appport/core/dist/invocation.d.ts +253 -0
- package/node_modules/@appport/core/dist/invocation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/invocation.js +258 -0
- package/node_modules/@appport/core/dist/invocation.js.map +1 -0
- package/node_modules/@appport/core/dist/manifest.d.ts +157 -0
- package/node_modules/@appport/core/dist/manifest.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/manifest.js +255 -0
- package/node_modules/@appport/core/dist/manifest.js.map +1 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.d.ts +19 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.js +161 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.js.map +1 -0
- package/node_modules/@appport/core/dist/operations.d.ts +61 -0
- package/node_modules/@appport/core/dist/operations.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/operations.js +210 -0
- package/node_modules/@appport/core/dist/operations.js.map +1 -0
- package/node_modules/@appport/core/dist/public.d.ts +19 -0
- package/node_modules/@appport/core/dist/public.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/public.js +18 -0
- package/node_modules/@appport/core/dist/public.js.map +1 -0
- package/node_modules/@appport/core/dist/registration.d.ts +165 -0
- package/node_modules/@appport/core/dist/registration.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/registration.js +253 -0
- package/node_modules/@appport/core/dist/registration.js.map +1 -0
- package/node_modules/@appport/core/dist/registry.d.ts +29 -0
- package/node_modules/@appport/core/dist/registry.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/registry.js +148 -0
- package/node_modules/@appport/core/dist/registry.js.map +1 -0
- package/node_modules/@appport/core/dist/repository-connection.d.ts +100 -0
- package/node_modules/@appport/core/dist/repository-connection.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/repository-connection.js +57 -0
- package/node_modules/@appport/core/dist/repository-connection.js.map +1 -0
- package/node_modules/@appport/core/dist/resolver.d.ts +130 -0
- package/node_modules/@appport/core/dist/resolver.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/resolver.js +252 -0
- package/node_modules/@appport/core/dist/resolver.js.map +1 -0
- package/node_modules/@appport/core/dist/runtime-manifest.d.ts +68 -0
- package/node_modules/@appport/core/dist/runtime-manifest.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/runtime-manifest.js +84 -0
- package/node_modules/@appport/core/dist/runtime-manifest.js.map +1 -0
- package/node_modules/@appport/core/dist/sanitize.d.ts +14 -0
- package/node_modules/@appport/core/dist/sanitize.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/sanitize.js +49 -0
- package/node_modules/@appport/core/dist/sanitize.js.map +1 -0
- package/node_modules/@appport/core/dist/server-internal.d.ts +5 -0
- package/node_modules/@appport/core/dist/server-internal.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/server-internal.js +4 -0
- package/node_modules/@appport/core/dist/server-internal.js.map +1 -0
- package/node_modules/@appport/core/dist/sessions.d.ts +29 -0
- package/node_modules/@appport/core/dist/sessions.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/sessions.js +39 -0
- package/node_modules/@appport/core/dist/sessions.js.map +1 -0
- package/node_modules/@appport/core/dist/sha256.d.ts +3 -0
- package/node_modules/@appport/core/dist/sha256.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/sha256.js +46 -0
- package/node_modules/@appport/core/dist/sha256.js.map +1 -0
- package/node_modules/@appport/core/dist/source-verification.d.ts +53 -0
- package/node_modules/@appport/core/dist/source-verification.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/source-verification.js +92 -0
- package/node_modules/@appport/core/dist/source-verification.js.map +1 -0
- package/node_modules/@appport/core/dist/state-context.d.ts +312 -0
- package/node_modules/@appport/core/dist/state-context.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/state-context.js +100 -0
- package/node_modules/@appport/core/dist/state-context.js.map +1 -0
- package/node_modules/@appport/core/dist/state.d.ts +96 -0
- package/node_modules/@appport/core/dist/state.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/state.js +89 -0
- package/node_modules/@appport/core/dist/state.js.map +1 -0
- package/node_modules/@appport/core/dist/streams.d.ts +38 -0
- package/node_modules/@appport/core/dist/streams.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/streams.js +123 -0
- package/node_modules/@appport/core/dist/streams.js.map +1 -0
- package/node_modules/@appport/core/dist/telemetry.d.ts +42 -0
- package/node_modules/@appport/core/dist/telemetry.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/telemetry.js +32 -0
- package/node_modules/@appport/core/dist/telemetry.js.map +1 -0
- package/node_modules/@appport/core/dist/wasm-engine.d.ts +22 -0
- package/node_modules/@appport/core/dist/wasm-engine.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/wasm-engine.js +367 -0
- package/node_modules/@appport/core/dist/wasm-engine.js.map +1 -0
- package/node_modules/@appport/core/package.json +58 -0
- package/node_modules/@appport/mobile/README.md +10 -0
- package/node_modules/@appport/mobile/dist/index.d.ts +66 -0
- package/node_modules/@appport/mobile/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/mobile/dist/index.js +182 -0
- package/node_modules/@appport/mobile/dist/index.js.map +1 -0
- package/node_modules/@appport/mobile/package.json +33 -0
- package/node_modules/@appport/protocol/README.md +41 -0
- package/node_modules/@appport/protocol/dist/blob.d.ts +46 -0
- package/node_modules/@appport/protocol/dist/blob.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/blob.js +23 -0
- package/node_modules/@appport/protocol/dist/blob.js.map +1 -0
- package/node_modules/@appport/protocol/dist/compatibility.d.ts +25 -0
- package/node_modules/@appport/protocol/dist/compatibility.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/compatibility.js +189 -0
- package/node_modules/@appport/protocol/dist/compatibility.js.map +1 -0
- package/node_modules/@appport/protocol/dist/envelopes.d.ts +175 -0
- package/node_modules/@appport/protocol/dist/envelopes.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/envelopes.js +97 -0
- package/node_modules/@appport/protocol/dist/envelopes.js.map +1 -0
- package/node_modules/@appport/protocol/dist/errors.d.ts +74 -0
- package/node_modules/@appport/protocol/dist/errors.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/errors.js +91 -0
- package/node_modules/@appport/protocol/dist/errors.js.map +1 -0
- package/node_modules/@appport/protocol/dist/ids.d.ts +12 -0
- package/node_modules/@appport/protocol/dist/ids.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/ids.js +50 -0
- package/node_modules/@appport/protocol/dist/ids.js.map +1 -0
- package/node_modules/@appport/protocol/dist/index.d.ts +20 -0
- package/node_modules/@appport/protocol/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/index.js +20 -0
- package/node_modules/@appport/protocol/dist/index.js.map +1 -0
- package/node_modules/@appport/protocol/dist/jsonschema.d.ts +50 -0
- package/node_modules/@appport/protocol/dist/jsonschema.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/jsonschema.js +6 -0
- package/node_modules/@appport/protocol/dist/jsonschema.js.map +1 -0
- package/node_modules/@appport/protocol/dist/manifest.d.ts +131 -0
- package/node_modules/@appport/protocol/dist/manifest.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/manifest.js +20 -0
- package/node_modules/@appport/protocol/dist/manifest.js.map +1 -0
- package/node_modules/@appport/protocol/dist/names.d.ts +26 -0
- package/node_modules/@appport/protocol/dist/names.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/names.js +85 -0
- package/node_modules/@appport/protocol/dist/names.js.map +1 -0
- package/node_modules/@appport/protocol/dist/operations.d.ts +34 -0
- package/node_modules/@appport/protocol/dist/operations.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/operations.js +9 -0
- package/node_modules/@appport/protocol/dist/operations.js.map +1 -0
- package/node_modules/@appport/protocol/dist/session.d.ts +27 -0
- package/node_modules/@appport/protocol/dist/session.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/session.js +7 -0
- package/node_modules/@appport/protocol/dist/session.js.map +1 -0
- package/node_modules/@appport/protocol/dist/validate.d.ts +37 -0
- package/node_modules/@appport/protocol/dist/validate.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/validate.js +321 -0
- package/node_modules/@appport/protocol/dist/validate.js.map +1 -0
- package/node_modules/@appport/protocol/dist/version.d.ts +27 -0
- package/node_modules/@appport/protocol/dist/version.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/version.js +26 -0
- package/node_modules/@appport/protocol/dist/version.js.map +1 -0
- package/node_modules/@appport/protocol/package.json +25 -0
- package/node_modules/@appport/schema/README.md +32 -0
- package/node_modules/@appport/schema/dist/builder.d.ts +85 -0
- package/node_modules/@appport/schema/dist/builder.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/builder.js +278 -0
- package/node_modules/@appport/schema/dist/builder.js.map +1 -0
- package/node_modules/@appport/schema/dist/from-json-schema.d.ts +12 -0
- package/node_modules/@appport/schema/dist/from-json-schema.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/from-json-schema.js +186 -0
- package/node_modules/@appport/schema/dist/from-json-schema.js.map +1 -0
- package/node_modules/@appport/schema/dist/index.d.ts +23 -0
- package/node_modules/@appport/schema/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/index.js +22 -0
- package/node_modules/@appport/schema/dist/index.js.map +1 -0
- package/node_modules/@appport/schema/dist/standard.d.ts +46 -0
- package/node_modules/@appport/schema/dist/standard.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/standard.js +42 -0
- package/node_modules/@appport/schema/dist/standard.js.map +1 -0
- package/node_modules/@appport/schema/dist/types.d.ts +40 -0
- package/node_modules/@appport/schema/dist/types.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/types.js +19 -0
- package/node_modules/@appport/schema/dist/types.js.map +1 -0
- package/node_modules/@appport/schema/package.json +28 -0
- package/node_modules/@appport/server/README.md +39 -0
- package/node_modules/@appport/server/dist/connection.d.ts +45 -0
- package/node_modules/@appport/server/dist/connection.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/connection.js +217 -0
- package/node_modules/@appport/server/dist/connection.js.map +1 -0
- package/node_modules/@appport/server/dist/fetch.d.ts +10 -0
- package/node_modules/@appport/server/dist/fetch.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/fetch.js +50 -0
- package/node_modules/@appport/server/dist/fetch.js.map +1 -0
- package/node_modules/@appport/server/dist/http.d.ts +80 -0
- package/node_modules/@appport/server/dist/http.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/http.js +306 -0
- package/node_modules/@appport/server/dist/http.js.map +1 -0
- package/node_modules/@appport/server/dist/index.d.ts +11 -0
- package/node_modules/@appport/server/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/index.js +11 -0
- package/node_modules/@appport/server/dist/index.js.map +1 -0
- package/node_modules/@appport/server/dist/node-entry.d.ts +4 -0
- package/node_modules/@appport/server/dist/node-entry.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/node-entry.js +4 -0
- package/node_modules/@appport/server/dist/node-entry.js.map +1 -0
- package/node_modules/@appport/server/dist/node.d.ts +45 -0
- package/node_modules/@appport/server/dist/node.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/node.js +190 -0
- package/node_modules/@appport/server/dist/node.js.map +1 -0
- package/node_modules/@appport/server/dist/server.d.ts +83 -0
- package/node_modules/@appport/server/dist/server.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/server.js +114 -0
- package/node_modules/@appport/server/dist/server.js.map +1 -0
- package/node_modules/@appport/server/dist/websocket.d.ts +25 -0
- package/node_modules/@appport/server/dist/websocket.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/websocket.js +221 -0
- package/node_modules/@appport/server/dist/websocket.js.map +1 -0
- package/node_modules/@appport/server/package.json +34 -0
- package/node_modules/@appport/transport-electron/README.md +56 -0
- package/node_modules/@appport/transport-electron/dist/index.d.ts +11 -0
- package/node_modules/@appport/transport-electron/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/index.js +11 -0
- package/node_modules/@appport/transport-electron/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/main.d.ts +31 -0
- package/node_modules/@appport/transport-electron/dist/main.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/main.js +61 -0
- package/node_modules/@appport/transport-electron/dist/main.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/preload.d.ts +22 -0
- package/node_modules/@appport/transport-electron/dist/preload.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/preload.js +29 -0
- package/node_modules/@appport/transport-electron/dist/preload.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/renderer.d.ts +16 -0
- package/node_modules/@appport/transport-electron/dist/renderer.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/renderer.js +36 -0
- package/node_modules/@appport/transport-electron/dist/renderer.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/types.d.ts +49 -0
- package/node_modules/@appport/transport-electron/dist/types.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/types.js +5 -0
- package/node_modules/@appport/transport-electron/dist/types.js.map +1 -0
- package/node_modules/@appport/transport-electron/package.json +46 -0
- package/node_modules/@appport/transport-http/README.md +24 -0
- package/node_modules/@appport/transport-http/dist/index.d.ts +18 -0
- package/node_modules/@appport/transport-http/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-http/dist/index.js +223 -0
- package/node_modules/@appport/transport-http/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-http/package.json +29 -0
- package/node_modules/@appport/transport-inprocess/README.md +24 -0
- package/node_modules/@appport/transport-inprocess/dist/index.d.ts +16 -0
- package/node_modules/@appport/transport-inprocess/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-inprocess/dist/index.js +30 -0
- package/node_modules/@appport/transport-inprocess/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-inprocess/package.json +30 -0
- package/node_modules/@appport/transport-tauri/README.md +45 -0
- package/node_modules/@appport/transport-tauri/dist/index.d.ts +23 -0
- package/node_modules/@appport/transport-tauri/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-tauri/dist/index.js +44 -0
- package/node_modules/@appport/transport-tauri/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-tauri/package.json +29 -0
- package/node_modules/@appport/transport-websocket/README.md +22 -0
- package/node_modules/@appport/transport-websocket/dist/index.d.ts +26 -0
- package/node_modules/@appport/transport-websocket/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-websocket/dist/index.js +72 -0
- package/node_modules/@appport/transport-websocket/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-websocket/package.json +29 -0
- package/package.json +79 -0
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Executable WASM Artifact Model (PR25)
|
|
3
|
+
*
|
|
4
|
+
* The executable artifact layer between verified application contracts and
|
|
5
|
+
* eventual host-mediated execution. This layer ensures:
|
|
6
|
+
*
|
|
7
|
+
* - Artifact identity is distinct from contract identity
|
|
8
|
+
* - Contract fingerprint is embedded and canonical
|
|
9
|
+
* - Artifact is content-addressable (SHA256)
|
|
10
|
+
* - Compilation is deterministic where toolchain permits
|
|
11
|
+
* - Exports are derived from verified provided capabilities
|
|
12
|
+
* - Requirements remain external (not embedded)
|
|
13
|
+
* - No secrets, credentials, or handlers in artifacts
|
|
14
|
+
* - Artifact inspection does not execute code
|
|
15
|
+
*
|
|
16
|
+
* CRITICAL INVARIANT:
|
|
17
|
+
* A verified application produces an executable artifact.
|
|
18
|
+
* An invalid application cannot produce an artifact.
|
|
19
|
+
* The artifact references the contract's canonical fingerprint.
|
|
20
|
+
* The artifact bytes are immutable and content-addressed.
|
|
21
|
+
*/
|
|
22
|
+
import { createHash } from "crypto";
|
|
23
|
+
import { generateManifest, fingerprintManifest } from "./manifest.js";
|
|
24
|
+
/**
|
|
25
|
+
* Compile a verified application into an executable WASM artifact.
|
|
26
|
+
*
|
|
27
|
+
* CRITICAL INVARIANT:
|
|
28
|
+
* Only verified applications can compile to artifacts.
|
|
29
|
+
* Invalid applications fail at the verify() step, before compilation.
|
|
30
|
+
*
|
|
31
|
+
* Flow:
|
|
32
|
+
* ```
|
|
33
|
+
* defineApplication()
|
|
34
|
+
* ↓
|
|
35
|
+
* verifyApplication() // Must succeed
|
|
36
|
+
* ↓
|
|
37
|
+
* compileArtifact() // Produces ExecutableArtifact
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @param assembly - The application assembly (must be verified)
|
|
41
|
+
* @param verification - The verification result (must have ready: true)
|
|
42
|
+
* @param options - Optional compilation options
|
|
43
|
+
* @returns The executable artifact
|
|
44
|
+
* @throws Error if assembly is not verified and ready
|
|
45
|
+
*/
|
|
46
|
+
export function compileArtifact(assembly, verification, options) {
|
|
47
|
+
// Require verification
|
|
48
|
+
if (!verification.ready) {
|
|
49
|
+
throw new Error("Cannot compile artifact: application is not verified and ready. Call assembly.verify() first.");
|
|
50
|
+
}
|
|
51
|
+
// Generate manifest
|
|
52
|
+
const manifest = generateManifest(assembly, verification);
|
|
53
|
+
// Calculate contract fingerprint
|
|
54
|
+
const contractFingerprint = fingerprintManifest(manifest);
|
|
55
|
+
// Build exports from provided capabilities
|
|
56
|
+
const exports = manifest.provides.map((cap) => ({
|
|
57
|
+
name: cap.name,
|
|
58
|
+
version: cap.version,
|
|
59
|
+
kind: cap.kind,
|
|
60
|
+
inputSchema: cap.inputSchema,
|
|
61
|
+
outputSchema: cap.outputSchema,
|
|
62
|
+
authorization: cap.authorization,
|
|
63
|
+
...(cap.idempotency ? { idempotency: cap.idempotency } : {}),
|
|
64
|
+
...(cap.concurrency ? { concurrency: cap.concurrency } : {}),
|
|
65
|
+
...(cap.timeoutMs ? { timeoutMs: cap.timeoutMs } : {}),
|
|
66
|
+
emits: cap.emits,
|
|
67
|
+
deprecated: cap.deprecated
|
|
68
|
+
}));
|
|
69
|
+
// Build requires from manifest
|
|
70
|
+
const requires = manifest.requires.map((req) => ({
|
|
71
|
+
name: req.name,
|
|
72
|
+
version: req.version,
|
|
73
|
+
...(req.versionConstraint ? { versionConstraint: req.versionConstraint } : {}),
|
|
74
|
+
...(req.provider ? { provider: req.provider } : {})
|
|
75
|
+
}));
|
|
76
|
+
// Create compiler metadata
|
|
77
|
+
const compiler = {
|
|
78
|
+
format: "wasm/1",
|
|
79
|
+
target: "wasm32-unknown-unknown",
|
|
80
|
+
compiler: options?.compiler ?? "tsc-to-wasm",
|
|
81
|
+
compilerVersion: options?.compilerVersion ?? "1.0.0",
|
|
82
|
+
optimizationLevel: options?.optimizationLevel ?? 2
|
|
83
|
+
};
|
|
84
|
+
// Create metadata
|
|
85
|
+
const metadata = {
|
|
86
|
+
protocol: "AppPort/1",
|
|
87
|
+
version: "artifact/1",
|
|
88
|
+
application: {
|
|
89
|
+
id: assembly.identity.id,
|
|
90
|
+
name: assembly.identity.name,
|
|
91
|
+
version: assembly.identity.version
|
|
92
|
+
},
|
|
93
|
+
contractFingerprint,
|
|
94
|
+
manifest,
|
|
95
|
+
exports,
|
|
96
|
+
requires,
|
|
97
|
+
compiler,
|
|
98
|
+
createdAt: new Date().toISOString(),
|
|
99
|
+
...(options?.description ? { description: options.description } : {})
|
|
100
|
+
};
|
|
101
|
+
// Generate artifact bytes
|
|
102
|
+
// The artifact includes:
|
|
103
|
+
// 1. Metadata (contract, exports, requirements) - EXCLUDING timestamps for determinism
|
|
104
|
+
// 2. Implementation code (represented as source code hashes for determinism)
|
|
105
|
+
//
|
|
106
|
+
// This ensures:
|
|
107
|
+
// - Same contract + same implementation → same artifact bytes
|
|
108
|
+
// - Same contract + different implementation → different artifact bytes
|
|
109
|
+
// - Timestamps do not affect artifact identity (per spec §6, §7)
|
|
110
|
+
// Create canonical metadata for hashing (exclude timestamps)
|
|
111
|
+
const canonicalMetadata = {
|
|
112
|
+
protocol: metadata.protocol,
|
|
113
|
+
version: metadata.version,
|
|
114
|
+
application: metadata.application,
|
|
115
|
+
contractFingerprint: metadata.contractFingerprint,
|
|
116
|
+
manifest: metadata.manifest,
|
|
117
|
+
exports: metadata.exports,
|
|
118
|
+
requires: metadata.requires,
|
|
119
|
+
compiler: metadata.compiler,
|
|
120
|
+
...(metadata.description ? { description: metadata.description } : {})
|
|
121
|
+
// Note: createdAt is intentionally excluded for determinism
|
|
122
|
+
};
|
|
123
|
+
// Hash each implementation to create a deterministic representation
|
|
124
|
+
// LIMITATION: In JavaScript, the implementation's execute method is always a wrapper,
|
|
125
|
+
// and the actual handler is captured in a closure that's not accessible via toString().
|
|
126
|
+
// Therefore, different JavaScript implementations may produce identical hashes.
|
|
127
|
+
// This is a known limitation of the JavaScript prototype and would be addressed in
|
|
128
|
+
// a real WASM compiler that has access to the source TypeScript/Rust/etc.
|
|
129
|
+
//
|
|
130
|
+
// For determinism, we include:
|
|
131
|
+
// - The execute method source
|
|
132
|
+
// - The key (which is deterministic from the assembly)
|
|
133
|
+
//
|
|
134
|
+
// A real WASM compiler would:
|
|
135
|
+
// - Compile TypeScript/Rust source to WASM bytecode
|
|
136
|
+
// - Use bytecode hashing instead of function source hashing
|
|
137
|
+
// - Guarantee distinct implementations produce distinct bytecode
|
|
138
|
+
const implementationHashes = {};
|
|
139
|
+
for (const [key, impl] of assembly.implementations) {
|
|
140
|
+
if (impl && impl.execute) {
|
|
141
|
+
// Create a hash from the implementation key and execute method
|
|
142
|
+
// In a real compiler, this would hash the compiled WASM bytecode
|
|
143
|
+
const source = impl.execute.toString();
|
|
144
|
+
const combined = `${key}|${source}`;
|
|
145
|
+
const hash = createHash("sha256").update(combined).digest("hex");
|
|
146
|
+
implementationHashes[key] = hash;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Create the canonical payload for hashing (deterministic)
|
|
150
|
+
const canonicalPayload = {
|
|
151
|
+
metadata: canonicalMetadata,
|
|
152
|
+
implementations: implementationHashes
|
|
153
|
+
};
|
|
154
|
+
// Serialize for content hash calculation (deterministic JSON)
|
|
155
|
+
const canonicalJson = JSON.stringify(canonicalPayload);
|
|
156
|
+
// Calculate content hash from canonical (deterministic) representation
|
|
157
|
+
const contentHash = createHash("sha256").update(canonicalJson).digest("hex");
|
|
158
|
+
// Create full artifact bytes (including timestamps for informational purposes)
|
|
159
|
+
const fullPayload = {
|
|
160
|
+
metadata: metadata,
|
|
161
|
+
implementations: implementationHashes
|
|
162
|
+
};
|
|
163
|
+
const fullJson = JSON.stringify(fullPayload, null, 2);
|
|
164
|
+
const bytes = Buffer.from(fullJson, "utf-8");
|
|
165
|
+
// Validate artifact
|
|
166
|
+
const validation = validateArtifactInternal(metadata, bytes, contractFingerprint);
|
|
167
|
+
return {
|
|
168
|
+
metadata,
|
|
169
|
+
bytes,
|
|
170
|
+
contentHash,
|
|
171
|
+
validation
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Inspect an artifact's metadata without executing it.
|
|
176
|
+
*
|
|
177
|
+
* Provides complete artifact information for observation and validation
|
|
178
|
+
* without running any code.
|
|
179
|
+
*
|
|
180
|
+
* Returned information:
|
|
181
|
+
* - Application identity
|
|
182
|
+
* - Contract fingerprint
|
|
183
|
+
* - Artifact content hash
|
|
184
|
+
* - Capability exports
|
|
185
|
+
* - Required capabilities
|
|
186
|
+
* - Compiler metadata
|
|
187
|
+
* - Validation results
|
|
188
|
+
*
|
|
189
|
+
* @param artifact - The artifact to inspect
|
|
190
|
+
* @returns Artifact inspection report
|
|
191
|
+
*/
|
|
192
|
+
export function inspectArtifact(artifact) {
|
|
193
|
+
return {
|
|
194
|
+
application: artifact.metadata.application,
|
|
195
|
+
contractFingerprint: artifact.metadata.contractFingerprint,
|
|
196
|
+
contentHash: artifact.contentHash,
|
|
197
|
+
format: artifact.metadata.compiler.format,
|
|
198
|
+
exports: artifact.metadata.exports.map((exp) => ({
|
|
199
|
+
name: exp.name,
|
|
200
|
+
version: exp.version,
|
|
201
|
+
kind: exp.kind
|
|
202
|
+
})),
|
|
203
|
+
requires: artifact.metadata.requires.map((req) => ({
|
|
204
|
+
name: req.name,
|
|
205
|
+
version: req.version
|
|
206
|
+
})),
|
|
207
|
+
compiler: artifact.metadata.compiler,
|
|
208
|
+
validation: artifact.validation,
|
|
209
|
+
createdAt: artifact.metadata.createdAt,
|
|
210
|
+
description: artifact.metadata.description
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Validate an artifact.
|
|
215
|
+
*
|
|
216
|
+
* Checks:
|
|
217
|
+
* - WASM format validity (structural)
|
|
218
|
+
* - Contract fingerprint consistency
|
|
219
|
+
* - Export/capability matching
|
|
220
|
+
* - Metadata completeness
|
|
221
|
+
* - Absence of forbidden content where statically detectable
|
|
222
|
+
*
|
|
223
|
+
* Does NOT check:
|
|
224
|
+
* - Runtime safety (runtime sandboxing in PR26)
|
|
225
|
+
* - Execution outcomes
|
|
226
|
+
* - Performance characteristics
|
|
227
|
+
*
|
|
228
|
+
* @param artifact - The artifact to validate
|
|
229
|
+
* @returns Validation result
|
|
230
|
+
*/
|
|
231
|
+
export function validateArtifact(artifact) {
|
|
232
|
+
// Recalculate validation to ensure consistency
|
|
233
|
+
return validateArtifactInternal(artifact.metadata, artifact.bytes, artifact.metadata.contractFingerprint);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Serialize artifact metadata to JSON.
|
|
237
|
+
*
|
|
238
|
+
* The serialized representation is:
|
|
239
|
+
* - Deterministic
|
|
240
|
+
* - Portable
|
|
241
|
+
* - JSON-safe
|
|
242
|
+
* - Free of executable functions
|
|
243
|
+
* - Free of runtime handles
|
|
244
|
+
* - Free of secrets
|
|
245
|
+
*
|
|
246
|
+
* @param metadata - The metadata to serialize
|
|
247
|
+
* @returns JSON string
|
|
248
|
+
*/
|
|
249
|
+
export function serializeArtifactMetadata(metadata) {
|
|
250
|
+
return JSON.stringify(metadata, null, 2);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Deserialize artifact metadata from JSON.
|
|
254
|
+
*
|
|
255
|
+
* @param json - The JSON string
|
|
256
|
+
* @returns The deserialized metadata
|
|
257
|
+
* @throws Error if JSON is invalid or doesn't match schema
|
|
258
|
+
*/
|
|
259
|
+
export function deserializeArtifactMetadata(json) {
|
|
260
|
+
const data = JSON.parse(json);
|
|
261
|
+
// Basic validation
|
|
262
|
+
if (!data.protocol || data.protocol !== "AppPort/1") {
|
|
263
|
+
throw new Error("Invalid artifact metadata: missing or incorrect protocol identifier");
|
|
264
|
+
}
|
|
265
|
+
if (!data.version || data.version !== "artifact/1") {
|
|
266
|
+
throw new Error("Invalid artifact metadata: missing or incorrect version");
|
|
267
|
+
}
|
|
268
|
+
if (!data.application || !data.application.id) {
|
|
269
|
+
throw new Error("Invalid artifact metadata: missing application identity");
|
|
270
|
+
}
|
|
271
|
+
if (!data.contractFingerprint) {
|
|
272
|
+
throw new Error("Invalid artifact metadata: missing contract fingerprint");
|
|
273
|
+
}
|
|
274
|
+
return data;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Internal: Validate artifact consistency.
|
|
278
|
+
*
|
|
279
|
+
* Checks for contract/artifact relationship validity.
|
|
280
|
+
*/
|
|
281
|
+
function validateArtifactInternal(metadata, bytes, expectedFingerprint) {
|
|
282
|
+
const errors = [];
|
|
283
|
+
const warnings = [];
|
|
284
|
+
// Check protocol and version
|
|
285
|
+
if (metadata.protocol !== "AppPort/1") {
|
|
286
|
+
errors.push({
|
|
287
|
+
code: "INVALID_PROTOCOL",
|
|
288
|
+
message: `Invalid protocol: expected "AppPort/1", got "${metadata.protocol}"`
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
if (metadata.version !== "artifact/1") {
|
|
292
|
+
errors.push({
|
|
293
|
+
code: "INVALID_VERSION",
|
|
294
|
+
message: `Invalid version: expected "artifact/1", got "${metadata.version}"`
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
// Check contract fingerprint matches manifest
|
|
298
|
+
const calculatedFingerprint = fingerprintManifest(metadata.manifest);
|
|
299
|
+
if (metadata.contractFingerprint !== calculatedFingerprint) {
|
|
300
|
+
errors.push({
|
|
301
|
+
code: "FINGERPRINT_MISMATCH",
|
|
302
|
+
message: `Contract fingerprint mismatch: declared "${metadata.contractFingerprint}", calculated "${calculatedFingerprint}"`,
|
|
303
|
+
context: {
|
|
304
|
+
declared: metadata.contractFingerprint,
|
|
305
|
+
calculated: calculatedFingerprint
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
// Check application identity is present
|
|
310
|
+
if (!metadata.application.id || !metadata.application.name || !metadata.application.version) {
|
|
311
|
+
errors.push({
|
|
312
|
+
code: "INVALID_APPLICATION_IDENTITY",
|
|
313
|
+
message: "Invalid application identity: missing id, name, or version"
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
// Check exports match manifest provides
|
|
317
|
+
const manifestNames = new Set(metadata.manifest.provides.map((p) => `${p.name}@${p.version}`));
|
|
318
|
+
const exportNames = new Set(metadata.exports.map((e) => `${e.name}@${e.version}`));
|
|
319
|
+
if (manifestNames.size !== exportNames.size) {
|
|
320
|
+
errors.push({
|
|
321
|
+
code: "EXPORT_COUNT_MISMATCH",
|
|
322
|
+
message: `Export count mismatch: manifest has ${manifestNames.size}, exports has ${exportNames.size}`
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
for (const name of manifestNames) {
|
|
326
|
+
if (!exportNames.has(name)) {
|
|
327
|
+
errors.push({
|
|
328
|
+
code: "MISSING_EXPORT",
|
|
329
|
+
message: `Export missing from artifact: ${name}`
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
for (const name of exportNames) {
|
|
334
|
+
if (!manifestNames.has(name)) {
|
|
335
|
+
errors.push({
|
|
336
|
+
code: "EXTRA_EXPORT",
|
|
337
|
+
message: `Extra export not in manifest: ${name}`
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// Check bytes are non-empty
|
|
342
|
+
if (!bytes || bytes.length === 0) {
|
|
343
|
+
errors.push({
|
|
344
|
+
code: "EMPTY_ARTIFACT",
|
|
345
|
+
message: "Artifact bytes are empty"
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
// Check metadata has required fields
|
|
349
|
+
if (!metadata.compiler || !metadata.compiler.format) {
|
|
350
|
+
errors.push({
|
|
351
|
+
code: "INVALID_COMPILER_METADATA",
|
|
352
|
+
message: "Compiler metadata is incomplete"
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
if (!metadata.createdAt) {
|
|
356
|
+
errors.push({
|
|
357
|
+
code: "MISSING_TIMESTAMP",
|
|
358
|
+
message: "Missing creation timestamp"
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
return {
|
|
362
|
+
valid: errors.length === 0,
|
|
363
|
+
errors,
|
|
364
|
+
warnings
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Check if two artifacts are equivalent in contract and exports.
|
|
369
|
+
*
|
|
370
|
+
* Two artifacts are equivalent if they have the same contract fingerprint
|
|
371
|
+
* and the same exported capabilities, regardless of artifact content hash.
|
|
372
|
+
*
|
|
373
|
+
* This is useful for detecting duplicate contract implementations.
|
|
374
|
+
*
|
|
375
|
+
* @param artifact1 - First artifact
|
|
376
|
+
* @param artifact2 - Second artifact
|
|
377
|
+
* @returns true if artifacts are contract-equivalent
|
|
378
|
+
*/
|
|
379
|
+
export function artifactsAreEquivalent(artifact1, artifact2) {
|
|
380
|
+
return artifact1.metadata.contractFingerprint === artifact2.metadata.contractFingerprint;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Check if two artifacts have identical bytes (and thus same content hash).
|
|
384
|
+
*
|
|
385
|
+
* @param artifact1 - First artifact
|
|
386
|
+
* @param artifact2 - Second artifact
|
|
387
|
+
* @returns true if artifacts have identical bytes
|
|
388
|
+
*/
|
|
389
|
+
export function artifactsAreIdentical(artifact1, artifact2) {
|
|
390
|
+
return artifact1.contentHash === artifact2.contentHash;
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Assembly & Verification (PR18)
|
|
3
|
+
*
|
|
4
|
+
* An application's assembly model contains:
|
|
5
|
+
* - Identity (id, name, version)
|
|
6
|
+
* - Provided capabilities contract
|
|
7
|
+
* - Required capabilities contract
|
|
8
|
+
* - Implementation bindings
|
|
9
|
+
* - Verification/readiness state
|
|
10
|
+
*
|
|
11
|
+
* This separates declarative contract from business logic bindings,
|
|
12
|
+
* and provides deterministic verification before runtime execution.
|
|
13
|
+
*/
|
|
14
|
+
import type { AnyCapability, CapabilityDefinition } from "./capability.js";
|
|
15
|
+
import type { CapabilityImplementation } from "./implementation.js";
|
|
16
|
+
import type { ApplicationManifest } from "./manifest.js";
|
|
17
|
+
import type { JsonValue } from "@appport/protocol";
|
|
18
|
+
/**
|
|
19
|
+
* Reference to a capability by name and version.
|
|
20
|
+
* Used for both provided and required capabilities.
|
|
21
|
+
*
|
|
22
|
+
* For required capabilities, supports version constraints (e.g., "^1", "~1.2")
|
|
23
|
+
* and provider constraints for deterministic dependency resolution (PR22).
|
|
24
|
+
*/
|
|
25
|
+
export interface CapabilityReference {
|
|
26
|
+
readonly name: string;
|
|
27
|
+
readonly version: number;
|
|
28
|
+
readonly versionConstraint?: string;
|
|
29
|
+
readonly provider?: {
|
|
30
|
+
readonly applicationId?: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Application assembly: the declarative model of an application's
|
|
35
|
+
* contract, implementations, and dependencies.
|
|
36
|
+
*/
|
|
37
|
+
export interface ApplicationAssembly {
|
|
38
|
+
/** Application identity. */
|
|
39
|
+
readonly identity: {
|
|
40
|
+
/** Unique application identifier. */
|
|
41
|
+
readonly id: string;
|
|
42
|
+
/** Human-readable application name. */
|
|
43
|
+
readonly name: string;
|
|
44
|
+
/** Semantic version. */
|
|
45
|
+
readonly version: string;
|
|
46
|
+
};
|
|
47
|
+
/** Serializable application contract metadata; never executable authority. */
|
|
48
|
+
readonly metadata?: Readonly<Record<string, JsonValue>>;
|
|
49
|
+
/** Capabilities this application provides. */
|
|
50
|
+
readonly provides: readonly CapabilityDefinition[];
|
|
51
|
+
/** Capabilities this application requires from other providers. */
|
|
52
|
+
readonly requires: readonly CapabilityReference[];
|
|
53
|
+
/** Implementation bindings for provided capabilities. */
|
|
54
|
+
readonly implementations: ReadonlyMap<string, CapabilityImplementation>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A single verification issue: an error or warning.
|
|
58
|
+
*/
|
|
59
|
+
export interface VerificationIssue {
|
|
60
|
+
/** Issue severity: 'error' or 'warning'. */
|
|
61
|
+
readonly severity: "error" | "warning";
|
|
62
|
+
/** Human-readable issue message. */
|
|
63
|
+
readonly message: string;
|
|
64
|
+
/** Optional capability reference (if issue is capability-related). */
|
|
65
|
+
readonly capability?: CapabilityReference;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Verification result: structural validation of an application assembly.
|
|
69
|
+
* This is NOT a runtime health check—it validates the assembly contract.
|
|
70
|
+
*/
|
|
71
|
+
export interface VerificationResult {
|
|
72
|
+
/** Whether the application is ready to run. */
|
|
73
|
+
readonly ready: boolean;
|
|
74
|
+
/** All detected errors (prevents readiness). */
|
|
75
|
+
readonly errors: readonly VerificationIssue[];
|
|
76
|
+
/** All detected warnings (does not prevent readiness). */
|
|
77
|
+
readonly warnings: readonly VerificationIssue[];
|
|
78
|
+
/** Provided capabilities (verified). */
|
|
79
|
+
readonly provides: readonly CapabilityReference[];
|
|
80
|
+
/** Required capabilities (verified). */
|
|
81
|
+
readonly requires: readonly CapabilityReference[];
|
|
82
|
+
/** Implementation status for each provided capability. */
|
|
83
|
+
readonly implementations: ReadonlyMap<string, "bound" | "missing" | "orphan">;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Options for defining an application assembly.
|
|
87
|
+
*/
|
|
88
|
+
export interface DefineApplicationOptions {
|
|
89
|
+
/** Application identity. */
|
|
90
|
+
identity: {
|
|
91
|
+
id: string;
|
|
92
|
+
name: string;
|
|
93
|
+
version: string;
|
|
94
|
+
};
|
|
95
|
+
metadata?: Readonly<Record<string, JsonValue>>;
|
|
96
|
+
/** Capabilities this application provides. */
|
|
97
|
+
provides: readonly CapabilityDefinition[];
|
|
98
|
+
/** Capabilities this application requires. */
|
|
99
|
+
requires?: readonly CapabilityReference[];
|
|
100
|
+
/** Implementation bindings for provided capabilities. */
|
|
101
|
+
implementations?: ReadonlyMap<string, CapabilityImplementation> | Record<string, CapabilityImplementation>;
|
|
102
|
+
}
|
|
103
|
+
/** Ergonomic developer-authored application contract. */
|
|
104
|
+
export interface AuthorApplicationOptions {
|
|
105
|
+
/** Stable application identity; never inferred from a path or process. */
|
|
106
|
+
id: string;
|
|
107
|
+
/** Human-readable name. Defaults to `id`. */
|
|
108
|
+
name?: string;
|
|
109
|
+
/** Semantic application version. */
|
|
110
|
+
version: string;
|
|
111
|
+
/** Descriptive, serializable contract metadata. */
|
|
112
|
+
metadata?: Readonly<Record<string, JsonValue>>;
|
|
113
|
+
/** Capability contracts offered by this application. */
|
|
114
|
+
provides?: readonly AnyCapability[];
|
|
115
|
+
/** Capability requirements; these never select a provider. */
|
|
116
|
+
requires?: readonly CapabilityReference[];
|
|
117
|
+
}
|
|
118
|
+
export interface AuthoredApplication extends ApplicationAssembly {
|
|
119
|
+
verify(): VerificationResult;
|
|
120
|
+
manifest(): ApplicationManifest;
|
|
121
|
+
manifestUnchecked(): ApplicationManifest;
|
|
122
|
+
fingerprint(): string;
|
|
123
|
+
fingerprintUnchecked(): string;
|
|
124
|
+
/** Register through the supplied authoritative ApplicationRegistry boundary. */
|
|
125
|
+
register<Result>(registry: {
|
|
126
|
+
registerWithValidation(options: {
|
|
127
|
+
identity: ApplicationAssembly["identity"];
|
|
128
|
+
manifest: ApplicationManifest;
|
|
129
|
+
fingerprint: string;
|
|
130
|
+
verification: VerificationResult;
|
|
131
|
+
}): Promise<Result>;
|
|
132
|
+
}): Promise<Result>;
|
|
133
|
+
}
|
|
134
|
+
/** A role is derived per capability; it is never application identity. */
|
|
135
|
+
export type ApplicationCapabilityRole = "PROVIDER" | "CONSUMER" | "BOTH" | "NONE";
|
|
136
|
+
export interface ApplicationCapabilityDeclarations {
|
|
137
|
+
readonly provides: readonly {
|
|
138
|
+
readonly name: string;
|
|
139
|
+
}[];
|
|
140
|
+
readonly requires: readonly {
|
|
141
|
+
readonly name: string;
|
|
142
|
+
}[];
|
|
143
|
+
}
|
|
144
|
+
export declare function applicationCapabilityRole(application: ApplicationCapabilityDeclarations, capabilityName: string): ApplicationCapabilityRole;
|
|
145
|
+
export declare function applicationCapabilityRoles(application: ApplicationCapabilityDeclarations): Readonly<Record<string, Exclude<ApplicationCapabilityRole, "NONE">>>;
|
|
146
|
+
/** Declare a capability dependency without naming or selecting a provider. */
|
|
147
|
+
export declare function defineRequirement(options: {
|
|
148
|
+
capability: string;
|
|
149
|
+
version: string | number;
|
|
150
|
+
}): CapabilityReference;
|
|
151
|
+
/**
|
|
152
|
+
* Defines an application assembly: identity, contract, and implementations.
|
|
153
|
+
*
|
|
154
|
+
* Usage:
|
|
155
|
+
*
|
|
156
|
+
* ```typescript
|
|
157
|
+
* const assembly = defineApplication({
|
|
158
|
+
* identity: { id: "invoicing", name: "Invoicing", version: "1.0.0" },
|
|
159
|
+
* provides: [invoiceCreate, invoiceSend, invoiceRefund],
|
|
160
|
+
* requires: [{ name: "payments.charge", version: 1 }],
|
|
161
|
+
* implementations: {
|
|
162
|
+
* "invoice.create@1": createInvoiceImpl,
|
|
163
|
+
* "invoice.send@1": sendInvoiceImpl,
|
|
164
|
+
* "invoice.refund@1": refundInvoiceImpl,
|
|
165
|
+
* }
|
|
166
|
+
* });
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* The assembly is purely declarative. Call `assembly.verify()` to validate
|
|
170
|
+
* that all contracts are internally coherent and implementations are complete.
|
|
171
|
+
*/
|
|
172
|
+
export declare function defineApplication(options: DefineApplicationOptions | AuthorApplicationOptions): AuthoredApplication;
|
|
173
|
+
/**
|
|
174
|
+
* Verifies an application assembly for coherence and completeness.
|
|
175
|
+
*
|
|
176
|
+
* Checks:
|
|
177
|
+
* - All provided capabilities are structurally valid
|
|
178
|
+
* - All required capabilities are structurally valid
|
|
179
|
+
* - All provided capabilities have explicit implementation bindings
|
|
180
|
+
* - No orphan implementations (implementations for undeclared capabilities)
|
|
181
|
+
* - All requirements pass existing PR16 validation
|
|
182
|
+
*
|
|
183
|
+
* Returns a VerificationResult with ready state and detailed issues.
|
|
184
|
+
*
|
|
185
|
+
* NOTE: This function checks for explicit implementation bindings only.
|
|
186
|
+
* Legacy handlers (PR17 pattern) are NOT considered implementations for
|
|
187
|
+
* verification purposes. Use `AppPortApplication.verify()` for runtime
|
|
188
|
+
* verification that includes handler compatibility.
|
|
189
|
+
*
|
|
190
|
+
* CRITICAL INVARIANT: Verification never executes business logic.
|
|
191
|
+
* It is purely structural/contractual validation.
|
|
192
|
+
*/
|
|
193
|
+
export declare function verifyApplication(assembly: ApplicationAssembly): VerificationResult;
|
|
194
|
+
/**
|
|
195
|
+
* Runtime verification of an application assembly with backward compatibility.
|
|
196
|
+
*
|
|
197
|
+
* This variant is used by AppPortApplication.verify() and accepts both:
|
|
198
|
+
* - Explicit implementation bindings (PR18)
|
|
199
|
+
* - Legacy handlers attached to capabilities (PR17/backward compat)
|
|
200
|
+
*
|
|
201
|
+
* A capability is considered "bound" if it has either:
|
|
202
|
+
* 1. An explicit implementation binding in the assembly, OR
|
|
203
|
+
* 2. An implementation attached to the capability definition (PR17), OR
|
|
204
|
+
* 3. A fallback handler in the capability definition (legacy)
|
|
205
|
+
*/
|
|
206
|
+
export declare function verifyApplicationWithHandlers(assembly: ApplicationAssembly): VerificationResult;
|
|
207
|
+
/**
|
|
208
|
+
* Format a verification result as a human-readable string.
|
|
209
|
+
*
|
|
210
|
+
* Example output:
|
|
211
|
+
*
|
|
212
|
+
* ```
|
|
213
|
+
* AppPort Application Verification
|
|
214
|
+
* Application: invoicing
|
|
215
|
+
* Version: 1.0.0
|
|
216
|
+
*
|
|
217
|
+
* PROVIDES
|
|
218
|
+
* ✓ invoice.create@1
|
|
219
|
+
* ✓ invoice.send@1
|
|
220
|
+
* ✗ invoice.refund@1
|
|
221
|
+
*
|
|
222
|
+
* REQUIRES
|
|
223
|
+
* ✓ payments.charge@1
|
|
224
|
+
*
|
|
225
|
+
* IMPLEMENTATIONS
|
|
226
|
+
* ✓ invoice.create@1
|
|
227
|
+
* ✓ invoice.send@1
|
|
228
|
+
*
|
|
229
|
+
* ERRORS
|
|
230
|
+
* ✗ invoice.refund@1 has no implementation
|
|
231
|
+
*
|
|
232
|
+
* STATUS
|
|
233
|
+
* NOT READY
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
export declare function formatVerificationResult(assembly: ApplicationAssembly, result: VerificationResult): string;
|
|
237
|
+
//# sourceMappingURL=assembly.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../src/assembly.ts"],"names":[],"mappings":"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"}
|