@llm4ts/flow 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Context.d.ts +63 -0
- package/dist/Context.d.ts.map +1 -0
- package/dist/Context.js +127 -0
- package/dist/Context.js.map +1 -0
- package/dist/GitTool.d.ts +1 -0
- package/dist/GitTool.d.ts.map +1 -1
- package/dist/GitTool.js +10 -0
- package/dist/GitTool.js.map +1 -1
- package/dist/Pack.d.ts +2 -0
- package/dist/Pack.d.ts.map +1 -1
- package/dist/Pack.js +27 -1
- package/dist/Pack.js.map +1 -1
- package/dist/ProgramJudge.d.ts +52 -0
- package/dist/ProgramJudge.d.ts.map +1 -0
- package/dist/ProgramJudge.js +100 -0
- package/dist/ProgramJudge.js.map +1 -0
- package/dist/Provenance.d.ts +1 -0
- package/dist/Provenance.d.ts.map +1 -1
- package/dist/Provenance.js +7 -1
- package/dist/Provenance.js.map +1 -1
- package/dist/Survey.d.ts +10 -0
- package/dist/Survey.d.ts.map +1 -1
- package/dist/Survey.js +28 -0
- package/dist/Survey.js.map +1 -1
- package/dist/TransientRetry.d.ts +2 -0
- package/dist/TransientRetry.d.ts.map +1 -1
- package/dist/TransientRetry.js +35 -1
- package/dist/TransientRetry.js.map +1 -1
- package/package.json +4 -2
- package/src/Context.ts +207 -0
- package/src/GitTool.ts +21 -0
- package/src/Pack.ts +37 -1
- package/src/ProgramJudge.ts +186 -0
- package/src/Provenance.ts +10 -1
- package/src/Survey.ts +37 -0
- package/src/TransientRetry.ts +45 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { FlowLlmError, type FlowError } from "./FlowError.ts";
|
|
3
|
+
import { FlowEvents } from "./FlowEvents.ts";
|
|
4
|
+
export interface CappedText {
|
|
5
|
+
readonly text: string;
|
|
6
|
+
readonly originalChars: number;
|
|
7
|
+
readonly truncated: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Bound `text` to `limit` characters — the result is NEVER longer than `limit`,
|
|
11
|
+
* marker included. Keeps the head (3/4 of the remaining room) and the tail (1/4)
|
|
12
|
+
* so both the entry points and the trailing rules survive; the middle is where
|
|
13
|
+
* boilerplate lives. For `limit <= 0` the closest achievable result is the
|
|
14
|
+
* empty string, since length can't go negative.
|
|
15
|
+
*/
|
|
16
|
+
export declare const cap: (text: string, limit: number) => CappedText;
|
|
17
|
+
export declare const defaultContextBudget = 400000;
|
|
18
|
+
/**
|
|
19
|
+
* The default character budget: `LLM4TS_CONTEXT_BUDGET`, else the deprecated
|
|
20
|
+
* `LLM4TS_JUDGE_SOURCES_LIMIT`, else 400_000.
|
|
21
|
+
*/
|
|
22
|
+
export declare const budget: (environment?: Readonly<Record<string, string | undefined>>) => number;
|
|
23
|
+
/**
|
|
24
|
+
* Which kind of shrinking produced a truncation — the two are NOT
|
|
25
|
+
* interchangeable. "capped" numbers are literal character counts of shortened
|
|
26
|
+
* text; "shrunk" numbers are attempted budget CEILINGS after an oversized
|
|
27
|
+
* prompt failed. Conflating them would misreport how much content a
|
|
28
|
+
* clean-room audit actually lost.
|
|
29
|
+
*/
|
|
30
|
+
export type TruncationKind = "capped" | "shrunk";
|
|
31
|
+
export interface Truncation {
|
|
32
|
+
readonly label: string;
|
|
33
|
+
readonly originalChars: number;
|
|
34
|
+
readonly keptChars: number;
|
|
35
|
+
readonly kind: TruncationKind;
|
|
36
|
+
}
|
|
37
|
+
export declare const renderTruncation: (truncation: Truncation) => string;
|
|
38
|
+
/** Truncations recorded so far. Phases write these into `provenance.json`. */
|
|
39
|
+
export declare const truncations: Effect.Effect<ReadonlyArray<Truncation>>;
|
|
40
|
+
/** Run `effect` against a fresh, private truncation log. */
|
|
41
|
+
export declare const isolateTruncations: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
42
|
+
/**
|
|
43
|
+
* `cap`, publishing a `FlowEvent` and recording the truncation when one
|
|
44
|
+
* happens. `label` names what was shortened, so the event and the provenance
|
|
45
|
+
* entry are readable ("specs", "branch diff", "judge context").
|
|
46
|
+
*/
|
|
47
|
+
export declare const capped: (label: string, text: string, limit: number) => Effect.Effect<string, never, FlowEvents>;
|
|
48
|
+
export interface WithShrinkOptions {
|
|
49
|
+
readonly start?: number;
|
|
50
|
+
readonly environment?: Readonly<Record<string, string | undefined>>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Run `f` at `start` characters (default: `budget()`); on a shrinkable failure
|
|
54
|
+
* retry at 1/2, then 1/4, then give up. Repeating the same oversized prompt
|
|
55
|
+
* cannot succeed, so shrinking is the only retry that makes sense for this
|
|
56
|
+
* failure class — which is why context overflow is deliberately excluded from
|
|
57
|
+
* `TransientRetry`'s budget. Each shrink publishes a `FlowEvent` and is
|
|
58
|
+
* recorded like any other truncation. The terminal failure deliberately drops
|
|
59
|
+
* the typed cause: a resume layer classifying an "empty response" cause as
|
|
60
|
+
* flaky would replay this exact, permanently-failing budget sequence forever.
|
|
61
|
+
*/
|
|
62
|
+
export declare const withShrink: <A, E extends FlowError, R>(label: string, f: (chars: number) => Effect.Effect<A, E, R>, options?: WithShrinkOptions) => Effect.Effect<A, E | FlowLlmError, R | FlowEvents>;
|
|
63
|
+
//# sourceMappingURL=Context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../src/Context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAQ,MAAM,iBAAiB,CAAA;AAUlD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,UAejD,CAAA;AAED,eAAO,MAAM,oBAAoB,SAAU,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,MAAM,GACjB,cAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,KACtE,MAOF,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEhD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;CAC9B;AAED,eAAO,MAAM,gBAAgB,GAAI,YAAY,UAAU,KAAG,MAGmF,CAAA;AAiB7I,8EAA8E;AAC9E,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAGhE,CAAA;AAED,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACxC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAGrB,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,MAAM,0FAsBjB,CAAA;AAaF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;CACpE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,CAAC,SAAS,SAAS,EAAE,CAAC,EAClD,OAAO,MAAM,EACb,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5C,UAAS,iBAAsB,KAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,UAAU,CAoCnD,CAAA"}
|
package/dist/Context.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import * as Context from "effect/Context";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Ref from "effect/Ref";
|
|
4
|
+
import { FlowLlmError } from "./FlowError.js";
|
|
5
|
+
import { FlowEvents, Info } from "./FlowEvents.js";
|
|
6
|
+
import { isContextOverflow, isContextOverflowMessage } from "./TransientRetry.js";
|
|
7
|
+
// Context budgeting for LLM prompts: bound what a call ships, and make every
|
|
8
|
+
// truncation visible. Budgets are in CHARACTERS, not tokens — deterministic, no
|
|
9
|
+
// tokenizer dependency. Rule of thumb ~3.5 chars/token for code, so the 400k
|
|
10
|
+
// default is ~115k tokens: conservative against every provider.
|
|
11
|
+
const marker = "\n\n… [truncated] …\n\n";
|
|
12
|
+
/**
|
|
13
|
+
* Bound `text` to `limit` characters — the result is NEVER longer than `limit`,
|
|
14
|
+
* marker included. Keeps the head (3/4 of the remaining room) and the tail (1/4)
|
|
15
|
+
* so both the entry points and the trailing rules survive; the middle is where
|
|
16
|
+
* boilerplate lives. For `limit <= 0` the closest achievable result is the
|
|
17
|
+
* empty string, since length can't go negative.
|
|
18
|
+
*/
|
|
19
|
+
export const cap = (text, limit) => {
|
|
20
|
+
if (text.length <= limit) {
|
|
21
|
+
return { text, originalChars: text.length, truncated: false };
|
|
22
|
+
}
|
|
23
|
+
if (limit <= marker.length) {
|
|
24
|
+
return { text: text.slice(0, Math.max(limit, 0)), originalChars: text.length, truncated: true };
|
|
25
|
+
}
|
|
26
|
+
const room = limit - marker.length;
|
|
27
|
+
const head = Math.floor((room * 3) / 4);
|
|
28
|
+
const tail = room - head;
|
|
29
|
+
return {
|
|
30
|
+
text: `${text.slice(0, head)}${marker}${text.slice(text.length - tail)}`,
|
|
31
|
+
originalChars: text.length,
|
|
32
|
+
truncated: true
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export const defaultContextBudget = 400_000;
|
|
36
|
+
/**
|
|
37
|
+
* The default character budget: `LLM4TS_CONTEXT_BUDGET`, else the deprecated
|
|
38
|
+
* `LLM4TS_JUDGE_SOURCES_LIMIT`, else 400_000.
|
|
39
|
+
*/
|
|
40
|
+
export const budget = (environment = process.env) => {
|
|
41
|
+
const raw = environment["LLM4TS_CONTEXT_BUDGET"] ?? environment["LLM4TS_JUDGE_SOURCES_LIMIT"];
|
|
42
|
+
if (raw === undefined) {
|
|
43
|
+
return defaultContextBudget;
|
|
44
|
+
}
|
|
45
|
+
const parsed = Number.parseInt(raw.trim(), 10);
|
|
46
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : defaultContextBudget;
|
|
47
|
+
};
|
|
48
|
+
export const renderTruncation = (truncation) => truncation.kind === "capped"
|
|
49
|
+
? `${truncation.label}: truncated ${truncation.originalChars} → ${truncation.keptChars} chars`
|
|
50
|
+
: `${truncation.label}: retried at a lower budget, ${truncation.originalChars} → ${truncation.keptChars} chars (ceilings, not text size)`;
|
|
51
|
+
// The ambient truncation log, written only by `capped` and `withShrink` so no
|
|
52
|
+
// call site can truncate without recording. The Reference default is a single
|
|
53
|
+
// process-wide cell; `isolateTruncations` scopes a fresh one so concurrent
|
|
54
|
+
// flows don't cross-contaminate and a phase reads back exactly what its own
|
|
55
|
+
// calls truncated.
|
|
56
|
+
const CurrentTruncations = Context.Reference("@llm4ts/flow/Context/CurrentTruncations", { defaultValue: () => Ref.makeUnsafe([]) });
|
|
57
|
+
const record = (truncation) => Effect.flatMap(Effect.service(CurrentTruncations), (log) => Ref.update(log, (recorded) => [...recorded, truncation]));
|
|
58
|
+
/** Truncations recorded so far. Phases write these into `provenance.json`. */
|
|
59
|
+
export const truncations = Effect.flatMap(Effect.service(CurrentTruncations), Ref.get);
|
|
60
|
+
/** Run `effect` against a fresh, private truncation log. */
|
|
61
|
+
export const isolateTruncations = (effect) => Effect.flatMap(Ref.make([]), (fresh) => Effect.provideService(effect, CurrentTruncations, fresh));
|
|
62
|
+
/**
|
|
63
|
+
* `cap`, publishing a `FlowEvent` and recording the truncation when one
|
|
64
|
+
* happens. `label` names what was shortened, so the event and the provenance
|
|
65
|
+
* entry are readable ("specs", "branch diff", "judge context").
|
|
66
|
+
*/
|
|
67
|
+
export const capped = Effect.fn("@llm4ts/flow/Context.capped")(function* (label, text, limit) {
|
|
68
|
+
const out = cap(text, limit);
|
|
69
|
+
if (!out.truncated) {
|
|
70
|
+
return out.text;
|
|
71
|
+
}
|
|
72
|
+
const events = yield* FlowEvents;
|
|
73
|
+
yield* events.publish(Info.make({
|
|
74
|
+
message: `⚠ context: ${label} truncated ${out.originalChars} → ${out.text.length} chars`
|
|
75
|
+
}));
|
|
76
|
+
yield* record({
|
|
77
|
+
label,
|
|
78
|
+
originalChars: out.originalChars,
|
|
79
|
+
keptChars: out.text.length,
|
|
80
|
+
kind: "capped"
|
|
81
|
+
});
|
|
82
|
+
return out.text;
|
|
83
|
+
});
|
|
84
|
+
// True for the two failure classes a smaller prompt can fix: a deterministic
|
|
85
|
+
// context overflow, and the empty response gemini returns when a prompt is too
|
|
86
|
+
// large for it to even start. The overflow check delegates to TransientRetry's
|
|
87
|
+
// phrasing list so a message-only failure (no surviving typed LlmError) is
|
|
88
|
+
// still caught — a second, shorter copy here would drift.
|
|
89
|
+
const shrinkable = (error) => error._tag === "Llm" &&
|
|
90
|
+
((error.cause !== undefined && isContextOverflow(error.cause)) ||
|
|
91
|
+
isContextOverflowMessage(error.message) ||
|
|
92
|
+
error.message.toLowerCase().includes("empty response"));
|
|
93
|
+
/**
|
|
94
|
+
* Run `f` at `start` characters (default: `budget()`); on a shrinkable failure
|
|
95
|
+
* retry at 1/2, then 1/4, then give up. Repeating the same oversized prompt
|
|
96
|
+
* cannot succeed, so shrinking is the only retry that makes sense for this
|
|
97
|
+
* failure class — which is why context overflow is deliberately excluded from
|
|
98
|
+
* `TransientRetry`'s budget. Each shrink publishes a `FlowEvent` and is
|
|
99
|
+
* recorded like any other truncation. The terminal failure deliberately drops
|
|
100
|
+
* the typed cause: a resume layer classifying an "empty response" cause as
|
|
101
|
+
* flaky would replay this exact, permanently-failing budget sequence forever.
|
|
102
|
+
*/
|
|
103
|
+
export const withShrink = (label, f, options = {}) => {
|
|
104
|
+
const start = options.start ?? budget(options.environment);
|
|
105
|
+
const attempt = (atChars, rest) => Effect.catchIf(f(atChars), () => true, (error) => {
|
|
106
|
+
if (!shrinkable(error)) {
|
|
107
|
+
return Effect.fail(error);
|
|
108
|
+
}
|
|
109
|
+
if (rest.length === 0) {
|
|
110
|
+
return Effect.fail(FlowLlmError.make({
|
|
111
|
+
message: `${label} exceeded the model's input limit even after shrinking to ${atChars} chars — ` +
|
|
112
|
+
`lower LLM4TS_CONTEXT_BUDGET or scope this phase further (cause: ${error.message})`
|
|
113
|
+
}));
|
|
114
|
+
}
|
|
115
|
+
const [next, ...remaining] = rest;
|
|
116
|
+
return Effect.gen(function* () {
|
|
117
|
+
const events = yield* FlowEvents;
|
|
118
|
+
yield* events.publish(Info.make({
|
|
119
|
+
message: `⚠ context: ${label} did not fit at ${atChars} chars — shrinking to ${next}: ${error.message}`
|
|
120
|
+
}));
|
|
121
|
+
yield* record({ label, originalChars: atChars, keptChars: next, kind: "shrunk" });
|
|
122
|
+
return yield* attempt(next, remaining);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
return attempt(start, [Math.floor(start / 2), Math.floor(start / 4)]);
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=Context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../src/Context.ts"],"names":[],"mappings":"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"}
|
package/dist/GitTool.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export interface GitToolShape {
|
|
|
29
29
|
readonly diffAll: Effect.Effect<string, FlowError>;
|
|
30
30
|
readonly defaultBase: Effect.Effect<string, FlowError>;
|
|
31
31
|
readonly diffVsBase: (base: string, threeDot?: boolean) => Effect.Effect<string, FlowError>;
|
|
32
|
+
readonly diffVsBaseScoped: (base: string, paths: ReadonlyArray<string>, threeDot?: boolean) => Effect.Effect<string, FlowError>;
|
|
32
33
|
readonly changedFilesVsBase: (base: string, threeDot?: boolean) => Effect.Effect<ReadonlyArray<string>, FlowError>;
|
|
33
34
|
readonly addRemote: (name: string, url: string) => Effect.Effect<void, FlowError>;
|
|
34
35
|
readonly checkout: (name: string) => Effect.Effect<void, FlowError>;
|
package/dist/GitTool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitTool.d.ts","sourceRoot":"","sources":["../src/GitTool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GitTool.d.ts","sourceRoot":"","sources":["../src/GitTool.ts"],"names":[],"mappings":"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"}
|
package/dist/GitTool.js
CHANGED
|
@@ -100,6 +100,16 @@ export const makeGitTool = (process, workDir, events) => {
|
|
|
100
100
|
diffAll: read("git diffAll", runOrFail(["add", "--intent-to-add", "-A"]).pipe(Effect.andThen(runOrFail(["diff"])))),
|
|
101
101
|
defaultBase: read("git defaultBase", defaultBaseEffect),
|
|
102
102
|
diffVsBase: (base, threeDot = true) => read("git diffVsBase", runOrFail(["diff", `${base}${threeDot ? "..." : ".."}HEAD`])),
|
|
103
|
+
// Diff vs base restricted to paths — the per-program / per-lens scoping
|
|
104
|
+
// primitive. An EMPTY paths list returns the empty string rather than the
|
|
105
|
+
// whole diff: bare `git diff <range> --` means "everything", which would
|
|
106
|
+
// silently defeat every caller that scopes by a computed, possibly-empty
|
|
107
|
+
// file set. The empty check lives INSIDE read(...), not before it — a
|
|
108
|
+
// pre-guard early return would let diffVsBaseScoped(base, []) silently
|
|
109
|
+
// succeed under grants that deny GitRead, with no CapabilityDenied audit.
|
|
110
|
+
diffVsBaseScoped: (base, paths, threeDot = true) => read("git diffVsBase (scoped)", Effect.suspend(() => paths.length === 0
|
|
111
|
+
? Effect.succeed("")
|
|
112
|
+
: runOrFail(["diff", `${base}${threeDot ? "..." : ".."}HEAD`, "--", ...paths]))),
|
|
103
113
|
changedFilesVsBase: (base, threeDot = true) => read("git changedFilesVsBase", runOrFail(["diff", "--name-only", `${base}${threeDot ? "..." : ".."}HEAD`]).pipe(Effect.map((output) => output
|
|
104
114
|
.split(/\r?\n/)
|
|
105
115
|
.map((line) => line.trim())
|
package/dist/GitTool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitTool.js","sourceRoot":"","sources":["../src/GitTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAmB,MAAM,yBAAyB,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAA;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,WAAW,EAAiB,CAAC,SAAS,EAAE,EAAE,CAAC;CAAG;AACxF,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,WAAW,EAAuB,CAChF,eAAe,EACf,EAAE,CACH;CAAG;AACJ,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAA;AAG9E,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,WAAW,EAAa,CAAC,WAAW,EAAE,EAAE,CAAC;CAAG;AAClF,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE,EAAE,CAAC;CAAG;AACpG,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"GitTool.js","sourceRoot":"","sources":["../src/GitTool.ts"],"names":[],"mappings":"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"}
|
package/dist/Pack.d.ts
CHANGED
|
@@ -31,9 +31,11 @@ export interface Pack {
|
|
|
31
31
|
readonly prompts: Readonly<Record<string, string>>;
|
|
32
32
|
readonly lenses: ReadonlyArray<Reviewer>;
|
|
33
33
|
readonly lessons: string | undefined;
|
|
34
|
+
readonly programFiles: string | undefined;
|
|
34
35
|
readonly dir: string;
|
|
35
36
|
readonly gate: (name: string) => ReadonlyArray<string> | undefined;
|
|
36
37
|
readonly prompt: (name: string) => string | undefined;
|
|
38
|
+
readonly filesFor: (program: string) => RegExp;
|
|
37
39
|
}
|
|
38
40
|
export declare const loadPack: (workspace: WorkspaceShape, directory: string) => Effect.Effect<Pack, PlanParseError | WorkspaceError, never>;
|
|
39
41
|
export declare const appendPackLesson: (workspace: WorkspaceShape, directory: string, lesson: string) => Effect.Effect<void, WorkspaceError>;
|
package/dist/Pack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pack.d.ts","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEvD,eAAO,MAAM,kBAAkB,8DAAsD,CAAA;AACrF,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;;;;;AAE/D,qBAAa,gBAAiB,SAAQ,qBAGpC;CAAG;AAEL,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAClD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"Pack.d.ts","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEvD,eAAO,MAAM,kBAAkB,8DAAsD,CAAA;AACrF,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;;;;;AAE/D,qBAAa,gBAAiB,SAAQ,qBAGpC;CAAG;AAEL,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAClD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAIpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAClE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IAIrD,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;CAC/C;AA0HD,eAAO,MAAM,QAAQ,+GAyEnB,CAAA;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,cAAc,EACzB,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CACgC,CAAA"}
|
package/dist/Pack.js
CHANGED
|
@@ -82,6 +82,16 @@ const dimensions = (body) => (body ?? "").split(/\r?\n/).flatMap((line) => {
|
|
|
82
82
|
? []
|
|
83
83
|
: [Dimension.make({ name, rubric, maxScore })];
|
|
84
84
|
});
|
|
85
|
+
const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
86
|
+
const isValidRegExp = (source) => {
|
|
87
|
+
try {
|
|
88
|
+
new RegExp(source);
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
85
95
|
const markdownSidecars = Effect.fn("@llm4ts/flow/Pack.markdownSidecars")(function* (workspace, directory) {
|
|
86
96
|
const paths = yield* workspace.discover(`${directory}/*.md`);
|
|
87
97
|
const entries = [];
|
|
@@ -108,6 +118,16 @@ export const loadPack = Effect.fn("@llm4ts/flow/Pack.load")(function* (workspace
|
|
|
108
118
|
.sort(([left], [right]) => left.localeCompare(right))
|
|
109
119
|
.map(([name, text]) => parseReviewer(name, text));
|
|
110
120
|
const fields = manifest.fields;
|
|
121
|
+
const programFiles = fields["programFiles"];
|
|
122
|
+
// Validated at load so a mis-typed template fails the pack, not a later
|
|
123
|
+
// phase; substitution cannot introduce invalid syntax because the fallback
|
|
124
|
+
// probe uses an alphanumeric stand-in and real substitutions are escaped
|
|
125
|
+
// only in the no-template fallback, mirroring the reference behavior.
|
|
126
|
+
if (programFiles !== undefined && !isValidRegExp(programFiles.replaceAll("<NAME>", "PROBE"))) {
|
|
127
|
+
return yield* PlanParseError.make({
|
|
128
|
+
message: `pack manifest 'programFiles:' is not a valid regex template: ${programFiles}`
|
|
129
|
+
});
|
|
130
|
+
}
|
|
111
131
|
const pack = {
|
|
112
132
|
name: manifest.name,
|
|
113
133
|
source: fields.source ?? "",
|
|
@@ -131,9 +151,15 @@ export const loadPack = Effect.fn("@llm4ts/flow/Pack.load")(function* (workspace
|
|
|
131
151
|
prompts,
|
|
132
152
|
lenses,
|
|
133
153
|
lessons: lessons === undefined || lessons.length === 0 ? undefined : lessons,
|
|
154
|
+
programFiles,
|
|
134
155
|
dir: directory,
|
|
135
156
|
gate: (name) => gates[name],
|
|
136
|
-
prompt: (name) => prompts[name]
|
|
157
|
+
prompt: (name) => prompts[name],
|
|
158
|
+
// The template is anchored to the whole path (the reference full-matches);
|
|
159
|
+
// the fallback is a deliberate substring "path contains the name" match.
|
|
160
|
+
filesFor: (program) => programFiles === undefined
|
|
161
|
+
? new RegExp(escapeRegExp(program), "i")
|
|
162
|
+
: new RegExp(`^(?:${programFiles.replaceAll("<NAME>", program)})$`)
|
|
137
163
|
};
|
|
138
164
|
return pack;
|
|
139
165
|
});
|
package/dist/Pack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pack.js","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGrF,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,KAAK,CAAmB,kBAAkB,CAAC,CAAC;IACvF,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CAC1C,CAAC;CAAG;
|
|
1
|
+
{"version":3,"file":"Pack.js","sourceRoot":"","sources":["../src/Pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGrF,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,KAAK,CAAmB,kBAAkB,CAAC,CAAC;IACvF,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CAC1C,CAAC;CAAG;AAsCL,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAiD,EAAE;IACxF,MAAM,MAAM,GAAG,QAAQ;SACpB,IAAI,EAAE;SACN,KAAK,CAAC,WAAW,CAAC;SAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,MAAM,GAAG,UAAU,CAAA;IACzB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,IAAI,CAChB,cAAc,CAAC,IAAI,CAAC;YAClB,OAAO,EAAE,eAAe,MAAM,gBAAgB;SAC/C,CAAC,CACH,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAC5E,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC,CAAC,CACH,CAAA;IACD,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS;QAChC,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,cAAc,CAAC,IAAI,CAAC;YAClB,OAAO,EAAE,4CAA4C;SACtD,CAAC,CACH;QACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE;YACjD,MAAM;YACN,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC1B,CAAC,CAAA;AACR,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,QAA+B,EAAE,KAAa,EAAsB,EAAE,CACrF,QAAQ;KACL,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,KAAK,EAAE,CAAC;IAC3E,EAAE,KAAK,CAAC,OAAO,CAAC;KACf,KAAK,CAAC,CAAC,CAAC;KACR,IAAI,CAAC,IAAI,CAAC;KACV,IAAI,EAAE,CAAA;AAEX,MAAM,UAAU,GAAG,CAAC,IAAwB,EAAoC,EAAE,CAChF,MAAM,CAAC,WAAW,CAChB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;IAC3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5C,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;QACvD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAC1C,CAAC,CAAC,CACH,CAAA;AAEH,MAAM,KAAK,GAAG,CAAC,QAA+B,EAAE,MAAc,EAA+B,EAAE,CAC7F,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;IAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACtC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACvF,CAAC,CAAC,CACH,CAAA;IACD,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAC5D,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;gBACzC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;SACH,CAAA;AACP,CAAC,CAAC,CAAA;AAEJ,MAAM,UAAU,GAAG,CAAC,IAAwB,EAA4B,EAAE,CACxE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;IAC3C,MAAM,KAAK,GAAG,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;IAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACtD,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;IACjC,OAAO,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9E,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA;AAEJ,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;AAE5F,MAAM,aAAa,GAAG,CAAC,MAAc,EAAW,EAAE;IAChD,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,oCAAoC,CAAC,CAAC,QAAQ,CAAC,EAChF,SAAyB,EACzB,SAAiB;IAEjB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,OAAO,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAqC,EAAE,CAAA;IACpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACjF,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EACnE,SAAyB,EACzB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC,CAAA;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,SAAS,UAAU,CAAC,CAAA;IAC1E,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,SAAS,YAAY,CAAC,CAAA;IAC9E,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,aAAa,CAAC,CAAC,IAAI,CACnE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EACjC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAC9C,CAAA;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAClE,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;IAC/E,MAAM,QAAQ,GACZ,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,WAAW;QACvD,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,SAAS;YACvD,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,SAAS,CAAA;IACjB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAClF,CAAA;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;SACrC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;IAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;IAC3C,wEAAwE;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,sEAAsE;IACtE,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QAC7F,OAAO,KAAK,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,gEAAgE,YAAY,EAAE;SACxF,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,IAAI,GAAS;QACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,YAAY;QAC7C,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,UAAU;QACjD,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;QACnC,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC;YACjC,QAAQ;YACR,MAAM,EAAE,IAAI,GAAG,CACb,CAAC,iBAAiB,CAAC,MAAM,IAAI,EAAE,CAAC;iBAC7B,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CACrC;SACF,CAAC;QACF,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;QACnD,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC/C,OAAO;QACP,MAAM;QACN,OAAO,EAAE,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QAC5E,YAAY;QACZ,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/B,2EAA2E;QAC3E,yEAAyE;QACzE,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CACpB,YAAY,KAAK,SAAS;YACxB,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;KACxE,CAAA;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,SAAyB,EACzB,SAAiB,EACjB,MAAc,EACuB,EAAE,CACvC,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,aAAa,EAAE,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { Sample, type Dimension } from "@llm4ts/core/eval/Eval";
|
|
3
|
+
import type { Evaluator } from "@llm4ts/core/eval/Evaluator";
|
|
4
|
+
import { FlowLlmError, type FlowError } from "./FlowError.ts";
|
|
5
|
+
import { FlowEvents } from "./FlowEvents.ts";
|
|
6
|
+
import type { GitToolShape } from "./GitTool.ts";
|
|
7
|
+
import type { Pack } from "./Pack.ts";
|
|
8
|
+
import type { PlainFileStoreShape } from "./Persistence.ts";
|
|
9
|
+
import { ReviewResult } from "./Review.ts";
|
|
10
|
+
export interface GroupedFiles {
|
|
11
|
+
readonly byProgram: Readonly<Record<string, ReadonlyArray<string>>>;
|
|
12
|
+
readonly unassigned: ReadonlyArray<string>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Partition `changed` by which program's file regex matches. A file matching
|
|
16
|
+
* several programs is judged with each of them (a shared bridge class is
|
|
17
|
+
* genuinely part of both). The remainder — build files, shared utilities — is
|
|
18
|
+
* returned separately for the unassigned pass.
|
|
19
|
+
*/
|
|
20
|
+
export declare const groupFiles: (pack: Pack, programs: ReadonlyArray<string>, changed: ReadonlyArray<string>) => GroupedFiles;
|
|
21
|
+
export interface ProgramJudgeOptions {
|
|
22
|
+
readonly pack: Pack;
|
|
23
|
+
readonly judge: Evaluator<Sample>;
|
|
24
|
+
readonly dimensions: ReadonlyArray<Dimension>;
|
|
25
|
+
readonly git: GitToolShape;
|
|
26
|
+
readonly files: PlainFileStoreShape;
|
|
27
|
+
/** Directory holding the per-program verdict cache (`<gateDir>/<NAME>.json`). */
|
|
28
|
+
readonly gateDir: string;
|
|
29
|
+
readonly base: string;
|
|
30
|
+
readonly programs: ReadonlyArray<string>;
|
|
31
|
+
/** A program's spec text; the caller owns where specs live. */
|
|
32
|
+
readonly specFor: (program: string) => Effect.Effect<string, FlowError>;
|
|
33
|
+
readonly query: string;
|
|
34
|
+
/** Content fingerprint for the verdict cache (hashing lives outside flow). */
|
|
35
|
+
readonly fingerprint: (...parts: ReadonlyArray<string>) => string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A spec'd program with NO matching changed file is a deterministic gate
|
|
39
|
+
* failure, not a silent pass. Skipping it would let the branch clear a bar the
|
|
40
|
+
* old whole-branch judge would have failed. It also surfaces a mis-set
|
|
41
|
+
* `programFiles:` immediately — the top documented risk of the per-program
|
|
42
|
+
* design — instead of quietly degrading coverage.
|
|
43
|
+
*/
|
|
44
|
+
export declare const unimplemented: (programs: ReadonlyArray<string>) => ReviewResult;
|
|
45
|
+
/**
|
|
46
|
+
* Judge every program whose files changed, plus one pass over the unassigned
|
|
47
|
+
* remainder. Each verdict is cached at `gateDir/<NAME>.json`, fingerprinted
|
|
48
|
+
* over the spec, the diff slice, and the rubric it judged — so re-running
|
|
49
|
+
* after a crash re-judges only what changed.
|
|
50
|
+
*/
|
|
51
|
+
export declare const judgeAllPrograms: (options: ProgramJudgeOptions) => Effect.Effect<ReviewResult, import("./FlowError.ts").PersistenceError | import("./FlowError.ts").PlanParseError | import("./FlowError.ts").UnsupportedSchemaVersion | import("./FlowError.ts").WorkspacePathError | import("./FlowError.ts").WorkspaceLimitError | import("./FlowError.ts").WorkspaceIoError | import("./FlowError.ts").FlowAborted | import("./FlowError.ts").ProcessError | FlowLlmError | import("./FlowError.ts").FlowCapabilityDenied | import("./FlowError.ts").ColumnNotFound | import("./FlowError.ts").BudgetExceeded, FlowEvents>;
|
|
52
|
+
//# sourceMappingURL=ProgramJudge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgramJudge.d.ts","sourceRoot":"","sources":["../src/ProgramJudge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAS,EAAmB,MAAM,wBAAwB,CAAA;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAQ,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAe,YAAY,EAAsB,MAAM,aAAa,CAAA;AAU3E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACnE,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC3C;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,IAAI,EACV,UAAU,aAAa,CAAC,MAAM,CAAC,EAC/B,SAAS,aAAa,CAAC,MAAM,CAAC,KAC7B,YAYF,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC7C,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAA;IACnC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,MAAM,CAAA;CAClE;AAoCD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,UAAU,aAAa,CAAC,MAAM,CAAC,KAAG,YAc5D,CAAA;AAiCJ;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,+jBA0B3B,CAAA"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { Sample } from "@llm4ts/core/eval/Eval";
|
|
3
|
+
import { capped, withShrink } from "./Context.js";
|
|
4
|
+
import { FlowLlmError } from "./FlowError.js";
|
|
5
|
+
import { FlowEvents, Info } from "./FlowEvents.js";
|
|
6
|
+
import { ReviewIssue, ReviewResult, mergeReviewResults } from "./Review.js";
|
|
7
|
+
import { cachedReview } from "./ReviewCache.js";
|
|
8
|
+
/**
|
|
9
|
+
* Partition `changed` by which program's file regex matches. A file matching
|
|
10
|
+
* several programs is judged with each of them (a shared bridge class is
|
|
11
|
+
* genuinely part of both). The remainder — build files, shared utilities — is
|
|
12
|
+
* returned separately for the unassigned pass.
|
|
13
|
+
*/
|
|
14
|
+
export const groupFiles = (pack, programs, changed) => {
|
|
15
|
+
const byProgram = Object.fromEntries(programs.map((program) => {
|
|
16
|
+
const matches = pack.filesFor(program);
|
|
17
|
+
return [program, changed.filter((file) => matches.test(file))];
|
|
18
|
+
}));
|
|
19
|
+
const assigned = new Set(Object.values(byProgram).flat());
|
|
20
|
+
return {
|
|
21
|
+
byProgram,
|
|
22
|
+
unassigned: changed.filter((file) => !assigned.has(file))
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const join = (root, path) => `${root.replace(/[\\/]+$/, "")}/${path.replace(/^[\\/]+/, "")}`;
|
|
26
|
+
const rubricText = (dimensions) => dimensions
|
|
27
|
+
.map((dimension) => `${dimension.name} (0..${dimension.maxScore}): ${dimension.rubric}`)
|
|
28
|
+
.join("\n");
|
|
29
|
+
/**
|
|
30
|
+
* Sub-bar dimensions as Critical review issues, titled with the program they
|
|
31
|
+
* belong to — the same shape the extract gate produces, so fix loops and
|
|
32
|
+
* `ReviewResult.isClean` work unchanged.
|
|
33
|
+
*/
|
|
34
|
+
const issues = (scored, dimensions, program) => {
|
|
35
|
+
const subBar = scored.scores.filter((score) => score.score < (dimensions.find((dimension) => dimension.name === score.name)?.maxScore ?? 2));
|
|
36
|
+
return ReviewResult.make({
|
|
37
|
+
issues: subBar.map((score) => ReviewIssue.make({
|
|
38
|
+
severity: "Critical",
|
|
39
|
+
title: `judge[${program}]: ${score.name} scored ${score.score}`,
|
|
40
|
+
description: score.reasoning
|
|
41
|
+
})),
|
|
42
|
+
summary: `judge:${program}`
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* A spec'd program with NO matching changed file is a deterministic gate
|
|
47
|
+
* failure, not a silent pass. Skipping it would let the branch clear a bar the
|
|
48
|
+
* old whole-branch judge would have failed. It also surfaces a mis-set
|
|
49
|
+
* `programFiles:` immediately — the top documented risk of the per-program
|
|
50
|
+
* design — instead of quietly degrading coverage.
|
|
51
|
+
*/
|
|
52
|
+
export const unimplemented = (programs) => ReviewResult.make({
|
|
53
|
+
issues: programs.map((program) => ReviewIssue.make({
|
|
54
|
+
severity: "Critical",
|
|
55
|
+
title: `judge[${program}]: spec'd but no implementation files changed`,
|
|
56
|
+
description: `${program} has a committed spec but no file on this branch matches the pack's ` +
|
|
57
|
+
"programFiles regex for it. Either the program is unimplemented, or the pack's " +
|
|
58
|
+
"`programFiles:` template does not match this repo's layout — check that before " +
|
|
59
|
+
"assuming the former."
|
|
60
|
+
})),
|
|
61
|
+
summary: "judge:unimplemented"
|
|
62
|
+
});
|
|
63
|
+
const judgeSlice = Effect.fn("@llm4ts/flow/ProgramJudge.judgeSlice")(function* (options, label, spec, diff) {
|
|
64
|
+
const events = yield* FlowEvents;
|
|
65
|
+
const rubric = rubricText(options.dimensions);
|
|
66
|
+
return yield* cachedReview(options.files, join(options.gateDir, `${label}.json`), options.fingerprint(spec, diff, rubric), events.publish(Info.make({ message: `judging ${label}` })).pipe(Effect.andThen(withShrink(`judge[${label}]`, (cap) => Effect.gen(function* () {
|
|
67
|
+
const cappedSpec = yield* capped(`spec[${label}]`, spec, cap);
|
|
68
|
+
const cappedDiff = yield* capped(`diff[${label}]`, diff, cap);
|
|
69
|
+
return yield* options.judge
|
|
70
|
+
.evaluate(Sample.make({ response: cappedDiff, context: cappedSpec, query: options.query }))
|
|
71
|
+
.pipe(Effect.mapError(FlowLlmError.from));
|
|
72
|
+
}))), Effect.map((scored) => issues(scored, options.dimensions, label))));
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* Judge every program whose files changed, plus one pass over the unassigned
|
|
76
|
+
* remainder. Each verdict is cached at `gateDir/<NAME>.json`, fingerprinted
|
|
77
|
+
* over the spec, the diff slice, and the rubric it judged — so re-running
|
|
78
|
+
* after a crash re-judges only what changed.
|
|
79
|
+
*/
|
|
80
|
+
export const judgeAllPrograms = Effect.fn("@llm4ts/flow/ProgramJudge.judgeAll")(function* (options) {
|
|
81
|
+
const changed = yield* options.git.changedFilesVsBase(options.base);
|
|
82
|
+
const { byProgram, unassigned } = groupFiles(options.pack, options.programs, changed);
|
|
83
|
+
const active = options.programs.filter((program) => (byProgram[program] ?? []).length > 0);
|
|
84
|
+
const untouched = options.programs.filter((program) => (byProgram[program] ?? []).length === 0);
|
|
85
|
+
const perProgram = [];
|
|
86
|
+
for (const program of active) {
|
|
87
|
+
const spec = yield* options.specFor(program);
|
|
88
|
+
// The file slice comes from groupFiles — re-deriving it per program would
|
|
89
|
+
// be N+1 git invocations for the same answer.
|
|
90
|
+
const diff = yield* options.git.diffVsBaseScoped(options.base, byProgram[program] ?? []);
|
|
91
|
+
perProgram.push(yield* judgeSlice(options, program, spec, diff));
|
|
92
|
+
}
|
|
93
|
+
if (unassigned.length > 0) {
|
|
94
|
+
const diff = yield* options.git.diffVsBaseScoped(options.base, unassigned);
|
|
95
|
+
const specs = yield* Effect.forEach(options.programs, options.specFor).pipe(Effect.map((all) => all.join("\n\n")));
|
|
96
|
+
perProgram.push(yield* judgeSlice(options, "unassigned", specs, diff));
|
|
97
|
+
}
|
|
98
|
+
return mergeReviewResults([...perProgram, unimplemented(untouched)]);
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=ProgramJudge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgramJudge.js","sourceRoot":"","sources":["../src/ProgramJudge.ts"],"names":[],"mappings":"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"}
|
package/dist/Provenance.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ declare const Provenance_base: Schema.Class<Provenance, Schema.Struct<{
|
|
|
13
13
|
readonly gateVerdicts: Schema.$Record<Schema.String, Schema.String>;
|
|
14
14
|
readonly equivalenceReport: Schema.optionalKey<Schema.String>;
|
|
15
15
|
readonly fixSpecs: Schema.$Array<Schema.String>;
|
|
16
|
+
readonly contextTruncations: Schema.withConstructorDefault<Schema.withDecodingDefaultKey<Schema.$Array<Schema.String>, never>>;
|
|
16
17
|
}>, {}>;
|
|
17
18
|
export declare class Provenance extends Provenance_base {
|
|
18
19
|
}
|
package/dist/Provenance.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provenance.d.ts","sourceRoot":"","sources":["../src/Provenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAkB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA
|
|
1
|
+
{"version":3,"file":"Provenance.d.ts","sourceRoot":"","sources":["../src/Provenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAkB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;;;;;;;;;;;;;;AAE3D,qBAAa,UAAW,SAAQ,eAoB9B;CAAG;AAKL,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACxF,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IACrE,QAAQ,CAAC,MAAM,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,UAAU,KACxC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,CAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KACzB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;CACvE;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,mBAAmB,KAAG,oBAkDhE,CAAA"}
|
package/dist/Provenance.js
CHANGED
|
@@ -11,7 +11,13 @@ export class Provenance extends Schema.Class("Provenance")({
|
|
|
11
11
|
specs: Schema.Record(Schema.String, Schema.String),
|
|
12
12
|
gateVerdicts: Schema.Record(Schema.String, Schema.String),
|
|
13
13
|
equivalenceReport: Schema.optionalKey(Schema.String),
|
|
14
|
-
fixSpecs: Schema.Array(Schema.String)
|
|
14
|
+
fixSpecs: Schema.Array(Schema.String),
|
|
15
|
+
// Context truncations recorded while producing this evidence
|
|
16
|
+
// (Context.renderTruncation strings). A gate verdict rendered on a
|
|
17
|
+
// partially-read spec pack says so HERE — that visibility is the whole
|
|
18
|
+
// reason truncation is allowed at all. Defaulted so manifests written
|
|
19
|
+
// before this field still load.
|
|
20
|
+
contextTruncations: Schema.Array(Schema.String).pipe(Schema.withDecodingDefaultKey(Effect.succeed([])), Schema.withConstructorDefault(Effect.succeed([])))
|
|
15
21
|
}) {
|
|
16
22
|
}
|
|
17
23
|
const join = (root, path) => `${root.replace(/[\\/]+$/, "")}/${path.replace(/^[\\/]+/, "")}`;
|