@xenosystem/acp-agent 0.1.1 → 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.
Files changed (46) hide show
  1. package/dist/acpAgentServer.d.ts.map +1 -1
  2. package/dist/acpAgentServer.js +56 -0
  3. package/dist/acpAgentServer.js.map +1 -1
  4. package/dist/cli.js +28 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/fixtureProvider.d.ts +13 -0
  7. package/dist/fixtureProvider.d.ts.map +1 -0
  8. package/dist/fixtureProvider.js +86 -0
  9. package/dist/fixtureProvider.js.map +1 -0
  10. package/dist/hosted/xeno-agents-client.d.ts +306 -0
  11. package/dist/hosted/xeno-agents-client.d.ts.map +1 -0
  12. package/dist/hosted/xeno-agents-client.js +520 -0
  13. package/dist/hosted/xeno-agents-client.js.map +1 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/providers/fixtureProvider.d.ts.map +1 -1
  19. package/dist/providers/fixtureProvider.js +20 -0
  20. package/dist/providers/fixtureProvider.js.map +1 -1
  21. package/dist/providers/providerRegistry.d.ts.map +1 -1
  22. package/dist/providers/providerRegistry.js +2 -0
  23. package/dist/providers/providerRegistry.js.map +1 -1
  24. package/dist/providers/providerTypes.d.ts +25 -0
  25. package/dist/providers/providerTypes.d.ts.map +1 -1
  26. package/dist/providers/xenoAgentsApiEventMapper.d.ts +52 -0
  27. package/dist/providers/xenoAgentsApiEventMapper.d.ts.map +1 -0
  28. package/dist/providers/xenoAgentsApiEventMapper.js +152 -0
  29. package/dist/providers/xenoAgentsApiEventMapper.js.map +1 -0
  30. package/dist/providers/xenoAgentsApiProvider.d.ts +60 -0
  31. package/dist/providers/xenoAgentsApiProvider.d.ts.map +1 -0
  32. package/dist/providers/xenoAgentsApiProvider.js +302 -0
  33. package/dist/providers/xenoAgentsApiProvider.js.map +1 -0
  34. package/dist/providers/xenoSdkAdapterProcess.d.ts +50 -0
  35. package/dist/providers/xenoSdkAdapterProcess.d.ts.map +1 -0
  36. package/dist/providers/xenoSdkAdapterProcess.js +65 -0
  37. package/dist/providers/xenoSdkAdapterProcess.js.map +1 -0
  38. package/dist/providers/xenoSdkProvider.d.ts +85 -0
  39. package/dist/providers/xenoSdkProvider.d.ts.map +1 -0
  40. package/dist/providers/xenoSdkProvider.js +212 -0
  41. package/dist/providers/xenoSdkProvider.js.map +1 -0
  42. package/dist/version.d.ts +9 -1
  43. package/dist/version.d.ts.map +1 -1
  44. package/dist/version.js +9 -1
  45. package/dist/version.js.map +1 -1
  46. package/package.json +4 -1
