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.
Files changed (62) hide show
  1. package/README.md +277 -7
  2. package/dist/act.d.ts +2 -0
  3. package/dist/act.d.ts.map +1 -1
  4. package/dist/act.js +1 -1
  5. package/dist/act.js.map +1 -1
  6. package/dist/action-executors.d.ts +10 -0
  7. package/dist/action-executors.d.ts.map +1 -1
  8. package/dist/action-executors.js +14 -3
  9. package/dist/action-executors.js.map +1 -1
  10. package/dist/assert.d.ts +2 -2
  11. package/dist/assert.d.ts.map +1 -1
  12. package/dist/assert.js +1 -1
  13. package/dist/assert.js.map +1 -1
  14. package/dist/cloudflare/cli-stream.d.ts.map +1 -1
  15. package/dist/cloudflare/cli-stream.js +7 -3
  16. package/dist/cloudflare/cli-stream.js.map +1 -1
  17. package/dist/constants.d.ts +11 -0
  18. package/dist/constants.d.ts.map +1 -0
  19. package/dist/constants.js +11 -0
  20. package/dist/constants.js.map +1 -0
  21. package/dist/http-backend.d.ts +23 -0
  22. package/dist/http-backend.d.ts.map +1 -0
  23. package/dist/http-backend.js +124 -0
  24. package/dist/http-backend.js.map +1 -0
  25. package/dist/index.d.ts +20 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +97 -49
  28. package/dist/index.js.map +1 -1
  29. package/dist/observe.d.ts.map +1 -1
  30. package/dist/observe.js +4 -3
  31. package/dist/observe.js.map +1 -1
  32. package/dist/prd/define-prd.d.ts +7 -0
  33. package/dist/prd/define-prd.d.ts.map +1 -0
  34. package/dist/prd/define-prd.js +8 -0
  35. package/dist/prd/define-prd.js.map +1 -0
  36. package/dist/prd/index.d.ts +5 -0
  37. package/dist/prd/index.d.ts.map +1 -0
  38. package/dist/prd/index.js +4 -0
  39. package/dist/prd/index.js.map +1 -0
  40. package/dist/prd/runner.d.ts +22 -0
  41. package/dist/prd/runner.d.ts.map +1 -0
  42. package/dist/prd/runner.js +221 -0
  43. package/dist/prd/runner.js.map +1 -0
  44. package/dist/prd/scope-check.d.ts +28 -0
  45. package/dist/prd/scope-check.d.ts.map +1 -0
  46. package/dist/prd/scope-check.js +135 -0
  47. package/dist/prd/scope-check.js.map +1 -0
  48. package/dist/prd/types.d.ts +21 -0
  49. package/dist/prd/types.d.ts.map +1 -0
  50. package/dist/prd/types.js +2 -0
  51. package/dist/prd/types.js.map +1 -0
  52. package/dist/report.d.ts +67 -0
  53. package/dist/report.d.ts.map +1 -0
  54. package/dist/report.js +51 -0
  55. package/dist/report.js.map +1 -0
  56. package/dist/utils.d.ts.map +1 -1
  57. package/dist/utils.js +3 -2
  58. package/dist/utils.js.map +1 -1
  59. package/dist/validation.d.ts.map +1 -1
  60. package/dist/validation.js +7 -3
  61. package/dist/validation.js.map +1 -1
  62. package/package.json +11 -3
