@opendatalabs/personal-server-ts-core 1.7.0 → 1.9.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 (122) hide show
  1. package/dist/api/index.d.ts +64 -2
  2. package/dist/api/index.d.ts.map +1 -1
  3. package/dist/api/index.js +189 -45
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/contracts/data.d.ts +16 -1
  6. package/dist/contracts/data.d.ts.map +1 -1
  7. package/dist/contracts/data.js +71 -19
  8. package/dist/contracts/data.js.map +1 -1
  9. package/dist/derivatives/api.d.ts +33 -0
  10. package/dist/derivatives/api.d.ts.map +1 -0
  11. package/dist/derivatives/api.js +216 -0
  12. package/dist/derivatives/api.js.map +1 -0
  13. package/dist/derivatives/compute.d.ts +106 -0
  14. package/dist/derivatives/compute.d.ts.map +1 -0
  15. package/dist/derivatives/compute.js +373 -0
  16. package/dist/derivatives/compute.js.map +1 -0
  17. package/dist/derivatives/index.d.ts +9 -0
  18. package/dist/derivatives/index.d.ts.map +1 -0
  19. package/dist/derivatives/index.js +9 -0
  20. package/dist/derivatives/index.js.map +1 -0
  21. package/dist/derivatives/inference.d.ts +102 -0
  22. package/dist/derivatives/inference.d.ts.map +1 -0
  23. package/dist/derivatives/inference.js +159 -0
  24. package/dist/derivatives/inference.js.map +1 -0
  25. package/dist/derivatives/prompt.d.ts +64 -0
  26. package/dist/derivatives/prompt.d.ts.map +1 -0
  27. package/dist/derivatives/prompt.js +186 -0
  28. package/dist/derivatives/prompt.js.map +1 -0
  29. package/dist/derivatives/registration.d.ts +53 -0
  30. package/dist/derivatives/registration.d.ts.map +1 -0
  31. package/dist/derivatives/registration.js +163 -0
  32. package/dist/derivatives/registration.js.map +1 -0
  33. package/dist/derivatives/scheduler.d.ts +56 -0
  34. package/dist/derivatives/scheduler.d.ts.map +1 -0
  35. package/dist/derivatives/scheduler.js +151 -0
  36. package/dist/derivatives/scheduler.js.map +1 -0
  37. package/dist/derivatives/store.d.ts +14 -0
  38. package/dist/derivatives/store.d.ts.map +1 -0
  39. package/dist/derivatives/store.js +75 -0
  40. package/dist/derivatives/store.js.map +1 -0
  41. package/dist/derivatives/types.d.ts +72 -0
  42. package/dist/derivatives/types.d.ts.map +1 -0
  43. package/dist/derivatives/types.js +25 -0
  44. package/dist/derivatives/types.js.map +1 -0
  45. package/dist/errors/catalog.d.ts +26 -0
  46. package/dist/errors/catalog.d.ts.map +1 -1
  47. package/dist/errors/catalog.js +39 -1
  48. package/dist/errors/catalog.js.map +1 -1
  49. package/dist/logging/access-log.d.ts +7 -1
  50. package/dist/logging/access-log.d.ts.map +1 -1
  51. package/dist/mcp/read-client.d.ts.map +1 -1
  52. package/dist/mcp/read-client.js +25 -1
  53. package/dist/mcp/read-client.js.map +1 -1
  54. package/dist/mcp/session.d.ts.map +1 -1
  55. package/dist/mcp/session.js +10 -1
  56. package/dist/mcp/session.js.map +1 -1
  57. package/dist/ports/index.d.ts +125 -0
  58. package/dist/ports/index.d.ts.map +1 -1
  59. package/dist/ports/index.js.map +1 -1
  60. package/dist/schemas/server-config.d.ts +12 -0
  61. package/dist/schemas/server-config.d.ts.map +1 -1
  62. package/dist/schemas/server-config.js +29 -0
  63. package/dist/schemas/server-config.js.map +1 -1
  64. package/dist/storage/adapters/index.d.ts +1 -1
  65. package/dist/storage/adapters/index.d.ts.map +1 -1
  66. package/dist/storage/adapters/index.js +1 -1
  67. package/dist/storage/adapters/index.js.map +1 -1
  68. package/dist/storage/adapters/vana.d.ts +2 -0
  69. package/dist/storage/adapters/vana.d.ts.map +1 -1
  70. package/dist/storage/adapters/vana.js +5 -1
  71. package/dist/storage/adapters/vana.js.map +1 -1
  72. package/dist/storage/index/types.d.ts +1 -0
  73. package/dist/storage/index/types.d.ts.map +1 -1
  74. package/dist/sync/data-point-feed.d.ts +35 -0
  75. package/dist/sync/data-point-feed.d.ts.map +1 -0
  76. package/dist/sync/data-point-feed.js +122 -0
  77. package/dist/sync/data-point-feed.js.map +1 -0
  78. package/dist/sync/delete-data-port.d.ts +50 -0
  79. package/dist/sync/delete-data-port.d.ts.map +1 -0
  80. package/dist/sync/delete-data-port.js +244 -0
  81. package/dist/sync/delete-data-port.js.map +1 -0
  82. package/dist/sync/engine/sync-manager.d.ts +14 -4
  83. package/dist/sync/engine/sync-manager.d.ts.map +1 -1
  84. package/dist/sync/engine/sync-manager.js +53 -8
  85. package/dist/sync/engine/sync-manager.js.map +1 -1
  86. package/dist/sync/index.d.ts +7 -0
  87. package/dist/sync/index.d.ts.map +1 -1
  88. package/dist/sync/index.js +7 -0
  89. package/dist/sync/index.js.map +1 -1
  90. package/dist/sync/pending-blob-deletions.d.ts +29 -0
  91. package/dist/sync/pending-blob-deletions.d.ts.map +1 -0
  92. package/dist/sync/pending-blob-deletions.js +116 -0
  93. package/dist/sync/pending-blob-deletions.js.map +1 -0
  94. package/dist/sync/scope-deletions.d.ts +155 -0
  95. package/dist/sync/scope-deletions.d.ts.map +1 -0
  96. package/dist/sync/scope-deletions.js +225 -0
  97. package/dist/sync/scope-deletions.js.map +1 -0
  98. package/dist/sync/tombstone.d.ts +27 -0
  99. package/dist/sync/tombstone.d.ts.map +1 -0
  100. package/dist/sync/tombstone.js +28 -0
  101. package/dist/sync/tombstone.js.map +1 -0
  102. package/dist/sync/workers/delete.d.ts +152 -31
  103. package/dist/sync/workers/delete.d.ts.map +1 -1
  104. package/dist/sync/workers/delete.js +461 -27
  105. package/dist/sync/workers/delete.js.map +1 -1
  106. package/dist/sync/workers/download.d.ts +52 -1
  107. package/dist/sync/workers/download.d.ts.map +1 -1
  108. package/dist/sync/workers/download.js +129 -2
  109. package/dist/sync/workers/download.js.map +1 -1
  110. package/dist/sync/workers/upload.d.ts +31 -1
  111. package/dist/sync/workers/upload.d.ts.map +1 -1
  112. package/dist/sync/workers/upload.js +108 -4
  113. package/dist/sync/workers/upload.js.map +1 -1
  114. package/dist/test-utils/index.d.ts +1 -0
  115. package/dist/test-utils/index.d.ts.map +1 -1
  116. package/dist/test-utils/index.js +1 -0
  117. package/dist/test-utils/index.js.map +1 -1
  118. package/dist/test-utils/memory-storage.d.ts +12 -0
  119. package/dist/test-utils/memory-storage.d.ts.map +1 -0
  120. package/dist/test-utils/memory-storage.js +146 -0
  121. package/dist/test-utils/memory-storage.js.map +1 -0
  122. package/package.json +5 -1
