@happyvertical/smrt-core 0.57.30 → 0.57.32

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 (55) hide show
  1. package/AGENTS.md +1 -0
  2. package/README.md +23 -0
  3. package/agents/deployment-phases.md +71 -0
  4. package/dist/browser.d.ts +1 -0
  5. package/dist/browser.d.ts.map +1 -1
  6. package/dist/browser.js +2 -1
  7. package/dist/class.d.ts.map +1 -1
  8. package/dist/class.js +1 -1
  9. package/dist/class.js.map +1 -1
  10. package/dist/consumer-plugin/index.d.ts +2 -2
  11. package/dist/consumer-plugin/index.d.ts.map +1 -1
  12. package/dist/consumer-plugin/index.js.map +1 -1
  13. package/dist/external-agent-usage.d.ts +90 -0
  14. package/dist/external-agent-usage.d.ts.map +1 -0
  15. package/dist/external-agent-usage.js +272 -0
  16. package/dist/external-agent-usage.js.map +1 -0
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -1
  20. package/dist/manifest/static-manifest.js +1 -1
  21. package/dist/manifest/static-manifest.js.map +1 -1
  22. package/dist/manifest/store.js +1 -1
  23. package/dist/manifest.json +1 -1
  24. package/dist/migrations/deployment-phase-tracker.d.ts +57 -0
  25. package/dist/migrations/deployment-phase-tracker.d.ts.map +1 -0
  26. package/dist/migrations/deployment-phase-tracker.js +179 -0
  27. package/dist/migrations/deployment-phase-tracker.js.map +1 -0
  28. package/dist/migrations/index.d.ts +1 -0
  29. package/dist/migrations/index.d.ts.map +1 -1
  30. package/dist/migrations/index.js +2 -1
  31. package/dist/migrations.js +2 -1
  32. package/dist/smrt-knowledge.json +11 -5
  33. package/dist/system/retention.d.ts.map +1 -1
  34. package/dist/system/retention.js +1 -0
  35. package/dist/system/retention.js.map +1 -1
  36. package/dist/vite-plugin/asset-url-compatibility.d.ts +2 -2
  37. package/dist/vite-plugin/asset-url-compatibility.d.ts.map +1 -1
  38. package/dist/vite-plugin/asset-url-compatibility.js +13 -3
  39. package/dist/vite-plugin/asset-url-compatibility.js.map +1 -1
  40. package/dist/vite-plugin/index.d.ts +5 -2
  41. package/dist/vite-plugin/index.d.ts.map +1 -1
  42. package/dist/vite-plugin/index.js.map +1 -1
  43. package/dist/vite-plugin/plugin-contract.d.ts +164 -0
  44. package/dist/vite-plugin/plugin-contract.d.ts.map +1 -0
  45. package/dist/vite-plugin/sveltekit-route-coordinator.d.ts +5 -5
  46. package/dist/vite-plugin/sveltekit-route-coordinator.d.ts.map +1 -1
  47. package/dist/vite-plugin/sveltekit-route-coordinator.js.map +1 -1
  48. package/dist/vite-plugin/worker-registration.d.ts +4 -4
  49. package/dist/vite-plugin/worker-registration.d.ts.map +1 -1
  50. package/dist/vite-plugin/worker-registration.js.map +1 -1
  51. package/dist/vite-preset/index.d.ts +2 -2
  52. package/dist/vite-preset/index.d.ts.map +1 -1
  53. package/dist/vite-preset/index.js +9 -1
  54. package/dist/vite-preset/index.js.map +1 -1
  55. package/package.json +4 -4