@@ -0,0 +1,124 @@
1
+ import { Effect, Queue } from "effect";
2
+ import { createLogStreamFromQueue } from "./observe";
3
+ import { HTTP_DEFAULT_POLL_INTERVAL_MS, HTTP_DEFAULT_TIMEOUT_MS, HTTP_MAX_RESPONSE_SIZE_BYTES } from "./constants";
4
+ /**
5
+ * Creates an observe resource that polls an HTTP endpoint and captures responses as logs.
6
+ * This gives agents visibility into what the endpoint is returning.
7
+ */
8
+ export function createHttpObserveResource(config) {
9
+ let queue = null;
10
+ let stopped = false;
11
+ let pollTimer = null;
12
+ const poll = async () => {
13
+ if (stopped || !queue)
14
+ return;
15
+ const startTime = Date.now();
16
+ const requestId = crypto.randomUUID();
17
+ const timeoutMs = config.timeoutMs ?? HTTP_DEFAULT_TIMEOUT_MS;
18
+ const maxResponseSizeBytes = config.maxResponseSizeBytes ?? HTTP_MAX_RESPONSE_SIZE_BYTES;
19
+ try {
20
+ const response = await fetch(config.url, {
21
+ method: config.method || "GET",
22
+ headers: config.headers,
23
+ body: config.body,
24
+ signal: AbortSignal.timeout(timeoutMs),
25
+ });
26
+ const durationMs = Date.now() - startTime;
27
+ const contentType = response.headers.get("content-type") || "";
28
+ let body = null;
29
+ const contentLengthHeader = response.headers.get("content-length");
30
+ const contentLength = contentLengthHeader ? Number(contentLengthHeader) : undefined;
31
+ if (typeof contentLength === "number" && !Number.isNaN(contentLength) && contentLength > maxResponseSizeBytes) {
32
+ const log = {
33
+ requestId,
34
+ timestamp: new Date().toISOString(),
35
+ stage: "http",
36
+ action: `${config.method || "GET"} ${config.url}`,
37
+ status: "error",
38
+ durationMs,
39
+ error: {
40
+ tag: "HttpResponseTooLarge",
41
+ message: `Response size ${contentLength} exceeds limit ${maxResponseSizeBytes}`,
42
+ },
43
+ };
44
+ await Effect.runPromise(Queue.offer(queue, log).pipe(Effect.tapError((error) => Effect.logError("Failed to enqueue HTTP size-limit log", error)), Effect.catchAll(() => Effect.void)));
45
+ return;
46
+ }
47
+ if (contentType.includes("application/json")) {
48
+ body = await response.json().catch(() => null);
49
+ }
50
+ else {
51
+ body = await response.text().catch(() => null);
52
+ }
53
+ const log = {
54
+ requestId,
55
+ timestamp: new Date().toISOString(),
56
+ stage: "http",
57
+ action: `${config.method || "GET"} ${config.url}`,
58
+ status: response.ok ? "success" : "error",
59
+ durationMs,
60
+ data: {
61
+ statusCode: response.status,
62
+ statusText: response.statusText,
63
+ contentType,
64
+ body,
65
+ headers: Object.fromEntries(response.headers.entries()),
66
+ },
67
+ };
68
+ await Effect.runPromise(Queue.offer(queue, log).pipe(Effect.tapError((error) => Effect.logError("Failed to enqueue HTTP log", error)), Effect.catchAll(() => Effect.void)));
69
+ }
70
+ catch (unknownError) {
71
+ const error = unknownError instanceof Error ? unknownError : new Error(String(unknownError));
72
+ const durationMs = Date.now() - startTime;
73
+ const log = {
74
+ requestId,
75
+ timestamp: new Date().toISOString(),
76
+ stage: "http",
77
+ action: `${config.method || "GET"} ${config.url}`,
78
+ status: "error",
79
+ durationMs,
80
+ error: {
81
+ tag: error.name || "HttpError",
82
+ message: error.message || String(error),
83
+ stack: error.stack,
84
+ },
85
+ };
86
+ await Effect.runPromise(Queue.offer(queue, log).pipe(Effect.tapError((enqueueError) => Effect.logError("Failed to enqueue HTTP error log", enqueueError)), Effect.catchAll(() => Effect.void)));
87
+ }
88
+ };
89
+ return {
90
+ start() {
91
+ return Effect.gen(function* () {
92
+ stopped = false;
93
+ queue = yield* Queue.bounded(1000);
94
+ // Initial poll
95
+ yield* Effect.promise(() => poll());
96
+ // Start polling loop
97
+ const interval = config.pollInterval ?? HTTP_DEFAULT_POLL_INTERVAL_MS;
98
+ pollTimer = setInterval(() => poll(), interval);
99
+ return createLogStreamFromQueue(queue);
100
+ });
101
+ },
102
+ stop() {
103
+ return Effect.gen(function* () {
104
+ stopped = true;
105
+ if (pollTimer) {
106
+ clearInterval(pollTimer);
107
+ pollTimer = null;
108
+ }
109
+ });
110
+ },
111
+ /**
112
+ * Query historical logs.
113
+ *
114
+ * Note: HTTP backend is forward-only and does not maintain historical logs.
115
+ * This method always returns an empty array because HTTP polling only captures
116
+ * logs as they arrive in real-time. For querying historical logs, use a backend
117
+ * that supports log storage (e.g., Cloudflare Analytics Engine).
118
+ */
119
+ query(_filter) {
120
+ return Effect.succeed([]);
121
+ },
122
+ };
123
+ }
124
+ //# sourceMappingURL=http-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-backend.js","sourceRoot":"","sources":["../src/http-backend.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -28,10 +28,27 @@ export interface GateSpec {
28
28
  observe: ObserveResource;