@@ -1,4 +1,5 @@
1
1
  import { type DataStoragePort } from "../ports/index.js";
2
+ import type { IndexEntry } from "../storage/index/types.js";
2
3
  import { type DataFileEnvelope } from "@opendatalabs/vana-sdk/browser";
3
4
  import { type WriteResult } from "../storage/hierarchy/index.js";
4
5
  import { type WriterAttribution } from "../write/attribution.js";
@@ -13,11 +14,20 @@ export interface DataContractError {
13
14
  status: 400 | 404;
14
15
  body: DataContractErrorBody;
15
16
  }
17
+ /**
18
+ * Discovery-time visibility of a local index entry. False hides the entry
19
+ * (and, for scope listings, the scope whose latest entry it is) the same way
20
+ * a read of it would answer 410: a copy a gateway tombstone covers must not
21
+ * be discoverable either. When present, pagination and totals are computed
22
+ * over the visible set.
23
+ */
24
+ export type DataVisibilityFilter = (scope: string, entry: IndexEntry) => Promise<boolean> | boolean;
16
25
  export interface ListDataScopesContractInput {
17
26
  storage: DataStoragePort;
18
27
  scopePrefix?: string;
19
28
  limit?: number;
20
29
  offset?: number;
30
+ isVisible?: DataVisibilityFilter;
21
31
  }