@@ -0,0 +1,90 @@
1
+ /** Provider-measured external usage, separate from hosted AI billing. */
2
+ import type { DatabaseInterface } from '@happyvertical/sql';
3
+ export declare const EXTERNAL_AGENT_USAGE_OPERATION = "external-agent";
4
+ export declare const EXTERNAL_AGENT_COUNTERS: readonly ["inputTokens", "outputTokens", "totalTokens", "cacheReadTokens", "cacheWriteTokens", "reasoningTokens"];
5
+ export type ExternalAgentCounter = (typeof EXTERNAL_AGENT_COUNTERS)[number];
6
+ export type ExternalAgentCounters = Partial<Record<ExternalAgentCounter, number | null>>;
7
+ /** Trusted ownership binding supplied by the authenticated application. */
8
+ export interface ExternalAgentUsageBinding {
9
+ tenantId: string;
10
+ workspaceId: string;
11
+ projectId: string;
12
+ taskId: string;
13
+ sessionId: string;
14
+ parentSessionId?: string;
15
+ role: string;
16
+ }
17
+ export interface ExternalAgentUsageReport {
18
+ version: 1;
19
+ binding: ExternalAgentUsageBinding;
20
+ provider: string;
21
+ model: string;
22
+ provenance: {
23
+ harness: string;
24
+ source: string;
25
+ eventId: string;
26
+ };
27
+ observedAt: string;
28
+ sequence: number;
29
+ epoch: number;
30
+ basis: 'delta' | 'cumulative';
31
+ /** First cumulative snapshot of each epoch: known zero origin or unknown baseline. */
32
+ baseline: 'zero' | 'unknown';
33
+ scope: 'exclusive';
34
+ inputIncludesCache: boolean;
35
+ outputIncludesReasoning: boolean;
36
+ counters: ExternalAgentCounters;
37
+ }
38
+ export interface ExternalAgentUsageReporter {
39
+ reporterId: string;
40
+ reporterType: 'agent' | 'user';
41
+ }
42
+ export interface ExternalAgentUsageReceipt {
43
+ reporter?: ExternalAgentUsageReporter;
44
+ id: string;
45
+ report: ExternalAgentUsageReport;
46
+ delta: Record<ExternalAgentCounter, number | null>;
47
+ }
48
+ export interface ExternalAgentUsageSummary {
49
+ binding: ExternalAgentUsageBinding;
50
+ source: 'external-agent';
51
+ reports: number;
52
+ latest: ExternalAgentUsageReport | null;
53
+ counters: Record<ExternalAgentCounter, number | null>;
54
+ complete: boolean;
55
+ coverage: Record<ExternalAgentCounter, {
56
+ knownReports: number;
57
+ unknownReports: number;
58
+ }>;
59
+ }
60
+ export declare class ExternalAgentUsageError extends Error {
61
+ readonly code: 'invalid_input' | 'conflict';
62
+ constructor(code: 'invalid_input' | 'conflict', message: string);
63
+ }
64
+ /** Validate and copy only the public structured contract; arbitrary tags are refused. */
65
+ export declare function normalizeExternalAgentUsageReport(value: ExternalAgentUsageReport): ExternalAgentUsageReport;
66
+ /**
67
+ * Recorder accepts a trusted scope separately from an untrusted report. Caller
68
+ * authorizes scope ownership before construction. No ambient tenant inference.
69
+ * Existing system tables must be bootstrapped before opening a transaction.
70
+ */
71
+ export declare class ExternalAgentUsageRecorder {
72
+ private readonly db;
73
+ private readonly binding;
74
+ private readonly reporter?;
75
+ constructor(db: DatabaseInterface, trustedBinding: ExternalAgentUsageBinding, reporter?: ExternalAgentUsageReporter);
76
+ record(input: ExternalAgentUsageReport): Promise<ExternalAgentUsageReceipt>;
77
+ /** Safe per-session projection; never estimates cost or coalesces unknown to zero. */
78
+ summarize(): Promise<ExternalAgentUsageSummary>;
79
+ }
80
+ /** Trusted project ownership scope, authorized by the application before reading. */
81
+ export interface ExternalAgentUsageQuery {
82
+ tenantId: string;
83
+ workspaceId: string;
84
+ projectId: string;
85
+ taskId?: string;
86
+ sessionId?: string;
87
+ }
88
+ /** Per-session summaries only: inclusive parent totals are never added to children. */
89
+ export declare function summarizeExternalAgentUsage(db: DatabaseInterface, scope: ExternalAgentUsageQuery): Promise<ExternalAgentUsageSummary[]>;
90
+ //# sourceMappingURL=external-agent-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-agent-usage.d.ts","sourceRoot":"","sources":["../src/external-agent-usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,272 @@
1
+ import { isEmbeddedDatabase, withEmbeddedWriteTransaction } from "./embedded-write-queue.js";
2
+ import { sha256Hex } from "./utils/sha256.js";
3
+ //#region src/external-agent-usage.ts
4
+ var EXTERNAL_AGENT_USAGE_OPERATION = "external-agent";
5
+ var EXTERNAL_AGENT_COUNTERS = [
6
+ "inputTokens",
7
+ "outputTokens",
8
+ "totalTokens",
9
+ "cacheReadTokens",
10
+ "cacheWriteTokens",
11
+ "reasoningTokens"
12
+ ];
13
+ var ExternalAgentUsageError = class extends Error {
14
+ code;
15
+ constructor(code, message) {
16
+ super(`External agent usage: ${message}`);
17
+ this.code = code;
18
+ this.name = "ExternalAgentUsageError";
19
+ }
20
+ };
21
+ function reject(message, code = "invalid_input") {
22
+ throw new ExternalAgentUsageError(code, message);
23
+ }
24
+ function object(value, keys) {
25
+ if (!value || typeof value !== "object" || Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null || Array.isArray(value) || Object.keys(value).some((key) => !keys.includes(key))) reject("invalid fields");
26
+ }
27
+ function text(value) {
28
+ if (typeof value !== "string" || !value.trim() || value.length > 256 || [...value].some((character) => character.charCodeAt(0) < 32)) reject("invalid identifier");
29
+ }
30
+ function integer(value) {
31
+ if (!Number.isSafeInteger(value) || value < 0) reject("invalid counter or sequence");
32
+ }
33
+ var bindingKeys = [
34
+ "tenantId",
35
+ "workspaceId",
36
+ "projectId",
37
+ "taskId",
38
+ "sessionId",
39
+ "parentSessionId",
40
+ "role"
41
+ ];
42
+ function binding(value) {
43
+ object(value, bindingKeys);
44
+ const result = {};
45
+ for (const key of bindingKeys) {
46
+ const field = value[key];
47
+ if (key === "parentSessionId" && field === void 0) continue;
48
+ text(field);
49
+ result[key] = field;
50
+ }
51
+ if (result.sessionId === result.parentSessionId) reject("self parent");
52
+ return result;
53
+ }
54
+ /** Validate and copy only the public structured contract; arbitrary tags are refused. */
55
+ function normalizeExternalAgentUsageReport(value) {
56
+ object(value, [
57
+ "version",
58
+ "binding",
59
+ "provider",
60
+ "model",
61
+ "provenance",
62
+ "observedAt",
63
+ "sequence",
64
+ "epoch",
65
+ "basis",
66
+ "baseline",
67
+ "scope",
68
+ "inputIncludesCache",
69
+ "outputIncludesReasoning",
70
+ "counters"
71
+ ]);
72
+ if (value.version !== 1 || value.scope !== "exclusive" || !["delta", "cumulative"].includes(value.basis) || !["zero", "unknown"].includes(value.baseline)) reject("unsupported measurement contract");
73
+ text(value.provider);
74
+ text(value.model);
75
+ text(value.observedAt);
76
+ if (!Number.isFinite(Date.parse(value.observedAt))) reject("invalid timestamp");
77
+ integer(value.sequence);
78
+ integer(value.epoch);
79
+ if (typeof value.inputIncludesCache !== "boolean" || typeof value.outputIncludesReasoning !== "boolean") reject("missing component semantics");
80
+ object(value.provenance, [
81
+ "harness",
82
+ "source",
83
+ "eventId"
84
+ ]);
85
+ text(value.provenance.harness);
86
+ text(value.provenance.source);
87
+ text(value.provenance.eventId);
88
+ object(value.counters, [...EXTERNAL_AGENT_COUNTERS]);
89
+ const counters = {};
90
+ for (const key of EXTERNAL_AGENT_COUNTERS) {
91
+ const count = value.counters[key];
92
+ if (count !== void 0 && count !== null) integer(count);
93
+ counters[key] = count ?? null;
94
+ }
95
+ if (value.inputIncludesCache && counters.inputTokens != null) {
96
+ const components = (counters.cacheReadTokens ?? 0) + (counters.cacheWriteTokens ?? 0);
97
+ if (!Number.isSafeInteger(components) || components > counters.inputTokens) reject("cache exceeds inclusive input");
98
+ }
99
+ if (value.outputIncludesReasoning && counters.outputTokens != null && (counters.reasoningTokens ?? 0) > counters.outputTokens) reject("reasoning exceeds inclusive output");
100
+ return {
101
+ version: 1,
102
+ binding: binding(value.binding),
103
+ provider: value.provider,
104
+ model: value.model,
105
+ provenance: {
106
+ harness: value.provenance.harness,
107
+ source: value.provenance.source,
108
+ eventId: value.provenance.eventId
109
+ },
110
+ observedAt: new Date(value.observedAt).toISOString(),
111
+ sequence: value.sequence,
112
+ epoch: value.epoch,
113
+ basis: value.basis,
114
+ baseline: value.baseline,
115
+ scope: "exclusive",
116
+ inputIncludesCache: value.inputIncludesCache,
117
+ outputIncludesReasoning: value.outputIncludesReasoning,
118
+ counters
119
+ };
120
+ }
121
+ function streamId(scope) {
122
+ return `external-agent:${sha256Hex(JSON.stringify([scope.tenantId, scope.sessionId]))}`;
123
+ }
124
+ function rowId(scope, sequence) {
125
+ return `${streamId(scope)}:${sequence}`;
126
+ }
127
+ async function read(db, scope, sequence) {
128
+ const row = await db.get("_smrt_ai_usage", {
129
+ id: rowId(scope, sequence),
130
+ tenant_id: scope.tenantId,
131
+ operation: EXTERNAL_AGENT_USAGE_OPERATION
132
+ });
133
+ if (!row) return null;
134
+ return JSON.parse(String(row.tags));
135
+ }
136
+ function same(a, b) {
137
+ return JSON.stringify(a) === JSON.stringify(b);
138
+ }
139
+ /**
140
+ * Recorder accepts a trusted scope separately from an untrusted report. Caller
141
+ * authorizes scope ownership before construction. No ambient tenant inference.
142
+ * Existing system tables must be bootstrapped before opening a transaction.
143
+ */
144
+ var ExternalAgentUsageRecorder = class {
145
+ db;
146
+ binding;
147
+ reporter;
148
+ constructor(db, trustedBinding, reporter) {
149
+ this.db = db;
150
+ this.binding = binding(trustedBinding);
151
+ if (reporter !== void 0) {
152
+ object(reporter, ["reporterId", "reporterType"]);
153
+ text(reporter.reporterId);
154
+ if (!["agent", "user"].includes(reporter.reporterType)) reject("invalid reporter type");
155
+ this.reporter = {
156
+ reporterId: reporter.reporterId,
157
+ reporterType: reporter.reporterType
158
+ };
159
+ }
160
+ }
161
+ async record(input) {
162
+ const report = normalizeExternalAgentUsageReport(input);
163
+ if (!same(report.binding, this.binding)) reject("ownership binding mismatch");
164
+ return withEmbeddedWriteTransaction(this.db, isEmbeddedDatabase(this.db), async (tx) => {
165
+ const existing = await read(tx, this.binding, report.sequence);
166
+ if (existing) {
167
+ if (!same(existing.report, report)) reject("conflicting replay", "conflict");
168
+ return existing;
169
+ }
170
+ const previous = report.sequence === 0 ? null : await read(tx, this.binding, report.sequence - 1);
171
+ if (report.sequence === 0 ? report.epoch !== 0 : !previous) reject("out of order sequence", "conflict");
172
+ let snapshots = [];
173
+ if (previous) {
174
+ const last = previous.report;
175
+ if (!same(last.binding, report.binding) || last.provider !== report.provider || last.model !== report.model || last.basis !== report.basis || last.inputIncludesCache !== report.inputIncludesCache || last.outputIncludesReasoning !== report.outputIncludesReasoning || last.provenance.harness !== report.provenance.harness || last.provenance.source !== report.provenance.source) reject("stream attribution changed", "conflict");
176
+ if (report.epoch !== last.epoch && report.epoch !== last.epoch + 1) reject("invalid reset epoch", "conflict");
177
+ if (report.epoch === last.epoch && report.baseline !== last.baseline) reject("baseline changed without reset", "conflict");
178
+ if (Date.parse(report.observedAt) < Date.parse(last.observedAt)) reject("timestamp reordered", "conflict");
179
+ snapshots = (await tx.query("SELECT tags FROM _smrt_ai_usage WHERE tenant_id = ? AND class_name = ? AND operation = 'external-agent' AND id LIKE 'external-agent:%'", this.binding.tenantId, streamId(this.binding))).rows.map((row) => JSON.parse(String(row.tags)));
180
+ if (snapshots.some((row) => row.report.sequence !== report.sequence && row.report.provenance.eventId === report.provenance.eventId)) reject("event already recorded", "conflict");
181
+ }
182
+ const delta = {};
183
+ for (const key of EXTERNAL_AGENT_COUNTERS) {
184
+ const current = report.counters[key] ?? null;
185
+ const last = previous?.report;
186
+ const before = last?.counters[key] ?? null;
187
+ if (report.basis === "cumulative" && current !== null) {
188
+ const latestKnown = snapshots.reduce((latest, row) => row.report.epoch === report.epoch && row.report.sequence < report.sequence && row.report.counters[key] != null && (!latest || row.report.sequence > latest.report.sequence) ? row : latest, void 0);
189
+ if (latestKnown && current < latestKnown.report.counters[key]) reject("counter decreased without reset", "conflict");
190
+ }
191
+ if (report.basis === "delta") delta[key] = current;
192
+ else if (!last || report.epoch !== last.epoch) delta[key] = report.baseline === "zero" ? current : null;
193
+ else delta[key] = current !== null && before !== null ? current - before : null;
194
+ }
195
+ const receipt = {
196
+ id: rowId(this.binding, report.sequence),
197
+ report,
198
+ delta,
199
+ ...this.reporter ? { reporter: { ...this.reporter } } : {}
200
+ };
201
+ if ((await tx.query(`INSERT INTO _smrt_ai_usage (id,provider,model,operation,prompt_tokens,completion_tokens,total_tokens,estimated_cost,duration,class_name,tenant_id,tags,created_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?) ON CONFLICT (id) DO NOTHING RETURNING id`, receipt.id, report.provider, report.model, "external-agent", delta.inputTokens, delta.outputTokens, delta.totalTokens, null, 0, streamId(this.binding), this.binding.tenantId, JSON.stringify(receipt), report.observedAt)).rows.length) return receipt;
202
+ const winner = await read(tx, this.binding, report.sequence);
203
+ if (!winner || !same(winner.report, report)) reject("conflicting concurrent replay", "conflict");
204
+ return winner;
205
+ }, true);
206
+ }
207
+ /** Safe per-session projection; never estimates cost or coalesces unknown to zero. */
208
+ async summarize() {
209
+ const receipts = (await this.db.query("SELECT tags FROM _smrt_ai_usage WHERE tenant_id = ? AND class_name = ? AND operation = ? AND id LIKE 'external-agent:%'", this.binding.tenantId, streamId(this.binding), EXTERNAL_AGENT_USAGE_OPERATION)).rows.map((row) => JSON.parse(String(row.tags))).sort((a, b) => a.report.sequence - b.report.sequence);
210
+ if (receipts.some((row) => !same(row.report.binding, this.binding))) reject("ownership binding mismatch");
211
+ const counters = {};
212
+ for (const key of EXTERNAL_AGENT_COUNTERS) {
213
+ let total = receipts.length ? 0 : null;
214
+ for (const row of receipts) {
215
+ const count = row.delta[key];
216
+ if (count === null || total === null) total = null;
217
+ else {
218
+ total += count;
219
+ if (!Number.isSafeInteger(total)) reject("summary exceeds safe integer");
220
+ }
221
+ }
222
+ counters[key] = total;
223
+ }
224
+ const coverage = {};
225
+ for (const key of EXTERNAL_AGENT_COUNTERS) {
226
+ const knownReports = receipts.filter((row) => row.delta[key] !== null).length;
227
+ coverage[key] = {
228
+ knownReports,
229
+ unknownReports: receipts.length - knownReports
230
+ };
231
+ }
232
+ return {
233
+ binding: { ...this.binding },
234
+ source: "external-agent",
235
+ reports: receipts.length,
236
+ latest: receipts.at(-1)?.report ?? null,
237
+ counters,
238
+ complete: EXTERNAL_AGENT_COUNTERS.every((key) => counters[key] !== null),
239
+ coverage
240
+ };
241
+ }
242
+ };
243
+ /** Per-session summaries only: inclusive parent totals are never added to children. */
244
+ async function summarizeExternalAgentUsage(db, scope) {
245
+ object(scope, [
246
+ "tenantId",
247
+ "workspaceId",
248
+ "projectId",
249
+ "taskId",
250
+ "sessionId"
251
+ ]);
252
+ text(scope.tenantId);
253
+ text(scope.workspaceId);
254
+ text(scope.projectId);
255
+ if (scope.taskId !== void 0) text(scope.taskId);
256
+ if (scope.sessionId !== void 0) text(scope.sessionId);
257
+ const result = await db.query("SELECT tags FROM _smrt_ai_usage WHERE tenant_id = ? AND operation = ? AND id LIKE 'external-agent:%'", scope.tenantId, EXTERNAL_AGENT_USAGE_OPERATION);
258
+ const sessions = /* @__PURE__ */ new Map();
259
+ for (const row of result.rows) {
260
+ const candidate = JSON.parse(String(row.tags)).report.binding;
261
+ if (candidate.tenantId !== scope.tenantId) reject("persisted tenant binding mismatch");
262
+ if (candidate.workspaceId !== scope.workspaceId || candidate.projectId !== scope.projectId || scope.taskId !== void 0 && candidate.taskId !== scope.taskId || scope.sessionId !== void 0 && candidate.sessionId !== scope.sessionId) continue;
263
+ sessions.set(candidate.sessionId, candidate);
264
+ }
265
+ const summaries = [];
266
+ for (const candidate of sessions.values()) summaries.push(await new ExternalAgentUsageRecorder(db, candidate).summarize());
267
+ return summaries;
268
+ }
269
+ //#endregion
270
+ export { EXTERNAL_AGENT_COUNTERS, EXTERNAL_AGENT_USAGE_OPERATION, ExternalAgentUsageError, ExternalAgentUsageRecorder, normalizeExternalAgentUsageReport, summarizeExternalAgentUsage };
271
+
272
+ //# sourceMappingURL=external-agent-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-agent-usage.js","names":[],"sources":["../src/external-agent-usage.ts"],"sourcesContent":["/** Provider-measured external usage, separate from hosted AI billing. */\nimport type { DatabaseInterface } from '@happyvertical/sql';\nimport {\n isEmbeddedDatabase,\n withEmbeddedWriteTransaction,\n} from './embedded-write-queue.js';\nimport { sha256Hex } from './utils/sha256.js';\n\nexport const EXTERNAL_AGENT_USAGE_OPERATION = 'external-agent';\nexport const EXTERNAL_AGENT_COUNTERS = [\n 'inputTokens',\n 'outputTokens',\n 'totalTokens',\n 'cacheReadTokens',\n 'cacheWriteTokens',\n 'reasoningTokens',\n] as const;\nexport type ExternalAgentCounter = (typeof EXTERNAL_AGENT_COUNTERS)[number];\nexport type ExternalAgentCounters = Partial<\n Record<ExternalAgentCounter, number | null>\n>;\n/** Trusted ownership binding supplied by the authenticated application. */\nexport interface ExternalAgentUsageBinding {\n tenantId: string;\n workspaceId: string;\n projectId: string;\n taskId: string;\n sessionId: string;\n parentSessionId?: string;\n role: string;\n}\nexport interface ExternalAgentUsageReport {\n version: 1;\n binding: ExternalAgentUsageBinding;\n provider: string;\n model: string;\n provenance: { harness: string; source: string; eventId: string };\n observedAt: string;\n sequence: number;\n epoch: number;\n basis: 'delta' | 'cumulative';\n /** First cumulative snapshot of each epoch: known zero origin or unknown baseline. */\n baseline: 'zero' | 'unknown';\n scope: 'exclusive';\n inputIncludesCache: boolean;\n outputIncludesReasoning: boolean;\n counters: ExternalAgentCounters;\n}\nexport interface ExternalAgentUsageReporter {\n reporterId: string;\n reporterType: 'agent' | 'user';\n}\nexport interface ExternalAgentUsageReceipt {\n reporter?: ExternalAgentUsageReporter;\n id: string;\n report: ExternalAgentUsageReport;\n delta: Record<ExternalAgentCounter, number | null>;\n}\nexport interface ExternalAgentUsageSummary {\n binding: ExternalAgentUsageBinding;\n source: 'external-agent';\n reports: number;\n latest: ExternalAgentUsageReport | null;\n counters: Record<ExternalAgentCounter, number | null>;\n complete: boolean;\n coverage: Record<\n ExternalAgentCounter,\n { knownReports: number; unknownReports: number }\n >;\n}\nexport class ExternalAgentUsageError extends Error {\n constructor(\n readonly code: 'invalid_input' | 'conflict',\n message: string,\n ) {\n super(`External agent usage: ${message}`);\n this.name = 'ExternalAgentUsageError';\n }\n}\nfunction reject(\n message: string,\n code: 'invalid_input' | 'conflict' = 'invalid_input',\n): never {\n throw new ExternalAgentUsageError(code, message);\n}\nfunction object(\n value: unknown,\n keys: string[],\n): asserts value is Record<string, unknown> {\n if (\n !value ||\n typeof value !== 'object' ||\n (Object.getPrototypeOf(value) !== Object.prototype &&\n Object.getPrototypeOf(value) !== null) ||\n Array.isArray(value) ||\n Object.keys(value).some((key) => !keys.includes(key))\n )\n reject('invalid fields');\n}\nfunction text(value: unknown): asserts value is string {\n if (\n typeof value !== 'string' ||\n !value.trim() ||\n value.length > 256 ||\n [...value].some((character) => character.charCodeAt(0) < 32)\n )\n reject('invalid identifier');\n}\nfunction integer(value: unknown): asserts value is number {\n if (!Number.isSafeInteger(value) || (value as number) < 0)\n reject('invalid counter or sequence');\n}\nconst bindingKeys = [\n 'tenantId',\n 'workspaceId',\n 'projectId',\n 'taskId',\n 'sessionId',\n 'parentSessionId',\n 'role',\n];\nfunction binding(value: ExternalAgentUsageBinding): ExternalAgentUsageBinding {\n object(value, bindingKeys);\n const result: Record<string, string> = {};\n for (const key of bindingKeys) {\n const field = value[key as keyof ExternalAgentUsageBinding];\n if (key === 'parentSessionId' && field === undefined) continue;\n text(field);\n result[key] = field;\n }\n if (result.sessionId === result.parentSessionId) reject('self parent');\n return result as unknown as ExternalAgentUsageBinding;\n}\n/** Validate and copy only the public structured contract; arbitrary tags are refused. */\nexport function normalizeExternalAgentUsageReport(\n value: ExternalAgentUsageReport,\n): ExternalAgentUsageReport {\n object(value, [\n 'version',\n 'binding',\n 'provider',\n 'model',\n 'provenance',\n 'observedAt',\n 'sequence',\n 'epoch',\n 'basis',\n 'baseline',\n 'scope',\n 'inputIncludesCache',\n 'outputIncludesReasoning',\n 'counters',\n ]);\n if (\n value.version !== 1 ||\n value.scope !== 'exclusive' ||\n !['delta', 'cumulative'].includes(value.basis) ||\n !['zero', 'unknown'].includes(value.baseline)\n )\n reject('unsupported measurement contract');\n text(value.provider);\n text(value.model);\n text(value.observedAt);\n if (!Number.isFinite(Date.parse(value.observedAt)))\n reject('invalid timestamp');\n integer(value.sequence);\n integer(value.epoch);\n if (\n typeof value.inputIncludesCache !== 'boolean' ||\n typeof value.outputIncludesReasoning !== 'boolean'\n )\n reject('missing component semantics');\n object(value.provenance, ['harness', 'source', 'eventId']);\n text(value.provenance.harness);\n text(value.provenance.source);\n text(value.provenance.eventId);\n object(value.counters, [...EXTERNAL_AGENT_COUNTERS]);\n const counters: ExternalAgentCounters = {};\n for (const key of EXTERNAL_AGENT_COUNTERS) {\n const count = value.counters[key];\n if (count !== undefined && count !== null) integer(count);\n counters[key] = count ?? null;\n }\n if (value.inputIncludesCache && counters.inputTokens != null) {\n const components =\n (counters.cacheReadTokens ?? 0) + (counters.cacheWriteTokens ?? 0);\n if (!Number.isSafeInteger(components) || components > counters.inputTokens)\n reject('cache exceeds inclusive input');\n }\n if (\n value.outputIncludesReasoning &&\n counters.outputTokens != null &&\n (counters.reasoningTokens ?? 0) > counters.outputTokens\n )\n reject('reasoning exceeds inclusive output');\n return {\n version: 1,\n binding: binding(value.binding),\n provider: value.provider,\n model: value.model,\n provenance: {\n harness: value.provenance.harness,\n source: value.provenance.source,\n eventId: value.provenance.eventId,\n },\n observedAt: new Date(value.observedAt).toISOString(),\n sequence: value.sequence,\n epoch: value.epoch,\n basis: value.basis,\n baseline: value.baseline,\n scope: 'exclusive',\n inputIncludesCache: value.inputIncludesCache,\n outputIncludesReasoning: value.outputIncludesReasoning,\n counters,\n };\n}\nfunction streamId(scope: ExternalAgentUsageBinding): string {\n // A session has one binding, including across project reassignment attempts.\n return `external-agent:${sha256Hex(JSON.stringify([scope.tenantId, scope.sessionId]))}`;\n}\nfunction rowId(scope: ExternalAgentUsageBinding, sequence: number): string {\n return `${streamId(scope)}:${sequence}`;\n}\nasync function read(\n db: DatabaseInterface,\n scope: ExternalAgentUsageBinding,\n sequence: number,\n): Promise<ExternalAgentUsageReceipt | null> {\n const row = await db.get('_smrt_ai_usage', {\n id: rowId(scope, sequence),\n tenant_id: scope.tenantId,\n operation: EXTERNAL_AGENT_USAGE_OPERATION,\n });\n if (!row) return null;\n return JSON.parse(String(row.tags)) as ExternalAgentUsageReceipt;\n}\nfunction same(a: unknown, b: unknown): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n}\n/**\n * Recorder accepts a trusted scope separately from an untrusted report. Caller\n * authorizes scope ownership before construction. No ambient tenant inference.\n * Existing system tables must be bootstrapped before opening a transaction.\n */\nexport class ExternalAgentUsageRecorder {\n private readonly binding: ExternalAgentUsageBinding;\n private readonly reporter?: ExternalAgentUsageReporter;\n constructor(\n private readonly db: DatabaseInterface,\n trustedBinding: ExternalAgentUsageBinding,\n reporter?: ExternalAgentUsageReporter,\n ) {\n this.binding = binding(trustedBinding);\n if (reporter !== undefined) {\n object(reporter, ['reporterId', 'reporterType']);\n text(reporter.reporterId);\n if (!['agent', 'user'].includes(reporter.reporterType))\n reject('invalid reporter type');\n this.reporter = {\n reporterId: reporter.reporterId,\n reporterType: reporter.reporterType,\n };\n }\n }\n async record(\n input: ExternalAgentUsageReport,\n ): Promise<ExternalAgentUsageReceipt> {\n const report = normalizeExternalAgentUsageReport(input);\n if (!same(report.binding, this.binding))\n reject('ownership binding mismatch');\n return withEmbeddedWriteTransaction(\n this.db,\n isEmbeddedDatabase(this.db),\n async (tx) => {\n const existing = await read(tx, this.binding, report.sequence);\n if (existing) {\n if (!same(existing.report, report))\n reject('conflicting replay', 'conflict');\n return existing;\n }\n const previous =\n report.sequence === 0\n ? null\n : await read(tx, this.binding, report.sequence - 1);\n if (report.sequence === 0 ? report.epoch !== 0 : !previous)\n reject('out of order sequence', 'conflict');\n let snapshots: ExternalAgentUsageReceipt[] = [];\n if (previous) {\n const last = previous.report;\n if (\n !same(last.binding, report.binding) ||\n last.provider !== report.provider ||\n last.model !== report.model ||\n last.basis !== report.basis ||\n last.inputIncludesCache !== report.inputIncludesCache ||\n last.outputIncludesReasoning !== report.outputIncludesReasoning ||\n last.provenance.harness !== report.provenance.harness ||\n last.provenance.source !== report.provenance.source\n )\n reject('stream attribution changed', 'conflict');\n if (report.epoch !== last.epoch && report.epoch !== last.epoch + 1)\n reject('invalid reset epoch', 'conflict');\n if (report.epoch === last.epoch && report.baseline !== last.baseline)\n reject('baseline changed without reset', 'conflict');\n if (Date.parse(report.observedAt) < Date.parse(last.observedAt))\n reject('timestamp reordered', 'conflict');\n // A provider event is unique within its stream, even at another sequence.\n const candidates = await tx.query(\n \"SELECT tags FROM _smrt_ai_usage WHERE tenant_id = ? AND class_name = ? AND operation = 'external-agent' AND id LIKE 'external-agent:%'\",\n this.binding.tenantId,\n streamId(this.binding),\n );\n snapshots = candidates.rows.map(\n (row) => JSON.parse(String(row.tags)) as ExternalAgentUsageReceipt,\n );\n if (\n snapshots.some(\n (row) =>\n row.report.sequence !== report.sequence &&\n row.report.provenance.eventId === report.provenance.eventId,\n )\n )\n reject('event already recorded', 'conflict');\n }\n const delta = {} as Record<ExternalAgentCounter, number | null>;\n for (const key of EXTERNAL_AGENT_COUNTERS) {\n const current = report.counters[key] ?? null;\n const last = previous?.report;\n const before = last?.counters[key] ?? null;\n if (report.basis === 'cumulative' && current !== null) {\n const latestKnown = snapshots.reduce<\n ExternalAgentUsageReceipt | undefined\n >(\n (latest, row) =>\n row.report.epoch === report.epoch &&\n row.report.sequence < report.sequence &&\n row.report.counters[key] != null &&\n (!latest || row.report.sequence > latest.report.sequence)\n ? row\n : latest,\n undefined,\n );\n if (\n latestKnown &&\n current < (latestKnown.report.counters[key] as number)\n )\n reject('counter decreased without reset', 'conflict');\n }\n if (report.basis === 'delta') delta[key] = current;\n else if (!last || report.epoch !== last.epoch)\n delta[key] = report.baseline === 'zero' ? current : null;\n else {\n delta[key] =\n current !== null && before !== null ? current - before : null;\n }\n }\n const receipt: ExternalAgentUsageReceipt = {\n id: rowId(this.binding, report.sequence),\n report,\n delta,\n ...(this.reporter ? { reporter: { ...this.reporter } } : {}),\n };\n const won = await tx.query(\n `INSERT INTO _smrt_ai_usage (id,provider,model,operation,prompt_tokens,completion_tokens,total_tokens,estimated_cost,duration,class_name,tenant_id,tags,created_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?) ON CONFLICT (id) DO NOTHING RETURNING id`,\n receipt.id,\n report.provider,\n report.model,\n EXTERNAL_AGENT_USAGE_OPERATION,\n delta.inputTokens,\n delta.outputTokens,\n delta.totalTokens,\n null,\n 0,\n streamId(this.binding),\n this.binding.tenantId,\n JSON.stringify(receipt),\n report.observedAt,\n );\n if (won.rows.length) return receipt;\n const winner = await read(tx, this.binding, report.sequence);\n if (!winner || !same(winner.report, report))\n reject('conflicting concurrent replay', 'conflict');\n return winner;\n },\n true,\n );\n }\n /** Safe per-session projection; never estimates cost or coalesces unknown to zero. */\n async summarize(): Promise<ExternalAgentUsageSummary> {\n const result = await this.db.query(\n \"SELECT tags FROM _smrt_ai_usage WHERE tenant_id = ? AND class_name = ? AND operation = ? AND id LIKE 'external-agent:%'\",\n this.binding.tenantId,\n streamId(this.binding),\n EXTERNAL_AGENT_USAGE_OPERATION,\n );\n const receipts = result.rows\n .map((row) => JSON.parse(String(row.tags)) as ExternalAgentUsageReceipt)\n .sort((a, b) => a.report.sequence - b.report.sequence);\n if (receipts.some((row) => !same(row.report.binding, this.binding)))\n reject('ownership binding mismatch');\n const counters = {} as Record<ExternalAgentCounter, number | null>;\n for (const key of EXTERNAL_AGENT_COUNTERS) {\n let total: number | null = receipts.length ? 0 : null;\n for (const row of receipts) {\n const count = row.delta[key];\n if (count === null || total === null) total = null;\n else {\n total += count;\n if (!Number.isSafeInteger(total))\n reject('summary exceeds safe integer');\n }\n }\n counters[key] = total;\n }\n const coverage = {} as ExternalAgentUsageSummary['coverage'];\n for (const key of EXTERNAL_AGENT_COUNTERS) {\n const knownReports = receipts.filter(\n (row) => row.delta[key] !== null,\n ).length;\n coverage[key] = {\n knownReports,\n unknownReports: receipts.length - knownReports,\n };\n }\n return {\n binding: { ...this.binding },\n source: 'external-agent',\n reports: receipts.length,\n latest: receipts.at(-1)?.report ?? null,\n counters,\n complete: EXTERNAL_AGENT_COUNTERS.every((key) => counters[key] !== null),\n coverage,\n };\n }\n}\n\n/** Trusted project ownership scope, authorized by the application before reading. */\nexport interface ExternalAgentUsageQuery {\n tenantId: string;\n workspaceId: string;\n projectId: string;\n taskId?: string;\n sessionId?: string;\n}\n/** Per-session summaries only: inclusive parent totals are never added to children. */\nexport async function summarizeExternalAgentUsage(\n db: DatabaseInterface,\n scope: ExternalAgentUsageQuery,\n): Promise<ExternalAgentUsageSummary[]> {\n object(scope, [\n 'tenantId',\n 'workspaceId',\n 'projectId',\n 'taskId',\n 'sessionId',\n ]);\n text(scope.tenantId);\n text(scope.workspaceId);\n text(scope.projectId);\n if (scope.taskId !== undefined) text(scope.taskId);\n if (scope.sessionId !== undefined) text(scope.sessionId);\n const result = await db.query(\n \"SELECT tags FROM _smrt_ai_usage WHERE tenant_id = ? AND operation = ? AND id LIKE 'external-agent:%'\",\n scope.tenantId,\n EXTERNAL_AGENT_USAGE_OPERATION,\n );\n const sessions = new Map<string, ExternalAgentUsageBinding>();\n for (const row of result.rows) {\n const receipt = JSON.parse(String(row.tags)) as ExternalAgentUsageReceipt;\n const candidate = receipt.report.binding;\n if (candidate.tenantId !== scope.tenantId)\n reject('persisted tenant binding mismatch');\n if (\n candidate.workspaceId !== scope.workspaceId ||\n candidate.projectId !== scope.projectId ||\n (scope.taskId !== undefined && candidate.taskId !== scope.taskId) ||\n (scope.sessionId !== undefined && candidate.sessionId !== scope.sessionId)\n )\n continue;\n sessions.set(candidate.sessionId, candidate);\n }\n const summaries: ExternalAgentUsageSummary[] = [];\n for (const candidate of sessions.values())\n summaries.push(\n await new ExternalAgentUsageRecorder(db, candidate).summarize(),\n );\n return summaries;\n}\n"],"mappings":";;;AAQA,IAAa,iCAAiC;AAC9C,IAAa,0BAA0B;CACrC;CACA;CACA;CACA;CACA;CACA;AACF;AAsDA,IAAa,0BAAb,cAA6C,MAAM;CAEtC;CADX,YACE,MACA,SACA;EACA,MAAM,yBAAyB,SAAS;EAH/B,KAAA,OAAA;EAIT,KAAK,OAAO;CACd;AACF;AACA,SAAS,OACP,SACA,OAAqC,iBAC9B;CACP,MAAM,IAAI,wBAAwB,MAAM,OAAO;AACjD;AACA,SAAS,OACP,OACA,MAC0C;CAC1C,IACE,CAAC,SACD,OAAO,UAAU,YAChB,OAAO,eAAe,KAAK,MAAM,OAAO,aACvC,OAAO,eAAe,KAAK,MAAM,QACnC,MAAM,QAAQ,KAAK,KACnB,OAAO,KAAK,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAK,SAAS,GAAG,CAAC,GAEpD,OAAO,gBAAgB;AAC3B;AACA,SAAS,KAAK,OAAyC;CACrD,IACE,OAAO,UAAU,YACjB,CAAC,MAAM,KAAK,KACZ,MAAM,SAAS,OACf,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,cAAc,UAAU,WAAW,CAAC,IAAI,EAAE,GAE3D,OAAO,oBAAoB;AAC/B;AACA,SAAS,QAAQ,OAAyC;CACxD,IAAI,CAAC,OAAO,cAAc,KAAK,KAAM,QAAmB,GACtD,OAAO,6BAA6B;AACxC;AACA,IAAM,cAAc;CAClB;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,SAAS,QAAQ,OAA6D;CAC5E,OAAO,OAAO,WAAW;CACzB,MAAM,SAAiC,CAAC;CACxC,KAAK,MAAM,OAAO,aAAa;EAC7B,MAAM,QAAQ,MAAM;EACpB,IAAI,QAAQ,qBAAqB,UAAU,KAAA,GAAW;EACtD,KAAK,KAAK;EACV,OAAO,OAAO;CAChB;CACA,IAAI,OAAO,cAAc,OAAO,iBAAiB,OAAO,aAAa;CACrE,OAAO;AACT;;AAEA,SAAgB,kCACd,OAC0B;CAC1B,OAAO,OAAO;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CACD,IACE,MAAM,YAAY,KAClB,MAAM,UAAU,eAChB,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,SAAS,MAAM,KAAK,KAC7C,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,SAAS,MAAM,QAAQ,GAE5C,OAAO,kCAAkC;CAC3C,KAAK,MAAM,QAAQ;CACnB,KAAK,MAAM,KAAK;CAChB,KAAK,MAAM,UAAU;CACrB,IAAI,CAAC,OAAO,SAAS,KAAK,MAAM,MAAM,UAAU,CAAC,GAC/C,OAAO,mBAAmB;CAC5B,QAAQ,MAAM,QAAQ;CACtB,QAAQ,MAAM,KAAK;CACnB,IACE,OAAO,MAAM,uBAAuB,aACpC,OAAO,MAAM,4BAA4B,WAEzC,OAAO,6BAA6B;CACtC,OAAO,MAAM,YAAY;EAAC;EAAW;EAAU;CAAS,CAAC;CACzD,KAAK,MAAM,WAAW,OAAO;CAC7B,KAAK,MAAM,WAAW,MAAM;CAC5B,KAAK,MAAM,WAAW,OAAO;CAC7B,OAAO,MAAM,UAAU,CAAC,GAAG,uBAAuB,CAAC;CACnD,MAAM,WAAkC,CAAC;CACzC,KAAK,MAAM,OAAO,yBAAyB;EACzC,MAAM,QAAQ,MAAM,SAAS;EAC7B,IAAI,UAAU,KAAA,KAAa,UAAU,MAAM,QAAQ,KAAK;EACxD,SAAS,OAAO,SAAS;CAC3B;CACA,IAAI,MAAM,sBAAsB,SAAS,eAAe,MAAM;EAC5D,MAAM,cACH,SAAS,mBAAmB,MAAM,SAAS,oBAAoB;EAClE,IAAI,CAAC,OAAO,cAAc,UAAU,KAAK,aAAa,SAAS,aAC7D,OAAO,+BAA+B;CAC1C;CACA,IACE,MAAM,2BACN,SAAS,gBAAgB,SACxB,SAAS,mBAAmB,KAAK,SAAS,cAE3C,OAAO,oCAAoC;CAC7C,OAAO;EACL,SAAS;EACT,SAAS,QAAQ,MAAM,OAAO;EAC9B,UAAU,MAAM;EAChB,OAAO,MAAM;EACb,YAAY;GACV,SAAS,MAAM,WAAW;GAC1B,QAAQ,MAAM,WAAW;GACzB,SAAS,MAAM,WAAW;EAC5B;EACA,YAAY,IAAI,KAAK,MAAM,UAAU,CAAC,CAAC,YAAY;EACnD,UAAU,MAAM;EAChB,OAAO,MAAM;EACb,OAAO,MAAM;EACb,UAAU,MAAM;EAChB,OAAO;EACP,oBAAoB,MAAM;EAC1B,yBAAyB,MAAM;EAC/B;CACF;AACF;AACA,SAAS,SAAS,OAA0C;CAE1D,OAAO,kBAAkB,UAAU,KAAK,UAAU,CAAC,MAAM,UAAU,MAAM,SAAS,CAAC,CAAC;AACtF;AACA,SAAS,MAAM,OAAkC,UAA0B;CACzE,OAAO,GAAG,SAAS,KAAK,EAAE,GAAG;AAC/B;AACA,eAAe,KACb,IACA,OACA,UAC2C;CAC3C,MAAM,MAAM,MAAM,GAAG,IAAI,kBAAkB;EACzC,IAAI,MAAM,OAAO,QAAQ;EACzB,WAAW,MAAM;EACjB,WAAW;CACb,CAAC;CACD,IAAI,CAAC,KAAK,OAAO;CACjB,OAAO,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC;AACpC;AACA,SAAS,KAAK,GAAY,GAAqB;CAC7C,OAAO,KAAK,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC;AAC/C;;;;;;AAMA,IAAa,6BAAb,MAAwC;CAInB;CAHnB;CACA;CACA,YACE,IACA,gBACA,UACA;EAHiB,KAAA,KAAA;EAIjB,KAAK,UAAU,QAAQ,cAAc;EACrC,IAAI,aAAa,KAAA,GAAW;GAC1B,OAAO,UAAU,CAAC,cAAc,cAAc,CAAC;GAC/C,KAAK,SAAS,UAAU;GACxB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,SAAS,SAAS,YAAY,GACnD,OAAO,uBAAuB;GAChC,KAAK,WAAW;IACd,YAAY,SAAS;IACrB,cAAc,SAAS;GACzB;EACF;CACF;CACA,MAAM,OACJ,OACoC;EACpC,MAAM,SAAS,kCAAkC,KAAK;EACtD,IAAI,CAAC,KAAK,OAAO,SAAS,KAAK,OAAO,GACpC,OAAO,4BAA4B;EACrC,OAAO,6BACL,KAAK,IACL,mBAAmB,KAAK,EAAE,GAC1B,OAAO,OAAO;GACZ,MAAM,WAAW,MAAM,KAAK,IAAI,KAAK,SAAS,OAAO,QAAQ;GAC7D,IAAI,UAAU;IACZ,IAAI,CAAC,KAAK,SAAS,QAAQ,MAAM,GAC/B,OAAO,sBAAsB,UAAU;IACzC,OAAO;GACT;GACA,MAAM,WACJ,OAAO,aAAa,IAChB,OACA,MAAM,KAAK,IAAI,KAAK,SAAS,OAAO,WAAW,CAAC;GACtD,IAAI,OAAO,aAAa,IAAI,OAAO,UAAU,IAAI,CAAC,UAChD,OAAO,yBAAyB,UAAU;GAC5C,IAAI,YAAyC,CAAC;GAC9C,IAAI,UAAU;IACZ,MAAM,OAAO,SAAS;IACtB,IACE,CAAC,KAAK,KAAK,SAAS,OAAO,OAAO,KAClC,KAAK,aAAa,OAAO,YACzB,KAAK,UAAU,OAAO,SACtB,KAAK,UAAU,OAAO,SACtB,KAAK,uBAAuB,OAAO,sBACnC,KAAK,4BAA4B,OAAO,2BACxC,KAAK,WAAW,YAAY,OAAO,WAAW,WAC9C,KAAK,WAAW,WAAW,OAAO,WAAW,QAE7C,OAAO,8BAA8B,UAAU;IACjD,IAAI,OAAO,UAAU,KAAK,SAAS,OAAO,UAAU,KAAK,QAAQ,GAC/D,OAAO,uBAAuB,UAAU;IAC1C,IAAI,OAAO,UAAU,KAAK,SAAS,OAAO,aAAa,KAAK,UAC1D,OAAO,kCAAkC,UAAU;IACrD,IAAI,KAAK,MAAM,OAAO,UAAU,IAAI,KAAK,MAAM,KAAK,UAAU,GAC5D,OAAO,uBAAuB,UAAU;IAO1C,aAAY,MALa,GAAG,MAC1B,0IACA,KAAK,QAAQ,UACb,SAAS,KAAK,OAAO,CACvB,EAAA,CACuB,KAAK,KACzB,QAAQ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,CACtC;IACA,IACE,UAAU,MACP,QACC,IAAI,OAAO,aAAa,OAAO,YAC/B,IAAI,OAAO,WAAW,YAAY,OAAO,WAAW,OACxD,GAEA,OAAO,0BAA0B,UAAU;GAC/C;GACA,MAAM,QAAQ,CAAC;GACf,KAAK,MAAM,OAAO,yBAAyB;IACzC,MAAM,UAAU,OAAO,SAAS,QAAQ;IACxC,MAAM,OAAO,UAAU;IACvB,MAAM,SAAS,MAAM,SAAS,QAAQ;IACtC,IAAI,OAAO,UAAU,gBAAgB,YAAY,MAAM;KACrD,MAAM,cAAc,UAAU,QAG3B,QAAQ,QACP,IAAI,OAAO,UAAU,OAAO,SAC5B,IAAI,OAAO,WAAW,OAAO,YAC7B,IAAI,OAAO,SAAS,QAAQ,SAC3B,CAAC,UAAU,IAAI,OAAO,WAAW,OAAO,OAAO,YAC5C,MACA,QACN,KAAA,CACF;KACA,IACE,eACA,UAAW,YAAY,OAAO,SAAS,MAEvC,OAAO,mCAAmC,UAAU;IACxD;IACA,IAAI,OAAO,UAAU,SAAS,MAAM,OAAO;SACtC,IAAI,CAAC,QAAQ,OAAO,UAAU,KAAK,OACtC,MAAM,OAAO,OAAO,aAAa,SAAS,UAAU;SAEpD,MAAM,OACJ,YAAY,QAAQ,WAAW,OAAO,UAAU,SAAS;GAE/D;GACA,MAAM,UAAqC;IACzC,IAAI,MAAM,KAAK,SAAS,OAAO,QAAQ;IACvC;IACA;IACA,GAAI,KAAK,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,SAAS,EAAE,IAAI,CAAC;GAC5D;GAiBA,KAAI,MAhBc,GAAG,MACnB,kPACA,QAAQ,IACR,OAAO,UACP,OAAO,OAAA,kBAEP,MAAM,aACN,MAAM,cACN,MAAM,aACN,MACA,GACA,SAAS,KAAK,OAAO,GACrB,KAAK,QAAQ,UACb,KAAK,UAAU,OAAO,GACtB,OAAO,UACT,EAAA,CACQ,KAAK,QAAQ,OAAO;GAC5B,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,SAAS,OAAO,QAAQ;GAC3D,IAAI,CAAC,UAAU,CAAC,KAAK,OAAO,QAAQ,MAAM,GACxC,OAAO,iCAAiC,UAAU;GACpD,OAAO;EACT,GACA,IACF;CACF;;CAEA,MAAM,YAAgD;EAOpD,MAAM,YAAW,MANI,KAAK,GAAG,MAC3B,2HACA,KAAK,QAAQ,UACb,SAAS,KAAK,OAAO,GACrB,8BACF,EAAA,CACwB,KACrB,KAAK,QAAQ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,CAA8B,CAAC,CACvE,MAAM,GAAG,MAAM,EAAE,OAAO,WAAW,EAAE,OAAO,QAAQ;EACvD,IAAI,SAAS,MAAM,QAAQ,CAAC,KAAK,IAAI,OAAO,SAAS,KAAK,OAAO,CAAC,GAChE,OAAO,4BAA4B;EACrC,MAAM,WAAW,CAAC;EAClB,KAAK,MAAM,OAAO,yBAAyB;GACzC,IAAI,QAAuB,SAAS,SAAS,IAAI;GACjD,KAAK,MAAM,OAAO,UAAU;IAC1B,MAAM,QAAQ,IAAI,MAAM;IACxB,IAAI,UAAU,QAAQ,UAAU,MAAM,QAAQ;SACzC;KACH,SAAS;KACT,IAAI,CAAC,OAAO,cAAc,KAAK,GAC7B,OAAO,8BAA8B;IACzC;GACF;GACA,SAAS,OAAO;EAClB;EACA,MAAM,WAAW,CAAC;EAClB,KAAK,MAAM,OAAO,yBAAyB;GACzC,MAAM,eAAe,SAAS,QAC3B,QAAQ,IAAI,MAAM,SAAS,IAC9B,CAAC,CAAC;GACF,SAAS,OAAO;IACd;IACA,gBAAgB,SAAS,SAAS;GACpC;EACF;EACA,OAAO;GACL,SAAS,EAAE,GAAG,KAAK,QAAQ;GAC3B,QAAQ;GACR,SAAS,SAAS;GAClB,QAAQ,SAAS,GAAG,EAAE,CAAC,EAAE,UAAU;GACnC;GACA,UAAU,wBAAwB,OAAO,QAAQ,SAAS,SAAS,IAAI;GACvE;EACF;CACF;AACF;;AAWA,eAAsB,4BACpB,IACA,OACsC;CACtC,OAAO,OAAO;EACZ;EACA;EACA;EACA;EACA;CACF,CAAC;CACD,KAAK,MAAM,QAAQ;CACnB,KAAK,MAAM,WAAW;CACtB,KAAK,MAAM,SAAS;CACpB,IAAI,MAAM,WAAW,KAAA,GAAW,KAAK,MAAM,MAAM;CACjD,IAAI,MAAM,cAAc,KAAA,GAAW,KAAK,MAAM,SAAS;CACvD,MAAM,SAAS,MAAM,GAAG,MACtB,wGACA,MAAM,UACN,8BACF;CACA,MAAM,2BAAW,IAAI,IAAuC;CAC5D,KAAK,MAAM,OAAO,OAAO,MAAM;EAE7B,MAAM,YADU,KAAK,MAAM,OAAO,IAAI,IAAI,CACxB,CAAA,CAAQ,OAAO;EACjC,IAAI,UAAU,aAAa,MAAM,UAC/B,OAAO,mCAAmC;EAC5C,IACE,UAAU,gBAAgB,MAAM,eAChC,UAAU,cAAc,MAAM,aAC7B,MAAM,WAAW,KAAA,KAAa,UAAU,WAAW,MAAM,UACzD,MAAM,cAAc,KAAA,KAAa,UAAU,cAAc,MAAM,WAEhE;EACF,SAAS,IAAI,UAAU,WAAW,SAAS;CAC7C;CACA,MAAM,YAAyC,CAAC;CAChD,KAAK,MAAM,aAAa,SAAS,OAAO,GACtC,UAAU,KACR,MAAM,IAAI,2BAA2B,IAAI,SAAS,CAAC,CAAC,UAAU,CAChE;CACF,OAAO;AACT"}
package/dist/index.d.ts CHANGED
@@ -42,6 +42,7 @@ export * from "./dispatch/index.js";
42
42
  export { isEmbeddedDatabase, isPostgresDatabase, usesEmbeddedRevisionFallback, withEmbeddedWriteQueue, withEmbeddedWriteTransaction, } from "./embedded-write-queue.js";
