@neurcode-ai/cli 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/commands/brain.d.ts.map +1 -1
- package/dist/commands/brain.js +451 -0
- package/dist/commands/brain.js.map +1 -1
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +296 -0
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/runtime-adapter.d.ts +2 -1
- package/dist/commands/runtime-adapter.d.ts.map +1 -1
- package/dist/commands/runtime-adapter.js +51 -2
- package/dist/commands/runtime-adapter.js.map +1 -1
- package/dist/commands/session-hook.d.ts +17 -0
- package/dist/commands/session-hook.d.ts.map +1 -1
- package/dist/commands/session-hook.js +279 -14
- package/dist/commands/session-hook.js.map +1 -1
- package/dist/runtime-build.json +4 -4
- package/dist/utils/agent-adapter-setup.js +1 -1
- package/dist/utils/agent-adapter-setup.js.map +1 -1
- package/dist/utils/agent-guard.d.ts +1 -0
- package/dist/utils/agent-guard.d.ts.map +1 -1
- package/dist/utils/agent-guard.js +18 -6
- package/dist/utils/agent-guard.js.map +1 -1
- package/dist/utils/git-coverage.d.ts.map +1 -1
- package/dist/utils/git-coverage.js +1 -0
- package/dist/utils/git-coverage.js.map +1 -1
- package/dist/utils/local-repo-brain.d.ts +85 -0
- package/dist/utils/local-repo-brain.d.ts.map +1 -1
- package/dist/utils/local-repo-brain.js +259 -4
- package/dist/utils/local-repo-brain.js.map +1 -1
- package/dist/utils/proposed-change-analysis.d.ts +20 -0
- package/dist/utils/proposed-change-analysis.d.ts.map +1 -0
- package/dist/utils/proposed-change-analysis.js +448 -0
- package/dist/utils/proposed-change-analysis.js.map +1 -0
- package/dist/utils/repo-intelligence-v2.d.ts +28 -0
- package/dist/utils/repo-intelligence-v2.d.ts.map +1 -0
- package/dist/utils/repo-intelligence-v2.js +174 -0
- package/dist/utils/repo-intelligence-v2.js.map +1 -0
- package/dist/utils/v0-governance.d.ts +1 -1
- package/dist/utils/v0-governance.d.ts.map +1 -1
- package/dist/utils/v0-governance.js +86 -15
- package/dist/utils/v0-governance.js.map +1 -1
- package/package.json +12 -11
- package/LICENSE +0 -201
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposed-change-analysis.js","sourceRoot":"","sources":["../../src/utils/proposed-change-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ProposedChangeEnvelope, type RepoIntelligenceEvidence, type StructuralPolicyEvaluation } from '@neurcode-ai/contracts';
|
|
2
|
+
export declare const DEFAULT_STRUCTURAL_POLICY_V2_PATH = ".neurcode/structural-policy-v2.json";
|
|
3
|
+
export interface LocalRepoIntelligenceV2Result {
|
|
4
|
+
evidence: RepoIntelligenceEvidence;
|
|
5
|
+
policyConfigured: boolean;
|
|
6
|
+
policyPath: string;
|
|
7
|
+
evaluation: StructuralPolicyEvaluation;
|
|
8
|
+
}
|
|
9
|
+
export declare function evaluateLocalRepoIntelligenceV2(input: {
|
|
10
|
+
repoRoot: string;
|
|
11
|
+
change: ProposedChangeEnvelope;
|
|
12
|
+
policyPath?: string;
|
|
13
|
+
includeAdvisory?: boolean;
|
|
14
|
+
generatedAt?: string;
|
|
15
|
+
approvedPaths?: string[];
|
|
16
|
+
approvalGrants?: Array<{
|
|
17
|
+
path: string;
|
|
18
|
+
approvedBy?: string | null;
|
|
19
|
+
expiresAt?: string | null;
|
|
20
|
+
revokedAt?: string | null;
|
|
21
|
+
}>;
|
|
22
|
+
approvals?: Array<{
|
|
23
|
+
path: string;
|
|
24
|
+
owners: string[];
|
|
25
|
+
approvedBy: string;
|
|
26
|
+
}>;
|
|
27
|
+
}): Promise<LocalRepoIntelligenceV2Result>;
|
|
28
|
+
//# sourceMappingURL=repo-intelligence-v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-intelligence-v2.d.ts","sourceRoot":"","sources":["../../src/utils/repo-intelligence-v2.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAE7B,KAAK,0BAA0B,EAChC,MAAM,wBAAwB,CAAC;AAYhC,eAAO,MAAM,iCAAiC,wCAAwC,CAAC;AAEvF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,wBAAwB,CAAC;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,0BAA0B,CAAC;CACxC;AA4ED,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3E,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAqGzC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_STRUCTURAL_POLICY_V2_PATH = void 0;
|
|
4
|
+
exports.evaluateLocalRepoIntelligenceV2 = evaluateLocalRepoIntelligenceV2;
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const contracts_1 = require("@neurcode-ai/contracts");
|
|
9
|
+
const brain_1 = require("@neurcode-ai/brain");
|
|
10
|
+
const policy_engine_1 = require("@neurcode-ai/policy-engine");
|
|
11
|
+
exports.DEFAULT_STRUCTURAL_POLICY_V2_PATH = '.neurcode/structural-policy-v2.json';
|
|
12
|
+
function sha256(value) {
|
|
13
|
+
return (0, node_crypto_1.createHash)('sha256').update(value).digest('hex');
|
|
14
|
+
}
|
|
15
|
+
function missingFreshness(reasonCode) {
|
|
16
|
+
return {
|
|
17
|
+
state: 'missing',
|
|
18
|
+
indexedAt: null,
|
|
19
|
+
gitHead: null,
|
|
20
|
+
workingTreeHash: null,
|
|
21
|
+
staleFileCount: 0,
|
|
22
|
+
unsupportedFileCount: 0,
|
|
23
|
+
reasonCodes: [reasonCode],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function notEvaluated(freshness, ruleIds = []) {
|
|
27
|
+
return {
|
|
28
|
+
schemaVersion: 'neurcode.policy-evaluation.v2',
|
|
29
|
+
verdict: 'not_evaluated',
|
|
30
|
+
truth: 'not_evaluated',
|
|
31
|
+
evaluatedRuleIds: [],
|
|
32
|
+
notEvaluatedRuleIds: [...ruleIds].sort(),
|
|
33
|
+
findings: [],
|
|
34
|
+
graphFreshness: freshness,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function readPolicyArtifact(repoRoot, inputPath) {
|
|
38
|
+
const selected = inputPath?.trim() || exports.DEFAULT_STRUCTURAL_POLICY_V2_PATH;
|
|
39
|
+
const path = (0, node_path_1.isAbsolute)(selected) ? selected : (0, node_path_1.join)(repoRoot, selected);
|
|
40
|
+
if (!(0, node_fs_1.existsSync)(path))
|
|
41
|
+
return { path, artifact: null };
|
|
42
|
+
try {
|
|
43
|
+
const parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
|
|
44
|
+
return { path, artifact: (0, policy_engine_1.isStructuralPolicyArtifact)(parsed) ? parsed : null };
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return { path, artifact: null };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function activeApprovals(input) {
|
|
51
|
+
const nowMs = Date.parse(input.now);
|
|
52
|
+
const grants = (input.approvalGrants ?? []).filter((grant) => {
|
|
53
|
+
if (grant.revokedAt)
|
|
54
|
+
return false;
|
|
55
|
+
if (!grant.expiresAt)
|
|
56
|
+
return true;
|
|
57
|
+
const expiresAt = Date.parse(grant.expiresAt);
|
|
58
|
+
return Number.isFinite(expiresAt) && expiresAt > nowMs;
|
|
59
|
+
});
|
|
60
|
+
if (grants.length > 0) {
|
|
61
|
+
return grants.map((grant) => ({
|
|
62
|
+
path: grant.path,
|
|
63
|
+
owners: grant.approvedBy ? [grant.approvedBy] : [],
|
|
64
|
+
approvedBy: grant.approvedBy || 'session-approval',
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
return (input.approvedPaths ?? []).map((path) => ({
|
|
68
|
+
path,
|
|
69
|
+
owners: [],
|
|
70
|
+
approvedBy: 'session-approval',
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
async function evaluateLocalRepoIntelligenceV2(input) {
|
|
74
|
+
const generatedAt = input.generatedAt ?? new Date().toISOString();
|
|
75
|
+
const policy = readPolicyArtifact(input.repoRoot, input.policyPath);
|
|
76
|
+
let graph = (0, brain_1.readRepositoryGraph)(input.repoRoot);
|
|
77
|
+
const freshness = graph
|
|
78
|
+
? await (0, brain_1.repositoryGraphStatus)(input.repoRoot)
|
|
79
|
+
: missingFreshness('graph_missing');
|
|
80
|
+
if (graph)
|
|
81
|
+
graph = { ...graph, freshness };
|
|
82
|
+
const evaluation = policy.artifact
|
|
83
|
+
? (0, policy_engine_1.evaluateStructuralPolicies)({
|
|
84
|
+
graph,
|
|
85
|
+
change: input.change,
|
|
86
|
+
rules: policy.artifact.compilation.compiled,
|
|
87
|
+
approvals: input.approvals ?? activeApprovals({
|
|
88
|
+
approvedPaths: input.approvedPaths,
|
|
89
|
+
approvalGrants: input.approvalGrants,
|
|
90
|
+
now: generatedAt,
|
|
91
|
+
}),
|
|
92
|
+
})
|
|
93
|
+
: notEvaluated(freshness, []);
|
|
94
|
+
const advisory = input.includeAdvisory !== false && graph && graph.freshness.state === 'fresh'
|
|
95
|
+
? (await (0, brain_1.runSemanticAdvisory)({
|
|
96
|
+
repoRoot: input.repoRoot,
|
|
97
|
+
graph,
|
|
98
|
+
change: input.change,
|
|
99
|
+
})).findings
|
|
100
|
+
: [];
|
|
101
|
+
const classification = evaluation.truth === 'deterministic'
|
|
102
|
+
? 'deterministic'
|
|
103
|
+
: advisory.length > 0
|
|
104
|
+
? 'advisory'
|
|
105
|
+
: 'not_evaluated';
|
|
106
|
+
const evidenceSeed = JSON.stringify({
|
|
107
|
+
repository: input.change.repository.repoId,
|
|
108
|
+
target: input.change.target,
|
|
109
|
+
contentHash: input.change.content.contentHash,
|
|
110
|
+
graphId: graph?.graphId ?? null,
|
|
111
|
+
graphGeneration: graph?.generation ?? null,
|
|
112
|
+
evaluatedRuleIds: evaluation.evaluatedRuleIds,
|
|
113
|
+
notEvaluatedRuleIds: evaluation.notEvaluatedRuleIds,
|
|
114
|
+
findingIds: evaluation.findings.map((finding) => finding.findingId),
|
|
115
|
+
advisoryIds: advisory.map((finding) => finding.findingId),
|
|
116
|
+
host: input.change.host,
|
|
117
|
+
});
|
|
118
|
+
const evidence = {
|
|
119
|
+
schemaVersion: contracts_1.REPO_INTELLIGENCE_EVIDENCE_SCHEMA_VERSION,
|
|
120
|
+
evidenceId: `rie:${sha256(evidenceSeed).slice(0, 32)}`,
|
|
121
|
+
generatedAt,
|
|
122
|
+
classification,
|
|
123
|
+
verdict: evaluation.verdict,
|
|
124
|
+
enforcement: input.change.host,
|
|
125
|
+
graph: {
|
|
126
|
+
graphId: graph?.graphId ?? null,
|
|
127
|
+
schemaVersion: graph?.schemaVersion ?? null,
|
|
128
|
+
freshness: evaluation.graphFreshness,
|
|
129
|
+
unsupportedPercent: graph?.coverage.unsupportedPercent ?? null,
|
|
130
|
+
summary: graph ? {
|
|
131
|
+
languages: graph.coverage.languages.map((item) => ({
|
|
132
|
+
language: item.language,
|
|
133
|
+
depth: item.depth,
|
|
134
|
+
filesSeen: item.filesSeen,
|
|
135
|
+
filesAnalyzed: item.filesAnalyzed,
|
|
136
|
+
filesUnsupported: item.filesUnsupported,
|
|
137
|
+
})),
|
|
138
|
+
packages: graph.nodes
|
|
139
|
+
.filter((node) => node.kind === 'package')
|
|
140
|
+
.map((node) => node.name ?? node.key)
|
|
141
|
+
.filter((value, index, values) => values.indexOf(value) === index)
|
|
142
|
+
.sort()
|
|
143
|
+
.slice(0, 100),
|
|
144
|
+
services: graph.nodes
|
|
145
|
+
.filter((node) => node.kind === 'service')
|
|
146
|
+
.map((node) => node.name ?? node.key)
|
|
147
|
+
.filter((value, index, values) => values.indexOf(value) === index)
|
|
148
|
+
.sort()
|
|
149
|
+
.slice(0, 100),
|
|
150
|
+
ownershipZoneCount: graph.nodes.filter((node) => node.kind === 'ownership_zone').length,
|
|
151
|
+
sensitiveSurfaceCount: graph.nodes.filter((node) => node.kind === 'sensitive_surface').length,
|
|
152
|
+
} : undefined,
|
|
153
|
+
},
|
|
154
|
+
policy: {
|
|
155
|
+
evaluatedRuleIds: evaluation.evaluatedRuleIds,
|
|
156
|
+
notEvaluatedRuleIds: evaluation.notEvaluatedRuleIds,
|
|
157
|
+
findings: evaluation.findings,
|
|
158
|
+
},
|
|
159
|
+
advisory,
|
|
160
|
+
signature: {
|
|
161
|
+
trust: 'self_attested',
|
|
162
|
+
receiptId: null,
|
|
163
|
+
recordHash: null,
|
|
164
|
+
},
|
|
165
|
+
privacy: (0, contracts_1.sourceFreePrivacyContract)(),
|
|
166
|
+
};
|
|
167
|
+
return {
|
|
168
|
+
evidence,
|
|
169
|
+
policyConfigured: Boolean(policy.artifact),
|
|
170
|
+
policyPath: policy.path,
|
|
171
|
+
evaluation,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=repo-intelligence-v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-intelligence-v2.js","sourceRoot":"","sources":["../../src/utils/repo-intelligence-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export declare const CLAUDE_GOVERNANCE_HOOKS: {
|
|
|
14
14
|
readonly matcher: "Bash|Edit|Write|MultiEdit";
|
|
15
15
|
readonly hooks: readonly [{
|
|
16
16
|
readonly type: "command";
|
|
17
|
-
readonly command: "neurcode session-hook check";
|
|
17
|
+
readonly command: "neurcode session-hook check --trusted-adapter claude-code-hooks --trusted-timing before_write";
|
|
18
18
|
}];
|
|
19
19
|
}];
|
|
20
20
|
readonly Stop: readonly [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v0-governance.d.ts","sourceRoot":"","sources":["../../src/utils/v0-governance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"v0-governance.d.ts","sourceRoot":"","sources":["../../src/utils/v0-governance.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ exports.installCopilotGovernanceHooks = installCopilotGovernanceHooks;
|
|
|
23
23
|
exports.installClaudeMcpConfig = installClaudeMcpConfig;
|
|
24
24
|
exports.inspectClaudeActivation = inspectClaudeActivation;
|
|
25
25
|
exports.inspectCopilotActivation = inspectCopilotActivation;
|
|
26
|
+
const crypto_1 = require("crypto");
|
|
26
27
|
const child_process_1 = require("child_process");
|
|
27
28
|
const fs_1 = require("fs");
|
|
28
29
|
const os_1 = require("os");
|
|
@@ -53,7 +54,7 @@ exports.CLAUDE_GOVERNANCE_HOOKS = {
|
|
|
53
54
|
hooks: [
|
|
54
55
|
{
|
|
55
56
|
type: 'command',
|
|
56
|
-
command: 'neurcode session-hook check',
|
|
57
|
+
command: 'neurcode session-hook check --trusted-adapter claude-code-hooks --trusted-timing before_write',
|
|
57
58
|
},
|
|
58
59
|
],
|
|
59
60
|
},
|
|
@@ -89,11 +90,17 @@ function resolveCliEntrypoint() {
|
|
|
89
90
|
];
|
|
90
91
|
return candidates.find((candidate) => (0, fs_1.existsSync)(candidate)) ?? null;
|
|
91
92
|
}
|
|
92
|
-
function sessionHookCommand(subcommand) {
|
|
93
|
+
function sessionHookCommand(subcommand, adapter) {
|
|
93
94
|
const entrypoint = resolveCliEntrypoint();
|
|
95
|
+
// The host hook declares its own trusted adapter and timing explicitly. There
|
|
96
|
+
// is no implicit hard pre-write default: only an installed host hook claims
|
|
97
|
+
// the host-enforced posture, and it does so on the command line.
|
|
98
|
+
const suffix = subcommand === 'check' && adapter
|
|
99
|
+
? ` --trusted-adapter ${adapter} --trusted-timing before_write`
|
|
100
|
+
: '';
|
|
94
101
|
if (entrypoint)
|
|
95
|
-
return `node ${shellQuote(entrypoint)} session-hook ${subcommand}`;
|
|
96
|
-
return `neurcode session-hook ${subcommand}`;
|
|
102
|
+
return `node ${shellQuote(entrypoint)} session-hook ${subcommand}${suffix}`;
|
|
103
|
+
return `neurcode session-hook ${subcommand}${suffix}`;
|
|
97
104
|
}
|
|
98
105
|
function claudeGovernanceHooks() {
|
|
99
106
|
return {
|
|
@@ -113,7 +120,7 @@ function claudeGovernanceHooks() {
|
|
|
113
120
|
hooks: [
|
|
114
121
|
{
|
|
115
122
|
type: 'command',
|
|
116
|
-
command: sessionHookCommand('check'),
|
|
123
|
+
command: sessionHookCommand('check', 'claude-code-hooks'),
|
|
117
124
|
},
|
|
118
125
|
],
|
|
119
126
|
},
|
|
@@ -143,8 +150,8 @@ function copilotGovernanceHooks() {
|
|
|
143
150
|
PreToolUse: [
|
|
144
151
|
{
|
|
145
152
|
type: 'command',
|
|
146
|
-
command: sessionHookCommand('check'),
|
|
147
|
-
bash: sessionHookCommand('check'),
|
|
153
|
+
command: sessionHookCommand('check', 'copilot-hooks'),
|
|
154
|
+
bash: sessionHookCommand('check', 'copilot-hooks'),
|
|
148
155
|
timeoutSec: 30,
|
|
149
156
|
},
|
|
150
157
|
],
|
|
@@ -260,6 +267,7 @@ const EMPTY_GOVERNANCE_CONFIG = {
|
|
|
260
267
|
ignoredGlobs: [],
|
|
261
268
|
planCoherence: 'warn',
|
|
262
269
|
localMode: 'advisory',
|
|
270
|
+
repoSymbolDuplicateMode: 'warn',
|
|
263
271
|
architectureObligations: { mode: 'warn', ruleModes: {} },
|
|
264
272
|
};
|
|
265
273
|
function normalizeStringArray(value, field, errors) {
|
|
@@ -297,6 +305,14 @@ function normalizeLocalMode(value, errors) {
|
|
|
297
305
|
errors.push('localMode must be one of: strict, advisory, paused');
|
|
298
306
|
return 'advisory';
|
|
299
307
|
}
|
|
308
|
+
function normalizeRepoSymbolDuplicateMode(value, errors) {
|
|
309
|
+
if (value === undefined || value === null || value === '')
|
|
310
|
+
return 'warn';
|
|
311
|
+
if (value === 'off' || value === 'warn' || value === 'block')
|
|
312
|
+
return value;
|
|
313
|
+
errors.push('repoSymbolDuplicateMode must be one of: off, warn, block');
|
|
314
|
+
return 'warn';
|
|
315
|
+
}
|
|
300
316
|
function governanceConfigPath(repoRoot) {
|
|
301
317
|
return (0, path_1.join)(repoRoot, '.neurcode', 'governance.json');
|
|
302
318
|
}
|
|
@@ -329,6 +345,7 @@ function readRuntimeGovernanceConfig(repoRoot) {
|
|
|
329
345
|
ignoredGlobs: normalizeStringArray(parsed.ignoredGlobs, 'ignoredGlobs', errors),
|
|
330
346
|
planCoherence: normalizePlanCoherence(parsed.planCoherence, errors),
|
|
331
347
|
localMode: normalizeLocalMode(parsed.localMode, errors),
|
|
348
|
+
repoSymbolDuplicateMode: normalizeRepoSymbolDuplicateMode(parsed.repoSymbolDuplicateMode, errors),
|
|
332
349
|
architectureObligations: (0, governance_runtime_1.normalizeArchitectureObligationPolicy)(parsed.architectureObligations),
|
|
333
350
|
};
|
|
334
351
|
return {
|
|
@@ -382,8 +399,9 @@ function readModuleImports(repoRoot, paths) {
|
|
|
382
399
|
exports.PROFILE_STALENESS_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
383
400
|
function buildCurrentGovernanceProfile(repoRoot, options = {}) {
|
|
384
401
|
const root = resolveRepoRoot(repoRoot);
|
|
402
|
+
const stateFingerprint = profileCacheStateFingerprint(root);
|
|
385
403
|
if (options.bypassCache !== true && process.env.NEURCODE_PROFILE_CACHE !== '0') {
|
|
386
|
-
const fileCached = readProfileBuildFileCache(root);
|
|
404
|
+
const fileCached = readProfileBuildFileCache(root, stateFingerprint);
|
|
387
405
|
if (fileCached) {
|
|
388
406
|
lastProfileCacheHit = true;
|
|
389
407
|
return fileCached;
|
|
@@ -405,35 +423,38 @@ function buildCurrentGovernanceProfile(repoRoot, options = {}) {
|
|
|
405
423
|
imports,
|
|
406
424
|
});
|
|
407
425
|
if (options.bypassCache !== true && process.env.NEURCODE_PROFILE_CACHE !== '0') {
|
|
408
|
-
writeProfileBuildFileCache(root, profile);
|
|
426
|
+
writeProfileBuildFileCache(root, profile, stateFingerprint);
|
|
409
427
|
}
|
|
410
428
|
return profile;
|
|
411
429
|
}
|
|
412
430
|
function profileBuildCachePath(repoRoot) {
|
|
413
431
|
return (0, path_1.join)(repoRoot, '.neurcode', 'cache', 'profile-build.json');
|
|
414
432
|
}
|
|
415
|
-
function readProfileBuildFileCache(repoRoot) {
|
|
433
|
+
function readProfileBuildFileCache(repoRoot, stateFingerprint) {
|
|
416
434
|
const path = profileBuildCachePath(repoRoot);
|
|
417
435
|
if (!(0, fs_1.existsSync)(path))
|
|
418
436
|
return null;
|
|
419
437
|
try {
|
|
420
438
|
const parsed = JSON.parse((0, fs_1.readFileSync)(path, 'utf8'));
|
|
421
|
-
if (!parsed.profile || !parsed.expiresAt)
|
|
439
|
+
if (!parsed.profile || !parsed.expiresAt || stateFingerprint === null || parsed.stateFingerprint === null)
|
|
422
440
|
return null;
|
|
423
441
|
if (Date.now() > Date.parse(parsed.expiresAt))
|
|
424
442
|
return null;
|
|
443
|
+
if (parsed.stateFingerprint !== stateFingerprint)
|
|
444
|
+
return null;
|
|
425
445
|
return parsed.profile;
|
|
426
446
|
}
|
|
427
447
|
catch {
|
|
428
448
|
return null;
|
|
429
449
|
}
|
|
430
450
|
}
|
|
431
|
-
function writeProfileBuildFileCache(repoRoot, profile) {
|
|
451
|
+
function writeProfileBuildFileCache(repoRoot, profile, stateFingerprint) {
|
|
432
452
|
const path = profileBuildCachePath(repoRoot);
|
|
433
453
|
(0, fs_1.mkdirSync)((0, path_1.dirname)(path), { recursive: true });
|
|
434
454
|
(0, fs_1.writeFileSync)(path, JSON.stringify({
|
|
435
455
|
expiresAt: new Date(Date.now() + exports.PROFILE_STALENESS_CACHE_TTL_MS).toISOString(),
|
|
436
456
|
profileHash: profile.profileHash,
|
|
457
|
+
stateFingerprint,
|
|
437
458
|
profile,
|
|
438
459
|
}, null, 2) + '\n', 'utf8');
|
|
439
460
|
}
|
|
@@ -503,6 +524,47 @@ function profileFreshnessActionForSession(result, sessionProfileHash) {
|
|
|
503
524
|
}
|
|
504
525
|
const profileStalenessCache = new Map();
|
|
505
526
|
let lastProfileCacheHit = false;
|
|
527
|
+
function profileCacheStateFingerprint(root) {
|
|
528
|
+
try {
|
|
529
|
+
let head = 'unborn';
|
|
530
|
+
try {
|
|
531
|
+
head = (0, child_process_1.execSync)('git rev-parse HEAD', {
|
|
532
|
+
cwd: root,
|
|
533
|
+
encoding: 'utf8',
|
|
534
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
535
|
+
}).trim();
|
|
536
|
+
}
|
|
537
|
+
catch {
|
|
538
|
+
// `git status` remains authoritative before the first commit. Keep an
|
|
539
|
+
// explicit sentinel so staged topology changes still invalidate caches.
|
|
540
|
+
}
|
|
541
|
+
const status = (0, child_process_1.execSync)('git status --short --untracked-files=normal', {
|
|
542
|
+
cwd: root,
|
|
543
|
+
encoding: 'utf8',
|
|
544
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
545
|
+
maxBuffer: 4 * 1024 * 1024,
|
|
546
|
+
});
|
|
547
|
+
const stagedDiff = (0, child_process_1.execSync)('git diff --cached --no-ext-diff --binary', {
|
|
548
|
+
cwd: root,
|
|
549
|
+
encoding: 'utf8',
|
|
550
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
551
|
+
maxBuffer: 8 * 1024 * 1024,
|
|
552
|
+
});
|
|
553
|
+
const worktreeDiff = (0, child_process_1.execSync)('git diff --no-ext-diff --binary', {
|
|
554
|
+
cwd: root,
|
|
555
|
+
encoding: 'utf8',
|
|
556
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
557
|
+
maxBuffer: 8 * 1024 * 1024,
|
|
558
|
+
});
|
|
559
|
+
return (0, crypto_1.createHash)('sha256')
|
|
560
|
+
.update(`${head}\n${status}\n${stagedDiff}\n${worktreeDiff}`)
|
|
561
|
+
.digest('hex')
|
|
562
|
+
.slice(0, 24);
|
|
563
|
+
}
|
|
564
|
+
catch {
|
|
565
|
+
return null;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
506
568
|
function getLastProfileCacheHit() {
|
|
507
569
|
return lastProfileCacheHit;
|
|
508
570
|
}
|
|
@@ -519,10 +581,15 @@ function clearProfileStalenessCache(repoRoot) {
|
|
|
519
581
|
function getProfileStaleness(repoRoot, options = {}) {
|
|
520
582
|
const root = resolveRepoRoot(repoRoot);
|
|
521
583
|
const now = Date.now();
|
|
584
|
+
const stateFingerprint = profileCacheStateFingerprint(root);
|
|
522
585
|
lastProfileCacheHit = false;
|
|
523
586
|
if (options.bypassCache !== true && process.env.NEURCODE_PROFILE_CACHE !== '0') {
|
|
524
587
|
const cached = profileStalenessCache.get(root);
|
|
525
|
-
if (cached &&
|
|
588
|
+
if (cached &&
|
|
589
|
+
cached.expiresAt > now &&
|
|
590
|
+
stateFingerprint !== null &&
|
|
591
|
+
cached.stateFingerprint !== null &&
|
|
592
|
+
cached.stateFingerprint === stateFingerprint) {
|
|
526
593
|
lastProfileCacheHit = true;
|
|
527
594
|
return { ...cached.result, profileCacheHit: true };
|
|
528
595
|
}
|
|
@@ -573,6 +640,7 @@ function getProfileStaleness(repoRoot, options = {}) {
|
|
|
573
640
|
};
|
|
574
641
|
profileStalenessCache.set(root, {
|
|
575
642
|
expiresAt: now + exports.PROFILE_STALENESS_CACHE_TTL_MS,
|
|
643
|
+
stateFingerprint,
|
|
576
644
|
result,
|
|
577
645
|
});
|
|
578
646
|
return result;
|
|
@@ -590,6 +658,7 @@ function ensureFreshGovernanceProfile(repoRoot, options = {}) {
|
|
|
590
658
|
: staleness.cachedProfile ?? staleness.currentProfile;
|
|
591
659
|
if (shouldRefresh) {
|
|
592
660
|
writeGovernanceProfile(repoRoot, profile);
|
|
661
|
+
profileStalenessCache.delete(resolveRepoRoot(repoRoot));
|
|
593
662
|
}
|
|
594
663
|
return {
|
|
595
664
|
...staleness,
|
|
@@ -706,10 +775,12 @@ function entryHasAnyNeurcodeSessionHook(entry) {
|
|
|
706
775
|
return hookCommands(entry).some(commandHasNeurcodeSessionHook);
|
|
707
776
|
}
|
|
708
777
|
function expectedSessionHookCommand(event) {
|
|
709
|
-
|
|
778
|
+
const subcommand = CLAUDE_EVENT_SESSION_HOOK[event];
|
|
779
|
+
return sessionHookCommand(subcommand, subcommand === 'check' ? 'claude-code-hooks' : undefined);
|
|
710
780
|
}
|
|
711
781
|
function expectedCopilotSessionHookCommand(event) {
|
|
712
|
-
|
|
782
|
+
const subcommand = COPILOT_EVENT_SESSION_HOOK[event];
|
|
783
|
+
return sessionHookCommand(subcommand, subcommand === 'check' ? 'copilot-hooks' : undefined);
|
|
713
784
|
}
|
|
714
785
|
function entryHasCurrentNeurcodeSessionHook(entry, event) {
|
|
715
786
|
const expected = expectedSessionHookCommand(event);
|