@xenosystem/acp-agent 0.2.1 → 0.2.3

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 (83) hide show
  1. package/dist/acpAgentServer.d.ts +1 -0
  2. package/dist/acpAgentServer.d.ts.map +1 -1
  3. package/dist/acpAgentServer.js +108 -3
  4. package/dist/acpAgentServer.js.map +1 -1
  5. package/dist/cli.js +22 -1
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config/providerPolicySchema.d.ts.map +1 -1
  8. package/dist/config/providerPolicySchema.js +3 -1
  9. package/dist/config/providerPolicySchema.js.map +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/providers/claudeLocalProvider.d.ts +3 -1
  15. package/dist/providers/claudeLocalProvider.d.ts.map +1 -1
  16. package/dist/providers/claudeLocalProvider.js +48 -5
  17. package/dist/providers/claudeLocalProvider.js.map +1 -1
  18. package/dist/providers/claudeStreamJsonParser.d.ts +36 -0
  19. package/dist/providers/claudeStreamJsonParser.d.ts.map +1 -1
  20. package/dist/providers/claudeStreamJsonParser.js +117 -3
  21. package/dist/providers/claudeStreamJsonParser.js.map +1 -1
  22. package/dist/providers/codexExecJsonParser.d.ts +2 -0
  23. package/dist/providers/codexExecJsonParser.d.ts.map +1 -1
  24. package/dist/providers/codexExecJsonParser.js +26 -3
  25. package/dist/providers/codexExecJsonParser.js.map +1 -1
  26. package/dist/providers/codexLocalProvider.d.ts +4 -1
  27. package/dist/providers/codexLocalProvider.d.ts.map +1 -1
  28. package/dist/providers/codexLocalProvider.js +74 -10
  29. package/dist/providers/codexLocalProvider.js.map +1 -1
  30. package/dist/providers/fixtureProvider.d.ts.map +1 -1
  31. package/dist/providers/fixtureProvider.js +69 -0
  32. package/dist/providers/fixtureProvider.js.map +1 -1
  33. package/dist/providers/providerEvents.d.ts +29 -0
  34. package/dist/providers/providerEvents.d.ts.map +1 -1
  35. package/dist/providers/providerEvents.js +15 -1
  36. package/dist/providers/providerEvents.js.map +1 -1
  37. package/dist/providers/providerRegistry.d.ts +24 -1
  38. package/dist/providers/providerRegistry.d.ts.map +1 -1
  39. package/dist/providers/providerRegistry.js +314 -1
  40. package/dist/providers/providerRegistry.js.map +1 -1
  41. package/dist/providers/providerTypes.d.ts +96 -1
  42. package/dist/providers/providerTypes.d.ts.map +1 -1
  43. package/dist/providers/residentContextTokens.d.ts +41 -0
  44. package/dist/providers/residentContextTokens.d.ts.map +1 -0
  45. package/dist/providers/residentContextTokens.js +55 -0
  46. package/dist/providers/residentContextTokens.js.map +1 -0
  47. package/dist/providers/xenoLocalProvider.d.ts.map +1 -1
  48. package/dist/providers/xenoLocalProvider.js +23 -0
  49. package/dist/providers/xenoLocalProvider.js.map +1 -1
  50. package/dist/providers/xenoSdkProvider.d.ts.map +1 -1
  51. package/dist/providers/xenoSdkProvider.js +23 -0
  52. package/dist/providers/xenoSdkProvider.js.map +1 -1
  53. package/dist/security/authPolicy.d.ts.map +1 -1
  54. package/dist/security/authPolicy.js +4 -1
  55. package/dist/security/authPolicy.js.map +1 -1
  56. package/dist/security/secretBinding.d.ts.map +1 -1
  57. package/dist/security/secretBinding.js +3 -1
  58. package/dist/security/secretBinding.js.map +1 -1
  59. package/dist/security/securityTypes.d.ts +13 -1
  60. package/dist/security/securityTypes.d.ts.map +1 -1
  61. package/dist/security/securityTypes.js +13 -0
  62. package/dist/security/securityTypes.js.map +1 -1
  63. package/dist/types.d.ts +9 -1
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/version.d.ts +1 -1
  66. package/dist/version.js +1 -1
  67. package/package.json +3 -3
  68. package/dist/fixtureProvider.d.ts +0 -13
  69. package/dist/fixtureProvider.d.ts.map +0 -1
  70. package/dist/fixtureProvider.js +0 -86
  71. package/dist/fixtureProvider.js.map +0 -1
  72. package/dist/hosted/xeno-agents-client.d.ts +0 -306
  73. package/dist/hosted/xeno-agents-client.d.ts.map +0 -1
  74. package/dist/hosted/xeno-agents-client.js +0 -520
  75. package/dist/hosted/xeno-agents-client.js.map +0 -1
  76. package/dist/providers/xenoAgentsApiEventMapper.d.ts +0 -52
  77. package/dist/providers/xenoAgentsApiEventMapper.d.ts.map +0 -1
  78. package/dist/providers/xenoAgentsApiEventMapper.js +0 -152
  79. package/dist/providers/xenoAgentsApiEventMapper.js.map +0 -1
  80. package/dist/providers/xenoAgentsApiProvider.d.ts +0 -60
  81. package/dist/providers/xenoAgentsApiProvider.d.ts.map +0 -1
  82. package/dist/providers/xenoAgentsApiProvider.js +0 -302
  83. package/dist/providers/xenoAgentsApiProvider.js.map +0 -1
