@neurcode-ai/cli 0.9.5 → 0.9.7
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/api-client.d.ts +6 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +38 -14
- package/dist/api-client.js.map +1 -1
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +2 -1
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/init.d.ts +5 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +45 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +3 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +26 -7
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +8 -2
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +30 -13
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/map.d.ts.map +1 -1
- package/dist/commands/map.js +6 -3
- package/dist/commands/map.js.map +1 -1
- package/dist/commands/plan.d.ts +1 -0
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +192 -29
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/prompt.d.ts.map +1 -1
- package/dist/commands/prompt.js +2 -1
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/revert.d.ts.map +1 -1
- package/dist/commands/revert.js +5 -2
- package/dist/commands/revert.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +4 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +2 -1
- package/dist/commands/watch.js.map +1 -1
- package/dist/config.d.ts +9 -13
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +235 -133
- package/dist/config.js.map +1 -1
- package/dist/index.js +15 -6
- package/dist/index.js.map +1 -1
- package/dist/services/watch/CommandPoller.d.ts.map +1 -1
- package/dist/services/watch/CommandPoller.js +5 -0
- package/dist/services/watch/CommandPoller.js.map +1 -1
- package/dist/services/watch/Syncer.d.ts.map +1 -1
- package/dist/services/watch/Syncer.js +3 -0
- package/dist/services/watch/Syncer.js.map +1 -1
- package/dist/utils/gitignore.d.ts.map +1 -1
- package/dist/utils/gitignore.js +29 -7
- package/dist/utils/gitignore.js.map +1 -1
- package/dist/utils/neurcode-context.d.ts +24 -0
- package/dist/utils/neurcode-context.d.ts.map +1 -0
- package/dist/utils/neurcode-context.js +252 -0
- package/dist/utils/neurcode-context.js.map +1 -0
- package/dist/utils/plan-cache.d.ts +44 -0
- package/dist/utils/plan-cache.d.ts.map +1 -0
- package/dist/utils/plan-cache.js +227 -0
- package/dist/utils/plan-cache.js.map +1 -0
- package/dist/utils/project-root.d.ts +18 -0
- package/dist/utils/project-root.d.ts.map +1 -0
- package/dist/utils/project-root.js +44 -0
- package/dist/utils/project-root.js.map +1 -0
- package/dist/utils/secret-masking.d.ts +12 -0
- package/dist/utils/secret-masking.d.ts.map +1 -0
- package/dist/utils/secret-masking.js +34 -0
- package/dist/utils/secret-masking.js.map +1 -0
- package/dist/utils/state.d.ts.map +1 -1
- package/dist/utils/state.js +6 -5
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/tier.d.ts.map +1 -1
- package/dist/utils/tier.js +7 -3
- package/dist/utils/tier.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeIntent = normalizeIntent;
|
|
4
|
+
exports.getPlanCachePath = getPlanCachePath;
|
|
5
|
+
exports.computePlanCacheKey = computePlanCacheKey;
|
|
6
|
+
exports.getGitRepoFingerprint = getGitRepoFingerprint;
|
|
7
|
+
exports.getFilesystemFingerprintFromTree = getFilesystemFingerprintFromTree;
|
|
8
|
+
exports.readCachedPlan = readCachedPlan;
|
|
9
|
+
exports.writeCachedPlan = writeCachedPlan;
|
|
10
|
+
exports.findSimilarCachedPlans = findSimilarCachedPlans;
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
12
|
+
const crypto_1 = require("crypto");
|
|
13
|
+
const fs_1 = require("fs");
|
|
14
|
+
const path_1 = require("path");
|
|
15
|
+
const secret_masking_1 = require("./secret-masking");
|
|
16
|
+
const CACHE_SCHEMA_VERSION = 1;
|
|
17
|
+
const CACHE_FILE_NAME = 'plan-cache.json';
|
|
18
|
+
const MAX_ENTRIES = 50;
|
|
19
|
+
function sha256Hex(input) {
|
|
20
|
+
return (0, crypto_1.createHash)('sha256').update(input).digest('hex');
|
|
21
|
+
}
|
|
22
|
+
function normalizeIntent(intent) {
|
|
23
|
+
return intent
|
|
24
|
+
.trim()
|
|
25
|
+
.replace(/\s+/g, ' ')
|
|
26
|
+
.toLowerCase();
|
|
27
|
+
}
|
|
28
|
+
function getPlanCachePath(cwd) {
|
|
29
|
+
return (0, path_1.join)(cwd, '.neurcode', CACHE_FILE_NAME);
|
|
30
|
+
}
|
|
31
|
+
function ensureNeurcodeDir(cwd) {
|
|
32
|
+
const dir = (0, path_1.join)(cwd, '.neurcode');
|
|
33
|
+
if (!(0, fs_1.existsSync)(dir)) {
|
|
34
|
+
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function safeReadCacheFile(cachePath) {
|
|
38
|
+
if (!(0, fs_1.existsSync)(cachePath)) {
|
|
39
|
+
return { schemaVersion: CACHE_SCHEMA_VERSION, entries: {} };
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const raw = (0, fs_1.readFileSync)(cachePath, 'utf-8');
|
|
43
|
+
const parsed = JSON.parse(raw);
|
|
44
|
+
if (parsed.schemaVersion !== CACHE_SCHEMA_VERSION || !parsed.entries || typeof parsed.entries !== 'object') {
|
|
45
|
+
throw new Error('Invalid cache schema');
|
|
46
|
+
}
|
|
47
|
+
const cache = parsed;
|
|
48
|
+
// Best-effort: avoid persisting secrets in cached intents (older caches may include them).
|
|
49
|
+
// This does not affect cache keys (they remain stable), it only sanitizes the stored intent text.
|
|
50
|
+
try {
|
|
51
|
+
for (const entry of Object.values(cache.entries)) {
|
|
52
|
+
if (!entry?.input?.intent)
|
|
53
|
+
continue;
|
|
54
|
+
entry.input.intent = (0, secret_masking_1.maskSecretsInText)(entry.input.intent).masked;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// ignore
|
|
59
|
+
}
|
|
60
|
+
return cache;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Preserve the corrupted file for debugging, but do not block the command.
|
|
64
|
+
try {
|
|
65
|
+
const corruptPath = cachePath.replace(/\.json$/, `.corrupt-${Date.now()}.json`);
|
|
66
|
+
(0, fs_1.renameSync)(cachePath, corruptPath);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// ignore
|
|
70
|
+
}
|
|
71
|
+
return { schemaVersion: CACHE_SCHEMA_VERSION, entries: {} };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function atomicWrite(cachePath, data) {
|
|
75
|
+
const tmpPath = `${cachePath}.tmp`;
|
|
76
|
+
(0, fs_1.writeFileSync)(tmpPath, data, 'utf-8');
|
|
77
|
+
(0, fs_1.renameSync)(tmpPath, cachePath);
|
|
78
|
+
}
|
|
79
|
+
function prune(cache) {
|
|
80
|
+
const keys = Object.keys(cache.entries);
|
|
81
|
+
if (keys.length <= MAX_ENTRIES)
|
|
82
|
+
return;
|
|
83
|
+
const sorted = keys
|
|
84
|
+
.map((k) => cache.entries[k])
|
|
85
|
+
.filter(Boolean)
|
|
86
|
+
.sort((a, b) => {
|
|
87
|
+
const aTime = Date.parse(a.lastUsedAt) || 0;
|
|
88
|
+
const bTime = Date.parse(b.lastUsedAt) || 0;
|
|
89
|
+
return aTime - bTime;
|
|
90
|
+
});
|
|
91
|
+
const toRemove = sorted.slice(0, Math.max(0, sorted.length - MAX_ENTRIES));
|
|
92
|
+
for (const entry of toRemove) {
|
|
93
|
+
delete cache.entries[entry.key];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function computePlanCacheKey(input) {
|
|
97
|
+
const safeIntent = (0, secret_masking_1.maskSecretsInText)(input.intent).masked;
|
|
98
|
+
// Use an explicit, stable string rather than JSON.stringify of arbitrary objects.
|
|
99
|
+
const payload = [
|
|
100
|
+
`v=${input.schemaVersion}`,
|
|
101
|
+
`apiUrl=${input.apiUrl}`,
|
|
102
|
+
`orgId=${input.orgId}`,
|
|
103
|
+
`projectId=${input.projectId}`,
|
|
104
|
+
`intent=${safeIntent}`,
|
|
105
|
+
`ticketRef=${input.ticketRef || ''}`,
|
|
106
|
+
`contextHash=${input.contextHash || ''}`,
|
|
107
|
+
`repo.kind=${input.repo.kind}`,
|
|
108
|
+
input.repo.kind === 'git'
|
|
109
|
+
? `repo.headSha=${input.repo.headSha};repo.headTreeSha=${input.repo.headTreeSha};repo.statusHash=${input.repo.statusHash}`
|
|
110
|
+
: `repo.fileTreeHash=${input.repo.fileTreeHash}`,
|
|
111
|
+
].join('\n');
|
|
112
|
+
return sha256Hex(payload);
|
|
113
|
+
}
|
|
114
|
+
function getGitRepoFingerprint(cwd) {
|
|
115
|
+
try {
|
|
116
|
+
const inside = (0, child_process_1.execSync)('git rev-parse --is-inside-work-tree', { cwd, encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] })
|
|
117
|
+
.trim()
|
|
118
|
+
.toLowerCase();
|
|
119
|
+
if (inside !== 'true')
|
|
120
|
+
return null;
|
|
121
|
+
const headSha = (0, child_process_1.execSync)('git rev-parse HEAD', { cwd, encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
122
|
+
const headTreeSha = (0, child_process_1.execSync)('git rev-parse HEAD^{tree}', { cwd, encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
123
|
+
const status = (0, child_process_1.execSync)('git status --porcelain', { cwd, encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] });
|
|
124
|
+
const statusHash = sha256Hex(status);
|
|
125
|
+
return { kind: 'git', headSha, headTreeSha, statusHash };
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function getFilesystemFingerprintFromTree(fileTree) {
|
|
132
|
+
// Normalize ordering so the hash is stable even if scanning order changes.
|
|
133
|
+
const normalized = [...fileTree].sort().join('\n');
|
|
134
|
+
return { kind: 'filesystem', fileTreeHash: sha256Hex(normalized) };
|
|
135
|
+
}
|
|
136
|
+
function readCachedPlan(cwd, key) {
|
|
137
|
+
try {
|
|
138
|
+
const cachePath = getPlanCachePath(cwd);
|
|
139
|
+
const cache = safeReadCacheFile(cachePath);
|
|
140
|
+
const entry = cache.entries[key];
|
|
141
|
+
if (!entry)
|
|
142
|
+
return null;
|
|
143
|
+
// Update LRU metadata.
|
|
144
|
+
const now = new Date().toISOString();
|
|
145
|
+
entry.lastUsedAt = now;
|
|
146
|
+
entry.useCount = (entry.useCount || 0) + 1;
|
|
147
|
+
cache.entries[key] = entry;
|
|
148
|
+
prune(cache);
|
|
149
|
+
atomicWrite(cachePath, JSON.stringify(cache, null, 2) + '\n');
|
|
150
|
+
return entry;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function writeCachedPlan(cwd, entry) {
|
|
157
|
+
try {
|
|
158
|
+
ensureNeurcodeDir(cwd);
|
|
159
|
+
const cachePath = getPlanCachePath(cwd);
|
|
160
|
+
const cache = safeReadCacheFile(cachePath);
|
|
161
|
+
const now = new Date().toISOString();
|
|
162
|
+
const existing = cache.entries[entry.key];
|
|
163
|
+
const next = {
|
|
164
|
+
...entry,
|
|
165
|
+
createdAt: existing?.createdAt || now,
|
|
166
|
+
lastUsedAt: now,
|
|
167
|
+
useCount: (existing?.useCount || 0) + 1,
|
|
168
|
+
};
|
|
169
|
+
// Best-effort: do not persist secrets in the on-disk cache.
|
|
170
|
+
try {
|
|
171
|
+
if (next.input?.intent) {
|
|
172
|
+
next.input.intent = (0, secret_masking_1.maskSecretsInText)(next.input.intent).masked;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// ignore
|
|
177
|
+
}
|
|
178
|
+
cache.entries[entry.key] = next;
|
|
179
|
+
prune(cache);
|
|
180
|
+
atomicWrite(cachePath, JSON.stringify(cache, null, 2) + '\n');
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Cache failures should never block plan generation.
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function tokenize(text) {
|
|
187
|
+
return text
|
|
188
|
+
.toLowerCase()
|
|
189
|
+
.replace(/[^\w\s]/g, ' ')
|
|
190
|
+
.split(/\s+/)
|
|
191
|
+
.filter((t) => t.length >= 3);
|
|
192
|
+
}
|
|
193
|
+
function jaccard(a, b) {
|
|
194
|
+
if (a.size === 0 || b.size === 0)
|
|
195
|
+
return 0;
|
|
196
|
+
let inter = 0;
|
|
197
|
+
for (const x of a) {
|
|
198
|
+
if (b.has(x))
|
|
199
|
+
inter++;
|
|
200
|
+
}
|
|
201
|
+
const union = a.size + b.size - inter;
|
|
202
|
+
return union === 0 ? 0 : inter / union;
|
|
203
|
+
}
|
|
204
|
+
function findSimilarCachedPlans(cwd, filter, intent, k = 3) {
|
|
205
|
+
try {
|
|
206
|
+
const cachePath = getPlanCachePath(cwd);
|
|
207
|
+
const cache = safeReadCacheFile(cachePath);
|
|
208
|
+
const entries = Object.values(cache.entries);
|
|
209
|
+
const queryTokens = new Set(tokenize(intent));
|
|
210
|
+
const scored = entries
|
|
211
|
+
.filter((e) => e.input.orgId === filter.orgId && e.input.projectId === filter.projectId)
|
|
212
|
+
.map((e) => {
|
|
213
|
+
const eTokens = new Set(tokenize(e.input.intent));
|
|
214
|
+
const score = jaccard(queryTokens, eTokens);
|
|
215
|
+
return { entry: e, score };
|
|
216
|
+
})
|
|
217
|
+
.filter((s) => s.score > 0)
|
|
218
|
+
.sort((a, b) => b.score - a.score)
|
|
219
|
+
.slice(0, k)
|
|
220
|
+
.map((s) => s.entry);
|
|
221
|
+
return scored;
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return [];
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=plan-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-cache.js","sourceRoot":"","sources":["../../src/utils/plan-cache.ts"],"names":[],"mappings":";;AAwDA,0CAKC;AAED,4CAEC;AAyED,kDAkBC;AAED,sDAgBC;AAED,4EAIC;AAED,wCAmBC;AAED,0CA8BC;AAoBD,wDA4BC;AAzRD,iDAAyC;AACzC,mCAAoC;AACpC,2BAAoF;AACpF,+BAA4B;AAE5B,qDAAqD;AA2CrD,MAAM,oBAAoB,GAAG,CAAU,CAAC;AACxC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAC1C,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,eAAe,CAAC,MAAc;IAC5C,OAAO,MAAM;SACV,IAAI,EAAE;SACN,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,OAAO,IAAA,WAAI,EAAC,GAAG,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,GAAG,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACnC,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;QACrB,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,IAAI,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC;QAE3D,IAAI,MAAM,CAAC,aAAa,KAAK,oBAAoB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3G,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,KAAK,GAAG,MAAyB,CAAC;QAExC,2FAA2F;QAC3F,kGAAkG;QAClG,IAAI,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM;oBAAE,SAAS;gBACpC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAA,kCAAiB,EAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAChF,IAAA,eAAU,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB,EAAE,IAAY;IAClD,MAAM,OAAO,GAAG,GAAG,SAAS,MAAM,CAAC;IACnC,IAAA,kBAAa,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,IAAA,eAAU,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,KAAK,CAAC,KAAsB;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,IAAI,WAAW;QAAE,OAAO;IAEvC,MAAM,MAAM,GAAG,IAAI;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IAEL,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAC3E,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAA0B;IAC5D,MAAM,UAAU,GAAG,IAAA,kCAAiB,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAC1D,kFAAkF;IAClF,MAAM,OAAO,GAAG;QACd,KAAK,KAAK,CAAC,aAAa,EAAE;QAC1B,UAAU,KAAK,CAAC,MAAM,EAAE;QACxB,SAAS,KAAK,CAAC,KAAK,EAAE;QACtB,aAAa,KAAK,CAAC,SAAS,EAAE;QAC9B,UAAU,UAAU,EAAE;QACtB,aAAa,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE;QACpC,eAAe,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE;QACxC,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;QAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;YACvB,CAAC,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,OAAO,qBAAqB,KAAK,CAAC,IAAI,CAAC,WAAW,oBAAoB,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;YAC1H,CAAC,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,qCAAqC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;aAC5H,IAAI,EAAE;aACN,WAAW,EAAE,CAAC;QACjB,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAA,wBAAQ,EAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvH,MAAM,WAAW,GAAG,IAAA,wBAAQ,EAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAClI,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnH,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAErC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,gCAAgC,CAAC,QAAkB;IACjE,2EAA2E;IAC3E,MAAM,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW,EAAE,GAAW;IACrD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,uBAAuB;QACvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QACvB,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAE9D,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,GAAW,EAAE,KAAuE;IAClH,IAAI,CAAC;QACH,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE3C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAsB;YAC9B,GAAG,KAAK;YACR,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;YACrC,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;SACxC,CAAC;QAEF,4DAA4D;QAC5D,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAA,kCAAiB,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,OAAO,CAAC,CAAc,EAAE,CAAc;IAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,KAAK,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;IACtC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AACzC,CAAC;AAED,SAAgB,sBAAsB,CACpC,GAAW,EACX,MAA4C,EAC5C,MAAc,EACd,IAAY,CAAC;IAEb,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,OAAO;aACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC;aACvF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;aAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neurcode Project Root Resolution
|
|
3
|
+
*
|
|
4
|
+
* Enterprise UX requirement: users should be able to run Neurcode CLI commands
|
|
5
|
+
* from any subdirectory inside a linked project and still use the same
|
|
6
|
+
* `.neurcode/` state, caches, and context.
|
|
7
|
+
*
|
|
8
|
+
* Strategy:
|
|
9
|
+
* - Walk up from the current working directory and pick the nearest ancestor
|
|
10
|
+
* that contains `.neurcode/config.json` (linked project marker).
|
|
11
|
+
* - Also treat legacy `neurcode.config.json` as a marker for older setups.
|
|
12
|
+
* - If nothing is found, fall back to the starting directory (preserves current behavior).
|
|
13
|
+
*
|
|
14
|
+
* Note: We intentionally do NOT fall back to git root here. Linking a subdirectory
|
|
15
|
+
* (monorepo package) should remain possible without surprises.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveNeurcodeProjectRoot(startDir?: string): string;
|
|
18
|
+
//# sourceMappingURL=project-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-root.d.ts","sourceRoot":"","sources":["../../src/utils/project-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,wBAAgB,0BAA0B,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CAyBnF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Neurcode Project Root Resolution
|
|
4
|
+
*
|
|
5
|
+
* Enterprise UX requirement: users should be able to run Neurcode CLI commands
|
|
6
|
+
* from any subdirectory inside a linked project and still use the same
|
|
7
|
+
* `.neurcode/` state, caches, and context.
|
|
8
|
+
*
|
|
9
|
+
* Strategy:
|
|
10
|
+
* - Walk up from the current working directory and pick the nearest ancestor
|
|
11
|
+
* that contains `.neurcode/config.json` (linked project marker).
|
|
12
|
+
* - Also treat legacy `neurcode.config.json` as a marker for older setups.
|
|
13
|
+
* - If nothing is found, fall back to the starting directory (preserves current behavior).
|
|
14
|
+
*
|
|
15
|
+
* Note: We intentionally do NOT fall back to git root here. Linking a subdirectory
|
|
16
|
+
* (monorepo package) should remain possible without surprises.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.resolveNeurcodeProjectRoot = resolveNeurcodeProjectRoot;
|
|
20
|
+
const fs_1 = require("fs");
|
|
21
|
+
const path_1 = require("path");
|
|
22
|
+
function resolveNeurcodeProjectRoot(startDir = process.cwd()) {
|
|
23
|
+
const override = process.env.NEURCODE_PROJECT_ROOT || process.env.NEURCODE_ROOT;
|
|
24
|
+
if (override && override.trim()) {
|
|
25
|
+
return (0, path_1.resolve)(override.trim());
|
|
26
|
+
}
|
|
27
|
+
let dir = (0, path_1.resolve)(startDir);
|
|
28
|
+
while (true) {
|
|
29
|
+
const neurcodeConfig = (0, path_1.join)(dir, '.neurcode', 'config.json');
|
|
30
|
+
if ((0, fs_1.existsSync)(neurcodeConfig)) {
|
|
31
|
+
return dir;
|
|
32
|
+
}
|
|
33
|
+
const legacyLocalConfig = (0, path_1.join)(dir, 'neurcode.config.json');
|
|
34
|
+
if ((0, fs_1.existsSync)(legacyLocalConfig)) {
|
|
35
|
+
return dir;
|
|
36
|
+
}
|
|
37
|
+
const parent = (0, path_1.dirname)(dir);
|
|
38
|
+
if (parent === dir)
|
|
39
|
+
break;
|
|
40
|
+
dir = parent;
|
|
41
|
+
}
|
|
42
|
+
return (0, path_1.resolve)(startDir);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=project-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-root.js","sourceRoot":"","sources":["../../src/utils/project-root.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAKH,gEAyBC;AA5BD,2BAAgC;AAChC,+BAA8C;AAE9C,SAAgB,0BAA0B,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAChF,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,OAAO,IAAA,cAAO,EAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,GAAG,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;IAE5B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;QAC7D,IAAI,IAAA,eAAU,EAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5D,IAAI,IAAA,eAAU,EAAC,iBAAiB,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IAED,OAAO,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight secret masking for local persistence (cache/memory files).
|
|
3
|
+
*
|
|
4
|
+
* This intentionally avoids importing the full SecurityGuard (ts-morph heavy),
|
|
5
|
+
* while still masking the most common secret patterns that users may paste into
|
|
6
|
+
* CLI intents or context files.
|
|
7
|
+
*/
|
|
8
|
+
export declare function maskSecretsInText(text: string): {
|
|
9
|
+
masked: string;
|
|
10
|
+
changed: boolean;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=secret-masking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-masking.d.ts","sourceRoot":"","sources":["../../src/utils/secret-masking.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAyCpF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maskSecretsInText = maskSecretsInText;
|
|
4
|
+
const REDACTION_PLACEHOLDER = '[REDACTED_BY_NEURCODE]';
|
|
5
|
+
/**
|
|
6
|
+
* Lightweight secret masking for local persistence (cache/memory files).
|
|
7
|
+
*
|
|
8
|
+
* This intentionally avoids importing the full SecurityGuard (ts-morph heavy),
|
|
9
|
+
* while still masking the most common secret patterns that users may paste into
|
|
10
|
+
* CLI intents or context files.
|
|
11
|
+
*/
|
|
12
|
+
function maskSecretsInText(text) {
|
|
13
|
+
if (!text)
|
|
14
|
+
return { masked: text, changed: false };
|
|
15
|
+
let masked = text;
|
|
16
|
+
const before = masked;
|
|
17
|
+
// Direct token patterns
|
|
18
|
+
masked = masked.replace(/\bAKIA[0-9A-Z]{16}\b/gi, REDACTION_PLACEHOLDER); // AWS access key id
|
|
19
|
+
masked = masked.replace(/\b(ghp|gho|ghu|ghs|ghr)_[a-zA-Z0-9]{36,}\b/gi, REDACTION_PLACEHOLDER); // GitHub tokens
|
|
20
|
+
// JWTs (common shape)
|
|
21
|
+
masked = masked.replace(/\beyJ[a-zA-Z0-9_-]{10,}\.[a-zA-Z0-9_-]{10,}\.[a-zA-Z0-9_-]{10,}\b/g, REDACTION_PLACEHOLDER);
|
|
22
|
+
// Connection strings / URLs with credentials
|
|
23
|
+
masked = masked.replace(/\b((?:postgresql?|mysql|mongodb(?:\+srv)?|redis):\/\/)([^\s]+)/gi, `$1${REDACTION_PLACEHOLDER}`);
|
|
24
|
+
// sshpass password inline
|
|
25
|
+
masked = masked.replace(/\b(sshpass\s+-p\s+)(['"])([^'"]+)\2/gi, `$1$2${REDACTION_PLACEHOLDER}$2`);
|
|
26
|
+
// bearer/token/apikey style assignments (keep the left side; redact the value)
|
|
27
|
+
masked = masked.replace(/\b((?:bearer|token|apikey)\s*[:=]\s*['"]?)([a-zA-Z0-9_\-]{32,})(['"]?)/gi, `$1${REDACTION_PLACEHOLDER}$3`);
|
|
28
|
+
// generic secret-like assignments (keep the left side; redact the value)
|
|
29
|
+
masked = masked.replace(/\b((?:password|secret|key|api[_-]?key|private[_-]?key|access[_-]?token|auth[_-]?token)\s*[:=]\s*['"]?)([a-zA-Z0-9_\-+/=]{20,})(['"]?)/gi, `$1${REDACTION_PLACEHOLDER}$3`);
|
|
30
|
+
// PEM private keys (multi-line)
|
|
31
|
+
masked = masked.replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g, REDACTION_PLACEHOLDER);
|
|
32
|
+
return { masked, changed: masked !== before };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=secret-masking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-masking.js","sourceRoot":"","sources":["../../src/utils/secret-masking.ts"],"names":[],"mappings":";;AASA,8CAyCC;AAlDD,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAEvD;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAEnD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,MAAM,GAAG,MAAM,CAAC;IAEtB,wBAAwB;IACxB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC,CAAC,oBAAoB;IAC9F,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,8CAA8C,EAAE,qBAAqB,CAAC,CAAC,CAAC,gBAAgB;IAEhH,sBAAsB;IACtB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oEAAoE,EAAE,qBAAqB,CAAC,CAAC;IAErH,6CAA6C;IAC7C,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,kEAAkE,EAClE,KAAK,qBAAqB,EAAE,CAC7B,CAAC;IAEF,0BAA0B;IAC1B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,uCAAuC,EAAE,OAAO,qBAAqB,IAAI,CAAC,CAAC;IAEnG,+EAA+E;IAC/E,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,0EAA0E,EAC1E,KAAK,qBAAqB,IAAI,CAC/B,CAAC;IAEF,yEAAyE;IACzE,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,yIAAyI,EACzI,KAAK,qBAAqB,IAAI,CAC/B,CAAC;IAEF,gCAAgC;IAChC,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,6EAA6E,EAC7E,qBAAqB,CACtB,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AA4BD;;GAEG;AACH,wBAAgB,SAAS,IAAI,QAAQ,CAcpC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAGxC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAE9D;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAG1C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAG7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAG/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE9D"}
|
package/dist/utils/state.js
CHANGED
|
@@ -25,14 +25,15 @@ exports.setLastPlanGeneratedAt = setLastPlanGeneratedAt;
|
|
|
25
25
|
const fs_1 = require("fs");
|
|
26
26
|
const path_1 = require("path");
|
|
27
27
|
const gitignore_1 = require("./gitignore");
|
|
28
|
+
const project_root_1 = require("./project-root");
|
|
28
29
|
const STATE_DIR = '.neurcode';
|
|
29
30
|
const CONFIG_FILE = 'config.json'; // Changed from state.json to config.json
|
|
30
31
|
/**
|
|
31
32
|
* Get path to config file in current working directory
|
|
32
33
|
*/
|
|
33
34
|
function getConfigPath() {
|
|
34
|
-
const
|
|
35
|
-
const stateDir = (0, path_1.join)(
|
|
35
|
+
const projectRoot = (0, project_root_1.resolveNeurcodeProjectRoot)(process.cwd());
|
|
36
|
+
const stateDir = (0, path_1.join)(projectRoot, STATE_DIR);
|
|
36
37
|
const configPath = (0, path_1.join)(stateDir, CONFIG_FILE);
|
|
37
38
|
return configPath;
|
|
38
39
|
}
|
|
@@ -40,13 +41,13 @@ function getConfigPath() {
|
|
|
40
41
|
* Ensure state directory exists and .neurcode is in .gitignore
|
|
41
42
|
*/
|
|
42
43
|
function ensureStateDir() {
|
|
43
|
-
const
|
|
44
|
-
const stateDir = (0, path_1.join)(
|
|
44
|
+
const projectRoot = (0, project_root_1.resolveNeurcodeProjectRoot)(process.cwd());
|
|
45
|
+
const stateDir = (0, path_1.join)(projectRoot, STATE_DIR);
|
|
45
46
|
if (!(0, fs_1.existsSync)(stateDir)) {
|
|
46
47
|
(0, fs_1.mkdirSync)(stateDir, { recursive: true });
|
|
47
48
|
}
|
|
48
49
|
// Auto-add .neurcode to .gitignore
|
|
49
|
-
(0, gitignore_1.ensureNeurcodeInGitignore)(
|
|
50
|
+
(0, gitignore_1.ensureNeurcodeInGitignore)(projectRoot);
|
|
50
51
|
}
|
|
51
52
|
/**
|
|
52
53
|
* Load state from .neurcode/config.json
|
package/dist/utils/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/tier.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../../src/utils/tier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../../src/utils/tier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAUtC;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,CAyFrD;AAyCD;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAkBrC;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAGlD"}
|
package/dist/utils/tier.js
CHANGED
|
@@ -12,6 +12,7 @@ exports.isProUser = isProUser;
|
|
|
12
12
|
const fs_1 = require("fs");
|
|
13
13
|
const path_1 = require("path");
|
|
14
14
|
const config_1 = require("../config");
|
|
15
|
+
const project_root_1 = require("./project-root");
|
|
15
16
|
const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
16
17
|
let memoryCache = null;
|
|
17
18
|
/**
|
|
@@ -26,7 +27,8 @@ async function getUserTier() {
|
|
|
26
27
|
return memoryCache.tier;
|
|
27
28
|
}
|
|
28
29
|
// Check file cache
|
|
29
|
-
const
|
|
30
|
+
const projectRoot = (0, project_root_1.resolveNeurcodeProjectRoot)(process.cwd());
|
|
31
|
+
const neurcodeDir = (0, path_1.join)(projectRoot, '.neurcode');
|
|
30
32
|
const configPath = (0, path_1.join)(neurcodeDir, 'config.json');
|
|
31
33
|
if ((0, fs_1.existsSync)(configPath)) {
|
|
32
34
|
try {
|
|
@@ -99,7 +101,8 @@ function cacheTier(tier) {
|
|
|
99
101
|
const now = Date.now();
|
|
100
102
|
memoryCache = { tier, cachedAt: now };
|
|
101
103
|
try {
|
|
102
|
-
const
|
|
104
|
+
const projectRoot = (0, project_root_1.resolveNeurcodeProjectRoot)(process.cwd());
|
|
105
|
+
const neurcodeDir = (0, path_1.join)(projectRoot, '.neurcode');
|
|
103
106
|
const configPath = (0, path_1.join)(neurcodeDir, 'config.json');
|
|
104
107
|
// Ensure .neurcode directory exists
|
|
105
108
|
if (!(0, fs_1.existsSync)(neurcodeDir)) {
|
|
@@ -132,7 +135,8 @@ function cacheTier(tier) {
|
|
|
132
135
|
function clearTierCache() {
|
|
133
136
|
memoryCache = null;
|
|
134
137
|
try {
|
|
135
|
-
const
|
|
138
|
+
const projectRoot = (0, project_root_1.resolveNeurcodeProjectRoot)(process.cwd());
|
|
139
|
+
const neurcodeDir = (0, path_1.join)(projectRoot, '.neurcode');
|
|
136
140
|
const configPath = (0, path_1.join)(neurcodeDir, 'config.json');
|
|
137
141
|
if ((0, fs_1.existsSync)(configPath)) {
|
|
138
142
|
const fileContent = (0, fs_1.readFileSync)(configPath, 'utf-8');
|
package/dist/utils/tier.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tier.js","sourceRoot":"","sources":["../../src/utils/tier.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"tier.js","sourceRoot":"","sources":["../../src/utils/tier.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurcode-ai/cli",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.7",
|
|
4
4
|
"description": "Neurcode CLI - AI code governance and diff analysis",
|
|
5
5
|
"bin": {
|
|
6
6
|
"neurcode": "./dist/index.js"
|
|
@@ -61,4 +61,4 @@
|
|
|
61
61
|
"@types/uuid": "^9.0.8",
|
|
62
62
|
"typescript": "^5.3.0"
|
|
63
63
|
}
|
|
64
|
-
}
|
|
64
|
+
}
|