@rasensio/aidlc 1.15.2 → 1.17.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/README.md +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/compliance.d.ts +36 -0
- package/dist/commands/compliance.d.ts.map +1 -0
- package/dist/commands/compliance.js +275 -0
- package/dist/commands/compliance.js.map +1 -0
- package/dist/commands/constitution.d.ts +26 -0
- package/dist/commands/constitution.d.ts.map +1 -0
- package/dist/commands/constitution.js +145 -0
- package/dist/commands/constitution.js.map +1 -0
- package/dist/commands/cost.d.ts.map +1 -1
- package/dist/commands/cost.js +54 -35
- package/dist/commands/cost.js.map +1 -1
- package/dist/commands/doctor.js +7 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/gate.d.ts.map +1 -1
- package/dist/commands/gate.js +13 -0
- package/dist/commands/gate.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +119 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/metrics.d.ts.map +1 -1
- package/dist/commands/metrics.js +6 -1
- package/dist/commands/metrics.js.map +1 -1
- package/dist/commands/review.d.ts +2 -27
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +10 -166
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +7 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/transition.d.ts.map +1 -1
- package/dist/commands/transition.js +24 -1
- package/dist/commands/transition.js.map +1 -1
- package/dist/compile/adapters/claude-code.d.ts.map +1 -1
- package/dist/compile/adapters/claude-code.js +2 -1
- package/dist/compile/adapters/claude-code.js.map +1 -1
- package/dist/compile/adapters/codex.d.ts +22 -1
- package/dist/compile/adapters/codex.d.ts.map +1 -1
- package/dist/compile/adapters/codex.js +61 -27
- package/dist/compile/adapters/codex.js.map +1 -1
- package/dist/compile/adapters/cursor.d.ts.map +1 -1
- package/dist/compile/adapters/cursor.js +2 -19
- package/dist/compile/adapters/cursor.js.map +1 -1
- package/dist/compile/adapters/kiro.d.ts.map +1 -1
- package/dist/compile/adapters/kiro.js +1 -19
- package/dist/compile/adapters/kiro.js.map +1 -1
- package/dist/compile/adapters/windsurf.d.ts.map +1 -1
- package/dist/compile/adapters/windsurf.js +2 -1
- package/dist/compile/adapters/windsurf.js.map +1 -1
- package/dist/compile/guidance-install.d.ts +16 -19
- package/dist/compile/guidance-install.d.ts.map +1 -1
- package/dist/compile/guidance-install.js +26 -111
- package/dist/compile/guidance-install.js.map +1 -1
- package/dist/compile/layer-install.d.ts +122 -0
- package/dist/compile/layer-install.d.ts.map +1 -0
- package/dist/compile/layer-install.js +195 -0
- package/dist/compile/layer-install.js.map +1 -0
- package/dist/compile/loaders.d.ts +14 -0
- package/dist/compile/loaders.d.ts.map +1 -1
- package/dist/compile/loaders.js +23 -18
- package/dist/compile/loaders.js.map +1 -1
- package/dist/compile/skill-format.d.ts +39 -0
- package/dist/compile/skill-format.d.ts.map +1 -0
- package/dist/compile/skill-format.js +50 -0
- package/dist/compile/skill-format.js.map +1 -0
- package/dist/compliance/check.d.ts +79 -0
- package/dist/compliance/check.d.ts.map +1 -0
- package/dist/compliance/check.js +224 -0
- package/dist/compliance/check.js.map +1 -0
- package/dist/compliance/config.d.ts +91 -0
- package/dist/compliance/config.d.ts.map +1 -0
- package/dist/compliance/config.js +173 -0
- package/dist/compliance/config.js.map +1 -0
- package/dist/compliance/findings.d.ts +70 -0
- package/dist/compliance/findings.d.ts.map +1 -0
- package/dist/compliance/findings.js +132 -0
- package/dist/compliance/findings.js.map +1 -0
- package/dist/compliance/gate-criterion.d.ts +87 -0
- package/dist/compliance/gate-criterion.d.ts.map +1 -0
- package/dist/compliance/gate-criterion.js +168 -0
- package/dist/compliance/gate-criterion.js.map +1 -0
- package/dist/compliance/install.d.ts +135 -0
- package/dist/compliance/install.d.ts.map +1 -0
- package/dist/compliance/install.js +291 -0
- package/dist/compliance/install.js.map +1 -0
- package/dist/compliance/report.d.ts +144 -0
- package/dist/compliance/report.d.ts.map +1 -0
- package/dist/compliance/report.js +347 -0
- package/dist/compliance/report.js.map +1 -0
- package/dist/compliance/resolver.d.ts +65 -0
- package/dist/compliance/resolver.d.ts.map +1 -0
- package/dist/compliance/resolver.js +176 -0
- package/dist/compliance/resolver.js.map +1 -0
- package/dist/compliance/schema.d.ts +74 -0
- package/dist/compliance/schema.d.ts.map +1 -0
- package/dist/compliance/schema.js +474 -0
- package/dist/compliance/schema.js.map +1 -0
- package/dist/compliance/types.d.ts +140 -0
- package/dist/compliance/types.d.ts.map +1 -0
- package/dist/compliance/types.js +29 -0
- package/dist/compliance/types.js.map +1 -0
- package/dist/constitution/check.d.ts +22 -0
- package/dist/constitution/check.d.ts.map +1 -0
- package/dist/constitution/check.js +89 -0
- package/dist/constitution/check.js.map +1 -0
- package/dist/constitution/docx.d.ts +51 -0
- package/dist/constitution/docx.d.ts.map +1 -0
- package/dist/constitution/docx.js +157 -0
- package/dist/constitution/docx.js.map +1 -0
- package/dist/constitution/entries.d.ts +27 -0
- package/dist/constitution/entries.d.ts.map +1 -0
- package/dist/constitution/entries.js +65 -0
- package/dist/constitution/entries.js.map +1 -0
- package/dist/constitution/extract.d.ts +34 -0
- package/dist/constitution/extract.d.ts.map +1 -0
- package/dist/constitution/extract.js +117 -0
- package/dist/constitution/extract.js.map +1 -0
- package/dist/constitution/snapshot.d.ts +47 -0
- package/dist/constitution/snapshot.d.ts.map +1 -0
- package/dist/constitution/snapshot.js +159 -0
- package/dist/constitution/snapshot.js.map +1 -0
- package/dist/constitution/statements.d.ts +37 -0
- package/dist/constitution/statements.d.ts.map +1 -0
- package/dist/constitution/statements.js +64 -0
- package/dist/constitution/statements.js.map +1 -0
- package/dist/constitution/types.d.ts +80 -0
- package/dist/constitution/types.d.ts.map +1 -0
- package/dist/constitution/types.js +9 -0
- package/dist/constitution/types.js.map +1 -0
- package/dist/core/gate.d.ts +10 -0
- package/dist/core/gate.d.ts.map +1 -1
- package/dist/core/gate.js.map +1 -1
- package/dist/core/paths.d.ts +48 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +57 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/types.d.ts +12 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/cost/hooks/registry.d.ts +44 -0
- package/dist/cost/hooks/registry.d.ts.map +1 -0
- package/dist/cost/hooks/registry.js +66 -0
- package/dist/cost/hooks/registry.js.map +1 -0
- package/dist/cost/pin.d.ts +63 -0
- package/dist/cost/pin.d.ts.map +1 -0
- package/dist/cost/pin.js +95 -0
- package/dist/cost/pin.js.map +1 -0
- package/dist/cost/providers/claude-code.d.ts +9 -2
- package/dist/cost/providers/claude-code.d.ts.map +1 -1
- package/dist/cost/providers/claude-code.js +10 -5
- package/dist/cost/providers/claude-code.js.map +1 -1
- package/dist/cost/providers/codex.d.ts +107 -0
- package/dist/cost/providers/codex.d.ts.map +1 -0
- package/dist/cost/providers/codex.js +283 -0
- package/dist/cost/providers/codex.js.map +1 -0
- package/dist/cost/providers/index.d.ts.map +1 -1
- package/dist/cost/providers/index.js +6 -0
- package/dist/cost/providers/index.js.map +1 -1
- package/dist/cost/rates.d.ts.map +1 -1
- package/dist/cost/rates.js +14 -0
- package/dist/cost/rates.js.map +1 -1
- package/dist/cost/report.d.ts +23 -1
- package/dist/cost/report.d.ts.map +1 -1
- package/dist/cost/report.js +26 -5
- package/dist/cost/report.js.map +1 -1
- package/dist/cost/sessions.d.ts +10 -1
- package/dist/cost/sessions.d.ts.map +1 -1
- package/dist/cost/sessions.js +10 -2
- package/dist/cost/sessions.js.map +1 -1
- package/dist/cost/sync.d.ts.map +1 -1
- package/dist/cost/sync.js +190 -5
- package/dist/cost/sync.js.map +1 -1
- package/dist/doctor/migrations/compliance-pack-drift.d.ts +62 -0
- package/dist/doctor/migrations/compliance-pack-drift.d.ts.map +1 -0
- package/dist/doctor/migrations/compliance-pack-drift.js +255 -0
- package/dist/doctor/migrations/compliance-pack-drift.js.map +1 -0
- package/dist/doctor/migrations/index.d.ts.map +1 -1
- package/dist/doctor/migrations/index.js +11 -0
- package/dist/doctor/migrations/index.js.map +1 -1
- package/dist/doctor/migrations/legacy-cost-hooks.d.ts.map +1 -1
- package/dist/doctor/migrations/legacy-cost-hooks.js +7 -4
- package/dist/doctor/migrations/legacy-cost-hooks.js.map +1 -1
- package/dist/doctor/migrations/missing-cost-shim.d.ts.map +1 -1
- package/dist/doctor/migrations/missing-cost-shim.js +5 -4
- package/dist/doctor/migrations/missing-cost-shim.js.map +1 -1
- package/dist/doctor/migrations/outdated-cost-hooks.d.ts.map +1 -1
- package/dist/doctor/migrations/outdated-cost-hooks.js +7 -4
- package/dist/doctor/migrations/outdated-cost-hooks.js.map +1 -1
- package/dist/doctor/runner.js +14 -0
- package/dist/doctor/runner.js.map +1 -1
- package/dist/doctor/types.d.ts +35 -3
- package/dist/doctor/types.d.ts.map +1 -1
- package/dist/menu/roster.d.ts.map +1 -1
- package/dist/menu/roster.js +5 -0
- package/dist/menu/roster.js.map +1 -1
- package/dist/metrics/report.d.ts.map +1 -1
- package/dist/metrics/report.js +11 -2
- package/dist/metrics/report.js.map +1 -1
- package/dist/review/findings-parser.d.ts +92 -0
- package/dist/review/findings-parser.d.ts.map +1 -0
- package/dist/review/findings-parser.js +196 -0
- package/dist/review/findings-parser.js.map +1 -0
- package/dist/setup/setup-compute.d.ts +10 -15
- package/dist/setup/setup-compute.d.ts.map +1 -1
- package/dist/setup/setup-compute.js +39 -0
- package/dist/setup/setup-compute.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compliance pack drift migrations (compliance-packs/AC-52, AC-91, AC-100, AC-101).
|
|
3
|
+
*
|
|
4
|
+
* Three conditions, three different answers, and the differences matter more than the
|
|
5
|
+
* checks:
|
|
6
|
+
*
|
|
7
|
+
* **A config record whose layer file is present but unregistered** — `safe`. The
|
|
8
|
+
* remedy is to re-register the `index.yaml` entry and nothing else. Deliberately
|
|
9
|
+
* narrow: the obvious wider remedy, "install the missing layers", would write the
|
|
10
|
+
* *bundled* body, so a project whose recorded version is older than the shipped one
|
|
11
|
+
* would get its layers silently replaced with newer content and new hashes recorded.
|
|
12
|
+
* That is a pack upgrade performed by `aidlc doctor`, which pack policy forbids
|
|
13
|
+
* outright — pack content is what a buyer is told governs them.
|
|
14
|
+
*
|
|
15
|
+
* **A config record whose layer file is missing, at a different version** — `report`.
|
|
16
|
+
* Doctor states it and applies nothing, because the only fix is a decision: reinstall
|
|
17
|
+
* at the recorded version, or upgrade.
|
|
18
|
+
*
|
|
19
|
+
* **A registered layer belonging to no installed pack** — `confirm`. The remedy drops
|
|
20
|
+
* the `index.yaml` entry so the layer stops reaching agents, and never touches the
|
|
21
|
+
* file. A layer on disk may be a project's edited copy, which is theirs.
|
|
22
|
+
*
|
|
23
|
+
* **An installed layer whose unreviewed-draft notice has been edited out** —
|
|
24
|
+
* `report`. There is no legitimate remedy: re-inserting the notice would write to a
|
|
25
|
+
* file the framework has promised never to touch, and a no-op `apply` on a `confirm`
|
|
26
|
+
* migration would leave doctor exiting 1 on every run, turning an edited-away
|
|
27
|
+
* disclaimer into a permanently red health check.
|
|
28
|
+
*
|
|
29
|
+
* No migration here deletes a guidance layer file, under any tier or with `--yes`.
|
|
30
|
+
*/
|
|
31
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
32
|
+
import { join } from 'node:path';
|
|
33
|
+
import { readIndexEntries, unregisterLayers } from '../../compile/layer-install.js';
|
|
34
|
+
import { serializeYaml } from '../../state/yaml-helpers.js';
|
|
35
|
+
import { readComplianceConfig } from '../../compliance/config.js';
|
|
36
|
+
import { resolvePack } from '../../compliance/resolver.js';
|
|
37
|
+
import { UNREVIEWED_NOTICE } from '../../compliance/schema.js';
|
|
38
|
+
/** A project's guidance directory. */
|
|
39
|
+
function guidanceDir(projectRoot) {
|
|
40
|
+
return join(projectRoot, '.aidlc', 'guidance');
|
|
41
|
+
}
|
|
42
|
+
/** Registered layer names, keyed by the file they register. */
|
|
43
|
+
function registrations(projectRoot) {
|
|
44
|
+
const entries = readIndexEntries(join(guidanceDir(projectRoot), 'index.yaml')) ?? [];
|
|
45
|
+
return new Map(entries.map((e) => [e.file, e.name]));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Layer files an installed pack owns, from the config record.
|
|
49
|
+
*
|
|
50
|
+
* The record rather than the pack, because a pack may have stopped shipping while its
|
|
51
|
+
* layers are still installed — the case where the record is the only account of what
|
|
52
|
+
* exists.
|
|
53
|
+
*/
|
|
54
|
+
function recordedFiles(ctx) {
|
|
55
|
+
return readComplianceConfig(ctx.projectRoot).packs.flatMap((pack) => pack.files.map((f) => ({ file: f.path, packId: pack.id })));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A config record naming a layer that is present on disk but not registered.
|
|
59
|
+
*
|
|
60
|
+
* Safe because the remedy adds an index entry and writes no layer body.
|
|
61
|
+
*/
|
|
62
|
+
export const compliancePackUnregistered = {
|
|
63
|
+
id: 'compliance-pack-unregistered',
|
|
64
|
+
tier: 'safe',
|
|
65
|
+
check(ctx) {
|
|
66
|
+
const config = readComplianceConfig(ctx.projectRoot);
|
|
67
|
+
if (config.packs.length === 0) {
|
|
68
|
+
return { applicable: false, reason: 'no compliance pack installed' };
|
|
69
|
+
}
|
|
70
|
+
const registered = registrations(ctx.projectRoot);
|
|
71
|
+
const dir = guidanceDir(ctx.projectRoot);
|
|
72
|
+
const orphans = recordedFiles(ctx).filter(({ file }) => existsSync(join(dir, file)) && !registered.has(file));
|
|
73
|
+
if (orphans.length === 0)
|
|
74
|
+
return { applicable: true, pending: false };
|
|
75
|
+
return {
|
|
76
|
+
applicable: true,
|
|
77
|
+
pending: true,
|
|
78
|
+
description: `would re-register ${orphans.length} installed pack layer(s) in ` +
|
|
79
|
+
`.aidlc/guidance/index.yaml: ${orphans.map((o) => o.file).join(', ')}`,
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
apply(ctx) {
|
|
83
|
+
const dir = guidanceDir(ctx.projectRoot);
|
|
84
|
+
const indexPath = join(dir, 'index.yaml');
|
|
85
|
+
const entries = readIndexEntries(indexPath) ?? [];
|
|
86
|
+
const registered = new Set(entries.map((e) => e.file));
|
|
87
|
+
const added = [];
|
|
88
|
+
for (const { file, packId } of recordedFiles(ctx)) {
|
|
89
|
+
if (registered.has(file) || !existsSync(join(dir, file)))
|
|
90
|
+
continue;
|
|
91
|
+
// Take the layer's registered name from the pack when it still resolves; fall
|
|
92
|
+
// back to the filename stem, which is what every shipped pack uses anyway.
|
|
93
|
+
const resolved = resolvePack(packId);
|
|
94
|
+
const name = resolved.ok
|
|
95
|
+
? (resolved.pack.layers.find((l) => l.file === file)?.name ?? file.replace(/\.md$/, ''))
|
|
96
|
+
: file.replace(/\.md$/, '');
|
|
97
|
+
entries.push({ name, file, always_pointer: true });
|
|
98
|
+
registered.add(file);
|
|
99
|
+
added.push(name);
|
|
100
|
+
}
|
|
101
|
+
if (added.length > 0) {
|
|
102
|
+
// Written through the same serializer the installer uses, so the index keeps one
|
|
103
|
+
// shape regardless of which code path last touched it.
|
|
104
|
+
writeFileSync(indexPath, serializeYaml({ layers: entries }), 'utf8');
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
changed: added.length > 0,
|
|
108
|
+
summary: added.length > 0
|
|
109
|
+
? `re-registered pack layer(s): ${added.join(', ')}`
|
|
110
|
+
: 'pack layers already registered',
|
|
111
|
+
};
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* A config record whose layer file is gone, where the shipped version differs.
|
|
116
|
+
*
|
|
117
|
+
* Report tier: the fix is a decision — reinstall at the recorded version, or take the
|
|
118
|
+
* newer one — and doctor may not make it silently.
|
|
119
|
+
*/
|
|
120
|
+
export const compliancePackMissingLayer = {
|
|
121
|
+
id: 'compliance-pack-missing-layer',
|
|
122
|
+
tier: 'report',
|
|
123
|
+
check(ctx) {
|
|
124
|
+
const config = readComplianceConfig(ctx.projectRoot);
|
|
125
|
+
if (config.packs.length === 0) {
|
|
126
|
+
return { applicable: false, reason: 'no compliance pack installed' };
|
|
127
|
+
}
|
|
128
|
+
const dir = guidanceDir(ctx.projectRoot);
|
|
129
|
+
const missing = [];
|
|
130
|
+
const stale = [];
|
|
131
|
+
for (const pack of config.packs) {
|
|
132
|
+
const absent = pack.files.filter((f) => !existsSync(join(dir, f.path)));
|
|
133
|
+
if (absent.length === 0)
|
|
134
|
+
continue;
|
|
135
|
+
const resolved = resolvePack(pack.id);
|
|
136
|
+
if (resolved.ok && resolved.pack.meta.version !== pack.version) {
|
|
137
|
+
stale.push(`${pack.id} (recorded ${pack.version}, available ${resolved.pack.meta.version})`);
|
|
138
|
+
}
|
|
139
|
+
missing.push(...absent.map((f) => `.aidlc/guidance/${f.path}`));
|
|
140
|
+
}
|
|
141
|
+
if (missing.length === 0)
|
|
142
|
+
return { applicable: true, pending: false };
|
|
143
|
+
const detail = stale.length > 0
|
|
144
|
+
? `${missing.join(', ')} — and the available version differs for ${stale.join('; ')}, ` +
|
|
145
|
+
`so reinstalling would change what governs this project. ` +
|
|
146
|
+
`Run \`aidlc compliance add\` to reinstall at the available version, or ` +
|
|
147
|
+
`\`aidlc compliance remove\` to drop the pack.`
|
|
148
|
+
: `${missing.join(', ')} — run \`aidlc compliance add\` to reinstall.`;
|
|
149
|
+
return {
|
|
150
|
+
applicable: true,
|
|
151
|
+
pending: true,
|
|
152
|
+
description: `installed pack layer file(s) are missing: ${detail}`,
|
|
153
|
+
};
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* A registered layer belonging to no installed pack.
|
|
158
|
+
*
|
|
159
|
+
* Confirm tier. The remedy drops the registration only; the file stays, because it may
|
|
160
|
+
* be a project's edited copy.
|
|
161
|
+
*/
|
|
162
|
+
export const complianceLayerUnowned = {
|
|
163
|
+
id: 'compliance-layer-unowned',
|
|
164
|
+
tier: 'confirm',
|
|
165
|
+
check(ctx) {
|
|
166
|
+
const dir = guidanceDir(ctx.projectRoot);
|
|
167
|
+
const entries = readIndexEntries(join(dir, 'index.yaml'));
|
|
168
|
+
if (!entries)
|
|
169
|
+
return { applicable: false, reason: 'no guidance index' };
|
|
170
|
+
// Only entries that declare themselves pack layers are candidates. A framework
|
|
171
|
+
// layer, or one the project authored, is never in scope here.
|
|
172
|
+
const packEntries = entries.filter((e) => e.always_pointer === true);
|
|
173
|
+
if (packEntries.length === 0) {
|
|
174
|
+
return { applicable: false, reason: 'no pack layers registered' };
|
|
175
|
+
}
|
|
176
|
+
const owned = new Set(recordedFiles(ctx).map((r) => r.file));
|
|
177
|
+
const unowned = packEntries.filter((e) => !owned.has(e.file));
|
|
178
|
+
if (unowned.length === 0)
|
|
179
|
+
return { applicable: true, pending: false };
|
|
180
|
+
return {
|
|
181
|
+
applicable: true,
|
|
182
|
+
pending: true,
|
|
183
|
+
description: `would drop ${unowned.length} guidance registration(s) belonging to no installed pack: ` +
|
|
184
|
+
`${unowned.map((e) => e.name).join(', ')} — the files stay on disk`,
|
|
185
|
+
commands: [`aidlc doctor --yes # drops the index entries only, never the files`],
|
|
186
|
+
};
|
|
187
|
+
},
|
|
188
|
+
apply(ctx) {
|
|
189
|
+
const dir = guidanceDir(ctx.projectRoot);
|
|
190
|
+
const entries = readIndexEntries(join(dir, 'index.yaml')) ?? [];
|
|
191
|
+
const owned = new Set(recordedFiles(ctx).map((r) => r.file));
|
|
192
|
+
const unowned = entries
|
|
193
|
+
.filter((e) => e.always_pointer === true && !owned.has(e.file))
|
|
194
|
+
.map((e) => e.name);
|
|
195
|
+
const removed = unregisterLayers(dir, unowned);
|
|
196
|
+
return {
|
|
197
|
+
changed: removed.length > 0,
|
|
198
|
+
summary: removed.length > 0
|
|
199
|
+
? `dropped registration(s), files kept on disk: ${removed.join(', ')}`
|
|
200
|
+
: 'no unowned pack registrations',
|
|
201
|
+
};
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* An installed pack layer whose unreviewed-draft notice is gone.
|
|
206
|
+
*
|
|
207
|
+
* Report tier, and the clearest case for that tier existing. Re-inserting the notice
|
|
208
|
+
* would write to a file the framework has promised never to touch; a no-op apply on a
|
|
209
|
+
* confirm-tier migration would leave the check pending forever and doctor exiting 1 on
|
|
210
|
+
* every run, which turns a missing disclaimer into a permanently red health check
|
|
211
|
+
* nobody can clear.
|
|
212
|
+
*/
|
|
213
|
+
export const complianceNoticeMissing = {
|
|
214
|
+
id: 'compliance-notice-missing',
|
|
215
|
+
tier: 'report',
|
|
216
|
+
check(ctx) {
|
|
217
|
+
const config = readComplianceConfig(ctx.projectRoot);
|
|
218
|
+
if (config.packs.length === 0) {
|
|
219
|
+
return { applicable: false, reason: 'no compliance pack installed' };
|
|
220
|
+
}
|
|
221
|
+
const dir = guidanceDir(ctx.projectRoot);
|
|
222
|
+
const stripped = [];
|
|
223
|
+
for (const pack of config.packs) {
|
|
224
|
+
const resolved = resolvePack(pack.id);
|
|
225
|
+
// Only a pack that declares itself an unreviewed draft owes the notice.
|
|
226
|
+
if (!resolved.ok || resolved.pack.meta.reviewed_by !== null)
|
|
227
|
+
continue;
|
|
228
|
+
const present = pack.files.filter((f) => existsSync(join(dir, f.path)));
|
|
229
|
+
if (present.length === 0)
|
|
230
|
+
continue;
|
|
231
|
+
const anyHasNotice = present.some((f) => {
|
|
232
|
+
try {
|
|
233
|
+
return readFileSync(join(dir, f.path), 'utf8').toLowerCase().includes(UNREVIEWED_NOTICE);
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
if (!anyHasNotice) {
|
|
240
|
+
stripped.push(pack.id);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (stripped.length === 0)
|
|
244
|
+
return { applicable: true, pending: false };
|
|
245
|
+
return {
|
|
246
|
+
applicable: true,
|
|
247
|
+
pending: true,
|
|
248
|
+
description: `the unreviewed-draft notice is missing from the installed layer(s) of ` +
|
|
249
|
+
`${stripped.join(', ')}. That pack's control text has not been reviewed by a ` +
|
|
250
|
+
`compliance practitioner, and a reader of the layer can no longer see it. ` +
|
|
251
|
+
`Reports still state it. Restore the sentence, or reinstall the pack.`,
|
|
252
|
+
};
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
//# sourceMappingURL=compliance-pack-drift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-pack-drift.js","sourceRoot":"","sources":["../../../src/doctor/migrations/compliance-pack-drift.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA2B7C,eAAO,MAAM,UAAU,EAAE,SAAS,EAgDjC,CAAC"}
|
|
@@ -24,6 +24,7 @@ import { staleIdeaSkill } from './stale-idea-skill.js';
|
|
|
24
24
|
import { roadmapLayout } from './roadmap-layout.js';
|
|
25
25
|
import { roadmapItemTitles } from './roadmap-item-titles.js';
|
|
26
26
|
import { instanceCompletion } from './instance-completion.js';
|
|
27
|
+
import { complianceLayerUnowned, complianceNoticeMissing, compliancePackMissingLayer, compliancePackUnregistered, } from './compliance-pack-drift.js';
|
|
27
28
|
export const MIGRATIONS = [
|
|
28
29
|
costGitignore,
|
|
29
30
|
knowledgeGitignore,
|
|
@@ -62,5 +63,15 @@ export const MIGRATIONS = [
|
|
|
62
63
|
// Confirm tier: shows the exact `run:` commands from actions.yaml before
|
|
63
64
|
// recording machine-local trust — the event bus declines them until then.
|
|
64
65
|
trustRunActions,
|
|
66
|
+
// Compliance pack drift. Ordered re-register → report-missing → drop-unowned so one
|
|
67
|
+
// run repairs what it safely can before reporting what it cannot, and never drops a
|
|
68
|
+
// registration it was about to restore. None of the three deletes a layer file under
|
|
69
|
+
// any tier (compliance-packs/AC-101).
|
|
70
|
+
compliancePackUnregistered,
|
|
71
|
+
compliancePackMissingLayer,
|
|
72
|
+
complianceLayerUnowned,
|
|
73
|
+
// Report tier: no legitimate remedy exists, so it states the condition and never
|
|
74
|
+
// gates doctor's exit code (compliance-packs/AC-91).
|
|
75
|
+
complianceNoticeMissing,
|
|
65
76
|
];
|
|
66
77
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,aAAa;IACb,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,eAAe;IACf,4EAA4E;IAC5E,2EAA2E;IAC3E,8EAA8E;IAC9E,cAAc;IACd,aAAa;IACb,0EAA0E;IAC1E,qEAAqE;IACrE,+EAA+E;IAC/E,0EAA0E;IAC1E,mDAAmD;IACnD,iBAAiB;IACjB,8EAA8E;IAC9E,0EAA0E;IAC1E,yEAAyE;IACzE,kBAAkB;IAClB,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,wBAAwB;IACxB,aAAa;IACb,kBAAkB;IAClB,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,eAAe;IACf,eAAe;IACf,gFAAgF;IAChF,iEAAiE;IACjE,iBAAiB;IACjB,yEAAyE;IACzE,0EAA0E;IAC1E,eAAe;IACf,oFAAoF;IACpF,oFAAoF;IACpF,qFAAqF;IACrF,sCAAsC;IACtC,0BAA0B;IAC1B,0BAA0B;IAC1B,sBAAsB;IACtB,iFAAiF;IACjF,qDAAqD;IACrD,uBAAuB;CACxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-cost-hooks.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/legacy-cost-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"legacy-cost-hooks.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/legacy-cost-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAuB7C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAOrE;AAWD,eAAO,MAAM,eAAe,EAAE,SAsB7B,CAAC"}
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
import { claudeCodeHookStatus, installClaudeCodeHooks } from '../../cost/hooks/claude-code.js';
|
|
31
31
|
import { kiroHookStatus, installKiroHooks } from '../../cost/hooks/kiro.js';
|
|
32
32
|
import { cliEntryPath } from '../../cost/hooks/entry.js';
|
|
33
|
+
import { hookPlatforms, hookInstaller } from '../../cost/hooks/registry.js';
|
|
33
34
|
/*
|
|
34
35
|
* Deliberately NOT driven by allProviders(): that registry is populated by an
|
|
35
36
|
* explicit registerBuiltinProviders() call, so any caller that has not made it
|
|
@@ -38,10 +39,12 @@ import { cliEntryPath } from '../../cost/hooks/entry.js';
|
|
|
38
39
|
* finds nothing is worse than no diagnostic. Hook installation exists only for
|
|
39
40
|
* these two platforms, so the pairing is static.
|
|
40
41
|
*/
|
|
41
|
-
const HOOK_PLATFORMS =
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
const HOOK_PLATFORMS = hookPlatforms().map((name) => {
|
|
43
|
+
const h = hookInstaller(name);
|
|
44
|
+
if (h === null)
|
|
45
|
+
throw new Error(`hook registry inconsistent: no installer for ${name}`);
|
|
46
|
+
return { name, status: h.status, install: h.install };
|
|
47
|
+
});
|
|
45
48
|
/**
|
|
46
49
|
* Platforms whose installed hook still uses the pre-shim absolute-path form.
|
|
47
50
|
* Read-only half, exported for reuse and direct testing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-cost-hooks.js","sourceRoot":"","sources":["../../../src/doctor/migrations/legacy-cost-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"legacy-cost-hooks.js","sourceRoot":"","sources":["../../../src/doctor/migrations/legacy-cost-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing-cost-shim.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/missing-cost-shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"missing-cost-shim.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/missing-cost-shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAmB7C;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAMvE;AAED,eAAO,MAAM,eAAe,EAAE,SAiC7B,CAAC"}
|
|
@@ -30,16 +30,17 @@ import { claudeCodeHookStatus } from '../../cost/hooks/claude-code.js';
|
|
|
30
30
|
import { kiroHookStatus } from '../../cost/hooks/kiro.js';
|
|
31
31
|
import { cliEntryPath } from '../../cost/hooks/entry.js';
|
|
32
32
|
import { describeShimProblem, shimProblem, writeShim } from '../../cost/hooks/shim.js';
|
|
33
|
+
import { hookPlatforms, hookStatusFor } from '../../cost/hooks/registry.js';
|
|
33
34
|
/*
|
|
34
35
|
* Static for the same reason `legacy-cost-hooks` is: allProviders() is only
|
|
35
36
|
* populated by an explicit registerBuiltinProviders() call, so a caller that has
|
|
36
37
|
* not made it sees an empty list and the migration silently finds nothing. Hook
|
|
37
38
|
* installation exists for these two platforms only.
|
|
38
39
|
*/
|
|
39
|
-
const HOOK_PLATFORMS =
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
const HOOK_PLATFORMS = hookPlatforms().map((name) => ({
|
|
41
|
+
name,
|
|
42
|
+
status: (root) => hookStatusFor(name, root),
|
|
43
|
+
}));
|
|
43
44
|
/**
|
|
44
45
|
* Platforms whose hook is armed against an unusable shim. Read-only half,
|
|
45
46
|
* exported for reuse and direct testing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing-cost-shim.js","sourceRoot":"","sources":["../../../src/doctor/migrations/missing-cost-shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"missing-cost-shim.js","sourceRoot":"","sources":["../../../src/doctor/migrations/missing-cost-shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAO5E;;;;;GAKG;AACH,MAAM,cAAc,GAAmB,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpE,IAAI;IACJ,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAuC;CAC1F,CAAC,CAAC,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACjD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAClC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAc;IACxC,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,MAAM;IACZ,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACvE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,IAAI;YACb,WAAW,EACT,GAAG,mBAAmB,CAAC,OAAQ,CAAC,QAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;gBACjE,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,sBAAsB;gBACpE,2EAA2E;SAC9E,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;QAErF,2EAA2E;QAC3E,uEAAuE;QACvE,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QAE7D,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,mBAAmB,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAC9G,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,0CAA0C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACzE,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outdated-cost-hooks.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/outdated-cost-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"outdated-cost-hooks.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/outdated-cost-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkB7C;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAOvE;AAWD,eAAO,MAAM,iBAAiB,EAAE,SAqB/B,CAAC"}
|
|
@@ -25,13 +25,16 @@
|
|
|
25
25
|
import { claudeCodeHookStatus, installClaudeCodeHooks } from '../../cost/hooks/claude-code.js';
|
|
26
26
|
import { kiroHookStatus, installKiroHooks } from '../../cost/hooks/kiro.js';
|
|
27
27
|
import { cliEntryPath } from '../../cost/hooks/entry.js';
|
|
28
|
+
import { hookPlatforms, hookInstaller } from '../../cost/hooks/registry.js';
|
|
28
29
|
// Static for the same reason as legacy-cost-hooks: allProviders() is empty unless
|
|
29
30
|
// someone has called registerBuiltinProviders(), and a diagnostic that silently
|
|
30
31
|
// finds nothing is worse than no diagnostic.
|
|
31
|
-
const HOOK_PLATFORMS =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
const HOOK_PLATFORMS = hookPlatforms().map((name) => {
|
|
33
|
+
const h = hookInstaller(name);
|
|
34
|
+
if (h === null)
|
|
35
|
+
throw new Error(`hook registry inconsistent: no installer for ${name}`);
|
|
36
|
+
return { name, status: h.status, install: h.install };
|
|
37
|
+
});
|
|
35
38
|
/**
|
|
36
39
|
* Platforms whose installed hook command differs from the current one. Read-only
|
|
37
40
|
* half, exported for reuse and direct testing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outdated-cost-hooks.js","sourceRoot":"","sources":["../../../src/doctor/migrations/outdated-cost-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"outdated-cost-hooks.js","sourceRoot":"","sources":["../../../src/doctor/migrations/outdated-cost-hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor/runner.js
CHANGED
|
@@ -45,6 +45,14 @@ async function runOne(ctx, m, dryRun, confirm) {
|
|
|
45
45
|
if (!checked.pending) {
|
|
46
46
|
return outcome(m, 'clean', 'nothing to do');
|
|
47
47
|
}
|
|
48
|
+
// Report tier: state the condition and stop. Checked before the dry-run branch
|
|
49
|
+
// because "would apply" is false for it in every mode — there is nothing to
|
|
50
|
+
// apply, in a dry run or otherwise. `reported` is not `pending`, so it never
|
|
51
|
+
// reaches `pendingConfirm` and never gates doctor's exit code
|
|
52
|
+
// (compliance-packs/AC-104).
|
|
53
|
+
if (m.tier === 'report') {
|
|
54
|
+
return outcome(m, 'reported', checked.description);
|
|
55
|
+
}
|
|
48
56
|
if (dryRun) {
|
|
49
57
|
return {
|
|
50
58
|
...outcome(m, 'would-apply', checked.description),
|
|
@@ -87,6 +95,12 @@ async function runOne(ctx, m, dryRun, confirm) {
|
|
|
87
95
|
return applyOne(ctx, m);
|
|
88
96
|
}
|
|
89
97
|
function applyOne(ctx, m) {
|
|
98
|
+
// `apply` is optional only for the `report` tier, which returns above and never
|
|
99
|
+
// reaches here. Reaching this with no `apply` means a registry mistake, so it is
|
|
100
|
+
// reported as an error rather than silently treated as clean.
|
|
101
|
+
if (!m.apply) {
|
|
102
|
+
return outcome(m, 'error', `migration '${m.id}' is tier '${m.tier}' but defines no apply`);
|
|
103
|
+
}
|
|
90
104
|
try {
|
|
91
105
|
const applied = m.apply(ctx);
|
|
92
106
|
return outcome(m, applied.changed ? 'applied' : 'clean', applied.summary);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/doctor/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/doctor/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor/types.d.ts
CHANGED
|
@@ -7,7 +7,27 @@
|
|
|
7
7
|
* No migration-version stamp exists anywhere (AC-3): repos self-heal
|
|
8
8
|
* and converge regardless of the version they were initialized at.
|
|
9
9
|
*/
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* How a migration is allowed to act.
|
|
12
|
+
*
|
|
13
|
+
* - `safe` — applies automatically, without prompting.
|
|
14
|
+
* - `confirm` — applies only with `--yes` or an interactive confirmation.
|
|
15
|
+
* - `report` — states a condition and applies **nothing**. Its `apply` is never
|
|
16
|
+
* called, and it is excluded from the pending-confirm set so it never gates
|
|
17
|
+
* doctor's exit code.
|
|
18
|
+
*
|
|
19
|
+
* The `report` tier exists because two compliance obligations have no legitimate
|
|
20
|
+
* remedy. When someone edits the unreviewed-draft notice out of an installed pack
|
|
21
|
+
* layer, re-inserting it would write to a file the framework has promised never to
|
|
22
|
+
* touch; and an out-of-date pack must not be upgraded silently by `doctor`. With
|
|
23
|
+
* only `safe` and `confirm` available, the options were a migration that writes
|
|
24
|
+
* where it must not, or a no-op `apply` leaving the check pending forever — which
|
|
25
|
+
* makes `aidlc doctor` exit 1 on every run and turns an edited-away disclaimer into
|
|
26
|
+
* a permanently red health check.
|
|
27
|
+
*
|
|
28
|
+
* Requirements: compliance-packs/AC-104
|
|
29
|
+
*/
|
|
30
|
+
export type MigrationTier = 'safe' | 'confirm' | 'report';
|
|
11
31
|
export interface DoctorContext {
|
|
12
32
|
projectRoot: string;
|
|
13
33
|
/** Git common dir, or null outside a git repo (AC-12). */
|
|
@@ -47,13 +67,25 @@ export interface Migration {
|
|
|
47
67
|
id: string;
|
|
48
68
|
tier: MigrationTier;
|
|
49
69
|
check(ctx: DoctorContext): CheckResult;
|
|
50
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Remedy the condition `check` found.
|
|
72
|
+
*
|
|
73
|
+
* Optional only for the `report` tier, where there is no legitimate remedy and
|
|
74
|
+
* the runner never calls it. Every `safe` and `confirm` migration must define it;
|
|
75
|
+
* the registry test asserts that.
|
|
76
|
+
*/
|
|
77
|
+
apply?(ctx: DoctorContext): ApplyResult;
|
|
51
78
|
}
|
|
52
79
|
export type PendingReason = 'declined' | 'non-interactive' | 'blocked';
|
|
53
80
|
export interface MigrationOutcome {
|
|
54
81
|
id: string;
|
|
55
82
|
tier: MigrationTier;
|
|
56
|
-
|
|
83
|
+
/**
|
|
84
|
+
* `reported` is the `report` tier's terminal state: the condition holds, it is
|
|
85
|
+
* listed, and nothing was or will be applied. Deliberately not `pending`, which
|
|
86
|
+
* means "somebody still has to act and doctor's exit code says so".
|
|
87
|
+
*/
|
|
88
|
+
status: 'applied' | 'clean' | 'not-applicable' | 'would-apply' | 'pending' | 'reported' | 'error';
|
|
57
89
|
detail: string;
|
|
58
90
|
commands?: string[];
|
|
59
91
|
pendingReason?: PendingReason;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/doctor/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/doctor/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wDAAwD;IACxD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mEAAmE;IACnE,GAAG,EAAE,IAAI,CAAC;IACV,oEAAoE;IACpE,WAAW,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,UAAU,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,GACpC;IACE,UAAU,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE,IAAI,CAAC;IACd,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAAC;IACvC;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAAC;CACzC;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB;;;;OAIG;IACH,MAAM,EACF,SAAS,GACT,OAAO,GACP,gBAAgB,GAChB,aAAa,GACb,SAAS,GACT,UAAU,GACV,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,4EAA4E;IAC5E,cAAc,EAAE,gBAAgB,EAAE,CAAC;CACpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster.d.ts","sourceRoot":"","sources":["../../src/menu/roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE/E,MAAM,WAAW,SAAS;IACxB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,SAAS,SAAS,EAatC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"roster.d.ts","sourceRoot":"","sources":["../../src/menu/roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE/E,MAAM,WAAW,SAAS;IACxB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,SAAS,SAAS,EAatC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBvD,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAM7C,CAAC"}
|
package/dist/menu/roster.js
CHANGED
|
@@ -53,6 +53,11 @@ export const EXCLUSIONS = {
|
|
|
53
53
|
knowledge: 'bare `aidlc knowledge` exits 1; its useful leaf `knowledge query` is a roster entry',
|
|
54
54
|
setup: 'hidden deprecated alias of `init`',
|
|
55
55
|
menu: 'itself',
|
|
56
|
+
compliance: 'opt-in feature — the group is inert until a pack is installed, and the menu ' +
|
|
57
|
+
'reads no project state, so it cannot tell. Rostering a leaf would offer every ' +
|
|
58
|
+
'project a report that most have no packs for; excluding keeps the menu ' +
|
|
59
|
+
'byte-identical for a project with no pack (compliance-packs/AC-51).',
|
|
60
|
+
constitution: 'bare `aidlc constitution` exits 1; the aidlc-constitution skill is the front door to both leaves',
|
|
56
61
|
};
|
|
57
62
|
/** Bucket order for grouping; matches the order entries appear in `ROSTER`. */
|
|
58
63
|
export const BUCKET_ORDER = [
|
package/dist/menu/roster.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster.js","sourceRoot":"","sources":["../../src/menu/roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAkBH;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAyB;IAC1C,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,8BAA8B,EAAE;IAC1E,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACjE,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE;IAC5D,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;IAClF,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACtE,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE;IAC/D,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAClE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACtF,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACpE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,0BAA0B,EAAE;CAC1E,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAqC;IAC1D,IAAI,EAAE,yDAAyD;IAC/D,UAAU,EAAE,kDAAkD;IAC9D,KAAK,EAAE,mCAAmC;IAC1C,OAAO,EAAE,mCAAmC;IAC5C,GAAG,EAAE,oEAAoE;IACzE,SAAS,EACP,qFAAqF;IACvF,KAAK,EAAE,mCAAmC;IAC1C,IAAI,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"roster.js","sourceRoot":"","sources":["../../src/menu/roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAkBH;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAyB;IAC1C,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,8BAA8B,EAAE;IAC1E,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACjE,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE;IAC5D,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;IAClF,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACtE,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE;IAC/D,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAClE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACtF,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACpE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,0BAA0B,EAAE;CAC1E,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAqC;IAC1D,IAAI,EAAE,yDAAyD;IAC/D,UAAU,EAAE,kDAAkD;IAC9D,KAAK,EAAE,mCAAmC;IAC1C,OAAO,EAAE,mCAAmC;IAC5C,GAAG,EAAE,oEAAoE;IACzE,SAAS,EACP,qFAAqF;IACvF,KAAK,EAAE,mCAAmC;IAC1C,IAAI,EAAE,QAAQ;IACd,UAAU,EACR,8EAA8E;QAC9E,gFAAgF;QAChF,yEAAyE;QACzE,qEAAqE;IACvE,YAAY,EACV,kGAAkG;CACrG,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,UAAU;CACX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/metrics/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,EAAG,sBAA+B,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kFAAkF;IAClF,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,4DAA4D;IAC5D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qFAAqF;IACrF,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,+DAA+D;IAC/D,iBAAiB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AAMD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAmBrF;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAUnF;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACvC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAgCpD;AAMD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAqC1E;AAYD,0DAA0D;AAC1D,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,MAAuC,GACjD,aAAa,
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/metrics/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,EAAG,sBAA+B,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kFAAkF;IAClF,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,4DAA4D;IAC5D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qFAAqF;IACrF,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,+DAA+D;IAC/D,iBAAiB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AAMD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAmBrF;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAUnF;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACvC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAgCpD;AAMD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAqC1E;AAYD,0DAA0D;AAC1D,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,MAAuC,GACjD,aAAa,CAkJf"}
|