@@ -1,520 +0,0 @@
1
- /**
2
- * @xeno/agents-client — the SHARED, portable client for the hosted agent-runs API
3
- * (`xeno-agents-api`, live at https://api.xenostudio.ai/v1/agents).
4
- *
5
- * CANONICAL. Every XENO product (Hub, the desktop apps, the web console, agents,
6
- * SDKs) vendors THIS single file to dispatch and stream cloud agent runs — nobody
7
- * re-implements the wire contract. It is the generalized, framework-agnostic
8
- * distillation of the contract the XENO Agent CLI already speaks in its
9
- * `remote.ts` (capability negotiation + start/list/get/stop/events/attach with
10
- * SSE + NDJSON parsing). See `XENO AGENTS API - SPEC.md` §4–6.
11
- *
12
- * Zero dependencies. Works in Node ≥18, Electron (main or renderer) and browsers:
13
- * uses only global `fetch`, `ReadableStream`, `TextDecoder`, `AbortController`.
14
- * NO node-only imports, NO npm deps.
15
- *
16
- * Auth reality (2026-07): the server today accepts a platform **OIDC JWT**;
17
- * **API-key support is being added separately** (§13 caveat). This client is
18
- * auth-agnostic — it just sends `Authorization: Bearer <token>` — so it works with
19
- * either the moment the server accepts it.
20
- *
21
- * Usage:
22
- * import { createAgentsClient } from './xeno-agents-client';
23
- * const agents = createAgentsClient({ token: myPlatformJwt });
24
- * const run = await agents.createRun({ prompt: 'Fix the failing tests', model: 'gpt-5.5' });
25
- * for await (const ev of agents.attach(run.runId)) console.log(ev.type, ev.payload);
26
- * await agents.stopRun(run.runId);
27
- */
28
- /* ------------------------------------------------------------------ *
29
- * Wire types — LOCKED cross-repo contract (SPEC §5, server src/types.ts).
30
- * Re-derived from the server projection; do NOT invent shapes here.
31
- * ------------------------------------------------------------------ */
32
- export const SCHEMA_VERSION = 1;
33
- /** Terminal states — a run in one of these will never transition again. */
34
- export const TERMINAL_STATUSES = new Set([
35
- "completed",
36
- "failed",
37
- "skipped",
38
- "cancelled",
39
- "interrupted",
40
- ]);
41
- export function isTerminalStatus(status) {
42
- return TERMINAL_STATUSES.has(status);
43
- }
44
- /** Terminal lifecycle event types — the attach stream ends after one of these. */
45
- export const TERMINAL_LIFECYCLE_EVENTS = new Set([
46
- "run.completed",
47
- "run.failed",
48
- "run.cancelled",
49
- ]);
50
- /** The v0.1 required capability set the CLI negotiates against (SPEC §4.1). */
51
- export const REQUIRED_CAPABILITIES = [
52
- "runs.start",
53
- "runs.list",
54
- "runs.get",
55
- "runs.events",
56
- "runs.attach",
57
- "runs.stop",
58
- ];
59
- const STATUS_TO_CODE = {
60
- 400: "invalid_request",
61
- 401: "unauthorized",
62
- 402: "insufficient_credits",
63
- 403: "forbidden",
64
- 404: "run_not_found",
65
- 429: "rate_limited",
66
- };
67
- /** Typed API error carrying the server's error code + HTTP status. */
68
- export class AgentsApiError extends Error {
69
- code;
70
- status;
71
- /** True when caused by a fetch/abort/timeout rather than an HTTP response. */
72
- isNetwork;
73
- // `override` required by xeno-acp's stricter tsconfig (noImplicitOverride); Error declares `cause`.
74
- cause;
75
- constructor(code, message, status = 0, opts) {
76
- super(message);
77
- this.name = "AgentsApiError";
78
- this.code = code;
79
- this.status = status;
80
- this.isNetwork = opts?.isNetwork ?? false;
81
- this.cause = opts?.cause;
82
- }
83
- get isBudgetExceeded() {
84
- return this.code === "budget_exceeded";
85
- }
86
- get isInsufficientCredits() {
87
- return this.code === "insufficient_credits";
88
- }
89
- get isUnauthorized() {
90
- return this.code === "unauthorized";
91
- }
92
- get isNotFound() {
93
- return this.code === "run_not_found" || this.code === "not_found";
94
- }
95
- }
96
- export function isAgentsApiError(err) {
97
- return err instanceof AgentsApiError;
98
- }
99
- const DEFAULT_BASE_URL = "https://api.xenostudio.ai/v1/agents";
100
- export function createAgentsClient(config) {
101
- const rawBase = (config.baseUrl || DEFAULT_BASE_URL).replace(/\/+$/, "");
102
- // `new URL(path, base)` needs a trailing slash on base to treat it as a dir.
103
- const baseWithSlash = `${rawBase}/`;
104
- const f = config.fetchImpl || globalThis.fetch;
105
- const defaultTimeout = config.timeoutMs ?? 30_000;
106
- if (typeof f !== "function") {
107
- throw new AgentsApiError("network_error", "No fetch implementation available; pass { fetchImpl } (Node < 18).");
108
- }
109
- function url(path, query) {
110
- const u = new URL(path.replace(/^\/+/, ""), baseWithSlash);
111
- if (query) {
112
- for (const [k, v] of Object.entries(query)) {
113
- if (v !== undefined)
114
- u.searchParams.set(k, String(v));
115
- }
116
- }
117
- return u.toString();
118
- }
119
- async function authHeaders(json, extra) {
120
- const t = typeof config.token === "function" ? await config.token() : config.token;
121
- const h = { accept: "application/json" };
122
- if (t)
123
- h.authorization = `Bearer ${t}`;
124
- if (json)
125
- h["content-type"] = "application/json";
126
- if (config.workspace)
127
- h["x-xeno-workspace"] = config.workspace;
128
- return { ...h, ...(extra || {}) };
129
- }
130
- /** Compose the caller's AbortSignal with a timeout (Node ≥18 safe). */
131
- function withTimeout(signal, timeoutMs) {
132
- const ctl = new AbortController();
133
- const onAbort = () => ctl.abort(signal?.reason);
134
- if (signal) {
135
- if (signal.aborted)
136
- ctl.abort(signal.reason);
137
- else
138
- signal.addEventListener("abort", onAbort, { once: true });
139
- }
140
- let timer;
141
- if (timeoutMs > 0) {
142
- timer = setTimeout(() => ctl.abort(new AgentsApiError("network_error", `Request timed out after ${timeoutMs}ms`)), timeoutMs);
143
- if (typeof timer.unref === "function")
144
- timer.unref();
145
- }
146
- return {
147
- signal: ctl.signal,
148
- cancel: () => {
149
- if (timer)
150
- clearTimeout(timer);
151
- if (signal)
152
- signal.removeEventListener("abort", onAbort);
153
- },
154
- };
155
- }
156
- function normalizeNetworkError(err) {
157
- if (isAgentsApiError(err))
158
- return err;
159
- const anyErr = err;
160
- if (anyErr?.name === "AbortError") {
161
- return new AgentsApiError("network_error", anyErr.message || "Request aborted", 0, { isNetwork: true, cause: err });
162
- }
163
- return new AgentsApiError("network_error", anyErr?.message || String(err), 0, { isNetwork: true, cause: err });
164
- }
165
- /** Map a non-2xx response body `{ error: "<code>" }` to a typed AgentsApiError. */
166
- async function toError(res) {
167
- let code;
168
- let bodyText = "";
169
- try {
170
- bodyText = await res.text();
171
- const parsed = bodyText ? JSON.parse(bodyText) : undefined;
172
- // Server shape: { "error": "<code>" }. Also tolerate { error: { code } }.
173
- const raw = typeof parsed?.error === "string"
174
- ? parsed.error
175
- : typeof parsed?.error?.code === "string"
176
- ? parsed.error.code
177
- : undefined;
178
- if (raw)
179
- code = raw;
180
- }
181
- catch {
182
- /* non-JSON body */
183
- }
184
- const resolved = code ?? STATUS_TO_CODE[res.status] ?? "http_error";
185
- const message = code
186
- ? `Agents API error: ${code} (HTTP ${res.status})`
187
- : `Agents API request failed (HTTP ${res.status})${bodyText ? `: ${bodyText.slice(0, 200)}` : ""}`;
188
- return new AgentsApiError(resolved, message, res.status);
189
- }
190
- async function requestJson(method, path, opts) {
191
- const { signal, cancel } = withTimeout(opts?.signal, opts?.timeoutMs ?? defaultTimeout);
192
- try {
193
- const res = await f(url(path, opts?.query), {
194
- method,
195
- headers: await authHeaders(opts?.body !== undefined, opts?.headers),
196
- body: opts?.body !== undefined ? JSON.stringify(opts.body) : undefined,
197
- signal,
198
- });
199
- if (!res.ok)
200
- throw await toError(res);
201
- return (await res.json());
202
- }
203
- catch (err) {
204
- throw normalizeNetworkError(err);
205
- }
206
- finally {
207
- cancel();
208
- }
209
- }
210
- /* ----------------------------- streaming ----------------------------- */
211
- /** One connection's worth of the attach stream. Yields parsed RunEvents. */
212
- async function* streamOnce(runId, opts) {
213
- const sse = opts.transport === "sse";
214
- const headers = await authHeaders(false, {
215
- accept: sse ? "text/event-stream" : "application/x-ndjson",
216
- // SSE resume: header wins over ?since server-side.
217
- ...(sse && opts.since !== undefined ? { "last-event-id": String(opts.since) } : {}),
218
- });
219
- const res = await f(url(`runs/${encodeURIComponent(runId)}/attach`, {
220
- follow: "true",
221
- tail: opts.tail,
222
- since: !sse ? opts.since : undefined,
223
- }), { method: "GET", headers, signal: opts.signal });
224
- if (!res.ok)
225
- throw await toError(res);
226
- if (!res.body)
227
- return;
228
- const reader = res.body.getReader();
229
- const decoder = new TextDecoder();
230
- let buffer = "";
231
- const emit = function* (chunk) {
232
- const evt = parseEventLine(chunk);
233
- if (evt)
234
- yield evt;
235
- };
236
- try {
237
- for (;;) {
238
- const { done, value } = await reader.read();
239
- if (done)
240
- break;
241
- buffer += decoder.decode(value, { stream: true });
242
- if (sse) {
243
- // SSE frames are separated by a blank line.
244
- let idx;
245
- while ((idx = indexOfFrameBreak(buffer)) !== -1) {
246
- const frame = buffer.slice(0, idx);
247
- buffer = buffer.slice(idx).replace(/^(\r?\n){1,2}/, "");
248
- const parsed = parseSseFrame(frame);
249
- if (parsed === "DONE")
250
- return;
251
- if (parsed)
252
- yield parsed;
253
- }
254
- }
255
- else {
256
- let nl;
257
- while ((nl = buffer.indexOf("\n")) !== -1) {
258
- const line = buffer.slice(0, nl);
259
- buffer = buffer.slice(nl + 1);
260
- yield* emit(line);
261
- }
262
- }
263
- }
264
- // flush tail
265
- buffer += decoder.decode();
266
- if (sse) {
267
- const parsed = parseSseFrame(buffer);
268
- if (parsed && parsed !== "DONE")
269
- yield parsed;
270
- }
271
- else {
272
- yield* emit(buffer);
273
- }
274
- }
275
- finally {
276
- try {
277
- await reader.cancel();
278
- }
279
- catch {
280
- /* ignore */
281
- }
282
- }
283
- }
284
- /**
285
- * Attach to a run and stream its events as an async iterator (SPEC §4.6, §6.3).
286
- * Default NDJSON; pass `{ transport: 'sse' }` for Server-Sent Events. With
287
- * `{ reconnect: true }` a dropped stream auto-resumes from the last `sequence`.
288
- */
289
- async function* attach(runId, options = {}) {
290
- const transport = options.transport ?? "ndjson";
291
- const reconnectDelay = options.reconnectDelayMs ?? 1000;
292
- const maxReconnects = options.maxReconnects ?? 5;
293
- let since = options.since;
294
- let tail = options.tail;
295
- let attempts = 0;
296
- let sawTerminal = false;
297
- for (;;) {
298
- try {
299
- for await (const ev of streamOnce(runId, { tail, since, transport, signal: options.signal })) {
300
- // advance the resume cursor
301
- if (typeof ev.sequence === "number")
302
- since = ev.sequence;
303
- tail = undefined; // after first connect, resume by sequence, not tail
304
- attempts = 0; // a clean event resets the backoff budget
305
- yield ev;
306
- if (TERMINAL_LIFECYCLE_EVENTS.has(ev.type)) {
307
- sawTerminal = true;
308
- }
309
- }
310
- }
311
- catch (err) {
312
- const e = normalizeNetworkError(err);
313
- // Aborted by the caller, or a real HTTP error → do not reconnect.
314
- if (options.signal?.aborted || !e.isNetwork || !options.reconnect)
315
- throw e;
316
- if (++attempts > maxReconnects)
317
- throw e;
318
- await delay(reconnectDelay * attempts, options.signal);
319
- continue;
320
- }
321
- // Stream ended cleanly.
322
- if (sawTerminal || !options.reconnect || options.signal?.aborted)
323
- return;
324
- if (++attempts > maxReconnects)
325
- return;
326
- // Non-terminal end (e.g. idle server close) — resume from cursor.
327
- await delay(reconnectDelay * attempts, options.signal);
328
- }
329
- }
330
- /**
331
- * Convenience callback wrapper over `attach`. Returns a controller with a
332
- * `close()` and a `done` promise that resolves when the stream ends.
333
- */
334
- function onEvent(runId, handler, options = {}) {
335
- const ctl = new AbortController();
336
- const signal = options.signal
337
- ? anySignal([options.signal, ctl.signal])
338
- : ctl.signal;
339
- const done = (async () => {
340
- for await (const ev of attach(runId, { ...options, signal })) {
341
- await handler(ev);
342
- }
343
- })();
344
- return { close: () => ctl.abort(), done };
345
- }
346
- /* ------------------------------- API -------------------------------- */
347
- return {
348
- /** Resolved base URL (with trailing path stripped). */
349
- baseUrl: rawBase,
350
- /** GET /status — capability negotiation (SPEC §4.1). */
351
- status: (opts) => requestJson("GET", "status", { signal: opts?.signal }),
352
- /** True iff the server advertises every required v0.1 capability. */
353
- async supportsRequiredCapabilities(opts) {
354
- const s = await this.status(opts);
355
- return REQUIRED_CAPABILITIES.every((c) => s.capabilities.includes(c));
356
- },
357
- /** POST /runs — create a durable, asynchronous run (SPEC §4.2). */
358
- async createRun(input, opts) {
359
- if (!input.prompt || !input.prompt.trim()) {
360
- throw new AgentsApiError("invalid_request", "createRun requires a non-empty prompt");
361
- }
362
- const { idempotencyKey, ...rest } = input;
363
- const res = await requestJson("POST", "runs", {
364
- body: { schemaVersion: SCHEMA_VERSION, ...rest },
365
- signal: opts?.signal,
366
- ...(idempotencyKey ? { headers: { "idempotency-key": idempotencyKey } } : {}),
367
- });
368
- return res.run;
369
- },
370
- /** GET /runs?limit=<n> — list the caller's runs (SPEC §4.3). */
371
- async listRuns(options = {}) {
372
- const res = await requestJson("GET", "runs", {
373
- query: { limit: options.limit },
374
- signal: options.signal,
375
- });
376
- return res.runs;
377
- },
378
- /** GET /runs/:id — fetch one run (SPEC §4.4). 404 → run_not_found. */
379
- async getRun(runId, opts) {
380
- const res = await requestJson("GET", `runs/${encodeURIComponent(runId)}`, { signal: opts?.signal });
381
- return res.run;
382
- },
383
- /** GET /runs/:id/events — event history, no follow (SPEC §4.5). */
384
- async getEvents(runId, options = {}) {
385
- const res = await requestJson("GET", `runs/${encodeURIComponent(runId)}/events`, { query: { tail: options.tail, since: options.since }, signal: options.signal });
386
- return (res.events || []).map((e) => (isRunEventLike(e) ? hoistRunEvent(e) : e));
387
- },
388
- /** POST /runs/:id/stop — graceful stop (SPEC §4.7). */
389
- async stopRun(runId, opts) {
390
- const res = await requestJson("POST", `runs/${encodeURIComponent(runId)}/stop`, { signal: opts?.signal });
391
- return res.run;
392
- },
393
- attach,
394
- onEvent,
395
- };
396
- }
397
- /* ------------------------------------------------------------------ *
398
- * Internal parsing / stream helpers (module-scoped, pure).
399
- * ------------------------------------------------------------------ */
400
- /** Parse a single NDJSON line into a RunEvent (skips blanks / [DONE]). */
401
- function parseEventLine(line) {
402
- const trimmed = line.trim();
403
- if (!trimmed || trimmed === "[DONE]" || trimmed === "data: [DONE]")
404
- return null;
405
- const data = trimmed.startsWith("data:") ? trimmed.slice(5).trim() : trimmed;
406
- if (!data || data === "[DONE]")
407
- return null;
408
- try {
409
- const parsed = JSON.parse(data);
410
- return isRunEventLike(parsed) ? hoistRunEvent(parsed) : null;
411
- }
412
- catch {
413
- return null;
414
- }
415
- }
416
- /**
417
- * Parse one SSE frame (lines up to a blank line). Returns the RunEvent, the
418
- * sentinel "DONE", or null (comment/heartbeat/unparseable). Honors `data:` and
419
- * ignores `: ping` comments and bare `id:` lines.
420
- */
421
- function parseSseFrame(frame) {
422
- const lines = frame.split(/\r?\n/);
423
- const dataParts = [];
424
- for (const line of lines) {
425
- if (!line || line.startsWith(":"))
426
- continue; // comment / heartbeat
427
- if (line.startsWith("data:")) {
428
- dataParts.push(line.slice(5).replace(/^ /, ""));
429
- }
430
- // `id:` / `event:` lines carry no payload for us — the cursor comes from the
431
- // event's own `sequence`.
432
- }
433
- if (dataParts.length === 0)
434
- return null;
435
- const data = dataParts.join("\n").trim();
436
- if (!data)
437
- return null;
438
- if (data === "[DONE]")
439
- return "DONE";
440
- try {
441
- const parsed = JSON.parse(data);
442
- return isRunEventLike(parsed) ? hoistRunEvent(parsed) : null;
443
- }
444
- catch {
445
- return null;
446
- }
447
- }
448
- /** Index of the SSE frame separator (`\n\n` or `\r\n\r\n`) in the buffer, or -1. */
449
- function indexOfFrameBreak(buffer) {
450
- const a = buffer.indexOf("\n\n");
451
- const b = buffer.indexOf("\r\n\r\n");
452
- if (a === -1)
453
- return b;
454
- if (b === -1)
455
- return a;
456
- return Math.min(a, b);
457
- }
458
- function isRunEventLike(v) {
459
- return (typeof v === "object" &&
460
- v !== null &&
461
- typeof v.type === "string" &&
462
- typeof v.sequence === "number");
463
- }
464
- // Common SDK event fields live under `payload` on the wire. Hoist them to the top
465
- // of the RunEvent so consumers can read `ev.text` / `ev.toolName` / `ev.usage`
466
- // directly. Additive + non-destructive: `payload` is preserved and an existing
467
- // top-level field is never overwritten.
468
- const HOISTED_PAYLOAD_FIELDS = [
469
- "text", "toolName", "inputPreview", "resultPreview",
470
- "tokenUsage", "usage", "creditsSettled", "outputPreview",
471
- "error", "reason", "status", "statusReason",
472
- ];
473
- function hoistRunEvent(ev) {
474
- const p = ev.payload;
475
- if (p && typeof p === "object") {
476
- const top = ev;
477
- for (const k of HOISTED_PAYLOAD_FIELDS) {
478
- if (p[k] !== undefined && top[k] === undefined)
479
- top[k] = p[k];
480
- }
481
- // `model.text.delta` sometimes carries the chunk as `delta`; normalize to `text`.
482
- if (top.text === undefined && typeof p.delta === "string")
483
- top.text = p.delta;
484
- }
485
- return ev;
486
- }
487
- /** Abortable delay. Rejects nothing — resolves early if the signal aborts. */
488
- function delay(ms, signal) {
489
- return new Promise((resolve) => {
490
- if (signal?.aborted)
491
- return resolve();
492
- const t = setTimeout(() => {
493
- cleanup();
494
- resolve();
495
- }, ms);
496
- const onAbort = () => {
497
- cleanup();
498
- resolve();
499
- };
500
- const cleanup = () => {
501
- clearTimeout(t);
502
- signal?.removeEventListener("abort", onAbort);
503
- };
504
- signal?.addEventListener("abort", onAbort, { once: true });
505
- });
506
- }
507
- /** Combine multiple AbortSignals into one (Node ≥18 safe; no AbortSignal.any dep). */
508
- function anySignal(signals) {
509
- const ctl = new AbortController();
510
- const onAbort = (s) => () => ctl.abort(s.reason);
511
- for (const s of signals) {
512
- if (s.aborted) {
513
- ctl.abort(s.reason);
514
- break;
515
- }
516
- s.addEventListener("abort", onAbort(s), { once: true });
517
- }
518
- return ctl.signal;
519
- }
520
- //# sourceMappingURL=xeno-agents-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xeno-agents-client.js","sourceRoot":"","sources":["../../src/hosted/xeno-agents-client.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Event mapper: hosted `xeno-agents-api` run events → normalized `ProviderEvent` payloads.
3
- *
4
- * The hosted run stream (see `../hosted/xeno-agents-client.ts`) yields `RunEvent`s whose `type`
5
- * is either an SDK runtime-event kind (`model.text.delta`, `tool.started`, `tool.completed`,
6
- * `turn.completed`, …) or a run-lifecycle kind (`run.completed` / `run.failed` / `run.cancelled`).
7
- * This module is a PURE, side-effect-free translator from a single `RunEvent` to zero-or-more
8
- * `{ kind, payload }` pairs that the provider runtime wraps with its event factory and emits
9
- * through `ProviderRuntimeContext.emit`. The ACP server then maps the streamable ones to ACP
10
- * `session/update` notifications via `providerEventToAcpUpdate`.
11
- *
12
- * IMPLEMENTED mappings (streamed to ACP today):
13
- * - `model.text.delta` → `message_delta` → ACP `agent_message_chunk`
14
- * - `tool.started` → `tool_started` → ACP `tool_call` (pending)
15
- * - `tool.completed` → `tool_completed` → ACP `tool_call_update` (completed)
16
- * - `tool.failed` → `tool_failed` → ACP `tool_call_update` (failed)
17
- * - `run.completed` / `run.failed` / `run.cancelled` → terminal disposition (NOT an ACP update;
18
- * it is the prompt's return disposition, exactly like the fixture/local adapters).
19
- * - token usage on `turn.completed` / `run.usage` → captured for `ProviderPromptResult.usage`.
20
- *
21
- * DOCUMENTED-FOR-LATER (see docs/XACP_XENO_AGENTS_API_PROVIDER.md §"Mapping coverage"):
22
- * - `tool.permission` — the hosted run may block awaiting a permission decision. ACP has a
23
- * first-class `session/request_permission` round-trip; wiring the hosted permission gate to it
24
- * (and relaying the client's decision back via a control call) is a follow-up. Today such an
25
- * event is surfaced as a `diagnostic` so nothing is silently dropped.
26
- * - `plan` — the hosted SDK does not emit ACP-style plan entries in the canonical set; if/when it
27
- * does they map 1:1 to `plan` → ACP `plan`.
28
- */
29
- import type { RunEvent } from "../hosted/xeno-agents-client.js";
30
- import type { ProviderEventKind } from "./providerEvents.js";
31
- import type { ProviderUsage } from "./providerTypes.js";
32
- /** A provider-event kind + payload the runtime will stamp with its factory before emitting. */
33
- export interface MappedProviderPayload {
34
- kind: ProviderEventKind;
35
- payload: unknown;
36
- }
37
- /** The terminal disposition a run-lifecycle event implies, or undefined for a non-terminal event. */
38
- export declare function terminalDispositionFor(eventType: string): "completed" | "cancelled" | "failed" | undefined;
39
- /**
40
- * Capture run/turn token usage from a `RunEvent`. Prefers the authoritative `run.usage` totals;
41
- * falls back to per-turn `turn.completed` token usage. Returns undefined when the event carries no
42
- * usage.
43
- */
44
- export declare function extractRunUsage(ev: RunEvent): ProviderUsage | undefined;
45
- /**
46
- * Translate one hosted `RunEvent` into zero-or-more provider-event payloads. Terminal
47
- * lifecycle events return `[]` here (their effect is the prompt disposition, resolved by the
48
- * runtime via `terminalDispositionFor`); token-usage-only events also return `[]` (captured via
49
- * `extractRunUsage`).
50
- */
51
- export declare function mapRunEventToProviderPayloads(ev: RunEvent): MappedProviderPayload[];
52
- //# sourceMappingURL=xenoAgentsApiEventMapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xenoAgentsApiEventMapper.d.ts","sourceRoot":"","sources":["../../src/providers/xenoAgentsApiEventMapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,+FAA+F;AAC/F,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AAQD,qGAAqG;AACrG,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAE1G;AA8CD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,CAgBvE;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,QAAQ,GAAG,qBAAqB,EAAE,CA+CnF"}