homegraph 1.5.2 → 1.5.4
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 +156 -0
- package/README.md +63 -10
- package/dist/addons/dynamic-import.d.ts +18 -0
- package/dist/addons/dynamic-import.d.ts.map +1 -0
- package/dist/addons/dynamic-import.js +25 -0
- package/dist/addons/dynamic-import.js.map +1 -0
- package/dist/addons/init-template.d.ts +15 -0
- package/dist/addons/init-template.d.ts.map +1 -0
- package/dist/addons/init-template.js +290 -0
- package/dist/addons/init-template.js.map +1 -0
- package/dist/addons/loader.d.ts +18 -0
- package/dist/addons/loader.d.ts.map +1 -0
- package/dist/addons/loader.js +88 -0
- package/dist/addons/loader.js.map +1 -0
- package/dist/addons/manager.d.ts +106 -0
- package/dist/addons/manager.d.ts.map +1 -0
- package/dist/addons/manager.js +437 -0
- package/dist/addons/manager.js.map +1 -0
- package/dist/addons/paths.d.ts +22 -0
- package/dist/addons/paths.d.ts.map +1 -0
- package/dist/addons/paths.js +65 -0
- package/dist/addons/paths.js.map +1 -0
- package/dist/addons/registry.d.ts +38 -0
- package/dist/addons/registry.d.ts.map +1 -0
- package/dist/addons/registry.js +160 -0
- package/dist/addons/registry.js.map +1 -0
- package/dist/addons/semver.d.ts +21 -0
- package/dist/addons/semver.d.ts.map +1 -0
- package/dist/addons/semver.js +79 -0
- package/dist/addons/semver.js.map +1 -0
- package/dist/addons/types.d.ts +51 -0
- package/dist/addons/types.d.ts.map +1 -0
- package/dist/addons/types.js +14 -0
- package/dist/addons/types.js.map +1 -0
- package/dist/addons/validate.d.ts +38 -0
- package/dist/addons/validate.d.ts.map +1 -0
- package/dist/addons/validate.js +165 -0
- package/dist/addons/validate.js.map +1 -0
- package/dist/arkui/index.d.ts +4 -0
- package/dist/arkui/index.d.ts.map +1 -0
- package/dist/arkui/index.js +23 -0
- package/dist/arkui/index.js.map +1 -0
- package/dist/arkui/migrate-passage.d.ts +28 -0
- package/dist/arkui/migrate-passage.d.ts.map +1 -0
- package/dist/arkui/migrate-passage.js +310 -0
- package/dist/arkui/migrate-passage.js.map +1 -0
- package/dist/arkui/migrate-semantics.d.ts +47 -0
- package/dist/arkui/migrate-semantics.d.ts.map +1 -0
- package/dist/arkui/migrate-semantics.js +229 -0
- package/dist/arkui/migrate-semantics.js.map +1 -0
- package/dist/arkui/migrate-snapshot.d.ts +79 -0
- package/dist/arkui/migrate-snapshot.d.ts.map +1 -0
- package/dist/arkui/migrate-snapshot.js +364 -0
- package/dist/arkui/migrate-snapshot.js.map +1 -0
- package/dist/bin/addon-commands.d.ts +27 -0
- package/dist/bin/addon-commands.d.ts.map +1 -0
- package/dist/bin/addon-commands.js +254 -0
- package/dist/bin/addon-commands.js.map +1 -0
- package/dist/bin/fatal-handler.js +2 -2
- package/dist/bin/homegraph.js +111 -157
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/bin/node-version-check.d.ts +6 -15
- package/dist/bin/node-version-check.d.ts.map +1 -1
- package/dist/bin/node-version-check.js +8 -37
- package/dist/bin/node-version-check.js.map +1 -1
- package/dist/db/index.d.ts +36 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +92 -6
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.d.ts +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +15 -1
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/queries.d.ts +42 -0
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +177 -10
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.sql +6 -1
- package/dist/db/sqlite-adapter.d.ts +7 -3
- package/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/dist/db/sqlite-adapter.js +44 -3
- package/dist/db/sqlite-adapter.js.map +1 -1
- package/dist/extraction/extraction-version.d.ts +1 -1
- package/dist/extraction/extraction-version.js +1 -1
- package/dist/extraction/generated-detection.d.ts +42 -11
- package/dist/extraction/generated-detection.d.ts.map +1 -1
- package/dist/extraction/generated-detection.js +141 -20
- package/dist/extraction/generated-detection.js.map +1 -1
- package/dist/extraction/index.d.ts +42 -0
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +96 -0
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/arkts.d.ts +33 -2
- package/dist/extraction/languages/arkts.d.ts.map +1 -1
- package/dist/extraction/languages/arkts.js +525 -129
- package/dist/extraction/languages/arkts.js.map +1 -1
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -1
- package/dist/extraction/wasm-runtime-flags.js +9 -6
- package/dist/extraction/wasm-runtime-flags.js.map +1 -1
- package/dist/graph-sources.d.ts +41 -0
- package/dist/graph-sources.d.ts.map +1 -0
- package/dist/graph-sources.js +82 -0
- package/dist/graph-sources.js.map +1 -0
- package/dist/index.d.ts +20 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -9
- package/dist/index.js.map +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +0 -48
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/targets/antigravity.js +1 -1
- package/dist/installer/targets/antigravity.js.map +1 -1
- package/dist/installer/targets/deveco.js +1 -1
- package/dist/installer/targets/deveco.js.map +1 -1
- package/dist/installer/targets/hermes.d.ts +1 -1
- package/dist/installer/targets/hermes.js +2 -2
- package/dist/installer/targets/hermes.js.map +1 -1
- package/dist/installer/targets/opencode.js +1 -1
- package/dist/installer/targets/opencode.js.map +1 -1
- package/dist/installer/targets/shared.js +1 -1
- package/dist/installer/targets/shared.js.map +1 -1
- package/dist/mcp/daemon-paths.d.ts +5 -4
- package/dist/mcp/daemon-paths.d.ts.map +1 -1
- package/dist/mcp/daemon-paths.js +28 -13
- package/dist/mcp/daemon-paths.js.map +1 -1
- package/dist/mcp/daemon-registry.d.ts.map +1 -1
- package/dist/mcp/daemon-registry.js +4 -1
- package/dist/mcp/daemon-registry.js.map +1 -1
- package/dist/mcp/daemon.d.ts +1 -1
- package/dist/mcp/daemon.js +1 -1
- package/dist/mcp/engine.d.ts.map +1 -1
- package/dist/mcp/engine.js +12 -3
- package/dist/mcp/engine.js.map +1 -1
- package/dist/mcp/explore-dedup.d.ts +137 -0
- package/dist/mcp/explore-dedup.d.ts.map +1 -0
- package/dist/mcp/explore-dedup.js +236 -0
- package/dist/mcp/explore-dedup.js.map +1 -0
- package/dist/mcp/explore-repeat-guard.d.ts +123 -0
- package/dist/mcp/explore-repeat-guard.d.ts.map +1 -0
- package/dist/mcp/explore-repeat-guard.js +503 -0
- package/dist/mcp/explore-repeat-guard.js.map +1 -0
- package/dist/mcp/explore-session-state.d.ts +237 -0
- package/dist/mcp/explore-session-state.d.ts.map +1 -0
- package/dist/mcp/explore-session-state.js +353 -0
- package/dist/mcp/explore-session-state.js.map +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +4 -7
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/proxy.d.ts.map +1 -1
- package/dist/mcp/proxy.js +20 -18
- package/dist/mcp/proxy.js.map +1 -1
- package/dist/mcp/query-pool.d.ts.map +1 -1
- package/dist/mcp/query-pool.js +10 -13
- package/dist/mcp/query-pool.js.map +1 -1
- package/dist/mcp/query-worker.d.ts +1 -1
- package/dist/mcp/query-worker.js +1 -1
- package/dist/mcp/server-instructions.d.ts +5 -2
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +43 -32
- package/dist/mcp/server-instructions.js.map +1 -1
- package/dist/mcp/session.d.ts +14 -3
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +17 -14
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/startup-handshake.d.ts +1 -1
- package/dist/mcp/startup-handshake.js +1 -1
- package/dist/mcp/tools.d.ts +149 -8
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +4265 -575
- package/dist/mcp/tools.js.map +1 -1
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/dist/resolution/callback-synthesizer.js +166 -0
- package/dist/resolution/callback-synthesizer.js.map +1 -1
- package/dist/resolution/frameworks/arkts-napi.d.ts +14 -0
- package/dist/resolution/frameworks/arkts-napi.d.ts.map +1 -1
- package/dist/resolution/frameworks/arkts-napi.js +169 -49
- package/dist/resolution/frameworks/arkts-napi.js.map +1 -1
- package/dist/search/query-utils.d.ts +157 -5
- package/dist/search/query-utils.d.ts.map +1 -1
- package/dist/search/query-utils.js +1105 -70
- package/dist/search/query-utils.js.map +1 -1
- package/dist/spec/build/scan.js +1 -1
- package/dist/spec/build/scan.js.map +1 -1
- package/dist/spec/build/scope-resolver.d.ts +24 -5
- package/dist/spec/build/scope-resolver.d.ts.map +1 -1
- package/dist/spec/build/scope-resolver.js +76 -10
- package/dist/spec/build/scope-resolver.js.map +1 -1
- package/dist/spec/config.d.ts +8 -0
- package/dist/spec/config.d.ts.map +1 -1
- package/dist/spec/config.js +3 -0
- package/dist/spec/config.js.map +1 -1
- package/dist/spec/evolve/pipeline.d.ts.map +1 -1
- package/dist/spec/evolve/pipeline.js +2 -1
- package/dist/spec/evolve/pipeline.js.map +1 -1
- package/dist/spec/git/commits.d.ts +8 -3
- package/dist/spec/git/commits.d.ts.map +1 -1
- package/dist/spec/git/commits.js +12 -11
- package/dist/spec/git/commits.js.map +1 -1
- package/dist/spec/mine/addon/adapter.d.ts +45 -0
- package/dist/spec/mine/addon/adapter.d.ts.map +1 -0
- package/dist/spec/mine/addon/adapter.js +118 -0
- package/dist/spec/mine/addon/adapter.js.map +1 -0
- package/dist/spec/mine/addon/render.d.ts +20 -0
- package/dist/spec/mine/addon/render.d.ts.map +1 -0
- package/dist/spec/mine/addon/render.js +41 -0
- package/dist/spec/mine/addon/render.js.map +1 -0
- package/dist/spec/mine/addon/types.d.ts +70 -0
- package/dist/spec/mine/addon/types.d.ts.map +1 -0
- package/dist/spec/mine/addon/types.js +14 -0
- package/dist/spec/mine/addon/types.js.map +1 -0
- package/dist/spec/mine/generator.d.ts +5 -1
- package/dist/spec/mine/generator.d.ts.map +1 -1
- package/dist/spec/mine/generator.js +69 -7
- package/dist/spec/mine/generator.js.map +1 -1
- package/dist/spec/mine/pipeline.d.ts.map +1 -1
- package/dist/spec/mine/pipeline.js +5 -1
- package/dist/spec/mine/pipeline.js.map +1 -1
- package/dist/spec/mine/scanner.d.ts +1 -0
- package/dist/spec/mine/scanner.d.ts.map +1 -1
- package/dist/spec/mine/scanner.js +1 -1
- package/dist/spec/mine/scanner.js.map +1 -1
- package/dist/spec/types.d.ts +1 -1
- package/dist/spec/types.d.ts.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/upgrade/index.d.ts +14 -26
- package/dist/upgrade/index.d.ts.map +1 -1
- package/dist/upgrade/index.js +28 -123
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/remove-binary.d.ts +19 -19
- package/dist/upgrade/remove-binary.d.ts.map +1 -1
- package/dist/upgrade/remove-binary.js +20 -21
- package/dist/upgrade/remove-binary.js.map +1 -1
- package/dist/upgrade/update-check.d.ts +4 -3
- package/dist/upgrade/update-check.d.ts.map +1 -1
- package/dist/upgrade/update-check.js +4 -3
- package/dist/upgrade/update-check.js.map +1 -1
- package/package.json +13 -9
- package/dist/telemetry/index.d.ts +0 -143
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/telemetry/index.js +0 -541
- package/dist/telemetry/index.js.map +0 -1
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HomeGraph addon command group (`homegraph addon …`).
|
|
4
|
+
*
|
|
5
|
+
* Top-level (sibling of `spec`) because the addon store is repository-level
|
|
6
|
+
* generic infrastructure, not spec-feature state: the registry lives in
|
|
7
|
+
* `.homegraph/addons.json`, separate from the spec feature's configs.json.
|
|
8
|
+
*
|
|
9
|
+
* Repo resolution walks up to the git work-tree root (`git rev-parse
|
|
10
|
+
* --show-toplevel`), falling back to the given path itself when not inside
|
|
11
|
+
* a git repo — the same "fall back to start path" behavior as
|
|
12
|
+
* `resolveSpecProjectPath`.
|
|
13
|
+
*
|
|
14
|
+
* @module bin/addon-commands
|
|
15
|
+
*/
|
|
16
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
+
var ownKeys = function(o) {
|
|
34
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
+
var ar = [];
|
|
36
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
return ownKeys(o);
|
|
40
|
+
};
|
|
41
|
+
return function (mod) {
|
|
42
|
+
if (mod && mod.__esModule) return mod;
|
|
43
|
+
var result = {};
|
|
44
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
+
__setModuleDefault(result, mod);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.registerAddonCommands = registerAddonCommands;
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const child_process_1 = require("child_process");
|
|
53
|
+
const dynamic_import_1 = require("../addons/dynamic-import");
|
|
54
|
+
/** npm package name validation (scoped or unscoped, lower-case per npm rules). */
|
|
55
|
+
const PKG_NAME_RE = /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
|
|
56
|
+
/**
|
|
57
|
+
* Resolve the repository root for addon operations: the git work-tree root
|
|
58
|
+
* containing `startPath`, or `startPath` itself when not inside a repo.
|
|
59
|
+
*/
|
|
60
|
+
function resolveAddonRoot(startPath) {
|
|
61
|
+
const resolved = path.resolve(startPath);
|
|
62
|
+
try {
|
|
63
|
+
const topLevel = (0, child_process_1.execFileSync)('git', ['rev-parse', '--show-toplevel'], {
|
|
64
|
+
cwd: resolved,
|
|
65
|
+
encoding: 'utf8',
|
|
66
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
67
|
+
}).trim();
|
|
68
|
+
if (topLevel)
|
|
69
|
+
return topLevel;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Not a git work tree — use the path as-is.
|
|
73
|
+
}
|
|
74
|
+
return resolved;
|
|
75
|
+
}
|
|
76
|
+
async function confirm(_log, message, yes) {
|
|
77
|
+
if (yes || !process.stdin.isTTY)
|
|
78
|
+
return true;
|
|
79
|
+
const clack = (await (0, dynamic_import_1.importESM)('@clack/prompts'));
|
|
80
|
+
const answer = await clack.confirm({ message });
|
|
81
|
+
return answer === true;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Register the `addon` command group on the top-level program.
|
|
85
|
+
*/
|
|
86
|
+
function registerAddonCommands(program, log) {
|
|
87
|
+
const addonCommand = program
|
|
88
|
+
.command('addon')
|
|
89
|
+
.description('Manage HomeGraph addons (plugins that enrich spec-mine prompts)');
|
|
90
|
+
addonCommand
|
|
91
|
+
.command('init <name>')
|
|
92
|
+
.description('Scaffold a new addon package')
|
|
93
|
+
.option('--path <dir>', 'Directory to create the addon in', '.')
|
|
94
|
+
.option('--lang <js|ts>', 'Scaffold language (js is published as-is; ts builds to dist/)', 'js')
|
|
95
|
+
.action(async (name, options) => {
|
|
96
|
+
try {
|
|
97
|
+
if (!PKG_NAME_RE.test(name)) {
|
|
98
|
+
log.error(`Invalid addon package name: "${name}"`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
const lang = options.lang === 'ts' ? 'ts' : 'js';
|
|
102
|
+
const parentDir = path.resolve(options.path || '.');
|
|
103
|
+
const { createAddonScaffold } = await Promise.resolve().then(() => __importStar(require('../addons/init-template')));
|
|
104
|
+
const created = createAddonScaffold(name, parentDir, lang);
|
|
105
|
+
log.success(`Addon scaffold created at ${path.join(parentDir, name)}`);
|
|
106
|
+
log.info(`Created: ${created.map((f) => path.basename(f)).join(', ')}`);
|
|
107
|
+
if (lang === 'ts') {
|
|
108
|
+
log.info('TypeScript scaffold: cd into it, run "npm i -D homegraph" then "npm run build".');
|
|
109
|
+
}
|
|
110
|
+
log.info('Implement enrich() (see examples/jira.mjs), then install with:');
|
|
111
|
+
log.info(` homegraph addon install ${path.join(parentDir, name)}`);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
log.error(`Scaffold failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
addonCommand
|
|
119
|
+
.command('install <pkg>')
|
|
120
|
+
.description('Install an addon package and register it for runtime loading')
|
|
121
|
+
.option('-p, --path <path>', 'Repository root')
|
|
122
|
+
.option('-y, --yes', 'Skip the confirmation prompt')
|
|
123
|
+
.option('--no-enable', 'Install but do not enable (enable later with "addon enable")')
|
|
124
|
+
.action(async (pkg, options) => {
|
|
125
|
+
try {
|
|
126
|
+
const repoRoot = resolveAddonRoot(options.path || process.cwd());
|
|
127
|
+
const { resolvePackageName, installAddon } = await Promise.resolve().then(() => __importStar(require('../addons/manager')));
|
|
128
|
+
const { readRegistry } = await Promise.resolve().then(() => __importStar(require('../addons/registry')));
|
|
129
|
+
const preResolvedName = resolvePackageName(pkg);
|
|
130
|
+
const isUpdate = preResolvedName
|
|
131
|
+
? readRegistry(repoRoot).addons.some((e) => e.name === preResolvedName)
|
|
132
|
+
: false;
|
|
133
|
+
if (!isUpdate) {
|
|
134
|
+
const ok = await confirm(log, `Install addon "${pkg}" and register it for this repository?`, !!options.yes);
|
|
135
|
+
if (!ok)
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
const result = await installAddon(repoRoot, pkg, {
|
|
139
|
+
enable: options.enable !== false,
|
|
140
|
+
name: preResolvedName ?? undefined,
|
|
141
|
+
});
|
|
142
|
+
log.success(`${isUpdate ? 'Updated' : 'Installed'} ${result.name}@${result.version}` +
|
|
143
|
+
` (${options.enable !== false ? 'enabled' : 'disabled'})`);
|
|
144
|
+
log.info(`Registry: .homegraph/addons.json — loaded by the next "spec mine" run.`);
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
log.error(`Install failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
addonCommand
|
|
152
|
+
.command('list')
|
|
153
|
+
.description('List registered addons')
|
|
154
|
+
.option('-p, --path <path>', 'Repository root')
|
|
155
|
+
.action(async (options) => {
|
|
156
|
+
const repoRoot = resolveAddonRoot(options.path || process.cwd());
|
|
157
|
+
const { listAddons } = await Promise.resolve().then(() => __importStar(require('../addons/manager')));
|
|
158
|
+
const addons = listAddons(repoRoot);
|
|
159
|
+
if (addons.length === 0) {
|
|
160
|
+
log.info('No addons registered. Install one with: homegraph addon install <pkg>');
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
log.info('NAME VERSION ENABLED STATUS');
|
|
164
|
+
for (const addon of addons) {
|
|
165
|
+
log.info(`${addon.name.padEnd(30)} ${addon.version.padEnd(8)} ` +
|
|
166
|
+
`${(addon.enabled ? 'yes' : 'no').padEnd(5)} ${addon.installed ? 'installed' : 'missing'}`);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
addonCommand
|
|
170
|
+
.command('remove <name>')
|
|
171
|
+
.description('Unregister an addon (use --purge to also delete its files)')
|
|
172
|
+
.option('-p, --path <path>', 'Repository root')
|
|
173
|
+
.option('-y, --yes', 'Skip the confirmation prompt')
|
|
174
|
+
.option('--purge', 'Also delete the installed files')
|
|
175
|
+
.action(async (name, options) => {
|
|
176
|
+
try {
|
|
177
|
+
const repoRoot = resolveAddonRoot(options.path || process.cwd());
|
|
178
|
+
const { readRegistry } = await Promise.resolve().then(() => __importStar(require('../addons/registry')));
|
|
179
|
+
const { removeAddon } = await Promise.resolve().then(() => __importStar(require('../addons/manager')));
|
|
180
|
+
const entry = readRegistry(repoRoot).addons.find((e) => e.name === name);
|
|
181
|
+
if (!entry) {
|
|
182
|
+
log.error(`Addon not registered: ${name}`);
|
|
183
|
+
log.info('Run "homegraph addon list" to see registered addons.');
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
if (entry.enabled) {
|
|
187
|
+
const ok = await confirm(log, `Remove enabled addon ${name}@${entry.version}?`, !!options.yes);
|
|
188
|
+
if (!ok)
|
|
189
|
+
process.exit(1);
|
|
190
|
+
}
|
|
191
|
+
if (removeAddon(repoRoot, name, { purge: !!options.purge })) {
|
|
192
|
+
log.success(`Removed ${name}${options.purge ? ' (files purged)' : ''}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
log.error(`Remove failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
197
|
+
process.exit(1);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
addonCommand
|
|
201
|
+
.command('enable <name>')
|
|
202
|
+
.description('Enable a registered addon')
|
|
203
|
+
.option('-p, --path <path>', 'Repository root')
|
|
204
|
+
.action(async (name, options) => {
|
|
205
|
+
const repoRoot = resolveAddonRoot(options.path || process.cwd());
|
|
206
|
+
const { setEntryEnabled } = await Promise.resolve().then(() => __importStar(require('../addons/registry')));
|
|
207
|
+
if (!setEntryEnabled(repoRoot, name, true)) {
|
|
208
|
+
log.error(`Addon not registered: ${name}`);
|
|
209
|
+
process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
log.success(`Enabled ${name}`);
|
|
212
|
+
});
|
|
213
|
+
addonCommand
|
|
214
|
+
.command('disable <name>')
|
|
215
|
+
.description('Disable a registered addon (keep it installed)')
|
|
216
|
+
.option('-p, --path <path>', 'Repository root')
|
|
217
|
+
.action(async (name, options) => {
|
|
218
|
+
const repoRoot = resolveAddonRoot(options.path || process.cwd());
|
|
219
|
+
const { setEntryEnabled } = await Promise.resolve().then(() => __importStar(require('../addons/registry')));
|
|
220
|
+
if (!setEntryEnabled(repoRoot, name, false)) {
|
|
221
|
+
log.error(`Addon not registered: ${name}`);
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
log.success(`Disabled ${name}`);
|
|
225
|
+
});
|
|
226
|
+
addonCommand
|
|
227
|
+
.command('update [name]')
|
|
228
|
+
.description('Update registered addon(s) — default: latest within the recorded range; --latest: newest published version')
|
|
229
|
+
.option('-p, --path <path>', 'Repository root')
|
|
230
|
+
.option('-l, --latest', 'Update to the newest published version (registry packages only)')
|
|
231
|
+
.action(async (name, options) => {
|
|
232
|
+
try {
|
|
233
|
+
const repoRoot = resolveAddonRoot(options.path || process.cwd());
|
|
234
|
+
const { updateAddon } = await Promise.resolve().then(() => __importStar(require('../addons/manager')));
|
|
235
|
+
const results = await updateAddon(repoRoot, name, { latest: !!options.latest });
|
|
236
|
+
const changed = results.filter((r) => r.from !== r.to);
|
|
237
|
+
const unchanged = results.filter((r) => r.from === r.to);
|
|
238
|
+
if (changed.length > 0) {
|
|
239
|
+
log.success(`Updated: ${changed.map((r) => `${r.name}@${r.from} -> ${r.to}`).join(', ')}`);
|
|
240
|
+
}
|
|
241
|
+
if (unchanged.length > 0) {
|
|
242
|
+
log.info(`Already up to date: ${unchanged.map((r) => `${r.name}@${r.to}`).join(', ')}`);
|
|
243
|
+
}
|
|
244
|
+
if (changed.length === 0 && unchanged.length === 0) {
|
|
245
|
+
log.info(name ? `No update performed for ${name}` : 'No registered addons to update.');
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch (err) {
|
|
249
|
+
log.error(`Update failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
250
|
+
process.exit(1);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=addon-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addon-commands.js","sourceRoot":"","sources":["../../src/bin/addon-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,8 +39,8 @@ exports.installFatalHandlers = installFatalHandlers;
|
|
|
39
39
|
* Last-resort handlers for uncaught exceptions and unhandled rejections.
|
|
40
40
|
*
|
|
41
41
|
* Reaching one of these means a fault escaped every boundary (per-request
|
|
42
|
-
* try/catch in the MCP transport, the file watcher's own `'error'` handlers
|
|
43
|
-
*
|
|
42
|
+
* try/catch in the MCP transport, the file watcher's own `'error'` handlers)
|
|
43
|
+
* — i.e. the process is in an undefined
|
|
44
44
|
* state. Node's default in that case is to print and exit non-zero. The CLI
|
|
45
45
|
* previously OVERRODE that to "log the error and keep running", which is the
|
|
46
46
|
* bug behind two production incidents:
|