@getopencrawl/sdk 0.0.0-stage → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +598 -2
- package/dist/agentPlatform.d.ts +146 -0
- package/dist/agentPlatform.d.ts.map +1 -0
- package/dist/agentPlatform.js +48 -0
- package/dist/agentPlatform.js.map +1 -0
- package/dist/agents.d.ts +237 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +279 -0
- package/dist/agents.js.map +1 -0
- package/dist/answerContract.d.ts +85 -0
- package/dist/answerContract.d.ts.map +1 -0
- package/dist/answerContract.js +112 -0
- package/dist/answerContract.js.map +1 -0
- package/dist/answerView.d.ts +40 -0
- package/dist/answerView.d.ts.map +1 -0
- package/dist/answerView.js +118 -0
- package/dist/answerView.js.map +1 -0
- package/dist/configuration.d.ts +5 -0
- package/dist/configuration.d.ts.map +1 -0
- package/dist/configuration.js +29 -0
- package/dist/configuration.js.map +1 -0
- package/dist/customers.d.ts +176 -0
- package/dist/customers.d.ts.map +1 -0
- package/dist/customers.js +286 -0
- package/dist/customers.js.map +1 -0
- package/dist/errors.d.ts +35 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +58 -0
- package/dist/errors.js.map +1 -0
- package/dist/eventEvidence.d.ts +10 -0
- package/dist/eventEvidence.d.ts.map +1 -0
- package/dist/eventEvidence.js +52 -0
- package/dist/eventEvidence.js.map +1 -0
- package/dist/index.d.ts +98 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +139 -0
- package/dist/index.js.map +1 -0
- package/dist/productMonitors.d.ts +258 -0
- package/dist/productMonitors.d.ts.map +1 -0
- package/dist/productMonitors.js +68 -0
- package/dist/productMonitors.js.map +1 -0
- package/dist/researchAnswerContract.d.ts +8 -0
- package/dist/researchAnswerContract.d.ts.map +1 -0
- package/dist/researchAnswerContract.js +23 -0
- package/dist/researchAnswerContract.js.map +1 -0
- package/dist/researchAnswerView.d.ts +8 -0
- package/dist/researchAnswerView.d.ts.map +1 -0
- package/dist/researchAnswerView.js +27 -0
- package/dist/researchAnswerView.js.map +1 -0
- package/dist/researchCompletion.d.ts +114 -0
- package/dist/researchCompletion.d.ts.map +1 -0
- package/dist/researchCompletion.js +94 -0
- package/dist/researchCompletion.js.map +1 -0
- package/dist/serviceTenants.d.ts +15 -0
- package/dist/serviceTenants.d.ts.map +1 -0
- package/dist/serviceTenants.js +58 -0
- package/dist/serviceTenants.js.map +1 -0
- package/dist/tools.d.ts +59 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +60 -0
- package/dist/tools.js.map +1 -0
- package/dist/transport.d.ts +34 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +227 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +399 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/webhooks.d.ts +38 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +73 -0
- package/dist/webhooks.js.map +1 -0
- package/examples/letter-customer-research-demo.mjs +54 -0
- package/examples/letter-customer-research-store.d.mts +38 -0
- package/examples/letter-customer-research-store.mjs +186 -0
- package/examples/letter-customer-research.d.mts +39 -0
- package/examples/letter-customer-research.mjs +194 -0
- package/examples/letter-event-receiver.d.mts +10 -0
- package/examples/letter-event-receiver.mjs +55 -0
- package/examples/letter-event-store.d.mts +35 -0
- package/examples/letter-event-store.mjs +84 -0
- package/examples/letter-seer.d.mts +31 -0
- package/examples/letter-seer.mjs +78 -0
- package/examples/letter-service-tenants.d.mts +12 -0
- package/examples/letter-service-tenants.mjs +49 -0
- package/examples/research-webhook-receiver.mjs +29 -0
- package/package.json +75 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Customers, memoryKeyStore } from './customers.js';
|
|
2
|
+
import { AgentPlatform } from './agentPlatform.js';
|
|
3
|
+
import { OpenCrawlAbortError, OpenCrawlProtocolError, OpenCrawlTimeoutError, OpenCrawlValidationError } from './errors.js';
|
|
4
|
+
import { Transport, boundedInteger, idPath, idempotencyKey } from './transport.js';
|
|
5
|
+
import { ResearchWebhooks } from './webhooks.js';
|
|
6
|
+
import { ServiceTenantControl } from './serviceTenants.js';
|
|
7
|
+
import { ResearchAgents } from './agents.js';
|
|
8
|
+
import { ProductMonitors } from './productMonitors.js';
|
|
9
|
+
export * from './productMonitors.js';
|
|
10
|
+
import { configureCollection } from './configuration.js';
|
|
11
|
+
import { readEvent } from './eventEvidence.js';
|
|
12
|
+
export * from './errors.js';
|
|
13
|
+
export * from './types.js';
|
|
14
|
+
export { verifyResearchWebhook } from './webhooks.js';
|
|
15
|
+
export { Customer, Customers, memoryKeyStore, signalHeadline } from './customers.js';
|
|
16
|
+
export { AgentPlatform, signupOrganization, pollOrganizationSignup } from './agentPlatform.js';
|
|
17
|
+
export { agentTools } from './tools.js';
|
|
18
|
+
function query(options) { const params = new URLSearchParams(); if (options.limit !== undefined)
|
|
19
|
+
params.set('limit', String(boundedInteger(options.limit, 'limit', 1, 100))); if (options.cursor !== undefined) {
|
|
20
|
+
if (typeof options.cursor !== 'string' || options.cursor.length > 8192)
|
|
21
|
+
throw new OpenCrawlValidationError('cursor must be a bounded opaque string.');
|
|
22
|
+
params.set('cursor', options.cursor);
|
|
23
|
+
} const text = params.toString(); return text ? `?${text}` : ''; }
|
|
24
|
+
function page(value) { if (!value || !Array.isArray(value.items) || !(value.next_cursor === null || typeof value.next_cursor === 'string'))
|
|
25
|
+
throw new OpenCrawlProtocolError('OpenCrawl returned an invalid pagination receipt.'); return value; }
|
|
26
|
+
function job(value) { if (!value || typeof value.id !== 'string' || !['queued', 'running', 'completed', 'partial', 'failed', 'cancelled'].includes(value.status))
|
|
27
|
+
throw new OpenCrawlProtocolError('OpenCrawl returned an invalid job receipt.'); return value; }
|
|
28
|
+
function signalCheck(signal) { if (signal?.aborted)
|
|
29
|
+
throw new OpenCrawlAbortError('The OpenCrawl operation was cancelled.'); }
|
|
30
|
+
function sleep(ms, signal) { return new Promise((resolve, reject) => { signalCheck(signal); const abort = () => { clearTimeout(timer); signal?.removeEventListener('abort', abort); reject(new OpenCrawlAbortError('The OpenCrawl operation was cancelled.')); }, timer = setTimeout(() => { signal?.removeEventListener('abort', abort); resolve(); }, ms); signal?.addEventListener('abort', abort, { once: true }); }); }
|
|
31
|
+
async function* iterate(fetchPage, options) { const max = boundedInteger(options.maxPages ?? 1000, 'maxPages', 1, 10000); let cursor = options.cursor; const seen = new Set(); if (cursor !== undefined)
|
|
32
|
+
seen.add(cursor); for (let count = 0; count < max; count++) {
|
|
33
|
+
signalCheck(options.signal);
|
|
34
|
+
const result = page(await fetchPage({ ...options, cursor }));
|
|
35
|
+
for (const item of result.items) {
|
|
36
|
+
signalCheck(options.signal);
|
|
37
|
+
yield item;
|
|
38
|
+
}
|
|
39
|
+
if (result.next_cursor === null)
|
|
40
|
+
return;
|
|
41
|
+
if (seen.has(result.next_cursor))
|
|
42
|
+
throw new OpenCrawlProtocolError('OpenCrawl repeated a pagination cursor. Iteration stopped.');
|
|
43
|
+
seen.add(result.next_cursor);
|
|
44
|
+
cursor = result.next_cursor;
|
|
45
|
+
} throw new OpenCrawlProtocolError('Pagination reached maxPages. Continue explicitly with a saved page cursor.'); }
|
|
46
|
+
class Collections {
|
|
47
|
+
transport;
|
|
48
|
+
constructor(transport) {
|
|
49
|
+
this.transport = transport;
|
|
50
|
+
}
|
|
51
|
+
create(input, options) { idempotencyKey(options?.idempotencyKey); return this.transport.request('/api/research/collections', { ...options, method: 'POST', body: input }); }
|
|
52
|
+
async list(options = {}) { return page(await this.transport.request(`/api/research/collections${query(options)}`, options)); }
|
|
53
|
+
get(id, options = {}) { return this.transport.request(`/api/research/collections/${idPath(id)}`, options); }
|
|
54
|
+
update(id, input, options = {}) { boundedInteger(input.expected_revision, 'expected_revision', 1, Number.MAX_SAFE_INTEGER); if (!['active', 'paused'].includes(input.status))
|
|
55
|
+
throw new OpenCrawlValidationError('status must be active or paused.'); return this.transport.request(`/api/research/collections/${idPath(id)}`, { ...options, method: 'PATCH', body: input }); }
|
|
56
|
+
configure(id, input, options) { return configureCollection(this.transport, id, input, options); }
|
|
57
|
+
refresh(id, input, options) { idempotencyKey(options?.idempotencyKey); return this.transport.request(`/api/research/collections/${idPath(id)}/refresh`, { ...options, method: 'POST', body: input }); }
|
|
58
|
+
async events(id, options = {}) { if (options.includeVolatile !== undefined && typeof options.includeVolatile !== 'boolean')
|
|
59
|
+
throw new OpenCrawlValidationError('includeVolatile must be a boolean.'); const base = query(options), filter = options.includeVolatile === false ? 'include_volatile=false' : ''; return page(await this.transport.request(`/api/research/collections/${idPath(id)}/events${base}${filter ? (base ? '&' : '?') + filter : ''}`, options)); }
|
|
60
|
+
event(collectionId, eventId, options = {}) { return readEvent(this.transport, collectionId, eventId, options); }
|
|
61
|
+
iterate(options = {}) { return iterate(value => this.list(value), options); }
|
|
62
|
+
iterateEvents(id, options = {}) { return iterate(value => this.events(id, { ...value, includeVolatile: options.includeVolatile }), options); }
|
|
63
|
+
}
|
|
64
|
+
class Jobs {
|
|
65
|
+
transport;
|
|
66
|
+
constructor(transport) {
|
|
67
|
+
this.transport = transport;
|
|
68
|
+
}
|
|
69
|
+
async get(id, options = {}) { return job(await this.transport.request(`/api/research/jobs/${idPath(id)}`, options)); }
|
|
70
|
+
/** Waits for a terminal receipt. Failed/partial/cancelled jobs are returned, not disguised as success. */
|
|
71
|
+
async wait(id, options = {}) {
|
|
72
|
+
const maxWait = boundedInteger(options.maxWaitMs ?? 300000, 'maxWaitMs', 1, 3600000), interval = boundedInteger(options.pollIntervalMs ?? 1000, 'pollIntervalMs', 10, 60000), deadline = Date.now() + maxWait;
|
|
73
|
+
while (true) {
|
|
74
|
+
signalCheck(options.signal);
|
|
75
|
+
const remaining = deadline - Date.now();
|
|
76
|
+
if (remaining <= 0)
|
|
77
|
+
throw new OpenCrawlTimeoutError('The job is still pending. Resume waiting with the same job identifier.', id);
|
|
78
|
+
let value;
|
|
79
|
+
try {
|
|
80
|
+
value = await this.get(id, { signal: options.signal, timeoutMs: Math.max(1, Math.min(options.timeoutMs ?? 30000, remaining)) });
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error instanceof OpenCrawlTimeoutError)
|
|
84
|
+
throw new OpenCrawlTimeoutError('Job status could not be read before the deadline. Resume with the same job identifier.', id);
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
options.onProgress?.(value);
|
|
88
|
+
if (!['queued', 'running'].includes(value.status))
|
|
89
|
+
return value;
|
|
90
|
+
const wait = Math.min(interval, Math.max(0, deadline - Date.now()));
|
|
91
|
+
await sleep(wait, options.signal);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
class Plans {
|
|
96
|
+
transport;
|
|
97
|
+
constructor(transport) {
|
|
98
|
+
this.transport = transport;
|
|
99
|
+
}
|
|
100
|
+
status(options = {}) { return this.transport.request('/api/research/planner', options); }
|
|
101
|
+
/** Returns a proposal only. Source selection and collection creation remain explicit. */
|
|
102
|
+
create(input, options) { idempotencyKey(options?.idempotencyKey); return this.transport.request('/api/research/plans', { ...options, method: 'POST', body: input }); }
|
|
103
|
+
get(id, options = {}) { return this.transport.request(`/api/research/plans/${idPath(id)}`, options); }
|
|
104
|
+
byKey(key, options = {}) { idempotencyKey(key); return this.transport.request(`/api/research/plans/by-key/${encodeURIComponent(key)}`, options); }
|
|
105
|
+
}
|
|
106
|
+
/** Server-only. Supply tenant-specific credentials explicitly; no environment or local config is read. */
|
|
107
|
+
export class OpenCrawl {
|
|
108
|
+
productMonitors;
|
|
109
|
+
agents;
|
|
110
|
+
collections;
|
|
111
|
+
jobs;
|
|
112
|
+
webhooks;
|
|
113
|
+
plans;
|
|
114
|
+
agent;
|
|
115
|
+
baseUrl;
|
|
116
|
+
#transport;
|
|
117
|
+
#tenantControl;
|
|
118
|
+
#options;
|
|
119
|
+
constructor(options) { this.#options = { ...options }; this.#transport = new Transport(options); this.baseUrl = this.#transport.baseUrl; this.productMonitors = new ProductMonitors(this.#transport); this.agents = new ResearchAgents(this.#transport); this.collections = new Collections(this.#transport); this.jobs = new Jobs(this.#transport); this.webhooks = new ResearchWebhooks(this.#transport); this.plans = new Plans(this.#transport); this.agent = new AgentPlatform(this.#transport); this.#tenantControl = new ServiceTenantControl(this.#transport); }
|
|
120
|
+
/** Your end customers, each isolated in its own workspace and provisioned on first use.
|
|
121
|
+
* Requires a parent administrator API key. Pass a shared KeyStore when several processes
|
|
122
|
+
* serve customers; keys lost from the store are recovered by rotation. */
|
|
123
|
+
customers(options = {}) { return new Customers(this, options.keys ?? memoryKeyStore(), key => new OpenCrawl({ ...this.#options, apiKey: key })); }
|
|
124
|
+
/** Requires a parent administrator API key; these writes never retry automatically. */
|
|
125
|
+
createServiceTenant(input, options) { return this.#tenantControl.create(input, options); }
|
|
126
|
+
listServiceTenants(options = {}) { return this.#tenantControl.list(options); }
|
|
127
|
+
getServiceTenant(id, options = {}) { return this.#tenantControl.get(id, options); }
|
|
128
|
+
rotateServiceTenantKey(id, input, options) { return this.#tenantControl.rotate(id, input, options); }
|
|
129
|
+
revokeServiceTenant(id, input, options) { return this.#tenantControl.revoke(id, input, options); }
|
|
130
|
+
getServiceTenantReceipt(operation, options) { return this.#tenantControl.recover(operation, options); }
|
|
131
|
+
search(input, options = {}) { return this.#transport.request('/api/research/search', { ...options, method: 'POST', body: input, readOnly: input.freshness !== 'refresh' }); }
|
|
132
|
+
/** Existing source-scoped context API; explicit [] is retained, never broadened. */
|
|
133
|
+
context(input, options = {}) { return this.#transport.request('/api/v1/context', { ...options, method: 'POST', body: input, readOnly: true }); }
|
|
134
|
+
}
|
|
135
|
+
export default OpenCrawl;
|
|
136
|
+
export { readResearchAnswerContract } from './researchAnswerContract.js';
|
|
137
|
+
export { readResearchCompletion, readResearchPresentation } from './researchCompletion.js';
|
|
138
|
+
export { readResearchAnswerView } from "./researchAnswerView.js";
|
|
139
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,cAAc,EAAe,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,mBAAmB,EAAC,sBAAsB,EAAC,qBAAqB,EAAC,wBAAwB,EAAC,MAAM,aAAa,CAAC;AACtH,OAAO,EAAC,SAAS,EAAC,cAAc,EAAC,MAAM,EAAC,cAAc,EAA6D,MAAM,gBAAgB,CAAC;AAC1I,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAC,SAAS,EAAuB,MAAM,oBAAoB,CAAC;AAInE,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAC,qBAAqB,EAA4B,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAC,QAAQ,EAAC,SAAS,EAAC,cAAc,EAAC,cAAc,EAAmN,MAAM,gBAAgB,CAAC;AAClS,OAAO,EAAC,aAAa,EAAC,kBAAkB,EAAC,sBAAsB,EAAiH,MAAM,oBAAoB,CAAC;AAC3M,OAAO,EAAC,UAAU,EAAmE,MAAM,YAAY,CAAC;AAOxG,SAAS,KAAK,CAAC,OAAmB,IAAE,MAAM,MAAM,GAAC,IAAI,eAAe,EAAE,CAAC,CAAA,IAAG,OAAO,CAAC,KAAK,KAAG,SAAS;IAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAC,OAAO,EAAC,CAAC,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,IAAG,OAAO,CAAC,MAAM,KAAG,SAAS,EAAC,CAAC;IAAA,IAAG,OAAO,OAAO,CAAC,MAAM,KAAG,QAAQ,IAAE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAC,IAAI;QAAC,MAAM,IAAI,wBAAwB,CAAC,yCAAyC,CAAC,CAAC;IAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAAA,CAAC,CAAA,MAAM,IAAI,GAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA,OAAO,IAAI,CAAA,CAAC,CAAA,IAAI,IAAI,EAAE,CAAA,CAAC,CAAA,EAAE,CAAA,CAAA,CAAC;AACpb,SAAS,IAAI,CAAI,KAAmB,IAAE,IAAG,CAAC,KAAK,IAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,WAAW,KAAG,IAAI,IAAE,OAAO,KAAK,CAAC,WAAW,KAAG,QAAQ,CAAC;IAAC,MAAM,IAAI,sBAAsB,CAAC,mDAAmD,CAAC,CAAC,CAAA,OAAO,KAAK,CAAA,CAAA,CAAC;AAClP,SAAS,GAAG,CAAC,KAAiB,IAAE,IAAG,CAAC,KAAK,IAAE,OAAO,KAAK,CAAC,EAAE,KAAG,QAAQ,IAAE,CAAC,CAAC,QAAQ,EAAC,SAAS,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IAAC,MAAM,IAAI,sBAAsB,CAAC,4CAA4C,CAAC,CAAC,CAAA,OAAO,KAAK,CAAA,CAAA,CAAC;AAC3P,SAAS,WAAW,CAAC,MAAmB,IAAE,IAAG,MAAM,EAAE,OAAO;IAAC,MAAM,IAAI,mBAAmB,CAAC,wCAAwC,CAAC,CAAA,CAAA,CAAC;AACrI,SAAS,KAAK,CAAC,EAAS,EAAC,MAAmB,IAAE,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAC,MAAM,EAAC,EAAE,GAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA,MAAM,KAAK,GAAC,GAAE,EAAE,GAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAC,KAAK,CAAC,CAAC,CAAA,MAAM,CAAC,IAAI,mBAAmB,CAAC,wCAAwC,CAAC,CAAC,CAAA,CAAA,CAAC,EAAC,KAAK,GAAC,UAAU,CAAC,GAAE,EAAE,GAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAC,KAAK,CAAC,CAAC,CAAA,OAAO,EAAE,CAAA,CAAA,CAAC,EAAC,EAAE,CAAC,CAAC,CAAA,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAC,KAAK,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAA,CAAA,CAAC,CAAC,CAAA,CAAA,CAAC;AAC/Y,KAAK,SAAS,CAAC,CAAC,OAAO,CAAI,SAAuD,EAAC,OAAsB,IAAoB,MAAM,GAAG,GAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAE,IAAI,EAAC,UAAU,EAAC,CAAC,EAAC,KAAK,CAAC,CAAC,CAAA,IAAI,MAAM,GAAC,OAAO,CAAC,MAAM,CAAC,CAAA,MAAM,IAAI,GAAC,IAAI,GAAG,EAAU,CAAC,CAAA,IAAG,MAAM,KAAG,SAAS;IAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA,KAAI,IAAI,KAAK,GAAC,CAAC,EAAC,KAAK,GAAC,GAAG,EAAC,KAAK,EAAE,EAAC,CAAC;IAAA,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAAA,MAAM,MAAM,GAAC,IAAI,CAAC,MAAM,SAAS,CAAC,EAAC,GAAG,OAAO,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;IAAA,KAAI,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAC,CAAC;QAAA,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAAA,MAAM,IAAI,CAAA;IAAA,CAAC;IAAA,IAAG,MAAM,CAAC,WAAW,KAAG,IAAI;QAAC,OAAO;IAAA,IAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QAAC,MAAM,IAAI,sBAAsB,CAAC,4DAA4D,CAAC,CAAC;IAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAAA,MAAM,GAAC,MAAM,CAAC,WAAW,CAAA;AAAA,CAAC,CAAA,MAAM,IAAI,sBAAsB,CAAC,4EAA4E,CAAC,CAAC,CAAA,CAAC;AACvyB,MAAM,WAAW;IACa;IAA7B,YAA6B,SAAmB;QAAnB,cAAS,GAAT,SAAS,CAAU;IAAE,CAAC;IACnD,MAAM,CAAC,KAAqB,EAAC,OAAuB,IAA6B,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,2BAA2B,EAAC,EAAC,GAAG,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAA,CAAA,CAAC;IAC1N,KAAK,CAAC,IAAI,CAAC,UAAoB,EAAE,IAAkC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,KAAK,CAAC,OAAO,CAAC,EAAE,EAAC,OAAO,CAAC,CAAC,CAAA,CAAA,CAAC;IACnK,GAAG,CAAC,EAAS,EAAC,UAAuB,EAAE,IAAsB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6BAA6B,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IAC9I,MAAM,CAAC,EAAS,EAAC,KAAsB,EAAC,UAAuB,EAAE,IAAsB,cAAc,CAAC,KAAK,CAAC,iBAAiB,EAAC,mBAAmB,EAAC,CAAC,EAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAA,IAAG,CAAC,CAAC,QAAQ,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAAC,MAAM,IAAI,wBAAwB,CAAC,kCAAkC,CAAC,CAAC,CAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6BAA6B,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC,EAAC,GAAG,OAAO,EAAC,MAAM,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAA,CAAA,CAAC;IACnZ,SAAS,CAAC,EAAS,EAAC,KAAwB,EAAC,OAAuB,IAAqC,OAAO,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAC,EAAE,EAAC,KAAK,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IACrK,OAAO,CAAC,EAAS,EAAC,KAAkB,EAAC,OAAuB,IAA0B,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6BAA6B,MAAM,CAAC,EAAE,CAAC,UAAU,EAAC,EAAC,GAAG,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAA,CAAA,CAAC;IACrP,KAAK,CAAC,MAAM,CAAC,EAAS,EAAC,UAAyB,EAAE,IAAqC,IAAG,OAAO,CAAC,eAAe,KAAG,SAAS,IAAE,OAAO,OAAO,CAAC,eAAe,KAAG,SAAS;QAAC,MAAM,IAAI,wBAAwB,CAAC,oCAAoC,CAAC,CAAC,CAAA,MAAM,IAAI,GAAC,KAAK,CAAC,OAAO,CAAC,EAAC,MAAM,GAAC,OAAO,CAAC,eAAe,KAAG,KAAK,CAAA,CAAC,CAAA,wBAAwB,CAAA,CAAC,CAAA,EAAE,CAAC,CAAA,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6BAA6B,MAAM,CAAC,EAAE,CAAC,UAAU,IAAI,GAAG,MAAM,CAAA,CAAC,CAAA,CAAC,IAAI,CAAA,CAAC,CAAA,GAAG,CAAA,CAAC,CAAA,GAAG,CAAC,GAAC,MAAM,CAAA,CAAC,CAAA,EAAE,EAAE,EAAC,OAAO,CAAC,CAAC,CAAA,CAAA,CAAC;IAC7d,KAAK,CAAC,YAAmB,EAAC,OAAc,EAAC,UAAyB,EAAE,IAAE,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IACpI,OAAO,CAAC,UAAuB,EAAE,IAA6B,OAAO,OAAO,CAAC,KAAK,CAAA,EAAE,CAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IAC9G,aAAa,CAAC,EAAS,EAAC,UAAwC,EAAE,IAAgC,OAAO,OAAO,CAAC,KAAK,CAAA,EAAE,CAAA,IAAI,CAAC,MAAM,CAAC,EAAE,EAAC,EAAC,GAAG,KAAK,EAAC,eAAe,EAAC,OAAO,CAAC,eAAe,EAAC,CAAC,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;CACpM;AACD,MAAM,IAAI;IACoB;IAA7B,YAA6B,SAAmB;QAAnB,cAAS,GAAT,SAAS,CAAU;IAAE,CAAC;IACnD,KAAK,CAAC,GAAG,CAAC,EAAS,EAAC,UAAuB,EAAE,IAAuB,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC,OAAO,CAAC,CAAC,CAAA,CAAA,CAAC;IACzJ,0GAA0G;IAC1G,KAAK,CAAC,IAAI,CAAC,EAAS,EAAC,UAAoB,EAAE;QAC1C,MAAM,OAAO,GAAC,cAAc,CAAC,OAAO,CAAC,SAAS,IAAE,MAAM,EAAC,WAAW,EAAC,CAAC,EAAC,OAAO,CAAC,EAAC,QAAQ,GAAC,cAAc,CAAC,OAAO,CAAC,cAAc,IAAE,IAAI,EAAC,gBAAgB,EAAC,EAAE,EAAC,KAAK,CAAC,EAAC,QAAQ,GAAC,IAAI,CAAC,GAAG,EAAE,GAAC,OAAO,CAAC;QAC1L,OAAM,IAAI,EAAC,CAAC;YAAA,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAAA,MAAM,SAAS,GAAC,QAAQ,GAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAAA,IAAG,SAAS,IAAE,CAAC;gBAAC,MAAM,IAAI,qBAAqB,CAAC,wEAAwE,EAAC,EAAE,CAAC,CAAC;YACxM,IAAI,KAAiB,CAAC;YAAA,IAAG,CAAC;gBAAA,KAAK,GAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,EAAC,MAAM,EAAC,OAAO,CAAC,MAAM,EAAC,SAAS,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAE,KAAK,EAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAA;YAAA,CAAC;YAAA,OAAM,KAAK,EAAC,CAAC;gBAAA,IAAG,KAAK,YAAY,qBAAqB;oBAAC,MAAM,IAAI,qBAAqB,CAAC,wFAAwF,EAAC,EAAE,CAAC,CAAC;gBAAA,MAAM,KAAK,CAAA;YAAA,CAAC;YAAA,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;YAAA,IAAG,CAAC,CAAC,QAAQ,EAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAC,OAAO,KAAK,CAAC;YACva,MAAM,IAAI,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,QAAQ,GAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAAA,MAAM,KAAK,CAAC,IAAI,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC;IACF,CAAC;CACD;AACD,MAAM,KAAK;IACmB;IAA7B,YAA6B,SAAmB;QAAnB,cAAS,GAAT,SAAS,CAAU;IAAE,CAAC;IACnD,MAAM,CAAC,UAAuB,EAAE,IAAiC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IAChI,yFAAyF;IACzF,MAAM,CAAC,KAAuB,EAAC,OAAuB,IAA+B,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAC,EAAC,GAAG,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAA,CAAA,CAAC;IACxN,GAAG,CAAC,EAAS,EAAC,UAAuB,EAAE,IAA+B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IACjJ,KAAK,CAAC,GAAU,EAAC,UAAuB,EAAE,IAA+B,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,8BAA8B,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;CAC5L;AACD,0GAA0G;AAC1G,MAAM,OAAO,SAAS;IACZ,eAAe,CAAiB;IAAS,MAAM,CAAgB;IAAS,WAAW,CAAa;IAAS,IAAI,CAAM;IAAS,QAAQ,CAAkB;IAAS,KAAK,CAAO;IAAS,KAAK,CAAe;IAAS,OAAO,CAAQ;IAAA,UAAU,CAAW;IAAA,cAAc,CAAsB;IAAA,QAAQ,CAAe;IACzT,YAAY,OAAqB,IAAE,IAAI,CAAC,QAAQ,GAAC,EAAC,GAAG,OAAO,EAAC,CAAC,CAAA,IAAI,CAAC,UAAU,GAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,IAAI,CAAC,eAAe,GAAC,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA,IAAI,CAAC,MAAM,GAAC,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA,IAAI,CAAC,WAAW,GAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA,IAAI,CAAC,IAAI,GAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA,IAAI,CAAC,QAAQ,GAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA,IAAI,CAAC,KAAK,GAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA,IAAI,CAAC,KAAK,GAAC,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA,IAAI,CAAC,cAAc,GAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,CAAA,CAAC;IAChhB;;8EAE0E;IAC1E,SAAS,CAAC,UAAyB,EAAE,IAAY,OAAO,IAAI,SAAS,CAAC,IAAI,EAAC,OAAO,CAAC,IAAI,IAAE,cAAc,EAAE,EAAC,GAAG,CAAA,EAAE,CAAA,IAAI,SAAS,CAAC,EAAC,GAAG,IAAI,CAAC,QAAQ,EAAC,MAAM,EAAC,GAAG,EAAC,CAAC,CAAC,CAAA,CAAA,CAAC;IAC7J,uFAAuF;IACvF,mBAAmB,CAAC,KAAwB,EAAC,OAAuB,IAAgC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IACrJ,kBAAkB,CAAC,UAAgD,EAAE,IAA6B,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IAC3I,gBAAgB,CAAC,EAAS,EAAC,UAAuB,EAAE,IAAyB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IACxH,sBAAsB,CAAC,EAAS,EAAC,KAA2B,EAAC,OAAuB,IAAgC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAC,KAAK,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IACxK,mBAAmB,CAAC,EAAS,EAAC,KAA2B,EAAC,OAAuB,IAAgC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAC,KAAK,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IACrK,uBAAuB,CAAC,SAAgC,EAAC,OAAuB,IAAgC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAC,OAAO,CAAC,CAAA,CAAA,CAAC;IACtK,MAAM,CAAC,KAAyB,EAAC,UAAuB,EAAE,IAAkC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,sBAAsB,EAAC,EAAC,GAAG,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,CAAC,SAAS,KAAG,SAAS,EAAC,CAAC,CAAA,CAAA,CAAC;IAC9N,oFAAoF;IACpF,OAAO,CAAC,KAAkB,EAAC,UAAuB,EAAE,IAA2B,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAC,EAAC,GAAG,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAA,CAAA,CAAC;CACrL;AACD,eAAe,SAAS,CAAC;AAEzB,OAAO,EAAC,0BAA0B,EAAsI,MAAM,6BAA6B,CAAC;AAE5M,OAAO,EAAC,sBAAsB,EAAC,wBAAwB,EAAiH,MAAM,yBAAyB,CAAC;AAExM,OAAO,EAAC,sBAAsB,EAAC,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/** Private client-attested observations; browser state stays on the capture device. */
|
|
2
|
+
import { Transport, type RequestOptions } from './transport.js';
|
|
3
|
+
export type ProductCapturePolicy = ({
|
|
4
|
+
version: 1;
|
|
5
|
+
request_adapter?: never;
|
|
6
|
+
} | {
|
|
7
|
+
version: 2;
|
|
8
|
+
request_adapter: 'letter-connections-read-v1';
|
|
9
|
+
} | {
|
|
10
|
+
version: 3;
|
|
11
|
+
request_adapter: 'letter-capabilities-read-v1';
|
|
12
|
+
}) & {
|
|
13
|
+
viewport: {
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
device_scale_factor: 1;
|
|
17
|
+
};
|
|
18
|
+
locale: string;
|
|
19
|
+
timezone_id: string;
|
|
20
|
+
color_scheme: 'light' | 'dark';
|
|
21
|
+
screenshot_mode: 'viewport';
|
|
22
|
+
extractor: 'product-screen-v1';
|
|
23
|
+
masks: Array<{
|
|
24
|
+
selector: string;
|
|
25
|
+
label: string;
|
|
26
|
+
}>;
|
|
27
|
+
noise_regions: Array<{
|
|
28
|
+
selector: string;
|
|
29
|
+
label: string;
|
|
30
|
+
}>;
|
|
31
|
+
};
|
|
32
|
+
export type ProductPageInput = {
|
|
33
|
+
url: string;
|
|
34
|
+
label: string;
|
|
35
|
+
ready_selector: string;
|
|
36
|
+
scope_selector: string;
|
|
37
|
+
login_selector: string | null;
|
|
38
|
+
account_marker: {
|
|
39
|
+
selector: string;
|
|
40
|
+
required: true;
|
|
41
|
+
} | null;
|
|
42
|
+
};
|
|
43
|
+
export type ProductMonitorInput = {
|
|
44
|
+
client_create_id: string;
|
|
45
|
+
name: string;
|
|
46
|
+
account_label: string;
|
|
47
|
+
pages: ProductPageInput[];
|
|
48
|
+
policy: ProductCapturePolicy;
|
|
49
|
+
cadence_minutes: 0 | 60 | 360 | 1440;
|
|
50
|
+
};
|
|
51
|
+
export type ProductSnapshot = {
|
|
52
|
+
id: string;
|
|
53
|
+
version: string;
|
|
54
|
+
observed_at: string;
|
|
55
|
+
received_at: string;
|
|
56
|
+
title: string;
|
|
57
|
+
text_sha256: string;
|
|
58
|
+
text_bytes: number;
|
|
59
|
+
screenshot_sha256: string;
|
|
60
|
+
screenshot_bytes: number;
|
|
61
|
+
pixel_sha256: string;
|
|
62
|
+
width: number;
|
|
63
|
+
height: number;
|
|
64
|
+
policy_sha256: string;
|
|
65
|
+
comparability_sha256: string;
|
|
66
|
+
account_assurance: 'declared_only' | 'dom_marker_matched';
|
|
67
|
+
account_label: string;
|
|
68
|
+
requested_url: string;
|
|
69
|
+
final_url: string;
|
|
70
|
+
};
|
|
71
|
+
export type ProductComparison = {
|
|
72
|
+
id: string;
|
|
73
|
+
version: string;
|
|
74
|
+
before_snapshot_id: string;
|
|
75
|
+
after_snapshot_id: string;
|
|
76
|
+
observed_before: string;
|
|
77
|
+
observed_after: string;
|
|
78
|
+
text_changed: boolean;
|
|
79
|
+
image_changed: boolean;
|
|
80
|
+
gap: boolean;
|
|
81
|
+
assessment: 'observed_interface_difference';
|
|
82
|
+
};
|
|
83
|
+
export type ProductMonitor = {
|
|
84
|
+
version: 1;
|
|
85
|
+
id: string;
|
|
86
|
+
name: string;
|
|
87
|
+
owner_id: string;
|
|
88
|
+
visibility: 'private';
|
|
89
|
+
status: 'active' | 'paused' | 'revoked';
|
|
90
|
+
generation: number;
|
|
91
|
+
origin: string;
|
|
92
|
+
account_label: string;
|
|
93
|
+
pages: Array<ProductPageInput & {
|
|
94
|
+
id: string;
|
|
95
|
+
last_attempt: unknown | null;
|
|
96
|
+
latest_snapshot: ProductSnapshot | null;
|
|
97
|
+
}>;
|
|
98
|
+
policy: ProductCapturePolicy;
|
|
99
|
+
policy_sha256: string;
|
|
100
|
+
cadence_minutes: 0 | 60 | 360 | 1440;
|
|
101
|
+
local_runner_required: true;
|
|
102
|
+
last_attempt_at: string | null;
|
|
103
|
+
last_success_at: string | null;
|
|
104
|
+
expected_next_capture_at: string | null;
|
|
105
|
+
observation_freshness: 'never' | 'recent' | 'overdue';
|
|
106
|
+
retention: {
|
|
107
|
+
days: number;
|
|
108
|
+
max_comparisons_per_page: number;
|
|
109
|
+
max_attempts_per_page: number;
|
|
110
|
+
max_recent_snapshots_per_page?: number;
|
|
111
|
+
current_baseline_retained: boolean;
|
|
112
|
+
};
|
|
113
|
+
capacity: {
|
|
114
|
+
used_bytes: number;
|
|
115
|
+
limit_bytes: number;
|
|
116
|
+
};
|
|
117
|
+
created_at: string;
|
|
118
|
+
updated_at: string;
|
|
119
|
+
};
|
|
120
|
+
export type ProductCaptureOutcome = 'captured' | 'session_expired' | 'context_mismatch' | 'not_ready' | 'scope_mismatch' | 'mask_unresolved' | 'request_blocked' | 'timeout' | 'capture_failed';
|
|
121
|
+
export type ProductCaptureUpload = {
|
|
122
|
+
version: 1;
|
|
123
|
+
client_capture_id: string;
|
|
124
|
+
page_id: string;
|
|
125
|
+
expected_generation: number;
|
|
126
|
+
policy_sha256: string;
|
|
127
|
+
expected_previous_snapshot_id: string | null;
|
|
128
|
+
session_epoch: string;
|
|
129
|
+
observed_at: string;
|
|
130
|
+
requested_url: string;
|
|
131
|
+
final_url: string | null;
|
|
132
|
+
outcome: ProductCaptureOutcome;
|
|
133
|
+
account: {
|
|
134
|
+
label: string;
|
|
135
|
+
assurance: 'declared_only' | 'dom_marker_matched';
|
|
136
|
+
marker_sha256: string | null;
|
|
137
|
+
};
|
|
138
|
+
ready_matched: boolean;
|
|
139
|
+
login_marker_matched: boolean;
|
|
140
|
+
title: string | null;
|
|
141
|
+
text: string | null;
|
|
142
|
+
screenshot_png_base64: string | null;
|
|
143
|
+
};
|
|
144
|
+
export type ProductCaptureReceipt = {
|
|
145
|
+
version: 1;
|
|
146
|
+
id: string;
|
|
147
|
+
client_capture_id: string;
|
|
148
|
+
monitor_id: string;
|
|
149
|
+
page_id: string;
|
|
150
|
+
generation: number;
|
|
151
|
+
manifest_sha256: string;
|
|
152
|
+
observed_at: string;
|
|
153
|
+
received_at: string;
|
|
154
|
+
outcome: ProductCaptureOutcome;
|
|
155
|
+
snapshot: ProductSnapshot | null;
|
|
156
|
+
comparison: ProductComparison | null;
|
|
157
|
+
baseline_reason: string | null;
|
|
158
|
+
};
|
|
159
|
+
export type ProductComparisonDetail = ProductComparison & {
|
|
160
|
+
monitor_id: string;
|
|
161
|
+
page_id: string;
|
|
162
|
+
before: ProductSnapshot;
|
|
163
|
+
after: ProductSnapshot;
|
|
164
|
+
regions: {
|
|
165
|
+
before: ProductTextRegion;
|
|
166
|
+
after: ProductTextRegion;
|
|
167
|
+
};
|
|
168
|
+
exclusions: {
|
|
169
|
+
masks: Array<{
|
|
170
|
+
selector: string;
|
|
171
|
+
label: string;
|
|
172
|
+
}>;
|
|
173
|
+
noise_regions: Array<{
|
|
174
|
+
selector: string;
|
|
175
|
+
label: string;
|
|
176
|
+
}>;
|
|
177
|
+
};
|
|
178
|
+
explanation: string;
|
|
179
|
+
};
|
|
180
|
+
export type ProductTextRegion = {
|
|
181
|
+
text: string;
|
|
182
|
+
start: number;
|
|
183
|
+
end: number;
|
|
184
|
+
changed_start: number;
|
|
185
|
+
changed_end: number;
|
|
186
|
+
truncated: boolean;
|
|
187
|
+
};
|
|
188
|
+
export type ProductContextInput = {
|
|
189
|
+
selections: Array<{
|
|
190
|
+
comparison_id: string;
|
|
191
|
+
version: string;
|
|
192
|
+
}>;
|
|
193
|
+
budget: number;
|
|
194
|
+
};
|
|
195
|
+
export type ProductContext = {
|
|
196
|
+
context: string;
|
|
197
|
+
context_bytes: number;
|
|
198
|
+
budget: number;
|
|
199
|
+
included: Array<{
|
|
200
|
+
comparison_id: string;
|
|
201
|
+
version: string;
|
|
202
|
+
side: 'before' | 'after';
|
|
203
|
+
snapshot_id: string;
|
|
204
|
+
observed_at: string;
|
|
205
|
+
excerpt: string;
|
|
206
|
+
context_span: {
|
|
207
|
+
start_char: number;
|
|
208
|
+
end_char: number;
|
|
209
|
+
};
|
|
210
|
+
truncated: boolean;
|
|
211
|
+
}>;
|
|
212
|
+
omitted: Array<{
|
|
213
|
+
comparison_id: string;
|
|
214
|
+
side: 'before' | 'after';
|
|
215
|
+
reason: 'budget' | 'no_text_region';
|
|
216
|
+
}>;
|
|
217
|
+
image_content_included: false;
|
|
218
|
+
assessment: 'observed_interface_difference';
|
|
219
|
+
};
|
|
220
|
+
export declare class ProductMonitors {
|
|
221
|
+
private readonly transport;
|
|
222
|
+
constructor(transport: Transport);
|
|
223
|
+
/** One POST only. Save client_create_id first; use byClientId after an uncertain result. */
|
|
224
|
+
create(input: ProductMonitorInput, o?: RequestOptions): Promise<ProductMonitor>;
|
|
225
|
+
byClientId(key: string, o?: RequestOptions): Promise<ProductMonitor>;
|
|
226
|
+
list(o?: RequestOptions): Promise<{
|
|
227
|
+
monitors: ProductMonitor[];
|
|
228
|
+
}>;
|
|
229
|
+
get(key: string, o?: RequestOptions): Promise<ProductMonitor>;
|
|
230
|
+
update(key: string, input: {
|
|
231
|
+
expected_generation: number;
|
|
232
|
+
name?: string;
|
|
233
|
+
policy?: ProductCapturePolicy;
|
|
234
|
+
cadence_minutes?: 0 | 60 | 360 | 1440;
|
|
235
|
+
status?: 'active' | 'paused' | 'revoked';
|
|
236
|
+
}, o?: RequestOptions): Promise<ProductMonitor>;
|
|
237
|
+
delete(key: string, o?: RequestOptions): Promise<{
|
|
238
|
+
deleted: true;
|
|
239
|
+
}>;
|
|
240
|
+
/** No automatic POST retry. Recovery is a separate exact-ID read. */
|
|
241
|
+
capture(key: string, input: ProductCaptureUpload, o?: RequestOptions): Promise<ProductCaptureReceipt>;
|
|
242
|
+
captureByClientId(key: string, clientId: string, o?: RequestOptions): Promise<ProductCaptureReceipt>;
|
|
243
|
+
captures(key: string, o?: RequestOptions): Promise<{
|
|
244
|
+
captures: ProductCaptureReceipt[];
|
|
245
|
+
}>;
|
|
246
|
+
snapshot(key: string, o?: RequestOptions): Promise<ProductSnapshot & {
|
|
247
|
+
text: string;
|
|
248
|
+
monitor_id: string;
|
|
249
|
+
page_id: string;
|
|
250
|
+
}>;
|
|
251
|
+
image(key: string, o?: RequestOptions): Promise<Uint8Array>;
|
|
252
|
+
comparisons(key: string, o?: RequestOptions): Promise<{
|
|
253
|
+
comparisons: ProductComparison[];
|
|
254
|
+
}>;
|
|
255
|
+
comparison(key: string, version: string, o?: RequestOptions): Promise<ProductComparisonDetail>;
|
|
256
|
+
context(input: ProductContextInput, o?: RequestOptions): Promise<ProductContext>;
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=productMonitors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productMonitors.d.ts","sourceRoot":"","sources":["../src/productMonitors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** Private client-attested observations; browser state stays on the capture device. */
|
|
2
|
+
import { boundedInteger } from './transport.js';
|
|
3
|
+
import { OpenCrawlValidationError, OpenCrawlProtocolError } from './errors.js';
|
|
4
|
+
const API = '/api/v1/product-monitors', HASH = /^[a-f0-9]{64}$/, UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
5
|
+
function id(v, p) { if (typeof v !== 'string' || !new RegExp(`^${p}_[a-f0-9]{32}$`).test(v))
|
|
6
|
+
throw new OpenCrawlValidationError('Use the exact product resource ID.'); return v; }
|
|
7
|
+
function uuid(v) { if (!UUID.test(v))
|
|
8
|
+
throw new OpenCrawlValidationError('Use a canonical UUID saved before the operation.'); return v; }
|
|
9
|
+
function canonical(v) { return JSON.stringify(v, (_, x) => x && typeof x === 'object' && !Array.isArray(x) ? Object.fromEntries(Object.keys(x).sort().map(k => [k, x[k]])) : x); }
|
|
10
|
+
async function digest(v) { return Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', new TextEncoder().encode(v))), x => x.toString(16).padStart(2, '0')).join(''); }
|
|
11
|
+
function monitor(v, expected) { if (v?.version !== 1 || !/^src_[a-f0-9]{32}$/.test(v.id) || expected !== undefined && v.id !== expected || v.visibility !== 'private' || !Number.isSafeInteger(v.generation) || v.generation < 1 || !Array.isArray(v.pages) || v.pages.length < 1 || v.pages.length > 5 || !HASH.test(v.policy_sha256) || !(v.policy?.version === 1 && !Object.hasOwn(v.policy, 'request_adapter') || (v.policy?.version === 2 && v.policy.request_adapter === 'letter-connections-read-v1' || v.policy?.version === 3 && v.policy.request_adapter === 'letter-capabilities-read-v1' && v.pages[0]?.ready_selector === '[data-testid="connect-integration-open"]' && v.pages[0]?.scope_selector === '[data-testid="connect-integration"]') && v.pages.length === 1 && v.pages[0]?.url === 'https://app.letterstory.com/letterpress?view=connections' && v.pages[0]?.account_marker?.required === true))
|
|
12
|
+
throw new OpenCrawlProtocolError('Invalid private product monitor response.'); return v; }
|
|
13
|
+
function capture(v, expected, clientId) { if (v?.version !== 1 || !/^pcap_[a-f0-9]{32}$/.test(v.id) || v.monitor_id !== expected || clientId !== undefined && v.client_capture_id !== clientId || !HASH.test(v.manifest_sha256))
|
|
14
|
+
throw new OpenCrawlProtocolError('Invalid product capture receipt.'); return v; }
|
|
15
|
+
async function bytesDigest(value) { return Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', value)), x => x.toString(16).padStart(2, '0')).join(''); }
|
|
16
|
+
function bodyLimit(v) { if (new TextEncoder().encode(JSON.stringify(v)).length > 3145728)
|
|
17
|
+
throw new OpenCrawlValidationError('Product capture exceeds the 3 MiB encoded request limit.'); }
|
|
18
|
+
export class ProductMonitors {
|
|
19
|
+
transport;
|
|
20
|
+
constructor(transport) {
|
|
21
|
+
this.transport = transport;
|
|
22
|
+
}
|
|
23
|
+
/** One POST only. Save client_create_id first; use byClientId after an uncertain result. */
|
|
24
|
+
async create(input, o = {}) { uuid(input.client_create_id); bodyLimit(input); return monitor(await this.transport.request(API, { ...o, method: 'POST', body: input, automaticRetry: false })); }
|
|
25
|
+
async byClientId(key, o = {}) { return monitor(await this.transport.request(`${API}/by-client-id/${uuid(key)}`, { ...o, automaticRetry: false })); }
|
|
26
|
+
async list(o = {}) { const r = await this.transport.request(API, o); if (!Array.isArray(r?.monitors) || r.monitors.length > 10)
|
|
27
|
+
throw new OpenCrawlProtocolError('Invalid monitor list.'); r.monitors.forEach(x => monitor(x)); return r; }
|
|
28
|
+
async get(key, o = {}) { return monitor(await this.transport.request(`${API}/${id(key, 'src')}`, o), key); }
|
|
29
|
+
async update(key, input, o = {}) { boundedInteger(input.expected_generation, 'expected_generation', 1, Number.MAX_SAFE_INTEGER); return monitor(await this.transport.request(`${API}/${id(key, 'src')}`, { ...o, method: 'PATCH', body: input, automaticRetry: false }), key); }
|
|
30
|
+
delete(key, o = {}) { return this.transport.request(`${API}/${id(key, 'src')}`, { ...o, method: 'DELETE', automaticRetry: false }); }
|
|
31
|
+
/** No automatic POST retry. Recovery is a separate exact-ID read. */
|
|
32
|
+
async capture(key, input, o = {}) {
|
|
33
|
+
id(key, 'src');
|
|
34
|
+
uuid(input.client_capture_id);
|
|
35
|
+
uuid(input.session_epoch);
|
|
36
|
+
id(input.page_id, 'ppg');
|
|
37
|
+
boundedInteger(input.expected_generation, 'expected_generation', 1, Number.MAX_SAFE_INTEGER);
|
|
38
|
+
if (input.outcome === 'captured') {
|
|
39
|
+
if (typeof input.text !== 'string' || new TextEncoder().encode(input.text).length > 131072 || typeof input.screenshot_png_base64 !== 'string' || input.screenshot_png_base64.length > 2796204)
|
|
40
|
+
throw new OpenCrawlValidationError('Capture text or image exceeds its bound.');
|
|
41
|
+
}
|
|
42
|
+
else if (input.text !== null || input.title !== null || input.screenshot_png_base64 !== null || input.final_url !== null)
|
|
43
|
+
throw new OpenCrawlValidationError('Failed observations cannot contain page text or images.');
|
|
44
|
+
bodyLimit(input);
|
|
45
|
+
const expected = await digest(canonical(input));
|
|
46
|
+
const r = capture(await this.transport.request(`${API}/${key}/captures`, { ...o, method: 'POST', body: input, automaticRetry: false }), key, input.client_capture_id);
|
|
47
|
+
if (r.manifest_sha256 !== expected || r.page_id !== input.page_id || r.generation !== input.expected_generation || r.outcome !== input.outcome)
|
|
48
|
+
throw new OpenCrawlProtocolError('Product capture does not match the submitted observation.');
|
|
49
|
+
return r;
|
|
50
|
+
}
|
|
51
|
+
captureByClientId(key, clientId, o = {}) { return this.transport.request(`${API}/${id(key, 'src')}/captures/by-client-id/${uuid(clientId)}`, { ...o, automaticRetry: false }).then(r => capture(r, key, clientId)); }
|
|
52
|
+
captures(key, o = {}) { return this.transport.request(`${API}/${id(key, 'src')}/captures`, o); }
|
|
53
|
+
async snapshot(key, o = {}) { const r = await this.transport.request(`${API}/snapshots/${id(key, 'psnap')}`, o); if (r?.id !== key || !HASH.test(r.version) || typeof r.text !== 'string' || !HASH.test(r.screenshot_sha256))
|
|
54
|
+
throw new OpenCrawlProtocolError('Invalid immutable product snapshot.'); return r; }
|
|
55
|
+
async image(key, o = {}) { const snapshot = await this.snapshot(key, o); const bytes = await this.transport.request(`${API}/snapshots/${id(key, 'psnap')}/image`, { ...o, responseType: 'png' }); if (bytes.length !== snapshot.screenshot_bytes || await bytesDigest(bytes) !== snapshot.screenshot_sha256)
|
|
56
|
+
throw new OpenCrawlProtocolError('PNG does not match its immutable snapshot.'); return bytes; }
|
|
57
|
+
comparisons(key, o = {}) { return this.transport.request(`${API}/${id(key, 'src')}/comparisons`, o); }
|
|
58
|
+
async comparison(key, version, o = {}) { if (!HASH.test(version))
|
|
59
|
+
throw new OpenCrawlValidationError('Select the exact immutable comparison version.'); const r = await this.transport.request(`${API}/comparisons/${id(key, 'pcmp')}`, o); if (r?.id !== key || r.version !== version)
|
|
60
|
+
throw new OpenCrawlProtocolError('Comparison identity changed; no newer version was substituted.'); return r; }
|
|
61
|
+
context(input, o = {}) { boundedInteger(input.budget, 'budget', 256, 16384); if (!Array.isArray(input.selections) || input.selections.length < 1 || input.selections.length > 3 || new Set(input.selections.map(s => s.comparison_id)).size !== input.selections.length)
|
|
62
|
+
throw new OpenCrawlValidationError('Select 1–3 distinct exact comparisons.'); for (const s of input.selections) {
|
|
63
|
+
id(s.comparison_id, 'pcmp');
|
|
64
|
+
if (!HASH.test(s.version))
|
|
65
|
+
throw new OpenCrawlValidationError('Select the exact comparison version.');
|
|
66
|
+
} return this.transport.request('/api/v1/product-monitor-context', { ...o, method: 'POST', body: input, readOnly: true }); }
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=productMonitors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productMonitors.js","sourceRoot":"","sources":["../src/productMonitors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type AnswerContractRun, type AnswerContractView } from './answerContract.js';
|
|
2
|
+
export type { AnswerSourceScope, AnswerFactRef, AnswerComponent, AnswerContract, AnswerContractMarker, AnswerContractView } from './answerContract.js';
|
|
3
|
+
/** Optional run metadata only. No requests, run mutation or completeness certification.
|
|
4
|
+
* Use the original run returned by the SDK, never substitute the agent's current goal.
|
|
5
|
+
* An absent/invalid/unassessed value is not evidence that every question was answered.
|
|
6
|
+
*/
|
|
7
|
+
export declare function readResearchAnswerContract(run: AnswerContractRun): Promise<AnswerContractView>;
|
|
8
|
+
//# sourceMappingURL=researchAnswerContract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"researchAnswerContract.d.ts","sourceRoot":"","sources":["../src/researchAnswerContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,iBAAiB,EAAC,KAAK,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AACtG,YAAY,EAAC,iBAAiB,EAAC,aAAa,EAAC,eAAe,EAAC,cAAc,EAAC,oBAAoB,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAChJ;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,GAAG,EAAC,iBAAiB,GAAE,OAAO,CAAC,kBAAkB,CAAC,CAUlG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { readAnswerContract } from './answerContract.js';
|
|
2
|
+
/** Optional run metadata only. No requests, run mutation or completeness certification.
|
|
3
|
+
* Use the original run returned by the SDK, never substitute the agent's current goal.
|
|
4
|
+
* An absent/invalid/unassessed value is not evidence that every question was answered.
|
|
5
|
+
*/
|
|
6
|
+
export async function readResearchAnswerContract(run) {
|
|
7
|
+
if (!Object.hasOwn(run.usage, 'answer_contract'))
|
|
8
|
+
return { state: 'absent', contract: null, notices: [] };
|
|
9
|
+
const hashes = new Map();
|
|
10
|
+
try {
|
|
11
|
+
if (run.findings.length > 5 || run.gaps.length > 5 || new TextEncoder().encode(JSON.stringify(run.usage)).length > 16384)
|
|
12
|
+
throw new Error('bound');
|
|
13
|
+
const texts = [...run.gaps, ...run.findings.flatMap(f => [f.claim, ...f.qualifiers])];
|
|
14
|
+
if (texts.length > 35 || texts.some(t => typeof t !== 'string' || Array.from(t).length > 1500))
|
|
15
|
+
throw new Error('bound');
|
|
16
|
+
await Promise.all([...new Set(texts)].map(async (text) => hashes.set(text, Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', new TextEncoder().encode(text))), b => b.toString(16).padStart(2, '0')).join(''))));
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return { state: 'invalid', contract: null, notices: [{ id: 'invalid', text: 'Requested-answer assessment could not be validated for this run. The findings and coverage notes remain available.' }] };
|
|
20
|
+
}
|
|
21
|
+
return readAnswerContract(run, text => hashes.get(text) ?? '');
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=researchAnswerContract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"researchAnswerContract.js","sourceRoot":"","sources":["../src/researchAnswerContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAgD,MAAM,qBAAqB,CAAC;AAEtG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,GAAqB;IACrE,IAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAC,iBAAiB,CAAC;QAAC,OAAO,EAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ,EAAC,IAAI,EAAC,OAAO,EAAC,EAAE,EAAC,CAAC;IAChG,MAAM,MAAM,GAAC,IAAI,GAAG,EAAiB,CAAC;IACtC,IAAG,CAAC;QACH,IAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAC,CAAC,IAAE,GAAG,CAAC,IAAI,CAAC,MAAM,GAAC,CAAC,IAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAC,KAAK;YAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QACvI,MAAM,KAAK,GAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,CAAC,KAAK,EAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChF,IAAG,KAAK,CAAC,MAAM,GAAC,EAAE,IAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,OAAO,CAAC,KAAG,QAAQ,IAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAC,IAAI,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3G,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAA,EAAE,CAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtN,CAAC;IAAA,MAAK,CAAC;QAAA,OAAO,EAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAC,IAAI,EAAC,OAAO,EAAC,CAAC,EAAC,EAAE,EAAC,SAAS,EAAC,IAAI,EAAC,oHAAoH,EAAC,CAAC,EAAC,CAAA;IAAA,CAAC;IACjM,OAAO,kBAAkB,CAAC,GAAG,EAAC,IAAI,CAAA,EAAE,CAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAE,EAAE,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AnswerContractRun } from './answerContract.js';
|
|
2
|
+
import { type ResearchAnswerViewResult } from './answerView.js';
|
|
3
|
+
export type { AnswerAssertion, AnswerOmissionReason, ResearchAnswerView, ResearchAnswerSection, ResearchAnswerViewResult } from './answerView.js';
|
|
4
|
+
/** Read only the optional saved concise answer. No generation, requests or run mutation.
|
|
5
|
+
* Exact findings, qualifications, citations and coverage remain authoritative.
|
|
6
|
+
*/
|
|
7
|
+
export declare function readResearchAnswerView(run: AnswerContractRun): Promise<ResearchAnswerViewResult>;
|
|
8
|
+
//# sourceMappingURL=researchAnswerView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"researchAnswerView.d.ts","sourceRoot":"","sources":["../src/researchAnswerView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAoC,KAAK,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;AACjG,YAAY,EAAC,eAAe,EAAC,oBAAoB,EAAC,kBAAkB,EAAC,qBAAqB,EAAC,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;AAE5I;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAC,iBAAiB,GAAE,OAAO,CAAC,wBAAwB,CAAC,CAcpG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { readResearchAnswerContract } from './researchAnswerContract.js';
|
|
2
|
+
import { canonicalAnswerJson, readAnswerView } from './answerView.js';
|
|
3
|
+
/** Read only the optional saved concise answer. No generation, requests or run mutation.
|
|
4
|
+
* Exact findings, qualifications, citations and coverage remain authoritative.
|
|
5
|
+
*/
|
|
6
|
+
export async function readResearchAnswerView(run) {
|
|
7
|
+
if (!Object.hasOwn(run.usage, 'answer_view'))
|
|
8
|
+
return { state: 'absent', view: null, sections: [] };
|
|
9
|
+
try {
|
|
10
|
+
const contract = await readResearchAnswerContract(run), hashes = new Map();
|
|
11
|
+
if (contract.state !== 'assessed_nonexhaustive')
|
|
12
|
+
return { state: 'invalid', view: null, sections: [] };
|
|
13
|
+
const literals = run.findings.flatMap(f => [f.claim, ...f.qualifiers]);
|
|
14
|
+
if (run.findings.length > 5 || run.findings.some(f => f.qualifiers.length > 5) || literals.length > 30 || literals.some(t => typeof t !== 'string' || Array.from(t).length > 1500))
|
|
15
|
+
return { state: 'invalid', view: null, sections: [] };
|
|
16
|
+
const texts = [canonicalAnswerJson(run.usage.answer_contract), canonicalAnswerJson(run.findings), ...literals];
|
|
17
|
+
await Promise.all([...new Set(texts)].map(async (text) => {
|
|
18
|
+
const bytes = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(text));
|
|
19
|
+
hashes.set(text, Array.from(new Uint8Array(bytes), b => b.toString(16).padStart(2, '0')).join(''));
|
|
20
|
+
}));
|
|
21
|
+
return readAnswerView(run, contract, text => hashes.get(text) ?? '');
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return { state: 'invalid', view: null, sections: [] };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=researchAnswerView.js.map
|