@upbeat-works/fisgon 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,9 +40,54 @@ fisgon run signup # replay without LLM
40
40
  ## Install
41
41
 
42
42
  ```bash
43
- npm install fisgon
43
+ npm install @upbeat-works/fisgon
44
44
  ```
45
45
 
46
+ ### Wrangler config
47
+
48
+ Fisgon's agent runs locally via `wrangler dev`. Create a `wrangler.jsonc` in your project root:
49
+
50
+ ```jsonc
51
+ {
52
+ "name": "fisgon-agent",
53
+ "main": "node_modules/@upbeat-works/fisgon/dist/agent/worker.js",
54
+ "compatibility_date": "2025-01-01",
55
+ "durable_objects": {
56
+ "bindings": [{ "name": "AGENT", "class_name": "Agent" }]
57
+ },
58
+ "migrations": [
59
+ { "tag": "v1", "new_sqlite_classes": ["Agent"] }
60
+ ]
61
+ }
62
+ ```
63
+
64
+ Then add a `.dev.vars` file next to it with your API keys. The agent routes LLM calls through Cloudflare AI Gateway, so you'll need:
65
+
66
+ ```
67
+ ACCOUNT_ID=your-cloudflare-account-id
68
+ AI_GATEWAY=your-ai-gateway-name
69
+ AI_GATEWAY_TOKEN=your-api-token
70
+ ```
71
+
72
+ > If your wrangler config lives somewhere other than the project root (e.g. in a monorepo), set `wrangler` in your fisgon config to the relative path.
73
+
74
+ ### Remote agent
75
+
76
+ Instead of running the agent locally, you can deploy it to Cloudflare Workers and connect to it remotely. This skips the local wrangler setup entirely — no `wrangler.jsonc` or `.dev.vars` needed in your project.
77
+
78
+ ```bash
79
+ # via CLI flag
80
+ fisgon start --agent wss://fisgon.example.workers.dev
81
+
82
+ # or in fisgon.config.ts
83
+ export default defineConfig({
84
+ url: 'http://localhost:3000',
85
+ agent: 'wss://fisgon.example.workers.dev',
86
+ })
87
+ ```
88
+
89
+ When `agent` is set, `fisgon start` and `fisgon run` connect directly to the remote Durable Object over WebSocket. Use the `--env` flag to target a specific instance (e.g. `--env staging`, `--env pr-123`).
90
+
46
91
  ## CLI
47
92
 
48
93
  ```bash
@@ -58,12 +103,42 @@ fisgon open <actionId> # Inspect an action's HTML
58
103
  fisgon stop # Stop the session
59
104
  ```
60
105
 
106
+ ### `fisgon start`
107
+
108
+ | Flag | Description |
109
+ |------|-------------|
110
+ | `-p, --port <port>` | Agent port (default: `9876`) |
111
+ | `--agent <url>` | Remote agent URL (skips local wrangler) |
112
+ | `--env <name>` | Durable Object instance name (default: `default`) |
113
+ | `--remote` | Use remote Browser Rendering instead of local Playwright |
114
+ | `--no-browser` | Skip launching browser |
115
+ | `--identity <entries...>` | Session identities as `name:email:password` (can specify multiple) |
116
+
117
+ ### `fisgon do`
118
+
119
+ The `do` command first checks your saved tasks — if any match the instruction, they're replayed automatically. Any remaining instruction is passed to the LLM.
120
+
121
+ ### `fisgon run`
122
+
123
+ | Flag | Description |
124
+ |------|-------------|
125
+ | `--fallback` | Fall back to LLM if a step fails or validation doesn't pass |
126
+ | `--verbose` | Print each step as it executes |
127
+ | `--headless` | Run browser without visible window |
128
+ | `--list` | List all saved tasks and cases |
129
+
130
+ ### `fisgon navigate`
131
+
132
+ | Flag | Description |
133
+ |------|-------------|
134
+ | `--as <identity>` | Log in as a named identity before navigating |
135
+
61
136
  ## Configuration
62
137
 
63
138
  Create a `fisgon.config.ts` (or `.js` / `.mjs`) in your project root:
64
139
 
