@tacuchi/agent-workflow-cli 25.9.0 → 26.0.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/CHANGELOG.md +26 -0
- package/README.md +1 -2
- package/dist/application/capability/design-handler.js +94 -0
- package/dist/application/capability/design-handler.js.map +1 -1
- package/dist/application/capability/dispatcher.js +178 -18
- package/dist/application/capability/dispatcher.js.map +1 -1
- package/dist/application/capability/durable-effect.js.map +1 -1
- package/dist/application/capability/readiness.js +8 -54
- package/dist/application/capability/readiness.js.map +1 -1
- package/dist/application/capability/resolution.js +124 -192
- package/dist/application/capability/resolution.js.map +1 -1
- package/dist/application/doctor/prepare.js +0 -3
- package/dist/application/doctor/prepare.js.map +1 -1
- package/dist/application/doctor/provider-skills.js +21 -132
- package/dist/application/doctor/provider-skills.js.map +1 -1
- package/dist/application/doctor/repair-runner.js +0 -47
- package/dist/application/doctor/repair-runner.js.map +1 -1
- package/dist/application/flow/submit.js +1 -1
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/plan-lint-service.js +31 -5
- package/dist/application/plan-lint-service.js.map +1 -1
- package/dist/application/retirement/attribution.js +1 -2
- package/dist/application/retirement/attribution.js.map +1 -1
- package/dist/application/self/clean-legacy.js +1 -2
- package/dist/application/self/clean-legacy.js.map +1 -1
- package/dist/application/self/install-skill.js +5 -49
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/skill-files.js +29 -0
- package/dist/application/self/skill-files.js.map +1 -0
- package/dist/application/skills-resolver-service.js +5 -91
- package/dist/application/skills-resolver-service.js.map +1 -1
- package/dist/application/source-boundary-policy.js +10 -2
- package/dist/application/source-boundary-policy.js.map +1 -1
- package/dist/cli/commands/capability.js +12 -4
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/index.js +0 -4
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/self.js +1 -22
- package/dist/cli/commands/self.js.map +1 -1
- package/dist/cli/commands/skills.js +4 -11
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/help-groups.js +1 -3
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/tui/app.js +2 -3
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/host-admin-section.js +2 -13
- package/dist/cli/tui/components/host-admin-section.js.map +1 -1
- package/dist/cli/tui/components/tabs-config.js +1 -2
- package/dist/cli/tui/components/tabs-config.js.map +1 -1
- package/dist/cli/tui/tui-prefs.js +2 -0
- package/dist/cli/tui/tui-prefs.js.map +1 -1
- package/dist/dist-manifest.json +60 -204
- package/dist/domain/capability/protocol.js +3 -1
- package/dist/domain/capability/protocol.js.map +1 -1
- package/dist/domain/doctor/operations.js +0 -18
- package/dist/domain/doctor/operations.js.map +1 -1
- package/dist/domain/flow/authority.js +1 -3
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/skills.js +2 -6
- package/dist/domain/skills.js.map +1 -1
- package/package.json +2 -2
- package/skills/w/SKILL.md +9 -16
- package/skills/w/exports/README.md +4 -4
- package/skills/w/exports/export-diagrams/EXPORT.md +1 -1
- package/skills/w/exports/export-scripts/EXPORT.md +1 -1
- package/skills/w/harness/HARNESS.md +2 -5
- package/skills/w/loops/CHASSIS.md +1 -1
- package/skills/w/loops/CODE-POLICIES.md +1 -1
- package/skills/w/loops/README.md +2 -2
- package/skills/w/loops/quick-loop/LOOP.md +1 -1
- package/skills/w/loops/spec-refine-loop/LOOP.md +1 -1
- package/skills/w/roles/README.md +11 -47
- package/skills/w/roles/design/ROLE.md +3 -1
- package/skills/w/roles/diagrams/ROLE.md +1 -1
- package/skills/w/roles/git/ROLE.md +1 -1
- package/skills/w/roles/research/ROLE.md +1 -1
- package/skills/w/roles/sql/ROLE.md +1 -1
- package/dist/application/capability/descriptor-loader.js +0 -109
- package/dist/application/capability/descriptor-loader.js.map +0 -1
- package/dist/application/capability/installed-inventory.js +0 -168
- package/dist/application/capability/installed-inventory.js.map +0 -1
- package/dist/application/doctor/skills-toml-migrate.js +0 -76
- package/dist/application/doctor/skills-toml-migrate.js.map +0 -1
- package/dist/application/self/install-plugin-skills-git.js +0 -226
- package/dist/application/self/install-plugin-skills-git.js.map +0 -1
- package/dist/application/self/install-plugin-skills.js +0 -203
- package/dist/application/self/install-plugin-skills.js.map +0 -1
- package/dist/application/self/plugin-cache-clear.js +0 -133
- package/dist/application/self/plugin-cache-clear.js.map +0 -1
- package/dist/application/self/plugin-cache-reload.js +0 -141
- package/dist/application/self/plugin-cache-reload.js.map +0 -1
- package/dist/application/self/skills-apply.js +0 -623
- package/dist/application/self/skills-apply.js.map +0 -1
- package/dist/application/self/skills-catalog.js +0 -35
- package/dist/application/self/skills-catalog.js.map +0 -1
- package/dist/application/self/skills-change.js +0 -479
- package/dist/application/self/skills-change.js.map +0 -1
- package/dist/application/self/skills-discovery.js +0 -275
- package/dist/application/self/skills-discovery.js.map +0 -1
- package/dist/application/self/skills-manager.js +0 -253
- package/dist/application/self/skills-manager.js.map +0 -1
- package/dist/application/self/skills-payload.js +0 -566
- package/dist/application/self/skills-payload.js.map +0 -1
- package/dist/application/self/skills-registry.js +0 -107
- package/dist/application/self/skills-registry.js.map +0 -1
- package/dist/application/skill-index-service.js +0 -78
- package/dist/application/skill-index-service.js.map +0 -1
- package/dist/cli/commands/plugin-cache.js +0 -25
- package/dist/cli/commands/plugin-cache.js.map +0 -1
- package/dist/cli/commands/skill-index.js +0 -19
- package/dist/cli/commands/skill-index.js.map +0 -1
- package/dist/cli/tui/data/recommended-skills.js +0 -482
- package/dist/cli/tui/data/recommended-skills.js.map +0 -1
- package/dist/cli/tui/tabs/skills-tab.js +0 -664
- package/dist/cli/tui/tabs/skills-tab.js.map +0 -1
|
@@ -1,77 +1,42 @@
|
|
|
1
1
|
import { doctorFindingId, } from "../../domain/doctor/model.js";
|
|
2
2
|
import { capabilityReadiness, } from "../capability/readiness.js";
|
|
3
|
-
|
|
4
|
-
* Skills — what is registered, whether its replicas landed, and whether the one
|
|
5
|
-
* capability that has a contract is actually ready.
|
|
6
|
-
*
|
|
7
|
-
* `listSkills` already answers the first two and `capabilityReadiness` the
|
|
8
|
-
* third, with a verdict that separates state, reason and action — the shape this
|
|
9
|
-
* whole model was modelled on. Neither is re-derived: an incomplete replica is
|
|
10
|
-
* read off the booleans the manager publishes, not re-inspected here.
|
|
11
|
-
*
|
|
12
|
-
* The seed list is deliberately empty. It only supplies descriptions and the
|
|
13
|
-
* `recommended` status, and a doctor that turned "you could also install this"
|
|
14
|
-
* into a finding would teach people to skim past the ones that matter.
|
|
15
|
-
*
|
|
16
|
-
* The category answers TWO things with two different scopes, and they are kept
|
|
17
|
-
* apart on purpose (AC-02):
|
|
18
|
-
*
|
|
19
|
-
* - The registered skills and their replicas belong to the PERSON, not to a
|
|
20
|
-
* host: the registry and the three replica roots hang off `$HOME`
|
|
21
|
-
* (`~/.agents`, `~/.claude`, `~/.gemini`) and no host governs them. Reporting
|
|
22
|
-
* the same user-level answer once per participating host would be the same
|
|
23
|
-
* sentence repeated N times, so it is anchored at the `workspace` pseudo-host
|
|
24
|
-
* — the same anchor the aggregate uses when no host participates.
|
|
25
|
-
* - A capability's DIRECT route is per host: it resolves against that host's own
|
|
26
|
-
* skills tree, so it can be installed in one and absent in the next. That half
|
|
27
|
-
* IS emitted per host, one coverage row each.
|
|
28
|
-
*/
|
|
29
|
-
import { listSkills } from "../self/skills-manager.js";
|
|
30
|
-
import { migrateSkillsToml } from "./skills-toml-migrate.js";
|
|
3
|
+
import { resolveSkills } from "../skills-resolver-service.js";
|
|
31
4
|
import { coverage } from "./types.js";
|
|
32
5
|
const CATEGORY = "skills";
|
|
33
|
-
/** Where a user-level skill finding lives: the workspace, not a host — replicas are per-user. */
|
|
34
|
-
const SCOPE_HOST = "workspace";
|
|
35
6
|
export const skillsProvider = {
|
|
36
7
|
category: CATEGORY,
|
|
37
8
|
async run(input) {
|
|
38
9
|
const findings = [];
|
|
39
|
-
const covered = [
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
findings.push(skillFinding(skill));
|
|
44
|
-
}
|
|
45
|
-
for (const path of [input.ctx.paths.userSkillsToml(), input.ctx.paths.cwdSkillsToml()]) {
|
|
46
|
-
if (!(await input.ctx.fs.exists(path)))
|
|
47
|
-
continue;
|
|
48
|
-
const migration = migrateSkillsToml(await input.ctx.fs.readText(path));
|
|
49
|
-
if (!migration.changed)
|
|
10
|
+
const covered = [];
|
|
11
|
+
const bindings = await resolveSkills(input.ctx.fs, input.ctx.paths);
|
|
12
|
+
for (const [index, warning] of bindings.warnings.entries()) {
|
|
13
|
+
if (!warning.includes("no aplicable"))
|
|
50
14
|
continue;
|
|
51
15
|
findings.push({
|
|
52
|
-
id: doctorFindingId(
|
|
53
|
-
host:
|
|
16
|
+
id: doctorFindingId("workspace", CATEGORY, `binding:${index}`),
|
|
17
|
+
host: "workspace",
|
|
54
18
|
category: CATEGORY,
|
|
55
|
-
resource: { kind: "
|
|
19
|
+
resource: { kind: "binding", name: `skills.toml:${index}`, locator: null },
|
|
56
20
|
state: "warning",
|
|
57
|
-
summary:
|
|
58
|
-
impact: "
|
|
59
|
-
evidence: [
|
|
60
|
-
ownership: "
|
|
21
|
+
summary: "binding histórico no aplicable a Workline",
|
|
22
|
+
impact: "no selecciona mejoras ni modifica el floor propio",
|
|
23
|
+
evidence: [warning],
|
|
24
|
+
ownership: "foreign",
|
|
61
25
|
remediation: {
|
|
62
26
|
kind: "manual",
|
|
63
27
|
action: null,
|
|
64
|
-
guidance: [
|
|
28
|
+
guidance: [
|
|
29
|
+
"gestioná esa skill desde el host o marketplace elegido; el archivo queda intacto",
|
|
30
|
+
],
|
|
65
31
|
},
|
|
66
|
-
proposal: { op: "skills.migrate-template", args: { path } },
|
|
67
32
|
});
|
|
68
33
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
//
|
|
34
|
+
if (bindings.warnings.some((warning) => warning.includes("no aplicable"))) {
|
|
35
|
+
covered.push(coverage(CATEGORY, "workspace", "checked"));
|
|
36
|
+
}
|
|
37
|
+
// The floor is host-independent; the direct wrapper is checked against each
|
|
38
|
+
// participating host's own tree. With no host, report only applicable
|
|
39
|
+
// historical binding notices, never invented capability installations.
|
|
75
40
|
for (const host of input.hosts) {
|
|
76
41
|
for (const report of await capabilityReadiness({
|
|
77
42
|
fs: input.ctx.fs,
|
|
@@ -86,82 +51,6 @@ export const skillsProvider = {
|
|
|
86
51
|
return { coverage: covered, findings };
|
|
87
52
|
},
|
|
88
53
|
};
|
|
89
|
-
/**
|
|
90
|
-
* A registered skill's `source`, with any URL userinfo removed.
|
|
91
|
-
*
|
|
92
|
-
* `source` is the string the person typed at register time, kept verbatim — and
|
|
93
|
-
* without a credential helper the usual way to reach a private repo is
|
|
94
|
-
* `https://<token>@github.com/acme/skills.git`. The global redaction cannot see
|
|
95
|
-
* that: `CONNECTION_URI` only covers `postgres|mysql|mongodb` and
|
|
96
|
-
* `SECRET_ASSIGNMENT` only `key=value` shapes, so the token would reach
|
|
97
|
-
* `evidence` and `resource.locator` intact (AC-11). The whole userinfo goes,
|
|
98
|
-
* never just the password half: a PAT is perfectly valid on its own in the user
|
|
99
|
-
* position, so telling a harmless username apart from a secret is not something
|
|
100
|
-
* this can decide — and the repo, which is what identifies the skill, survives.
|
|
101
|
-
*/
|
|
102
|
-
function withoutUrlUserinfo(source) {
|
|
103
|
-
return source.replace(/([a-z][a-z0-9+.-]*:\/\/)[^/\s]*@/gi, "$1***@");
|
|
104
|
-
}
|
|
105
|
-
function skillFinding(skill) {
|
|
106
|
-
const missing = Object.entries(skill.replicas)
|
|
107
|
-
.filter(([, present]) => !present)
|
|
108
|
-
.map(([host]) => host);
|
|
109
|
-
const source = withoutUrlUserinfo(skill.source);
|
|
110
|
-
const evidence = [
|
|
111
|
-
`estado en el registro: ${skill.status}`,
|
|
112
|
-
`origen: ${source}`,
|
|
113
|
-
`réplicas presentes: ${Object.entries(skill.replicas)
|
|
114
|
-
.filter(([, present]) => present)
|
|
115
|
-
.map(([host]) => host)
|
|
116
|
-
.join(", ") || "ninguna"}`,
|
|
117
|
-
];
|
|
118
|
-
const base = {
|
|
119
|
-
id: doctorFindingId(SCOPE_HOST, CATEGORY, skill.name),
|
|
120
|
-
host: SCOPE_HOST,
|
|
121
|
-
category: CATEGORY,
|
|
122
|
-
resource: { kind: "skill", name: skill.name, locator: source },
|
|
123
|
-
evidence,
|
|
124
|
-
};
|
|
125
|
-
// `unmanaged` is a skill living in the canonical root that this CLI never
|
|
126
|
-
// registered: it is somebody else's, so it is reported and left alone.
|
|
127
|
-
if (skill.status === "unmanaged") {
|
|
128
|
-
return {
|
|
129
|
-
...base,
|
|
130
|
-
state: "warning",
|
|
131
|
-
summary: `'${skill.name}' está en el árbol canónico y Workline no la registró`,
|
|
132
|
-
impact: "Workline no la actualiza ni la retira: no sabe de dónde vino",
|
|
133
|
-
ownership: "foreign",
|
|
134
|
-
remediation: {
|
|
135
|
-
kind: "manual",
|
|
136
|
-
action: null,
|
|
137
|
-
guidance: [`si es tuya, registrala con 'aw self skills register'; si no, dejala como está`],
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
if (missing.length === 0) {
|
|
142
|
-
return {
|
|
143
|
-
...base,
|
|
144
|
-
state: "healthy",
|
|
145
|
-
summary: `'${skill.name}' está registrada con todas sus réplicas`,
|
|
146
|
-
impact: "la skill se ve desde los hosts que leen esas réplicas",
|
|
147
|
-
ownership: "ours",
|
|
148
|
-
remediation: { kind: "none", action: null, guidance: [] },
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
return {
|
|
152
|
-
...base,
|
|
153
|
-
state: "warning",
|
|
154
|
-
summary: `'${skill.name}' tiene réplicas faltantes: ${missing.join(", ")}`,
|
|
155
|
-
impact: "los hosts que leen esas réplicas no ven la skill",
|
|
156
|
-
ownership: "ours",
|
|
157
|
-
remediation: {
|
|
158
|
-
kind: "manual",
|
|
159
|
-
action: null,
|
|
160
|
-
guidance: [`aw self skills reinstall --name ${skill.name}`],
|
|
161
|
-
},
|
|
162
|
-
proposal: { op: "skills.reinstall", args: { name: skill.name } },
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
54
|
/** The two states readiness calls usable. Everything else owes a reason. */
|
|
166
55
|
function isReady(state) {
|
|
167
56
|
return state === "ready" || state === "resolved";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-skills.js","sourceRoot":"","sources":["../../../src/application/doctor/provider-skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAGL,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC
|
|
1
|
+
{"version":3,"file":"provider-skills.js","sourceRoot":"","sources":["../../../src/application/doctor/provider-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,9 @@ import { runMultiroot } from "../multiroot-service.js";
|
|
|
6
6
|
import { selfCleanLegacy } from "../self/clean-legacy.js";
|
|
7
7
|
import { selfInstallHooks } from "../self/install-hooks.js";
|
|
8
8
|
import { selfInstallSkill } from "../self/install-skill.js";
|
|
9
|
-
import { applySkillChange } from "../self/skills-apply.js";
|
|
10
|
-
import { prepareSkillChange } from "../self/skills-change.js";
|
|
11
9
|
import { selfUninstall } from "../self/uninstall.js";
|
|
12
10
|
import { runDoctorAuthFlow } from "./auth-flow.js";
|
|
13
11
|
import { applyRetiredSectionRemoval } from "./provider-workspace-block.js";
|
|
14
|
-
import { applySkillsTomlMigration } from "./skills-toml-migrate.js";
|
|
15
12
|
/** Un `ParsedArgs` explícito: sin comando, sin positional y con los flags que la operación pide. */
|
|
16
13
|
function argsOf(values, flags = []) {
|
|
17
14
|
return {
|
|
@@ -36,38 +33,6 @@ function fromCommand(result, what) {
|
|
|
36
33
|
detail: `${what}: ${code}`,
|
|
37
34
|
};
|
|
38
35
|
}
|
|
39
|
-
/**
|
|
40
|
-
* Repairs a registered skill's replicas the ONE way installations change since
|
|
41
|
-
* Spec 043: prepare, then apply against that proposal's own digest.
|
|
42
|
-
*
|
|
43
|
-
* The doctor's own preflight is what authorizes the operation (it declares
|
|
44
|
-
* `mutate_overwrite`); what this adds is the journal and the per-destination
|
|
45
|
-
* backup, so a repair that fails halfway is recoverable instead of leaving
|
|
46
|
-
* the replicas in three different states.
|
|
47
|
-
*/
|
|
48
|
-
async function repairSkillReplicas(ctx, name) {
|
|
49
|
-
const prepared = await prepareSkillChange(ctx, { operation: "repair", name });
|
|
50
|
-
if (prepared.status !== "prepared") {
|
|
51
|
-
const code = prepared.status === "rejected" ? prepared.rejection.code : prepared.status;
|
|
52
|
-
return { status: "failed", detail: `reinstalar la skill: ${code}` };
|
|
53
|
-
}
|
|
54
|
-
try {
|
|
55
|
-
const applied = await applySkillChange(ctx, prepared.proposal, prepared.proposal.digest);
|
|
56
|
-
if (applied.status === "refused") {
|
|
57
|
-
return { status: "failed", detail: `reinstalar la skill: ${applied.refusal.code}` };
|
|
58
|
-
}
|
|
59
|
-
const failed = applied.result.destinations.filter((entry) => entry.status === "failed");
|
|
60
|
-
return failed.length === 0
|
|
61
|
-
? { status: "applied", detail: "reinstalar la skill: aplicado" }
|
|
62
|
-
: {
|
|
63
|
-
status: "failed",
|
|
64
|
-
detail: `reinstalar la skill: ${failed.length} destino(s) sin aplicar`,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
finally {
|
|
68
|
-
await prepared.release();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
36
|
export async function runDoctorRepair(action, ctx) {
|
|
72
37
|
switch (action.op) {
|
|
73
38
|
case "self.install-skill":
|
|
@@ -78,8 +43,6 @@ export async function runDoctorRepair(action, ctx) {
|
|
|
78
43
|
return fromCommand(await selfInstallHooks(argsOf({ target: target(action) }), ctx), "armar los hooks");
|
|
79
44
|
case "self.clean-legacy":
|
|
80
45
|
return fromCommand(await selfCleanLegacy(argsOf({ target: target(action) }), ctx), "limpiar el resto legacy");
|
|
81
|
-
case "skills.reinstall":
|
|
82
|
-
return await repairSkillReplicas(ctx, action.args.name ?? "");
|
|
83
46
|
case "mcp.setup":
|
|
84
47
|
return mcpOutcome(runMcpSetup(ctx.env, mcpInput(ctx, action)), "registrar la entrada MCP");
|
|
85
48
|
case "mcp.remove":
|
|
@@ -123,16 +86,6 @@ export async function runDoctorRepair(action, ctx) {
|
|
|
123
86
|
detail: removed ? "secciones retiradas quitadas" : "sin secciones retiradas",
|
|
124
87
|
};
|
|
125
88
|
}
|
|
126
|
-
case "skills.migrate-template": {
|
|
127
|
-
const path = action.locator;
|
|
128
|
-
if (path === null || ![ctx.paths.cwdSkillsToml(), ctx.paths.userSkillsToml()].includes(path))
|
|
129
|
-
return { status: "failed", detail: "skills.toml fuera de la cascada" };
|
|
130
|
-
const migrated = await applySkillsTomlMigration(ctx.fs, path);
|
|
131
|
-
return {
|
|
132
|
-
status: migrated ? "applied" : "failed",
|
|
133
|
-
detail: migrated ? "plantilla migrada" : "sin cambios de plantilla",
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
89
|
default:
|
|
137
90
|
// Una operación que el catálogo declara y este adaptador no sabe correr es
|
|
138
91
|
// un fallo declarado, no un `applied` optimista: el recurso queda como
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair-runner.js","sourceRoot":"","sources":["../../../src/application/doctor/repair-runner.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"repair-runner.js","sourceRoot":"","sources":["../../../src/application/doctor/repair-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -284,7 +284,7 @@ async function observePlanArtifacts(fs, paths, raw) {
|
|
|
284
284
|
continue;
|
|
285
285
|
if (coreDocumentKindForPath(artifact.path, canon.canon) !== "plan")
|
|
286
286
|
continue;
|
|
287
|
-
const { failures, seal } = await planGrammarAtPublication(fs, root, artifact.content, declared, canon.canon.spec);
|
|
287
|
+
const { failures, seal } = await planGrammarAtPublication(fs, root, artifact.content, declared, canon.canon.spec, paths);
|
|
288
288
|
if (seal.status === "sealed")
|
|
289
289
|
baselines.set(artifact.path, seal.baseline);
|
|
290
290
|
evidence.push({ path: artifact.path, failures });
|