homegraph 1.5.3 → 1.5.5
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 +45 -1
- package/README.md +55 -6
- 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/migrate-semantics.d.ts +8 -0
- package/dist/arkui/migrate-semantics.d.ts.map +1 -1
- package/dist/arkui/migrate-semantics.js +24 -1
- package/dist/arkui/migrate-semantics.js.map +1 -1
- package/dist/arkui/migrate-snapshot.d.ts.map +1 -1
- package/dist/arkui/migrate-snapshot.js +69 -38
- package/dist/arkui/migrate-snapshot.js.map +1 -1
- 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/homegraph.js +6 -1
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/bin/node-version-check.d.ts +1 -1
- package/dist/bin/node-version-check.js +1 -1
- package/dist/db/sqlite-adapter.d.ts +2 -3
- package/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/dist/db/sqlite-adapter.js +2 -3
- package/dist/db/sqlite-adapter.js.map +1 -1
- package/dist/extraction/languages/arkts.d.ts +14 -0
- package/dist/extraction/languages/arkts.d.ts.map +1 -1
- package/dist/extraction/languages/arkts.js +78 -32
- package/dist/extraction/languages/arkts.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/engine.d.ts.map +1 -1
- package/dist/mcp/engine.js +2 -14
- package/dist/mcp/engine.js.map +1 -1
- 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 +540 -0
- package/dist/mcp/explore-repeat-guard.js.map +1 -0
- package/dist/mcp/explore-session-state.d.ts +20 -0
- package/dist/mcp/explore-session-state.d.ts.map +1 -1
- package/dist/mcp/explore-session-state.js +31 -0
- package/dist/mcp/explore-session-state.js.map +1 -1
- package/dist/mcp/memory-budget.d.ts +9 -22
- package/dist/mcp/memory-budget.d.ts.map +1 -1
- package/dist/mcp/memory-budget.js +9 -59
- package/dist/mcp/memory-budget.js.map +1 -1
- package/dist/mcp/proxy.d.ts.map +1 -1
- package/dist/mcp/proxy.js +15 -4
- 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/server-instructions.d.ts +5 -7
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +38 -99
- package/dist/mcp/server-instructions.js.map +1 -1
- package/dist/mcp/tools.d.ts +77 -5
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +2693 -320
- 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/search/query-utils.d.ts +57 -7
- package/dist/search/query-utils.d.ts.map +1 -1
- package/dist/search/query-utils.js +392 -113
- 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/upgrade/index.d.ts +23 -12
- package/dist/upgrade/index.d.ts.map +1 -1
- package/dist/upgrade/index.js +42 -48
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/update-check.d.ts +4 -4
- package/dist/upgrade/update-check.d.ts.map +1 -1
- package/dist/upgrade/update-check.js +6 -5
- package/dist/upgrade/update-check.js.map +1 -1
- package/package.json +6 -6
|
@@ -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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"}
|
package/dist/bin/homegraph.js
CHANGED
|
@@ -71,6 +71,7 @@ const fatal_handler_1 = require("./fatal-handler");
|
|
|
71
71
|
const wasm_runtime_flags_1 = require("../extraction/wasm-runtime-flags");
|
|
72
72
|
const command_supervision_1 = require("./command-supervision");
|
|
73
73
|
const extraction_version_1 = require("../extraction/extraction-version");
|
|
74
|
+
const addon_commands_1 = require("./addon-commands");
|
|
74
75
|
// Lazy-load heavy modules (HomeGraph, runInstaller) to keep CLI startup fast.
|
|
75
76
|
async function loadHomeGraph() {
|
|
76
77
|
try {
|
|
@@ -2289,7 +2290,7 @@ function main() {
|
|
|
2289
2290
|
for (const r of results) {
|
|
2290
2291
|
console.log(chalk.bold(r.title));
|
|
2291
2292
|
for (const commit of r.commits) {
|
|
2292
|
-
console.log(` ${chalk.yellow(commit.hash.slice(0, 7))} ${commit.message}`);
|
|
2293
|
+
console.log(` ${chalk.yellow(commit.hash.slice(0, 7))} ${commit.message.split('\n', 1)[0] ?? ''}`);
|
|
2293
2294
|
if (includeFragments && commit.fragments && commit.fragments.length > 0) {
|
|
2294
2295
|
for (const fragment of commit.fragments.slice(0, profile.maxFragments || 3)) {
|
|
2295
2296
|
console.log(chalk.dim(` ${fragment.file_path}:${fragment.start_line}-${fragment.end_line} [${fragment.change_type}]`));
|
|
@@ -2959,6 +2960,10 @@ function main() {
|
|
|
2959
2960
|
catch { /* best effort */ }
|
|
2960
2961
|
}
|
|
2961
2962
|
});
|
|
2963
|
+
// =============================================================================
|
|
2964
|
+
// Addon commands (HomeGraph addon management)
|
|
2965
|
+
// =============================================================================
|
|
2966
|
+
(0, addon_commands_1.registerAddonCommands)(program, { success, info, warn, error });
|
|
2962
2967
|
/**
|
|
2963
2968
|
* homegraph index-api <input> [version]
|
|
2964
2969
|
* Build a standalone OHOS API database from command-line-tools SDK.
|