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.
Files changed (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +377 -0
  3. package/dist/agent/finance-agent.d.ts +44 -0
  4. package/dist/agent/finance-agent.js +75 -0
  5. package/dist/agent/finance-agent.js.map +1 -0
  6. package/dist/agent/legal-agent.d.ts +44 -0
  7. package/dist/agent/legal-agent.js +76 -0
  8. package/dist/agent/legal-agent.js.map +1 -0
  9. package/dist/agent/medical-agent.d.ts +44 -0
  10. package/dist/agent/medical-agent.js +75 -0
  11. package/dist/agent/medical-agent.js.map +1 -0
  12. package/dist/agent/trusted-agent-registry.d.ts +53 -0
  13. package/dist/agent/trusted-agent-registry.js +57 -0
  14. package/dist/agent/trusted-agent-registry.js.map +1 -0
  15. package/dist/audit/audit-chain-verifier.d.ts +10 -0
  16. package/dist/audit/audit-chain-verifier.js +67 -0
  17. package/dist/audit/audit-chain-verifier.js.map +1 -0
  18. package/dist/audit/audit-log.d.ts +48 -0
  19. package/dist/audit/audit-log.js +74 -0
  20. package/dist/audit/audit-log.js.map +1 -0
  21. package/dist/audit/sqlite-audit-log.d.ts +29 -0
  22. package/dist/audit/sqlite-audit-log.js +142 -0
  23. package/dist/audit/sqlite-audit-log.js.map +1 -0
  24. package/dist/auth/access-context-issuer.d.ts +18 -0
  25. package/dist/auth/access-context-issuer.js +88 -0
  26. package/dist/auth/access-context-issuer.js.map +1 -0
  27. package/dist/auth/assert-authorized-for-subject.d.ts +2 -0
  28. package/dist/auth/assert-authorized-for-subject.js +20 -0
  29. package/dist/auth/assert-authorized-for-subject.js.map +1 -0
  30. package/dist/auth/backend-context-minting-boundary.d.ts +23 -0
  31. package/dist/auth/backend-context-minting-boundary.js +281 -0
  32. package/dist/auth/backend-context-minting-boundary.js.map +1 -0
  33. package/dist/auth/default-authorization-policy.d.ts +7 -0
  34. package/dist/auth/default-authorization-policy.js +64 -0
  35. package/dist/auth/default-authorization-policy.js.map +1 -0
  36. package/dist/auth/fake-auth-adapter.d.ts +7 -0
  37. package/dist/auth/fake-auth-adapter.js +27 -0
  38. package/dist/auth/fake-auth-adapter.js.map +1 -0
  39. package/dist/auth/http-client.d.ts +12 -0
  40. package/dist/auth/http-client.js +7 -0
  41. package/dist/auth/http-client.js.map +1 -0
  42. package/dist/auth/in-memory-grant-resolver.d.ts +21 -0
  43. package/dist/auth/in-memory-grant-resolver.js +73 -0
  44. package/dist/auth/in-memory-grant-resolver.js.map +1 -0
  45. package/dist/auth/in-memory-tenant-boundary.d.ts +16 -0
  46. package/dist/auth/in-memory-tenant-boundary.js +37 -0
  47. package/dist/auth/in-memory-tenant-boundary.js.map +1 -0
  48. package/dist/auth/jwks-key-ring-auth-adapter.d.ts +38 -0
  49. package/dist/auth/jwks-key-ring-auth-adapter.js +123 -0
  50. package/dist/auth/jwks-key-ring-auth-adapter.js.map +1 -0
  51. package/dist/auth/jwks-key-ring.d.ts +25 -0
  52. package/dist/auth/jwks-key-ring.js +111 -0
  53. package/dist/auth/jwks-key-ring.js.map +1 -0
  54. package/dist/auth/jwt-auth-adapter.d.ts +15 -0
  55. package/dist/auth/jwt-auth-adapter.js +59 -0
  56. package/dist/auth/jwt-auth-adapter.js.map +1 -0
  57. package/dist/auth/jwt-core.d.ts +32 -0
  58. package/dist/auth/jwt-core.js +226 -0
  59. package/dist/auth/jwt-core.js.map +1 -0
  60. package/dist/auth/jwt-key-ring-auth-adapter.d.ts +16 -0
  61. package/dist/auth/jwt-key-ring-auth-adapter.js +58 -0
  62. package/dist/auth/jwt-key-ring-auth-adapter.js.map +1 -0
  63. package/dist/auth/oidc-discovery.d.ts +15 -0
  64. package/dist/auth/oidc-discovery.js +46 -0
  65. package/dist/auth/oidc-discovery.js.map +1 -0
  66. package/dist/auth/production-scoped-life-api.d.ts +58 -0
  67. package/dist/auth/production-scoped-life-api.js +802 -0
  68. package/dist/auth/production-scoped-life-api.js.map +1 -0
  69. package/dist/auth/proposal-scope-inspector.d.ts +3 -0
  70. package/dist/auth/proposal-scope-inspector.js +42 -0
  71. package/dist/auth/proposal-scope-inspector.js.map +1 -0
  72. package/dist/auth/proposal-scoped-life-api.d.ts +21 -0
  73. package/dist/auth/proposal-scoped-life-api.js +168 -0
  74. package/dist/auth/proposal-scoped-life-api.js.map +1 -0
  75. package/dist/auth/rate-limited-context-minting-boundary.d.ts +27 -0
  76. package/dist/auth/rate-limited-context-minting-boundary.js +77 -0
  77. package/dist/auth/rate-limited-context-minting-boundary.js.map +1 -0
  78. package/dist/auth/revocation-aware-auth-adapter.d.ts +21 -0
  79. package/dist/auth/revocation-aware-auth-adapter.js +88 -0
  80. package/dist/auth/revocation-aware-auth-adapter.js.map +1 -0
  81. package/dist/auth/sqlite-grant-resolver.d.ts +8 -0
  82. package/dist/auth/sqlite-grant-resolver.js +78 -0
  83. package/dist/auth/sqlite-grant-resolver.js.map +1 -0
  84. package/dist/auth/sqlite-tenant-boundary.d.ts +7 -0
  85. package/dist/auth/sqlite-tenant-boundary.js +41 -0
  86. package/dist/auth/sqlite-tenant-boundary.js.map +1 -0
  87. package/dist/auth/static-jwt-key-ring.d.ts +13 -0
  88. package/dist/auth/static-jwt-key-ring.js +73 -0
  89. package/dist/auth/static-jwt-key-ring.js.map +1 -0
  90. package/dist/auth/subject-scoped-life-api.d.ts +14 -0
  91. package/dist/auth/subject-scoped-life-api.js +51 -0
  92. package/dist/auth/subject-scoped-life-api.js.map +1 -0
  93. package/dist/auth/test-context-minting-boundary.d.ts +13 -0
  94. package/dist/auth/test-context-minting-boundary.js +74 -0
  95. package/dist/auth/test-context-minting-boundary.js.map +1 -0
  96. package/dist/auth/types.d.ts +77 -0
  97. package/dist/auth/types.js +16 -0
  98. package/dist/auth/types.js.map +1 -0
  99. package/dist/compliance/subject-data-report.d.ts +43 -0
  100. package/dist/compliance/subject-data-report.js +155 -0
  101. package/dist/compliance/subject-data-report.js.map +1 -0
  102. package/dist/consent/consent-guard.d.ts +4 -0
  103. package/dist/consent/consent-guard.js +37 -0
  104. package/dist/consent/consent-guard.js.map +1 -0
  105. package/dist/consent/grant-registry.d.ts +7 -0
  106. package/dist/consent/grant-registry.js +13 -0
  107. package/dist/consent/grant-registry.js.map +1 -0
  108. package/dist/consent/intersect-selector.d.ts +3 -0
  109. package/dist/consent/intersect-selector.js +66 -0
  110. package/dist/consent/intersect-selector.js.map +1 -0
  111. package/dist/contract/diagnostics.d.ts +32 -0
  112. package/dist/contract/diagnostics.js +112 -0
  113. package/dist/contract/diagnostics.js.map +1 -0
  114. package/dist/contract/project-contracts.d.ts +5 -0
  115. package/dist/contract/project-contracts.js +159 -0
  116. package/dist/contract/project-contracts.js.map +1 -0
  117. package/dist/contract/types.d.ts +32 -0
  118. package/dist/contract/types.js +5 -0
  119. package/dist/contract/types.js.map +1 -0
  120. package/dist/crypto/aes-gcm.d.ts +11 -0
  121. package/dist/crypto/aes-gcm.js +78 -0
  122. package/dist/crypto/aes-gcm.js.map +1 -0
  123. package/dist/crypto/claim-serializer.d.ts +26 -0
  124. package/dist/crypto/claim-serializer.js +59 -0
  125. package/dist/crypto/claim-serializer.js.map +1 -0
  126. package/dist/crypto/sha256.d.ts +12 -0
  127. package/dist/crypto/sha256.js +40 -0
  128. package/dist/crypto/sha256.js.map +1 -0
  129. package/dist/crypto/static-key.d.ts +11 -0
  130. package/dist/crypto/static-key.js +60 -0
  131. package/dist/crypto/static-key.js.map +1 -0
  132. package/dist/crypto/types.d.ts +20 -0
  133. package/dist/crypto/types.js +8 -0
  134. package/dist/crypto/types.js.map +1 -0
  135. package/dist/datasource/trusted-data-source-registry.d.ts +51 -0
  136. package/dist/datasource/trusted-data-source-registry.js +57 -0
  137. package/dist/datasource/trusted-data-source-registry.js.map +1 -0
  138. package/dist/erasure/tombstone.d.ts +13 -0
  139. package/dist/erasure/tombstone.js +20 -0
  140. package/dist/erasure/tombstone.js.map +1 -0
  141. package/dist/evidence/evidence-backed-claim-creator.d.ts +48 -0
  142. package/dist/evidence/evidence-backed-claim-creator.js +107 -0
  143. package/dist/evidence/evidence-backed-claim-creator.js.map +1 -0
  144. package/dist/evidence/in-memory-raw-document-store.d.ts +26 -0
  145. package/dist/evidence/in-memory-raw-document-store.js +84 -0
  146. package/dist/evidence/in-memory-raw-document-store.js.map +1 -0
  147. package/dist/evidence/raw-document-store.d.ts +12 -0
  148. package/dist/evidence/raw-document-store.js +8 -0
  149. package/dist/evidence/raw-document-store.js.map +1 -0
  150. package/dist/evidence/source-evidence-validator.d.ts +4 -0
  151. package/dist/evidence/source-evidence-validator.js +14 -0
  152. package/dist/evidence/source-evidence-validator.js.map +1 -0
  153. package/dist/evidence/sqlite-raw-document-store.d.ts +19 -0
  154. package/dist/evidence/sqlite-raw-document-store.js +122 -0
  155. package/dist/evidence/sqlite-raw-document-store.js.map +1 -0
  156. package/dist/guardian/guardian-registry.d.ts +96 -0
  157. package/dist/guardian/guardian-registry.js +95 -0
  158. package/dist/guardian/guardian-registry.js.map +1 -0
  159. package/dist/index.d.ts +44 -0
  160. package/dist/index.js +72 -0
  161. package/dist/index.js.map +1 -0
  162. package/dist/observability/health.d.ts +12 -0
  163. package/dist/observability/health.js +16 -0
  164. package/dist/observability/health.js.map +1 -0
  165. package/dist/observability/logger.d.ts +21 -0
  166. package/dist/observability/logger.js +40 -0
  167. package/dist/observability/logger.js.map +1 -0
  168. package/dist/observability/metrics.d.ts +15 -0
  169. package/dist/observability/metrics.js +52 -0
  170. package/dist/observability/metrics.js.map +1 -0
  171. package/dist/persistence/backup.d.ts +24 -0
  172. package/dist/persistence/backup.js +251 -0
  173. package/dist/persistence/backup.js.map +1 -0
  174. package/dist/persistence/decryptability-scan.d.ts +10 -0
  175. package/dist/persistence/decryptability-scan.js +144 -0
  176. package/dist/persistence/decryptability-scan.js.map +1 -0
  177. package/dist/persistence/in-memory-unit-of-work.d.ts +11 -0
  178. package/dist/persistence/in-memory-unit-of-work.js +32 -0
  179. package/dist/persistence/in-memory-unit-of-work.js.map +1 -0
  180. package/dist/persistence/key-availability.d.ts +9 -0
  181. package/dist/persistence/key-availability.js +125 -0
  182. package/dist/persistence/key-availability.js.map +1 -0
  183. package/dist/persistence/sqlite/migrations.d.ts +9 -0
  184. package/dist/persistence/sqlite/migrations.js +535 -0
  185. package/dist/persistence/sqlite/migrations.js.map +1 -0
  186. package/dist/persistence/sqlite/schema.d.ts +10 -0
  187. package/dist/persistence/sqlite/schema.js +101 -0
  188. package/dist/persistence/sqlite/schema.js.map +1 -0
  189. package/dist/persistence/sqlite/sqlite-fact-store.d.ts +24 -0
  190. package/dist/persistence/sqlite/sqlite-fact-store.js +207 -0
  191. package/dist/persistence/sqlite/sqlite-fact-store.js.map +1 -0
  192. package/dist/persistence/sqlite/sqlite-source-registry.d.ts +17 -0
  193. package/dist/persistence/sqlite/sqlite-source-registry.js +132 -0
  194. package/dist/persistence/sqlite/sqlite-source-registry.js.map +1 -0
  195. package/dist/persistence/sqlite/sqlite-unit-of-work.d.ts +8 -0
  196. package/dist/persistence/sqlite/sqlite-unit-of-work.js +41 -0
  197. package/dist/persistence/sqlite/sqlite-unit-of-work.js.map +1 -0
  198. package/dist/persistence/sqlite/types.d.ts +24 -0
  199. package/dist/persistence/sqlite/types.js +28 -0
  200. package/dist/persistence/sqlite/types.js.map +1 -0
  201. package/dist/persistence/unit-of-work.d.ts +6 -0
  202. package/dist/persistence/unit-of-work.js +15 -0
  203. package/dist/persistence/unit-of-work.js.map +1 -0
  204. package/dist/proposal/accepted-claim-appender.d.ts +7 -0
  205. package/dist/proposal/accepted-claim-appender.js +16 -0
  206. package/dist/proposal/accepted-claim-appender.js.map +1 -0
  207. package/dist/proposal/in-memory-proposal-queue.d.ts +21 -0
  208. package/dist/proposal/in-memory-proposal-queue.js +218 -0
  209. package/dist/proposal/in-memory-proposal-queue.js.map +1 -0
  210. package/dist/proposal/policy-aware-proposal-queue.d.ts +23 -0
  211. package/dist/proposal/policy-aware-proposal-queue.js +162 -0
  212. package/dist/proposal/policy-aware-proposal-queue.js.map +1 -0
  213. package/dist/proposal/proposal-policy.d.ts +37 -0
  214. package/dist/proposal/proposal-policy.js +72 -0
  215. package/dist/proposal/proposal-policy.js.map +1 -0
  216. package/dist/proposal/proposal-queue.d.ts +13 -0
  217. package/dist/proposal/proposal-queue.js +15 -0
  218. package/dist/proposal/proposal-queue.js.map +1 -0
  219. package/dist/proposal/source-aware-claim-appender.d.ts +13 -0
  220. package/dist/proposal/source-aware-claim-appender.js +47 -0
  221. package/dist/proposal/source-aware-claim-appender.js.map +1 -0
  222. package/dist/proposal/sqlite-proposal-queue.d.ts +26 -0
  223. package/dist/proposal/sqlite-proposal-queue.js +282 -0
  224. package/dist/proposal/sqlite-proposal-queue.js.map +1 -0
  225. package/dist/resolution/resolve-claims.d.ts +4 -0
  226. package/dist/resolution/resolve-claims.js +101 -0
  227. package/dist/resolution/resolve-claims.js.map +1 -0
  228. package/dist/resolution/trust-profile.d.ts +12 -0
  229. package/dist/resolution/trust-profile.js +23 -0
  230. package/dist/resolution/trust-profile.js.map +1 -0
  231. package/dist/resolution/types.d.ts +15 -0
  232. package/dist/resolution/types.js +8 -0
  233. package/dist/resolution/types.js.map +1 -0
  234. package/dist/sdk/create-backend-integrated-life-api-for-test.d.ts +23 -0
  235. package/dist/sdk/create-backend-integrated-life-api-for-test.js +240 -0
  236. package/dist/sdk/create-backend-integrated-life-api-for-test.js.map +1 -0
  237. package/dist/sdk/create-life-api.d.ts +55 -0
  238. package/dist/sdk/create-life-api.js +251 -0
  239. package/dist/sdk/create-life-api.js.map +1 -0
  240. package/dist/sdk/create-sqlite-life-api.d.ts +33 -0
  241. package/dist/sdk/create-sqlite-life-api.js +654 -0
  242. package/dist/sdk/create-sqlite-life-api.js.map +1 -0
  243. package/dist/sdk/life-api.d.ts +27 -0
  244. package/dist/sdk/life-api.js +17 -0
  245. package/dist/sdk/life-api.js.map +1 -0
  246. package/dist/sdk/validation.d.ts +8 -0
  247. package/dist/sdk/validation.js +216 -0
  248. package/dist/sdk/validation.js.map +1 -0
  249. package/dist/source/in-memory-source-registry.d.ts +15 -0
  250. package/dist/source/in-memory-source-registry.js +104 -0
  251. package/dist/source/in-memory-source-registry.js.map +1 -0
  252. package/dist/source/source-aware-fact-store.d.ts +19 -0
  253. package/dist/source/source-aware-fact-store.js +40 -0
  254. package/dist/source/source-aware-fact-store.js.map +1 -0
  255. package/dist/source/source-kind-predicate-policy.d.ts +4 -0
  256. package/dist/source/source-kind-predicate-policy.js +62 -0
  257. package/dist/source/source-kind-predicate-policy.js.map +1 -0
  258. package/dist/source/source-registry.d.ts +11 -0
  259. package/dist/source/source-registry.js +12 -0
  260. package/dist/source/source-registry.js.map +1 -0
  261. package/dist/store/in-memory-fact-store.d.ts +25 -0
  262. package/dist/store/in-memory-fact-store.js +192 -0
  263. package/dist/store/in-memory-fact-store.js.map +1 -0
  264. package/dist/surface/context-query.d.ts +21 -0
  265. package/dist/surface/context-query.js +113 -0
  266. package/dist/surface/context-query.js.map +1 -0
  267. package/dist/surface/evidence-backed-context-query.d.ts +62 -0
  268. package/dist/surface/evidence-backed-context-query.js +240 -0
  269. package/dist/surface/evidence-backed-context-query.js.map +1 -0
  270. package/dist/types/access-context.d.ts +25 -0
  271. package/dist/types/access-context.js +6 -0
  272. package/dist/types/access-context.js.map +1 -0
  273. package/dist/types/claim.d.ts +48 -0
  274. package/dist/types/claim.js +5 -0
  275. package/dist/types/claim.js.map +1 -0
  276. package/dist/types/consent.d.ts +41 -0
  277. package/dist/types/consent.js +3 -0
  278. package/dist/types/consent.js.map +1 -0
  279. package/dist/types/crypto-boundary.d.ts +12 -0
  280. package/dist/types/crypto-boundary.js +15 -0
  281. package/dist/types/crypto-boundary.js.map +1 -0
  282. package/dist/types/evidence.d.ts +31 -0
  283. package/dist/types/evidence.js +8 -0
  284. package/dist/types/evidence.js.map +1 -0
  285. package/dist/types/fact-store.d.ts +24 -0
  286. package/dist/types/fact-store.js +12 -0
  287. package/dist/types/fact-store.js.map +1 -0
  288. package/dist/types/ids.d.ts +36 -0
  289. package/dist/types/ids.js +11 -0
  290. package/dist/types/ids.js.map +1 -0
  291. package/dist/types/proposal.d.ts +38 -0
  292. package/dist/types/proposal.js +7 -0
  293. package/dist/types/proposal.js.map +1 -0
  294. package/dist/types/source.d.ts +33 -0
  295. package/dist/types/source.js +6 -0
  296. package/dist/types/source.js.map +1 -0
  297. package/dist/types/trust.d.ts +24 -0
  298. package/dist/types/trust.js +5 -0
  299. package/dist/types/trust.js.map +1 -0
  300. package/dist/utilities/deep-freeze.d.ts +1 -0
  301. package/dist/utilities/deep-freeze.js +17 -0
  302. package/dist/utilities/deep-freeze.js.map +1 -0
  303. 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":"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"}
@@ -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":"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"}
@@ -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":"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"}
@@ -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
+ }