43
43
  export * from "./embeddings/index.js";
44
44
  export * from "./errors.js";
45
+ export * from './external-agent-usage.js';
45
46
  export { createFilesystemAdapter, type FilesystemAdapterFactory, registerFilesystemAdapterFactory, } from "./filesystem-loader.js";
46
47
  export { createGeneratedCollectionAccess, type GeneratedCollectionAccess, type GeneratedCollectionRuntime, } from "./generated-collection-access.js";
47
48
  export * from "./generators/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -64,6 +64,7 @@ import { DispatchSubscriptionCollection } from "./dispatch/collections/DispatchS
64
64
  import { DispatchBus, createDispatchBus } from "./dispatch/bus.js";
65
65
  import "./dispatch/index.js";
66
66
  import "./embeddings/index.js";
67
+ import { EXTERNAL_AGENT_COUNTERS, EXTERNAL_AGENT_USAGE_OPERATION, ExternalAgentUsageError, ExternalAgentUsageRecorder, normalizeExternalAgentUsageReport, summarizeExternalAgentUsage } from "./external-agent-usage.js";
67
68
  import { createGeneratedCollectionAccess } from "./generated-collection-access.js";
68
69
  import { PRIVATE_READ_CACHE_CONTROL, canonicalReadRepresentation, computeBodyEtag, computeTableVersionEtag, conditionalJsonResponse, ifNoneMatchHasConcreteMatch, ifNoneMatchSatisfied, resolveReadCacheControl, resolveTenantEtagDiscriminator, versionConditionalResponse, warnIfSharedCacheNeutralized } from "./generators/conditional-get.js";