22
32
  export interface ListDataScopesContractResult {
23
33
  ok: true;
@@ -33,6 +43,7 @@ export interface ListDataVersionsContractInput {
33
43
  scopeParam: string;
34
44
  limit?: number;
35
45
  offset?: number;
46
+ isVisible?: DataVisibilityFilter;
36
47
  }
37
48
  export interface ListDataVersionsContractResult {
38
49
  ok: true;
@@ -91,6 +102,8 @@ export interface IngestDataContractInput {
91
102
  * unchanged.
92
103
  */
93
104
  lineage?: StoredLineage;
105
+ /** See `IndexEntry.afterTombstoneVersion`. */
106
+ afterTombstoneVersion?: number | null;
94
107
  }
95
108
  export interface IngestDataContractResult {
96
109
  ok: true;
@@ -121,6 +134,8 @@ export interface IngestBinaryDataContractInput {
121
134
  attribution?: WriterAttribution;
122
135
  /** Validated lineage for a derivative write (see IngestDataContractInput). */
123
136
  lineage?: StoredLineage;
137
+ /** See `IndexEntry.afterTombstoneVersion`. */
138
+ afterTombstoneVersion?: number | null;
124
139
  }
125
140
  export interface DeleteDataScopeContractInput {
126
141
  storage: DataStoragePort;
@@ -135,7 +150,7 @@ export declare function parseDataScopeContract(scopeParam: string): {
135
150
  scope: string;
136
151
  } | DataContractError;
137
152
  export declare function listDataScopesContract(input: ListDataScopesContractInput): Promise<ListDataScopesContractResult>;
138
- export declare function listDataVersionsContract(input: ListDataVersionsContractInput): ListDataVersionsContractResult | DataContractError;
153
+ export declare function listDataVersionsContract(input: ListDataVersionsContractInput): Promise<ListDataVersionsContractResult | DataContractError>;
139
154
  export declare function readDataContract(input: ReadDataContractInput): Promise<ReadDataContractResult | DataContractError>;
140
155
  export declare function ingestDataContract(input: IngestDataContractInput): Promise<IngestDataContractResult | DataContractError>;
141
156
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/contracts/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/contracts/data.ts"],"names":[],"mappings":"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"}
@@ -53,15 +53,47 @@ function normalizeOffset(value) {
53
53
  function isRecord(value) {
54
54
  return value !== null && typeof value === "object" && !Array.isArray(value);
55
55
  }
56
+ const VISIBILITY_PAGE_SIZE = 200;
56
57
  export async function listDataScopesContract(input) {
57
58
  const limit = normalizeLimit(input.limit);
58
59
  const offset = normalizeOffset(input.offset);
59
- const result = input.storage.listScopes({
60
- scopePrefix: input.scopePrefix,
61
- limit,
62
- offset,
63
- });
64
- const scopes = await Promise.all(result.scopes.map(async (summary) => {
60
+ let page;
61
+ let total;
62
+ if (input.isVisible) {
63
+ // Filtered listing: walk every scope so the page and the total both
64
+ // describe the visible set (the index cannot filter by tombstone).
65
+ const visible = [];
66
+ for (let scan = 0;; scan += VISIBILITY_PAGE_SIZE) {
67
+ const batch = input.storage.listScopes({
68
+ scopePrefix: input.scopePrefix,
69
+ limit: VISIBILITY_PAGE_SIZE,
70
+ offset: scan,
71
+ });
72
+ for (const summary of batch.scopes) {
73
+ const latest = input.storage.findEntry({
74
+ scope: summary.scope,
75
+ at: summary.latestCollectedAt,
76
+ });
77
+ if (!latest || (await input.isVisible(summary.scope, latest))) {
78
+ visible.push(summary);
79
+ }
80
+ }
81
+ if (batch.scopes.length < VISIBILITY_PAGE_SIZE)
82
+ break;
83
+ }
84
+ total = visible.length;
85
+ page = visible.slice(offset, offset + limit);
86
+ }
87
+ else {
88
+ const result = input.storage.listScopes({
89
+ scopePrefix: input.scopePrefix,
90
+ limit,
91
+ offset,
92
+ });
93
+ page = result.scopes;
94
+ total = result.total;
95
+ }
96
+ const scopes = await Promise.all(page.map(async (summary) => {
65
97
  const entry = input.storage.findEntry({
66
98
  scope: summary.scope,
67
99
  at: summary.latestCollectedAt,
@@ -69,11 +101,9 @@ export async function listDataScopesContract(input) {
69
101
  if (!entry) {
70
102
  return summary;
71
103
  }
72
- const hasBlocks = typeof input.storage.canReadScopeBlocks === "function"
73
- ? await input.storage.canReadScopeBlocks(summary.scope, summary.latestCollectedAt)
74
- : typeof input.storage.hasScopeBlocks === "function"
75
- ? await input.storage.hasScopeBlocks(summary.scope, summary.latestCollectedAt)
76
- : false;
104
+ const hasBlocks = typeof input.storage.hasScopeBlocks === "function"
105
+ ? await input.storage.hasScopeBlocks(summary.scope, summary.latestCollectedAt)
106
+ : false;
77
107
  return {
78
108
  ...summary,
79
109
  dataStatus: hasBlocks ? "ready" : "indexing",
@@ -84,33 +114,53 @@ export async function listDataScopesContract(input) {
84
114
  ok: true,
85
115
  response: {
86
116
  scopes,
87
- total: result.total,
117
+ total,
88
118
  limit,
89
119
  offset,
90
120
  },
91
121
  };
92
122
  }
93
- export function listDataVersionsContract(input) {
123
+ export async function listDataVersionsContract(input) {
94
124
  const scopeResult = parseDataScopeContract(input.scopeParam);
95
125
  if (!scopeResult.ok)
96
126
  return scopeResult;
97
127
  const limit = normalizeLimit(input.limit);
98
128
  const offset = normalizeOffset(input.offset);
99
- const entries = input.storage.listVersions(scopeResult.scope, {
100
- limit,
101
- offset,
102
- });
129
+ let page;
130
+ let total;
131
+ if (input.isVisible) {
132
+ const visible = [];
133
+ for (let scan = 0;; scan += VISIBILITY_PAGE_SIZE) {
134
+ const batch = input.storage.listVersions(scopeResult.scope, {
135
+ limit: VISIBILITY_PAGE_SIZE,
136
+ offset: scan,
137
+ });
138
+ for (const entry of batch) {
139
+ if (await input.isVisible(scopeResult.scope, entry)) {
140
+ visible.push(entry);
141
+ }
142
+ }
143
+ if (batch.length < VISIBILITY_PAGE_SIZE)
144
+ break;
145
+ }
146
+ total = visible.length;
147
+ page = visible.slice(offset, offset + limit);
148
+ }
149
+ else {
150
+ page = input.storage.listVersions(scopeResult.scope, { limit, offset });
151
+ total = input.storage.countVersions(scopeResult.scope);
152
+ }
103
153
  return {
104
154
  ok: true,
105
155
  scope: scopeResult.scope,
106
156
  response: {
107
157
  scope: scopeResult.scope,
108
- versions: entries.map((entry) => ({
158
+ versions: page.map((entry) => ({
109
159
  fileId: entry.fileId,
110
160
  schemaId: entry.schemaId,
111
161
  collectedAt: entry.collectedAt,
112
162
  })),
113
- total: input.storage.countVersions(scopeResult.scope),
163
+ total,
114
164
  limit,
115
165
  offset,
116
166
  },
@@ -196,6 +246,7 @@ export async function ingestDataContract(input) {
196
246
  scope: scopeResult.scope,
197
247
  collectedAt: input.collectedAt,
198
248
  sizeBytes: writeResult.sizeBytes,
249
+ afterTombstoneVersion: input.afterTombstoneVersion ?? null,
199
250
  });
200
251
  return {
201
252
  ok: true,
@@ -287,6 +338,7 @@ export async function ingestBinaryDataContract(input) {
287
338
  scope: scopeResult.scope,
288
339
  collectedAt: input.collectedAt,
289
340
  sizeBytes: input.bytes.length,
341
+ afterTombstoneVersion: input.afterTombstoneVersion ?? null,
290
342
  });
291
343
  return {
292
344
  ok: true,
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/contracts/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/contracts/data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * HTTP surface of the compute layer, mounted under `/v1/derivatives`:
3
+ *
4
+ * POST /questions register (builder write auth or owner)
5
+ * GET /questions list (owner; builder with ?derivedScope=)
6
+ * GET /questions/:id status (owner or the registering builder)
7
+ * POST /questions/:id/recompute owner or the registering builder
8
+ * DELETE /questions/:id owner or the registering builder
9
+ *
10
+ * Builder authentication is the Write API's: a write-session bearer token
11
+ * plus the X-Vana-Write-Signature proof over the request, authorized for
12
+ * `write:<derivedScope>` (api-auth authorizeWrite). No new credential.
13
+ */
14
+ import type { PersonalServerApiAuthPort, PersonalServerApiDispatchOptions } from "../api/index.js";
15
+ import type { RecomputeScheduler } from "./scheduler.js";
16
+ import { type QuestionStore } from "./types.js";
17
+ /** Registration bodies are small; anything larger is refused up front. */
18
+ export declare const MAX_QUESTION_BODY_BYTES: number;
19
+ export interface PersonalServerDerivativesApiDeps {
20
+ auth: Pick<PersonalServerApiAuthPort, "authorizeOwner" | "authorizeWrite">;
21
+ /** Absent = the compute layer is not wired; every route answers 503. */
22
+ compute?: {
23
+ store: QuestionStore;
24
+ scheduler: Pick<RecomputeScheduler, "requestRecompute" | "markSourceChanged">;
25
+ } | null;
26
+ now?: () => Date;
27
+ createQuestionId?: () => string;
28
+ logger?: {
29
+ info?(payload: Record<string, unknown>, message: string): void;
30
+ };
31
+ }
32
+ export declare function handlePersonalServerDerivativesRequest(request: Request, deps: PersonalServerDerivativesApiDeps, options?: PersonalServerApiDispatchOptions): Promise<Response>;
33
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/derivatives/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,OAAO,KAAK,EACV,yBAAyB,EACzB,gCAAgC,EAEjC,MAAM,iBAAiB,CAAC;AAMzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,QAAY,CAAC;AAEjD,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;IAC3E,wEAAwE;IACxE,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,aAAa,CAAC;QACrB,SAAS,EAAE,IAAI,CACb,kBAAkB,EAClB,kBAAkB,GAAG,mBAAmB,CACzC,CAAC;KACH,GAAG,IAAI,CAAC;IACT,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KAChE,CAAC;CACH;AAkFD,wBAAsB,sCAAsC,CAC1D,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,gCAAgC,EACtC,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CAAC,QAAQ,CAAC,CAqLnB"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * HTTP surface of the compute layer, mounted under `/v1/derivatives`:
3
+ *
4
+ * POST /questions register (builder write auth or owner)
5
+ * GET /questions list (owner; builder with ?derivedScope=)
6
+ * GET /questions/:id status (owner or the registering builder)
7
+ * POST /questions/:id/recompute owner or the registering builder
8
+ * DELETE /questions/:id owner or the registering builder
9
+ *
10
+ * Builder authentication is the Write API's: a write-session bearer token
11
+ * plus the X-Vana-Write-Signature proof over the request, authorized for
12
+ * `write:<derivedScope>` (api-auth authorizeWrite). No new credential.
13
+ */
14
+ import { ContentTooLargeError, DerivativeComputeUnavailableError, DerivativeQuestionNotFoundError, DerivativeSourceNotGrantedError, ProtocolError, } from "../errors/catalog.js";
15
+ import { parseJsonObjectBody } from "../contracts/http.js";
16
+ import { createQuestionRegistration, parseQuestionInput, uncoveredSourceScopes, } from "./registration.js";
17
+ import { questionRegistrationView, } from "./types.js";
18
+ /** Registration bodies are small; anything larger is refused up front. */
19
+ export const MAX_QUESTION_BODY_BYTES = 16 * 1024;
20
+ function jsonResponse(body, init) {
21
+ const headers = new Headers(init?.headers);
22
+ headers.set("Content-Type", "application/json");
23
+ return new Response(JSON.stringify(body), { ...init, headers });
24
+ }
25
+ function errorResponse(status, errorCode, message) {
26
+ return jsonResponse({ error: { code: status, errorCode, message } }, { status });
27
+ }
28
+ function stripBasePath(pathname, basePath) {
29
+ if (!basePath || basePath === "/")
30
+ return pathname;
31
+ if (pathname === basePath)
32
+ return "/";
33
+ if (pathname.startsWith(`${basePath}/`))
34
+ return pathname.slice(basePath.length);
35
+ return pathname;
36
+ }
37
+ /**
38
+ * Authorize as the owner or, through the write-session path, as a builder
39
+ * holding `write:<scope>`. Returns the builder result or undefined (owner).
40
+ */
41
+ async function authorizeOwnerOrWriter(deps, request, scope) {
42
+ if (deps.auth.authorizeWrite) {
43
+ return (await deps.auth.authorizeWrite({ request, scope })) ?? undefined;
44
+ }
45
+ await deps.auth.authorizeOwner(request);
46
+ return undefined;
47
+ }
48
+ function sameBuilder(a, b) {
49
+ return a.toLowerCase() === b.toLowerCase();
50
+ }
51
+ /**
52
+ * The registration a caller may act on, or a 404 for everyone who may not:
53
+ * the owner sees every registration; a builder sees the ones it registered.
54
+ * An id the store does not hold is answered after owner auth, so a builder
55
+ * learns nothing from probing ids.
56
+ */
57
+ async function loadForCaller(deps, request, store, questionId) {
58
+ const registration = await store.get(questionId);
59
+ if (!registration) {
60
+ await deps.auth.authorizeOwner(request);
61
+ throw new DerivativeQuestionNotFoundError({ questionId });
62
+ }
63
+ const writer = await authorizeOwnerOrWriter(deps, request, registration.derivedScope);
64
+ if (writer) {
65
+ const by = registration.registeredBy;
66
+ if (by.kind !== "builder" || !sameBuilder(by.builder, writer.builder)) {
67
+ await writer.releaseProof?.();
68
+ throw new DerivativeQuestionNotFoundError({ questionId });
69
+ }
70
+ }
71
+ return { registration, writer };
72
+ }
73
+ export async function handlePersonalServerDerivativesRequest(request, deps, options = {}) {
74
+ try {
75
+ const url = new URL(request.url);
76
+ const pathname = stripBasePath(url.pathname, options.basePath);
77
+ const parts = pathname.split("/").filter(Boolean);
78
+ if (parts[0] !== "questions" || parts.length > 3) {
79
+ return errorResponse(404, "NOT_FOUND", "Not found");
80
+ }
81
+ const compute = deps.compute;
82
+ if (!compute)
83
+ throw new DerivativeComputeUnavailableError();
84
+ const { store, scheduler } = compute;
85
+ const now = deps.now ?? (() => new Date());
86
+ // /questions
87
+ if (parts.length === 1) {
88
+ if (request.method === "GET") {
89
+ const derivedScope = url.searchParams.get("derivedScope") ?? undefined;
90
+ if (derivedScope) {
91
+ const writer = await authorizeOwnerOrWriter(deps, request, derivedScope);
92
+ const registrations = await store.list({
93
+ derivedScope,
94
+ ...(writer ? { builder: writer.builder } : {}),
95
+ });
96
+ return jsonResponse({
97
+ questions: registrations.map(questionRegistrationView),
98
+ });
99
+ }
100
+ await deps.auth.authorizeOwner(request);
101
+ const registrations = await store.list();
102
+ return jsonResponse({
103
+ questions: registrations.map(questionRegistrationView),
104
+ });
105
+ }
106
+ if (request.method === "POST") {
107
+ // The derived scope decides which write grant must cover the call,
108
+ // so the body is read (from a clone: the proof check reads it too)
109
+ // before authorization. Nothing is stored until auth passed.
110
+ const declared = Number(request.headers.get("content-length") ?? "0");
111
+ if (declared > MAX_QUESTION_BODY_BYTES) {
112
+ throw new ContentTooLargeError({ max: MAX_QUESTION_BODY_BYTES });
113
+ }
114
+ const bodyBytes = new Uint8Array(await request.clone().arrayBuffer());
115
+ if (bodyBytes.byteLength > MAX_QUESTION_BODY_BYTES) {
116
+ throw new ContentTooLargeError({ max: MAX_QUESTION_BODY_BYTES });
117
+ }
118
+ const parsed = await parseJsonObjectBody(request.clone(), "Request body must be valid JSON");
119
+ if (!parsed.ok) {
120
+ return jsonResponse(parsed.result.body, {
121
+ status: parsed.result.status,
122
+ });
123
+ }
124
+ const rawScope = parsed.body.derivedScope;
125
+ const scopeForAuth = typeof rawScope === "string" ? rawScope : "";
126
+ const writer = await authorizeOwnerOrWriter(deps, request, scopeForAuth);
127
+ const registeredBy = writer
128
+ ? {
129
+ kind: "builder",
130
+ builder: writer.builder,
131
+ grantId: writer.grantId,
132
+ }
133
+ : { kind: "owner" };
134
+ let registration;
135
+ try {
136
+ if (writer) {
137
+ // Consent: the answer exposes the sources to the builder, so
138
+ // every source must be read-granted to it. Fail closed when
139
+ // the auth port did not hand over the grant's scopes.
140
+ const input = parseQuestionInput(parsed.body);
141
+ const uncovered = uncoveredSourceScopes(input.sourceScopes, writer.grantScopes);
142
+ if (uncovered.length > 0) {
143
+ throw new DerivativeSourceNotGrantedError({ scopes: uncovered });
144
+ }
145
+ }
146
+ registration = await createQuestionRegistration({
147
+ body: parsed.body,
148
+ registeredBy,
149
+ store,
150
+ questionId: deps.createQuestionId?.() ?? crypto.randomUUID(),
151
+ now,
152
+ });
153
+ }
154
+ catch (err) {
155
+ // Nothing stored: hand the builder's proof back for a retry.
156
+ await writer?.releaseProof?.();
157
+ throw err;
158
+ }
159
+ deps.logger?.info?.({
160
+ questionId: registration.questionId,
161
+ derivedScope: registration.derivedScope,
162
+ sourceScopes: registration.sourceScopes,
163
+ registeredBy: registeredBy.kind,
164
+ ...(writer
165
+ ? { builder: writer.builder, grantId: writer.grantId }
166
+ : {}),
167
+ }, "Derivative question registered");
168
+ scheduler.requestRecompute(registration.questionId, {
169
+ immediate: true,
170
+ });
171
+ return jsonResponse(questionRegistrationView(registration), {
172
+ status: 201,
173
+ });
174
+ }
175
+ return errorResponse(405, "METHOD_NOT_ALLOWED", "Method not allowed");
176
+ }
177
+ const questionId = decodeURIComponent(parts[1] ?? "");
178
+ // /questions/:id/recompute
179
+ if (parts.length === 3) {
180
+ if (parts[2] !== "recompute") {
181
+ return errorResponse(404, "NOT_FOUND", "Not found");
182
+ }
183
+ if (request.method !== "POST") {
184
+ return errorResponse(405, "METHOD_NOT_ALLOWED", "Method not allowed");
185
+ }
186
+ // Owner, or the registering builder (its retry after a transient
187
+ // failure); same gate as GET / DELETE.
188
+ const { registration } = await loadForCaller(deps, request, store, questionId);
189
+ scheduler.requestRecompute(questionId, { immediate: true });
190
+ return jsonResponse({
191
+ questionId,
192
+ status: registration.status === "pending" ? "pending" : "stale",
193
+ derivedScope: registration.derivedScope,
194
+ }, { status: 202 });
195
+ }
196
+ // /questions/:id
197
+ if (request.method === "GET") {
198
+ const { registration } = await loadForCaller(deps, request, store, questionId);
199
+ return jsonResponse(questionRegistrationView(registration));
200
+ }
201
+ if (request.method === "DELETE") {
202
+ const { registration } = await loadForCaller(deps, request, store, questionId);
203
+ await store.delete(questionId);
204
+ deps.logger?.info?.({ questionId, derivedScope: registration.derivedScope }, "Derivative question deleted");
205
+ return jsonResponse({ questionId, deleted: true });
206
+ }
207
+ return errorResponse(405, "METHOD_NOT_ALLOWED", "Method not allowed");
208
+ }
209
+ catch (err) {
210
+ if (err instanceof ProtocolError) {
211
+ return jsonResponse(err.toJSON(), { status: err.code });
212
+ }
213
+ return errorResponse(500, "INTERNAL_ERROR", "Internal server error");
214
+ }
215
+ }
216
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/derivatives/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * The compute job: answer one registered question from local data and
3
+ * write the answer as a derivative record (owner path, `$lineage` = the
4
+ * source data points).
5
+ */
6
+ import type { ScopeDeletionTracker } from "../sync/scope-deletions.js";
7
+ import type { DataStoragePort, RuntimeAvailabilityPort } from "../ports/index.js";
8
+ import { type DataWritePolicyPorts } from "../policy/data-write.js";
9
+ import { type InferenceProvider } from "./inference.js";
10
+ import type { QuestionRegistration, QuestionStore } from "./types.js";
11
+ export interface ComputeLogger {
12
+ info?(payload: Record<string, unknown>, message: string): void;
13
+ warn?(payload: Record<string, unknown>, message: string): void;
14
+ }
15
+ export interface ComputeSyncNotifier {
16
+ notifyNewData?(): void;
17
+ trigger?(): Promise<void>;
18
+ }
19
+ export interface QuestionComputeDeps {
20
+ storage: DataStoragePort;
21
+ store: QuestionStore;
22
+ provider: InferenceProvider;
23
+ /** Required: lineage ids are keccak256(owner, scope). */
24
+ serverOwner: `0x${string}` | undefined;
25
+ /** Newest-first items kept per source scope (default 50). */
26
+ maxSourceItems?: number;
27
+ maxSourceChars?: number;
28
+ maxTokens?: number;
29
+ /** Uploads the derivative after it is written locally. */
30
+ syncManager?: ComputeSyncNotifier | null;
31
+ /** Re-add marker, same as an HTTP ingest (see api/index.ts). */
32
+ scopeDeletions?: ScopeDeletionTracker;
33
+ /**
34
+ * When present, a builder-registered question re-checks its write grant
35
+ * before every compute (revoked / expired / scope no longer covered =>
36
+ * failed, no inference call). Owner registrations skip the check.
37
+ */
38
+ writePolicyPorts?: DataWritePolicyPorts;
39
+ /**
40
+ * Called after the derivative is written and the question marked ready,
41
+ * so a question that reads THIS derived scope recomputes in turn
42
+ * (A -> B -> C chains). The compute path never goes through the HTTP
43
+ * ingest hook.
44
+ */
45
+ onDerivedWritten?: (event: {
46
+ scope: string;
47
+ collectedAt: string;
48
+ lineageSources: string[];
49
+ }) => void;
50
+ /** When unavailable the compute is skipped and the status left as is. */
51
+ runtimeAvailability?: RuntimeAvailabilityPort;
52
+ /**
53
+ * Backoff between retries of a transient inference or gateway failure
54
+ * (default 1s, 4s: three attempts). Tests pass zeros.
55
+ */
56
+ retryDelaysMs?: readonly number[];
57
+ sleep?: (ms: number) => Promise<void>;
58
+ now?: () => Date;
59
+ logger?: ComputeLogger;
60
+ }
61
+ export type ComputeOutcome = {
62
+ status: "ready";
63
+ registration: QuestionRegistration;
64
+ } | {
65
+ status: "failed";
66
+ registration: QuestionRegistration;
67
+ error: string;
68
+ } | {
69
+ status: "skipped";
70
+ reason: "unknown-question" | "runtime-unavailable";
71
+ };
72
+ /** The record written into the derived scope. */
73
+ export interface DerivativeAnswerRecord {
74
+ questionId: string;
75
+ question: string;
76
+ answer: string;
77
+ evidence: string | null;
78
+ model: string;
79
+ computedAt: string;
80
+ sources: Array<{
81
+ scope: string;
82
+ version: number;
83
+ collectedAt: string;
84
+ }>;
85
+ /** Caller-side lineage field, mirrored by the server into `$lineage`. */
86
+ lineage: `0x${string}`[];
87
+ inference?: {
88
+ receiptId?: string;
89
+ aciIdentity?: string;
90
+ };
91
+ [key: string]: unknown;
92
+ }
93
+ /**
94
+ * Version stamp for the derived record, second precision like an HTTP
95
+ * ingest. A recompute inside the same second as the previous one would
96
+ * collide on the (scope, collectedAt) path, so the stamp advances past any
97
+ * version the scope already holds (bounded: at most one minute ahead).
98
+ */
99
+ export declare function collectedAtStamp(now: () => Date, isTaken: (collectedAt: string) => boolean): string;
100
+ /**
101
+ * Compute one question end to end. Never throws for a compute failure: the
102
+ * registration is marked `failed` with a short reason and the outcome says
103
+ * so. Throws only when the store itself fails.
104
+ */
105
+ export declare function computeQuestion(questionId: string, deps: QuestionComputeDeps): Promise<ComputeOutcome>;
106
+ //# sourceMappingURL=compute.d.ts.map