@neurcode-ai/cli 0.9.10 → 0.9.11

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/dist/index.js CHANGED
@@ -18,6 +18,7 @@ const check_1 = require("./commands/check");
18
18
  const revert_1 = require("./commands/revert");
19
19
  const refactor_1 = require("./commands/refactor");
20
20
  const security_1 = require("./commands/security");
21
+ const ask_1 = require("./commands/ask");
21
22
  const plan_1 = require("./commands/plan");
22
23
  const apply_1 = require("./commands/apply");
23
24
  const verify_1 = require("./commands/verify");
@@ -140,6 +141,26 @@ program
140
141
  .action(() => {
141
142
  (0, map_1.mapCommand)();
142
143
  });
144
+ program
145
+ .command('ask')
146
+ .description('Ask a repo question with grounded, citation-backed answers')
147
+ .argument('<question...>', 'Question about the codebase')
148
+ .option('--project-id <id>', 'Project ID')
149
+ .option('--json', 'Output machine-readable JSON')
150
+ .option('--max-citations <n>', 'Maximum citations to show (default: 12)', (val) => parseInt(val, 10))
151
+ .option('--no-cache', 'Disable local ask cache and force fresh retrieval')
152
+ .action(async (question, options) => {
153
+ const questionString = Array.isArray(question) ? question.join(' ') : question;
154
+ if (Array.isArray(question) && question.length > 1) {
155
+ console.log(chalk.yellow('Tip: Wrap your question in quotes for best shell compatibility.'));
156
+ }
157
+ await (0, ask_1.askCommand)(questionString, {
158
+ projectId: options['project-id'] || options.projectId,
159
+ json: options.json === true,
160
+ maxCitations: Number.isFinite(options.maxCitations) ? options.maxCitations : undefined,
161
+ cache: options.cache !== false,
162
+ });
163
+ });
143
164
  program
144
165
  .command('plan')
145
166
  .description('Generate an execution plan for a user intent')
@@ -151,13 +172,23 @@ program
151
172
  .option('--mask', 'Mask detected secrets automatically (default: true)', true)
152
173
  .option('--no-mask', 'Abort if secrets detected instead of masking')
153
174
  .option('--no-cache', 'Disable local plan cache and force regeneration')
