@pattern-js/runtime-node 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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/dist/bin/pattern.d.ts +20 -0
  4. package/dist/bin/pattern.d.ts.map +1 -0
  5. package/dist/bin/pattern.js +365 -0
  6. package/dist/bin/pattern.js.map +1 -0
  7. package/dist/cli.d.ts +21 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +75 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/filesystem.d.ts +38 -0
  12. package/dist/filesystem.d.ts.map +1 -0
  13. package/dist/filesystem.js +59 -0
  14. package/dist/filesystem.js.map +1 -0
  15. package/dist/http.d.ts +94 -0
  16. package/dist/http.d.ts.map +1 -0
  17. package/dist/http.js +799 -0
  18. package/dist/http.js.map +1 -0
  19. package/dist/index.d.ts +21 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +23 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/load/generator.d.ts +19 -0
  24. package/dist/load/generator.d.ts.map +1 -0
  25. package/dist/load/generator.js +94 -0
  26. package/dist/load/generator.js.map +1 -0
  27. package/dist/load/index.d.ts +43 -0
  28. package/dist/load/index.d.ts.map +1 -0
  29. package/dist/load/index.js +87 -0
  30. package/dist/load/index.js.map +1 -0
  31. package/dist/load/recorder.d.ts +36 -0
  32. package/dist/load/recorder.d.ts.map +1 -0
  33. package/dist/load/recorder.js +106 -0
  34. package/dist/load/recorder.js.map +1 -0
  35. package/dist/load/report.d.ts +28 -0
  36. package/dist/load/report.d.ts.map +1 -0
  37. package/dist/load/report.js +84 -0
  38. package/dist/load/report.js.map +1 -0
  39. package/dist/load/types.d.ts +85 -0
  40. package/dist/load/types.d.ts.map +1 -0
  41. package/dist/load/types.js +51 -0
  42. package/dist/load/types.js.map +1 -0
  43. package/dist/mods.d.ts +23 -0
  44. package/dist/mods.d.ts.map +1 -0
  45. package/dist/mods.js +48 -0
  46. package/dist/mods.js.map +1 -0
  47. package/dist/project.d.ts +94 -0
  48. package/dist/project.d.ts.map +1 -0
  49. package/dist/project.js +168 -0
  50. package/dist/project.js.map +1 -0
  51. package/dist/schedule.d.ts +33 -0
  52. package/dist/schedule.d.ts.map +1 -0
  53. package/dist/schedule.js +132 -0
  54. package/dist/schedule.js.map +1 -0
  55. package/dist/trace/index.d.ts +32 -0
  56. package/dist/trace/index.d.ts.map +1 -0
  57. package/dist/trace/index.js +48 -0
  58. package/dist/trace/index.js.map +1 -0
  59. package/dist/trace/memory.d.ts +83 -0
  60. package/dist/trace/memory.d.ts.map +1 -0
  61. package/dist/trace/memory.js +260 -0
  62. package/dist/trace/memory.js.map +1 -0
  63. package/dist/trace/sqlite.d.ts +80 -0
  64. package/dist/trace/sqlite.d.ts.map +1 -0
  65. package/dist/trace/sqlite.js +344 -0
  66. package/dist/trace/sqlite.js.map +1 -0
  67. package/dist/worker/entry.d.ts +16 -0
  68. package/dist/worker/entry.d.ts.map +1 -0
  69. package/dist/worker/entry.js +135 -0
  70. package/dist/worker/entry.js.map +1 -0
  71. package/dist/worker-pool.d.ts +49 -0
  72. package/dist/worker-pool.d.ts.map +1 -0
  73. package/dist/worker-pool.js +203 -0
  74. package/dist/worker-pool.js.map +1 -0
  75. package/dist/ws-registry.d.ts +39 -0
  76. package/dist/ws-registry.d.ts.map +1 -0
  77. package/dist/ws-registry.js +99 -0
  78. package/dist/ws-registry.js.map +1 -0
  79. package/dist/ws.d.ts +72 -0
  80. package/dist/ws.d.ts.map +1 -0
  81. package/dist/ws.js +236 -0
  82. package/dist/ws.js.map +1 -0
  83. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @pattern-js/runtime-node — the Node runtime adapter for Pattern.
