ai-agent-context 0.1.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.
Files changed (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +279 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/bin.d.ts +3 -0
  5. package/dist/bin.d.ts.map +1 -0
  6. package/dist/bin.js +11 -0
  7. package/dist/bin.js.map +1 -0
  8. package/dist/cli.d.ts +50 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +263 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/commands/clean.d.ts +3 -0
  13. package/dist/commands/clean.d.ts.map +1 -0
  14. package/dist/commands/clean.js +53 -0
  15. package/dist/commands/clean.js.map +1 -0
  16. package/dist/commands/context.d.ts +4 -0
  17. package/dist/commands/context.d.ts.map +1 -0
  18. package/dist/commands/context.js +15 -0
  19. package/dist/commands/context.js.map +1 -0
  20. package/dist/commands/diff.d.ts +4 -0
  21. package/dist/commands/diff.d.ts.map +1 -0
  22. package/dist/commands/diff.js +24 -0
  23. package/dist/commands/diff.js.map +1 -0
  24. package/dist/commands/explain.d.ts +4 -0
  25. package/dist/commands/explain.d.ts.map +1 -0
  26. package/dist/commands/explain.js +43 -0
  27. package/dist/commands/explain.js.map +1 -0
  28. package/dist/commands/init.d.ts +4 -0
  29. package/dist/commands/init.d.ts.map +1 -0
  30. package/dist/commands/init.js +28 -0
  31. package/dist/commands/init.js.map +1 -0
  32. package/dist/commands/scan.d.ts +4 -0
  33. package/dist/commands/scan.d.ts.map +1 -0
  34. package/dist/commands/scan.js +35 -0
  35. package/dist/commands/scan.js.map +1 -0
  36. package/dist/commands/search.d.ts +9 -0
  37. package/dist/commands/search.d.ts.map +1 -0
  38. package/dist/commands/search.js +34 -0
  39. package/dist/commands/search.js.map +1 -0
  40. package/dist/commands/status.d.ts +4 -0
  41. package/dist/commands/status.d.ts.map +1 -0
  42. package/dist/commands/status.js +15 -0
  43. package/dist/commands/status.js.map +1 -0
  44. package/dist/index.d.ts +22 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +20 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/ui/console.d.ts +52 -0
  49. package/dist/ui/console.d.ts.map +1 -0
  50. package/dist/ui/console.js +114 -0
  51. package/dist/ui/console.js.map +1 -0
  52. package/dist/ui/format.d.ts +16 -0
  53. package/dist/ui/format.d.ts.map +1 -0
  54. package/dist/ui/format.js +290 -0
  55. package/dist/ui/format.js.map +1 -0
  56. package/package.json +57 -0
package/dist/cli.js ADDED
@@ -0,0 +1,263 @@
1
+ /**
2
+ * `agent-context` CLI — argument parsing and dispatch.
3
+ *
4
+ * The CLI contains no analysis logic: every command builds an AgentContext and
5
+ * prints a projection of the result. It is fully testable without spawning a
6
+ * process because {@link runCli} receives its I/O as parameters.
7
+ */
8
+ import { AgentContext, toDiagnosticPayload, isAgentContextError } from '@ai-agent-context/core';
9
+ import { ConsoleOutput } from "./ui/console.js";
10
+ import { runInitCommand } from "./commands/init.js";
11
+ import { runScanCommand } from "./commands/scan.js";
12
+ import { runDiffCommand } from "./commands/diff.js";
13
+ import { runStatusCommand } from "./commands/status.js";
14
+ import { runExplainCommand } from "./commands/explain.js";
15
+ import { runCleanCommand } from "./commands/clean.js";
16
+ import { runSearchCommand } from "./commands/search.js";
17
+ import { runContextCommand } from "./commands/context.js";
18
+ export const CLI_NAME = 'agent-context';
19
+ export const CLI_VERSION = '0.1.0';
20
+ /** Flags that take a value when written as `--flag value`. */
21
+ const VALUED_FLAGS = new Set([
22
+ 'root',
23
+ 'config',
24
+ 'include',
25
+ 'exclude',
26
+ 'ignore',
27
+ 'language',
28
+ 'languages',
29
+ 'limit',
30
+ 'types',
31
+ 'max-files',
32
+ ]);
33
+ const KNOWN_FLAGS = new Set([
34
+ 'help',
35
+ 'version',
36
+ 'json',
37
+ 'quiet',
38
+ 'verbose',
39
+ 'force',
40
+ 'yes',
41
+ 'color',
42
+ 'cache',
43
+ 'all',
44
+ 'root',
45
+ 'config',
46
+ 'include',
47
+ 'exclude',
48
+ 'ignore',
49
+ 'language',
50
+ 'languages',
51
+ 'limit',
52
+ 'types',
53
+ 'max-files',
54
+ ]);
55
+ function appendFlag(flags, name, value) {
56
+ const existing = flags.get(name);
57
+ if (typeof existing === 'string' && existing.length > 0)
58
+ flags.set(name, `${existing},${value}`);
59
+ else
60
+ flags.set(name, value);
61
+ }
62
+ /**
63
+ * Parses CLI arguments.
64
+ *
65
+ * Supported forms: `--flag`, `--no-flag`, `--key=value`, `--key value`, `-h`.
66
+ * Repeated value flags are joined with commas, so
67
+ * `--include a --include b` behaves like `--include a,b`.
68
+ */
69
+ export function parseArguments(argv) {
70
+ const flags = new Map();
71
+ const positional = [];
72
+ const unknownFlags = [];
73
+ let command = null;
74
+ for (let index = 0; index < argv.length; index += 1) {
75
+ const argument = argv[index];
76
+ if (argument.startsWith('--')) {
77
+ const body = argument.slice(2);
78
+ if (body.length === 0)
79
+ continue;
80
+ const equals = body.indexOf('=');
81
+ if (equals !== -1) {
82
+ appendFlag(flags, body.slice(0, equals), body.slice(equals + 1));
83
+ continue;
84
+ }
85
+ if (body.startsWith('no-')) {
86
+ flags.set(body.slice(3), false);
87
+ continue;
88
+ }
89
+ const next = argv[index + 1];
90
+ if (VALUED_FLAGS.has(body) && next !== undefined && !next.startsWith('-')) {
91
+ appendFlag(flags, body, next);
92
+ index += 1;
93
+ continue;
94
+ }
95
+ flags.set(body, true);
96
+ if (!KNOWN_FLAGS.has(body))
97
+ unknownFlags.push(body);
98
+ continue;
99
+ }
100
+ if (argument.startsWith('-') && argument.length > 1) {
101
+ const short = argument.slice(1);
102
+ if (short === 'h')
103
+ flags.set('help', true);
104
+ else if (short === 'v')
105
+ flags.set('version', true);
106
+ else
107
+ unknownFlags.push(short);
108
+ continue;
109
+ }
110
+ if (command === null)
111
+ command = argument;
112
+ else
113
+ positional.push(argument);
114
+ }
115
+ return { command, positional, flags, unknownFlags };
116
+ }
117
+ export function flagString(parsed, name) {
118
+ const value = parsed.flags.get(name);
119
+ return typeof value === 'string' ? value : undefined;
120
+ }
121
+ export function flagList(parsed, name) {
122
+ const value = flagString(parsed, name);
123
+ if (value === undefined)
124
+ return undefined;
125
+ const items = value
126
+ .split(',')
127
+ .map((item) => item.trim())
128
+ .filter((item) => item.length > 0);
129
+ return items.length > 0 ? items : undefined;
130
+ }
131
+ export function flagBoolean(parsed, name) {
132
+ return parsed.flags.get(name) === true;
133
+ }
134
+ /** Builds the {@link AgentContextOptions} implied by global CLI flags. */
135
+ export function contextOptions(parsed, io) {
136
+ const include = flagList(parsed, 'include');
137
+ const exclude = flagList(parsed, 'exclude');
138
+ const ignore = flagList(parsed, 'ignore');
139
+ const languages = flagList(parsed, 'languages') ?? flagList(parsed, 'language');
140
+ const root = flagString(parsed, 'root') ?? io.cwd;
141
+ const options = {
142
+ root,
143
+ config: {
144
+ ...(include === undefined ? {} : { include }),
145
+ ...(exclude === undefined ? {} : { exclude }),
146
+ ...(ignore === undefined ? {} : { ignore }),
147
+ ...(languages === undefined ? {} : { languages }),
148
+ },
149
+ };
150
+ const configPath = flagString(parsed, 'config');
151
+ if (configPath !== undefined)
152
+ options.configPath = configPath;
153
+ return options;
154
+ }
155
+ const HELP_TEXT = `Git-native context layer for AI coding agents
156
+
157
+ Usage:
158
+ agent-context <command> [options]
159
+
160
+ Commands:
161
+ init Create .agent/ and .agent/config.json (idempotent)
162
+ scan Analyze the repository and update .agent/
163
+ diff Show repository context changes since the last scan
164
+ status Show whether the context is up to date
165
+ explain <path> Explain a module (or the module owning a file)
166
+ search <query> Deterministic lexical search over the context
167
+ context Compact repository context summary
168
+ clean Remove generated context and caches
169
+
170
+ Options:
171
+ --root <path> Repository root (default: current directory)
172
+ --config <path> Alternative configuration file
173
+ --include <glob> Override include patterns (repeatable, comma separated)
174
+ --exclude <glob> Override exclude patterns
175
+ --ignore <glob> Additional ignore patterns
176
+ --language <name> Restrict language analysis (repeatable)
177
+ --force init: overwrite config · scan: ignore the local state
178
+ --json Machine readable output on stdout
179
+ --quiet Suppress progress output
180
+ --verbose Verbose diagnostics on stderr
181
+ --no-color Disable colours
182
+ -h, --help Show this help
183
+ -v, --version Show the version
184
+
185
+ Exit codes:
186
+ 0 success · 1 analysis error · 2 usage error
187
+ `;
188
+ /** Runs the CLI and returns the process exit code. */
189
+ export async function runCli(argv, ioOverrides = {}) {
190
+ const io = {
191
+ stdout: ioOverrides.stdout ?? ((line) => process.stdout.write(`${line}\n`)),
192
+ stderr: ioOverrides.stderr ?? ((line) => process.stderr.write(`${line}\n`)),
193
+ cwd: ioOverrides.cwd ?? process.cwd(),
194
+ env: ioOverrides.env ?? process.env,
195
+ };
196
+ const parsed = parseArguments(argv);
197
+ const color = io.color ??
198
+ (io.env['NO_COLOR'] === undefined && parsed.flags.get('color') !== false && process.stdout.isTTY === true);
199
+ const output = new ConsoleOutput({
200
+ stdout: io.stdout,
201
+ stderr: io.stderr,
202
+ color,
203
+ quiet: flagBoolean(parsed, 'quiet'),
204
+ verbose: flagBoolean(parsed, 'verbose'),
205
+ });
206
+ if (flagBoolean(parsed, 'version')) {
207
+ output.print(CLI_VERSION);
208
+ return 0;
209
+ }
210
+ if (flagBoolean(parsed, 'help')) {
211
+ output.print(HELP_TEXT);
212
+ return 0;
213
+ }
214
+ if (parsed.command === null || parsed.command === 'help') {
215
+ output.print(HELP_TEXT);
216
+ return argv.length > 0 && parsed.command === null ? 2 : 0;
217
+ }
218
+ if (parsed.unknownFlags.length > 0) {
219
+ output.error(`unknown option(s): ${parsed.unknownFlags.join(', ')}`);
220
+ output.note('Run: agent-context --help');
221
+ return 2;
222
+ }
223
+ const dependencies = {
224
+ createContext: async (options) => AgentContext.load(options),
225
+ };
226
+ const commandContext = { parsed, output, io, json: flagBoolean(parsed, 'json') };
227
+ try {
228
+ switch (parsed.command) {
229
+ case 'init':
230
+ return await runInitCommand(commandContext, dependencies);
231
+ case 'scan':
232
+ return await runScanCommand(commandContext, dependencies);
233
+ case 'diff':
234
+ return await runDiffCommand(commandContext, dependencies);
235
+ case 'status':
236
+ return await runStatusCommand(commandContext, dependencies);
237
+ case 'explain':
238
+ return await runExplainCommand(commandContext, dependencies);
239
+ case 'search':
240
+ return await runSearchCommand(commandContext, dependencies);
241
+ case 'context':
242
+ return await runContextCommand(commandContext, dependencies);
243
+ case 'clean':
244
+ return await runCleanCommand(commandContext, dependencies);
245
+ default:
246
+ output.error(`unknown command: ${parsed.command}`);
247
+ output.note('Run: agent-context --help');
248
+ return 2;
249
+ }
250
+ }
251
+ catch (error) {
252
+ const payload = toDiagnosticPayload(error);
253
+ output.error(payload.message);
254
+ if (isAgentContextError(error)) {
255
+ for (const hint of error.hints)
256
+ output.note(` ${hint}`);
257
+ }
258
+ if (output.verbose && error instanceof Error && error.stack !== undefined)
259
+ output.note(error.stack);
260
+ return 1;
261
+ }
262
+ }
263
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CliCommandContext, CliDependencies } from '../cli.ts';
2
+ export declare function runCleanCommand(context: CliCommandContext, dependencies: CliDependencies): Promise<number>;
3
+ //# sourceMappingURL=clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGpE,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA0ChH"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * `agent-context clean` — remove generated context and local caches.
3
+ *
4
+ * Safety rules:
5
+ * - only ever touches paths inside `.agent/`: source code is never a candidate;
6
+ * - destructive operations require explicit confirmation (`--yes`);
7
+ * - `--cache` is the narrow option: it clears only the local parse cache.
8
+ */
9
+ import { existsSync } from 'node:fs';
10
+ import path from 'node:path';
11
+ import { AGENT_DIR, ParseCache, removeContextDirectory } from '@ai-agent-context/core';
12
+ import { flagBoolean, contextOptions } from "../cli.js";
13
+ export async function runCleanCommand(context, dependencies) {
14
+ const { output, parsed, io } = context;
15
+ const agentContext = await dependencies.createContext(contextOptions(parsed, io));
16
+ const root = agentContext.root;
17
+ const cacheOnly = flagBoolean(parsed, 'cache');
18
+ const confirmed = flagBoolean(parsed, 'yes');
19
+ const removeConfig = flagBoolean(parsed, 'all');
20
+ if (!existsSync(path.join(root, AGENT_DIR))) {
21
+ output.print('Nothing to clean: .agent/ does not exist.');
22
+ return 0;
23
+ }
24
+ if (!cacheOnly && !confirmed) {
25
+ output.warn('This removes the generated context inside .agent/. Source code is never touched.');
26
+ output.note('Confirm with --yes, or clear only the local cache with --cache.');
27
+ output.print('');
28
+ output.print('Usage: agent-context clean [--cache] [--all] [--yes]');
29
+ return 2;
30
+ }
31
+ const removed = [];
32
+ if (cacheOnly) {
33
+ await new ParseCache(root).clear();
34
+ removed.push('.agent/.local/cache/');
35
+ }
36
+ else {
37
+ removed.push(...(await removeContextDirectory(root, { keepConfig: !removeConfig })));
38
+ }
39
+ removed.sort();
40
+ if (context.json) {
41
+ output.print(JSON.stringify({ root, removed, cacheOnly, removedConfig: !cacheOnly && removeConfig }, null, 2));
42
+ return 0;
43
+ }
44
+ output.success(`Removed ${removed.length} path(s) inside .agent/:`);
45
+ output.list(removed);
46
+ if (!cacheOnly) {
47
+ output.blank();
48
+ output.print('Run:');
49
+ output.print(' agent-context scan # regenerate the context');
50
+ }
51
+ return 0;
52
+ }
53
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA0B,EAAE,YAA6B;IAC7F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;IAC/B,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEhD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;QAChG,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,sBAAsB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,SAAS,IAAI,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/G,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,WAAW,OAAO,CAAC,MAAM,0BAA0B,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** `agent-context context` — compact repository context for agents and humans. */
2
+ import type { CliCommandContext, CliDependencies } from '../cli.ts';
3
+ export declare function runContextCommand(context: CliCommandContext, dependencies: CliDependencies): Promise<number>;
4
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAIpE,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlH"}
@@ -0,0 +1,15 @@
1
+ import { contextOptions } from "../cli.js";
2
+ import { renderRepositoryContext } from "../ui/format.js";
3
+ export async function runContextCommand(context, dependencies) {
4
+ const { output, parsed, io } = context;
5
+ const agentContext = await dependencies.createContext(contextOptions(parsed, io));
6
+ const repositoryContext = await agentContext.getRepositoryContext();
7
+ if (context.json) {
8
+ output.print(JSON.stringify(repositoryContext, null, 2));
9
+ return 0;
10
+ }
11
+ for (const line of renderRepositoryContext(repositoryContext))
12
+ output.print(line);
13
+ return 0;
14
+ }
15
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAA0B,EAAE,YAA6B;IAC/F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,oBAAoB,EAAE,CAAC;IAEpE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,uBAAuB,CAAC,iBAAiB,CAAC;QAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClF,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** `agent-context diff` — repository context changes since the persisted scan. */
2
+ import type { CliCommandContext, CliDependencies } from '../cli.ts';
3
+ export declare function runDiffCommand(context: CliCommandContext, dependencies: CliDependencies): Promise<number>;
4
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAIpE,wBAAsB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB/G"}
@@ -0,0 +1,24 @@
1
+ import { contextOptions } from "../cli.js";
2
+ import { renderDiff } from "../ui/format.js";
3
+ export async function runDiffCommand(context, dependencies) {
4
+ const { output, parsed, io } = context;
5
+ const agentContext = await dependencies.createContext(contextOptions(parsed, io));
6
+ const diff = await agentContext.diff();
7
+ if (context.json) {
8
+ output.print(JSON.stringify(diff, null, 2));
9
+ return 0;
10
+ }
11
+ for (const line of renderDiff(diff))
12
+ output.print(line);
13
+ output.blank();
14
+ if (diff.hasChanges) {
15
+ output.note(`Baseline: ${diff.baseline ?? 'no local state (first run)'}`);
16
+ output.print('Run:');
17
+ output.print(' agent-context scan # persist the new context');
18
+ }
19
+ else {
20
+ output.print('Context matches the working tree.');
21
+ }
22
+ return 0;
23
+ }
24
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA0B,EAAE,YAA6B;IAC5F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;IAEvC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,IAAI,4BAA4B,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** `agent-context explain <path>` — structured module context. */
2
+ import type { CliCommandContext, CliDependencies } from '../cli.ts';
3
+ export declare function runExplainCommand(context: CliCommandContext, dependencies: CliDependencies): Promise<number>;
4
+ //# sourceMappingURL=explain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../src/commands/explain.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAIpE,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAuClH"}
@@ -0,0 +1,43 @@
1
+ import { contextOptions } from "../cli.js";
2
+ import { renderExplain, renderRepositoryContext } from "../ui/format.js";
3
+ export async function runExplainCommand(context, dependencies) {
4
+ const { output, parsed, io } = context;
5
+ const agentContext = await dependencies.createContext(contextOptions(parsed, io));
6
+ const target = parsed.positional[0];
7
+ if (target === undefined) {
8
+ const repositoryContext = await agentContext.getRepositoryContext();
9
+ if (context.json) {
10
+ output.print(JSON.stringify(repositoryContext, null, 2));
11
+ return 0;
12
+ }
13
+ for (const line of renderRepositoryContext(repositoryContext))
14
+ output.print(line);
15
+ return 0;
16
+ }
17
+ const explanation = await agentContext.explain(target);
18
+ if (explanation === null) {
19
+ output.error(`cannot explain "${target}": no module or file matched.`);
20
+ const modules = await agentContext.getModules();
21
+ const suggestions = modules
22
+ .filter((module) => module.id.includes(target) || module.path.includes(target))
23
+ .slice(0, 5)
24
+ .map((module) => module.id);
25
+ if (suggestions.length > 0) {
26
+ output.note('Did you mean one of these?');
27
+ for (const suggestion of suggestions)
28
+ output.note(` ${suggestion}`);
29
+ }
30
+ else {
31
+ output.note('Run: agent-context context # list the detected modules');
32
+ }
33
+ return 1;
34
+ }
35
+ if (context.json) {
36
+ output.print(JSON.stringify(explanation, null, 2));
37
+ return 0;
38
+ }
39
+ for (const line of renderExplain(explanation))
40
+ output.print(line);
41
+ return 0;
42
+ }
43
+ //# sourceMappingURL=explain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/commands/explain.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAA0B,EAAE,YAA6B;IAC/F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,oBAAoB,EAAE,CAAC;QACpE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,uBAAuB,CAAC,iBAAiB,CAAC;YAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,+BAA+B,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,OAAO;aACxB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC9E,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC1C,KAAK,MAAM,UAAU,IAAI,WAAW;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,WAAW,CAAC;QAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** `agent-context init` — create `.agent/` and `.agent/config.json` (idempotent). */
2
+ import { type CliCommandContext, type CliDependencies } from '../cli.ts';
3
+ export declare function runInitCommand(context: CliCommandContext, dependencies: CliDependencies): Promise<number>;
4
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAe,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAGtF,wBAAsB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB/G"}
@@ -0,0 +1,28 @@
1
+ /** `agent-context init` — create `.agent/` and `.agent/config.json` (idempotent). */
2
+ import { flagBoolean } from "../cli.js";
3
+ import { contextOptions } from "../cli.js";
4
+ export async function runInitCommand(context, dependencies) {
5
+ const { output, parsed, io } = context;
6
+ const force = flagBoolean(parsed, 'force');
7
+ const agentContext = await dependencies.createContext(contextOptions(parsed, io));
8
+ const result = await agentContext.init({ force });
9
+ if (context.json) {
10
+ output.print(JSON.stringify(result, null, 2));
11
+ return 0;
12
+ }
13
+ if (result.created.length > 0) {
14
+ output.success('Created:');
15
+ output.list(result.created);
16
+ }
17
+ if (result.overwritten)
18
+ output.note('Existing configuration overwritten (--force).');
19
+ if (result.created.length === 0 && !result.overwritten) {
20
+ output.print(`Configuration already exists: ${agentContext.configFile ?? '.agent/config.json'}`);
21
+ output.note('Use --force to overwrite it.');
22
+ }
23
+ output.blank();
24
+ output.print('Next:');
25
+ output.print(' agent-context scan');
26
+ return 0;
27
+ }
28
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAE,WAAW,EAAgD,MAAM,WAAW,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA0B,EAAE,YAA6B;IAC5F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAElD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,MAAM,CAAC,WAAW;QAAE,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,iCAAiC,YAAY,CAAC,UAAU,IAAI,oBAAoB,EAAE,CAAC,CAAC;QACjG,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** `agent-context scan` — analyze the repository and update `.agent/`. */
2
+ import { type CliCommandContext, type CliDependencies } from '../cli.ts';
3
+ export declare function runScanCommand(context: CliCommandContext, dependencies: CliDependencies): Promise<number>;
4
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAe,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAKtF,wBAAsB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B/G"}
@@ -0,0 +1,35 @@
1
+ /** `agent-context scan` — analyze the repository and update `.agent/`. */
2
+ import { flagBoolean } from "../cli.js";
3
+ import { contextOptions } from "../cli.js";
4
+ import { renderScanSummary } from "../ui/format.js";
5
+ import { Logger } from '@ai-agent-context/core';
6
+ export async function runScanCommand(context, dependencies) {
7
+ const { output, parsed, io } = context;
8
+ const options = contextOptions(parsed, io);
9
+ options.logger = new Logger({
10
+ level: output.verbose ? 'verbose' : output.quiet ? 'silent' : 'info',
11
+ sink: (line) => output.note(line),
12
+ });
13
+ if (!output.quiet && !context.json)
14
+ options.progress = (event) => output.note(event.message);
15
+ const agentContext = await dependencies.createContext(options);
16
+ const report = await agentContext.scan({ force: flagBoolean(parsed, 'force') });
17
+ if (context.json) {
18
+ output.print(JSON.stringify(report, null, 2));
19
+ return report.files.failed > 0 && report.files.total === 0 ? 1 : 0;
20
+ }
21
+ output.success(`Analyzed ${report.files.total} files.`);
22
+ for (const line of renderScanSummary(report))
23
+ output.print(line);
24
+ output.blank();
25
+ output.print('Context updated:');
26
+ output.list(['.agent/index.json', '.agent/architecture.json', '.agent/dependencies.json', '.agent/conventions.md', '.agent/decisions.json']);
27
+ if (!output.quiet) {
28
+ output.blank();
29
+ output.print('Next:');
30
+ output.print(' agent-context diff # review the context changes');
31
+ output.print(' agent-context explain <path>');
32
+ }
33
+ return 0;
34
+ }
35
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,WAAW,EAAgD,MAAM,WAAW,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA0B,EAAE,YAA6B;IAC5F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACpE,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;KAC1C,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE7F,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAEhF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC;QAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAC7I,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `agent-context search <query>` — deterministic lexical search.
3
+ *
4
+ * The default backend is BM25 over the knowledge graph; no embeddings, no LLM and
5
+ * no network access are involved.
6
+ */
7
+ import type { CliCommandContext, CliDependencies } from '../cli.ts';
8
+ export declare function runSearchCommand(context: CliCommandContext, dependencies: CliDependencies): Promise<number>;
9
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAKpE,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCjH"}
@@ -0,0 +1,34 @@
1
+ import { contextOptions, flagList, flagString } from "../cli.js";
2
+ import { renderSearchResults } from "../ui/format.js";
3
+ export async function runSearchCommand(context, dependencies) {
4
+ const { output, parsed, io } = context;
5
+ const query = parsed.positional.join(' ').trim();
6
+ if (query.length === 0) {
7
+ output.error('search requires a query, for example: agent-context search "payment idempotency"');
8
+ return 2;
9
+ }
10
+ const limitValue = flagString(parsed, 'limit');
11
+ const limit = limitValue === undefined ? 10 : Number.parseInt(limitValue, 10);
12
+ if (Number.isNaN(limit) || limit <= 0) {
13
+ output.error(`--limit must be a positive integer (received: ${limitValue ?? ''})`);
14
+ return 2;
15
+ }
16
+ const types = flagList(parsed, 'types');
17
+ const searchOptions = { limit };
18
+ if (types !== undefined)
19
+ searchOptions.types = types;
20
+ const agentContext = await dependencies.createContext(contextOptions(parsed, io));
21
+ const results = await agentContext.search(query, searchOptions);
22
+ if (context.json) {
23
+ output.print(JSON.stringify({ query, backend: 'bm25', results }, null, 2));
24
+ return results.length === 0 ? 1 : 0;
25
+ }
26
+ output.heading(`Search: ${query}`);
27
+ output.blank();
28
+ for (const line of renderSearchResults(results))
29
+ output.print(line);
30
+ output.blank();
31
+ output.note(`backend: bm25 (deterministic lexical search, local only) · ${results.length} result(s)`);
32
+ return results.length === 0 ? 1 : 0;
33
+ }
34
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA0B,EAAE,YAA6B;IAC9F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACjG,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,iDAAiD,UAAU,IAAI,EAAE,GAAG,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,aAAa,GAAsD,EAAE,KAAK,EAAE,CAAC;IACnF,IAAI,KAAK,KAAK,SAAS;QAAE,aAAa,CAAC,KAAK,GAAG,KAA+B,CAAC;IAE/E,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAEhE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,IAAI,CAAC,8DAA8D,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;IACtG,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** `agent-context status` — is the context up to date? */
2
+ import type { CliCommandContext, CliDependencies } from '../cli.ts';
3
+ export declare function runStatusCommand(context: CliCommandContext, dependencies: CliDependencies): Promise<number>;
4
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAIpE,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAYjH"}