@llm4ts/flow 2.24.0 → 2.25.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.
@@ -23,6 +23,13 @@ export interface FlowContextShape {
23
23
  readonly hosting: GitHubToolShape;
24
24
  readonly events: FlowEventsShape;
25
25
  readonly reviewers: ReadonlyArray<LlmServiceShape>;
26
+ /**
27
+ * The judgment seat as a chat service, for the rubric judges that predate
28
+ * ADR 0017: the reasoner with its tools taken away wherever the harness
29
+ * can (a roster's judge role, or `readOnly` over a CLI reasoner). Absent
30
+ * on a context built by hand; judges then fall back to `reasoning`.
31
+ */
32
+ readonly judge?: LlmServiceShape;
26
33
  readonly coderCapabilities: ConnectorCapabilities;
27
34
  readonly userPrompt: string;
28
35
  readonly workDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"FlowContext.d.ts","sourceRoot":"","sources":["../src/FlowContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;IAClD,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,CAAA;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,cAAc,KACrB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5D;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;IAC5B,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CACnE;;AAED,qBAAa,WAAY,SAAQ,gBAEhC;CAAG"}
1
+ {"version":3,"file":"FlowContext.d.ts","sourceRoot":"","sources":["../src/FlowContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;IAClD;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,CAAA;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,cAAc,KACrB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5D;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;IAC5B,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CACnE;;AAED,qBAAa,WAAY,SAAQ,gBAEhC;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"FlowContext.js","sourceRoot":"","sources":["../src/FlowContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAyDzC,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAAiC,CAC/E,0BAA0B,CAC3B;CAAG"}
1
+ {"version":3,"file":"FlowContext.js","sourceRoot":"","sources":["../src/FlowContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAgEzC,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAAiC,CAC/E,0BAA0B,CAC3B;CAAG"}
@@ -57,7 +57,7 @@ export declare const certaintyOf: (answer: Answer) => number;
57
57
  * answer rebuilt from too little mass on the offered options is always held.
58
58
  */
59
59
  export declare const decide: (answer: Answer, policy?: JudgmentPolicy) => Decision;
60
- /** The context's judgment service, or one derived from its reasoning seat. */
60
+ /** The context's judgment service, or one derived from its judge (else reasoning) seat. */
61
61
  export declare const judgmentOf: (context: FlowContextShape) => JudgmentShape;
62
62
  export interface JudgeOrEscalateOptions {
63
63
  readonly judgment: JudgmentShape;
@@ -1 +1 @@
1
- {"version":3,"file":"Judgment.d.ts","sourceRoot":"","sources":["../src/Judgment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EACd,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EAEL,cAAc,EAOd,KAAK,MAAM,EACX,KAAK,YAAY,EAGlB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAkB,MAAM,gBAAgB,CAAA;AAC/E,OAAO,EAAQ,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;;IAgBzD,sCAAsC;;IAEtC,kFAAkF;;;AAhBpF;;;;;;;;;;;GAWG;AAEH,qBAAa,cAAe,SAAQ,mBAKlC;CAAG;;IAQH,mEAAmE;;IAEnE,kDAAkD;;IAElD,4DAA4D;;;;;IAK5D,wEAAwE;;;AAV1E,qBAAa,cAAe,SAAQ,mBAYlC;IACA,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc;CAUjD;AAED,eAAO,MAAM,qBAAqB,gBAA0B,CAAA;AAE5D;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,MACiC,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,MAAM,GACjB,QAAQ,MAAM,EACd,SAAQ,cAAsC,KAC7C,QAOF,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,UAAU,GAAI,SAAS,gBAAgB,KAAG,aACC,CAAA;AAgKxD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CACjC;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,ywCAyD1B,CAAA;AAYF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,aAAa,EACtB,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAgBrC,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,cAAc,m0CA+BzB,CAAA"}
1
+ {"version":3,"file":"Judgment.d.ts","sourceRoot":"","sources":["../src/Judgment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EACd,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EAEL,cAAc,EAOd,KAAK,MAAM,EACX,KAAK,YAAY,EAGlB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAkB,MAAM,gBAAgB,CAAA;AAC/E,OAAO,EAAQ,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;;IAgBzD,sCAAsC;;IAEtC,kFAAkF;;;AAhBpF;;;;;;;;;;;GAWG;AAEH,qBAAa,cAAe,SAAQ,mBAKlC;CAAG;;IAQH,mEAAmE;;IAEnE,kDAAkD;;IAElD,4DAA4D;;;;;IAK5D,wEAAwE;;;AAV1E,qBAAa,cAAe,SAAQ,mBAYlC;IACA,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc;CAUjD;AAED,eAAO,MAAM,qBAAqB,gBAA0B,CAAA;AAE5D;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,MACiC,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,MAAM,GACjB,QAAQ,MAAM,EACd,SAAQ,cAAsC,KAC7C,QAOF,CAAA;AAED,2FAA2F;AAC3F,eAAO,MAAM,UAAU,GAAI,SAAS,gBAAgB,KAAG,aACkB,CAAA;AAgKzE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CACjC;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,ywCAyD1B,CAAA;AAYF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,aAAa,EACtB,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAgBrC,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,cAAc,m0CA+BzB,CAAA"}
package/dist/Judgment.js CHANGED
@@ -71,8 +71,8 @@ export const decide = (answer, policy = defaultJudgmentPolicy) => {
71
71
  const bands = policy.thresholds(answer.origin);
72
72
  return certainty >= bands.act ? "act" : certainty < bands.hold ? "hold" : "caution";
73
73
  };
74
- /** The context's judgment service, or one derived from its reasoning seat. */
75
- export const judgmentOf = (context) => context.judgment ?? makeLlmJudgment(context.reasoning);
74
+ /** The context's judgment service, or one derived from its judge (else reasoning) seat. */
75
+ export const judgmentOf = (context) => context.judgment ?? makeLlmJudgment(context.judge ?? context.reasoning);
76
76
  const backendFailure = (error) => FlowLlmError.from(ProviderError.make({ message: error.message, cause: error }));
77
77
  // Escalation asks a reasoning model the same question in its own words and
78
78
  // decodes a typed reply, so the schema per kind mirrors the answer shape.
@@ -1 +1 @@
1
- {"version":3,"file":"Judgment.js","sourceRoot":"","sources":["../src/Judgment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Judgment.js","sourceRoot":"","sources":["../src/Judgment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ import type { ProcessExecutorShape } from "@llm4ts/core/ProcessExecutor";
4
+ import { FlowAborted } from "./FlowError.ts";
5
+ import { type FlowEventsShape } from "./FlowEvents.ts";
6
+ import type { PlainFileStoreShape } from "./Persistence.ts";
7
+ declare const NodePin_base: Schema.Class<NodePin, Schema.Struct<{
8
+ readonly spec: Schema.String;
9
+ readonly source: Schema.String;
10
+ }>, {}>;
11
+ /** A Node pin as the application wrote it, and where. */
12
+ export declare class NodePin extends NodePin_base {
13
+ }
14
+ /**
15
+ * Whether a Node version (`v24.12.0`) satisfies a pin as `.nvmrc`, `engines`
16
+ * or corepack write them; `undefined` when the pin is an alias or a form
17
+ * this cannot read, which is a reason to say so, not to fail.
18
+ */
19
+ export declare const nodeVersionSatisfies: (version: string, spec: string) => boolean | undefined;
20
+ /** The Node pins in an application directory: `.nvmrc`, `.node-version`, `engines.node`. */
21
+ export declare const nodePinsOf: (files: PlainFileStoreShape, appDir: string) => Effect.Effect<ReadonlyArray<NodePin>>;
22
+ /** pnpm's `use-node-version` from the application's `.npmrc`, when it carries one. */
23
+ export declare const pnpmNodeVersionOf: (files: PlainFileStoreShape, appDir: string) => Effect.Effect<string | undefined>;
24
+ export type NodePreflightReport = {
25
+ readonly _tag: "Off";
26
+ readonly summary: string;
27
+ } | {
28
+ readonly _tag: "NoPin";
29
+ readonly summary: string;
30
+ } | {
31
+ readonly _tag: "Managed";
32
+ readonly node: string;
33
+ readonly summary: string;
34
+ } | {
35
+ readonly _tag: "NoNode";
36
+ readonly summary: string;
37
+ } | {
38
+ readonly _tag: "Mismatch";
39
+ readonly node: string;
40
+ readonly unmet: ReadonlyArray<NodePin>;
41
+ readonly summary: string;
42
+ } | {
43
+ readonly _tag: "Ok";
44
+ readonly node: string;
45
+ readonly summary: string;
46
+ };
47
+ /**
48
+ * Compares the Node the gates would run on — `node --version` through the
49
+ * same executor and PATH the gates get — with the application's pins.
50
+ * `LLM4TS_NODE_CHECK=off` skips it.
51
+ */
52
+ export declare const nodePreflightReport: (process: ProcessExecutorShape, files: PlainFileStoreShape, appDir: string, environment: Readonly<Record<string, string | undefined>>) => Effect.Effect<NodePreflightReport, never, never>;
53
+ /** The report on the run's events, or the run aborted before its first gate. */
54
+ export declare const nodePreflight: (process: ProcessExecutorShape, files: PlainFileStoreShape, events: FlowEventsShape, appDir: string, environment: Readonly<Record<string, string | undefined>>) => Effect.Effect<void, import("./FlowError.ts").PersistenceError | import("./FlowError.ts").PlanParseError | import("./FlowError.ts").UnsupportedSchemaVersion | import("./FlowError.ts").WorkspacePathError | import("./FlowError.ts").WorkspaceLimitError | import("./FlowError.ts").WorkspaceIoError | FlowAborted | import("./FlowError.ts").ProcessError | import("./FlowError.ts").FlowLlmError | import("./FlowError.ts").FlowCapabilityDenied | import("./FlowError.ts").ColumnNotFound | import("./FlowError.ts").BudgetExceeded | import("./FlowError.ts").StoryPlanInvalid | import("./FlowError.ts").PerimeterViolation | import("./FlowError.ts").MissingDependency | import("./FlowError.ts").MergeConflict | import("./FlowError.ts").EpicCheckoutDirty | import("./FlowError.ts").RosterInvalid | import("./FlowError.ts").EpicIncomplete | import("./FlowError.ts").LandingFailed | import("./FlowError.ts").RefineRefused | import("./FlowError.ts").RosterExhausted | import("./FlowError.ts").StoryFailed | import("./FlowError.ts").DecisionsInvalid | import("./FlowError.ts").OpenPointsPending | import("./FlowError.ts").ExtractPackMissing | import("./FlowError.ts").EpicBriefInvalid | import("./FlowError.ts").EpicBriefNotApproved | import("./FlowError.ts").ContractConflict, never>;
55
+ export {};
56
+ //# sourceMappingURL=NodePreflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodePreflight.d.ts","sourceRoot":"","sources":["../src/NodePreflight.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAQ,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;;;;;AAE3D,yDAAyD;AACzD,qBAAa,OAAQ,SAAQ,YAG3B;CAAG;AA8FL;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,GAAG,SAyB9E,CAAA;AAsBD,4FAA4F;AAC5F,eAAO,MAAM,UAAU,GACrB,OAAO,mBAAmB,EAC1B,QAAQ,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAqBnC,CAAA;AAEJ,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,mBAAmB,EAC1B,QAAQ,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAS/B,CAAA;AAIJ,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAO5E;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,4LA8D9B,CAAA;AAEF,gFAAgF;AAChF,eAAO,MAAM,aAAa,s5CAYxB,CAAA"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Which Node will the gates run on, and is it the one the application pins?
3
+ *
4
+ * Gates (`pnpm lint`, `pnpm test`, `pnpm build`) are spawned with the
5
+ * environment llm4ts inherited, so `pnpm` finds the `node` on PATH, which is
6
+ * whatever shell launched llm4ts, not what the application asks for in
7
+ * `.nvmrc`, `.node-version` or `package.json#engines`. A mismatch surfaces as
8
+ * a red gate on the first story, in a syntax error or an engine refusal that
9
+ * says nothing about Node. This asks before the first gate, and names both.
10
+ *
11
+ * pnpm's `use-node-version` (`.npmrc`) makes pnpm fetch and run that Node
12
+ * itself, so a target that carries it passes regardless of PATH.
13
+ */
14
+ import { join } from "node:path";
15
+ import * as Effect from "effect/Effect";
16
+ import * as Schema from "effect/Schema";
17
+ import { FlowAborted } from "./FlowError.js";
18
+ import { Info } from "./FlowEvents.js";
19
+ /** A Node pin as the application wrote it, and where. */
20
+ export class NodePin extends Schema.Class("NodePin")({
21
+ spec: Schema.String,
22
+ source: Schema.String
23
+ }) {
24
+ }
25
+ const partialOf = (text) => {
26
+ const match = /^v?(\d+)(?:\.(\d+|x|\*))?(?:\.(\d+|x|\*))?$/.exec(text.trim());
27
+ if (match === null || match[1] === undefined) {
28
+ return undefined;
29
+ }
30
+ const component = (value) => value === undefined || value === "x" || value === "*" ? undefined : Number(value);
31
+ const minor = component(match[2]);
32
+ const patch = component(match[3]);
33
+ return {
34
+ major: Number(match[1]),
35
+ ...(minor === undefined ? {} : { minor }),
36
+ ...(patch === undefined ? {} : { patch })
37
+ };
38
+ };
39
+ const triple = (version) => [
40
+ version.major,
41
+ version.minor ?? 0,
42
+ version.patch ?? 0
43
+ ];
44
+ const compare = (left, right) => {
45
+ for (let index = 0; index < 3; index += 1) {
46
+ const difference = (left[index] ?? 0) - (right[index] ?? 0);
47
+ if (difference !== 0) {
48
+ return difference;
49
+ }
50
+ }
51
+ return 0;
52
+ };
53
+ /** The alias forms only a version manager resolves (`lts/*`, `lts/iron`, `node`). */
54
+ const isAlias = (spec) => /^(lts\/.*|node|latest|stable|current|system)$/i.test(spec);
55
+ const tokenHolds = (version, token) => {
56
+ if (token === "*" || token === "x" || token === "latest") {
57
+ return true;
58
+ }
59
+ const match = /^(>=|<=|>|<|=|\^|~)?\s*(.+)$/.exec(token);
60
+ const operator = match?.[1] ?? "";
61
+ const partial = partialOf(match?.[2] ?? "");
62
+ if (partial === undefined) {
63
+ return undefined;
64
+ }
65
+ const low = triple(partial);
66
+ switch (operator) {
67
+ case ">=":
68
+ return compare(version, low) >= 0;
69
+ case ">":
70
+ return compare(version, low) > 0;
71
+ case "<":
72
+ return compare(version, low) < 0;
73
+ case "<=":
74
+ return compare(version, low) <= 0;
75
+ case "^": {
76
+ const high = partial.major > 0
77
+ ? [partial.major + 1, 0, 0]
78
+ : partial.minor !== undefined && partial.minor > 0
79
+ ? [0, partial.minor + 1, 0]
80
+ : [0, 0, (partial.patch ?? 0) + 1];
81
+ return compare(version, low) >= 0 && compare(version, high) < 0;
82
+ }
83
+ case "~": {
84
+ const high = partial.minor === undefined
85
+ ? [partial.major + 1, 0, 0]
86
+ : [partial.major, partial.minor + 1, 0];
87
+ return compare(version, low) >= 0 && compare(version, high) < 0;
88
+ }
89
+ default: {
90
+ // A bare pin matches on the components it names: "20" is any 20.x.y.
91
+ const [major, minor, patch] = version;
92
+ return (major === partial.major &&
93
+ (partial.minor === undefined || minor === partial.minor) &&
94
+ (partial.patch === undefined || patch === partial.patch));
95
+ }
96
+ }
97
+ };
98
+ /**
99
+ * Whether a Node version (`v24.12.0`) satisfies a pin as `.nvmrc`, `engines`
100
+ * or corepack write them; `undefined` when the pin is an alias or a form
101
+ * this cannot read, which is a reason to say so, not to fail.
102
+ */
103
+ export const nodeVersionSatisfies = (version, spec) => {
104
+ const trimmed = spec.trim();
105
+ const have = partialOf(version);
106
+ if (have === undefined || isAlias(trimmed)) {
107
+ return undefined;
108
+ }
109
+ const actual = triple(have);
110
+ let unknown = false;
111
+ const clauses = trimmed.split("||").map((clause) => clause.trim());
112
+ for (const clause of clauses) {
113
+ const hyphen = /^(\S+)\s+-\s+(\S+)$/.exec(clause);
114
+ const tokens = hyphen?.[1] !== undefined && hyphen[2] !== undefined
115
+ ? [`>=${hyphen[1]}`, `<=${hyphen[2]}`]
116
+ : clause.split(/\s+/).filter((token) => token.length > 0);
117
+ const verdicts = tokens.map((token) => tokenHolds(actual, token));
118
+ if (verdicts.some((verdict) => verdict === undefined)) {
119
+ unknown = true;
120
+ continue;
121
+ }
122
+ if (verdicts.every((verdict) => verdict === true)) {
123
+ return true;
124
+ }
125
+ }
126
+ return unknown ? undefined : false;
127
+ };
128
+ // ---- Reading the pins ------------------------------------------------------------------
129
+ const PackageEngines = Schema.fromJsonString(Schema.Struct({
130
+ engines: Schema.optionalKey(Schema.Struct({ node: Schema.optionalKey(Schema.String) }))
131
+ }));
132
+ const readOptional = (files, path) => files.read(path).pipe(Effect.catch(() => Effect.succeed(undefined)));
133
+ const firstLine = (text) => text
134
+ .split(/\r?\n/)
135
+ .map((line) => line.replace(/#.*$/, "").trim())
136
+ .find((line) => line.length > 0) ?? "";
137
+ /** The Node pins in an application directory: `.nvmrc`, `.node-version`, `engines.node`. */
138
+ export const nodePinsOf = (files, appDir) => Effect.gen(function* () {
139
+ const pins = [];
140
+ for (const source of [".nvmrc", ".node-version"]) {
141
+ const text = yield* readOptional(files, join(appDir, source));
142
+ const spec = text === undefined ? "" : firstLine(text);
143
+ if (spec.length > 0) {
144
+ pins.push(NodePin.make({ spec, source }));
145
+ }
146
+ }
147
+ const manifest = yield* readOptional(files, join(appDir, "package.json"));
148
+ if (manifest !== undefined) {
149
+ const engines = yield* Schema.decodeUnknownEffect(PackageEngines)(manifest).pipe(Effect.map((parsed) => parsed.engines?.node?.trim()), Effect.catch(() => Effect.succeed(undefined)));
150
+ if (engines !== undefined && engines.length > 0) {
151
+ pins.push(NodePin.make({ spec: engines, source: "package.json engines.node" }));
152
+ }
153
+ }
154
+ return pins;
155
+ });
156
+ /** pnpm's `use-node-version` from the application's `.npmrc`, when it carries one. */
157
+ export const pnpmNodeVersionOf = (files, appDir) => Effect.map(readOptional(files, join(appDir, ".npmrc")), (text) => {
158
+ for (const line of (text ?? "").split(/\r?\n/)) {
159
+ const match = /^\s*use-node-version\s*=\s*(\S+)/.exec(line);
160
+ if (match?.[1] !== undefined) {
161
+ return match[1];
162
+ }
163
+ }
164
+ return undefined;
165
+ });
166
+ const switchedOff = (value) => value !== undefined && ["off", "0", "false", "no"].includes(value.trim().toLowerCase());
167
+ const describePin = (pin) => `${pin.spec} (${pin.source})`;
168
+ /**
169
+ * Compares the Node the gates would run on — `node --version` through the
170
+ * same executor and PATH the gates get — with the application's pins.
171
+ * `LLM4TS_NODE_CHECK=off` skips it.
172
+ */
173
+ export const nodePreflightReport = Effect.fn("@llm4ts/flow/NodePreflight.report")(function* (process, files, appDir, environment) {
174
+ if (switchedOff(environment.LLM4TS_NODE_CHECK)) {
175
+ return { _tag: "Off", summary: "node: check off (LLM4TS_NODE_CHECK)" };
176
+ }
177
+ const pins = yield* nodePinsOf(files, appDir);
178
+ if (pins.length === 0) {
179
+ return {
180
+ _tag: "NoPin",
181
+ summary: `node: ${appDir} pins no version (.nvmrc, .node-version, package.json engines.node)`
182
+ };
183
+ }
184
+ const managed = yield* pnpmNodeVersionOf(files, appDir);
185
+ if (managed !== undefined) {
186
+ return {
187
+ _tag: "Managed",
188
+ node: managed,
189
+ summary: `node: pnpm runs the gates on Node ${managed} (use-node-version in .npmrc)`
190
+ };
191
+ }
192
+ const probed = yield* process.run(["node", "--version"], appDir, {}).pipe(Effect.map((result) => (result.exitCode === 0 ? result.stdout.join("").trim() : undefined)), Effect.catch(() => Effect.succeed(undefined)));
193
+ if (probed === undefined || probed.length === 0) {
194
+ return {
195
+ _tag: "NoNode",
196
+ summary: `node: not on the PATH the gates inherit, though ${appDir} pins ` +
197
+ `${pins.map(describePin).join(", ")}; launch llm4ts from a shell with node on PATH`
198
+ };
199
+ }
200
+ const unmet = pins.filter((pin) => nodeVersionSatisfies(probed, pin.spec) === false);
201
+ const unchecked = pins.filter((pin) => nodeVersionSatisfies(probed, pin.spec) === undefined);
202
+ if (unmet.length > 0) {
203
+ return {
204
+ _tag: "Mismatch",
205
+ node: probed,
206
+ unmet,
207
+ summary: `node: the gates would run on Node ${probed} (the node on PATH), but ${appDir} pins ` +
208
+ `${unmet.map(describePin).join(", ")}. Launch llm4ts under a matching Node ` +
209
+ "(nvm use / fnm use), or add use-node-version=<x.y.z> to the application's .npmrc " +
210
+ "so pnpm fetches it, or set LLM4TS_NODE_CHECK=off to run anyway"
211
+ };
212
+ }
213
+ return {
214
+ _tag: "Ok",
215
+ node: probed,
216
+ summary: `node: ${probed} satisfies ${pins
217
+ .filter((pin) => !unchecked.includes(pin))
218
+ .map(describePin)
219
+ .join(", ")}` +
220
+ (unchecked.length === 0
221
+ ? ""
222
+ : `; ${unchecked.map(describePin).join(", ")} not checked (an alias only a version manager resolves)`)
223
+ };
224
+ });
225
+ /** The report on the run's events, or the run aborted before its first gate. */
226
+ export const nodePreflight = Effect.fn("@llm4ts/flow/NodePreflight.nodePreflight")(function* (process, files, events, appDir, environment) {
227
+ const report = yield* nodePreflightReport(process, files, appDir, environment);
228
+ if (report._tag === "Mismatch" || report._tag === "NoNode") {
229
+ return yield* FlowAborted.make({ message: report.summary });
230
+ }
231
+ yield* events.publish(Info.make({ message: report.summary }));
232
+ });
233
+ //# sourceMappingURL=NodePreflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodePreflight.js","sourceRoot":"","sources":["../src/NodePreflight.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llm4ts/flow",
3
- "version": "2.24.0",
3
+ "version": "2.25.0",
4
4
  "description": "Effect-native LLM workflow, persistence, review, and repository automation",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -56,6 +56,7 @@
56
56
  "./Judgment": "./dist/Judgment.js",
57
57
  "./JudgmentLog": "./dist/JudgmentLog.js",
58
58
  "./Perimeter": "./dist/Perimeter.js",
59
+ "./NodePreflight": "./dist/NodePreflight.js",
59
60
  "./Persistence": "./dist/Persistence.js",
60
61
  "./Plan": "./dist/Plan.js",
61
62
  "./PlanExecution": "./dist/PlanExecution.js",
@@ -108,7 +109,7 @@
108
109
  "typescript"
109
110
  ],
110
111
  "dependencies": {
111
- "@llm4ts/core": "2.24.0"
112
+ "@llm4ts/core": "2.25.0"
112
113
  },
113
114
  "peerDependencies": {
114
115
  "effect": "4.0.0"
@@ -25,6 +25,13 @@ export interface FlowContextShape {
25
25
  readonly hosting: GitHubToolShape
26
26
  readonly events: FlowEventsShape
27
27
  readonly reviewers: ReadonlyArray<LlmServiceShape>
28
+ /**
29
+ * The judgment seat as a chat service, for the rubric judges that predate
30
+ * ADR 0017: the reasoner with its tools taken away wherever the harness
31
+ * can (a roster's judge role, or `readOnly` over a CLI reasoner). Absent
32
+ * on a context built by hand; judges then fall back to `reasoning`.
33
+ */
34
+ readonly judge?: LlmServiceShape
28
35
  readonly coderCapabilities: ConnectorCapabilities
29
36
  readonly userPrompt: string
30
37
  readonly workDir: string
package/src/Judgment.ts CHANGED
@@ -108,9 +108,9 @@ export const decide = (
108
108
  return certainty >= bands.act ? "act" : certainty < bands.hold ? "hold" : "caution"
109
109
  }
110
110
 
111
- /** The context's judgment service, or one derived from its reasoning seat. */
111
+ /** The context's judgment service, or one derived from its judge (else reasoning) seat. */
112
112
  export const judgmentOf = (context: FlowContextShape): JudgmentShape =>
113
- context.judgment ?? makeLlmJudgment(context.reasoning)
113
+ context.judgment ?? makeLlmJudgment(context.judge ?? context.reasoning)
114
114
 
115
115
  const backendFailure = (error: JudgmentBackendError): FlowError =>
116
116
  FlowLlmError.from(ProviderError.make({ message: error.message, cause: error }))
@@ -0,0 +1,316 @@
1
+ /**
2
+ * Which Node will the gates run on, and is it the one the application pins?
3
+ *
4
+ * Gates (`pnpm lint`, `pnpm test`, `pnpm build`) are spawned with the
5
+ * environment llm4ts inherited, so `pnpm` finds the `node` on PATH, which is
6
+ * whatever shell launched llm4ts, not what the application asks for in
7
+ * `.nvmrc`, `.node-version` or `package.json#engines`. A mismatch surfaces as
8
+ * a red gate on the first story, in a syntax error or an engine refusal that
9
+ * says nothing about Node. This asks before the first gate, and names both.
10
+ *
11
+ * pnpm's `use-node-version` (`.npmrc`) makes pnpm fetch and run that Node
12
+ * itself, so a target that carries it passes regardless of PATH.
13
+ */
14
+ import { join } from "node:path"
15
+ import * as Effect from "effect/Effect"
16
+ import * as Schema from "effect/Schema"
17
+ import type { ProcessExecutorShape } from "@llm4ts/core/ProcessExecutor"
18
+ import { FlowAborted, type FlowError } from "./FlowError.ts"
19
+ import { Info, type FlowEventsShape } from "./FlowEvents.ts"
20
+ import type { PlainFileStoreShape } from "./Persistence.ts"
21
+
22
+ /** A Node pin as the application wrote it, and where. */
23
+ export class NodePin extends Schema.Class<NodePin>("NodePin")({
24
+ spec: Schema.String,
25
+ source: Schema.String
26
+ }) {}
27
+
28
+ // ---- Version matching ---------------------------------------------------------------
29
+
30
+ type Partial = {
31
+ readonly major: number
32
+ readonly minor?: number
33
+ readonly patch?: number
34
+ }
35
+
36
+ const partialOf = (text: string): Partial | undefined => {
37
+ const match = /^v?(\d+)(?:\.(\d+|x|\*))?(?:\.(\d+|x|\*))?$/.exec(text.trim())
38
+ if (match === null || match[1] === undefined) {
39
+ return undefined
40
+ }
41
+ const component = (value: string | undefined): number | undefined =>
42
+ value === undefined || value === "x" || value === "*" ? undefined : Number(value)
43
+ const minor = component(match[2])
44
+ const patch = component(match[3])
45
+ return {
46
+ major: Number(match[1]),
47
+ ...(minor === undefined ? {} : { minor }),
48
+ ...(patch === undefined ? {} : { patch })
49
+ }
50
+ }
51
+
52
+ const triple = (version: Partial): ReadonlyArray<number> => [
53
+ version.major,
54
+ version.minor ?? 0,
55
+ version.patch ?? 0
56
+ ]
57
+
58
+ const compare = (left: ReadonlyArray<number>, right: ReadonlyArray<number>): number => {
59
+ for (let index = 0; index < 3; index += 1) {
60
+ const difference = (left[index] ?? 0) - (right[index] ?? 0)
61
+ if (difference !== 0) {
62
+ return difference
63
+ }
64
+ }
65
+ return 0
66
+ }
67
+
68
+ /** The alias forms only a version manager resolves (`lts/*`, `lts/iron`, `node`). */
69
+ const isAlias = (spec: string): boolean =>
70
+ /^(lts\/.*|node|latest|stable|current|system)$/i.test(spec)
71
+
72
+ const tokenHolds = (version: ReadonlyArray<number>, token: string): boolean | undefined => {
73
+ if (token === "*" || token === "x" || token === "latest") {
74
+ return true
75
+ }
76
+ const match = /^(>=|<=|>|<|=|\^|~)?\s*(.+)$/.exec(token)
77
+ const operator = match?.[1] ?? ""
78
+ const partial = partialOf(match?.[2] ?? "")
79
+ if (partial === undefined) {
80
+ return undefined
81
+ }
82
+ const low = triple(partial)
83
+ switch (operator) {
84
+ case ">=":
85
+ return compare(version, low) >= 0
86
+ case ">":
87
+ return compare(version, low) > 0
88
+ case "<":
89
+ return compare(version, low) < 0
90
+ case "<=":
91
+ return compare(version, low) <= 0
92
+ case "^": {
93
+ const high =
94
+ partial.major > 0
95
+ ? [partial.major + 1, 0, 0]
96
+ : partial.minor !== undefined && partial.minor > 0
97
+ ? [0, partial.minor + 1, 0]
98
+ : [0, 0, (partial.patch ?? 0) + 1]
99
+ return compare(version, low) >= 0 && compare(version, high) < 0
100
+ }
101
+ case "~": {
102
+ const high =
103
+ partial.minor === undefined
104
+ ? [partial.major + 1, 0, 0]
105
+ : [partial.major, partial.minor + 1, 0]
106
+ return compare(version, low) >= 0 && compare(version, high) < 0
107
+ }
108
+ default: {
109
+ // A bare pin matches on the components it names: "20" is any 20.x.y.
110
+ const [major, minor, patch] = version
111
+ return (
112
+ major === partial.major &&
113
+ (partial.minor === undefined || minor === partial.minor) &&
114
+ (partial.patch === undefined || patch === partial.patch)
115
+ )
116
+ }
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Whether a Node version (`v24.12.0`) satisfies a pin as `.nvmrc`, `engines`
122
+ * or corepack write them; `undefined` when the pin is an alias or a form
123
+ * this cannot read, which is a reason to say so, not to fail.
124
+ */
125
+ export const nodeVersionSatisfies = (version: string, spec: string): boolean | undefined => {
126
+ const trimmed = spec.trim()
127
+ const have = partialOf(version)
128
+ if (have === undefined || isAlias(trimmed)) {
129
+ return undefined
130
+ }
131
+ const actual = triple(have)
132
+ let unknown = false
133
+ const clauses = trimmed.split("||").map((clause) => clause.trim())
134
+ for (const clause of clauses) {
135
+ const hyphen = /^(\S+)\s+-\s+(\S+)$/.exec(clause)
136
+ const tokens =
137
+ hyphen?.[1] !== undefined && hyphen[2] !== undefined
138
+ ? [`>=${hyphen[1]}`, `<=${hyphen[2]}`]
139
+ : clause.split(/\s+/).filter((token) => token.length > 0)
140
+ const verdicts = tokens.map((token) => tokenHolds(actual, token))
141
+ if (verdicts.some((verdict) => verdict === undefined)) {
142
+ unknown = true
143
+ continue
144
+ }
145
+ if (verdicts.every((verdict) => verdict === true)) {
146
+ return true
147
+ }
148
+ }
149
+ return unknown ? undefined : false
150
+ }
151
+
152
+ // ---- Reading the pins ------------------------------------------------------------------
153
+
154
+ const PackageEngines = Schema.fromJsonString(
155
+ Schema.Struct({
156
+ engines: Schema.optionalKey(Schema.Struct({ node: Schema.optionalKey(Schema.String) }))
157
+ })
158
+ )
159
+
160
+ const readOptional = (
161
+ files: PlainFileStoreShape,
162
+ path: string
163
+ ): Effect.Effect<string | undefined> =>
164
+ files.read(path).pipe(Effect.catch(() => Effect.succeed(undefined)))
165
+
166
+ const firstLine = (text: string): string =>
167
+ text
168
+ .split(/\r?\n/)
169
+ .map((line) => line.replace(/#.*$/, "").trim())
170
+ .find((line) => line.length > 0) ?? ""
171
+
172
+ /** The Node pins in an application directory: `.nvmrc`, `.node-version`, `engines.node`. */
173
+ export const nodePinsOf = (
174
+ files: PlainFileStoreShape,
175
+ appDir: string
176
+ ): Effect.Effect<ReadonlyArray<NodePin>> =>
177
+ Effect.gen(function* () {
178
+ const pins: Array<NodePin> = []
179
+ for (const source of [".nvmrc", ".node-version"]) {
180
+ const text = yield* readOptional(files, join(appDir, source))
181
+ const spec = text === undefined ? "" : firstLine(text)
182
+ if (spec.length > 0) {
183
+ pins.push(NodePin.make({ spec, source }))
184
+ }
185
+ }
186
+ const manifest = yield* readOptional(files, join(appDir, "package.json"))
187
+ if (manifest !== undefined) {
188
+ const engines = yield* Schema.decodeUnknownEffect(PackageEngines)(manifest).pipe(
189
+ Effect.map((parsed) => parsed.engines?.node?.trim()),
190
+ Effect.catch(() => Effect.succeed(undefined))
191
+ )
192
+ if (engines !== undefined && engines.length > 0) {
193
+ pins.push(NodePin.make({ spec: engines, source: "package.json engines.node" }))
194
+ }
195
+ }
196
+ return pins
197
+ })
198
+
199
+ /** pnpm's `use-node-version` from the application's `.npmrc`, when it carries one. */
200
+ export const pnpmNodeVersionOf = (
201
+ files: PlainFileStoreShape,
202
+ appDir: string
203
+ ): Effect.Effect<string | undefined> =>
204
+ Effect.map(readOptional(files, join(appDir, ".npmrc")), (text) => {
205
+ for (const line of (text ?? "").split(/\r?\n/)) {
206
+ const match = /^\s*use-node-version\s*=\s*(\S+)/.exec(line)
207
+ if (match?.[1] !== undefined) {
208
+ return match[1]
209
+ }
210
+ }
211
+ return undefined
212
+ })
213
+
214
+ // ---- The report ---------------------------------------------------------------------------
215
+
216
+ export type NodePreflightReport =
217
+ | { readonly _tag: "Off"; readonly summary: string }
218
+ | { readonly _tag: "NoPin"; readonly summary: string }
219
+ | { readonly _tag: "Managed"; readonly node: string; readonly summary: string }
220
+ | { readonly _tag: "NoNode"; readonly summary: string }
221
+ | {
222
+ readonly _tag: "Mismatch"
223
+ readonly node: string
224
+ readonly unmet: ReadonlyArray<NodePin>
225
+ readonly summary: string
226
+ }
227
+ | { readonly _tag: "Ok"; readonly node: string; readonly summary: string }
228
+
229
+ const switchedOff = (value: string | undefined): boolean =>
230
+ value !== undefined && ["off", "0", "false", "no"].includes(value.trim().toLowerCase())
231
+
232
+ const describePin = (pin: NodePin): string => `${pin.spec} (${pin.source})`
233
+
234
+ /**
235
+ * Compares the Node the gates would run on — `node --version` through the
236
+ * same executor and PATH the gates get — with the application's pins.
237
+ * `LLM4TS_NODE_CHECK=off` skips it.
238
+ */
239
+ export const nodePreflightReport = Effect.fn("@llm4ts/flow/NodePreflight.report")(function* (
240
+ process: ProcessExecutorShape,
241
+ files: PlainFileStoreShape,
242
+ appDir: string,
243
+ environment: Readonly<Record<string, string | undefined>>
244
+ ): Effect.fn.Return<NodePreflightReport> {
245
+ if (switchedOff(environment.LLM4TS_NODE_CHECK)) {
246
+ return { _tag: "Off", summary: "node: check off (LLM4TS_NODE_CHECK)" }
247
+ }
248
+ const pins = yield* nodePinsOf(files, appDir)
249
+ if (pins.length === 0) {
250
+ return {
251
+ _tag: "NoPin",
252
+ summary: `node: ${appDir} pins no version (.nvmrc, .node-version, package.json engines.node)`
253
+ }
254
+ }
255
+ const managed = yield* pnpmNodeVersionOf(files, appDir)
256
+ if (managed !== undefined) {
257
+ return {
258
+ _tag: "Managed",
259
+ node: managed,
260
+ summary: `node: pnpm runs the gates on Node ${managed} (use-node-version in .npmrc)`
261
+ }
262
+ }
263
+ const probed = yield* process.run(["node", "--version"], appDir, {}).pipe(
264
+ Effect.map((result) => (result.exitCode === 0 ? result.stdout.join("").trim() : undefined)),
265
+ Effect.catch(() => Effect.succeed(undefined))
266
+ )
267
+ if (probed === undefined || probed.length === 0) {
268
+ return {
269
+ _tag: "NoNode",
270
+ summary:
271
+ `node: not on the PATH the gates inherit, though ${appDir} pins ` +
272
+ `${pins.map(describePin).join(", ")}; launch llm4ts from a shell with node on PATH`
273
+ }
274
+ }
275
+ const unmet = pins.filter((pin) => nodeVersionSatisfies(probed, pin.spec) === false)
276
+ const unchecked = pins.filter((pin) => nodeVersionSatisfies(probed, pin.spec) === undefined)
277
+ if (unmet.length > 0) {
278
+ return {
279
+ _tag: "Mismatch",
280
+ node: probed,
281
+ unmet,
282
+ summary:
283
+ `node: the gates would run on Node ${probed} (the node on PATH), but ${appDir} pins ` +
284
+ `${unmet.map(describePin).join(", ")}. Launch llm4ts under a matching Node ` +
285
+ "(nvm use / fnm use), or add use-node-version=<x.y.z> to the application's .npmrc " +
286
+ "so pnpm fetches it, or set LLM4TS_NODE_CHECK=off to run anyway"
287
+ }
288
+ }
289
+ return {
290
+ _tag: "Ok",
291
+ node: probed,
292
+ summary:
293
+ `node: ${probed} satisfies ${pins
294
+ .filter((pin) => !unchecked.includes(pin))
295
+ .map(describePin)
296
+ .join(", ")}` +
297
+ (unchecked.length === 0
298
+ ? ""
299
+ : `; ${unchecked.map(describePin).join(", ")} not checked (an alias only a version manager resolves)`)
300
+ }
301
+ })
302
+
303
+ /** The report on the run's events, or the run aborted before its first gate. */
304
+ export const nodePreflight = Effect.fn("@llm4ts/flow/NodePreflight.nodePreflight")(function* (
305
+ process: ProcessExecutorShape,
306
+ files: PlainFileStoreShape,
307
+ events: FlowEventsShape,
308
+ appDir: string,
309
+ environment: Readonly<Record<string, string | undefined>>
310
+ ): Effect.fn.Return<void, FlowError> {
311
+ const report = yield* nodePreflightReport(process, files, appDir, environment)
312
+ if (report._tag === "Mismatch" || report._tag === "NoNode") {
313
+ return yield* FlowAborted.make({ message: report.summary })
314
+ }
315
+ yield* events.publish(Info.make({ message: report.summary }))
316
+ })