@agentworkforce/workload-router 0.1.2 → 0.1.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.
package/README.md CHANGED
@@ -10,10 +10,124 @@ npm install @agentworkforce/workload-router
10
10
 
11
11
  ## Usage
12
12
 
13
+ ### `usePersona(intent, options?)`
14
+
15
+ Despite the `use*` prefix, **this is not a React hook.** It is a plain
16
+ synchronous factory: call it, get back a `PersonaContext` bundling the
17
+ resolved persona, its skill install plan, and an `execute()` closure.
18
+ Nothing is installed, spawned, or written to disk until you call
19
+ `execute()` (or run the install command yourself).
20
+
21
+ ```ts
22
+ import { usePersona } from '@agentworkforce/workload-router';
23
+ ```
24
+
25
+ There are **two usage modes**, and they are alternatives — not sequential
26
+ steps. Pick one.
27
+
28
+ #### Mode A — let `execute()` install skills and run the agent (recommended)
29
+
30
+ ```ts
31
+ const { execute } = usePersona('npm-provenance');
32
+
33
+ try {
34
+ const result = await execute('Set up npm trusted publishing for this repo', {
35
+ workingDirectory: '.',
36
+ timeoutSeconds: 600,
37
+ });
38
+ // result.status is guaranteed to be 'completed' here — any other
39
+ // outcome is delivered via the catch block below.
40
+ } catch (err) {
41
+ const execErr = err as Error & {
42
+ result?: { status: string; stderr: string; exitCode: number | null };
43
+ };
44
+ console.error(
45
+ 'persona run failed',
46
+ execErr.result?.status,
47
+ execErr.result?.stderr,
48
+ );
49
+ }
50
+ ```
51
+
52
+ `execute()` builds an ad-hoc agent-relay workflow with two steps: (1)
53
+ `prpm install` the persona's skills, then (2) invoke the persona's harness
54
+ agent with your task. `installSkills` defaults to `true`, so the first step
55
+ runs automatically — no manual install needed.
56
+
57
+ > **Outcome contract:** `await execute(...)` only resolves when the
58
+ > persona completes successfully. A non-zero exit from the agent
59
+ > subprocess (or a timeout) throws a `PersonaExecutionError`, and
60
+ > cancellation throws an `AbortError`; both carry the typed
61
+ > `ExecuteResult` on `err.result` so you can inspect
62
+ > `err.result.status`, `err.result.stderr`, `err.result.exitCode`, etc.
63
+ > Wrap `await execute(...)` in `try/catch` whenever you need to
64
+ > observe non-completed outcomes.
65
+
66
+ #### Mode B — pre-stage install out-of-band, then run without re-install
67
+
13
68
  ```ts
14
- import { /* ... */ } from '@agentworkforce/workload-router';
69
+ import { spawnSync } from 'node:child_process';
70
+
71
+ const { installCommandString, execute } = usePersona('npm-provenance');
72
+
73
+ // build time (Dockerfile RUN, CI bootstrap step, first-run setup, etc.):
74
+ spawnSync(installCommandString, { shell: true, stdio: 'inherit' });
75
+
76
+ // runtime — skip re-install because skills are already staged:
77
+ const result = await execute('Your task', {
78
+ workingDirectory: '.',
79
+ installSkills: false,
80
+ });
81
+ ```
82
+
83
+ Use Mode B when you want to install skills once at build/CI time for
84
+ caching, hermeticity, offline runtime, or split-trust reasons — or when you
85
+ want to wrap the install with your own process management (custom timeout,
86
+ logging, retry, alternative runner, etc.).
87
+
88
+ A third usage is **install-only**: if all you want is to materialize the
89
+ persona's skills into the repo for a human or another tool to use, run
90
+ `installCommandString` and never call `execute()`.
91
+
92
+ > ⚠️ **Do not combine the two modes without `installSkills: false`.**
93
+ > Running `spawnSync(installCommandString, ...)` *and then* calling
94
+ > `execute(task)` without passing `installSkills: false` will install the
95
+ > persona's skills **twice**. `ExecuteOptions.installSkills` defaults to
96
+ > `true`, so you must explicitly opt out when you have already pre-staged.
97
+
98
+ #### Cancellation, streaming progress, and the run id
99
+
100
+ ```ts
101
+ const abort = new AbortController();
102
+ const run = usePersona('npm-provenance').execute('Your task', {
103
+ signal: abort.signal,
104
+ onProgress: ({ stream, text }) => process[stream].write(text),
105
+ });
106
+
107
+ run.runId.then((id) => console.log('workflow run id:', id));
108
+
109
+ // ...later, from another code path:
110
+ abort.abort(); // or: run.cancel('user requested');
111
+
112
+ try {
113
+ const result = await run; // only returns when status === 'completed'
114
+ } catch (err) {
115
+ // Cancellation throws AbortError; failure throws PersonaExecutionError.
116
+ // Both carry the typed ExecuteResult on `err.result` — inspect
117
+ // `err.result.status`, `err.result.stderr`, `err.result.exitCode`, etc.
118
+ const execErr = err as Error & {
119
+ result?: { status: string; stderr: string; exitCode: number | null };
120
+ };
121
+ console.error('run did not complete', execErr.name, execErr.result?.status);
122
+ }
15
123
  ```
16
124
 
125
+ `run.runId` is a `Promise<string>` — it is *not* available synchronously
126
+ when `execute()` returns, because the workflow hasn't started yet. It
127
+ resolves once the persona's agent step has actually spawned (on the first
128
+ progress event from the subprocess, or ~250ms after spawn as a safety net).
129
+ Don't block on it in a tight synchronous path expecting a cached value.
130
+
17
131
  ## Development
18
132
 
