@opendatalabs/personal-server-ts-server 1.33.7 → 1.34.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 (167) hide show
  1. package/dist/__fixtures__/bound-record-store.d.ts +19 -0
  2. package/dist/__fixtures__/bound-record-store.d.ts.map +1 -0
  3. package/dist/__fixtures__/bound-record-store.js +60 -0
  4. package/dist/__fixtures__/bound-record-store.js.map +1 -0
  5. package/dist/__fixtures__/cg-pdpp-client/pdpp-authorization-strategy.d.ts +41 -0
  6. package/dist/__fixtures__/cg-pdpp-client/pdpp-authorization-strategy.d.ts.map +1 -0
  7. package/dist/__fixtures__/cg-pdpp-client/pdpp-authorization-strategy.js +34 -0
  8. package/dist/__fixtures__/cg-pdpp-client/pdpp-authorization-strategy.js.map +1 -0
  9. package/dist/__fixtures__/cg-pdpp-client/pdpp-context-client.d.ts +112 -0
  10. package/dist/__fixtures__/cg-pdpp-client/pdpp-context-client.d.ts.map +1 -0
  11. package/dist/__fixtures__/cg-pdpp-client/pdpp-context-client.js +226 -0
  12. package/dist/__fixtures__/cg-pdpp-client/pdpp-context-client.js.map +1 -0
  13. package/dist/__fixtures__/cg-pdpp-client/pdpp-types.d.ts +135 -0
  14. package/dist/__fixtures__/cg-pdpp-client/pdpp-types.d.ts.map +1 -0
  15. package/dist/__fixtures__/cg-pdpp-client/pdpp-types.js +21 -0
  16. package/dist/__fixtures__/cg-pdpp-client/pdpp-types.js.map +1 -0
  17. package/dist/api-auth.d.ts +18 -2
  18. package/dist/api-auth.d.ts.map +1 -1
  19. package/dist/api-auth.js +114 -22
  20. package/dist/api-auth.js.map +1 -1
  21. package/dist/app.d.ts +60 -1
  22. package/dist/app.d.ts.map +1 -1
  23. package/dist/app.js +139 -1
  24. package/dist/app.js.map +1 -1
  25. package/dist/bootstrap.d.ts +10 -0
  26. package/dist/bootstrap.d.ts.map +1 -1
  27. package/dist/bootstrap.js +358 -7
  28. package/dist/bootstrap.js.map +1 -1
  29. package/dist/enclave-main.d.ts +4 -0
  30. package/dist/enclave-main.d.ts.map +1 -1
  31. package/dist/enclave-main.js +152 -1
  32. package/dist/enclave-main.js.map +1 -1
  33. package/dist/middleware/body-limit.d.ts +1 -1
  34. package/dist/middleware/body-limit.d.ts.map +1 -1
  35. package/dist/middleware/body-limit.js +8 -3
  36. package/dist/middleware/body-limit.js.map +1 -1
  37. package/dist/middleware/cors.d.ts.map +1 -1
  38. package/dist/middleware/cors.js +1 -0
  39. package/dist/middleware/cors.js.map +1 -1
  40. package/dist/package.json +9 -1
  41. package/dist/pdpp/bootstrap.d.ts +72 -0
  42. package/dist/pdpp/bootstrap.d.ts.map +1 -0
  43. package/dist/pdpp/bootstrap.js +270 -0
  44. package/dist/pdpp/bootstrap.js.map +1 -0
  45. package/dist/pdpp/chain-enforcement.d.ts +95 -0
  46. package/dist/pdpp/chain-enforcement.d.ts.map +1 -0
  47. package/dist/pdpp/chain-enforcement.js +145 -0
  48. package/dist/pdpp/chain-enforcement.js.map +1 -0
  49. package/dist/pdpp/client-document-fetch.d.ts +63 -0
  50. package/dist/pdpp/client-document-fetch.d.ts.map +1 -0
  51. package/dist/pdpp/client-document-fetch.js +254 -0
  52. package/dist/pdpp/client-document-fetch.js.map +1 -0
  53. package/dist/pdpp/declaration-registry.d.ts +83 -0
  54. package/dist/pdpp/declaration-registry.d.ts.map +1 -0
  55. package/dist/pdpp/declaration-registry.js +251 -0
  56. package/dist/pdpp/declaration-registry.js.map +1 -0
  57. package/dist/pdpp/deployment.d.ts +70 -0
  58. package/dist/pdpp/deployment.d.ts.map +1 -0
  59. package/dist/pdpp/deployment.js +104 -0
  60. package/dist/pdpp/deployment.js.map +1 -0
  61. package/dist/pdpp/record-schema.d.ts +2 -0
  62. package/dist/pdpp/record-schema.d.ts.map +1 -0
  63. package/dist/pdpp/record-schema.js +2 -0
  64. package/dist/pdpp/record-schema.js.map +1 -0
  65. package/dist/pdpp/records-bootstrap.d.ts +111 -0
  66. package/dist/pdpp/records-bootstrap.d.ts.map +1 -0
  67. package/dist/pdpp/records-bootstrap.js +353 -0
  68. package/dist/pdpp/records-bootstrap.js.map +1 -0
  69. package/dist/pdpp/source-id-compat.d.ts +5 -0
  70. package/dist/pdpp/source-id-compat.d.ts.map +1 -0
  71. package/dist/pdpp/source-id-compat.js +16 -0
  72. package/dist/pdpp/source-id-compat.js.map +1 -0
  73. package/dist/pdpp/test-connections.d.ts +6 -0
  74. package/dist/pdpp/test-connections.d.ts.map +1 -0
  75. package/dist/pdpp/test-connections.js +37 -0
  76. package/dist/pdpp/test-connections.js.map +1 -0
  77. package/dist/routes/auth-device.d.ts.map +1 -1
  78. package/dist/routes/auth-device.js +3 -0
  79. package/dist/routes/auth-device.js.map +1 -1
  80. package/dist/routes/chunked-scope-import.d.ts +41 -0
  81. package/dist/routes/chunked-scope-import.d.ts.map +1 -0
  82. package/dist/routes/chunked-scope-import.js +901 -0
  83. package/dist/routes/chunked-scope-import.js.map +1 -0
  84. package/dist/routes/data.d.ts +23 -1
  85. package/dist/routes/data.d.ts.map +1 -1
  86. package/dist/routes/data.js +112 -1
  87. package/dist/routes/data.js.map +1 -1
  88. package/dist/routes/grants.d.ts.map +1 -1
  89. package/dist/routes/grants.js +2 -0
  90. package/dist/routes/grants.js.map +1 -1
  91. package/dist/routes/mcp.d.ts.map +1 -1
  92. package/dist/routes/mcp.js +21 -12
  93. package/dist/routes/mcp.js.map +1 -1
  94. package/dist/routes/pdpp-auth.d.ts +157 -0
  95. package/dist/routes/pdpp-auth.d.ts.map +1 -0
  96. package/dist/routes/pdpp-auth.js +953 -0
  97. package/dist/routes/pdpp-auth.js.map +1 -0
  98. package/dist/routes/pdpp-blobs.d.ts +26 -0
  99. package/dist/routes/pdpp-blobs.d.ts.map +1 -0
  100. package/dist/routes/pdpp-blobs.js +179 -0
  101. package/dist/routes/pdpp-blobs.js.map +1 -0
  102. package/dist/routes/pdpp-connections.d.ts +28 -0
  103. package/dist/routes/pdpp-connections.d.ts.map +1 -0
  104. package/dist/routes/pdpp-connections.js +144 -0
  105. package/dist/routes/pdpp-connections.js.map +1 -0
  106. package/dist/routes/pdpp-declarations.d.ts +58 -0
  107. package/dist/routes/pdpp-declarations.d.ts.map +1 -0
  108. package/dist/routes/pdpp-declarations.js +94 -0
  109. package/dist/routes/pdpp-declarations.js.map +1 -0
  110. package/dist/routes/pdpp-instance-bindings.d.ts +26 -0
  111. package/dist/routes/pdpp-instance-bindings.d.ts.map +1 -0
  112. package/dist/routes/pdpp-instance-bindings.js +124 -0
  113. package/dist/routes/pdpp-instance-bindings.js.map +1 -0
  114. package/dist/routes/pdpp-records.d.ts +158 -0
  115. package/dist/routes/pdpp-records.d.ts.map +1 -0
  116. package/dist/routes/pdpp-records.js +1537 -0
  117. package/dist/routes/pdpp-records.js.map +1 -0
  118. package/dist/routes/pdpp-well-known.d.ts +13 -0
  119. package/dist/routes/pdpp-well-known.d.ts.map +1 -0
  120. package/dist/routes/pdpp-well-known.js +20 -0
  121. package/dist/routes/pdpp-well-known.js.map +1 -0
  122. package/dist/storage/declaration-witness.d.ts +56 -0
  123. package/dist/storage/declaration-witness.d.ts.map +1 -0
  124. package/dist/storage/declaration-witness.js +273 -0
  125. package/dist/storage/declaration-witness.js.map +1 -0
  126. package/dist/storage/hierarchy.d.ts +25 -1
  127. package/dist/storage/hierarchy.d.ts.map +1 -1
  128. package/dist/storage/hierarchy.js +210 -16
  129. package/dist/storage/hierarchy.js.map +1 -1
  130. package/dist/storage/import-operations.d.ts +11 -0
  131. package/dist/storage/import-operations.d.ts.map +1 -0
  132. package/dist/storage/import-operations.js +261 -0
  133. package/dist/storage/import-operations.js.map +1 -0
  134. package/dist/storage/index-manager.d.ts +24 -2
  135. package/dist/storage/index-manager.d.ts.map +1 -1
  136. package/dist/storage/index-manager.js +279 -30
  137. package/dist/storage/index-manager.js.map +1 -1
  138. package/dist/storage/index-schema.d.ts +1 -1
  139. package/dist/storage/index-schema.d.ts.map +1 -1
  140. package/dist/storage/index-schema.js +189 -8
  141. package/dist/storage/index-schema.js.map +1 -1
  142. package/dist/storage/legacy-scope-authority.d.ts +14 -0
  143. package/dist/storage/legacy-scope-authority.d.ts.map +1 -0
  144. package/dist/storage/legacy-scope-authority.js +298 -0
  145. package/dist/storage/legacy-scope-authority.js.map +1 -0
  146. package/dist/storage/node-data-storage.d.ts +6 -0
  147. package/dist/storage/node-data-storage.d.ts.map +1 -1
  148. package/dist/storage/node-data-storage.js +161 -2
  149. package/dist/storage/node-data-storage.js.map +1 -1
  150. package/dist/storage/pdpp-grant-binding-sqlite-store.d.ts +17 -0
  151. package/dist/storage/pdpp-grant-binding-sqlite-store.d.ts.map +1 -0
  152. package/dist/storage/pdpp-grant-binding-sqlite-store.js +159 -0
  153. package/dist/storage/pdpp-grant-binding-sqlite-store.js.map +1 -0
  154. package/dist/storage/pdpp-records-sqlite-store.d.ts +112 -0
  155. package/dist/storage/pdpp-records-sqlite-store.d.ts.map +1 -0
  156. package/dist/storage/pdpp-records-sqlite-store.js +1440 -0
  157. package/dist/storage/pdpp-records-sqlite-store.js.map +1 -0
  158. package/dist/storage/pdpp-stream-completion.d.ts +5 -0
  159. package/dist/storage/pdpp-stream-completion.d.ts.map +1 -0
  160. package/dist/storage/pdpp-stream-completion.js +10 -0
  161. package/dist/storage/pdpp-stream-completion.js.map +1 -0
  162. package/dist/storage/scope-deletion-history.d.ts +8 -0
  163. package/dist/storage/scope-deletion-history.d.ts.map +1 -0
  164. package/dist/storage/scope-deletion-history.js +40 -0
  165. package/dist/storage/scope-deletion-history.js.map +1 -0
  166. package/dist/ui/ps-lite-debug.js +3697 -876
  167. package/package.json +12 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdpp-auth.js","sourceRoot":"","sources":["../../src/routes/pdpp-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Hono } from "hono";
