gateproof 0.1.0 → 0.2.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 +277 -7
- package/dist/act.d.ts +2 -0
- package/dist/act.d.ts.map +1 -1
- package/dist/act.js +1 -1
- package/dist/act.js.map +1 -1
- package/dist/action-executors.d.ts +10 -0
- package/dist/action-executors.d.ts.map +1 -1
- package/dist/action-executors.js +14 -3
- package/dist/action-executors.js.map +1 -1
- package/dist/assert.d.ts +2 -2
- package/dist/assert.d.ts.map +1 -1
- package/dist/assert.js +1 -1
- package/dist/assert.js.map +1 -1
- package/dist/cloudflare/cli-stream.d.ts.map +1 -1
- package/dist/cloudflare/cli-stream.js +7 -3
- package/dist/cloudflare/cli-stream.js.map +1 -1
- package/dist/constants.d.ts +11 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +11 -0
- package/dist/constants.js.map +1 -0
- package/dist/http-backend.d.ts +23 -0
- package/dist/http-backend.d.ts.map +1 -0
- package/dist/http-backend.js +124 -0
- package/dist/http-backend.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +97 -49
- package/dist/index.js.map +1 -1
- package/dist/observe.d.ts.map +1 -1
- package/dist/observe.js +4 -3
- package/dist/observe.js.map +1 -1
- package/dist/prd/define-prd.d.ts +7 -0
- package/dist/prd/define-prd.d.ts.map +1 -0
- package/dist/prd/define-prd.js +8 -0
- package/dist/prd/define-prd.js.map +1 -0
- package/dist/prd/index.d.ts +5 -0
- package/dist/prd/index.d.ts.map +1 -0
- package/dist/prd/index.js +4 -0
- package/dist/prd/index.js.map +1 -0
- package/dist/prd/runner.d.ts +22 -0
- package/dist/prd/runner.d.ts.map +1 -0
- package/dist/prd/runner.js +221 -0
- package/dist/prd/runner.js.map +1 -0
- package/dist/prd/scope-check.d.ts +28 -0
- package/dist/prd/scope-check.d.ts.map +1 -0
- package/dist/prd/scope-check.js +135 -0
- package/dist/prd/scope-check.js.map +1 -0
- package/dist/prd/types.d.ts +21 -0
- package/dist/prd/types.d.ts.map +1 -0
- package/dist/prd/types.js +2 -0
- package/dist/prd/types.js.map +1 -0
- package/dist/report.d.ts +67 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +51 -0
- package/dist/report.js.map +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -2
- package/dist/utils.js.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +7 -3
- package/dist/validation.js.map +1 -1
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -1,35 +1,252 @@
|
|
|
1
1
|
# gateproof
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Build software in reverse. PRD defines what should exist. Gates verify reality. Agent iterations refine until gates pass.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## What gateproof does
|
|
6
|
+
|
|
7
|
+
gateproof enables **agent iterations** with minimal context overhead.
|
|
8
|
+
|
|
9
|
+
**The workflow:**
|
|
10
|
+
1. PRD defines stories (what should exist)
|
|
11
|
+
2. Gates verify reality (does it work?)
|
|
12
|
+
3. Agent gets PRD + gate failure (minimal context)
|
|
13
|
+
4. Agent fixes, gates re-run
|
|
14
|
+
5. Iterate until all gates pass
|
|
15
|
+
|
|
16
|
+
**Why this works:**
|
|
17
|
+
- PRD is single source of truth (clear intent, minimal context)
|
|
18
|
+
- Gates provide concrete feedback (not vague requirements)
|
|
19
|
+
- Agent gets context only when needed (efficient)
|
|
20
|
+
- Iteration ensures correctness (converges to working code)
|
|
21
|
+
|
|
22
|
+
gateproof **executes gates**. It does not define intent, plans, or workflows. A gate is a test specification: observe logs, run actions, assert results. gateproof runs it and returns evidence.
|
|
23
|
+
|
|
24
|
+
**Authority chain:**
|
|
25
|
+
- **PRD (`prd.ts`)** — authority on intent, order, and dependencies (if you use the PRD runner)
|
|
26
|
+
- **Gate implementations** — authority on how reality is observed
|
|
27
|
+
- **gateproof runtime** — authority on enforcement only
|
|
28
|
+
|
|
29
|
+
gateproof never decides *what* to build. It returns results; your CI/CD decides whether you are allowed to proceed.
|
|
30
|
+
|
|
31
|
+
## Agent Iterations: The Loop
|
|
32
|
+
|
|
33
|
+
The core innovation: agents work from PRD only, gates verify, iterate until correct.
|
|
34
|
+
|
|
35
|
+
**The iteration loop:**
|
|
36
|
+
1. Run PRD → executes gates in dependency order
|
|
37
|
+
2. Gate fails → agent gets: codebase context (e.g., `AGENTS.md`) + failure output
|
|
38
|
+
3. Agent fixes → makes changes to codebase
|
|
39
|
+
4. Loop repeats → re-run PRD, check if gates pass
|
|
40
|
+
5. All gates pass → done
|
|
41
|
+
|
|
42
|
+
**Why minimal context:**
|
|
43
|
+
- Agent starts with PRD only (no full codebase upfront)
|
|
44
|
+
- Agent gets context only when gates fail (just-in-time)
|
|
45
|
+
- PRD stays as authority (what to build)
|
|
46
|
+
- Gates provide concrete feedback (what's wrong)
|
|
47
|
+
|
|
48
|
+
**Example loop script:**
|
|
49
|
+
```bash
|
|
50
|
+
# patterns/prd/agent-iteration-loop.sh
|
|
51
|
+
while true; do
|
|
52
|
+
bun run prd.ts || {
|
|
53
|
+
# Gate failed - agent gets PRD + failure output
|
|
54
|
+
agent --context prd.ts --failure "$(cat gate-output.txt)"
|
|
55
|
+
# Agent fixes, loop continues
|
|
56
|
+
}
|
|
57
|
+
break # All gates passed
|
|
58
|
+
done
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**The guardrails:**
|
|
62
|
+
- Max failures (default: 5) → auto-pause if stuck
|
|
63
|
+
- Git diff check → agent must make changes
|
|
64
|
+
- Pause file → manual control
|
|
65
|
+
|
|
66
|
+
This solves the context management problem: agents don't need full codebase context upfront. They get minimal context (PRD), concrete feedback (gate failures), and iterate until correct.
|
|
67
|
+
|
|
68
|
+
## Stories as gates
|
|
69
|
+
|
|
70
|
+
A PRD (Product Requirements Document) defines stories. Stories are gates. Each story references a gate file. The gate file verifies the story against reality.
|
|
71
|
+
|
|
72
|
+
Reality is the source of truth; gates make it enforceable in CI.
|
|
73
|
+
|
|
74
|
+
### prd.ts example
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
// prd.ts
|
|
78
|
+
import { definePrd } from "gateproof/prd";
|
|
79
|
+
|
|
80
|
+
export const prd = definePrd({
|
|
81
|
+
stories: [
|
|
82
|
+
{
|
|
83
|
+
id: "user-signup",
|
|
84
|
+
title: "User can sign up",
|
|
85
|
+
gateFile: "./gates/user-signup.gate.ts",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "email-verification",
|
|
89
|
+
title: "User receives verification email",
|
|
90
|
+
gateFile: "./gates/email-verification.gate.ts",
|
|
91
|
+
dependsOn: ["user-signup"],
|
|
92
|
+
},
|
|
93
|
+
] as const, // keep story IDs as literal types
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// Make it executable
|
|
97
|
+
if (import.meta.main) {
|
|
98
|
+
const { runPrd } = await import("gateproof/prd");
|
|
99
|
+
const result = await runPrd(prd);
|
|
100
|
+
if (!result.success) {
|
|
101
|
+
if (result.failedStory) console.error(`Failed at: ${result.failedStory.id}`);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
process.exit(0);
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Each story references a gate file. The gate file uses gateproof's API:
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// gates/user-signup.gate.ts
|
|
112
|
+
import { Gate, Act, Assert } from "gateproof";
|
|
113
|
+
import { CloudflareProvider } from "gateproof/cloudflare";
|
|
114
|
+
|
|
115
|
+
export async function run() {
|
|
116
|
+
const provider = CloudflareProvider({
|
|
117
|
+
accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,
|
|
118
|
+
apiToken: process.env.CLOUDFLARE_API_TOKEN!,
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
const result = await Gate.run({
|
|
122
|
+
name: "user-signup",
|
|
123
|
+
observe: provider.observe({ backend: "analytics", dataset: "worker_logs" }),
|
|
124
|
+
act: [Act.browser({ url: "https://app.example.com/signup" })],
|
|
125
|
+
assert: [
|
|
126
|
+
Assert.noErrors(),
|
|
127
|
+
Assert.hasAction("user_created"),
|
|
128
|
+
],
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
return { status: result.status };
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**gateproof does not own your PRD’s intent or state.** If you choose to use `gateproof/prd`, your PRD must match a small capsule shape (`stories[]` with `id/title/gateFile/dependsOn?`). Otherwise, orchestrate gates however you want — gateproof only cares about executing gate files.
|
|
136
|
+
|
|
137
|
+
Stories execute in dependency order. The runner stops on first failure. Progress is not declared. It is proven.
|
|
138
|
+
|
|
139
|
+
## How it works
|
|
140
|
+
|
|
141
|
+
The PRD defines stories. Stories reference gate files. Gate files use gateproof's API. Gates can be enforced in CI before merge/deploy.
|
|
142
|
+
|
|
143
|
+
**The sequence:** PRD story → gate file → gate execution → story marked "done" only when gate passes.
|
|
144
|
+
|
|
145
|
+
**For agent iterations:** PRD → gate fails → agent fixes → gate re-runs → loop until pass.
|
|
146
|
+
|
|
147
|
+
Run your PRD:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
bun run prd.ts
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Run agent iteration loop:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
bash patterns/prd/agent-iteration-loop.sh
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Hardening `prd.ts` (recommended)
|
|
160
|
+
|
|
161
|
+
Treat `prd.ts` like code: typecheck + validate before push + enforce in CI.
|
|
162
|
+
|
|
163
|
+
- **Validate PRD**:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
bun run prd:validate
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
- **Pre-push (default for everyone on your team)**: add to your `prepush` script (Husky calls it).
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"scripts": {
|
|
174
|
+
"prepush": "bun run typecheck && bun run prd:validate && bun test"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
- **CI**: run the validator before running PRD/tests.
|
|
180
|
+
|
|
181
|
+
```yaml
|
|
182
|
+
- name: Validate PRD
|
|
183
|
+
run: bun run prd:validate
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
- **Monorepo**: validate any PRD file by path.
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
bun run scripts/prd-validate.ts packages/api/prd.ts
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Design notes
|
|
193
|
+
|
|
194
|
+
- [Effect and Schema: Gateproof's Foundation](docs/effect-and-schema.md)
|
|
195
|
+
|
|
196
|
+
## Writing good gates (agent-first)
|
|
197
|
+
|
|
198
|
+
Gates can fail loudly. They can also pass on silence if you write weak assertions.
|
|
199
|
+
|
|
200
|
+
- **Always assert at least one positive signal**: `Assert.hasAction(...)` and/or `Assert.hasStage(...)`. If your backend can be silent, add an explicit “evidence must exist” custom assertion.
|
|
201
|
+
- **Don’t rely on absence-only checks**: `Assert.noErrors()` alone can pass if you collect no logs.
|
|
202
|
+
- **Treat observability as part of the system**: your confidence is bounded by what you can observe.
|
|
203
|
+
|
|
204
|
+
## Limits / Non-goals
|
|
205
|
+
|
|
206
|
+
- **Not a planner or orchestrator**: gateproof executes gates; your PRD (or CI) decides what to run and in what context.
|
|
207
|
+
- **Not a truth oracle**: if your backend drops logs, a gate can be wrong. Gateproof can’t fix missing telemetry.
|
|
208
|
+
- **Enforcement is external**: gateproof returns results; CI/CD decides whether to block merge/deploy.
|
|
209
|
+
|
|
210
|
+
## Common objections (and answers)
|
|
211
|
+
|
|
212
|
+
- **"Isn't this just E2E tests?"** Similar goal, different anchor. Gates are evidence-first (logs/telemetry + explicit assertions), not DOM-only. The contract is: observe → act → assert → evidence.
|
|
213
|
+
|
|
214
|
+
- **"What about flaky telemetry?"** Gates don't fix missing telemetry. They make the dependency explicit. If your backend drops logs, a gate can be wrong — but you'll know immediately, not in production.
|
|
215
|
+
|
|
216
|
+
- **"Isn't this overhead?"** It can be. The pitch isn't "gate everything." It's "gate the few transitions that are expensive to get wrong." Start with one critical path.
|
|
217
|
+
|
|
218
|
+
- **"Will this lock us in?"** Gates are just TypeScript files. If you stop using gateproof, you keep the scripts and the intent. No vendor lock-in.
|
|
6
219
|
|
|
7
220
|
## Quick Start
|
|
8
221
|
|
|
222
|
+
The API is minimal: three concepts (Gate, Act, Assert). Here's a gate:
|
|
223
|
+
|
|
9
224
|
```typescript
|
|
10
225
|
import { Gate, Act, Assert } from "gateproof";
|
|
11
226
|
import { CloudflareProvider } from "gateproof/cloudflare";
|
|
12
227
|
|
|
13
228
|
const provider = CloudflareProvider({
|
|
14
229
|
accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,
|
|
15
|
-
apiToken: process.env.CLOUDFLARE_API_TOKEN
|
|
230
|
+
apiToken: process.env.CLOUDFLARE_API_TOKEN!,
|
|
16
231
|
});
|
|
17
232
|
|
|
18
233
|
const result = await Gate.run({
|
|
234
|
+
name: "api-health-check",
|
|
19
235
|
observe: provider.observe({ backend: "analytics", dataset: "worker_logs" }),
|
|
20
236
|
act: [Act.browser({ url: "https://my-worker.workers.dev" })],
|
|
21
|
-
assert: [Assert.noErrors(), Assert.hasAction("request_received")]
|
|
237
|
+
assert: [Assert.noErrors(), Assert.hasAction("request_received")],
|
|
22
238
|
});
|
|
23
239
|
|
|
24
240
|
if (result.status !== "success") process.exit(1);
|
|
25
241
|
```
|
|
26
242
|
|
|
27
|
-
|
|
243
|
+
This gate is a story verification. The PRD points at it.
|
|
28
244
|
|
|
29
245
|
## Core API
|
|
30
246
|
|
|
31
247
|
### Gate.run(spec)
|
|
32
248
|
Run a gate. Returns a result with status, logs, and evidence.
|
|
249
|
+
`spec.name` is optional metadata for labeling a gate.
|
|
33
250
|
|
|
34
251
|
### Actions
|
|
35
252
|
```typescript
|
|
@@ -63,6 +280,42 @@ Assert.custom("name", fn) // Custom: (logs) => boolean
|
|
|
63
280
|
}
|
|
64
281
|
```
|
|
65
282
|
|
|
283
|
+
## PRD Runner
|
|
284
|
+
|
|
285
|
+
gateproof provides a PRD runner that executes stories in dependency order:
|
|
286
|
+
|
|
287
|
+
```typescript
|
|
288
|
+
import { definePrd, runPrd } from "gateproof/prd";
|
|
289
|
+
|
|
290
|
+
const prd = definePrd({
|
|
291
|
+
stories: [
|
|
292
|
+
{
|
|
293
|
+
id: "story-1",
|
|
294
|
+
title: "First story",
|
|
295
|
+
gateFile: "./gates/story-1.gate.ts",
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
id: "story-2",
|
|
299
|
+
title: "Second story",
|
|
300
|
+
gateFile: "./gates/story-2.gate.ts",
|
|
301
|
+
dependsOn: ["story-1"],
|
|
302
|
+
},
|
|
303
|
+
] as const, // keep story IDs as literal types
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
const result = await runPrd(prd);
|
|
307
|
+
if (!result.success) {
|
|
308
|
+
console.error(`Failed at: ${result.failedStory?.id}`);
|
|
309
|
+
process.exit(1);
|
|
310
|
+
}
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
The runner:
|
|
314
|
+
- Validates dependencies (unknown IDs and cycles throw)
|
|
315
|
+
- Topologically sorts stories by `dependsOn`
|
|
316
|
+
- Executes gates in order
|
|
317
|
+
- **Stops on first failure**
|
|
318
|
+
|
|
66
319
|
## Plug Your Backend
|
|
67
320
|
|
|
68
321
|
gateproof works with any observability backend. Just implement the `Backend` interface:
|
|
@@ -85,7 +338,7 @@ See `patterns/` for examples including:
|
|
|
85
338
|
```typescript
|
|
86
339
|
const provider = CloudflareProvider({ accountId, apiToken });
|
|
87
340
|
|
|
88
|
-
// Analytics Engine
|
|
341
|
+
// Analytics Engine
|
|
89
342
|
provider.observe({ backend: "analytics", dataset: "worker_logs" })
|
|
90
343
|
|
|
91
344
|
// Workers Logs API
|
|
@@ -102,10 +355,27 @@ See `patterns/` for complete examples:
|
|
|
102
355
|
- `patterns/cloudflare/` - Cloudflare-specific patterns
|
|
103
356
|
- `patterns/ci-cd/` - CI/CD integration
|
|
104
357
|
- `patterns/advanced/` - Advanced patterns
|
|
358
|
+
- `patterns/prd/` - PRD-as-code + agent iteration loop examples
|
|
359
|
+
- `patterns/agent-first/` - Spec interview → PRD stories (agent-first)
|
|
360
|
+
- `examples/hello-world-agent/` - Minimal agent with 5 tools + end-to-end gates
|
|
361
|
+
|
|
362
|
+
Run the hello-world agent example (requires `OPENCODE_ZEN_API_KEY` and network access to `opencode.ai`):
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
export OPENCODE_ZEN_API_KEY="your_key_here"
|
|
366
|
+
bun run examples/hello-world-agent/prd.ts
|
|
367
|
+
```
|
|
105
368
|
|
|
106
369
|
## CI/CD
|
|
107
370
|
|
|
108
|
-
gateproof
|
|
371
|
+
gateproof enforces gates in CI/CD. See `patterns/ci-cd/github-actions.ts` for examples.
|
|
372
|
+
|
|
373
|
+
Run your PRD in CI:
|
|
374
|
+
|
|
375
|
+
```yaml
|
|
376
|
+
- name: Run PRD
|
|
377
|
+
run: bun run prd.ts
|
|
378
|
+
```
|
|
109
379
|
|
|
110
380
|
## Requirements
|
|
111
381
|
|
package/dist/act.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export type Action = {
|
|
|
13
13
|
_tag: "Exec";
|
|
14
14
|
command: string;
|
|
15
15
|
cwd?: string;
|
|
16
|
+
timeoutMs?: number;
|
|
16
17
|
};
|
|
17
18
|
export declare namespace Act {
|
|
18
19
|
function deploy(config: {
|
|
@@ -26,6 +27,7 @@ export declare namespace Act {
|
|
|
26
27
|
function wait(ms: number): Action;
|
|
27
28
|
function exec(command: string, opts?: {
|
|
28
29
|
cwd?: string;
|
|
30
|
+
timeoutMs?: number;
|
|
29
31
|
}): Action;
|
|
30
32
|
}
|
|
31
33
|
//# sourceMappingURL=act.d.ts.map
|
package/dist/act.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,yBAAiB,GAAG,CAAC;IACnB,SAAgB,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAEzD;IAED,SAAgB,OAAO,CAAC,MAAM,EAAE;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,MAAM,CAOT;IAED,SAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEvC;IAED,SAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAEzF;CACF"}
|
package/dist/act.js
CHANGED
package/dist/act.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act.js","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAQA,MAAM,KAAW,GAAG,CAyBnB;AAzBD,WAAiB,GAAG;IAClB,SAAgB,MAAM,CAAC,MAA0B;QAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACnD,CAAC;IAFe,UAAM,SAErB,CAAA;IAED,SAAgB,OAAO,CAAC,MAIvB;QACC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;SAC9B,CAAC;IACJ,CAAC;IAXe,WAAO,UAWtB,CAAA;IAED,SAAgB,IAAI,CAAC,EAAU;QAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC9B,CAAC;IAFe,QAAI,OAEnB,CAAA;IAED,SAAgB,IAAI,CAAC,OAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"act.js","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAQA,MAAM,KAAW,GAAG,CAyBnB;AAzBD,WAAiB,GAAG;IAClB,SAAgB,MAAM,CAAC,MAA0B;QAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACnD,CAAC;IAFe,UAAM,SAErB,CAAA;IAED,SAAgB,OAAO,CAAC,MAIvB;QACC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;SAC9B,CAAC;IACJ,CAAC;IAXe,WAAO,UAWtB,CAAA;IAED,SAAgB,IAAI,CAAC,EAAU;QAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC9B,CAAC;IAFe,QAAI,OAEnB,CAAA;IAED,SAAgB,IAAI,CAAC,OAAe,EAAE,IAA2C;QAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC/E,CAAC;IAFe,QAAI,OAEnB,CAAA;AACH,CAAC,EAzBgB,GAAG,KAAH,GAAG,QAyBnB"}
|
|
@@ -6,6 +6,16 @@ export interface ActionExecutor {
|
|
|
6
6
|
}
|
|
7
7
|
export declare const WaitExecutor: ActionExecutor;
|
|
8
8
|
export declare const DeployExecutor: ActionExecutor;
|
|
9
|
+
/**
|
|
10
|
+
* Executes shell commands.
|
|
11
|
+
*
|
|
12
|
+
* **SECURITY WARNING**: Commands are executed with `shell: true`, which means
|
|
13
|
+
* shell interpretation occurs. The `validateCommand` function blocks dangerous
|
|
14
|
+
* characters, but this executor should only be used with trusted input.
|
|
15
|
+
*
|
|
16
|
+
* For untrusted input, consider using `execFile` with explicit argument arrays
|
|
17
|
+
* instead of shell execution.
|
|
18
|
+
*/
|
|
9
19
|
export declare const ExecExecutor: ActionExecutor;
|
|
10
20
|
export declare const BrowserExecutor: ActionExecutor;
|
|
11
21
|
export declare function getActionExecutor(action: Action): ActionExecutor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-executors.d.ts","sourceRoot":"","sources":["../src/action-executors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"action-executors.d.ts","sourceRoot":"","sources":["../src/action-executors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,YAAY,EAAE,cAU1B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cA+B5B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,EAAE,cA+B1B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cA2C7B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAahE"}
|
package/dist/action-executors.js
CHANGED
|
@@ -42,6 +42,16 @@ export const DeployExecutor = {
|
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Executes shell commands.
|
|
47
|
+
*
|
|
48
|
+
* **SECURITY WARNING**: Commands are executed with `shell: true`, which means
|
|
49
|
+
* shell interpretation occurs. The `validateCommand` function blocks dangerous
|
|
50
|
+
* characters, but this executor should only be used with trusted input.
|
|
51
|
+
*
|
|
52
|
+
* For untrusted input, consider using `execFile` with explicit argument arrays
|
|
53
|
+
* instead of shell execution.
|
|
54
|
+
*/
|
|
45
55
|
export const ExecExecutor = {
|
|
46
56
|
execute(action) {
|
|
47
57
|
if (action._tag !== "Exec") {
|
|
@@ -68,7 +78,7 @@ export const ExecExecutor = {
|
|
|
68
78
|
});
|
|
69
79
|
},
|
|
70
80
|
catch: (e) => new GateError({ cause: e })
|
|
71
|
-
}).pipe(Effect.timeout(
|
|
81
|
+
}).pipe(Effect.timeout(`${action.timeoutMs ?? 30000} millis`), Effect.retry(Schedule.exponential("100 millis").pipe(Schedule.compose(Schedule.recurs(3)))), Effect.catchTag("TimeoutException", (e) => Effect.fail(new GateError({ cause: e }))));
|
|
72
82
|
});
|
|
73
83
|
}
|
|
74
84
|
};
|
|
@@ -83,7 +93,8 @@ export const BrowserExecutor = {
|
|
|
83
93
|
try: async () => {
|
|
84
94
|
try {
|
|
85
95
|
const pw = await import("playwright");
|
|
86
|
-
|
|
96
|
+
const browser = await pw.chromium.launch({ headless: action.headless });
|
|
97
|
+
return browser;
|
|
87
98
|
}
|
|
88
99
|
catch (e) {
|
|
89
100
|
throw new Error(`Playwright not available: ${e instanceof Error ? e.message : String(e)}`);
|
|
@@ -118,7 +129,7 @@ export function getActionExecutor(action) {
|
|
|
118
129
|
case "Browser":
|
|
119
130
|
return BrowserExecutor;
|
|
120
131
|
default:
|
|
121
|
-
throw new Error(
|
|
132
|
+
throw new Error("Unknown action type");
|
|
122
133
|
}
|
|
123
134
|
}
|
|
124
135
|
//# sourceMappingURL=action-executors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-executors.js","sourceRoot":"","sources":["../src/action-executors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"action-executors.js","sourceRoot":"","sources":["../src/action-executors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAMhF,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,OAAO,CAAC,MAAM;QACZ,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;YACzC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,OAAO,CAAC,MAAM;QACZ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,KAAK,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBACvB,GAAG,EAAE,KAAK,IAAI,EAAE;oBACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;oBACrD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE;4BACzC,KAAK,EAAE,KAAK;4BACZ,KAAK,EAAE,SAAS;4BAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;yBACxB,CAAC,CAAC;wBACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;4BACxB,IAAI,IAAI,KAAK,CAAC;gCAAE,OAAO,EAAE,CAAC;;gCACrB,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC,CAAC;wBAChE,CAAC,CAAC,CAAC;wBACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC3B,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aAC1C,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACzF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACrF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,OAAO,CAAC,MAAM;QACZ,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBACvB,GAAG,EAAE,KAAK,IAAI,EAAE;oBACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;oBACrD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;wBACrE,IAAI,MAAM,GAAG,EAAE,CAAC;wBAChB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;4BAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC5B,CAAC,CAAC,CAAC;wBACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;4BACxB,IAAI,IAAI,KAAK,CAAC;gCAAE,OAAO,EAAE,CAAC;;gCACrB,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;wBAC3F,CAAC,CAAC,CAAC;wBACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC3B,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aAC1C,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,SAAS,CAAC,EACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3F,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACrF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,OAAO,CAAC,MAAM;QACZ,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAC7B,MAAM,CAAC,UAAU,CAAC;gBAChB,GAAG,EAAE,KAAK,IAAI,EAAE;oBACd,IAAI,CAAC;wBACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;wBACtC,MAAM,OAAO,GAAY,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACjF,OAAO,OAAO,CAAC;oBACjB,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7F,CAAC;gBACH,CAAC;gBACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aAC1C,CAAC,EACF,CAAC,OAAO,EAAE,EAAE,CACV,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;oBACpC,GAAG,EAAE,GAAG,EAAE,CAAE,OAAmB,CAAC,OAAO,EAAE;oBACzC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBAC1C,CAAC,CAAC;gBACH,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;oBACvB,GAAG,EAAE,GAAG,EAAE,CAAE,IAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC1C,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBAC1C,CAAC,CAAC;gBACH,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,SAAS,CAAC,CAAC;YACzD,CAAC,CAAC,EACJ,CAAC,OAAO,EAAE,EAAE,CACV,MAAM,CAAC,UAAU,CAAC;gBAChB,GAAG,EAAE,GAAG,EAAE,CAAE,OAAmB,CAAC,KAAK,EAAE;gBACvC,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;aACvB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC,IAAI,CACJ,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,EAC3D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACrF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC;QACzB;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
package/dist/assert.d.ts
CHANGED
|
@@ -25,14 +25,14 @@ export type Assertion = {
|
|
|
25
25
|
stage: string;
|
|
26
26
|
} | {
|
|
27
27
|
_tag: "Custom";
|
|
28
|
-
fn: (logs: Log[]) => boolean
|
|
28
|
+
fn: (logs: Log[]) => boolean | Promise<boolean>;
|
|
29
29
|
name: string;
|
|
30
30
|
};
|
|
31
31
|
export declare namespace Assert {
|
|
32
32
|
function noErrors(): Assertion;
|
|
33
33
|
function hasAction(action: string): Assertion;
|
|
34
34
|
function hasStage(stage: string): Assertion;
|
|
35
|
-
function custom(name: string, fn: (logs: Log[]) => boolean): Assertion;
|
|
35
|
+
function custom(name: string, fn: (logs: Log[]) => boolean | Promise<boolean>): Assertion;
|
|
36
36
|
function run(assertions: Assertion[], logs: Log[]): Effect.Effect<void, AssertionFailed | AssertionAggregateFailed>;
|
|
37
37
|
}
|
|
38
38
|
export {};
|
package/dist/assert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;;;;;;;AAEnC,qBAAa,eAAgB,SAAQ,oBAMpC;CAAG;;;;;;AAEJ,qBAAa,wBAAyB,SAAQ,6BAK7C;CAAG;AAEJ,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;;;;;;;AAEnC,qBAAa,eAAgB,SAAQ,oBAMpC;CAAG;;;;;;AAEJ,qBAAa,wBAAyB,SAAQ,6BAK7C;CAAG;AAEJ,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,yBAAiB,MAAM,CAAC;IACtB,SAAgB,QAAQ,IAAI,SAAS,CAEpC;IAED,SAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAEnD;IAED,SAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEjD;IAED,SAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAC9C,SAAS,CAEX;IAED,SAAgB,GAAG,CACjB,UAAU,EAAE,SAAS,EAAE,EACvB,IAAI,EAAE,GAAG,EAAE,GACV,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,wBAAwB,CAAC,CA8DjE;CACF"}
|
package/dist/assert.js
CHANGED
|
@@ -64,7 +64,7 @@ export var Assert;
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
else if (assertion._tag === "Custom") {
|
|
67
|
-
const passed = assertion.fn(logs);
|
|
67
|
+
const passed = yield* Effect.promise(() => Promise.resolve(assertion.fn(logs)));
|
|
68
68
|
if (!passed) {
|
|
69
69
|
failures.push(new AssertionFailed({
|
|
70
70
|
assertion: assertion.name,
|
package/dist/assert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert.js","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGxC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CACxE,iBAAiB,EACjB;IACE,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,OAAO;CACxB,CACF;CAAG;AAEJ,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;CAC3D,CACF;CAAG;AAQJ,MAAM,KAAW,MAAM,CAsFtB;AAtFD,WAAiB,MAAM;IACrB,SAAgB,QAAQ;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IAFe,eAAQ,WAEvB,CAAA;IAED,SAAgB,SAAS,CAAC,MAAc;QACtC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;IAFe,gBAAS,YAExB,CAAA;IAED,SAAgB,QAAQ,CAAC,KAAa;QACpC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAFe,eAAQ,WAEvB,CAAA;IAED,SAAgB,MAAM,CACpB,IAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"assert.js","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGxC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CACxE,iBAAiB,EACjB;IACE,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,OAAO;CACxB,CACF;CAAG;AAEJ,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;CAC3D,CACF;CAAG;AAQJ,MAAM,KAAW,MAAM,CAsFtB;AAtFD,WAAiB,MAAM;IACrB,SAAgB,QAAQ;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IAFe,eAAQ,WAEvB,CAAA;IAED,SAAgB,SAAS,CAAC,MAAc;QACtC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;IAFe,gBAAS,YAExB,CAAA;IAED,SAAgB,QAAQ,CAAC,KAAa;QACpC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAFe,eAAQ,WAEvB,CAAA;IAED,SAAgB,MAAM,CACpB,IAAY,EACZ,EAA+C;QAE/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtC,CAAC;IALe,aAAM,SAKrB,CAAA;IAED,SAAgB,GAAG,CACjB,UAAuB,EACvB,IAAW;QAEX,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,MAAM,QAAQ,GAAsB,EAAE,CAAC;YAEvC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;oBACnE,IAAI,QAAQ,EAAE,CAAC;wBACb,QAAQ,CAAC,IAAI,CACX,IAAI,eAAe,CAAC;4BAClB,SAAS,EAAE,UAAU;4BACrB,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;yBAC7B,CAAC,CACH,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,QAAQ,CAAC,IAAI,CACX,IAAI,eAAe,CAAC;4BAClB,SAAS,EAAE,WAAW;4BACtB,OAAO,EAAE;gCACP,OAAO,EAAE,SAAS,CAAC,MAAM;gCACzB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;6BAChD;yBACF,CAAC,CACH,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;oBAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,QAAQ,CAAC,IAAI,CACX,IAAI,eAAe,CAAC;4BAClB,SAAS,EAAE,UAAU;4BACrB,OAAO,EAAE;gCACP,OAAO,EAAE,SAAS,CAAC,KAAK;gCACxB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;6BAC/C;yBACF,CAAC,CACH,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACvC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChF,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,QAAQ,CAAC,IAAI,CACX,IAAI,eAAe,CAAC;4BAClB,SAAS,EAAE,SAAS,CAAC,IAAI;4BACzB,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;yBAC1B,CAAC,CACH,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAjEe,UAAG,MAiElB,CAAA;AACH,CAAC,EAtFgB,MAAM,KAAN,MAAM,QAsFtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-stream.d.ts","sourceRoot":"","sources":["../../src/cloudflare/cli-stream.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0E,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAElH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"cli-stream.d.ts","sourceRoot":"","sources":["../../src/cloudflare/cli-stream.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0E,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAElH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8BD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,GACtB,OAAO,CAiFT"}
|
|
@@ -11,10 +11,14 @@ function parseLogLine(line) {
|
|
|
11
11
|
if (typeof msg === "string") {
|
|
12
12
|
const innerResult = yield* Effect.try({
|
|
13
13
|
try: () => JSON.parse(msg),
|
|
14
|
-
catch: () =>
|
|
14
|
+
catch: () => createObservabilityError(new Error("Failed to parse inner JSON"))
|
|
15
15
|
}).pipe(Effect.either);
|
|
16
|
-
if (Either.isRight(innerResult)) {
|
|
17
|
-
|
|
16
|
+
if (Either.isRight(innerResult) && innerResult.right && typeof innerResult.right === "object") {
|
|
17
|
+
const merged = {
|
|
18
|
+
...parsed,
|
|
19
|
+
...innerResult.right
|
|
20
|
+
};
|
|
21
|
+
return merged;
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
24
|
return parsed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-stream.js","sourceRoot":"","sources":["../../src/cloudflare/cli-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAsB,wBAAwB,EAAE,wBAAwB,EAAgB,MAAM,YAAY,CAAC;AAOlH,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"cli-stream.js","sourceRoot":"","sources":["../../src/cloudflare/cli-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const DEFAULT_IDLE_MS = 3000;
|
|
2
|
+
export declare const DEFAULT_MAX_MS = 15000;
|
|
3
|
+
export declare const MAX_LOG_BUFFER = 50000;
|
|
4
|
+
export declare const LOG_BUFFER_CAPACITY = 1000;
|
|
5
|
+
export declare const HTTP_DEFAULT_POLL_INTERVAL_MS = 1000;
|
|
6
|
+
export declare const HTTP_DEFAULT_TIMEOUT_MS = 5000;
|
|
7
|
+
export declare const HTTP_MAX_RESPONSE_SIZE_BYTES: number;
|
|
8
|
+
export declare const QUEUE_TAKE_TIMEOUT_MS = 100;
|
|
9
|
+
export declare const QUEUE_DRAIN_LIMIT = 100;
|
|
10
|
+
export declare const QUEUE_DRAIN_TIMEOUT_MS = 10;
|
|
11
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,eAAO,MAAM,cAAc,QAAS,CAAC;AACrC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAClD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,4BAA4B,QAAmB,CAAC;AAE7D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,sBAAsB,KAAK,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const DEFAULT_IDLE_MS = 3000;
|
|
2
|
+
export const DEFAULT_MAX_MS = 15000;
|
|
3
|
+
export const MAX_LOG_BUFFER = 50_000;
|
|
4
|
+
export const LOG_BUFFER_CAPACITY = 1000;
|
|
5
|
+
export const HTTP_DEFAULT_POLL_INTERVAL_MS = 1000;
|
|
6
|
+
export const HTTP_DEFAULT_TIMEOUT_MS = 5000;
|
|
7
|
+
export const HTTP_MAX_RESPONSE_SIZE_BYTES = 10 * 1024 * 1024;
|
|
8
|
+
export const QUEUE_TAKE_TIMEOUT_MS = 100;
|
|
9
|
+
export const QUEUE_DRAIN_LIMIT = 100;
|
|
10
|
+
export const QUEUE_DRAIN_TIMEOUT_MS = 10;
|
|
11
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ObserveResource } from "./observe";
|
|
2
|
+
export interface HttpObserveConfig {
|
|
3
|
+
url: string;
|
|
4
|
+
method?: string;
|
|
5
|
+
headers?: Record<string, string>;
|
|
6
|
+
body?: string;
|
|
7
|
+
pollInterval?: number;
|
|
8
|
+
/**
|
|
9
|
+
* Request timeout in milliseconds. Defaults to 5000.
|
|
10
|
+
*/
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Maximum allowed response size in bytes. Defaults to 10MB.
|
|
14
|
+
* If Content-Length exceeds this, the body is not read and an error log is emitted instead.
|
|
15
|
+
*/
|
|
16
|
+
maxResponseSizeBytes?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates an observe resource that polls an HTTP endpoint and captures responses as logs.
|
|
20
|
+
* This gives agents visibility into what the endpoint is returning.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createHttpObserveResource(config: HttpObserveConfig): ObserveResource;
|
|
23
|
+
//# sourceMappingURL=http-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-backend.d.ts","sourceRoot":"","sources":["../src/http-backend.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAO3E,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAqJpF"}
|