19
133
  ```bash
package/dist/index.d.ts CHANGED
@@ -76,6 +76,186 @@ export interface SkillMaterializationPlan {
76
76
  harness: Harness;
77
77
  installs: SkillInstall[];
78
78
  }
79
+ /**
80
+ * Options for {@link PersonaContext.execute}. All fields are optional —
81
+ * calling `execute(task)` with no options is the common case.
82
+ *
83
+ * Pass `installSkills: false` when you have already pre-staged the persona's
84
+ * skills via {@link PersonaContext.installCommandString} (e.g. in a Dockerfile
85
+ * or a CI bootstrap step) and do not want `execute()` to re-install them.
86
+ * Leaving `installSkills` unset means `execute()` installs skills itself as
87
+ * the first step of the ad-hoc workflow — this is the default.
88
+ */
89
+ export interface ExecuteOptions {
90
+ /** Absolute or repo-relative path the spawned agent should treat as its CWD. */
91
+ workingDirectory?: string;
92
+ /** Optional step name override for the ad-hoc workflow run. */
93
+ name?: string;
94
+ /** Hard timeout for the install + agent run in seconds. */
95
+ timeoutSeconds?: number;
96
+ /** Optional structured context appended to the task body as JSON. */
97
+ inputs?: Record<string, string | number | boolean>;
98
+ /** Install persona skills before execution. Defaults to true. */
99
+ installSkills?: boolean;
100
+ /** Additional environment variables available to install + agent processes. */
101
+ env?: NodeJS.ProcessEnv;
102
+ /** Abort signal for cancellation. */
103
+ signal?: AbortSignal;
104
+ /** Streaming stdout/stderr callback from install + agent subprocesses. */
105
+ onProgress?: (chunk: {
106
+ stream: 'stdout' | 'stderr';
107
+ text: string;
108
+ }) => void;
109
+ }
110
+ /**
111
+ * Final result of a {@link PersonaContext.execute} call.
112
+ *
113
+ * **Only `status: 'completed'` is returned as a resolved promise.** Any
114
+ * other outcome is delivered as a thrown error with a typed `.result`
115
+ * property carrying this interface, so callers can `try/catch` and then
116
+ * inspect `err.result.status`, `err.result.stderr`, `err.result.exitCode`
117
+ * etc. just as they would read the resolved value:
118
+ *
119
+ * - `status: 'failed'` — the agent subprocess exited non-zero, or the
120
+ * workflow settled in a failed state for any other reason. Thrown as
121
+ * a {@link PersonaExecutionError}.
122
+ * - `status: 'timeout'` — the workflow's hard timeout fired before the
123
+ * run completed. Also thrown as a {@link PersonaExecutionError} (the
124
+ * status is derived from the underlying timeout error).
125
+ * - `status: 'cancelled'` — the caller aborted via
126
+ * {@link ExecuteOptions.signal} or {@link PersonaExecution.cancel}.
127
+ * Thrown as an `AbortError` (with `error.result.status === 'cancelled'`).
128
+ *
129
+ * So the typical shape of a caller is:
130
+ *
131
+ * ```ts
132
+ * try {
133
+ * const result = await execute(task, opts);
134
+ * // result.status is guaranteed to be 'completed' here.
135
+ * } catch (err) {
136
+ * // err.result.status is 'failed' | 'cancelled' | 'timeout'.
137
+ * // err.result.stderr / err.result.exitCode are populated from
138
+ * // whatever the agent subprocess produced.
139
+ * }
140
+ * ```
141
+ */
142
+ export interface ExecuteResult {
143
+ status: 'completed' | 'failed' | 'cancelled' | 'timeout';
144
+ output: string;
145
+ stderr: string;
146
+ exitCode: number | null;
147
+ durationMs: number;
148
+ workflowRunId?: string;
149
+ stepName: string;
150
+ }
151
+ /**
152
+ * Handle returned by {@link PersonaContext.execute}. It *is* a `Promise<ExecuteResult>`
153
+ * (awaitable directly), with two extra members bolted on:
154
+ *
155
+ * - `cancel(reason?)` — request cancellation of the running workflow. Equivalent
156
+ * to aborting the `AbortSignal` passed via {@link ExecuteOptions.signal}. Safe
157
+ * to call after the run has already settled (no-op).
158
+ *
159
+ * - `runId` — a `Promise<string>` that resolves to the workflow run id
160
+ * once the persona's agent step has actually spawned. This is deliberately
161
+ * a promise (not `string | undefined`) because the id is not known at the
162
+ * moment `execute()` returns — the workflow hasn't started yet. The
163
+ * resolution timing contract is:
164
+ *
165
+ * 1. If the agent subprocess emits any stdout/stderr, `runId` resolves
166
+ * immediately on the first progress event (see `onStepProgress`).
167
+ * 2. Otherwise, it resolves ~250ms after the agent step spawns (safety
168
+ * net armed in `onStepSpawn`, see `src/index.ts` around the
169
+ * `runIdReadyTimer` definition).
170
+ * 3. If the run settles (completes/fails/cancels) before either of the
171
+ * above fire, it resolves at settle time with the final run id.
172
+ *
173
+ * Practical consequence: `await run.runId` is *not* instantaneous — do not
174
+ * block on it in a tight synchronous path expecting a cached value.
175
+ *
176
+ * Error mirroring: if `execute()` fails before the workflow has started
177
+ * (e.g. the dynamic `@agent-relay/sdk/workflows` import throws, or the
178
+ * `WorkflowRunner` constructor throws), `runId` rejects with the same
179
+ * error as the main promise. Awaiting `runId` is therefore safe to
180
+ * `try/catch` — you will observe the same failure twice, not miss it.
181
+ * Note that you are not required to observe `runId`; the main promise
182
+ * is the authoritative outcome channel, and the auxiliary rejection
183
+ * on `runId` is internally suppressed when no handler is attached.
184
+ */
185
+ export interface PersonaExecution extends Promise<ExecuteResult> {
186
+ cancel(reason?: string): void;
187
+ readonly runId: Promise<string>;
188
+ }
189
+ /**
190
+ * Return value of {@link usePersona}. A side-effect-free bundle of
191
+ * "what this persona is" plus an `execute()` closure for running it.
192
+ *
193
+ * There are two ways to use the fields, and they are **alternatives**,
194
+ * not sequential steps:
195
+ *
196
+ * **Mode A — let `execute()` handle install (recommended default):**
197
+ * ```ts
198
+ * const { execute } = usePersona('npm-provenance');
199
+ * const result = await execute('Your task', { workingDirectory: '.' });
200
+ * ```
201
+ * `execute()` installs the persona's skills as the first step of its
202
+ * ad-hoc workflow, then runs the agent task. No manual install needed.
203
+ *
204
+ * **Mode B — pre-stage install yourself, then `execute()` without re-install:**
205
+ * ```ts
206
+ * const { installCommandString, execute } = usePersona('npm-provenance');
207
+ * // e.g. inside a Dockerfile RUN, or a CI bootstrap step:
208
+ * spawnSync(installCommandString, { shell: true, stdio: 'inherit' });
209
+ * // then, at runtime:
210
+ * const result = await execute('Your task', {
211
+ * workingDirectory: '.',
212
+ * installSkills: false, // skip re-install; skills are already staged
213
+ * });
214
+ * ```
215
+ * Use this when you want to install skills once at build/CI time for
216
+ * caching, hermeticity, offline runtime, or split-trust reasons — or
217
+ * when you want to wrap the install with your own process management
218
+ * (custom timeout, logging, retry, alternative runner, etc.).
219
+ *
220
+ * In both modes, the `await execute(...)` call above **only resolves
221
+ * when `status === 'completed'`**. Non-zero exits / timeouts throw a
222
+ * {@link PersonaExecutionError}, and cancellation throws an `AbortError`;
223
+ * both carry a typed `.result` for inspection. See {@link ExecuteResult}
224
+ * for the full outcome contract.
225
+ *
226
+ * ⚠️ **Do not combine the two modes without `installSkills: false`.**
227
+ * Running `spawnSync(installCommandString, ...)` *and then* calling
228
+ * `execute(task)` without passing `installSkills: false` will install
229
+ * the persona's skills twice. The default value of `installSkills` is
230
+ * `true` (see {@link ExecuteOptions}).
231
+ *
232
+ * A third usage is install-only: if all you want is to materialize
233
+ * the persona's skills into the repo (for a human or another tool
234
+ * to use), run `installCommandString` and never call `execute()`.
235
+ */
236
+ export interface PersonaContext {
237
+ /** Resolved persona: id, tier, runtime (harness + model), and skills. */
238
+ readonly selection: PersonaSelection;
239
+ /** Pure plan of what would be installed and where (no side effects). */
240
+ readonly installPlan: SkillMaterializationPlan;
241
+ /** argv form of the install command — safer for `execFile`/`spawn` callers. */
242
+ readonly installCommand: readonly string[];
243
+ /** Shell-escaped form of the install command — convenient for `spawn(..., { shell: true })`. */
244
+ readonly installCommandString: string;
245
+ /**
246
+ * Run the persona against `task`. Builds an ad-hoc agent-relay workflow,
247
+ * optionally runs `prpm install` as its first step (see
248
+ * {@link ExecuteOptions.installSkills}, default `true`), then invokes the
249
+ * persona's harness agent with the task. Returns a {@link PersonaExecution}
250
+ * (an awaitable promise with `cancel()` and `runId` attached).
251
+ */
252
+ execute(task: string, options?: ExecuteOptions): PersonaExecution;
253
+ }
254
+ export declare class PersonaExecutionError extends Error {
255
+ readonly result: ExecuteResult;
256
+ cause?: unknown;
257
+ constructor(message: string, result: ExecuteResult, cause?: unknown);
258
+ }
79
259
  /**
80
260
  * Given a set of persona skills and the harness the persona will run under,
81
261
  * produce the concrete install plan: which `prpm install` invocations to run
@@ -100,5 +280,82 @@ export declare function resolvePersona(intent: PersonaIntent, profile?: RoutingP
100
280
  * Prefer resolvePersona(intent, profile) for policy-driven selection.
101
281
  */
102
282
  export declare function resolvePersonaByTier(intent: PersonaIntent, tier?: PersonaTier): PersonaSelection;
283
+ /**
284
+ * Resolve a persona for `intent` and return a {@link PersonaContext}
285
+ * bundling the resolved persona, its skill install plan, and an
286
+ * `execute()` closure for running the persona against a task.
287
+ *
288
+ * **This is not a React hook.** The `use*` prefix is unfortunate — it is
289
+ * a plain synchronous factory with no implicit state, no side effects,
290
+ * and no rules-of-hooks constraints. Calling `usePersona(intent)` does
291
+ * nothing but resolve routing config and pre-compute the install plan.
292
+ * Nothing is installed, spawned, or written to disk until you call
293
+ * `execute()` (or run the install command yourself).
294
+ *
295
+ * See {@link PersonaContext} for the two usage modes (let `execute()`
296
+ * handle install vs. pre-stage install and pass `installSkills: false`)
297
+ * and the double-install caveat.
298
+ *
299
+ * @example
300
+ * // Mode A — let execute() install skills and run the agent in one call.
301
+ * // Only `status: 'completed'` resolves; non-zero exits / timeouts throw
302
+ * // PersonaExecutionError and cancellation throws AbortError, both with
303
+ * // the typed ExecuteResult attached as `err.result`.
304
+ * const { execute } = usePersona('npm-provenance');
305
+ * try {
306
+ * const result = await execute('Set up npm trusted publishing for this repo', {
307
+ * workingDirectory: '.',
308
+ * timeoutSeconds: 600,
309
+ * });
310
+ * // result.status === 'completed' here
311
+ * } catch (err) {
312
+ * const execErr = err as Error & { result?: ExecuteResult };
313
+ * console.error('persona run failed', execErr.result?.status, execErr.result?.stderr);
314
+ * }
315
+ *
316
+ * @example
317
+ * // Mode B — pre-stage install out-of-band (e.g. in a Dockerfile), then
318
+ * // run at runtime without re-installing:
319
+ * const { installCommandString, execute } = usePersona('npm-provenance');
320
+ * // build/CI step:
321
+ * spawnSync(installCommandString, { shell: true, stdio: 'inherit' });
322
+ * // runtime step:
323
+ * const result = await execute('Your task', {
324
+ * workingDirectory: '.',
325
+ * installSkills: false,
326
+ * });
327
+ *
328
+ * @example
329
+ * // Cancellation + streaming progress. Aborting causes `await run` to
330
+ * // throw an AbortError with `err.result.status === 'cancelled'`, so
331
+ * // wrap in try/catch if you plan to abort.
332
+ * const abort = new AbortController();
333
+ * const run = usePersona('npm-provenance').execute('Your task', {
334
+ * signal: abort.signal,
335
+ * onProgress: ({ stream, text }) => process[stream].write(text),
336
+ * });
337
+ * run.runId.then((id) => console.log('workflow run id:', id));
338
+ * // ...later:
339
+ * abort.abort(); // or: run.cancel('user requested');
340
+ * try {
341
+ * const result = await run;
342
+ * // result.status === 'completed'
343
+ * } catch (err) {
344
+ * const execErr = err as Error & { result?: ExecuteResult };
345
+ * // execErr.name === 'AbortError' and execErr.result?.status === 'cancelled'
346
+ * }
347
+ *
348
+ * @param intent The persona intent to resolve (e.g. `'npm-provenance'`).
349
+ * @param options Optional overrides. `harness` forces a specific harness
350
+ * (otherwise inferred from the selected tier's runtime).
351
+ * `tier` bypasses profile-driven routing and selects a tier
352
+ * directly (legacy path — prefer `profile`). `profile`
353
+ * selects the routing profile (defaults to `'default'`).
354
+ */
355
+ export declare function usePersona(intent: PersonaIntent, options?: {
356
+ harness?: Harness;
357
+ tier?: PersonaTier;
358
+ profile?: RoutingProfile | RoutingProfileId;
359
+ }): PersonaContext;
103
360
  export * from './eval.js';
104
361
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,6 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createHash } from 'node:crypto';
3
+ import { resolve as resolvePath } from 'node:path';
1
4
  import { frontendImplementer, codeReviewer, architecturePlanner, requirementsAnalyst, debuggerPersona, securityReviewer, technicalWriter, verifierPersona, testStrategist, tddGuard, flakeHunter, opencodeWorkflowSpecialist, npmProvenancePublisher, cloudSandboxInfra } from './generated/personas.js';
2
5
  import defaultRoutingProfileJson from '../routing-profiles/default.json' with { type: 'json' };
3
6
  export const HARNESS_VALUES = ['opencode', 'codex', 'claude'];
@@ -40,6 +43,24 @@ export const HARNESS_SKILL_TARGETS = {
40
43
  codex: { asFlag: 'codex', dir: '.agents/skills' },
41
44
  opencode: { asFlag: 'opencode', dir: '.skills' }
42
45
  };
46
+ export class PersonaExecutionError extends Error {
47
+ result;
48
+ cause;
49
+ constructor(message, result, cause) {
50
+ super(message, cause === undefined ? undefined : { cause });
51
+ this.name = 'PersonaExecutionError';
52
+ this.result = result;
53
+ this.cause = cause;
54
+ }
55
+ }
56
+ class CapturedCommandError extends Error {
57
+ capture;
58
+ constructor(message, capture) {
59
+ super(message);
60
+ this.name = 'CapturedCommandError';
61
+ this.capture = capture;
62
+ }
63
+ }
43
64
  const PRPM_URL_RE = /^https?:\/\/prpm\.dev\/packages\/([^/\s?#]+)\/([^/\s?#]+)\/?(?:[?#].*)?$/i;
44
65
  const PRPM_BARE_REF_RE = /^([^/\s]+)\/([^/\s]+)$/;
45
66
  function resolveSkillSource(source) {
@@ -103,6 +124,259 @@ export function materializeSkills(skills, harness) {
103
124
  export function materializeSkillsFor(selection) {
104
125
  return materializeSkills(selection.skills, selection.runtime.harness);
105
126
  }
127
+ function shellEscape(value) {
128
+ if (/^[A-Za-z0-9_./:@%+=,-]+$/.test(value)) {
129
+ return value;
130
+ }
131
+ return `'${value.replace(/'/g, `'\\''`)}'`;
132
+ }
133
+ function commandToShellString(command) {
134
+ return command.map(shellEscape).join(' ');
135
+ }
136
+ function buildInstallArtifacts(plan) {
137
+ const installCommandString = plan.installs.length === 0
138
+ ? ':'
139
+ : plan.installs.map((install) => commandToShellString(install.installCommand)).join(' && ');
140
+ return {
141
+ installCommand: Object.freeze(['sh', '-c', installCommandString]),
142
+ installCommandString
143
+ };
144
+ }
145
+ function buildExecutionTask(systemPrompt, task, inputs) {
146
+ const sections = [`System Instructions:\n${systemPrompt.trim()}`, `Task:\n${task.trim()}`];
147
+ if (inputs && Object.keys(inputs).length > 0) {
148
+ sections.push(`Additional Inputs (JSON):\n${JSON.stringify(inputs, null, 2)}`);
149
+ }
150
+ return sections.join('\n\n');
151
+ }
152
+ function hash8(value) {
153
+ return createHash('sha256').update(value).digest('hex').slice(0, 8);
154
+ }
155
+ function sanitizeExecutionName(value) {
156
+ const sanitized = value
157
+ .trim()
158
+ .toLowerCase()
159
+ .replace(/[^a-z0-9_.-]+/g, '-')
160
+ .replace(/^-+|-+$/g, '');
161
+ return sanitized || `persona-${hash8(value)}`;
162
+ }
163
+ function createDeferred() {
164
+ let settled = false;
165
+ let resolveFn;
166
+ let rejectFn;
167
+ const promise = new Promise((resolve, reject) => {
168
+ resolveFn = (value) => {
169
+ settled = true;
170
+ resolve(value);
171
+ };
172
+ rejectFn = (reason) => {
173
+ settled = true;
174
+ reject(reason);
175
+ };
176
+ });
177
+ return {
178
+ promise,
179
+ resolve: resolveFn,
180
+ reject: rejectFn,
181
+ get settled() {
182
+ return settled;
183
+ }
184
+ };
185
+ }
186
+ function createAbortError(message) {
187
+ const error = new Error(message);
188
+ error.name = 'AbortError';
189
+ return error;
190
+ }
191
+ function isTimeoutError(message) {
192
+ return typeof message === 'string' && /timed out/i.test(message);
193
+ }
194
+ function deepFreeze(value) {
195
+ if (value === null || value === undefined || typeof value !== 'object') {
196
+ return value;
197
+ }
198
+ if (Array.isArray(value)) {
199
+ for (const entry of value) {
200
+ deepFreeze(entry);
201
+ }
202
+ return Object.freeze(value);
203
+ }
204
+ for (const nested of Object.values(value)) {
205
+ deepFreeze(nested);
206
+ }
207
+ return Object.freeze(value);
208
+ }
209
+ function linkAbortSignal(signal, controller) {
210
+ if (!signal) {
211
+ return () => { };
212
+ }
213
+ if (signal.aborted) {
214
+ controller.abort(signal.reason);
215
+ return () => { };
216
+ }
217
+ const onAbort = () => controller.abort(signal.reason);
218
+ signal.addEventListener('abort', onAbort, { once: true });
219
+ return () => signal.removeEventListener('abort', onAbort);
220
+ }
221
+ async function runCapturedCommand(options) {
222
+ const { command, args, cwd, env, timeoutMs, signal, onSpawn, onProgress } = options;
223
+ return new Promise((resolve, reject) => {
224
+ if (signal?.aborted) {
225
+ reject(createAbortError('Execution aborted before the process started'));
226
+ return;
227
+ }
228
+ const child = spawn(command, args, {
229
+ cwd,
230
+ env,
231
+ stdio: ['ignore', 'pipe', 'pipe']
232
+ });
233
+ let stdout = '';
234
+ let stderr = '';
235
+ let timedOut = false;
236
+ let timeoutId;
237
+ let killId;
238
+ let abortDelayId;
239
+ const cleanup = () => {
240
+ if (timeoutId) {
241
+ clearTimeout(timeoutId);
242
+ }
243
+ if (killId) {
244
+ clearTimeout(killId);
245
+ }
246
+ if (abortDelayId) {
247
+ clearTimeout(abortDelayId);
248
+ }
249
+ if (signal && abortHandler) {
250
+ signal.removeEventListener('abort', abortHandler);
251
+ }
252
+ };
253
+ const terminate = () => {
254
+ child.kill('SIGTERM');
255
+ killId = setTimeout(() => child.kill('SIGKILL'), 5_000);
256
+ killId.unref?.();
257
+ };
258
+ const abortHandler = () => {
259
+ if (stdout.length === 0 && stderr.length === 0) {
260
+ abortDelayId = setTimeout(() => {
261
+ abortDelayId = undefined;
262
+ terminate();
263
+ }, 15);
264
+ abortDelayId.unref?.();
265
+ return;
266
+ }
267
+ terminate();
268
+ };
269
+ if (signal) {
270
+ signal.addEventListener('abort', abortHandler, { once: true });
271
+ }
272
+ if (timeoutMs !== undefined) {
273
+ timeoutId = setTimeout(() => {
274
+ timedOut = true;
275
+ child.kill('SIGTERM');
276
+ killId = setTimeout(() => child.kill('SIGKILL'), 5_000);
277
+ killId.unref?.();
278
+ }, timeoutMs);
279
+ timeoutId.unref?.();
280
+ }
281
+ child.stdout?.on('data', (chunk) => {
282
+ const text = chunk.toString();
283
+ stdout += text;
284
+ onProgress?.({ stream: 'stdout', text });
285
+ });
286
+ child.stderr?.on('data', (chunk) => {
287
+ const text = chunk.toString();
288
+ stderr += text;
289
+ onProgress?.({ stream: 'stderr', text });
290
+ });
291
+ onSpawn?.();
292
+ child.once('error', (error) => {
293
+ cleanup();
294
+ reject(error);
295
+ });
296
+ child.once('close', (code, exitSignal) => {
297
+ cleanup();
298
+ const capture = {
299
+ stdout,
300
+ stderr,
301
+ exitCode: code,
302
+ exitSignal: exitSignal ?? null
303
+ };
304
+ if (signal?.aborted) {
305
+ const error = createAbortError('Execution cancelled');
306
+ Object.assign(error, { capture });
307
+ reject(error);
308
+ return;
309
+ }
310
+ if (timedOut) {
311
+ reject(new CapturedCommandError(`Command timed out after ${timeoutMs ?? 'unknown'}ms`, capture));
312
+ return;
313
+ }
314
+ resolve(capture);
315
+ });
316
+ });
317
+ }
318
+ function createLocalExecutor(stepCaptures, options, buildCommand) {
319
+ const execute = async (stepName, command, args, cwd, timeoutMs, ignoreExitCode = false) => {
320
+ const partialCapture = {
321
+ stdout: '',
322
+ stderr: '',
323
+ exitCode: null,
324
+ exitSignal: null
325
+ };
326
+ try {
327
+ const capture = await runCapturedCommand({
328
+ command,
329
+ args,
330
+ cwd,
331
+ env: options.env,
332
+ timeoutMs,
333
+ signal: options.signal,
334
+ onSpawn: () => {
335
+ stepCaptures.set(stepName, { ...partialCapture });
336
+ options.onStepSpawn?.(stepName);
337
+ },
338
+ onProgress: (chunk) => {
339
+ if (chunk.stream === 'stdout') {
340
+ partialCapture.stdout += chunk.text;
341
+ }
342
+ else {
343
+ partialCapture.stderr += chunk.text;
344
+ }
345
+ stepCaptures.set(stepName, { ...partialCapture });
346
+ options.onStepProgress?.(stepName, chunk);
347
+ options.onProgress?.(chunk);
348
+ }
349
+ });
350
+ stepCaptures.set(stepName, capture);
351
+ if (!ignoreExitCode && capture.exitCode !== null && capture.exitCode !== 0) {
352
+ throw new CapturedCommandError(`Step "${stepName}" exited with code ${capture.exitCode}`, capture);
353
+ }
354
+ return capture;
355
+ }
356
+ catch (error) {
357
+ const capture = error instanceof CapturedCommandError ? error.capture : error.capture;
358
+ if (capture) {
359
+ stepCaptures.set(stepName, capture);
360
+ }
361
+ throw error;
362
+ }
363
+ };
364
+ return {
365
+ async executeAgentStep(step, agentDef, resolvedTask, timeoutMs) {
366
+ const extraArgs = agentDef.constraints?.model ? ['--model', agentDef.constraints.model] : undefined;
367
+ const [command, ...args] = buildCommand(agentDef.cli, extraArgs, resolvedTask);
368
+ const capture = await execute(step.name, command, args, resolvePath(step.cwd ?? options.cwd), timeoutMs, agentDef.cli === 'opencode');
369
+ return capture.stdout;
370
+ },
371
+ async executeDeterministicStep(step, resolvedCommand, cwd) {
372
+ const capture = await execute(step.name, 'sh', ['-c', resolvedCommand], resolvePath(cwd), step.timeoutMs);
373
+ return {
374
+ output: capture.stdout,
375
+ exitCode: capture.exitCode ?? 0
376
+ };
377
+ }
378
+ };
379
+ }
106
380
  function isObject(value) {
107
381
  return typeof value === 'object' && value !== null;
108
382
  }
