@loopingai/core 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +83 -28
  2. package/dist/a2a/caller.d.ts +24 -0
  3. package/dist/a2a/caller.d.ts.map +1 -0
  4. package/dist/a2a/caller.js +34 -0
  5. package/dist/a2a/caller.js.map +1 -0
  6. package/dist/a2a/card.d.ts +7 -2
  7. package/dist/a2a/card.d.ts.map +1 -1
  8. package/dist/a2a/card.js +16 -7
  9. package/dist/a2a/card.js.map +1 -1
  10. package/dist/a2a/index.d.ts +15 -0
  11. package/dist/a2a/index.d.ts.map +1 -1
  12. package/dist/a2a/index.js +15 -0
  13. package/dist/a2a/index.js.map +1 -1
  14. package/dist/a2a/notify.d.ts +27 -5
  15. package/dist/a2a/notify.d.ts.map +1 -1
  16. package/dist/a2a/notify.js +18 -8
  17. package/dist/a2a/notify.js.map +1 -1
  18. package/dist/a2a/push.d.ts +71 -0
  19. package/dist/a2a/push.d.ts.map +1 -0
  20. package/dist/a2a/push.js +54 -0
  21. package/dist/a2a/push.js.map +1 -0
  22. package/dist/a2a/verify.d.ts +28 -36
  23. package/dist/a2a/verify.d.ts.map +1 -1
  24. package/dist/a2a/verify.js +20 -25
  25. package/dist/a2a/verify.js.map +1 -1
  26. package/dist/agent/index.d.ts +16 -5
  27. package/dist/agent/index.d.ts.map +1 -1
  28. package/dist/agent/index.js +16 -5
  29. package/dist/agent/index.js.map +1 -1
  30. package/dist/config.d.ts +49 -7
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +25 -3
  33. package/dist/config.js.map +1 -1
  34. package/dist/db/models/tasks.d.ts +19 -5
  35. package/dist/db/models/tasks.d.ts.map +1 -1
  36. package/dist/db/models/tasks.js +38 -8
  37. package/dist/db/models/tasks.js.map +1 -1
  38. package/dist/host/agent.d.ts +217 -0
  39. package/dist/host/agent.d.ts.map +1 -0
  40. package/dist/host/agent.js +306 -0
  41. package/dist/host/agent.js.map +1 -0
  42. package/dist/host/index.d.ts +21 -0
  43. package/dist/host/index.d.ts.map +1 -0
  44. package/dist/host/index.js +20 -0
  45. package/dist/host/index.js.map +1 -0
  46. package/dist/host/plugin-host.d.ts +47 -0
  47. package/dist/host/plugin-host.d.ts.map +1 -0
  48. package/dist/host/plugin-host.js +2 -0
  49. package/dist/host/plugin-host.js.map +1 -0
  50. package/dist/round/agent.d.ts +267 -0
  51. package/dist/round/agent.d.ts.map +1 -0
  52. package/dist/round/agent.js +691 -0
  53. package/dist/round/agent.js.map +1 -0
  54. package/dist/round/index.d.ts +25 -0
  55. package/dist/round/index.d.ts.map +1 -0
  56. package/dist/round/index.js +24 -0
  57. package/dist/round/index.js.map +1 -0
  58. package/dist/round/policy.d.ts +99 -0
  59. package/dist/round/policy.d.ts.map +1 -0
  60. package/dist/round/policy.js +2 -0
  61. package/dist/round/policy.js.map +1 -0
  62. package/dist/round/subagent.d.ts +67 -0
  63. package/dist/round/subagent.d.ts.map +1 -0
  64. package/dist/round/subagent.js +91 -0
  65. package/dist/round/subagent.js.map +1 -0
  66. package/dist/round/turn.d.ts +231 -0
  67. package/dist/round/turn.d.ts.map +1 -0
  68. package/dist/round/turn.js +497 -0
  69. package/dist/round/turn.js.map +1 -0
  70. package/dist/round/workflow.d.ts +109 -0
  71. package/dist/round/workflow.d.ts.map +1 -0
  72. package/dist/round/workflow.js +316 -0
  73. package/dist/round/workflow.js.map +1 -0
  74. package/dist/runtime/index.d.ts +5 -1
  75. package/dist/runtime/index.d.ts.map +1 -1
  76. package/dist/runtime/index.js.map +1 -1
  77. package/dist/testing/auth.d.ts.map +1 -1
  78. package/dist/testing/auth.js +10 -7
  79. package/dist/testing/auth.js.map +1 -1
  80. package/dist/testing/fixtures.d.ts +17 -0
  81. package/dist/testing/fixtures.d.ts.map +1 -1
  82. package/dist/testing/fixtures.js +17 -0
  83. package/dist/testing/fixtures.js.map +1 -1
  84. package/dist/testing/harness.d.ts +98 -0
  85. package/dist/testing/harness.d.ts.map +1 -0
  86. package/dist/testing/harness.js +139 -0
  87. package/dist/testing/harness.js.map +1 -0
  88. package/dist/testing/index.d.ts +2 -1
  89. package/dist/testing/index.d.ts.map +1 -1
  90. package/dist/testing/index.js +2 -1
  91. package/dist/testing/index.js.map +1 -1
  92. package/dist/worker/define-agent.d.ts +124 -0
  93. package/dist/worker/define-agent.d.ts.map +1 -0
  94. package/dist/worker/define-agent.js +21 -0
  95. package/dist/worker/define-agent.js.map +1 -0
  96. package/dist/worker/index.d.ts +29 -4
  97. package/dist/worker/index.d.ts.map +1 -1
  98. package/dist/worker/index.js +70 -12
  99. package/dist/worker/index.js.map +1 -1
  100. package/package.json +12 -3