3
+ *
4
+ * Thin by design: it binds external sources (HTTP, WebSocket, CLI, schedule) to
5
+ * boundary triggers, provides a worker-thread pool transport for isolation, a
6
+ * socket-bound connection registry, and optional persistence sinks. All
7
+ * platform code lives here so `@pattern-js/core` stays runtime-neutral (§4, §7).
8
+ */
9
+ export { HttpHost, createHttpHost, type HttpHostOptions } from "./http.js";
10
+ export { FileStorage, localFs, memoryFs, toFilesystem, FilesystemRegistry, filesystems, provideFilesystem, FILESYSTEMS_SERVICE, type Filesystem, type StatEntry, type FileInfo, } from "./filesystem.js";
11
+ export { runCli, type CliHostOptions } from "./cli.js";
12
+ export { WsHost, createWsHost, type WsBinding, type WsHostOptions } from "./ws.js";
13
+ export { NodeConnectionRegistry } from "./ws-registry.js";
14
+ export { WorkerPoolTransport, type WorkerPoolOptions } from "./worker-pool.js";
15
+ export { ScheduleHost, createScheduleHost, cronMatcher } from "./schedule.js";
16
+ export { jsonlTraceSink, createTraceStore, MemoryTraceStore, SqliteTraceStore, openSqliteTraceStore, type CreateTraceStoreOptions, type MemoryTraceStoreOptions, type SqliteTraceStoreOptions, } from "./trace/index.js";
17
+ export { loadMods, type LoadModsOptions } from "./mods.js";
18
+ export { loadProject, loadWorkflowDir, defineConfig, type PatternConfig, type LoadedProject, } from "./project.js";
19
+ export { runLoad, loadScenario, resolveScenario, FlightRecorder, runStage, summarize, type LoadOptions, type LoadReport, type LoadScenario, type LoadStage, type LoadRequest, type RequestSample, type FlightRecording, type OpStat, } from "./load/index.js";
20
+ export { Engine, createEngine } from "@pattern-js/core";
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,QAAQ,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,eAAe,EACf,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,OAAO,EACP,YAAY,EACZ,eAAe,EACf,cAAc,EACd,QAAQ,EACR,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,MAAM,GACZ,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @pattern-js/runtime-node — the Node runtime adapter for Pattern.
3
+ *
4
+ * Thin by design: it binds external sources (HTTP, WebSocket, CLI, schedule) to
5
+ * boundary triggers, provides a worker-thread pool transport for isolation, a
6
+ * socket-bound connection registry, and optional persistence sinks. All
7
+ * platform code lives here so `@pattern-js/core` stays runtime-neutral (§4, §7).
8
+ */
9
+ export { HttpHost, createHttpHost } from "./http.js";
10
+ export { FileStorage, localFs, memoryFs, toFilesystem, FilesystemRegistry, filesystems, provideFilesystem, FILESYSTEMS_SERVICE, } from "./filesystem.js";
11
+ export { runCli } from "./cli.js";
12
+ export { WsHost, createWsHost } from "./ws.js";
13
+ export { NodeConnectionRegistry } from "./ws-registry.js";
14
+ export { WorkerPoolTransport } from "./worker-pool.js";
15
+ export { ScheduleHost, createScheduleHost, cronMatcher } from "./schedule.js";
16
+ export { jsonlTraceSink, createTraceStore, MemoryTraceStore, SqliteTraceStore, openSqliteTraceStore, } from "./trace/index.js";
17
+ export { loadMods } from "./mods.js";
18
+ export { loadProject, loadWorkflowDir, defineConfig, } from "./project.js";
19
+ // Load testing (`pattern load`): open-loop generator + the engine flight recorder.
20
+ export { runLoad, loadScenario, resolveScenario, FlightRecorder, runStage, summarize, } from "./load/index.js";
21
+ // Re-export the Engine for convenience so apps can `import { Engine } from "@pattern-js/runtime-node"`.
22
+ export { Engine, createEngine } from "@pattern-js/core";
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAwB,MAAM,WAAW,CAAC;AAC3E,OAAO,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GAIpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAuB,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAsC,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAA0B,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GAIrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAwB,MAAM,WAAW,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,eAAe,EACf,YAAY,GAGb,MAAM,cAAc,CAAC;AAEtB,mFAAmF;AACnF,OAAO,EACL,OAAO,EACP,YAAY,EACZ,eAAe,EACf,cAAc,EACd,QAAQ,EACR,SAAS,GASV,MAAM,iBAAiB,CAAC;AAEzB,wGAAwG;AACxG,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The open-loop request generator. Requests launch at a fixed arrival rate on
3
+ * a schedule — NOT after the previous one returns. That distinction is the
4
+ * whole point: closed-loop (fixed concurrency) self-throttles when the server
5
+ * slows, so it measures the server's pace, not its capacity. Open-loop keeps
6
+ * the pressure constant and lets latency reveal the ceiling.
7
+ *
8
+ * Latency is measured from the SCHEDULED time, not the send time — so a
9
+ * generator that itself falls behind still attributes that lag to latency
10
+ * (coordinated-omission-free).
11
+ */
12
+ import type { LoadRequest, LoadStage, RequestSample } from "./types.js";
13
+ /**
14
+ * Run one constant-rate stage. Fires `rate` req/s for `durationMs`, launching
15
+ * each request without awaiting it (open-loop), bounded by `maxInflight` as a
16
+ * memory backstop. Resolves once every launched request has settled.
17
+ */
18
+ export declare function runStage(baseUrl: string, stage: LoadStage, requests: LoadRequest[], maxInflight: number): Promise<RequestSample[]>;
19
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/load/generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqDxE;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,WAAW,EAAE,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,EAAE,CAAC,CA2B1B"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * The open-loop request generator. Requests launch at a fixed arrival rate on
3
+ * a schedule — NOT after the previous one returns. That distinction is the
4
+ * whole point: closed-loop (fixed concurrency) self-throttles when the server
5
+ * slows, so it measures the server's pace, not its capacity. Open-loop keeps
6
+ * the pressure constant and lets latency reveal the ceiling.
7
+ *
8
+ * Latency is measured from the SCHEDULED time, not the send time — so a
9
+ * generator that itself falls behind still attributes that lag to latency
10
+ * (coordinated-omission-free).
11
+ */
12
+ const sleep = (ms) => new Promise((r) => setTimeout(r, Math.max(0, ms)));
13
+ /** Build a weighted picker over the request mix (cumulative-weight search). */
14
+ function picker(requests) {
15
+ const cum = [];
16
+ let total = 0;
17
+ for (const r of requests) {
18
+ total += r.weight ?? 1;
19
+ cum.push(total);
20
+ }
21
+ return () => {
22
+ const x = Math.random() * total;
23
+ for (let i = 0; i < cum.length; i++)
24
+ if (x < cum[i])
25
+ return requests[i];
26
+ return requests[requests.length - 1];
27
+ };
28
+ }
29
+ const labelOf = (r) => r.label ?? `${r.method} ${r.path}`;
30
+ async function fire(baseUrl, req, scheduledAt, sink) {
31
+ const sentAt = performance.now();
32
+ const url = /^https?:\/\//.test(req.path) ? req.path : `${baseUrl}${req.path}`;
33
+ const hasBody = req.body !== undefined && req.method !== "GET" && req.method !== "HEAD";
34
+ const body = hasBody ? (typeof req.body === "string" ? req.body : JSON.stringify(req.body)) : undefined;
35
+ const headers = { ...(hasBody && typeof req.body !== "string" ? { "content-type": "application/json" } : {}), ...req.headers };
36
+ try {
37
+ const res = await fetch(url, { method: req.method, headers, body });
38
+ const buf = await res.arrayBuffer(); // drain so timing includes the full body
39
+ sink.push({
40
+ scheduledAt,
41
+ sentAt,
42
+ endedAt: performance.now(),
43
+ status: res.status,
44
+ ok: res.ok,
45
+ bytes: buf.byteLength,
46
+ label: labelOf(req),
47
+ });
48
+ }
49
+ catch (err) {
50
+ sink.push({
51
+ scheduledAt,
52
+ sentAt,
53
+ endedAt: performance.now(),
54
+ status: 0,
55
+ ok: false,
56
+ bytes: 0,
57
+ label: labelOf(req),
58
+ error: err instanceof Error ? err.message : String(err),
59
+ });
60
+ }
61
+ }
62
+ /**
63
+ * Run one constant-rate stage. Fires `rate` req/s for `durationMs`, launching
64
+ * each request without awaiting it (open-loop), bounded by `maxInflight` as a
65
+ * memory backstop. Resolves once every launched request has settled.
66
+ */
67
+ export async function runStage(baseUrl, stage, requests, maxInflight) {
68
+ const samples = [];
69
+ const pick = picker(requests);
70
+ const interval = 1000 / stage.rate;
71
+ const count = Math.max(1, Math.round((stage.rate * stage.durationMs) / 1000));
72
+ const t0 = performance.now();
73
+ const inflight = new Set();
74
+ let dropped = 0;
75
+ for (let i = 0; i < count; i++) {
76
+ const due = t0 + i * interval;
77
+ const wait = due - performance.now();
78
+ if (wait > 1)
79
+ await sleep(wait);
80
+ if (inflight.size >= maxInflight) {
81
+ dropped++;
82
+ continue; // backstop: never let the queue grow unbounded
83
+ }
84
+ const p = fire(baseUrl, pick(), due, samples).finally(() => inflight.delete(p));
85
+ inflight.add(p);
86
+ }
87
+ await Promise.all(inflight);
88
+ if (dropped > 0) {
89
+ // Surfaced, never silent — a dropped request means the cap bit.
90
+ console.error(` ! ${dropped} request(s) skipped (maxInflight=${maxInflight} reached — server can't keep up at ${stage.rate}/s)`);
91
+ }
92
+ return samples;
93
+ }
94
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/load/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * `pattern load` — boot the app in-process, attach the flight recorder, drive
3
+ * open-loop HTTP load at it, and report client latency joined with engine span
4
+ * attribution. Evolutive by design: scenarios are data, so SSE/WS/chat-turn
5
+ * scenarios and before/after comparisons slot in later without changing the
6
+ * shape here.
7
+ */
8
+ import { type StageStats } from "./report.js";
9
+ import { type LoadScenario } from "./types.js";
10
+ export { FlightRecorder } from "./recorder.js";
11
+ export { runStage } from "./generator.js";
12
+ export { summarize } from "./report.js";
13
+ export * from "./types.js";
14
+ export interface LoadOptions {
15
+ /** Override the scenario's stages with a saturation sweep. */
16
+ sweep?: boolean;
17
+ /** Sweep rate steps (req/s). */
18
+ sweepRates?: number[];
19
+ /** p99 budget (ms) that defines the sweep's knee. */
20
+ p99BudgetMs?: number;
21
+ /** Write the full report as JSON here. */
22
+ out?: string;
23
+ /** Where to fire when not booting in-process. */
24
+ baseUrl?: string;
25
+ }
26
+ /** Load + validate a scenario file (JSON). */
27
+ export declare function loadScenario(file: string): LoadScenario;
28
+ export interface LoadReport {
29
+ scenario: string;
30
+ baseUrl: string;
31
+ booted: boolean;
32
+ stages: StageStats[];
33
+ startedAt: number;
34
+ }
35
+ /**
36
+ * Run a scenario. Boots the project in-process (unless `entry:false` or a
37
+ * `baseUrl` is given), warms up, runs each measured stage (or a sweep) with a
38
+ * fresh recorder window, prints as it goes, and returns the full report.
39
+ */
40
+ export declare function runLoad(scenario: LoadScenario, opts?: LoadOptions, startedAt?: number): Promise<LoadReport>;
41
+ /** Resolve a scenario path relative to cwd (CLI helper). */
42
+ export declare function resolveScenario(file: string): string;
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/load/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAsB,KAAK,YAAY,EAAkB,MAAM,YAAY,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,cAAc,YAAY,CAAC;AAE3B,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CASvD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,GAAE,WAAgB,EAAE,SAAS,SAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CA8CzH;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * `pattern load` — boot the app in-process, attach the flight recorder, drive
3
+ * open-loop HTTP load at it, and report client latency joined with engine span
4
+ * attribution. Evolutive by design: scenarios are data, so SSE/WS/chat-turn
5
+ * scenarios and before/after comparisons slot in later without changing the
6
+ * shape here.
7
+ */
8
+ import { existsSync, readFileSync } from "node:fs";
9
+ import { resolve } from "node:path";
10
+ import { loadProject } from "../project.js";
11
+ import { FlightRecorder } from "./recorder.js";
12
+ import { runStage } from "./generator.js";
13
+ import { printStage, printSweepVerdict, summarize } from "./report.js";
14
+ import { LoadScenarioSchema } from "./types.js";
15
+ export { FlightRecorder } from "./recorder.js";
16
+ export { runStage } from "./generator.js";
17
+ export { summarize } from "./report.js";
18
+ export * from "./types.js";
19
+ const DEFAULT_SWEEP = [10, 25, 50, 100, 200, 400, 800];
20
+ /** Load + validate a scenario file (JSON). */
21
+ export function loadScenario(file) {
22
+ if (!existsSync(file))
23
+ throw new Error(`scenario not found: ${file}`);
24
+ const raw = JSON.parse(readFileSync(file, "utf8"));
25
+ const parsed = LoadScenarioSchema.safeParse(raw);
26
+ if (!parsed.success) {
27
+ const first = parsed.error.issues[0];
28
+ throw new Error(`invalid scenario: ${first?.path.join(".")}: ${first?.message}`);
29
+ }
30
+ return parsed.data;
31
+ }
32
+ /**
33
+ * Run a scenario. Boots the project in-process (unless `entry:false` or a
34
+ * `baseUrl` is given), warms up, runs each measured stage (or a sweep) with a
35
+ * fresh recorder window, prints as it goes, and returns the full report.
36
+ */
37
+ export async function runLoad(scenario, opts = {}, startedAt = Date.now()) {
38
+ const recorder = new FlightRecorder();
39
+ let baseUrl = opts.baseUrl ?? scenario.baseUrl ?? "";
40
+ let close;
41
+ let booted = false;
42
+ // Boot in-process unless told to target an external server.
43
+ const shouldBoot = scenario.entry !== false && !opts.baseUrl && !scenario.baseUrl;
44
+ if (shouldBoot) {
45
+ const project = await loadProject();
46
+ project.engine.onTrace(recorder); // the unfair advantage: same-process spans
47
+ const started = await project.start();
48
+ baseUrl = `http://localhost:${started.ports[0]}`;
49
+ booted = true;
50
+ close = started.close;
51
+ }
52
+ if (!baseUrl)
53
+ throw new Error("no target: set a scenario `baseUrl`, pass --url, or boot in-process with an `entry`");
54
+ try {
55
+ if (scenario.warmup) {
56
+ process.stdout.write(`\n warming up (${scenario.warmup.rate}/s for ${scenario.warmup.durationMs / 1000}s)…`);
57
+ await runStage(baseUrl, scenario.warmup, scenario.requests, scenario.maxInflight);
58
+ process.stdout.write(" done\n");
59
+ }
60
+ const stages = opts.sweep
61
+ ? (opts.sweepRates ?? DEFAULT_SWEEP).map((rate) => ({ rate, durationMs: scenario.stages[0]?.durationMs ?? 5000 }))
62
+ : scenario.stages;
63
+ const results = [];
64
+ for (const stage of stages) {
65
+ recorder.start(performance.now());
66
+ const samples = await runStage(baseUrl, stage, scenario.requests, scenario.maxInflight);
67
+ const flight = recorder.stop(performance.now());
68
+ const stats = summarize(stage, samples, booted ? flight : undefined);
69
+ results.push(stats);
70
+ printStage(stats);
71
+ // Sweep early-exit: once past the knee, climbing higher just hurts.
72
+ if (opts.sweep && (stats.p99 > (opts.p99BudgetMs ?? 1000) || stats.errors / Math.max(1, stats.requests) > 0.05))
73
+ break;
74
+ }
75
+ if (opts.sweep)
76
+ printSweepVerdict(results, opts.p99BudgetMs ?? 1000);
77
+ return { scenario: "", baseUrl, booted, stages: results, startedAt };
78
+ }
79
+ finally {
80
+ await close?.();
81
+ }
82
+ }
83
+ /** Resolve a scenario path relative to cwd (CLI helper). */
84
+ export function resolveScenario(file) {
85
+ return resolve(process.cwd(), file);
86
+ }
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/load/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * The flight recorder — a `TraceSink` that turns the engine's per-node spans
3
+ * into load attribution. This is what generic HTTP load tools can't do: while
4
+ * the client measures latency from outside, the recorder watches every node
5
+ * run from inside the same process and, when the window closes, says which ops
6
+ * dominated the time and how deep run concurrency got.
7
+ *
8
+ * Correlation is by TIME WINDOW, not per-request: during a measured stage we
9
+ * aggregate all spans by op type. "p99 latency is mostly store.put" needs the
10
+ * op rollup, not a request→run join — and the window approach is robust to
11
+ * sub-runs, streams, and fan-out that a 1:1 join would mangle.
12
+ */
13
+ import type { SpanData, TraceSink } from "@pattern-js/core";
14
+ import type { FlightRecording } from "./types.js";
15
+ export declare class FlightRecorder implements TraceSink {
16
+ private recording;
17
+ private windowStart;
18
+ private spans;
19
+ private runs;
20
+ private runErrors;
21
+ private concurrency;
22
+ private maxConcurrency;
23
+ /** op type → durations (ms) of every span seen this window. */
24
+ private durations;
25
+ private errors;
26
+ /** Begin (or restart) a measurement window — clears the prior rollup. */
27
+ start(now: number): void;
28
+ /** Close the window and roll up. `now` stamps the wall duration. */
29
+ stop(now: number): FlightRecording;
30
+ onRunStart(): void;
31
+ onRunEnd(run: {
32
+ status: "ok" | "error";
33
+ }): void;
34
+ onSpanEnd(span: SpanData): void;
35
+ }
36
+ //# sourceMappingURL=recorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/load/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,YAAY,CAAC;AAe1D,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAK;IAC3B,+DAA+D;IAC/D,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAA6B;IAE3C,yEAAyE;IACzE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAaxB,oEAAoE;IACpE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IA4BlC,UAAU,IAAI,IAAI;IAMlB,QAAQ,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI;IAK/C,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAWhC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * The flight recorder — a `TraceSink` that turns the engine's per-node spans
3
+ * into load attribution. This is what generic HTTP load tools can't do: while
4
+ * the client measures latency from outside, the recorder watches every node
5
+ * run from inside the same process and, when the window closes, says which ops
6
+ * dominated the time and how deep run concurrency got.
7
+ *
8
+ * Correlation is by TIME WINDOW, not per-request: during a measured stage we
9
+ * aggregate all spans by op type. "p99 latency is mostly store.put" needs the
10
+ * op rollup, not a request→run join — and the window approach is robust to
11
+ * sub-runs, streams, and fan-out that a 1:1 join would mangle.
12
+ */
13
+ /** A node span's op type, or null for the run-root span (no op — skip it so
14
+ * the rollup is pure per-op work, not "the whole run" double-counting). */
15
+ function opOf(span) {
16
+ const op = span.attributes?.["pattern.op.type"];
17
+ return typeof op === "string" && op ? op : null;
18
+ }
19
+ const percentile = (sorted, p) => {
20
+ if (!sorted.length)
21
+ return 0;
22
+ const i = Math.min(sorted.length - 1, Math.floor((p / 100) * sorted.length));
23
+ return sorted[i];
24
+ };
25
+ export class FlightRecorder {
26
+ recording = false;
27
+ windowStart = 0;
28
+ spans = 0;
29
+ runs = 0;
30
+ runErrors = 0;
31
+ concurrency = 0;
32
+ maxConcurrency = 0;
33
+ /** op type → durations (ms) of every span seen this window. */
34
+ durations = new Map();
35
+ errors = new Map();
36
+ /** Begin (or restart) a measurement window — clears the prior rollup. */
37
+ start(now) {
38
+ this.recording = true;
39
+ this.windowStart = now;
40
+ this.spans = 0;
41
+ this.runs = 0;
42
+ this.runErrors = 0;
43
+ // Concurrency is a live gauge — DON'T reset it (runs may still be in
44
+ // flight from a warmup); just reset the observed max for this window.
45
+ this.maxConcurrency = this.concurrency;
46
+ this.durations.clear();
47
+ this.errors.clear();
48
+ }
49
+ /** Close the window and roll up. `now` stamps the wall duration. */
50
+ stop(now) {
51
+ this.recording = false;
52
+ const ops = [];
53
+ for (const [op, ds] of this.durations) {
54
+ const sorted = [...ds].sort((a, b) => a - b);
55
+ const total = sorted.reduce((s, d) => s + d, 0);
56
+ ops.push({
57
+ op,
58
+ count: sorted.length,
59
+ totalMs: Math.round(total),
60
+ selfMs: Math.round(total), // self == total for now (no child subtraction)
61
+ p50: Math.round(percentile(sorted, 50) * 100) / 100,
62
+ p99: Math.round(percentile(sorted, 99) * 100) / 100,
63
+ errors: this.errors.get(op) ?? 0,
64
+ });
65
+ }
66
+ ops.sort((a, b) => b.totalMs - a.totalMs);
67
+ return {
68
+ spans: this.spans,
69
+ runs: this.runs,
70
+ runErrors: this.runErrors,
71
+ maxConcurrency: this.maxConcurrency,
72
+ ops,
73
+ windowMs: now - this.windowStart,
74
+ };
75
+ }
76
+ // ── TraceSink ──
77
+ onRunStart() {
78
+ this.concurrency += 1;
79
+ if (this.concurrency > this.maxConcurrency)
80
+ this.maxConcurrency = this.concurrency;
81
+ if (this.recording)
82
+ this.runs += 1;
83
+ }
84
+ onRunEnd(run) {
85
+ this.concurrency = Math.max(0, this.concurrency - 1);
86
+ if (this.recording && run.status === "error")
87
+ this.runErrors += 1;
88
+ }
89
+ onSpanEnd(span) {
90
+ if (!this.recording)
91
+ return;
92
+ const op = opOf(span);
93
+ if (op === null)
94
+ return; // run-root span — counted via onRunStart, not here
95
+ this.spans += 1;
96
+ const dur = span.endTime - span.startTime;
97
+ const arr = this.durations.get(op);
98
+ if (arr)
99
+ arr.push(dur);
100
+ else
101
+ this.durations.set(op, [dur]);
102
+ if (span.status === "error")
103
+ this.errors.set(op, (this.errors.get(op) ?? 0) + 1);
104
+ }
105
+ }
106
+ //# sourceMappingURL=recorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/load/recorder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Stage statistics + the terminal report. Latency percentiles come from the
3
+ * SCHEDULED-time deltas (queueing included); the flight recording, when
4
+ * present, is printed beneath each stage so the bottleneck reads next to the
5
+ * symptom.
6
+ */
7
+ import type { FlightRecording, LoadStage, RequestSample } from "./types.js";
8
+ export interface StageStats {
9
+ stage: LoadStage;
10
+ requests: number;
11
+ ok: number;
12
+ errors: number;
13
+ achievedRate: number;
14
+ /** Latency from scheduled→ended, ms. */
15
+ p50: number;
16
+ p90: number;
17
+ p99: number;
18
+ max: number;
19
+ mean: number;
20
+ bytesTotal: number;
21
+ byStatus: Record<string, number>;
22
+ flight?: FlightRecording;
23
+ }
24
+ export declare function summarize(stage: LoadStage, samples: RequestSample[], flight?: FlightRecording): StageStats;
25
+ export declare function printStage(s: StageStats): void;
26
+ /** The saturation verdict: the last stage whose p99 + error rate stayed sane. */
27
+ export declare function printSweepVerdict(stages: StageStats[], p99BudgetMs: number): void;
28
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/load/report.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAQD,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,UAAU,CAwB1G;AAaD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CA0B9C;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAgBjF"}