@@ -287,5 +561,263 @@ export function resolvePersonaByTier(intent, tier = 'best-value') {
287
561
  rationale: `legacy-tier-override: ${tier}`
288
562
  };
289
563
  }
564
+ /**
565
+ * Resolve a persona for `intent` and return a {@link PersonaContext}
566
+ * bundling the resolved persona, its skill install plan, and an
567
+ * `execute()` closure for running the persona against a task.
568
+ *
569
+ * **This is not a React hook.** The `use*` prefix is unfortunate — it is
570
+ * a plain synchronous factory with no implicit state, no side effects,
571
+ * and no rules-of-hooks constraints. Calling `usePersona(intent)` does
572
+ * nothing but resolve routing config and pre-compute the install plan.
573
+ * Nothing is installed, spawned, or written to disk until you call
574
+ * `execute()` (or run the install command yourself).
575
+ *
576
+ * See {@link PersonaContext} for the two usage modes (let `execute()`
577
+ * handle install vs. pre-stage install and pass `installSkills: false`)
578
+ * and the double-install caveat.
579
+ *
580
+ * @example
581
+ * // Mode A — let execute() install skills and run the agent in one call.
582
+ * // Only `status: 'completed'` resolves; non-zero exits / timeouts throw
583
+ * // PersonaExecutionError and cancellation throws AbortError, both with
584
+ * // the typed ExecuteResult attached as `err.result`.
585
+ * const { execute } = usePersona('npm-provenance');
586
+ * try {
587
+ * const result = await execute('Set up npm trusted publishing for this repo', {
588
+ * workingDirectory: '.',
589
+ * timeoutSeconds: 600,
590
+ * });
591
+ * // result.status === 'completed' here
592
+ * } catch (err) {
593
+ * const execErr = err as Error & { result?: ExecuteResult };
594
+ * console.error('persona run failed', execErr.result?.status, execErr.result?.stderr);
595
+ * }
596
+ *
597
+ * @example
598
+ * // Mode B — pre-stage install out-of-band (e.g. in a Dockerfile), then
599
+ * // run at runtime without re-installing:
600
+ * const { installCommandString, execute } = usePersona('npm-provenance');
601
+ * // build/CI step:
602
+ * spawnSync(installCommandString, { shell: true, stdio: 'inherit' });
603
+ * // runtime step:
604
+ * const result = await execute('Your task', {
605
+ * workingDirectory: '.',
606
+ * installSkills: false,
607
+ * });
608
+ *
609
+ * @example
610
+ * // Cancellation + streaming progress. Aborting causes `await run` to
611
+ * // throw an AbortError with `err.result.status === 'cancelled'`, so
612
+ * // wrap in try/catch if you plan to abort.
613
+ * const abort = new AbortController();
614
+ * const run = usePersona('npm-provenance').execute('Your task', {
615
+ * signal: abort.signal,
616
+ * onProgress: ({ stream, text }) => process[stream].write(text),
617
+ * });
618
+ * run.runId.then((id) => console.log('workflow run id:', id));
619
+ * // ...later:
620
+ * abort.abort(); // or: run.cancel('user requested');
621
+ * try {
622
+ * const result = await run;
623
+ * // result.status === 'completed'
624
+ * } catch (err) {
625
+ * const execErr = err as Error & { result?: ExecuteResult };
626
+ * // execErr.name === 'AbortError' and execErr.result?.status === 'cancelled'
627
+ * }
628
+ *
629
+ * @param intent The persona intent to resolve (e.g. `'npm-provenance'`).
630
+ * @param options Optional overrides. `harness` forces a specific harness
631
+ * (otherwise inferred from the selected tier's runtime).
632
+ * `tier` bypasses profile-driven routing and selects a tier
633
+ * directly (legacy path — prefer `profile`). `profile`
634
+ * selects the routing profile (defaults to `'default'`).
635
+ */
636
+ export function usePersona(intent, options = {}) {
637
+ const baseSelection = options.tier
638
+ ? resolvePersonaByTier(intent, options.tier)
639
+ : resolvePersona(intent, options.profile ?? 'default');
640
+ const effectiveHarness = options.harness ?? baseSelection.runtime.harness;
641
+ const selection = effectiveHarness === baseSelection.runtime.harness
642
+ ? baseSelection
643
+ : {
644
+ ...baseSelection,
645
+ runtime: {
646
+ ...baseSelection.runtime,
647
+ harness: effectiveHarness
648
+ }
649
+ };
650
+ const installPlan = effectiveHarness === baseSelection.runtime.harness
651
+ ? materializeSkillsFor(selection)
652
+ : materializeSkills(selection.skills, effectiveHarness);
653
+ const { installCommand, installCommandString } = buildInstallArtifacts(installPlan);
654
+ const frozenSelection = deepFreeze(selection);
655
+ const frozenInstallPlan = deepFreeze(installPlan);
656
+ const execute = (task, executeOptions = {}) => {
657
+ const runId = createDeferred();
658
+ // The primary rejection path for any failure in execute() is `resultPromise`
659
+ // (which the caller awaits via `await execution`). `runId.promise` is an
660
+ // auxiliary promise that mirrors the same rejection when early setup fails
661
+ // before the workflow has actually started. Callers are not required to
662
+ // consume `execution.runId`, so attach a no-op catch here to suppress
663
+ // the unhandled-rejection warning (and, under Node's default
664
+ // --unhandled-rejections=throw, an uncaught-exception crash) that would
665
+ // otherwise fire when both of those conditions hold simultaneously.
666
+ runId.promise.catch(() => { });
667
+ const abortController = new AbortController();
668
+ const unlinkAbort = linkAbortSignal(executeOptions.signal, abortController);
669
+ const stepName = sanitizeExecutionName(executeOptions.name ?? `${frozenSelection.personaId}-${hash8(task)}`);
670
+ const workflowName = `use-persona-${stepName}`;
671
+ const installStepName = `${stepName}-install-skills`;
672
+ const workingDirectory = resolvePath(executeOptions.workingDirectory ?? process.cwd());
673
+ const timeoutMs = Math.max(1, Math.round((executeOptions.timeoutSeconds ?? frozenSelection.runtime.harnessSettings.timeoutSeconds) * 1000));
674
+ const shouldInstallSkills = executeOptions.installSkills !== false && frozenInstallPlan.installs.length > 0;
675
+ const stepCaptures = new Map();
676
+ let cancelReason;
677
+ let workflowRunId;
678
+ let runIdReadyTimer;
679
+ const resolveRunId = (value = workflowRunId) => {
680
+ if (runIdReadyTimer) {
681
+ clearTimeout(runIdReadyTimer);
682
+ runIdReadyTimer = undefined;
683
+ }
684
+ if (value && !runId.settled) {
685
+ runId.resolve(value);
686
+ }
687
+ };
688
+ const resultPromise = (async () => {
689
+ try {
690
+ const { InMemoryWorkflowDb, WorkflowRunner, buildCommand, workflow } = await import('@agent-relay/sdk/workflows');
691
+ const executor = createLocalExecutor(stepCaptures, {
692
+ cwd: workingDirectory,
693
+ env: { ...process.env, ...executeOptions.env },
694
+ signal: abortController.signal,
695
+ onStepSpawn: (startedStepName) => {
696
+ if (startedStepName !== stepName || runId.settled || runIdReadyTimer) {
697
+ return;
698
+ }
699
+ runIdReadyTimer = setTimeout(() => resolveRunId(), 250);
700
+ runIdReadyTimer.unref?.();
701
+ },
702
+ onStepProgress: (progressStepName) => {
703
+ if (progressStepName === stepName) {
704
+ resolveRunId();
705
+ }
706
+ },
707
+ onProgress: executeOptions.onProgress
708
+ }, buildCommand);
709
+ const runner = new WorkflowRunner({
710
+ cwd: workingDirectory,
711
+ db: new InMemoryWorkflowDb(),
712
+ executor
713
+ });
714
+ runner.on((event) => {
715
+ if (event.type === 'run:started') {
716
+ workflowRunId = event.runId;
717
+ }
718
+ if ((event.type === 'step:completed' || event.type === 'step:failed') &&
719
+ event.stepName === stepName) {
720
+ resolveRunId(event.runId);
721
+ }
722
+ });
723
+ const agentName = `${stepName}-agent`;
724
+ const builder = workflow(workflowName)
725
+ .description(`Ad-hoc persona execution for ${frozenSelection.personaId}`)
726
+ .pattern('dag')
727
+ .timeout(timeoutMs)
728
+ .trajectories(false)
729
+ .agent(agentName, {
730
+ cli: frozenSelection.runtime.harness,
731
+ model: frozenSelection.runtime.model,
732
+ role: frozenSelection.personaId,
733
+ preset: 'worker',
734
+ interactive: false,
735
+ timeoutMs
736
+ });
737
+ if (shouldInstallSkills) {
738
+ builder.step(installStepName, {
739
+ type: 'deterministic',
740
+ command: installCommandString,
741
+ cwd: workingDirectory,
742
+ timeoutMs,
743
+ captureOutput: true,
744
+ failOnError: true
745
+ });
746
+ }
747
+ builder.step(stepName, {
748
+ agent: agentName,
749
+ task: buildExecutionTask(frozenSelection.runtime.systemPrompt, task, executeOptions.inputs),
750
+ cwd: workingDirectory,
751
+ timeoutMs,
752
+ verification: { type: 'exit_code', value: '0' },
753
+ ...(shouldInstallSkills ? { dependsOn: [installStepName] } : {})
754
+ });
755
+ if (abortController.signal.aborted) {
756
+ runner.abort();
757
+ }
758
+ else {
759
+ abortController.signal.addEventListener('abort', () => runner.abort(), { once: true });
760
+ }
761
+ const run = (await runner.execute(builder.toConfig()));
762
+ if (!runId.settled) {
763
+ runId.resolve(run.id);
764
+ }
765
+ const primaryCapture = stepCaptures.get(stepName);
766
+ const fallbackCapture = shouldInstallSkills ? stepCaptures.get(installStepName) : undefined;
767
+ const capture = primaryCapture ?? fallbackCapture;
768
+ const result = {
769
+ status: run.status === 'cancelled'
770
+ ? 'cancelled'
771
+ : run.status === 'failed' && isTimeoutError(run.error)
772
+ ? 'timeout'
773
+ : run.status === 'completed'
774
+ ? 'completed'
775
+ : 'failed',
776
+ output: capture?.stdout ?? '',
777
+ stderr: capture?.stderr ?? '',
778
+ exitCode: capture?.exitCode ?? null,
779
+ durationMs: Date.now() - (Date.parse(run.startedAt) || Date.now()),
780
+ workflowRunId: run.id,
781
+ stepName
782
+ };
783
+ if (run.status === 'completed') {
784
+ return result;
785
+ }
786
+ if (run.status === 'cancelled') {
787
+ const error = createAbortError(cancelReason ?? 'Execution cancelled');
788
+ Object.assign(error, { result });
789
+ throw error;
790
+ }
791
+ throw new PersonaExecutionError(run.error ?? `Persona execution failed for step "${stepName}"`, result);
792
+ }
793
+ catch (error) {
794
+ if (!runId.settled) {
795
+ runId.reject(error);
796
+ }
797
+ throw error;
798
+ }
799
+ finally {
800
+ if (runIdReadyTimer) {
801
+ clearTimeout(runIdReadyTimer);
802
+ }
803
+ unlinkAbort();
804
+ }
805
+ })();
806
+ return Object.assign(resultPromise, {
807
+ cancel(reason) {
808
+ cancelReason = reason;
809
+ abortController.abort(reason);
810
+ },
811
+ runId: runId.promise
812
+ });
813
+ };
814
+ return Object.freeze({
815
+ selection: frozenSelection,
816
+ installPlan: frozenInstallPlan,
817
+ installCommand,
818
+ installCommandString,
819
+ execute
820
+ });
821
+ }
290
822
  export * from './eval.js';
