life-as-api 0.2.0
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 +21 -0
- package/README.md +377 -0
- package/dist/agent/finance-agent.d.ts +44 -0
- package/dist/agent/finance-agent.js +75 -0
- package/dist/agent/finance-agent.js.map +1 -0
- package/dist/agent/legal-agent.d.ts +44 -0
- package/dist/agent/legal-agent.js +76 -0
- package/dist/agent/legal-agent.js.map +1 -0
- package/dist/agent/medical-agent.d.ts +44 -0
- package/dist/agent/medical-agent.js +75 -0
- package/dist/agent/medical-agent.js.map +1 -0
- package/dist/agent/trusted-agent-registry.d.ts +53 -0
- package/dist/agent/trusted-agent-registry.js +57 -0
- package/dist/agent/trusted-agent-registry.js.map +1 -0
- package/dist/audit/audit-chain-verifier.d.ts +10 -0
- package/dist/audit/audit-chain-verifier.js +67 -0
- package/dist/audit/audit-chain-verifier.js.map +1 -0
- package/dist/audit/audit-log.d.ts +48 -0
- package/dist/audit/audit-log.js +74 -0
- package/dist/audit/audit-log.js.map +1 -0
- package/dist/audit/sqlite-audit-log.d.ts +29 -0
- package/dist/audit/sqlite-audit-log.js +142 -0
- package/dist/audit/sqlite-audit-log.js.map +1 -0
- package/dist/auth/access-context-issuer.d.ts +18 -0
- package/dist/auth/access-context-issuer.js +88 -0
- package/dist/auth/access-context-issuer.js.map +1 -0
- package/dist/auth/assert-authorized-for-subject.d.ts +2 -0
- package/dist/auth/assert-authorized-for-subject.js +20 -0
- package/dist/auth/assert-authorized-for-subject.js.map +1 -0
- package/dist/auth/backend-context-minting-boundary.d.ts +23 -0
- package/dist/auth/backend-context-minting-boundary.js +281 -0
- package/dist/auth/backend-context-minting-boundary.js.map +1 -0
- package/dist/auth/default-authorization-policy.d.ts +7 -0
- package/dist/auth/default-authorization-policy.js +64 -0
- package/dist/auth/default-authorization-policy.js.map +1 -0
- package/dist/auth/fake-auth-adapter.d.ts +7 -0
- package/dist/auth/fake-auth-adapter.js +27 -0
- package/dist/auth/fake-auth-adapter.js.map +1 -0
- package/dist/auth/http-client.d.ts +12 -0
- package/dist/auth/http-client.js +7 -0
- package/dist/auth/http-client.js.map +1 -0
- package/dist/auth/in-memory-grant-resolver.d.ts +21 -0
- package/dist/auth/in-memory-grant-resolver.js +73 -0
- package/dist/auth/in-memory-grant-resolver.js.map +1 -0
- package/dist/auth/in-memory-tenant-boundary.d.ts +16 -0
- package/dist/auth/in-memory-tenant-boundary.js +37 -0
- package/dist/auth/in-memory-tenant-boundary.js.map +1 -0
- package/dist/auth/jwks-key-ring-auth-adapter.d.ts +38 -0
- package/dist/auth/jwks-key-ring-auth-adapter.js +123 -0
- package/dist/auth/jwks-key-ring-auth-adapter.js.map +1 -0
- package/dist/auth/jwks-key-ring.d.ts +25 -0
- package/dist/auth/jwks-key-ring.js +111 -0
- package/dist/auth/jwks-key-ring.js.map +1 -0
- package/dist/auth/jwt-auth-adapter.d.ts +15 -0
- package/dist/auth/jwt-auth-adapter.js +59 -0
- package/dist/auth/jwt-auth-adapter.js.map +1 -0
- package/dist/auth/jwt-core.d.ts +32 -0
- package/dist/auth/jwt-core.js +226 -0
- package/dist/auth/jwt-core.js.map +1 -0
- package/dist/auth/jwt-key-ring-auth-adapter.d.ts +16 -0
- package/dist/auth/jwt-key-ring-auth-adapter.js +58 -0
- package/dist/auth/jwt-key-ring-auth-adapter.js.map +1 -0
- package/dist/auth/oidc-discovery.d.ts +15 -0
- package/dist/auth/oidc-discovery.js +46 -0
- package/dist/auth/oidc-discovery.js.map +1 -0
- package/dist/auth/production-scoped-life-api.d.ts +58 -0
- package/dist/auth/production-scoped-life-api.js +802 -0
- package/dist/auth/production-scoped-life-api.js.map +1 -0
- package/dist/auth/proposal-scope-inspector.d.ts +3 -0
- package/dist/auth/proposal-scope-inspector.js +42 -0
- package/dist/auth/proposal-scope-inspector.js.map +1 -0
- package/dist/auth/proposal-scoped-life-api.d.ts +21 -0
- package/dist/auth/proposal-scoped-life-api.js +168 -0
- package/dist/auth/proposal-scoped-life-api.js.map +1 -0
- package/dist/auth/rate-limited-context-minting-boundary.d.ts +27 -0
- package/dist/auth/rate-limited-context-minting-boundary.js +77 -0
- package/dist/auth/rate-limited-context-minting-boundary.js.map +1 -0
- package/dist/auth/revocation-aware-auth-adapter.d.ts +21 -0
- package/dist/auth/revocation-aware-auth-adapter.js +88 -0
- package/dist/auth/revocation-aware-auth-adapter.js.map +1 -0
- package/dist/auth/sqlite-grant-resolver.d.ts +8 -0
- package/dist/auth/sqlite-grant-resolver.js +78 -0
- package/dist/auth/sqlite-grant-resolver.js.map +1 -0
- package/dist/auth/sqlite-tenant-boundary.d.ts +7 -0
- package/dist/auth/sqlite-tenant-boundary.js +41 -0
- package/dist/auth/sqlite-tenant-boundary.js.map +1 -0
- package/dist/auth/static-jwt-key-ring.d.ts +13 -0
- package/dist/auth/static-jwt-key-ring.js +73 -0
- package/dist/auth/static-jwt-key-ring.js.map +1 -0
- package/dist/auth/subject-scoped-life-api.d.ts +14 -0
- package/dist/auth/subject-scoped-life-api.js +51 -0
- package/dist/auth/subject-scoped-life-api.js.map +1 -0
- package/dist/auth/test-context-minting-boundary.d.ts +13 -0
- package/dist/auth/test-context-minting-boundary.js +74 -0
- package/dist/auth/test-context-minting-boundary.js.map +1 -0
- package/dist/auth/types.d.ts +77 -0
- package/dist/auth/types.js +16 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/compliance/subject-data-report.d.ts +43 -0
- package/dist/compliance/subject-data-report.js +155 -0
- package/dist/compliance/subject-data-report.js.map +1 -0
- package/dist/consent/consent-guard.d.ts +4 -0
- package/dist/consent/consent-guard.js +37 -0
- package/dist/consent/consent-guard.js.map +1 -0
- package/dist/consent/grant-registry.d.ts +7 -0
- package/dist/consent/grant-registry.js +13 -0
- package/dist/consent/grant-registry.js.map +1 -0
- package/dist/consent/intersect-selector.d.ts +3 -0
- package/dist/consent/intersect-selector.js +66 -0
- package/dist/consent/intersect-selector.js.map +1 -0
- package/dist/contract/diagnostics.d.ts +32 -0
- package/dist/contract/diagnostics.js +112 -0
- package/dist/contract/diagnostics.js.map +1 -0
- package/dist/contract/project-contracts.d.ts +5 -0
- package/dist/contract/project-contracts.js +159 -0
- package/dist/contract/project-contracts.js.map +1 -0
- package/dist/contract/types.d.ts +32 -0
- package/dist/contract/types.js +5 -0
- package/dist/contract/types.js.map +1 -0
- package/dist/crypto/aes-gcm.d.ts +11 -0
- package/dist/crypto/aes-gcm.js +78 -0
- package/dist/crypto/aes-gcm.js.map +1 -0
- package/dist/crypto/claim-serializer.d.ts +26 -0
- package/dist/crypto/claim-serializer.js +59 -0
- package/dist/crypto/claim-serializer.js.map +1 -0
- package/dist/crypto/sha256.d.ts +12 -0
- package/dist/crypto/sha256.js +40 -0
- package/dist/crypto/sha256.js.map +1 -0
- package/dist/crypto/static-key.d.ts +11 -0
- package/dist/crypto/static-key.js +60 -0
- package/dist/crypto/static-key.js.map +1 -0
- package/dist/crypto/types.d.ts +20 -0
- package/dist/crypto/types.js +8 -0
- package/dist/crypto/types.js.map +1 -0
- package/dist/datasource/trusted-data-source-registry.d.ts +51 -0
- package/dist/datasource/trusted-data-source-registry.js +57 -0
- package/dist/datasource/trusted-data-source-registry.js.map +1 -0
- package/dist/erasure/tombstone.d.ts +13 -0
- package/dist/erasure/tombstone.js +20 -0
- package/dist/erasure/tombstone.js.map +1 -0
- package/dist/evidence/evidence-backed-claim-creator.d.ts +48 -0
- package/dist/evidence/evidence-backed-claim-creator.js +107 -0
- package/dist/evidence/evidence-backed-claim-creator.js.map +1 -0
- package/dist/evidence/in-memory-raw-document-store.d.ts +26 -0
- package/dist/evidence/in-memory-raw-document-store.js +84 -0
- package/dist/evidence/in-memory-raw-document-store.js.map +1 -0
- package/dist/evidence/raw-document-store.d.ts +12 -0
- package/dist/evidence/raw-document-store.js +8 -0
- package/dist/evidence/raw-document-store.js.map +1 -0
- package/dist/evidence/source-evidence-validator.d.ts +4 -0
- package/dist/evidence/source-evidence-validator.js +14 -0
- package/dist/evidence/source-evidence-validator.js.map +1 -0
- package/dist/evidence/sqlite-raw-document-store.d.ts +19 -0
- package/dist/evidence/sqlite-raw-document-store.js +122 -0
- package/dist/evidence/sqlite-raw-document-store.js.map +1 -0
- package/dist/guardian/guardian-registry.d.ts +96 -0
- package/dist/guardian/guardian-registry.js +95 -0
- package/dist/guardian/guardian-registry.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/observability/health.d.ts +12 -0
- package/dist/observability/health.js +16 -0
- package/dist/observability/health.js.map +1 -0
- package/dist/observability/logger.d.ts +21 -0
- package/dist/observability/logger.js +40 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +15 -0
- package/dist/observability/metrics.js +52 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/persistence/backup.d.ts +24 -0
- package/dist/persistence/backup.js +251 -0
- package/dist/persistence/backup.js.map +1 -0
- package/dist/persistence/decryptability-scan.d.ts +10 -0
- package/dist/persistence/decryptability-scan.js +144 -0
- package/dist/persistence/decryptability-scan.js.map +1 -0
- package/dist/persistence/in-memory-unit-of-work.d.ts +11 -0
- package/dist/persistence/in-memory-unit-of-work.js +32 -0
- package/dist/persistence/in-memory-unit-of-work.js.map +1 -0
- package/dist/persistence/key-availability.d.ts +9 -0
- package/dist/persistence/key-availability.js +125 -0
- package/dist/persistence/key-availability.js.map +1 -0
- package/dist/persistence/sqlite/migrations.d.ts +9 -0
- package/dist/persistence/sqlite/migrations.js +535 -0
- package/dist/persistence/sqlite/migrations.js.map +1 -0
- package/dist/persistence/sqlite/schema.d.ts +10 -0
- package/dist/persistence/sqlite/schema.js +101 -0
- package/dist/persistence/sqlite/schema.js.map +1 -0
- package/dist/persistence/sqlite/sqlite-fact-store.d.ts +24 -0
- package/dist/persistence/sqlite/sqlite-fact-store.js +207 -0
- package/dist/persistence/sqlite/sqlite-fact-store.js.map +1 -0
- package/dist/persistence/sqlite/sqlite-source-registry.d.ts +17 -0
- package/dist/persistence/sqlite/sqlite-source-registry.js +132 -0
- package/dist/persistence/sqlite/sqlite-source-registry.js.map +1 -0
- package/dist/persistence/sqlite/sqlite-unit-of-work.d.ts +8 -0
- package/dist/persistence/sqlite/sqlite-unit-of-work.js +41 -0
- package/dist/persistence/sqlite/sqlite-unit-of-work.js.map +1 -0
- package/dist/persistence/sqlite/types.d.ts +24 -0
- package/dist/persistence/sqlite/types.js +28 -0
- package/dist/persistence/sqlite/types.js.map +1 -0
- package/dist/persistence/unit-of-work.d.ts +6 -0
- package/dist/persistence/unit-of-work.js +15 -0
- package/dist/persistence/unit-of-work.js.map +1 -0
- package/dist/proposal/accepted-claim-appender.d.ts +7 -0
- package/dist/proposal/accepted-claim-appender.js +16 -0
- package/dist/proposal/accepted-claim-appender.js.map +1 -0
- package/dist/proposal/in-memory-proposal-queue.d.ts +21 -0
- package/dist/proposal/in-memory-proposal-queue.js +218 -0
- package/dist/proposal/in-memory-proposal-queue.js.map +1 -0
- package/dist/proposal/policy-aware-proposal-queue.d.ts +23 -0
- package/dist/proposal/policy-aware-proposal-queue.js +162 -0
- package/dist/proposal/policy-aware-proposal-queue.js.map +1 -0
- package/dist/proposal/proposal-policy.d.ts +37 -0
- package/dist/proposal/proposal-policy.js +72 -0
- package/dist/proposal/proposal-policy.js.map +1 -0
- package/dist/proposal/proposal-queue.d.ts +13 -0
- package/dist/proposal/proposal-queue.js +15 -0
- package/dist/proposal/proposal-queue.js.map +1 -0
- package/dist/proposal/source-aware-claim-appender.d.ts +13 -0
- package/dist/proposal/source-aware-claim-appender.js +47 -0
- package/dist/proposal/source-aware-claim-appender.js.map +1 -0
- package/dist/proposal/sqlite-proposal-queue.d.ts +26 -0
- package/dist/proposal/sqlite-proposal-queue.js +282 -0
- package/dist/proposal/sqlite-proposal-queue.js.map +1 -0
- package/dist/resolution/resolve-claims.d.ts +4 -0
- package/dist/resolution/resolve-claims.js +101 -0
- package/dist/resolution/resolve-claims.js.map +1 -0
- package/dist/resolution/trust-profile.d.ts +12 -0
- package/dist/resolution/trust-profile.js +23 -0
- package/dist/resolution/trust-profile.js.map +1 -0
- package/dist/resolution/types.d.ts +15 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/sdk/create-backend-integrated-life-api-for-test.d.ts +23 -0
- package/dist/sdk/create-backend-integrated-life-api-for-test.js +240 -0
- package/dist/sdk/create-backend-integrated-life-api-for-test.js.map +1 -0
- package/dist/sdk/create-life-api.d.ts +55 -0
- package/dist/sdk/create-life-api.js +251 -0
- package/dist/sdk/create-life-api.js.map +1 -0
- package/dist/sdk/create-sqlite-life-api.d.ts +33 -0
- package/dist/sdk/create-sqlite-life-api.js +654 -0
- package/dist/sdk/create-sqlite-life-api.js.map +1 -0
- package/dist/sdk/life-api.d.ts +27 -0
- package/dist/sdk/life-api.js +17 -0
- package/dist/sdk/life-api.js.map +1 -0
- package/dist/sdk/validation.d.ts +8 -0
- package/dist/sdk/validation.js +216 -0
- package/dist/sdk/validation.js.map +1 -0
- package/dist/source/in-memory-source-registry.d.ts +15 -0
- package/dist/source/in-memory-source-registry.js +104 -0
- package/dist/source/in-memory-source-registry.js.map +1 -0
- package/dist/source/source-aware-fact-store.d.ts +19 -0
- package/dist/source/source-aware-fact-store.js +40 -0
- package/dist/source/source-aware-fact-store.js.map +1 -0
- package/dist/source/source-kind-predicate-policy.d.ts +4 -0
- package/dist/source/source-kind-predicate-policy.js +62 -0
- package/dist/source/source-kind-predicate-policy.js.map +1 -0
- package/dist/source/source-registry.d.ts +11 -0
- package/dist/source/source-registry.js +12 -0
- package/dist/source/source-registry.js.map +1 -0
- package/dist/store/in-memory-fact-store.d.ts +25 -0
- package/dist/store/in-memory-fact-store.js +192 -0
- package/dist/store/in-memory-fact-store.js.map +1 -0
- package/dist/surface/context-query.d.ts +21 -0
- package/dist/surface/context-query.js +113 -0
- package/dist/surface/context-query.js.map +1 -0
- package/dist/surface/evidence-backed-context-query.d.ts +62 -0
- package/dist/surface/evidence-backed-context-query.js +240 -0
- package/dist/surface/evidence-backed-context-query.js.map +1 -0
- package/dist/types/access-context.d.ts +25 -0
- package/dist/types/access-context.js +6 -0
- package/dist/types/access-context.js.map +1 -0
- package/dist/types/claim.d.ts +48 -0
- package/dist/types/claim.js +5 -0
- package/dist/types/claim.js.map +1 -0
- package/dist/types/consent.d.ts +41 -0
- package/dist/types/consent.js +3 -0
- package/dist/types/consent.js.map +1 -0
- package/dist/types/crypto-boundary.d.ts +12 -0
- package/dist/types/crypto-boundary.js +15 -0
- package/dist/types/crypto-boundary.js.map +1 -0
- package/dist/types/evidence.d.ts +31 -0
- package/dist/types/evidence.js +8 -0
- package/dist/types/evidence.js.map +1 -0
- package/dist/types/fact-store.d.ts +24 -0
- package/dist/types/fact-store.js +12 -0
- package/dist/types/fact-store.js.map +1 -0
- package/dist/types/ids.d.ts +36 -0
- package/dist/types/ids.js +11 -0
- package/dist/types/ids.js.map +1 -0
- package/dist/types/proposal.d.ts +38 -0
- package/dist/types/proposal.js +7 -0
- package/dist/types/proposal.js.map +1 -0
- package/dist/types/source.d.ts +33 -0
- package/dist/types/source.js +6 -0
- package/dist/types/source.js.map +1 -0
- package/dist/types/trust.d.ts +24 -0
- package/dist/types/trust.js +5 -0
- package/dist/types/trust.js.map +1 -0
- package/dist/utilities/deep-freeze.d.ts +1 -0
- package/dist/utilities/deep-freeze.js +17 -0
- package/dist/utilities/deep-freeze.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-sqlite-life-api.js","sourceRoot":"","sources":["../../src/sdk/create-sqlite-life-api.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,kDAAkD;AAClD,yFAAyF;AACzF,2FAA2F;AAC3F,6FAA6F;AAC7F,iFAAiF;AACjF,EAAE;AACF,qFAAqF;AACrF,6DAA6D;AAC7D,yFAAyF;AACzF,WAAW;AACX,0FAA0F;AAC1F,WAAW;AACX,qFAAqF;AACrF,yBAAyB;AACzB,0FAA0F;AAC1F,cAAc;AACd,wFAAwF;AACxF,uCAAuC;AACvC,sFAAsF;AACtF,wCAAwC;AACxC,uFAAuF;AACvF,sFAAsF;AACtF,4FAA4F;AAC5F,yDAAyD;AACzD,2FAA2F;AAC3F,wFAAwF;AACxF,2FAA2F;AAC3F,kEAAkE;AAClE,iFAAiF;AACjF,2FAA2F;AAC3F,+CAA+C;AAC/C,2FAA2F;AAC3F,+EAA+E;AAC/E,2FAA2F;AAC3F,2EAA2E;AAC3E,uFAAuF;AACvF,+EAA+E;AAC/E,+EAA+E;AAC/E,2FAA2F;AAC3F,2FAA2F;AAC3F,iDAAiD;AACjD,wFAAwF;AACxF,gFAAgF;AAChF,uFAAuF;AACvF,8EAA8E;AAC9E,mFAAmF;AACnF,8EAA8E;AAC9E,uEAAuE;AACvE,6FAA6F;AAC7F,uFAAuF;AACvF,iFAAiF;AACjF,qFAAqF;AACrF,2FAA2F;AAC3F,qFAAqF;AACrF,kEAAkE;AAClE,sFAAsF;AACtF,qFAAqF;AACrF,uEAAuE;AACvE,EAAE;AACF,sFAAsF;AACtF,0FAA0F;AAC1F,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,wEAAwE;AACxE,2EAA2E;AAC3E,0EAA0E;AAC1E,4EAA4E;AAC5E,gGAAgG;AAChG,sFAAsF;AACtF,wFAAwF;AACxF,yFAAyF;AACzF,0FAA0F;AAC1F,4EAA4E;AAC5E,4FAA4F;AAC5F,kFAAkF;AAClF,mFAAmF;AACnF,iFAAiF;AACjF,4DAA4D;AAC5D,gFAAgF;AAChF,wEAAwE;AACxE,EAAE;AACF,kFAAkF;AAClF,6FAA6F;AAC7F,0FAA0F;AAC1F,mEAAmE;AACnE,0FAA0F;AAC1F,2DAA2D;AAC3D,wFAAwF;AACxF,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,2FAA2F;AAC3F,wFAAwF;AACxF,4FAA4F;AAC5F,6EAA6E;AAa7E,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAa,8CAA8C,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAoB,kCAAkC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAA4B,sBAAsB,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAa,yCAAyC,CAAC;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAU,6CAA6C,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAuB,gCAAgC,CAAC;AACnF,OAAO,EAAE,2BAA2B,EAAE,MAAY,uCAAuC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAW,gCAAgC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAe,4CAA4C,CAAC;AA+E/F,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,MAA+B;IAE/B,gCAAgC;IAChC,IAAI,MAAM,IAAI,IAAI,IAAK,MAAoC,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAChF,2FAA2F;QAC3F,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;gBACrB,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,8BAA8B;gBACpD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;gBAChF,OAAO,EAAE,+CAA+C;gBACxD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;YACH,UAAU,CACP,MAAwC,CAAC,OAAO,EACjD,wBAAwB,EAAE,CAAC,EAC3B,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;gBACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,gCAAgC,EAAE,CAClE,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,4EAA4E;YAC5E,+EAA+E;YAC/E,6EAA6E;YAC7E,qEAAqE,CACtE,EACD,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAC3C,CAAC;IACJ,CAAC;IACD,2EAA2E;IAC3E,MAAM,MAAM,GAAuB,MAAM,CAAC,MAAM,CAAC;IACjD,MAAM,eAAe,GAAgC,MAAM,CAAC,OAAO,CAAC;IACpE,gCAAgC;IAChC,IAAK,MAAuC,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;QACpE,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,kDAAkD;YAC3D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,mCAAmC,EAAE,CAAC,CAAC;QACxE,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,+EAA+E;YAC/E,kFAAkF;YAClF,+EAA+E,CAChF,EACD,EAAE,IAAI,EAAE,mCAAmC,EAAE,CAC9C,CAAC;IACJ,CAAC;IACD,+BAA+B;IAC/B,IAAK,MAAsC,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;QAClE,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,iDAAiD;YAC1D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,kCAAkC,EAAE,CAAC,CAAC;QACvE,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,8EAA8E;YAC9E,kFAAkF;YAClF,iFAAiF;YACjF,0CAA0C,CAC3C,EACD,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAC7C,CAAC;IACJ,CAAC;IACD,yDAAyD;IACzD,IAAK,MAA2B,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,sCAAsC;YAC/C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,oCAAoC,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,gFAAgF;YAChF,+EAA+E;YAC/E,gFAAgF;YAChF,mDAAmD,CACpD,EACD,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAC/C,CAAC;IACJ,CAAC;IACD,4FAA4F;IAC5F,oFAAoF;IACpF,4EAA4E;IAC5E,uFAAuF;IACvF,MAAM,cAAc,GAAK,MAAM,CAAC,WAAW,IAAM,IAAI,CAAC;IACtD,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;IAEtD,IAAI,cAAc,IAAI,gBAAgB,EAAE,CAAC;QACvC,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,6FAA6F;YACtG,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,uEAAuE;SACxE,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,oDAAoD,EAAE,CAAC,CAAC;QACzF,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,sDAAsD;YACtD,gFAAgF;YAChF,+EAA+E;YAC/E,0EAA0E;YAC1E,0DAA0D,CAC3D,EACD,EAAE,IAAI,EAAE,oDAAoD,EAAE,CAC/D,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,0DAA0D;IAC1D,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,MAAM,CAAC,WAAY,CAAC;QAC/B,IACE,OAAO,EAAE,KAAK,QAAQ;YACtB,OAAQ,EAAkC,CAAC,aAAa,KAAK,UAAU;YACvE,OAAQ,EAA2B,CAAC,MAAM,KAAK,UAAU,EACzD,CAAC;YACD,OAAO,CAAC,MAAM,EAAE;gBACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;gBACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;gBAChF,OAAO,EAAE,kEAAkE;gBAC3E,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,uEAAuE;aACxE,CAAC,CAAC;YACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;gBACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,6CAA6C,EAAE,CAAC,CAAC;YAClF,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,iFAAiF;gBACjF,kFAAkF;gBAClF,+EAA+E,CAChF,EACD,EAAE,IAAI,EAAE,6CAA6C,EAAE,CACxD,CAAC;QACJ,CAAC;QACD,qEAAqE;IACvE,CAAC;SAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7B,+EAA+E;QAC/E,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gCAAgC;YACtD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,0EAA0E;YACnF,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,gDAAgD,EAAE,CAAC,CAAC;QACrF,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,mFAAmF;YACnF,4EAA4E;YAC5E,iFAAiF;YACjF,kFAAkF,CACnF,EACD,EAAE,IAAI,EAAE,gDAAgD,EAAE,CAC3D,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,mFAAmF;QACnF,uFAAuF;QACvF,MAAM,MAAM,GAAG,MAAM,CAAC,aAAc,CAAC;QACrC,IACE,CAAC,CAAC,MAAM,CAAC,QAAQ,YAAY,UAAU,CAAC;YACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAC3B,CAAC;YACD,OAAO,CAAC,MAAM,EAAE;gBACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gCAAgC;gBACtD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;gBAChF,OAAO,EAAE,oEAAoE;gBAC7E,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,kFAAkF;aACnF,CAAC,CAAC;YACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;gBACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,iDAAiD,EAAE,CAAC,CAAC;YACtF,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,+EAA+E;gBAC/E,4EAA4E;gBAC5E,uEAAuE,CACxE,EACD,EAAE,IAAI,EAAE,iDAAiD,EAAE,CAC5D,CAAC;QACJ,CAAC;QACD,iGAAiG;QACjG,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO,CAAC,MAAM,EAAE;gBACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gCAAgC;gBACtD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;gBAChF,OAAO,EAAE,iEAAiE;gBAC1E,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,oEAAoE;aACrE,CAAC,CAAC;YACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;gBACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,kDAAkD,EAAE,CAAC,CAAC;YACvF,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,kFAAkF;gBAClF,gFAAgF;gBAChF,mFAAmF,CACpF,EACD,EAAE,IAAI,EAAE,kDAAkD,EAAE,CAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,qFAAqF;IACrF,qFAAqF;IACrF,2DAA2D;IAC3D,uFAAuF;IACvF,+EAA+E;IAC/E,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;QACzB,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,EAAE;iBACb,OAAO,CAAC,+DAA+D,CAAC;iBACxE,GAAG,EAAmC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,SAAS,GACb,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,sBAAsB,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC1E,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,0BAA0B;YAChD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,mDAAmD;YAC5D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,qCAAqC,EAAE,CAAC,CAAC;QAC1E,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,iEAAiE;YACjE,qBAAqB,KAAK,8BAA8B;YACxD,qBAAqB,sBAAsB,IAAI;YAC/C,+EAA+E,CAChF,EACD,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CACzF,CAAC;IACJ,CAAC;IACD,0EAA0E;IAC1E,uFAAuF;IACvF,4EAA4E;IAC5E,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,0BAA0B;YAChD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,iEAAiE;YAC1E,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,qCAAqC,EAAE,CAAC,CAAC;QAC1E,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,oEAAoE;YACpE,qBAAqB,sBAAsB,sCAAsC;YACjF,8BAA8B,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACpE,+EAA+E,CAChF,EACD;YACE,IAAI,EAAE,qCAAqC;YAC3C,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC;YACrC,QAAQ,EAAE,sBAAsB;YAChC,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC;SACtC,CACF,CAAC;IACJ,CAAC;IACD,mEAAmE;IACnE,qDAAqD;IACrD,IAAK,MAAyC,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;QACxE,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,oDAAoD;YAC7D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,oDAAoD,EAAE,CAAC,CAAC;QACzF,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,uFAAuF;YACvF,sFAAsF;YACtF,yFAAyF;YACzF,0EAA0E,CAC3E,EACD,EAAE,IAAI,EAAE,oDAAoD,EAAE,CAC/D,CAAC;IACJ,CAAC;IACD,qFAAqF;IACrF,2CAA2C;IAC3C,IACG,MAAM,CAAC,gBAAoD,CAAC,iBAAiB;QAC9E,4BAA4B,EAC5B,CAAC;QACD,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,mEAAmE;YAC5E,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,0CAA0C,EAAE,CAAC,CAAC;QAC/E,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,yFAAyF;YACzF,6FAA6F;YAC7F,kFAAkF;YAClF,qFAAqF,CACtF,EACD,EAAE,IAAI,EAAE,0CAA0C,EAAE,CACrD,CAAC;IACJ,CAAC;IACD,4DAA4D;IAC5D,4CAA4C;IAC5C,IAAK,MAAiC,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QACxD,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,4CAA4C;YACrD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,2CAA2C,EAAE,CAAC,CAAC;QAChF,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,8EAA8E;YAC9E,6EAA6E;YAC7E,yEAAyE;YACzE,qFAAqF,CACtF,EACD,EAAE,IAAI,EAAE,2CAA2C,EAAE,CACtD,CAAC;IACJ,CAAC;IACD,sFAAsF;IACtF,0CAA0C;IAC1C,IACG,MAAM,CAAC,QAA4C,CAAC,iBAAiB;QACtE,mBAAmB,EACnB,CAAC;QACD,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,2DAA2D;YACpE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAC9E,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,gFAAgF;YAChF,oFAAoF;YACpF,sFAAsF;YACtF,6EAA6E,CAC9E,EACD,EAAE,IAAI,EAAE,yCAAyC,EAAE,CACpD,CAAC;IACJ,CAAC;IACD,mFAAmF;IACnF,EAAE;IACF,iDAAiD;IACjD,uEAAuE;IACvE,+CAA+C;IAC/C,oDAAoD;IACpD,mDAAmD;IACnD,EAAE;IACF,+FAA+F;IAC/F,qFAAqF;IACrF,iGAAiG;IACjG,8FAA8F;IAC9F,sFAAsF;IACtF,IAAI,mBAAgC,CAAC;IACrC,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/B,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B;YACjD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,yDAAyD;YAClE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,uEAAuE;SACxE,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,6EAA6E;QAC7E,MAAM,EAAE,GAAG,MAAM,CAAC,aAAc,CAAC;QACjC,mBAAmB,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,MAAM,GAAa,IAAI,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IACvE,MAAM,eAAe,GAAI,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,eAAe,GAAI,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IACzE,MAAM,eAAe,GAAI,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,IAAI,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACpF,MAAM,SAAS,GAAU,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAW,IAAI,wBAAwB,CAAC,gBAAgB,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IAEpG,uFAAuF;IACvF,wFAAwF;IACxF,6FAA6F;IAC7F,0FAA0F;IAC1F,MAAM,wBAAwB,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE/D,qFAAqF;IACrF,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAE1C,iEAAiE;IACjE,2FAA2F;IAC3F,+CAA+C;IAC/C,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAC1C,MAAM,CAAC,EAAE,EACT,MAAM,EACN,QAAQ,EACR,aAAa,EACb,eAAe,CAChB,CAAC;IAEF,4DAA4D;IAC5D,qFAAqF;IACrF,IACG,KAAoD,CAAC,iBAAiB;QACvE,wBAAwB,EACxB,CAAC;QACD,OAAO,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACxD,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kCAAkC;YAChF,OAAO,EAAE,gEAAgE;YACzE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,EACrD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kCAAkC;YACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,2DAA2D,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,6EAA6E;YAC7E,sEAAsE;YACtE,oFAAoF;YACpF,iDAAiD,CAClD,EACD,EAAE,IAAI,EAAE,2DAA2D,EAAE,CACtE,CAAC;IACJ,CAAC;IAED,uFAAuF;IACvF,sGAAsG;IACtG,6FAA6F;IAC7F,mFAAmF;IACnF,MAAM,cAAc,GAClB,MAAM,CAAC,cAAc;QACrB,CAAC,MAAM,CAAC,yBAAyB,IAAI,IAAI;YACvC,CAAC,CAAC,IAAI,4BAA4B,CAAC,MAAM,CAAC,yBAAyB,CAAC;YACpE,CAAC,CAAC,SAAS,CAAC,CAAC;IACjB,MAAM,cAAc,GAAG,cAAc,KAAK,SAAS;QACjD,CAAC,CAAC,IAAI,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,wBAAwB,CAAC;QAChG,CAAC,CAAC,KAAK,CAAC;IAEV,qDAAqD;IACrD,0EAA0E;IAC1E,EAAE;IACF,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,KAAK,GAAU,MAAM,CAAC,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAE7E,8CAA8C;IAC9C,8EAA8E;IAC9E,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,IAAI,iCAAiC,CACpD,gBAAgB,EAAW,YAAY;IACvC,aAAa,EAAc,gBAAgB;IAC3C,MAAM,CAAC,QAAQ,EAAY,WAAW;IACtC,eAAe,EAAY,iBAAiB;IAC5C,MAAM,CAAC,gBAAgB,EAAI,mBAAmB;IAC9C,gBAAgB,CAAC,KAAK,EAAE,CACzB,CAAC;IAEF,uCAAuC;IACvC,sFAAsF;IACtF,sEAAsE;IACtE,MAAM,YAAY,GAAG,IAAI,0BAA0B,CACjD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB;IAC5C,eAAe,EAAU,iBAAiB;IAC1C,gBAAgB,EAAS,YAAY;IACrC,SAAS,CACV,CAAC;IAEF,0DAA0D;IAC1D,uFAAuF;IACvF,0FAA0F;IAC1F,yEAAyE;IACzE,qFAAqF;IACrF,wDAAwD;IACxD,MAAM,MAAM,GAAwB,IAAI,mBAAmB,EAAE,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,WAAW,CAC5B,QAAQ,EAAqB,oCAAoC;IACjE,YAAY,EAAiB,6BAA6B;IAC1D,cAAc,EAAe,+EAA+E;IAC5G,MAAM,CAAC,gBAAgB,EAAM,mBAAmB;IAChD,eAAe,EAAc,iBAAiB;IAC9C,aAAa,EAAgB,gBAAgB;IAC7C,MAAM,EAAuB,wEAAwE;IACrG,gBAAgB,EAAa,YAAY;IACzC,MAAM,CAAC,QAAQ,EAAc,wDAAwD;IACrF,wBAAwB,CACzB,CAAC;IAEF,gFAAgF;IAChF,kFAAkF;IAClF,+EAA+E;IAC/E,MAAM,MAAM,GAAG,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,IAAI,GAAK,IAAI,6BAA6B,CAAC;QAC/C,OAAO,EAAS,MAAM,CAAC,WAAW;QAClC,MAAM;QACN,MAAM,EAAmB,8CAA8C;QACvE,KAAK;QACL,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,aAAa,EAAG,MAAM,CAAC,aAAa;QACpC,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,IAAI;YACrC,CAAC,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EAAE;YACvD,CAAC,CAAC,EAAE,CAAC;QACP,oHAAoH;QACpH,sDAAsD;QACtD,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI;YACjC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE;YAC3F,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IAEH,uEAAuE;IACvE,2FAA2F;IAC3F,oFAAoF;IACpF,yFAAyF;IACzF,6FAA6F;IAC7F,yCAAyC;IACzC,MAAM,eAAe,GAAG,CAAC,SAAwB,EAA2B,EAAE;QAC5E,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,IAAI,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3I,CAAC,CAAC;IAEF,iEAAiE;IACjE,EAAE;IACF,6DAA6D;IAC7D,qFAAqF;IACrF,uFAAuF;IACvF,kFAAkF;IAClF,qFAAqF;IACrF,qEAAqE;IACrE,mFAAmF;IACnF,6DAA6D;IAC7D,gFAAgF;IAChF,kFAAkF;IAClF,MAAM,WAAW,GAAG,KAAK,IAAgC,EAAE;QACzD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAsB,EAAE,CAAC;QAEpC,uFAAuF;QACvF,mDAAmD;QACnD,MAAM,QAAQ,GAAG,CACf,IAAY,EACZ,MAAc,EACd,QAAgB,EAChB,EAAc,EACG,EAAE;YACnB,IAAI,CAAC;gBACH,EAAE,EAAE,CAAC;gBACL,UAAU,CAAC,eAAe,EAAE,sBAAsB,EAAE,CAAC,EACnD,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9C,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,OAAO,CAAC,MAAM,EAAE;oBACd,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,kCAAkC;oBACxC,SAAS,EAAE,qBAAqB;oBAChC,SAAS,EAAE,aAAa;oBACxB,OAAO,EAAE,uBAAuB,GAAG,IAAI;oBACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,8CAA8C;oBAC9C,4DAA4D;oBAC5D,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,CAAC,CAAC;gBACH,UAAU,CAAC,eAAe,EAAE,sBAAsB,EAAE,CAAC,EACnD,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7F,OAAO;oBACL,IAAI;oBACJ,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,QAAQ;oBACd,4DAA4D;oBAC5D,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEF,+DAA+D;QAC/D,8DAA8D;QAC9D,KAAK,CAAC,IAAI,CAAC,QAAQ,CACjB,iBAAiB,EACjB,oCAAoC,EACpC,wCAAwC,EACxC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAC/C,CAAC,CAAC;QAEH,oEAAoE;QACpE,KAAK,CAAC,IAAI,CAAC,QAAQ,CACjB,gBAAgB,EAChB,mCAAmC,EACnC,uCAAuC,EACvC,GAAG,EAAE;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE;iBAClB,OAAO,CAAC,+DAA+D,CAAC;iBACxE,GAAG,EAAmC,CAAC;YAC1C,MAAM,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,sBAAsB,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CACF,CAAC,CAAC;QAEH,gFAAgF;QAChF,uEAAuE;QACvE,KAAK,CAAC,IAAI,CAAC,QAAQ,CACjB,mBAAmB,EACnB,sCAAsC,EACtC,0CAA0C,EAC1C,GAAG,EAAE;YACH,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;gBACrB,2EAA2E;gBAC3E,4DAA4D;gBAC5D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CACF,CAAC,CAAC;QAEH,oFAAoF;QACpF,kFAAkF;QAClF,KAAK,CAAC,IAAI,CAAC,QAAQ,CACjB,qBAAqB,EACrB,wCAAwC,EACxC,4CAA4C,EAC5C,GAAG,EAAE;YACH,IAAI,mBAAmB,IAAI,IAAI,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CACF,CAAC,CAAC;QAEH,6EAA6E;QAC7E,2EAA2E;QAC3E,KAAK,CAAC,IAAI,CAAC,QAAQ,CACjB,sBAAsB,EACtB,yCAAyC,EACzC,6CAA6C,EAC7C,GAAG,EAAE;YACH,IAAK,MAAoC,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CACF,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,QAAQ,CACjB,yBAAyB,EACzB,4CAA4C,EAC5C,gDAAgD,EAChD,GAAG,EAAE;YACH,IAAK,MAAuC,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CACF,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,QAAQ,CACjB,wBAAwB,EACxB,2CAA2C,EAC3C,+CAA+C,EAC/C,GAAG,EAAE;YACH,IAAK,MAAsC,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CACF,CAAC,CAAC;QAEH,8CAA8C;QAC9C,4DAA4D;QAC5D,IAAI,MAAM,GAAiB,IAAI,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAAC,MAAM,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAAC,MAAM,GAAG,UAAU,CAAC;YAAC,CAAC;QAC1D,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AccessContext, AgentConsentContext, OwnerContext, SystemProjectionContext, TestContext } from "../types/access-context.js";
|
|
2
|
+
import type { ConsentGrant } from "../types/consent.js";
|
|
3
|
+
import type { EvidenceId, PersonId, ProposalId } from "../types/ids.js";
|
|
4
|
+
import type { ErasureStatus } from "../erasure/tombstone.js";
|
|
5
|
+
import type { EvidenceFilter, EvidenceRef } from "../types/evidence.js";
|
|
6
|
+
import type { Source, SourceFilter, SourceInput } from "../types/source.js";
|
|
7
|
+
import type { AcceptOptions, Proposal, ProposalDecider, ProposalFilter, ProposalInput } from "../types/proposal.js";
|
|
8
|
+
import type { QueryContractsInput, ContextQueryResult } from "../surface/evidence-backed-context-query.js";
|
|
9
|
+
import type { EvidenceClaimCreator, CreateClaimWithNewEvidenceInput, CreateClaimFromExistingEvidenceInput, EvidenceBackedClaimResult, EvidenceBackedClaimWithNewEvidenceResult } from "../evidence/evidence-backed-claim-creator.js";
|
|
10
|
+
export type SdkAdminContext = OwnerContext | SystemProjectionContext | TestContext;
|
|
11
|
+
export interface LifeApi {
|
|
12
|
+
queryContracts(ctx: AccessContext, input: QueryContractsInput): Promise<ContextQueryResult>;
|
|
13
|
+
createClaimWithNewEvidence(ctx: EvidenceClaimCreator, input: CreateClaimWithNewEvidenceInput): Promise<EvidenceBackedClaimWithNewEvidenceResult>;
|
|
14
|
+
createClaimFromExistingEvidence(ctx: EvidenceClaimCreator, input: CreateClaimFromExistingEvidenceInput): Promise<EvidenceBackedClaimResult>;
|
|
15
|
+
createProposal(ctx: AgentConsentContext, input: ProposalInput): Promise<Proposal>;
|
|
16
|
+
acceptProposal(ctx: ProposalDecider, proposalId: ProposalId, options: AcceptOptions): Promise<Proposal>;
|
|
17
|
+
rejectProposal(ctx: ProposalDecider, proposalId: ProposalId, reason: string): Promise<Proposal>;
|
|
18
|
+
getProposal(ctx: AccessContext, proposalId: ProposalId): Proposal | undefined;
|
|
19
|
+
listProposals(ctx: AccessContext, filter?: ProposalFilter): Proposal[];
|
|
20
|
+
getEvidenceRef(ctx: AccessContext, evidenceId: EvidenceId): EvidenceRef | undefined;
|
|
21
|
+
listEvidenceRefs(ctx: AccessContext, filter?: EvidenceFilter): EvidenceRef[];
|
|
22
|
+
createSourceAdmin(ctx: SdkAdminContext, input: SourceInput): Source;
|
|
23
|
+
listSources(ctx: AccessContext, filter?: SourceFilter): Source[];
|
|
24
|
+
createGrantAdmin(ctx: SdkAdminContext, grant: ConsentGrant): ConsentGrant;
|
|
25
|
+
requestErasure(ctx: OwnerContext, subject: PersonId): Promise<void>;
|
|
26
|
+
getErasureStatus(ctx: OwnerContext, subject: PersonId): Promise<ErasureStatus | undefined>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// LifeApi public interface — Slice-13 SDK boundary.
|
|
2
|
+
//
|
|
3
|
+
// SDK_BOUNDARY_EXISTS_001: this interface is the ONLY approved entry point for
|
|
4
|
+
// external callers. Internal services are composed behind this surface.
|
|
5
|
+
// SDK_EXPORTS_ONLY_SAFE_SURFACE_001: only high-level operations are exposed.
|
|
6
|
+
// SDK_DOES_NOT_EXPORT_RAW_FACTSTORE_001: FactStore is not a method or property.
|
|
7
|
+
// SDK_DOES_NOT_EXPORT_RAW_DOCUMENT_BYTES_001: getDocument() is absent; only EvidenceRef metadata.
|
|
8
|
+
// SDK_DOES_NOT_EXPORT_RAW_CRYPTO_001: CryptoBoundary is not accessible via this interface.
|
|
9
|
+
// SDK_DOES_NOT_EXPORT_SOURCE_MUTATION_DIRECTLY_001: createSourceAdmin wraps SourceRegistry.
|
|
10
|
+
// SDK_CONTEXT_QUERY_USES_SAFE_SURFACE_001: queryContracts delegates to EvidenceBackedContextQueryService.
|
|
11
|
+
// SDK_PROPOSAL_FLOW_USES_QUEUE_001: createProposal/acceptProposal/rejectProposal delegate to ProposalQueue.
|
|
12
|
+
// SDK_EVIDENCE_CLAIM_USES_CREATOR_001: createClaimWithNewEvidence delegates to EvidenceBackedClaimCreator.
|
|
13
|
+
// SDK_PRIVILEGED_MUTATION_GUARDED_001: createSourceAdmin/createGrantAdmin require SdkAdminContext.
|
|
14
|
+
// SDK_AGENT_CANNOT_REGISTER_SOURCE_001: AgentConsentContext excluded from createSourceAdmin by type + runtime.
|
|
15
|
+
// SDK_AGENT_CANNOT_REGISTER_GRANT_001: AgentConsentContext excluded from createGrantAdmin by type + runtime.
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=life-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"life-api.js","sourceRoot":"","sources":["../../src/sdk/life-api.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,6EAA6E;AAC7E,gFAAgF;AAChF,kGAAkG;AAClG,2FAA2F;AAC3F,4FAA4F;AAC5F,0GAA0G;AAC1G,4GAA4G;AAC5G,2GAA2G;AAC3G,mGAAmG;AACnG,+GAA+G;AAC/G,6GAA6G"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function validateCreateGrantAdminInput(grant: unknown): void;
|
|
2
|
+
export declare function validateCreateSourceAdminInput(input: unknown): void;
|
|
3
|
+
export declare function validateCreateClaimWithNewEvidenceInput(input: unknown): void;
|
|
4
|
+
export declare function validateCreateClaimFromExistingEvidenceInput(input: unknown): void;
|
|
5
|
+
export declare function validateCreateProposalInput(input: unknown): void;
|
|
6
|
+
export declare function validateAcceptProposalInput(proposalId: unknown, options: unknown): void;
|
|
7
|
+
export declare function validateRejectProposalInput(proposalId: unknown, reason: unknown): void;
|
|
8
|
+
export declare function validateQueryContractsInput(input: unknown): void;
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
// Public SDK runtime input validation — Slice-16.
|
|
2
|
+
//
|
|
3
|
+
// SDK_RUNTIME_VALIDATION_EXISTS_001: every public mutating SDK method validates its
|
|
4
|
+
// input before delegating to internal services.
|
|
5
|
+
// SDK_JS_CALLER_INVALID_INPUT_DENIED_001: JS callers that bypass TypeScript (via casts)
|
|
6
|
+
// are rejected at runtime with stable error codes before any mutation.
|
|
7
|
+
// SDK_VALIDATION_FAILS_BEFORE_MUTATION_001: validation throws synchronously before any
|
|
8
|
+
// store, registry, or document mutation — no partial state from invalid input.
|
|
9
|
+
// SDK_VALIDATION_ERROR_CODES_STABLE_001: error code strings are stable and versioned.
|
|
10
|
+
// SDK_RUNTIME_VALIDATION_NO_PAYLOAD_LOGGING_001: payload values are never included in
|
|
11
|
+
// validation error messages — only field names and structural descriptions.
|
|
12
|
+
//
|
|
13
|
+
// Architecture constraints — this module MUST NOT import:
|
|
14
|
+
// - concrete stores (InMemoryFactStore, SQLiteFactStore, SourceAwareFactStore)
|
|
15
|
+
// - crypto primitives (AesGcmCryptoBoundary, StaticKeyProvider)
|
|
16
|
+
// - RawDocumentStore implementations
|
|
17
|
+
// - GrantRegistry
|
|
18
|
+
// - SourceRegistry implementations
|
|
19
|
+
// Validation is purely structural — it checks shapes, not registry state.
|
|
20
|
+
// ─── Valid value sets ─────────────────────────────────────────────────────────
|
|
21
|
+
const VALID_SOURCE_KINDS = new Set([
|
|
22
|
+
"user_manual",
|
|
23
|
+
"system_derived",
|
|
24
|
+
"document_upload",
|
|
25
|
+
"imported_connector",
|
|
26
|
+
"agent_proposal",
|
|
27
|
+
]);
|
|
28
|
+
const VALID_PURPOSE_TAGS = new Set([
|
|
29
|
+
"obligation_review",
|
|
30
|
+
"cancellation_assist",
|
|
31
|
+
"budget_analysis",
|
|
32
|
+
"b2b_verification",
|
|
33
|
+
"proposal_submission",
|
|
34
|
+
"erasure_request",
|
|
35
|
+
"emergency_access",
|
|
36
|
+
// Platform-05 — certified first-party agent purposes (PURPOSE_TAG_VOCABULARY_EXTENDED_PLATFORM05_001).
|
|
37
|
+
"diagnosis",
|
|
38
|
+
"treatment",
|
|
39
|
+
"emergency",
|
|
40
|
+
"tax",
|
|
41
|
+
"credit_check",
|
|
42
|
+
"insurance_claim",
|
|
43
|
+
"account_overview",
|
|
44
|
+
"notary",
|
|
45
|
+
"contract_review",
|
|
46
|
+
"evidence_preservation",
|
|
47
|
+
"court_filing",
|
|
48
|
+
]);
|
|
49
|
+
const VALID_CAPABILITIES = new Set(["query", "propose"]);
|
|
50
|
+
// ─── Primitive helpers ────────────────────────────────────────────────────────
|
|
51
|
+
function isObject(val) {
|
|
52
|
+
return typeof val === "object" && val !== null && !Array.isArray(val);
|
|
53
|
+
}
|
|
54
|
+
function assertNonEmptyString(val, code, field) {
|
|
55
|
+
if (typeof val !== "string" || val.length === 0) {
|
|
56
|
+
throw new Error(`${code}: ${field} must be a non-empty string`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function assertObject(val, code, field) {
|
|
60
|
+
if (!isObject(val)) {
|
|
61
|
+
throw new Error(`${code}: ${field} must be a plain object`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function assertArray(val, code, field) {
|
|
65
|
+
if (!Array.isArray(val)) {
|
|
66
|
+
throw new Error(`${code}: ${field} must be an array`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// ─── Claim input validation (shared across evidence-backed methods) ───────────
|
|
70
|
+
function assertClaimInput(claim, methodCode) {
|
|
71
|
+
assertObject(claim, methodCode, "claim");
|
|
72
|
+
const c = claim;
|
|
73
|
+
assertNonEmptyString(c["subject"], `${methodCode}_MISSING_SUBJECT`, "claim.subject");
|
|
74
|
+
assertNonEmptyString(c["predicate"], `${methodCode}_MISSING_PREDICATE`, "claim.predicate");
|
|
75
|
+
assertNonEmptyString(c["validFrom"], `${methodCode}_MISSING_VALID_FROM`, "claim.validFrom");
|
|
76
|
+
if (c["payload"] === undefined || c["payload"] === null) {
|
|
77
|
+
throw new Error(`${methodCode}_MISSING_PAYLOAD: claim.payload must be present`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// ─── Grant validation ─────────────────────────────────────────────────────────
|
|
81
|
+
// SDK_GRANT_ADMIN_INPUT_VALIDATED_001
|
|
82
|
+
export function validateCreateGrantAdminInput(grant) {
|
|
83
|
+
assertObject(grant, "SDK_GRANT_VALIDATION_INVALID_SHAPE_001", "grant");
|
|
84
|
+
const g = grant;
|
|
85
|
+
assertNonEmptyString(g["id"], "SDK_GRANT_VALIDATION_MISSING_ID_001", "grant.id");
|
|
86
|
+
assertObject(g["grantedTo"], "SDK_GRANT_VALIDATION_MISSING_GRANTED_TO_001", "grant.grantedTo");
|
|
87
|
+
assertNonEmptyString(g["grantedTo"]["agentId"], "SDK_GRANT_VALIDATION_MISSING_AGENT_ID_001", "grant.grantedTo.agentId");
|
|
88
|
+
if (!VALID_PURPOSE_TAGS.has(g["purpose"])) {
|
|
89
|
+
throw new Error(`SDK_GRANT_VALIDATION_INVALID_PURPOSE_001: grant.purpose "${g["purpose"]}" ` +
|
|
90
|
+
`is not a valid PurposeTag`);
|
|
91
|
+
}
|
|
92
|
+
if (!Array.isArray(g["capabilities"]) || g["capabilities"].length === 0) {
|
|
93
|
+
throw new Error("SDK_GRANT_VALIDATION_INVALID_CAPABILITIES_001: " +
|
|
94
|
+
"grant.capabilities must be a non-empty array");
|
|
95
|
+
}
|
|
96
|
+
for (const cap of g["capabilities"]) {
|
|
97
|
+
if (!VALID_CAPABILITIES.has(cap)) {
|
|
98
|
+
throw new Error(`SDK_GRANT_VALIDATION_INVALID_CAPABILITIES_001: "${cap}" is not a valid capability ` +
|
|
99
|
+
`— must be "query" or "propose"`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
assertObject(g["scope"], "SDK_GRANT_VALIDATION_MISSING_SCOPE_001", "grant.scope");
|
|
103
|
+
assertArray(g["scope"]["predicates"], "SDK_GRANT_VALIDATION_MISSING_SCOPE_001", "grant.scope.predicates");
|
|
104
|
+
assertNonEmptyString(g["notBefore"], "SDK_GRANT_VALIDATION_MISSING_NOTBEFORE_001", "grant.notBefore");
|
|
105
|
+
assertNonEmptyString(g["notAfter"], "SDK_GRANT_VALIDATION_MISSING_NOTAFTER_001", "grant.notAfter");
|
|
106
|
+
if (g["notAfter"] <= g["notBefore"]) {
|
|
107
|
+
throw new Error(`SDK_GRANT_REGISTRATION_OWNER_ONLY_001: notAfter must be after notBefore ` +
|
|
108
|
+
`(notBefore=${g["notBefore"]}, notAfter=${g["notAfter"]})`);
|
|
109
|
+
}
|
|
110
|
+
assertNonEmptyString(g["createdAt"], "SDK_GRANT_VALIDATION_MISSING_CREATED_AT_001", "grant.createdAt");
|
|
111
|
+
if (g["revokedAt"] !== undefined) {
|
|
112
|
+
assertNonEmptyString(g["revokedAt"], "SDK_GRANT_VALIDATION_INVALID_REVOKED_AT_001", "grant.revokedAt");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// ─── Source validation ────────────────────────────────────────────────────────
|
|
116
|
+
// SDK_SOURCE_ADMIN_INPUT_VALIDATED_001
|
|
117
|
+
export function validateCreateSourceAdminInput(input) {
|
|
118
|
+
assertObject(input, "SDK_SOURCE_VALIDATION_INVALID_SHAPE_001", "source input");
|
|
119
|
+
const s = input;
|
|
120
|
+
assertNonEmptyString(s["id"], "SDK_SOURCE_VALIDATION_MISSING_ID_001", "source.id");
|
|
121
|
+
assertNonEmptyString(s["label"], "SDK_SOURCE_VALIDATION_MISSING_LABEL_001", "source.label");
|
|
122
|
+
if (!VALID_SOURCE_KINDS.has(s["kind"])) {
|
|
123
|
+
throw new Error(`SDK_SOURCE_VALIDATION_INVALID_KIND_001: source.kind "${s["kind"]}" is not a valid SourceKind`);
|
|
124
|
+
}
|
|
125
|
+
if (s["metadata"] !== undefined && !isObject(s["metadata"])) {
|
|
126
|
+
throw new Error("SDK_SOURCE_VALIDATION_INVALID_METADATA_001: source.metadata must be a plain object if supplied");
|
|
127
|
+
}
|
|
128
|
+
if (s["evidenceRef"] !== undefined) {
|
|
129
|
+
assertObject(s["evidenceRef"], "SDK_SOURCE_VALIDATION_INVALID_EVIDENCE_REF_001", "source.evidenceRef");
|
|
130
|
+
const er = s["evidenceRef"];
|
|
131
|
+
if (er["id"] !== undefined) {
|
|
132
|
+
assertNonEmptyString(er["id"], "SDK_SOURCE_VALIDATION_INVALID_EVIDENCE_REF_001", "source.evidenceRef.id");
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// ─── Evidence-backed claim validation ────────────────────────────────────────
|
|
137
|
+
// SDK_EVIDENCE_CLAIM_INPUT_VALIDATED_001
|
|
138
|
+
export function validateCreateClaimWithNewEvidenceInput(input) {
|
|
139
|
+
assertObject(input, "SDK_CLAIM_NEW_EVIDENCE_INVALID_SHAPE_001", "input");
|
|
140
|
+
const i = input;
|
|
141
|
+
// Document validation
|
|
142
|
+
assertObject(i["document"], "SDK_CLAIM_DOCUMENT_INVALID_SHAPE_001", "input.document");
|
|
143
|
+
const doc = i["document"];
|
|
144
|
+
if (!(doc["bytes"] instanceof Uint8Array)) {
|
|
145
|
+
throw new Error("SDK_CLAIM_DOCUMENT_INVALID_BYTES_001: input.document.bytes must be a Uint8Array");
|
|
146
|
+
}
|
|
147
|
+
if (doc["bytes"].length === 0) {
|
|
148
|
+
throw new Error("SDK_CLAIM_DOCUMENT_INVALID_BYTES_001: input.document.bytes must not be empty");
|
|
149
|
+
}
|
|
150
|
+
assertNonEmptyString(doc["mimeType"], "SDK_CLAIM_DOCUMENT_MISSING_MIME_TYPE_001", "input.document.mimeType");
|
|
151
|
+
// Source validation
|
|
152
|
+
assertObject(i["source"], "SDK_CLAIM_SOURCE_INVALID_SHAPE_001", "input.source");
|
|
153
|
+
const src = i["source"];
|
|
154
|
+
assertNonEmptyString(src["id"], "SDK_CLAIM_SOURCE_MISSING_ID_001", "input.source.id");
|
|
155
|
+
assertNonEmptyString(src["label"], "SDK_CLAIM_SOURCE_MISSING_LABEL_001", "input.source.label");
|
|
156
|
+
if (!VALID_SOURCE_KINDS.has(src["kind"])) {
|
|
157
|
+
throw new Error(`SDK_CLAIM_SOURCE_INVALID_KIND_001: input.source.kind "${src["kind"]}" is not a valid SourceKind`);
|
|
158
|
+
}
|
|
159
|
+
// Claim validation
|
|
160
|
+
assertClaimInput(i["claim"], "SDK_CLAIM_NEW_EVIDENCE");
|
|
161
|
+
}
|
|
162
|
+
export function validateCreateClaimFromExistingEvidenceInput(input) {
|
|
163
|
+
assertObject(input, "SDK_CLAIM_EXISTING_EVIDENCE_INVALID_SHAPE_001", "input");
|
|
164
|
+
const i = input;
|
|
165
|
+
assertNonEmptyString(i["evidenceId"], "SDK_CLAIM_MISSING_EVIDENCE_ID_001", "input.evidenceId");
|
|
166
|
+
assertNonEmptyString(i["sourceId"], "SDK_CLAIM_MISSING_SOURCE_ID_001", "input.sourceId");
|
|
167
|
+
assertClaimInput(i["claim"], "SDK_CLAIM_EXISTING_EVIDENCE");
|
|
168
|
+
}
|
|
169
|
+
// ─── Proposal validation ──────────────────────────────────────────────────────
|
|
170
|
+
// SDK_PROPOSAL_INPUT_VALIDATED_001
|
|
171
|
+
export function validateCreateProposalInput(input) {
|
|
172
|
+
assertObject(input, "SDK_PROPOSAL_INVALID_SHAPE_001", "proposal input");
|
|
173
|
+
const p = input;
|
|
174
|
+
if (!Array.isArray(p["candidateClaims"]) || p["candidateClaims"].length === 0) {
|
|
175
|
+
throw new Error("SDK_PROPOSAL_EMPTY_CANDIDATE_CLAIMS_001: " +
|
|
176
|
+
"proposalInput.candidateClaims must be a non-empty array");
|
|
177
|
+
}
|
|
178
|
+
for (const candidate of p["candidateClaims"]) {
|
|
179
|
+
if (!isObject(candidate)) {
|
|
180
|
+
throw new Error("SDK_PROPOSAL_INVALID_CANDIDATE_CLAIM_001: each candidateClaim must be a plain object");
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (p["rationale"] !== undefined) {
|
|
184
|
+
assertNonEmptyString(p["rationale"], "SDK_PROPOSAL_INVALID_RATIONALE_001", "proposalInput.rationale");
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
export function validateAcceptProposalInput(proposalId, options) {
|
|
188
|
+
assertNonEmptyString(proposalId, "SDK_PROPOSAL_MISSING_ID_001", "proposalId");
|
|
189
|
+
assertObject(options, "SDK_PROPOSAL_INVALID_ACCEPT_OPTIONS_001", "acceptOptions");
|
|
190
|
+
assertNonEmptyString(options["sourceId"], "SDK_PROPOSAL_MISSING_ACCEPT_SOURCE_001", "acceptOptions.sourceId");
|
|
191
|
+
}
|
|
192
|
+
export function validateRejectProposalInput(proposalId, reason) {
|
|
193
|
+
assertNonEmptyString(proposalId, "SDK_PROPOSAL_MISSING_ID_001", "proposalId");
|
|
194
|
+
assertNonEmptyString(reason, "SDK_PROPOSAL_MISSING_REJECT_REASON_001", "reason");
|
|
195
|
+
}
|
|
196
|
+
// ─── Query validation ─────────────────────────────────────────────────────────
|
|
197
|
+
// SDK_CONTEXT_QUERY_INPUT_VALIDATED_001
|
|
198
|
+
export function validateQueryContractsInput(input) {
|
|
199
|
+
assertObject(input, "SDK_QUERY_INVALID_SHAPE_001", "queryContracts input");
|
|
200
|
+
const q = input;
|
|
201
|
+
assertObject(q["selector"], "SDK_QUERY_MISSING_SELECTOR_001", "input.selector");
|
|
202
|
+
const sel = q["selector"];
|
|
203
|
+
if (sel["predicates"] !== undefined) {
|
|
204
|
+
assertArray(sel["predicates"], "SDK_QUERY_INVALID_PREDICATES_001", "selector.predicates");
|
|
205
|
+
for (const pred of sel["predicates"]) {
|
|
206
|
+
if (typeof pred !== "string") {
|
|
207
|
+
throw new Error("SDK_QUERY_INVALID_PREDICATES_001: every selector.predicates entry must be a string");
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (q["includeDiagnostics"] !== undefined && typeof q["includeDiagnostics"] !== "boolean") {
|
|
212
|
+
throw new Error("SDK_QUERY_INVALID_DIAGNOSTICS_FLAG_001: " +
|
|
213
|
+
"input.includeDiagnostics must be a boolean if supplied");
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/sdk/validation.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,oFAAoF;AACpF,kDAAkD;AAClD,wFAAwF;AACxF,yEAAyE;AACzE,uFAAuF;AACvF,iFAAiF;AACjF,sFAAsF;AACtF,sFAAsF;AACtF,8EAA8E;AAC9E,EAAE;AACF,0DAA0D;AAC1D,iFAAiF;AACjF,kEAAkE;AAClE,uCAAuC;AACvC,oBAAoB;AACpB,qCAAqC;AACrC,0EAA0E;AAE1E,iFAAiF;AAEjF,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACtD,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,oBAAoB;IACpB,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACtD,mBAAmB;IACnB,qBAAqB;IACrB,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,kBAAkB;IAClB,uGAAuG;IACvG,WAAW;IACX,WAAW;IACX,WAAW;IACX,KAAK;IACL,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,QAAQ;IACR,iBAAiB;IACjB,uBAAuB;IACvB,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAE9E,iFAAiF;AAEjF,SAAS,QAAQ,CAAC,GAAY;IAC5B,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAY,EAAE,IAAY,EAAE,KAAa;IACrE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,KAAK,6BAA6B,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAY,EAAE,IAAY,EAAE,KAAa;IAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,KAAK,yBAAyB,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAY,EAAE,IAAY,EAAE,KAAa;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,KAAK,mBAAmB,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAS,gBAAgB,CAAC,KAAc,EAAE,UAAkB;IAC1D,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAK,GAAG,UAAU,kBAAkB,EAAK,eAAe,CAAC,CAAC;IAC3F,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAG,GAAG,UAAU,oBAAoB,EAAG,iBAAiB,CAAC,CAAC;IAC7F,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAG,GAAG,UAAU,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;IAC7F,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,iDAAiD,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,sCAAsC;AAEtC,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,YAAY,CAAC,KAAK,EAAE,wCAAwC,EAAE,OAAO,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,qCAAqC,EAAE,UAAU,CAAC,CAAC;IAEjF,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,6CAA6C,EAAE,iBAAiB,CAAC,CAAC;IAC/F,oBAAoB,CACjB,CAAC,CAAC,WAAW,CAA6B,CAAC,SAAS,CAAC,EACtD,2CAA2C,EAC3C,yBAAyB,CAC1B,CAAC;IAEF,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAW,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,4DAA4D,CAAC,CAAC,SAAS,CAAC,IAAI;YAC5E,2BAA2B,CAC5B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAK,CAAC,CAAC,cAAc,CAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CACb,iDAAiD;YACjD,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,cAAc,CAAc,EAAE,CAAC;QACjD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAa,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,mDAAmD,GAAG,8BAA8B;gBACpF,gCAAgC,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,wCAAwC,EAAE,aAAa,CAAC,CAAC;IAClF,WAAW,CACR,CAAC,CAAC,OAAO,CAA6B,CAAC,YAAY,CAAC,EACrD,wCAAwC,EACxC,wBAAwB,CACzB,CAAC;IAEF,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,4CAA4C,EAAE,iBAAiB,CAAC,CAAC;IACtG,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAG,2CAA2C,EAAG,gBAAgB,CAAC,CAAC;IAErG,IAAK,CAAC,CAAC,UAAU,CAAY,IAAK,CAAC,CAAC,WAAW,CAAY,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,0EAA0E;YAC1E,cAAc,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,GAAG,CAC3D,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,6CAA6C,EAAE,iBAAiB,CAAC,CAAC;IAEvG,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;QACjC,oBAAoB,CAClB,CAAC,CAAC,WAAW,CAAC,EACd,6CAA6C,EAC7C,iBAAiB,CAClB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,uCAAuC;AAEvC,MAAM,UAAU,8BAA8B,CAAC,KAAc;IAC3D,YAAY,CAAC,KAAK,EAAE,yCAAyC,EAAE,cAAc,CAAC,CAAC;IAC/E,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAK,sCAAsC,EAAK,WAAW,CAAC,CAAC;IACzF,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,yCAAyC,EAAE,cAAc,CAAC,CAAC;IAE5F,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAW,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,wDAAwD,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAC/F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE,CAAC;QACnC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,gDAAgD,EAAE,oBAAoB,CAAC,CAAC;QACvG,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAA4B,CAAC;QACvD,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,oBAAoB,CAClB,EAAE,CAAC,IAAI,CAAC,EACR,gDAAgD,EAChD,uBAAuB,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,yCAAyC;AAEzC,MAAM,UAAU,uCAAuC,CAAC,KAAc;IACpE,YAAY,CAAC,KAAK,EAAE,0CAA0C,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,sBAAsB;IACtB,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,sCAAsC,EAAE,gBAAgB,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAA4B,CAAC;IAErD,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,UAAU,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,IAAK,GAAG,CAAC,OAAO,CAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,oBAAoB,CAClB,GAAG,CAAC,UAAU,CAAC,EACf,0CAA0C,EAC1C,yBAAyB,CAC1B,CAAC;IAEF,oBAAoB;IACpB,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,oCAAoC,EAAE,cAAc,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAA4B,CAAC;IACnD,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAK,iCAAiC,EAAK,iBAAiB,CAAC,CAAC;IAC5F,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,oCAAoC,EAAE,oBAAoB,CAAC,CAAC;IAC/F,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAW,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,yDAAyD,GAAG,CAAC,MAAM,CAAC,6BAA6B,CAClG,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,4CAA4C,CAAC,KAAc;IACzE,YAAY,CAAC,KAAK,EAAE,+CAA+C,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,mCAAmC,EAAE,kBAAkB,CAAC,CAAC;IAC/F,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAI,iCAAiC,EAAI,gBAAgB,CAAC,CAAC;IAE7F,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,6BAA6B,CAAC,CAAC;AAC9D,CAAC;AAED,iFAAiF;AACjF,mCAAmC;AAEnC,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,YAAY,CAAC,KAAK,EAAE,gCAAgC,EAAE,gBAAgB,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAK,CAAC,CAAC,iBAAiB,CAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CACb,2CAA2C;YAC3C,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,CAAC,CAAC,iBAAiB,CAAc,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;QACjC,oBAAoB,CAClB,CAAC,CAAC,WAAW,CAAC,EACd,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,UAAmB,EAAE,OAAgB;IAC/E,oBAAoB,CAAC,UAAU,EAAE,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAE9E,YAAY,CAAC,OAAO,EAAE,yCAAyC,EAAE,eAAe,CAAC,CAAC;IAClF,oBAAoB,CACjB,OAAmC,CAAC,UAAU,CAAC,EAChD,wCAAwC,EACxC,wBAAwB,CACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,UAAmB,EAAE,MAAe;IAC9E,oBAAoB,CAAC,UAAU,EAAE,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC9E,oBAAoB,CAAC,MAAM,EAAE,wCAAwC,EAAE,QAAQ,CAAC,CAAC;AACnF,CAAC;AAED,iFAAiF;AACjF,wCAAwC;AAExC,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,YAAY,CAAC,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,CAAC,CAAC;IAC3E,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gCAAgC,EAAE,gBAAgB,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAA4B,CAAC;IAErD,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;QACpC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,kCAAkC,EAAE,qBAAqB,CAAC,CAAC;QAC1F,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,YAAY,CAAc,EAAE,CAAC;YAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,oBAAoB,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CACb,0CAA0C;YAC1C,wDAAwD,CACzD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SourceId } from "../types/ids.js";
|
|
2
|
+
import type { AccessContext } from "../types/access-context.js";
|
|
3
|
+
import type { AppendClaimInput } from "../types/claim.js";
|
|
4
|
+
import type { Source, SourceFilter, SourceInput } from "../types/source.js";
|
|
5
|
+
import type { SourceRegistry } from "./source-registry.js";
|
|
6
|
+
export declare class InMemorySourceRegistry implements SourceRegistry {
|
|
7
|
+
private readonly _sources;
|
|
8
|
+
registerSource(ctx: AccessContext, input: SourceInput): Source;
|
|
9
|
+
_uowSnapshot(): Map<SourceId, Source>;
|
|
10
|
+
_uowRestore(snap: Map<SourceId, Source>): void;
|
|
11
|
+
getSource(ctx: AccessContext, sourceId: SourceId): Source | undefined;
|
|
12
|
+
listSources(ctx: AccessContext, filter?: SourceFilter): Source[];
|
|
13
|
+
deactivateSource(ctx: AccessContext, sourceId: SourceId, reason: string): Source;
|
|
14
|
+
assertCanAppend(input: AppendClaimInput): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// InMemorySourceRegistry — Slice-07.
|
|
2
|
+
//
|
|
3
|
+
// SOURCE_REGISTRY_IMMUTABLE_001: source records are frozen; only status can change.
|
|
4
|
+
// SOURCE_REGISTERED_BEFORE_CLAIM_001 + SOURCE_UNKNOWN_REJECTED_001 enforced in assertCanAppend.
|
|
5
|
+
// SOURCE_INACTIVE_REJECTED_001 enforced in assertCanAppend.
|
|
6
|
+
// SOURCE_AGENT_CANNOT_SELF_REGISTER_001: agent + audit contexts are denied registration.
|
|
7
|
+
// SOURCE_OWNER_CAN_REGISTER_MANUAL_001: owner may only register user_manual.
|
|
8
|
+
// SOURCE_SYSTEM_CAN_REGISTER_001: system may register any non-user_manual kind.
|
|
9
|
+
import { asISOTime } from "../types/ids.js";
|
|
10
|
+
import { isPredicateAllowed, allowedPredicateDescription } from "./source-kind-predicate-policy.js";
|
|
11
|
+
export class InMemorySourceRegistry {
|
|
12
|
+
// Mutable only in status — stored as mutable Record to allow status update.
|
|
13
|
+
_sources = new Map();
|
|
14
|
+
registerSource(ctx, input) {
|
|
15
|
+
// SOURCE_AGENT_CANNOT_SELF_REGISTER_001
|
|
16
|
+
if (ctx.kind === "agent" || ctx.kind === "audit") {
|
|
17
|
+
throw new Error("SOURCE_AGENT_CANNOT_SELF_REGISTER_001: AgentConsentContext and AuditContext cannot register sources");
|
|
18
|
+
}
|
|
19
|
+
// SOURCE_OWNER_CAN_REGISTER_MANUAL_001
|
|
20
|
+
if (ctx.kind === "owner" && input.kind !== "user_manual") {
|
|
21
|
+
throw new Error(`SOURCE_OWNER_CAN_REGISTER_MANUAL_001: OwnerContext may only register "user_manual" sources, not "${input.kind}"`);
|
|
22
|
+
}
|
|
23
|
+
if (this._sources.has(input.id)) {
|
|
24
|
+
throw new Error(`SOURCE_REGISTRY_EXISTS_001: source "${input.id}" is already registered`);
|
|
25
|
+
}
|
|
26
|
+
const creator = ctx.kind === "owner" ? { kind: "owner", personId: ctx.personId } :
|
|
27
|
+
ctx.kind === "system_projection" ? { kind: "system_projection" } :
|
|
28
|
+
{ kind: "test", label: ctx.label ?? "unknown" };
|
|
29
|
+
const source = Object.freeze({
|
|
30
|
+
id: input.id,
|
|
31
|
+
kind: input.kind,
|
|
32
|
+
label: input.label,
|
|
33
|
+
status: "active",
|
|
34
|
+
createdAt: asISOTime(new Date().toISOString()),
|
|
35
|
+
createdBy: Object.freeze(creator),
|
|
36
|
+
...(input.evidenceRef !== undefined ? { evidenceRef: Object.freeze({ ...input.evidenceRef }) } : {}),
|
|
37
|
+
...(input.metadata !== undefined ? { metadata: Object.freeze({ ...input.metadata }) } : {}),
|
|
38
|
+
});
|
|
39
|
+
this._sources.set(input.id, source);
|
|
40
|
+
return source;
|
|
41
|
+
}
|
|
42
|
+
// ── Unit-of-Work snapshot support (UNIT_OF_WORK_IN_MEMORY_ATOMIC_BEHAVIOR_001) ──
|
|
43
|
+
_uowSnapshot() {
|
|
44
|
+
return new Map(this._sources);
|
|
45
|
+
}
|
|
46
|
+
_uowRestore(snap) {
|
|
47
|
+
this._sources.clear();
|
|
48
|
+
for (const [k, v] of snap)
|
|
49
|
+
this._sources.set(k, v);
|
|
50
|
+
}
|
|
51
|
+
getSource(ctx, sourceId) {
|
|
52
|
+
if (ctx == null)
|
|
53
|
+
throw new TypeError("AccessContext is required");
|
|
54
|
+
return this._sources.get(sourceId);
|
|
55
|
+
}
|
|
56
|
+
listSources(ctx, filter) {
|
|
57
|
+
if (ctx == null)
|
|
58
|
+
throw new TypeError("AccessContext is required");
|
|
59
|
+
let sources = Array.from(this._sources.values());
|
|
60
|
+
if (filter?.kind !== undefined)
|
|
61
|
+
sources = sources.filter((s) => s.kind === filter.kind);
|
|
62
|
+
if (filter?.status !== undefined)
|
|
63
|
+
sources = sources.filter((s) => s.status === filter.status);
|
|
64
|
+
return sources;
|
|
65
|
+
}
|
|
66
|
+
deactivateSource(ctx, sourceId, reason) {
|
|
67
|
+
if (ctx.kind === "agent" || ctx.kind === "audit") {
|
|
68
|
+
throw new Error("SOURCE_AGENT_CANNOT_SELF_REGISTER_001: agents and audit cannot deactivate sources");
|
|
69
|
+
}
|
|
70
|
+
const existing = this._sources.get(sourceId);
|
|
71
|
+
if (existing === undefined) {
|
|
72
|
+
throw new Error(`SOURCE_UNKNOWN_REJECTED_001: source "${sourceId}" not found for deactivation`);
|
|
73
|
+
}
|
|
74
|
+
if (existing.status === "inactive") {
|
|
75
|
+
return existing; // idempotent
|
|
76
|
+
}
|
|
77
|
+
// SOURCE_REGISTRY_IMMUTABLE_001: only status changes; all other fields carried over.
|
|
78
|
+
const updated = Object.freeze({
|
|
79
|
+
...existing,
|
|
80
|
+
status: "inactive",
|
|
81
|
+
});
|
|
82
|
+
this._sources.set(sourceId, updated);
|
|
83
|
+
return updated;
|
|
84
|
+
}
|
|
85
|
+
assertCanAppend(input) {
|
|
86
|
+
const source = this._sources.get(input.sourceId);
|
|
87
|
+
// SOURCE_UNKNOWN_REJECTED_001
|
|
88
|
+
if (source === undefined) {
|
|
89
|
+
throw new Error(`SOURCE_UNKNOWN_REJECTED_001: sourceId "${input.sourceId}" is not registered — ` +
|
|
90
|
+
"register source before appending claims");
|
|
91
|
+
}
|
|
92
|
+
// SOURCE_INACTIVE_REJECTED_001
|
|
93
|
+
if (source.status === "inactive") {
|
|
94
|
+
throw new Error(`SOURCE_INACTIVE_REJECTED_001: sourceId "${input.sourceId}" is inactive — ` +
|
|
95
|
+
"new claims from inactive sources are rejected; historical claims remain readable");
|
|
96
|
+
}
|
|
97
|
+
// SOURCE_KIND_ALLOWED_PREDICATE_001
|
|
98
|
+
if (!isPredicateAllowed(source.kind, input.predicate)) {
|
|
99
|
+
throw new Error(`SOURCE_KIND_ALLOWED_PREDICATE_001: source kind "${source.kind}" may not produce ` +
|
|
100
|
+
`predicate "${input.predicate}". Allowed: ${allowedPredicateDescription(source.kind)}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=in-memory-source-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-source-registry.js","sourceRoot":"","sources":["../../src/source/in-memory-source-registry.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,oFAAoF;AACpF,gGAAgG;AAChG,4DAA4D;AAC5D,yFAAyF;AACzF,6EAA6E;AAC7E,gFAAgF;AAOhF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAEpG,MAAM,OAAO,sBAAsB;IACjC,4EAA4E;IAC3D,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAExD,cAAc,CAAC,GAAkB,EAAE,KAAkB;QACnD,wCAAwC;QACxC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;QACJ,CAAC;QAED,uCAAuC;QACvC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,oGAAoG,KAAK,CAAC,IAAI,GAAG,CAClH,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,CAAC,EAAE,yBAAyB,CACzE,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GACX,GAAG,CAAC,IAAI,KAAK,OAAO,CAAa,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAc,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1F,GAAG,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC/B,EAAE,IAAI,EAAE,MAAM,EAAgB,KAAK,EAAM,GAA0B,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;QAE9H,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC;YACnC,EAAE,EAAS,KAAK,CAAC,EAAE;YACnB,IAAI,EAAO,KAAK,CAAC,IAAI;YACrB,KAAK,EAAM,KAAK,CAAC,KAAK;YACtB,MAAM,EAAK,QAAQ;YACnB,SAAS,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC9C,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAkB;YAClD,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpG,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAK,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SACrG,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mFAAmF;IACnF,YAAY;QACV,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,IAA2B;QACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,CAAC,GAAkB,EAAE,QAAkB;QAC9C,IAAI,GAAG,IAAI,IAAI;YAAE,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,GAAkB,EAAE,MAAqB;QACnD,IAAI,GAAG,IAAI,IAAI;YAAE,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAClE,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,IAAI,KAAO,SAAS;YAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5F,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9F,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gBAAgB,CAAC,GAAkB,EAAE,QAAkB,EAAE,MAAc;QACrE,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACvG,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,8BAA8B,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO,QAAQ,CAAC,CAAC,aAAa;QAChC,CAAC;QACD,qFAAqF;QACrF,MAAM,OAAO,GAAW,MAAM,CAAC,MAAM,CAAC;YACpC,GAAG,QAAQ;YACX,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,eAAe,CAAC,KAAuB;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEjD,8BAA8B;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,0CAA0C,KAAK,CAAC,QAAQ,wBAAwB;gBAC9E,yCAAyC,CAC5C,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,CAAC,QAAQ,kBAAkB;gBACzE,kFAAkF,CACrF,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,mDAAmD,MAAM,CAAC,IAAI,oBAAoB;gBAChF,cAAc,KAAK,CAAC,SAAS,eAAe,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ClaimId } from "../types/ids.js";
|
|
2
|
+
import type { AppendClaimInput, ClaimMeta, StoredClaim } from "../types/claim.js";
|
|
3
|
+
import type { AccessContext } from "../types/access-context.js";
|
|
4
|
+
import type { BitemporalQuery, ClaimSelector, FactStore } from "../types/fact-store.js";
|
|
5
|
+
import type { SourceRegistry } from "./source-registry.js";
|
|
6
|
+
export declare class SourceAwareFactStore implements FactStore {
|
|
7
|
+
private readonly _store;
|
|
8
|
+
private readonly _registry;
|
|
9
|
+
constructor(_store: FactStore, _registry: SourceRegistry);
|
|
10
|
+
append(input: AppendClaimInput, ctx: AccessContext): Promise<{
|
|
11
|
+
claimId: ClaimId;
|
|
12
|
+
recordedSeq: number;
|
|
13
|
+
}>;
|
|
14
|
+
readAll(ctx: AccessContext): Promise<ReadonlyArray<ClaimMeta>>;
|
|
15
|
+
readSince(seq: number, ctx: AccessContext): Promise<ReadonlyArray<ClaimMeta>>;
|
|
16
|
+
readAt(params: BitemporalQuery, ctx: AccessContext): Promise<ReadonlyArray<ClaimMeta>>;
|
|
17
|
+
readClaims(ctx: AccessContext, selector: ClaimSelector): Promise<ReadonlyArray<ClaimMeta>>;
|
|
18
|
+
readStoredClaims(ctx: AccessContext, selector: ClaimSelector): Promise<ReadonlyArray<StoredClaim>>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// SourceAwareFactStore — Slice-07.
|
|
2
|
+
//
|
|
3
|
+
// Decorator around any FactStore that enforces source validation before every append.
|
|
4
|
+
// CLAIM_APPEND_REQUIRES_VALID_SOURCE_001: no production append bypasses SourceRegistry.
|
|
5
|
+
// CLAIM_PROVENANCE_VISIBLE_001: sourceId remains in ClaimMeta; registry validates it.
|
|
6
|
+
//
|
|
7
|
+
// FactStore implementations (InMemoryFactStore, SQLiteFactStore) remain source-agnostic.
|
|
8
|
+
// The gate lives here, not in the store.
|
|
9
|
+
export class SourceAwareFactStore {
|
|
10
|
+
_store;
|
|
11
|
+
_registry;
|
|
12
|
+
constructor(_store, _registry) {
|
|
13
|
+
this._store = _store;
|
|
14
|
+
this._registry = _registry;
|
|
15
|
+
}
|
|
16
|
+
async append(input, ctx) {
|
|
17
|
+
// CLAIM_APPEND_REQUIRES_VALID_SOURCE_001: validate source BEFORE delegating to store.
|
|
18
|
+
// Throws SOURCE_UNKNOWN_REJECTED_001, SOURCE_INACTIVE_REJECTED_001,
|
|
19
|
+
// or SOURCE_KIND_ALLOWED_PREDICATE_001 if validation fails.
|
|
20
|
+
this._registry.assertCanAppend(input);
|
|
21
|
+
return this._store.append(input, ctx);
|
|
22
|
+
}
|
|
23
|
+
// ── All read methods delegate directly ───────────────────────────────────
|
|
24
|
+
async readAll(ctx) {
|
|
25
|
+
return this._store.readAll(ctx);
|
|
26
|
+
}
|
|
27
|
+
async readSince(seq, ctx) {
|
|
28
|
+
return this._store.readSince(seq, ctx);
|
|
29
|
+
}
|
|
30
|
+
async readAt(params, ctx) {
|
|
31
|
+
return this._store.readAt(params, ctx);
|
|
32
|
+
}
|
|
33
|
+
async readClaims(ctx, selector) {
|
|
34
|
+
return this._store.readClaims(ctx, selector);
|
|
35
|
+
}
|
|
36
|
+
async readStoredClaims(ctx, selector) {
|
|
37
|
+
return this._store.readStoredClaims(ctx, selector);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=source-aware-fact-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-aware-fact-store.js","sourceRoot":"","sources":["../../src/source/source-aware-fact-store.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,EAAE;AACF,sFAAsF;AACtF,wFAAwF;AACxF,sFAAsF;AACtF,EAAE;AACF,yFAAyF;AACzF,yCAAyC;AAQzC,MAAM,OAAO,oBAAoB;IAEZ;IACA;IAFnB,YACmB,MAAiB,EACjB,SAAyB;QADzB,WAAM,GAAN,MAAM,CAAW;QACjB,cAAS,GAAT,SAAS,CAAgB;IACzC,CAAC;IAEJ,KAAK,CAAC,MAAM,CACV,KAAuB,EACvB,GAAkB;QAElB,sFAAsF;QACtF,oEAAoE;QACpE,4DAA4D;QAC5D,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,OAAO,CAAC,GAAkB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,GAAkB;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAuB,EAAE,GAAkB;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAkB,EAAE,QAAuB;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAkB,EAAE,QAAuB;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ClaimPredicate } from "../types/claim.js";
|
|
2
|
+
import type { SourceKind } from "../types/source.js";
|
|
3
|
+
export declare function isPredicateAllowed(kind: SourceKind, predicate: ClaimPredicate): boolean;
|
|
4
|
+
export declare function allowedPredicateDescription(kind: SourceKind): string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// SourceKindPredicatePolicy — Slice-07.
|
|
2
|
+
//
|
|
3
|
+
// SOURCE_KIND_ALLOWED_PREDICATE_001:
|
|
4
|
+
// Each source kind has an explicit set of predicates it may produce.
|
|
5
|
+
// Violations are rejected at assertCanAppend() time.
|
|
6
|
+
//
|
|
7
|
+
// Policy table (SOURCE_KIND_ALLOWED_PREDICATE_001):
|
|
8
|
+
// user_manual → any predicate (human owner has full discretion)
|
|
9
|
+
// system_derived → contract.* identity/projection helpers
|
|
10
|
+
// document_upload → contract.* and person.*
|
|
11
|
+
// imported_connector → contract.amount, contract.cadence, contract.next_due
|
|
12
|
+
// agent_proposal → NONE — cannot append directly; reserved for Slice-08 proposal flow
|
|
13
|
+
// Literals that count as "contract.*" or "person.*" for doc_upload.
|
|
14
|
+
const CONTRACT_PREDICATES = [
|
|
15
|
+
"contract.exists",
|
|
16
|
+
"contract.counterparty",
|
|
17
|
+
"contract.amount",
|
|
18
|
+
"contract.cadence",
|
|
19
|
+
"contract.next_due",
|
|
20
|
+
"contract.cancellation_terms",
|
|
21
|
+
"contract.identity.link",
|
|
22
|
+
];
|
|
23
|
+
const PERSON_PREDICATES = [
|
|
24
|
+
"person.name",
|
|
25
|
+
"person.email",
|
|
26
|
+
];
|
|
27
|
+
const POLICY = {
|
|
28
|
+
user_manual: "any",
|
|
29
|
+
agent_proposal: "none",
|
|
30
|
+
system_derived: new Set([
|
|
31
|
+
"contract.identity.link",
|
|
32
|
+
"contract.exists",
|
|
33
|
+
]),
|
|
34
|
+
document_upload: new Set([
|
|
35
|
+
...CONTRACT_PREDICATES,
|
|
36
|
+
...PERSON_PREDICATES,
|
|
37
|
+
]),
|
|
38
|
+
imported_connector: new Set([
|
|
39
|
+
"contract.amount",
|
|
40
|
+
"contract.cadence",
|
|
41
|
+
"contract.next_due",
|
|
42
|
+
]),
|
|
43
|
+
};
|
|
44
|
+
// Returns true if the source kind is allowed to produce this predicate.
|
|
45
|
+
export function isPredicateAllowed(kind, predicate) {
|
|
46
|
+
const policy = POLICY[kind];
|
|
47
|
+
if (policy === "any")
|
|
48
|
+
return true;
|
|
49
|
+
if (policy === "none")
|
|
50
|
+
return false;
|
|
51
|
+
return policy.has(predicate);
|
|
52
|
+
}
|
|
53
|
+
// Human-readable description of what each kind is allowed to produce.
|
|
54
|
+
export function allowedPredicateDescription(kind) {
|
|
55
|
+
const policy = POLICY[kind];
|
|
56
|
+
if (policy === "any")
|
|
57
|
+
return "any predicate";
|
|
58
|
+
if (policy === "none")
|
|
59
|
+
return "no predicates (agent_proposal cannot append directly)";
|
|
60
|
+
return `only: ${[...policy].join(", ")}`;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=source-kind-predicate-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-kind-predicate-policy.js","sourceRoot":"","sources":["../../src/source/source-kind-predicate-policy.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,qCAAqC;AACrC,uEAAuE;AACvE,uDAAuD;AACvD,EAAE;AACF,oDAAoD;AACpD,yEAAyE;AACzE,gEAAgE;AAChE,iDAAiD;AACjD,8EAA8E;AAC9E,4FAA4F;AAO5F,oEAAoE;AACpE,MAAM,mBAAmB,GAAkC;IACzD,iBAAiB;IACjB,uBAAuB;IACvB,iBAAiB;IACjB,kBAAkB;IAClB,mBAAmB;IACnB,6BAA6B;IAC7B,wBAAwB;CACzB,CAAC;AAEF,MAAM,iBAAiB,GAAkC;IACvD,aAAa;IACb,cAAc;CACf,CAAC;AAEF,MAAM,MAAM,GAAwC;IAClD,WAAW,EAAS,KAAK;IACzB,cAAc,EAAM,MAAM;IAC1B,cAAc,EAAM,IAAI,GAAG,CAAS;QAClC,wBAAwB;QACxB,iBAAiB;KAClB,CAAC;IACF,eAAe,EAAK,IAAI,GAAG,CAAS;QAClC,GAAG,mBAAmB;QACtB,GAAG,iBAAiB;KACrB,CAAC;IACF,kBAAkB,EAAE,IAAI,GAAG,CAAS;QAClC,iBAAiB;QACjB,kBAAkB;QAClB,mBAAmB;KACpB,CAAC;CACH,CAAC;AAEF,wEAAwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,IAAgB,EAAE,SAAyB;IAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,KAAK;QAAG,OAAO,IAAI,CAAC;IACnC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,2BAA2B,CAAC,IAAgB;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,KAAK;QAAG,OAAO,eAAe,CAAC;IAC9C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,uDAAuD,CAAC;IACtF,OAAO,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SourceId } from "../types/ids.js";
|
|
2
|
+
import type { AccessContext } from "../types/access-context.js";
|
|
3
|
+
import type { AppendClaimInput } from "../types/claim.js";
|
|
4
|
+
import type { Source, SourceFilter, SourceInput } from "../types/source.js";
|
|
5
|
+
export interface SourceRegistry {
|
|
6
|
+
registerSource(ctx: AccessContext, input: SourceInput): Source;
|
|
7
|
+
getSource(ctx: AccessContext, sourceId: SourceId): Source | undefined;
|
|
8
|
+
listSources(ctx: AccessContext, filter?: SourceFilter): Source[];
|
|
9
|
+
deactivateSource(ctx: AccessContext, sourceId: SourceId, reason: string): Source;
|
|
10
|
+
assertCanAppend(input: AppendClaimInput): void;
|
|
11
|
+
}
|