@cef-ai/testing 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/harness/fetch-mock.d.ts +6 -6
- package/dist/harness/fetch-mock.d.ts.map +1 -1
- package/dist/harness/fetch-mock.js.map +1 -1
- package/dist/platform/runtime.d.ts +1 -1
- package/dist/platform/runtime.d.ts.map +1 -1
- package/dist/platform/runtime.js +17 -10
- package/dist/platform/runtime.js.map +1 -1
- package/dist/test-agent.d.ts +10 -4
- package/dist/test-agent.d.ts.map +1 -1
- package/dist/test-agent.js +29 -13
- package/dist/test-agent.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -18,9 +18,11 @@ import { testAgent, testPlatform } from "@cef-ai/testing";
|
|
|
18
18
|
## `testAgent` quickstart
|
|
19
19
|
|
|
20
20
|
`testAgent(AgentClass, opts)` constructs an in-memory simulator around a
|
|
21
|
-
single agent class. It wires `ctx.cubby` to per-alias SQLite,
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
single agent class. It wires `ctx.cubby` to per-alias SQLite,
|
|
22
|
+
`ctx.models[alias]` to stubs, and `ctx.publish` to a collector you can
|
|
23
|
+
assert on, and installs a URL-pattern mock as the global `fetch` during each
|
|
24
|
+
invocation (agents call the global `fetch` directly — there is no
|
|
25
|
+
`ctx.fetch`; likewise they log with `console.*`, not `ctx.log`).
|
|
24
26
|
|
|
25
27
|
```ts
|
|
26
28
|
import { describe, it, expect, afterEach } from "vitest";
|
|
@@ -105,7 +107,7 @@ describe("assistant + app", () => {
|
|
|
105
107
|
publish log.
|
|
106
108
|
- `replay(jsonlPath)` — feed a JSONL fixture of events through the harness.
|
|
107
109
|
- `advanceTime(ms)` / `now()` — manipulate the injected clock.
|
|
108
|
-
- `fetchMock()` — URL-pattern
|
|
110
|
+
- `fetchMock()` — URL-pattern mock installed as the global `fetch` during invocations.
|
|
109
111
|
- `models` — the model handle map attached to `ctx.models`.
|
|
110
112
|
- `dispose()` — release SQLite handles. Idempotent.
|
|
111
113
|
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Tiny URL-pattern fetch mock used by the test harness.
|
|
3
3
|
*
|
|
4
4
|
* Scope is deliberately small: enough to assert that the agent issued the
|
|
5
|
-
* expected outbound HTTP requests and to stub a response body.
|
|
6
|
-
*
|
|
7
|
-
* `
|
|
5
|
+
* expected outbound HTTP requests and to stub a response body. The harness
|
|
6
|
+
* installs this as the global `fetch` for the duration of each agent
|
|
7
|
+
* invocation, so agent code calling `fetch(...)` is intercepted. We don't
|
|
8
|
+
* try to be a general-purpose nock.
|
|
8
9
|
*
|
|
9
10
|
* URL matching:
|
|
10
11
|
* - `string`: matches by exact equality OR by `startsWith` (covers the
|
|
@@ -14,7 +15,6 @@
|
|
|
14
15
|
* Method matching is case-insensitive and optional (omitted means "any
|
|
15
16
|
* method"). Stubs are tried in declaration order; the first match wins.
|
|
16
17
|
*/
|
|
17
|
-
import type { FetchInit } from "@cef-ai/agent-sdk";
|
|
18
18
|
export interface FetchMatcher {
|
|
19
19
|
url: string | RegExp;
|
|
20
20
|
method?: string;
|
|
@@ -36,8 +36,8 @@ export interface FetchMock {
|
|
|
36
36
|
url: string;
|
|
37
37
|
method: string;
|
|
38
38
|
}>;
|
|
39
|
-
/** Drop-in for `
|
|
40
|
-
fetch: (url: string | URL, init?:
|
|
39
|
+
/** Drop-in for the global `fetch` (installed by the harness per invocation). */
|
|
40
|
+
fetch: (url: string | URL, init?: RequestInit) => Promise<Response>;
|
|
41
41
|
}
|
|
42
42
|
export declare function createFetchMock(): FetchMock;
|
|
43
43
|
//# sourceMappingURL=fetch-mock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-mock.d.ts","sourceRoot":"","sources":["../../src/harness/fetch-mock.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fetch-mock.d.ts","sourceRoot":"","sources":["../../src/harness/fetch-mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG;QAC3B,KAAK,EAAE,CACL,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC7B,IAAI,CAAC;KACX,CAAC;IACF,mDAAmD;IACnD,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1C,qDAAqD;IACrD,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,gFAAgF;IAChF,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACrE;AAED,wBAAgB,eAAe,IAAI,SAAS,CA4D3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-mock.js","sourceRoot":"","sources":["../../src/harness/fetch-mock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch-mock.js","sourceRoot":"","sources":["../../src/harness/fetch-mock.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ export interface RuntimeOptions {
|
|
|
44
44
|
* before alias lookup so cubby state stays partitioned.
|
|
45
45
|
*/
|
|
46
46
|
cubbies: Map<string, Map<string, Map<string, TestCubby>>>;
|
|
47
|
-
/** Shared
|
|
47
|
+
/** Shared URL-pattern mock installed as the global `fetch` during invocations. */
|
|
48
48
|
fetchMock: FetchMock;
|
|
49
49
|
/** Shared model handles attached to every agent's `ctx.models`. */
|
|
50
50
|
models: Record<string, ModelHandle | ModelMockHandle>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/platform/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAGV,WAAW,EAEZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,OAAO;IACtB;;;;;;;;OAQG;IACH,MAAM,CACJ,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,MAAM,EACpB,oBAAoB,EAAE,MAAM,EAC5B,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC;IAClC;;;;OAIG;IACH,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1D
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/platform/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAGV,WAAW,EAEZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,OAAO;IACtB;;;;;;;;OAQG;IACH,MAAM,CACJ,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,MAAM,EACpB,oBAAoB,EAAE,MAAM,EAC5B,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC;IAClC;;;;OAIG;IACH,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1D,kFAAkF;IAClF,SAAS,EAAE,SAAS,CAAC;IACrB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;IACtD,8BAA8B;IAC9B,KAAK,EAAE,MAAM,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CA+K3D"}
|
package/dist/platform/runtime.js
CHANGED
|
@@ -49,12 +49,12 @@ export function createRuntime(opts) {
|
|
|
49
49
|
// `@OnClose` is invoked with `(ctx, reason)` per the SDK contract; all
|
|
50
50
|
// other handlers receive `(event, ctx)`. Lifecycle start has just `ctx`.
|
|
51
51
|
if (eventTypeOrLifecycle === "__start__") {
|
|
52
|
-
return await fn.call(instance, ctx);
|
|
52
|
+
return await withMockFetch(() => fn.call(instance, ctx));
|
|
53
53
|
}
|
|
54
54
|
if (eventTypeOrLifecycle === "__close__") {
|
|
55
55
|
const reason = event.payload
|
|
56
56
|
?.reason ?? "closed_by_agent";
|
|
57
|
-
return await fn.call(instance, ctx, reason);
|
|
57
|
+
return await withMockFetch(() => fn.call(instance, ctx, reason));
|
|
58
58
|
}
|
|
59
59
|
// Down-project the vault-sdk `VaultEvent` shape to the agent-sdk
|
|
60
60
|
// `Event` shape for handler dispatch. Agent code is written against
|
|
@@ -64,7 +64,7 @@ export function createRuntime(opts) {
|
|
|
64
64
|
// will be unified in a follow-up — see the agent-sdk Event vs
|
|
65
65
|
// vault-sdk VaultEvent design note.
|
|
66
66
|
const agentEvent = toAgentEvent(event);
|
|
67
|
-
return await fn.call(instance, agentEvent, ctx);
|
|
67
|
+
return await withMockFetch(() => fn.call(instance, agentEvent, ctx));
|
|
68
68
|
},
|
|
69
69
|
};
|
|
70
70
|
/**
|
|
@@ -84,6 +84,20 @@ export function createRuntime(opts) {
|
|
|
84
84
|
payload: event.payload,
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
|
+
// Agent code logs with `console.*` and uses the global `fetch` (ctx no
|
|
88
|
+
// longer wraps them). Install the URL-pattern mock as the global `fetch`
|
|
89
|
+
// for the duration of each handler invocation; restore afterwards
|
|
90
|
+
// (nesting-safe) so the stub never leaks past a dispatch.
|
|
91
|
+
async function withMockFetch(fn) {
|
|
92
|
+
const prev = globalThis.fetch;
|
|
93
|
+
globalThis.fetch = fetchMock.fetch;
|
|
94
|
+
try {
|
|
95
|
+
return await fn();
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
globalThis.fetch = prev;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
87
101
|
/**
|
|
88
102
|
* Build a per-invocation `ctx`. Closes over the vault id + scope/context
|
|
89
103
|
* the event arrived on — `ctx.publish` re-publishes within the same
|
|
@@ -104,7 +118,6 @@ export function createRuntime(opts) {
|
|
|
104
118
|
return { query: c.query.bind(c), exec: c.exec.bind(c) };
|
|
105
119
|
},
|
|
106
120
|
models: models,
|
|
107
|
-
fetch: fetchMock.fetch,
|
|
108
121
|
async publish(type, payload) {
|
|
109
122
|
// Re-enter the publishing user's vault on the same scope/context
|
|
110
123
|
// so peers and the app-side stream both observe handler-published
|
|
@@ -131,12 +144,6 @@ export function createRuntime(opts) {
|
|
|
131
144
|
await v._terminate(job.jobId, reason ?? "closed_by_agent", connection);
|
|
132
145
|
}
|
|
133
146
|
},
|
|
134
|
-
log: {
|
|
135
|
-
info() { },
|
|
136
|
-
warn() { },
|
|
137
|
-
error() { },
|
|
138
|
-
debug() { },
|
|
139
|
-
},
|
|
140
147
|
};
|
|
141
148
|
}
|
|
142
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/platform/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAwDH,MAAM,UAAU,aAAa,CAAC,IAAoB;IAChD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnD,oEAAoE;IACpE,8DAA8D;IAC9D,KAAK,IAAI,CAAC,KAAK,CAAC;IAEhB,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK;YAChE,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAC7B,CAAC;YACF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,yBAAyB,YAAY,+BAA+B,UAAU,CAAC,OAAO,GAAG,CAC1F,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CACb,yCAAyC,YAAY,eAAe,UAAU,CAAC,OAAO,GAAG,CAC1F,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,QAAQ,CAClB,UAAU,EACV,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,CACd,CAAC;YAEF,mEAAmE;YACnE,qEAAqE;YACrE,qBAAqB;YACrB,IAAI,WAA+B,CAAC;YACpC,IAAI,oBAAoB,KAAK,WAAW,EAAE,CAAC;gBACzC,WAAW,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC;YAC5C,CAAC;iBAAM,IAAI,oBAAoB,KAAK,WAAW,EAAE,CAAC;gBAChD,WAAW,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACxD,CAAC;YAED,IAAI,CAAC,WAAW;gBAAE,OAAO;YACzB,MAAM,EAAE,GAAI,QAAoC,CAAC,WAAW,CAAC,CAAC;YAC9D,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,sBAAsB,WAAW,UAAU,oBAAoB,iCAAiC,UAAU,CAAC,OAAO,iBAAiB,YAAY,GAAG,CACnJ,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,yEAAyE;YACzE,IAAI,oBAAoB,KAAK,WAAW,EAAE,CAAC;gBACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/platform/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/test-agent.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - drive `@OnStart` / `@OnClose` lifecycle hooks;
|
|
9
9
|
* - back `ctx.cubby` with per-alias in-memory SQLite (with optional
|
|
10
10
|
* migration directories);
|
|
11
|
-
* -
|
|
11
|
+
* - intercept the global `fetch` with a URL-pattern mock;
|
|
12
12
|
* - back `ctx.models[alias]` with stubs or expectation builders;
|
|
13
13
|
* - thread an injectable clock through everything timestamp-related.
|
|
14
14
|
*
|
|
@@ -60,8 +60,14 @@ export interface TestHarnessOptions {
|
|
|
60
60
|
*/
|
|
61
61
|
export type { PublishedEvent };
|
|
62
62
|
export type { HarnessSnapshot, ReplayResult };
|
|
63
|
-
/**
|
|
64
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Agent class with `@OnEvent` / `@OnStart` / `@OnClose` decorators. The
|
|
65
|
+
* constructor returns `object` rather than `Record<string, unknown>` so that
|
|
66
|
+
* ordinary agent classes (whose instances have specific, non-index-signature
|
|
67
|
+
* members) are accepted without a cast at the call site — the harness reads
|
|
68
|
+
* handler methods off the instance dynamically and narrows internally.
|
|
69
|
+
*/
|
|
70
|
+
export type AgentCtor = new (...args: unknown[]) => object;
|
|
65
71
|
/** Multi-engagement form for `testAgent({ engagements: [...] }, opts)`. */
|
|
66
72
|
export interface TestAgentMultiSpec {
|
|
67
73
|
engagements: Array<{
|
|
@@ -120,7 +126,7 @@ export interface TestHarness {
|
|
|
120
126
|
advanceTime(ms: number): void;
|
|
121
127
|
/** Read the current harness clock. */
|
|
122
128
|
now(): number;
|
|
123
|
-
/** URL-pattern
|
|
129
|
+
/** URL-pattern mock installed as the global `fetch` during invocations. */
|
|
124
130
|
fetchMock(): FetchMock;
|
|
125
131
|
/** Map of model handles attached to `ctx.models`. */
|
|
126
132
|
models: Record<string, ModelHandle | ModelMockHandle>;
|
package/dist/test-agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-agent.d.ts","sourceRoot":"","sources":["../src/test-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnE;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,kEAAkE;IAClE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;IACvD,wEAAwE;IACxE,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"test-agent.d.ts","sourceRoot":"","sources":["../src/test-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/test-agent.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - drive `@OnStart` / `@OnClose` lifecycle hooks;
|
|
9
9
|
* - back `ctx.cubby` with per-alias in-memory SQLite (with optional
|
|
10
10
|
* migration directories);
|
|
11
|
-
* -
|
|
11
|
+
* - intercept the global `fetch` with a URL-pattern mock;
|
|
12
12
|
* - back `ctx.models[alias]` with stubs or expectation builders;
|
|
13
13
|
* - thread an injectable clock through everything timestamp-related.
|
|
14
14
|
*
|
|
@@ -95,20 +95,28 @@ export function testAgent(arg, opts = {}) {
|
|
|
95
95
|
return { query: c.query.bind(c), exec: c.exec.bind(c) };
|
|
96
96
|
},
|
|
97
97
|
models: models,
|
|
98
|
-
fetch: fetchMock.fetch,
|
|
99
98
|
publish: collector.publish,
|
|
100
99
|
settings,
|
|
101
100
|
async close(reason) {
|
|
102
101
|
const picked = pickEngagement();
|
|
103
102
|
await lifecycle.close(picked.instance, ctx, picked.meta, reason ?? "closed_by_agent");
|
|
104
103
|
},
|
|
105
|
-
log: {
|
|
106
|
-
info() { },
|
|
107
|
-
warn() { },
|
|
108
|
-
error() { },
|
|
109
|
-
debug() { },
|
|
110
|
-
},
|
|
111
104
|
};
|
|
105
|
+
// Agent code logs with `console.*` and makes HTTP calls with the global
|
|
106
|
+
// `fetch` (ctx no longer wraps them). Install the URL-pattern mock as the
|
|
107
|
+
// global `fetch` for the duration of each invocation so outbound requests
|
|
108
|
+
// are intercepted/asserted; restore afterwards (nesting-safe) so the stub
|
|
109
|
+
// never leaks past a dispatch.
|
|
110
|
+
async function withMockFetch(fn) {
|
|
111
|
+
const prev = globalThis.fetch;
|
|
112
|
+
globalThis.fetch = fetchMock.fetch;
|
|
113
|
+
try {
|
|
114
|
+
return await fn();
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
globalThis.fetch = prev;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
112
120
|
// ---- Public harness ----------------------------------------------------
|
|
113
121
|
const harness = {
|
|
114
122
|
published: collector.events,
|
|
@@ -121,11 +129,11 @@ export function testAgent(arg, opts = {}) {
|
|
|
121
129
|
},
|
|
122
130
|
async start() {
|
|
123
131
|
const picked = pickEngagement();
|
|
124
|
-
await lifecycle.start(picked.instance, ctx, picked.meta);
|
|
132
|
+
await withMockFetch(() => lifecycle.start(picked.instance, ctx, picked.meta));
|
|
125
133
|
},
|
|
126
134
|
async close(reason) {
|
|
127
135
|
const picked = pickEngagement();
|
|
128
|
-
await lifecycle.close(picked.instance, ctx, picked.meta, reason ?? "closed_by_agent");
|
|
136
|
+
await withMockFetch(() => lifecycle.close(picked.instance, ctx, picked.meta, reason ?? "closed_by_agent"));
|
|
129
137
|
},
|
|
130
138
|
get lifecycle() {
|
|
131
139
|
return {
|
|
@@ -147,7 +155,7 @@ export function testAgent(arg, opts = {}) {
|
|
|
147
155
|
from: input.from,
|
|
148
156
|
});
|
|
149
157
|
const picked = pickEngagement();
|
|
150
|
-
await dispatchEvent(picked.instance, picked.meta, event, ctx);
|
|
158
|
+
await withMockFetch(() => dispatchEvent(picked.instance, picked.meta, event, ctx));
|
|
151
159
|
return collector.events.slice(before);
|
|
152
160
|
},
|
|
153
161
|
async runInCubby(alias, fn) {
|
|
@@ -178,7 +186,11 @@ function normaliseEngagements(arg) {
|
|
|
178
186
|
// Single class shorthand.
|
|
179
187
|
const meta = readMeta(arg);
|
|
180
188
|
const id = meta.id ?? "default";
|
|
181
|
-
const entry = {
|
|
189
|
+
const entry = {
|
|
190
|
+
id,
|
|
191
|
+
instance: new arg(),
|
|
192
|
+
meta,
|
|
193
|
+
};
|
|
182
194
|
const byId = new Map([[id, entry]]);
|
|
183
195
|
return {
|
|
184
196
|
kind: "single",
|
|
@@ -200,7 +212,11 @@ function normaliseEngagements(arg) {
|
|
|
200
212
|
throw new Error(`[testAgent] duplicate engagement id "${e.id}"`);
|
|
201
213
|
}
|
|
202
214
|
const meta = readMeta(e.source);
|
|
203
|
-
byId.set(e.id, {
|
|
215
|
+
byId.set(e.id, {
|
|
216
|
+
id: e.id,
|
|
217
|
+
instance: new e.source(),
|
|
218
|
+
meta,
|
|
219
|
+
});
|
|
204
220
|
}
|
|
205
221
|
const firstId = arg.engagements[0].id;
|
|
206
222
|
const targeting = arg.targeting ?? {
|
package/dist/test-agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-agent.js","sourceRoot":"","sources":["../src/test-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EACL,mBAAmB,GAOpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,sBAAsB,GAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAkB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EACL,aAAa,GAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,eAAe,EACf,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAqB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-agent.js","sourceRoot":"","sources":["../src/test-agent.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cef-ai/testing",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"better-sqlite3": "^11.0.0",
|
|
15
|
-
"@cef-ai/agent-sdk": "1.
|
|
15
|
+
"@cef-ai/agent-sdk": "1.1.0",
|
|
16
16
|
"@cef-ai/vault-sdk": "1.0.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|