69
70
  import { convertTypeToJsonSchema, generateToolFromMethod, generateToolManifest, shouldIncludeMethod } from "./tools/tool-generator.js";
@@ -115,4 +116,4 @@ import "./system/index.js";
115
116
  import { getTestDatabase } from "./testing/database.js";
116
117
  import "./tools/index.js";
117
118
  import { smrtPlugin } from "./vite-plugin/index.js";
118
- export { AGENT_SURFACE_HASH_PREFIX, AIError, APIGenerator, AiUsageCollector, AiUsagePersistenceHandler, BOOTED_PROVENANCE, CACHE_INVALIDATION_CHANNEL, CHANGE_FEED_CREDENTIAL_TABLES, CHANGE_FEED_INTERCEPTOR_NAME, CHANGE_FEED_TABLE, CHANGE_SIGNAL_CHANNEL, CRUD_OPERATIONS, ConfigurationError, ContentHasher, CosineSimilarity, DEFAULT_AI_COST_RATES, DEFAULT_CHANGES_LIMIT, DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DEFAULT_DISPLAY_LABEL_FIELDS, DEFAULT_EMBEDDING_CONFIG, DEFAULT_EVENTS_HEARTBEAT_MS, DEFAULT_EVENTS_MAX_SUBSCRIBERS, DEFAULT_EVENTS_RETRY_AFTER_SECONDS, DEFAULT_FACET_LIMIT, DEFAULT_LEARNING_CONFIG, DEFAULT_LIST_LIMIT, DEFAULT_LIST_ORDER_BY, DEFAULT_POSTGRES_TIMEOUTS, DEFAULT_RETENTION_POLICY, DIAGNOSTICS_DEFAULT_LIMIT, DataQueryValidationError, DatabaseError, Dispatch, DispatchBus, DispatchCollection, DispatchSubscription, DispatchSubscriptionCollection, EmbeddingProvider, EmbeddingStorage, EmbeddingUnavailableError, ErrorUtils, FIELD_UI_FORMATS, FIELD_UI_FORMAT_TYPES, FIELD_UI_WIDGETS, FIELD_UI_WIDGET_TYPES, FilesystemError, GlobalInterceptors, IN_LIST_CHUNK_SIZE, LearningMemory, LiveSchemaParityError, MAX_CHANGES_LIMIT, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MAX_LIST_LIMIT, MAX_STI_READ_SCOPE_TYPES, MAX_SYNC_APPLY_BATCH_SIZE, MCPGenerator, MCP_STABLE_CATALOG_TTL_MS, MOCK_PROVIDER_OPTION, MODULE_DOC_HASH_PREFIX, ManifestBuilder, ManifestGenerator, ManifestManager, MetricsAdapter, NetworkError, ObjectRegistry, PLAYBOOK_PREFLIGHT_CAPABILITY, PLAYBOOK_PREFLIGHT_ROUTE_SEGMENT, POSTGRES_REVISION_GUARD_EXPRESSION, POSTGRES_TIMEOUT_ENV_VARS, PRIVATE_READ_CACHE_CONTROL, PubSubAdapter, QueryBoundsError, QueryOrderByError, RECIPE_DEMO_MODES, RELATIONSHIP_ROLES, RUN_ONCE_CLAIMS_TABLE, RunOnceClaimError, RuntimeError, SMRT_COLLECTION_BASE_NAMES, SMRT_CUSTOM_ACTION_ERROR_METADATA_KEY, SMRT_SCHEMA_VERSION, SYNC_APPLY_ROUTE_SEGMENTS, SYNC_APPLY_UUID_PATTERN, SYSTEM_DIAGNOSTICS_TABLES, SYSTEM_TABLE_NAMES, SchemaComparer, SignalBus, SignalSanitizer, SmrtClass, SmrtCollection, SmrtError, SmrtHierarchical, SmrtJunction, SmrtJunctionBase, SmrtMCPServer, SmrtObject, SmrtPolymorphicAssociation, SmrtRecipe, TenantIsolationError, ValidationError, ValidationReport, ValidationUtils, appendChange, appendChanges, applyOneToManyChildAccessors, applyPendingDecoratorRegistrations, applyPostgresPermissions, applyPostgresRuntimeTimeouts, applySyncWritablePolicy, assertPlainJson, assertPostgresSystemTimestampsCurrent, assertScopedPackageName, auditChanges, auditSnapshot, broadcastCacheInvalidation, buildCascadePlan, buildChangeEventStream, buildConnectSection, buildCustomActionInputSchema, buildCustomActionInvocationArgs, buildDefaultListOrderBy, buildDomainKnowledgeManifest, buildGlossary, buildKnowledgeGraph, bumpChangeFeed, canonicalReadRepresentation, canonicalizeDataQuery, cascadeReferencesTo, changeEventSubscribersAtCapacity, checkKnowledgeGraphFreshness, checkLiveSchemaParity, childAccessorName, chunkArray, classifyDatabaseError, classifyDialectMessage, classifyMethodWireability, classifyParameterWireability, clearRetentionTasks, clone, coerceCustomActionArgument, collectForeignKeyOrphanCounts, computeBodyEtag, computeRuntimeWebManifestHash, computeTableVersionEtag, conditionalJsonResponse, config, convertTypeToJsonSchema, createClassNamePredicate, createDataQueryFingerprint, createDispatchBus, createFilesystemAdapter, createGeneratedCollectionAccess, createInterceptorContext, createMCPServer, createManifestClassNamePredicate, createQualifiedName, createRecipeHelp, createRestServer, createSmrtClient, createSmrtServer, crossPackageRef, customActionParameterInputName, declareChangeFeedSensitiveTable, declaredTypeAcceptsDate, declaresRuntimeRestRoute, declaresRuntimeRestRouteShape, deriveRecipeDemo, deriveRunOnceClaimKey, describeDisplayLabel, detectEngine, digestRunOnceContent, discoverKnowledgeArtifactPaths, discoverManifestEntry, discoverScopedPackageDirectories, displayLabelFieldProblem, drainChangeFeed, effectiveRecipeDemo, ensureBootstrapSystemTableCompatibility, ensureCacheInvalidationListener, ensureChangeFeedTable, ensureDeferredSystemTableCompatibility, ensureDispatchSubscriptionsSystemTableCompatibility, ensureDispatchSystemTableCompatibility, ensureJobEventsSystemTableCompatibility, ensureJobsSystemTableCompatibility, ensureLegacySystemTableCompatibility, ensureSystemTables, estimateAiUsageCost, eventStreamCapacityExceededResponse, executeCollectionReadPlan, executeDecision, executeToolCall, executeToolCalls, exposedCrudVerbs, extractFieldRefs, field, fieldTypeToJsonSchema, filterVisibleChangeFeedEntries, findCollectionWriteEscalations, findField, findManifestEntryByQualifiedName, findSelectorFor, findSubclassExposureEscalations, foreignKey, formatToolResults, generateDDLForEngine, generateOpenAPISpec, generateSchemaDiff, generateToolFromMethod, generateToolManifest, getActiveAuditOptions, getAdapterInfo, getAuthorizedChangesSince, getAuthorizedTenantScopedChangesSince, getCacheGeneration, getChangeFeedSensitiveTables, getChangesSince, getClassConfigResolvers, getClassName, getConfigResolver, getDatabaseEngine, getManifest, getPackageFromQualifiedName, getRetentionTasks, getSQLFromDiff, getSystemTableShapes, getTableVersion, getTenantScopedChangesSince, getTestDatabase, handlePlaybookPreflightRoute, hasActionableChanges, hasBrowserOption, hasChangeFeedEntryVisibilityHook, hasChangeFeedTableAuthorizerHook, helpToMarkdown, ifNoneMatchHasConcreteMatch, ifNoneMatchSatisfied, importOptionalDependency, inheritCollectionExposure, inheritSubclassExposure, inheritedCollectionSurface, invalidateCollectionCache, isAbortedTransactionError, isAdvisoryOnlyChange, isApiActionEnabledForObject, isAudited, isChangeFeedDenyAll, isChangeFeedEntryVisible, isChangeFeedSensitiveTable, isCrudOperation, isCrudToolAction, isDatabaseInterface, isDeterministicDatabaseError, isEmbeddedDatabase, isFieldUIFormat, isFieldUIWidget, isFrameworkBaseClass, isFromPackage, isLazyConfigSentinel, isManualOrAdvisoryChange, isMockableProvider, isNotNullViolationError, isPostgresDatabase, isQualifiedName, isRelationshipRole, isRestActionRoutable, isRestRoutePublic, isScopedPackageName, isSensitiveConnectionParam, isServerProvider, isSmrtCollectionExtendsName, isStaleWrite, isTenantScopedClassResolved, isTransientDatabaseError, isType, isUniqueViolationError, isValid, listConfigResolvers, loadExternalManifest, loadExternalManifestSync, loadLocalTestManifestSync, loadManifestFromPathSync, manifest, manyToMany, meta, method, migratePostgresSystemTimestamps, normalizeCustomActionFailure, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema, normalizeEventsMaxSubscribers, normalizeOnDelete, normalizeTypedHttpError, oneToMany, parse, parseHelp, parseQualifiedName, parseSyncApplyBatch, payloadMatchesRow, planForeignKeyCreation, planPostgresPermissions, planPostgresSystemTimestampMigrations, postgresRevisionCandidates, postgresRevisionCondition, processSyncApplyBatch, pruneAiUsage, pruneChangeFeed, pruneExpiredContexts, pruneRunOnceClaims, publishArtifactFiles, publishAtomicArtifact, qualifiedNamesEqual, queryStringDecoderFor, readAgentModuleDocs, readDispatchHealth, readJobHealth, readMethodDecoratorConfig, readMigrationStatus, readPackageAgentDoc, readRecentChanges, readRegistryDrift, readScheduleHealth, readSystemDiagnostics, redactDatabaseUrl, redactDatabaseUrlsInText, registerChangeFeedWriter, registerCompatibleFieldDecorator, registerCompatibleMethodDecorator, registerConfigResolver, registerFilesystemAdapterFactory, registerOptionalDependency, registerRetentionTask, renderHelp, requireAuditOptions, resetChangeFeedWarnings, resetChangeSignals, resetCollectionCache, resetConfigResolvers, resetVerifiedTables, resolveAgentModuleDocPaths, resolveApiMethodExposure, resolveAuthorizedChangeFeedTables, resolveCustomActionMetadata, resolveDatabase, resolveDbCacheKey, resolveDeclaredScopeMismatch, resolveDispatchTenantId, resolveDispatchTenantScope, resolveDisplayLabelField, resolveEffectiveActionMetadata, resolveExistingRunOnceClaim, resolveFileKnowledgeConfig, resolveGetStringFilter, resolveHelp, resolveLazyConfig, resolveListLimit, resolveListOffset, resolveMCPToolListCacheHint, resolveOperationPermissionAlias, resolvePostgresTimeouts, resolveReadCacheControl, resolveRegisteredObjectName, resolveTenantEtagDiscriminator, restFieldReadPermissions, restMethodForApiAction, runCascadeDelete, runOnce, runRetentionSweep, runWithTenantGate, safeParse, safeStringify, sanitizeMessagePaths, setChangeFeedAuthorizer, setChangeFeedEntryVisibility, setDispatchTenantResolver, setTenantEntryPointRunner, setTenantScopedClassResolver, setupSwaggerUI, shouldIncludeMethod, signalVisibleToTenant, smrt, smrtPlugin, smrt as smrtRegistry, snapshotRegistry, sortMCPTools, stableStringify, startRestServer, staticManifest, stopCacheInvalidationListeners, stopChangeSignalListeners, stringify, subscribeToChangeSignals, surfaceOpensOperation, tableExists, toCustomActionBoolean, toCustomActionDate, toCustomActionNumber, toSnakeCase, tryReserveChangeEventSubscriberSlot, unregisterChangeFeedWriter, unregisterConfigResolver, unregisterRetentionTask, usesEmbeddedRevisionFallback, validateHelp, validatePostgresPermissionContract, validateSyncApplyItem, validateToolCall, versionConditionalResponse, warnIfSharedCacheNeutralized, withAuditContext, withEmbeddedWriteQueue, withEmbeddedWriteTransaction, writeAudit };
119
+ export { AGENT_SURFACE_HASH_PREFIX, AIError, APIGenerator, AiUsageCollector, AiUsagePersistenceHandler, BOOTED_PROVENANCE, CACHE_INVALIDATION_CHANNEL, CHANGE_FEED_CREDENTIAL_TABLES, CHANGE_FEED_INTERCEPTOR_NAME, CHANGE_FEED_TABLE, CHANGE_SIGNAL_CHANNEL, CRUD_OPERATIONS, ConfigurationError, ContentHasher, CosineSimilarity, DEFAULT_AI_COST_RATES, DEFAULT_CHANGES_LIMIT, DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DEFAULT_DISPLAY_LABEL_FIELDS, DEFAULT_EMBEDDING_CONFIG, DEFAULT_EVENTS_HEARTBEAT_MS, DEFAULT_EVENTS_MAX_SUBSCRIBERS, DEFAULT_EVENTS_RETRY_AFTER_SECONDS, DEFAULT_FACET_LIMIT, DEFAULT_LEARNING_CONFIG, DEFAULT_LIST_LIMIT, DEFAULT_LIST_ORDER_BY, DEFAULT_POSTGRES_TIMEOUTS, DEFAULT_RETENTION_POLICY, DIAGNOSTICS_DEFAULT_LIMIT, DataQueryValidationError, DatabaseError, Dispatch, DispatchBus, DispatchCollection, DispatchSubscription, DispatchSubscriptionCollection, EXTERNAL_AGENT_COUNTERS, EXTERNAL_AGENT_USAGE_OPERATION, EmbeddingProvider, EmbeddingStorage, EmbeddingUnavailableError, ErrorUtils, ExternalAgentUsageError, ExternalAgentUsageRecorder, FIELD_UI_FORMATS, FIELD_UI_FORMAT_TYPES, FIELD_UI_WIDGETS, FIELD_UI_WIDGET_TYPES, FilesystemError, GlobalInterceptors, IN_LIST_CHUNK_SIZE, LearningMemory, LiveSchemaParityError, MAX_CHANGES_LIMIT, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MAX_LIST_LIMIT, MAX_STI_READ_SCOPE_TYPES, MAX_SYNC_APPLY_BATCH_SIZE, MCPGenerator, MCP_STABLE_CATALOG_TTL_MS, MOCK_PROVIDER_OPTION, MODULE_DOC_HASH_PREFIX, ManifestBuilder, ManifestGenerator, ManifestManager, MetricsAdapter, NetworkError, ObjectRegistry, PLAYBOOK_PREFLIGHT_CAPABILITY, PLAYBOOK_PREFLIGHT_ROUTE_SEGMENT, POSTGRES_REVISION_GUARD_EXPRESSION, POSTGRES_TIMEOUT_ENV_VARS, PRIVATE_READ_CACHE_CONTROL, PubSubAdapter, QueryBoundsError, QueryOrderByError, RECIPE_DEMO_MODES, RELATIONSHIP_ROLES, RUN_ONCE_CLAIMS_TABLE, RunOnceClaimError, RuntimeError, SMRT_COLLECTION_BASE_NAMES, SMRT_CUSTOM_ACTION_ERROR_METADATA_KEY, SMRT_SCHEMA_VERSION, SYNC_APPLY_ROUTE_SEGMENTS, SYNC_APPLY_UUID_PATTERN, SYSTEM_DIAGNOSTICS_TABLES, SYSTEM_TABLE_NAMES, SchemaComparer, SignalBus, SignalSanitizer, SmrtClass, SmrtCollection, SmrtError, SmrtHierarchical, SmrtJunction, SmrtJunctionBase, SmrtMCPServer, SmrtObject, SmrtPolymorphicAssociation, SmrtRecipe, TenantIsolationError, ValidationError, ValidationReport, ValidationUtils, appendChange, appendChanges, applyOneToManyChildAccessors, applyPendingDecoratorRegistrations, applyPostgresPermissions, applyPostgresRuntimeTimeouts, applySyncWritablePolicy, assertPlainJson, assertPostgresSystemTimestampsCurrent, assertScopedPackageName, auditChanges, auditSnapshot, broadcastCacheInvalidation, buildCascadePlan, buildChangeEventStream, buildConnectSection, buildCustomActionInputSchema, buildCustomActionInvocationArgs, buildDefaultListOrderBy, buildDomainKnowledgeManifest, buildGlossary, buildKnowledgeGraph, bumpChangeFeed, canonicalReadRepresentation, canonicalizeDataQuery, cascadeReferencesTo, changeEventSubscribersAtCapacity, checkKnowledgeGraphFreshness, checkLiveSchemaParity, childAccessorName, chunkArray, classifyDatabaseError, classifyDialectMessage, classifyMethodWireability, classifyParameterWireability, clearRetentionTasks, clone, coerceCustomActionArgument, collectForeignKeyOrphanCounts, computeBodyEtag, computeRuntimeWebManifestHash, computeTableVersionEtag, conditionalJsonResponse, config, convertTypeToJsonSchema, createClassNamePredicate, createDataQueryFingerprint, createDispatchBus, createFilesystemAdapter, createGeneratedCollectionAccess, createInterceptorContext, createMCPServer, createManifestClassNamePredicate, createQualifiedName, createRecipeHelp, createRestServer, createSmrtClient, createSmrtServer, crossPackageRef, customActionParameterInputName, declareChangeFeedSensitiveTable, declaredTypeAcceptsDate, declaresRuntimeRestRoute, declaresRuntimeRestRouteShape, deriveRecipeDemo, deriveRunOnceClaimKey, describeDisplayLabel, detectEngine, digestRunOnceContent, discoverKnowledgeArtifactPaths, discoverManifestEntry, discoverScopedPackageDirectories, displayLabelFieldProblem, drainChangeFeed, effectiveRecipeDemo, ensureBootstrapSystemTableCompatibility, ensureCacheInvalidationListener, ensureChangeFeedTable, ensureDeferredSystemTableCompatibility, ensureDispatchSubscriptionsSystemTableCompatibility, ensureDispatchSystemTableCompatibility, ensureJobEventsSystemTableCompatibility, ensureJobsSystemTableCompatibility, ensureLegacySystemTableCompatibility, ensureSystemTables, estimateAiUsageCost, eventStreamCapacityExceededResponse, executeCollectionReadPlan, executeDecision, executeToolCall, executeToolCalls, exposedCrudVerbs, extractFieldRefs, field, fieldTypeToJsonSchema, filterVisibleChangeFeedEntries, findCollectionWriteEscalations, findField, findManifestEntryByQualifiedName, findSelectorFor, findSubclassExposureEscalations, foreignKey, formatToolResults, generateDDLForEngine, generateOpenAPISpec, generateSchemaDiff, generateToolFromMethod, generateToolManifest, getActiveAuditOptions, getAdapterInfo, getAuthorizedChangesSince, getAuthorizedTenantScopedChangesSince, getCacheGeneration, getChangeFeedSensitiveTables, getChangesSince, getClassConfigResolvers, getClassName, getConfigResolver, getDatabaseEngine, getManifest, getPackageFromQualifiedName, getRetentionTasks, getSQLFromDiff, getSystemTableShapes, getTableVersion, getTenantScopedChangesSince, getTestDatabase, handlePlaybookPreflightRoute, hasActionableChanges, hasBrowserOption, hasChangeFeedEntryVisibilityHook, hasChangeFeedTableAuthorizerHook, helpToMarkdown, ifNoneMatchHasConcreteMatch, ifNoneMatchSatisfied, importOptionalDependency, inheritCollectionExposure, inheritSubclassExposure, inheritedCollectionSurface, invalidateCollectionCache, isAbortedTransactionError, isAdvisoryOnlyChange, isApiActionEnabledForObject, isAudited, isChangeFeedDenyAll, isChangeFeedEntryVisible, isChangeFeedSensitiveTable, isCrudOperation, isCrudToolAction, isDatabaseInterface, isDeterministicDatabaseError, isEmbeddedDatabase, isFieldUIFormat, isFieldUIWidget, isFrameworkBaseClass, isFromPackage, isLazyConfigSentinel, isManualOrAdvisoryChange, isMockableProvider, isNotNullViolationError, isPostgresDatabase, isQualifiedName, isRelationshipRole, isRestActionRoutable, isRestRoutePublic, isScopedPackageName, isSensitiveConnectionParam, isServerProvider, isSmrtCollectionExtendsName, isStaleWrite, isTenantScopedClassResolved, isTransientDatabaseError, isType, isUniqueViolationError, isValid, listConfigResolvers, loadExternalManifest, loadExternalManifestSync, loadLocalTestManifestSync, loadManifestFromPathSync, manifest, manyToMany, meta, method, migratePostgresSystemTimestamps, normalizeCustomActionFailure, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema, normalizeEventsMaxSubscribers, normalizeExternalAgentUsageReport, normalizeOnDelete, normalizeTypedHttpError, oneToMany, parse, parseHelp, parseQualifiedName, parseSyncApplyBatch, payloadMatchesRow, planForeignKeyCreation, planPostgresPermissions, planPostgresSystemTimestampMigrations, postgresRevisionCandidates, postgresRevisionCondition, processSyncApplyBatch, pruneAiUsage, pruneChangeFeed, pruneExpiredContexts, pruneRunOnceClaims, publishArtifactFiles, publishAtomicArtifact, qualifiedNamesEqual, queryStringDecoderFor, readAgentModuleDocs, readDispatchHealth, readJobHealth, readMethodDecoratorConfig, readMigrationStatus, readPackageAgentDoc, readRecentChanges, readRegistryDrift, readScheduleHealth, readSystemDiagnostics, redactDatabaseUrl, redactDatabaseUrlsInText, registerChangeFeedWriter, registerCompatibleFieldDecorator, registerCompatibleMethodDecorator, registerConfigResolver, registerFilesystemAdapterFactory, registerOptionalDependency, registerRetentionTask, renderHelp, requireAuditOptions, resetChangeFeedWarnings, resetChangeSignals, resetCollectionCache, resetConfigResolvers, resetVerifiedTables, resolveAgentModuleDocPaths, resolveApiMethodExposure, resolveAuthorizedChangeFeedTables, resolveCustomActionMetadata, resolveDatabase, resolveDbCacheKey, resolveDeclaredScopeMismatch, resolveDispatchTenantId, resolveDispatchTenantScope, resolveDisplayLabelField, resolveEffectiveActionMetadata, resolveExistingRunOnceClaim, resolveFileKnowledgeConfig, resolveGetStringFilter, resolveHelp, resolveLazyConfig, resolveListLimit, resolveListOffset, resolveMCPToolListCacheHint, resolveOperationPermissionAlias, resolvePostgresTimeouts, resolveReadCacheControl, resolveRegisteredObjectName, resolveTenantEtagDiscriminator, restFieldReadPermissions, restMethodForApiAction, runCascadeDelete, runOnce, runRetentionSweep, runWithTenantGate, safeParse, safeStringify, sanitizeMessagePaths, setChangeFeedAuthorizer, setChangeFeedEntryVisibility, setDispatchTenantResolver, setTenantEntryPointRunner, setTenantScopedClassResolver, setupSwaggerUI, shouldIncludeMethod, signalVisibleToTenant, smrt, smrtPlugin, smrt as smrtRegistry, snapshotRegistry, sortMCPTools, stableStringify, startRestServer, staticManifest, stopCacheInvalidationListeners, stopChangeSignalListeners, stringify, subscribeToChangeSignals, summarizeExternalAgentUsage, surfaceOpensOperation, tableExists, toCustomActionBoolean, toCustomActionDate, toCustomActionNumber, toSnakeCase, tryReserveChangeEventSubscriberSlot, unregisterChangeFeedWriter, unregisterConfigResolver, unregisterRetentionTask, usesEmbeddedRevisionFallback, validateHelp, validatePostgresPermissionContract, validateSyncApplyItem, validateToolCall, versionConditionalResponse, warnIfSharedCacheNeutralized, withAuditContext, withEmbeddedWriteQueue, withEmbeddedWriteTransaction, writeAudit };
@@ -3,7 +3,7 @@ var staticManifest = {
3
3
  "version": "1.0.0",
4
4
  "timestamp": 0,
5
5
  "packageName": "@happyvertical/smrt-core",
6
- "packageVersion": "0.57.30",
6
+ "packageVersion": "0.57.32",
7
7
  "objects": {
8
8
  "@happyvertical/smrt-core:SmrtClass": {
9
9
  "name": "smrtclass",