gateproof 0.2.2 → 0.5.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 +1396 -320
- package/dist/cloudflare/index.d.ts +4 -6
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/index.js +9 -43
- package/dist/cloudflare/index.js.map +1 -1
- package/dist/index.d.ts +263 -66
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1327 -204
- package/dist/index.js.map +1 -1
- package/package.json +18 -40
- package/dist/act.d.ts +0 -33
- package/dist/act.d.ts.map +0 -1
- package/dist/act.js +0 -25
- package/dist/act.js.map +0 -1
- package/dist/action-executors.d.ts +0 -22
- package/dist/action-executors.d.ts.map +0 -1
- package/dist/action-executors.js +0 -135
- package/dist/action-executors.js.map +0 -1
- package/dist/assert.d.ts +0 -39
- package/dist/assert.d.ts.map +0 -1
- package/dist/assert.js +0 -88
- package/dist/assert.js.map +0 -1
- package/dist/cli/gateproof.d.ts +0 -3
- package/dist/cli/gateproof.d.ts.map +0 -1
- package/dist/cli/gateproof.js +0 -472
- package/dist/cli/gateproof.js.map +0 -1
- package/dist/cloudflare/analytics.d.ts +0 -9
- package/dist/cloudflare/analytics.d.ts.map +0 -1
- package/dist/cloudflare/analytics.js +0 -98
- package/dist/cloudflare/analytics.js.map +0 -1
- package/dist/cloudflare/cli-stream.d.ts +0 -7
- package/dist/cloudflare/cli-stream.d.ts.map +0 -1
- package/dist/cloudflare/cli-stream.js +0 -85
- package/dist/cloudflare/cli-stream.js.map +0 -1
- package/dist/cloudflare/polling-backend.d.ts +0 -18
- package/dist/cloudflare/polling-backend.d.ts.map +0 -1
- package/dist/cloudflare/polling-backend.js +0 -53
- package/dist/cloudflare/polling-backend.js.map +0 -1
- package/dist/cloudflare/workers-logs.d.ts +0 -9
- package/dist/cloudflare/workers-logs.d.ts.map +0 -1
- package/dist/cloudflare/workers-logs.js +0 -51
- package/dist/cloudflare/workers-logs.js.map +0 -1
- package/dist/constants.d.ts +0 -11
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -11
- package/dist/constants.js.map +0 -1
- package/dist/http-backend.d.ts +0 -23
- package/dist/http-backend.d.ts.map +0 -1
- package/dist/http-backend.js +0 -124
- package/dist/http-backend.js.map +0 -1
- package/dist/observe.d.ts +0 -26
- package/dist/observe.d.ts.map +0 -1
- package/dist/observe.js +0 -84
- package/dist/observe.js.map +0 -1
- package/dist/prd/define-prd.d.ts +0 -7
- package/dist/prd/define-prd.d.ts.map +0 -1
- package/dist/prd/define-prd.js +0 -8
- package/dist/prd/define-prd.js.map +0 -1
- package/dist/prd/index.d.ts +0 -5
- package/dist/prd/index.d.ts.map +0 -1
- package/dist/prd/index.js +0 -4
- package/dist/prd/index.js.map +0 -1
- package/dist/prd/runner.d.ts +0 -22
- package/dist/prd/runner.d.ts.map +0 -1
- package/dist/prd/runner.js +0 -221
- package/dist/prd/runner.js.map +0 -1
- package/dist/prd/scope-check.d.ts +0 -28
- package/dist/prd/scope-check.d.ts.map +0 -1
- package/dist/prd/scope-check.js +0 -135
- package/dist/prd/scope-check.js.map +0 -1
- package/dist/prd/types.d.ts +0 -22
- package/dist/prd/types.d.ts.map +0 -1
- package/dist/prd/types.js +0 -2
- package/dist/prd/types.js.map +0 -1
- package/dist/provider.d.ts +0 -6
- package/dist/provider.d.ts.map +0 -1
- package/dist/provider.js +0 -2
- package/dist/provider.js.map +0 -1
- package/dist/report.d.ts +0 -67
- package/dist/report.d.ts.map +0 -1
- package/dist/report.js +0 -51
- package/dist/report.js.map +0 -1
- package/dist/test-helpers.d.ts +0 -12
- package/dist/test-helpers.d.ts.map +0 -1
- package/dist/test-helpers.js +0 -33
- package/dist/test-helpers.js.map +0 -1
- package/dist/types.d.ts +0 -41
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -22
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -49
- package/dist/utils.js.map +0 -1
- package/dist/validation.d.ts +0 -6
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -38
- package/dist/validation.js.map +0 -1
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { Effect, Queue, Either } from "effect";
|
|
3
|
-
import { createLogStreamFromQueue, createObservabilityError } from "../observe";
|
|
4
|
-
function parseLogLine(line) {
|
|
5
|
-
return Effect.gen(function* () {
|
|
6
|
-
const parsed = yield* Effect.try({
|
|
7
|
-
try: () => JSON.parse(line),
|
|
8
|
-
catch: (e) => createObservabilityError(e)
|
|
9
|
-
});
|
|
10
|
-
const msg = parsed.message;
|
|
11
|
-
if (typeof msg === "string") {
|
|
12
|
-
const innerResult = yield* Effect.try({
|
|
13
|
-
try: () => JSON.parse(msg),
|
|
14
|
-
catch: () => createObservabilityError(new Error("Failed to parse inner JSON"))
|
|
15
|
-
}).pipe(Effect.either);
|
|
16
|
-
if (Either.isRight(innerResult) && innerResult.right && typeof innerResult.right === "object") {
|
|
17
|
-
const merged = {
|
|
18
|
-
...parsed,
|
|
19
|
-
...innerResult.right
|
|
20
|
-
};
|
|
21
|
-
return merged;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return parsed;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
export function createCliStreamBackend(config) {
|
|
28
|
-
let proc = null;
|
|
29
|
-
const releaseProcess = (procToRelease) => {
|
|
30
|
-
return Effect.gen(function* () {
|
|
31
|
-
procToRelease.kill("SIGTERM");
|
|
32
|
-
yield* Effect.tryPromise({
|
|
33
|
-
try: () => new Promise((resolve) => {
|
|
34
|
-
procToRelease.on("exit", () => resolve());
|
|
35
|
-
procToRelease.on("close", () => resolve());
|
|
36
|
-
setTimeout(() => resolve(), 1000);
|
|
37
|
-
}),
|
|
38
|
-
catch: () => createObservabilityError(new Error("Process cleanup failed"))
|
|
39
|
-
}).pipe(Effect.tapError((error) => Effect.logError("Process cleanup error", error)),
|
|
40
|
-
// Swallow errors during cleanup - already logged above
|
|
41
|
-
Effect.catchAll(() => Effect.void));
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
return {
|
|
45
|
-
start() {
|
|
46
|
-
return Effect.gen(function* () {
|
|
47
|
-
const queue = yield* Queue.unbounded();
|
|
48
|
-
const args = ["tail"];
|
|
49
|
-
if (config.workerName)
|
|
50
|
-
args.push(config.workerName);
|
|
51
|
-
args.push("--format", "json");
|
|
52
|
-
const env = { ...process.env };
|
|
53
|
-
if (config.accountId) {
|
|
54
|
-
env.CLOUDFLARE_ACCOUNT_ID = config.accountId;
|
|
55
|
-
}
|
|
56
|
-
proc = spawn("wrangler", args, {
|
|
57
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
58
|
-
env
|
|
59
|
-
});
|
|
60
|
-
if (!proc.stdout || !proc.stderr) {
|
|
61
|
-
yield* Effect.fail(createObservabilityError(new Error("Failed to spawn wrangler")));
|
|
62
|
-
}
|
|
63
|
-
proc.stdout.on("data", (buf) => {
|
|
64
|
-
const lines = buf.toString("utf8").split("\n").filter(Boolean);
|
|
65
|
-
for (const line of lines) {
|
|
66
|
-
void Effect.runPromise(parseLogLine(line).pipe(Effect.flatMap((log) => Queue.offer(queue, log)), Effect.tapError((error) => Effect.logError("Failed to parse log line", error)), Effect.catchAll(() => Effect.void))).catch(() => { });
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
proc.stderr.on("data", (buf) => {
|
|
70
|
-
process.stderr.write(buf);
|
|
71
|
-
});
|
|
72
|
-
return createLogStreamFromQueue(queue);
|
|
73
|
-
}).pipe(Effect.catchAll((cause) => Effect.fail(createObservabilityError(cause))));
|
|
74
|
-
},
|
|
75
|
-
stop() {
|
|
76
|
-
return Effect.gen(function* () {
|
|
77
|
-
if (proc) {
|
|
78
|
-
yield* releaseProcess(proc);
|
|
79
|
-
proc = null;
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=cli-stream.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-stream.js","sourceRoot":"","sources":["../../src/cloudflare/cli-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
2
|
-
import type { Log, LogStream } from "../types";
|
|
3
|
-
import { ObservabilityError } from "../observe";
|
|
4
|
-
export interface PollingBackendConfig {
|
|
5
|
-
pollInterval?: number;
|
|
6
|
-
}
|
|
7
|
-
export interface PollingBackend<T> {
|
|
8
|
-
fetchData(lastTimestamp: number): Effect.Effect<T[], ObservabilityError, never>;
|
|
9
|
-
processData(data: T[], lastTimestamp: number): {
|
|
10
|
-
logs: Log[];
|
|
11
|
-
newTimestamp: number;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
export declare function createPollingBackend<T>(config: PollingBackendConfig, backend: PollingBackend<T>): {
|
|
15
|
-
start(): Effect.Effect<LogStream, ObservabilityError>;
|
|
16
|
-
stop(): Effect.Effect<void, ObservabilityError>;
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=polling-backend.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"polling-backend.d.ts","sourceRoot":"","sources":["../../src/cloudflare/polling-backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+B,MAAM,QAAQ,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAsD,MAAM,YAAY,CAAC;AAEpG,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAChF,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACtF;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB;IACD,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACtD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;CACjD,CAmEA"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Effect, Queue, Fiber, Ref } from "effect";
|
|
2
|
-
import { createLogStreamFromQueue } from "../observe";
|
|
3
|
-
export function createPollingBackend(config, backend) {
|
|
4
|
-
const stoppedRef = Ref.unsafeMake(false);
|
|
5
|
-
let fiberRef = null;
|
|
6
|
-
return {
|
|
7
|
-
start() {
|
|
8
|
-
return Effect.gen(function* () {
|
|
9
|
-
const queue = yield* Queue.bounded(10000);
|
|
10
|
-
let lastTimestamp = Date.now() - 60000;
|
|
11
|
-
const pollOnce = Effect.gen(function* () {
|
|
12
|
-
const isStopped = yield* Ref.get(stoppedRef);
|
|
13
|
-
if (isStopped)
|
|
14
|
-
return;
|
|
15
|
-
const data = yield* backend.fetchData(lastTimestamp).pipe(Effect.catchAll((error) => Effect.gen(function* () {
|
|
16
|
-
yield* Effect.logError("Failed to fetch data", error);
|
|
17
|
-
return [];
|
|
18
|
-
})));
|
|
19
|
-
const { logs, newTimestamp } = backend.processData(data, lastTimestamp);
|
|
20
|
-
lastTimestamp = newTimestamp;
|
|
21
|
-
for (const log of logs) {
|
|
22
|
-
const isStopped = yield* Ref.get(stoppedRef);
|
|
23
|
-
if (isStopped)
|
|
24
|
-
break;
|
|
25
|
-
yield* Queue.offer(queue, log).pipe(Effect.catchAll(() => Effect.void));
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
const pollLoop = Effect.gen(function* () {
|
|
29
|
-
while (true) {
|
|
30
|
-
const isStopped = yield* Ref.get(stoppedRef);
|
|
31
|
-
if (isStopped)
|
|
32
|
-
break;
|
|
33
|
-
yield* pollOnce;
|
|
34
|
-
yield* Effect.sleep(`${config.pollInterval ?? 1000} millis`);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
const fiber = yield* Effect.forkDaemon(pollLoop.pipe(Effect.tapError((error) => Effect.logError("Polling failed", error))));
|
|
38
|
-
fiberRef = fiber;
|
|
39
|
-
return createLogStreamFromQueue(queue);
|
|
40
|
-
});
|
|
41
|
-
},
|
|
42
|
-
stop() {
|
|
43
|
-
return Effect.gen(function* () {
|
|
44
|
-
yield* Ref.set(stoppedRef, true);
|
|
45
|
-
if (fiberRef) {
|
|
46
|
-
yield* Fiber.interrupt(fiberRef);
|
|
47
|
-
fiberRef = null;
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=polling-backend.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"polling-backend.js","sourceRoot":"","sources":["../../src/cloudflare/polling-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type Backend } from "../observe";
|
|
2
|
-
export interface WorkersLogsConfig {
|
|
3
|
-
accountId: string;
|
|
4
|
-
apiToken: string;
|
|
5
|
-
workerName: string;
|
|
6
|
-
pollInterval?: number;
|
|
7
|
-
}
|
|
8
|
-
export declare function createWorkersLogsBackend(config: WorkersLogsConfig): Backend;
|
|
9
|
-
//# sourceMappingURL=workers-logs.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workers-logs.d.ts","sourceRoot":"","sources":["../../src/cloudflare/workers-logs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgD,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAGxF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAyDT"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Effect, Schedule } from "effect";
|
|
2
|
-
import { createObservabilityError } from "../observe";
|
|
3
|
-
import { createPollingBackend } from "./polling-backend";
|
|
4
|
-
export function createWorkersLogsBackend(config) {
|
|
5
|
-
const fetchLogs = (lastTs) => {
|
|
6
|
-
return Effect.gen(function* () {
|
|
7
|
-
const response = yield* Effect.tryPromise({
|
|
8
|
-
try: async () => {
|
|
9
|
-
return await fetch(`https://api.cloudflare.com/client/v4/accounts/${config.accountId}/workers/${config.workerName}/logs`, {
|
|
10
|
-
method: "GET",
|
|
11
|
-
headers: {
|
|
12
|
-
Authorization: `Bearer ${config.apiToken}`,
|
|
13
|
-
"Content-Type": "application/json"
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
},
|
|
17
|
-
catch: (e) => createObservabilityError(e)
|
|
18
|
-
}).pipe(Effect.timeout("30 seconds"), Effect.retry(Schedule.exponential("100 millis").pipe(Schedule.compose(Schedule.recurs(3)))), Effect.catchTag("TimeoutException", (e) => Effect.fail(createObservabilityError(e))));
|
|
19
|
-
if (!response.ok) {
|
|
20
|
-
yield* Effect.fail(createObservabilityError(new Error(`API request failed: ${response.status}`)));
|
|
21
|
-
}
|
|
22
|
-
const data = yield* Effect.tryPromise({
|
|
23
|
-
try: async () => (await response.json()),
|
|
24
|
-
catch: (e) => createObservabilityError(e)
|
|
25
|
-
});
|
|
26
|
-
const logs = data.result && Array.isArray(data.result) ? data.result : [];
|
|
27
|
-
return logs.filter((log) => {
|
|
28
|
-
if (log.timestamp) {
|
|
29
|
-
const ts = new Date(log.timestamp).getTime();
|
|
30
|
-
return ts > lastTs;
|
|
31
|
-
}
|
|
32
|
-
return false;
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
const backend = {
|
|
37
|
-
fetchData: fetchLogs,
|
|
38
|
-
processData(logs, lastTimestamp) {
|
|
39
|
-
let newTimestamp = lastTimestamp;
|
|
40
|
-
for (const log of logs) {
|
|
41
|
-
if (log.timestamp) {
|
|
42
|
-
const ts = new Date(log.timestamp).getTime();
|
|
43
|
-
newTimestamp = Math.max(newTimestamp, ts);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return { logs, newTimestamp };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
return createPollingBackend({ pollInterval: config.pollInterval ?? 1000 }, backend);
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=workers-logs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workers-logs.js","sourceRoot":"","sources":["../../src/cloudflare/workers-logs.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
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
|
package/dist/constants.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/constants.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
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
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/http-backend.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/http-backend.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
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
|
package/dist/http-backend.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-backend.js","sourceRoot":"","sources":["../src/http-backend.ts"],"names":[],"mappings":"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"}
|
package/dist/observe.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Effect, Queue } from "effect";
|
|
2
|
-
import type { Log, LogFilter, LogStream } from "./types";
|
|
3
|
-
import { Schema } from "@effect/schema";
|
|
4
|
-
declare const ObservabilityError_base: Schema.TaggedErrorClass<ObservabilityError, "ObservabilityError", {
|
|
5
|
-
readonly _tag: Schema.tag<"ObservabilityError">;
|
|
6
|
-
} & {
|
|
7
|
-
cause: typeof Schema.Unknown;
|
|
8
|
-
message: Schema.optional<typeof Schema.String>;
|
|
9
|
-
stack: Schema.optional<typeof Schema.String>;
|
|
10
|
-
}>;
|
|
11
|
-
export declare class ObservabilityError extends ObservabilityError_base {
|
|
12
|
-
}
|
|
13
|
-
export declare function createObservabilityError(cause: unknown): ObservabilityError;
|
|
14
|
-
export interface ObserveResource {
|
|
15
|
-
start(): Effect.Effect<LogStream, ObservabilityError>;
|
|
16
|
-
stop(): Effect.Effect<void, ObservabilityError>;
|
|
17
|
-
query(filter: LogFilter): Effect.Effect<Log[], ObservabilityError>;
|
|
18
|
-
}
|
|
19
|
-
export interface Backend {
|
|
20
|
-
start(): Effect.Effect<LogStream, ObservabilityError>;
|
|
21
|
-
stop(): Effect.Effect<void, ObservabilityError>;
|
|
22
|
-
}
|
|
23
|
-
export declare function createObserveResource(backend: Backend): ObserveResource;
|
|
24
|
-
export declare function createLogStreamFromQueue(queue: Queue.Queue<Log>): LogStream;
|
|
25
|
-
export {};
|
|
26
|
-
//# sourceMappingURL=observe.d.ts.map
|
package/dist/observe.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { Effect, Queue, Runtime, Stream } from "effect";
|
|
2
|
-
import { Schema } from "@effect/schema";
|
|
3
|
-
import { QUEUE_DRAIN_LIMIT, QUEUE_DRAIN_TIMEOUT_MS, QUEUE_TAKE_TIMEOUT_MS } from "./constants";
|
|
4
|
-
export class ObservabilityError extends Schema.TaggedError()("ObservabilityError", {
|
|
5
|
-
cause: Schema.Unknown,
|
|
6
|
-
message: Schema.optional(Schema.String),
|
|
7
|
-
stack: Schema.optional(Schema.String)
|
|
8
|
-
}) {
|
|
9
|
-
}
|
|
10
|
-
export function createObservabilityError(cause) {
|
|
11
|
-
const error = cause instanceof Error ? cause : new Error(String(cause));
|
|
12
|
-
return new ObservabilityError({
|
|
13
|
-
cause,
|
|
14
|
-
message: error.message,
|
|
15
|
-
stack: error.stack
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
export function createObserveResource(backend) {
|
|
19
|
-
return {
|
|
20
|
-
start() {
|
|
21
|
-
return backend.start();
|
|
22
|
-
},
|
|
23
|
-
stop() {
|
|
24
|
-
return backend.stop();
|
|
25
|
-
},
|
|
26
|
-
query(filter) {
|
|
27
|
-
return Effect.acquireUseRelease(backend.start(), (stream) => Stream.fromAsyncIterable(stream, () => Effect.void).pipe(Stream.filter((log) => matchesFilter(log, filter)), Stream.runCollect, Effect.map((chunk) => Array.from(chunk)), Effect.catchAll((e) => Effect.fail(createObservabilityError(e)))), () => backend.stop().pipe(Effect.catchAll(() => Effect.void)));
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function matchesFilter(log, filter) {
|
|
32
|
-
if (filter.requestId && log.requestId !== filter.requestId)
|
|
33
|
-
return false;
|
|
34
|
-
if (filter.stage && log.stage !== filter.stage)
|
|
35
|
-
return false;
|
|
36
|
-
if (filter.action && log.action !== filter.action)
|
|
37
|
-
return false;
|
|
38
|
-
if (filter.status && log.status !== filter.status)
|
|
39
|
-
return false;
|
|
40
|
-
if (filter.since && log.timestamp) {
|
|
41
|
-
const logTime = new Date(log.timestamp).getTime();
|
|
42
|
-
if (logTime < filter.since.getTime())
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
if (filter.until && log.timestamp) {
|
|
46
|
-
const logTime = new Date(log.timestamp).getTime();
|
|
47
|
-
if (logTime > filter.until.getTime())
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
export function createLogStreamFromQueue(queue) {
|
|
53
|
-
const runtime = Runtime.defaultRuntime;
|
|
54
|
-
return {
|
|
55
|
-
async *[Symbol.asyncIterator]() {
|
|
56
|
-
try {
|
|
57
|
-
while (true) {
|
|
58
|
-
const log = await Runtime.runPromise(runtime)(Queue.take(queue).pipe(Effect.timeout(`${QUEUE_TAKE_TIMEOUT_MS} millis`), Effect.catchAll(() => Effect.succeed(null))));
|
|
59
|
-
if (log === null)
|
|
60
|
-
break;
|
|
61
|
-
yield log;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
finally {
|
|
65
|
-
const remaining = [];
|
|
66
|
-
try {
|
|
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))));
|
|
69
|
-
if (log === null)
|
|
70
|
-
break;
|
|
71
|
-
remaining.push(log);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
// Ignore
|
|
76
|
-
}
|
|
77
|
-
for (const log of remaining) {
|
|
78
|
-
yield log;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=observe.js.map
|
package/dist/observe.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"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"}
|
package/dist/prd/define-prd.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/prd/define-prd.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/prd/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
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
|
package/dist/prd/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/prd/index.js
DELETED
package/dist/prd/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|