@stigmer/runner 3.22.0 → 3.22.1-dev.20260922095755
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 +1 -1
- package/dist/.build-fingerprint +1 -1
- package/dist/activities/attach-session.js +0 -1
- package/dist/activities/attach-session.js.map +1 -1
- package/dist/activities/call-agent-status.d.ts +18 -11
- package/dist/activities/call-agent-status.js +21 -24
- package/dist/activities/call-agent-status.js.map +1 -1
- package/dist/activities/call-agent.d.ts +2 -2
- package/dist/activities/call-agent.js +4 -6
- package/dist/activities/call-agent.js.map +1 -1
- package/dist/activities/call-function.d.ts +4 -2
- package/dist/activities/call-function.js +13 -4
- package/dist/activities/call-function.js.map +1 -1
- package/dist/activities/classify-tool-approvals.js +1 -1
- package/dist/activities/classify-tool-approvals.js.map +1 -1
- package/dist/activities/discover-mcp-server.js +0 -1
- package/dist/activities/discover-mcp-server.js.map +1 -1
- package/dist/activities/emit-event.d.ts +6 -1
- package/dist/activities/emit-event.js +5 -14
- package/dist/activities/emit-event.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js +1 -1
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js.map +1 -1
- package/dist/activities/execute-cursor/adapter.js +0 -1
- package/dist/activities/execute-cursor/adapter.js.map +1 -1
- package/dist/activities/execute-cursor/turn-setup.d.ts +1 -1
- package/dist/activities/execute-cursor/turn-setup.js +5 -6
- package/dist/activities/execute-cursor/turn-setup.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js.map +1 -1
- package/dist/activities/execute-deep-agent/adapter.js +1 -1
- package/dist/activities/execute-deep-agent/adapter.js.map +1 -1
- package/dist/activities/execute-deep-agent/turn-setup.d.ts +1 -1
- package/dist/activities/execute-deep-agent/turn-setup.js +5 -3
- package/dist/activities/execute-deep-agent/turn-setup.js.map +1 -1
- package/dist/activities/generate-session-subject.js +1 -2
- package/dist/activities/generate-session-subject.js.map +1 -1
- package/dist/activities/hydrate-workflow-execution.js +0 -1
- package/dist/activities/hydrate-workflow-execution.js.map +1 -1
- package/dist/activities/promote-task-output.d.ts +2 -1
- package/dist/activities/promote-task-output.js +10 -14
- package/dist/activities/promote-task-output.js.map +1 -1
- package/dist/activities/workflow-event-activities.d.ts +9 -7
- package/dist/activities/workflow-event-activities.js +14 -18
- package/dist/activities/workflow-event-activities.js.map +1 -1
- package/dist/client/stigmer-client.d.ts +13 -13
- package/dist/client/stigmer-client.js +4 -7
- package/dist/client/stigmer-client.js.map +1 -1
- package/dist/config.d.ts +40 -20
- package/dist/config.js +25 -9
- package/dist/config.js.map +1 -1
- package/dist/harness/registry.js +0 -1
- package/dist/harness/registry.js.map +1 -1
- package/dist/harness/turn-context.js +2 -4
- package/dist/harness/turn-context.js.map +1 -1
- package/dist/main.js +13 -6
- package/dist/main.js.map +1 -1
- package/dist/runner-manager.d.ts +8 -6
- package/dist/runner-manager.js +20 -10
- package/dist/runner-manager.js.map +1 -1
- package/dist/runner-token-coordinator.d.ts +8 -3
- package/dist/runner-token-coordinator.js +8 -3
- package/dist/runner-token-coordinator.js.map +1 -1
- package/dist/runner.d.ts +10 -2
- package/dist/runner.js +31 -25
- package/dist/runner.js.map +1 -1
- package/dist/shared/artifact-storage.d.ts +6 -6
- package/dist/shared/artifact-storage.js +5 -12
- package/dist/shared/artifact-storage.js.map +1 -1
- package/dist/shared/checkpointer/factory.js +5 -1
- package/dist/shared/checkpointer/factory.js.map +1 -1
- package/dist/shared/checkpointer/http-saver.d.ts +13 -2
- package/dist/shared/checkpointer/http-saver.js +17 -5
- package/dist/shared/checkpointer/http-saver.js.map +1 -1
- package/dist/shared/checkpointer/types.d.ts +10 -1
- package/dist/shared/checkpointer/types.js +16 -0
- package/dist/shared/checkpointer/types.js.map +1 -1
- package/dist/shared/extract-structured-output.js +1 -1
- package/dist/shared/extract-structured-output.js.map +1 -1
- package/package.json +5 -5
- package/src/__test-utils__/config-fixture.ts +2 -2
- package/src/__test-utils__/module-specifiers.ts +45 -3
- package/src/__tests__/config-boundary.test.ts +135 -0
- package/src/__tests__/config.test.ts +7 -16
- package/src/__tests__/runner-manager.test.ts +28 -6
- package/src/__tests__/runner.test.ts +28 -4
- package/src/activities/__tests__/attach-session.test.ts +1 -1
- package/src/activities/__tests__/call-agent-contracts.test.ts +4 -7
- package/src/activities/__tests__/call-agent-status.test.ts +17 -16
- package/src/activities/__tests__/call-agent.test.ts +28 -7
- package/src/activities/__tests__/call-function.test.ts +5 -4
- package/src/activities/__tests__/classify-tool-approvals.test.ts +1 -1
- package/src/activities/__tests__/discover-mcp-server.test.ts +1 -1
- package/src/activities/__tests__/generate-session-subject-wire.test.ts +1 -1
- package/src/activities/__tests__/workflow-event-activities.test.ts +21 -23
- package/src/activities/attach-session.ts +0 -1
- package/src/activities/call-agent-status.ts +28 -20
- package/src/activities/call-agent.ts +5 -6
- package/src/activities/call-function.ts +15 -3
- package/src/activities/classify-tool-approvals.ts +1 -1
- package/src/activities/discover-mcp-server.ts +0 -1
- package/src/activities/emit-event.ts +7 -16
- package/src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts +1 -1
- package/src/activities/execute-cursor/adapter.ts +0 -1
- package/src/activities/execute-cursor/turn-setup.ts +6 -7
- package/src/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/adapter.test.ts +2 -2
- package/src/activities/execute-deep-agent/__tests__/summarization-verification.test.ts +1 -1
- package/src/activities/execute-deep-agent/adapter.ts +1 -1
- package/src/activities/execute-deep-agent/turn-setup.ts +6 -4
- package/src/activities/generate-session-subject.ts +1 -2
- package/src/activities/hydrate-workflow-execution.ts +0 -1
- package/src/activities/promote-task-output.ts +11 -15
- package/src/activities/workflow-event-activities.ts +17 -18
- package/src/client/__tests__/stigmer-client.test.ts +8 -19
- package/src/client/stigmer-client.ts +18 -20
- package/src/config.ts +51 -23
- package/src/harness/registry.ts +0 -1
- package/src/harness/turn-context.ts +2 -4
- package/src/main.ts +13 -6
- package/src/runner-manager.ts +25 -15
- package/src/runner-token-coordinator.ts +8 -3
- package/src/runner.ts +39 -30
- package/src/shared/__tests__/artifact-storage-extended.test.ts +9 -9
- package/src/shared/__tests__/artifact-storage.test.ts +33 -30
- package/src/shared/__tests__/extract-structured-output.test.ts +2 -2
- package/src/shared/artifact-storage.ts +12 -17
- package/src/shared/checkpointer/__tests__/factory.test.ts +23 -3
- package/src/shared/checkpointer/__tests__/http-saver.test.ts +25 -2
- package/src/shared/checkpointer/factory.ts +5 -1
- package/src/shared/checkpointer/http-saver.ts +20 -6
- package/src/shared/checkpointer/types.ts +12 -1
- package/src/shared/extract-structured-output.ts +1 -1
- package/src/shared/filereview/__tests__/cas-substrate.test.ts +1 -1
- package/src/shared/filereview/__tests__/proxy-reconcile.test.ts +1 -1
- package/src/workflow-engine/__tests__/tasks/emit-event.test.ts +32 -54
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAE,uCAAuC,EAAE,sCAAsC,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAEjJ,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAiG/E
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
*
|
|
21
21
|
* DD-6: No direct R2 backend. Local + Proxy only.
|
|
22
22
|
*/
|
|
23
|
-
import type { Config } from "../config.js";
|
|
23
|
+
import type { Config, TokenRef } from "../config.js";
|
|
24
24
|
import type { RetryOptions } from "./grpc-retry.js";
|
|
25
25
|
export interface ArtifactStorage {
|
|
26
26
|
/**
|
|
@@ -112,12 +112,12 @@ export declare class ProxyArtifactStorage implements ArtifactStorage {
|
|
|
112
112
|
exists(key: string): Promise<boolean>;
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
115
|
-
* The proxy credential
|
|
116
|
-
*
|
|
115
|
+
* The proxy credential: the runner's shared ref, read per call (the
|
|
116
|
+
* sandbox token-renewal posture; config.ts header). Never a string — a
|
|
117
|
+
* captured value would present the boot credential after the first
|
|
118
|
+
* rotation.
|
|
117
119
|
*/
|
|
118
|
-
export type ProxyAuthTokenSource =
|
|
119
|
-
readonly current: string | null;
|
|
120
|
-
};
|
|
120
|
+
export type ProxyAuthTokenSource = Readonly<TokenRef>;
|
|
121
121
|
export interface ArtifactStorageConfig {
|
|
122
122
|
readonly type: ArtifactStorageType;
|
|
123
123
|
readonly localPath: string;
|
|
@@ -136,9 +136,7 @@ export class ProxyArtifactStorage {
|
|
|
136
136
|
* life — a captured string would silently 401 after the first rotation.
|
|
137
137
|
*/
|
|
138
138
|
get authToken() {
|
|
139
|
-
return
|
|
140
|
-
? this.authTokenSource
|
|
141
|
-
: (this.authTokenSource.current ?? "");
|
|
139
|
+
return this.authTokenSource.current ?? "";
|
|
142
140
|
}
|
|
143
141
|
async upload(key, content, contentType) {
|
|
144
142
|
const ct = contentType ?? "application/octet-stream";
|
|
@@ -278,11 +276,9 @@ export function loadArtifactStorageConfig(config) {
|
|
|
278
276
|
localPath: process.env.LOCAL_ARTIFACT_PATH ?? defaultLocalArtifactPath(),
|
|
279
277
|
localServeUrl: process.env.LOCAL_ARTIFACT_SERVE_URL ?? "http://localhost:7235",
|
|
280
278
|
proxyEndpoint: type === "proxy" ? (config.artifactProxyEndpoint ?? null) : null,
|
|
281
|
-
//
|
|
282
|
-
//
|
|
283
|
-
proxyAuthToken: type === "proxy"
|
|
284
|
-
? (config.stigmerTokenRef ?? config.stigmerToken ?? null)
|
|
285
|
-
: null,
|
|
279
|
+
// The live ref: renewal rotates the token in place and uploads must
|
|
280
|
+
// present the current credential, not the boot one.
|
|
281
|
+
proxyAuthToken: type === "proxy" ? config.stigmerTokenRef : null,
|
|
286
282
|
};
|
|
287
283
|
}
|
|
288
284
|
export function createArtifactStorage(cfg) {
|
|
@@ -298,10 +294,7 @@ export function createArtifactStorage(cfg) {
|
|
|
298
294
|
if (!cfg.proxyEndpoint) {
|
|
299
295
|
throw new Error("Proxy artifact storage requires STIGMER_ARTIFACT_PROXY_ENDPOINT or STIGMER_PROXY_ENDPOINT");
|
|
300
296
|
}
|
|
301
|
-
|
|
302
|
-
? cfg.proxyAuthToken
|
|
303
|
-
: cfg.proxyAuthToken?.current;
|
|
304
|
-
if (!tokenAtBoot) {
|
|
297
|
+
if (!cfg.proxyAuthToken?.current) {
|
|
305
298
|
throw new Error("Proxy artifact storage requires STIGMER_TOKEN");
|
|
306
299
|
}
|
|
307
300
|
return new ProxyArtifactStorage(cfg.proxyEndpoint, cfg.proxyAuthToken);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-storage.js","sourceRoot":"","sources":["../../src/shared/artifact-storage.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"artifact-storage.js","sourceRoot":"","sources":["../../src/shared/artifact-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,11 @@ export async function createCheckpointer(config) {
|
|
|
52
52
|
if (!config.proxyEndpoint) {
|
|
53
53
|
throw new CheckpointerCreationError("http", "proxyEndpoint is required for HTTP checkpointer");
|
|
54
54
|
}
|
|
55
|
-
|
|
55
|
+
// The ref must be present AND hold a credential at open: a saver that
|
|
56
|
+
// opened without one would fail its first request with a bare 401
|
|
57
|
+
// instead of this named error, and a proxy-mode runner always has one
|
|
58
|
+
// (loadConfig refuses to boot without STIGMER_TOKEN).
|
|
59
|
+
if (!config.authToken?.current) {
|
|
56
60
|
throw new CheckpointerCreationError("http", "authToken is required for HTTP checkpointer");
|
|
57
61
|
}
|
|
58
62
|
const saver = new HttpCheckpointSaver(config.proxyEndpoint, config.authToken);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/shared/checkpointer/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACzC,gBAAgB,CAAS;IACzB,KAAK,CAAS;IAEvB,YAAY,IAAY,EAAE,OAAe,EAAE,KAAa;QACtD,KAAK,CAAC,oBAAoB,IAAI,kBAAkB,OAAO,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA0B;IAE1B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,IAAI,yBAAyB,CACjC,QAAQ,EACR,gDAAgD,CACjD,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,oDAAoD,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,OAAO,IAAI,WAAW,EAAE,CAAC;QAE3B,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC1B,MAAM,IAAI,yBAAyB,CACjC,MAAM,EACN,iDAAiD,CAClD,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/shared/checkpointer/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACzC,gBAAgB,CAAS;IACzB,KAAK,CAAS;IAEvB,YAAY,IAAY,EAAE,OAAe,EAAE,KAAa;QACtD,KAAK,CAAC,oBAAoB,IAAI,kBAAkB,OAAO,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA0B;IAE1B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,IAAI,yBAAyB,CACjC,QAAQ,EACR,gDAAgD,CACjD,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,oDAAoD,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,OAAO,IAAI,WAAW,EAAE,CAAC;QAE3B,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC1B,MAAM,IAAI,yBAAyB,CACjC,MAAM,EACN,iDAAiD,CAClD,CAAC;YACJ,CAAC;YACD,sEAAsE;YACtE,kEAAkE;YAClE,sEAAsE;YACtE,sDAAsD;YACtD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,yBAAyB,CACjC,MAAM,EACN,6CAA6C,CAC9C,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,mDAAmD,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;YACxF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,MAAM,CAAC,IAAI,CAAC;YACtC,MAAM,IAAI,yBAAyB,CACjC,MAAM,CAAC,UAAU,CAAC,EAClB,8DAA8D,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -26,10 +26,19 @@
|
|
|
26
26
|
* upserts. Budget exhaustion still fails loudly — checkpoints are not
|
|
27
27
|
* lossy-tolerable (unlike status updates, see status.ts), and silently
|
|
28
28
|
* dropping one would corrupt resume state.
|
|
29
|
+
*
|
|
30
|
+
* The bearer credential is a shared ref read on EVERY request, never a
|
|
31
|
+
* header frozen at construction: a saver lives for a whole turn, and the
|
|
32
|
+
* runner's control-plane credential rotates underneath it (a pool member
|
|
33
|
+
* claimed for a session, a sandbox token renewed in place). A frozen header
|
|
34
|
+
* kept presenting the boot credential and every read after the rotation
|
|
35
|
+
* was refused (config.ts header; ProxyArtifactStorage holds its credential
|
|
36
|
+
* the same way).
|
|
29
37
|
*/
|
|
30
38
|
import type { RunnableConfig } from "@langchain/core/runnables";
|
|
31
39
|
import { BaseCheckpointSaver, type Checkpoint, type CheckpointListOptions, type CheckpointTuple, type ChannelVersions } from "@langchain/langgraph-checkpoint";
|
|
32
40
|
import type { CheckpointMetadata, PendingWrite } from "@langchain/langgraph-checkpoint";
|
|
41
|
+
import type { TokenRef } from "../../config.js";
|
|
33
42
|
import type { RetryOptions } from "../grpc-retry.js";
|
|
34
43
|
/** Retry policy plus the per-request bound; every field is defaulted. */
|
|
35
44
|
export interface HttpCheckpointSaverOptions extends RetryOptions {
|
|
@@ -42,9 +51,11 @@ export interface HttpCheckpointSaverOptions extends RetryOptions {
|
|
|
42
51
|
}
|
|
43
52
|
export declare class HttpCheckpointSaver extends BaseCheckpointSaver {
|
|
44
53
|
private readonly baseUrl;
|
|
45
|
-
private readonly
|
|
54
|
+
private readonly authToken;
|
|
46
55
|
private readonly retryPolicy;
|
|
47
|
-
constructor(proxyEndpoint: string, authToken:
|
|
56
|
+
constructor(proxyEndpoint: string, authToken: Readonly<TokenRef>, options?: HttpCheckpointSaverOptions);
|
|
57
|
+
/** The request headers as of now: the credential is resolved here, per request (the header). */
|
|
58
|
+
private get headers();
|
|
48
59
|
private fetchWithRetry;
|
|
49
60
|
private serializeTyped;
|
|
50
61
|
private deserializeTyped;
|
|
@@ -26,6 +26,14 @@
|
|
|
26
26
|
* upserts. Budget exhaustion still fails loudly — checkpoints are not
|
|
27
27
|
* lossy-tolerable (unlike status updates, see status.ts), and silently
|
|
28
28
|
* dropping one would corrupt resume state.
|
|
29
|
+
*
|
|
30
|
+
* The bearer credential is a shared ref read on EVERY request, never a
|
|
31
|
+
* header frozen at construction: a saver lives for a whole turn, and the
|
|
32
|
+
* runner's control-plane credential rotates underneath it (a pool member
|
|
33
|
+
* claimed for a session, a sandbox token renewed in place). A frozen header
|
|
34
|
+
* kept presenting the boot credential and every read after the rotation
|
|
35
|
+
* was refused (config.ts header; ProxyArtifactStorage holds its credential
|
|
36
|
+
* the same way).
|
|
29
37
|
*/
|
|
30
38
|
import { BaseCheckpointSaver, } from "@langchain/langgraph-checkpoint";
|
|
31
39
|
import { fetchWithRetry } from "../http-retry.js";
|
|
@@ -84,15 +92,12 @@ const DEFAULT_RETRY = {
|
|
|
84
92
|
};
|
|
85
93
|
export class HttpCheckpointSaver extends BaseCheckpointSaver {
|
|
86
94
|
baseUrl;
|
|
87
|
-
|
|
95
|
+
authToken;
|
|
88
96
|
retryPolicy;
|
|
89
97
|
constructor(proxyEndpoint, authToken, options = {}) {
|
|
90
98
|
super();
|
|
91
99
|
this.baseUrl = `${proxyEndpoint.replace(/\/+$/, "")}/v1/proxy/checkpoints`;
|
|
92
|
-
this.
|
|
93
|
-
Authorization: `Bearer ${authToken}`,
|
|
94
|
-
"Content-Type": "application/json",
|
|
95
|
-
};
|
|
100
|
+
this.authToken = authToken;
|
|
96
101
|
this.retryPolicy = {
|
|
97
102
|
label: "HttpCheckpointSaver",
|
|
98
103
|
baseDelayMs: options.baseDelayMs ?? DEFAULT_RETRY.baseDelayMs,
|
|
@@ -102,6 +107,13 @@ export class HttpCheckpointSaver extends BaseCheckpointSaver {
|
|
|
102
107
|
delayFn: options.delayFn,
|
|
103
108
|
};
|
|
104
109
|
}
|
|
110
|
+
/** The request headers as of now: the credential is resolved here, per request (the header). */
|
|
111
|
+
get headers() {
|
|
112
|
+
return {
|
|
113
|
+
Authorization: `Bearer ${this.authToken.current ?? ""}`,
|
|
114
|
+
"Content-Type": "application/json",
|
|
115
|
+
};
|
|
116
|
+
}
|
|
105
117
|
fetchWithRetry(url, init) {
|
|
106
118
|
return fetchWithRetry(url, init, this.retryPolicy);
|
|
107
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-saver.js","sourceRoot":"","sources":["../../../src/shared/checkpointer/http-saver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"http-saver.js","sourceRoot":"","sources":["../../../src/shared/checkpointer/http-saver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,OAAO,EACL,mBAAmB,GAMpB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,cAAc,EAAyB,MAAM,kBAAkB,CAAC;AAEzE,SAAS,SAAS,CAAC,IAAgB;IACjC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAMD,SAAS,YAAY,CAAC,OAAmB;IACvC,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,GAAc;IAClC,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,YAAY,CAAC,MAAsB;IAC1C,OAAQ,MAAM,CAAC,YAAY,EAAE,SAAoB,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,MAAsB;IACtC,OAAQ,MAAM,CAAC,YAAY,EAAE,aAAwB,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAsB;IAChD,OAAO,MAAM,CAAC,YAAY,EAAE,aAAmC,CAAC;AAClE,CAAC;AAED,SAAS,SAAS,CAAC,MAAsB;IACvC,OAAO,MAAM,CAAC,YAAY,EAAE,GAAyB,CAAC;AACxD,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,aAAa,GAAG;IACpB,WAAW,EAAE,GAAG;IAChB,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,CAAC;IACb,gBAAgB,EAAE,MAAM;CAChB,CAAC;AAEX,MAAM,OAAO,mBAAoB,SAAQ,mBAAmB;IACzC,OAAO,CAAS;IAChB,SAAS,CAAqB;IAC9B,WAAW,CAAmB;IAE/C,YACE,aAAqB,EACrB,SAA6B,EAC7B,UAAsC,EAAE;QAExC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,uBAAuB,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG;YACjB,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW;YAC7D,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,aAAa;YACnE,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU;YAC1D,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,aAAa,CAAC,gBAAgB;YAC5E,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;IAED,gGAAgG;IAChG,IAAY,OAAO;QACjB,OAAO;YACL,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,EAAE;YACvD,cAAc,EAAE,kBAAkB;SACnC,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,GAAW,EAAE,IAAkB;QACpD,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAY;QACvC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5D,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,SAAoB;QAClE,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAsB;QACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;SAC5B,CAAC,CAAC;QACH,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,eAAe,MAAM,EAAE,EAAE;YAC7E,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAwB,CAAC;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,CAAC,IAAI,CACT,MAAsB,EACtB,OAA+B;QAE/B,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QAEnC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;SACrB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAmC,CAAC;QACpF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,gBAAgB,MAAM,EAAE,EAAE;YAC9E,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA4C,CAAC;QAC5E,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;YACzC,MAAM,MAAM,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CACP,MAAsB,EACtB,UAAsB,EACtB,QAA4B,EAC5B,YAA6B;QAE7B,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;QAEnC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE/D,MAAM,GAAG,GAA4B;YACnC,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,YAAY;YAC3B,oBAAoB,EAAE,kBAAkB,CAAC,MAAM,CAAC;YAChD,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,QAAQ;YACpB,aAAa,EAAE,MAAM;YACrB,QAAQ,EAAE,QAAQ;SACnB,CAAC;QAEF,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;QAE9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,EAAE;YACnE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO;YACL,YAAY,EAAE;gBACZ,SAAS,EAAE,QAAQ;gBACnB,aAAa,EAAE,YAAY;gBAC3B,aAAa,EAAE,YAAY;aAC5B;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,MAAM,EAAE,EAAE;YACzE,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CACb,MAAsB,EACtB,MAAsB,EACtB,MAAc;QAEd,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAEhC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE;YACxE,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,GAAG,GAA4B;gBACnC,SAAS,EAAE,QAAQ;gBACnB,aAAa,EAAE,YAAY;gBAC3B,aAAa,EAAE,YAAY;gBAC3B,OAAO,EAAE,MAAM;gBACf,GAAG;gBACH,OAAO;gBACP,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,SAAS;aACjB,CAAC;YACF,IAAI,KAAK;gBAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,EAAE;YAC/D,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACvC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,GAAwB,EACxB,QAAgB,EAChB,YAAoB;QAEpB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;QAClC,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAe,CAAC;QAEvF,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC;QAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;YAC3B,CAAC,CAAE,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAwB;YAC7E,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,YAAwC,CAAC;QAC7C,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC7B,YAAY,GAAG;gBACb,YAAY,EAAE;oBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;oBACtC,aAAa,EAAE,GAAG,CAAC,oBAAoB;iBACxC;aACF,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAC1C,GAAG,IAAI,CAAC,OAAO,WAAW,IAAI,eAAe,CAAC;YAC5C,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,GAAG,CAAC,aAAa;SACjC,CAAC,EAAE,EACJ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACF,0EAA0E;QAC1E,uEAAuE;QACvE,wEAAwE;QACxE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAC1C,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,CAAwB,CACjD,CAAC;QAEF,OAAO;YACL,MAAM,EAAE;gBACN,YAAY,EAAE;oBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;oBACtC,aAAa,EAAE,GAAG,CAAC,aAAa;iBACjC;aACF;YACD,UAAU;YACV,QAAQ;YACR,YAAY;YACZ,aAAa;SACd,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,GAAwB;QAExB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;QAClC,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAe,CAAC;QAErG,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC;QAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;YAC3B,CAAC,CAAE,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAwB;YAC3F,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,YAAwC,CAAC;QAC7C,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC7B,YAAY,GAAG;gBACb,YAAY,EAAE;oBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;oBACtC,aAAa,EAAE,GAAG,CAAC,oBAAoB;iBACxC;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE;gBACN,YAAY,EAAE;oBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;oBACtC,aAAa,EAAE,GAAG,CAAC,aAAa;iBACjC;aACF;YACD,UAAU;YACV,QAAQ;YACR,YAAY;SACb,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,IAAyB;QAEzB,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -6,11 +6,20 @@
|
|
|
6
6
|
* ExecuteDeepAgent invocations so HITL/pause/transient-recovery truly resume.
|
|
7
7
|
* - http: routes through the Stigmer Side-Channel Proxy (cloud / managed).
|
|
8
8
|
* - memory: ephemeral in-process storage — explicit opt-in, used by tests.
|
|
9
|
+
*
|
|
10
|
+
* The http backend's credential is a shared ref, never a string: the saver
|
|
11
|
+
* reads it per request, so a rotation of the runner's control-plane
|
|
12
|
+
* credential (a pool claim, a sandbox-token renewal) reaches a checkpoint
|
|
13
|
+
* written after it — including mid-turn, since a saver lives for a whole
|
|
14
|
+
* turn (config.ts header; the artifact store holds its credential the same
|
|
15
|
+
* way).
|
|
9
16
|
*/
|
|
17
|
+
import type { TokenRef } from "../../config.js";
|
|
10
18
|
export interface CheckpointerConfig {
|
|
11
19
|
readonly type: "memory" | "http" | "sqlite";
|
|
12
20
|
readonly proxyEndpoint?: string;
|
|
13
|
-
|
|
21
|
+
/** The credential the http saver presents, read per request. Required when type is "http". */
|
|
22
|
+
readonly authToken?: Readonly<TokenRef>;
|
|
14
23
|
/** Absolute path to the SQLite database file. Required when type is "sqlite". */
|
|
15
24
|
readonly sqlitePath?: string;
|
|
16
25
|
}
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for the checkpointer factory.
|
|
3
|
+
*
|
|
4
|
+
* Three backends are supported:
|
|
5
|
+
* - sqlite: durable local file (OSS / local / desktop default) — survives across
|
|
6
|
+
* ExecuteDeepAgent invocations so HITL/pause/transient-recovery truly resume.
|
|
7
|
+
* - http: routes through the Stigmer Side-Channel Proxy (cloud / managed).
|
|
8
|
+
* - memory: ephemeral in-process storage — explicit opt-in, used by tests.
|
|
9
|
+
*
|
|
10
|
+
* The http backend's credential is a shared ref, never a string: the saver
|
|
11
|
+
* reads it per request, so a rotation of the runner's control-plane
|
|
12
|
+
* credential (a pool claim, a sandbox-token renewal) reaches a checkpoint
|
|
13
|
+
* written after it — including mid-turn, since a saver lives for a whole
|
|
14
|
+
* turn (config.ts header; the artifact store holds its credential the same
|
|
15
|
+
* way).
|
|
16
|
+
*/
|
|
1
17
|
export {};
|
|
2
18
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/checkpointer/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/checkpointer/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
|
|
@@ -48,7 +48,7 @@ export async function extractStructuredOutput(agentResponse, schema, config, pri
|
|
|
48
48
|
const { model: llm } = await buildChatModel({
|
|
49
49
|
modelName: extractionModel,
|
|
50
50
|
proxyEndpoint,
|
|
51
|
-
stigmerToken: config.
|
|
51
|
+
stigmerToken: config.stigmerTokenRef.current ?? undefined,
|
|
52
52
|
maxTokens: 4096,
|
|
53
53
|
});
|
|
54
54
|
const zodSchema = jsonSchemaToZod(schema);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-structured-output.js","sourceRoot":"","sources":["../../src/shared/extract-structured-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,aAAqB,EACrB,MAA+B,EAC/B,MAAc,EACd,YAAoB;IAEpB,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;IAExD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,0CAA0C,QAAQ,SAAS;gBAC3D,IAAI,eAAe,iCAAiC,OAAO,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,cAAc,CAAC;QAC1C,SAAS,EAAE,eAAe;QAC1B,aAAa;QACb,YAAY,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"extract-structured-output.js","sourceRoot":"","sources":["../../src/shared/extract-structured-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,aAAqB,EACrB,MAA+B,EAC/B,MAAc,EACd,YAAoB;IAEpB,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;IAExD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,0CAA0C,QAAQ,SAAS;gBAC3D,IAAI,eAAe,iCAAiC,OAAO,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,cAAc,CAAC;QAC1C,SAAS,EAAE,eAAe;QAC1B,aAAa;QACb,YAAY,EAAE,MAAM,CAAC,eAAe,CAAC,OAAO,IAAI,SAAS;QACzD,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,GAAG,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC;QACrC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,sGAAsG,EAAE;QACnI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE;KACzC,CAAC,CAAC;IAEH,OAAO,MAAM,IAAI,IAAI,CAAC;AACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stigmer/runner",
|
|
3
|
-
"version": "3.22.
|
|
3
|
+
"version": "3.22.1-dev.20260922095755",
|
|
4
4
|
"description": "Embeddable Temporal worker for the Stigmer AI agent platform — handles agent execution, workflow orchestration, and MCP server management",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -104,10 +104,10 @@
|
|
|
104
104
|
"@opentelemetry/sdk-metrics": "^2.0.0",
|
|
105
105
|
"@opentelemetry/sdk-trace-base": "^2.0.0",
|
|
106
106
|
"@opentelemetry/sdk-trace-node": "^2.0.0",
|
|
107
|
-
"@stigmer/outbound": "3.22.
|
|
108
|
-
"@stigmer/protos": "3.22.
|
|
109
|
-
"@stigmer/temporal-codecs": "3.22.
|
|
110
|
-
"@stigmer/zip-structure": "3.22.
|
|
107
|
+
"@stigmer/outbound": "3.22.1-dev.20260922095755",
|
|
108
|
+
"@stigmer/protos": "3.22.1-dev.20260922095755",
|
|
109
|
+
"@stigmer/temporal-codecs": "3.22.1-dev.20260922095755",
|
|
110
|
+
"@stigmer/zip-structure": "3.22.1-dev.20260922095755",
|
|
111
111
|
"@temporalio/activity": "1.16.2",
|
|
112
112
|
"@temporalio/common": "1.16.2",
|
|
113
113
|
"@temporalio/interceptors-opentelemetry": "1.16.2",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A complete, inert runner `Config` for tests.
|
|
3
3
|
*
|
|
4
|
-
* `Config` has twenty required fields (plus two optional
|
|
4
|
+
* `Config` has twenty required fields (the credential ref among them, plus two optional refs), so
|
|
5
5
|
* every test that needs one has had to spell all of them out; eight test
|
|
6
6
|
* files carry their own literal today. This is the one place a test-only `Config` is
|
|
7
7
|
* built from now on: {@link testConfig} returns the whole record with values
|
|
@@ -42,7 +42,7 @@ export function testConfig(overrides: Partial<Config> = {}): Config {
|
|
|
42
42
|
temporalAddress: "127.0.0.1:1",
|
|
43
43
|
temporalNamespace: "default",
|
|
44
44
|
stigmerBackendEndpoint: INERT_ENDPOINT,
|
|
45
|
-
|
|
45
|
+
stigmerTokenRef: { current: null },
|
|
46
46
|
mcpBridgeEndpoint: null,
|
|
47
47
|
cursorApiKey: "",
|
|
48
48
|
workspaceRootDir: join(tmpdir(), "stigmer-runner-test-workspaces"),
|
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
* The module specifiers a TypeScript file names, read off its syntax tree —
|
|
3
3
|
* the primitive behind the runner's import fences.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Four fences stand on it: `src/harness/` and production `src/shared/` never
|
|
6
6
|
* import `src/activities/` (`harness/__tests__/import-direction.test.ts`,
|
|
7
7
|
* the rule the turn runtime is written under); the Cursor adapter never
|
|
8
8
|
* imports `@temporalio/*` (`execute-cursor/__tests__/adapter-is-temporal-
|
|
9
|
-
* free.test.ts`, what lets the contract kit run it outside an activity);
|
|
9
|
+
* free.test.ts`, what lets the contract kit run it outside an activity);
|
|
10
10
|
* `src/harness/transcript/` names no package outside a short allow-list
|
|
11
11
|
* (`harness/__tests__/transcript-is-engine-free.test.ts`, what keeps the one
|
|
12
|
-
* transcript builder engine-neutral).
|
|
12
|
+
* transcript builder engine-neutral); and `loadConfig` is bound by `main.ts`
|
|
13
|
+
* alone (`__tests__/config-boundary.test.ts`, what keeps one live credential
|
|
14
|
+
* ref per process — `importedBindings` below reads the NAMES a file imports,
|
|
15
|
+
* where the other fences read the modules).
|
|
13
16
|
*
|
|
14
17
|
* A syntax tree, not a regex, so a path quoted in a header comment cannot
|
|
15
18
|
* trip a fence, and no import form can slip past one: static, type-only,
|
|
@@ -113,6 +116,45 @@ function packageName(specifier: string): string {
|
|
|
113
116
|
return first.startsWith("@") && second !== undefined ? `${first}/${second}` : first;
|
|
114
117
|
}
|
|
115
118
|
|
|
119
|
+
/** One name a file binds from a module: the exported name (`"*"` for a namespace import) and the specifier it came from. */
|
|
120
|
+
export interface ImportedBinding {
|
|
121
|
+
readonly specifier: string;
|
|
122
|
+
readonly name: string;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Every name a file imports by static `import` declaration, in source order,
|
|
127
|
+
* type-only included (a fence on a VALUE reads the same list; a type import
|
|
128
|
+
* of a function is a smell the fence should see too). A namespace import
|
|
129
|
+
* binds every export at once and is reported as `"*"`. Dynamic `import()`
|
|
130
|
+
* binds nothing at the declaration and is not listed — a fence on a name
|
|
131
|
+
* that must also refuse `(await import(m)).name` pairs this with
|
|
132
|
+
* {@link moduleSpecifiers}.
|
|
133
|
+
*/
|
|
134
|
+
export function importedBindings(fileName: string, source: string): ImportedBinding[] {
|
|
135
|
+
const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.Latest, /* setParentNodes */ false);
|
|
136
|
+
const bindings: ImportedBinding[] = [];
|
|
137
|
+
for (const statement of sourceFile.statements) {
|
|
138
|
+
if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) continue;
|
|
139
|
+
const specifier = statement.moduleSpecifier.text;
|
|
140
|
+
const clause = statement.importClause;
|
|
141
|
+
if (clause === undefined) continue;
|
|
142
|
+
if (clause.name !== undefined) {
|
|
143
|
+
bindings.push({ specifier, name: "default" });
|
|
144
|
+
}
|
|
145
|
+
const named = clause.namedBindings;
|
|
146
|
+
if (named === undefined) continue;
|
|
147
|
+
if (ts.isNamespaceImport(named)) {
|
|
148
|
+
bindings.push({ specifier, name: "*" });
|
|
149
|
+
} else {
|
|
150
|
+
for (const element of named.elements) {
|
|
151
|
+
bindings.push({ specifier, name: (element.propertyName ?? element.name).text });
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return bindings;
|
|
156
|
+
}
|
|
157
|
+
|
|
116
158
|
/** Every `.ts` file under `dir`, sorted, skipping the named directories at any depth. */
|
|
117
159
|
export function typeScriptFilesUnder(dir: string, skipDirectories: ReadonlySet<string>): string[] {
|
|
118
160
|
const files: string[] = [];
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pins the environment boundary of the runner's configuration: `loadConfig`
|
|
3
|
+
* is bound by `main.ts` and by no other production module.
|
|
4
|
+
*
|
|
5
|
+
* Why it matters (config.ts header): `loadConfig()` reads the environment and
|
|
6
|
+
* returns a `Config` whose credential ref holds the BOOT capture. The two
|
|
7
|
+
* roots turn that value into the one live ref the process rotates (a pool
|
|
8
|
+
* claim, a sandbox-token renewal, a host refresh) and hand every activity a
|
|
9
|
+
* `Config` carrying it. An activity that called `loadConfig()` itself would
|
|
10
|
+
* hold a second `Config` with a second ref that no rotation ever writes —
|
|
11
|
+
* the shape that kept a claimed pool member presenting its pool credential
|
|
12
|
+
* to the checkpoint proxy — and a module-level client built from it would
|
|
13
|
+
* freeze the boot credential for the process's life. Four activity modules
|
|
14
|
+
* did exactly that until their factories took the injected `Config`; this
|
|
15
|
+
* fence is what keeps a fifth from appearing.
|
|
16
|
+
*
|
|
17
|
+
* The rule is read off the TypeScript syntax tree
|
|
18
|
+
* (`__test-utils__/module-specifiers.ts`), so a `loadConfig` in a comment
|
|
19
|
+
* cannot trip it and no static import form slips past it: a named import,
|
|
20
|
+
* an aliased one, a type-only one and a namespace import of `config.js`
|
|
21
|
+
* (which binds every export at once) are all offences. A dynamic
|
|
22
|
+
* `import("../config.js")` is refused too: nothing but `main.ts` may load
|
|
23
|
+
* that module at all, so the fence need not read what is destructured from
|
|
24
|
+
* it. Tests and test utilities are outside the sweep — a test may exercise
|
|
25
|
+
* `loadConfig` directly (`config.test.ts` does).
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
import { describe, it, expect } from "vitest";
|
|
29
|
+
import { basename, join, relative } from "node:path";
|
|
30
|
+
import { fileURLToPath } from "node:url";
|
|
31
|
+
|
|
32
|
+
import {
|
|
33
|
+
importedBindings,
|
|
34
|
+
moduleSpecifiers,
|
|
35
|
+
readSource,
|
|
36
|
+
typeScriptFilesUnder,
|
|
37
|
+
} from "../__test-utils__/module-specifiers.js";
|
|
38
|
+
|
|
39
|
+
const SRC_ROOT = fileURLToPath(new URL("../", import.meta.url));
|
|
40
|
+
const CONFIG_MODULE = "config.js";
|
|
41
|
+
const THE_ONE_CALLER = "main.ts";
|
|
42
|
+
const OUTSIDE_THE_SWEEP = new Set(["__tests__", "__test-utils__"]);
|
|
43
|
+
|
|
44
|
+
interface Offence {
|
|
45
|
+
readonly file: string;
|
|
46
|
+
readonly how: string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Whether `specifier` resolves to `src/config.ts` from anywhere under `src/`. */
|
|
50
|
+
function namesConfigModule(specifier: string): boolean {
|
|
51
|
+
return specifier.startsWith(".") && basename(specifier) === CONFIG_MODULE;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** The offences in one file: a `loadConfig` binding, a namespace import of config, or a dynamic import of it. */
|
|
55
|
+
function offencesIn(filePath: string, source: string): string[] {
|
|
56
|
+
const how: string[] = [];
|
|
57
|
+
for (const binding of importedBindings(filePath, source)) {
|
|
58
|
+
if (!namesConfigModule(binding.specifier)) continue;
|
|
59
|
+
if (binding.name === "loadConfig") how.push("imports loadConfig");
|
|
60
|
+
if (binding.name === "*") how.push("imports config.js as a namespace");
|
|
61
|
+
}
|
|
62
|
+
const declared = new Set(importedBindings(filePath, source).map((b) => b.specifier));
|
|
63
|
+
for (const specifier of moduleSpecifiers(filePath, source)) {
|
|
64
|
+
if (namesConfigModule(specifier) && !declared.has(specifier)) {
|
|
65
|
+
how.push("loads config.js dynamically");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return how;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
describe("offencesIn (the checker itself)", () => {
|
|
72
|
+
const file = join(SRC_ROOT, "activities", "some-activity.ts");
|
|
73
|
+
|
|
74
|
+
it.each([
|
|
75
|
+
["a named import", 'import { loadConfig } from "../config.js";'],
|
|
76
|
+
["an aliased import", 'import { loadConfig as boot } from "../config.js";'],
|
|
77
|
+
["a type-only import", 'import type { loadConfig } from "../config.js";'],
|
|
78
|
+
["a namespace import", 'import * as cfg from "../config.js";'],
|
|
79
|
+
["a dynamic import", 'const { loadConfig } = await import("../config.js");'],
|
|
80
|
+
])("flags %s", (_label, source) => {
|
|
81
|
+
expect(offencesIn(file, source)).toHaveLength(1);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it.each([
|
|
85
|
+
["the Config type", 'import type { Config } from "../config.js";'],
|
|
86
|
+
["a constant beside it", 'import { DEFAULT_WORKSPACE_LOCK_TIMEOUT_MS, type Config } from "../config.js";'],
|
|
87
|
+
["the name in a comment", '// loadConfig() is main.ts\'s\nimport type { Config } from "../config.js";'],
|
|
88
|
+
["the name in a string", 'const hint = "loadConfig";'],
|
|
89
|
+
["a loadConfig from another module", 'import { loadConfig } from "@stigmer/server";'],
|
|
90
|
+
])("does not flag %s", (_label, source) => {
|
|
91
|
+
expect(offencesIn(file, source)).toEqual([]);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
describe("loadConfig is bound by main.ts alone", () => {
|
|
96
|
+
const visited: string[] = [];
|
|
97
|
+
const offences: Offence[] = [];
|
|
98
|
+
for (const file of typeScriptFilesUnder(SRC_ROOT, OUTSIDE_THE_SWEEP)) {
|
|
99
|
+
const relativeFile = relative(SRC_ROOT, file);
|
|
100
|
+
visited.push(relativeFile);
|
|
101
|
+
if (relativeFile === THE_ONE_CALLER) continue;
|
|
102
|
+
for (const how of offencesIn(file, readSource(file))) {
|
|
103
|
+
offences.push({ file: relativeFile, how });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
it("inspected the production tree (the walk is rooted where it claims)", () => {
|
|
108
|
+
expect(visited).toEqual(
|
|
109
|
+
expect.arrayContaining([
|
|
110
|
+
"main.ts",
|
|
111
|
+
"runner.ts",
|
|
112
|
+
"runner-manager.ts",
|
|
113
|
+
join("activities", "promote-task-output.ts"),
|
|
114
|
+
join("activities", "call-agent.ts"),
|
|
115
|
+
join("shared", "checkpointer", "factory.ts"),
|
|
116
|
+
]),
|
|
117
|
+
);
|
|
118
|
+
expect(visited.some((f) => f.includes("__tests__"))).toBe(false);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it("main.ts does bind it (the fence guards a caller that exists)", () => {
|
|
122
|
+
expect(offencesIn(join(SRC_ROOT, THE_ONE_CALLER), readSource(join(SRC_ROOT, THE_ONE_CALLER)))).toEqual([
|
|
123
|
+
"imports loadConfig",
|
|
124
|
+
]);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it("no other production module binds or loads it", () => {
|
|
128
|
+
expect(
|
|
129
|
+
offences,
|
|
130
|
+
`loadConfig() is the environment boundary and main.ts's alone; an activity takes the runner's injected Config (config.ts header):\n${offences
|
|
131
|
+
.map((o) => ` ${o.file} ${o.how}`)
|
|
132
|
+
.join("\n")}`,
|
|
133
|
+
).toEqual([]);
|
|
134
|
+
});
|
|
135
|
+
});
|