291
823
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,22 @@
1
1
  import test from 'node:test';
2
2
  import assert from 'node:assert/strict';
3
- import { HARNESS_SKILL_TARGETS, HARNESS_VALUES, materializeSkills, materializeSkillsFor, personaCatalog, resolvePersona, resolvePersonaByTier } from './index.js';
3
+ import { chmodSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
4
+ import { tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { HARNESS_SKILL_TARGETS, HARNESS_VALUES, PersonaExecutionError, materializeSkills, materializeSkillsFor, personaCatalog, resolvePersona, resolvePersonaByTier, usePersona } from './index.js';
7
+ function writeNodeExecutable(dir, name, source) {
8
+ const filePath = join(dir, name);
9
+ writeFileSync(filePath, `#!/usr/bin/env node\n${source}\n`, 'utf8');
10
+ chmodSync(filePath, 0o755);
11
+ return filePath;
12
+ }
13
+ function buildEnv(dir, extra = {}) {
14
+ return {
15
+ ...process.env,
16
+ PATH: `${dir}:${process.env.PATH ?? ''}`,
17
+ ...extra
18
+ };
19
+ }
4
20
  test('resolves frontend implementer from default routing profile', () => {
5
21
  const result = resolvePersona('implement-frontend');
6
22
  assert.equal(result.personaId, 'frontend-implementer');
@@ -196,4 +212,136 @@ test('materializeSkills handles personas with no skills', () => {
196
212
  const plan = materializeSkills([], 'claude');
197
213
  assert.equal(plan.installs.length, 0);
198
214
  });
215
+ test('usePersona combines selection, install plan, and install commands into a frozen context', () => {
216
+ const context = usePersona('npm-provenance');
217
+ const selection = resolvePersona('npm-provenance');
218
+ const plan = materializeSkillsFor(selection);
219
+ assert.deepEqual(context.selection, selection);
220
+ assert.deepEqual(context.installPlan, plan);
221
+ assert.equal(context.installCommand[0], 'sh');
222
+ assert.match(context.installCommandString, /prpm install/);
223
+ assert.ok(Object.isFrozen(context));
224
+ assert.ok(Object.isFrozen(context.selection));
225
+ assert.ok(Object.isFrozen(context.installPlan));
226
+ assert.ok(Object.isFrozen(context.installCommand));
227
+ });
228
+ test('usePersona.execute runs the selected harness and returns stdout, stderr, and run metadata', async () => {
229
+ const dir = mkdtempSync(join(tmpdir(), 'use-persona-success-'));
230
+ try {
231
+ writeNodeExecutable(dir, 'codex', `
232
+ const { writeFileSync } = require('node:fs');
233
+ const args = process.argv.slice(2);
234
+ writeFileSync('codex-args.json', JSON.stringify(args), 'utf8');
235
+ writeFileSync('codex-env.json', JSON.stringify({ TEST_ENV: process.env.TEST_ENV }), 'utf8');
236
+ process.stdout.write('stub-stdout');
237
+ process.stderr.write('stub-stderr');
238
+ `);
239
+ const context = usePersona('architecture-plan', { harness: 'codex' });
240
+ const progress = [];
241
+ const execution = context.execute('Draft the migration plan', {
242
+ workingDirectory: dir,
243
+ env: buildEnv(dir, { TEST_ENV: 'persona-execute' }),
244
+ onProgress: (chunk) => progress.push(chunk)
245
+ });
246
+ const runId = await execution.runId;
247
+ const result = await execution;
248
+ const args = JSON.parse(readFileSync(join(dir, 'codex-args.json'), 'utf8'));
249
+ const env = JSON.parse(readFileSync(join(dir, 'codex-env.json'), 'utf8'));
250
+ assert.equal(result.status, 'completed');
251
+ assert.equal(result.output, 'stub-stdout');
252
+ assert.equal(result.stderr, 'stub-stderr');
253
+ assert.equal(result.exitCode, 0);
254
+ assert.equal(result.workflowRunId, runId);
255
+ assert.deepEqual(args.slice(0, 2), ['exec', '--dangerously-bypass-approvals-and-sandbox']);
256
+ assert.match(args[2], /System Instructions:/);
257
+ assert.match(args[2], /Draft the migration plan/);
258
+ assert.deepEqual(env, { TEST_ENV: 'persona-execute' });
259
+ assert.deepEqual(progress, [
260
+ { stream: 'stdout', text: 'stub-stdout' },
261
+ { stream: 'stderr', text: 'stub-stderr' }
262
+ ]);
263
+ }
264
+ finally {
265
+ rmSync(dir, { recursive: true, force: true });
266
+ }
267
+ });
268
+ test('usePersona.execute installs persona skills before running the agent step', async () => {
269
+ const dir = mkdtempSync(join(tmpdir(), 'use-persona-install-'));
270
+ try {
271
+ writeNodeExecutable(dir, 'npx', `
272
+ const { writeFileSync } = require('node:fs');
273
+ writeFileSync('install-ran.txt', process.argv.slice(2).join(' '), 'utf8');
274
+ `);
275
+ writeNodeExecutable(dir, 'codex', `
276
+ const { existsSync, writeFileSync } = require('node:fs');
277
+ if (!existsSync('install-ran.txt')) {
278
+ process.stderr.write('install step did not run');
279
+ process.exit(9);
280
+ }
281
+ writeFileSync('agent-saw-install.txt', 'yes', 'utf8');
282
+ process.stdout.write('agent-after-install');
283
+ `);
284
+ const context = usePersona('npm-provenance', { harness: 'codex' });
285
+ const result = await context.execute('Configure publishing', {
286
+ workingDirectory: dir,
287
+ env: buildEnv(dir)
288
+ });
289
+ assert.equal(result.status, 'completed');
290
+ assert.match(readFileSync(join(dir, 'install-ran.txt'), 'utf8'), /prpm install/);
291
+ assert.equal(readFileSync(join(dir, 'agent-saw-install.txt'), 'utf8'), 'yes');
292
+ }
293
+ finally {
294
+ rmSync(dir, { recursive: true, force: true });
295
+ }
296
+ });
297
+ test('usePersona.execute maps non-zero exits to PersonaExecutionError with captured stderr', async () => {
298
+ const dir = mkdtempSync(join(tmpdir(), 'use-persona-fail-'));
299
+ try {
300
+ writeNodeExecutable(dir, 'codex', `
301
+ process.stderr.write('boom');
302
+ process.exit(17);
303
+ `);
304
+ const context = usePersona('architecture-plan', { harness: 'codex' });
305
+ await assert.rejects(context.execute('Fail this run', {
306
+ workingDirectory: dir,
307
+ env: buildEnv(dir)
308
+ }), (error) => {
309
+ assert.ok(error instanceof PersonaExecutionError);
310
+ assert.equal(error.result.status, 'failed');
311
+ assert.equal(error.result.exitCode, 17);
312
+ assert.equal(error.result.stderr, 'boom');
313
+ return true;
314
+ });
315
+ }
316
+ finally {
317
+ rmSync(dir, { recursive: true, force: true });
318
+ }
319
+ });
320
+ test('usePersona.execute supports cancellation via AbortSignal', async () => {
321
+ const dir = mkdtempSync(join(tmpdir(), 'use-persona-cancel-'));
322
+ try {
323
+ writeNodeExecutable(dir, 'codex', `
324
+ process.stdout.write('started');
325
+ setInterval(() => {}, 1_000);
326
+ `);
327
+ const controller = new AbortController();
328
+ const context = usePersona('architecture-plan', { harness: 'codex' });
329
+ const execution = context.execute('Wait for cancellation', {
330
+ workingDirectory: dir,
331
+ env: buildEnv(dir),
332
+ signal: controller.signal
333
+ });
334
+ await execution.runId;
335
+ controller.abort();
336
+ await assert.rejects(execution, (error) => {
337
+ const abortError = error;
338
+ assert.equal(abortError.name, 'AbortError');
339
+ assert.equal(abortError.result?.status, 'cancelled');
340
+ return true;
341
+ });
342
+ }
343
+ finally {
344
+ rmSync(dir, { recursive: true, force: true });
345
+ }
346
+ });
199
347
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentworkforce/workload-router",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,6 +17,9 @@
17
17
  "README.md",
18
18
  "package.json"
19
19
  ],
20
+ "dependencies": {
21
+ "@agent-relay/sdk": "^4.0.5"
22
+ },
20
23
  "repository": {
21
24
  "type": "git",
22
25
  "url": "https://github.com/AgentWorkforce/workforce"