@llm4ts/flow 2.28.0 → 2.29.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/CarriedNotes.d.ts +25 -0
- package/dist/CarriedNotes.d.ts.map +1 -0
- package/dist/CarriedNotes.js +76 -0
- package/dist/CarriedNotes.js.map +1 -0
- package/dist/Flow.d.ts +8 -0
- package/dist/Flow.d.ts.map +1 -1
- package/dist/Flow.js +13 -1
- package/dist/Flow.js.map +1 -1
- package/dist/FlowEvents.d.ts +5 -0
- package/dist/FlowEvents.d.ts.map +1 -1
- package/dist/FlowEvents.js +9 -2
- package/dist/FlowEvents.js.map +1 -1
- package/dist/Orientation.d.ts +25 -0
- package/dist/Orientation.d.ts.map +1 -0
- package/dist/Orientation.js +150 -0
- package/dist/Orientation.js.map +1 -0
- package/dist/RefineRound.d.ts.map +1 -1
- package/dist/RefineRound.js +13 -1
- package/dist/RefineRound.js.map +1 -1
- package/dist/Retro.d.ts.map +1 -1
- package/dist/Retro.js +16 -3
- package/dist/Retro.js.map +1 -1
- package/dist/Roster.d.ts +20 -0
- package/dist/Roster.d.ts.map +1 -1
- package/dist/Roster.js +34 -1
- package/dist/Roster.js.map +1 -1
- package/dist/RosterSeats.d.ts +5 -1
- package/dist/RosterSeats.d.ts.map +1 -1
- package/dist/RosterSeats.js +10 -15
- package/dist/RosterSeats.js.map +1 -1
- package/dist/Stories.d.ts +5 -4
- package/dist/Stories.d.ts.map +1 -1
- package/dist/Stories.js +46 -11
- package/dist/Stories.js.map +1 -1
- package/dist/StoryPlan.d.ts +33 -1
- package/dist/StoryPlan.d.ts.map +1 -1
- package/dist/StoryPlan.js +62 -4
- package/dist/StoryPlan.js.map +1 -1
- package/dist/Transcript.d.ts.map +1 -1
- package/dist/Transcript.js +3 -2
- package/dist/Transcript.js.map +1 -1
- package/package.json +4 -2
- package/src/CarriedNotes.ts +103 -0
- package/src/Flow.ts +31 -1
- package/src/FlowEvents.ts +11 -2
- package/src/Orientation.ts +192 -0
- package/src/RefineRound.ts +13 -1
- package/src/Retro.ts +26 -3
- package/src/Roster.ts +79 -1
- package/src/RosterSeats.ts +14 -18
- package/src/Stories.ts +52 -11
- package/src/StoryPlan.ts +78 -2
- package/src/Transcript.ts +3 -2
package/dist/StoryPlan.js
CHANGED
|
@@ -18,7 +18,15 @@ export class Story extends Schema.Class("Story")({
|
|
|
18
18
|
/** Path prefixes fed as context and forbidden to change. */
|
|
19
19
|
sharedReadOnly: Schema.Array(Schema.String).pipe(Schema.withConstructorDefault(Effect.succeed([])), Schema.withDecodingDefaultKey(Effect.succeed([]))),
|
|
20
20
|
/** What dependents may rely on: routes, exports, contracts. */
|
|
21
|
-
provides: Schema.Array(Schema.String).pipe(Schema.withConstructorDefault(Effect.succeed([])), Schema.withDecodingDefaultKey(Effect.succeed([])))
|
|
21
|
+
provides: Schema.Array(Schema.String).pipe(Schema.withConstructorDefault(Effect.succeed([])), Schema.withDecodingDefaultKey(Effect.succeed([]))),
|
|
22
|
+
/**
|
|
23
|
+
* Paths the planner says to read before touching anything: the exemplar
|
|
24
|
+
* feature to imitate, the contract this story extends, the kit component to
|
|
25
|
+
* reuse. Pruned to paths that exist; their contents open the starting code.
|
|
26
|
+
*/
|
|
27
|
+
readFirst: Schema.Array(Schema.String).pipe(Schema.withConstructorDefault(Effect.succeed([])), Schema.withDecodingDefaultKey(Effect.succeed([]))),
|
|
28
|
+
/** Observable outcomes that make the story done; the coder plans against them, the judge scores against them. */
|
|
29
|
+
acceptance: Schema.Array(Schema.String).pipe(Schema.withConstructorDefault(Effect.succeed([])), Schema.withDecodingDefaultKey(Effect.succeed([])))
|
|
22
30
|
}) {
|
|
23
31
|
}
|
|
24
32
|
export class StoryPlan extends Schema.Class("StoryPlan")({
|
|
@@ -98,6 +106,41 @@ export const storyPlanViolations = (plan) => {
|
|
|
98
106
|
}
|
|
99
107
|
return violations;
|
|
100
108
|
};
|
|
109
|
+
/**
|
|
110
|
+
* An anchor the repository can answer: relative, inside the checkout, and
|
|
111
|
+
* narrower than the whole tree. `../x`, `/abs/x`, `.`, `` and `a/../b` are
|
|
112
|
+
* not — `git ls-files` is fatal on the first two, and the last ones would
|
|
113
|
+
* name every file.
|
|
114
|
+
*/
|
|
115
|
+
export const isSafeAnchor = (anchor) => {
|
|
116
|
+
const path = normalizePath(anchor);
|
|
117
|
+
return (path.length > 0 &&
|
|
118
|
+
!path.startsWith("/") &&
|
|
119
|
+
!/^[A-Za-z]:/u.test(path) &&
|
|
120
|
+
path !== "." &&
|
|
121
|
+
!path.split("/").includes(".."));
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* The plan with every `readFirst` anchor that no tracked file lies under
|
|
125
|
+
* removed — unsafe anchors (`isSafeAnchor`) first, without a lookup — and
|
|
126
|
+
* the list of what was dropped. A planner names paths from a layout digest
|
|
127
|
+
* and sometimes guesses; a guess must not reach a coder as something to read.
|
|
128
|
+
*/
|
|
129
|
+
export const pruneReadFirst = (plan, known) => {
|
|
130
|
+
const files = [...known].map(normalizePath);
|
|
131
|
+
const dropped = [];
|
|
132
|
+
const stories = plan.stories.map((story) => {
|
|
133
|
+
const kept = story.readFirst.filter((anchor) => {
|
|
134
|
+
const exists = isSafeAnchor(anchor) && files.some((file) => pathWithin(file, anchor));
|
|
135
|
+
if (!exists) {
|
|
136
|
+
dropped.push({ story: story.id, path: anchor });
|
|
137
|
+
}
|
|
138
|
+
return exists;
|
|
139
|
+
});
|
|
140
|
+
return kept.length === story.readFirst.length ? story : new Story({ ...story, readFirst: kept });
|
|
141
|
+
});
|
|
142
|
+
return { plan: dropped.length === 0 ? plan : new StoryPlan({ ...plan, stories }), dropped };
|
|
143
|
+
};
|
|
101
144
|
const cycles = (plan) => {
|
|
102
145
|
const found = [];
|
|
103
146
|
const state = new Map();
|
|
@@ -231,7 +274,11 @@ export const pathsNamedIn = (plan, text) => {
|
|
|
231
274
|
}
|
|
232
275
|
return [...new Set(found)];
|
|
233
276
|
};
|
|
234
|
-
/**
|
|
277
|
+
/**
|
|
278
|
+
* Stable over the story entry's content — a changed entry means a fresh
|
|
279
|
+
* branch. The 2.29 fields enter only when set, so a plan written earlier
|
|
280
|
+
* keeps every hash and an upgrade restarts no story.
|
|
281
|
+
*/
|
|
235
282
|
export const storyHash = (story) => stableHash(JSON.stringify({
|
|
236
283
|
id: story.id,
|
|
237
284
|
title: story.title,
|
|
@@ -239,7 +286,11 @@ export const storyHash = (story) => stableHash(JSON.stringify({
|
|
|
239
286
|
dependsOn: [...story.dependsOn],
|
|
240
287
|
owned: [...story.owned].map(normalizePath),
|
|
241
288
|
sharedReadOnly: [...story.sharedReadOnly].map(normalizePath),
|
|
242
|
-
provides: [...story.provides]
|
|
289
|
+
provides: [...story.provides],
|
|
290
|
+
...(story.readFirst.length === 0
|
|
291
|
+
? {}
|
|
292
|
+
: { readFirst: [...story.readFirst].map(normalizePath) }),
|
|
293
|
+
...(story.acceptance.length === 0 ? {} : { acceptance: [...story.acceptance] })
|
|
243
294
|
}));
|
|
244
295
|
export const storyPlanFenceInfo = "json storyplan";
|
|
245
296
|
const fencePattern = /```json[ \t]+storyplan[ \t]*\r?\n([\s\S]*?)\r?\n[ \t]*```/;
|
|
@@ -281,7 +332,14 @@ export const renderStoryPlan = Effect.fn("@llm4ts/flow/StoryPlan.render")(functi
|
|
|
281
332
|
""
|
|
282
333
|
];
|
|
283
334
|
for (const story of plan.stories) {
|
|
284
|
-
lines.push(`### ${story.id} — ${story.title}`, "", story.description.trim(), "",
|
|
335
|
+
lines.push(`### ${story.id} — ${story.title}`, "", story.description.trim(), "", ...(story.acceptance.length === 0
|
|
336
|
+
? []
|
|
337
|
+
: [
|
|
338
|
+
"Done when:",
|
|
339
|
+
"",
|
|
340
|
+
...story.acceptance.map((criterion, index) => `${index + 1}. ${criterion}`),
|
|
341
|
+
""
|
|
342
|
+
]), `- depends on: ${list(story.dependsOn)}`, `- owned: ${list(story.owned)}`, `- shared read-only: ${list(story.sharedReadOnly)}`, `- read first: ${list(story.readFirst)}`, `- provides: ${list(story.provides)}`, "");
|
|
285
343
|
}
|
|
286
344
|
lines.push("## Plan block", "", "Edit this block to change the plan; the prose above is regenerated from it.", "", "```" + storyPlanFenceInfo, JSON.stringify(encoded, null, 2), "```", "");
|
|
287
345
|
return lines.join("\n");
|
package/dist/StoryPlan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoryPlan.js","sourceRoot":"","sources":["../src/StoryPlan.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,6EAA6E;AAC7E,oEAAoE;AACpE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAyB,MAAM,gBAAgB,CAAA;AAExF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAEjC,MAAM,OAAO,KAAM,SAAQ,MAAM,CAAC,KAAK,CAAQ,OAAO,CAAC,CAAC;IACtD,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACzC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EACjD,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAClD;IACD,yFAAyF;IACzF,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EACjD,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAClD;IACD,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACxC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EACjD,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAClD;CACF,CAAC;CAAG;AAEL,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,KAAK,CAAY,WAAW,CAAC,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;CAC7B,CAAC;IACA,KAAK,CAAC,EAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACtD,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CACpD,IAAI;KACD,IAAI,EAAE;KACN,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;KACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;KACvB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAExB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAc,EAAW,EAAE;IAClE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,KAAa,EAAW,EAAE,CAC3D,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAe,EAAyB,EAAE;IAC5E,MAAM,UAAU,GAAkB,EAAE,CAAA;IACpC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;QACrD,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACjB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAA;QACtD,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC5B,UAAU,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAA;YAC1D,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;gBAC1E,UAAU,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,+BAA+B,UAAU,GAAG,CAAC,CAAA;YACjF,CAAC;QACH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;oBAC/B,UAAU,CAAC,IAAI,CACb,UAAU,KAAK,CAAC,EAAE,gBAAgB,KAAK,mBAAmB,MAAM,oBAAoB,CACrF,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,SAAQ;QACV,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAClD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACpC,IAAI,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;wBACrC,UAAU,CAAC,IAAI,CACb,YAAY,IAAI,CAAC,EAAE,UAAU,KAAK,CAAC,EAAE,eAAe,aAAa,CAAC,QAAQ,CAAC,QAAQ,aAAa,CAAC,SAAS,CAAC,GAAG,CAC/G,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,UAAU,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,IAAe,EAAwC,EAAE;IACvE,MAAM,KAAK,GAAiC,EAAE,CAAA;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAA;IACpD,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,KAA4B,EAAQ,EAAE;QAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAM;QACR,CAAC;QACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC/B,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACvC,OAAM;QACR,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QACzB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;YACzD,0DAA0D;YAC1D,IAAI,UAAU,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC9D,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IACvB,CAAC,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,iCAAiC,CAAC,CAAC,QAAQ,CAAC,EACrF,IAAe;IAEf,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC5C,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;AACtF,CAAC,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAwC,EAAE;IACxF,MAAM,KAAK,GAAiC,EAAE,CAAA;IAC9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;IAChC,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACrD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CACnC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAChF,CAAA;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAK;QACP,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAChB,CAAC;QACD,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACvD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAUD,sFAAsF;AACtF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAe,EAAE,QAAuB,EAAwB,EAAE,CAC7F,IAAI,CAAC,OAAO,CAAC,MAAM,CACjB,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5B,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9B,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CACvE,CAAA;AAEH,oEAAoE;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAe,EAAE,EAAU,EAAyB,EAAE;IACjF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,EAAE,CAAC,CAAC,CAAA;IACrC,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,GAAG,KAAK,CAAA;QACZ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACrB,IAAI,GAAG,IAAI,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,OAAO;SAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;SACxB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;AACtE,CAAC,CAAA;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAe,EAAE,EAAU,EAAyB,EAAE;IACnF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;IAChC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,CAAA;IACtD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAC1B,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,SAAQ;QACV,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;AAC3F,CAAC,CAAA;AAKD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAe,EAAE,KAAY,EAAE,KAAY,EAAiB,EAAE,CACvF,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;IACnB,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,UAAU,CAAA;AAEpB,oEAAoE;AACpE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAe,EAAE,IAAY,EAAqB,EAAE,CAC1E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAEtF,MAAM,QAAQ,GAAG,qBAAqB,CAAA;AAEtC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAe,EAAE,IAAY,EAAyB,EAAE;IACnF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;IACxF,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/F,CAAA;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAChD,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CACjE,CAAA;IACD,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAA;QACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACnB,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,oFAAoF;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAU,EAAE,CAChD,UAAU,CACR,IAAI,CAAC,SAAS,CAAC;IACb,EAAE,EAAE,KAAK,CAAC,EAAE;IACZ,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;IAC5D,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC9B,CAAC,CACH,CAAA;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAA;AAElD,MAAM,YAAY,GAAG,2DAA2D,CAAA;AAEhF,wEAAwE;AACxE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAsB,EAAE,CACrE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,QAAQ,CAAC,EAC/E,QAAgB;IAEhB,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,8DAA8D;SACxE,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CACpF,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,6BAA6B,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAC/E,CACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,IAAI,GAAG,CAAC,KAA4B,EAAU,EAAE,CACpD,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,+BAA+B,CAAC,CAAC,QAAQ,CAAC,EACjF,IAAe;IAEf,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,6BAA6B,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAC/E,CACF,CAAA;IACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,KAAK,GAAkB;QAC3B,WAAW,IAAI,CAAC,MAAM,EAAE;QACxB,EAAE;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAChB,EAAE;QACF,UAAU;QACV,EAAE;QACF,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,EAAE;QACF,YAAY;QACZ,EAAE;KACH,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CACR,OAAO,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE,EAClC,EAAE,EACF,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EACxB,EAAE,EACF,iBAAiB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EACxC,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAC/B,uBAAuB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EACnD,eAAe,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EACrC,EAAE,CACH,CAAA;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CACR,eAAe,EACf,EAAE,EACF,6EAA6E,EAC7E,EAAE,EACF,KAAK,GAAG,kBAAkB,EAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAChC,KAAK,EACL,EAAE,CACH,CAAA;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC,CAAC,CAAA;AAiBF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA0B,EAAuB,EAAE;IACpF,MAAM,IAAI,GAAG,CACX,IAAY,EACZ,IAAe,EACyC,EAAE,CAC1D,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IACxF,MAAM,IAAI,GAAG,CACX,IAAY,EAC6D,EAAE,CAC3E,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5C,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAC9E,CAAA;IACH,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAC3B;KACJ,CAAA;AACH,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"StoryPlan.js","sourceRoot":"","sources":["../src/StoryPlan.ts"],"names":[],"mappings":"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"}
|
package/dist/Transcript.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transcript.d.ts","sourceRoot":"","sources":["../src/Transcript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"Transcript.d.ts","sourceRoot":"","sources":["../src/Transcript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAkD9D,eAAO,MAAM,eAAe;;;;;IAhC1B,sDAAsD;;IAEtD,gEAAgE;;IAEhE,yEAAyE;;;;;;;;;;;;;;;;;;;;;IA4BM,CAAA;AACjF,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEzD,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC1F;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAC7B,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;KAAE,CAAC,CACtF,CAAA;CACF;AAED,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAQxE,CAAA;AAaD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACtD;AAED,mEAAmE;AACnE,eAAO,MAAM,cAAc,GACzB,SAAS,eAAe,EACxB,MAAM,cAAc,EACpB,SAAS,qBAAqB,KAC7B,eAuIF,CAAA"}
|
package/dist/Transcript.js
CHANGED
|
@@ -7,8 +7,9 @@ import * as Stream from "effect/Stream";
|
|
|
7
7
|
import { redactText } from "@llm4ts/core/observability/Redaction";
|
|
8
8
|
import { roleOr } from "./Timing.js";
|
|
9
9
|
/**
|
|
10
|
-
* What the model was told and what it answered, per seat call —
|
|
11
|
-
*
|
|
10
|
+
* What the model was told and what it answered, per seat call — a record
|
|
11
|
+
* (`llm4ts run --transcript`; on by default in epic-stories, where
|
|
12
|
+
* `LLM4TS_TRANSCRIPT=off` turns it off) that `llm4ts watch` tails. It lives in
|
|
12
13
|
* its own files, never in the trace, so the trace and `llm4ts profile` stay
|
|
13
14
|
* content-free. Secrets are redacted and every field is capped.
|
|
14
15
|
*/
|
package/dist/Transcript.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transcript.js","sourceRoot":"","sources":["../src/Transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC
|
|
1
|
+
{"version":3,"file":"Transcript.js","sourceRoot":"","sources":["../src/Transcript.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.29.0",
|
|
4
4
|
"description": "Effect-native LLM workflow, persistence, review, and repository automation",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"./Blackboard": "./dist/Blackboard.js",
|
|
25
25
|
"./BoardSync": "./dist/BoardSync.js",
|
|
26
26
|
"./CapabilityGuard": "./dist/CapabilityGuard.js",
|
|
27
|
+
"./CarriedNotes": "./dist/CarriedNotes.js",
|
|
27
28
|
"./Chat": "./dist/Chat.js",
|
|
28
29
|
"./Classified": "./dist/Classified.js",
|
|
29
30
|
"./Context": "./dist/Context.js",
|
|
@@ -57,6 +58,7 @@
|
|
|
57
58
|
"./JudgmentLog": "./dist/JudgmentLog.js",
|
|
58
59
|
"./Perimeter": "./dist/Perimeter.js",
|
|
59
60
|
"./NodePreflight": "./dist/NodePreflight.js",
|
|
61
|
+
"./Orientation": "./dist/Orientation.js",
|
|
60
62
|
"./Persistence": "./dist/Persistence.js",
|
|
61
63
|
"./Plan": "./dist/Plan.js",
|
|
62
64
|
"./PlanExecution": "./dist/PlanExecution.js",
|
|
@@ -110,7 +112,7 @@
|
|
|
110
112
|
"typescript"
|
|
111
113
|
],
|
|
112
114
|
"dependencies": {
|
|
113
|
-
"@llm4ts/core": "2.
|
|
115
|
+
"@llm4ts/core": "2.29.0"
|
|
114
116
|
},
|
|
115
117
|
"peerDependencies": {
|
|
116
118
|
"effect": "4.0.0"
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// What a story's earlier tasks learned, carried into the next task's prompt.
|
|
2
|
+
// With one chat per task (ADR 0003) every task starts cold; without this a
|
|
3
|
+
// six-task story explores the repository six times. The coder ends each task
|
|
4
|
+
// with a short Findings section; code saves it beside the story and prepends
|
|
5
|
+
// the accumulated notes to the next task. Pure helpers here, the seam in Flow.
|
|
6
|
+
import type * as Effect from "effect/Effect"
|
|
7
|
+
import type { FlowError } from "./FlowError.ts"
|
|
8
|
+
|
|
9
|
+
export const notesHeading = "## Findings"
|
|
10
|
+
|
|
11
|
+
/** Appended to every task prompt that carries notes. */
|
|
12
|
+
export const findingsRequest = [
|
|
13
|
+
"",
|
|
14
|
+
`When the task is done, end your reply with a section headed \`${notesHeading}\` of at most`,
|
|
15
|
+
"ten lines: files you read or changed that matter for the rest of this story, conventions",
|
|
16
|
+
"you learned (where tests live, how a feature is registered, which kit component to use),",
|
|
17
|
+
"and commands that worked. Nothing follows it — unless you must stop with BLOCKED_ON:,",
|
|
18
|
+
"which stays the last line."
|
|
19
|
+
].join("\n")
|
|
20
|
+
|
|
21
|
+
const sectionChars = 1_500
|
|
22
|
+
const headingPattern = /^#{1,3}[ \t]*findings[ \t]*:?[ \t]*$/gimu
|
|
23
|
+
const blockedLine = /^BLOCKED_ON:.*$/u
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The text after the LAST Findings heading, without a trailing BLOCKED_ON
|
|
27
|
+
* line (that stays the reply's last line for `blockedOnIn`), capped;
|
|
28
|
+
* undefined when there is no heading or nothing under it.
|
|
29
|
+
*/
|
|
30
|
+
export const findingsIn = (reply: string): string | undefined => {
|
|
31
|
+
let last: RegExpExecArray | undefined
|
|
32
|
+
headingPattern.lastIndex = 0
|
|
33
|
+
for (let match = headingPattern.exec(reply); match !== null; match = headingPattern.exec(reply)) {
|
|
34
|
+
last = match
|
|
35
|
+
}
|
|
36
|
+
if (last === undefined) {
|
|
37
|
+
return undefined
|
|
38
|
+
}
|
|
39
|
+
const lines = reply
|
|
40
|
+
.slice(last.index + last[0].length)
|
|
41
|
+
.split(/\r?\n/u)
|
|
42
|
+
.map((line) => line.trimEnd())
|
|
43
|
+
while (lines.length > 0 && (lines.at(-1) ?? "").trim().length === 0) {
|
|
44
|
+
lines.pop()
|
|
45
|
+
}
|
|
46
|
+
if (
|
|
47
|
+
lines.length > 0 &&
|
|
48
|
+
blockedLine.test((lines.at(-1) ?? "").trim().replace(/^[`*_\s]+|[`*_\s]+$/gu, ""))
|
|
49
|
+
) {
|
|
50
|
+
lines.pop()
|
|
51
|
+
}
|
|
52
|
+
const text = lines.join("\n").trim()
|
|
53
|
+
return text.length === 0 ? undefined : text.slice(0, sectionChars)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export const notesLimit = 6_000
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* `notes` plus a titled section for `found`; when the result is over `limit`
|
|
60
|
+
* the oldest sections go first, the newest always stays.
|
|
61
|
+
*/
|
|
62
|
+
export const appendNote = (
|
|
63
|
+
notes: string | undefined,
|
|
64
|
+
title: string,
|
|
65
|
+
found: string,
|
|
66
|
+
limit = notesLimit
|
|
67
|
+
): string => {
|
|
68
|
+
// A finding's own headings are flattened: `### ` is this file's section
|
|
69
|
+
// marker, and eviction must never split a section in two.
|
|
70
|
+
const flat = found
|
|
71
|
+
.trim()
|
|
72
|
+
.split(/\r?\n/u)
|
|
73
|
+
.map((line) => line.replace(/^#{1,6}[ \t]*/u, ""))
|
|
74
|
+
.join("\n")
|
|
75
|
+
const sections = [
|
|
76
|
+
...(notes === undefined || notes.trim().length === 0 ? [] : notes.split(/\n\n(?=### )/u)),
|
|
77
|
+
`### ${title}\n${flat}`
|
|
78
|
+
]
|
|
79
|
+
while (sections.length > 1 && sections.join("\n\n").length > limit) {
|
|
80
|
+
sections.shift()
|
|
81
|
+
}
|
|
82
|
+
return sections.join("\n\n")
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** The prompt with the notes in front, or the prompt itself when there are none. */
|
|
86
|
+
export const withNotes = (prompt: string, notes: string | undefined): string =>
|
|
87
|
+
notes === undefined || notes.trim().length === 0
|
|
88
|
+
? prompt
|
|
89
|
+
: [
|
|
90
|
+
"What earlier tasks of this story learned — trust it before exploring:",
|
|
91
|
+
"",
|
|
92
|
+
notes.trim(),
|
|
93
|
+
"",
|
|
94
|
+
"---",
|
|
95
|
+
"",
|
|
96
|
+
prompt
|
|
97
|
+
].join("\n")
|
|
98
|
+
|
|
99
|
+
/** Where a story keeps its carried notes: read before a task, written after it. */
|
|
100
|
+
export interface CarriedNotes {
|
|
101
|
+
readonly read: Effect.Effect<string | undefined, FlowError>
|
|
102
|
+
readonly write: (notes: string) => Effect.Effect<void, FlowError>
|
|
103
|
+
}
|
package/src/Flow.ts
CHANGED
|
@@ -2,6 +2,13 @@ import * as Effect from "effect/Effect"
|
|
|
2
2
|
import type { LlmServiceShape } from "@llm4ts/core/LlmService"
|
|
3
3
|
import { collect } from "@llm4ts/core/Streaming"
|
|
4
4
|
import { withToolActivity } from "./Activity.ts"
|
|
5
|
+
import {
|
|
6
|
+
appendNote,
|
|
7
|
+
findingsIn,
|
|
8
|
+
findingsRequest,
|
|
9
|
+
withNotes,
|
|
10
|
+
type CarriedNotes
|
|
11
|
+
} from "./CarriedNotes.ts"
|
|
5
12
|
import { makeChat, type Chat } from "./Chat.ts"
|
|
6
13
|
import type { FlowContextShape } from "./FlowContext.ts"
|
|
7
14
|
import { FlowAborted, FlowLlmError, type FlowError } from "./FlowError.ts"
|
|
@@ -97,6 +104,13 @@ export interface ImplementPlanOptions {
|
|
|
97
104
|
* or failure. The legacy "judgment" string remains an alias for { mode: "act" }.
|
|
98
105
|
*/
|
|
99
106
|
readonly satisfiedProbe?: "literal" | "judgment" | { readonly mode?: JudgmentMode }
|
|
107
|
+
/**
|
|
108
|
+
* Notes carried from one task to the next (meant for `chatPerTask`, where
|
|
109
|
+
* every task starts cold): the accumulated notes open each task's prompt,
|
|
110
|
+
* the task is asked to end with a Findings section, and what it reports is
|
|
111
|
+
* appended. Omit to carry nothing.
|
|
112
|
+
*/
|
|
113
|
+
readonly carry?: CarriedNotes
|
|
100
114
|
}
|
|
101
115
|
|
|
102
116
|
/** The judgment form of the empty-diff probe: one Truth question over the coder's reply. */
|
|
@@ -193,7 +207,22 @@ export const implementPlanFlow = Effect.fn("@llm4ts/flow/Flow.implementPlan")(fu
|
|
|
193
207
|
// the top of this function: a task prompt only needs that task's own
|
|
194
208
|
// details. `planSoFar`, threaded through by implementTaskLoop, is the
|
|
195
209
|
// single source of truth for completion progress instead.
|
|
196
|
-
yield*
|
|
210
|
+
const notes = options.carry === undefined ? undefined : yield* options.carry.read
|
|
211
|
+
/** What the task's reply learned goes to the carried notes, whichever turn did the work. */
|
|
212
|
+
const keepFindings = (reply: string): Effect.Effect<void, FlowError> =>
|
|
213
|
+
Effect.gen(function* () {
|
|
214
|
+
const found = options.carry === undefined ? undefined : findingsIn(reply)
|
|
215
|
+
if (options.carry !== undefined && found !== undefined) {
|
|
216
|
+
yield* options.carry.write(appendNote(notes, task.title, found))
|
|
217
|
+
}
|
|
218
|
+
})
|
|
219
|
+
yield* keepFindings(
|
|
220
|
+
yield* coder.ask(
|
|
221
|
+
options.carry === undefined
|
|
222
|
+
? plan.taskPrompt(task)
|
|
223
|
+
: `${withNotes(plan.taskPrompt(task), notes)}\n${findingsRequest}`
|
|
224
|
+
)
|
|
225
|
+
)
|
|
197
226
|
const produced = yield* context.git.diffAll
|
|
198
227
|
if (produced.trim().length === 0) {
|
|
199
228
|
// An empty diff is ambiguous: the task may be genuinely satisfied
|
|
@@ -208,6 +237,7 @@ export const implementPlanFlow = Effect.fn("@llm4ts/flow/Flow.implementPlan")(fu
|
|
|
208
237
|
"Otherwise, implement the task now."
|
|
209
238
|
].join("\n")
|
|
210
239
|
)
|
|
240
|
+
yield* keepFindings(confirmation)
|
|
211
241
|
const afterConfirmation = yield* context.git.diffAll
|
|
212
242
|
if (afterConfirmation.trim().length === 0) {
|
|
213
243
|
const judged =
|
package/src/FlowEvents.ts
CHANGED
|
@@ -237,7 +237,12 @@ export class ExecutorLeased extends Schema.TaggedClass<ExecutorLeased>()("Execut
|
|
|
237
237
|
role: Schema.String,
|
|
238
238
|
label: Schema.optionalKey(Schema.String),
|
|
239
239
|
/** Took the role on its own context's coder slot: nobody independent could. */
|
|
240
|
-
borrowed: Schema.optionalKey(Schema.Boolean)
|
|
240
|
+
borrowed: Schema.optionalKey(Schema.Boolean),
|
|
241
|
+
/**
|
|
242
|
+
* Why it borrowed: `nobody` else takes the role (or all are out for the
|
|
243
|
+
* run); `held`: every other executor that could has its slots held by coders.
|
|
244
|
+
*/
|
|
245
|
+
because: Schema.optionalKey(Schema.Literals(["nobody", "held"]))
|
|
241
246
|
}) {}
|
|
242
247
|
|
|
243
248
|
export class ExecutorReleased extends Schema.TaggedClass<ExecutorReleased>()("ExecutorReleased", {
|
|
@@ -294,7 +299,11 @@ export const rosterEventMessage = (event: FlowEvent): string | undefined => {
|
|
|
294
299
|
switch (event._tag) {
|
|
295
300
|
case "ExecutorLeased":
|
|
296
301
|
return event.borrowed === true
|
|
297
|
-
? `roster: ${event.executor} takes ${event.role}${forLabel(event.label)} on its own coder's slot — not independent (
|
|
302
|
+
? `roster: ${event.executor} takes ${event.role}${forLabel(event.label)} on its own coder's slot — not independent (${
|
|
303
|
+
event.because === "held"
|
|
304
|
+
? `every other executor that takes ${event.role} is held by a coder`
|
|
305
|
+
: `no other executor can take ${event.role}`
|
|
306
|
+
})`
|
|
298
307
|
: `roster: ${event.executor} takes ${event.role}${forLabel(event.label)}`
|
|
299
308
|
case "ExecutorExcluded":
|
|
300
309
|
return `roster: ${event.executor} out of the round ${event.reason}`
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
// The repository as a planner and a coder should see it before they look:
|
|
2
|
+
// a deterministic digest of the tracked files — folders with their counts,
|
|
3
|
+
// small folders in full, the package scripts, where the tests live. No model
|
|
4
|
+
// call, computed once per epic, so every story stops rediscovering the
|
|
5
|
+
// layout with `ls`, `find` and `grep` round trips.
|
|
6
|
+
import { cap } from "./Context.ts"
|
|
7
|
+
|
|
8
|
+
export interface OrientationInput {
|
|
9
|
+
/** Tracked files, repo-relative, as `git ls-files` prints them. */
|
|
10
|
+
readonly files: ReadonlyArray<string>
|
|
11
|
+
/** The application's `package.json` text, when there is one. */
|
|
12
|
+
readonly packageJson?: string
|
|
13
|
+
/** Where the application lives: `.` for the repository root, else a subfolder. */
|
|
14
|
+
readonly appDir?: string
|
|
15
|
+
/** Characters the digest may take; `<= 0` leaves it out. */
|
|
16
|
+
readonly budget: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const defaultOrientationChars = 8_000
|
|
20
|
+
|
|
21
|
+
/** Folders never worth a coder's attention, wherever they sit: dependencies and state. */
|
|
22
|
+
const noiseAnywhere = new Set(["node_modules", ".git", ".llm4ts"])
|
|
23
|
+
/** Build output is noise at the top level only: `src/features/build/` is code. */
|
|
24
|
+
const noiseAtRoot = new Set(["dist", "build", "out", "coverage"])
|
|
25
|
+
const noiseFiles = new Set(["pnpm-lock.yaml", "package-lock.json", "yarn.lock", "bun.lockb"])
|
|
26
|
+
|
|
27
|
+
/** Folders deeper than this are summarised by their count. */
|
|
28
|
+
const maxDepth = 3
|
|
29
|
+
/** A folder with this many files or fewer is listed in full. */
|
|
30
|
+
const smallFolder = 12
|
|
31
|
+
const testFile = /\.(test|spec)\.[cm]?[jt]sx?$/u
|
|
32
|
+
|
|
33
|
+
interface Folder {
|
|
34
|
+
readonly path: string
|
|
35
|
+
files: number
|
|
36
|
+
readonly children: Map<string, Folder>
|
|
37
|
+
readonly own: Array<string>
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const folderOf = (path: string): Folder => ({ path, files: 0, children: new Map(), own: [] })
|
|
41
|
+
|
|
42
|
+
const isNoise = (file: string): boolean => {
|
|
43
|
+
const parts = file.split("/")
|
|
44
|
+
return (
|
|
45
|
+
parts.some((part) => noiseAnywhere.has(part)) ||
|
|
46
|
+
(parts.length > 1 && noiseAtRoot.has(parts[0] ?? "")) ||
|
|
47
|
+
noiseFiles.has(parts.at(-1) ?? "")
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const treeOf = (files: ReadonlyArray<string>): Folder => {
|
|
52
|
+
const root = folderOf("")
|
|
53
|
+
for (const file of files) {
|
|
54
|
+
const parts = file.split("/").filter((part) => part.length > 0)
|
|
55
|
+
let folder = root
|
|
56
|
+
folder.files += 1
|
|
57
|
+
for (const part of parts.slice(0, -1)) {
|
|
58
|
+
let child = folder.children.get(part)
|
|
59
|
+
if (child === undefined) {
|
|
60
|
+
child = folderOf(folder.path.length === 0 ? part : `${folder.path}/${part}`)
|
|
61
|
+
folder.children.set(part, child)
|
|
62
|
+
}
|
|
63
|
+
child.files += 1
|
|
64
|
+
folder = child
|
|
65
|
+
}
|
|
66
|
+
folder.own.push(file)
|
|
67
|
+
}
|
|
68
|
+
return root
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const sortedChildren = (folder: Folder): ReadonlyArray<Folder> =>
|
|
72
|
+
[...folder.children.values()].sort((left, right) => left.path.localeCompare(right.path))
|
|
73
|
+
|
|
74
|
+
const folderLine = (folder: Folder, depth: number): string =>
|
|
75
|
+
`${" ".repeat(depth)}${folder.path}/ (${folder.files} ${folder.files === 1 ? "file" : "files"})`
|
|
76
|
+
|
|
77
|
+
/** A small folder in full: its own files, then every subfolder the same way. */
|
|
78
|
+
const expanded = (folder: Folder, depth: number): ReadonlyArray<string> => [
|
|
79
|
+
...[...folder.own].sort().map((file) => `${" ".repeat(depth)}${file}`),
|
|
80
|
+
...sortedChildren(folder).flatMap((child) => [
|
|
81
|
+
folderLine(child, depth),
|
|
82
|
+
...expanded(child, depth + 1)
|
|
83
|
+
])
|
|
84
|
+
]
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* The layout: every folder with its count; a folder of `smallFolder` files or
|
|
88
|
+
* fewer listed in full, a larger one descended into up to `maxDepth`.
|
|
89
|
+
*/
|
|
90
|
+
const layoutLines = (folder: Folder, depth: number): ReadonlyArray<string> =>
|
|
91
|
+
sortedChildren(folder).flatMap((child) => {
|
|
92
|
+
if (child.files <= smallFolder) {
|
|
93
|
+
return [folderLine(child, depth), ...expanded(child, depth + 1)]
|
|
94
|
+
}
|
|
95
|
+
const own =
|
|
96
|
+
child.own.length <= smallFolder
|
|
97
|
+
? [...child.own].sort().map((file) => `${" ".repeat(depth + 1)}${file}`)
|
|
98
|
+
: []
|
|
99
|
+
return [
|
|
100
|
+
folderLine(child, depth),
|
|
101
|
+
...own,
|
|
102
|
+
...(depth + 1 < maxDepth ? layoutLines(child, depth + 1) : [])
|
|
103
|
+
]
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
const scriptsLine = (packageJson: string | undefined): string | undefined => {
|
|
107
|
+
if (packageJson === undefined) {
|
|
108
|
+
return undefined
|
|
109
|
+
}
|
|
110
|
+
let parsed: unknown
|
|
111
|
+
try {
|
|
112
|
+
parsed = JSON.parse(packageJson)
|
|
113
|
+
} catch {
|
|
114
|
+
return undefined
|
|
115
|
+
}
|
|
116
|
+
if (typeof parsed !== "object" || parsed === null || !("scripts" in parsed)) {
|
|
117
|
+
return undefined
|
|
118
|
+
}
|
|
119
|
+
const scripts = parsed.scripts
|
|
120
|
+
if (typeof scripts !== "object" || scripts === null) {
|
|
121
|
+
return undefined
|
|
122
|
+
}
|
|
123
|
+
const entries = Object.entries(scripts).flatMap(([name, command]) =>
|
|
124
|
+
typeof command === "string" ? [`${name}: ${cap(command, 80).text}`] : []
|
|
125
|
+
)
|
|
126
|
+
return entries.length === 0 ? undefined : `Scripts (package.json): ${entries.join("; ")}`
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const testsLine = (files: ReadonlyArray<string>): string | undefined => {
|
|
130
|
+
const counts = new Map<string, number>()
|
|
131
|
+
for (const file of files) {
|
|
132
|
+
if (testFile.test(file) || file.includes("/__tests__/")) {
|
|
133
|
+
const folder = file.split("/").slice(0, -1).join("/") || "."
|
|
134
|
+
counts.set(folder, (counts.get(folder) ?? 0) + 1)
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (counts.size === 0) {
|
|
138
|
+
return undefined
|
|
139
|
+
}
|
|
140
|
+
const shown = [...counts.entries()]
|
|
141
|
+
.sort((left, right) => right[1] - left[1] || left[0].localeCompare(right[0]))
|
|
142
|
+
.slice(0, 8)
|
|
143
|
+
.map(([folder, count]) => `${folder} (${count})`)
|
|
144
|
+
const more = counts.size - shown.length
|
|
145
|
+
return `Tests live beside the code in: ${shown.join(", ")}${more > 0 ? ` and ${more} more folder(s)` : ""}`
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The digest, or `undefined` when there is nothing to say (no tracked files)
|
|
150
|
+
* or no budget. Never longer than `budget`: the head (the layout) and the
|
|
151
|
+
* tail (scripts, tests) survive a cut, the middle of a long listing does not.
|
|
152
|
+
*/
|
|
153
|
+
export const orientationOf = (input: OrientationInput): string | undefined => {
|
|
154
|
+
if (input.budget <= 0) {
|
|
155
|
+
return undefined
|
|
156
|
+
}
|
|
157
|
+
const files = input.files.filter((file) => !isNoise(file))
|
|
158
|
+
if (files.length === 0) {
|
|
159
|
+
return undefined
|
|
160
|
+
}
|
|
161
|
+
const root = treeOf(files)
|
|
162
|
+
const appDir = input.appDir ?? "."
|
|
163
|
+
const text = [
|
|
164
|
+
"## Repository orientation",
|
|
165
|
+
"Tracked files by folder (counts; small folders listed in full) — go straight to the right",
|
|
166
|
+
"place instead of listing directories or searching for where things live.",
|
|
167
|
+
...(appDir === "."
|
|
168
|
+
? []
|
|
169
|
+
: [`The application lives in ${appDir}/ — its package.json, sources and tests.`]),
|
|
170
|
+
"",
|
|
171
|
+
...[...root.own].sort(),
|
|
172
|
+
...layoutLines(root, 0),
|
|
173
|
+
...[scriptsLine(input.packageJson), testsLine(files)].flatMap((line) =>
|
|
174
|
+
line === undefined ? [] : ["", line]
|
|
175
|
+
)
|
|
176
|
+
].join("\n")
|
|
177
|
+
return cap(text, input.budget).text
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* LLM4TS_ORIENTATION_CHARS: how much of the repository digest the planner and
|
|
182
|
+
* every coder see (0 leaves it out); the default otherwise.
|
|
183
|
+
*/
|
|
184
|
+
export const orientationChars = (
|
|
185
|
+
environment: Readonly<Record<string, string | undefined>>
|
|
186
|
+
): { readonly orientationChars?: number } => {
|
|
187
|
+
const raw = environment.LLM4TS_ORIENTATION_CHARS?.trim()
|
|
188
|
+
const value = Number(raw ?? "")
|
|
189
|
+
return raw === undefined || raw.length === 0 || !Number.isInteger(value) || value < 0
|
|
190
|
+
? {}
|
|
191
|
+
: { orientationChars: value }
|
|
192
|
+
}
|