@momentiq/dark-factory-cli 2.1.0 → 2.2.1
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/adapters/static-schema-lint.js +1 -1
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/onboard.d.ts +64 -1
- package/dist/commands/onboard.d.ts.map +1 -1
- package/dist/commands/onboard.js +268 -53
- package/dist/commands/onboard.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +20 -0
- package/dist/doctor.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/onboard.d.ts +6 -0
- package/dist/mcp/tools/onboard.d.ts.map +1 -0
- package/dist/mcp/tools/onboard.js +115 -0
- package/dist/mcp/tools/onboard.js.map +1 -0
- package/dist/onboard/analyzers/ci.d.ts.map +1 -1
- package/dist/onboard/analyzers/ci.js +32 -0
- package/dist/onboard/analyzers/ci.js.map +1 -1
- package/dist/onboard/analyzers/lockfile.d.ts.map +1 -1
- package/dist/onboard/analyzers/lockfile.js +154 -74
- package/dist/onboard/analyzers/lockfile.js.map +1 -1
- package/dist/onboard/apply-plan.d.ts +29 -0
- package/dist/onboard/apply-plan.d.ts.map +1 -0
- package/dist/onboard/apply-plan.js +80 -0
- package/dist/onboard/apply-plan.js.map +1 -0
- package/dist/onboard/auto-profile.d.ts +3 -0
- package/dist/onboard/auto-profile.d.ts.map +1 -0
- package/dist/onboard/auto-profile.js +20 -0
- package/dist/onboard/auto-profile.js.map +1 -0
- package/dist/onboard/generate-plan.d.ts +18 -0
- package/dist/onboard/generate-plan.d.ts.map +1 -0
- package/dist/onboard/generate-plan.js +72 -0
- package/dist/onboard/generate-plan.js.map +1 -0
- package/dist/onboard/llm-client.d.ts +45 -0
- package/dist/onboard/llm-client.d.ts.map +1 -0
- package/dist/onboard/llm-client.js +101 -0
- package/dist/onboard/llm-client.js.map +1 -0
- package/dist/onboard/prompts/scaffold.md +93 -0
- package/dist/onboard/prompts.d.ts +13 -0
- package/dist/onboard/prompts.d.ts.map +1 -0
- package/dist/onboard/prompts.js +54 -0
- package/dist/onboard/prompts.js.map +1 -0
- package/dist/onboard/scaffold-schema.d.ts +194 -0
- package/dist/onboard/scaffold-schema.d.ts.map +1 -0
- package/dist/onboard/scaffold-schema.js +73 -0
- package/dist/onboard/scaffold-schema.js.map +1 -0
- package/dist/onboard/schema.d.ts +10 -0
- package/dist/onboard/schema.d.ts.map +1 -1
- package/dist/onboard/schema.js +23 -1
- package/dist/onboard/schema.js.map +1 -1
- package/dist/onboard/seeders/adr.d.ts +3 -0
- package/dist/onboard/seeders/adr.d.ts.map +1 -0
- package/dist/onboard/seeders/adr.js +212 -0
- package/dist/onboard/seeders/adr.js.map +1 -0
- package/dist/onboard/seeders/agent-review-config/cloud.canonical.json +22 -0
- package/dist/onboard/seeders/agent-review-config/local.canonical.json +21 -0
- package/dist/onboard/seeders/agent-review-config.d.ts +3 -0
- package/dist/onboard/seeders/agent-review-config.d.ts.map +1 -0
- package/dist/onboard/seeders/agent-review-config.js +38 -0
- package/dist/onboard/seeders/agent-review-config.js.map +1 -0
- package/dist/onboard/seeders/cycle1-bootstrap.d.ts +3 -0
- package/dist/onboard/seeders/cycle1-bootstrap.d.ts.map +1 -0
- package/dist/onboard/seeders/cycle1-bootstrap.js +76 -0
- package/dist/onboard/seeders/cycle1-bootstrap.js.map +1 -0
- package/dist/onboard/seeders/index.d.ts +47 -0
- package/dist/onboard/seeders/index.d.ts.map +1 -0
- package/dist/onboard/seeders/index.js +37 -0
- package/dist/onboard/seeders/index.js.map +1 -0
- package/dist/onboard/seeders/runbook.d.ts +13 -0
- package/dist/onboard/seeders/runbook.d.ts.map +1 -0
- package/dist/onboard/seeders/runbook.js +144 -0
- package/dist/onboard/seeders/runbook.js.map +1 -0
- package/dist/onboard/seeders/templates/adr.md.tmpl +26 -0
- package/dist/onboard/seeders/templates/cycle1-bootstrap.md.tmpl +64 -0
- package/dist/onboard/seeders/templates/runbook.md.tmpl +26 -0
- package/dist/onboard/template-loader.d.ts +20 -0
- package/dist/onboard/template-loader.d.ts.map +1 -0
- package/dist/onboard/template-loader.js +152 -0
- package/dist/onboard/template-loader.js.map +1 -0
- package/dist/onboard/template-ref.d.ts +15 -0
- package/dist/onboard/template-ref.d.ts.map +1 -0
- package/dist/onboard/template-ref.js +45 -0
- package/dist/onboard/template-ref.js.map +1 -0
- package/dist/onboard/validate.d.ts +19 -0
- package/dist/onboard/validate.d.ts.map +1 -0
- package/dist/onboard/validate.js +127 -0
- package/dist/onboard/validate.js.map +1 -0
- package/dist/onboard/writers/dry-run-renderer.d.ts +6 -0
- package/dist/onboard/writers/dry-run-renderer.d.ts.map +1 -0
- package/dist/onboard/writers/dry-run-renderer.js +88 -0
- package/dist/onboard/writers/dry-run-renderer.js.map +1 -0
- package/dist/onboard/writers/emit.d.ts +6 -0
- package/dist/onboard/writers/emit.d.ts.map +1 -0
- package/dist/onboard/writers/emit.js +29 -0
- package/dist/onboard/writers/emit.js.map +1 -0
- package/dist/onboard/writers/merge.d.ts +16 -0
- package/dist/onboard/writers/merge.d.ts.map +1 -0
- package/dist/onboard/writers/merge.js +142 -0
- package/dist/onboard/writers/merge.js.map +1 -0
- package/dist/onboard/writers/pr-writer.d.ts +44 -0
- package/dist/onboard/writers/pr-writer.d.ts.map +1 -0
- package/dist/onboard/writers/pr-writer.js +104 -0
- package/dist/onboard/writers/pr-writer.js.map +1 -0
- package/dist/onboard/writers/skip.d.ts +9 -0
- package/dist/onboard/writers/skip.d.ts.map +1 -0
- package/dist/onboard/writers/skip.js +9 -0
- package/dist/onboard/writers/skip.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// packages/cli/src/mcp/tools/onboard.ts
|
|
2
|
+
//
|
|
3
|
+
// Cycle 15 Phase C — `df_onboard {target, mode}` MCP tool.
|
|
4
|
+
//
|
|
5
|
+
// Delegates EVERYTHING beyond analysis-only to `cmdOnboard()` from
|
|
6
|
+
// `src/commands/onboard.ts` (Task 4.5) so the MCP path returns the SAME
|
|
7
|
+
// merged plan as the CLI path. The MCP tool MUST NOT re-assemble a plan
|
|
8
|
+
// from seeders alone — that would skip Phase B's LLM-emitted CLAUDE.md
|
|
9
|
+
// and break Task 5 metric 1 through the MCP path.
|
|
10
|
+
//
|
|
11
|
+
// Per-mode `destructiveHint` annotation is set on the response (NOT on
|
|
12
|
+
// the tool registration) because it varies per call:
|
|
13
|
+
// - analysis-only / dry-run → false (read-only / in-memory)
|
|
14
|
+
// - apply / pr → true (writes to working tree / opens PR)
|
|
15
|
+
//
|
|
16
|
+
// Tool-registration `openWorldHint: true` applies to ALL modes —
|
|
17
|
+
// analysis reads the filesystem; pr reaches GitHub via gh.
|
|
18
|
+
import { z } from "zod";
|
|
19
|
+
import { analyze } from "../../onboard/analyze.js";
|
|
20
|
+
import { cmdOnboard } from "../../commands/onboard.js";
|
|
21
|
+
function isDestructive(mode) {
|
|
22
|
+
return mode === "apply" || mode === "pr";
|
|
23
|
+
}
|
|
24
|
+
function renderMarkdownSummary(input) {
|
|
25
|
+
if ("analysis" in input.sc) {
|
|
26
|
+
const a = input.sc.analysis;
|
|
27
|
+
return [
|
|
28
|
+
`**df_onboard** (mode=analysis-only)`,
|
|
29
|
+
`- canonicalName: ${a.canonicalName || "(unknown)"}`,
|
|
30
|
+
`- stacks: ${a.stacks.map((s) => s.language).join(", ") || "(none)"}`,
|
|
31
|
+
`- services: ${a.services.length}`,
|
|
32
|
+
`- decisions: ${a.decisions.length}`,
|
|
33
|
+
`- analyzerErrors: ${a.analyzerErrors.length}`,
|
|
34
|
+
].join("\n");
|
|
35
|
+
}
|
|
36
|
+
const p = input.sc;
|
|
37
|
+
return [
|
|
38
|
+
`**df_onboard** (mode=${input.mode}, dryRun=${p.dryRun}, applied=${p.applied})`,
|
|
39
|
+
`- files in plan: ${p.plan.files.length}`,
|
|
40
|
+
p.branchName ? `- branch: ${p.branchName}` : null,
|
|
41
|
+
]
|
|
42
|
+
.filter((line) => Boolean(line))
|
|
43
|
+
.join("\n");
|
|
44
|
+
}
|
|
45
|
+
export function registerOnboardTool(server, _opts = {}) {
|
|
46
|
+
server.registerTool("df_onboard", {
|
|
47
|
+
title: "Dark Factory onboard",
|
|
48
|
+
description: "Run `df onboard` on a target repo. Modes: analysis-only (Phase A — emit RepoAnalysis only), " +
|
|
49
|
+
"dry-run (Phase B+C — emit merged ScaffoldPlan without writing), apply (Phase B+C — write files " +
|
|
50
|
+
"to working tree), pr (Phase B+C — branch + commit + open a PR via gh). 'apply' and 'pr' mutate " +
|
|
51
|
+
"the working tree; their per-call response carries `annotations.destructiveHint: true`.",
|
|
52
|
+
inputSchema: {
|
|
53
|
+
target: z
|
|
54
|
+
.string()
|
|
55
|
+
.describe("Absolute path to the target repo's working tree."),
|
|
56
|
+
mode: z
|
|
57
|
+
.enum(["analysis-only", "dry-run", "apply", "pr"])
|
|
58
|
+
.describe("Operation mode. 'analysis-only' is read-only; 'dry-run' computes a plan but writes nothing; " +
|
|
59
|
+
"'apply' writes files in place; 'pr' writes to a fresh branch and opens a PR."),
|
|
60
|
+
},
|
|
61
|
+
outputSchema: {
|
|
62
|
+
analysis: z
|
|
63
|
+
.unknown()
|
|
64
|
+
.optional()
|
|
65
|
+
.describe("Present when mode='analysis-only' — the RepoAnalysis JSON."),
|
|
66
|
+
plan: z
|
|
67
|
+
.unknown()
|
|
68
|
+
.optional()
|
|
69
|
+
.describe("Present when mode != 'analysis-only' — the merged ScaffoldPlan."),
|
|
70
|
+
dryRun: z.boolean().optional(),
|
|
71
|
+
applied: z.boolean().optional(),
|
|
72
|
+
branchName: z.string().nullable().optional(),
|
|
73
|
+
},
|
|
74
|
+
annotations: {
|
|
75
|
+
// openWorldHint applies to ALL modes — analysis reads the
|
|
76
|
+
// filesystem; pr reaches GitHub via gh. destructiveHint is NOT
|
|
77
|
+
// set at registration because it varies per-mode (set per-call
|
|
78
|
+
// on the response below).
|
|
79
|
+
openWorldHint: true,
|
|
80
|
+
},
|
|
81
|
+
}, async (args) => {
|
|
82
|
+
const target = args.target;
|
|
83
|
+
const mode = args.mode;
|
|
84
|
+
const destructiveHint = isDestructive(mode);
|
|
85
|
+
if (mode === "analysis-only") {
|
|
86
|
+
const analysis = await analyze(target);
|
|
87
|
+
const result = { analysis };
|
|
88
|
+
return {
|
|
89
|
+
structuredContent: result,
|
|
90
|
+
content: [{ type: "text", text: renderMarkdownSummary({ mode, sc: result }) }],
|
|
91
|
+
// Per-call destructive flag — analysis-only is read-only.
|
|
92
|
+
annotations: { destructiveHint },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// dry-run / apply / pr — delegate to cmdOnboard. `json: true` is
|
|
96
|
+
// structurally irrelevant in the orchestrator's contract today
|
|
97
|
+
// (the orchestrator always returns the structured plan; the CLI
|
|
98
|
+
// shim handles rendered diff output), but pass it explicitly so
|
|
99
|
+
// the intent ("MCP wants the structured plan, not a rendered
|
|
100
|
+
// ANSI diff") is documented at the call site.
|
|
101
|
+
const out = (await cmdOnboard({ target, mode }));
|
|
102
|
+
const result = {
|
|
103
|
+
plan: out.plan,
|
|
104
|
+
dryRun: mode === "dry-run",
|
|
105
|
+
applied: out.applied,
|
|
106
|
+
branchName: out.branchName,
|
|
107
|
+
};
|
|
108
|
+
return {
|
|
109
|
+
structuredContent: result,
|
|
110
|
+
content: [{ type: "text", text: renderMarkdownSummary({ mode, sc: result }) }],
|
|
111
|
+
annotations: { destructiveHint },
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=onboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../../src/mcp/tools/onboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/onboard/analyzers/ci.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAc/C,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/onboard/analyzers/ci.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAc/C,eAAO,MAAM,UAAU,EAAE,QAoDxB,CAAC"}
|
|
@@ -49,6 +49,12 @@ export const ciAnalyzer = {
|
|
|
49
49
|
triggers,
|
|
50
50
|
jobs,
|
|
51
51
|
matrixDimensions,
|
|
52
|
+
// First TRUE single-line `run:` command in this workflow's raw YAML.
|
|
53
|
+
// Multi-line `run: |` blocks return null (the validator's metric-4
|
|
54
|
+
// regex matches the single-line form, so embedding a multi-line
|
|
55
|
+
// block's inner line in a runbook would not be a candidate).
|
|
56
|
+
// Consumed by the runbook seeder's donor fallback (issue #138).
|
|
57
|
+
firstRunCommand: extractFirstSingleLineRunFromText(raw),
|
|
52
58
|
});
|
|
53
59
|
if (!deployStory) {
|
|
54
60
|
deployStory = findDeployCommand(p, `.github/workflows/${name}`);
|
|
@@ -109,4 +115,30 @@ function findDeployCommand(parsed, workflowPath) {
|
|
|
109
115
|
}
|
|
110
116
|
return null;
|
|
111
117
|
}
|
|
118
|
+
// Extracts the first TRUE single-line `run:` command from raw YAML text
|
|
119
|
+
// (`run: <cmd>`), not the first line of a multi-line `run: |` block. The
|
|
120
|
+
// raw-text path is intentional: this value is consumed by the runbook
|
|
121
|
+
// seeder, and the metric 4 validator's candidate-line extractor uses the
|
|
122
|
+
// same `^\s*-?\s*run:\s*(.+)$` shape — extracting via the YAML AST would
|
|
123
|
+
// silently lose the single-vs-multiline distinction (after parsing, both
|
|
124
|
+
// forms yield the same `run` string).
|
|
125
|
+
//
|
|
126
|
+
// Returns null when every `run:` is a block scalar (`run: |`, `run: >`,
|
|
127
|
+
// `run: |-`, etc.) or the workflow has no `run:` steps at all.
|
|
128
|
+
function extractFirstSingleLineRunFromText(rawYaml) {
|
|
129
|
+
for (const line of rawYaml.split(/\r?\n/)) {
|
|
130
|
+
const m = /^\s*-\s*run:\s+(\S.*)$/.exec(line) ?? /^\s*run:\s+(\S.*)$/.exec(line);
|
|
131
|
+
if (!m)
|
|
132
|
+
continue;
|
|
133
|
+
const cmd = m[1]?.trim();
|
|
134
|
+
if (!cmd)
|
|
135
|
+
continue;
|
|
136
|
+
if (cmd === "|" || cmd === "|-" || cmd === ">" || cmd === ">-")
|
|
137
|
+
continue;
|
|
138
|
+
if (cmd.length <= 10)
|
|
139
|
+
continue;
|
|
140
|
+
return cmd;
|
|
141
|
+
}
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
112
144
|
//# sourceMappingURL=ci.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/onboard/analyzers/ci.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAI1C,MAAM,YAAY,GAAyD;IACzE,EAAE,EAAE,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,EAAE;IACtD,EAAE,EAAE,EAAE,2BAA2B,EAAE,MAAM,EAAE,YAAY,EAAE;IACzD,EAAE,EAAE,EAAE,2BAA2B,EAAE,MAAM,EAAE,YAAY,EAAE;IACzD,EAAE,EAAE,EAAE,8BAA8B,EAAE,MAAM,EAAE,YAAY,EAAE;IAC5D,EAAE,EAAE,EAAE,gCAAgC,EAAE,MAAM,EAAE,KAAK,EAAE;IACvD,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC/C,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,KAAK,EAAE;IAC5C,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,YAAY,EAAE;CACpD,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAa;IAClC,IAAI,EAAE,IAAI;IACV,KAAK,CAAC,MAAM,CAAC,OAAO;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACjD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEtC,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,IAAI,WAAW,GAAuB,IAAI,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,SAAS;YACpD,MAAM,CAAC,GAAG,MAAiC,CAAC;YAC5C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACrB,CAAC,CAAC,IAA4C,IAAI,EAAE,CACtD,CAAC;YACF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;gBAChD,IAAI,EAAE,qBAAqB,IAAI,EAAE;gBACjC,QAAQ;gBACR,IAAI;gBACJ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/onboard/analyzers/ci.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../../src/onboard/analyzers/lockfile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../../src/onboard/analyzers/lockfile.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA8T/C,eAAO,MAAM,gBAAgB,EAAE,QAkE9B,CAAC"}
|
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// Reads ONE lockfile per repo (precedence: package-lock.json > yarn.lock >
|
|
4
|
-
// poetry.lock > go.sum) and populates two RepoAnalysis fields:
|
|
5
|
-
//
|
|
6
|
-
// 1. `dependencies[]` — top 20 DIRECT deps with PINNED versions
|
|
7
|
-
// (schema cap = 20). The deterministic name+version table Phase B's
|
|
8
|
-
// LLM cites verbatim in ADR seeds (cycle 15 D2 lines 132–134).
|
|
9
|
-
//
|
|
10
|
-
// 2. `decisions[]` — heuristic markers (test-framework / deploy-target /
|
|
11
|
-
// stack / auth-model) derived from dep names. Schema cap = 10 globally.
|
|
12
|
-
//
|
|
13
|
-
// `package.json` alone (no lockfile) returns null: only a real lockfile has
|
|
14
|
-
// PINNED versions — package.json deps are ranges. Stack DETECTION is the
|
|
15
|
-
// manifest analyzer's job (Task 3); pinned versions are this analyzer's.
|
|
16
|
-
import { readFile } from "node:fs/promises";
|
|
17
|
-
import { join } from "node:path";
|
|
1
|
+
import { readFile, readdir } from "node:fs/promises";
|
|
2
|
+
import { join, relative, sep } from "node:path";
|
|
18
3
|
import TOML from "@iarna/toml";
|
|
19
4
|
// @yarnpkg/lockfile is CJS; ESM only sees the default export.
|
|
20
5
|
// Pull `parse` off the default to keep ESM consumers + Node ESM-loader happy.
|
|
@@ -22,6 +7,31 @@ import yarnpkgLockfile from "@yarnpkg/lockfile";
|
|
|
22
7
|
const { parse: parseYarnLock } = yarnpkgLockfile;
|
|
23
8
|
const MAX_DEPS = 20;
|
|
24
9
|
const MAX_DECISIONS = 10;
|
|
10
|
+
// Walk depth: 0 = root, 1 = direct child (e.g. `web/`), 2 = grandchild
|
|
11
|
+
// (e.g. `tools/df-flow-assessor/`), 3 = great-grandchild. Covers every
|
|
12
|
+
// sage3c lockfile (deepest is depth-2). Mirrors tree.ts's depth budget.
|
|
13
|
+
const MAX_LOCKFILE_DEPTH = 3;
|
|
14
|
+
// Skip the same set tree.ts skips — kept local on purpose so this analyzer's
|
|
15
|
+
// diff doesn't collide with any sibling refactor of tree.ts. Hidden entries
|
|
16
|
+
// (starting with `.`) are also skipped to keep .git/.github/.venv etc. out
|
|
17
|
+
// of the walk.
|
|
18
|
+
const SKIP_DIR_NAMES = new Set([
|
|
19
|
+
"node_modules",
|
|
20
|
+
"dist",
|
|
21
|
+
"build",
|
|
22
|
+
"target",
|
|
23
|
+
".next",
|
|
24
|
+
".venv",
|
|
25
|
+
"__pycache__",
|
|
26
|
+
".gradle",
|
|
27
|
+
]);
|
|
28
|
+
function shouldSkipDir(name) {
|
|
29
|
+
if (name.startsWith("."))
|
|
30
|
+
return true;
|
|
31
|
+
if (SKIP_DIR_NAMES.has(name))
|
|
32
|
+
return true;
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
25
35
|
// Decision-surface heuristics. Each entry matches a single dep name (exact
|
|
26
36
|
// match, post-lowercase) and emits ONE decision with evidence: [lockfilePath].
|
|
27
37
|
// Title strings follow the spec's example phrasing — Phase B's LLM polishes
|
|
@@ -71,17 +81,62 @@ async function readIfExists(path) {
|
|
|
71
81
|
throw e;
|
|
72
82
|
}
|
|
73
83
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
84
|
+
const LOCKFILE_SET = new Set(LOCKFILE_PRECEDENCE);
|
|
85
|
+
// Walk the repo (bounded by MAX_LOCKFILE_DEPTH + SKIP_DIR_NAMES) for every
|
|
86
|
+
// known lockfile filename. Results are sorted by relPath for deterministic
|
|
87
|
+
// output across readdir order.
|
|
88
|
+
async function discoverLockfiles(rootDir) {
|
|
89
|
+
const found = [];
|
|
90
|
+
async function walk(absDir, depth) {
|
|
91
|
+
if (depth > MAX_LOCKFILE_DEPTH)
|
|
92
|
+
return;
|
|
93
|
+
let entries;
|
|
94
|
+
try {
|
|
95
|
+
entries = await readdir(absDir, { withFileTypes: true });
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Permission denied / transient — treat as empty so one unreadable
|
|
99
|
+
// subtree can't bomb the whole analyzer.
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// Read files in this dir before descending so each level's lockfile
|
|
103
|
+
// joins `found` before its descendants'.
|
|
104
|
+
for (const entry of entries) {
|
|
105
|
+
if (!entry.isFile())
|
|
106
|
+
continue;
|
|
107
|
+
if (!LOCKFILE_SET.has(entry.name))
|
|
108
|
+
continue;
|
|
109
|
+
const absPath = join(absDir, entry.name);
|
|
110
|
+
const contents = await readIfExists(absPath);
|
|
111
|
+
if (contents === null)
|
|
112
|
+
continue;
|
|
113
|
+
const rel = relative(rootDir, absPath).split(sep).join("/");
|
|
114
|
+
found.push({
|
|
115
|
+
name: entry.name,
|
|
116
|
+
relPath: rel,
|
|
117
|
+
absDir,
|
|
118
|
+
contents,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
for (const entry of entries) {
|
|
122
|
+
if (!entry.isDirectory())
|
|
123
|
+
continue;
|
|
124
|
+
if (shouldSkipDir(entry.name))
|
|
125
|
+
continue;
|
|
126
|
+
await walk(join(absDir, entry.name), depth + 1);
|
|
127
|
+
}
|
|
79
128
|
}
|
|
80
|
-
|
|
129
|
+
await walk(rootDir, 0);
|
|
130
|
+
found.sort((a, b) => (a.relPath < b.relPath ? -1 : a.relPath > b.relPath ? 1 : 0));
|
|
131
|
+
return found;
|
|
81
132
|
}
|
|
82
133
|
// package-lock.json — handles both lockfileVersion 1 (root-level dependencies
|
|
83
134
|
// with the version values being the pins) and 2/3 (packages[""].dependencies
|
|
84
135
|
// for direct-dep names; packages["node_modules/<name>"].version for the pin).
|
|
136
|
+
//
|
|
137
|
+
// Returns EVERY direct dep (no internal cap). The aggregate cap is enforced
|
|
138
|
+
// in `detect()` so the decision-marker scan can find matches anywhere in the
|
|
139
|
+
// lockfile, not just within the first 20 alphabetical entries.
|
|
85
140
|
function parsePackageLock(contents, lockfilePath) {
|
|
86
141
|
let parsed;
|
|
87
142
|
try {
|
|
@@ -116,8 +171,6 @@ function parsePackageLock(contents, lockfilePath) {
|
|
|
116
171
|
: requestedRange;
|
|
117
172
|
out.push({ name, version: pinnedVersion, manifestPath: lockfilePath });
|
|
118
173
|
seen.add(name);
|
|
119
|
-
if (out.length >= MAX_DEPS)
|
|
120
|
-
return out;
|
|
121
174
|
}
|
|
122
175
|
}
|
|
123
176
|
// v1 fallback (and a belt+braces top-up if v2/v3 produced nothing): root
|
|
@@ -136,17 +189,16 @@ function parsePackageLock(contents, lockfilePath) {
|
|
|
136
189
|
continue;
|
|
137
190
|
out.push({ name, version, manifestPath: lockfilePath });
|
|
138
191
|
seen.add(name);
|
|
139
|
-
if (out.length >= MAX_DEPS)
|
|
140
|
-
return out;
|
|
141
192
|
}
|
|
142
193
|
}
|
|
143
194
|
return out;
|
|
144
195
|
}
|
|
145
|
-
// yarn.lock — cross-reference
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
|
|
196
|
+
// yarn.lock — cross-reference the SIBLING package.json's deps (NOT the repo
|
|
197
|
+
// root's — yarn workspaces put a lockfile next to a per-package manifest)
|
|
198
|
+
// with parsed lockfile entries; lockfile keys take the form "<name>@<range>",
|
|
199
|
+
// so we look up each direct dep by its requested range.
|
|
200
|
+
async function parseYarn(contents, lockfilePath, lockfileDir) {
|
|
201
|
+
const pkgJsonRaw = await readIfExists(join(lockfileDir, "package.json"));
|
|
150
202
|
if (pkgJsonRaw === null)
|
|
151
203
|
return [];
|
|
152
204
|
let pkg;
|
|
@@ -167,19 +219,19 @@ async function parseYarn(contents, lockfilePath, rootDir) {
|
|
|
167
219
|
if (parsed.type === "conflict")
|
|
168
220
|
return [];
|
|
169
221
|
const entries = parsed.object;
|
|
222
|
+
// Returns every direct dep (no internal cap — aggregate cap is in detect()).
|
|
170
223
|
const out = [];
|
|
171
224
|
for (const [name, range] of Object.entries(directDeps)) {
|
|
172
225
|
const key = `${name}@${range}`;
|
|
173
226
|
const entry = entries[key];
|
|
174
227
|
const version = entry && typeof entry.version === "string" ? entry.version : range;
|
|
175
228
|
out.push({ name, version, manifestPath: lockfilePath });
|
|
176
|
-
if (out.length >= MAX_DEPS)
|
|
177
|
-
return out;
|
|
178
229
|
}
|
|
179
230
|
return out;
|
|
180
231
|
}
|
|
181
232
|
// poetry.lock — iterate [[package]] blocks. Older formats use category="main";
|
|
182
|
-
// newer formats omit category — accept either.
|
|
233
|
+
// newer formats omit category — accept either. Returns every package (no
|
|
234
|
+
// internal cap — aggregate cap is in detect()).
|
|
183
235
|
function parsePoetry(contents, lockfilePath) {
|
|
184
236
|
let parsed;
|
|
185
237
|
try {
|
|
@@ -206,14 +258,13 @@ function parsePoetry(contents, lockfilePath) {
|
|
|
206
258
|
if (typeof name !== "string" || typeof version !== "string")
|
|
207
259
|
continue;
|
|
208
260
|
out.push({ name, version, manifestPath: lockfilePath });
|
|
209
|
-
if (out.length >= MAX_DEPS)
|
|
210
|
-
return out;
|
|
211
261
|
}
|
|
212
262
|
return out;
|
|
213
263
|
}
|
|
214
264
|
// go.sum — `<module> <version>/go.mod <hash>` lines. The /go.mod-suffix is
|
|
215
265
|
// the canonical pin (the bare `<module> <version>` lines hash the module zip;
|
|
216
|
-
// many lines per dep exist — first-match-per-module wins).
|
|
266
|
+
// many lines per dep exist — first-match-per-module wins). Returns every
|
|
267
|
+
// module (no internal cap — aggregate cap is in detect()).
|
|
217
268
|
function parseGoSum(contents, lockfilePath) {
|
|
218
269
|
const out = [];
|
|
219
270
|
const seen = new Set();
|
|
@@ -233,52 +284,81 @@ function parseGoSum(contents, lockfilePath) {
|
|
|
233
284
|
continue;
|
|
234
285
|
seen.add(name);
|
|
235
286
|
out.push({ name, version, manifestPath: lockfilePath });
|
|
236
|
-
if (out.length >= MAX_DEPS)
|
|
237
|
-
return out;
|
|
238
287
|
}
|
|
239
288
|
return out;
|
|
240
289
|
}
|
|
241
|
-
function
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
});
|
|
252
|
-
if (out.length >= MAX_DECISIONS)
|
|
253
|
-
return out;
|
|
254
|
-
break;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
290
|
+
async function parseOne(lf) {
|
|
291
|
+
switch (lf.name) {
|
|
292
|
+
case "package-lock.json":
|
|
293
|
+
return parsePackageLock(lf.contents, lf.relPath);
|
|
294
|
+
case "yarn.lock":
|
|
295
|
+
return parseYarn(lf.contents, lf.relPath, lf.absDir);
|
|
296
|
+
case "poetry.lock":
|
|
297
|
+
return parsePoetry(lf.contents, lf.relPath);
|
|
298
|
+
case "go.sum":
|
|
299
|
+
return parseGoSum(lf.contents, lf.relPath);
|
|
257
300
|
}
|
|
258
|
-
return out;
|
|
259
301
|
}
|
|
260
302
|
export const lockfileAnalyzer = {
|
|
261
303
|
name: "lockfile",
|
|
262
304
|
async detect(rootDir) {
|
|
263
|
-
const
|
|
264
|
-
if (
|
|
305
|
+
const discovered = await discoverLockfiles(rootDir);
|
|
306
|
+
if (discovered.length === 0)
|
|
265
307
|
return null;
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
308
|
+
// Aggregate dependencies + decisions across every lockfile, capped at the
|
|
309
|
+
// schema maxima. Dependencies dedupe on `name` (the FIRST lockfile in
|
|
310
|
+
// sort order wins — root before subdirs). Decisions dedupe on the
|
|
311
|
+
// `(title, surface)` tuple with evidence accumulated as the sorted union
|
|
312
|
+
// of source lockfiles.
|
|
313
|
+
const dependencies = [];
|
|
314
|
+
const seenDeps = new Set();
|
|
315
|
+
const decisionMap = new Map();
|
|
316
|
+
for (const lf of discovered) {
|
|
317
|
+
const deps = await parseOne(lf);
|
|
318
|
+
// Take this lockfile's contribution to the bounded dependency table.
|
|
319
|
+
// The cap is checked BEFORE the push so `dependencies.length` is
|
|
320
|
+
// strictly ≤ MAX_DEPS (the schema's hard contract — exceeding it
|
|
321
|
+
// throws inside `RepoAnalysisSchema.parse()`).
|
|
322
|
+
for (const dep of deps) {
|
|
323
|
+
if (dependencies.length >= MAX_DEPS)
|
|
324
|
+
break;
|
|
325
|
+
if (seenDeps.has(dep.name))
|
|
326
|
+
continue;
|
|
327
|
+
seenDeps.add(dep.name);
|
|
328
|
+
dependencies.push(dep);
|
|
329
|
+
}
|
|
330
|
+
// Decision-marker scan walks EVERY parsed dep for this lockfile,
|
|
331
|
+
// independent of whether the dep made it into the bounded table.
|
|
332
|
+
// Without this independence, a long alphabetical lockfile (e.g.
|
|
333
|
+
// sage3c's backend/poetry.lock) would fill the 20-slot dependency
|
|
334
|
+
// budget before reaching `fastapi`/`pytest`, suppressing the
|
|
335
|
+
// marker scan even though the names are right there in the file.
|
|
336
|
+
for (const dep of deps) {
|
|
337
|
+
const lower = dep.name.toLowerCase();
|
|
338
|
+
for (const marker of DECISION_MARKERS) {
|
|
339
|
+
if (lower !== marker.match)
|
|
340
|
+
continue;
|
|
341
|
+
const key = `${marker.surface}::${marker.title}`;
|
|
342
|
+
const existing = decisionMap.get(key);
|
|
343
|
+
if (existing) {
|
|
344
|
+
existing.evidence.add(lf.relPath);
|
|
345
|
+
}
|
|
346
|
+
else if (decisionMap.size < MAX_DECISIONS) {
|
|
347
|
+
decisionMap.set(key, {
|
|
348
|
+
title: marker.title,
|
|
349
|
+
surface: marker.surface,
|
|
350
|
+
evidence: new Set([lf.relPath]),
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
280
356
|
}
|
|
281
|
-
const decisions =
|
|
357
|
+
const decisions = Array.from(decisionMap.values()).map((d) => ({
|
|
358
|
+
title: d.title,
|
|
359
|
+
surface: d.surface,
|
|
360
|
+
evidence: Array.from(d.evidence).sort(),
|
|
361
|
+
}));
|
|
282
362
|
return { dependencies, decisions };
|
|
283
363
|
},
|
|
284
364
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../../src/onboard/analyzers/lockfile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../../src/onboard/analyzers/lockfile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type MergeResult } from "./writers/merge.js";
|
|
2
|
+
import { type SkipResult } from "./writers/skip.js";
|
|
3
|
+
import type { ScaffoldPlan } from "./scaffold-schema.js";
|
|
4
|
+
export type ApplyMode = "dry-run" | "apply";
|
|
5
|
+
export interface EmitResult {
|
|
6
|
+
path: string;
|
|
7
|
+
action: "emit";
|
|
8
|
+
wrote: boolean;
|
|
9
|
+
}
|
|
10
|
+
export type ApplyFileResult = EmitResult | MergeResult | SkipResult;
|
|
11
|
+
export interface ApplyResult {
|
|
12
|
+
mode: ApplyMode;
|
|
13
|
+
results: ApplyFileResult[];
|
|
14
|
+
rendered?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ApplyOptions {
|
|
17
|
+
mode: ApplyMode;
|
|
18
|
+
force?: boolean;
|
|
19
|
+
color?: boolean;
|
|
20
|
+
stderr?: (s: string) => void;
|
|
21
|
+
}
|
|
22
|
+
export declare class ScaffoldApplyError extends Error {
|
|
23
|
+
written: string[];
|
|
24
|
+
notWritten: string[];
|
|
25
|
+
cause: unknown;
|
|
26
|
+
constructor(message: string, written: string[], notWritten: string[], cause: unknown);
|
|
27
|
+
}
|
|
28
|
+
export declare function applyPlan(rootDir: string, plan: ScaffoldPlan, opts: ApplyOptions): Promise<ApplyResult>;
|
|
29
|
+
//# sourceMappingURL=apply-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-plan.d.ts","sourceRoot":"","sources":["../../src/onboard/apply-plan.ts"],"names":[],"mappings":"AAcA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;gBACZ,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO;CAOrF;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CAuDtB"}
|