2
+ import type { PdppAuthorizationService } from "@opendatalabs/personal-server-ts-core/ports/pdpp-auth";
3
+ import { type PdppRecordStore, type StreamDeclarationRegistry } from "@opendatalabs/personal-server-ts-core/storage/pdpp-records";
4
+ export interface PdppBlobsRouteDeps {
5
+ store: PdppRecordStore;
6
+ auth: PdppAuthorizationService;
7
+ declarations: StreamDeclarationRegistry;
8
+ instancesForSubject?: (subjectId: string) => string[];
9
+ instancesForSource?: (subjectId: string, sourceId: string) => string[];
10
+ isConnectionAvailable?: (instance: string) => boolean;
11
+ /**
12
+ * Loads raw blob bytes for a blob_id, or undefined if not locally stored.
13
+ * Optional: when absent or throwing, GET fails closed with `api_error` (500) instead of a fabricated 200.
14
+ */
15
+ readBlobBytes?: (blobId: string) => Promise<Uint8Array<ArrayBuffer> | undefined>;
16
+ }
17
+ export declare function pdppBlobsRoutes(deps: PdppBlobsRouteDeps): Hono;
18
+ /**
19
+ * Placeholder for the 302-signed-URL blob response variant. NOT a real
20
+ * signed-URL service — per Architecture §8, blob distribution via signed URL
21
+ * is gateway-native and out of this lane's scope. This function exists only
22
+ * to document the shape a real implementation would need; it is not wired
23
+ * into any route above.
24
+ */
25
+ export declare function placeholderSignedBlobRedirectTarget(blobId: string): string;
26
+ //# sourceMappingURL=pdpp-blobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdpp-blobs.d.ts","sourceRoot":"","sources":["../../src/routes/pdpp-blobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AAEtG,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC/B,MAAM,4DAA4D,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,YAAY,EAAE,yBAAyB,CAAC;IACxC,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACtD,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACvE,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACtD;;;OAGG;IACH,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,CAAC;CACnD;AA0BD,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CA0M9D;AAED;;;;;;GAMG;AACH,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1E"}
@@ -0,0 +1,179 @@
1
+ import { Hono } from "hono";
2
+ import { randomUUID } from "node:crypto";
3
+ import { PdppError } from "@opendatalabs/personal-server-ts-core/errors/pdpp";
4
+ import { PDPP_VERSION } from "@opendatalabs/personal-server-ts-core/pdpp-version";
5
+ import { resourceMetadataUrlFor } from "./pdpp-records.js";
6
+ import { recordKeyWithinGrantResources, recordWithinGrantTimeConstraint, resolveReadScope, } from "@opendatalabs/personal-server-ts-core/storage/pdpp-records";
7
+ function requestId() {
8
+ return `req_${randomUUID()}`;
9
+ }
10
+ function jsonError(c, err, reqId, extraHeaders) {
11
+ // Every 401 carries the challenge, not just the missing-token branch: a
12
+ // client holding a STALE token is exactly who needs the pointer back to the
13
+ // metadata document in order to re-authorize.
14
+ const headers = {
15
+ "Request-Id": reqId,
16
+ "PDPP-Version": PDPP_VERSION,
17
+ ...(err.status === 401 && {
18
+ "WWW-Authenticate": `Bearer error="invalid_token", resource_metadata="${resourceMetadataUrlFor(c)}"`,
19
+ }),
20
+ ...extraHeaders,
21
+ };
22
+ return c.json(err.toJSON(reqId), err.status, headers);
23
+ }
24
+ export function pdppBlobsRoutes(deps) {
25
+ const app = new Hono();
26
+ /**
27
+ * Authorizes a blob fetch through the same path a record read uses (spec §8): finds every
28
+ * record referencing this blob_id, then grants access if ANY one passes instance scope,
29
+ * resources, time_constraint, and has blob_ref in its record's specific granted field
30
+ * projection. Identical bytes can be referenced by more than one record, so an inaccessible
31
+ * reference must not hide an accessible one.
32
+ */
33
+ async function authorizeBlobAccess(c, blobId) {
34
+ const reqId = requestId();
35
+ const header = c.req.header("Authorization");
36
+ const token = header?.match(/^Bearer\s+(.+)$/i)?.[1];
37
+ if (!token) {
38
+ const err = new PdppError("authentication_error", "Missing or invalid access token");
39
+ return {
40
+ error: jsonError(c, err, reqId, {
41
+ // Absolute, derived from this request's origin (RFC 9728 §5.1) --
42
+ // shares the records route's helper so the two cannot drift.
43
+ "WWW-Authenticate": `Bearer error="invalid_token", resource_metadata="${resourceMetadataUrlFor(c)}"`,
44
+ }),
45
+ };
46
+ }
47
+ const context = await deps.auth.resolveToken(token);
48
+ if (!context.active) {
49
+ const err = new PdppError("authentication_error", "Invalid access token");
50
+ return { error: jsonError(c, err, reqId) };
51
+ }
52
+ // DELETE removes the grant's record references and claim rows. Check its
53
+ // connection before blob metadata so callers still get the K7 refusal.
54
+ if (context.tokenKind !== "owner") {
55
+ const grantInstances = (context.grant?.streams ?? []).flatMap((stream) => stream.instance_ids);
56
+ if (grantInstances.some((instance) => deps.isConnectionAvailable?.(instance) === false)) {
57
+ const err = new PdppError("instance_unavailable", "The connection for this grant is unavailable");
58
+ return { error: jsonError(c, err, reqId) };
59
+ }
60
+ }
61
+ const meta = deps.store.getBlobMeta(blobId);
62
+ if (!meta) {
63
+ const err = new PdppError("blob_not_found", "blob_id is unknown or stale");
64
+ return { error: jsonError(c, err, reqId) };
65
+ }
66
+ const notFound = () => jsonError(c, new PdppError("blob_not_found", "blob_id is unknown or stale"), reqId);
67
+ // Identical blob bytes can legitimately be referenced by more than one
68
+ // record or instance (e.g. re-ingested via a different stream). Access
69
+ // is granted if ANY visible reference passes its authorization check —
70
+ // an inaccessible reference must never hide an accessible one.
71
+ const references = deps.store.findBlobReferences(blobId);
72
+ if (references.length === 0)
73
+ return { error: notFound() };
74
+ if (context.tokenKind === "owner") {
75
+ // Owner tokens carry no grant: current-capability read, scoped to the
76
+ // owner's selected live instances when the token has an instance list.
77
+ // A source scope must not widen that explicit selection.
78
+ // Fail closed: a missing resolver, a missing subjectId, or an empty
79
+ // owned list must all deny rather than fall back to "visible to
80
+ // everyone" — mirrors the record routes' `?? []` default.
81
+ if (!context.subjectId)
82
+ return { error: notFound() };
83
+ const currentInstances = deps.instancesForSubject?.(context.subjectId);
84
+ const sourceInstances = context.sourceId
85
+ ? (deps.instancesForSource?.(context.subjectId, context.sourceId) ?? [])
86
+ : (currentInstances ?? []);
87
+ const ownedInstances = context.instanceIds
88
+ ? context.instanceIds.filter((instance) => sourceInstances.includes(instance))
89
+ : context.sourceId
90
+ ? sourceInstances
91
+ : [];
92
+ const visible = references.some((reference) => ownedInstances.includes(reference.instance));
93
+ if (!visible)
94
+ return { error: notFound() };
95
+ return { ok: true };
96
+ }
97
+ // Client token: the blob must be referenced by a record this exact
98
+ // grant can see — instance scope, resources allowlist, time_constraint,
99
+ // and blob_ref must be in the granted fields for that record's stream.
100
+ for (const reference of references) {
101
+ const declaration = deps.declarations.forInstance(reference.instance, reference.stream);
102
+ let scope;
103
+ try {
104
+ scope = resolveReadScope(context, reference.stream, declaration);
105
+ }
106
+ catch {
107
+ continue;
108
+ }
109
+ if (!scope.instanceIds.includes(reference.instance))
110
+ continue;
111
+ if (!recordKeyWithinGrantResources(reference.recordKey, scope.streamGrant)) {
112
+ continue;
113
+ }
114
+ if (!scope.fields?.includes("blob_ref"))
115
+ continue;
116
+ const record = deps.store.getRecord(reference.instance, reference.stream, reference.recordKey);
117
+ if (!record ||
118
+ !recordWithinGrantTimeConstraint(record.data, scope.streamGrant)) {
119
+ continue;
120
+ }
121
+ return { ok: true };
122
+ }
123
+ return { error: notFound() };
124
+ }
125
+ // Hono dispatches HEAD via the GET handler and discards the body, so no separate HEAD handler is
126
+ // needed. Content-Length always comes from blob metadata, not the actual byte read.
127
+ app.get("/:blobId", async (c) => {
128
+ const blobId = c.req.param("blobId");
129
+ const authz = await authorizeBlobAccess(c, blobId);
130
+ if ("error" in authz)
131
+ return authz.error;
132
+ const meta = deps.store.getBlobMeta(blobId);
133
+ const reqId = requestId();
134
+ const headers = {
135
+ "Request-Id": reqId,
136
+ "PDPP-Version": PDPP_VERSION,
137
+ "Content-Type": meta.mimeType,
138
+ "Content-Length": String(meta.sizeBytes),
139
+ "Cache-Control": "private, no-store",
140
+ };
141
+ if (c.req.method === "HEAD") {
142
+ return c.body(null, 200, headers);
143
+ }
144
+ let bytes;
145
+ try {
146
+ bytes = await deps.readBlobBytes?.(blobId);
147
+ }
148
+ catch {
149
+ // A throwing reader must not leak past this route to app.ts's generic
150
+ // handler, which returns a different (legacy) error shape. Map it to
151
+ // the same fail-closed api_error without exposing the reader's detail.
152
+ return jsonError(c, new PdppError("api_error", "Blob bytes are not available"), reqId);
153
+ }
154
+ if (bytes === undefined) {
155
+ // No byte source wired up, or the store lost the bytes for an
156
+ // otherwise-known blob -- distinct from a genuine zero-byte blob.
157
+ return jsonError(c, new PdppError("api_error", "Blob bytes are not available"), reqId);
158
+ }
159
+ if (bytes.byteLength !== meta.sizeBytes) {
160
+ // The declared Content-Length must never silently misrepresent the
161
+ // returned body. Fail closed rather than let a stale/corrupt
162
+ // sizeBytes lie to the client about how much data follows.
163
+ return jsonError(c, new PdppError("api_error", "Stored blob size does not match metadata"), reqId);
164
+ }
165
+ return c.body(bytes, 200, headers);
166
+ });
167
+ return app;
168
+ }
169
+ /**
170
+ * Placeholder for the 302-signed-URL blob response variant. NOT a real
171
+ * signed-URL service — per Architecture §8, blob distribution via signed URL
172
+ * is gateway-native and out of this lane's scope. This function exists only
173
+ * to document the shape a real implementation would need; it is not wired
174
+ * into any route above.
175
+ */
176
+ export function placeholderSignedBlobRedirectTarget(blobId) {
177
+ return `https://gateway.invalid/blobs/${encodeURIComponent(blobId)}?signature=not-implemented`;
178
+ }
179
+ //# sourceMappingURL=pdpp-blobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdpp-blobs.js","sourceRoot":"","sources":["../../src/routes/pdpp-blobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Hono } from "hono";
2
+ import type { PdppAuthorizationService } from "@opendatalabs/personal-server-ts-core/ports/pdpp-auth";
3
+ import { type PdppInstanceBinding } from "../storage/pdpp-records-sqlite-store.js";
4
+ export interface PdppConnectionStore {
5
+ listConnections(sourceId: string): PdppInstanceBinding[];
6
+ getInstanceBinding(instance: string): PdppInstanceBinding;
7
+ registerConnection(input: {
8
+ instance: string;
9
+ sourceId: string;
10
+ method: string;
11
+ label: string;
12
+ }): PdppInstanceBinding;
13
+ deleteConnection(instance: string): PdppInstanceBinding;
14
+ }
15
+ export interface PdppConnectionRouteDeps {
16
+ store: PdppConnectionStore;
17
+ auth: PdppAuthorizationService;
18
+ ownerSubjectId: string;
19
+ /** Known method ids keyed by source id. */
20
+ connectionMethods: Map<string, string[]>;
21
+ /** Active per-instance writer methods for canonical-enabled sources. */
22
+ configuredMethods: Map<string, string[]>;
23
+ canonicalSourceIds: Set<string>;
24
+ /** Source ids in the connection registry. */
25
+ sourceIds: Set<string>;
26
+ }
27
+ export declare function pdppConnectionRoutes(deps: PdppConnectionRouteDeps): Hono;
28
+ //# sourceMappingURL=pdpp-connections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdpp-connections.d.ts","sourceRoot":"","sources":["../../src/routes/pdpp-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACtG,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,yCAAyC,CAAC;AAGjD,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACzD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1D,kBAAkB,CAAC,KAAK,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,mBAAmB,CAAC;IACxB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACzD;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,wBAAwB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,wEAAwE;IACxE,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,6CAA6C;IAC7C,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB;AA8BD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CA8JxE"}
@@ -0,0 +1,144 @@
1
+ import { Hono } from "hono";
2
+ import { PdppBindingError, } from "../storage/pdpp-records-sqlite-store.js";
3
+ import { resolveRetainedSourceId } from "../pdpp/source-id-compat.js";
4
+ function jsonError(code, message, status) {
5
+ return Response.json({ error: { code, message } }, { status });
6
+ }
7
+ const CONNECTION_ID = /^conn_[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
8
+ function isConnectionId(id, owner, sourceId) {
9
+ return (CONNECTION_ID.test(id) ||
10
+ (sourceId !== undefined &&
11
+ id ===
12
+ `${sourceId.split("/").filter(Boolean).pop() ?? sourceId}:${owner.toLowerCase()}`));
13
+ }
14
+ function connectionJson(binding, sourceId = binding.sourceId) {
15
+ return {
16
+ connection_id: binding.instance,
17
+ source_id: sourceId,
18
+ method_id: binding.method,
19
+ label: binding.label,
20
+ };
21
+ }
22
+ export function pdppConnectionRoutes(deps) {
23
+ const app = new Hono();
24
+ async function owner(request) {
25
+ const token = request.headers
26
+ .get("authorization")
27
+ ?.match(/^Bearer\s+(.+)$/i)?.[1];
28
+ if (!token)
29
+ return jsonError("authentication_error", "Owner token required", 401);
30
+ const context = await deps.auth.resolveToken(token);
31
+ if (!context.active ||
32
+ context.tokenKind !== "owner" ||
33
+ !context.subjectId ||
34
+ !context.sourceId ||
35
+ context.subjectId.toLowerCase() !== deps.ownerSubjectId.toLowerCase()) {
36
+ return jsonError("authentication_error", "Owner token required", 401);
37
+ }
38
+ return { subjectId: context.subjectId, sourceId: context.sourceId };
39
+ }
40
+ app.get("/pdpp/capabilities", (c) => c.json({ capabilities: ["connections_v1"] }));
41
+ app.get("/pdpp/connections", async (c) => {
42
+ const requestedSourceId = c.req.query("source_id");
43
+ const sourceId = requestedSourceId
44
+ ? resolveRetainedSourceId(requestedSourceId, deps.sourceIds)
45
+ : undefined;
46
+ if (!requestedSourceId || !sourceId) {
47
+ return jsonError("not_found", "Source declaration not found", 404);
48
+ }
49
+ const ownerScope = await owner(c.req.raw);
50
+ if (ownerScope instanceof Response)
51
+ return ownerScope;
52
+ if (ownerScope.sourceId !== sourceId) {
53
+ return jsonError("access_denied", "Owner token has a different source scope", 403);
54
+ }
55
+ return c.json({
56
+ connections: deps.store
57
+ .listConnections(sourceId)
58
+ .map((connection) => connectionJson(connection, requestedSourceId)),
59
+ });
60
+ });
61
+ app.put("/pdpp/connections/:connectionId", async (c) => {
62
+ const connectionId = c.req.param("connectionId");
63
+ let body;
64
+ try {
65
+ body = await c.req.json();
66
+ }
67
+ catch {
68
+ return jsonError("invalid_request", "Body must be JSON", 400);
69
+ }
70
+ if (!body || typeof body !== "object" || Array.isArray(body)) {
71
+ return jsonError("invalid_request", "Body must be an object", 400);
72
+ }
73
+ const input = body;
74
+ const requestedSourceId = input.source_id;
75
+ const sourceId = typeof requestedSourceId === "string"
76
+ ? resolveRetainedSourceId(requestedSourceId, deps.sourceIds)
77
+ : undefined;
78
+ if (!sourceId ||
79
+ typeof input.method_id !== "string" ||
80
+ typeof input.label !== "string") {
81
+ return jsonError("invalid_request", "source_id, method_id and label are required", 400);
82
+ }
83
+ const ownerScope = await owner(c.req.raw);
84
+ if (ownerScope instanceof Response)
85
+ return ownerScope;
86
+ if (ownerScope.sourceId !== sourceId) {
87
+ return jsonError("access_denied", "Owner token has a different source scope", 403);
88
+ }
89
+ if (!isConnectionId(connectionId, ownerScope.subjectId, sourceId)) {
90
+ return jsonError("connection_id_invalid", "Connection id is invalid", 400);
91
+ }
92
+ const configured = deps.connectionMethods.get(sourceId) ?? [];
93
+ if (configured.length !== 1 || configured[0] !== input.method_id) {
94
+ return jsonError("method_inactive", "Method is not active for this source", 409);
95
+ }
96
+ try {
97
+ const binding = deps.store.registerConnection({
98
+ instance: connectionId,
99
+ sourceId,
100
+ method: input.method_id,
101
+ label: input.label,
102
+ });
103
+ if (deps.canonicalSourceIds.has(sourceId)) {
104
+ deps.configuredMethods.set(connectionId, [input.method_id]);
105
+ }
106
+ return c.json(connectionJson(binding), 200);
107
+ }
108
+ catch (error) {
109
+ if (error instanceof PdppBindingError) {
110
+ const status = error.reason === "connection_id_invalid" ? 400 : 409;
111
+ return jsonError(error.reason, error.reason, status);
112
+ }
113
+ throw error;
114
+ }
115
+ });
116
+ app.delete("/pdpp/connections/:connectionId", async (c) => {
117
+ const connectionId = c.req.param("connectionId");
118
+ const ownerScope = await owner(c.req.raw);
119
+ if (ownerScope instanceof Response)
120
+ return ownerScope;
121
+ const current = deps.store.getInstanceBinding(connectionId);
122
+ if (!current.sourceId ||
123
+ !deps.sourceIds.has(current.sourceId) ||
124
+ !isConnectionId(connectionId, ownerScope.subjectId, current.sourceId)) {
125
+ return jsonError("not_found", "Connection not found", 404);
126
+ }
127
+ if (ownerScope.sourceId !== current.sourceId) {
128
+ return jsonError("access_denied", "Owner token has a different source scope", 403);
129
+ }
130
+ if (current.deletedAt !== null)
131
+ return c.json(connectionJson(current), 200);
132
+ try {
133
+ return c.json(connectionJson(deps.store.deleteConnection(connectionId)), 200);
134
+ }
135
+ catch (error) {
136
+ if (error instanceof PdppBindingError) {
137
+ return jsonError(error.reason, error.reason, 409);
138
+ }
139
+ throw error;
140
+ }
141
+ });
142
+ return app;
143
+ }
144
+ //# sourceMappingURL=pdpp-connections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdpp-connections.js","sourceRoot":"","sources":["../../src/routes/pdpp-connections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Declaration submission (§5 declaration acceptance).
3
+ *
4
+ * `POST /pdpp/declarations` — offer a SourceDeclaration and get an accept or a
5
+ * refusal, in this server lifetime.
6
+ *
7
+ * ## Why this route exists
8
+ *
9
+ * The AS already had a real validator (`parseDeclaration`) and a real trust
10
+ * policy (the connector gate), but both ran only at construction: declarations
11
+ * came from `config.pdpp.declarationPaths`, were parsed once, and were pinned.
12
+ * Asking "would you accept this document?" therefore meant editing config and
13
+ * restarting the process. That is not merely inconvenient — it makes the
14
+ * question unanswerable. A restart-per-submission puts a control and its
15
+ * negative case in two different server lifetimes, so what gets measured is
16
+ * what survives a reboot, not what the AS refuses at an acceptance surface.
17
+ *
18
+ * ## Why it is operator-authenticated and NOT client-reachable
19
+ *
20
+ * A declaration asserts authority over a source: which streams exist, which
21
+ * fields they have, what an owner is consenting to when they approve a grant
22
+ * against it. A client that can submit its own declaration can declare itself
23
+ * authority over any source and then request a grant against the shape it
24
+ * just invented, which defeats the entire §5 trust model. So the credential
25
+ * here is the operator's — the same authority that may edit
26
+ * `declarationPaths` — and never a client token. Absent a configured operator
27
+ * credential the route refuses everything, because a submission surface that
28
+ * fails open is worse than no submission surface.
29
+ *
30
+ * ## The response contract
31
+ *
32
+ * Acceptance is `200` with the snapshot now retained for the key, so a caller
33
+ * can see what is actually held rather than inferring it from a bare 204.
34
+ * Refusal is `400` with `{ error, error_description }`, where `error` is the
35
+ * `DeclarationFailureCode` the validator produced. Acceptance is idempotent
36
+ * for an identical resubmission: a positive control has to be runnable twice.
37
+ */
38
+ import { Hono } from "hono";
39
+ import type { Logger } from "pino";
40
+ import type { MutableDeclarationRegistry } from "../pdpp/declaration-registry.js";
41
+ export interface PdppDeclarationRouteDeps {
42
+ logger: Logger;
43
+ registry: MutableDeclarationRegistry;
44
+ /**
45
+ * The connector inventory, for the response's benefit only — the registry
46
+ * applies the gate itself. Kept in the deps so a caller can see the two are
47
+ * meant to agree.
48
+ */
49
+ supportedConnectors: string[];
50
+ /**
51
+ * The operator credential. Undefined disables the route entirely (every
52
+ * request is refused), which is the safe reading of "no credential
53
+ * configured" for a surface that decides what this server trusts.
54
+ */
55
+ operatorToken?: string;
56
+ }
57
+ export declare function pdppDeclarationRoutes(deps: PdppDeclarationRouteDeps): Hono;
58
+ //# sourceMappingURL=pdpp-declarations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdpp-declarations.d.ts","sourceRoot":"","sources":["../../src/routes/pdpp-declarations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAElF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,0BAA0B,CAAC;IACrC;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,wBAAwB,GAAG,IAAI,CA+D1E"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Declaration submission (§5 declaration acceptance).
3
+ *
4
+ * `POST /pdpp/declarations` — offer a SourceDeclaration and get an accept or a
5
+ * refusal, in this server lifetime.
6
+ *
7
+ * ## Why this route exists
8
+ *
9
+ * The AS already had a real validator (`parseDeclaration`) and a real trust
10
+ * policy (the connector gate), but both ran only at construction: declarations
11
+ * came from `config.pdpp.declarationPaths`, were parsed once, and were pinned.
12
+ * Asking "would you accept this document?" therefore meant editing config and
13
+ * restarting the process. That is not merely inconvenient — it makes the
14
+ * question unanswerable. A restart-per-submission puts a control and its
15
+ * negative case in two different server lifetimes, so what gets measured is
16
+ * what survives a reboot, not what the AS refuses at an acceptance surface.
17
+ *
18
+ * ## Why it is operator-authenticated and NOT client-reachable
19
+ *
20
+ * A declaration asserts authority over a source: which streams exist, which
21
+ * fields they have, what an owner is consenting to when they approve a grant
22
+ * against it. A client that can submit its own declaration can declare itself
23
+ * authority over any source and then request a grant against the shape it
24
+ * just invented, which defeats the entire §5 trust model. So the credential
25
+ * here is the operator's — the same authority that may edit
26
+ * `declarationPaths` — and never a client token. Absent a configured operator
27
+ * credential the route refuses everything, because a submission surface that
28
+ * fails open is worse than no submission surface.
29
+ *
30
+ * ## The response contract
31
+ *
32
+ * Acceptance is `200` with the snapshot now retained for the key, so a caller
33
+ * can see what is actually held rather than inferring it from a bare 204.
34
+ * Refusal is `400` with `{ error, error_description }`, where `error` is the
35
+ * `DeclarationFailureCode` the validator produced. Acceptance is idempotent
36
+ * for an identical resubmission: a positive control has to be runnable twice.
37
+ */
38
+ import { Hono } from "hono";
39
+ import { timingSafeEqual } from "node:crypto";
40
+ export function pdppDeclarationRoutes(deps) {
41
+ const app = new Hono();
42
+ app.post("/declarations", async (c) => {
43
+ if (!authorized(c.req.header("authorization"), deps.operatorToken)) {
44
+ return c.json({
45
+ error: "unauthorized",
46
+ error_description: "Declaration submission requires the operator credential",
47
+ }, 401, { "Cache-Control": "no-store" });
48
+ }
49
+ // Read the raw bytes, not a parsed body. The digest a producer's envelope
50
+ // is later checked against is taken over exactly what was submitted, so
51
+ // re-serializing a parsed object here would change the digest for
52
+ // formatting alone and quietly break verification.
53
+ const document = await c.req.text();
54
+ const result = deps.registry.submit(document);
55
+ if (!result.ok) {
56
+ deps.logger.warn({ code: result.failure.code, reason: result.failure.message }, "PDPP declaration refused");
57
+ return c.json({
58
+ error: result.failure.code,
59
+ error_description: result.failure.message,
60
+ }, 400, { "Cache-Control": "no-store" });
61
+ }
62
+ deps.logger.info({
63
+ sourceId: result.snapshot.source_id,
64
+ version: result.snapshot.version,
65
+ digest: result.snapshot.digest.slice(0, 12),
66
+ }, "PDPP declaration retained");
67
+ // What is retained for this key after the call — clause 5.8-4's retention
68
+ // half stays observable without a second request.
69
+ return c.json({
70
+ source_id: result.snapshot.source_id,
71
+ source_kind: result.snapshot.source_kind,
72
+ version: result.snapshot.version,
73
+ digest: result.snapshot.digest,
74
+ streams: result.snapshot.streams.map((s) => s.name),
75
+ }, 200, { "Cache-Control": "no-store" });
76
+ });
77
+ return app;
78
+ }
79
+ /**
80
+ * Constant-time bearer comparison. A submission surface that decides what the
81
+ * server trusts is worth not leaking its credential a byte at a time.
82
+ */
83
+ function authorized(header, expected) {
84
+ if (!expected)
85
+ return false;
86
+ if (!header?.toLowerCase().startsWith("bearer "))
87
+ return false;
88
+ const presented = Buffer.from(header.slice(7).trim());
89
+ const secret = Buffer.from(expected);
90
+ if (presented.length !== secret.length)
91
+ return false;
92
+ return timingSafeEqual(presented, secret);
93
+ }
94
+ //# sourceMappingURL=pdpp-declarations.js.map