@event4u/agent-config 9.10.0 → 9.11.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +59 -0
- package/README.md +12 -15
- package/agents/templates/.ai-council.yml.example +481 -0
- package/agents/templates/.ai-video.xml.example +247 -0
- package/dist/agent-src/rules/design-fidelity.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +15 -2
- package/dist/agent-src/skills/fe-design/SKILL.md +10 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +30 -30
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +88 -33
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +20 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +20 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +179 -0
- package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +155 -4
- package/dist/agent-src/templates/scripts/work_engine/state.ts +21 -4
- package/dist/cli/initRouting.js +74 -11
- package/dist/cli/initRouting.js.map +1 -1
- package/dist/cli/main.js +14 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli-delegate/chunk-4SV3XGFA.js +6910 -0
- package/dist/cli-delegate/chunk-736JCWLM.js +1104 -0
- package/dist/cli-delegate/chunk-7DSAMZFU.js +356 -0
- package/dist/cli-delegate/chunk-7HQ52DHU.js +74 -0
- package/dist/cli-delegate/chunk-BJGXZNPM.js +266 -0
- package/dist/cli-delegate/chunk-FTAISGDQ.js +117 -0
- package/dist/cli-delegate/chunk-GME3Q44L.js +82 -0
- package/dist/cli-delegate/chunk-GRRPEPRN.js +336 -0
- package/dist/cli-delegate/chunk-HJ6DAJHR.js +502 -0
- package/dist/cli-delegate/chunk-IR7P7JWA.js +872 -0
- package/dist/cli-delegate/chunk-J55WI3RR.js +47 -0
- package/dist/cli-delegate/chunk-MCJYCQPF.js +35 -0
- package/dist/cli-delegate/chunk-NDJLNC6Q.js +169 -0
- package/dist/cli-delegate/chunk-OMIVVCG2.js +26 -0
- package/dist/cli-delegate/chunk-OY53J6II.js +7336 -0
- package/dist/cli-delegate/chunk-RDGRHAAB.js +259 -0
- package/dist/cli-delegate/chunk-TFG57JJM.js +1969 -0
- package/dist/cli-delegate/chunk-XX6TOPD7.js +715 -0
- package/dist/cli-delegate/chunk-YMFO6FDN.js +10603 -0
- package/dist/cli-delegate/cmd_analyze_session.js +294 -0
- package/dist/cli-delegate/cmd_conformance.js +646 -0
- package/dist/cli-delegate/cmd_converge.js +326 -0
- package/dist/cli-delegate/cmd_doctor.js +144 -0
- package/dist/cli-delegate/cmd_explain.js +2508 -0
- package/dist/cli-delegate/cmd_export.js +296 -0
- package/dist/cli-delegate/cmd_fleet.js +332 -0
- package/dist/cli-delegate/cmd_memory_get.js +3878 -0
- package/dist/cli-delegate/cmd_migrate.js +11 -0
- package/dist/cli-delegate/cmd_preflight.js +270 -0
- package/dist/cli-delegate/cmd_prune.js +444 -0
- package/dist/cli-delegate/cmd_refresh.js +28 -0
- package/dist/cli-delegate/cmd_settings_check.js +574 -0
- package/dist/cli-delegate/cmd_settings_migrate.js +223 -0
- package/dist/cli-delegate/cmd_sync.js +264 -0
- package/dist/cli-delegate/cmd_uninstall.js +656 -0
- package/dist/cli-delegate/cmd_update.js +425 -0
- package/dist/cli-delegate/cmd_upgrade.js +444 -0
- package/dist/cli-delegate/cmd_validate.js +305 -0
- package/dist/cli-delegate/cmd_versions.js +370 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +14 -7
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +2 -2
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +12 -7
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +4 -3
- package/dist/install/emit_host_rules_cli.js +2 -1
- package/dist/install/emit_host_rules_cli.js.map +1 -1
- package/dist/install/install.mjs +410 -378
- package/dist/install/rule_scope.js +5 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/toolDetection.js +40 -12
- package/dist/install/toolDetection.js.map +1 -1
- package/dist/install/wizard-plan.js +2 -2
- package/dist/install/wizard-plan.js.map +1 -1
- package/dist/mcp/registry-manifest.json +1 -1
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1614 -765
- package/dist/router.json +1 -1
- package/package.json +4 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +30 -30
- package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +88 -33
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +20 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +20 -1
- package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +179 -0
- package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +155 -4
- package/src/agent-src/templates/scripts/work_engine/state.ts +21 -4
- package/src/config/discovery/packs.yml +7 -0
- package/src/config/evaluator-budgets.json +1 -1
- package/src/config/pack-size-budget.json +27 -0
- package/src/install/emit_host_rules_cli.ts +2 -1
- package/src/install/rule_scope.ts +5 -1
- package/src/install/toolDetection.ts +39 -8
- package/src/install/wizard-plan.ts +2 -2
- package/src/scripts/_cli/cmd_conformance.ts +2 -1
- package/src/scripts/_cli/cmd_converge.ts +2 -1
- package/src/scripts/_cli/cmd_doctor.ts +214 -13
- package/src/scripts/_cli/cmd_export.ts +2 -1
- package/src/scripts/_cli/cmd_fleet.ts +2 -1
- package/src/scripts/_cli/cmd_migrate.ts +2 -1
- package/src/scripts/_cli/cmd_preflight.ts +2 -1
- package/src/scripts/_cli/cmd_refresh.ts +2 -1
- package/src/scripts/_cli/cmd_update.ts +2 -1
- package/src/scripts/_cli/cmd_upgrade.ts +2 -1
- package/src/scripts/_cli/cmd_versions.ts +2 -1
- package/src/scripts/_cli/detection_report.ts +480 -0
- package/src/scripts/_dispatch.bash +52 -14
- package/src/scripts/_lib/changelog_eras.ts +103 -9
- package/src/scripts/_lib/environment_detector.ts +441 -0
- package/src/scripts/_lib/package_root.ts +72 -0
- package/src/scripts/ai_council/config.ts +15 -7
- package/src/scripts/ai_council/modes.ts +68 -2
- package/src/scripts/ai_council/transport_resolver.ts +331 -0
- package/src/scripts/check_bundle_path_leakage.ts +10 -4
- package/src/scripts/check_dependency_floors.ts +153 -0
- package/src/scripts/check_pack_size.ts +188 -0
- package/src/scripts/council_cli.ts +6 -2
- package/src/scripts/evaluator_umbrella.sh +34 -1
- package/src/scripts/lint_eval_fixture_citations.ts +113 -0
- package/src/scripts/lint_ui_stack_bundles.ts +170 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
write_target
|
|
5
|
+
} from "./chunk-NDJLNC6Q.js";
|
|
6
|
+
import {
|
|
7
|
+
resolvePackageRoot
|
|
8
|
+
} from "./chunk-MCJYCQPF.js";
|
|
9
|
+
import {
|
|
10
|
+
require_dist
|
|
11
|
+
} from "./chunk-OY53J6II.js";
|
|
12
|
+
import {
|
|
13
|
+
__toESM
|
|
14
|
+
} from "./chunk-J55WI3RR.js";
|
|
15
|
+
|
|
16
|
+
// src/scripts/_cli/cmd_converge.ts
|
|
17
|
+
var YAML = __toESM(require_dist(), 1);
|
|
18
|
+
import * as fs from "node:fs";
|
|
19
|
+
import * as os from "node:os";
|
|
20
|
+
import * as path from "node:path";
|
|
21
|
+
import process from "node:process";
|
|
22
|
+
import { spawnSync } from "node:child_process";
|
|
23
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
24
|
+
var _stdout = { write: (t) => process.stdout.write(t) };
|
|
25
|
+
var _stderr = { write: (t) => process.stderr.write(t) };
|
|
26
|
+
function _print(out, line = "") {
|
|
27
|
+
out.write(`${line}
|
|
28
|
+
`);
|
|
29
|
+
}
|
|
30
|
+
function _default_runner(cmd) {
|
|
31
|
+
const r = spawnSync(cmd[0], cmd.slice(1), { stdio: "inherit" });
|
|
32
|
+
if (r.error) {
|
|
33
|
+
_stderr.write(`agent-config converge: cannot run ${cmd[0]}: ${String(r.error)}
|
|
34
|
+
`);
|
|
35
|
+
return 1;
|
|
36
|
+
}
|
|
37
|
+
return r.status ?? 1;
|
|
38
|
+
}
|
|
39
|
+
var _HERE = fileURLToPath(import.meta.url);
|
|
40
|
+
function _package_root() {
|
|
41
|
+
return resolvePackageRoot(import.meta.url);
|
|
42
|
+
}
|
|
43
|
+
var SETTINGS_FILENAME = "agent-settings.yml";
|
|
44
|
+
var CONSENT_KEY_PATH = ["install", "auto_converge"];
|
|
45
|
+
var ArgparseExit = class extends Error {
|
|
46
|
+
code;
|
|
47
|
+
constructor(code) {
|
|
48
|
+
super(`exit ${code}`);
|
|
49
|
+
this.code = code;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
var PROG = "agent-config converge";
|
|
53
|
+
var USAGE = `usage: ${PROG} [-h] [--dry-run] [--yes]
|
|
54
|
+
`;
|
|
55
|
+
function _argError(msg) {
|
|
56
|
+
_stderr.write(USAGE);
|
|
57
|
+
_stderr.write(`${PROG}: error: ${msg}
|
|
58
|
+
`);
|
|
59
|
+
throw new ArgparseExit(2);
|
|
60
|
+
}
|
|
61
|
+
function _parse(argv) {
|
|
62
|
+
const args = { dry_run: false, yes: false };
|
|
63
|
+
for (const a of argv) {
|
|
64
|
+
if (a === "-h" || a === "--help") {
|
|
65
|
+
_stdout.write(USAGE);
|
|
66
|
+
throw new ArgparseExit(0);
|
|
67
|
+
}
|
|
68
|
+
if (a === "--dry-run") {
|
|
69
|
+
args.dry_run = true;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (a === "--yes" || a === "-y") {
|
|
73
|
+
args.yes = true;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
_argError(`unrecognized arguments: ${a}`);
|
|
77
|
+
}
|
|
78
|
+
return args;
|
|
79
|
+
}
|
|
80
|
+
function _load_matrix(matrix_path) {
|
|
81
|
+
const raw = YAML.parse(fs.readFileSync(matrix_path, "utf-8"), { version: "1.1" });
|
|
82
|
+
const tools = raw["tools"];
|
|
83
|
+
if (!tools || typeof tools !== "object" || Array.isArray(tools)) {
|
|
84
|
+
throw new Error("surface-matrix.yml: `tools` must be a mapping");
|
|
85
|
+
}
|
|
86
|
+
return tools;
|
|
87
|
+
}
|
|
88
|
+
function _expand(p, home, pkg_root) {
|
|
89
|
+
return p.startsWith("~/") ? path.join(home, p.slice(2)) : path.join(pkg_root, p);
|
|
90
|
+
}
|
|
91
|
+
function _exists(p) {
|
|
92
|
+
try {
|
|
93
|
+
fs.statSync(p);
|
|
94
|
+
return true;
|
|
95
|
+
} catch {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function detect_duplicates(tools, home, pkg_root) {
|
|
100
|
+
const findings = [];
|
|
101
|
+
for (const [tool_id, entry] of Object.entries(tools)) {
|
|
102
|
+
const all_of = entry.duplicate?.detect?.all_of;
|
|
103
|
+
if (!Array.isArray(all_of) || all_of.length === 0) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const present = all_of.every(
|
|
107
|
+
(p) => typeof p === "string" && _exists(_expand(p, home, pkg_root))
|
|
108
|
+
);
|
|
109
|
+
if (!present) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const reaps_raw = entry.converge?.reaps;
|
|
113
|
+
const reaps = Array.isArray(reaps_raw) ? reaps_raw.filter((r) => typeof r === "string" && r.startsWith("~/")) : [];
|
|
114
|
+
findings.push({
|
|
115
|
+
tool: tool_id,
|
|
116
|
+
description: entry.duplicate?.description ?? "duplicate install surface",
|
|
117
|
+
command: entry.converge?.command ?? "",
|
|
118
|
+
reaps
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return findings;
|
|
122
|
+
}
|
|
123
|
+
function read_consent(settings_path) {
|
|
124
|
+
try {
|
|
125
|
+
const raw = YAML.parse(fs.readFileSync(settings_path, "utf-8"), { version: "1.1" });
|
|
126
|
+
const install = raw?.[CONSENT_KEY_PATH[0]];
|
|
127
|
+
if (install && typeof install === "object" && !Array.isArray(install)) {
|
|
128
|
+
return install[CONSENT_KEY_PATH[1]] === true;
|
|
129
|
+
}
|
|
130
|
+
} catch {
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
function persist_consent(settings_path, out) {
|
|
135
|
+
let doc = {};
|
|
136
|
+
try {
|
|
137
|
+
const parsed = YAML.parse(fs.readFileSync(settings_path, "utf-8"), { version: "1.1" });
|
|
138
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
139
|
+
doc = parsed;
|
|
140
|
+
}
|
|
141
|
+
} catch {
|
|
142
|
+
}
|
|
143
|
+
const install = doc["install"] && typeof doc["install"] === "object" && !Array.isArray(doc["install"]) ? doc["install"] : {};
|
|
144
|
+
if (install[CONSENT_KEY_PATH[1]] === true) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
install[CONSENT_KEY_PATH[1]] = true;
|
|
148
|
+
doc["install"] = install;
|
|
149
|
+
fs.mkdirSync(path.dirname(settings_path), { recursive: true });
|
|
150
|
+
fs.writeFileSync(settings_path, YAML.stringify(doc), "utf-8");
|
|
151
|
+
_print(out, `\u2705 standing consent persisted: install.auto_converge: true (${settings_path})`);
|
|
152
|
+
}
|
|
153
|
+
function _tty_confirm(question) {
|
|
154
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
process.stdout.write(`${question} [y/N] `);
|
|
158
|
+
const buf = Buffer.alloc(64);
|
|
159
|
+
let answer = "";
|
|
160
|
+
try {
|
|
161
|
+
const fd = fs.openSync("/dev/tty", "rs");
|
|
162
|
+
const n = fs.readSync(fd, buf, 0, 64, null);
|
|
163
|
+
fs.closeSync(fd);
|
|
164
|
+
answer = buf.toString("utf-8", 0, n).trim().toLowerCase();
|
|
165
|
+
} catch {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
return answer === "y" || answer === "yes";
|
|
169
|
+
}
|
|
170
|
+
function live_session_notice(executed_reaps) {
|
|
171
|
+
const hit = executed_reaps.some((r) => r.startsWith("~/.claude/plugins/"));
|
|
172
|
+
if (!hit) {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
return `\u26A0\uFE0F Live-session note: Claude Code sessions that were ALREADY RUNNING still
|
|
176
|
+
hold the removed plugin's hook registrations. Until you restart them,
|
|
177
|
+
every event logs a non-blocking
|
|
178
|
+
"Failed to run: Plugin directory does not exist: \u2026/plugins/cache/\u2026"
|
|
179
|
+
error. This is cosmetic for new sessions but means the affected LIVE
|
|
180
|
+
session's plugin-sourced hooks no longer run \u2014 restart Claude Code
|
|
181
|
+
sessions to clear it. Do NOT follow the error's "/plugin to reinstall"
|
|
182
|
+
hint: reinstalling recreates the duplicate surface converge just removed
|
|
183
|
+
(the ~/.claude/ file projection already carries content AND hooks).`;
|
|
184
|
+
}
|
|
185
|
+
function main(argv = null, opts = {}) {
|
|
186
|
+
let args;
|
|
187
|
+
try {
|
|
188
|
+
args = _parse(argv ?? process.argv.slice(2));
|
|
189
|
+
} catch (e) {
|
|
190
|
+
if (e instanceof ArgparseExit) {
|
|
191
|
+
return e.code;
|
|
192
|
+
}
|
|
193
|
+
throw e;
|
|
194
|
+
}
|
|
195
|
+
const out = opts.out ?? _stdout;
|
|
196
|
+
const err = opts.err ?? _stderr;
|
|
197
|
+
const runner = opts.runner ?? _default_runner;
|
|
198
|
+
const home = opts.home ?? os.homedir();
|
|
199
|
+
const pkg_root = opts.package_root ?? _package_root();
|
|
200
|
+
const settings_path = opts.settings_path ?? write_target(SETTINGS_FILENAME);
|
|
201
|
+
const confirm = opts.confirm ?? _tty_confirm;
|
|
202
|
+
const matrix_path = path.join(pkg_root, "src", "config", "surface-matrix.yml");
|
|
203
|
+
if (!fs.existsSync(matrix_path)) {
|
|
204
|
+
_print(err, `\u274C ${matrix_path} not found \u2014 reinstall the package (agent-config upgrade)`);
|
|
205
|
+
return 1;
|
|
206
|
+
}
|
|
207
|
+
let tools;
|
|
208
|
+
try {
|
|
209
|
+
tools = _load_matrix(matrix_path);
|
|
210
|
+
} catch (e) {
|
|
211
|
+
_print(err, `\u274C surface-matrix.yml unreadable: ${e instanceof Error ? e.message : String(e)}`);
|
|
212
|
+
return 1;
|
|
213
|
+
}
|
|
214
|
+
const findings = detect_duplicates(tools, home, pkg_root);
|
|
215
|
+
if (findings.length === 0) {
|
|
216
|
+
_print(out, "\u2705 no duplicate install surfaces detected \u2014 nothing to converge.");
|
|
217
|
+
return 0;
|
|
218
|
+
}
|
|
219
|
+
_print(out, `Duplicate install surface(s) detected on ${findings.length} tool(s):`);
|
|
220
|
+
for (const f of findings) {
|
|
221
|
+
_print(out, ` \xB7 ${f.tool}: ${f.description}`);
|
|
222
|
+
}
|
|
223
|
+
_print(out);
|
|
224
|
+
if (args.dry_run) {
|
|
225
|
+
_print(out, "Dry run \u2014 the following actions WOULD run (nothing was touched):");
|
|
226
|
+
for (const f of findings) {
|
|
227
|
+
if (f.command) {
|
|
228
|
+
_print(out, ` \u2192 ${f.command}`);
|
|
229
|
+
}
|
|
230
|
+
for (const reap of f.reaps) {
|
|
231
|
+
_print(out, ` \u2192 rm -rf ${reap} (package-tagged orphan, matrix-declared)`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return 0;
|
|
235
|
+
}
|
|
236
|
+
let consented = args.yes || read_consent(settings_path);
|
|
237
|
+
if (!consented) {
|
|
238
|
+
consented = confirm(
|
|
239
|
+
`Converge now? This runs the per-tool uninstall command(s) above and reaps the matrix-declared caches. Persists install.auto_converge: true.`
|
|
240
|
+
);
|
|
241
|
+
if (!consented) {
|
|
242
|
+
_print(
|
|
243
|
+
err,
|
|
244
|
+
`\u274C converge refused \u2014 no consent. Re-run interactively, pass --yes, or set
|
|
245
|
+
install.auto_converge: true in ${settings_path}`
|
|
246
|
+
);
|
|
247
|
+
return 1;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
persist_consent(settings_path, out);
|
|
251
|
+
let failures = 0;
|
|
252
|
+
const report = [];
|
|
253
|
+
const executed_reaps = [];
|
|
254
|
+
for (const f of findings) {
|
|
255
|
+
if (f.command) {
|
|
256
|
+
_print(out, `\u2192 ${f.command}`);
|
|
257
|
+
const rc = runner(f.command.split(" "));
|
|
258
|
+
if (rc !== 0) {
|
|
259
|
+
failures += 1;
|
|
260
|
+
_print(err, `\u26A0\uFE0F ${f.tool}: uninstall command exited ${rc} \u2014 continuing with reaps.`);
|
|
261
|
+
} else {
|
|
262
|
+
report.push(`${f.tool}: ran \`${f.command}\``);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
for (const reap of f.reaps) {
|
|
266
|
+
const abs = _expand(reap, home, pkg_root);
|
|
267
|
+
if (!_exists(abs)) {
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
try {
|
|
271
|
+
fs.rmSync(abs, { recursive: true, force: true });
|
|
272
|
+
report.push(`${f.tool}: reaped package-tagged orphan \`${reap}\``);
|
|
273
|
+
executed_reaps.push(reap);
|
|
274
|
+
_print(out, `\u2192 reaped ${reap}`);
|
|
275
|
+
} catch (e) {
|
|
276
|
+
failures += 1;
|
|
277
|
+
_print(err, `\u26A0\uFE0F ${f.tool}: could not reap ${reap}: ${e instanceof Error ? e.message : String(e)}`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
_print(out);
|
|
282
|
+
_print(out, "Convergence report:");
|
|
283
|
+
for (const line of report) {
|
|
284
|
+
_print(out, ` \u2705 ${line}`);
|
|
285
|
+
}
|
|
286
|
+
if (report.length === 0) {
|
|
287
|
+
_print(out, " (no actions completed)");
|
|
288
|
+
}
|
|
289
|
+
const notice = live_session_notice(executed_reaps);
|
|
290
|
+
if (notice !== null) {
|
|
291
|
+
_print(out);
|
|
292
|
+
_print(out, notice);
|
|
293
|
+
}
|
|
294
|
+
_print(
|
|
295
|
+
out,
|
|
296
|
+
"Rollback hint: a removed Claude Code plugin can be reinstalled with\n claude plugin marketplace add event4u-app/agent-config && claude plugin install agent-config@event4u-agent-config\n(the file projection is untouched \u2014 content and hooks keep working)."
|
|
297
|
+
);
|
|
298
|
+
return failures > 0 ? 1 : 0;
|
|
299
|
+
}
|
|
300
|
+
function _isCliEntry() {
|
|
301
|
+
if (process.argv[1] === void 0) {
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
305
|
+
if (import.meta.url === argvUrl) {
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
try {
|
|
309
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
310
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
311
|
+
return here === argv;
|
|
312
|
+
} catch {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
if (_isCliEntry()) {
|
|
317
|
+
process.exit(main());
|
|
318
|
+
}
|
|
319
|
+
export {
|
|
320
|
+
_load_matrix,
|
|
321
|
+
detect_duplicates,
|
|
322
|
+
live_session_notice,
|
|
323
|
+
main,
|
|
324
|
+
persist_consent,
|
|
325
|
+
read_consent
|
|
326
|
+
};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
ArgparseExit,
|
|
5
|
+
CHECK_IDS,
|
|
6
|
+
GLOBAL_CHECK_IDS,
|
|
7
|
+
INSTALL_MODE_MARKER_RELATIVE,
|
|
8
|
+
MANIFEST_REQUIRED_CHECK_IDS,
|
|
9
|
+
MCP_BETA_GATES,
|
|
10
|
+
MIN_PYTHON,
|
|
11
|
+
NO_FRONTMATTER,
|
|
12
|
+
PACKAGE_TAG_ID,
|
|
13
|
+
REPAIR_IDS,
|
|
14
|
+
STATUS_SYMBOLS,
|
|
15
|
+
_check_bridge_drift,
|
|
16
|
+
_check_bridge_drift_no_manifest,
|
|
17
|
+
_check_claude_command_wrappers,
|
|
18
|
+
_check_claude_plugin,
|
|
19
|
+
_check_council_cli,
|
|
20
|
+
_check_detection,
|
|
21
|
+
_check_duplicate_scope_rules,
|
|
22
|
+
_check_git_identity,
|
|
23
|
+
_check_global_binary,
|
|
24
|
+
_check_humanizer_runtime,
|
|
25
|
+
_check_lockfile_freshness,
|
|
26
|
+
_check_manifest_integrity,
|
|
27
|
+
_check_mcp_beta_readiness,
|
|
28
|
+
_check_mcp_mode,
|
|
29
|
+
_check_offline_readiness,
|
|
30
|
+
_check_python_runtime,
|
|
31
|
+
_check_rule_scope_drift,
|
|
32
|
+
_check_scope,
|
|
33
|
+
_check_settings_review_pending,
|
|
34
|
+
_check_stale_orphans,
|
|
35
|
+
_check_team,
|
|
36
|
+
_check_tier_usage_readiness,
|
|
37
|
+
_check_unsupported_combos,
|
|
38
|
+
_check_wizard_state,
|
|
39
|
+
_classify,
|
|
40
|
+
_collect_manifest_entries,
|
|
41
|
+
_detect_install_mode,
|
|
42
|
+
_detect_wrapper,
|
|
43
|
+
_detection_report,
|
|
44
|
+
_emit_checks_text,
|
|
45
|
+
_emit_json,
|
|
46
|
+
_emit_text,
|
|
47
|
+
_fix_hint,
|
|
48
|
+
_foreign_records,
|
|
49
|
+
_git_config_path,
|
|
50
|
+
_is_global_only_consumer,
|
|
51
|
+
_jsonDumpsIndentAscii,
|
|
52
|
+
_parse,
|
|
53
|
+
_read_council_facts,
|
|
54
|
+
_read_inline_package_tag,
|
|
55
|
+
_reset_detection_memo,
|
|
56
|
+
_resolve_project_root,
|
|
57
|
+
_run_checks,
|
|
58
|
+
_run_checks_no_manifest,
|
|
59
|
+
_run_context,
|
|
60
|
+
_run_repair,
|
|
61
|
+
_run_trace_root,
|
|
62
|
+
_scan_foreign,
|
|
63
|
+
_settings_layer_chain,
|
|
64
|
+
_skipped_manifest_check,
|
|
65
|
+
_wizard_state_path,
|
|
66
|
+
main
|
|
67
|
+
} from "./chunk-4SV3XGFA.js";
|
|
68
|
+
import "./chunk-FTAISGDQ.js";
|
|
69
|
+
import "./chunk-TFG57JJM.js";
|
|
70
|
+
import "./chunk-736JCWLM.js";
|
|
71
|
+
import "./chunk-BJGXZNPM.js";
|
|
72
|
+
import "./chunk-IR7P7JWA.js";
|
|
73
|
+
import "./chunk-GRRPEPRN.js";
|
|
74
|
+
import "./chunk-7DSAMZFU.js";
|
|
75
|
+
import "./chunk-HJ6DAJHR.js";
|
|
76
|
+
import "./chunk-NDJLNC6Q.js";
|
|
77
|
+
import "./chunk-MCJYCQPF.js";
|
|
78
|
+
import "./chunk-OY53J6II.js";
|
|
79
|
+
import "./chunk-J55WI3RR.js";
|
|
80
|
+
export {
|
|
81
|
+
ArgparseExit,
|
|
82
|
+
CHECK_IDS,
|
|
83
|
+
GLOBAL_CHECK_IDS,
|
|
84
|
+
INSTALL_MODE_MARKER_RELATIVE,
|
|
85
|
+
MANIFEST_REQUIRED_CHECK_IDS,
|
|
86
|
+
MCP_BETA_GATES,
|
|
87
|
+
MIN_PYTHON,
|
|
88
|
+
NO_FRONTMATTER,
|
|
89
|
+
PACKAGE_TAG_ID,
|
|
90
|
+
REPAIR_IDS,
|
|
91
|
+
STATUS_SYMBOLS,
|
|
92
|
+
_check_bridge_drift,
|
|
93
|
+
_check_bridge_drift_no_manifest,
|
|
94
|
+
_check_claude_command_wrappers,
|
|
95
|
+
_check_claude_plugin,
|
|
96
|
+
_check_council_cli,
|
|
97
|
+
_check_detection,
|
|
98
|
+
_check_duplicate_scope_rules,
|
|
99
|
+
_check_git_identity,
|
|
100
|
+
_check_global_binary,
|
|
101
|
+
_check_humanizer_runtime,
|
|
102
|
+
_check_lockfile_freshness,
|
|
103
|
+
_check_manifest_integrity,
|
|
104
|
+
_check_mcp_beta_readiness,
|
|
105
|
+
_check_mcp_mode,
|
|
106
|
+
_check_offline_readiness,
|
|
107
|
+
_check_python_runtime,
|
|
108
|
+
_check_rule_scope_drift,
|
|
109
|
+
_check_scope,
|
|
110
|
+
_check_settings_review_pending,
|
|
111
|
+
_check_stale_orphans,
|
|
112
|
+
_check_team,
|
|
113
|
+
_check_tier_usage_readiness,
|
|
114
|
+
_check_unsupported_combos,
|
|
115
|
+
_check_wizard_state,
|
|
116
|
+
_classify,
|
|
117
|
+
_collect_manifest_entries,
|
|
118
|
+
_detect_install_mode,
|
|
119
|
+
_detect_wrapper,
|
|
120
|
+
_detection_report,
|
|
121
|
+
_emit_checks_text,
|
|
122
|
+
_emit_json,
|
|
123
|
+
_emit_text,
|
|
124
|
+
_fix_hint,
|
|
125
|
+
_foreign_records,
|
|
126
|
+
_git_config_path,
|
|
127
|
+
_is_global_only_consumer,
|
|
128
|
+
_jsonDumpsIndentAscii,
|
|
129
|
+
_parse,
|
|
130
|
+
_read_council_facts,
|
|
131
|
+
_read_inline_package_tag,
|
|
132
|
+
_reset_detection_memo,
|
|
133
|
+
_resolve_project_root,
|
|
134
|
+
_run_checks,
|
|
135
|
+
_run_checks_no_manifest,
|
|
136
|
+
_run_context,
|
|
137
|
+
_run_repair,
|
|
138
|
+
_run_trace_root,
|
|
139
|
+
_scan_foreign,
|
|
140
|
+
_settings_layer_chain,
|
|
141
|
+
_skipped_manifest_check,
|
|
142
|
+
_wizard_state_path,
|
|
143
|
+
main
|
|
144
|
+
};
|