154
- .action((intent, options) => {
175
+ .option('--force-plan', 'Force plan generation even for read-only analysis intents')
176
+ .action(async (intent, options) => {
155
177
  // Handle multiple arguments (when user doesn't quote)
156
178
  const intentString = Array.isArray(intent) ? intent.join(' ') : intent;
157
179
  if (Array.isArray(intent) && intent.length > 1) {
158
180
  console.log(chalk.yellow('Tip: Wrap your intent in quotes for better shell compatibility.'));
159
181
  }
160
- (0, plan_1.planCommand)(intentString, {
182
+ if (!options.forcePlan && (0, plan_1.detectIntentMode)(intentString) === 'analysis') {
183
+ console.log(chalk.dim('🔎 Read-only intent detected. Routing to `neurcode ask` for grounded answer mode.\n'));
184
+ await (0, ask_1.askCommand)(intentString, {
185
+ projectId: options['project-id'] || options.projectId,
186
+ cache: options.cache !== false,
187
+ fromPlan: true,
188
+ });
189
+ return;
190
+ }
191
+ await (0, plan_1.planCommand)(intentString, {
161
192
  projectId: options['project-id'] || options.projectId,
162
193
  ticket: options.ticket,
163
194
  issue: options.issue,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import type { RepoFingerprint } from './plan-cache';
2
+ export interface AskCitation {
3
+ path: string;
4
+ line: number;
5
+ snippet: string;
6
+ term?: string;
7
+ }
8
+ export interface AskAnswerPayload {
9
+ question: string;
10
+ questionNormalized: string;
11
+ mode: 'comparison' | 'search';
12
+ answer: string;
13
+ findings: string[];
14
+ confidence: 'high' | 'medium' | 'low';
15
+ citations: AskCitation[];
16
+ generatedAt: string;
17
+ stats: {
18
+ scannedFiles: number;
19
+ matchedFiles: number;
20
+ matchedLines: number;
21
+ brainCandidates: number;
22
+ };
23
+ }
24
+ export interface AskCacheKeyInputV1 {
25
+ schemaVersion: 2;
26
+ orgId: string;
27
+ projectId: string;
28
+ repo: RepoFingerprint;
29
+ questionHash: string;
30
+ policyVersionHash: string;
31
+ neurcodeVersion: string;
32
+ }
33
+ export interface CachedAskInputV1 extends AskCacheKeyInputV1 {
34
+ question: string;
35
+ contextHash?: string;
36
+ }
37
+ export interface CachedAskEntryV1 {
38
+ key: string;
39
+ createdAt: string;
40
+ lastUsedAt: string;
41
+ useCount: number;
42
+ input: CachedAskInputV1;
43
+ output: AskAnswerPayload;
44
+ evidencePaths: string[];
45
+ }
46
+ export interface NearCachedAskLookupInput {
47
+ orgId: string;
48
+ projectId: string;
49
+ repo: RepoFingerprint;
50
+ question: string;
51
+ policyVersionHash: string;
52
+ neurcodeVersion: string;
53
+ contextHash?: string;
54
+ changedPaths?: string[];
55
+ minSimilarity?: number;
56
+ }
57
+ export interface NearCachedAskResult {
58
+ entry: CachedAskEntryV1;
59
+ similarity: number;
60
+ reason: 'same_snapshot_similar_question' | 'safe_repo_drift_similar_question';
61
+ }
62
+ export interface AskCacheDeleteResult {
63
+ deleted: number;
64
+ remaining: number;
65
+ }
66
+ export declare function getAskCachePath(cwd: string): string;
67
+ export declare function computeAskQuestionHash(input: {
68
+ question: string;
69
+ contextHash?: string;
70
+ }): string;
71
+ export declare function computeAskCacheKey(input: AskCacheKeyInputV1): string;
72
+ export declare function readCachedAsk(cwd: string, key: string): CachedAskEntryV1 | null;
73
+ export declare function writeCachedAsk(cwd: string, entry: Omit<CachedAskEntryV1, 'createdAt' | 'lastUsedAt' | 'useCount'>): void;
74
+ export declare function findNearCachedAsk(cwd: string, input: NearCachedAskLookupInput): NearCachedAskResult | null;
75
+ export declare function getChangedWorkingTreePaths(cwd: string, limit?: number): string[];
76
+ export declare function listCachedAsks(cwd: string): CachedAskEntryV1[];
77
+ export declare function deleteCachedAsks(cwd: string, predicate: (entry: CachedAskEntryV1) => boolean): AskCacheDeleteResult;
78
+ //# sourceMappingURL=ask-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-cache.d.ts","sourceRoot":"","sources":["../../src/utils/ask-cache.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,CAAC,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,eAAe,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,gCAAgC,GAAG,kCAAkC,CAAC;CAC/E;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AA2BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AA+KD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQhG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAiBpE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAiB/E;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC,GACrE,IAAI,CAuCN;AASD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,GAAG,IAAI,CA8D1G;AA4BD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,MAAM,EAAE,CAmBrF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAW9D;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,GAC9C,oBAAoB,CAqBtB"}
@@ -0,0 +1,424 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAskCachePath = getAskCachePath;
4
+ exports.computeAskQuestionHash = computeAskQuestionHash;
5
+ exports.computeAskCacheKey = computeAskCacheKey;
6
+ exports.readCachedAsk = readCachedAsk;
7
+ exports.writeCachedAsk = writeCachedAsk;
8
+ exports.findNearCachedAsk = findNearCachedAsk;
9
+ exports.getChangedWorkingTreePaths = getChangedWorkingTreePaths;
10
+ exports.listCachedAsks = listCachedAsks;
11
+ exports.deleteCachedAsks = deleteCachedAsks;
12
+ const child_process_1 = require("child_process");
13
+ const crypto_1 = require("crypto");
14
+ const fs_1 = require("fs");
15
+ const path_1 = require("path");
16
+ const plan_cache_1 = require("./plan-cache");
17
+ const secret_masking_1 = require("./secret-masking");
18
+ const ASK_CACHE_SCHEMA_VERSION = 2;
19
+ const ASK_CACHE_FILE = 'ask-cache.json';
20
+ const MAX_ENTRIES = 700;
21
+ const NON_SEMANTIC_GIT_PATH_MARKERS = [
22
+ '.neurcode/',
23
+ '.gitignore',
24
+ ];
25
+ function nowIso() {
26
+ return new Date().toISOString();
27
+ }
28
+ function sha256Hex(input) {
29
+ return (0, crypto_1.createHash)('sha256').update(input).digest('hex');
30
+ }
31
+ function getCachePath(cwd) {
32
+ return (0, path_1.join)(cwd, '.neurcode', ASK_CACHE_FILE);
33
+ }
34
+ function getAskCachePath(cwd) {
35
+ return getCachePath(cwd);
36
+ }
37
+ function ensureNeurcodeDir(cwd) {
38
+ const dir = (0, path_1.join)(cwd, '.neurcode');
39
+ if (!(0, fs_1.existsSync)(dir)) {
40
+ (0, fs_1.mkdirSync)(dir, { recursive: true });
41
+ }
42
+ }
43
+ function readStore(cwd) {
44
+ const path = getCachePath(cwd);
45
+ if (!(0, fs_1.existsSync)(path)) {
46
+ return { schemaVersion: ASK_CACHE_SCHEMA_VERSION, entries: {} };
47
+ }
48
+ try {
49
+ const raw = (0, fs_1.readFileSync)(path, 'utf-8');
50
+ const parsed = JSON.parse(raw);
51
+ if (parsed.schemaVersion !== ASK_CACHE_SCHEMA_VERSION || !parsed.entries || typeof parsed.entries !== 'object') {
52
+ throw new Error('invalid ask cache schema');
53
+ }
54
+ return parsed;
55
+ }
56
+ catch {
57
+ try {
58
+ (0, fs_1.renameSync)(path, path.replace(/\.json$/, `.corrupt-${Date.now()}.json`));
59
+ }
60
+ catch {
61
+ // ignore
62
+ }
63
+ return { schemaVersion: ASK_CACHE_SCHEMA_VERSION, entries: {} };
64
+ }
65
+ }
66
+ function writeStore(cwd, store) {
67
+ ensureNeurcodeDir(cwd);
68
+ const path = getCachePath(cwd);
69
+ const tmp = `${path}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2, 8)}.tmp`;
70
+ (0, fs_1.writeFileSync)(tmp, JSON.stringify(store, null, 2) + '\n', 'utf-8');
71
+ (0, fs_1.renameSync)(tmp, path);
72
+ }
73
+ function pruneStore(store) {
74
+ const entries = Object.values(store.entries);
75
+ if (entries.length <= MAX_ENTRIES)
76
+ return;
77
+ entries.sort((a, b) => {
78
+ const aTime = Date.parse(a.lastUsedAt || a.createdAt) || 0;
79
+ const bTime = Date.parse(b.lastUsedAt || b.createdAt) || 0;
80
+ return aTime - bTime;
81
+ });
82
+ const deleteCount = entries.length - MAX_ENTRIES;
83
+ for (const entry of entries.slice(0, deleteCount)) {
84
+ delete store.entries[entry.key];
85
+ }
86
+ }
87
+ function normalizeRepoIdentity(raw) {
88
+ return (raw || '').trim().toLowerCase().replace(/\\/g, '/');
89
+ }
90
+ function normalizePath(raw) {
91
+ return (raw || '').trim().replace(/\\/g, '/').replace(/^\.\//, '');
92
+ }
93
+ function tokenize(text) {
94
+ return text
95
+ .toLowerCase()
96
+ .replace(/[^\w\s]/g, ' ')
97
+ .split(/\s+/)
98
+ .filter((token) => token.length >= 3);
99
+ }
100
+ function jaccard(a, b) {
101
+ if (a.size === 0 || b.size === 0)
102
+ return 0;
103
+ let inter = 0;
104
+ for (const token of a) {
105
+ if (b.has(token))
106
+ inter++;
107
+ }
108
+ const union = a.size + b.size - inter;
109
+ return union === 0 ? 0 : inter / union;
110
+ }
111
+ function tokenOverlap(a, b) {
112
+ if (a.size === 0 || b.size === 0)
113
+ return 0;
114
+ let inter = 0;
115
+ for (const token of a) {
116
+ if (b.has(token))
117
+ inter++;
118
+ }
119
+ return inter / Math.max(1, Math.min(a.size, b.size));
120
+ }
121
+ function buildTrigrams(input) {
122
+ const normalized = input
123
+ .toLowerCase()
124
+ .replace(/[^\w\s]/g, ' ')
125
+ .replace(/\s+/g, ' ')
126
+ .trim();
127
+ if (!normalized)
128
+ return new Set();
129
+ if (normalized.length < 3)
130
+ return new Set([normalized]);
131
+ const grams = new Set();
132
+ for (let i = 0; i <= normalized.length - 3; i++) {
133
+ grams.add(normalized.slice(i, i + 3));
134
+ }
135
+ return grams;
136
+ }
137
+ function diceCoefficient(a, b) {
138
+ if (a.size === 0 || b.size === 0)
139
+ return 0;
140
+ let inter = 0;
141
+ for (const gram of a) {
142
+ if (b.has(gram))
143
+ inter++;
144
+ }
145
+ return (2 * inter) / (a.size + b.size);
146
+ }
147
+ function questionSimilarity(aQuestion, bQuestion) {
148
+ const aNorm = (0, plan_cache_1.normalizeIntent)(aQuestion);
149
+ const bNorm = (0, plan_cache_1.normalizeIntent)(bQuestion);
150
+ if (!aNorm || !bNorm)
151
+ return 0;
152
+ const aTokens = new Set(tokenize(aNorm));
153
+ const bTokens = new Set(tokenize(bNorm));
154
+ const jac = jaccard(aTokens, bTokens);
155
+ const overlap = tokenOverlap(aTokens, bTokens);
156
+ const dice = diceCoefficient(buildTrigrams(aNorm), buildTrigrams(bNorm));
157
+ return jac * 0.45 + overlap * 0.35 + dice * 0.2;
158
+ }
159
+ function sameSnapshot(current, cached) {
160
+ if (current.kind !== cached.kind)
161
+ return false;
162
+ if (normalizeRepoIdentity(current.repoIdentity) !== normalizeRepoIdentity(cached.repoIdentity))
163
+ return false;
164
+ if (current.kind === 'git' && cached.kind === 'git') {
165
+ return current.headTreeSha === cached.headTreeSha;
166
+ }
167
+ if (current.kind === 'filesystem' && cached.kind === 'filesystem') {
168
+ return current.fileTreeHash === cached.fileTreeHash;
169
+ }
170
+ return false;
171
+ }
172
+ function pathOverlaps(aRaw, bRaw) {
173
+ const a = normalizePath(aRaw);
174
+ const b = normalizePath(bRaw);
175
+ if (!a || !b)
176
+ return false;
177
+ if (a === b)
178
+ return true;
179
+ return a.startsWith(`${b}/`) || b.startsWith(`${a}/`);
180
+ }
181
+ function canUseWithSafeDrift(input, candidate) {
182
+ const currentRepo = input.repo;
183
+ const cachedRepo = candidate.input.repo;
184
+ if (currentRepo.kind !== 'git' || cachedRepo.kind !== 'git')
185
+ return false;
186
+ if (normalizeRepoIdentity(currentRepo.repoIdentity) !== normalizeRepoIdentity(cachedRepo.repoIdentity))
187
+ return false;
188
+ const changedPaths = (input.changedPaths || []).map(normalizePath).filter(Boolean);
189
+ const evidencePaths = (candidate.evidencePaths || []).map(normalizePath).filter(Boolean);
190
+ if (changedPaths.length === 0 || evidencePaths.length === 0)
191
+ return false;
192
+ for (const changed of changedPaths) {
193
+ for (const evidence of evidencePaths) {
194
+ if (pathOverlaps(changed, evidence)) {
195
+ return false;
196
+ }
197
+ }
198
+ }
199
+ return true;
200
+ }
201
+ function computeAskQuestionHash(input) {
202
+ const normalized = (0, plan_cache_1.normalizeIntent)(input.question);
203
+ const safeQuestion = (0, secret_masking_1.maskSecretsInText)(normalized).masked;
204
+ const payload = [
205
+ `question=${safeQuestion}`,
206
+ `contextHash=${input.contextHash || ''}`,
207
+ ].join('\n');
208
+ return sha256Hex(payload);
209
+ }
210
+ function computeAskCacheKey(input) {
211
+ const repoPart = input.repo.kind === 'git'
212
+ ? `kind=git\nrepoIdentity=${input.repo.repoIdentity}\nheadSha=${input.repo.headSha}\nheadTreeSha=${input.repo.headTreeSha}\nworkingTreeHash=${input.repo.workingTreeHash}`
213
+ : `kind=filesystem\nrepoIdentity=${input.repo.repoIdentity}\nfileTreeHash=${input.repo.fileTreeHash}`;
214
+ const payload = [
215
+ `schema=${input.schemaVersion}`,
216
+ `orgId=${input.orgId}`,
217
+ `projectId=${input.projectId}`,
218
+ repoPart,
219
+ `questionHash=${input.questionHash}`,
220
+ `policyVersionHash=${input.policyVersionHash}`,
221
+ `neurcodeVersion=${input.neurcodeVersion}`,
222
+ ].join('\n');
223
+ return sha256Hex(payload);
224
+ }
225
+ function readCachedAsk(cwd, key) {
226
+ try {
227
+ const store = readStore(cwd);
228
+ const existing = store.entries[key];
229
+ if (!existing)
230
+ return null;
231
+ const next = {
232
+ ...existing,
233
+ lastUsedAt: nowIso(),
234
+ useCount: Number(existing.useCount || 0) + 1,
235
+ };
236
+ store.entries[key] = next;
237
+ writeStore(cwd, store);
238
+ return next;
239
+ }
240
+ catch {
241
+ return null;
242
+ }
243
+ }
244
+ function writeCachedAsk(cwd, entry) {
245
+ try {
246
+ const store = readStore(cwd);
247
+ const existing = store.entries[entry.key];
248
+ const now = nowIso();
249
+ const questionNorm = (0, plan_cache_1.normalizeIntent)(entry.input.question || '');
250
+ const safeQuestion = (0, secret_masking_1.maskSecretsInText)(questionNorm).masked;
251
+ const questionHash = sha256Hex(safeQuestion);
252
+ const next = {
253
+ key: entry.key,
254
+ createdAt: existing?.createdAt || now,
255
+ lastUsedAt: now,
256
+ useCount: Number(existing?.useCount || 0) + 1,
257
+ input: {
258
+ ...entry.input,
259
+ schemaVersion: ASK_CACHE_SCHEMA_VERSION,
260
+ question: safeQuestion,
261
+ questionHash,
262
+ },
263
+ output: {
264
+ ...entry.output,
265
+ question: (0, secret_masking_1.maskSecretsInText)(entry.output.question).masked,
266
+ questionNormalized: safeQuestion,
267
+ citations: entry.output.citations.map((citation) => ({
268
+ ...citation,
269
+ snippet: (0, secret_masking_1.maskSecretsInText)(citation.snippet).masked,
270
+ })),
271
+ },
272
+ evidencePaths: [...new Set((entry.evidencePaths || []).map(normalizePath).filter(Boolean))].slice(0, 80),
273
+ };
274
+ store.entries[entry.key] = next;
275
+ pruneStore(store);
276
+ writeStore(cwd, store);
277
+ }
278
+ catch {
279
+ // ignore cache write failures
280
+ }
281
+ }
282
+ function listScopeEntries(cwd, scope) {
283
+ const store = readStore(cwd);
284
+ return Object.values(store.entries).filter((entry) => entry.input.orgId === scope.orgId && entry.input.projectId === scope.projectId);
285
+ }
286
+ function findNearCachedAsk(cwd, input) {
287
+ try {
288
+ const normalizedQuestion = (0, plan_cache_1.normalizeIntent)(input.question);
289
+ if (!normalizedQuestion)
290
+ return null;
291
+ const thresholdBase = Math.max(0.6, Math.min(input.minSimilarity ?? 0.72, 0.98));
292
+ const tokenCount = new Set(tokenize(normalizedQuestion)).size;
293
+ const threshold = tokenCount <= 4
294
+ ? Math.max(thresholdBase, 0.8)
295
+ : tokenCount <= 8
296
+ ? Math.max(thresholdBase, 0.72)
297
+ : thresholdBase;
298
+ const candidates = listScopeEntries(cwd, {
299
+ orgId: input.orgId,
300
+ projectId: input.projectId,
301
+ });
302
+ let best = null;
303
+ for (const candidate of candidates) {
304
+ if (!candidate.input.question)
305
+ continue;
306
+ if (normalizeRepoIdentity(candidate.input.repo.repoIdentity) !== normalizeRepoIdentity(input.repo.repoIdentity))
307
+ continue;
308
+ if (candidate.input.policyVersionHash !== input.policyVersionHash)
309
+ continue;
310
+ if (candidate.input.neurcodeVersion !== input.neurcodeVersion)
311
+ continue;
312
+ if (input.contextHash && candidate.input.contextHash && input.contextHash !== candidate.input.contextHash)
313
+ continue;
314
+ const snapshotMatch = sameSnapshot(input.repo, candidate.input.repo);
315
+ const driftSafe = snapshotMatch ? false : canUseWithSafeDrift(input, candidate);
316
+ if (!snapshotMatch && !driftSafe)
317
+ continue;
318
+ const score = questionSimilarity(normalizedQuestion, candidate.input.question);
319
+ if (score < threshold)
320
+ continue;
321
+ const next = {
322
+ entry: candidate,
323
+ similarity: score,
324
+ reason: snapshotMatch ? 'same_snapshot_similar_question' : 'safe_repo_drift_similar_question',
325
+ };
326
+ if (!best) {
327
+ best = next;
328
+ continue;
329
+ }
330
+ if (next.similarity > best.similarity) {
331
+ best = next;
332
+ continue;
333
+ }
334
+ if (next.similarity === best.similarity) {
335
+ const bestTime = Date.parse(best.entry.lastUsedAt || best.entry.createdAt) || 0;
336
+ const nextTime = Date.parse(next.entry.lastUsedAt || next.entry.createdAt) || 0;
337
+ if (nextTime > bestTime)
338
+ best = next;
339
+ }
340
+ }
341
+ return best;
342
+ }
343
+ catch {
344
+ return null;
345
+ }
346
+ }
347
+ function sanitizeGitStatus(status) {
348
+ const lines = status.split(/\r?\n/).filter((line) => line.trim().length > 0);
349
+ const filtered = [];
350
+ for (const line of lines) {
351
+ if (NON_SEMANTIC_GIT_PATH_MARKERS.some((marker) => line.includes(marker))) {
352
+ continue;
353
+ }
354
+ if (line.length < 4)
355
+ continue;
356
+ const pathPart = line.slice(3).trim();
357
+ if (!pathPart)
358
+ continue;
359
+ const normalizedRaw = pathPart.includes(' -> ')
360
+ ? pathPart.split(' -> ').pop() || pathPart
361
+ : pathPart;
362
+ const unquoted = normalizedRaw.startsWith('"') && normalizedRaw.endsWith('"')
363
+ ? normalizedRaw.slice(1, -1).replace(/\\"/g, '"')
364
+ : normalizedRaw;
365
+ filtered.push(normalizePath(unquoted));
366
+ }
367
+ return filtered;
368
+ }
369
+ function getChangedWorkingTreePaths(cwd, limit = 140) {
370
+ try {
371
+ const inside = (0, child_process_1.execSync)('git rev-parse --is-inside-work-tree', {
372
+ cwd,
373
+ encoding: 'utf-8',
374
+ stdio: ['ignore', 'pipe', 'ignore'],
375
+ }).trim().toLowerCase();
376
+ if (inside !== 'true')
377
+ return [];
378
+ const status = (0, child_process_1.execSync)('git status --porcelain', {
379
+ cwd,
380
+ encoding: 'utf-8',
381
+ stdio: ['ignore', 'pipe', 'ignore'],
382
+ });
383
+ return sanitizeGitStatus(status).slice(0, Math.max(1, limit));
384
+ }
385
+ catch {
386
+ return [];
387
+ }
388
+ }
389
+ function listCachedAsks(cwd) {
390
+ try {
391
+ const store = readStore(cwd);
392
+ return Object.values(store.entries).sort((a, b) => {
393
+ const aTime = Date.parse(a.lastUsedAt || a.createdAt) || 0;
394
+ const bTime = Date.parse(b.lastUsedAt || b.createdAt) || 0;
395
+ return bTime - aTime;
396
+ });
397
+ }
398
+ catch {
399
+ return [];
400
+ }
401
+ }
402
+ function deleteCachedAsks(cwd, predicate) {
403
+ try {
404
+ const store = readStore(cwd);
405
+ let deleted = 0;
406
+ for (const [key, entry] of Object.entries(store.entries)) {
407
+ if (!predicate(entry))
408
+ continue;
409
+ delete store.entries[key];
410
+ deleted++;
411
+ }
412
+ if (deleted > 0) {
413
+ writeStore(cwd, store);
414
+ }
415
+ return {
416
+ deleted,
417
+ remaining: Object.keys(store.entries).length,
418
+ };
419
+ }
420
+ catch {
421
+ return { deleted: 0, remaining: 0 };
422
+ }
423
+ }
424
+ //# sourceMappingURL=ask-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-cache.js","sourceRoot":"","sources":["../../src/utils/ask-cache.ts"],"names":[],"mappings":"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"}