@@ -0,0 +1,306 @@
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
+ export declare const SCHEMA_VERSION: 1;
29
+ /** The 15-state AgentRunStatus union (SPEC §5.2 / D8), verbatim. */
30
+ export type RunStatus = "queued" | "starting" | "running" | "blocked" | "waiting_for_user" | "waiting_for_tool" | "waiting_for_hook" | "waiting_for_permission" | "paused" | "completed" | "failed" | "skipped" | "cancelled" | "interrupted" | "detached";
31
+ /** Terminal states — a run in one of these will never transition again. */
32
+ export declare const TERMINAL_STATUSES: ReadonlySet<RunStatus>;
33
+ export declare function isTerminalStatus(status: RunStatus): boolean;
34
+ /** Terminal lifecycle event types — the attach stream ends after one of these. */
35
+ export declare const TERMINAL_LIFECYCLE_EVENTS: ReadonlySet<string>;
36
+ export type PermissionMode = "default" | "plan" | "acceptEdits" | "auto" | "dontAsk" | "bypassPermissions";
37
+ export type Effort = "low" | "medium" | "high" | "xhigh" | "max";
38
+ export interface RunUsage {
39
+ input: number;
40
+ output: number;
41
+ total: number;
42
+ estimatedCostUsd?: number;
43
+ }
44
+ export interface RunGit {
45
+ branch?: string;
46
+ baseRef?: string;
47
+ commit?: string;
48
+ }
49
+ export interface AgentRef {
50
+ name?: string;
51
+ scope?: string;
52
+ path?: string;
53
+ description?: string;
54
+ model?: string;
55
+ }
56
+ export interface HostedReferences {
57
+ playbooks?: string[];
58
+ knowledge?: string[];
59
+ secrets?: string[];
60
+ }
61
+ export interface RunBudget {
62
+ /** Hard cap; sizes the ledger hold (SPEC §8). */
63
+ maxCredits?: number;
64
+ }
65
+ /**
66
+ * Public projection of a run (SPEC §5.2, server `RunRecordPublic`). Host-local
67
+ * fields (absolute cwd, worker pid, stdout/stderr paths) are stripped server-side.
68
+ */
69
+ export interface AgentRunRecord {
70
+ schemaVersion: typeof SCHEMA_VERSION;
71
+ runId: string;
72
+ sessionId: string;
73
+ rootRunId: string;
74
+ parentRunId?: string;
75
+ workspaceId: string;
76
+ prompt: string;
77
+ title?: string;
78
+ status: RunStatus;
79
+ statusReason?: string;
80
+ blockedReason?: string;
81
+ model: string;
82
+ effort?: Effort;
83
+ agent?: AgentRef;
84
+ permissionMode: PermissionMode;
85
+ createdAt: string;
86
+ updatedAt: string;
87
+ startedAt?: string;
88
+ endedAt?: string;
89
+ lastActivityAt?: string;
90
+ exitCode?: number;
91
+ git?: RunGit;
92
+ usage: RunUsage;
93
+ children: string[];
94
+ tags: string[];
95
+ creditsHeld?: number;
96
+ creditsSettled?: number;
97
+ url: string;
98
+ }
99
+ /** Compact list item (SPEC §4.3, server `RunListItem`). */
100
+ export interface RunListItem {
101
+ runId: string;
102
+ status: RunStatus;
103
+ url: string;
104
+ createdAt: string;
105
+ model: string;
106
+ promptPreview: string;
107
+ }
108
+ /**
109
+ * Persisted, append-only run event (SPEC §5.3). `sequence` is a per-run monotonic
110
+ * integer assigned at append time — the SSE/NDJSON resume cursor.
111
+ */
112
+ export interface RunEvent {
113
+ schemaVersion: typeof SCHEMA_VERSION;
114
+ runId: string;
115
+ sequence: number;
116
+ type: string;
117
+ timestamp: string;
118
+ /** The SDK runtime-event body. The wire nests all event data here. */
119
+ payload: Record<string, unknown>;
120
+ /** `model.text.delta` → the streamed text chunk. */
121
+ text?: string;
122
+ /** `tool.started` / `tool.completed` → the tool's name. */
123
+ toolName?: string;
124
+ /** `tool.started` → a truncated preview of the tool input. */
125
+ inputPreview?: Record<string, unknown>;
126
+ /** `tool.completed` → a truncated preview of the tool result. */
127
+ resultPreview?: unknown;
128
+ /** `turn.completed` → per-turn token totals. */
129
+ tokenUsage?: {
130
+ input: number;
131
+ output: number;
132
+ total: number;
133
+ };
134
+ /** `run.usage` → run token totals. */
135
+ usage?: {
136
+ input: number;
137
+ output: number;
138
+ total: number;
139
+ };
140
+ /** `run.usage` → credits actually settled for the run. */
141
+ creditsSettled?: number;
142
+ /** `turn.completed` → a short preview of the assistant output. */
143
+ outputPreview?: string;
144
+ /** `*.failed` → error/reason text. */
145
+ error?: string;
146
+ reason?: string;
147
+ /** `run.status` → the run's status/statusReason. */
148
+ status?: string;
149
+ statusReason?: string;
150
+ [key: string]: unknown;
151
+ }
152
+ /**
153
+ * The `XenoRuntimeEvent` kinds relayed verbatim in `RunEvent.payload` (SPEC §6.1,
154
+ * schema of record: xeno-agent-sdk `src/runtime/events.ts`). The canonical 12 kinds
155
+ * plus the SDK's additive extensions — additive-only per D3 (a wire type now).
156
+ */
157
+ export type XenoRuntimeEventType = "thread.started" | "turn.started" | "turn.completed" | "turn.failed" | "turn.interrupted" | "query.state" | "query.watchdog" | "model.text.delta" | "tool.started" | "tool.permission" | "tool.completed" | "diff.completed" | "provider.event" | "tool.history.repaired" | "tool.failure_guard.tripped" | "turn.suspended" | "turn.continuation_enqueued" | "turn.continuation_resumed" | "turn.continuation_exhausted" | (string & {});
158
+ /**
159
+ * The SDK runtime-event envelope carried inside `RunEvent.payload` (its own
160
+ * `id/sequence/timestamp/threadId/turnId` is preserved for fidelity; the OUTER
161
+ * `RunEvent.sequence` is the durable cursor). Kept open (index signature) because
162
+ * per-kind payloads live in the SDK, not on the wire boundary.
163
+ */
164
+ export interface XenoRuntimeEvent {
165
+ id?: string;
166
+ sequence?: number;
167
+ type: XenoRuntimeEventType;
168
+ timestamp?: string;
169
+ threadId?: string;
170
+ turnId?: string;
171
+ [key: string]: unknown;
172
+ }
173
+ /** Control-plane capability negotiation payload (SPEC §4.1). */
174
+ export interface AgentsApiStatus {
175
+ schemaVersion: typeof SCHEMA_VERSION;
176
+ ok: boolean;
177
+ service?: string;
178
+ version?: string;
179
+ capabilities: string[];
180
+ }
181
+ /** The v0.1 required capability set the CLI negotiates against (SPEC §4.1). */
182
+ export declare const REQUIRED_CAPABILITIES: readonly ["runs.start", "runs.list", "runs.get", "runs.events", "runs.attach", "runs.stop"];
183
+ export type AgentsApiErrorCode = "unauthorized" | "forbidden" | "run_not_found" | "not_found" | "insufficient_credits" | "budget_exceeded" | "invalid_request" | "rate_limited" | "http_error" | "network_error";
184
+ /** Typed API error carrying the server's error code + HTTP status. */
185
+ export declare class AgentsApiError extends Error {
186
+ readonly code: AgentsApiErrorCode;
187
+ readonly status: number;
188
+ /** True when caused by a fetch/abort/timeout rather than an HTTP response. */
189
+ readonly isNetwork: boolean;
190
+ readonly cause?: unknown;
191
+ constructor(code: AgentsApiErrorCode, message: string, status?: number, opts?: {
192
+ isNetwork?: boolean;
193
+ cause?: unknown;
194
+ });
195
+ get isBudgetExceeded(): boolean;
196
+ get isInsufficientCredits(): boolean;
197
+ get isUnauthorized(): boolean;
198
+ get isNotFound(): boolean;
199
+ }
200
+ export declare function isAgentsApiError(err: unknown): err is AgentsApiError;
201
+ export type TokenProvider = string | (() => string | null | undefined | Promise<string | null | undefined>);
202
+ export interface AgentsClientConfig {
203
+ /** Base of the agents API. Default `https://api.xenostudio.ai/v1/agents`. */
204
+ baseUrl?: string;
205
+ /** Platform bearer — an OIDC JWT or (once supported) a platform API key. */
206
+ token: TokenProvider;
207
+ /** Optional workspace selector → `x-xeno-workspace` header (SPEC §7). */
208
+ workspace?: string;
209
+ /** Optional fetch impl (custom / testing). Defaults to global fetch. */
210
+ fetchImpl?: typeof fetch;
211
+ /** Default timeout (ms) for non-streaming requests. Default 30_000. */
212
+ timeoutMs?: number;
213
+ }
214
+ /** Normalized input to run creation (SPEC §4.2, server `CreateRunInput`). */
215
+ export interface CreateRunInput {
216
+ /** Required, non-empty. */
217
+ prompt: string;
218
+ command?: string;
219
+ cwd?: string;
220
+ model?: string;
221
+ effort?: Effort;
222
+ permissionMode?: PermissionMode;
223
+ title?: string;
224
+ environmentId?: string;
225
+ attempts?: number;
226
+ hostedReferences?: HostedReferences;
227
+ agent?: AgentRef;
228
+ workspace?: string;
229
+ /** Continuity (D2): seed context from a prior run. */
230
+ previousRunId?: string;
231
+ /** Hard credit cap; sizes the ledger hold (SPEC §8). */
232
+ budget?: RunBudget;
233
+ /** v0.2 git workspace provisioning. */
234
+ repo?: {
235
+ url?: string;
236
+ ref?: string;
237
+ };
238
+ /** Idempotency key → `Idempotency-Key` header. */
239
+ idempotencyKey?: string;
240
+ }
241
+ export interface ListRunsOptions {
242
+ limit?: number;
243
+ signal?: AbortSignal;
244
+ }
245
+ export interface EventsOptions {
246
+ /** Trailing N events. */
247
+ tail?: number;
248
+ /** Return events with `sequence > since`. Wins over `tail` if both set. */
249
+ since?: number;
250
+ signal?: AbortSignal;
251
+ }
252
+ export type AttachTransport = "ndjson" | "sse";
253
+ export interface AttachOptions {
254
+ /** Cursor: start from the trailing N events. */
255
+ tail?: number;
256
+ /** Cursor: resume from `sequence > since` (SSE `Last-Event-ID` / `?since`). */
257
+ since?: number;
258
+ /** Abort the stream. */
259
+ signal?: AbortSignal;
260
+ /** Wire transport. Default `ndjson`; `sse` sends `Accept: text/event-stream`. */
261
+ transport?: AttachTransport;
262
+ /**
263
+ * Auto-reconnect on a dropped stream, resuming from the last seen `sequence`.
264
+ * Default false. Stops after a terminal lifecycle event or when aborted.
265
+ */
266
+ reconnect?: boolean;
267
+ /** Base backoff (ms) between reconnect attempts. Default 1000. */
268
+ reconnectDelayMs?: number;
269
+ /** Max reconnect attempts after a drop (per gap). Default 5. */
270
+ maxReconnects?: number;
271
+ }
272
+ export declare function createAgentsClient(config: AgentsClientConfig): {
273
+ /** Resolved base URL (with trailing path stripped). */
274
+ baseUrl: string;
275
+ /** GET /status — capability negotiation (SPEC §4.1). */
276
+ status: (opts?: {
277
+ signal?: AbortSignal;
278
+ }) => Promise<AgentsApiStatus>;
279
+ /** True iff the server advertises every required v0.1 capability. */
280
+ supportsRequiredCapabilities(opts?: {
281
+ signal?: AbortSignal;
282
+ }): Promise<boolean>;
283
+ /** POST /runs — create a durable, asynchronous run (SPEC §4.2). */
284
+ createRun(input: CreateRunInput, opts?: {
285
+ signal?: AbortSignal;
286
+ }): Promise<AgentRunRecord>;
287
+ /** GET /runs?limit=<n> — list the caller's runs (SPEC §4.3). */
288
+ listRuns(options?: ListRunsOptions): Promise<RunListItem[]>;
289
+ /** GET /runs/:id — fetch one run (SPEC §4.4). 404 → run_not_found. */
290
+ getRun(runId: string, opts?: {
291
+ signal?: AbortSignal;
292
+ }): Promise<AgentRunRecord>;
293
+ /** GET /runs/:id/events — event history, no follow (SPEC §4.5). */
294
+ getEvents(runId: string, options?: EventsOptions): Promise<RunEvent[]>;
295
+ /** POST /runs/:id/stop — graceful stop (SPEC §4.7). */
296
+ stopRun(runId: string, opts?: {
297
+ signal?: AbortSignal;
298
+ }): Promise<AgentRunRecord>;
299
+ attach: (runId: string, options?: AttachOptions) => AsyncGenerator<RunEvent, void, void>;
300
+ onEvent: (runId: string, handler: (event: RunEvent) => void | Promise<void>, options?: AttachOptions) => {
301
+ close: () => void;
302
+ done: Promise<void>;
303
+ };
304
+ };
305
+ export type AgentsClient = ReturnType<typeof createAgentsClient>;
306
+ //# sourceMappingURL=xeno-agents-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xeno-agents-client.d.ts","sourceRoot":"","sources":["../../src/hosted/xeno-agents-client.ts"],"names":[],"mappings":"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"}