@llm4ts/flow 2.33.0 → 2.35.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/Diagnostics.d.ts +3 -2
- package/dist/Diagnostics.d.ts.map +1 -1
- package/dist/Diagnostics.js +21 -2
- package/dist/Diagnostics.js.map +1 -1
- package/dist/Pack.d.ts +24 -1
- package/dist/Pack.d.ts.map +1 -1
- package/dist/Pack.js +27 -1
- package/dist/Pack.js.map +1 -1
- package/dist/Port.d.ts +59 -0
- package/dist/Port.d.ts.map +1 -1
- package/dist/Port.js +211 -0
- package/dist/Port.js.map +1 -1
- package/dist/Timing.d.ts.map +1 -1
- package/dist/Timing.js +24 -9
- package/dist/Timing.js.map +1 -1
- package/package.json +2 -2
- package/src/Diagnostics.ts +22 -2
- package/src/Pack.ts +53 -2
- package/src/Port.ts +251 -0
- package/src/Timing.ts +36 -10
package/dist/Timing.js
CHANGED
|
@@ -53,6 +53,15 @@ const replyContent = (content, text) => content === "off"
|
|
|
53
53
|
{ role: "assistant", content: clean(text, inputChars) }
|
|
54
54
|
])
|
|
55
55
|
};
|
|
56
|
+
/** A structured reply as text for `output.value`; empty when it does not serialize. */
|
|
57
|
+
const rendered = (value) => {
|
|
58
|
+
try {
|
|
59
|
+
return typeof value === "string" ? value : (JSON.stringify(value) ?? "");
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return "";
|
|
63
|
+
}
|
|
64
|
+
};
|
|
56
65
|
const count = (counter, attributes, by) => by === 0 ? Effect.void : Metric.update(by)(Metric.withAttributes(attributes)(counter));
|
|
57
66
|
/** The usage and the model a call ends with: measured from the chunks, else estimated when asked. */
|
|
58
67
|
const settleUsage = (measured, model, promptChars, completionChars, estimate) => measured !== undefined
|
|
@@ -105,17 +114,20 @@ const reportedMs = (chunk, key) => {
|
|
|
105
114
|
export const timeEffect = (events, effect, timed) => Effect.flatMap(Effect.all([Clock.currentTimeMillis, TimedRole]), ([start, role]) => Effect.onExit(effect, (exit) => Effect.flatMap(Clock.currentTimeMillis, (end) => events.publish(timed(end - start, Exit.isFailure(exit), role)))));
|
|
106
115
|
/**
|
|
107
116
|
* `timeEffect` under an LLM span named for the role; `usageOf` reads what
|
|
108
|
-
* the result says about tokens and model, when it says anything
|
|
117
|
+
* the result says about tokens and model, when it says anything, and
|
|
118
|
+
* `replyOf` what the reply was, for the span's content when it may carry any.
|
|
109
119
|
*/
|
|
110
|
-
const tracedEffect = (events, label, options, effect, timed, usageOf) => Effect.gen(function* () {
|
|
120
|
+
const tracedEffect = (events, label, options, prompt, effect, timed, usageOf, replyOf = rendered) => Effect.gen(function* () {
|
|
111
121
|
const role = (yield* TimedRole) ?? label;
|
|
112
122
|
const executor = options.executor === undefined ? undefined : yield* options.executor;
|
|
123
|
+
const content = options.content ?? "off";
|
|
113
124
|
return yield* withKindSpan(role, {
|
|
114
125
|
kind: "LLM",
|
|
115
126
|
attributes: {
|
|
116
127
|
[attr.role]: role,
|
|
117
128
|
[attr.operation]: "generate",
|
|
118
|
-
...(executor === undefined ? {} : { [attr.executor]: executor })
|
|
129
|
+
...(executor === undefined ? {} : { [attr.executor]: executor }),
|
|
130
|
+
...promptContent(content, [Message.make({ role: "User", content: prompt })])
|
|
119
131
|
}
|
|
120
132
|
}, timeEffect(events, effect, timed).pipe(Effect.onExit((exit) => {
|
|
121
133
|
const known = Exit.isSuccess(exit)
|
|
@@ -123,7 +135,10 @@ const tracedEffect = (events, label, options, effect, timed, usageOf) => Effect.
|
|
|
123
135
|
: { usage: undefined, model: undefined };
|
|
124
136
|
const settled = settleUsage(known.usage, known.model, 0, 0, undefined);
|
|
125
137
|
return Effect.all([
|
|
126
|
-
Effect.annotateCurrentSpan(
|
|
138
|
+
Effect.annotateCurrentSpan({
|
|
139
|
+
...usageAttributes(settled.model, settled.usage, settled.estimated),
|
|
140
|
+
...(Exit.isSuccess(exit) ? replyContent(content, replyOf(exit.value)) : {})
|
|
141
|
+
}),
|
|
127
142
|
recordCall(role, executor, settled, Exit.isFailure(exit))
|
|
128
143
|
], { discard: true });
|
|
129
144
|
})));
|
|
@@ -267,14 +282,14 @@ export const timedSeat = (service, events, label, options = {}) => {
|
|
|
267
282
|
return {
|
|
268
283
|
executeStream: (text) => timedStream(events, label, options, prompt(text), service.executeStream(text)),
|
|
269
284
|
executeStreamWithHistory: (messages) => timedStream(events, label, options, messages, service.executeStreamWithHistory(messages)),
|
|
270
|
-
executeWithTools: (text, tools) => tracedEffect(events, label, options, service.executeWithTools(text, tools), model, nothing),
|
|
271
|
-
executeStructured: (text, schema, jsonSchema) => tracedEffect(events, label, options, service.executeStructured(text, schema, jsonSchema), model, nothing),
|
|
272
|
-
executeStructuredWithUsage: (text, schema, jsonSchema) => tracedEffect(events, label, options, service.executeStructuredWithUsage(text, schema, jsonSchema), model, ([, usage, modelName]) => ({ usage, model: modelName })),
|
|
273
|
-
scoreLabels: (text, labels) => tracedEffect(events, label, options, service.scoreLabels(text, labels), model, nothing),
|
|
285
|
+
executeWithTools: (text, tools) => tracedEffect(events, label, options, text, service.executeWithTools(text, tools), model, nothing),
|
|
286
|
+
executeStructured: (text, schema, jsonSchema) => tracedEffect(events, label, options, text, service.executeStructured(text, schema, jsonSchema), model, nothing),
|
|
287
|
+
executeStructuredWithUsage: (text, schema, jsonSchema) => tracedEffect(events, label, options, text, service.executeStructuredWithUsage(text, schema, jsonSchema), model, ([, usage, modelName]) => ({ usage, model: modelName }), ([value]) => rendered(value)),
|
|
288
|
+
scoreLabels: (text, labels) => tracedEffect(events, label, options, text, service.scoreLabels(text, labels), model, nothing),
|
|
274
289
|
...(batched === undefined
|
|
275
290
|
? {}
|
|
276
291
|
: {
|
|
277
|
-
scoreLabelSequence: (text, labelSets) => tracedEffect(events, label, options, batched(text, labelSets), model, nothing)
|
|
292
|
+
scoreLabelSequence: (text, labelSets) => tracedEffect(events, label, options, text, batched(text, labelSets), model, nothing)
|
|
278
293
|
}),
|
|
279
294
|
isAvailable: service.isAvailable
|
|
280
295
|
};
|
package/dist/Timing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timing.js","sourceRoot":"","sources":["../src/Timing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Timing.js","sourceRoot":"","sources":["../src/Timing.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.
|
|
3
|
+
"version": "2.35.0",
|
|
4
4
|
"description": "Effect-native LLM workflow, persistence, review, and repository automation",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
"typescript"
|
|
123
123
|
],
|
|
124
124
|
"dependencies": {
|
|
125
|
-
"@llm4ts/core": "2.
|
|
125
|
+
"@llm4ts/core": "2.35.0"
|
|
126
126
|
},
|
|
127
127
|
"peerDependencies": {
|
|
128
128
|
"effect": "4.0.0"
|
package/src/Diagnostics.ts
CHANGED
|
@@ -12,10 +12,11 @@ export class Diagnostic extends Schema.Class<Diagnostic>("Diagnostic")({
|
|
|
12
12
|
unit: Schema.optionalKey(Schema.String)
|
|
13
13
|
}) {}
|
|
14
14
|
|
|
15
|
-
export const DiagnosticsFormat = Schema.Literals(["json", "cargo"])
|
|
15
|
+
export const DiagnosticsFormat = Schema.Literals(["json", "cargo", "tsc"])
|
|
16
16
|
export type DiagnosticsFormat = typeof DiagnosticsFormat.Type
|
|
17
17
|
|
|
18
18
|
const decodeJsonLine = Schema.decodeUnknownOption(Schema.fromJsonString(Diagnostic))
|
|
19
|
+
const tscLine = /^(.+?)\((\d+),\d+\): error (TS\d+: .+)$/u
|
|
19
20
|
|
|
20
21
|
const CargoMessage = Schema.fromJsonString(
|
|
21
22
|
Schema.Struct({
|
|
@@ -43,13 +44,32 @@ const decodeCargo = Schema.decodeUnknownOption(CargoMessage)
|
|
|
43
44
|
/**
|
|
44
45
|
* `json`: one `{file, line?, message, unit?}` object per line. `cargo`:
|
|
45
46
|
* `cargo check --message-format=json`, errors only, the crate as the unit.
|
|
46
|
-
*
|
|
47
|
+
* `tsc`: `tsc --pretty false`, the file's top folders as the unit. Lines
|
|
48
|
+
* that do not parse are skipped: a build prints more than diagnostics.
|
|
47
49
|
*/
|
|
48
50
|
export const parseDiagnostics = (
|
|
49
51
|
text: string,
|
|
50
52
|
format: DiagnosticsFormat = "json"
|
|
51
53
|
): ReadonlyArray<Diagnostic> => {
|
|
52
54
|
const out: Array<Diagnostic> = []
|
|
55
|
+
if (format === "tsc") {
|
|
56
|
+
// `tsc --pretty false`: `path(line,col): error TS1234: message`; the unit is the top folder.
|
|
57
|
+
for (const raw of text.split("\n")) {
|
|
58
|
+
const match = tscLine.exec(raw.trim())
|
|
59
|
+
if (match?.[1] === undefined || match[3] === undefined) continue
|
|
60
|
+
const file = match[1]
|
|
61
|
+
const top = file.split("/")
|
|
62
|
+
out.push(
|
|
63
|
+
Diagnostic.make({
|
|
64
|
+
file,
|
|
65
|
+
line: Number.parseInt(match[2] ?? "0", 10),
|
|
66
|
+
message: match[3],
|
|
67
|
+
unit: top.length > 2 ? `${top[0]}/${top[1]}` : (top[0] ?? file)
|
|
68
|
+
})
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
return out
|
|
72
|
+
}
|
|
53
73
|
for (const raw of text.split("\n")) {
|
|
54
74
|
const line = raw.trim()
|
|
55
75
|
if (line.length === 0 || !line.startsWith("{")) continue
|
package/src/Pack.ts
CHANGED
|
@@ -91,8 +91,31 @@ export interface Pack {
|
|
|
91
91
|
* build, `- format: json | cargo` says how to read it. Present only in a
|
|
92
92
|
* porting pack.
|
|
93
93
|
*/
|
|
94
|
+
/**
|
|
95
|
+
* `## Ledger` (ADR 0028): what `port-ledger` classifies. `- unit: <regex>`
|
|
96
|
+
* whose first capture group names a unit in a source file, `- classes: A,
|
|
97
|
+
* B, UNKNOWN`, `- question: <what to decide for each unit>`.
|
|
98
|
+
*/
|
|
99
|
+
readonly ledger:
|
|
100
|
+
| { readonly unit: string; readonly classes: ReadonlyArray<string>; readonly question: string }
|
|
101
|
+
| undefined
|
|
102
|
+
/**
|
|
103
|
+
* `## Differential` (ADR 0028): what `port-tests` compares. `- tests: <regex>`
|
|
104
|
+
* over test files, `- legacy: <command with {{file}}>` run on the old
|
|
105
|
+
* build, `- target: <command with {{file}}>` on the new, `- timeout: <s>`.
|
|
106
|
+
*/
|
|
107
|
+
readonly differential:
|
|
108
|
+
| {
|
|
109
|
+
readonly tests: string
|
|
110
|
+
readonly legacy: ReadonlyArray<string>
|
|
111
|
+
readonly target: ReadonlyArray<string>
|
|
112
|
+
readonly timeoutSeconds: number
|
|
113
|
+
}
|
|
114
|
+
| undefined
|
|
115
|
+
/** `## Audit` (ADR 0028): `- dimensions: a, b, c` the rulebook auditors take; default list in the flow. */
|
|
116
|
+
readonly audit: ReadonlyArray<string> | undefined
|
|
94
117
|
readonly diagnostics:
|
|
95
|
-
| { readonly command: ReadonlyArray<string>; readonly format: "json" | "cargo" }
|
|
118
|
+
| { readonly command: ReadonlyArray<string>; readonly format: "json" | "cargo" | "tsc" }
|
|
96
119
|
| undefined
|
|
97
120
|
readonly dir: string
|
|
98
121
|
readonly gate: (name: string) => ReadonlyArray<string> | undefined
|
|
@@ -329,8 +352,33 @@ export const loadPack = Effect.fn("@llm4ts/flow/Pack.load")(function* (
|
|
|
329
352
|
format:
|
|
330
353
|
diagnosticsValues.format?.toLowerCase() === "cargo"
|
|
331
354
|
? ("cargo" as const)
|
|
332
|
-
: ("
|
|
355
|
+
: diagnosticsValues.format?.toLowerCase() === "tsc"
|
|
356
|
+
? ("tsc" as const)
|
|
357
|
+
: ("json" as const)
|
|
358
|
+
}
|
|
359
|
+
const ledgerValues = namedItems(section(manifest.sections, "Ledger"))
|
|
360
|
+
const ledger =
|
|
361
|
+
ledgerValues.unit === undefined
|
|
362
|
+
? undefined
|
|
363
|
+
: {
|
|
364
|
+
unit: ledgerValues.unit,
|
|
365
|
+
classes: commaList(ledgerValues.classes),
|
|
366
|
+
question: ledgerValues.question ?? "Classify this unit."
|
|
367
|
+
}
|
|
368
|
+
const differentialValues = namedItems(section(manifest.sections, "Differential"))
|
|
369
|
+
const differential =
|
|
370
|
+
differentialValues.tests === undefined ||
|
|
371
|
+
differentialValues.legacy === undefined ||
|
|
372
|
+
differentialValues.target === undefined
|
|
373
|
+
? undefined
|
|
374
|
+
: {
|
|
375
|
+
tests: differentialValues.tests,
|
|
376
|
+
legacy: differentialValues.legacy.split(/\s+/),
|
|
377
|
+
target: differentialValues.target.split(/\s+/),
|
|
378
|
+
timeoutSeconds: Number.parseInt(differentialValues.timeout ?? "", 10) || 120
|
|
333
379
|
}
|
|
380
|
+
const auditBody = section(manifest.sections, "Audit")
|
|
381
|
+
const audit = auditBody === undefined ? undefined : commaList(namedItems(auditBody).dimensions)
|
|
334
382
|
const oracleValues = namedItems(section(manifest.sections, "Oracle"))
|
|
335
383
|
const oracle: OracleRules | undefined =
|
|
336
384
|
section(manifest.sections, "Oracle") === undefined
|
|
@@ -407,6 +455,9 @@ export const loadPack = Effect.fn("@llm4ts/flow/Pack.load")(function* (
|
|
|
407
455
|
reviewRules,
|
|
408
456
|
target: fields["target"],
|
|
409
457
|
comment: fields["comment"],
|
|
458
|
+
ledger,
|
|
459
|
+
differential,
|
|
460
|
+
audit,
|
|
410
461
|
diagnostics,
|
|
411
462
|
dir: directory,
|
|
412
463
|
gate: (name) => gates[name],
|
package/src/Port.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// draft ends with, and the pilot report. Pure; the flows own the seats.
|
|
4
4
|
import { basename, dirname, extname } from "node:path"
|
|
5
5
|
import * as Schema from "effect/Schema"
|
|
6
|
+
import type { ReviewResult } from "./Review.ts"
|
|
6
7
|
import { DraftApprovalMarker } from "./Approval.ts"
|
|
7
8
|
import type { QueueOutcome } from "./WorkQueue.ts"
|
|
8
9
|
|
|
@@ -176,3 +177,253 @@ export const asAddedFileDiff = (path: string, content: string): string => {
|
|
|
176
177
|
...lines.map((line) => `+${line}`)
|
|
177
178
|
].join("\n")
|
|
178
179
|
}
|
|
180
|
+
|
|
181
|
+
// ---- Ledger (port-ledger) --------------------------------------------------------------
|
|
182
|
+
|
|
183
|
+
/** One classified unit of a source file, with the line that proves it. */
|
|
184
|
+
export class LedgerRow extends Schema.Class<LedgerRow>("LedgerRow")({
|
|
185
|
+
file: Schema.String,
|
|
186
|
+
unit: Schema.String,
|
|
187
|
+
class: Schema.String,
|
|
188
|
+
/** `file:line` of the statement the classification rests on. */
|
|
189
|
+
evidence: Schema.String,
|
|
190
|
+
confidence: PortConfidence
|
|
191
|
+
}) {}
|
|
192
|
+
|
|
193
|
+
const tsvEscape = (value: string): string => value.replaceAll("\t", " ").replaceAll("\n", " ")
|
|
194
|
+
|
|
195
|
+
/** The ledger as a TSV with a header: `file unit class evidence confidence`. */
|
|
196
|
+
export const renderLedger = (rows: ReadonlyArray<LedgerRow>): string =>
|
|
197
|
+
[
|
|
198
|
+
"file\tunit\tclass\tevidence\tconfidence",
|
|
199
|
+
...rows.map((row) =>
|
|
200
|
+
[row.file, row.unit, row.class, row.evidence, row.confidence].map(tsvEscape).join("\t")
|
|
201
|
+
)
|
|
202
|
+
].join("\n") + "\n"
|
|
203
|
+
|
|
204
|
+
export const parseLedger = (text: string): ReadonlyArray<LedgerRow> =>
|
|
205
|
+
text
|
|
206
|
+
.split(/\r?\n/u)
|
|
207
|
+
.slice(1)
|
|
208
|
+
.filter((line) => line.trim().length > 0)
|
|
209
|
+
.flatMap((line) => {
|
|
210
|
+
const [file, unit, klass, evidence, confidence] = line.split("\t")
|
|
211
|
+
return file === undefined || unit === undefined || klass === undefined
|
|
212
|
+
? []
|
|
213
|
+
: [
|
|
214
|
+
LedgerRow.make({
|
|
215
|
+
file,
|
|
216
|
+
unit,
|
|
217
|
+
class: klass,
|
|
218
|
+
evidence: evidence ?? "",
|
|
219
|
+
confidence:
|
|
220
|
+
confidence === "high" || confidence === "medium" || confidence === "low"
|
|
221
|
+
? confidence
|
|
222
|
+
: "low"
|
|
223
|
+
})
|
|
224
|
+
]
|
|
225
|
+
})
|
|
226
|
+
|
|
227
|
+
/** The rows of one source file, rendered for its implementer ("trust the table over local guessing"). */
|
|
228
|
+
export const ledgerRowsFor = (rows: ReadonlyArray<LedgerRow>, file: string): string | undefined => {
|
|
229
|
+
const mine = rows.filter((row) => row.file === file)
|
|
230
|
+
return mine.length === 0
|
|
231
|
+
? undefined
|
|
232
|
+
: mine
|
|
233
|
+
.map((row) => `- ${row.unit}: ${row.class} (${row.evidence}; ${row.confidence})`)
|
|
234
|
+
.join("\n")
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/** The units a pack's `## Ledger` regex names in a source file, each once. */
|
|
238
|
+
export const unitsIn = (text: string, unitRegex: string): ReadonlyArray<string> => {
|
|
239
|
+
const pattern = new RegExp(unitRegex, "gmu")
|
|
240
|
+
const units: Array<string> = []
|
|
241
|
+
for (let match = pattern.exec(text); match !== null; match = pattern.exec(text)) {
|
|
242
|
+
const name = match.slice(1).find((group) => group !== undefined && group.length > 0)
|
|
243
|
+
if (name !== undefined && !units.includes(name)) units.push(name)
|
|
244
|
+
if (match[0].length === 0) pattern.lastIndex += 1
|
|
245
|
+
}
|
|
246
|
+
return units
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// ---- Refutes (port-guide, port-ledger) ----------------------------------------------------
|
|
250
|
+
|
|
251
|
+
/** A claim stands unless a majority of its refuters reject it (the Bun port's 3-vote refute). */
|
|
252
|
+
export const standsAfterRefutes = (votes: ReadonlyArray<boolean>): boolean => {
|
|
253
|
+
const rejected = votes.filter((holds) => !holds).length
|
|
254
|
+
return votes.length === 0 ? true : rejected * 2 < votes.length
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// ---- Guide audit (port-guide) -------------------------------------------------------------
|
|
258
|
+
|
|
259
|
+
export class GuideFinding extends Schema.Class<GuideFinding>("GuideFinding")({
|
|
260
|
+
dimension: Schema.String,
|
|
261
|
+
finding: Schema.String,
|
|
262
|
+
/** A rulebook line, a sample source line, or a draft line that shows it. */
|
|
263
|
+
evidence: Schema.String,
|
|
264
|
+
/** The rule the rulebook should gain or change, one line. */
|
|
265
|
+
proposedRule: Schema.String
|
|
266
|
+
}) {}
|
|
267
|
+
|
|
268
|
+
export const defaultAuditDimensions: ReadonlyArray<string> = [
|
|
269
|
+
"error model",
|
|
270
|
+
"ownership and memory",
|
|
271
|
+
"collections and strings",
|
|
272
|
+
"control flow and compile-time constructs",
|
|
273
|
+
"API shape and naming",
|
|
274
|
+
"concurrency and resources",
|
|
275
|
+
"build, test and tooling idioms",
|
|
276
|
+
"what not to translate"
|
|
277
|
+
]
|
|
278
|
+
|
|
279
|
+
export const renderGuideAudit = (facts: {
|
|
280
|
+
readonly pack: string
|
|
281
|
+
readonly kept: ReadonlyArray<GuideFinding>
|
|
282
|
+
readonly dropped: ReadonlyArray<GuideFinding>
|
|
283
|
+
readonly trial: ReadonlyArray<string>
|
|
284
|
+
readonly sample: ReadonlyArray<string>
|
|
285
|
+
}): string =>
|
|
286
|
+
[
|
|
287
|
+
`# Rulebook audit — pack ${facts.pack}`,
|
|
288
|
+
"",
|
|
289
|
+
`- sample files: ${facts.sample.join(", ") || "none"}`,
|
|
290
|
+
`- findings kept after the refute: ${facts.kept.length}; dropped: ${facts.dropped.length}`,
|
|
291
|
+
"",
|
|
292
|
+
...(facts.kept.length === 0
|
|
293
|
+
? ["No finding survived: the rulebook stands as written.", ""]
|
|
294
|
+
: [
|
|
295
|
+
"## Proposed rules",
|
|
296
|
+
"",
|
|
297
|
+
"Each is an `append-rule` to `prompts/porting.md`, applied on the next run once approved.",
|
|
298
|
+
"",
|
|
299
|
+
...facts.kept.flatMap((finding) => [
|
|
300
|
+
`### ${finding.dimension}`,
|
|
301
|
+
"",
|
|
302
|
+
`**Finding.** ${finding.finding.trim()}`,
|
|
303
|
+
"",
|
|
304
|
+
`**Evidence.** ${finding.evidence.trim()}`,
|
|
305
|
+
"",
|
|
306
|
+
"```diff",
|
|
307
|
+
`+ - ${finding.proposedRule.trim()}`,
|
|
308
|
+
"```",
|
|
309
|
+
""
|
|
310
|
+
])
|
|
311
|
+
]),
|
|
312
|
+
...(facts.trial.length === 0
|
|
313
|
+
? []
|
|
314
|
+
: [
|
|
315
|
+
"## Trial port: where the native port and the rulebook port differ",
|
|
316
|
+
"",
|
|
317
|
+
...facts.trial.map((line) => `- ${line}`),
|
|
318
|
+
""
|
|
319
|
+
]),
|
|
320
|
+
...(facts.dropped.length === 0
|
|
321
|
+
? []
|
|
322
|
+
: [
|
|
323
|
+
"## Dropped by the refute",
|
|
324
|
+
"",
|
|
325
|
+
...facts.dropped.map((finding) => `- ${finding.dimension}: ${finding.finding.trim()}`),
|
|
326
|
+
""
|
|
327
|
+
]),
|
|
328
|
+
DraftApprovalMarker,
|
|
329
|
+
""
|
|
330
|
+
].join("\n")
|
|
331
|
+
|
|
332
|
+
// ---- Differential (port-tests) ------------------------------------------------------------
|
|
333
|
+
|
|
334
|
+
export const DiffClass = Schema.Literals(["pass", "diverge", "crash", "hang", "legacy-red"])
|
|
335
|
+
export type DiffClass = typeof DiffClass.Type
|
|
336
|
+
|
|
337
|
+
export class DiffVerdict extends Schema.Class<DiffVerdict>("DiffVerdict")({
|
|
338
|
+
file: Schema.String,
|
|
339
|
+
class: DiffClass,
|
|
340
|
+
legacyPassed: Schema.optionalKey(Schema.Int),
|
|
341
|
+
targetPassed: Schema.optionalKey(Schema.Int),
|
|
342
|
+
detail: Schema.String
|
|
343
|
+
}) {}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* The Bun test swarm's verdict: a test file passes when the target exits 0
|
|
347
|
+
* AND its pass count equals the legacy baseline's (when both are known). A
|
|
348
|
+
* legacy run that is red itself is no evidence about the target.
|
|
349
|
+
*/
|
|
350
|
+
export const diffVerdict = (
|
|
351
|
+
file: string,
|
|
352
|
+
legacy: ReviewResult,
|
|
353
|
+
target: ReviewResult,
|
|
354
|
+
roots: ReadonlyArray<string> = []
|
|
355
|
+
): DiffVerdict => {
|
|
356
|
+
const strip = (text: string): string =>
|
|
357
|
+
roots.reduce((acc, root) => acc.replaceAll(`${root}/`, ""), text)
|
|
358
|
+
const legacyPassed = legacy.passed
|
|
359
|
+
const targetPassed = target.passed
|
|
360
|
+
const counts = {
|
|
361
|
+
...(legacyPassed === undefined ? {} : { legacyPassed }),
|
|
362
|
+
...(targetPassed === undefined ? {} : { targetPassed })
|
|
363
|
+
}
|
|
364
|
+
if (!legacy.isClean) {
|
|
365
|
+
return DiffVerdict.make({
|
|
366
|
+
file,
|
|
367
|
+
class: "legacy-red",
|
|
368
|
+
...counts,
|
|
369
|
+
detail: "the legacy build fails this file too; nothing to compare"
|
|
370
|
+
})
|
|
371
|
+
}
|
|
372
|
+
const gate = target.issues.find((issue) => issue.gateClass !== undefined)
|
|
373
|
+
if (gate?.gateClass === "hang") {
|
|
374
|
+
return DiffVerdict.make({ file, class: "hang", ...counts, detail: strip(gate.description) })
|
|
375
|
+
}
|
|
376
|
+
if (gate?.gateClass === "crash") {
|
|
377
|
+
return DiffVerdict.make({ file, class: "crash", ...counts, detail: strip(gate.description) })
|
|
378
|
+
}
|
|
379
|
+
if (!target.isClean) {
|
|
380
|
+
return DiffVerdict.make({
|
|
381
|
+
file,
|
|
382
|
+
class: "diverge",
|
|
383
|
+
...counts,
|
|
384
|
+
detail: strip(target.issues.map((issue) => issue.description).join("\n"))
|
|
385
|
+
})
|
|
386
|
+
}
|
|
387
|
+
if (legacyPassed !== undefined && targetPassed !== undefined && targetPassed !== legacyPassed) {
|
|
388
|
+
return DiffVerdict.make({
|
|
389
|
+
file,
|
|
390
|
+
class: "diverge",
|
|
391
|
+
...counts,
|
|
392
|
+
detail: `${targetPassed} test(s) pass on the target, ${legacyPassed} on the legacy build`
|
|
393
|
+
})
|
|
394
|
+
}
|
|
395
|
+
return DiffVerdict.make({ file, class: "pass", ...counts, detail: "" })
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/** The `.diag` a fixer reads as its only runtime evidence. */
|
|
399
|
+
export const renderDiag = (verdict: DiffVerdict, tailChars = 4_000): string =>
|
|
400
|
+
[
|
|
401
|
+
`# ${verdict.file}: ${verdict.class}`,
|
|
402
|
+
"",
|
|
403
|
+
`- legacy passed: ${verdict.legacyPassed ?? "unknown"}; target passed: ${verdict.targetPassed ?? "unknown"}`,
|
|
404
|
+
"",
|
|
405
|
+
"## Target output (tail)",
|
|
406
|
+
"",
|
|
407
|
+
"```",
|
|
408
|
+
verdict.detail.length > tailChars ? `…${verdict.detail.slice(-tailChars)}` : verdict.detail,
|
|
409
|
+
"```",
|
|
410
|
+
""
|
|
411
|
+
].join("\n")
|
|
412
|
+
|
|
413
|
+
export const renderDifferentialReport = (
|
|
414
|
+
round: number,
|
|
415
|
+
verdicts: ReadonlyArray<DiffVerdict>
|
|
416
|
+
): string => {
|
|
417
|
+
const by = (klass: DiffClass) => verdicts.filter((verdict) => verdict.class === klass)
|
|
418
|
+
return [
|
|
419
|
+
`# Differential tests, round ${round}`,
|
|
420
|
+
"",
|
|
421
|
+
`- files: ${verdicts.length}; pass ${by("pass").length}, diverge ${by("diverge").length}, crash ${by("crash").length}, hang ${by("hang").length}, legacy-red ${by("legacy-red").length}`,
|
|
422
|
+
"",
|
|
423
|
+
...(["diverge", "crash", "hang"] as const).flatMap((klass) =>
|
|
424
|
+
by(klass).length === 0
|
|
425
|
+
? []
|
|
426
|
+
: [`## ${klass}`, "", ...by(klass).map((verdict) => `- ${verdict.file}`), ""]
|
|
427
|
+
)
|
|
428
|
+
].join("\n")
|
|
429
|
+
}
|
package/src/Timing.ts
CHANGED
|
@@ -98,6 +98,15 @@ const replyContent = (content: OtelContent, text: string): Record<string, unknow
|
|
|
98
98
|
])
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
+
/** A structured reply as text for `output.value`; empty when it does not serialize. */
|
|
102
|
+
const rendered = (value: unknown): string => {
|
|
103
|
+
try {
|
|
104
|
+
return typeof value === "string" ? value : (JSON.stringify(value) ?? "")
|
|
105
|
+
} catch {
|
|
106
|
+
return ""
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
101
110
|
const count = (
|
|
102
111
|
counter: Metric.Counter<number>,
|
|
103
112
|
attributes: Record<string, string>,
|
|
@@ -199,22 +208,26 @@ export const timeEffect = <A, E, R>(
|
|
|
199
208
|
|
|
200
209
|
/**
|
|
201
210
|
* `timeEffect` under an LLM span named for the role; `usageOf` reads what
|
|
202
|
-
* the result says about tokens and model, when it says anything
|
|
211
|
+
* the result says about tokens and model, when it says anything, and
|
|
212
|
+
* `replyOf` what the reply was, for the span's content when it may carry any.
|
|
203
213
|
*/
|
|
204
214
|
const tracedEffect = <A, E, R>(
|
|
205
215
|
events: FlowEventsShape,
|
|
206
216
|
label: string,
|
|
207
217
|
options: TimedSeatOptions,
|
|
218
|
+
prompt: string,
|
|
208
219
|
effect: Effect.Effect<A, E, R>,
|
|
209
220
|
timed: (ms: number, failed: boolean, role: string | undefined) => Timed,
|
|
210
221
|
usageOf: (value: A) => {
|
|
211
222
|
readonly usage: TokenUsage | undefined
|
|
212
223
|
readonly model: string | undefined
|
|
213
|
-
}
|
|
224
|
+
},
|
|
225
|
+
replyOf: (value: A) => string = rendered
|
|
214
226
|
): Effect.Effect<A, E, R> =>
|
|
215
227
|
Effect.gen(function* () {
|
|
216
228
|
const role = (yield* TimedRole) ?? label
|
|
217
229
|
const executor = options.executor === undefined ? undefined : yield* options.executor
|
|
230
|
+
const content = options.content ?? "off"
|
|
218
231
|
return yield* withKindSpan(
|
|
219
232
|
role,
|
|
220
233
|
{
|
|
@@ -222,7 +235,8 @@ const tracedEffect = <A, E, R>(
|
|
|
222
235
|
attributes: {
|
|
223
236
|
[attr.role]: role,
|
|
224
237
|
[attr.operation]: "generate",
|
|
225
|
-
...(executor === undefined ? {} : { [attr.executor]: executor })
|
|
238
|
+
...(executor === undefined ? {} : { [attr.executor]: executor }),
|
|
239
|
+
...promptContent(content, [Message.make({ role: "User", content: prompt })])
|
|
226
240
|
}
|
|
227
241
|
},
|
|
228
242
|
timeEffect(events, effect, timed).pipe(
|
|
@@ -233,9 +247,10 @@ const tracedEffect = <A, E, R>(
|
|
|
233
247
|
const settled = settleUsage(known.usage, known.model, 0, 0, undefined)
|
|
234
248
|
return Effect.all(
|
|
235
249
|
[
|
|
236
|
-
Effect.annotateCurrentSpan(
|
|
237
|
-
usageAttributes(settled.model, settled.usage, settled.estimated)
|
|
238
|
-
|
|
250
|
+
Effect.annotateCurrentSpan({
|
|
251
|
+
...usageAttributes(settled.model, settled.usage, settled.estimated),
|
|
252
|
+
...(Exit.isSuccess(exit) ? replyContent(content, replyOf(exit.value)) : {})
|
|
253
|
+
}),
|
|
239
254
|
recordCall(role, executor, settled, Exit.isFailure(exit))
|
|
240
255
|
],
|
|
241
256
|
{ discard: true }
|
|
@@ -427,12 +442,21 @@ export const timedSeat = (
|
|
|
427
442
|
executeStreamWithHistory: (messages) =>
|
|
428
443
|
timedStream(events, label, options, messages, service.executeStreamWithHistory(messages)),
|
|
429
444
|
executeWithTools: (text, tools) =>
|
|
430
|
-
tracedEffect(
|
|
445
|
+
tracedEffect(
|
|
446
|
+
events,
|
|
447
|
+
label,
|
|
448
|
+
options,
|
|
449
|
+
text,
|
|
450
|
+
service.executeWithTools(text, tools),
|
|
451
|
+
model,
|
|
452
|
+
nothing
|
|
453
|
+
),
|
|
431
454
|
executeStructured: (text, schema, jsonSchema) =>
|
|
432
455
|
tracedEffect(
|
|
433
456
|
events,
|
|
434
457
|
label,
|
|
435
458
|
options,
|
|
459
|
+
text,
|
|
436
460
|
service.executeStructured(text, schema, jsonSchema),
|
|
437
461
|
model,
|
|
438
462
|
nothing
|
|
@@ -442,17 +466,19 @@ export const timedSeat = (
|
|
|
442
466
|
events,
|
|
443
467
|
label,
|
|
444
468
|
options,
|
|
469
|
+
text,
|
|
445
470
|
service.executeStructuredWithUsage(text, schema, jsonSchema),
|
|
446
471
|
model,
|
|
447
|
-
([, usage, modelName]) => ({ usage, model: modelName })
|
|
472
|
+
([, usage, modelName]) => ({ usage, model: modelName }),
|
|
473
|
+
([value]) => rendered(value)
|
|
448
474
|
),
|
|
449
475
|
scoreLabels: (text, labels) =>
|
|
450
|
-
tracedEffect(events, label, options, service.scoreLabels(text, labels), model, nothing),
|
|
476
|
+
tracedEffect(events, label, options, text, service.scoreLabels(text, labels), model, nothing),
|
|
451
477
|
...(batched === undefined
|
|
452
478
|
? {}
|
|
453
479
|
: {
|
|
454
480
|
scoreLabelSequence: (text: string, labelSets: ReadonlyArray<ReadonlyArray<string>>) =>
|
|
455
|
-
tracedEffect(events, label, options, batched(text, labelSets), model, nothing)
|
|
481
|
+
tracedEffect(events, label, options, text, batched(text, labelSets), model, nothing)
|
|
456
482
|
}),
|
|
457
483
|
isAvailable: service.isAvailable
|
|
458
484
|
}
|