@darqlabs/curator-sdk 0.1.6 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/dist/cjs/errors.d.ts +96 -5
- package/dist/cjs/errors.d.ts.map +1 -1
- package/dist/cjs/errors.js +181 -15
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/graph.d.ts +307 -0
- package/dist/cjs/graph.d.ts.map +1 -0
- package/dist/cjs/graph.js +336 -0
- package/dist/cjs/graph.js.map +1 -0
- package/dist/cjs/http.d.ts.map +1 -1
- package/dist/cjs/http.js +65 -13
- package/dist/cjs/http.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/streamEventParse.d.ts.map +1 -1
- package/dist/cjs/streamEventParse.js +12 -0
- package/dist/cjs/streamEventParse.js.map +1 -1
- package/dist/cjs/streamEvents.d.ts +30 -2
- package/dist/cjs/streamEvents.d.ts.map +1 -1
- package/dist/cjs/streamEvents.js +2 -1
- package/dist/cjs/streamEvents.js.map +1 -1
- package/dist/esm/errors.d.ts +96 -5
- package/dist/esm/errors.d.ts.map +1 -1
- package/dist/esm/errors.js +176 -14
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/graph.d.ts +307 -0
- package/dist/esm/graph.d.ts.map +1 -0
- package/dist/esm/graph.js +321 -0
- package/dist/esm/graph.js.map +1 -0
- package/dist/esm/http.d.ts.map +1 -1
- package/dist/esm/http.js +66 -14
- package/dist/esm/http.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/streamEventParse.d.ts.map +1 -1
- package/dist/esm/streamEventParse.js +12 -0
- package/dist/esm/streamEventParse.js.map +1 -1
- package/dist/esm/streamEvents.d.ts +30 -2
- package/dist/esm/streamEvents.d.ts.map +1 -1
- package/dist/esm/streamEvents.js +2 -1
- package/dist/esm/streamEvents.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flow-graph authoring + run surface for the Curator SDK.
|
|
3
|
+
*
|
|
4
|
+
* import { Curator, reducers, agentNode, toolNode, transformNode, edge, branch, when } from "@darqlabs/curator-sdk"
|
|
5
|
+
*
|
|
6
|
+
* const draft = curator.defineGraph({
|
|
7
|
+
* name: "copy-loop",
|
|
8
|
+
* state: { messages: reducers.append(), draft: reducers.lastValue(), revisions: reducers.counter() },
|
|
9
|
+
* nodes: {
|
|
10
|
+
* write: agentNode("copywriter"),
|
|
11
|
+
* review: toolNode("api.grammar.check"),
|
|
12
|
+
* score: transformNode({ transformId: "tf_quality", version: 1 }),
|
|
13
|
+
* },
|
|
14
|
+
* entry: "write",
|
|
15
|
+
* edges: [
|
|
16
|
+
* edge("write", "review"),
|
|
17
|
+
* edge("review", "score"),
|
|
18
|
+
* branch("score", when("draft_ok", "==", true).then("END").else("write")),
|
|
19
|
+
* ],
|
|
20
|
+
* recursionLimit: 12,
|
|
21
|
+
* })
|
|
22
|
+
*
|
|
23
|
+
* const graph = await curator.graphs.create(draft) // POST /api/graphs
|
|
24
|
+
* await graph.deploy({ expectedDraftRevision: 1 }) // versioned snapshot
|
|
25
|
+
*
|
|
26
|
+
* // run + stream node/state events
|
|
27
|
+
* for await (const ev of graph.stream({ messages: [] })) {
|
|
28
|
+
* if (ev.type === "node.completed") console.log("done:", ev.node)
|
|
29
|
+
* if (ev.type === "done") console.log("final:", ev.state)
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* These graph types are SDK-owned (the SDK is published and cannot depend on the
|
|
33
|
+
* private @darq/shared-types); they mirror the backend spec shape exactly so the
|
|
34
|
+
* assembled JSON validates + compiles server-side.
|
|
35
|
+
*/
|
|
36
|
+
import { CuratorError } from "./errors.js";
|
|
37
|
+
import { parseSseStream } from "./sse.js";
|
|
38
|
+
/** The `END` sentinel target. */
|
|
39
|
+
export const GRAPH_END = "END";
|
|
40
|
+
// ── Builders (pure) ───────────────────────────────────────────────
|
|
41
|
+
export const reducers = {
|
|
42
|
+
append: () => ({ reducer: "append" }),
|
|
43
|
+
lastValue: () => ({ reducer: "lastValue" }),
|
|
44
|
+
merge: () => ({ reducer: "merge" }),
|
|
45
|
+
counter: () => ({ reducer: "counter" }),
|
|
46
|
+
/** A custom fold `(prev, update) => next`, run as a sandboxed transform. */
|
|
47
|
+
custom: (transform) => ({ reducer: "custom", reducerRef: transform }),
|
|
48
|
+
};
|
|
49
|
+
export function agentNode(agentId, opts = {}) {
|
|
50
|
+
return { type: "agent", agentId, ...opts };
|
|
51
|
+
}
|
|
52
|
+
export function toolNode(action, opts = {}) {
|
|
53
|
+
return { type: "tool", action, ...opts };
|
|
54
|
+
}
|
|
55
|
+
export function transformNode(transform, opts = {}) {
|
|
56
|
+
return { type: "transform", transform, ...opts };
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A `forEach` (map) node: run `body` per element of the `over` channel, appending
|
|
60
|
+
* each output into `collect`. Body params can reference the element via
|
|
61
|
+
* `{{item}}` / `{{item.field}}` / `{{index}}`.
|
|
62
|
+
*/
|
|
63
|
+
export function forEachNode(over, body, opts = {}) {
|
|
64
|
+
return { type: "forEach", over, body, ...opts };
|
|
65
|
+
}
|
|
66
|
+
export function edge(from, to) {
|
|
67
|
+
return { kind: "static", from, to };
|
|
68
|
+
}
|
|
69
|
+
/** Attach a conditional edge to `from`. Pass a predicate builder or a router. */
|
|
70
|
+
export function branch(from, spec) {
|
|
71
|
+
const b = spec instanceof PredicateBuilder ? spec.build() : spec;
|
|
72
|
+
return { kind: "conditional", from, branch: b };
|
|
73
|
+
}
|
|
74
|
+
/** A sandboxed router transform that returns a next-node key (or END). */
|
|
75
|
+
export function router(transform, targets) {
|
|
76
|
+
return { kind: "router", transform, targets };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Fluent declarative predicate: `when("draft_ok", "==", true).then("END").else("write")`.
|
|
80
|
+
* Unary ops (`exists`/`truthy`/`falsy`) omit the value.
|
|
81
|
+
*/
|
|
82
|
+
export function when(channel, op, value) {
|
|
83
|
+
return new PredicateBuilder({ channel, op, value });
|
|
84
|
+
}
|
|
85
|
+
export class PredicateBuilder {
|
|
86
|
+
predicate;
|
|
87
|
+
thenKey;
|
|
88
|
+
elseKey;
|
|
89
|
+
constructor(predicate) {
|
|
90
|
+
this.predicate = predicate;
|
|
91
|
+
}
|
|
92
|
+
then(nodeKey) {
|
|
93
|
+
this.thenKey = nodeKey;
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
else(nodeKey) {
|
|
97
|
+
this.elseKey = nodeKey;
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
/** @internal */
|
|
101
|
+
build() {
|
|
102
|
+
if (this.thenKey === undefined || this.elseKey === undefined) {
|
|
103
|
+
throw new CuratorError("A `when(...)` branch requires both `.then(...)` and `.else(...)`.");
|
|
104
|
+
}
|
|
105
|
+
return { kind: "predicate", predicate: this.predicate, then: this.thenKey, else: this.elseKey };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Assemble a serializable graph spec locally. Pure — no network. */
|
|
109
|
+
export function defineGraph(config) {
|
|
110
|
+
const { name, description, tags, state, nodes, entry, edges, recursionLimit, toolFailureMode } = config;
|
|
111
|
+
return {
|
|
112
|
+
name,
|
|
113
|
+
description,
|
|
114
|
+
tags,
|
|
115
|
+
spec: { state, nodes, entry, edges, recursionLimit, toolFailureMode },
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// ── Client handles ────────────────────────────────────────────────
|
|
119
|
+
/** A handle to one graph resource, addressed by its `graph_id`. */
|
|
120
|
+
export class Graph {
|
|
121
|
+
http;
|
|
122
|
+
baseUrl;
|
|
123
|
+
defaultTimeoutMs;
|
|
124
|
+
graphId;
|
|
125
|
+
defaultEnvironment;
|
|
126
|
+
/** @internal */
|
|
127
|
+
constructor(http, baseUrl, defaultTimeoutMs, graphId, defaultEnvironment) {
|
|
128
|
+
this.http = http;
|
|
129
|
+
this.baseUrl = baseUrl;
|
|
130
|
+
this.defaultTimeoutMs = defaultTimeoutMs;
|
|
131
|
+
this.graphId = graphId;
|
|
132
|
+
this.defaultEnvironment = defaultEnvironment;
|
|
133
|
+
}
|
|
134
|
+
get base() {
|
|
135
|
+
return `${this.baseUrl}/api/graphs/${encodeURIComponent(this.graphId)}`;
|
|
136
|
+
}
|
|
137
|
+
/** Deploy the current draft as an immutable versioned snapshot. */
|
|
138
|
+
async deploy(opts) {
|
|
139
|
+
const env = opts.environment ?? this.defaultEnvironment;
|
|
140
|
+
const res = await this.http.request(`${this.base}/deploy`, {
|
|
141
|
+
method: "POST",
|
|
142
|
+
body: {
|
|
143
|
+
environment: env,
|
|
144
|
+
slug: opts.slug,
|
|
145
|
+
change_summary: opts.changeSummary,
|
|
146
|
+
expected_draft_revision: opts.expectedDraftRevision,
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
return {
|
|
150
|
+
versionId: res.data.version.version_id,
|
|
151
|
+
versionNumber: res.data.version.version_number,
|
|
152
|
+
slug: res.data.deployment.slug,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Start a run and, unless `{ wait: false }`, block until it settles.
|
|
157
|
+
* Returns the terminal channel state (or `status: "timeout"` if the wait
|
|
158
|
+
* expires — the run keeps going server-side).
|
|
159
|
+
*/
|
|
160
|
+
async run(input, opts = {}) {
|
|
161
|
+
const wait = opts.wait !== false;
|
|
162
|
+
const timeoutMs = opts.timeoutMs ?? this.defaultTimeoutMs;
|
|
163
|
+
const res = await this.http.request(`${this.base}/run`, {
|
|
164
|
+
method: "POST",
|
|
165
|
+
body: {
|
|
166
|
+
input,
|
|
167
|
+
environment: opts.environment ?? this.defaultEnvironment,
|
|
168
|
+
use_draft: opts.useDraft,
|
|
169
|
+
wait,
|
|
170
|
+
timeout_ms: wait ? timeoutMs : undefined,
|
|
171
|
+
},
|
|
172
|
+
signalTimeoutMs: wait ? timeoutMs + 10_000 : undefined,
|
|
173
|
+
});
|
|
174
|
+
return {
|
|
175
|
+
runId: res.data.run_id,
|
|
176
|
+
status: res.data.status ?? "running",
|
|
177
|
+
state: res.data.state,
|
|
178
|
+
errorCode: res.data.errorCode,
|
|
179
|
+
errorMessage: res.data.errorMessage,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Start a run and stream node/state lifecycle events until it settles.
|
|
184
|
+
* Events (`run.started` / `node.started` / `node.completed` / `node.failed`
|
|
185
|
+
* / `state.delta` / `done` / `error`) are derived from the server's run-view
|
|
186
|
+
* snapshot stream. Breaking out of the loop closes the connection; the run
|
|
187
|
+
* continues server-side.
|
|
188
|
+
*/
|
|
189
|
+
async *stream(input, opts = {}) {
|
|
190
|
+
// Start async (no wait) to get a run id, then attach to the snapshot stream.
|
|
191
|
+
const started = await this.run(input, { ...opts, wait: false });
|
|
192
|
+
const runId = started.runId;
|
|
193
|
+
yield { type: "run.started", runId };
|
|
194
|
+
const controller = new AbortController();
|
|
195
|
+
const response = await this.http.streamPost(`${this.base}/runs/${encodeURIComponent(runId)}/stream`, { query: { stream: "true" }, signal: controller.signal });
|
|
196
|
+
const differ = new SnapshotDiffer();
|
|
197
|
+
try {
|
|
198
|
+
for await (const frame of parseSseStream(response.body)) {
|
|
199
|
+
if (frame.event === "snapshot") {
|
|
200
|
+
const view = safeParse(frame.data);
|
|
201
|
+
if (!view)
|
|
202
|
+
continue;
|
|
203
|
+
for (const ev of differ.diff(view))
|
|
204
|
+
yield ev;
|
|
205
|
+
}
|
|
206
|
+
else if (frame.event === "done") {
|
|
207
|
+
const done = safeParse(frame.data);
|
|
208
|
+
const last = differ.lastView;
|
|
209
|
+
yield {
|
|
210
|
+
type: "done",
|
|
211
|
+
status: done?.status ?? last?.status ?? "succeeded",
|
|
212
|
+
state: last?.state ?? {},
|
|
213
|
+
};
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
finally {
|
|
219
|
+
try {
|
|
220
|
+
controller.abort();
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
/* ignore */
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/** Fetch the read-only run projection (spec + per-node status + state). */
|
|
228
|
+
async runStatus(runId) {
|
|
229
|
+
const res = await this.http.request(`${this.base}/runs/${encodeURIComponent(runId)}`);
|
|
230
|
+
return res.data;
|
|
231
|
+
}
|
|
232
|
+
/** List this graph's version snapshots (newest first). */
|
|
233
|
+
async versions() {
|
|
234
|
+
const res = await this.http.request(`${this.base}/versions`);
|
|
235
|
+
return res.data.map((v) => ({
|
|
236
|
+
versionId: v.version_id,
|
|
237
|
+
versionNumber: v.version_number,
|
|
238
|
+
createdAt: v.created_at,
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/** Collection surface for creating + addressing graphs. */
|
|
243
|
+
export class Graphs {
|
|
244
|
+
http;
|
|
245
|
+
baseUrl;
|
|
246
|
+
defaultTimeoutMs;
|
|
247
|
+
defaultEnvironment;
|
|
248
|
+
/** @internal */
|
|
249
|
+
constructor(http, baseUrl, defaultTimeoutMs, defaultEnvironment) {
|
|
250
|
+
this.http = http;
|
|
251
|
+
this.baseUrl = baseUrl;
|
|
252
|
+
this.defaultTimeoutMs = defaultTimeoutMs;
|
|
253
|
+
this.defaultEnvironment = defaultEnvironment;
|
|
254
|
+
}
|
|
255
|
+
/** Create a new graph resource from a draft (or inline config). Returns a
|
|
256
|
+
* handle bound to the new `graph_id`. */
|
|
257
|
+
async create(draft) {
|
|
258
|
+
const normalized = "spec" in draft ? draft : defineGraph(draft);
|
|
259
|
+
const res = await this.http.request(`${this.baseUrl}/api/graphs`, {
|
|
260
|
+
method: "POST",
|
|
261
|
+
body: {
|
|
262
|
+
name: normalized.name,
|
|
263
|
+
description: normalized.description,
|
|
264
|
+
tags: normalized.tags,
|
|
265
|
+
spec: normalized.spec,
|
|
266
|
+
},
|
|
267
|
+
});
|
|
268
|
+
return this.handle(res.data.graph_id);
|
|
269
|
+
}
|
|
270
|
+
/** Reattach to an existing graph by id. */
|
|
271
|
+
get(graphId) {
|
|
272
|
+
return this.handle(graphId);
|
|
273
|
+
}
|
|
274
|
+
handle(graphId) {
|
|
275
|
+
return new Graph(this.http, this.baseUrl, this.defaultTimeoutMs, graphId, this.defaultEnvironment);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// ── Snapshot → event diffing ──────────────────────────────────────
|
|
279
|
+
class SnapshotDiffer {
|
|
280
|
+
lastView = null;
|
|
281
|
+
prevStatuses = new Map();
|
|
282
|
+
prevState = {};
|
|
283
|
+
diff(view) {
|
|
284
|
+
const events = [];
|
|
285
|
+
for (const node of view.nodes) {
|
|
286
|
+
const prev = this.prevStatuses.get(node.key);
|
|
287
|
+
if (prev !== node.status) {
|
|
288
|
+
if (node.status === "running") {
|
|
289
|
+
events.push({ type: "node.started", node: node.key, visit: node.visits });
|
|
290
|
+
}
|
|
291
|
+
else if (node.status === "succeeded") {
|
|
292
|
+
events.push({ type: "node.completed", node: node.key });
|
|
293
|
+
}
|
|
294
|
+
else if (node.status === "failed") {
|
|
295
|
+
events.push({ type: "node.failed", node: node.key });
|
|
296
|
+
}
|
|
297
|
+
this.prevStatuses.set(node.key, node.status);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
const changed = {};
|
|
301
|
+
for (const [k, v] of Object.entries(view.state)) {
|
|
302
|
+
if (JSON.stringify(this.prevState[k]) !== JSON.stringify(v))
|
|
303
|
+
changed[k] = v;
|
|
304
|
+
}
|
|
305
|
+
if (Object.keys(changed).length > 0) {
|
|
306
|
+
events.push({ type: "state.delta", channels: changed });
|
|
307
|
+
}
|
|
308
|
+
this.prevState = view.state;
|
|
309
|
+
this.lastView = view;
|
|
310
|
+
return events;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
function safeParse(text) {
|
|
314
|
+
try {
|
|
315
|
+
return JSON.parse(text);
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC1B,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yCAAyC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;AAEvD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC;;;;OAIG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAoB;gBAE5C,IAAI,EAAE,iBAAiB;IAsBnC,yDAAyD;IACzD,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM;IAgB9C;;;;;;OAMG;YACW,iBAAiB;IAc/B;;;;;OAKG;IACG,UAAU,CACd,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACnF,OAAO,CAAC,QAAQ,CAAC;IAgDd,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;CAuDrE"}
|
package/dist/esm/http.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Everything else (retries, conversation state, waiting) lives in the
|
|
12
12
|
* higher-level classes that consume this transport.
|
|
13
13
|
*/
|
|
14
|
-
import { CuratorAuthError, CuratorDeploymentRetiredError, CuratorError, CuratorForbiddenError, CuratorNotFoundError, CuratorRateLimitError, } from "./errors.js";
|
|
14
|
+
import { CuratorAuthError, CuratorDeploymentRetiredError, CuratorEndUserAuthError, CuratorError, CuratorForbiddenError, CuratorNotFoundError, CuratorRateLimitError, CuratorServerError, } from "./errors.js";
|
|
15
15
|
export class HttpClient {
|
|
16
16
|
apiKey;
|
|
17
17
|
baseUrl;
|
|
@@ -69,7 +69,7 @@ export class HttpClient {
|
|
|
69
69
|
return value || undefined;
|
|
70
70
|
}
|
|
71
71
|
catch (err) {
|
|
72
|
-
throw new
|
|
72
|
+
throw new CuratorEndUserAuthError(`Failed to obtain end-user JWT: ${err.message}`);
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
/**
|
|
@@ -102,15 +102,22 @@ export class HttpClient {
|
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
104
|
catch (err) {
|
|
105
|
-
throw new CuratorError(`Network error talking to ${finalUrl}: ${err.message}`, {
|
|
105
|
+
throw new CuratorError(`Network error talking to ${finalUrl}: ${err.message}`, {
|
|
106
|
+
cause: err,
|
|
107
|
+
url: finalUrl,
|
|
108
|
+
userMessage: "Can't reach the assistant. Check your connection and try again.",
|
|
109
|
+
});
|
|
106
110
|
}
|
|
107
111
|
if (!response.ok) {
|
|
108
112
|
const text = await response.text().catch(() => "");
|
|
109
113
|
const body = text ? safeJsonParse(text) : undefined;
|
|
110
|
-
throw httpError(response.status, body, finalUrl);
|
|
114
|
+
throw httpError(response.status, body, finalUrl, response.headers.get("x-request-id"));
|
|
111
115
|
}
|
|
112
116
|
if (!response.body) {
|
|
113
|
-
throw new CuratorError(`Streaming response had no body (${finalUrl})
|
|
117
|
+
throw new CuratorError(`Streaming response had no body (${finalUrl})`, {
|
|
118
|
+
url: finalUrl,
|
|
119
|
+
status: response.status,
|
|
120
|
+
});
|
|
114
121
|
}
|
|
115
122
|
return response;
|
|
116
123
|
}
|
|
@@ -142,7 +149,11 @@ export class HttpClient {
|
|
|
142
149
|
});
|
|
143
150
|
}
|
|
144
151
|
catch (err) {
|
|
145
|
-
throw new CuratorError(`Network error talking to ${finalUrl}: ${err.message}`, {
|
|
152
|
+
throw new CuratorError(`Network error talking to ${finalUrl}: ${err.message}`, {
|
|
153
|
+
cause: err,
|
|
154
|
+
url: finalUrl,
|
|
155
|
+
userMessage: "Can't reach the assistant. Check your connection and try again.",
|
|
156
|
+
});
|
|
146
157
|
}
|
|
147
158
|
finally {
|
|
148
159
|
if (timer)
|
|
@@ -154,7 +165,7 @@ export class HttpClient {
|
|
|
154
165
|
const text = await response.text();
|
|
155
166
|
const body = text ? safeJsonParse(text) : undefined;
|
|
156
167
|
if (!response.ok) {
|
|
157
|
-
throw httpError(response.status, body, finalUrl);
|
|
168
|
+
throw httpError(response.status, body, finalUrl, response.headers.get("x-request-id"));
|
|
158
169
|
}
|
|
159
170
|
return body ?? undefined;
|
|
160
171
|
}
|
|
@@ -184,32 +195,73 @@ function safeJsonParse(text) {
|
|
|
184
195
|
return text;
|
|
185
196
|
}
|
|
186
197
|
}
|
|
187
|
-
|
|
198
|
+
/** Server error codes that mean the END-USER token failed, not the API key. */
|
|
199
|
+
const END_USER_AUTH_CODES = new Set([
|
|
200
|
+
"missing_end_user_jwt",
|
|
201
|
+
"end_user_jwt_invalid",
|
|
202
|
+
"end_user_jwt_expired",
|
|
203
|
+
"end_user_jwt_internal_error",
|
|
204
|
+
"end_user_session_invalid",
|
|
205
|
+
]);
|
|
206
|
+
function httpError(status, body, url, requestId = null) {
|
|
188
207
|
const detail = readErrorMessage(body);
|
|
208
|
+
const code = readErrorCode(body);
|
|
209
|
+
// `url` rides along as a PROPERTY, never inside `message`. A message that
|
|
210
|
+
// embeds the request URL ends up in a chat bubble the moment any consumer
|
|
211
|
+
// renders `err.message`, which is exactly how a deployment URL got shown to
|
|
212
|
+
// an end user.
|
|
213
|
+
const ctx = { status, code, requestId: requestId ?? readCorrelationId(body), url };
|
|
189
214
|
switch (status) {
|
|
190
215
|
case 401:
|
|
191
|
-
|
|
216
|
+
// Two different failures share this status. Distinguished by the server's
|
|
217
|
+
// error code so the SDK can say "sign in again" instead of sending the
|
|
218
|
+
// reader after an API key they cannot see.
|
|
219
|
+
return code && END_USER_AUTH_CODES.has(code)
|
|
220
|
+
? new CuratorEndUserAuthError(detail ?? undefined, ctx)
|
|
221
|
+
: new CuratorAuthError(detail ?? "Invalid or revoked API key", ctx);
|
|
192
222
|
case 403:
|
|
193
|
-
return new CuratorForbiddenError(detail ?? "Permission denied");
|
|
223
|
+
return new CuratorForbiddenError(detail ?? "Permission denied", ctx);
|
|
194
224
|
case 404:
|
|
195
|
-
return new CuratorNotFoundError(detail ?? "Resource not found");
|
|
225
|
+
return new CuratorNotFoundError(detail ?? "Resource not found", ctx);
|
|
196
226
|
case 410: {
|
|
197
227
|
const retiredAt = body && typeof body === "object" && "details" in body
|
|
198
228
|
? (body.details
|
|
199
229
|
?.retired_at ?? null)
|
|
200
230
|
: null;
|
|
201
|
-
return new CuratorDeploymentRetiredError(detail ?? "Deployment has been retired", retiredAt);
|
|
231
|
+
return new CuratorDeploymentRetiredError(detail ?? "Deployment has been retired", retiredAt, ctx);
|
|
202
232
|
}
|
|
203
233
|
case 429: {
|
|
204
234
|
const retry = body && typeof body === "object" && "retryAfter" in body
|
|
205
235
|
? Number(body.retryAfter)
|
|
206
236
|
: null;
|
|
207
|
-
return new CuratorRateLimitError(detail ?? undefined, Number.isFinite(retry) ? retry : null);
|
|
237
|
+
return new CuratorRateLimitError(detail ?? undefined, Number.isFinite(retry) ? retry : null, ctx);
|
|
208
238
|
}
|
|
209
239
|
default:
|
|
210
|
-
|
|
240
|
+
if (status >= 500) {
|
|
241
|
+
return new CuratorServerError(`HTTP ${status} from ${url}${detail ? `: ${detail}` : ""}`, ctx);
|
|
242
|
+
}
|
|
243
|
+
return new CuratorError(`HTTP ${status} from ${url}${detail ? `: ${detail}` : ""}`, ctx);
|
|
211
244
|
}
|
|
212
245
|
}
|
|
246
|
+
function readErrorCode(body) {
|
|
247
|
+
if (!body || typeof body !== "object")
|
|
248
|
+
return null;
|
|
249
|
+
const b = body;
|
|
250
|
+
if (b.error && typeof b.error === "object") {
|
|
251
|
+
const inner = b.error;
|
|
252
|
+
if (typeof inner.code === "string")
|
|
253
|
+
return inner.code;
|
|
254
|
+
}
|
|
255
|
+
if (typeof b.code === "string")
|
|
256
|
+
return b.code;
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
function readCorrelationId(body) {
|
|
260
|
+
if (!body || typeof body !== "object")
|
|
261
|
+
return null;
|
|
262
|
+
const b = body;
|
|
263
|
+
return typeof b.correlationId === "string" ? b.correlationId : null;
|
|
264
|
+
}
|
|
213
265
|
function readErrorMessage(body) {
|
|
214
266
|
if (!body || typeof body !== "object")
|
|
215
267
|
return undefined;
|
package/dist/esm/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ export type { CuratorOptions, AgentLocator } from "./client.js";
|
|
|
3
3
|
export type { EndUserJwtProvider } from "./http.js";
|
|
4
4
|
export { Files } from "./files.js";
|
|
5
5
|
export type { PresignUploadInput, PresignUploadResult, OneShotUploadInput, UploadData, } from "./files.js";
|
|
6
|
-
export { CuratorError, CuratorAuthError, CuratorForbiddenError, CuratorNotFoundError, CuratorDeploymentRetiredError, CuratorRateLimitError, CuratorApprovalRequiredError, CuratorAuthorizationRequiredError, CuratorAgentError, CuratorTimeoutError, } from "./errors.js";
|
|
6
|
+
export { CuratorError, CuratorAuthError, CuratorEndUserAuthError, CuratorForbiddenError, CuratorNotFoundError, CuratorDeploymentRetiredError, CuratorRateLimitError, CuratorServerError, CuratorApprovalRequiredError, CuratorAuthorizationRequiredError, CuratorAgentError, CuratorTimeoutError, DEFAULT_USER_MESSAGE, parseDelegationFailureCode, } from "./errors.js";
|
|
7
|
+
export type { DelegationFailureCode } from "./errors.js";
|
|
7
8
|
export type { AssistantMessage, UserMessage, ToolMessage, ConversationMessage, Environment, FileAttachment, ApprovalDetails, AuthorizationDetails, AgentFailureClass, SendOptions, HistoryOptions, HistoryPage, DeploymentConfig, EndUserConnection, } from "./types.js";
|
|
8
9
|
export { Integrations, GmailIntegration } from "./integrations.js";
|
|
9
10
|
export type { StreamEvent, StreamDelta, StreamToolCallStarted, StreamToolCallCompleted, StreamState, StreamPlanProgress, StreamDone, StreamError, StreamPausedForApproval, StreamPausedForAuthorization, } from "./streamEvents.js";
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClD,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,iCAAiC,EACjC,iBAAiB,EACjB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClD,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,iCAAiC,EACjC,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAClE,YAAY,EACV,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { Curator, Agent, Chat } from "./client.js";
|
|
2
2
|
export { Files } from "./files.js";
|
|
3
|
-
export { CuratorError, CuratorAuthError, CuratorForbiddenError, CuratorNotFoundError, CuratorDeploymentRetiredError, CuratorRateLimitError, CuratorApprovalRequiredError, CuratorAuthorizationRequiredError, CuratorAgentError, CuratorTimeoutError, } from "./errors.js";
|
|
3
|
+
export { CuratorError, CuratorAuthError, CuratorEndUserAuthError, CuratorForbiddenError, CuratorNotFoundError, CuratorDeploymentRetiredError, CuratorRateLimitError, CuratorServerError, CuratorApprovalRequiredError, CuratorAuthorizationRequiredError, CuratorAgentError, CuratorTimeoutError, DEFAULT_USER_MESSAGE, parseDelegationFailureCode, } from "./errors.js";
|
|
4
4
|
export { Integrations, GmailIntegration } from "./integrations.js";
|
|
5
5
|
export { isTerminalStreamEvent } from "./streamEvents.js";
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGlD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOlC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,iCAAiC,EACjC,iBAAiB,EACjB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGlD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOlC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,iCAAiC,EACjC,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AAkBpB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAalE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamEventParse.d.ts","sourceRoot":"","sources":["../../src/streamEventParse.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"streamEventParse.d.ts","sourceRoot":"","sources":["../../src/streamEventParse.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CA0GtE"}
|
|
@@ -33,6 +33,18 @@ export function frameToStreamEvent(frame) {
|
|
|
33
33
|
capabilityId: String(data.capability_id),
|
|
34
34
|
durationMs: Number(data.duration_ms ?? 0),
|
|
35
35
|
};
|
|
36
|
+
case "tool_call.failed":
|
|
37
|
+
return {
|
|
38
|
+
type: "tool_call.failed",
|
|
39
|
+
toolCallId: String(data.tool_call_id),
|
|
40
|
+
toolName: String(data.tool_name),
|
|
41
|
+
capabilityId: String(data.capability_id),
|
|
42
|
+
// Narrow to the known vocabulary rather than trusting the wire. A
|
|
43
|
+
// reason this SDK build has never heard of degrades to `tool_error`
|
|
44
|
+
// (the recoverable, less alarming of the two) instead of widening the
|
|
45
|
+
// union at runtime and breaking an exhaustive switch in user code.
|
|
46
|
+
reason: data.reason === "policy_denied" ? "policy_denied" : "tool_error",
|
|
47
|
+
};
|
|
36
48
|
case "state":
|
|
37
49
|
return {
|
|
38
50
|
type: "state",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamEventParse.js","sourceRoot":"","sources":["../../src/streamEventParse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"streamEventParse.js","sourceRoot":"","sources":["../../src/streamEventParse.ts"],"names":[],"mappings":"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"}
|