@zackbart/connecta 0.7.4 → 0.7.6
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/CHANGELOG.md +69 -0
- package/README.md +4 -2
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +11 -0
- package/dist/execute.js.map +1 -1
- package/dist/executor-admission.d.ts +18 -1
- package/dist/executor-admission.d.ts.map +1 -1
- package/dist/executor-admission.js +82 -3
- package/dist/executor-admission.js.map +1 -1
- package/dist/executors/quickjs-protocol.d.ts +1 -0
- package/dist/executors/quickjs-protocol.d.ts.map +1 -1
- package/dist/executors/quickjs-protocol.js +7 -4
- package/dist/executors/quickjs-protocol.js.map +1 -1
- package/dist/executors/quickjs-runtime.d.ts.map +1 -1
- package/dist/executors/quickjs-runtime.js +22 -9
- package/dist/executors/quickjs-runtime.js.map +1 -1
- package/dist/executors/quickjs.d.ts.map +1 -1
- package/dist/executors/quickjs.js +44 -10
- package/dist/executors/quickjs.js.map +1 -1
- package/dist/index.d.ts +30 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +175 -16
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
- package/src/execute.ts +11 -0
- package/src/executor-admission.ts +90 -3
- package/src/executors/quickjs-protocol.ts +7 -4
- package/src/executors/quickjs-runtime.ts +31 -9
- package/src/executors/quickjs.ts +61 -12
- package/src/index.ts +87 -1
- package/src/server.ts +217 -29
- package/src/types.ts +27 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,75 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this package are documented here.
|
|
4
4
|
|
|
5
|
+
## 0.7.6 — 2026-07-27
|
|
6
|
+
|
|
7
|
+
0.7.6 gives every runtime an explicit MCP memory-pressure boundary and closes
|
|
8
|
+
three Node code-mode failure-reporting and transport gaps. Ordinary requests now
|
|
9
|
+
stop at a bounded FIFO before auth and per-request server construction, while
|
|
10
|
+
code mode retains a separate smaller pool and health/UI capacity remains
|
|
11
|
+
reserved. Existing deployments gain conservative admission defaults; operators
|
|
12
|
+
may tune the active count, queue, wait deadline, and retry hint. Node deployments
|
|
13
|
+
also get actionable missing-child guidance, bounded stderr context when a
|
|
14
|
+
QuickJS child exits abnormally, and transport-aware log truncation that
|
|
15
|
+
preserves successful results. There are no dependency, storage, or package
|
|
16
|
+
entrypoint changes.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **Bounded request admission and observable backpressure** (issue #85,
|
|
21
|
+
PR #129).
|
|
22
|
+
`/mcp` defaults to 16 active requests and 32 queued for at most five seconds.
|
|
23
|
+
Overflow returns HTTP 503 plus a stable JSON-RPC `server_overloaded` error and
|
|
24
|
+
`Retry-After`; queued cancellation removes the caller immediately, response
|
|
25
|
+
completion/error/cancellation releases exactly once, and shutdown rejects
|
|
26
|
+
queued/new work before draining active requests. `/health` reports
|
|
27
|
+
payload-free bounds, active/queued counts, rejection/cancellation totals, and
|
|
28
|
+
queue-wait observations while operator routes bypass the MCP pool.
|
|
29
|
+
- **Separate fallback admission for one-method code executors.** Executors that
|
|
30
|
+
do not implement `acquire()` receive a default 2-active/8-queued pool.
|
|
31
|
+
Already-bounded executors keep their own limits, and the built-in QuickJS pool
|
|
32
|
+
now exposes the same health snapshot.
|
|
33
|
+
- **A split-process real-TCP load/soak harness** (`npm run load:admission`) for
|
|
34
|
+
the 100/500/1,000/5,000-call matrix and a repeated 15,000-call soak, recording
|
|
35
|
+
verified outcomes, throughput, p50/p95/p99, server-only peak/RSS-after-GC,
|
|
36
|
+
and live heap without turning host-specific numbers into CI assertions.
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- **Abnormal QuickJS child exits now include bounded stderr context** (issue
|
|
41
|
+
#118, PR #126). The parent retains only the most recent 8 KiB, waits for stdio
|
|
42
|
+
to close so final crash output is available, and includes the tail in startup
|
|
43
|
+
and runtime exit diagnostics without allowing stderr to grow unbounded.
|
|
44
|
+
- **Missing QuickJS child files fail before `fork()` with an actionable error**
|
|
45
|
+
(issue #119, PR #127). The message names the exact expected
|
|
46
|
+
`quickjs-child.js` path and tells bundled Node deployments to externalize
|
|
47
|
+
`@zackbart/connecta` or its `quickjs` subpath so the published child file
|
|
48
|
+
remains on disk.
|
|
49
|
+
- **QuickJS log truncation now budgets the bytes used by the complete IPC
|
|
50
|
+
transport** (issue #120, PR #128). The existing entry and character caps
|
|
51
|
+
remain, with an additional 512 KiB allowance measured after both JSON
|
|
52
|
+
encodings and space reserved for the truncation marker, preventing
|
|
53
|
+
escape-heavy logs from displacing an otherwise valid result in the 1 MiB
|
|
54
|
+
child-message envelope.
|
|
55
|
+
|
|
56
|
+
## 0.7.5 — 2026-07-27
|
|
57
|
+
|
|
58
|
+
0.7.5 makes the deployable Cloudflare Worker starter match Connecta's
|
|
59
|
+
pay-as-you-opt-in runtime behavior. The default config now runs on Workers Free;
|
|
60
|
+
accounts that want sandboxed `execute_code` add one paid Worker Loader binding,
|
|
61
|
+
and the existing optional `env.LOADER` wiring turns code mode on without a
|
|
62
|
+
source edit. There are no package API or runtime changes.
|
|
63
|
+
|
|
64
|
+
### Changed
|
|
65
|
+
|
|
66
|
+
- **The Cloudflare Worker starter is now free-tier compatible by default.**
|
|
67
|
+
Its Worker Loader binding is an explicit paid-plan opt-in: adding that one
|
|
68
|
+
Wrangler block makes the already-optional `env.LOADER` register
|
|
69
|
+
`execute_code`, while leaving it absent serves the nine base meta-tools from
|
|
70
|
+
the same TypeScript. The Worker example, package README, and code-mode
|
|
71
|
+
reference now document the binding-as-switch pattern, plan requirement, and
|
|
72
|
+
deployment-owned `@cloudflare/codemode` install together.
|
|
73
|
+
|
|
5
74
|
## 0.7.4 — 2026-07-27
|
|
6
75
|
|
|
7
76
|
0.7.4 moves the built-in QuickJS executor out of the HTTP-serving process. A
|
package/README.md
CHANGED
|
@@ -170,8 +170,9 @@ Point an MCP client at `http://localhost:8787/mcp` with an
|
|
|
170
170
|
Runnable deployments live in
|
|
171
171
|
[`examples/`](https://github.com/zackbart/connecta/tree/main/examples):
|
|
172
172
|
[`worker/`](https://github.com/zackbart/connecta/tree/main/examples/worker) is a
|
|
173
|
-
|
|
174
|
-
for a real deployment;
|
|
173
|
+
free-tier-compatible Cloudflare Worker with KV and D1 adapters, and the template
|
|
174
|
+
to copy for a real deployment; adding one Worker Loader binding opts it into
|
|
175
|
+
paid Dynamic Worker code mode without changing its TypeScript;
|
|
175
176
|
[`node/`](https://github.com/zackbart/connecta/tree/main/examples/node) adds
|
|
176
177
|
toolkits and code mode to the server above;
|
|
177
178
|
[`docker/`](https://github.com/zackbart/connecta/tree/main/examples/docker) is a
|
|
@@ -190,6 +191,7 @@ endpoint, credential, and tool choices stay in your project, declared with
|
|
|
190
191
|
downstream OAuth, storage, Clerk setup, testing, and troubleshooting. Start
|
|
191
192
|
with the [meta-tools reference](https://github.com/zackbart/connecta/blob/main/docs/meta-tools.md#meta-tools-reference),
|
|
192
193
|
the [config options](https://github.com/zackbart/connecta/blob/main/docs/operations.md#running-it),
|
|
194
|
+
[request admission](https://github.com/zackbart/connecta/blob/main/docs/request-admission.md#request-admission-and-backpressure),
|
|
193
195
|
[code mode](https://github.com/zackbart/connecta/blob/main/docs/code-mode.md#code-mode-execute_code),
|
|
194
196
|
[toolkits](https://github.com/zackbart/connecta/blob/main/docs/toolkits.md#toolkits-scoped-views),
|
|
195
197
|
[operator pages](https://github.com/zackbart/connecta/blob/main/docs/operator-ui.md#status-ui),
|
package/dist/execute.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAML,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,MAAM,EAEP,MAAM,YAAY,CAAC;AAEpB,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,4BAA4B,QAAS,CAAC;AA+CnD,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,OAAO,GACd,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,sBAAsB,EACjC,MAAM,GAAE;IACN,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACvB,GACL,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8W7B;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,sBAAsB,IAG/B,UAAU;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1B,UAAS;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,KACrC,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAML,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,MAAM,EAEP,MAAM,YAAY,CAAC;AAEpB,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,4BAA4B,QAAS,CAAC;AA+CnD,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,OAAO,GACd,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,sBAAsB,EACjC,MAAM,GAAE;IACN,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACvB,GACL,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8W7B;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,sBAAsB,IAG/B,UAAU;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1B,UAAS;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,KACrC,OAAO,CAAC,UAAU,CAAC,CA6FvB;AAeD,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,aAAa,CAAC,EAAE,WAAW,CAAC;CAC7B,GACA,IAAI,CA+CN"}
|
package/dist/execute.js
CHANGED
|
@@ -380,6 +380,11 @@ export function createExecuteTool(registry, baseUrl, executor, logger, activity)
|
|
|
380
380
|
// catalogs, request scopes, or one-closure-per-tool provider arrays.
|
|
381
381
|
if (isAdmittingExecutor(executor)) {
|
|
382
382
|
lease = await executor.acquire({ signal: controller.signal });
|
|
383
|
+
if ((lease.waitMs ?? 0) > 0) {
|
|
384
|
+
logger.debug("[connecta] execute_code admitted after queue wait", {
|
|
385
|
+
waitMs: lease.waitMs,
|
|
386
|
+
});
|
|
387
|
+
}
|
|
383
388
|
}
|
|
384
389
|
const providers = await buildSandboxProviders(registry, baseUrl, logger, activity, { signal: controller.signal });
|
|
385
390
|
if (controller.signal.aborted) {
|
|
@@ -391,6 +396,12 @@ export function createExecuteTool(registry, baseUrl, executor, logger, activity)
|
|
|
391
396
|
}
|
|
392
397
|
catch (err) {
|
|
393
398
|
if (err instanceof ExecutorAdmissionError) {
|
|
399
|
+
if (err.code === "executor_overloaded") {
|
|
400
|
+
logger.warn("[connecta] execute_code admission rejected", {
|
|
401
|
+
code: err.code,
|
|
402
|
+
retryAfterMs: err.retryAfterMs,
|
|
403
|
+
});
|
|
404
|
+
}
|
|
394
405
|
const result = jsonResult({
|
|
395
406
|
error: {
|
|
396
407
|
code: err.code,
|
package/dist/execute.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AdmittingExecutor, Executor } from "./types.js";
|
|
1
|
+
import type { AdmittingExecutor, AdmissionSnapshot, Executor } from "./types.js";
|
|
2
2
|
export type ExecutorAdmissionErrorCode = "executor_overloaded" | "executor_cancelled" | "executor_closed";
|
|
3
3
|
/**
|
|
4
4
|
* A stable, machine-readable admission failure. Overload is retryable; caller
|
|
@@ -13,6 +13,8 @@ export declare class ExecutorAdmissionError extends Error {
|
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
export interface AdmissionLease {
|
|
16
|
+
/** Time spent waiting behind active work. Zero for immediate admission. */
|
|
17
|
+
readonly waitMs: number;
|
|
16
18
|
release(): void;
|
|
17
19
|
}
|
|
18
20
|
export interface AdmissionControllerOptions {
|
|
@@ -35,9 +37,18 @@ export declare class AdmissionController {
|
|
|
35
37
|
private active;
|
|
36
38
|
private closed;
|
|
37
39
|
private readonly waiters;
|
|
40
|
+
private admittedTotal;
|
|
41
|
+
private queuedTotal;
|
|
42
|
+
private rejectedTotal;
|
|
43
|
+
private cancelledTotal;
|
|
44
|
+
private closedTotal;
|
|
45
|
+
private queueWaitCount;
|
|
46
|
+
private queueWaitTotalMs;
|
|
47
|
+
private queueWaitMaxMs;
|
|
38
48
|
constructor(options: AdmissionControllerOptions);
|
|
39
49
|
get activeCount(): number;
|
|
40
50
|
get queuedCount(): number;
|
|
51
|
+
snapshot(): AdmissionSnapshot;
|
|
41
52
|
acquire(options?: {
|
|
42
53
|
signal?: AbortSignal;
|
|
43
54
|
}): Promise<AdmissionLease>;
|
|
@@ -50,4 +61,10 @@ export declare class AdmissionController {
|
|
|
50
61
|
}
|
|
51
62
|
/** Preserve the one-method Workers seam while recognizing richer Node executors. */
|
|
52
63
|
export declare function isAdmittingExecutor(executor: Executor): executor is AdmittingExecutor;
|
|
64
|
+
/**
|
|
65
|
+
* Give a structurally-compatible but otherwise unbounded executor the same
|
|
66
|
+
* admission contract as the built-in Node executor. The wrapper owns only the
|
|
67
|
+
* queue; closing the underlying runtime remains the Connecta lifecycle's job.
|
|
68
|
+
*/
|
|
69
|
+
export declare function withExecutorAdmission(executor: Executor, admission: AdmissionController): AdmittingExecutor;
|
|
53
70
|
//# sourceMappingURL=executor-admission.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-admission.d.ts","sourceRoot":"","sources":["../src/executor-admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,
|
|
1
|
+
{"version":3,"file":"executor-admission.d.ts","sourceRoot":"","sources":["../src/executor-admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EAET,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,0BAA0B,GAClC,qBAAqB,GACrB,oBAAoB,GACpB,iBAAiB,CAAC;AAEtB;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAK7C,QAAQ,CAAC,IAAI,EAAE,0BAA0B;IAJ3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAGpB,IAAI,EAAE,0BAA0B,EACzC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO;CAavC;AAED,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,IAAI,IAAI,CAAC;CACjB;AAWD,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAgBD;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAAK;gBAEf,OAAO,EAAE,0BAA0B;IAgB/C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,QAAQ,IAAI,iBAAiB;IAwB7B,OAAO,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IA+DxE,KAAK,IAAI,IAAI;IAeb,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,OAAO;CAMhB;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,GACjB,QAAQ,IAAI,iBAAiB,CAK/B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,mBAAmB,GAC7B,iBAAiB,CAyBnB"}
|
|
@@ -43,6 +43,14 @@ export class AdmissionController {
|
|
|
43
43
|
active = 0;
|
|
44
44
|
closed = false;
|
|
45
45
|
waiters = [];
|
|
46
|
+
admittedTotal = 0;
|
|
47
|
+
queuedTotal = 0;
|
|
48
|
+
rejectedTotal = 0;
|
|
49
|
+
cancelledTotal = 0;
|
|
50
|
+
closedTotal = 0;
|
|
51
|
+
queueWaitCount = 0;
|
|
52
|
+
queueWaitTotalMs = 0;
|
|
53
|
+
queueWaitMaxMs = 0;
|
|
46
54
|
constructor(options) {
|
|
47
55
|
this.concurrency = positiveWhole(options.concurrency, "concurrency");
|
|
48
56
|
this.maxQueueSize = nonNegativeWhole(options.maxQueueSize, "maxQueueSize");
|
|
@@ -55,22 +63,50 @@ export class AdmissionController {
|
|
|
55
63
|
get queuedCount() {
|
|
56
64
|
return this.waiters.length;
|
|
57
65
|
}
|
|
66
|
+
snapshot() {
|
|
67
|
+
return {
|
|
68
|
+
concurrency: this.concurrency,
|
|
69
|
+
maxQueueSize: this.maxQueueSize,
|
|
70
|
+
queueTimeoutMs: this.queueTimeoutMs,
|
|
71
|
+
retryAfterMs: this.retryAfterMs,
|
|
72
|
+
active: this.active,
|
|
73
|
+
queued: this.waiters.length,
|
|
74
|
+
closed: this.closed,
|
|
75
|
+
totals: {
|
|
76
|
+
admitted: this.admittedTotal,
|
|
77
|
+
queued: this.queuedTotal,
|
|
78
|
+
rejected: this.rejectedTotal,
|
|
79
|
+
cancelled: this.cancelledTotal,
|
|
80
|
+
closed: this.closedTotal,
|
|
81
|
+
},
|
|
82
|
+
queueWaitMs: {
|
|
83
|
+
count: this.queueWaitCount,
|
|
84
|
+
total: this.queueWaitTotalMs,
|
|
85
|
+
max: this.queueWaitMaxMs,
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
58
89
|
acquire(options = {}) {
|
|
59
90
|
if (this.closed) {
|
|
91
|
+
this.closedTotal++;
|
|
60
92
|
return Promise.reject(new ExecutorAdmissionError("executor_closed", "Executor is shutting down."));
|
|
61
93
|
}
|
|
62
94
|
if (options.signal?.aborted) {
|
|
95
|
+
this.cancelledTotal++;
|
|
63
96
|
return Promise.reject(new ExecutorAdmissionError("executor_cancelled", "Execution was cancelled before admission."));
|
|
64
97
|
}
|
|
65
98
|
if (this.active < this.concurrency) {
|
|
66
99
|
this.active++;
|
|
67
|
-
|
|
100
|
+
this.admittedTotal++;
|
|
101
|
+
return Promise.resolve(this.makeLease(0));
|
|
68
102
|
}
|
|
69
103
|
if (this.waiters.length >= this.maxQueueSize) {
|
|
104
|
+
this.rejectedTotal++;
|
|
70
105
|
return Promise.reject(this.overloaded("Executor queue is full."));
|
|
71
106
|
}
|
|
72
107
|
return new Promise((resolve, reject) => {
|
|
73
108
|
const waiter = {
|
|
109
|
+
queuedAt: Date.now(),
|
|
74
110
|
resolve,
|
|
75
111
|
reject,
|
|
76
112
|
...(options.signal ? { signal: options.signal } : {}),
|
|
@@ -79,6 +115,7 @@ export class AdmissionController {
|
|
|
79
115
|
if (!this.remove(waiter))
|
|
80
116
|
return;
|
|
81
117
|
this.cleanup(waiter);
|
|
118
|
+
this.cancelledTotal++;
|
|
82
119
|
reject(new ExecutorAdmissionError("executor_cancelled", "Execution was cancelled while queued."));
|
|
83
120
|
};
|
|
84
121
|
options.signal?.addEventListener("abort", waiter.onAbort, { once: true });
|
|
@@ -86,9 +123,11 @@ export class AdmissionController {
|
|
|
86
123
|
if (!this.remove(waiter))
|
|
87
124
|
return;
|
|
88
125
|
this.cleanup(waiter);
|
|
126
|
+
this.rejectedTotal++;
|
|
89
127
|
reject(this.overloaded(`Executor admission timed out after ${this.queueTimeoutMs}ms.`));
|
|
90
128
|
}, this.queueTimeoutMs);
|
|
91
129
|
this.waiters.push(waiter);
|
|
130
|
+
this.queuedTotal++;
|
|
92
131
|
});
|
|
93
132
|
}
|
|
94
133
|
close() {
|
|
@@ -97,6 +136,7 @@ export class AdmissionController {
|
|
|
97
136
|
this.closed = true;
|
|
98
137
|
for (const waiter of this.waiters.splice(0)) {
|
|
99
138
|
this.cleanup(waiter);
|
|
139
|
+
this.closedTotal++;
|
|
100
140
|
waiter.reject(new ExecutorAdmissionError("executor_closed", "Executor is shutting down."));
|
|
101
141
|
}
|
|
102
142
|
}
|
|
@@ -105,9 +145,10 @@ export class AdmissionController {
|
|
|
105
145
|
retryAfterMs: this.retryAfterMs,
|
|
106
146
|
});
|
|
107
147
|
}
|
|
108
|
-
makeLease() {
|
|
148
|
+
makeLease(waitMs) {
|
|
109
149
|
let released = false;
|
|
110
150
|
return {
|
|
151
|
+
waitMs,
|
|
111
152
|
release: () => {
|
|
112
153
|
if (released)
|
|
113
154
|
return;
|
|
@@ -125,8 +166,13 @@ export class AdmissionController {
|
|
|
125
166
|
if (!waiter)
|
|
126
167
|
return;
|
|
127
168
|
this.cleanup(waiter);
|
|
169
|
+
const waitMs = Math.max(0, Date.now() - waiter.queuedAt);
|
|
170
|
+
this.admittedTotal++;
|
|
171
|
+
this.queueWaitCount++;
|
|
172
|
+
this.queueWaitTotalMs += waitMs;
|
|
173
|
+
this.queueWaitMaxMs = Math.max(this.queueWaitMaxMs, waitMs);
|
|
128
174
|
this.active++;
|
|
129
|
-
waiter.resolve(this.makeLease());
|
|
175
|
+
waiter.resolve(this.makeLease(waitMs));
|
|
130
176
|
}
|
|
131
177
|
remove(waiter) {
|
|
132
178
|
const index = this.waiters.indexOf(waiter);
|
|
@@ -148,4 +194,37 @@ export function isAdmittingExecutor(executor) {
|
|
|
148
194
|
return ("acquire" in executor &&
|
|
149
195
|
typeof executor.acquire === "function");
|
|
150
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Give a structurally-compatible but otherwise unbounded executor the same
|
|
199
|
+
* admission contract as the built-in Node executor. The wrapper owns only the
|
|
200
|
+
* queue; closing the underlying runtime remains the Connecta lifecycle's job.
|
|
201
|
+
*/
|
|
202
|
+
export function withExecutorAdmission(executor, admission) {
|
|
203
|
+
return {
|
|
204
|
+
async acquire(options = {}) {
|
|
205
|
+
const token = await admission.acquire(options);
|
|
206
|
+
let released = false;
|
|
207
|
+
return {
|
|
208
|
+
waitMs: token.waitMs,
|
|
209
|
+
execute: (code, providers) => executor.execute(code, providers),
|
|
210
|
+
release: () => {
|
|
211
|
+
if (released)
|
|
212
|
+
return;
|
|
213
|
+
released = true;
|
|
214
|
+
token.release();
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
},
|
|
218
|
+
async execute(code, providers) {
|
|
219
|
+
const lease = await this.acquire();
|
|
220
|
+
try {
|
|
221
|
+
return await lease.execute(code, providers);
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
lease.release();
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
admissionSnapshot: () => admission.snapshot(),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
151
230
|
//# sourceMappingURL=executor-admission.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-admission.js","sourceRoot":"","sources":["../src/executor-admission.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executor-admission.js","sourceRoot":"","sources":["../src/executor-admission.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAKpC;IAJF,SAAS,CAAU;IACnB,YAAY,CAAU;IAE/B,YACW,IAAgC,EACzC,OAAe,EACf,OAAkC,EAAE;QAEpC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,SAAI,GAAJ,IAAI,CAA4B;QAKzC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,qBAAqB,CAAC;QAChD,IACE,IAAI,CAAC,YAAY,KAAK,SAAS;YAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;YAClC,IAAI,CAAC,YAAY,IAAI,CAAC,EACtB,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF;AAyBD,SAAS,aAAa,CAAC,KAAa,EAAE,IAAY;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,mCAAmC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,IAAY;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,uCAAuC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IACrB,WAAW,CAAS;IACpB,YAAY,CAAS;IACrB,cAAc,CAAS;IACvB,YAAY,CAAS;IAEtB,MAAM,GAAG,CAAC,CAAC;IACX,MAAM,GAAG,KAAK,CAAC;IACN,OAAO,GAAa,EAAE,CAAC;IAChC,aAAa,GAAG,CAAC,CAAC;IAClB,WAAW,GAAG,CAAC,CAAC;IAChB,aAAa,GAAG,CAAC,CAAC;IAClB,cAAc,GAAG,CAAC,CAAC;IACnB,WAAW,GAAG,CAAC,CAAC;IAChB,cAAc,GAAG,CAAC,CAAC;IACnB,gBAAgB,GAAG,CAAC,CAAC;IACrB,cAAc,GAAG,CAAC,CAAC;IAE3B,YAAY,OAAmC;QAC7C,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAClC,OAAO,CAAC,YAAY,EACpB,cAAc,CACf,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,aAAa,CACjC,OAAO,CAAC,cAAc,EACtB,gBAAgB,CACjB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAClC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAC3C,cAAc,CACf,CAAC;IACJ,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE;gBACN,QAAQ,EAAE,IAAI,CAAC,aAAa;gBAC5B,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,QAAQ,EAAE,IAAI,CAAC,aAAa;gBAC5B,SAAS,EAAE,IAAI,CAAC,cAAc;gBAC9B,MAAM,EAAE,IAAI,CAAC,WAAW;aACzB;YACD,WAAW,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,cAAc;gBAC1B,KAAK,EAAE,IAAI,CAAC,gBAAgB;gBAC5B,GAAG,EAAE,IAAI,CAAC,cAAc;aACzB;SACF,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,UAAoC,EAAE;QAC5C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,sBAAsB,CACxB,iBAAiB,EACjB,4BAA4B,CAC7B,CACF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,sBAAsB,CACxB,oBAAoB,EACpB,2CAA2C,CAC5C,CACF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrD,MAAM,MAAM,GAAW;gBACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;gBACpB,OAAO;gBACP,MAAM;gBACN,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtD,CAAC;YACF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBAAE,OAAO;gBACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM,CACJ,IAAI,sBAAsB,CACxB,oBAAoB,EACpB,uCAAuC,CACxC,CACF,CAAC;YACJ,CAAC,CAAC;YACF,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBAAE,OAAO;gBACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM,CACJ,IAAI,CAAC,UAAU,CACb,sCAAsC,IAAI,CAAC,cAAc,KAAK,CAC/D,CACF,CAAC;YACJ,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CACX,IAAI,sBAAsB,CACxB,iBAAiB,EACjB,4BAA4B,CAC7B,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,OAAe;QAChC,OAAO,IAAI,sBAAsB,CAAC,qBAAqB,EAAE,OAAO,EAAE;YAChE,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,MAAc;QAC9B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,OAAO;YACL,MAAM;YACN,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,QAAQ;oBAAE,OAAO;gBACrB,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,MAAM,CAAC,MAAc;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,OAAO,CAAC,MAAc;QAC5B,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CACjC,QAAkB;IAElB,OAAO,CACL,SAAS,IAAI,QAAQ;QACrB,OAAQ,QAAkC,CAAC,OAAO,KAAK,UAAU,CAClE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAkB,EAClB,SAA8B;IAE9B,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE;YACxB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,OAAO;gBACL,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;gBAC/D,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,QAAQ;wBAAE,OAAO;oBACrB,QAAQ,GAAG,IAAI,CAAC;oBAChB,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,CAAC;aACF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS;YAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC9C,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;KAC9C,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ExecuteResult } from "../types.js";
|
|
2
2
|
import type { QuickJsRuntimeOptions } from "./quickjs-runtime.js";
|
|
3
3
|
export declare const MAX_QUICKJS_IPC_BYTES: number;
|
|
4
|
+
export declare const MAX_QUICKJS_LOG_TRANSPORT_BYTES: number;
|
|
4
5
|
/** Preserve #84's stopgap before a host value enters the child/WASM process. */
|
|
5
6
|
export declare const MAX_QUICKJS_HOST_RPC_BYTES: number;
|
|
6
7
|
export interface RunPayload {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickjs-protocol.d.ts","sourceRoot":"","sources":["../../src/executors/quickjs-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"quickjs-protocol.d.ts","sourceRoot":"","sources":["../../src/executors/quickjs-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAQlE,eAAO,MAAM,qBAAqB,QAAc,CAAC;AACjD,eAAO,MAAM,+BAA+B,QAAa,CAAC;AAC1D,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,QAAa,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACpC;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,KAAK,SAAwB,GAC5B,MAAM,CAYR"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
1
|
+
// An execution result is serialized once into payloadJson and again as that
|
|
2
|
+
// string is embedded in ChildToParentMessage. Captured logs therefore get a
|
|
3
|
+
// separate 512 KiB budget measured after both JSON encodings. The final result
|
|
4
|
+
// is shaped to 24k characters; even if every character takes its worst-case
|
|
5
|
+
// seven transport bytes, that leaves ample structural overhead below this hard
|
|
6
|
+
// process.send ceiling.
|
|
5
7
|
export const MAX_QUICKJS_IPC_BYTES = 1024 * 1024;
|
|
8
|
+
export const MAX_QUICKJS_LOG_TRANSPORT_BYTES = 512 * 1024;
|
|
6
9
|
/** Preserve #84's stopgap before a host value enters the child/WASM process. */
|
|
7
10
|
export const MAX_QUICKJS_HOST_RPC_BYTES = 256 * 1024;
|
|
8
11
|
export function serializedBytes(text) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickjs-protocol.js","sourceRoot":"","sources":["../../src/executors/quickjs-protocol.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,4EAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"quickjs-protocol.js","sourceRoot":"","sources":["../../src/executors/quickjs-protocol.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,wBAAwB;AACxB,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,GAAG,IAAI,CAAC;AAC1D,gFAAgF;AAChF,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,GAAG,IAAI,CAAC;AA+CrD,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAc,EACd,KAAa,EACb,KAAK,GAAG,qBAAqB;IAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,4BAA4B,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,GAAG,KAAK,OAAO,KAAK,0BAA0B,KAAK,kBAAkB,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickjs-runtime.d.ts","sourceRoot":"","sources":["../../src/executors/quickjs-runtime.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"quickjs-runtime.d.ts","sourceRoot":"","sources":["../../src/executors/quickjs-runtime.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMnE,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,kFAAkF;AAClF,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpD;AAuDD,sGAAsG;AACtG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUlD;AAgMD;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,gBAAgB,EAAE,EAC7B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CA0JjC"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
// continuations from a host-side loop. Values cross the boundary as JSON, so
|
|
9
9
|
// provider args/results must be JSON-serializable.
|
|
10
10
|
import { getQuickJS, } from "quickjs-emscripten";
|
|
11
|
+
import { MAX_QUICKJS_LOG_TRANSPORT_BYTES, serializedBytes, } from "./quickjs-protocol.js";
|
|
11
12
|
/** Load and compile the shared QuickJS WASM module before a run budget starts. */
|
|
12
13
|
export async function prepareQuickJs() {
|
|
13
14
|
await getQuickJS();
|
|
@@ -16,11 +17,13 @@ const MAX_LOG_ENTRIES = 200;
|
|
|
16
17
|
// Cap each entry AND the cumulative buffer at capture time so untrusted guest
|
|
17
18
|
// code can't retain unbounded host memory: a single `console.log("x".repeat(N))`
|
|
18
19
|
// otherwise copies the whole N-char guest string into a host array we hold for
|
|
19
|
-
// the entire execution.
|
|
20
|
-
//
|
|
21
|
-
// keeps the worst case — 200 maxed-out entries — bounded well under a MiB.
|
|
20
|
+
// the entire execution. The separate transport-byte budget below accounts for
|
|
21
|
+
// JSON escaping and is what keeps the result envelope below its IPC ceiling.
|
|
22
22
|
const MAX_LOG_ENTRY_CHARS = 8_000;
|
|
23
23
|
const MAX_LOG_TOTAL_CHARS = 256_000;
|
|
24
|
+
const LOG_ENTRY_LIMIT_MARKER = `[log truncated after ${MAX_LOG_ENTRIES} entries]`;
|
|
25
|
+
const LOG_SIZE_LIMIT_MARKER = "[log truncated: size budget exceeded]";
|
|
26
|
+
const MAX_LOG_MARKER_TRANSPORT_BYTES = Math.max(logTransportBytes(LOG_ENTRY_LIMIT_MARKER), logTransportBytes(LOG_SIZE_LIMIT_MARKER));
|
|
24
27
|
// Keep one host result below the range where quickjs-emscripten@0.32.0 can
|
|
25
28
|
// nondeterministically fail during runtime disposal under concurrent load.
|
|
26
29
|
// This still lets guest code reduce data more than ten times larger than
|
|
@@ -29,6 +32,11 @@ const MAX_HOST_RESULT_BYTES = 256 * 1024;
|
|
|
29
32
|
function msg(err) {
|
|
30
33
|
return err instanceof Error ? err.message : String(err);
|
|
31
34
|
}
|
|
35
|
+
function logTransportBytes(entry) {
|
|
36
|
+
// The log is encoded into ExecutionPayload, then that payloadJson string is
|
|
37
|
+
// encoded into ChildToParentMessage. Measure the units the IPC cap sees.
|
|
38
|
+
return serializedBytes(JSON.stringify(JSON.stringify(entry)));
|
|
39
|
+
}
|
|
32
40
|
function exceedsUtf8ByteLimit(value, limit) {
|
|
33
41
|
let bytes = 0;
|
|
34
42
|
for (let index = 0; index < value.length; index += 1) {
|
|
@@ -142,15 +150,16 @@ function installBridge(ctx, providers, logs) {
|
|
|
142
150
|
waitForSettle: Promise.resolve(),
|
|
143
151
|
};
|
|
144
152
|
armWake(bridge);
|
|
145
|
-
//
|
|
146
|
-
// budget
|
|
147
|
-
//
|
|
153
|
+
// Keep both the in-memory character budget and the twice-JSON-encoded
|
|
154
|
+
// transport budget. Reserve enough byte budget for whichever truncation
|
|
155
|
+
// marker ends the stream.
|
|
148
156
|
let logTotalChars = 0;
|
|
157
|
+
let logTotalTransportBytes = 0;
|
|
149
158
|
let logBudgetSpent = false;
|
|
150
159
|
const logFn = ctx.newFunction("__log", (h) => {
|
|
151
160
|
if (logs.length >= MAX_LOG_ENTRIES) {
|
|
152
161
|
if (logs.length === MAX_LOG_ENTRIES) {
|
|
153
|
-
logs.push(
|
|
162
|
+
logs.push(LOG_ENTRY_LIMIT_MARKER);
|
|
154
163
|
}
|
|
155
164
|
return;
|
|
156
165
|
}
|
|
@@ -162,13 +171,17 @@ function installBridge(ctx, providers, logs) {
|
|
|
162
171
|
if (entry.length > MAX_LOG_ENTRY_CHARS) {
|
|
163
172
|
entry = `${entry.slice(0, MAX_LOG_ENTRY_CHARS)}…[entry truncated]`;
|
|
164
173
|
}
|
|
165
|
-
|
|
166
|
-
|
|
174
|
+
const entryTransportBytes = logTransportBytes(entry);
|
|
175
|
+
if (logTotalChars + entry.length > MAX_LOG_TOTAL_CHARS ||
|
|
176
|
+
logTotalTransportBytes + entryTransportBytes >
|
|
177
|
+
MAX_QUICKJS_LOG_TRANSPORT_BYTES - MAX_LOG_MARKER_TRANSPORT_BYTES) {
|
|
178
|
+
logs.push(LOG_SIZE_LIMIT_MARKER);
|
|
167
179
|
logBudgetSpent = true;
|
|
168
180
|
return;
|
|
169
181
|
}
|
|
170
182
|
logs.push(entry);
|
|
171
183
|
logTotalChars += entry.length;
|
|
184
|
+
logTotalTransportBytes += entryTransportBytes;
|
|
172
185
|
});
|
|
173
186
|
ctx.setProp(ctx.global, "__log", logFn);
|
|
174
187
|
logFn.dispose();
|