@@ -0,0 +1,316 @@
1
+ import { MAX_CHUNKS_PER_BRANCH } from "../platform.js";
2
+ import { buildCompletedTask, buildFailedTask } from "../a2a/notify.js";
3
+ import { createPushChannel } from "../a2a/push.js";
4
+ import { selectWave } from "../subtasks/scheduler.js";
5
+ /**
6
+ * The orchestration itself, split from the `WorkflowEntrypoint` wiring so it can
7
+ * be driven with a fake `step` in tests (workerd forbids constructing a
8
+ * `WorkflowEntrypoint` outside the runtime) — and so a second agent can reuse it
9
+ * with different deps.
10
+ *
11
+ * Every `step.do` return here is a small projection — a status, an id, a reply.
12
+ * Never a Subtask row: a step return is capped at 1 MiB and a Subtask carries
13
+ * verbatim history snapshots, so the rows stay in the DO and the Workflow carries
14
+ * references to them.
15
+ *
16
+ * **Step names are durable cache keys.** Everything inside the round loop carries
17
+ * its round for that reason: `turn:<round>`, `deadline:<round>`,
18
+ * `scan:<round>:<wave>`, `cancel:<round>:<wave>`. Renaming one silently re-runs
19
+ * its effect on replay.
20
+ */
21
+ export async function runHandleTask(p, step, deps) {
22
+ const limits = deps.config.mainAgentLimits;
23
+ // Pre-work. Routing is pure, so it needs no step of its own.
24
+ const stub = deps.resolveAgent(p.identity);
25
+ const push = {
26
+ taskId: p.taskId,
27
+ contextId: p.contextId,
28
+ pushUrl: p.pushUrl,
29
+ pushToken: p.pushToken,
30
+ jku: p.jku
31
+ };
32
+ const started = await step.do("working", async () => (await stub.markWorking(p.taskId)) === "ok");
33
+ if (!started)
34
+ return;
35
+ // Main-agent turns spent so far, across every round. Summed from cached step
36
+ // returns, so a replay reconstructs the identical number and the `mode` input
37
+ // below stays deterministic.
38
+ let turnsUsed = 0;
39
+ // The Task's own start, in a step so replays read the original instant rather
40
+ // than restarting the clock — otherwise a Workflow that retried its way through
41
+ // the night would never observe the deadline it had long since passed.
42
+ //
43
+ // When escalation lands, this is the line that needs care: a Task suspended on
44
+ // `step.waitForEvent(...)` must **rebase** it on resume, or a human's thinking
45
+ // time is charged to the agent and a Task that asked a question is dead before
46
+ // the answer arrives. `turnsUsed` needs no such handling — waiting costs none.
47
+ const startedAtMs = await step.do("started", async () => Date.now());
48
+ // At most one round per turn of the budget, **plus one**: an `open` round always
49
+ // spends at least one turn, so `maxTurns` of them exhaust the budget — and the
50
+ // forced-answer round that follows needs an iteration of its own to happen in.
51
+ // Off by one here and a Task of cheap rounds would fall out of the loop with no
52
+ // reply instead of being made to give one.
53
+ for (let round = 0; round <= limits.maxTurns; round++) {
54
+ // The clock is read *inside a step* so its answer is cached with the round:
55
+ // `mode` is a step input, and a replay that re-read `Date.now()` would
56
+ // reconstruct a different one. Time is the budget a Task can spend without
57
+ // spending the other — a round waiting on slow subtasks moves it while
58
+ // `turnsUsed` does not.
59
+ const overdue = await step.do(`deadline:${round}`, async () => Date.now() - startedAtMs >= limits.maxWallMs);
60
+ // Out of turns or out of time ⇒ this round gets no tools at all and must
61
+ // answer. Not a failure mode: it is how a ceiling returns the work instead of
62
+ // dropping it.
63
+ const mode = turnsUsed >= limits.maxTurns || overdue ? "final" : "open";
64
+ if (mode === "final") {
65
+ // Worth its own line: from the outside, a round the budget ended is
66
+ // indistinguishable from a model that simply chose to answer.
67
+ console.warn("[handle-task] task budget spent, forcing an answer", {
68
+ taskId: p.taskId,
69
+ round,
70
+ turnsUsed,
71
+ overdue
72
+ });
73
+ }
74
+ // The main agent decides. `runTaskTurn` persists whatever the round produced
75
+ // — a final reply, or the Subtask rows plus the acknowledgment it already
76
+ // pushed — so this step returns only the verdict plus what it cost. A typed
77
+ // `failed` is a real outcome (both models produced unusable output, with no
78
+ // durable work to fall back on) and routes to failed delivery; a transient
79
+ // fault throws and the step retries, recovering from the durable rows with no
80
+ // second inference.
81
+ const turn = await step.do(`turn:${round}`, async () => {
82
+ // Projected to a plain object: an RPC return carries a `Disposable` brand a
83
+ // step result cannot serialize. Every branch must carry `turns` — a field
84
+ // this projection drops is a field the budget never sees.
85
+ const result = await stub.runTaskTurn({
86
+ taskId: p.taskId,
87
+ text: p.text,
88
+ identity: p.identity,
89
+ round,
90
+ mode,
91
+ turnsRemaining: limits.maxTurns - turnsUsed,
92
+ push
93
+ });
94
+ if (result.status === "replied")
95
+ return {
96
+ status: result.status,
97
+ reply: result.reply,
98
+ turns: result.turns
99
+ };
100
+ if (result.status === "failed")
101
+ return {
102
+ status: result.status,
103
+ error: result.error,
104
+ turns: result.turns
105
+ };
106
+ return { status: result.status, turns: result.turns };
107
+ });
108
+ turnsUsed += turn.turns;
109
+ if (turn.status === "canceled")
110
+ return;
111
+ if (turn.status === "failed") {
112
+ console.error("[handle-task] round failed", {
113
+ taskId: p.taskId,
114
+ round,
115
+ error: turn.error
116
+ });
117
+ await deliver(p, step, stub, null, deps);
118
+ return;
119
+ }
120
+ if (turn.status === "replied") {
121
+ await deliver(p, step, stub, turn.reply, deps);
122
+ return;
123
+ }
124
+ // Delegated: run this round's DAG, then loop and let the model decide again.
125
+ const executed = await executeDag(p, step, stub, round, push, deps);
126
+ if (executed === "canceled")
127
+ return;
128
+ if (executed === "stuck") {
129
+ await deliver(p, step, stub, null, deps);
130
+ return;
131
+ }
132
+ }
133
+ // Unreachable: a `final` round is handed only `final_reply`, so it either
134
+ // answers or fails, and both return above. Reaching here means a round
135
+ // delegated with no turns left to do it with.
136
+ console.error("[handle-task] round budget exhausted without a reply", {
137
+ taskId: p.taskId
138
+ });
139
+ await deliver(p, step, stub, null, deps);
140
+ }
141
+ /**
142
+ * Drive one round's Subtask DAG to termination, one wave at a time.
143
+ *
144
+ * Bounded by `maxSubtasks + 1` iterations rather than looping until `done`: a
145
+ * wave that reports `ready` always retires at least one active node, so N
146
+ * Subtasks need at most N waves of work plus one final scan to observe `done`.
147
+ * Exhausting the budget means the DAG stopped making progress, which is the same
148
+ * corruption `stuck` names.
149
+ *
150
+ * Every step name carries the round, because step names are durable cache keys:
151
+ * two rounds of the same Task reusing `scan:0` would replay the first round's
152
+ * cached answer into the second.
153
+ */
154
+ async function executeDag(p, step, stub, round, push, deps) {
155
+ for (let wave = 0; wave <= deps.config.maxSubtasks; wave++) {
156
+ // One durable step per wave: `skipBlockedSubtasks` reports cancellation,
157
+ // propagates skips past any branch that just failed, and returns the
158
+ // refreshed DAG projection — one round trip, one consistent answer.
159
+ const scan = await step.do(`scan:${round}:${wave}`, async () => {
160
+ const result = await stub.skipBlockedSubtasks(p.taskId, round);
161
+ return result.canceled
162
+ ? { canceled: true, nodes: [] }
163
+ : { canceled: false, nodes: result.nodes };
164
+ });
165
+ if (scan.canceled) {
166
+ await step.do(`cancel:${round}:${wave}`, async () => {
167
+ await stub.cancelPendingSubtasks(p.taskId);
168
+ });
169
+ return "canceled";
170
+ }
171
+ const decision = selectWave(scan.nodes);
172
+ if (decision.kind === "done")
173
+ return "done";
174
+ if (decision.kind === "stuck") {
175
+ console.error("[handle-task] subtask DAG made no progress", {
176
+ taskId: p.taskId,
177
+ round,
178
+ wave,
179
+ active: decision.active
180
+ });
181
+ return "stuck";
182
+ }
183
+ // Every dependency-ready node runs concurrently — the per-round Subtask
184
+ // maximum is the only fan-out bound. `runBranch` never rejects, so a single
185
+ // branch cannot fast-fail `Promise.all` and strand its siblings' durable
186
+ // results.
187
+ await Promise.all(decision.ids.map((id) => runBranch(p, step, stub, id, push)));
188
+ }
189
+ console.error("[handle-task] subtask DAG exceeded its wave budget", {
190
+ taskId: p.taskId,
191
+ round
192
+ });
193
+ return "stuck";
194
+ }
195
+ /**
196
+ * Run one Subtask to termination as a sequence of durable **chunk** steps, and
197
+ * make sure the row ends terminal either way.
198
+ *
199
+ * `executeSubtaskChunk(id, chunk)` advances one chunk: a single-chunk recipe is
200
+ * `done` on chunk 0 (step `execute:<id>`); a long recipe yields `done: false` and
201
+ * the loop runs the next chunk (`execute:<id>:chunk:<n>`) until it terminates.
202
+ * Each chunk is its own retryable step, and the child resumes from its
203
+ * checkpoint — so no step approaches the platform timeout.
204
+ *
205
+ * It resolves a deterministic branch failure into a `failed` row itself and
206
+ * throws only on a transient fault (retry me) or a lifecycle bug. So a throw that
207
+ * survives every retry — or a run that never terminates within the chunk budget —
208
+ * means nobody is left to resolve this row: fail *the branch* and let the next
209
+ * round disclose the gap, rather than discarding the durable work its siblings
210
+ * finished.
211
+ *
212
+ * What bounds a branch is its Recipe's turns and wall clock, both enforced inside
213
+ * the child, both ending in a report rather than a kill. `MAX_CHUNKS_PER_BRANCH`
214
+ * is a platform backstop held unreachable by design, so the `failSubtask` below
215
+ * should never fire — if it does, a Recipe has been given more turns than the cap
216
+ * allows.
217
+ *
218
+ * Step ids are unique across rounds (SQLite assigns them), so these names need no
219
+ * round prefix.
220
+ */
221
+ async function runBranch(p, step, stub, id, push) {
222
+ try {
223
+ for (let chunk = 0; chunk < MAX_CHUNKS_PER_BRANCH; chunk++) {
224
+ // Chunk 0 keeps the plain `execute:<id>` step name so single-chunk branches
225
+ // replay identically; later chunks append `:chunk:<n>`.
226
+ const stepName = chunk === 0 ? `execute:${id}` : `execute:${id}:chunk:${chunk}`;
227
+ const done = await step.do(stepName, async () => {
228
+ // The DO posts any progress itself; the step returns only the verdict.
229
+ const outcome = await stub.executeSubtaskChunk(id, chunk, push);
230
+ return outcome.done;
231
+ });
232
+ if (done)
233
+ return;
234
+ }
235
+ // Unreachable while every Recipe's `maxTurns` stays under the cap: a chunk
236
+ // that yields always advanced a turn, so the budget summary comes first.
237
+ console.error("[handle-task] subtask exceeded its chunk budget", {
238
+ taskId: p.taskId,
239
+ subtaskId: id
240
+ });
241
+ await step.do(`fail:${id}`, async () => {
242
+ await stub.failSubtask(id, `execution exceeded ${MAX_CHUNKS_PER_BRANCH} chunks`);
243
+ });
244
+ }
245
+ catch (err) {
246
+ console.error("[handle-task] subtask execution exhausted retries", {
247
+ taskId: p.taskId,
248
+ subtaskId: id,
249
+ err: String(err)
250
+ });
251
+ await step.do(`fail:${id}`, async () => {
252
+ await stub.failSubtask(id, `execution exhausted retries: ${String(err)}`);
253
+ });
254
+ }
255
+ }
256
+ /**
257
+ * Persist the terminal Task, then notify the gateway. A null `reply` delivers a
258
+ * `failed` Task with the policy's user-safe text; the diagnostic is already
259
+ * logged.
260
+ *
261
+ * The Task is built **inside** the step and returned, so `notify` posts exactly
262
+ * what was persisted: building it in the body would re-stamp `new Date()` on
263
+ * every replay and post a Task that differs from the stored one.
264
+ *
265
+ * **The guarded write is the cancellation check.** `saveTask` refuses to write a
266
+ * terminal state over a `canceled` row and says so, and it does that read and
267
+ * write in one synchronous pass inside the DO. Probing first and saving second
268
+ * would leave a window — between the two calls, and again between this step and
269
+ * `notify` — in which a `tasks/cancel` lands and the gateway still receives a
270
+ * `completed` callback. Keying the notify on "did the write apply" closes it.
271
+ */
272
+ async function deliver(p, step, stub, reply, deps) {
273
+ const task = await step.do("complete", async () => {
274
+ const terminal = reply !== null
275
+ ? buildCompletedTask(p.taskId, p.contextId, reply)
276
+ : buildFailedTask(p.taskId, p.contextId, deps.policy.copy.taskFailed);
277
+ return (await stub.saveTask(terminal)) ? terminal : null;
278
+ });
279
+ if (!task)
280
+ return;
281
+ // Sweep this Task's managed children now that it is terminal and every `execute`
282
+ // step has unwound. Deleting them here — rather than right after each successful
283
+ // chunk — keeps `deleteSubAgent`'s facet-abort from landing on a still-open
284
+ // `executeChunk` RPC, which telemetry mis-records as a failure. Best-effort and
285
+ // idempotent, so it is safe on replay.
286
+ //
287
+ // Caught, not left to propagate: the terminal Task is already durably saved, so
288
+ // a sweep that still fails once the step's own retries are exhausted must not
289
+ // block `notify` below — the gateway is owed its result regardless of whether
290
+ // this Task's children were reclaimed.
291
+ try {
292
+ await step.do("sweep", async () => {
293
+ await stub.sweepTaskChildren(p.taskId);
294
+ });
295
+ }
296
+ catch (err) {
297
+ console.error("[handle-task] sweep failed after retries", {
298
+ taskId: p.taskId,
299
+ err: String(err)
300
+ });
301
+ }
302
+ // Notify the gateway: a card-key-signed callback POST. Retried by the step on a
303
+ // non-2xx; the terminal messageId is deterministic and the gateway is
304
+ // idempotent/single-use, so retries are safe. If it ultimately fails, the
305
+ // gateway's own reaction backstop clears the pending marker.
306
+ await step.do("notify", async () => {
307
+ await createPushChannel(deps.signingKey, {
308
+ taskId: p.taskId,
309
+ contextId: p.contextId,
310
+ pushUrl: p.pushUrl,
311
+ pushToken: p.pushToken,
312
+ jku: p.jku
313
+ }).deliver(task);
314
+ });
315
+ }
316
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/round/workflow.ts"],"names":[],"mappings":"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"}
@@ -96,7 +96,11 @@ export interface AgentRuntime {
96
96
  }