29
29
  act: Action[];
30
30
  assert: Assertion[];
31
+ /**
32
+ * Timeout configuration for log collection.
33
+ *
34
+ * - **idleMs**: If no logs arrive for this duration AND logs have been collected, return early.
35
+ * Default: 3000ms
36
+ * - **maxMs**: Maximum total time to wait for logs. If exceeded, gate fails with timeout.
37
+ * Default: 15000ms
38
+ *
39
+ * Examples:
40
+ * - `{ idleMs: 1000, maxMs: 5000 }`: Wait up to 5s total, but return early if idle > 1s with logs
41
+ * - `{ idleMs: 0, maxMs: 10000 }`: Wait full 10s, never return early on idle
42
+ */
31
43
  stop?: {
32
44
  idleMs: number;
33
45
  maxMs: number;
34
46
  };
47
+ /**
48
+ * Maximum number of logs to collect before stopping.
49
+ * Defaults to 50_000.
50
+ */
51
+ maxLogs?: number;
35
52
  report?: "json" | "pretty";
36
53
  }
37
54
  export declare namespace Gate {
@@ -45,4 +62,7 @@ export type { ObserveResource } from "./observe";
45
62
  export type { Provider } from "./provider";
46
63
  export { createEmptyBackend, createEmptyObserveResource, runGateWithErrorHandling } from "./utils";
47
64
  export { createTestObserveResource } from "./test-helpers";
65
+ export { createHttpObserveResource } from "./http-backend";
66
+ export type { GateResultV1, PrdReportV1, StoryResultV1, SerializableError } from "./report";
67
+ export { serializeError, toGateResultV1 } from "./report";
48
68
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwC,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAO,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAU,eAAe,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;;;;;;AAIxC,qBAAa,SAAU,SAAQ,cAE7B;CAAG;;;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAOpC;CAAG;AAEJ,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,eAAe,GAAG,wBAAwB,GAAG,kBAAkB,CAAC;AAE1H,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B;AAwGD,yBAAiB,IAAI,CAAC;IACpB,SAAgB,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAEvD;IAED,SAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,GACb,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAmFvD;CACF;AAoBD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwC,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAO,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAU,eAAe,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;;;;;;AAYxC,qBAAa,SAAU,SAAQ,cAE7B;CAAG;;;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAOpC;CAAG;AAEJ,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,eAAe,GAAG,wBAAwB,GAAG,kBAAkB,CAAC;AAE1H,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B;AA8ID,yBAAiB,IAAI,CAAC;IACpB,SAAgB,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAEvD;IAED,SAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,GACb,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAiGvD;CACF;AAuBD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,8 @@ import { Effect, Ref, Either, Stream } from "effect";
2
2
  import { Assert } from "./assert";
3
3
  import { Schema } from "@effect/schema";
4
4
  import { getActionExecutor } from "./action-executors";
5
+ import { DEFAULT_IDLE_MS, DEFAULT_MAX_MS, MAX_LOG_BUFFER, LOG_BUFFER_CAPACITY } from "./constants";
6
+ import { sortDeterministic, toGateResultV1 } from "./report";
5
7
  export class GateError extends Schema.TaggedError()("GateError", {
6
8
  cause: Schema.Unknown
7
9
  }) {
@@ -28,51 +30,85 @@ function summarize(logs) {
28
30
  errorTags.add(log.error.tag);
29
31
  }
30
32
  return {
31
- requestIds: [...requestIds],
32
- stagesSeen: [...stages],
33
- actionsSeen: [...actions],
34
- errorTags: [...errorTags]
33
+ requestIds: sortDeterministic([...requestIds]),
34
+ stagesSeen: sortDeterministic([...stages]),
35
+ actionsSeen: sortDeterministic([...actions]),
36
+ errorTags: sortDeterministic([...errorTags])
35
37
  };
36
38
  }
39
+ function makeLogTimeoutError(stop, cause) {
40
+ return new LogTimeoutError({
41
+ maxMs: stop.maxMs,
42
+ idleMs: stop.idleMs,
43
+ cause
44
+ });
45
+ }
37
46
  function runAction(action) {
38
47
  const executor = getActionExecutor(action);
39
48
  return executor.execute(action);
40
49
  }
41
- function collectLogs(stream, stop) {
50
+ /**
51
+ * Collects logs from a stream with timeout and idle detection.
52
+ *
53
+ * Behavior:
54
+ * - **maxMs**: Maximum total time to wait for logs. If exceeded, returns LogTimeoutError.
55
+ * - **idleMs**: If no logs arrive for this duration, return early (with collected logs if any, or empty array if none).
56
+ *
57
+ * Examples:
58
+ * - Stream produces logs continuously: collects until maxLogs or maxMs exceeded
59
+ * - Stream stops producing logs: if idleMs elapsed and we have logs, return them
60
+ * - Stream never produces logs: waits for idleMs then returns empty array if maxMs not exceeded, otherwise timeout error
61
+ * - Stream error: preserved in LogTimeoutError.cause
62
+ */
63
+ function collectLogs(stream, stop, maxLogs) {
42
64
  const startTime = Date.now();
43
65
  const lastLogTimeRef = Ref.unsafeMake(Date.now());
44
66
  return Effect.gen(function* () {
45
67
  const logStream = Stream.fromAsyncIterable(stream, () => Effect.void);
46
- const collected = yield* logStream.pipe(Stream.tap(() => Ref.set(lastLogTimeRef, Date.now())), Stream.take(50000), Stream.buffer({ capacity: 1000 }), Stream.timeout(`${stop.maxMs} millis`), Stream.runCollect, Effect.catchAll((error) => {
68
+ const collected = yield* logStream.pipe(Stream.tap(() => Ref.set(lastLogTimeRef, Date.now())), Stream.take(maxLogs), Stream.buffer({ capacity: LOG_BUFFER_CAPACITY }), Stream.timeout(`${stop.maxMs} millis`), Stream.runCollect, Effect.catchAll((error) => Effect.gen(function* () {
69
+ // Stream-level timeout
47
70
  if (error && typeof error === "object" && "_tag" in error && error._tag === "TimeoutException") {
48
- return Effect.fail(new LogTimeoutError({ maxMs: stop.maxMs, idleMs: stop.idleMs }));
71
+ return yield* Effect.fail(makeLogTimeoutError(stop, error));
49
72
  }
50
- return Effect.gen(function* () {
51
- const now = Date.now();
52
- const lastLogTime = yield* Ref.get(lastLogTimeRef);
53
- const totalTime = now - startTime;
54
- if (totalTime > stop.maxMs) {
55
- return yield* Effect.fail(new LogTimeoutError({ maxMs: stop.maxMs, idleMs: stop.idleMs }));
56
- }
57
- return [];
58
- });
59
- }));
73
+ const now = Date.now();
74
+ const totalTime = now - startTime;
75
+ if (totalTime > stop.maxMs) {
76
+ return yield* Effect.fail(makeLogTimeoutError(stop, error));
77
+ }
78
+ // Non-timeout stream error before maxMs elapsed surface as timeout with cause
79
+ return yield* Effect.fail(makeLogTimeoutError(stop, error));
80
+ })));
60
81
  const now = Date.now();
61
82
  const lastLogTime = yield* Ref.get(lastLogTimeRef);
62
83
  const idleTime = now - lastLogTime;
63
84
  const totalTime = now - startTime;
64
85
  if (totalTime > stop.maxMs) {
65
- return yield* Effect.fail(new LogTimeoutError({ maxMs: stop.maxMs, idleMs: stop.idleMs }));
86
+ return yield* Effect.fail(makeLogTimeoutError(stop));
66
87
  }
88
+ // If we have logs and have been idle longer than idleMs, return what we have.
67
89
  if (idleTime > stop.idleMs && collected.length > 0) {
68
90
  return Array.from(collected);
69
91
  }
92
+ // If we have any logs at all, return them.
70
93
  if (collected.length > 0) {
71
94
  return Array.from(collected);
72
95
  }
73
- yield* Effect.sleep(`${stop.idleMs} millis`);
74
- yield* logStream.pipe(Stream.take(1), Stream.timeout("10 millis"), Stream.runCollect, Effect.catchAll(() => Effect.succeed([])));
75
- return Array.from(collected);
96
+ // No logs collected yet. Wait for idleMs before giving up, unless maxMs would be exceeded.
97
+ if (idleTime < stop.idleMs) {
98
+ const remainingIdle = stop.idleMs - idleTime;
99
+ const remainingMax = stop.maxMs - totalTime;
100
+ const waitTime = Math.min(remainingIdle, remainingMax);
101
+ if (waitTime > 0) {
102
+ yield* Effect.sleep(`${waitTime} millis`);
103
+ // After waiting, check if maxMs is now exceeded
104
+ const afterWaitTime = Date.now() - startTime;
105
+ if (afterWaitTime > stop.maxMs) {
106
+ return yield* Effect.fail(makeLogTimeoutError(stop));
107
+ }
108
+ }
109
+ }
110
+ // No logs collected after waiting – return empty array.
111
+ return [];
76
112
  });
77
113
  }
78
114
  function handleGateError(error, startedAt, logs) {
@@ -94,7 +130,8 @@ export var Gate;
94
130
  function runEffect(spec) {
95
131
  return Effect.acquireUseRelease(spec.observe.start().pipe(Effect.catchAll((error) => Effect.fail(new GateError({ cause: error })))), (stream) => Effect.gen(function* () {
96
132
  const startedAt = Date.now();
97
- const stop = spec.stop ?? { idleMs: 3000, maxMs: 15000 };
133
+ const stop = spec.stop ?? { idleMs: DEFAULT_IDLE_MS, maxMs: DEFAULT_MAX_MS };
134
+ const maxLogs = spec.maxLogs ?? MAX_LOG_BUFFER;
98
135
  yield* Effect.sleep("200 millis");
99
136
  let actionError = null;
100
137
  for (const action of spec.act) {
@@ -108,7 +145,7 @@ export var Gate;
108
145
  if (Either.isLeft(actionResult)) {
109
146
  return handleGateError(actionResult.left, startedAt, []);
110
147
  }
111
- const logsResult = yield* collectLogs(stream, stop).pipe(Effect.timeoutFail({
148
+ const logsResult = yield* collectLogs(stream, stop, maxLogs).pipe(Effect.timeoutFail({
112
149
  duration: `${stop.maxMs} millis`,
113
150
  onTimeout: () => new LogTimeoutError({ maxMs: stop.maxMs, idleMs: stop.idleMs })
114
151
  }), Effect.catchTag("LogTimeoutError", (error) => Effect.succeed({
@@ -118,30 +155,36 @@ export var Gate;
118
155
  evidence: summarize([]),
119
156
  error: error instanceof Error ? error : new Error(String(error))
120
157
  })), Effect.either);
121
- if (Either.isRight(logsResult) && typeof logsResult.right === "object" && logsResult.right !== null && "status" in logsResult.right && logsResult.right.status === "timeout") {
122
- return logsResult.right;
123
- }
124
- if (Either.isLeft(logsResult)) {
125
- return handleGateError(logsResult.left, startedAt, []);
126
- }
127
- const logs = logsResult.right;
128
- const assertResult = yield* Assert.run(spec.assert, logs).pipe(Effect.either);
129
- const evidence = summarize(logs);
130
- const durationMs = Date.now() - startedAt;
131
- if (Either.isLeft(assertResult)) {
132
- const result = handleGateError(assertResult.left, startedAt, logs);
133
- printResult(spec.report, result);
134
- return result;
158
+ if (Either.isRight(logsResult)) {
159
+ const right = logsResult.right;
160
+ // Right side can be either collected logs or a pre-built timeout GateResult
161
+ if (Array.isArray(right)) {
162
+ const logs = right;
163
+ const assertResult = yield* Assert.run(spec.assert, logs).pipe(Effect.either);
164
+ const evidence = summarize(logs);
165
+ const durationMs = Date.now() - startedAt;
166
+ if (Either.isLeft(assertResult)) {
167
+ const result = handleGateError(assertResult.left, startedAt, logs);
168
+ printResult(spec.report, result);
169
+ return result;
170
+ }
171
+ const result = {
172
+ status: "success",
173
+ durationMs,
174
+ logs,
175
+ evidence
176
+ };
177
+ printResult(spec.report, result);
178
+ return result;
179
+ }
180
+ // Timeout case already mapped into a GateResult above
181
+ return right;
135
182
  }
136
- const result = {
137
- status: "success",
138
- durationMs,
139
- logs,
140
- evidence
141
- };
142
- printResult(spec.report, result);
143
- return result;
144
- }), () => spec.observe.stop().pipe(Effect.catchAll(() => Effect.void)));
183
+ // Left side is a LogTimeoutError or other gate error
184
+ return handleGateError(logsResult.left, startedAt, []);
185
+ }), () => spec.observe
186
+ .stop()
187
+ .pipe(Effect.tapError((error) => Effect.logError("Failed to stop observe resource", error)), Effect.catchAll(() => Effect.void)));
145
188
  }
146
189
  Gate.runEffect = runEffect;
147
190
  })(Gate || (Gate = {}));
@@ -152,17 +195,22 @@ function printResult(report, result) {
152
195
  if (result.evidence.errorTags.length) {
153
196
  console.log(`errorTags=${result.evidence.errorTags.join(",")}`);
154
197
  }
155
- if (result.status !== "success") {
156
- const errorTag = result.error && "_tag" in result.error ? result.error._tag : "unknown";
198
+ if (result.status !== "success" && result.error) {
199
+ const errorWithTag = result.error;
200
+ const errorTag = errorWithTag._tag ?? "unknown";
157
201
  console.log(`error=${errorTag}`);
158
202
  }
159
203
  }
160
204
  else {
161
- console.log(JSON.stringify(result, null, 2));
205
+ // Use serializable version for JSON output
206
+ const serializable = toGateResultV1(result);
207
+ console.log(JSON.stringify(serializable, null, 2));
162
208
  }
163
209
  }
164
210
  export { Act } from "./act";
165
211
  export { Assert } from "./assert";
166
212
  export { createEmptyBackend, createEmptyObserveResource, runGateWithErrorHandling } from "./utils";
167
213
  export { createTestObserveResource } from "./test-helpers";
214
+ export { createHttpObserveResource } from "./http-backend";
215
+ export { serializeError, toGateResultV1 } from "./report";
168
216
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAmB,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;;;;;;;;AAExC,qBAAa,kBAAmB,SAAQ,uBAOvC;CAAG;AAEJ,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAO3E;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACtD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAChD,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACtD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;CACjD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAsBvE;AAkBD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GACtB,SAAS,CAqCX"}
1
+ {"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAmB,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;;;;;;;;AAOxC,qBAAa,kBAAmB,SAAQ,uBAOvC;CAAG;AAEJ,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAO3E;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACtD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAChD,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACtD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;CACjD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAsBvE;AAkBD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GACtB,SAAS,CAqCX"}
package/dist/observe.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Effect, Queue, Runtime, Stream } from "effect";
2
2
  import { Schema } from "@effect/schema";
3
+ import { QUEUE_DRAIN_LIMIT, QUEUE_DRAIN_TIMEOUT_MS, QUEUE_TAKE_TIMEOUT_MS } from "./constants";
3
4
  export class ObservabilityError extends Schema.TaggedError()("ObservabilityError", {
4
5
  cause: Schema.Unknown,
5
6
  message: Schema.optional(Schema.String),
@@ -54,7 +55,7 @@ export function createLogStreamFromQueue(queue) {
54
55
  async *[Symbol.asyncIterator]() {
55
56
  try {
56
57
  while (true) {
57
- const log = await Runtime.runPromise(runtime)(Queue.take(queue).pipe(Effect.timeout("100 millis"), Effect.catchAll(() => Effect.succeed(null))));
58
+ const log = await Runtime.runPromise(runtime)(Queue.take(queue).pipe(Effect.timeout(`${QUEUE_TAKE_TIMEOUT_MS} millis`), Effect.catchAll(() => Effect.succeed(null))));
58
59
  if (log === null)
59
60
  break;
60
61
  yield log;
@@ -63,8 +64,8 @@ export function createLogStreamFromQueue(queue) {
63
64
  finally {
64
65
  const remaining = [];
65
66
  try {
66
- for (let i = 0; i < 100; i++) {
67
- const log = await Runtime.runPromise(runtime)(Queue.take(queue).pipe(Effect.timeout("10 millis"), Effect.catchAll(() => Effect.succeed(null))));
67
+ for (let i = 0; i < QUEUE_DRAIN_LIMIT; i++) {
68
+ const log = await Runtime.runPromise(runtime)(Queue.take(queue).pipe(Effect.timeout(`${QUEUE_DRAIN_TIMEOUT_MS} millis`), Effect.catchAll(() => Effect.succeed(null))));
68
69
  if (log === null)
69
70
  break;
70
71
  remaining.push(log);
@@ -1 +1 @@
1
- {"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB;IACE,KAAK,EAAE,MAAM,CAAC,OAAO;IACrB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACtC,CACF;CAAG;AAEJ,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,OAAO,IAAI,kBAAkB,CAAC;QAC5B,KAAK;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAC;AACL,CAAC;AAaD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;QACL,KAAK;YACH,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QACD,IAAI;YACF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,MAAiB;YACrB,OAAO,MAAM,CAAC,iBAAiB,CAC7B,OAAO,CAAC,KAAK,EAAE,EACf,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACtD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAClD,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CACjE,EACH,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAC9D,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAAQ,EAAE,MAAiB;IAChD,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACzE,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAChE,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAChE,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAuB;IAEvB,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IACvC,OAAO;QACL,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3B,IAAI,CAAC;gBACH,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACpB,MAAM,CAAC,OAAO,CAAC,GAAG,qBAAqB,SAAS,CAAC,EACjD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAkB,CAAC,CAAC,CAC1D,CACF,CAAC;oBACF,IAAI,GAAG,KAAK,IAAI;wBAAE,MAAM;oBACxB,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,SAAS,GAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACpB,MAAM,CAAC,OAAO,CAAC,GAAG,sBAAsB,SAAS,CAAC,EAClD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAkB,CAAC,CAAC,CAC1D,CACF,CAAC;wBACF,IAAI,GAAG,KAAK,IAAI;4BAAE,MAAM;wBACxB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;KACoB,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Prd } from "./types";
2
+ /**
3
+ * Helper to define a PRD with type-safe story IDs.
4
+ * Preserves literal union types for StoryId.
5
+ */
6
+ export declare function definePrd<TId extends string>(prd: Prd<TId>): Prd<TId>;
7
+ //# sourceMappingURL=define-prd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-prd.d.ts","sourceRoot":"","sources":["../../src/prd/define-prd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEnC;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,SAAS,MAAM,EAC1C,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GACZ,GAAG,CAAC,GAAG,CAAC,CAEV"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Helper to define a PRD with type-safe story IDs.
3
+ * Preserves literal union types for StoryId.
4
+ */
5
+ export function definePrd(prd) {
6
+ return prd;
7
+ }
8
+ //# sourceMappingURL=define-prd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-prd.js","sourceRoot":"","sources":["../../src/prd/define-prd.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,GAAa;IAEb,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type { Prd, Story, GateResult, StoryScope } from "./types";
2
+ export { definePrd } from "./define-prd";
3
+ export { runPrd, type RunPrdResult } from "./runner";
4
+ export { validateScope, getDiffStats, type ScopeViolation } from "./scope-check";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prd/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { definePrd } from "./define-prd";
2
+ export { runPrd } from "./runner";
3
+ export { validateScope, getDiffStats } from "./scope-check";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prd/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAqB,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAuB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Prd, Story } from "./types";
2
+ import type { PrdReportV1 } from "../report";
3
+ export interface RunPrdResult {
4
+ success: boolean;
5
+ failedStory?: Story;
6
+ error?: Error;
7
+ report?: PrdReportV1;
8
+ }
9
+ /**
10
+ * Runs a PRD by executing story gates in dependency order.
11
+ * Stops on first failure.
12
+ *
13
+ * @param options.reportPath - If provided, writes a structured JSON report to this path
14
+ * @param options.checkScope - If true, validates scope constraints against git diff
15
+ * @param options.baseRef - Git ref to compare against for scope checking (default: "HEAD" for local, "origin/main" for CI)
16
+ */
17
+ export declare function runPrd<TId extends string>(prd: Prd<TId>, cwd?: string, options?: {
18
+ reportPath?: string;
19
+ checkScope?: boolean;
20
+ baseRef?: string;
21
+ }): Promise<RunPrdResult>;
22
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/prd/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAc,MAAM,SAAS,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAoC,MAAM,WAAW,CAAC;AAI/E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAkFD;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,GAAG,SAAS,MAAM,EAC7C,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EACb,GAAG,GAAE,MAAsB,EAC3B,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,OAAO,CAAC,YAAY,CAAC,CAyJvB"}