@neurcode-ai/cli 0.9.63 → 0.9.65
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/LICENSE +201 -0
- package/dist/commands/brain.d.ts.map +1 -1
- package/dist/commands/brain.js +273 -0
- package/dist/commands/brain.js.map +1 -1
- package/dist/commands/control-plane.js +7 -7
- package/dist/commands/control-plane.js.map +1 -1
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +108 -1
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/patch-apply.d.ts +2 -0
- package/dist/commands/patch-apply.d.ts.map +1 -1
- package/dist/commands/patch-apply.js +331 -19
- package/dist/commands/patch-apply.js.map +1 -1
- package/dist/commands/pilot-report.d.ts +9 -0
- package/dist/commands/pilot-report.d.ts.map +1 -0
- package/dist/commands/pilot-report.js +176 -0
- package/dist/commands/pilot-report.js.map +1 -0
- package/dist/commands/remediate-governance.d.ts +54 -0
- package/dist/commands/remediate-governance.d.ts.map +1 -0
- package/dist/commands/remediate-governance.js +375 -0
- package/dist/commands/remediate-governance.js.map +1 -0
- package/dist/commands/remediate.d.ts.map +1 -1
- package/dist/commands/remediate.js.map +1 -1
- package/dist/commands/replay.d.ts.map +1 -1
- package/dist/commands/replay.js +35 -5
- package/dist/commands/replay.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +336 -25
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/workspace.js +7 -7
- package/dist/commands/workspace.js.map +1 -1
- package/dist/daemon/server.d.ts +2 -2
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +2113 -32
- package/dist/daemon/server.js.map +1 -1
- package/dist/explainability/DeterminismClassifier.d.ts +34 -0
- package/dist/explainability/DeterminismClassifier.d.ts.map +1 -0
- package/dist/explainability/DeterminismClassifier.js +104 -0
- package/dist/explainability/DeterminismClassifier.js.map +1 -0
- package/dist/explainability/ViolationFormatter.d.ts +32 -0
- package/dist/explainability/ViolationFormatter.d.ts.map +1 -0
- package/dist/explainability/ViolationFormatter.js +252 -0
- package/dist/explainability/ViolationFormatter.js.map +1 -0
- package/dist/explainability/index.d.ts +15 -0
- package/dist/explainability/index.d.ts.map +1 -0
- package/dist/explainability/index.js +94 -0
- package/dist/explainability/index.js.map +1 -0
- package/dist/explainability/types.d.ts +37 -0
- package/dist/explainability/types.d.ts.map +1 -0
- package/dist/explainability/types.js +3 -0
- package/dist/explainability/types.js.map +1 -0
- package/dist/governance/canonical-pipeline.d.ts +38 -0
- package/dist/governance/canonical-pipeline.d.ts.map +1 -0
- package/dist/governance/canonical-pipeline.js +448 -0
- package/dist/governance/canonical-pipeline.js.map +1 -0
- package/dist/governance/structural-on-diff.d.ts +13 -0
- package/dist/governance/structural-on-diff.d.ts.map +1 -0
- package/dist/governance/structural-on-diff.js +35 -0
- package/dist/governance/structural-on-diff.js.map +1 -0
- package/dist/governance/structural-policy-merge.d.ts +14 -0
- package/dist/governance/structural-policy-merge.d.ts.map +1 -0
- package/dist/governance/structural-policy-merge.js +25 -0
- package/dist/governance/structural-policy-merge.js.map +1 -0
- package/dist/index.js +86 -4
- package/dist/index.js.map +1 -1
- package/dist/integrations/review-compression/index.d.ts +50 -0
- package/dist/integrations/review-compression/index.d.ts.map +1 -0
- package/dist/integrations/review-compression/index.js +158 -0
- package/dist/integrations/review-compression/index.js.map +1 -0
- package/dist/intent-engine/domain-taxonomy.d.ts +42 -0
- package/dist/intent-engine/domain-taxonomy.d.ts.map +1 -0
- package/dist/intent-engine/domain-taxonomy.js +534 -0
- package/dist/intent-engine/domain-taxonomy.js.map +1 -0
- package/dist/intent-engine/index.d.ts +1 -0
- package/dist/intent-engine/index.d.ts.map +1 -1
- package/dist/intent-engine/index.js +6 -1
- package/dist/intent-engine/index.js.map +1 -1
- package/dist/intent-engine/matcher.d.ts.map +1 -1
- package/dist/intent-engine/matcher.js +2 -0
- package/dist/intent-engine/matcher.js.map +1 -1
- package/dist/intent-engine/parser.d.ts.map +1 -1
- package/dist/intent-engine/parser.js +47 -0
- package/dist/intent-engine/parser.js.map +1 -1
- package/dist/intent-engine/semantic-expander.d.ts +104 -0
- package/dist/intent-engine/semantic-expander.d.ts.map +1 -0
- package/dist/intent-engine/semantic-expander.js +480 -0
- package/dist/intent-engine/semantic-expander.js.map +1 -0
- package/dist/patch-engine/diff.d.ts +1 -1
- package/dist/patch-engine/diff.js +1 -1
- package/dist/patch-engine/generator.d.ts +9 -0
- package/dist/patch-engine/generator.d.ts.map +1 -1
- package/dist/patch-engine/generator.js +375 -17
- package/dist/patch-engine/generator.js.map +1 -1
- package/dist/patch-engine/index.d.ts +25 -25
- package/dist/patch-engine/index.d.ts.map +1 -1
- package/dist/patch-engine/index.js +134 -87
- package/dist/patch-engine/index.js.map +1 -1
- package/dist/patch-engine/patterns.d.ts +1 -1
- package/dist/patch-engine/patterns.d.ts.map +1 -1
- package/dist/patch-engine/patterns.js +282 -41
- package/dist/patch-engine/patterns.js.map +1 -1
- package/dist/patch-engine/rollback.d.ts +31 -0
- package/dist/patch-engine/rollback.d.ts.map +1 -0
- package/dist/patch-engine/rollback.js +275 -0
- package/dist/patch-engine/rollback.js.map +1 -0
- package/dist/patch-engine/safety.d.ts +28 -0
- package/dist/patch-engine/safety.d.ts.map +1 -0
- package/dist/patch-engine/safety.js +122 -0
- package/dist/patch-engine/safety.js.map +1 -0
- package/dist/patch-engine/transaction.d.ts +52 -0
- package/dist/patch-engine/transaction.d.ts.map +1 -0
- package/dist/patch-engine/transaction.js +93 -0
- package/dist/patch-engine/transaction.js.map +1 -0
- package/dist/semantic/index.d.ts +14 -0
- package/dist/semantic/index.d.ts.map +1 -0
- package/dist/semantic/index.js +30 -0
- package/dist/semantic/index.js.map +1 -0
- package/dist/semantic/tfidf-engine.d.ts +81 -0
- package/dist/semantic/tfidf-engine.d.ts.map +1 -0
- package/dist/semantic/tfidf-engine.js +278 -0
- package/dist/semantic/tfidf-engine.js.map +1 -0
- package/dist/semantic/vector-store.d.ts +108 -0
- package/dist/semantic/vector-store.d.ts.map +1 -0
- package/dist/semantic/vector-store.js +321 -0
- package/dist/semantic/vector-store.js.map +1 -0
- package/dist/structural-rules/context-severity.d.ts +46 -0
- package/dist/structural-rules/context-severity.d.ts.map +1 -0
- package/dist/structural-rules/context-severity.js +115 -0
- package/dist/structural-rules/context-severity.js.map +1 -0
- package/dist/structural-rules/distributed/DS001-saga-rollback-absence.d.ts +11 -0
- package/dist/structural-rules/distributed/DS001-saga-rollback-absence.d.ts.map +1 -0
- package/dist/structural-rules/distributed/DS001-saga-rollback-absence.js +212 -0
- package/dist/structural-rules/distributed/DS001-saga-rollback-absence.js.map +1 -0
- package/dist/structural-rules/distributed/DS002-missing-correlation-id.d.ts +11 -0
- package/dist/structural-rules/distributed/DS002-missing-correlation-id.d.ts.map +1 -0
- package/dist/structural-rules/distributed/DS002-missing-correlation-id.js +213 -0
- package/dist/structural-rules/distributed/DS002-missing-correlation-id.js.map +1 -0
- package/dist/structural-rules/distributed/index.d.ts +3 -0
- package/dist/structural-rules/distributed/index.d.ts.map +1 -0
- package/dist/structural-rules/distributed/index.js +8 -0
- package/dist/structural-rules/distributed/index.js.map +1 -0
- package/dist/structural-rules/engine.d.ts +25 -0
- package/dist/structural-rules/engine.d.ts.map +1 -0
- package/dist/structural-rules/engine.js +90 -0
- package/dist/structural-rules/engine.js.map +1 -0
- package/dist/structural-rules/index.d.ts +41 -0
- package/dist/structural-rules/index.d.ts.map +1 -0
- package/dist/structural-rules/index.js +141 -0
- package/dist/structural-rules/index.js.map +1 -0
- package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.d.ts +11 -0
- package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.d.ts.map +1 -0
- package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.js +66 -0
- package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.js.map +1 -0
- package/dist/structural-rules/python/PY002-unbounded-dict-singleton.d.ts +11 -0
- package/dist/structural-rules/python/PY002-unbounded-dict-singleton.d.ts.map +1 -0
- package/dist/structural-rules/python/PY002-unbounded-dict-singleton.js +135 -0
- package/dist/structural-rules/python/PY002-unbounded-dict-singleton.js.map +1 -0
- package/dist/structural-rules/python/PY003-broad-except-clause.d.ts +11 -0
- package/dist/structural-rules/python/PY003-broad-except-clause.d.ts.map +1 -0
- package/dist/structural-rules/python/PY003-broad-except-clause.js +86 -0
- package/dist/structural-rules/python/PY003-broad-except-clause.js.map +1 -0
- package/dist/structural-rules/python/PY004-swallowed-async-exception.d.ts +11 -0
- package/dist/structural-rules/python/PY004-swallowed-async-exception.d.ts.map +1 -0
- package/dist/structural-rules/python/PY004-swallowed-async-exception.js +167 -0
- package/dist/structural-rules/python/PY004-swallowed-async-exception.js.map +1 -0
- package/dist/structural-rules/python/PY005-fastapi-without-pydantic.d.ts +11 -0
- package/dist/structural-rules/python/PY005-fastapi-without-pydantic.d.ts.map +1 -0
- package/dist/structural-rules/python/PY005-fastapi-without-pydantic.js +154 -0
- package/dist/structural-rules/python/PY005-fastapi-without-pydantic.js.map +1 -0
- package/dist/structural-rules/python/PY006-blocking-io-in-async.d.ts +11 -0
- package/dist/structural-rules/python/PY006-blocking-io-in-async.d.ts.map +1 -0
- package/dist/structural-rules/python/PY006-blocking-io-in-async.js +130 -0
- package/dist/structural-rules/python/PY006-blocking-io-in-async.js.map +1 -0
- package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.d.ts +11 -0
- package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.d.ts.map +1 -0
- package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.js +93 -0
- package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.js.map +1 -0
- package/dist/structural-rules/python/PY008-celery-task-without-retry.d.ts +11 -0
- package/dist/structural-rules/python/PY008-celery-task-without-retry.d.ts.map +1 -0
- package/dist/structural-rules/python/PY008-celery-task-without-retry.js +154 -0
- package/dist/structural-rules/python/PY008-celery-task-without-retry.js.map +1 -0
- package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.d.ts +11 -0
- package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.d.ts.map +1 -0
- package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.js +133 -0
- package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.js.map +1 -0
- package/dist/structural-rules/python/PY010-leaked-aiohttp-session.d.ts +11 -0
- package/dist/structural-rules/python/PY010-leaked-aiohttp-session.d.ts.map +1 -0
- package/dist/structural-rules/python/PY010-leaked-aiohttp-session.js +80 -0
- package/dist/structural-rules/python/PY010-leaked-aiohttp-session.js.map +1 -0
- package/dist/structural-rules/rules/SR001-swallowed-async-rejection.d.ts +11 -0
- package/dist/structural-rules/rules/SR001-swallowed-async-rejection.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR001-swallowed-async-rejection.js +145 -0
- package/dist/structural-rules/rules/SR001-swallowed-async-rejection.js.map +1 -0
- package/dist/structural-rules/rules/SR002-unbounded-collection.d.ts +11 -0
- package/dist/structural-rules/rules/SR002-unbounded-collection.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR002-unbounded-collection.js +196 -0
- package/dist/structural-rules/rules/SR002-unbounded-collection.js.map +1 -0
- package/dist/structural-rules/rules/SR003-timer-without-cleanup.d.ts +11 -0
- package/dist/structural-rules/rules/SR003-timer-without-cleanup.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR003-timer-without-cleanup.js +148 -0
- package/dist/structural-rules/rules/SR003-timer-without-cleanup.js.map +1 -0
- package/dist/structural-rules/rules/SR004-request-boundary-no-validation.d.ts +11 -0
- package/dist/structural-rules/rules/SR004-request-boundary-no-validation.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR004-request-boundary-no-validation.js +162 -0
- package/dist/structural-rules/rules/SR004-request-boundary-no-validation.js.map +1 -0
- package/dist/structural-rules/rules/SR005-halfopen-probe-gate.d.ts +11 -0
- package/dist/structural-rules/rules/SR005-halfopen-probe-gate.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR005-halfopen-probe-gate.js +150 -0
- package/dist/structural-rules/rules/SR005-halfopen-probe-gate.js.map +1 -0
- package/dist/structural-rules/rules/SR006-fanout-error-sanitization.d.ts +11 -0
- package/dist/structural-rules/rules/SR006-fanout-error-sanitization.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR006-fanout-error-sanitization.js +161 -0
- package/dist/structural-rules/rules/SR006-fanout-error-sanitization.js.map +1 -0
- package/dist/structural-rules/rules/SR007-cross-request-error.d.ts +11 -0
- package/dist/structural-rules/rules/SR007-cross-request-error.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR007-cross-request-error.js +175 -0
- package/dist/structural-rules/rules/SR007-cross-request-error.js.map +1 -0
- package/dist/structural-rules/rules/SR008-background-task-orphan.d.ts +11 -0
- package/dist/structural-rules/rules/SR008-background-task-orphan.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR008-background-task-orphan.js +176 -0
- package/dist/structural-rules/rules/SR008-background-task-orphan.js.map +1 -0
- package/dist/structural-rules/rules/SR009-missing-retry-backoff.d.ts +11 -0
- package/dist/structural-rules/rules/SR009-missing-retry-backoff.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR009-missing-retry-backoff.js +168 -0
- package/dist/structural-rules/rules/SR009-missing-retry-backoff.js.map +1 -0
- package/dist/structural-rules/rules/SR010-retry-storm.d.ts +11 -0
- package/dist/structural-rules/rules/SR010-retry-storm.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR010-retry-storm.js +181 -0
- package/dist/structural-rules/rules/SR010-retry-storm.js.map +1 -0
- package/dist/structural-rules/rules/SR011-event-listener-leak.d.ts +11 -0
- package/dist/structural-rules/rules/SR011-event-listener-leak.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR011-event-listener-leak.js +208 -0
- package/dist/structural-rules/rules/SR011-event-listener-leak.js.map +1 -0
- package/dist/structural-rules/rules/SR012-promise-race-leak.d.ts +11 -0
- package/dist/structural-rules/rules/SR012-promise-race-leak.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR012-promise-race-leak.js +191 -0
- package/dist/structural-rules/rules/SR012-promise-race-leak.js.map +1 -0
- package/dist/structural-rules/rules/SR013-missing-idempotency-key.d.ts +11 -0
- package/dist/structural-rules/rules/SR013-missing-idempotency-key.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR013-missing-idempotency-key.js +219 -0
- package/dist/structural-rules/rules/SR013-missing-idempotency-key.js.map +1 -0
- package/dist/structural-rules/rules/SR014-mutable-closure-async.d.ts +11 -0
- package/dist/structural-rules/rules/SR014-mutable-closure-async.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR014-mutable-closure-async.js +208 -0
- package/dist/structural-rules/rules/SR014-mutable-closure-async.js.map +1 -0
- package/dist/structural-rules/rules/SR015-dangling-abort-controller.d.ts +11 -0
- package/dist/structural-rules/rules/SR015-dangling-abort-controller.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR015-dangling-abort-controller.js +190 -0
- package/dist/structural-rules/rules/SR015-dangling-abort-controller.js.map +1 -0
- package/dist/structural-rules/rules/SR016-unsafe-json-parse.d.ts +11 -0
- package/dist/structural-rules/rules/SR016-unsafe-json-parse.d.ts.map +1 -0
- package/dist/structural-rules/rules/SR016-unsafe-json-parse.js +187 -0
- package/dist/structural-rules/rules/SR016-unsafe-json-parse.js.map +1 -0
- package/dist/structural-rules/suppressions.d.ts +43 -0
- package/dist/structural-rules/suppressions.d.ts.map +1 -0
- package/dist/structural-rules/suppressions.js +115 -0
- package/dist/structural-rules/suppressions.js.map +1 -0
- package/dist/structural-rules/types.d.ts +43 -0
- package/dist/structural-rules/types.d.ts.map +1 -0
- package/dist/structural-rules/types.js +3 -0
- package/dist/structural-rules/types.js.map +1 -0
- package/dist/utils/advisory-signals.d.ts +5 -0
- package/dist/utils/advisory-signals.d.ts.map +1 -1
- package/dist/utils/advisory-signals.js +50 -12
- package/dist/utils/advisory-signals.js.map +1 -1
- package/dist/utils/ai-debt-budget.d.ts.map +1 -1
- package/dist/utils/ai-debt-budget.js +5 -2
- package/dist/utils/ai-debt-budget.js.map +1 -1
- package/dist/utils/brain-cache.d.ts +100 -0
- package/dist/utils/brain-cache.d.ts.map +1 -0
- package/dist/utils/brain-cache.js +346 -0
- package/dist/utils/brain-cache.js.map +1 -0
- package/dist/utils/cli-json.d.ts.map +1 -1
- package/dist/utils/cli-json.js +80 -12
- package/dist/utils/cli-json.js.map +1 -1
- package/dist/utils/execution-bus.d.ts +10 -0
- package/dist/utils/execution-bus.d.ts.map +1 -1
- package/dist/utils/execution-bus.js +16 -0
- package/dist/utils/execution-bus.js.map +1 -1
- package/dist/utils/governance-provenance.d.ts +95 -0
- package/dist/utils/governance-provenance.d.ts.map +1 -0
- package/dist/utils/governance-provenance.js +187 -0
- package/dist/utils/governance-provenance.js.map +1 -0
- package/dist/utils/pilot-metrics.d.ts +46 -0
- package/dist/utils/pilot-metrics.d.ts.map +1 -0
- package/dist/utils/pilot-metrics.js +240 -0
- package/dist/utils/pilot-metrics.js.map +1 -0
- package/dist/utils/policy-compiler.d.ts +6 -0
- package/dist/utils/policy-compiler.d.ts.map +1 -1
- package/dist/utils/policy-compiler.js +20 -0
- package/dist/utils/policy-compiler.js.map +1 -1
- package/dist/utils/replay-runtime.d.ts +34 -0
- package/dist/utils/replay-runtime.d.ts.map +1 -1
- package/dist/utils/replay-runtime.js +207 -0
- package/dist/utils/replay-runtime.js.map +1 -1
- package/dist/workspace/cross-repo-graph.d.ts +111 -0
- package/dist/workspace/cross-repo-graph.d.ts.map +1 -0
- package/dist/workspace/cross-repo-graph.js +450 -0
- package/dist/workspace/cross-repo-graph.js.map +1 -0
- package/dist/workspace/federated-context.d.ts +144 -0
- package/dist/workspace/federated-context.d.ts.map +1 -0
- package/dist/workspace/federated-context.js +347 -0
- package/dist/workspace/federated-context.js.map +1 -0
- package/dist/workspace/index.d.ts +38 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +48 -0
- package/dist/workspace/index.js.map +1 -0
- package/package.json +10 -10
|
@@ -6,58 +6,122 @@ exports.generatePatchForSuggestion = generatePatchForSuggestion;
|
|
|
6
6
|
const patterns_1 = require("./patterns");
|
|
7
7
|
const generator_1 = require("./generator");
|
|
8
8
|
const diff_1 = require("./diff");
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
9
|
+
const transaction_1 = require("./transaction");
|
|
10
|
+
const safety_1 = require("./safety");
|
|
11
|
+
function scorePatchConfidence(kind) {
|
|
12
|
+
switch (kind) {
|
|
13
|
+
case 'missing_validation':
|
|
14
|
+
case 'missing_timeout_handling':
|
|
15
|
+
case 'unsafe_inner_html_usage':
|
|
16
|
+
return 'high';
|
|
17
|
+
case 'missing_auth_middleware':
|
|
18
|
+
case 'missing_rate_limiting':
|
|
19
|
+
case 'unsafe_fetch_without_retries':
|
|
20
|
+
case 'missing_idempotency_keys':
|
|
21
|
+
case 'unsafe_file_uploads':
|
|
22
|
+
case 'missing_token_expiry':
|
|
23
|
+
case 'unsafe_sensitive_logging':
|
|
24
|
+
return 'medium';
|
|
25
|
+
case 'db_in_ui':
|
|
26
|
+
case 'todo_fixme':
|
|
27
|
+
return 'low';
|
|
28
|
+
default:
|
|
29
|
+
return 'low';
|
|
30
30
|
}
|
|
31
|
-
if (changed > 5)
|
|
32
|
-
return false;
|
|
33
|
-
if (!PATCHABLE_PATTERN_RE.test(original))
|
|
34
|
-
return false;
|
|
35
|
-
return true;
|
|
36
31
|
}
|
|
37
|
-
function
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
function patchPriorityKinds() {
|
|
33
|
+
return [
|
|
34
|
+
'missing_validation',
|
|
35
|
+
'missing_timeout_handling',
|
|
36
|
+
'unsafe_fetch_without_retries',
|
|
37
|
+
'missing_idempotency_keys',
|
|
38
|
+
'unsafe_file_uploads',
|
|
39
|
+
'unsafe_inner_html_usage',
|
|
40
|
+
'missing_token_expiry',
|
|
41
|
+
'missing_auth_middleware',
|
|
42
|
+
'missing_rate_limiting',
|
|
43
|
+
'unsafe_sensitive_logging',
|
|
44
|
+
'db_in_ui',
|
|
45
|
+
'todo_fixme',
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
function buildPatchTokenPayload(input) {
|
|
49
|
+
return {
|
|
50
|
+
schemaVersion: 'neurcode.patch-preview-token.v1',
|
|
51
|
+
file: input.filePath,
|
|
52
|
+
createdAt: new Date().toISOString(),
|
|
53
|
+
beforeHash: input.beforeHash,
|
|
54
|
+
afterHash: input.afterHash,
|
|
55
|
+
diffHash: input.diffHash,
|
|
56
|
+
patchHash: input.patchHash,
|
|
57
|
+
patternKind: input.patternKind,
|
|
58
|
+
confidence: input.patchConfidence,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function buildPatchBundle(input) {
|
|
62
|
+
const generated = (0, generator_1.generatePatch)({
|
|
63
|
+
filePath: input.filePath,
|
|
64
|
+
issue: '',
|
|
65
|
+
policy: '',
|
|
66
|
+
fileContent: input.fileContent,
|
|
67
|
+
patternKind: input.patternKind,
|
|
68
|
+
});
|
|
69
|
+
if (!generated)
|
|
70
|
+
return null;
|
|
71
|
+
const diff = (0, diff_1.generateUnifiedDiff)(input.filePath, input.fileContent, generated.updatedContent);
|
|
72
|
+
if (!diff)
|
|
73
|
+
return null;
|
|
74
|
+
const patchConfidence = scorePatchConfidence(input.patternKind);
|
|
75
|
+
const validation = (0, safety_1.validatePatchCandidate)({
|
|
76
|
+
originalContent: input.fileContent,
|
|
77
|
+
updatedContent: generated.updatedContent,
|
|
78
|
+
diff,
|
|
79
|
+
kind: input.patternKind,
|
|
80
|
+
confidence: patchConfidence,
|
|
81
|
+
});
|
|
82
|
+
const beforeHash = (0, transaction_1.hashPatchValue)(input.fileContent);
|
|
83
|
+
const afterHash = (0, transaction_1.hashPatchValue)(generated.updatedContent);
|
|
84
|
+
const patchHash = (0, transaction_1.buildPatchHash)({
|
|
85
|
+
file: input.filePath,
|
|
86
|
+
beforeHash,
|
|
87
|
+
afterHash,
|
|
88
|
+
diffHash: validation.diffHash,
|
|
89
|
+
patternKind: input.patternKind,
|
|
90
|
+
});
|
|
91
|
+
const previewToken = (0, transaction_1.createPatchPreviewToken)(buildPatchTokenPayload({
|
|
92
|
+
filePath: input.filePath,
|
|
93
|
+
patternKind: input.patternKind,
|
|
94
|
+
patchConfidence,
|
|
95
|
+
beforeHash,
|
|
96
|
+
afterHash,
|
|
97
|
+
diffHash: validation.diffHash,
|
|
98
|
+
patchHash,
|
|
99
|
+
}));
|
|
100
|
+
return {
|
|
101
|
+
updatedContent: generated.updatedContent,
|
|
102
|
+
patternKind: input.patternKind,
|
|
103
|
+
patchConfidence,
|
|
104
|
+
diff,
|
|
105
|
+
validation,
|
|
106
|
+
previewToken,
|
|
107
|
+
patchHash,
|
|
108
|
+
recipe: generated.metadata,
|
|
109
|
+
beforeHash,
|
|
110
|
+
afterHash,
|
|
111
|
+
};
|
|
43
112
|
}
|
|
44
113
|
/**
|
|
45
114
|
* Apply a unified diff (as produced by generateUnifiedDiff) to fileContent.
|
|
46
115
|
*
|
|
47
|
-
* Parses
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* Returns null when:
|
|
51
|
-
* - no hunk header found
|
|
52
|
-
* - a context or removal line does not match current file content (file changed)
|
|
116
|
+
* Parses a single-hunk diff format, verifies every context/removal line matches
|
|
117
|
+
* the current file, then reconstructs updated content.
|
|
53
118
|
*/
|
|
54
119
|
function applyUnifiedDiff(fileContent, diff) {
|
|
55
120
|
if (!diff)
|
|
56
121
|
return null;
|
|
57
122
|
const diffLines = diff.split('\n');
|
|
58
|
-
// Locate the hunk header (skip --- / +++ file headers)
|
|
59
123
|
let hunkIdx = -1;
|
|
60
|
-
for (let i = 0; i < diffLines.length; i
|
|
124
|
+
for (let i = 0; i < diffLines.length; i += 1) {
|
|
61
125
|
if (diffLines[i].startsWith('@@')) {
|
|
62
126
|
hunkIdx = i;
|
|
63
127
|
break;
|
|
@@ -65,118 +129,101 @@ function applyUnifiedDiff(fileContent, diff) {
|
|
|
65
129
|
}
|
|
66
130
|
if (hunkIdx === -1)
|
|
67
131
|
return null;
|
|
68
|
-
// Parse @@ -oldStart[,oldCount] +newStart[,newCount] @@
|
|
69
132
|
const match = diffLines[hunkIdx].match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
|
|
70
133
|
if (!match)
|
|
71
134
|
return null;
|
|
72
|
-
// Diff uses 1-indexed lines; convert to 0-indexed
|
|
73
135
|
const origStart = parseInt(match[1], 10) - 1;
|
|
74
136
|
const origLines = fileContent.split('\n');
|
|
75
137
|
const output = [];
|
|
76
|
-
|
|
77
|
-
for (let i = 0; i < origStart; i++) {
|
|
138
|
+
for (let i = 0; i < origStart; i += 1) {
|
|
78
139
|
output.push(origLines[i] ?? '');
|
|
79
140
|
}
|
|
80
141
|
let origIdx = origStart;
|
|
81
|
-
for (let i = hunkIdx + 1; i < diffLines.length; i
|
|
142
|
+
for (let i = hunkIdx + 1; i < diffLines.length; i += 1) {
|
|
82
143
|
const line = diffLines[i];
|
|
83
|
-
// A trailing empty string from split('\n') signals end of diff
|
|
84
144
|
if (line.length === 0 && i === diffLines.length - 1)
|
|
85
145
|
break;
|
|
86
146
|
const prefix = line[0];
|
|
87
147
|
const content = line.slice(1);
|
|
88
148
|
if (prefix === ' ') {
|
|
89
|
-
// Context: must match current file — abort on mismatch (file changed)
|
|
90
149
|
if (origIdx >= origLines.length || origLines[origIdx] !== content)
|
|
91
150
|
return null;
|
|
92
151
|
output.push(content);
|
|
93
|
-
origIdx
|
|
152
|
+
origIdx += 1;
|
|
94
153
|
}
|
|
95
154
|
else if (prefix === '-') {
|
|
96
|
-
// Removal: must match current file — abort on mismatch
|
|
97
155
|
if (origIdx >= origLines.length || origLines[origIdx] !== content)
|
|
98
156
|
return null;
|
|
99
|
-
origIdx
|
|
157
|
+
origIdx += 1;
|
|
100
158
|
}
|
|
101
159
|
else if (prefix === '+') {
|
|
102
|
-
// Addition: inject into output without consuming original
|
|
103
160
|
output.push(content);
|
|
104
161
|
}
|
|
105
162
|
else {
|
|
106
|
-
break;
|
|
163
|
+
break;
|
|
107
164
|
}
|
|
108
165
|
}
|
|
109
|
-
// Copy remaining original lines after the hunk
|
|
110
166
|
while (origIdx < origLines.length) {
|
|
111
167
|
output.push(origLines[origIdx]);
|
|
112
|
-
origIdx
|
|
168
|
+
origIdx += 1;
|
|
113
169
|
}
|
|
114
170
|
return output.join('\n');
|
|
115
171
|
}
|
|
116
172
|
/**
|
|
117
|
-
*
|
|
118
|
-
* updated content. Tries patterns in priority order: db_in_ui → missing_validation
|
|
119
|
-
* → todo_fixme. Validates safety before returning.
|
|
173
|
+
* Deterministically build a patch bundle for the first matching remediation kind.
|
|
120
174
|
*
|
|
121
|
-
*
|
|
175
|
+
* Returns null when no deterministic recipe matches the target file.
|
|
122
176
|
*/
|
|
123
177
|
function applyFirstMatchingPatch(filePath, fileContent) {
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
const result = (0, generator_1.generatePatch)({
|
|
178
|
+
for (const kind of patchPriorityKinds()) {
|
|
179
|
+
const bundle = buildPatchBundle({
|
|
127
180
|
filePath,
|
|
128
|
-
issue: '',
|
|
129
|
-
policy: '',
|
|
130
181
|
fileContent,
|
|
131
182
|
patternKind: kind,
|
|
132
183
|
});
|
|
133
|
-
if (!
|
|
184
|
+
if (!bundle)
|
|
134
185
|
continue;
|
|
135
|
-
|
|
136
|
-
if (!diff)
|
|
137
|
-
continue;
|
|
138
|
-
if (!isPatchSafe(fileContent, result.updatedContent))
|
|
139
|
-
continue;
|
|
140
|
-
return {
|
|
141
|
-
updatedContent: result.updatedContent,
|
|
142
|
-
patternKind: kind,
|
|
143
|
-
patchConfidence: scorePatchConfidence(kind),
|
|
144
|
-
};
|
|
186
|
+
return bundle;
|
|
145
187
|
}
|
|
146
188
|
return null;
|
|
147
189
|
}
|
|
148
190
|
/**
|
|
149
|
-
*
|
|
150
|
-
* attempts to generate a deterministic, safety-validated code patch.
|
|
151
|
-
*
|
|
152
|
-
* Returns null when:
|
|
153
|
-
* - the violation type has no patchable pattern
|
|
154
|
-
* - the pattern is not found in the file content
|
|
155
|
-
* - the generated patch produces no diff
|
|
156
|
-
* - the patch fails the safety gate (isPatchSafe)
|
|
191
|
+
* Generate a deterministic patch for a specific verify/fix suggestion.
|
|
157
192
|
*/
|
|
158
193
|
function generatePatchForSuggestion(suggestion, fileContent) {
|
|
159
194
|
const kind = (0, patterns_1.classifyViolation)(suggestion.issue, suggestion.policy);
|
|
160
195
|
if (!kind)
|
|
161
196
|
return null;
|
|
162
|
-
const
|
|
197
|
+
const generated = (0, generator_1.generatePatch)({
|
|
163
198
|
filePath: suggestion.file,
|
|
164
199
|
issue: suggestion.issue,
|
|
165
200
|
policy: suggestion.policy,
|
|
166
201
|
fileContent,
|
|
167
202
|
patternKind: kind,
|
|
168
203
|
});
|
|
169
|
-
if (!
|
|
204
|
+
if (!generated)
|
|
170
205
|
return null;
|
|
171
|
-
const diff = (0, diff_1.generateUnifiedDiff)(suggestion.file, fileContent,
|
|
206
|
+
const diff = (0, diff_1.generateUnifiedDiff)(suggestion.file, fileContent, generated.updatedContent);
|
|
172
207
|
if (!diff)
|
|
173
208
|
return null;
|
|
174
|
-
|
|
209
|
+
const patchConfidence = scorePatchConfidence(kind);
|
|
210
|
+
const validation = (0, safety_1.validatePatchCandidate)({
|
|
211
|
+
originalContent: fileContent,
|
|
212
|
+
updatedContent: generated.updatedContent,
|
|
213
|
+
diff,
|
|
214
|
+
kind,
|
|
215
|
+
confidence: patchConfidence,
|
|
216
|
+
});
|
|
217
|
+
// Keep low-confidence / unsafe transforms out of auto-fix suggestions.
|
|
218
|
+
if (!validation.safe)
|
|
175
219
|
return null;
|
|
176
220
|
return {
|
|
177
221
|
file: suggestion.file,
|
|
178
222
|
diff,
|
|
179
|
-
patchConfidence
|
|
223
|
+
patchConfidence,
|
|
224
|
+
patternKind: kind,
|
|
225
|
+
validation,
|
|
226
|
+
recipe: generated.metadata,
|
|
180
227
|
};
|
|
181
228
|
}
|
|
182
229
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patch-engine/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patch-engine/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type PatternKind = 'db_in_ui' | 'missing_validation' | 'todo_fixme';
|
|
1
|
+
export type PatternKind = 'db_in_ui' | 'missing_validation' | 'todo_fixme' | 'missing_auth_middleware' | 'missing_role_checks' | 'unsafe_jwt_usage' | 'missing_token_expiry' | 'unsafe_secret_exposure' | 'insecure_cookie_configuration' | 'missing_csrf_protection' | 'missing_rate_limiting' | 'missing_try_catch' | 'missing_timeout_handling' | 'unsafe_fetch_without_retries' | 'missing_idempotency_keys' | 'unsafe_webhook_verification' | 'unsafe_serialization' | 'missing_transaction_wrappers' | 'unsafe_sql_string_concatenation' | 'unsafe_file_uploads' | 'missing_mime_validation' | 'missing_size_limits' | 'unsafe_path_traversal_usage' | 'dangerous_useeffect_cleanup' | 'missing_abort_controller_cleanup' | 'unsafe_inner_html_usage' | 'unhandled_promise_chains' | 'unsafe_websocket_lifecycle' | 'missing_audit_logs' | 'unsafe_sensitive_logging' | 'missing_error_boundaries' | 'missing_tracing_wrappers' | 'deprecated_package_migration_mappings' | 'unsafe_env_usage' | 'dangerous_hardcoded_credentials';
|
|
2
2
|
export declare function classifyViolation(issue: string, policy: string): PatternKind | null;
|
|
3
3
|
export declare function detectPattern(content: string, kind: PatternKind): number | null;
|
|
4
4
|
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/patch-engine/patterns.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/patch-engine/patterns.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,oBAAoB,GACpB,YAAY,GACZ,yBAAyB,GACzB,qBAAqB,GACrB,kBAAkB,GAClB,sBAAsB,GACtB,wBAAwB,GACxB,+BAA+B,GAC/B,yBAAyB,GACzB,uBAAuB,GACvB,mBAAmB,GACnB,0BAA0B,GAC1B,8BAA8B,GAC9B,0BAA0B,GAC1B,6BAA6B,GAC7B,sBAAsB,GACtB,8BAA8B,GAC9B,iCAAiC,GACjC,qBAAqB,GACrB,yBAAyB,GACzB,qBAAqB,GACrB,6BAA6B,GAC7B,6BAA6B,GAC7B,kCAAkC,GAClC,yBAAyB,GACzB,0BAA0B,GAC1B,4BAA4B,GAC5B,oBAAoB,GACpB,0BAA0B,GAC1B,0BAA0B,GAC1B,0BAA0B,GAC1B,uCAAuC,GACvC,kBAAkB,GAClB,iCAAiC,CAAC;AAiTtC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAwBnF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAgC/E"}
|