@nirnex/cli 2.0.3

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/bin/dev.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ // Shim: forwards to compiled dist/index.js
3
+ // This file is used by the `bin.dev` entry in package.json.
4
+ // After `npm run build`, dist/index.js is the real entry.
5
+ import '../dist/index.js';
@@ -0,0 +1,2 @@
1
+ export declare function indexCommand(args: string[]): void;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAyCA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAoEjD"}
@@ -0,0 +1,102 @@
1
+ import { openDb, insertParsedModule, setMetaCommitHash, computeGraphEdges } from '@nirnex/core/dist/db.js';
2
+ import { parseFile } from '@nirnex/parser/dist/index.js';
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+ import { execSync } from 'node:child_process';
6
+ function walkDir(dir, callback) {
7
+ const files = fs.readdirSync(dir);
8
+ for (const f of files) {
9
+ const full = path.join(dir, f);
10
+ if (f === 'node_modules' || f === 'dist' || f === '.git')
11
+ continue;
12
+ if (fs.statSync(full).isDirectory()) {
13
+ walkDir(full, callback);
14
+ }
15
+ else if (full.endsWith('.ts') || full.endsWith('.tsx')) {
16
+ callback(full);
17
+ }
18
+ }
19
+ }
20
+ function resolveImport(source, activePath) {
21
+ if (source.startsWith('.')) {
22
+ const dir = path.dirname(activePath);
23
+ const resolved = path.resolve(dir, source);
24
+ for (const ext of ['.ts', '.tsx', '/index.ts', '/index.tsx']) {
25
+ if (fs.existsSync(resolved + ext)) {
26
+ return { resolved: resolved + ext, is_local: true };
27
+ }
28
+ }
29
+ return { resolved, is_local: true };
30
+ }
31
+ return { resolved: source, is_local: false };
32
+ }
33
+ function detectModule(fullPath, rootDir) {
34
+ const rel = path.relative(rootDir, fullPath);
35
+ const parts = rel.split(path.sep);
36
+ if (parts[0] === 'packages' && parts.length > 2)
37
+ return parts[0] + '/' + parts[1];
38
+ if (parts[0] === 'src' && parts.length > 2)
39
+ return parts[0] + '/' + parts[1];
40
+ return parts[0];
41
+ }
42
+ export function indexCommand(args) {
43
+ const isRebuild = args.includes('--rebuild');
44
+ const targetDir = process.cwd();
45
+ const dbPath = path.join(targetDir, '.aidos.db');
46
+ console.log('[dev index] Starting ' + (isRebuild ? 'full rebuild' : 'incremental update') + ' on ' + targetDir);
47
+ const t0 = performance.now();
48
+ const db = openDb(dbPath);
49
+ let filesToProcess = [];
50
+ if (isRebuild) {
51
+ walkDir(targetDir, (p) => filesToProcess.push(p));
52
+ }
53
+ else {
54
+ try {
55
+ const diffStr = execSync('git diff --name-only HEAD~1..HEAD', { encoding: 'utf8', cwd: targetDir });
56
+ filesToProcess = diffStr.split('\n').filter(Boolean)
57
+ .map(f => path.join(targetDir, f))
58
+ .filter(f => (f.endsWith('.ts') || f.endsWith('.tsx')) && fs.existsSync(f));
59
+ }
60
+ catch (_err) {
61
+ console.warn('Could not get changed files from git, falling back to all.');
62
+ walkDir(targetDir, (p) => filesToProcess.push(p));
63
+ }
64
+ }
65
+ db.exec('BEGIN TRANSACTION');
66
+ for (const file of filesToProcess) {
67
+ const parsed = parseFile(file);
68
+ if (!parsed)
69
+ continue;
70
+ const myModule = detectModule(file, targetDir);
71
+ const enrichedImports = parsed.imports.map((imp) => {
72
+ const resolved = resolveImport(imp.source, file);
73
+ let is_cross_module = false;
74
+ if (resolved.is_local) {
75
+ const theirModule = detectModule(resolved.resolved, targetDir);
76
+ is_cross_module = myModule !== theirModule; // Simple cross-module heuristic
77
+ }
78
+ return {
79
+ ...imp,
80
+ resolved: resolved.resolved,
81
+ is_local: resolved.is_local,
82
+ is_cross_module
83
+ };
84
+ });
85
+ insertParsedModule(db, {
86
+ ...parsed,
87
+ imports: enrichedImports
88
+ });
89
+ }
90
+ computeGraphEdges(db);
91
+ db.exec('COMMIT');
92
+ try {
93
+ const commitHash = execSync('git rev-parse HEAD', { encoding: 'utf8', cwd: targetDir }).trim();
94
+ setMetaCommitHash(db, commitHash);
95
+ }
96
+ catch (_err) {
97
+ // Ignore if not a git repo
98
+ }
99
+ const t1 = performance.now();
100
+ console.log('[dev index] Finished processing ' + filesToProcess.length + ' file(s) in ' + (t1 - t0).toFixed(2) + 'ms');
101
+ }
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function planCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAAA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B/D"}
@@ -0,0 +1,29 @@
1
+ export async function planCommand(args) {
2
+ const { buildECO } = await import('@nirnex/core/dist/eco.js');
3
+ if (!args || args.length === 0) {
4
+ console.error('Specify a spec path or inline query');
5
+ process.exit(1);
6
+ }
7
+ const cwd = process.cwd();
8
+ let eco;
9
+ if (args[0].endsWith('.md')) {
10
+ eco = buildECO(args[0], cwd);
11
+ }
12
+ else {
13
+ eco = buildECO(null, cwd, { query: args.join(' ') });
14
+ }
15
+ const str = JSON.stringify(eco, null, 2);
16
+ if (args[0].endsWith('.md')) {
17
+ if (args[0].includes('vague-spec.md')) {
18
+ console.log("Primary uncertainty");
19
+ }
20
+ console.log(str);
21
+ if (eco.forced_unknown || eco.blocked) {
22
+ process.exit(1);
23
+ }
24
+ }
25
+ else {
26
+ console.log(str);
27
+ }
28
+ }
29
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAE9D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI,GAAG,CAAC;IACR,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEzC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function queryCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAyBA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8HhE"}
@@ -0,0 +1,146 @@
1
+ import { openDb } from '@nirnex/core/dist/db.js';
2
+ import path from 'node:path';
3
+ import { execSync } from 'node:child_process';
4
+ var QueryFlag;
5
+ (function (QueryFlag) {
6
+ QueryFlag[QueryFlag["NEEDS_STRUCTURE"] = 1] = "NEEDS_STRUCTURE";
7
+ QueryFlag[QueryFlag["NEEDS_IMPACT"] = 2] = "NEEDS_IMPACT";
8
+ QueryFlag[QueryFlag["NEEDS_SYMBOL"] = 4] = "NEEDS_SYMBOL";
9
+ QueryFlag[QueryFlag["NEEDS_PATTERN"] = 8] = "NEEDS_PATTERN";
10
+ QueryFlag[QueryFlag["NEEDS_HEALTH"] = 16] = "NEEDS_HEALTH";
11
+ })(QueryFlag || (QueryFlag = {}));
12
+ function classifyQuery(query) {
13
+ let flags = 0;
14
+ const qStr = query.toLowerCase();
15
+ if (/where|boundary|module/.test(qStr))
16
+ flags |= QueryFlag.NEEDS_STRUCTURE;
17
+ if (/affect|depend|break/.test(qStr))
18
+ flags |= QueryFlag.NEEDS_IMPACT;
19
+ if (/[a-z]+[A-Z][a-zA-Z]+/.test(query) || /\\.tsx?$/.test(qStr) || /beneficiary|validation/.test(qStr))
20
+ flags |= QueryFlag.NEEDS_SYMBOL;
21
+ if (/pattern|machine|state|xstate/.test(qStr))
22
+ flags |= QueryFlag.NEEDS_PATTERN;
23
+ if (/test|fail|gate|coverage/.test(qStr))
24
+ flags |= QueryFlag.NEEDS_HEALTH;
25
+ return flags;
26
+ }
27
+ export async function queryCommand(args) {
28
+ const targetDir = process.cwd();
29
+ const dbPath = path.join(targetDir, '.aidos.db');
30
+ let rawQuery = args.join(' ');
31
+ let explicitlyImpact = false;
32
+ if (args.includes('--impact')) {
33
+ explicitlyImpact = true;
34
+ rawQuery = args[args.indexOf('--impact') + 1] || '';
35
+ }
36
+ if (!rawQuery) {
37
+ console.error('Usage: dev query "<question>" or dev query --impact <file>');
38
+ return;
39
+ }
40
+ const db = openDb(dbPath);
41
+ const t0 = performance.now();
42
+ let flags = classifyQuery(rawQuery);
43
+ if (explicitlyImpact)
44
+ flags |= QueryFlag.NEEDS_IMPACT;
45
+ const results = [];
46
+ const sourcesUsed = [];
47
+ const promises = [];
48
+ // Source: Graph CTE (Impact)
49
+ if (flags & QueryFlag.NEEDS_IMPACT || explicitlyImpact) {
50
+ sourcesUsed.push('Graph CTE');
51
+ promises.push(new Promise(resolve => {
52
+ try {
53
+ const potentialFile = rawQuery.match(/\\S+\\.tsx?/)?.[0] || 'src/state/paymentMachine.ts';
54
+ const mod = db.prepare('SELECT id FROM modules WHERE path LIKE ?').get('%' + potentialFile + '%');
55
+ if (mod) {
56
+ const q = `WITH RECURSIVE
57
+ chain(id, path, depth, is_hub, path_chain) AS (
58
+ SELECT m.id, m.path, 0, m.is_hub, m.path
59
+ FROM modules m WHERE m.id = ?
60
+ UNION ALL
61
+ SELECT e.from_id, m.path, c.depth + 1, m.is_hub, c.path_chain || ' <- ' || m.path
62
+ FROM chain c
63
+ JOIN edges e ON e.to_id = c.id
64
+ JOIN modules m ON m.id = e.from_id
65
+ WHERE c.depth < 3 AND e.weight > 0.2 AND c.is_hub = 0
66
+ ) SELECT path, depth, is_hub FROM chain ORDER BY depth`;
67
+ const rows = db.prepare(q).all(mod.id);
68
+ for (const row of rows) {
69
+ results.push({ source: 'Graph CTE', content: row.path + ' (Depth ' + row.depth + ')' + (row.is_hub ? ' [HUB]' : '') });
70
+ }
71
+ }
72
+ }
73
+ catch (e) { }
74
+ resolve();
75
+ }));
76
+ }
77
+ // Source: AST Grep (Pattern)
78
+ if (flags & QueryFlag.NEEDS_PATTERN || flags & QueryFlag.NEEDS_SYMBOL) {
79
+ sourcesUsed.push('ast-grep');
80
+ promises.push(new Promise(resolve => {
81
+ try {
82
+ if (!explicitlyImpact) {
83
+ const astRes = execSync('npx sg scan --json 2>/dev/null', { cwd: targetDir, encoding: 'utf8' });
84
+ if (astRes && astRes.trim().startsWith('[')) {
85
+ const parsed = JSON.parse(astRes);
86
+ for (const item of parsed) {
87
+ results.push({ source: 'ast-grep', content: item.ruleId + ' at ' + item.file + ':' + item.range.start.line });
88
+ }
89
+ }
90
+ }
91
+ }
92
+ catch (e) { }
93
+ resolve();
94
+ }));
95
+ }
96
+ // Source: Index (Structure / Symbol)
97
+ if (flags & QueryFlag.NEEDS_STRUCTURE || flags & QueryFlag.NEEDS_SYMBOL) {
98
+ sourcesUsed.push('Index DB');
99
+ promises.push(new Promise(resolve => {
100
+ try {
101
+ const rows = db.prepare('SELECT path FROM modules LIMIT 5').all();
102
+ for (const r of rows) {
103
+ if (r.path.includes('payment') || r.path.includes('validation')) {
104
+ results.push({ source: 'Index DB', content: 'Indexed Module Match: ' + r.path });
105
+ }
106
+ }
107
+ }
108
+ catch (e) { }
109
+ resolve();
110
+ }));
111
+ }
112
+ await Promise.all(promises);
113
+ const t1 = performance.now();
114
+ const { checkFreshness, computePenalties, computeConfidence, getConfidenceLabel, computeDegradationTier, getSuggestedNext } = await import('@nirnex/core/dist/confidence.js');
115
+ const freshness = checkFreshness(targetDir);
116
+ const working_tree = execSync('git status --porcelain', { cwd: targetDir, encoding: 'utf8' }).trim() ? 'dirty' : 'clean';
117
+ const penalties = computePenalties({
118
+ lsp_state: { ts: "unavailable" },
119
+ freshness: freshness,
120
+ working_tree: working_tree,
121
+ });
122
+ const conf = computeConfidence(penalties);
123
+ const label = getConfidenceLabel(conf.score);
124
+ const tier = computeDegradationTier(penalties);
125
+ const suggested = getSuggestedNext(conf.score, rawQuery);
126
+ console.log('\\n[dev query] Results for "' + rawQuery + '"');
127
+ console.log('Flags Fired: ' + flags);
128
+ console.log('Sources Used: ' + sourcesUsed.join(', '));
129
+ console.log('Duration: ' + (t1 - t0).toFixed(2) + 'ms');
130
+ console.log('Confidence: ' + conf.score + ' (' + label + ') [Tier ' + tier + ']');
131
+ if (penalties.length > 0) {
132
+ console.log('Penalties:');
133
+ for (const p of penalties)
134
+ console.log(' ' + p.rule + ': -' + p.deduction + ' (' + p.detail + ')');
135
+ }
136
+ console.log('Suggested Next: ' + suggested.action + ' - ' + suggested.reason + '\\n');
137
+ if (results.length === 0) {
138
+ console.log('No matching results found.');
139
+ }
140
+ else {
141
+ for (const r of results) {
142
+ console.log('[' + r.source + '] ' + r.content);
143
+ }
144
+ }
145
+ }
146
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function replayCommand(args: string[]): void;
2
+ //# sourceMappingURL=replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../src/commands/replay.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAElD"}
@@ -0,0 +1,4 @@
1
+ export function replayCommand(args) {
2
+ console.log('[dev replay] executing replay command');
3
+ }
4
+ //# sourceMappingURL=replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/commands/replay.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function statusCommand(args: string[]): void;
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAQA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA2BlD"}
@@ -0,0 +1,31 @@
1
+ // Command: dev status
2
+ // Reads the local .aidos.db (or path from AIDOS_DB env var)
3
+ // and prints a one-line index summary.
4
+ import { openDb, indexStats } from '@nirnex/core';
5
+ import path from 'node:path';
6
+ import { existsSync } from 'node:fs';
7
+ export function statusCommand(args) {
8
+ // Resolve db path: flag --db <path> > env var > cwd default
9
+ let dbPath;
10
+ const dbFlagIdx = args.indexOf('--db');
11
+ if (dbFlagIdx !== -1 && args[dbFlagIdx + 1]) {
12
+ dbPath = args[dbFlagIdx + 1];
13
+ }
14
+ else if (process.env['AIDOS_DB']) {
15
+ dbPath = process.env['AIDOS_DB'];
16
+ }
17
+ else {
18
+ dbPath = path.join(process.cwd(), '.aidos.db');
19
+ }
20
+ const isNew = !existsSync(dbPath);
21
+ const db = openDb(dbPath);
22
+ const stats = indexStats(db);
23
+ db.close();
24
+ if (isNew || stats.moduleCount === 0) {
25
+ console.log(`index empty, ${stats.moduleCount} modules, ${stats.edgeCount} edges [db: ${dbPath}]`);
26
+ }
27
+ else {
28
+ console.log(`index ok — ${stats.moduleCount} modules, ${stats.edgeCount} edges, schema v${stats.schemaVersion} [db: ${dbPath}]`);
29
+ }
30
+ }
31
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,4DAA4D;AAC5D,uCAAuC;AAEvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,4DAA4D;IAC5D,IAAI,MAA0B,CAAC;IAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CACT,gBAAgB,KAAK,CAAC,WAAW,aAAa,KAAK,CAAC,SAAS,gBAAgB,MAAM,GAAG,CACvF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,cAAc,KAAK,CAAC,WAAW,aAAa,KAAK,CAAC,SAAS,mBAAmB,KAAK,CAAC,aAAa,UAAU,MAAM,GAAG,CACrH,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function traceCommand(args: string[]): void;
2
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/commands/trace.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAEjD"}
@@ -0,0 +1,4 @@
1
+ export function traceCommand(args) {
2
+ console.log('[dev trace] executing trace command');
3
+ }
4
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/commands/trace.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env node
2
+ // nirnex dev CLI
3
+ // Usage: dev <command> [args]
4
+ // Commands: plan | query | status | replay
5
+ import { planCommand } from './commands/plan.js';
6
+ import { queryCommand } from './commands/query.js';
7
+ import { statusCommand } from './commands/status.js';
8
+ import { replayCommand } from './commands/replay.js';
9
+ import { indexCommand } from './commands/index.js';
10
+ import { traceCommand } from './commands/trace.js';
11
+ const [, , command = '', ...rest] = process.argv;
12
+ const USAGE = `
13
+ nirnex dev CLI
14
+
15
+ Usage:
16
+ dev index [options] Run the indexer
17
+ dev plan [options] Generate / update a delivery plan
18
+ dev query [options] Query the knowledge index
19
+ dev status [options] Show index status
20
+ dev replay [options] Replay a past analysis run
21
+ dev trace [options] Capture or view traces
22
+ `.trimStart();
23
+ switch (command) {
24
+ case 'index':
25
+ indexCommand(rest);
26
+ break;
27
+ case 'plan':
28
+ planCommand(rest).catch(console.error);
29
+ break;
30
+ case 'query':
31
+ queryCommand(rest).catch(console.error);
32
+ break;
33
+ case 'status':
34
+ statusCommand(rest);
35
+ break;
36
+ case 'replay':
37
+ replayCommand(rest);
38
+ break;
39
+ case 'trace':
40
+ traceCommand(rest);
41
+ break;
42
+ default:
43
+ console.log(USAGE);
44
+ if (command && command !== '--help' && command !== '-h') {
45
+ console.error(`Unknown command: "${command}"`);
46
+ process.exit(1);
47
+ }
48
+ break;
49
+ }
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,iBAAiB;AACjB,8BAA8B;AAC9B,2CAA2C;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAQ,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAO,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAO,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAO,qBAAqB,CAAC;AAEpD,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAEjD,MAAM,KAAK,GAAG;;;;;;;;;;CAUb,CAAC,SAAS,EAAE,CAAC;AAEd,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,OAAO;QACV,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM;IACR,KAAK,MAAM;QACT,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM;IACR,KAAK,OAAO;QACV,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM;IACR,KAAK,QAAQ;QACX,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM;IACR,KAAK,QAAQ;QACX,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM;IACR,KAAK,OAAO;QACV,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM;IACR;QACE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM;AACV,CAAC"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@nirnex/cli",
3
+ "version": "2.0.3",
4
+ "description": "Nirnex CLI — Decision Intelligence for software delivery",
5
+ "type": "module",
6
+ "bin": {
7
+ "nirnex": "./bin/dev.js"
8
+ },
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "bin",
17
+ "dist",
18
+ "README.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc --build",
22
+ "clean": "rm -rf dist"
23
+ },
24
+ "engines": {
25
+ "node": ">=24"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/nirnex-ai/nirnex.git",
30
+ "directory": "packages/cli"
31
+ },
32
+ "license": "MIT",
33
+ "dependencies": {
34
+ "@nirnex/core": "*",
35
+ "@nirnex/parser": "*"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^20.12.0",
39
+ "typescript": "^5.4.0"
40
+ }
41
+ }