aspectcode 0.2.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/bin/aspectcode.js +4 -0
- package/dist/cli.d.ts +102 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +46 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/deps.d.ts +3 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +39 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/generate.d.ts +8 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +176 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/impact.d.ts +9 -0
- package/dist/commands/impact.d.ts.map +1 -0
- package/dist/commands/impact.js +162 -0
- package/dist/commands/impact.js.map +1 -0
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +204 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/settings.d.ts +13 -0
- package/dist/commands/settings.d.ts.map +1 -0
- package/dist/commands/settings.js +196 -0
- package/dist/commands/settings.js.map +1 -0
- package/dist/commands/watch.d.ts +6 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +181 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/config.d.ts +38 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +119 -0
- package/dist/config.js.map +1 -0
- package/dist/connections.d.ts +24 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +89 -0
- package/dist/connections.js.map +1 -0
- package/dist/logger.d.ts +45 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +116 -0
- package/dist/logger.js.map +1 -0
- package/dist/main.d.ts +12 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +275 -0
- package/dist/main.js.map +1 -0
- package/dist/version.d.ts +8 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +55 -0
- package/dist/version.js.map +1 -0
- package/dist/workspace.d.ts +34 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +94 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +53 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* aspectcode CLI — shared types, flag definitions, and interfaces.
|
|
3
|
+
*/
|
|
4
|
+
import type { EmitReport } from '@aspectcode/emitters';
|
|
5
|
+
import type { AspectCodeConfig } from './config';
|
|
6
|
+
import type { Logger } from './logger';
|
|
7
|
+
export type FlagType = 'boolean' | 'string' | 'enum';
|
|
8
|
+
export interface FlagDef {
|
|
9
|
+
/** Long flag name (without --). */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Short alias (without -), e.g. 'r'. */
|
|
12
|
+
short?: string;
|
|
13
|
+
/** Flag value type. */
|
|
14
|
+
type: FlagType;
|
|
15
|
+
/** Allowed enum values (when type === 'enum'). */
|
|
16
|
+
values?: readonly string[];
|
|
17
|
+
/** Help-text description. */
|
|
18
|
+
description: string;
|
|
19
|
+
/** Which commands this flag applies to, or 'global'. */
|
|
20
|
+
appliesTo: 'global' | string[];
|
|
21
|
+
/** The property name on CliFlags (defaults to camelCase of `name`). */
|
|
22
|
+
prop?: keyof CliFlags;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Canonical list of every CLI flag. Adding a new flag is a single entry here
|
|
26
|
+
* — parseArgs() and printHelp() derive from this array automatically.
|
|
27
|
+
*/
|
|
28
|
+
export declare const FLAG_DEFS: readonly FlagDef[];
|
|
29
|
+
/** Parsed CLI arguments. */
|
|
30
|
+
export interface CliArgs {
|
|
31
|
+
command: string;
|
|
32
|
+
flags: CliFlags;
|
|
33
|
+
positionals: string[];
|
|
34
|
+
}
|
|
35
|
+
/** Named flags extracted from argv. */
|
|
36
|
+
export interface CliFlags {
|
|
37
|
+
help: boolean;
|
|
38
|
+
version: boolean;
|
|
39
|
+
verbose: boolean;
|
|
40
|
+
quiet: boolean;
|
|
41
|
+
/** --root / -r : workspace root override (defaults to cwd). */
|
|
42
|
+
root?: string;
|
|
43
|
+
/** --out / -o : output directory override. */
|
|
44
|
+
out?: string;
|
|
45
|
+
/** --list-connections: print dependency connections in text form. */
|
|
46
|
+
listConnections: boolean;
|
|
47
|
+
/** --json: machine-readable output. */
|
|
48
|
+
json: boolean;
|
|
49
|
+
/** --file <path>: filter dependency output to one workspace file. */
|
|
50
|
+
file?: string;
|
|
51
|
+
/** --force / -f : overwrite existing config during init. */
|
|
52
|
+
force: boolean;
|
|
53
|
+
/** --mode: watch mode override. */
|
|
54
|
+
mode?: 'manual' | 'onChange' | 'idle';
|
|
55
|
+
/** --kb-only: generate KB artifacts only, skip instruction files. */
|
|
56
|
+
kbOnly: boolean;
|
|
57
|
+
/** --copilot: enable Copilot instruction file. */
|
|
58
|
+
copilot: boolean;
|
|
59
|
+
/** --cursor: enable Cursor instruction file. */
|
|
60
|
+
cursor: boolean;
|
|
61
|
+
/** --claude: enable Claude instruction file. */
|
|
62
|
+
claude: boolean;
|
|
63
|
+
/** --other: enable AGENTS.md instruction file. */
|
|
64
|
+
other: boolean;
|
|
65
|
+
/** --instructions-mode: instruction generation mode. */
|
|
66
|
+
instructionsMode?: 'safe' | 'permissive' | 'off';
|
|
67
|
+
/** --no-color: disable ANSI color output. */
|
|
68
|
+
noColor: boolean;
|
|
69
|
+
}
|
|
70
|
+
/** Exit codes. */
|
|
71
|
+
export declare const ExitCode: {
|
|
72
|
+
readonly OK: 0;
|
|
73
|
+
readonly ERROR: 1;
|
|
74
|
+
readonly USAGE: 2;
|
|
75
|
+
};
|
|
76
|
+
export type ExitCodeValue = (typeof ExitCode)[keyof typeof ExitCode];
|
|
77
|
+
/** Result returned by every command handler. */
|
|
78
|
+
export interface CommandResult {
|
|
79
|
+
exitCode: ExitCodeValue;
|
|
80
|
+
report?: EmitReport;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Shared context built once in main() and passed to every command handler.
|
|
84
|
+
*
|
|
85
|
+
* Eliminates repetitive 4-parameter threading and makes it trivial
|
|
86
|
+
* to add cross-cutting capabilities (timing, telemetry) later.
|
|
87
|
+
*/
|
|
88
|
+
export interface CommandContext {
|
|
89
|
+
/** Resolved absolute workspace root. */
|
|
90
|
+
root: string;
|
|
91
|
+
/** Parsed CLI flags. */
|
|
92
|
+
flags: CliFlags;
|
|
93
|
+
/** Loaded config (undefined when no aspectcode.json exists). */
|
|
94
|
+
config: AspectCodeConfig | undefined;
|
|
95
|
+
/** Logger respecting --verbose / --quiet. */
|
|
96
|
+
log: Logger;
|
|
97
|
+
/** Raw positional arguments after the command name. */
|
|
98
|
+
positionals: string[];
|
|
99
|
+
}
|
|
100
|
+
/** Convert a kebab-case flag name to its CliFlags property key. */
|
|
101
|
+
export declare function flagPropName(def: FlagDef): string;
|
|
102
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* aspectcode CLI — shared types, flag definitions, and interfaces.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ExitCode = exports.FLAG_DEFS = void 0;
|
|
7
|
+
exports.flagPropName = flagPropName;
|
|
8
|
+
/**
|
|
9
|
+
* Canonical list of every CLI flag. Adding a new flag is a single entry here
|
|
10
|
+
* — parseArgs() and printHelp() derive from this array automatically.
|
|
11
|
+
*/
|
|
12
|
+
exports.FLAG_DEFS = [
|
|
13
|
+
{ name: 'help', short: 'h', type: 'boolean', description: 'Show this help', appliesTo: 'global' },
|
|
14
|
+
{ name: 'version', short: 'V', type: 'boolean', description: 'Print version', appliesTo: 'global' },
|
|
15
|
+
{ name: 'verbose', short: 'v', type: 'boolean', description: 'Show debug output', appliesTo: 'global' },
|
|
16
|
+
{ name: 'quiet', short: 'q', type: 'boolean', description: 'Suppress non-error output', appliesTo: 'global' },
|
|
17
|
+
{ name: 'root', short: 'r', type: 'string', description: 'Workspace root (default: cwd)', appliesTo: 'global' },
|
|
18
|
+
{ name: 'out', short: 'o', type: 'string', description: 'Output directory override', appliesTo: ['generate'] },
|
|
19
|
+
{ name: 'json', type: 'boolean', description: 'Print JSON output (for automation)', appliesTo: 'global' },
|
|
20
|
+
{ name: 'force', short: 'f', type: 'boolean', description: 'Overwrite existing config (init)', appliesTo: ['init'] },
|
|
21
|
+
{ name: 'no-color', type: 'boolean', description: 'Disable colored output', appliesTo: 'global', prop: 'noColor' },
|
|
22
|
+
{ name: 'file', type: 'string', description: 'Filter by file path', appliesTo: ['generate', 'impact', 'deps'] },
|
|
23
|
+
{ name: 'list-connections', type: 'boolean', description: 'Print dependency connections', appliesTo: ['generate'], prop: 'listConnections' },
|
|
24
|
+
{ name: 'mode', type: 'enum', description: 'Watch mode: manual|onChange|idle', appliesTo: ['watch'], values: ['manual', 'onChange', 'idle'] },
|
|
25
|
+
{ name: 'kb-only', type: 'boolean', description: 'Generate KB artifacts only (skip instruction files)', appliesTo: ['generate'], prop: 'kbOnly' },
|
|
26
|
+
{ name: 'copilot', type: 'boolean', description: 'Enable Copilot instruction file', appliesTo: ['generate'] },
|
|
27
|
+
{ name: 'cursor', type: 'boolean', description: 'Enable Cursor instruction file', appliesTo: ['generate'] },
|
|
28
|
+
{ name: 'claude', type: 'boolean', description: 'Enable Claude instruction file', appliesTo: ['generate'] },
|
|
29
|
+
{ name: 'other', type: 'boolean', description: 'Enable AGENTS.md instruction file', appliesTo: ['generate'] },
|
|
30
|
+
{ name: 'instructions-mode', type: 'enum', description: 'Instruction mode: safe|permissive|off', appliesTo: ['generate'], values: ['safe', 'permissive', 'off'], prop: 'instructionsMode' },
|
|
31
|
+
];
|
|
32
|
+
/** Exit codes. */
|
|
33
|
+
exports.ExitCode = {
|
|
34
|
+
OK: 0,
|
|
35
|
+
ERROR: 1,
|
|
36
|
+
USAGE: 2,
|
|
37
|
+
};
|
|
38
|
+
// ── Flag-def helpers ─────────────────────────────────────────
|
|
39
|
+
/** Convert a kebab-case flag name to its CliFlags property key. */
|
|
40
|
+
function flagPropName(def) {
|
|
41
|
+
if (def.prop)
|
|
42
|
+
return def.prop;
|
|
43
|
+
// kebab-case → camelCase
|
|
44
|
+
return def.name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/commands/deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAQ5D,wBAAsB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAuC7E"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runDepsList = runDepsList;
|
|
4
|
+
const cli_1 = require("../cli");
|
|
5
|
+
const logger_1 = require("../logger");
|
|
6
|
+
const connections_1 = require("../connections");
|
|
7
|
+
async function runDepsList(ctx) {
|
|
8
|
+
const { root, flags, config, log } = ctx;
|
|
9
|
+
const allConnections = await (0, connections_1.collectConnections)(root, config, log);
|
|
10
|
+
const filtered = (0, connections_1.filterConnectionsByFile)(allConnections, root, flags.file);
|
|
11
|
+
const connections = filtered.connections;
|
|
12
|
+
if (filtered.error) {
|
|
13
|
+
log.error(filtered.error);
|
|
14
|
+
return { exitCode: cli_1.ExitCode.USAGE };
|
|
15
|
+
}
|
|
16
|
+
if (filtered.fileFilter && connections.length === 0) {
|
|
17
|
+
log.info(`No dependency connections found for ${logger_1.fmt.cyan(filtered.fileFilter)}.`);
|
|
18
|
+
return { exitCode: cli_1.ExitCode.OK };
|
|
19
|
+
}
|
|
20
|
+
if (filtered.fileFilter) {
|
|
21
|
+
log.info(`Filtering by file: ${logger_1.fmt.cyan(filtered.fileFilter)}`);
|
|
22
|
+
}
|
|
23
|
+
if (connections.length === 0) {
|
|
24
|
+
log.info('No dependency connections found.');
|
|
25
|
+
return { exitCode: cli_1.ExitCode.OK };
|
|
26
|
+
}
|
|
27
|
+
log.info(logger_1.fmt.bold('Dependency connections:'));
|
|
28
|
+
for (const row of connections) {
|
|
29
|
+
const symbols = row.symbols.length > 0 ? ` [${row.symbols.join(', ')}]` : '';
|
|
30
|
+
const lineInfo = row.lines.length > 0 ? ` @${row.lines.join(',')}` : '';
|
|
31
|
+
const bidi = row.bidirectional ? ' <->' : '';
|
|
32
|
+
log.info(`${logger_1.fmt.cyan(row.source)} -> ${logger_1.fmt.cyan(row.target)} ` +
|
|
33
|
+
`(${row.type})${bidi}${symbols}${lineInfo}`);
|
|
34
|
+
}
|
|
35
|
+
log.blank();
|
|
36
|
+
log.info(`${connections.length} connections listed`);
|
|
37
|
+
return { exitCode: cli_1.ExitCode.OK };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=deps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/commands/deps.ts"],"names":[],"mappings":";;AAQA,kCAuCC;AA9CD,gCAAkC;AAClC,sCAAgC;AAChC,gDAGwB;AAEjB,KAAK,UAAU,WAAW,CAAC,GAAmB;IACnD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACzC,MAAM,cAAc,GAAG,MAAM,IAAA,gCAAkB,EAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAA,qCAAuB,EAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IAEzC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,EAAE,QAAQ,EAAE,cAAQ,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,uCAAuC,YAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClF,OAAO,EAAE,QAAQ,EAAE,cAAQ,CAAC,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,sBAAsB,YAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC7C,OAAO,EAAE,QAAQ,EAAE,cAAQ,CAAC,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,YAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,CACN,GAAG,YAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,YAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;YACnD,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,OAAO,GAAG,QAAQ,EAAE,CAC9C,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,qBAAqB,CAAC,CAAC;IACrD,OAAO,EAAE,QAAQ,EAAE,cAAQ,CAAC,EAAE,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aspectcode generate` — discover, analyze, and emit artifacts.
|
|
3
|
+
*
|
|
4
|
+
* Pipeline: discoverFiles → readAll → analyzeRepoWithDependencies → runEmitters → report
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandContext, CommandResult } from '../cli';
|
|
7
|
+
export declare function runGenerate(ctx: CommandContext): Promise<CommandResult>;
|
|
8
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAM5D,wBAAsB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAoJ7E"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `aspectcode generate` — discover, analyze, and emit artifacts.
|
|
4
|
+
*
|
|
5
|
+
* Pipeline: discoverFiles → readAll → analyzeRepoWithDependencies → runEmitters → report
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.runGenerate = runGenerate;
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const core_1 = require("@aspectcode/core");
|
|
44
|
+
const emitters_1 = require("@aspectcode/emitters");
|
|
45
|
+
const cli_1 = require("../cli");
|
|
46
|
+
const logger_1 = require("../logger");
|
|
47
|
+
const workspace_1 = require("../workspace");
|
|
48
|
+
const connections_1 = require("../connections");
|
|
49
|
+
async function runGenerate(ctx) {
|
|
50
|
+
const { root, flags, config, log } = ctx;
|
|
51
|
+
const startMs = Date.now();
|
|
52
|
+
// ── 1. Resolve options ────────────────────────────────────
|
|
53
|
+
const outDir = flags.out ?? config?.outDir ?? undefined;
|
|
54
|
+
const resolvedOut = outDir ? path.resolve(root, outDir) : root;
|
|
55
|
+
if (!flags.json) {
|
|
56
|
+
log.info(`Workspace: ${logger_1.fmt.cyan(root)}`);
|
|
57
|
+
if (outDir)
|
|
58
|
+
log.info(`Output: ${logger_1.fmt.cyan(resolvedOut)}`);
|
|
59
|
+
log.blank();
|
|
60
|
+
}
|
|
61
|
+
// ── 2. Discover & read files ───────────────────────────────
|
|
62
|
+
const workspace = await (0, workspace_1.loadWorkspaceFiles)(root, config, log, { quiet: flags.quiet });
|
|
63
|
+
if (workspace.discoveredPaths.length === 0) {
|
|
64
|
+
log.warn('Check your exclude patterns.');
|
|
65
|
+
return { exitCode: cli_1.ExitCode.ERROR };
|
|
66
|
+
}
|
|
67
|
+
const { relativeFiles: fileContents, absoluteFiles: absoluteFileContents } = workspace;
|
|
68
|
+
// ── 3. Analyze ────────────────────────────────────────────
|
|
69
|
+
const spinAnalyze = (0, logger_1.createSpinner)('Analyzing…', { quiet: flags.quiet });
|
|
70
|
+
const model = await (0, core_1.analyzeRepoWithDependencies)(root, fileContents, absoluteFileContents, workspace.host);
|
|
71
|
+
spinAnalyze.stop(`Analyzed ${model.files.length} files, ${model.graph.edges.length} edges`);
|
|
72
|
+
// ── 4. Resolve instruction target ─────────────────────────
|
|
73
|
+
const host = (0, emitters_1.createNodeEmitterHost)();
|
|
74
|
+
// Determine assistant selection: explicit flags override default.
|
|
75
|
+
const hasExplicitAssistants = flags.copilot || flags.cursor || flags.claude || flags.other;
|
|
76
|
+
const assistants = flags.kbOnly
|
|
77
|
+
? {}
|
|
78
|
+
: hasExplicitAssistants
|
|
79
|
+
? {
|
|
80
|
+
copilot: flags.copilot || undefined,
|
|
81
|
+
cursor: flags.cursor || undefined,
|
|
82
|
+
claude: flags.claude || undefined,
|
|
83
|
+
other: flags.other || undefined,
|
|
84
|
+
}
|
|
85
|
+
: { other: true };
|
|
86
|
+
const instructionsMode = flags.kbOnly
|
|
87
|
+
? 'off'
|
|
88
|
+
: (flags.instructionsMode ?? 'safe');
|
|
89
|
+
if (!flags.kbOnly && !flags.json) {
|
|
90
|
+
const targets = Object.entries(assistants)
|
|
91
|
+
.filter(([, v]) => v)
|
|
92
|
+
.map(([k]) => k);
|
|
93
|
+
log.info(`Instructions: ${logger_1.fmt.cyan(targets.join(', ') || '(none)')}`);
|
|
94
|
+
}
|
|
95
|
+
// ── 5. Emit artifacts ─────────────────────────────────────
|
|
96
|
+
const spinEmit = (0, logger_1.createSpinner)('Writing artifacts…', { quiet: flags.quiet });
|
|
97
|
+
const emitOpts = {
|
|
98
|
+
workspaceRoot: root,
|
|
99
|
+
outDir: resolvedOut,
|
|
100
|
+
assistants,
|
|
101
|
+
instructionsMode,
|
|
102
|
+
fileContents,
|
|
103
|
+
};
|
|
104
|
+
const report = await (0, emitters_1.runEmitters)(model, host, emitOpts);
|
|
105
|
+
spinEmit.stop(`Wrote ${report.wrote.length} files`);
|
|
106
|
+
let connections;
|
|
107
|
+
if (flags.listConnections || flags.json) {
|
|
108
|
+
const spinDeps = (0, logger_1.createSpinner)('Computing dependencies…', { quiet: flags.quiet });
|
|
109
|
+
const allConnections = await (0, connections_1.collectConnections)(root, config, log);
|
|
110
|
+
const filtered = (0, connections_1.filterConnectionsByFile)(allConnections, root, flags.file);
|
|
111
|
+
if (filtered.error) {
|
|
112
|
+
spinDeps.fail('Dependency error');
|
|
113
|
+
log.error(filtered.error);
|
|
114
|
+
return { exitCode: cli_1.ExitCode.USAGE };
|
|
115
|
+
}
|
|
116
|
+
connections = filtered.connections;
|
|
117
|
+
spinDeps.stop(`Found ${connections.length} connections`);
|
|
118
|
+
if (filtered.fileFilter && !flags.json) {
|
|
119
|
+
log.info(`Filtered by: ${logger_1.fmt.cyan(filtered.fileFilter)}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// ── 6. Report ─────────────────────────────────────────────
|
|
123
|
+
const elapsedMs = Date.now() - startMs;
|
|
124
|
+
if (flags.json) {
|
|
125
|
+
const payload = {
|
|
126
|
+
schemaVersion: report.schemaVersion,
|
|
127
|
+
wrote: report.wrote.map((w) => ({
|
|
128
|
+
path: path.relative(root, w.path).replace(/\\/g, '/'),
|
|
129
|
+
bytes: w.bytes,
|
|
130
|
+
})),
|
|
131
|
+
skipped: report.skipped,
|
|
132
|
+
stats: report.stats,
|
|
133
|
+
connections,
|
|
134
|
+
};
|
|
135
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
log.blank();
|
|
139
|
+
for (const w of report.wrote) {
|
|
140
|
+
const rel = path.relative(root, w.path).replace(/\\/g, '/');
|
|
141
|
+
log.success(`${rel} (${formatBytes(w.bytes)})`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (report.skipped) {
|
|
145
|
+
for (const s of report.skipped) {
|
|
146
|
+
log.debug(` skipped: ${s.id} — ${s.reason}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (flags.listConnections && !flags.json) {
|
|
150
|
+
log.blank();
|
|
151
|
+
log.info(logger_1.fmt.bold('Dependency connections:'));
|
|
152
|
+
for (const row of connections ?? []) {
|
|
153
|
+
const symbols = row.symbols.length > 0 ? ` [${row.symbols.join(', ')}]` : '';
|
|
154
|
+
const lineInfo = row.lines.length > 0 ? ` @${row.lines.join(',')}` : '';
|
|
155
|
+
const bidi = row.bidirectional ? ' <->' : '';
|
|
156
|
+
log.info(`${logger_1.fmt.cyan(row.source)} -> ${logger_1.fmt.cyan(row.target)} ` +
|
|
157
|
+
`(${row.type})${bidi}${symbols}${lineInfo}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (!flags.json) {
|
|
161
|
+
log.blank();
|
|
162
|
+
log.info(logger_1.fmt.dim(`Done in ${(elapsedMs / 1000).toFixed(1)}s — `) +
|
|
163
|
+
`${report.wrote.length} files written`);
|
|
164
|
+
}
|
|
165
|
+
return { exitCode: cli_1.ExitCode.OK, report };
|
|
166
|
+
}
|
|
167
|
+
function formatBytes(bytes) {
|
|
168
|
+
if (bytes < 1024)
|
|
169
|
+
return `${bytes} B`;
|
|
170
|
+
const kb = bytes / 1024;
|
|
171
|
+
if (kb < 1024)
|
|
172
|
+
return `${kb.toFixed(1)} KB`;
|
|
173
|
+
const mb = kb / 1024;
|
|
174
|
+
return `${mb.toFixed(1)} MB`;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aspectcode impact` — compute a lightweight impact summary for a single file.
|
|
3
|
+
*
|
|
4
|
+
* Discovers workspace files, resolves dependencies, and computes how many
|
|
5
|
+
* other files depend on the target file.
|
|
6
|
+
*/
|
|
7
|
+
import type { CommandContext, CommandResult } from '../cli';
|
|
8
|
+
export declare function runImpact(ctx: CommandContext): Promise<CommandResult>;
|
|
9
|
+
//# sourceMappingURL=impact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../../src/commands/impact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAY,cAAc,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAiBtE,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA0F3E"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `aspectcode impact` — compute a lightweight impact summary for a single file.
|
|
4
|
+
*
|
|
5
|
+
* Discovers workspace files, resolves dependencies, and computes how many
|
|
6
|
+
* other files depend on the target file.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.runImpact = runImpact;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const core_1 = require("@aspectcode/core");
|
|
46
|
+
const cli_1 = require("../cli");
|
|
47
|
+
const logger_1 = require("../logger");
|
|
48
|
+
const workspace_1 = require("../workspace");
|
|
49
|
+
// ── Command handler ──────────────────────────────────────────
|
|
50
|
+
async function runImpact(ctx) {
|
|
51
|
+
const { root, flags, config, log } = ctx;
|
|
52
|
+
const targetFile = flags.file;
|
|
53
|
+
if (!targetFile) {
|
|
54
|
+
log.error(`${logger_1.fmt.bold('--file')} is required for the impact command.`);
|
|
55
|
+
return { exitCode: cli_1.ExitCode.USAGE };
|
|
56
|
+
}
|
|
57
|
+
const absoluteTarget = path.resolve(root, targetFile);
|
|
58
|
+
// Verify the target file exists.
|
|
59
|
+
if (!fs.existsSync(absoluteTarget)) {
|
|
60
|
+
log.error(`File not found: ${logger_1.fmt.cyan(absoluteTarget)}`);
|
|
61
|
+
return { exitCode: cli_1.ExitCode.ERROR };
|
|
62
|
+
}
|
|
63
|
+
// Discover and read files using shared helper.
|
|
64
|
+
const workspace = await (0, workspace_1.loadWorkspaceFiles)(root, config, log, { quiet: flags.quiet });
|
|
65
|
+
if (workspace.discoveredPaths.length === 0) {
|
|
66
|
+
return { exitCode: cli_1.ExitCode.ERROR };
|
|
67
|
+
}
|
|
68
|
+
// Analyze dependencies.
|
|
69
|
+
const analyzer = new core_1.DependencyAnalyzer();
|
|
70
|
+
analyzer.setFileContentsCache(workspace.absoluteFiles);
|
|
71
|
+
const links = await analyzer.analyzeDependencies(workspace.discoveredPaths, workspace.host);
|
|
72
|
+
// Compute degree stats.
|
|
73
|
+
const stats = new Map();
|
|
74
|
+
for (const file of workspace.discoveredPaths) {
|
|
75
|
+
stats.set(file, { inDegree: 0, outDegree: 0 });
|
|
76
|
+
}
|
|
77
|
+
for (const link of links) {
|
|
78
|
+
const src = stats.get(link.source);
|
|
79
|
+
const tgt = stats.get(link.target);
|
|
80
|
+
if (src)
|
|
81
|
+
src.outDegree++;
|
|
82
|
+
if (tgt)
|
|
83
|
+
tgt.inDegree++;
|
|
84
|
+
}
|
|
85
|
+
// Compute impact summary.
|
|
86
|
+
const normalizedTarget = path.resolve(absoluteTarget);
|
|
87
|
+
const targetClass = (0, core_1.classifyFile)(normalizedTarget, root);
|
|
88
|
+
if (targetClass === 'third_party') {
|
|
89
|
+
const summary = {
|
|
90
|
+
file: rel(normalizedTarget, root),
|
|
91
|
+
dependents_count: 0,
|
|
92
|
+
top_dependents: [],
|
|
93
|
+
generated_at: new Date().toISOString(),
|
|
94
|
+
};
|
|
95
|
+
return outputSummary(summary, flags, log);
|
|
96
|
+
}
|
|
97
|
+
const dependentAbs = dedupe(links
|
|
98
|
+
.filter((l) => l.target && path.resolve(l.target) === normalizedTarget)
|
|
99
|
+
.map((l) => l.source)
|
|
100
|
+
.filter(Boolean)
|
|
101
|
+
.filter((s) => s !== normalizedTarget)
|
|
102
|
+
.filter((s) => (0, core_1.classifyFile)(s, root) !== 'third_party'));
|
|
103
|
+
const appOrTestDependents = dependentAbs.filter((s) => {
|
|
104
|
+
const c = (0, core_1.classifyFile)(s, root);
|
|
105
|
+
return c === 'app' || c === 'test';
|
|
106
|
+
});
|
|
107
|
+
const dependentsToUse = appOrTestDependents.length > 0 ? appOrTestDependents : dependentAbs;
|
|
108
|
+
const dependentsWithCounts = dependentsToUse
|
|
109
|
+
.map((dep) => ({
|
|
110
|
+
abs: dep,
|
|
111
|
+
dependent_count: stats.get(dep)?.inDegree ?? 0,
|
|
112
|
+
}))
|
|
113
|
+
.sort((a, b) => b.dependent_count - a.dependent_count || a.abs.localeCompare(b.abs));
|
|
114
|
+
const dependentsCount = dependentsWithCounts.length;
|
|
115
|
+
const topDependents = dependentsWithCounts.slice(0, 5).map((d) => ({
|
|
116
|
+
file: rel(d.abs, root),
|
|
117
|
+
dependent_count: d.dependent_count,
|
|
118
|
+
}));
|
|
119
|
+
const summary = {
|
|
120
|
+
file: rel(normalizedTarget, root),
|
|
121
|
+
dependents_count: dependentsCount,
|
|
122
|
+
top_dependents: topDependents,
|
|
123
|
+
generated_at: new Date().toISOString(),
|
|
124
|
+
};
|
|
125
|
+
return outputSummary(summary, flags, log);
|
|
126
|
+
}
|
|
127
|
+
// ── Helpers ──────────────────────────────────────────────────
|
|
128
|
+
function outputSummary(summary, flags, log) {
|
|
129
|
+
if (flags.json) {
|
|
130
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
log.info(`File: ${logger_1.fmt.cyan(summary.file)}`);
|
|
134
|
+
log.info(`Dependents: ${logger_1.fmt.bold(String(summary.dependents_count))}`);
|
|
135
|
+
if (summary.top_dependents.length > 0) {
|
|
136
|
+
log.info('Top dependents:');
|
|
137
|
+
for (const dep of summary.top_dependents) {
|
|
138
|
+
log.info(` - ${dep.file} (${dep.dependent_count} dependents)`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return { exitCode: cli_1.ExitCode.OK };
|
|
143
|
+
}
|
|
144
|
+
function rel(absPath, workspaceRoot) {
|
|
145
|
+
const normalized = absPath.replace(/\\/g, '/');
|
|
146
|
+
const normalizedRoot = workspaceRoot.replace(/\\/g, '/').replace(/\/$/, '');
|
|
147
|
+
if (normalized.startsWith(normalizedRoot)) {
|
|
148
|
+
return normalized.substring(normalizedRoot.length).replace(/^\//, '');
|
|
149
|
+
}
|
|
150
|
+
return path.basename(absPath);
|
|
151
|
+
}
|
|
152
|
+
function dedupe(items) {
|
|
153
|
+
const seen = new Set();
|
|
154
|
+
return items.filter((item) => {
|
|
155
|
+
const key = String(item);
|
|
156
|
+
if (seen.has(key))
|
|
157
|
+
return false;
|
|
158
|
+
seen.add(key);
|
|
159
|
+
return true;
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=impact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"impact.js","sourceRoot":"","sources":["../../src/commands/impact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aspectcode init` — create an `aspectcode.json` config file.
|
|
3
|
+
*/
|
|
4
|
+
import type { CommandContext, CommandResult } from '../cli';
|
|
5
|
+
import { runWatch } from './watch';
|
|
6
|
+
interface InitDeps {
|
|
7
|
+
runWatchFn?: typeof runWatch;
|
|
8
|
+
}
|
|
9
|
+
export declare function runInit(ctx: CommandContext, deps?: InitDeps): Promise<CommandResult>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,KAAK,EAAY,cAAc,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAItE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAInC,UAAU,QAAQ;IAChB,UAAU,CAAC,EAAE,OAAO,QAAQ,CAAC;CAC9B;AAED,wBAAsB,OAAO,CAC3B,GAAG,EAAE,cAAc,EACnB,IAAI,GAAE,QAAa,GAClB,OAAO,CAAC,aAAa,CAAC,CAmCxB"}
|