@llm4ts/shell 2.37.0 → 2.38.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/Cli.d.ts +18 -1
- package/dist/Cli.d.ts.map +1 -1
- package/dist/Cli.js +89 -0
- package/dist/Cli.js.map +1 -1
- package/flows/lib/modernize-extract.js +9 -0
- package/flows/modernize-extract.js +17 -8
- package/flows/modernize-pack-check.js +65 -5
- package/flows/modernize-refine.js +4 -5
- package/flows/modernize-survey.js +80 -87
- package/kits/j2ee-nextjs/flows/lib/convert.js +4 -3
- package/kits/j2ee-nextjs/packs/j2ee-nextjs-spa/pack.md +38 -5
- package/kits/mainframe-java/packs/cobol-kafka/pack.md +24 -0
- package/kits/mainframe-java/packs/cobol-springboot/pack.md +24 -0
- package/package.json +4 -4
- package/src/Cli.ts +183 -0
package/dist/Cli.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { Command } from "effect/cli";
|
|
|
6
6
|
import { type CostsOptions } from "@llm4ts/runner/Costs";
|
|
7
7
|
import { type WatchOptions } from "@llm4ts/runner/Watch";
|
|
8
8
|
import { type ProfileOptions } from "@llm4ts/runner/Profile";
|
|
9
|
+
import { type GraphCommand } from "@llm4ts/runner/Graph";
|
|
9
10
|
import { type DiscoveredKit } from "@llm4ts/runner/Kits";
|
|
10
11
|
import { type DiscoveredFlow, type FlowTierPaths } from "./FlowCatalog.ts";
|
|
11
12
|
declare const ShellUsageError_base: Schema.Class<ShellUsageError, Schema.TaggedStruct<"ShellUsage", {
|
|
@@ -74,7 +75,23 @@ export interface ProfileFlags {
|
|
|
74
75
|
}
|
|
75
76
|
/** Turns the `profile` flags into program options; every rejection is a usage error. */
|
|
76
77
|
export declare const profileOptionsFrom: (flags: ProfileFlags, cwd?: string) => Effect.Effect<ProfileOptions, ShellUsageError>;
|
|
77
|
-
|
|
78
|
+
type GraphSubcommand = "build" | "query" | "path" | "closure" | "stats" | "probe";
|
|
79
|
+
interface GraphFlags {
|
|
80
|
+
readonly repo: Option.Option<string>;
|
|
81
|
+
readonly pack: Option.Option<string>;
|
|
82
|
+
readonly format: string;
|
|
83
|
+
readonly kind: Option.Option<string>;
|
|
84
|
+
readonly hops: string;
|
|
85
|
+
readonly max: string;
|
|
86
|
+
readonly all: boolean;
|
|
87
|
+
readonly force: boolean;
|
|
88
|
+
readonly text?: string;
|
|
89
|
+
readonly from?: string;
|
|
90
|
+
readonly to?: string;
|
|
91
|
+
readonly program?: string;
|
|
92
|
+
}
|
|
93
|
+
export declare const graphCommandFrom: (sub: GraphSubcommand, flags: GraphFlags, cwd?: string) => Effect.Effect<GraphCommand, ShellUsageError>;
|
|
94
|
+
export declare const shellCommand: Command.Command<"llm4ts", {} | {}, {}, import("./FlowLaunch.ts").FlowLaunchError | ShellUsageError | ShellActionError | import("@llm4ts/runner/Watch").WatchTargetMissing | import("@llm4ts/runner/Graph").GraphProgramError, import("effect/cli/Prompt").Environment>;
|
|
78
95
|
export declare const runShellCommand: (argv: ReadonlyArray<string>) => Effect.Effect<void, unknown, Command.Environment>;
|
|
79
96
|
export {};
|
|
80
97
|
//# sourceMappingURL=Cli.d.ts.map
|
package/dist/Cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cli.d.ts","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAY,OAAO,EAAQ,MAAM,YAAY,CAAA;AAEpD,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAA;AAS7B,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"Cli.d.ts","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":"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"}
|
package/dist/Cli.js
CHANGED
|
@@ -15,6 +15,7 @@ import { pauseExecutor, renderRosterReport, resumeExecutor, rosterReport } from
|
|
|
15
15
|
import { nodePlainFileStore } from "@llm4ts/runner/NodePlainFileStore";
|
|
16
16
|
import { makeWatchProgram, nodeTraceSources, nodeWatchDependencies } from "@llm4ts/runner/Watch";
|
|
17
17
|
import { makeProfileProgram } from "@llm4ts/runner/Profile";
|
|
18
|
+
import { makeGraphProgram, nodeGraphDependencies } from "@llm4ts/runner/Graph";
|
|
18
19
|
import { idleAfterFrom } from "@llm4ts/runner/AgentTree";
|
|
19
20
|
import { describeExclusion } from "@llm4ts/flow/Roster";
|
|
20
21
|
import { builtinKitsDir, discoverKits, kitTierPaths } from "@llm4ts/runner/Kits";
|
|
@@ -364,6 +365,93 @@ const rosterCommand = Command.make("roster", { repo: rosterRepo }, (config) => E
|
|
|
364
365
|
const report = yield* rosterReport(rosterSource(config.repo));
|
|
365
366
|
yield* Console.log(renderRosterReport(report));
|
|
366
367
|
})).pipe(Command.withDescription("The executor roster (ADR 0019): executors, their roles and slots, and who is out of the round"), Command.withSubcommands([rosterPauseCommand, rosterResumeCommand]));
|
|
368
|
+
// ---- graph (ADR 0030) -------------------------------------------------------
|
|
369
|
+
const graphFormats = ["text", "json", "mermaid", "dot"];
|
|
370
|
+
const positiveInt = (name, raw) => {
|
|
371
|
+
const value = Number.parseInt(raw, 10);
|
|
372
|
+
return Number.isInteger(value) && value > 0
|
|
373
|
+
? Effect.succeed(value)
|
|
374
|
+
: Effect.fail(new ShellUsageError({ message: `${name} must be a positive integer, got '${raw}'` }));
|
|
375
|
+
};
|
|
376
|
+
export const graphCommandFrom = (sub, flags, cwd = process.cwd()) => Effect.gen(function* () {
|
|
377
|
+
const repo = resolve(cwd, Option.getOrElse(flags.repo, () => "."));
|
|
378
|
+
const pack = Option.isSome(flags.pack) ? { pack: flags.pack.value } : {};
|
|
379
|
+
const format = graphFormats.find((candidate) => candidate === flags.format);
|
|
380
|
+
if (format === undefined) {
|
|
381
|
+
return yield* new ShellUsageError({
|
|
382
|
+
message: `format must be one of ${graphFormats.join(", ")}, got '${flags.format}'`
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
switch (sub) {
|
|
386
|
+
case "build":
|
|
387
|
+
return { _tag: "build", repo, ...pack };
|
|
388
|
+
case "stats":
|
|
389
|
+
return { _tag: "stats", repo, ...pack, format };
|
|
390
|
+
case "probe":
|
|
391
|
+
return { _tag: "probe", repo, ...pack, format };
|
|
392
|
+
case "query":
|
|
393
|
+
return {
|
|
394
|
+
_tag: "query",
|
|
395
|
+
repo,
|
|
396
|
+
...pack,
|
|
397
|
+
text: flags.text ?? "",
|
|
398
|
+
...(Option.isSome(flags.kind) ? { kind: flags.kind.value } : {}),
|
|
399
|
+
hops: yield* positiveInt("hops", flags.hops),
|
|
400
|
+
format,
|
|
401
|
+
all: flags.all,
|
|
402
|
+
force: flags.force
|
|
403
|
+
};
|
|
404
|
+
case "path":
|
|
405
|
+
return {
|
|
406
|
+
_tag: "path",
|
|
407
|
+
repo,
|
|
408
|
+
...pack,
|
|
409
|
+
from: flags.from ?? "",
|
|
410
|
+
to: flags.to ?? "",
|
|
411
|
+
max: yield* positiveInt("max", flags.max),
|
|
412
|
+
format,
|
|
413
|
+
force: flags.force
|
|
414
|
+
};
|
|
415
|
+
case "closure":
|
|
416
|
+
return {
|
|
417
|
+
_tag: "closure",
|
|
418
|
+
repo,
|
|
419
|
+
...pack,
|
|
420
|
+
program: flags.program ?? "",
|
|
421
|
+
max: yield* positiveInt("max", flags.max),
|
|
422
|
+
format,
|
|
423
|
+
force: flags.force
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
const graphFlags = {
|
|
428
|
+
repo: Flag.String("repo").pipe(Flag.optional, Flag.withDescription("The legacy repository (defaults to the current directory)")),
|
|
429
|
+
pack: Flag.String("pack").pipe(Flag.optional, Flag.withDescription("Pack name or directory (defaults to LLM4TS_PACK, then cobol-springboot)")),
|
|
430
|
+
format: Flag.String("format").pipe(Flag.withDefault("text"), Flag.withDescription("text | json | mermaid | dot")),
|
|
431
|
+
kind: Flag.String("kind").pipe(Flag.optional, Flag.withDescription("Only nodes of this kind (query)")),
|
|
432
|
+
hops: Flag.String("hops").pipe(Flag.withDefault("1"), Flag.withDescription("Neighbourhood radius (query)")),
|
|
433
|
+
max: Flag.String("max").pipe(Flag.withDefault("12"), Flag.withDescription("Max hops (path) or files (closure)")),
|
|
434
|
+
all: Flag.Boolean("all").pipe(Flag.withDefault(false), Flag.withDescription("Render the whole estate instead of the neighbourhood")),
|
|
435
|
+
force: Flag.Boolean("force").pipe(Flag.withDefault(false), Flag.withDescription("Render mermaid above the 150-node cap"))
|
|
436
|
+
};
|
|
437
|
+
const runGraph = (sub, flags) => Effect.gen(function* () {
|
|
438
|
+
const command = yield* graphCommandFrom(sub, flags);
|
|
439
|
+
yield* Console.log(yield* makeGraphProgram(command, nodeGraphDependencies(process.env, shellTierPaths())));
|
|
440
|
+
});
|
|
441
|
+
const graphBuildCommand = Command.make("build", graphFlags, (flags) => runGraph("build", flags)).pipe(Command.withDescription("Scan the estate with the pack's rules and write .llm4ts/graph/<pack>.json"));
|
|
442
|
+
const graphQueryCommand = Command.make("query", { text: Argument.String("text"), ...graphFlags }, (flags) => runGraph("query", flags)).pipe(Command.withDescription("Nodes matching a text and their neighbourhood"));
|
|
443
|
+
const graphPathCommand = Command.make("path", { from: Argument.String("from"), to: Argument.String("to"), ...graphFlags }, (flags) => runGraph("path", flags)).pipe(Command.withDescription("Shortest path between two node references, either direction"));
|
|
444
|
+
const graphClosureCommand = Command.make("closure", { program: Argument.String("program"), ...graphFlags }, (flags) => runGraph("closure", flags)).pipe(Command.withDescription("A program's dependency closure as the analyst sees it"));
|
|
445
|
+
const graphStatsCommand = Command.make("stats", graphFlags, (flags) => runGraph("stats", flags)).pipe(Command.withDescription("Nodes, edges, mechanisms, origins and unresolved items by kind"));
|
|
446
|
+
const graphProbeCommand = Command.make("probe", graphFlags, (flags) => runGraph("probe", flags)).pipe(Command.withDescription("Evaluate the pack's '## Probe:' flows"));
|
|
447
|
+
const graphCommand = Command.make("graph", {}, () => Console.log("llm4ts graph <build|query|path|closure|stats|probe> --repo <legacy> [--pack <name>]")).pipe(Command.withDescription("The legacy estate's code graph (ADR 0030): build it, query it, draw it"), Command.withSubcommands([
|
|
448
|
+
graphBuildCommand,
|
|
449
|
+
graphQueryCommand,
|
|
450
|
+
graphPathCommand,
|
|
451
|
+
graphClosureCommand,
|
|
452
|
+
graphStatsCommand,
|
|
453
|
+
graphProbeCommand
|
|
454
|
+
]));
|
|
367
455
|
const doctorCommand = Command.make("doctor", {}, () => Effect.gen(function* () {
|
|
368
456
|
const report = yield* makeDoctorProgram();
|
|
369
457
|
yield* Console.log(report.trimEnd());
|
|
@@ -385,6 +473,7 @@ export const shellCommand = Command.make("llm4ts", {}, () => Effect.gen(function
|
|
|
385
473
|
costsCommand,
|
|
386
474
|
watchCommand,
|
|
387
475
|
profileCommand,
|
|
476
|
+
graphCommand,
|
|
388
477
|
rosterCommand,
|
|
389
478
|
doctorCommand
|
|
390
479
|
]));
|
package/dist/Cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cli.js","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Cli.js","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ import { Sample } from "@llm4ts/core/eval/Eval";
|
|
|
8
8
|
import { judge } from "@llm4ts/core/eval/Judge";
|
|
9
9
|
import { capped, withShrink } from "@llm4ts/flow/Context";
|
|
10
10
|
import { FlowEvents } from "@llm4ts/flow/FlowEvents";
|
|
11
|
+
import { closureView } from "@llm4ts/flow/GraphQuery";
|
|
12
|
+
import { renderGraphMermaid } from "@llm4ts/flow/GraphRender";
|
|
11
13
|
import { ReviewIssue } from "@llm4ts/flow/Review";
|
|
12
14
|
import { cachedReview } from "@llm4ts/flow/ReviewCache";
|
|
13
15
|
import { FlowLlmError, Info, ReviewResult, makeChat, reviewFingerprint } from "@llm4ts/runner";
|
|
@@ -24,6 +26,13 @@ export const analystTurns = () => positiveEnvInt("LLM4TS_ANALYST_TURNS", 48);
|
|
|
24
26
|
* than this gets a bounded, visible subset rather than an unbounded read.
|
|
25
27
|
*/
|
|
26
28
|
export const maxClosureFiles = () => positiveEnvInt("LLM4TS_MAX_CLOSURE_FILES", 40);
|
|
29
|
+
/** The program's bounded closure as a diagram, placed above the analyst's spec (ADR 0030). */
|
|
30
|
+
export const closureSection = (graph, program) => {
|
|
31
|
+
const view = closureView(graph, program, maxClosureFiles());
|
|
32
|
+
return view.edges.length === 0
|
|
33
|
+
? "## Dependency closure\n\n(no resolved dependencies)"
|
|
34
|
+
: `## Dependency closure\n\n\`\`\`mermaid\n${renderGraphMermaid(view, graph)}\n\`\`\``;
|
|
35
|
+
};
|
|
27
36
|
/** `cobol/ACCTXFR.cbl` → `ACCTXFR`: the program name keying every per-program artifact. */
|
|
28
37
|
export const programName = (relativePath) => {
|
|
29
38
|
const base = relativePath.slice(relativePath.lastIndexOf("/") + 1);
|
|
@@ -39,10 +39,11 @@ import { loadPatternCards, matchingPatternCards } from "@llm4ts/flow/Patterns";
|
|
|
39
39
|
import { legacySourceWorkspaceLimits, workspaceLimitsFromEnv } from "@llm4ts/flow/Workspace";
|
|
40
40
|
import { ReviewIssue } from "@llm4ts/flow/Review";
|
|
41
41
|
import { coverageReport, coverageUnits, features, matchingFiles, specSchemaIssues } from "@llm4ts/flow/SpecChecks";
|
|
42
|
-
import { SurveyGraph, closureFor
|
|
42
|
+
import { SurveyGraph, closureFor } from "@llm4ts/flow/Survey";
|
|
43
|
+
import { freshGraph, graphCachePath } from "@llm4ts/flow/GraphCache";
|
|
43
44
|
import { withDraftApproval, requireApproval } from "@llm4ts/flow/Approval";
|
|
44
45
|
import { ProgramArtifacts, ProgramUnit, extractProgramsResumably, programArtifactPaths } from "@llm4ts/flow/Artifacts";
|
|
45
|
-
import { ModDir, analystSystem, analystTurns, fixTurn, globalFixAsk, judgeIssueProgram, makeProgramJudge, maxClosureFiles, positiveEnvInt, programArtifactsJsonSchema, programAsk, programFixAsk, programName, readmeFor, wavePrograms } from "./lib/modernize-extract.js";
|
|
46
|
+
import { ModDir, analystSystem, analystTurns, fixTurn, globalFixAsk, judgeIssueProgram, makeProgramJudge, maxClosureFiles, positiveEnvInt, programArtifactsJsonSchema, programAsk, programFixAsk, programName, readmeFor, wavePrograms, closureSection } from "./lib/modernize-extract.js";
|
|
46
47
|
const MaxRounds = 3;
|
|
47
48
|
/**
|
|
48
49
|
* Programs extracted (and judged) at once. The programs of a wave are
|
|
@@ -109,16 +110,19 @@ const program = Effect.gen(function* () {
|
|
|
109
110
|
...(yield* loadKitPatternCards(opened))
|
|
110
111
|
];
|
|
111
112
|
// The dependency graph the analysts' include closures are resolved
|
|
112
|
-
// from
|
|
113
|
-
|
|
113
|
+
// from: the cached code graph (ADR 0030), rebuilt from the pack's rules
|
|
114
|
+
// when a file changed, with the survey's LLM edges carried along.
|
|
115
|
+
const graph = yield* stage(context.events, "graph", pack.graph.edges.length === 0 && pack.graph.joins.length === 0
|
|
114
116
|
? context.events
|
|
115
117
|
.publish(Info.make({
|
|
116
|
-
message: "pack has no
|
|
118
|
+
message: "pack has no graph rules — the analyst gets no resolved closure"
|
|
117
119
|
}))
|
|
118
120
|
.pipe(Effect.as(SurveyGraph.make({ nodes: [], edges: [] })))
|
|
119
|
-
:
|
|
120
|
-
|
|
121
|
-
|
|
121
|
+
: freshGraph(files, graphCachePath(input.workDir, pack.name), pack, repo).pipe(Effect.tap((fresh) => context.events.publish(Info.make({
|
|
122
|
+
message: fresh.reused
|
|
123
|
+
? "graph cache reused"
|
|
124
|
+
: "graph rebuilt (scanner layer); LLM edges carried where their evidence is unchanged"
|
|
125
|
+
}))), Effect.map((fresh) => fresh.graph)));
|
|
122
126
|
// One structured analyst call per program, resumable per program: a rerun
|
|
123
127
|
// skips every program whose spec exists, and each program gets its own
|
|
124
128
|
// commit scoped to its four files. LLM4TS_EXTRACT_CONCURRENCY runs that
|
|
@@ -138,6 +142,11 @@ const program = Effect.gen(function* () {
|
|
|
138
142
|
message: `extracting ${target.sourcePath} (${ordinal}/${units.length})`
|
|
139
143
|
}));
|
|
140
144
|
return yield* structuredAndPublish(context.coder, context.events, `${system}\n\n${programAsk(pack, target.sourcePath, closureFor(graph, target.name, maxClosureFiles()))}`, ProgramArtifacts, programArtifactsJsonSchema, "coder").pipe(
|
|
145
|
+
// The spec opens with the program's closure diagram (ADR 0030).
|
|
146
|
+
Effect.map((artifacts) => ProgramArtifacts.make({
|
|
147
|
+
...artifacts,
|
|
148
|
+
spec: `${closureSection(graph, target.name)}\n\n${artifacts.spec}`
|
|
149
|
+
})),
|
|
141
150
|
// A turn-limit trip is the wedged-agent tail, not a
|
|
142
151
|
// failure: keep whatever the analyst already produced.
|
|
143
152
|
Effect.catchIf((error) => error.cause?._tag === "TurnLimitError", (error) => Effect.gen(function* () {
|
|
@@ -10,19 +10,23 @@
|
|
|
10
10
|
// 2. estate — the files `sources:` selects (minus `exclude:`), the files
|
|
11
11
|
// `programs:` selects, and for every `## Coverage:` and `## Survey:` rule
|
|
12
12
|
// the units it captures, with a sample of each so a regex typo is
|
|
13
|
-
// visible at a glance
|
|
13
|
+
// visible at a glance; then the code graph (ADR 0030): what every
|
|
14
|
+
// `## Node:`, `## Edge:` and `## Join:` rule produced, the unresolved
|
|
15
|
+
// items by reason, and one verdict line per `## Probe:`.
|
|
14
16
|
// 3. verdict — hard failures (the pack does not load, `sources:` or
|
|
15
|
-
// `programs:` match nothing
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
// warnings and the flow exits 0.
|
|
17
|
+
// `programs:` match nothing, a probe is broken or names an unknown node)
|
|
18
|
+
// abort with exit code 1; likely mistakes (a rule capturing no unit, a
|
|
19
|
+
// missing phase prompt, a scaffold path that does not exist, no reviewer
|
|
20
|
+
// lens, no judge dimension) are listed as warnings and the flow exits 0.
|
|
19
21
|
//
|
|
20
22
|
// Run: LLM4TS_PACK=packs/my-pack modernize-pack-check --repo ~/estates/legacy
|
|
21
23
|
import { existsSync } from "node:fs";
|
|
22
24
|
import { join } from "node:path";
|
|
23
25
|
import * as Effect from "effect/Effect";
|
|
24
26
|
import { FlowAborted, Info, makeNodeWorkspace, mock, openPack, resolveFlowInput, runFlowMain, runNode, stage } from "@llm4ts/runner";
|
|
27
|
+
import { graphStats, probeResults } from "@llm4ts/flow/GraphQuery";
|
|
25
28
|
import { coverageUnits, matchingFiles } from "@llm4ts/flow/SpecChecks";
|
|
29
|
+
import { buildCodeGraph, nodeId, nodeKind } from "@llm4ts/flow/Survey";
|
|
26
30
|
import { legacySourceWorkspaceLimits, workspaceLimitsFromEnv } from "@llm4ts/flow/Workspace";
|
|
27
31
|
/** Prompt sidecars the modernization phases read, with the phase that reads each. */
|
|
28
32
|
const phasePrompts = [
|
|
@@ -42,6 +46,8 @@ const sample = (units) => units.length === 0
|
|
|
42
46
|
: units.slice(0, sampleSize).join(", ") +
|
|
43
47
|
(units.length > sampleSize ? ` … +${units.length - sampleSize} more` : "");
|
|
44
48
|
const plural = (count, noun, many = `${noun}s`) => `${count} ${count === 1 ? noun : many}`;
|
|
49
|
+
const probeFrom = (path) => path[0]?.from ?? "";
|
|
50
|
+
const probeTo = (path) => path.at(-1)?.to ?? "";
|
|
45
51
|
const program = Effect.gen(function* () {
|
|
46
52
|
const input = yield* resolveFlowInput("Check the pack against the estate");
|
|
47
53
|
yield* runNode({
|
|
@@ -147,6 +153,60 @@ const program = Effect.gen(function* () {
|
|
|
147
153
|
});
|
|
148
154
|
yield* report("coverage", pack.coverage);
|
|
149
155
|
yield* report("survey", pack.survey);
|
|
156
|
+
// The code graph (ADR 0030): rule by rule, then the holes, then the probes.
|
|
157
|
+
const build = yield* buildCodeGraph(repo, {
|
|
158
|
+
sources: sourcesRegex,
|
|
159
|
+
...(pack.exclude === undefined ? {} : { exclude: pack.exclude }),
|
|
160
|
+
coverage: pack.coverage,
|
|
161
|
+
rules: pack.graph
|
|
162
|
+
});
|
|
163
|
+
const stats = graphStats(build.graph);
|
|
164
|
+
for (const rule of pack.graph.nodes) {
|
|
165
|
+
const count = stats.nodes[rule.kind] ?? 0;
|
|
166
|
+
const samples = build.graph.nodes
|
|
167
|
+
.filter((node) => nodeKind(node) === rule.kind)
|
|
168
|
+
.map((node) => node.name);
|
|
169
|
+
yield* say(`node '${rule.kind}': ${plural(count, "node")} — ${sample(samples)}`);
|
|
170
|
+
if (count === 0) {
|
|
171
|
+
warnings.push(`node rule '${rule.kind}' matched nothing: files '${rule.files}', pattern '${rule.pattern}'`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const duplicates = build.graph.nodes.filter((node) => nodeId(node).includes("~"));
|
|
175
|
+
if (duplicates.length > 0) {
|
|
176
|
+
warnings.push(`${plural(duplicates.length, "node")} share a name within one file (ids with '~n'): ${sample(duplicates.map(nodeId))}`);
|
|
177
|
+
}
|
|
178
|
+
for (const rule of pack.graph.edges.filter((rule) => rule.fromKind !== "file" || rule.toKind !== "file")) {
|
|
179
|
+
const count = stats.edges[rule.kind] ?? 0;
|
|
180
|
+
yield* say(`edge '${rule.kind}': ${plural(count, "edge")}`);
|
|
181
|
+
if (count === 0) {
|
|
182
|
+
warnings.push(`edge rule '${rule.kind}' produced no edge`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
for (const rule of pack.graph.joins) {
|
|
186
|
+
const count = build.graph.edges.filter((edge) => edge.kind === rule.kind && (edge.mechanism ?? "").startsWith("join:")).length;
|
|
187
|
+
yield* say(`join '${rule.kind}' (${rule.fromKind}.${rule.fromAttr} → ${rule.toKind}.${rule.toAttr}, ${rule.match}, scope ${rule.scope}): ${plural(count, "edge")}`);
|
|
188
|
+
if (count === 0) {
|
|
189
|
+
warnings.push(`join '${rule.kind}' produced no edge`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const byReason = Object.entries(stats.unresolved)
|
|
193
|
+
.map(([reason, count]) => `${reason} ${count}`)
|
|
194
|
+
.join(", ");
|
|
195
|
+
yield* say(`unresolved: ${build.graph.unresolved.length === 0 ? "none" : byReason}`);
|
|
196
|
+
for (const item of build.graph.unresolved.slice(0, 20)) {
|
|
197
|
+
yield* say(` ${item.reason} [${item.rule}] ${item.node}${item.reference === undefined ? "" : ` → ${item.reference}`} (${item.file}:${item.line})`);
|
|
198
|
+
}
|
|
199
|
+
for (const result of probeResults(build.graph, pack.graph.probes)) {
|
|
200
|
+
const via = result.path === undefined
|
|
201
|
+
? ""
|
|
202
|
+
: result.path.length === 0
|
|
203
|
+
? " (same node)"
|
|
204
|
+
: ` (${probeFrom(result.path)} → ${probeTo(result.path)} via ${result.path.map((edge) => edge.kind).join(" → ")})`;
|
|
205
|
+
yield* say(`probe '${result.probe.name}': ${result.status}${via}`);
|
|
206
|
+
if (result.status !== "ok") {
|
|
207
|
+
failures.push(`probe '${result.probe.name}' is ${result.status} (${result.probe.from} → ${result.probe.to})`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
150
210
|
}));
|
|
151
211
|
yield* stage(context.events, "verdict", Effect.gen(function* () {
|
|
152
212
|
for (const warning of warnings) {
|
|
@@ -37,7 +37,8 @@ import { structuredAndPublish } from "@llm4ts/flow/Flow";
|
|
|
37
37
|
import { FlowEvents } from "@llm4ts/flow/FlowEvents";
|
|
38
38
|
import { Task } from "@llm4ts/flow/Plan";
|
|
39
39
|
import { coverageUnits, matchingFiles } from "@llm4ts/flow/SpecChecks";
|
|
40
|
-
import { SurveyGraph, closureFor
|
|
40
|
+
import { SurveyGraph, closureFor } from "@llm4ts/flow/Survey";
|
|
41
|
+
import { freshGraph, graphCachePath } from "@llm4ts/flow/GraphCache";
|
|
41
42
|
import { withDraftApproval } from "@llm4ts/flow/Approval";
|
|
42
43
|
import { legacySourceWorkspaceLimits, workspaceLimitsFromEnv } from "@llm4ts/flow/Workspace";
|
|
43
44
|
import { FlowAborted, Info, Plan, asReadOnly, coderFromEnv, defaultPlanInstructions, makeNodeWorkspace, nodePlainFileStore, openPack, planFrom, resolveFlowInput, runFlowMain, runNode, stage, withTurnLimit } from "@llm4ts/runner";
|
|
@@ -112,11 +113,9 @@ const program = Effect.gen(function* () {
|
|
|
112
113
|
const writeDecisions = Effect.gen(function* () {
|
|
113
114
|
yield* files.writeAtomic(decisionsPath, renderDecisions(decisions));
|
|
114
115
|
});
|
|
115
|
-
const graph = yield* stage(context.events, "graph", pack.
|
|
116
|
+
const graph = yield* stage(context.events, "graph", pack.graph.edges.length === 0 && pack.graph.joins.length === 0
|
|
116
117
|
? Effect.succeed(SurveyGraph.make({ nodes: [], edges: [] }))
|
|
117
|
-
:
|
|
118
|
-
...(pack.exclude === undefined ? {} : { exclude: pack.exclude })
|
|
119
|
-
}));
|
|
118
|
+
: freshGraph(files, graphCachePath(input.workDir, pack.name), pack, repo).pipe(Effect.map((fresh) => fresh.graph)));
|
|
120
119
|
const system = analystSystem(pack);
|
|
121
120
|
const limit = budget();
|
|
122
121
|
const judgeProgram = makeProgramJudge({
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// Legacy modernization phase 0: inventory the estate, refine its dependency graph, triage, and propose a human-approved wave plan.
|
|
2
2
|
//
|
|
3
3
|
// Runs rooted at the LEGACY repository (`--repo <legacy>`). Deterministic first:
|
|
4
|
-
// the graph comes from the pack's `sources:` regex and `## Survey:`
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
4
|
+
// the graph comes from the pack's `sources:` regex and its `## Survey:` /
|
|
5
|
+
// `## Node:` / `## Edge:` / `## Join:` rules (no LLM; ADR 0030), cached under
|
|
6
|
+
// `.llm4ts/graph/<pack>.json` by file hash. What the scanner could not resolve
|
|
7
|
+
// becomes a bounded worklist for a read-only reasoning pass (attr fills and
|
|
8
|
+
// edges between EXISTING nodes, each verified against the cited source line),
|
|
9
|
+
// and finally triage classifies every unit rewrite | retire | wrap and slices
|
|
10
|
+
// the rewrites into dependency-coherent waves. The wave plan lands
|
|
9
11
|
// at docs/modernization/wave-plan.md with an UNCHECKED approval marker — a
|
|
10
12
|
// human reviews, flips `- [x] Approved`, and only then does modernize-extract
|
|
11
13
|
// start (LLM4TS_WAVE=<name> scopes extraction to one wave).
|
|
@@ -27,9 +29,13 @@ import { FlowAborted, Info, asReadOnly, coderFromEnv, makeNodeWorkspace, nodePla
|
|
|
27
29
|
import { FlowEvents } from "@llm4ts/flow/FlowEvents";
|
|
28
30
|
import { structuredAndPublish } from "@llm4ts/flow/Flow";
|
|
29
31
|
import { loadBenchRecords, renderBenchReport } from "@llm4ts/flow/BenchReport";
|
|
30
|
-
import {
|
|
32
|
+
import { nodeKind, renderSurveyGraphJson, renderSurveyInventory, surveyTriagePrompt } from "@llm4ts/flow/Survey";
|
|
31
33
|
import { discoveryOverflowAdvice, legacySourceWorkspaceLimits, workspaceLimitsFromEnv } from "@llm4ts/flow/Workspace";
|
|
32
34
|
import { withDraftApproval } from "@llm4ts/flow/Approval";
|
|
35
|
+
import { freshGraph, graphCachePath, updateGraphCache } from "@llm4ts/flow/GraphCache";
|
|
36
|
+
import { WorklistAnswer, mergeWorklist, renderWorklistReport, verifyWorklistAnswer, worklistAnswerJsonSchema, worklistBatches, worklistOf, worklistPrompt } from "@llm4ts/flow/GraphWorklist";
|
|
37
|
+
import { wholeView } from "@llm4ts/flow/GraphQuery";
|
|
38
|
+
import { renderClusterDiagrams, renderEntryPaths, renderGraphDot } from "@llm4ts/flow/GraphRender";
|
|
33
39
|
const ModDir = "docs/modernization";
|
|
34
40
|
class NodeTriage extends Schema.Class("NodeTriage")({
|
|
35
41
|
name: Schema.String,
|
|
@@ -80,63 +86,21 @@ const surveyOutcomeJsonSchema = {
|
|
|
80
86
|
},
|
|
81
87
|
required: ["triage", "waves", "notes"]
|
|
82
88
|
};
|
|
83
|
-
class RefinedEdge extends Schema.Class("RefinedEdge")({
|
|
84
|
-
from: Schema.String,
|
|
85
|
-
to: Schema.String,
|
|
86
|
-
kind: Schema.String,
|
|
87
|
-
evidence: Schema.String
|
|
88
|
-
}) {
|
|
89
|
-
}
|
|
90
|
-
class GraphRefinement extends Schema.Class("GraphRefinement")({
|
|
91
|
-
edges: Schema.Array(RefinedEdge),
|
|
92
|
-
notes: Schema.Array(Schema.String)
|
|
93
|
-
}) {
|
|
94
|
-
}
|
|
95
|
-
const graphRefinementJsonSchema = {
|
|
96
|
-
type: "object",
|
|
97
|
-
properties: {
|
|
98
|
-
edges: {
|
|
99
|
-
type: "array",
|
|
100
|
-
items: {
|
|
101
|
-
type: "object",
|
|
102
|
-
properties: {
|
|
103
|
-
from: { type: "string" },
|
|
104
|
-
to: { type: "string" },
|
|
105
|
-
kind: { type: "string" },
|
|
106
|
-
evidence: { type: "string" }
|
|
107
|
-
},
|
|
108
|
-
required: ["from", "to", "kind", "evidence"]
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
notes: { type: "array", items: { type: "string" } }
|
|
112
|
-
},
|
|
113
|
-
required: ["edges", "notes"]
|
|
114
|
-
};
|
|
115
89
|
const tableCell = (text) => text.split(/\r?\n/).join(" ").replaceAll("|", "\\|");
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
`${kept.length} of ${refinement.edges.length} proposed edge(s) merged into \`graph.json\` (kind prefixed \`llm-\`).`,
|
|
131
|
-
"Each carries the source statement that establishes it — verify before trusting a wave built on it.",
|
|
132
|
-
"",
|
|
133
|
-
"| From | To | Kind | Status | Evidence |",
|
|
134
|
-
"| ---- | -- | ---- | ------ | -------- |",
|
|
135
|
-
...rows,
|
|
136
|
-
"",
|
|
137
|
-
...notes
|
|
138
|
-
].join("\n") + "\n");
|
|
139
|
-
};
|
|
90
|
+
/** inventory.md (units, cluster diagrams, entry paths), graph.json and graph.dot. */
|
|
91
|
+
const writeGraphArtifacts = (repo, pack, graph) => Effect.gen(function* () {
|
|
92
|
+
const programs = graph.nodes
|
|
93
|
+
.filter((node) => nodeKind(node) === "file")
|
|
94
|
+
.map((node) => node.name);
|
|
95
|
+
const inventory = [
|
|
96
|
+
renderSurveyInventory(graph),
|
|
97
|
+
renderClusterDiagrams(graph, pack.consolidate ?? { cluster: [], context: [] }, programs),
|
|
98
|
+
renderEntryPaths(graph)
|
|
99
|
+
].join("\n");
|
|
100
|
+
yield* repo.write(join(ModDir, "inventory.md"), inventory);
|
|
101
|
+
yield* repo.write(join(ModDir, "graph.json"), renderSurveyGraphJson(graph));
|
|
102
|
+
yield* repo.write(join(ModDir, "graph.dot"), renderGraphDot(wholeView(graph), graph));
|
|
103
|
+
});
|
|
140
104
|
const renderWavePlan = (outcome, graph, projection) => {
|
|
141
105
|
const triageRows = [...outcome.triage]
|
|
142
106
|
.sort((left, right) => left.name.localeCompare(right.name))
|
|
@@ -182,16 +146,15 @@ const program = Effect.gen(function* () {
|
|
|
182
146
|
launchDir: input.workspace,
|
|
183
147
|
flowDir: import.meta.dirname
|
|
184
148
|
}));
|
|
185
|
-
if (pack.
|
|
149
|
+
if (pack.graph.edges.length === 0 && pack.graph.joins.length === 0) {
|
|
186
150
|
return yield* FlowAborted.make({
|
|
187
|
-
message: `pack '${pack.name}' has no '## Survey:' sections — add the
|
|
188
|
-
"
|
|
151
|
+
message: `pack '${pack.name}' has no '## Survey:', '## Edge:' or '## Join:' sections — add the ` +
|
|
152
|
+
"dependency-edge rules (CALL/COPY/EXEC PGM, ajax → servlet…) the graph should be built from"
|
|
189
153
|
});
|
|
190
154
|
}
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}).pipe(
|
|
155
|
+
const cachePath = graphCachePath(input.workDir, pack.name);
|
|
156
|
+
const fresh = yield* stage(context.events, "graph", Effect.gen(function* () {
|
|
157
|
+
const built = yield* freshGraph(nodePlainFileStore, cachePath, pack, repo).pipe(
|
|
195
158
|
// The cap is a guard against runaway trees, not a verdict on the
|
|
196
159
|
// estate: name the three knobs instead of a bare limit number.
|
|
197
160
|
Effect.catchTag("WorkspaceLimit", (error) => Effect.fail(error.operation === "discovery results"
|
|
@@ -199,33 +162,63 @@ const program = Effect.gen(function* () {
|
|
|
199
162
|
message: `${input.workDir}: ${discoveryOverflowAdvice(limits)}`
|
|
200
163
|
})
|
|
201
164
|
: error)));
|
|
202
|
-
yield* repo
|
|
203
|
-
yield*
|
|
204
|
-
|
|
165
|
+
yield* writeGraphArtifacts(repo, pack, built.graph);
|
|
166
|
+
yield* context.events.publish(Info.make({
|
|
167
|
+
message: `${built.graph.nodes.length} node(s), ${built.graph.edges.length} edge(s), ` +
|
|
168
|
+
`${built.graph.unresolved.length} unresolved` +
|
|
169
|
+
(built.reused ? " (graph cache reused)" : "")
|
|
170
|
+
}));
|
|
205
171
|
return built;
|
|
206
172
|
}));
|
|
173
|
+
const graph = fresh.graph;
|
|
207
174
|
const refined = yield* stage(context.events, "graph refine", refineDisabled(process.env)
|
|
208
175
|
? context.events
|
|
209
176
|
.publish(Info.make({ message: "LLM4TS_GRAPH_REFINE=off — regex graph ships unrefined" }))
|
|
210
177
|
.pipe(Effect.as(graph))
|
|
211
178
|
: Effect.gen(function* () {
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
179
|
+
const contents = new Map();
|
|
180
|
+
const load = (path) => contents.has(path)
|
|
181
|
+
? Effect.void
|
|
182
|
+
: repo.read(path).pipe(Effect.orElseSucceed(() => ""), Effect.map((text) => void contents.set(path, text)));
|
|
183
|
+
const read = (path) => contents.get(path);
|
|
184
|
+
for (const file of new Set(graph.unresolved.map((item) => item.file))) {
|
|
185
|
+
yield* load(file);
|
|
186
|
+
}
|
|
187
|
+
const items = worklistOf(graph, read, pack.graph.worklistMax, pack.graph);
|
|
188
|
+
if (items.length === 0) {
|
|
189
|
+
yield* context.events.publish(Info.make({ message: "nothing unresolved — no LLM pass needed" }));
|
|
190
|
+
return graph;
|
|
191
|
+
}
|
|
192
|
+
let merged = graph;
|
|
193
|
+
const accepted = [];
|
|
194
|
+
const notes = [];
|
|
195
|
+
for (const batch of worklistBatches(items, pack.graph.batchSize)) {
|
|
196
|
+
const answer = yield* withShrink("graph worklist", (cap) => Effect.gen(function* () {
|
|
197
|
+
const prompt = yield* capped("worklist", worklistPrompt(batch, pack.prompt("survey-refine")), cap);
|
|
198
|
+
return yield* structuredAndPublish(context.reasoning, context.events, prompt, WorklistAnswer, worklistAnswerJsonSchema);
|
|
199
|
+
})).pipe(Effect.provideService(FlowEvents, context.events));
|
|
200
|
+
for (const file of new Set([
|
|
201
|
+
...answer.edges.map((edge) => edge.evidence.file),
|
|
202
|
+
...answer.attrs.map((attr) => attr.evidence.file)
|
|
203
|
+
])) {
|
|
204
|
+
yield* load(file);
|
|
205
|
+
}
|
|
206
|
+
const verified = verifyWorklistAnswer(answer, merged, read);
|
|
207
|
+
merged = mergeWorklist(merged, verified, pack.graph);
|
|
208
|
+
accepted.push(verified);
|
|
209
|
+
notes.push(...answer.notes);
|
|
225
210
|
}
|
|
211
|
+
const all = {
|
|
212
|
+
edges: accepted.flatMap((verified) => verified.edges),
|
|
213
|
+
fills: accepted.flatMap((verified) => verified.fills),
|
|
214
|
+
dropped: accepted.flatMap((verified) => verified.dropped)
|
|
215
|
+
};
|
|
216
|
+
yield* repo.write(join(ModDir, "graph-refine.md"), renderWorklistReport(items, all, notes));
|
|
217
|
+
yield* updateGraphCache(nodePlainFileStore, cachePath, fresh.cache, merged);
|
|
218
|
+
yield* writeGraphArtifacts(repo, pack, merged);
|
|
226
219
|
yield* context.events.publish(Info.make({
|
|
227
|
-
message: `${
|
|
228
|
-
|
|
220
|
+
message: `${all.edges.length} edge(s) and ${all.fills.length} fill(s) accepted from ` +
|
|
221
|
+
`${items.length} unresolved item(s); ${all.dropped.length} dropped`
|
|
229
222
|
}));
|
|
230
223
|
return merged;
|
|
231
224
|
}));
|
|
@@ -19,7 +19,8 @@ import { openApiFor, openApiForFeature, parsePageSpec, renderPageSpec } from "@l
|
|
|
19
19
|
import { loadPatternCards, matchingPatternCards } from "@llm4ts/flow/Patterns";
|
|
20
20
|
import { Task } from "@llm4ts/flow/Plan";
|
|
21
21
|
import { judgeAllPrograms } from "@llm4ts/flow/ProgramJudge";
|
|
22
|
-
import { closureFor
|
|
22
|
+
import { closureFor } from "@llm4ts/flow/Survey";
|
|
23
|
+
import { freshGraph, graphCachePath } from "@llm4ts/flow/GraphCache";
|
|
23
24
|
import { estimatedUsageOptionsFromEnv, makeEstimatedUsageMeter } from "@llm4ts/flow/EstimatedUsage";
|
|
24
25
|
import { legacySourceWorkspaceLimits, workspaceLimitsFromEnv } from "@llm4ts/flow/Workspace";
|
|
25
26
|
export const positiveEnvInt = (environment, name, fallback) => {
|
|
@@ -213,7 +214,7 @@ const legacyEvidence = Effect.fn("convert.legacyEvidence")(function* (deps, page
|
|
|
213
214
|
const source = sourcePath === undefined
|
|
214
215
|
? ""
|
|
215
216
|
: yield* deps.legacy.read(sourcePath).pipe(Effect.orElseSucceed(() => ""));
|
|
216
|
-
const graph = yield*
|
|
217
|
+
const graph = (yield* freshGraph(deps.files, graphCachePath(deps.legacyDir, deps.pack.name), deps.pack, deps.legacy)).graph;
|
|
217
218
|
const closure = closureFor(graph, page, positiveEnvInt(deps.environment, "LLM4TS_MAX_CLOSURE_FILES", 12));
|
|
218
219
|
const parts = [];
|
|
219
220
|
if (sourcePath !== undefined) {
|
|
@@ -480,7 +481,7 @@ export const convertFeature = Effect.fn("convert.feature")(function* (deps, feat
|
|
|
480
481
|
for (const page of pages) {
|
|
481
482
|
specs.set(page, yield* readSpec(deps, page));
|
|
482
483
|
}
|
|
483
|
-
const graph = yield*
|
|
484
|
+
const graph = (yield* freshGraph(deps.files, graphCachePath(deps.legacyDir, deps.pack.name), deps.pack, deps.legacy)).graph;
|
|
484
485
|
const order = navigationOrder({ ...feature, programs: pages }, graph, deps.pack.consolidate ?? { cluster: [], context: [] });
|
|
485
486
|
const contractPath = `contracts/${feature.id}.openapi.yaml`;
|
|
486
487
|
const contract = yield* openApiForFeature(feature, order.map((page) => specs.get(page)?.spec).filter((spec) => spec !== undefined));
|
|
@@ -49,15 +49,48 @@ unit: <jsp:include page="([^"]+)"
|
|
|
49
49
|
files: .*web\.xml
|
|
50
50
|
unit: <servlet-class>[a-z.]*\.([A-Za-z0-9]+)</servlet-class>
|
|
51
51
|
|
|
52
|
-
##
|
|
52
|
+
## Node: ajax-call
|
|
53
53
|
|
|
54
|
-
files: .*\.jsp
|
|
55
|
-
|
|
54
|
+
files: .*\.(jsp|js)
|
|
55
|
+
pattern: (?:["']?url["']?\s*:\s*|\$\.(?:get|post|getJSON)\(\s*)['"](?<name>[^'"]+)['"]
|
|
56
|
+
attrs: url=name
|
|
56
57
|
|
|
57
|
-
##
|
|
58
|
+
## Node: form
|
|
58
59
|
|
|
59
60
|
files: .*\.jsp
|
|
60
|
-
|
|
61
|
+
pattern: <(?:[a-z]+:)?[Ff][Oo][Rr][Mm]\b[^>]*\b[Aa][Cc][Tt][Ii][Oo][Nn]=["'](?<name>[^"']+)["']
|
|
62
|
+
attrs: url=name
|
|
63
|
+
|
|
64
|
+
## Node: servlet-mapping
|
|
65
|
+
|
|
66
|
+
files: .*web\.xml
|
|
67
|
+
pattern: <servlet-mapping>\s*<servlet-name>(?<name>[^<]+)</servlet-name>\s*<url-pattern>(?<url>[^<]+)</url-pattern>
|
|
68
|
+
descriptor: yes
|
|
69
|
+
|
|
70
|
+
## Node: servlet-decl
|
|
71
|
+
|
|
72
|
+
files: .*web\.xml
|
|
73
|
+
pattern: <servlet>(?:(?!</servlet>)[\s\S])*?<servlet-name>(?<name>[^<]+)</servlet-name>(?:(?!</servlet>)[\s\S])*?<servlet-class>(?:[a-z0-9_]+\.)*(?<class>[A-Za-z0-9_]+)</servlet-class>
|
|
74
|
+
descriptor: yes
|
|
75
|
+
anchor: class
|
|
76
|
+
|
|
77
|
+
## Join: jsp-ajax-target
|
|
78
|
+
|
|
79
|
+
from: ajax-call.url
|
|
80
|
+
to: servlet-mapping.url
|
|
81
|
+
match: url
|
|
82
|
+
|
|
83
|
+
## Join: jsp-form-action
|
|
84
|
+
|
|
85
|
+
from: form.url
|
|
86
|
+
to: servlet-mapping.url
|
|
87
|
+
match: url
|
|
88
|
+
|
|
89
|
+
## Join: servlet-wiring
|
|
90
|
+
|
|
91
|
+
from: servlet-mapping.name
|
|
92
|
+
to: servlet-decl.name
|
|
93
|
+
scope: file
|
|
61
94
|
|
|
62
95
|
## Consolidate
|
|
63
96
|
|
|
@@ -49,3 +49,27 @@ unit: ^ {6}[ ]*COPY +([A-Z0-9]+)
|
|
|
49
49
|
|
|
50
50
|
files: .*\.(jcl|JCL)
|
|
51
51
|
unit: EXEC +PGM=([A-Z0-9]+)
|
|
52
|
+
|
|
53
|
+
## Node: cobol-section
|
|
54
|
+
|
|
55
|
+
files: .*\.(cbl|CBL)
|
|
56
|
+
pattern: ^ {7}(?<name>[A-Z0-9][A-Z0-9-]*) +SECTION\.
|
|
57
|
+
|
|
58
|
+
## Node: cobol-paragraph
|
|
59
|
+
|
|
60
|
+
files: .*\.(cbl|CBL)
|
|
61
|
+
pattern: ^ {7}(?<name>\d{4}-[A-Z0-9-]+)\.
|
|
62
|
+
|
|
63
|
+
## Edge: performs
|
|
64
|
+
|
|
65
|
+
files: .*\.(cbl|CBL)
|
|
66
|
+
pattern: PERFORM +(?<to>\d{4}-[A-Z0-9-]+)(?: +THRU +(?<thru>\d{4}-[A-Z0-9-]+))?
|
|
67
|
+
from: cobol-paragraph
|
|
68
|
+
to: cobol-paragraph
|
|
69
|
+
|
|
70
|
+
## Edge: goes-to
|
|
71
|
+
|
|
72
|
+
files: .*\.(cbl|CBL)
|
|
73
|
+
pattern: GO +TO +(?<to>\d{4}-[A-Z0-9-]+)
|
|
74
|
+
from: cobol-paragraph
|
|
75
|
+
to: cobol-paragraph
|
|
@@ -50,6 +50,30 @@ unit: ^ {6}[ ]*COPY +([A-Z0-9]+)
|
|
|
50
50
|
files: .*\.(jcl|JCL)
|
|
51
51
|
unit: EXEC +PGM=([A-Z0-9]+)
|
|
52
52
|
|
|
53
|
+
## Node: cobol-section
|
|
54
|
+
|
|
55
|
+
files: .*\.(cbl|CBL)
|
|
56
|
+
pattern: ^ {7}(?<name>[A-Z0-9][A-Z0-9-]*) +SECTION\.
|
|
57
|
+
|
|
58
|
+
## Node: cobol-paragraph
|
|
59
|
+
|
|
60
|
+
files: .*\.(cbl|CBL)
|
|
61
|
+
pattern: ^ {7}(?<name>\d{4}-[A-Z0-9-]+)\.
|
|
62
|
+
|
|
63
|
+
## Edge: performs
|
|
64
|
+
|
|
65
|
+
files: .*\.(cbl|CBL)
|
|
66
|
+
pattern: PERFORM +(?<to>\d{4}-[A-Z0-9-]+)(?: +THRU +(?<thru>\d{4}-[A-Z0-9-]+))?
|
|
67
|
+
from: cobol-paragraph
|
|
68
|
+
to: cobol-paragraph
|
|
69
|
+
|
|
70
|
+
## Edge: goes-to
|
|
71
|
+
|
|
72
|
+
files: .*\.(cbl|CBL)
|
|
73
|
+
pattern: GO +TO +(?<to>\d{4}-[A-Z0-9-]+)
|
|
74
|
+
from: cobol-paragraph
|
|
75
|
+
to: cobol-paragraph
|
|
76
|
+
|
|
53
77
|
## Consolidate
|
|
54
78
|
|
|
55
79
|
- cluster: calls, exec-pgm
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llm4ts/shell",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.38.0",
|
|
4
4
|
"description": "Interactive shell and CLI for llm4ts: flow discovery, run-a-flow, and view",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@effect/platform-node": "4.0.0",
|
|
54
54
|
"@effect/platform-node-shared": "4.0.0",
|
|
55
|
-
"@llm4ts/core": "2.
|
|
56
|
-
"@llm4ts/
|
|
57
|
-
"@llm4ts/
|
|
55
|
+
"@llm4ts/core": "2.38.0",
|
|
56
|
+
"@llm4ts/runner": "2.38.0",
|
|
57
|
+
"@llm4ts/flow": "2.38.0"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"effect": "4.0.0"
|
package/src/Cli.ts
CHANGED
|
@@ -30,6 +30,12 @@ import {
|
|
|
30
30
|
type WatchOptions
|
|
31
31
|
} from "@llm4ts/runner/Watch"
|
|
32
32
|
import { makeProfileProgram, type ProfileOptions } from "@llm4ts/runner/Profile"
|
|
33
|
+
import {
|
|
34
|
+
makeGraphProgram,
|
|
35
|
+
nodeGraphDependencies,
|
|
36
|
+
type GraphCommand,
|
|
37
|
+
type GraphFormat
|
|
38
|
+
} from "@llm4ts/runner/Graph"
|
|
33
39
|
import { idleAfterFrom } from "@llm4ts/runner/AgentTree"
|
|
34
40
|
import { describeExclusion } from "@llm4ts/flow/Roster"
|
|
35
41
|
import { builtinKitsDir, discoverKits, kitTierPaths, type DiscoveredKit } from "@llm4ts/runner/Kits"
|
|
@@ -721,6 +727,182 @@ const rosterCommand = Command.make("roster", { repo: rosterRepo }, (config) =>
|
|
|
721
727
|
Command.withSubcommands([rosterPauseCommand, rosterResumeCommand])
|
|
722
728
|
)
|
|
723
729
|
|
|
730
|
+
// ---- graph (ADR 0030) -------------------------------------------------------
|
|
731
|
+
|
|
732
|
+
const graphFormats: ReadonlyArray<GraphFormat> = ["text", "json", "mermaid", "dot"]
|
|
733
|
+
|
|
734
|
+
type GraphSubcommand = "build" | "query" | "path" | "closure" | "stats" | "probe"
|
|
735
|
+
|
|
736
|
+
interface GraphFlags {
|
|
737
|
+
readonly repo: Option.Option<string>
|
|
738
|
+
readonly pack: Option.Option<string>
|
|
739
|
+
readonly format: string
|
|
740
|
+
readonly kind: Option.Option<string>
|
|
741
|
+
readonly hops: string
|
|
742
|
+
readonly max: string
|
|
743
|
+
readonly all: boolean
|
|
744
|
+
readonly force: boolean
|
|
745
|
+
readonly text?: string
|
|
746
|
+
readonly from?: string
|
|
747
|
+
readonly to?: string
|
|
748
|
+
readonly program?: string
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
const positiveInt = (name: string, raw: string): Effect.Effect<number, ShellUsageError> => {
|
|
752
|
+
const value = Number.parseInt(raw, 10)
|
|
753
|
+
return Number.isInteger(value) && value > 0
|
|
754
|
+
? Effect.succeed(value)
|
|
755
|
+
: Effect.fail(
|
|
756
|
+
new ShellUsageError({ message: `${name} must be a positive integer, got '${raw}'` })
|
|
757
|
+
)
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
export const graphCommandFrom = (
|
|
761
|
+
sub: GraphSubcommand,
|
|
762
|
+
flags: GraphFlags,
|
|
763
|
+
cwd: string = process.cwd()
|
|
764
|
+
): Effect.Effect<GraphCommand, ShellUsageError> =>
|
|
765
|
+
Effect.gen(function* () {
|
|
766
|
+
const repo = resolve(
|
|
767
|
+
cwd,
|
|
768
|
+
Option.getOrElse(flags.repo, () => ".")
|
|
769
|
+
)
|
|
770
|
+
const pack = Option.isSome(flags.pack) ? { pack: flags.pack.value } : {}
|
|
771
|
+
const format = graphFormats.find((candidate) => candidate === flags.format)
|
|
772
|
+
if (format === undefined) {
|
|
773
|
+
return yield* new ShellUsageError({
|
|
774
|
+
message: `format must be one of ${graphFormats.join(", ")}, got '${flags.format}'`
|
|
775
|
+
})
|
|
776
|
+
}
|
|
777
|
+
switch (sub) {
|
|
778
|
+
case "build":
|
|
779
|
+
return { _tag: "build", repo, ...pack }
|
|
780
|
+
case "stats":
|
|
781
|
+
return { _tag: "stats", repo, ...pack, format }
|
|
782
|
+
case "probe":
|
|
783
|
+
return { _tag: "probe", repo, ...pack, format }
|
|
784
|
+
case "query":
|
|
785
|
+
return {
|
|
786
|
+
_tag: "query",
|
|
787
|
+
repo,
|
|
788
|
+
...pack,
|
|
789
|
+
text: flags.text ?? "",
|
|
790
|
+
...(Option.isSome(flags.kind) ? { kind: flags.kind.value } : {}),
|
|
791
|
+
hops: yield* positiveInt("hops", flags.hops),
|
|
792
|
+
format,
|
|
793
|
+
all: flags.all,
|
|
794
|
+
force: flags.force
|
|
795
|
+
}
|
|
796
|
+
case "path":
|
|
797
|
+
return {
|
|
798
|
+
_tag: "path",
|
|
799
|
+
repo,
|
|
800
|
+
...pack,
|
|
801
|
+
from: flags.from ?? "",
|
|
802
|
+
to: flags.to ?? "",
|
|
803
|
+
max: yield* positiveInt("max", flags.max),
|
|
804
|
+
format,
|
|
805
|
+
force: flags.force
|
|
806
|
+
}
|
|
807
|
+
case "closure":
|
|
808
|
+
return {
|
|
809
|
+
_tag: "closure",
|
|
810
|
+
repo,
|
|
811
|
+
...pack,
|
|
812
|
+
program: flags.program ?? "",
|
|
813
|
+
max: yield* positiveInt("max", flags.max),
|
|
814
|
+
format,
|
|
815
|
+
force: flags.force
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
})
|
|
819
|
+
|
|
820
|
+
const graphFlags = {
|
|
821
|
+
repo: Flag.String("repo").pipe(
|
|
822
|
+
Flag.optional,
|
|
823
|
+
Flag.withDescription("The legacy repository (defaults to the current directory)")
|
|
824
|
+
),
|
|
825
|
+
pack: Flag.String("pack").pipe(
|
|
826
|
+
Flag.optional,
|
|
827
|
+
Flag.withDescription("Pack name or directory (defaults to LLM4TS_PACK, then cobol-springboot)")
|
|
828
|
+
),
|
|
829
|
+
format: Flag.String("format").pipe(
|
|
830
|
+
Flag.withDefault("text"),
|
|
831
|
+
Flag.withDescription("text | json | mermaid | dot")
|
|
832
|
+
),
|
|
833
|
+
kind: Flag.String("kind").pipe(
|
|
834
|
+
Flag.optional,
|
|
835
|
+
Flag.withDescription("Only nodes of this kind (query)")
|
|
836
|
+
),
|
|
837
|
+
hops: Flag.String("hops").pipe(
|
|
838
|
+
Flag.withDefault("1"),
|
|
839
|
+
Flag.withDescription("Neighbourhood radius (query)")
|
|
840
|
+
),
|
|
841
|
+
max: Flag.String("max").pipe(
|
|
842
|
+
Flag.withDefault("12"),
|
|
843
|
+
Flag.withDescription("Max hops (path) or files (closure)")
|
|
844
|
+
),
|
|
845
|
+
all: Flag.Boolean("all").pipe(
|
|
846
|
+
Flag.withDefault(false),
|
|
847
|
+
Flag.withDescription("Render the whole estate instead of the neighbourhood")
|
|
848
|
+
),
|
|
849
|
+
force: Flag.Boolean("force").pipe(
|
|
850
|
+
Flag.withDefault(false),
|
|
851
|
+
Flag.withDescription("Render mermaid above the 150-node cap")
|
|
852
|
+
)
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
const runGraph = (sub: GraphSubcommand, flags: GraphFlags) =>
|
|
856
|
+
Effect.gen(function* () {
|
|
857
|
+
const command = yield* graphCommandFrom(sub, flags)
|
|
858
|
+
yield* Console.log(
|
|
859
|
+
yield* makeGraphProgram(command, nodeGraphDependencies(process.env, shellTierPaths()))
|
|
860
|
+
)
|
|
861
|
+
})
|
|
862
|
+
|
|
863
|
+
const graphBuildCommand = Command.make("build", graphFlags, (flags) =>
|
|
864
|
+
runGraph("build", flags)
|
|
865
|
+
).pipe(
|
|
866
|
+
Command.withDescription(
|
|
867
|
+
"Scan the estate with the pack's rules and write .llm4ts/graph/<pack>.json"
|
|
868
|
+
)
|
|
869
|
+
)
|
|
870
|
+
const graphQueryCommand = Command.make(
|
|
871
|
+
"query",
|
|
872
|
+
{ text: Argument.String("text"), ...graphFlags },
|
|
873
|
+
(flags) => runGraph("query", flags)
|
|
874
|
+
).pipe(Command.withDescription("Nodes matching a text and their neighbourhood"))
|
|
875
|
+
const graphPathCommand = Command.make(
|
|
876
|
+
"path",
|
|
877
|
+
{ from: Argument.String("from"), to: Argument.String("to"), ...graphFlags },
|
|
878
|
+
(flags) => runGraph("path", flags)
|
|
879
|
+
).pipe(Command.withDescription("Shortest path between two node references, either direction"))
|
|
880
|
+
const graphClosureCommand = Command.make(
|
|
881
|
+
"closure",
|
|
882
|
+
{ program: Argument.String("program"), ...graphFlags },
|
|
883
|
+
(flags) => runGraph("closure", flags)
|
|
884
|
+
).pipe(Command.withDescription("A program's dependency closure as the analyst sees it"))
|
|
885
|
+
const graphStatsCommand = Command.make("stats", graphFlags, (flags) =>
|
|
886
|
+
runGraph("stats", flags)
|
|
887
|
+
).pipe(Command.withDescription("Nodes, edges, mechanisms, origins and unresolved items by kind"))
|
|
888
|
+
const graphProbeCommand = Command.make("probe", graphFlags, (flags) =>
|
|
889
|
+
runGraph("probe", flags)
|
|
890
|
+
).pipe(Command.withDescription("Evaluate the pack's '## Probe:' flows"))
|
|
891
|
+
|
|
892
|
+
const graphCommand = Command.make("graph", {}, () =>
|
|
893
|
+
Console.log("llm4ts graph <build|query|path|closure|stats|probe> --repo <legacy> [--pack <name>]")
|
|
894
|
+
).pipe(
|
|
895
|
+
Command.withDescription("The legacy estate's code graph (ADR 0030): build it, query it, draw it"),
|
|
896
|
+
Command.withSubcommands([
|
|
897
|
+
graphBuildCommand,
|
|
898
|
+
graphQueryCommand,
|
|
899
|
+
graphPathCommand,
|
|
900
|
+
graphClosureCommand,
|
|
901
|
+
graphStatsCommand,
|
|
902
|
+
graphProbeCommand
|
|
903
|
+
])
|
|
904
|
+
)
|
|
905
|
+
|
|
724
906
|
const doctorCommand = Command.make("doctor", {}, () =>
|
|
725
907
|
Effect.gen(function* () {
|
|
726
908
|
const report = yield* makeDoctorProgram()
|
|
@@ -751,6 +933,7 @@ export const shellCommand = Command.make("llm4ts", {}, () =>
|
|
|
751
933
|
costsCommand,
|
|
752
934
|
watchCommand,
|
|
753
935
|
profileCommand,
|
|
936
|
+
graphCommand,
|
|
754
937
|
rosterCommand,
|
|
755
938
|
doctorCommand
|
|
756
939
|
])
|