97
97
  export interface CreateAgentRuntimeOptions {
98
98
  plugins: readonly AgentPlugin[];
99
- config?: CoreConfigOverrides;
99
+ /**
100
+ * Required, because {@link CoreConfigOverrides} requires a model pair and core
101
+ * ships no default for it. Everything else in it stays optional.
102
+ */
103
+ config: CoreConfigOverrides;
100
104
  /**
101
105
  * Verify that every secret and binding the plugins declared is actually
102
106
  * present, given the Worker `env`. Off by default because core cannot know
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/testing/auth.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,6EAA6E;AAC7E,eAAO,MAAM,WAAW,SAAS,CAAC;AAElC,uEAAuE;AACvE,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/testing/auth.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,6EAA6E;AAC7E,eAAO,MAAM,WAAW,SAAS,CAAC;AAElC,uEAAuE;AACvE,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,CA8BjB"}
@@ -1,6 +1,5 @@
1
1
  import { importJWK, SignJWT } from "jose";
2
- import { IDENTITY_CLAIM, TENANT_CLAIM } from "../a2a/verify.js";
3
- import { A2A_RPC_PATH } from "../a2a/card.js";
2
+ import { A2A_JWS_ALG, A2A_RPC_PATH, IDENTITY_CLAIM, TENANT_CLAIM, endpointUrl, jwksUrl } from "@loopingai/a2a-protocol";
4
3
  import { TEST_GATEWAY_PRIVATE_JWK, GATEWAY_ORIGIN, AGENT_ORIGIN } from "./fixtures.js";
5
4
  /** The tenant `makeGatewayToken` authorizes unless a spec says otherwise. */
6
5
  export const TEST_TENANT = "main";
@@ -8,7 +7,7 @@ export const TEST_TENANT = "main";
8
7
  export async function makeGatewayToken(options = {}) {
9
8
  const privateKey = await importJWK(TEST_GATEWAY_PRIVATE_JWK, "EdDSA");
10
9
  const tenant = options.tenant ?? TEST_TENANT;
11
- return new SignJWT({
10
+ return (new SignJWT({
12
11
  [options.identityClaim ?? IDENTITY_CLAIM]: options.identity ?? {
13
12
  key: "custom:1:test-agent",
14
13
  name: "Test Agent",
@@ -20,14 +19,18 @@ export async function makeGatewayToken(options = {}) {
20
19
  // rejected rather than treated as a wildcard.
21
20
  ...(tenant ? { [options.tenantClaim ?? TENANT_CLAIM]: tenant } : {})
22
21
  })
22
+ // Composed from `@loopingai/a2a-protocol`, the same package the real
23
+ // gateway mints with. A fixture that agrees with the verifier but not with
24
+ // the issuer is worse than no fixture: the suite goes green on tokens
25
+ // nothing in production would ever send.
23
26
  .setProtectedHeader({
24
- alg: "EdDSA",
27
+ alg: A2A_JWS_ALG,
25
28
  kid: TEST_GATEWAY_PRIVATE_JWK.kid,
26
- jku: `${GATEWAY_ORIGIN}/.well-known/jwks.json`
29
+ jku: jwksUrl(GATEWAY_ORIGIN)
27
30
  })
28
31
  .setIssuer(options.issuer ?? GATEWAY_ORIGIN)
29
- .setAudience(options.audience ?? `${AGENT_ORIGIN}${A2A_RPC_PATH}`)
32
+ .setAudience(options.audience ?? endpointUrl(AGENT_ORIGIN, A2A_RPC_PATH))
30
33
  .setExpirationTime(options.expiresIn ?? "5m")
31
- .sign(privateKey);
34
+ .sign(privateKey));
32
35
  }
33
36
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/testing/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,cAAc,EACd,YAAY,EACb,MAAM,eAAe,CAAC;AAiCvB,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAElC,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA+B,EAAE;IAEjC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;IAC7C,OAAO,IAAI,OAAO,CAAC;QACjB,CAAC,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI;YAC7D,GAAG,EAAE,qBAAqB;YAC1B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,CAAC;SACf;QACD,2EAA2E;QAC3E,oEAAoE;QACpE,8CAA8C;QAC9C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC;SACC,kBAAkB,CAAC;QAClB,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,wBAAwB,CAAC,GAAG;QACjC,GAAG,EAAE,GAAG,cAAc,wBAAwB;KAC/C,CAAC;SACD,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;SAC3C,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,YAAY,GAAG,YAAY,EAAE,CAAC;SACjE,iBAAiB,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;SAC5C,IAAI,CAAC,UAAU,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/testing/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,OAAO,EACR,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,cAAc,EACd,YAAY,EACb,MAAM,eAAe,CAAC;AAiCvB,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAElC,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA+B,EAAE;IAEjC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;IAC7C,OAAO,CACL,IAAI,OAAO,CAAC;QACV,CAAC,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI;YAC7D,GAAG,EAAE,qBAAqB;YAC1B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,CAAC;SACf;QACD,2EAA2E;QAC3E,oEAAoE;QACpE,8CAA8C;QAC9C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC;QACA,qEAAqE;QACrE,2EAA2E;QAC3E,sEAAsE;QACtE,yCAAyC;SACxC,kBAAkB,CAAC;QAClB,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,wBAAwB,CAAC,GAAG;QACjC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC;KAC7B,CAAC;SACD,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;SAC3C,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;SACxE,iBAAiB,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;SAC5C,IAAI,CAAC,UAAU,CAAC,CACpB,CAAC;AACJ,CAAC"}
@@ -21,6 +21,23 @@
21
21
  */
22
22
  import { type JWK } from "jose";
23
23
  import { type Message, type Task, type TaskState } from "@a2a-js/sdk";
24
+ /**
25
+ * A model pair for specs, and the only place one should be spelled.
26
+ *
27
+ * Core ships no model default — {@link ModelConfig.chatModelId} explains why —
28
+ * so every `resolveConfig` call needs one, including in tests. Without a shared
29
+ * fixture each spec invents its own id, and a suite full of invented ids is a
30
+ * suite that cannot tell "the config requires a model" from "this spec forgot
31
+ * one".
32
+ *
33
+ * The ids are deliberately obvious placeholders rather than real Workers AI
34
+ * models: nothing here reaches a binding, and a real id in a fixture is an
35
+ * invitation to copy it into an agent without deciding anything.
36
+ */
37
+ export declare const TEST_MODELS: {
38
+ readonly chatModelId: "test:primary";
39
+ readonly fallbackChatModelId: "test:fallback";
40
+ };
24
41
  /** The gateway origin used in all tests. Must match vitest.config.ts and the MockAgent setup. */
25
42
  export declare const GATEWAY_ORIGIN = "https://gateway.test";
26
43
  /** Agent origin matching `url.origin` for requests to `http://localhost`. */
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/testing/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAQ,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE5E,iGAAiG;AACjG,eAAO,MAAM,cAAc,yBAAyB,CAAC;AAErD,6EAA6E;AAC7E,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAE/C,kEAAkE;AAClE,eAAO,MAAM,sBAAsB,EAAE,GAAG,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAMvD,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,EAAE,GAAG,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAMzD,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAE7B;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,SAAK,EACd,MAAM,SAAK,GACV,OAAO,CAkBT;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI,CASN"}
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/testing/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAQ,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX,iGAAiG;AACjG,eAAO,MAAM,cAAc,yBAAyB,CAAC;AAErD,6EAA6E;AAC7E,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAE/C,kEAAkE;AAClE,eAAO,MAAM,sBAAsB,EAAE,GAAG,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAMvD,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,EAAE,GAAG,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAMzD,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAE7B;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,SAAK,EACd,MAAM,SAAK,GACV,OAAO,CAkBT;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI,CASN"}
@@ -21,6 +21,23 @@
21
21
  */
22
22
  import {} from "jose";
23
23
  import { Role } from "@a2a-js/sdk";
24
+ /**
25
+ * A model pair for specs, and the only place one should be spelled.
26
+ *
27
+ * Core ships no model default — {@link ModelConfig.chatModelId} explains why —
28
+ * so every `resolveConfig` call needs one, including in tests. Without a shared
29
+ * fixture each spec invents its own id, and a suite full of invented ids is a
30
+ * suite that cannot tell "the config requires a model" from "this spec forgot
31
+ * one".
32
+ *
33
+ * The ids are deliberately obvious placeholders rather than real Workers AI
34
+ * models: nothing here reaches a binding, and a real id in a fixture is an
35
+ * invitation to copy it into an agent without deciding anything.
36
+ */
37
+ export const TEST_MODELS = {
38
+ chatModelId: "test:primary",
39
+ fallbackChatModelId: "test:fallback"
40
+ };
24
41
  /** The gateway origin used in all tests. Must match vitest.config.ts and the MockAgent setup. */
25
42
  export const GATEWAY_ORIGIN = "https://gateway.test";
26
43
  /** Agent origin matching `url.origin` for requests to `http://localhost`. */
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/testing/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAY,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,IAAI,EAA2C,MAAM,aAAa,CAAC;AAE5E,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAErD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE/C,kEAAkE;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAA0B;IAC3D,GAAG,EAAE,SAAS;IACd,CAAC,EAAE,6CAA6C;IAChD,CAAC,EAAE,6CAA6C;IAChD,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAA0B;IAC7D,GAAG,EAAE,SAAS;IACd,CAAC,EAAE,6CAA6C;IAChD,CAAC,EAAE,6CAA6C;IAChD,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,eAAe;CACrB,CAAC;AAEF,oFAAoF;AACpF,MAAM,UAAU,iBAAiB;IAC/B,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,wBAAwB,CAAC;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,KAAgB,EAChB,OAAiB;IAEjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,IAAY,EACZ,SAAS,GAAG,EAAE,EACd,MAAM,GAAG,EAAE;IAEX,OAAO;QACL,SAAS;QACT,SAAS;QACT,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,UAAU;QACrB,KAAK,EAAE;YACL;gBACE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;gBACvC,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,YAAY;aACxB;SACF;QACD,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,EAAE;KACrB,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,QAAQ,CACtB,EAAU,EACV,SAAiB,EACjB,KAAgB,EAChB,OAAiB;IAEjB,OAAO;QACL,EAAE;QACF,SAAS;QACT,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;QAClC,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,SAAS;KACpB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/testing/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAY,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,IAAI,EAA2C,MAAM,aAAa,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,WAAW,EAAE,cAAc;IAC3B,mBAAmB,EAAE,eAAe;CAC5B,CAAC;AAEX,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAErD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE/C,kEAAkE;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAA0B;IAC3D,GAAG,EAAE,SAAS;IACd,CAAC,EAAE,6CAA6C;IAChD,CAAC,EAAE,6CAA6C;IAChD,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAA0B;IAC7D,GAAG,EAAE,SAAS;IACd,CAAC,EAAE,6CAA6C;IAChD,CAAC,EAAE,6CAA6C;IAChD,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,eAAe;CACrB,CAAC;AAEF,oFAAoF;AACpF,MAAM,UAAU,iBAAiB;IAC/B,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,wBAAwB,CAAC;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,KAAgB,EAChB,OAAiB;IAEjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,IAAY,EACZ,SAAS,GAAG,EAAE,EACd,MAAM,GAAG,EAAE;IAEX,OAAO;QACL,SAAS;QACT,SAAS;QACT,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,UAAU;QACrB,KAAK,EAAE;YACL;gBACE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;gBACvC,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,YAAY;aACxB;SACF;QACD,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,EAAE;KACrB,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,QAAQ,CACtB,EAAU,EACV,SAAiB,EACjB,KAAgB,EAChB,OAAiB;IAEjB,OAAO;QACL,EAAE;QACF,SAAS;QACT,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;QAClC,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,SAAS;KACpB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,98 @@
1
+ import type { PlainTask } from "../a2a/task.js";
2
+ /**
3
+ * Drive one A2A turn against a Worker the way a gateway does.
4
+ *
5
+ * Core already shipped every *piece* of this — a token signer, Ed25519 fixtures,
6
+ * a fake session, a scripted model — and no assembly, so every consumer wrote the
7
+ * assembly themselves and got the same four things wrong first: the token's
8
+ * audience is the **endpoint** and not the origin, the tenant claim has to match
9
+ * the tenant in the body, `SendMessage` is refused without a push config, and the
10
+ * gateway's own JWKS has to be reachable or verification fails before anything
11
+ * interesting happens.
12
+ *
13
+ * None of that is a property of any one agent, so none of it should be written
14
+ * more than once.
15
+ *
16
+ * ```ts
17
+ * const harness = createAgentHarness({ worker, env, tenant: "reactive" });
18
+ * using _ = harness.interceptGateway();
19
+ *
20
+ * const accepted = await harness.send("what's the weather?");
21
+ * expect(accepted.status.state).toBe(TaskState.TASK_STATE_SUBMITTED);
22
+ * ```
23
+ *
24
+ * What it covers is the **synchronous accept**: everything from the gateway's
25
+ * bearer token to the `submitted` Task the Worker returns. The turn itself runs
26
+ * in a Workflow the test runtime does not start, so assert on the callbacks with
27
+ * {@link AgentHarness.callbacks} while driving the workflow body directly with a
28
+ * fake `step`.
29
+ */
30
+ /** The minimum of an `ExportedHandler` this harness calls. */
31
+ export interface HarnessWorker<TEnv> {
32
+ fetch(request: Request, env: TEnv): Promise<Response> | Response;
33
+ }
34
+ export interface AgentHarnessOptions<TEnv> {
35
+ /** The Worker module under test — usually `import worker from "@/index"`. */
36
+ worker: HarnessWorker<TEnv>;
37
+ /** The `env` the pool built from `wrangler.jsonc`. */
38
+ env: TEnv;
39
+ /** Which agent to address. Must be a tenant the Worker mounts. */
40
+ tenant?: string;
41
+ /** Where the Worker serves JSON-RPC. Defaults to core's `/a2a`. */
42
+ rpcPath?: string;
43
+ /** The origin the Worker is addressed on. Defaults to the test fixture's. */
44
+ origin?: string;
45
+ }
46
+ /** One push notification the agent POSTed back, already decoded. */
47
+ export interface CapturedCallback {
48
+ /** The `taskId` the callback was about. */
49
+ taskId: string;
50
+ /** The task state, e.g. `TASK_STATE_WORKING`. */
51
+ state: string;
52
+ /** The message text, joined across parts. `""` for a no-reply completion. */
53
+ text: string;
54
+ /** The per-task validation token echoed in the callback header. */
55
+ token: string | null;
56
+ /** The raw decoded body, for anything the projection above drops. */
57
+ body: unknown;
58
+ }
59
+ export interface AgentHarness {
60
+ /** The endpoint a token is minted for — the audience, not the origin. */
61
+ readonly endpoint: string;
62
+ /** The gateway webhook the agent is told to call back on. */
63
+ readonly pushUrl: string;
64
+ /**
65
+ * Send one turn and return the accepted Task.
66
+ *
67
+ * Throws on a JSON-RPC error rather than returning it, so a spec asserting the
68
+ * happy path fails with the agent's own message instead of on a later
69
+ * `undefined`. Use {@link rpc} for the refusal cases.
70
+ */
71
+ send(text: string, options?: {
72
+ taskId?: string;
73
+ }): Promise<PlainTask>;
74
+ /**
75
+ * One raw JSON-RPC call with a valid gateway token, returning the `Response`.
76
+ * For specs about what the edge *refuses*.
77
+ */
78
+ rpc(body: unknown, init?: {
79
+ token?: string;
80
+ }): Promise<Response>;
81
+ /** A valid gateway token for this harness's tenant and endpoint. */
82
+ token(overrides?: {
83
+ tenant?: string;
84
+ }): Promise<string>;
85
+ /**
86
+ * Stub `fetch` so the gateway's JWKS resolves and every push callback is
87
+ * captured instead of leaving the isolate.
88
+ *
89
+ * Returns a disposable — `using _ = harness.interceptGateway()` — that restores
90
+ * the global on scope exit. Anything neither the JWKS nor the webhook 404s, so
91
+ * an unexpected outbound call fails loudly rather than hanging.
92
+ */
93
+ interceptGateway(): Disposable;
94
+ /** Callbacks captured since {@link interceptGateway}, in arrival order. */
95
+ readonly callbacks: CapturedCallback[];
96
+ }
97
+ export declare function createAgentHarness<TEnv>(options: AgentHarnessOptions<TEnv>): AgentHarness;
98
+ //# sourceMappingURL=harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/testing/harness.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,8DAA8D;AAC9D,MAAM,WAAW,aAAa,CAAC,IAAI;IACjC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;CAClE;AAED,MAAM,WAAW,mBAAmB,CAAC,IAAI;IACvC,6EAA6E;IAC7E,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5B,sDAAsD;IACtD,GAAG,EAAE,IAAI,CAAC;IACV,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qEAAqE;IACrE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACtE;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjE,oEAAoE;IACpE,KAAK,CAAC,SAAS,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD;;;;;;;OAOG;IACH,gBAAgB,IAAI,UAAU,CAAC;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;CACxC;AAiCD,wBAAgB,kBAAkB,CAAC,IAAI,EACrC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,GACjC,YAAY,CA8Id"}