@neurcode-ai/cli 0.9.65 → 0.10.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/dist/commands/bootstrap-policy.d.ts +29 -0
- package/dist/commands/bootstrap-policy.d.ts.map +1 -0
- package/dist/commands/bootstrap-policy.js +334 -0
- package/dist/commands/bootstrap-policy.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +82 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/governance.d.ts +3 -0
- package/dist/commands/governance.d.ts.map +1 -0
- package/dist/commands/governance.js +390 -0
- package/dist/commands/governance.js.map +1 -0
- package/dist/commands/quickstart.d.ts +21 -0
- package/dist/commands/quickstart.d.ts.map +1 -0
- package/dist/commands/quickstart.js +178 -0
- package/dist/commands/quickstart.js.map +1 -0
- package/dist/commands/remediate-export.d.ts +36 -0
- package/dist/commands/remediate-export.d.ts.map +1 -0
- package/dist/commands/remediate-export.js +1072 -0
- package/dist/commands/remediate-export.js.map +1 -0
- package/dist/commands/replay.d.ts.map +1 -1
- package/dist/commands/replay.js +14 -0
- package/dist/commands/replay.js.map +1 -1
- package/dist/commands/session.d.ts +7 -0
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +156 -0
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/start-intent.d.ts.map +1 -1
- package/dist/commands/start-intent.js +61 -11
- package/dist/commands/start-intent.js.map +1 -1
- package/dist/commands/verify-guidance.d.ts +5 -0
- package/dist/commands/verify-guidance.d.ts.map +1 -0
- package/dist/commands/verify-guidance.js +49 -0
- package/dist/commands/verify-guidance.js.map +1 -0
- package/dist/commands/verify-output.d.ts +37 -0
- package/dist/commands/verify-output.d.ts.map +1 -0
- package/dist/commands/verify-output.js +572 -0
- package/dist/commands/verify-output.js.map +1 -0
- package/dist/commands/verify-render.d.ts +41 -0
- package/dist/commands/verify-render.d.ts.map +1 -0
- package/dist/commands/verify-render.js +457 -0
- package/dist/commands/verify-render.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +384 -1091
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +3 -14
- package/dist/commands/workspace.js.map +1 -1
- package/dist/context-engine/graph.d.ts.map +1 -1
- package/dist/context-engine/graph.js +69 -7
- package/dist/context-engine/graph.js.map +1 -1
- package/dist/context-engine/scanner.d.ts.map +1 -1
- package/dist/context-engine/scanner.js +9 -2
- package/dist/context-engine/scanner.js.map +1 -1
- package/dist/daemon/compatibility/execution.d.ts +42 -0
- package/dist/daemon/compatibility/execution.d.ts.map +1 -0
- package/dist/daemon/compatibility/execution.js +183 -0
- package/dist/daemon/compatibility/execution.js.map +1 -0
- package/dist/daemon/compatibility/mutation.d.ts +24 -0
- package/dist/daemon/compatibility/mutation.d.ts.map +1 -0
- package/dist/daemon/compatibility/mutation.js +724 -0
- package/dist/daemon/compatibility/mutation.js.map +1 -0
- package/dist/daemon/routes.d.ts +19 -0
- package/dist/daemon/routes.d.ts.map +1 -0
- package/dist/daemon/routes.js +123 -0
- package/dist/daemon/routes.js.map +1 -0
- package/dist/daemon/runtime/execution-bus.d.ts +217 -0
- package/dist/daemon/runtime/execution-bus.d.ts.map +1 -0
- package/dist/daemon/runtime/execution-bus.js +1420 -0
- package/dist/daemon/runtime/execution-bus.js.map +1 -0
- package/dist/daemon/runtime/workspace-runtime.d.ts +280 -0
- package/dist/daemon/runtime/workspace-runtime.d.ts.map +1 -0
- package/dist/daemon/runtime/workspace-runtime.js +1473 -0
- package/dist/daemon/runtime/workspace-runtime.js.map +1 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +171 -874
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/shaping.d.ts +11 -0
- package/dist/daemon/shaping.d.ts.map +1 -0
- package/dist/daemon/shaping.js +240 -0
- package/dist/daemon/shaping.js.map +1 -0
- package/dist/governance/canonical-invariants.d.ts +88 -0
- package/dist/governance/canonical-invariants.d.ts.map +1 -0
- package/dist/governance/canonical-invariants.js +197 -0
- package/dist/governance/canonical-invariants.js.map +1 -0
- package/dist/governance/canonical-ordering.d.ts +76 -0
- package/dist/governance/canonical-ordering.d.ts.map +1 -0
- package/dist/governance/canonical-ordering.js +189 -0
- package/dist/governance/canonical-ordering.js.map +1 -0
- package/dist/governance/canonical-pipeline.d.ts +9 -1
- package/dist/governance/canonical-pipeline.d.ts.map +1 -1
- package/dist/governance/canonical-pipeline.js +367 -24
- package/dist/governance/canonical-pipeline.js.map +1 -1
- package/dist/governance/diff-line-provenance.d.ts +59 -0
- package/dist/governance/diff-line-provenance.d.ts.map +1 -0
- package/dist/governance/diff-line-provenance.js +118 -0
- package/dist/governance/diff-line-provenance.js.map +1 -0
- package/dist/governance/pilot-readiness.d.ts +34 -0
- package/dist/governance/pilot-readiness.d.ts.map +1 -0
- package/dist/governance/pilot-readiness.js +226 -0
- package/dist/governance/pilot-readiness.js.map +1 -0
- package/dist/governance/policy-parity-validator.d.ts +62 -0
- package/dist/governance/policy-parity-validator.d.ts.map +1 -0
- package/dist/governance/policy-parity-validator.js +137 -0
- package/dist/governance/policy-parity-validator.js.map +1 -0
- package/dist/governance/remediation-boundary.d.ts +55 -0
- package/dist/governance/remediation-boundary.d.ts.map +1 -0
- package/dist/governance/remediation-boundary.js +120 -0
- package/dist/governance/remediation-boundary.js.map +1 -0
- package/dist/governance/structural-cache.d.ts +103 -0
- package/dist/governance/structural-cache.d.ts.map +1 -0
- package/dist/governance/structural-cache.js +235 -0
- package/dist/governance/structural-cache.js.map +1 -0
- package/dist/governance/structural-on-diff.d.ts +22 -2
- package/dist/governance/structural-on-diff.d.ts.map +1 -1
- package/dist/governance/structural-on-diff.js +36 -4
- package/dist/governance/structural-on-diff.js.map +1 -1
- package/dist/governance/structural-policy-merge.d.ts +8 -0
- package/dist/governance/structural-policy-merge.d.ts.map +1 -1
- package/dist/governance/structural-policy-merge.js +7 -0
- package/dist/governance/structural-policy-merge.js.map +1 -1
- package/dist/governance/verify-runtime-guard.d.ts +99 -0
- package/dist/governance/verify-runtime-guard.d.ts.map +1 -0
- package/dist/governance/verify-runtime-guard.js +129 -0
- package/dist/governance/verify-runtime-guard.js.map +1 -0
- package/dist/index.js +277 -77
- package/dist/index.js.map +1 -1
- package/dist/intent-engine/repo-classifier.d.ts +64 -0
- package/dist/intent-engine/repo-classifier.d.ts.map +1 -0
- package/dist/intent-engine/repo-classifier.js +178 -0
- package/dist/intent-engine/repo-classifier.js.map +1 -0
- package/dist/structural-rules/index.d.ts +4 -0
- package/dist/structural-rules/index.d.ts.map +1 -1
- package/dist/structural-rules/index.js +18 -1
- package/dist/structural-rules/index.js.map +1 -1
- package/dist/structural-rules/python/PY003-broad-except-clause.d.ts +21 -0
- package/dist/structural-rules/python/PY003-broad-except-clause.d.ts.map +1 -1
- package/dist/structural-rules/python/PY003-broad-except-clause.js +212 -21
- package/dist/structural-rules/python/PY003-broad-except-clause.js.map +1 -1
- package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts +11 -0
- package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts.map +1 -0
- package/dist/structural-rules/python/PY011-thread-lifecycle.js +97 -0
- package/dist/structural-rules/python/PY011-thread-lifecycle.js.map +1 -0
- package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts +11 -0
- package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts.map +1 -0
- package/dist/structural-rules/python/PY012-asyncio-run-misuse.js +83 -0
- package/dist/structural-rules/python/PY012-asyncio-run-misuse.js.map +1 -0
- package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts +11 -0
- package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts.map +1 -0
- package/dist/structural-rules/python/PY013-mutable-default-arg.js +73 -0
- package/dist/structural-rules/python/PY013-mutable-default-arg.js.map +1 -0
- package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts +11 -0
- package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts.map +1 -0
- package/dist/structural-rules/python/PY014-fixed-sleep-retry.js +115 -0
- package/dist/structural-rules/python/PY014-fixed-sleep-retry.js.map +1 -0
- package/dist/structural-rules/types.d.ts +12 -0
- package/dist/structural-rules/types.d.ts.map +1 -1
- package/dist/utils/active-engineering-context.d.ts +12 -0
- package/dist/utils/active-engineering-context.d.ts.map +1 -0
- package/dist/utils/active-engineering-context.js +67 -0
- package/dist/utils/active-engineering-context.js.map +1 -0
- package/dist/utils/artifact-io.d.ts +33 -0
- package/dist/utils/artifact-io.d.ts.map +1 -0
- package/dist/utils/artifact-io.js +183 -0
- package/dist/utils/artifact-io.js.map +1 -0
- package/dist/utils/change-contract.d.ts +6 -2
- package/dist/utils/change-contract.d.ts.map +1 -1
- package/dist/utils/change-contract.js +175 -0
- package/dist/utils/change-contract.js.map +1 -1
- package/dist/utils/context-pack.d.ts +12 -0
- package/dist/utils/context-pack.d.ts.map +1 -0
- package/dist/utils/context-pack.js +147 -0
- package/dist/utils/context-pack.js.map +1 -0
- package/dist/utils/control-plane.d.ts +18 -0
- package/dist/utils/control-plane.d.ts.map +1 -1
- package/dist/utils/control-plane.js +31 -4
- package/dist/utils/control-plane.js.map +1 -1
- package/dist/utils/drift-intelligence.d.ts +47 -0
- package/dist/utils/drift-intelligence.d.ts.map +1 -0
- package/dist/utils/drift-intelligence.js +2099 -0
- package/dist/utils/drift-intelligence.js.map +1 -0
- package/dist/utils/execution-actions.d.ts +22 -0
- package/dist/utils/execution-actions.d.ts.map +1 -0
- package/dist/utils/execution-actions.js +103 -0
- package/dist/utils/execution-actions.js.map +1 -0
- package/dist/utils/execution-bus.d.ts +1 -214
- package/dist/utils/execution-bus.d.ts.map +1 -1
- package/dist/utils/execution-bus.js +15 -1359
- package/dist/utils/execution-bus.js.map +1 -1
- package/dist/utils/git.d.ts +1 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +13 -3
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/governance-decisions.d.ts +75 -0
- package/dist/utils/governance-decisions.d.ts.map +1 -0
- package/dist/utils/governance-decisions.js +412 -0
- package/dist/utils/governance-decisions.js.map +1 -0
- package/dist/utils/governance-provenance.d.ts +1 -1
- package/dist/utils/governance-provenance.d.ts.map +1 -1
- package/dist/utils/governance-provenance.js +5 -7
- package/dist/utils/governance-provenance.js.map +1 -1
- package/dist/utils/governance.d.ts +108 -0
- package/dist/utils/governance.d.ts.map +1 -1
- package/dist/utils/governance.js +209 -7
- package/dist/utils/governance.js.map +1 -1
- package/dist/utils/intelligence-runtime-common.d.ts +30 -0
- package/dist/utils/intelligence-runtime-common.d.ts.map +1 -0
- package/dist/utils/intelligence-runtime-common.js +156 -0
- package/dist/utils/intelligence-runtime-common.js.map +1 -0
- package/dist/utils/intent-contract-diagnostics.d.ts +9 -0
- package/dist/utils/intent-contract-diagnostics.d.ts.map +1 -0
- package/dist/utils/intent-contract-diagnostics.js +322 -0
- package/dist/utils/intent-contract-diagnostics.js.map +1 -0
- package/dist/utils/intent-pack.d.ts +15 -0
- package/dist/utils/intent-pack.d.ts.map +1 -0
- package/dist/utils/intent-pack.js +196 -0
- package/dist/utils/intent-pack.js.map +1 -0
- package/dist/utils/plan-sync.d.ts +1 -0
- package/dist/utils/plan-sync.d.ts.map +1 -1
- package/dist/utils/plan-sync.js +23 -0
- package/dist/utils/plan-sync.js.map +1 -1
- package/dist/utils/policy-decision.d.ts +5 -0
- package/dist/utils/policy-decision.d.ts.map +1 -0
- package/dist/utils/policy-decision.js +17 -0
- package/dist/utils/policy-decision.js.map +1 -0
- package/dist/utils/replay-custody.d.ts +43 -0
- package/dist/utils/replay-custody.d.ts.map +1 -0
- package/dist/utils/replay-custody.js +168 -0
- package/dist/utils/replay-custody.js.map +1 -0
- package/dist/utils/replay-runtime.d.ts +13 -0
- package/dist/utils/replay-runtime.d.ts.map +1 -1
- package/dist/utils/replay-runtime.js +96 -9
- package/dist/utils/replay-runtime.js.map +1 -1
- package/dist/utils/repository-intelligence.d.ts +9 -0
- package/dist/utils/repository-intelligence.d.ts.map +1 -0
- package/dist/utils/repository-intelligence.js +372 -0
- package/dist/utils/repository-intelligence.js.map +1 -0
- package/dist/utils/runtime-events.d.ts.map +1 -1
- package/dist/utils/runtime-events.js +25 -6
- package/dist/utils/runtime-events.js.map +1 -1
- package/dist/utils/semantic-contract-intelligence.d.ts +20 -0
- package/dist/utils/semantic-contract-intelligence.d.ts.map +1 -0
- package/dist/utils/semantic-contract-intelligence.js +825 -0
- package/dist/utils/semantic-contract-intelligence.js.map +1 -0
- package/dist/utils/session-continuity.d.ts +56 -0
- package/dist/utils/session-continuity.d.ts.map +1 -0
- package/dist/utils/session-continuity.js +318 -0
- package/dist/utils/session-continuity.js.map +1 -0
- package/dist/utils/verification-evidence.d.ts.map +1 -1
- package/dist/utils/verification-evidence.js +4 -1
- package/dist/utils/verification-evidence.js.map +1 -1
- package/dist/utils/verify-runtime-stability.d.ts +142 -0
- package/dist/utils/verify-runtime-stability.d.ts.map +1 -0
- package/dist/utils/verify-runtime-stability.js +230 -0
- package/dist/utils/verify-runtime-stability.js.map +1 -0
- package/dist/utils/workspace-runtime.d.ts +1 -266
- package/dist/utils/workspace-runtime.d.ts.map +1 -1
- package/dist/utils/workspace-runtime.js +15 -1412
- package/dist/utils/workspace-runtime.js.map +1 -1
- package/package.json +11 -10
- package/LICENSE +0 -201
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.evaluateIntentContractDiagnostics = evaluateIntentContractDiagnostics;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const intelligence_runtime_common_1 = require("./intelligence-runtime-common");
|
|
7
|
+
const INTENT_PACK_TOP_LEVEL_KEYS = new Set([
|
|
8
|
+
'schemaVersion',
|
|
9
|
+
'intentPackId',
|
|
10
|
+
'createdAt',
|
|
11
|
+
'updatedAt',
|
|
12
|
+
'intent',
|
|
13
|
+
'governanceContext',
|
|
14
|
+
'approvedScope',
|
|
15
|
+
'forbiddenBoundaries',
|
|
16
|
+
'expectedDependencies',
|
|
17
|
+
'expectedInfrastructure',
|
|
18
|
+
'expectedBlastRadius',
|
|
19
|
+
'checkpoints',
|
|
20
|
+
'rolloutExpectations',
|
|
21
|
+
'governanceExpectations',
|
|
22
|
+
'constraints',
|
|
23
|
+
'detectedSignals',
|
|
24
|
+
'semanticExpectations',
|
|
25
|
+
'contextHints',
|
|
26
|
+
'repositoryGraphId',
|
|
27
|
+
'fingerprint',
|
|
28
|
+
]);
|
|
29
|
+
const APPROVED_SCOPE_KEYS = new Set(['files', 'modules', 'services']);
|
|
30
|
+
const BOUNDARY_KEYS = new Set(['type', 'path', 'policy', 'reason']);
|
|
31
|
+
const KNOWN_WORKSPACE_DIRS = ['apps', 'packages', 'services', 'libs', 'lib'];
|
|
32
|
+
function isRecord(value) {
|
|
33
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
34
|
+
}
|
|
35
|
+
function hasGlobSyntax(value) {
|
|
36
|
+
return /[*?[\]{}]/.test(value);
|
|
37
|
+
}
|
|
38
|
+
function globStablePrefix(value) {
|
|
39
|
+
const normalized = (0, intelligence_runtime_common_1.normalizeRepoPath)(value);
|
|
40
|
+
const match = normalized.match(/[*?[\]{}]/);
|
|
41
|
+
if (!match || match.index === undefined) {
|
|
42
|
+
return normalized;
|
|
43
|
+
}
|
|
44
|
+
const beforeGlob = normalized.slice(0, match.index);
|
|
45
|
+
return beforeGlob.replace(/[^/]*$/, '').replace(/\/$/, '');
|
|
46
|
+
}
|
|
47
|
+
function pathCovers(scopeValue, pathValue) {
|
|
48
|
+
const scope = (0, intelligence_runtime_common_1.normalizeRepoPath)(scopeValue);
|
|
49
|
+
const path = (0, intelligence_runtime_common_1.normalizeRepoPath)(pathValue);
|
|
50
|
+
if (!scope || !path)
|
|
51
|
+
return false;
|
|
52
|
+
if (scope === path)
|
|
53
|
+
return true;
|
|
54
|
+
if (hasGlobSyntax(scope)) {
|
|
55
|
+
const prefix = globStablePrefix(scope);
|
|
56
|
+
return Boolean(prefix) && (path === prefix || path.startsWith(`${prefix}/`));
|
|
57
|
+
}
|
|
58
|
+
if (hasGlobSyntax(path)) {
|
|
59
|
+
const prefix = globStablePrefix(path);
|
|
60
|
+
return Boolean(prefix) && (scope === prefix || scope.startsWith(`${prefix}/`));
|
|
61
|
+
}
|
|
62
|
+
return path.startsWith(`${scope}/`) || scope.startsWith(`${path}/`);
|
|
63
|
+
}
|
|
64
|
+
function pushCapped(out, message, cap = 24) {
|
|
65
|
+
if (out.length >= cap)
|
|
66
|
+
return;
|
|
67
|
+
if (!out.includes(message)) {
|
|
68
|
+
out.push(message);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function findUnsupportedIntentFields(intentPack, out) {
|
|
72
|
+
const rawIntent = intentPack;
|
|
73
|
+
if (!isRecord(rawIntent))
|
|
74
|
+
return;
|
|
75
|
+
for (const key of Object.keys(rawIntent).sort((a, b) => a.localeCompare(b))) {
|
|
76
|
+
if (!INTENT_PACK_TOP_LEVEL_KEYS.has(key)) {
|
|
77
|
+
pushCapped(out, `Intent pack contains unsupported top-level field "${key}"; deterministic governance ignores unsupported contract fields.`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const approvedScope = rawIntent.approvedScope;
|
|
81
|
+
if (isRecord(approvedScope)) {
|
|
82
|
+
for (const key of Object.keys(approvedScope).sort((a, b) => a.localeCompare(b))) {
|
|
83
|
+
if (!APPROVED_SCOPE_KEYS.has(key)) {
|
|
84
|
+
pushCapped(out, `Intent approvedScope contains unsupported field "${key}"; use files, modules, or services so scope drift remains deterministic.`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const forbiddenBoundaries = rawIntent.forbiddenBoundaries;
|
|
89
|
+
if (Array.isArray(forbiddenBoundaries)) {
|
|
90
|
+
forbiddenBoundaries.slice(0, 24).forEach((boundary, index) => {
|
|
91
|
+
if (!isRecord(boundary))
|
|
92
|
+
return;
|
|
93
|
+
for (const key of Object.keys(boundary).sort((a, b) => a.localeCompare(b))) {
|
|
94
|
+
if (!BOUNDARY_KEYS.has(key)) {
|
|
95
|
+
pushCapped(out, `Forbidden boundary ${index + 1} contains unsupported field "${key}"; boundary governance ignores unsupported fields.`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function findExistingPaths(projectRoot, candidates, out) {
|
|
102
|
+
const missing = candidates
|
|
103
|
+
.filter((candidate) => !hasGlobSyntax(candidate))
|
|
104
|
+
.filter((candidate) => !(0, fs_1.existsSync)((0, path_1.join)(projectRoot, (0, intelligence_runtime_common_1.normalizeRepoPath)(candidate))))
|
|
105
|
+
.slice(0, 6);
|
|
106
|
+
if (missing.length > 0) {
|
|
107
|
+
pushCapped(out, `Approved intent scope references path(s) not present in the workspace: ${missing.join(', ')}. This can create false drift findings in real repos.`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function findRepositoryNodePaths(graph) {
|
|
111
|
+
return new Set(graph.nodes
|
|
112
|
+
.map((node) => node.path || node.label)
|
|
113
|
+
.filter((value) => Boolean(value))
|
|
114
|
+
.map(intelligence_runtime_common_1.normalizeRepoPath));
|
|
115
|
+
}
|
|
116
|
+
function findScopeMappingWarnings(intentPack, contextPack, graph, out) {
|
|
117
|
+
const nodePaths = findRepositoryNodePaths(graph);
|
|
118
|
+
const serviceBoundaryValues = new Set(contextPack.serviceBoundaries.flatMap((boundary) => [boundary.name, boundary.path]).map(intelligence_runtime_common_1.normalizeRepoPath));
|
|
119
|
+
const unmappedModules = intentPack.approvedScope.modules
|
|
120
|
+
.map(intelligence_runtime_common_1.normalizeRepoPath)
|
|
121
|
+
.filter((modulePath) => !hasGlobSyntax(modulePath))
|
|
122
|
+
.filter((modulePath) => !nodePaths.has(modulePath))
|
|
123
|
+
.slice(0, 6);
|
|
124
|
+
if (unmappedModules.length > 0) {
|
|
125
|
+
pushCapped(out, `Approved module(s) are not represented in the repository graph: ${unmappedModules.join(', ')}. Verify may over-classify adjacent edits as drift.`);
|
|
126
|
+
}
|
|
127
|
+
const unmappedServices = intentPack.approvedScope.services
|
|
128
|
+
.map(intelligence_runtime_common_1.normalizeRepoPath)
|
|
129
|
+
.filter((servicePath) => !hasGlobSyntax(servicePath))
|
|
130
|
+
.filter((servicePath) => !serviceBoundaryValues.has(servicePath))
|
|
131
|
+
.slice(0, 6);
|
|
132
|
+
if (unmappedServices.length > 0) {
|
|
133
|
+
pushCapped(out, `Approved service(s) do not map to context-pack service boundaries: ${unmappedServices.join(', ')}. Declare module/package boundaries explicitly for monorepos.`);
|
|
134
|
+
}
|
|
135
|
+
if (graph.summary.moduleCount > contextPack.serviceBoundaries.length && contextPack.serviceBoundaries.length >= 12) {
|
|
136
|
+
pushCapped(out, `Context pack captured ${contextPack.serviceBoundaries.length} service/module boundary candidate(s) from ${graph.summary.moduleCount} module(s). Large monorepos may need narrower declared package scope to avoid boundary truncation.`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function findOverlappingGlobWarnings(intentPack, out) {
|
|
140
|
+
const scopedEntries = [
|
|
141
|
+
...intentPack.approvedScope.files.map((value) => `file:${value}`),
|
|
142
|
+
...intentPack.approvedScope.modules.map((value) => `module:${value}`),
|
|
143
|
+
...intentPack.approvedScope.services.map((value) => `service:${value}`),
|
|
144
|
+
];
|
|
145
|
+
const globEntries = scopedEntries.filter((entry) => hasGlobSyntax(entry.split(':').slice(1).join(':')));
|
|
146
|
+
for (let i = 0; i < globEntries.length; i += 1) {
|
|
147
|
+
for (let j = i + 1; j < globEntries.length; j += 1) {
|
|
148
|
+
const left = globEntries[i].split(':').slice(1).join(':');
|
|
149
|
+
const right = globEntries[j].split(':').slice(1).join(':');
|
|
150
|
+
if (pathCovers(left, right) || pathCovers(right, left)) {
|
|
151
|
+
pushCapped(out, `Approved scope glob "${left}" overlaps "${right}". Overlapping globs make false-positive triage harder; prefer one canonical boundary.`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function boundaryTypeMatchesPath(boundary) {
|
|
157
|
+
const flags = (0, intelligence_runtime_common_1.classifyBoundaryPath)(boundary.path);
|
|
158
|
+
if (boundary.type === 'infra')
|
|
159
|
+
return flags.infra;
|
|
160
|
+
if (boundary.type === 'ci')
|
|
161
|
+
return flags.ci;
|
|
162
|
+
if (boundary.type === 'dependency-manifest')
|
|
163
|
+
return flags.dependencyManifest;
|
|
164
|
+
if (boundary.type === 'sensitive')
|
|
165
|
+
return flags.sensitive;
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
function findBoundaryWarnings(intentPack, out) {
|
|
169
|
+
const approvedValues = [
|
|
170
|
+
...intentPack.approvedScope.files,
|
|
171
|
+
...intentPack.approvedScope.modules,
|
|
172
|
+
...intentPack.approvedScope.services,
|
|
173
|
+
].map(intelligence_runtime_common_1.normalizeRepoPath);
|
|
174
|
+
for (const boundary of intentPack.forbiddenBoundaries.slice(0, 40)) {
|
|
175
|
+
const boundaryPath = (0, intelligence_runtime_common_1.normalizeRepoPath)(boundary.path);
|
|
176
|
+
if (boundary.policy === 'allowed' && ['infra', 'ci', 'sensitive', 'dependency-manifest'].includes(boundary.type)) {
|
|
177
|
+
pushCapped(out, `Boundary "${boundary.path}" is marked allowed even though it is classified as ${boundary.type}; confirm this trust-boundary exception is intentional.`);
|
|
178
|
+
}
|
|
179
|
+
if (!hasGlobSyntax(boundaryPath) && !boundaryTypeMatchesPath(boundary)) {
|
|
180
|
+
pushCapped(out, `Boundary "${boundary.path}" is declared as ${boundary.type}, but its path shape does not match that boundary type. This can produce misleading drift explanations.`);
|
|
181
|
+
}
|
|
182
|
+
if (boundary.policy === 'forbidden'
|
|
183
|
+
&& approvedValues.some((approved) => pathCovers(approved, boundaryPath) || pathCovers(boundaryPath, approved))) {
|
|
184
|
+
pushCapped(out, `Approved scope overlaps forbidden boundary "${boundary.path}". Resolve this before relying on intent governance in CI.`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
function readJsonObject(pathValue) {
|
|
189
|
+
if (!(0, fs_1.existsSync)(pathValue))
|
|
190
|
+
return null;
|
|
191
|
+
try {
|
|
192
|
+
const parsed = JSON.parse((0, fs_1.readFileSync)(pathValue, 'utf-8'));
|
|
193
|
+
return isRecord(parsed) ? parsed : null;
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function hasWorkspaceConfig(projectRoot) {
|
|
200
|
+
const rootPackageJson = readJsonObject((0, path_1.join)(projectRoot, 'package.json'));
|
|
201
|
+
if (rootPackageJson && Object.prototype.hasOwnProperty.call(rootPackageJson, 'workspaces')) {
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
return (0, fs_1.existsSync)((0, path_1.join)(projectRoot, 'pnpm-workspace.yaml'));
|
|
205
|
+
}
|
|
206
|
+
function collectPackageRoots(projectRoot) {
|
|
207
|
+
const roots = [];
|
|
208
|
+
for (const workspaceDir of KNOWN_WORKSPACE_DIRS) {
|
|
209
|
+
const dir = (0, path_1.join)(projectRoot, workspaceDir);
|
|
210
|
+
if (!(0, fs_1.existsSync)(dir))
|
|
211
|
+
continue;
|
|
212
|
+
let entries = [];
|
|
213
|
+
try {
|
|
214
|
+
entries = (0, fs_1.readdirSync)(dir);
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
for (const entry of entries) {
|
|
220
|
+
const fullPath = (0, path_1.join)(dir, entry);
|
|
221
|
+
try {
|
|
222
|
+
if (!(0, fs_1.statSync)(fullPath).isDirectory())
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const candidateRoot = (0, intelligence_runtime_common_1.normalizeRepoPath)(`${workspaceDir}/${entry}`);
|
|
229
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(fullPath, 'package.json'))
|
|
230
|
+
|| (0, fs_1.existsSync)((0, path_1.join)(fullPath, 'pyproject.toml'))
|
|
231
|
+
|| (0, fs_1.existsSync)((0, path_1.join)(fullPath, 'go.mod'))) {
|
|
232
|
+
roots.push(candidateRoot);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return (0, intelligence_runtime_common_1.dedupeSorted)(roots);
|
|
237
|
+
}
|
|
238
|
+
function findPackageRootForPath(packageRoots, filePath) {
|
|
239
|
+
const normalized = (0, intelligence_runtime_common_1.normalizeRepoPath)(filePath);
|
|
240
|
+
let best = null;
|
|
241
|
+
let bestLength = -1;
|
|
242
|
+
for (const root of packageRoots) {
|
|
243
|
+
if (normalized === root || normalized.startsWith(`${root}/`)) {
|
|
244
|
+
if (root.length > bestLength) {
|
|
245
|
+
best = root;
|
|
246
|
+
bestLength = root.length;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return best;
|
|
251
|
+
}
|
|
252
|
+
function findMonorepoWarnings(projectRoot, intentPack, graph, out) {
|
|
253
|
+
const packageRoots = collectPackageRoots(projectRoot);
|
|
254
|
+
const isMonorepoLike = hasWorkspaceConfig(projectRoot) || packageRoots.length >= 3 || graph.summary.moduleCount >= 24;
|
|
255
|
+
if (!isMonorepoLike)
|
|
256
|
+
return;
|
|
257
|
+
const approvedPackageRoots = (0, intelligence_runtime_common_1.dedupeSorted)(intentPack.approvedScope.files
|
|
258
|
+
.map((filePath) => findPackageRootForPath(packageRoots, filePath))
|
|
259
|
+
.filter((value) => Boolean(value)));
|
|
260
|
+
if (approvedPackageRoots.length > 1 && intentPack.approvedScope.services.length === 0) {
|
|
261
|
+
pushCapped(out, `Approved files span multiple package roots (${approvedPackageRoots.join(', ')}) but no service boundary is declared. Add package/service intent scope to reduce monorepo false positives.`);
|
|
262
|
+
}
|
|
263
|
+
if (graph.summary.moduleCount >= 24 && intentPack.approvedScope.modules.length <= 1) {
|
|
264
|
+
pushCapped(out, `Repository looks monorepo-scale (${graph.summary.moduleCount} module(s)), but intent approved only ${intentPack.approvedScope.modules.length} module(s). Validate package-layer mapping before using this contract as a CI gate.`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
function tsconfigHasPathAliases(projectRoot) {
|
|
268
|
+
const candidates = ['tsconfig.json', 'jsconfig.json'];
|
|
269
|
+
for (const candidate of candidates) {
|
|
270
|
+
const parsed = readJsonObject((0, path_1.join)(projectRoot, candidate));
|
|
271
|
+
const compilerOptions = isRecord(parsed?.compilerOptions) ? parsed.compilerOptions : null;
|
|
272
|
+
if (isRecord(compilerOptions?.paths) && Object.keys(compilerOptions.paths).length > 0) {
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
for (const workspaceDir of KNOWN_WORKSPACE_DIRS) {
|
|
277
|
+
const dir = (0, path_1.join)(projectRoot, workspaceDir);
|
|
278
|
+
if (!(0, fs_1.existsSync)(dir))
|
|
279
|
+
continue;
|
|
280
|
+
let entries = [];
|
|
281
|
+
try {
|
|
282
|
+
entries = (0, fs_1.readdirSync)(dir);
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
for (const entry of entries.slice(0, 24)) {
|
|
288
|
+
const parsed = readJsonObject((0, path_1.join)(dir, entry, 'tsconfig.json'));
|
|
289
|
+
const compilerOptions = isRecord(parsed?.compilerOptions) ? parsed.compilerOptions : null;
|
|
290
|
+
if (isRecord(compilerOptions?.paths) && Object.keys(compilerOptions.paths).length > 0) {
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
function findPathAliasWarnings(projectRoot, graph, out) {
|
|
298
|
+
if (!tsconfigHasPathAliases(projectRoot))
|
|
299
|
+
return;
|
|
300
|
+
if (graph.summary.scannedSourceFiles >= 20 && graph.summary.importEdges === 0) {
|
|
301
|
+
pushCapped(out, 'TypeScript path aliases were detected, but repository intelligence found no import edges. Alias resolution may be under-reporting blast radius and drift.');
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
function evaluateIntentContractDiagnostics(input) {
|
|
305
|
+
const warnings = [];
|
|
306
|
+
const { projectRoot, intentPack, contextPack, repositoryGraph } = input;
|
|
307
|
+
findUnsupportedIntentFields(intentPack, warnings);
|
|
308
|
+
findExistingPaths(projectRoot, intentPack.approvedScope.files, warnings);
|
|
309
|
+
findScopeMappingWarnings(intentPack, contextPack, repositoryGraph, warnings);
|
|
310
|
+
findOverlappingGlobWarnings(intentPack, warnings);
|
|
311
|
+
findBoundaryWarnings(intentPack, warnings);
|
|
312
|
+
findMonorepoWarnings(projectRoot, intentPack, repositoryGraph, warnings);
|
|
313
|
+
findPathAliasWarnings(projectRoot, repositoryGraph, warnings);
|
|
314
|
+
if (intentPack.repositoryGraphId && intentPack.repositoryGraphId !== repositoryGraph.graphId) {
|
|
315
|
+
pushCapped(warnings, `Intent pack was built against ${intentPack.repositoryGraphId}, but active repository graph is ${repositoryGraph.graphId}; replayable drift explanations may be stale.`);
|
|
316
|
+
}
|
|
317
|
+
if (contextPack.intentPackId !== intentPack.intentPackId) {
|
|
318
|
+
pushCapped(warnings, `Context pack ${contextPack.contextPackId} belongs to ${contextPack.intentPackId}, not active intent ${intentPack.intentPackId}.`);
|
|
319
|
+
}
|
|
320
|
+
return (0, intelligence_runtime_common_1.dedupeSorted)(warnings.map((warning) => warning.replace(/\s+/g, ' ').replace((0, path_1.basename)(projectRoot), (0, path_1.basename)(projectRoot)).trim()));
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=intent-contract-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-contract-diagnostics.js","sourceRoot":"","sources":["../../src/utils/intent-contract-diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IntentPack, RepositoryIntelligenceGraph } from '@neurcode-ai/contracts';
|
|
2
|
+
import type { ContextAnalysis } from '../context-engine';
|
|
3
|
+
export interface BuildIntentPackInput {
|
|
4
|
+
projectRoot: string;
|
|
5
|
+
orgId: string | null;
|
|
6
|
+
projectId: string | null;
|
|
7
|
+
intent: string;
|
|
8
|
+
detectedSignals: string[];
|
|
9
|
+
expectedFiles: string[];
|
|
10
|
+
constraints: string[];
|
|
11
|
+
contextAnalysis: ContextAnalysis;
|
|
12
|
+
repositoryGraph: RepositoryIntelligenceGraph;
|
|
13
|
+
}
|
|
14
|
+
export declare function buildIntentPack(input: BuildIntentPackInput): IntentPack;
|
|
15
|
+
//# sourceMappingURL=intent-pack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-pack.d.ts","sourceRoot":"","sources":["../../src/utils/intent-pack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAEV,2BAA2B,EAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAczD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,2BAA2B,CAAC;CAC9C;AAwED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAgKvE"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildIntentPack = buildIntentPack;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const intelligence_runtime_common_1 = require("./intelligence-runtime-common");
|
|
6
|
+
function deriveModuleName(filePath) {
|
|
7
|
+
const normalized = (0, intelligence_runtime_common_1.normalizeRepoPath)(filePath);
|
|
8
|
+
const parts = normalized.split('/').filter(Boolean);
|
|
9
|
+
if (parts.length <= 1) {
|
|
10
|
+
return parts[0] || normalized;
|
|
11
|
+
}
|
|
12
|
+
if (['src', 'app', 'apps', 'services', 'packages', 'libs', 'lib'].includes(parts[0]) && parts.length >= 2) {
|
|
13
|
+
return `${parts[0]}/${parts[1]}`;
|
|
14
|
+
}
|
|
15
|
+
return parts[0];
|
|
16
|
+
}
|
|
17
|
+
function deriveServiceName(modulePath) {
|
|
18
|
+
const normalized = modulePath.toLowerCase();
|
|
19
|
+
if (normalized.includes('service')
|
|
20
|
+
|| normalized.includes('api')
|
|
21
|
+
|| normalized.includes('auth')
|
|
22
|
+
|| normalized.includes('billing')
|
|
23
|
+
|| normalized.includes('payment')
|
|
24
|
+
|| normalized.includes('worker')
|
|
25
|
+
|| normalized.includes('queue')) {
|
|
26
|
+
return modulePath;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
function buildBoundaryExpectations(graph) {
|
|
31
|
+
const expectations = [];
|
|
32
|
+
for (const pathValue of graph.boundaries.sensitivePaths.slice(0, 8)) {
|
|
33
|
+
expectations.push({
|
|
34
|
+
type: 'sensitive',
|
|
35
|
+
path: pathValue,
|
|
36
|
+
policy: 'review-required',
|
|
37
|
+
reason: 'Sensitive boundary changes should be explicitly justified against engineering intent.',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
for (const pathValue of graph.boundaries.infraPaths.slice(0, 6)) {
|
|
41
|
+
expectations.push({
|
|
42
|
+
type: 'infra',
|
|
43
|
+
path: pathValue,
|
|
44
|
+
policy: 'forbidden',
|
|
45
|
+
reason: 'Infrastructure edits expand blast radius and should stay out of routine implementation sessions unless declared.',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
for (const pathValue of graph.boundaries.ciPaths.slice(0, 4)) {
|
|
49
|
+
expectations.push({
|
|
50
|
+
type: 'ci',
|
|
51
|
+
path: pathValue,
|
|
52
|
+
policy: 'forbidden',
|
|
53
|
+
reason: 'CI and release automation must not drift from application intent without explicit rollout approval.',
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
for (const pathValue of graph.boundaries.dependencyManifests.slice(0, 6)) {
|
|
57
|
+
expectations.push({
|
|
58
|
+
type: 'dependency-manifest',
|
|
59
|
+
path: pathValue,
|
|
60
|
+
policy: 'review-required',
|
|
61
|
+
reason: 'Dependency manifest edits should align with declared implementation scope and blast radius.',
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return expectations.sort((left, right) => left.path.localeCompare(right.path));
|
|
65
|
+
}
|
|
66
|
+
function buildIntentPack(input) {
|
|
67
|
+
const createdAt = (0, intelligence_runtime_common_1.nowIso)();
|
|
68
|
+
const normalizedIntent = (0, intelligence_runtime_common_1.normalizeText)(input.intent);
|
|
69
|
+
const approvedFiles = (0, intelligence_runtime_common_1.dedupeSortedPaths)([
|
|
70
|
+
...input.expectedFiles,
|
|
71
|
+
...input.contextAnalysis.suggestedFiles,
|
|
72
|
+
]).slice(0, 24);
|
|
73
|
+
const approvedModules = (0, intelligence_runtime_common_1.dedupeSorted)(approvedFiles.map(deriveModuleName)).slice(0, 12);
|
|
74
|
+
const approvedServices = (0, intelligence_runtime_common_1.dedupeSorted)(approvedModules
|
|
75
|
+
.map(deriveServiceName)
|
|
76
|
+
.filter((value) => Boolean(value))).slice(0, 8);
|
|
77
|
+
const blastRadiusLevel = approvedFiles.length >= 16
|
|
78
|
+
? 'high'
|
|
79
|
+
: approvedFiles.length >= 8
|
|
80
|
+
? 'medium'
|
|
81
|
+
: 'low';
|
|
82
|
+
const expectedDependencies = (0, intelligence_runtime_common_1.dedupeSorted)(input.repositoryGraph.boundaries.dependencyManifests.map((pathValue) => (0, path_1.basename)(pathValue))).slice(0, 8);
|
|
83
|
+
const expectedInfrastructure = (0, intelligence_runtime_common_1.dedupeSortedPaths)(input.repositoryGraph.boundaries.infraPaths).slice(0, 8);
|
|
84
|
+
const forbiddenBoundaries = buildBoundaryExpectations(input.repositoryGraph);
|
|
85
|
+
const checkpoints = [
|
|
86
|
+
{
|
|
87
|
+
id: 'scope-check',
|
|
88
|
+
label: 'Scope stays within approved files and modules',
|
|
89
|
+
rationale: 'Prevent AI drift into unrelated services or modules.',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: 'boundary-check',
|
|
93
|
+
label: 'Sensitive, infra, CI, and dependency boundaries stay declared',
|
|
94
|
+
rationale: 'Catch blast-radius expansion before remediation or merge.',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
id: 'reverify-check',
|
|
98
|
+
label: 'Replay-linked reverify passes before rollout',
|
|
99
|
+
rationale: 'Preserve deterministic governance lineage through remediation.',
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
const rolloutExpectations = (0, intelligence_runtime_common_1.dedupeSorted)([
|
|
103
|
+
expectedInfrastructure.length > 0
|
|
104
|
+
? 'Treat infra and deployment files as out-of-scope unless explicitly approved.'
|
|
105
|
+
: '',
|
|
106
|
+
'Use `neurcode verify --evidence` before remediation handoff and again after fixes land.',
|
|
107
|
+
'Keep implementation scoped to the declared change contract before CI governance.',
|
|
108
|
+
]);
|
|
109
|
+
const governanceExpectations = (0, intelligence_runtime_common_1.dedupeSorted)([
|
|
110
|
+
'Findings must remain replay-linked and explainable against declared intent.',
|
|
111
|
+
'Unexpected cross-service, dependency, or CI drift should fail governance review.',
|
|
112
|
+
'Remediation exports must preserve intent, policy, and replay lineage.',
|
|
113
|
+
]);
|
|
114
|
+
const relevantBoundaries = (input.repositoryGraph.semantic?.ownershipBoundaries || []).filter((boundary) => approvedModules.includes(boundary.path) || approvedServices.includes(boundary.name));
|
|
115
|
+
const semanticExpectations = {
|
|
116
|
+
ownershipBoundaries: (0, intelligence_runtime_common_1.dedupeSorted)(relevantBoundaries.map((boundary) => boundary.name)).slice(0, 12),
|
|
117
|
+
contractIds: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.contracts || [])
|
|
118
|
+
.filter((contract) => relevantBoundaries.some((boundary) => boundary.id === contract.boundaryId))
|
|
119
|
+
.map((contract) => contract.id)).slice(0, 16),
|
|
120
|
+
invariantIds: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.invariants || [])
|
|
121
|
+
.filter((invariant) => relevantBoundaries.some((boundary) => boundary.id === invariant.boundaryId)
|
|
122
|
+
|| invariant.scope === 'repository')
|
|
123
|
+
.map((invariant) => invariant.id)).slice(0, 16),
|
|
124
|
+
expectedResponsibilities: (0, intelligence_runtime_common_1.dedupeSorted)(relevantBoundaries.flatMap((boundary) => boundary.responsibilities)).slice(0, 16),
|
|
125
|
+
expectedBehaviorKinds: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.runtime.behaviorProfiles || [])
|
|
126
|
+
.filter((profile) => relevantBoundaries.some((boundary) => boundary.id === profile.boundaryId))
|
|
127
|
+
.flatMap((profile) => profile.behaviorKinds)).slice(0, 16),
|
|
128
|
+
expectedRuntimeFlows: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.runtime.interactions || [])
|
|
129
|
+
.filter((interaction) => relevantBoundaries.some((boundary) => boundary.id === interaction.fromBoundaryId || boundary.id === interaction.toBoundaryId))
|
|
130
|
+
.map((interaction) => `${interaction.kind}:${interaction.fromBoundaryName}->${interaction.toBoundaryName || interaction.subject}`)).slice(0, 20),
|
|
131
|
+
expectedRolloutUnits: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.runtime.behaviorProfiles || [])
|
|
132
|
+
.filter((profile) => relevantBoundaries.some((boundary) => boundary.id === profile.boundaryId))
|
|
133
|
+
.flatMap((profile) => profile.rolloutUnits)).slice(0, 12),
|
|
134
|
+
};
|
|
135
|
+
const fingerprintPayload = {
|
|
136
|
+
schemaVersion: intelligence_runtime_common_1.LOCAL_INTELLIGENCE_SCHEMA_VERSION,
|
|
137
|
+
intent: normalizedIntent,
|
|
138
|
+
approvedFiles,
|
|
139
|
+
approvedModules,
|
|
140
|
+
approvedServices,
|
|
141
|
+
forbiddenBoundaries,
|
|
142
|
+
constraints: (0, intelligence_runtime_common_1.dedupeSorted)(input.constraints),
|
|
143
|
+
detectedSignals: (0, intelligence_runtime_common_1.dedupeSorted)(input.detectedSignals),
|
|
144
|
+
semanticExpectations,
|
|
145
|
+
repositoryGraphId: input.repositoryGraph.graphId,
|
|
146
|
+
};
|
|
147
|
+
const fingerprint = (0, intelligence_runtime_common_1.fingerprintValue)(fingerprintPayload);
|
|
148
|
+
return {
|
|
149
|
+
schemaVersion: intelligence_runtime_common_1.LOCAL_INTELLIGENCE_SCHEMA_VERSION,
|
|
150
|
+
intentPackId: `intent-${fingerprint.slice(0, 16)}`,
|
|
151
|
+
createdAt,
|
|
152
|
+
updatedAt: createdAt,
|
|
153
|
+
intent: {
|
|
154
|
+
raw: input.intent,
|
|
155
|
+
normalized: normalizedIntent,
|
|
156
|
+
},
|
|
157
|
+
governanceContext: {
|
|
158
|
+
repoName: (0, path_1.basename)(input.projectRoot),
|
|
159
|
+
projectRoot: input.projectRoot,
|
|
160
|
+
branchName: (0, intelligence_runtime_common_1.getGitBranchName)(input.projectRoot),
|
|
161
|
+
headSha: (0, intelligence_runtime_common_1.getGitHeadSha)(input.projectRoot),
|
|
162
|
+
orgId: input.orgId,
|
|
163
|
+
projectId: input.projectId,
|
|
164
|
+
},
|
|
165
|
+
approvedScope: {
|
|
166
|
+
files: approvedFiles,
|
|
167
|
+
modules: approvedModules,
|
|
168
|
+
services: approvedServices,
|
|
169
|
+
},
|
|
170
|
+
forbiddenBoundaries,
|
|
171
|
+
expectedDependencies,
|
|
172
|
+
expectedInfrastructure,
|
|
173
|
+
expectedBlastRadius: {
|
|
174
|
+
level: blastRadiusLevel,
|
|
175
|
+
rationale: blastRadiusLevel === 'high'
|
|
176
|
+
? 'Intent currently touches enough files or modules that governance should expect broader coordination risk.'
|
|
177
|
+
: blastRadiusLevel === 'medium'
|
|
178
|
+
? 'Intent spans multiple bounded files or modules and should be watched for adjacent drift.'
|
|
179
|
+
: 'Intent remains narrowly scoped and should stay within a small bounded file set.',
|
|
180
|
+
expectedFiles: approvedFiles,
|
|
181
|
+
},
|
|
182
|
+
checkpoints,
|
|
183
|
+
rolloutExpectations,
|
|
184
|
+
governanceExpectations,
|
|
185
|
+
constraints: (0, intelligence_runtime_common_1.dedupeSorted)(input.constraints),
|
|
186
|
+
detectedSignals: (0, intelligence_runtime_common_1.dedupeSorted)(input.detectedSignals),
|
|
187
|
+
semanticExpectations,
|
|
188
|
+
contextHints: {
|
|
189
|
+
suggestedFiles: (0, intelligence_runtime_common_1.dedupeSortedPaths)(input.contextAnalysis.suggestedFiles),
|
|
190
|
+
confidence: input.contextAnalysis.confidence,
|
|
191
|
+
},
|
|
192
|
+
repositoryGraphId: input.repositoryGraph.graphId,
|
|
193
|
+
fingerprint,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=intent-pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-pack.js","sourceRoot":"","sources":["../../src/utils/intent-pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ export interface PlanSyncUpdateResult {
|
|
|
21
21
|
lastUpdated: string;
|
|
22
22
|
}
|
|
23
23
|
export declare function addExpectedFilesToLocalPlan(projectRoot: string, files: string[]): PlanSyncUpdateResult;
|
|
24
|
+
export declare function replaceExpectedFilesInLocalPlan(projectRoot: string, files: string[]): PlanSyncUpdateResult;
|
|
24
25
|
export interface IntentPlanInitializationResult {
|
|
25
26
|
path: string;
|
|
26
27
|
intent: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-sync.d.ts","sourceRoot":"","sources":["../../src/utils/plan-sync.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAoFD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAMD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAkDtE;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,GACd,oBAAoB,CAqCtB;AAyFD,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;IAC9C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,8BAA8B,CAuBhC"}
|
|
1
|
+
{"version":3,"file":"plan-sync.d.ts","sourceRoot":"","sources":["../../src/utils/plan-sync.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAoFD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAMD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAkDtE;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,GACd,oBAAoB,CAqCtB;AAED,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,GACd,oBAAoB,CAuBtB;AAyFD,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;IAC9C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,8BAA8B,CAuBhC"}
|
package/dist/utils/plan-sync.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.resolveLocalPlanPath = resolveLocalPlanPath;
|
|
4
4
|
exports.ensureLocalPlan = ensureLocalPlan;
|
|
5
5
|
exports.addExpectedFilesToLocalPlan = addExpectedFilesToLocalPlan;
|
|
6
|
+
exports.replaceExpectedFilesInLocalPlan = replaceExpectedFilesInLocalPlan;
|
|
6
7
|
exports.initializeLocalPlanFromIntent = initializeLocalPlanFromIntent;
|
|
7
8
|
const fs_1 = require("fs");
|
|
8
9
|
const path_1 = require("path");
|
|
@@ -171,6 +172,28 @@ function addExpectedFilesToLocalPlan(projectRoot, files) {
|
|
|
171
172
|
lastUpdated: nextPlan.lastUpdated,
|
|
172
173
|
};
|
|
173
174
|
}
|
|
175
|
+
function replaceExpectedFilesInLocalPlan(projectRoot, files) {
|
|
176
|
+
const plan = ensureLocalPlan(projectRoot);
|
|
177
|
+
const nextExpectedFiles = dedupePaths(files);
|
|
178
|
+
const nextLastUpdated = nowIso();
|
|
179
|
+
const nextPlan = {
|
|
180
|
+
intent: plan.intent,
|
|
181
|
+
expectedFiles: nextExpectedFiles,
|
|
182
|
+
constraints: plan.constraints,
|
|
183
|
+
createdAt: plan.createdAt,
|
|
184
|
+
lastUpdated: nextLastUpdated,
|
|
185
|
+
};
|
|
186
|
+
writeLocalPlan(plan.path, nextPlan);
|
|
187
|
+
return {
|
|
188
|
+
path: plan.path,
|
|
189
|
+
addedFiles: nextExpectedFiles,
|
|
190
|
+
expectedFiles: nextPlan.expectedFiles,
|
|
191
|
+
intent: nextPlan.intent,
|
|
192
|
+
constraints: nextPlan.constraints,
|
|
193
|
+
createdAt: nextPlan.createdAt,
|
|
194
|
+
lastUpdated: nextPlan.lastUpdated,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
174
197
|
const INTENT_HEURISTIC_RULES = [
|
|
175
198
|
{
|
|
176
199
|
id: 'auth',
|