65
140
  ```typescript
66
- import { defineConfig } from 'fisgon'
141
+ import { defineConfig } from '@upbeat-works/fisgon'
67
142
 
68
143
  export default defineConfig({
69
144
  url: 'http://localhost:3000',
@@ -79,6 +154,7 @@ export default defineConfig({
79
154
  silenceMs: 500, // wait 500ms of silence to close a tick
80
155
  maxMs: 30000, // max tick duration
81
156
  },
157
+ // wrangler: 'packages/app/wrangler.jsonc', // custom wrangler config path
82
158
  })
83
159
  ```
84
160
 
@@ -87,7 +163,7 @@ export default defineConfig({
87
163
  Fisgon can observe your server too. Add a probe to capture SQL queries and custom events:
88
164
 
89
165
  ```typescript
90
- import { createProbe } from 'fisgon/server'
166
+ import { createProbe } from '@upbeat-works/fisgon/server'
91
167
 
92
168
  const probe = createProbe({ url: 'http://localhost:9876' })
93
169
 
@@ -129,7 +205,62 @@ validate:
129
205
  url_contains: /dashboard
130
206
  ```
131
207
 
132
- Tasks support `{{param}}` placeholders and `extract` to capture dynamic values (like magic link URLs from email events) for use in later steps.
208
+ ### Parameters
209
+
210
+ All string values in `args` support `{{param}}` placeholders. Default values are defined in `params` and can be overridden at runtime.
211
+
212
+ ### Extract
213
+
214
+ Steps can extract dynamic values from tick events for use in later steps:
215
+
216
+ ```yaml
217
+ steps:
218
+ - tool: interact
219
+ args:
220
+ action: click
221
+ selector: button[type="submit"]
222
+ - tool: wait_for_tick
223
+ extract:
224
+ callbackUrl: "events[source=email].data.text | match(/http\\S+callback\\S+/)"
225
+ - tool: navigate
226
+ args:
227
+ url: "{{callbackUrl}}"
228
+ ```
229
+
230
+ Supported expression formats:
231
+ - `events[source=X].data.field` — find event by source, traverse path
232
+ - `events[source=X].data.text | match(/regex/)` — find event, extract regex match
233
+ - `data.field.subfield` — simple dot-path traversal
234
+
235
+ ### Validation
236
+
237
+ Tasks can validate the result after all steps complete:
238
+
239
+ ```yaml
240
+ validate:
241
+ url_contains: /dashboard # final URL contains substring
242
+ url_matches: "/users/\\d+" # final URL matches regex
243
+ event_exists: # a matching event was emitted
244
+ source: email
245
+ type: sent
246
+ ```
247
+
248
+ When using `--fallback`, a failed validation causes the LLM to re-attempt the entire task.
249
+
250
+ ## Test cases
251
+
252
+ Cases live in `.fisgon/cases/` and compose multiple tasks into a sequence:
253
+
254
+ ```yaml
255
+ name: full_signup
256
+ description: Complete user signup and email verification
257
+ tasks:
258
+ - signup
259
+ - verify_email
260
+ - complete_profile
261
+ ```
262
+
263
+ Run with `fisgon run full_signup` — tasks execute in order, stopping on the first failure. Use `fisgon run --list` to see all available tasks and cases.
133
264
 
134
265
  ## Architecture
135
266
 
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4DnC,eAAO,MAAM,UAAU,SAuLpB,CAAA"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,eAAO,MAAM,UAAU,SAuLpB,CAAA"}
@@ -1,6 +1,3 @@
1
- import { spawn } from 'node:child_process';
2
- import { existsSync } from 'node:fs';
3
- import { resolve } from 'node:path';
4
1
  import { Command } from 'commander';
5
2
  import { readTaskFile, readCaseFile, listTasks, listCases } from '../../core/task-file.js';
6
3
  import { launchBrowser } from '../browser-setup.js';
@@ -8,46 +5,7 @@ import { loadConfig } from '../config.js';
8
5
  import { connectToAgent } from '../connection.js';
9
6
  import { getRunningSession } from '../session-file.js';
10
7
  import { replayTask } from '../task-runner.js';
11
- function startWrangler(port) {
12
- return new Promise((resolve_, reject) => {
13
- const fisgonRoot = resolve(import.meta.dirname, '../../..');
14
- const wranglerConfigPath = resolve(fisgonRoot, 'wrangler.jsonc');
15
- const devVarsPath = resolve(fisgonRoot, '.dev.vars');
16
- const wranglerArgs = [
17
- 'wrangler',
18
- 'dev',
19
- '--config',
20
- wranglerConfigPath,
21
- '--port',
22
- String(port),
23
- ];
24
- if (existsSync(devVarsPath)) {
25
- wranglerArgs.push('--env-file', devVarsPath);
26
- }
27
- const wrangler = spawn('npx', wranglerArgs, {
28
- stdio: ['pipe', 'pipe', 'pipe'],
29
- env: { ...process.env },
30
- });
31
- const timeout = setTimeout(() => reject(new Error('Wrangler startup timed out')), 30000);
32
- const onReady = (data) => {
33
- if (data.toString().includes('Ready on')) {
34
- clearTimeout(timeout);
35
- resolve_(wrangler);
36
- }
37
- };
38
- wrangler.stderr?.on('data', onReady);
39
- wrangler.stdout?.on('data', onReady);
40
- wrangler.on('error', (err) => {
41
- clearTimeout(timeout);
42
- reject(err);
43
- });
44
- wrangler.on('exit', (code) => {
45
- clearTimeout(timeout);
46
- if (code !== 0)
47
- reject(new Error(`Wrangler exited with code ${code}`));
48
- });
49
- });
50
- }
8
+ import { startWrangler } from '../wrangler.js';
51
9
  export const runCommand = new Command('run')
52
10
  .description('Replay a saved task or test case')
53
11
  .argument('<name>', 'Task or test case name')
@@ -114,7 +72,7 @@ export const runCommand = new Command('run')
114
72
  if (!isRemote) {
115
73
  if (opts.verbose)
116
74
  console.log('Starting Fisgon agent...');
117
- wrangler = await startWrangler(port);
75
+ wrangler = await startWrangler({ port, wrangler: config.wrangler });
118
76
  if (opts.verbose)
119
77
  console.log(`Agent running on port ${port}`);
120
78
  // Give wrangler a moment to be fully ready
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,eAAO,MAAM,YAAY,SA6LtB,CAAA"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,eAAO,MAAM,YAAY,SA6ItB,CAAA"}
@@ -1,12 +1,12 @@
1
- import { spawn } from 'node:child_process';
2
- import { existsSync, writeFileSync } from 'node:fs';
1
+ import { writeFileSync } from 'node:fs';
3
2
  import { tmpdir } from 'node:os';
4
- import { resolve, join } from 'node:path';
3
+ import { join } from 'node:path';
5
4
  import { Command } from 'commander';
6
5
  import { createBrowserHandler } from '../browser-handler.js';
7
6
  import { launchBrowser } from '../browser-setup.js';
8
7
  import { loadConfig } from '../config.js';
9
8
  import { connectToAgent } from '../connection.js';
9
+ import { startWrangler } from '../wrangler.js';
10
10
  export const startCommand = new Command('start')
11
11
  .description('Start a Fisgon test session')
12
12
  .option('-p, --port <port>', 'Agent port (local mode)', '9876')
@@ -45,55 +45,18 @@ export const startCommand = new Command('start')
45
45
  // 1. In local mode, spawn wrangler dev for the agent
46
46
  if (!isRemote) {
47
47
  console.log('Starting Fisgon agent...');
48
- const fisgonRoot = resolve(import.meta.dirname, '../../..');
49
- const wranglerConfigPath = resolve(fisgonRoot, 'wrangler.jsonc');
50
- const devVarsPath = resolve(fisgonRoot, '.dev.vars');
51
- const wranglerArgs = [
52
- 'wrangler',
53
- 'dev',
54
- '--config',
55
- wranglerConfigPath,
56
- '--port',
57
- String(effectivePort),
58
- ];
59
- if (existsSync(devVarsPath)) {
60
- wranglerArgs.push('--env-file', devVarsPath);
61
- }
62
- const wrangler = spawn('npx', wranglerArgs, {
63
- stdio: ['pipe', 'pipe', 'pipe'],
64
- env: { ...process.env },
65
- });
66
- wranglerPid = wrangler.pid;
48
+ let wrangler;
67
49
  try {
68
- await new Promise((waitResolve, reject) => {
69
- const timeout = setTimeout(() => reject(new Error('Wrangler startup timed out')), 30000);
70
- wrangler.stderr?.on('data', (data) => {
71
- if (data.toString().includes('Ready on')) {
72
- clearTimeout(timeout);
73
- waitResolve();
74
- }
75
- });
76
- wrangler.stdout?.on('data', (data) => {
77
- if (data.toString().includes('Ready on')) {
78
- clearTimeout(timeout);
79
- waitResolve();
80
- }
81
- });
82
- wrangler.on('error', (err) => {
83
- clearTimeout(timeout);
84
- reject(err);
85
- });
86
- wrangler.on('exit', (code) => {
87
- clearTimeout(timeout);
88
- if (code !== 0)
89
- reject(new Error(`Wrangler exited with code ${code}`));
90
- });
50
+ wrangler = await startWrangler({
51
+ port: effectivePort,
52
+ wrangler: config.wrangler,
91
53
  });
92
54
  }
93
55
  catch (err) {
94
56
  console.error('Failed to start wrangler:', err);
95
57
  process.exit(1);
96
58
  }
59
+ wranglerPid = wrangler.pid;
97
60
  console.log(`Agent running on port ${effectivePort}`);
98
61
  // Cleanup on exit
99
62
  const cleanup = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type ChildProcess } from 'node:child_process';
2
+ /**
3
+ * Resolve the wrangler config file path.
4
+ *
5
+ * 1. Explicit path from config.wrangler (resolved relative to cwd)
6
+ * 2. wrangler.jsonc or wrangler.json in cwd
7
+ * 3. Throws with setup instructions
8
+ */
9
+ export declare function resolveWranglerConfig(cwd: string, configPath?: string): string;
10
+ /**
11
+ * Spawn `npx wrangler dev` and wait for "Ready on" output.
12
+ * Returns the child process.
13
+ */
14
+ export declare function startWrangler(opts: {
15
+ port: number;
16
+ cwd?: string;
17
+ wrangler?: string;
18
+ }): Promise<ChildProcess>;
19
+ //# sourceMappingURL=wrangler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrangler.d.ts","sourceRoot":"","sources":["../../src/cli/wrangler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI7D;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAuC9E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,OAAO,CAAC,YAAY,CAAC,CA4CxB"}
@@ -0,0 +1,88 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { existsSync } from 'node:fs';
3
+ import { resolve } from 'node:path';
4
+ /**
5
+ * Resolve the wrangler config file path.
6
+ *
7
+ * 1. Explicit path from config.wrangler (resolved relative to cwd)
8
+ * 2. wrangler.jsonc or wrangler.json in cwd
9
+ * 3. Throws with setup instructions
10
+ */
11
+ export function resolveWranglerConfig(cwd, configPath) {
12
+ if (configPath) {
13
+ const resolved = resolve(cwd, configPath);
14
+ if (!existsSync(resolved)) {
15
+ throw new Error(`Wrangler config not found at ${resolved}`);
16
+ }
17
+ return resolved;
18
+ }
19
+ const jsonc = resolve(cwd, 'wrangler.jsonc');
20
+ if (existsSync(jsonc))
21
+ return jsonc;
22
+ const json = resolve(cwd, 'wrangler.json');
23
+ if (existsSync(json))
24
+ return json;
25
+ throw new Error([
26
+ 'No wrangler config found.',
27
+ '',
28
+ 'Fisgon needs a wrangler.jsonc (or wrangler.json) in your project root',
29
+ 'with a Durable Object binding for the Fisgon agent.',
30
+ '',
31
+ 'Create one with at minimum:',
32
+ '',
33
+ ' {',
34
+ ' "name": "fisgon-agent",',
35
+ ' "main": "node_modules/@upbeat-works/fisgon/dist/agent/worker.js",',
36
+ ' "compatibility_date": "2025-01-01",',
37
+ ' "durable_objects": {',
38
+ ' "bindings": [{ "name": "AGENT", "class_name": "Agent" }]',
39
+ ' },',
40
+ ' "migrations": [',
41
+ ' { "tag": "v1", "new_sqlite_classes": ["Agent"] }',
42
+ ' ]',
43
+ ' }',
44
+ '',
45
+ 'Place your API keys in a .dev.vars file next to the wrangler config.',
46
+ ].join('\n'));
47
+ }
48
+ /**
49
+ * Spawn `npx wrangler dev` and wait for "Ready on" output.
50
+ * Returns the child process.
51
+ */
52
+ export function startWrangler(opts) {
53
+ const cwd = opts.cwd ?? process.cwd();
54
+ const configPath = resolveWranglerConfig(cwd, opts.wrangler);
55
+ return new Promise((resolve_, reject) => {
56
+ const wranglerArgs = [
57
+ 'wrangler',
58
+ 'dev',
59
+ '--config',
60
+ configPath,
61
+ '--port',
62
+ String(opts.port),
63
+ ];
64
+ const wrangler = spawn('npx', wranglerArgs, {
65
+ stdio: ['pipe', 'pipe', 'pipe'],
66
+ env: { ...process.env },
67
+ });
68
+ const timeout = setTimeout(() => reject(new Error('Wrangler startup timed out')), 30000);
69
+ const onReady = (data) => {
70
+ if (data.toString().includes('Ready on')) {
71
+ clearTimeout(timeout);
72
+ resolve_(wrangler);
73
+ }
74
+ };
75
+ wrangler.stderr?.on('data', onReady);
76
+ wrangler.stdout?.on('data', onReady);
77
+ wrangler.on('error', (err) => {
78
+ clearTimeout(timeout);
79
+ reject(err);
80
+ });
81
+ wrangler.on('exit', (code) => {
82
+ clearTimeout(timeout);
83
+ if (code !== 0)
84
+ reject(new Error(`Wrangler exited with code ${code}`));
85
+ });
86
+ });
87
+ }
88
+ //# sourceMappingURL=wrangler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrangler.js","sourceRoot":"","sources":["../../src/cli/wrangler.ts"],"names":[],"mappings":"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"}
@@ -70,5 +70,6 @@ export type FisgonConfig = {
70
70
  tick?: TickConfig;
71
71
  port?: number;
72
72
  browserMode?: BrowserMode;
73
+ wrangler?: string;
73
74
  };
74
75
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAKD,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,UAAU,EAAE,CAAA;CACrB,CAAA;AAID,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAID,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAIzD,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAA;IAChD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;SAAE,CAAA;KAAE,GAAG,WAAW,CAAA;IAChH,UAAU,IAAI,IAAI,CAAA;CACnB,CAAA;AAID,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE5C,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAKD,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,UAAU,EAAE,CAAA;CACrB,CAAA;AAID,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAID,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAIzD,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAA;IAChD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;SAAE,CAAA;KAAE,GAAG,WAAW,CAAA;IAChH,UAAU,IAAI,IAAI,CAAA;CACnB,CAAA;AAID,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE5C,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA"}
package/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "@upbeat-works/fisgon",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Low-level primitives for LLM-driven application testing",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./dist/index.js",
8
8
  "./server": "./dist/server.js",
9
- "./adapters/drizzle": "./dist/adapters/drizzle.js",
10
- "./adapters/prisma": "./dist/adapters/prisma.js"
9
+ "./agent": "./dist/agent/worker.js"
11
10
  },
12
11
  "bin": {
13
12
  "fisgon": "dist/cli/index.js"
@@ -46,14 +45,10 @@
46
45
  "wrangler": "^4.4.0"
47
46
  },
48
47
  "peerDependencies": {
49
- "@prisma/client": ">=5.0.0",
50
- "drizzle-orm": ">=0.30.0"
48
+ "wrangler": ">=4.0.0"
51
49
  },
52
50
  "peerDependenciesMeta": {
53
- "drizzle-orm": {
54
- "optional": true
55
- },
56
- "@prisma/client": {
51
+ "wrangler": {
57
52
  "optional": true
58
53
  }
59
54
  },
@@ -1,17 +0,0 @@
1
- import { type ScopedProbe } from '../core/types.js';
2
- type DrizzleDb = {
3
- insert(table: unknown): {
4
- values(...args: unknown[]): unknown;
5
- };
6
- update(table: unknown): {
7
- set(...args: unknown[]): unknown;
8
- };
9
- delete(table: unknown): {
10
- where(...args: unknown[]): unknown;
11
- };
12
- select(...args: unknown[]): unknown;
13
- [key: string]: unknown;
14
- };
15
- export declare function drizzleAdapter<T extends DrizzleDb>(db: T, scoped: ScopedProbe): T;
16
- export {};
17
- //# sourceMappingURL=drizzle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drizzle.d.ts","sourceRoot":"","sources":["../../src/adapters/drizzle.ts"],"names":[],"mappings":"AAAA,OAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEpD,KAAK,SAAS,GAAG;IACf,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;KAAE,CAAA;IAC/D,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;KAAE,CAAA;IAC5D,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;KAAE,CAAA;IAC9D,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAkBD,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,CAyCjF"}
@@ -1,83 +0,0 @@
1
- // Extracts a table name from a Drizzle table object.
2
- // Drizzle tables have a Symbol-keyed property or a `_.name` property.
3
- function getTableName(table) {
4
- if (table && typeof table === 'object') {
5
- const t = table;
6
- // Drizzle v0.30+ uses _.name
7
- if (t._ && typeof t._ === 'object' && 'name' in t._) {
8
- return String(t._.name);
9
- }
10
- // Fallback: try Symbol.for('drizzle:Name')
11
- const sym = Symbol.for('drizzle:Name');
12
- if (sym in t)
13
- return String(t[sym]);
14
- }
15
- return 'unknown';
16
- }
17
- export function drizzleAdapter(db, scoped) {
18
- if (!scoped.active)
19
- return db;
20
- return new Proxy(db, {
21
- get(target, prop, receiver) {
22
- const value = Reflect.get(target, prop, receiver);
23
- if (prop === 'insert' && typeof value === 'function') {
24
- return (table) => {
25
- const tableName = getTableName(table);
26
- const result = value.call(target, table);
27
- return wrapChain(result, 'insert', tableName, scoped);
28
- };
29
- }
30
- if (prop === 'update' && typeof value === 'function') {
31
- return (table) => {
32
- const tableName = getTableName(table);
33
- const result = value.call(target, table);
34
- return wrapChain(result, 'update', tableName, scoped);
35
- };
36
- }
37
- if (prop === 'delete' && typeof value === 'function') {
38
- return (table) => {
39
- const tableName = getTableName(table);
40
- const result = value.call(target, table);
41
- return wrapChain(result, 'delete', tableName, scoped);
42
- };
43
- }
44
- if (prop === 'select' && typeof value === 'function') {
45
- return (...args) => {
46
- const result = value.apply(target, args);
47
- return wrapChain(result, 'select', 'query', scoped);
48
- };
49
- }
50
- return value;
51
- },
52
- });
53
- }
54
- function wrapChain(obj, operation, tableName, scoped) {
55
- if (!obj || typeof obj !== 'object')
56
- return obj;
57
- return new Proxy(obj, {
58
- get(target, prop, receiver) {
59
- const value = Reflect.get(target, prop, receiver);
60
- if (typeof value === 'function') {
61
- return (...args) => {
62
- const result = value.apply(target, args);
63
- // If the result is a thenable (query execution), emit the event
64
- if (result && typeof result === 'object' && 'then' in result) {
65
- scoped.emit({
66
- source: 'sql',
67
- type: operation,
68
- timestamp: Date.now(),
69
- data: { table: tableName },
70
- });
71
- }
72
- // Continue wrapping for chaining
73
- if (result && typeof result === 'object') {
74
- return wrapChain(result, operation, tableName, scoped);
75
- }
76
- return result;
77
- };
78
- }
79
- return value;
80
- },
81
- });
82
- }
83
- //# sourceMappingURL=drizzle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drizzle.js","sourceRoot":"","sources":["../../src/adapters/drizzle.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import { type ScopedProbe } from '../core/types.js';
2
- type PrismaClient = {
3
- $use?(middleware: (params: PrismaMiddlewareParams, next: (params: PrismaMiddlewareParams) => Promise<unknown>) => Promise<unknown>): void;
4
- $extends?(extension: unknown): unknown;
5
- [key: string]: unknown;
6
- };
7
- type PrismaMiddlewareParams = {
8
- model?: string;
9
- action: string;
10
- args: unknown;
11
- dataPath: string[];
12
- runInTransaction: boolean;
13
- };
14
- export declare function prismaAdapter<T extends PrismaClient>(client: T, scoped: ScopedProbe): T;
15
- export {};
16
- //# sourceMappingURL=prisma.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/adapters/prisma.ts"],"names":[],"mappings":"AAAA,OAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEpD,KAAK,YAAY,GAAG;IAClB,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IACzI,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAA;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,CAqDvF"}
@@ -1,69 +0,0 @@
1
- export function prismaAdapter(client, scoped) {
2
- if (!scoped.active)
3
- return client;
4
- // Use Prisma middleware ($use) if available
5
- if (typeof client.$use === 'function') {
6
- client.$use(async (params, next) => {
7
- const timestamp = Date.now();
8
- scoped.emit({
9
- source: 'sql',
10
- type: mapPrismaAction(params.action),
11
- timestamp,
12
- data: {
13
- table: params.model ?? 'unknown',
14
- action: params.action,
15
- },
16
- });
17
- return next(params);
18
- });
19
- return client;
20
- }
21
- // Fallback: use $extends (Prisma 5+)
22
- if (typeof client.$extends === 'function') {
23
- return client.$extends({
24
- query: {
25
- $allModels: {
26
- async $allOperations({ model, operation, args, query }) {
27
- scoped.emit({
28
- source: 'sql',
29
- type: mapPrismaAction(operation),
30
- timestamp: Date.now(),
31
- data: {
32
- table: model,
33
- action: operation,
34
- },
35
- });
36
- return query(args);
37
- },
38
- },
39
- },
40
- });
41
- }
42
- return client;
43
- }
44
- function mapPrismaAction(action) {
45
- switch (action) {
46
- case 'create':
47
- case 'createMany':
48
- return 'insert';
49
- case 'update':
50
- case 'updateMany':
51
- case 'upsert':
52
- return 'update';
53
- case 'delete':
54
- case 'deleteMany':
55
- return 'delete';
56
- case 'findFirst':
57
- case 'findMany':
58
- case 'findUnique':
59
- case 'findFirstOrThrow':
60
- case 'findUniqueOrThrow':
61
- case 'count':
62
- case 'aggregate':
63
- case 'groupBy':
64
- return 'select';
65
- default:
66
- return action;
67
- }
68
- }
69
- //# sourceMappingURL=prisma.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prisma.js","sourceRoot":"","sources":["../../src/adapters/prisma.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,aAAa,CAAyB,MAAS,EAAE,MAAmB;IAClF,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAA;IAEjC,4CAA4C;IAC5C,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAE5B,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;gBACpC,SAAS;gBACT,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;oBAChC,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF,CAAC,CAAA;YAEF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC;YACrB,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAKnD;wBACC,MAAM,CAAC,IAAI,CAAC;4BACV,MAAM,EAAE,KAAK;4BACb,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC;4BAChC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;4BACrB,IAAI,EAAE;gCACJ,KAAK,EAAE,KAAK;gCACZ,MAAM,EAAE,SAAS;6BAClB;yBACF,CAAC,CAAA;wBAEF,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;oBACpB,CAAC;iBACF;aACF;SACF,CAAM,CAAA;IACT,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACf,OAAO,QAAQ,CAAA;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACf,OAAO,QAAQ,CAAA;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB,CAAC;QACzB,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAA;QACjB;YACE,OAAO,MAAM,CAAA;IACjB,CAAC;AACH,CAAC"}