@intutic/sync-daemon 2.0.0 → 2.2.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/agentReporter.d.ts +5 -12
- package/dist/agentReporter.d.ts.map +1 -1
- package/dist/agentReporter.js +25 -4
- package/dist/agentReporter.js.map +1 -1
- package/dist/configReader.d.ts +44 -22
- package/dist/configReader.d.ts.map +1 -1
- package/dist/configReader.js +70 -44
- package/dist/configReader.js.map +1 -1
- package/dist/configWriter.d.ts +29 -41
- package/dist/configWriter.d.ts.map +1 -1
- package/dist/configWriter.js +28 -625
- package/dist/configWriter.js.map +1 -1
- package/dist/disconnect/harnesses.d.ts +31 -0
- package/dist/disconnect/harnesses.d.ts.map +1 -0
- package/dist/disconnect/harnesses.js +728 -0
- package/dist/disconnect/harnesses.js.map +1 -0
- package/dist/disconnect/index.d.ts +25 -0
- package/dist/disconnect/index.d.ts.map +1 -0
- package/dist/disconnect/index.js +82 -0
- package/dist/disconnect/index.js.map +1 -0
- package/dist/disconnect/mcp.d.ts +60 -0
- package/dist/disconnect/mcp.d.ts.map +1 -0
- package/dist/disconnect/mcp.js +283 -0
- package/dist/disconnect/mcp.js.map +1 -0
- package/dist/disconnect/originals.d.ts +88 -0
- package/dist/disconnect/originals.d.ts.map +1 -0
- package/dist/disconnect/originals.js +257 -0
- package/dist/disconnect/originals.js.map +1 -0
- package/dist/disconnect/plan.d.ts +175 -0
- package/dist/disconnect/plan.d.ts.map +1 -0
- package/dist/disconnect/plan.js +580 -0
- package/dist/disconnect/plan.js.map +1 -0
- package/dist/disconnect/recognise.d.ts +43 -0
- package/dist/disconnect/recognise.d.ts.map +1 -0
- package/dist/disconnect/recognise.js +98 -0
- package/dist/disconnect/recognise.js.map +1 -0
- package/dist/disconnect/tomlLines.d.ts +39 -0
- package/dist/disconnect/tomlLines.d.ts.map +1 -0
- package/dist/disconnect/tomlLines.js +105 -0
- package/dist/disconnect/tomlLines.js.map +1 -0
- package/dist/harness/aiderConfigMerger.d.ts +42 -5
- package/dist/harness/aiderConfigMerger.d.ts.map +1 -1
- package/dist/harness/aiderConfigMerger.js +113 -86
- package/dist/harness/aiderConfigMerger.js.map +1 -1
- package/dist/harness/antigravityHooks.d.ts +13 -8
- package/dist/harness/antigravityHooks.d.ts.map +1 -1
- package/dist/harness/antigravityHooks.js +53 -39
- package/dist/harness/antigravityHooks.js.map +1 -1
- package/dist/harness/claudeCodeHooks.d.ts +1 -2
- package/dist/harness/claudeCodeHooks.d.ts.map +1 -1
- package/dist/harness/claudeCodeHooks.js +61 -34
- package/dist/harness/claudeCodeHooks.js.map +1 -1
- package/dist/harness/claudeDesktopHooks.d.ts +3 -0
- package/dist/harness/claudeDesktopHooks.d.ts.map +1 -1
- package/dist/harness/claudeDesktopHooks.js +3 -1
- package/dist/harness/claudeDesktopHooks.js.map +1 -1
- package/dist/harness/claudeProjectApproval.d.ts +53 -0
- package/dist/harness/claudeProjectApproval.d.ts.map +1 -0
- package/dist/harness/claudeProjectApproval.js +159 -0
- package/dist/harness/claudeProjectApproval.js.map +1 -0
- package/dist/harness/clineHooks.d.ts +39 -9
- package/dist/harness/clineHooks.d.ts.map +1 -1
- package/dist/harness/clineHooks.js +142 -60
- package/dist/harness/clineHooks.js.map +1 -1
- package/dist/harness/codexConfigMerger.d.ts +38 -0
- package/dist/harness/codexConfigMerger.d.ts.map +1 -0
- package/dist/harness/codexConfigMerger.js +105 -0
- package/dist/harness/codexConfigMerger.js.map +1 -0
- package/dist/harness/codexHooks.d.ts +4 -2
- package/dist/harness/codexHooks.d.ts.map +1 -1
- package/dist/harness/codexHooks.js +14 -11
- package/dist/harness/codexHooks.js.map +1 -1
- package/dist/harness/continueConfigMerger.d.ts +46 -0
- package/dist/harness/continueConfigMerger.d.ts.map +1 -0
- package/dist/harness/continueConfigMerger.js +94 -0
- package/dist/harness/continueConfigMerger.js.map +1 -0
- package/dist/harness/continueHooks.d.ts +15 -25
- package/dist/harness/continueHooks.d.ts.map +1 -1
- package/dist/harness/continueHooks.js +25 -119
- package/dist/harness/continueHooks.js.map +1 -1
- package/dist/harness/cursorHooks.d.ts +33 -16
- package/dist/harness/cursorHooks.d.ts.map +1 -1
- package/dist/harness/cursorHooks.js +69 -25
- package/dist/harness/cursorHooks.js.map +1 -1
- package/dist/harness/dshHooks.d.ts +59 -52
- package/dist/harness/dshHooks.d.ts.map +1 -1
- package/dist/harness/dshHooks.js +152 -147
- package/dist/harness/dshHooks.js.map +1 -1
- package/dist/harness/gateBody.d.ts +11 -2
- package/dist/harness/gateBody.d.ts.map +1 -1
- package/dist/harness/gateBody.js +33 -6
- package/dist/harness/gateBody.js.map +1 -1
- package/dist/harness/gateKind.d.ts.map +1 -1
- package/dist/harness/gateKind.js +1 -0
- package/dist/harness/gateKind.js.map +1 -1
- package/dist/harness/githubCopilotHooks.d.ts.map +1 -1
- package/dist/harness/githubCopilotHooks.js +5 -10
- package/dist/harness/githubCopilotHooks.js.map +1 -1
- package/dist/harness/gooseHooks.d.ts +15 -0
- package/dist/harness/gooseHooks.d.ts.map +1 -1
- package/dist/harness/gooseHooks.js +55 -43
- package/dist/harness/gooseHooks.js.map +1 -1
- package/dist/harness/grokHooks.d.ts.map +1 -1
- package/dist/harness/grokHooks.js +14 -12
- package/dist/harness/grokHooks.js.map +1 -1
- package/dist/harness/hermesHooks.d.ts +9 -0
- package/dist/harness/hermesHooks.d.ts.map +1 -1
- package/dist/harness/hermesHooks.js +39 -33
- package/dist/harness/hermesHooks.js.map +1 -1
- package/dist/harness/holdRedaction.d.ts +4 -1
- package/dist/harness/holdRedaction.d.ts.map +1 -1
- package/dist/harness/holdRedaction.js +32 -8
- package/dist/harness/holdRedaction.js.map +1 -1
- package/dist/harness/jetbrainsXmlConfig.d.ts +20 -0
- package/dist/harness/jetbrainsXmlConfig.d.ts.map +1 -1
- package/dist/harness/jetbrainsXmlConfig.js +39 -18
- package/dist/harness/jetbrainsXmlConfig.js.map +1 -1
- package/dist/harness/jsonMergeTarget.d.ts +23 -0
- package/dist/harness/jsonMergeTarget.d.ts.map +1 -0
- package/dist/harness/jsonMergeTarget.js +50 -0
- package/dist/harness/jsonMergeTarget.js.map +1 -0
- package/dist/harness/mcpAutoWrite.d.ts +64 -20
- package/dist/harness/mcpAutoWrite.d.ts.map +1 -1
- package/dist/harness/mcpAutoWrite.js +429 -85
- package/dist/harness/mcpAutoWrite.js.map +1 -1
- package/dist/harness/museHooks.d.ts.map +1 -1
- package/dist/harness/museHooks.js +6 -2
- package/dist/harness/museHooks.js.map +1 -1
- package/dist/harness/n8nHooks.d.ts.map +1 -1
- package/dist/harness/n8nHooks.js +6 -7
- package/dist/harness/n8nHooks.js.map +1 -1
- package/dist/harness/openCodeHooks.d.ts +37 -6
- package/dist/harness/openCodeHooks.d.ts.map +1 -1
- package/dist/harness/openCodeHooks.js +103 -13
- package/dist/harness/openCodeHooks.js.map +1 -1
- package/dist/harness/openWebuiHooks.d.ts.map +1 -1
- package/dist/harness/openWebuiHooks.js +10 -5
- package/dist/harness/openWebuiHooks.js.map +1 -1
- package/dist/harness/openclawHooks.d.ts +5 -0
- package/dist/harness/openclawHooks.d.ts.map +1 -1
- package/dist/harness/openclawHooks.js +3 -1
- package/dist/harness/openclawHooks.js.map +1 -1
- package/dist/harness/openhandsHooks.d.ts +26 -1
- package/dist/harness/openhandsHooks.d.ts.map +1 -1
- package/dist/harness/openhandsHooks.js +160 -40
- package/dist/harness/openhandsHooks.js.map +1 -1
- package/dist/harness/piHooks.d.ts +17 -0
- package/dist/harness/piHooks.d.ts.map +1 -1
- package/dist/harness/piHooks.js +31 -29
- package/dist/harness/piHooks.js.map +1 -1
- package/dist/harness/protectedPaths.d.ts +64 -6
- package/dist/harness/protectedPaths.d.ts.map +1 -1
- package/dist/harness/protectedPaths.js +161 -11
- package/dist/harness/protectedPaths.js.map +1 -1
- package/dist/harness/rooCodeHooks.d.ts.map +1 -1
- package/dist/harness/rooCodeHooks.js +5 -10
- package/dist/harness/rooCodeHooks.js.map +1 -1
- package/dist/harness/windsurfHooks.d.ts +21 -3
- package/dist/harness/windsurfHooks.d.ts.map +1 -1
- package/dist/harness/windsurfHooks.js +96 -44
- package/dist/harness/windsurfHooks.js.map +1 -1
- package/dist/harness/windsurfJetBrainsProxy.d.ts +10 -7
- package/dist/harness/windsurfJetBrainsProxy.d.ts.map +1 -1
- package/dist/harness/windsurfJetBrainsProxy.js +22 -7
- package/dist/harness/windsurfJetBrainsProxy.js.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/decisionsDigest.d.ts +1 -1
- package/dist/lib/decisionsDigest.js +1 -1
- package/dist/lib/policySnapshot.d.ts +37 -0
- package/dist/lib/policySnapshot.d.ts.map +1 -1
- package/dist/lib/policySnapshot.js +170 -8
- package/dist/lib/policySnapshot.js.map +1 -1
- package/dist/sessionReporter.d.ts +2 -2
- package/dist/sessionReporter.js +2 -2
- package/dist/syncCycle.d.ts +142 -0
- package/dist/syncCycle.d.ts.map +1 -0
- package/dist/syncCycle.js +315 -0
- package/dist/syncCycle.js.map +1 -0
- package/dist/trajectoryMonitor.d.ts +1 -1
- package/dist/trajectoryMonitor.d.ts.map +1 -1
- package/dist/trajectoryMonitor.js +1 -1
- package/dist/trajectoryMonitor.js.map +1 -1
- package/dist/watcher/settingsGuard.d.ts +4 -1
- package/dist/watcher/settingsGuard.d.ts.map +1 -1
- package/dist/watcher/settingsGuard.js +42 -18
- package/dist/watcher/settingsGuard.js.map +1 -1
- package/package.json +6 -6
- package/dist/hashReporter.d.ts +0 -33
- package/dist/hashReporter.d.ts.map +0 -1
- package/dist/hashReporter.js +0 -69
- package/dist/hashReporter.js.map +0 -1
- package/dist/integrityStore.d.ts +0 -35
- package/dist/integrityStore.d.ts.map +0 -1
- package/dist/integrityStore.js +0 -71
- package/dist/integrityStore.js.map +0 -1
- package/dist/lib/gitWorktrees.d.ts +0 -140
- package/dist/lib/gitWorktrees.d.ts.map +0 -1
- package/dist/lib/gitWorktrees.js +0 -191
- package/dist/lib/gitWorktrees.js.map +0 -1
- package/dist/syncLoop.d.ts +0 -172
- package/dist/syncLoop.d.ts.map +0 -1
- package/dist/syncLoop.js +0 -878
- package/dist/syncLoop.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protectedPaths.d.ts","sourceRoot":"","sources":["../../src/harness/protectedPaths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAIH,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"protectedPaths.d.ts","sourceRoot":"","sources":["../../src/harness/protectedPaths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAIH,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAuEtD,CAAA;AAMD;;;;;;;GAOG;AACH;;;;;;;;;GASG;AACH;;0DAE0D;AAC1D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEvF,MAAM,WAAW,YAAY;IAC3B;4EACwE;IACxE,EAAE,EAAE,MAAM,CAAA;IACV,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;IACd;;;;;6BAKyB;IACzB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC9C;wDACoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd;;2BAEuB;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,gCAAgC;IAChC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B;;;yCAGqC;IACrC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAoCD,eAAO,MAAM,kBAAkB;IAC7B;;;;;;OAMG;iBACqD,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM;IAE9E,oEAAoE;;IAGpE;;;;;;;;;;;;;OAaG;IACH,8DAA8D;;IAM9D;;;;;;;;;;;OAWG;;CASK,CAAA;AAEV;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CA2BlE;AA0CD;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,YAAY,EAyD5D,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,YAAY,EAyG1D,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,YAAY,EA+CxD,CAAA;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAgC1D;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,YAAY,EAsBzD,CAAA;AAiCD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,YAAY,EAoJ/D,CAAA;AA2CD,wBAAgB,0BAA0B,IAAI,SAAS,YAAY,EAAE,CAEpE;AAED;;;;;;;;;;kBAUkB;AAClB,wBAAgB,mBAAmB,IAAI,SAAS,YAAY,EAAE,CAO7D"}
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
*
|
|
61
61
|
* @module
|
|
62
62
|
*/
|
|
63
|
-
import { SECRET_VALUE_PATTERNS } from '@intutic/shared-types';
|
|
63
|
+
import { SECRET_VALUE_PATTERNS, SKILL_CONTENT_BLOCK_PATTERN_IDS, SKILL_SCAN_PATTERNS } from '@intutic/shared-types';
|
|
64
64
|
/** Governance config that must hold still, for every harness. */
|
|
65
65
|
export const UNIVERSAL_PROTECTED_PATHS = [
|
|
66
66
|
// Intutic's own enforcement surface.
|
|
@@ -110,9 +110,15 @@ export const UNIVERSAL_PROTECTED_PATHS = [
|
|
|
110
110
|
// directory (every profile's cordis.patch.yml, not just one), the same
|
|
111
111
|
// "the surface, not the one file" discipline `.grok/hooks` above uses —
|
|
112
112
|
// dsh may have zero, one, or several profiles, and a tamper anywhere under
|
|
113
|
-
// it is the same threat. `.dsh/
|
|
114
|
-
//
|
|
113
|
+
// it is the same threat. `.dsh/cordis.patch.yml` is the home-level patch
|
|
114
|
+
// layer, applied AFTER every profile's own (dsh 0.2 `dsh-app-boot`: "the
|
|
115
|
+
// home-level file ... outranks it") — one `{ id: intutic-governance,
|
|
116
|
+
// disabled: true }` or `llm-deepseek` row there overrides both halves this
|
|
117
|
+
// writer puts in the profile files. `.dsh/settings.yaml` is no longer
|
|
118
|
+
// written, but dsh 0.2 still imports a leftover one into the next profile
|
|
119
|
+
// that boots, so it remains a way to rewrite the egress row.
|
|
115
120
|
'.dsh/profiles',
|
|
121
|
+
'.dsh/cordis.patch.yml',
|
|
116
122
|
'.dsh/settings.yaml',
|
|
117
123
|
// OpenCode — the plugin directories OpenCode globs (`.opencode/plugin` and
|
|
118
124
|
// `.opencode/plugins` are both read; only the latter is written) plus the
|
|
@@ -532,12 +538,9 @@ export const SECRET_CONTENT_PATTERNS = assertGuardTableSane((() => {
|
|
|
532
538
|
* exists to flag — narrower than `UNIVERSAL_PROTECTED_PATHS`'s "any mention"
|
|
533
539
|
* rule on purpose, since that rule blocks and this one only advises.
|
|
534
540
|
*
|
|
535
|
-
*
|
|
536
|
-
*
|
|
537
|
-
*
|
|
538
|
-
* same policy-snapshot channel the way this path-tier promotion and
|
|
539
|
-
* `DESTRUCTIVE_COMMAND_PATTERNS` both do, so it too is retractable in a sync
|
|
540
|
-
* cycle rather than a release if the measurement turns out wrong.
|
|
541
|
+
* Blocking on skill CONTENT (not path) is a separate table,
|
|
542
|
+
* {@link SKILL_CONTENT_PATTERNS}, licensed by the benign-corpus measurement
|
|
543
|
+
* TD-358 asked for and shipped only through the policy snapshot.
|
|
541
544
|
*/
|
|
542
545
|
export const SKILL_SURFACE_PATTERNS = assertGuardTableSane([
|
|
543
546
|
{
|
|
@@ -583,6 +586,152 @@ export const SKILL_SURFACE_PATTERNS = assertGuardTableSane([
|
|
|
583
586
|
],
|
|
584
587
|
},
|
|
585
588
|
]);
|
|
589
|
+
/**
|
|
590
|
+
* Rewrites a case-insensitive JS `RegExp` source into a case-SENSITIVE one that
|
|
591
|
+
* means the same thing in JS and Python `re`, for use as an `argPattern`.
|
|
592
|
+
*
|
|
593
|
+
* Why: an `argPattern` is compiled with no flags by every gate family
|
|
594
|
+
* (`new RegExp(p)` in the JS gates, `re.compile(p)` in the bash gates'
|
|
595
|
+
* python3 helper), and there is no inline case-insensitive flag both engines
|
|
596
|
+
* accept — JS rejects a leading `(?i)`. The `skillScan.ts` patterns are matched
|
|
597
|
+
* case-insensitively, so each ASCII letter becomes `[xX]`.
|
|
598
|
+
*
|
|
599
|
+
* Also rewrites `\s` outside a character class to `(?:\s|\\[nrt])`. An
|
|
600
|
+
* argPattern sees `JSON.stringify(tool_input)`, where a newline in the content
|
|
601
|
+
* is the two characters `\n`; without this, `do not\ntell the user` would stop
|
|
602
|
+
* matching the moment the words wrap. Known residual gap: a `\b` directly after
|
|
603
|
+
* such an escape sees `n` as a word character, so a few line-wrapped phrasings
|
|
604
|
+
* still slip. That costs recall, not precision.
|
|
605
|
+
*
|
|
606
|
+
* Throws on a letter range inside a class (`[a-z]`). None of the scan patterns
|
|
607
|
+
* has one, and folding one correctly is more code than the case deserves.
|
|
608
|
+
*/
|
|
609
|
+
export function caseFoldedArgSource(source) {
|
|
610
|
+
let out = '';
|
|
611
|
+
let inClass = false;
|
|
612
|
+
for (let i = 0; i < source.length; i++) {
|
|
613
|
+
const c = source[i];
|
|
614
|
+
if (c === '\\') {
|
|
615
|
+
const next = source[i + 1] ?? '';
|
|
616
|
+
out += !inClass && next === 's' ? '(?:\\s|\\\\[nrt])' : c + next;
|
|
617
|
+
i++;
|
|
618
|
+
continue;
|
|
619
|
+
}
|
|
620
|
+
const isLetter = /[A-Za-z]/.test(c);
|
|
621
|
+
if (inClass) {
|
|
622
|
+
if (c === ']')
|
|
623
|
+
inClass = false;
|
|
624
|
+
if (isLetter && (source[i + 1] === '-' || source[i - 1] === '-')) {
|
|
625
|
+
throw new Error(`caseFoldedArgSource: letter range in a character class is not supported: ${source}`);
|
|
626
|
+
}
|
|
627
|
+
out += isLetter ? c.toLowerCase() + c.toUpperCase() : c;
|
|
628
|
+
continue;
|
|
629
|
+
}
|
|
630
|
+
if (c === '[') {
|
|
631
|
+
inClass = true;
|
|
632
|
+
out += c;
|
|
633
|
+
if (source[i + 1] === '^') {
|
|
634
|
+
out += '^';
|
|
635
|
+
i++;
|
|
636
|
+
}
|
|
637
|
+
continue;
|
|
638
|
+
}
|
|
639
|
+
out += isLetter ? `[${c.toLowerCase()}${c.toUpperCase()}]` : c;
|
|
640
|
+
}
|
|
641
|
+
return out;
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* The JSON keys whose string value is content being WRITTEN, across the
|
|
645
|
+
* harnesses' write and edit tools: `content` (Write, write_file, write_to_file,
|
|
646
|
+
* OpenCode write), `new_string` / `newString` (Edit, MultiEdit's `edits[]`,
|
|
647
|
+
* OpenCode edit), `new_str` / `file_text` (str_replace_editor). `old_string`
|
|
648
|
+
* is left out on purpose: an edit that REMOVES a poisoned line is the fix, not
|
|
649
|
+
* the attack. Diff-shaped editors (`apply_patch`, Cline's `replace_in_file`)
|
|
650
|
+
* carry old and new text in one field and are not covered.
|
|
651
|
+
*/
|
|
652
|
+
const WRITTEN_CONTENT_KEYS = ['content', 'new_string', 'newString', 'new_str', 'file_text'];
|
|
653
|
+
/**
|
|
654
|
+
* Skill-CONTENT block tier (TD-358): a write into a skill directory whose
|
|
655
|
+
* written text matches one of the `skillScan.ts` patterns measured at zero
|
|
656
|
+
* false positives on the benign-skill corpus (`SKILL_CONTENT_BLOCK_PATTERN_IDS`;
|
|
657
|
+
* `packages/shared-types/src/__tests__/corpus/skills/`, 350 real skills).
|
|
658
|
+
* `read-sensitive-path` fired on 11 of them and is not here.
|
|
659
|
+
*
|
|
660
|
+
* Each rule is two conditions, which a GuardPattern can express: `source`
|
|
661
|
+
* matches the write's target path against the skill surface (subject
|
|
662
|
+
* `target`, as in {@link SKILL_SURFACE_PATTERNS}), and `argPattern`, which
|
|
663
|
+
* every gate family already evaluates for SOP WHERE clauses, matches the
|
|
664
|
+
* pattern inside the value of a {@link WRITTEN_CONTENT_KEYS} key of the
|
|
665
|
+
* serialized tool input.
|
|
666
|
+
*
|
|
667
|
+
* **Snapshot-only, never in `staticFloorPatterns()`**, as TD-358 required: a
|
|
668
|
+
* content judgement ships where one sync cycle retracts it
|
|
669
|
+
* (`SKILL_CONTENT_TIER_SEVERITY` in `lib/policySnapshot.ts`). The table's own
|
|
670
|
+
* `warn` is a placeholder the snapshot builder always overrides.
|
|
671
|
+
*
|
|
672
|
+
* **What it adds over the path tier.** In steady state
|
|
673
|
+
* `skill_surface.*.tier` already refuses every write under a skill directory,
|
|
674
|
+
* so today this tier mostly changes the reason the developer reads. It
|
|
675
|
+
* becomes the only refusal if the path tier is retracted to `warn`. That
|
|
676
|
+
* independence is the point: the blanket path block and the narrow content
|
|
677
|
+
* block can each be retracted without the other. One exception: the
|
|
678
|
+
* `@intutic/gate-js` and `intutic-clawde` snapshot readers do not read the
|
|
679
|
+
* `.rules` argPattern column (true of every WHERE rule shipped this way), so
|
|
680
|
+
* in those two the content rules act as path-only blocks — the same calls
|
|
681
|
+
* `skill_surface.*.tier` already refuses. Retracting only the path tier would
|
|
682
|
+
* not unblock benign skill writes there; flip both constants.
|
|
683
|
+
*
|
|
684
|
+
* **What it does not catch.** A write through a shell redirect or heredoc
|
|
685
|
+
* (`cat > .claude/skills/x/SKILL.md`). `subject: 'command'` cannot tell that
|
|
686
|
+
* from a `grep '<system>' .claude/skills/`, and the corpus measured skill
|
|
687
|
+
* files, not commands. It also misses diff-shaped editors (see
|
|
688
|
+
* {@link WRITTEN_CONTENT_KEYS}), symlinked or relative-walk targets (the same
|
|
689
|
+
* limits as the path tier), and some line-wrapped phrasings (see
|
|
690
|
+
* {@link caseFoldedArgSource}).
|
|
691
|
+
*/
|
|
692
|
+
export const SKILL_CONTENT_PATTERNS = assertGuardTableSane(SKILL_CONTENT_BLOCK_PATTERN_IDS.map((id) => {
|
|
693
|
+
const scan = SKILL_SCAN_PATTERNS.find((p) => p.id === id);
|
|
694
|
+
const argPattern = `"(?:${WRITTEN_CONTENT_KEYS.join('|')})":"(?:[^"\\\\]|\\\\.)*?(?:${caseFoldedArgSource(scan.source)})`;
|
|
695
|
+
assertSkillContentArgSane(id, argPattern, scan.matches, scan.notMatches);
|
|
696
|
+
return {
|
|
697
|
+
id: `skill_content.${id}`,
|
|
698
|
+
source: '\\.(agents|claude)/skills/',
|
|
699
|
+
subject: 'target',
|
|
700
|
+
severity: 'warn',
|
|
701
|
+
reason: `Write into a skill file contains a ${scan.category.replace('_', ' ')} pattern ` +
|
|
702
|
+
`(${id}): ${scan.description}`,
|
|
703
|
+
rationale: 'See SKILL_CONTENT_PATTERNS. Zero hits on the 350-skill benign corpus licenses the block; ' +
|
|
704
|
+
'shell-redirect writes, diff-shaped editors and symlinked targets are not caught.',
|
|
705
|
+
matches: [' .claude/skills/x/SKILL.md ', ' /w/.agents/skills/y/SKILL.md '],
|
|
706
|
+
notMatches: [' src/skills/x.md ', ' .claude/settings.json ', ' README.md '],
|
|
707
|
+
argPattern,
|
|
708
|
+
};
|
|
709
|
+
}));
|
|
710
|
+
/**
|
|
711
|
+
* The argPattern half of {@link SKILL_CONTENT_PATTERNS}' fixture contract,
|
|
712
|
+
* which `assertGuardTableSane` does not check: every one of the scan pattern's
|
|
713
|
+
* own `matches` must fire when written as `content`, in either case, and none
|
|
714
|
+
* of its `notMatches` may. The same text as `old_string` must NOT fire.
|
|
715
|
+
*/
|
|
716
|
+
function assertSkillContentArgSane(id, argPattern, matches, notMatches) {
|
|
717
|
+
const re = new RegExp(argPattern);
|
|
718
|
+
const target = '/w/.claude/skills/x/SKILL.md';
|
|
719
|
+
for (const m of matches) {
|
|
720
|
+
for (const v of [m, m.toUpperCase(), m.toLowerCase()]) {
|
|
721
|
+
if (!re.test(JSON.stringify({ file_path: target, content: v }))) {
|
|
722
|
+
throw new Error(`SKILL_CONTENT_PATTERNS ${id}: argPattern misses declared match ${JSON.stringify(v)}`);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
if (re.test(JSON.stringify({ file_path: target, old_string: m, new_string: 'fixed' }))) {
|
|
726
|
+
throw new Error(`SKILL_CONTENT_PATTERNS ${id}: argPattern fires on old_string — removing the line would be refused`);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
for (const nm of notMatches) {
|
|
730
|
+
if (re.test(JSON.stringify({ file_path: target, content: nm }))) {
|
|
731
|
+
throw new Error(`SKILL_CONTENT_PATTERNS ${id}: argPattern matches declared notMatch ${JSON.stringify(nm)}`);
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
}
|
|
586
735
|
/**
|
|
587
736
|
* Commands that destroy the machine or its data irrecoverably.
|
|
588
737
|
*
|
|
@@ -727,8 +876,9 @@ export const DESTRUCTIVE_COMMAND_PATTERNS = assertGuardTableSane(
|
|
|
727
876
|
rationale: 'Demoted from the hook gate\'s hard block. Against a local development ' +
|
|
728
877
|
'database this is what a migration looks like, and the gate cannot tell a ' +
|
|
729
878
|
'dev DSN from a production one — the proxy can, and that is where a block ' +
|
|
730
|
-
'belongs
|
|
731
|
-
'
|
|
879
|
+
'belongs: a SOP declaring `sql_guard:` with an `sql_allow_dsns:` allowlist ' +
|
|
880
|
+
'refuses it at the LLM proxy (packages/proxy/src/plugins/sql_guard.rs). ' +
|
|
881
|
+
'Warn keeps the signal without owning a decision it lacks the context to make.',
|
|
732
882
|
matches: [' DROP TABLE users ', ' drop database app ', ' TRUNCATE TABLE events '],
|
|
733
883
|
notMatches: [' SELECT * FROM users ', ' echo drop it ', ' git stash drop '],
|
|
734
884
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protectedPaths.js","sourceRoot":"","sources":["../../src/harness/protectedPaths.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protectedPaths.js","sourceRoot":"","sources":["../../src/harness/protectedPaths.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rooCodeHooks.d.ts","sourceRoot":"","sources":["../../src/harness/rooCodeHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"rooCodeHooks.d.ts","sourceRoot":"","sources":["../../src/harness/rooCodeHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAsNH;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,SAAK,GACf,OAAO,CAAC,IAAI,CAAC,CAiEf"}
|
|
@@ -19,6 +19,7 @@ import * as fs from 'node:fs/promises';
|
|
|
19
19
|
import * as path from 'node:path';
|
|
20
20
|
import * as os from 'node:os';
|
|
21
21
|
import { createLogger } from '@intutic/logger';
|
|
22
|
+
import { keepOriginal, writeOwnedFile } from '../disconnect/originals.js';
|
|
22
23
|
import { newIso } from '@intutic/id';
|
|
23
24
|
import { emitJsGate, emitJsFailClosedPrelude } from './gateBody.js';
|
|
24
25
|
import { UNIVERSAL_PROTECTED_PATHS } from './protectedPaths.js';
|
|
@@ -231,6 +232,7 @@ export async function writeRooCodeHooks(workspaceRoot, proxyUrl, workspaceId = '
|
|
|
231
232
|
const hookEventsDir = path.join(workspaceRoot, '.intutic', 'events');
|
|
232
233
|
const rooRulesDir = path.join(workspaceRoot, '.roorules');
|
|
233
234
|
const rooHooksDir = path.join(rooRulesDir, 'hooks');
|
|
235
|
+
await keepOriginal(path.join(rooHooksDir, 'hooks.json'), workspaceRoot);
|
|
234
236
|
await Promise.all([
|
|
235
237
|
fs.mkdir(hookScriptDir, { recursive: true }),
|
|
236
238
|
fs.mkdir(hookEventsDir, { recursive: true }),
|
|
@@ -256,15 +258,10 @@ export async function writeRooCodeHooks(workspaceRoot, proxyUrl, workspaceId = '
|
|
|
256
258
|
}
|
|
257
259
|
if (rooRulesIsDir) {
|
|
258
260
|
// Write README.md inside the directory
|
|
259
|
-
|
|
260
|
-
const tmpReadme = readmePath + '.intutic-tmp';
|
|
261
|
-
await fs.writeFile(tmpReadme, buildRooRulesContent(), 'utf-8');
|
|
262
|
-
await fs.rename(tmpReadme, readmePath);
|
|
261
|
+
await writeOwnedFile(path.join(rooRulesPath, 'README.md'), workspaceRoot, buildRooRulesContent());
|
|
263
262
|
}
|
|
264
263
|
else {
|
|
265
|
-
|
|
266
|
-
await fs.writeFile(tmpRooRules, buildRooRulesContent(), 'utf-8');
|
|
267
|
-
await fs.rename(tmpRooRules, rooRulesPath);
|
|
264
|
+
await writeOwnedFile(rooRulesPath, workspaceRoot, buildRooRulesContent());
|
|
268
265
|
}
|
|
269
266
|
log.info({ action: 'roo_rules_written' }, 'Roo Code .roorules written');
|
|
270
267
|
// ── 4. Write .roorules/hooks/hooks.json (atomic) ──────────────────────────
|
|
@@ -278,9 +275,7 @@ export async function writeRooCodeHooks(workspaceRoot, proxyUrl, workspaceId = '
|
|
|
278
275
|
},
|
|
279
276
|
],
|
|
280
277
|
};
|
|
281
|
-
|
|
282
|
-
await fs.writeFile(tmpHooksJson, JSON.stringify(hooksConfig, null, 2) + '\n', 'utf-8');
|
|
283
|
-
await fs.rename(tmpHooksJson, hooksJsonPath);
|
|
278
|
+
await writeOwnedFile(hooksJsonPath, workspaceRoot, JSON.stringify(hooksConfig, null, 2) + '\n');
|
|
284
279
|
log.info({ action: 'roo_hooks_json_written', path: hooksJsonPath }, 'Roo Code hooks.json written');
|
|
285
280
|
}
|
|
286
281
|
//# sourceMappingURL=rooCodeHooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rooCodeHooks.js","sourceRoot":"","sources":["../../src/harness/rooCodeHooks.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rooCodeHooks.js","sourceRoot":"","sources":["../../src/harness/rooCodeHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAE/D,MAAM,GAAG,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAA;AAE/C,8DAA8D;AAE9D,iFAAiF;AAEjF,SAAS,mBAAmB,CAC1B,QAAgB,EAChB,aAAqB,EACrB,WAAmB;IAEnB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAA;IAC7F,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;IAEhF,OAAO;;;;;;;;;;;YAWG,QAAQ;gBACJ,MAAM,EAAE;gBACR,WAAW;;;EAGzB,uBAAuB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;;;;;;;;;2BASlD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;;;;;;4BAM7B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;EAiBrD,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;;;0BAGtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyGtD,CAAC,IAAI,EAAE,CAAA;AACR,CAAC;AAED,iFAAiF;AAEjF,SAAS,oBAAoB;IAC3B,OAAO;QACL,6CAA6C;QAC7C,gDAAgD;QAChD,gBAAgB,MAAM,EAAE,EAAE;QAC1B,EAAE;QACF,4BAA4B;QAC5B,EAAE;QACF,6EAA6E;QAC7E,6EAA6E;QAC7E,wBAAwB;QACxB,EAAE;QACF,qBAAqB;QACrB,EAAE;QACF,wDAAwD;QACxD,EAAE;QACF,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QACrD,EAAE;QACF,iBAAiB;QACjB,EAAE;QACF,2EAA2E;QAC3E,gEAAgE;QAChE,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,iFAAiF;AAEjF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,aAAqB,EACrB,QAAgB,EAChB,WAAW,GAAG,EAAE;IAEhB,8EAA8E;IAE9E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACnE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IAEnD,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,CAAA;IACvE,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC5C,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC5C,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAC3C,CAAC,CAAA;IAEF,6EAA6E;IAE7E,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;IAC/D,MAAM,SAAS,GAAG,cAAc,GAAG,cAAc,CAAA;IACjD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAA;IACjG,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAE1C,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,8BAA8B,CAAC,CAAA;IAErG,6EAA6E;IAE7E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IAC1D,yEAAyE;IACzE,iEAAiE;IACjE,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,uCAAuC;QACvC,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC,CAAA;IACnG,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,4BAA4B,CAAC,CAAA;IAEvE,6EAA6E;IAE7E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IAC1D,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,QAAQ,cAAc,EAAE;aAClC;SACF;KACF,CAAA;IAED,MAAM,cAAc,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAE/F,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,aAAa,EAAE,EACzD,6BAA6B,CAC9B,CAAA;AACH,CAAC"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* (.windsurf/hooks.json) governance hooks using the Windsurf Cascade
|
|
6
6
|
* hook system (exit code 2 = block).
|
|
7
7
|
*
|
|
8
|
-
* Also writes the proxy settings into
|
|
9
|
-
* so that Windsurf routes HTTP traffic through the
|
|
8
|
+
* Also writes the proxy settings into Windsurf's user settings.json (see
|
|
9
|
+
* `windsurfSettingsPath`) so that Windsurf routes HTTP traffic through the
|
|
10
|
+
* Intutic TLS MITM proxy,
|
|
10
11
|
* enabling governance of Cascade AI traffic that has no native base URL override.
|
|
11
12
|
*
|
|
12
13
|
* LLD #14 — Phase 3 cross-harness defence
|
|
@@ -86,13 +87,30 @@
|
|
|
86
87
|
*
|
|
87
88
|
* @module
|
|
88
89
|
*/
|
|
90
|
+
/**
|
|
91
|
+
* Windsurf Desktop's user `settings.json`, the file `http.proxy` is read from.
|
|
92
|
+
* Windsurf is a VS Code fork, so it keeps user settings where VS Code does,
|
|
93
|
+
* under its own product name (`nameShort: "Windsurf"` in the app's
|
|
94
|
+
* product.json): `User/settings.json` in the platform's application-data
|
|
95
|
+
* directory. Checked against a Windsurf 1.9600.41 install on macOS, whose
|
|
96
|
+
* user settings live in ~/Library/Application Support/Windsurf/User/; the
|
|
97
|
+
* Linux and
|
|
98
|
+
* Windows directories are VS Code's
|
|
99
|
+
* (https://code.visualstudio.com/docs/configure/settings#_settings-file-locations).
|
|
100
|
+
* `~/.codeium/windsurf/` holds Cascade's hooks.json and mcp_config.json, not
|
|
101
|
+
* editor settings; earlier versions wrote the proxy keys there, where Windsurf
|
|
102
|
+
* never read them.
|
|
103
|
+
*/
|
|
104
|
+
export declare function windsurfSettingsPath(platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv, home?: string): string;
|
|
89
105
|
/**
|
|
90
106
|
* Write Windsurf hooks at user-level and workspace-level.
|
|
91
107
|
* Also configures the HTTP proxy to route through Intutic's TLS MITM layer.
|
|
92
108
|
*
|
|
93
109
|
* @param workspaceRoot - Absolute workspace root.
|
|
94
110
|
* @param proxyUrl - Intutic proxy URL (used in the hook script comment).
|
|
95
|
-
* @param proxyPort - Local port
|
|
111
|
+
* @param proxyPort - Local port the Intutic proxy listens on; it serves
|
|
112
|
+
* HTTP CONNECT (TLS MITM) on the same listener as its
|
|
113
|
+
* API routes.
|
|
96
114
|
* @param workspaceId - Workspace ID embedded in hook event payloads.
|
|
97
115
|
*/
|
|
98
116
|
export declare function writeWindsurfHooks(workspaceRoot: string, proxyUrl: string, proxyPort?: number, workspaceId?: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windsurfHooks.d.ts","sourceRoot":"","sources":["../../src/harness/windsurfHooks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"windsurfHooks.d.ts","sourceRoot":"","sources":["../../src/harness/windsurfHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AAoBH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAqB,GAC1B,MAAM,CAKR;AA6KD;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAO,EAChB,WAAW,SAAK,GACf,OAAO,CAAC,IAAI,CAAC,CAuEf"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* (.windsurf/hooks.json) governance hooks using the Windsurf Cascade
|
|
6
6
|
* hook system (exit code 2 = block).
|
|
7
7
|
*
|
|
8
|
-
* Also writes the proxy settings into
|
|
9
|
-
* so that Windsurf routes HTTP traffic through the
|
|
8
|
+
* Also writes the proxy settings into Windsurf's user settings.json (see
|
|
9
|
+
* `windsurfSettingsPath`) so that Windsurf routes HTTP traffic through the
|
|
10
|
+
* Intutic TLS MITM proxy,
|
|
10
11
|
* enabling governance of Cascade AI traffic that has no native base URL override.
|
|
11
12
|
*
|
|
12
13
|
* LLD #14 — Phase 3 cross-harness defence
|
|
@@ -90,30 +91,79 @@ import * as fs from 'node:fs/promises';
|
|
|
90
91
|
import * as path from 'node:path';
|
|
91
92
|
import * as os from 'node:os';
|
|
92
93
|
import { createLogger } from '@intutic/logger';
|
|
94
|
+
import { keepOriginal, noteProxyUrl } from '../disconnect/originals.js';
|
|
93
95
|
import { newIso } from '@intutic/id';
|
|
96
|
+
import { readJsonObjectForMerge } from './jsonMergeTarget.js';
|
|
94
97
|
import { emitJsGate, emitJsFailClosedPrelude } from './gateBody.js';
|
|
95
98
|
import { configureJetBrainsWindsurfProxy } from './windsurfJetBrainsProxy.js';
|
|
96
99
|
const log = createLogger('sync-windsurf-hooks');
|
|
97
|
-
|
|
100
|
+
/** Desktop's user-level directory, resolved at call time so tests that move
|
|
101
|
+
* HOME are honoured. */
|
|
102
|
+
function windsurfUserDir() {
|
|
103
|
+
return path.join(os.homedir(), '.codeium', 'windsurf');
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Windsurf Desktop's user `settings.json`, the file `http.proxy` is read from.
|
|
107
|
+
* Windsurf is a VS Code fork, so it keeps user settings where VS Code does,
|
|
108
|
+
* under its own product name (`nameShort: "Windsurf"` in the app's
|
|
109
|
+
* product.json): `User/settings.json` in the platform's application-data
|
|
110
|
+
* directory. Checked against a Windsurf 1.9600.41 install on macOS, whose
|
|
111
|
+
* user settings live in ~/Library/Application Support/Windsurf/User/; the
|
|
112
|
+
* Linux and
|
|
113
|
+
* Windows directories are VS Code's
|
|
114
|
+
* (https://code.visualstudio.com/docs/configure/settings#_settings-file-locations).
|
|
115
|
+
* `~/.codeium/windsurf/` holds Cascade's hooks.json and mcp_config.json, not
|
|
116
|
+
* editor settings; earlier versions wrote the proxy keys there, where Windsurf
|
|
117
|
+
* never read them.
|
|
118
|
+
*/
|
|
119
|
+
export function windsurfSettingsPath(platform = process.platform, env = process.env, home = os.homedir()) {
|
|
120
|
+
const user = ['Windsurf', 'User', 'settings.json'];
|
|
121
|
+
if (platform === 'darwin')
|
|
122
|
+
return path.join(home, 'Library', 'Application Support', ...user);
|
|
123
|
+
if (platform === 'win32')
|
|
124
|
+
return path.join(env.APPDATA || path.join(home, 'AppData', 'Roaming'), ...user);
|
|
125
|
+
return path.join(env.XDG_CONFIG_HOME || path.join(home, '.config'), ...user);
|
|
126
|
+
}
|
|
98
127
|
/** The JetBrains plugin's user-level hooks.json lives directly under
|
|
99
128
|
* `~/.codeium` — no `windsurf` subdirectory — confirmed against
|
|
100
129
|
* docs.devin.ai/desktop/cascade/hooks (see module doc comment). Only
|
|
101
130
|
* hooks.json goes here: this writer's `settings.json` proxy-config write
|
|
102
|
-
* targets Desktop's known path specifically
|
|
103
|
-
*
|
|
104
|
-
|
|
105
|
-
|
|
131
|
+
* targets Desktop's known path specifically; the JetBrains plugin's proxy
|
|
132
|
+
* is configured through the IDE platform instead (windsurfJetBrainsProxy.ts). */
|
|
133
|
+
function windsurfJetBrainsUserDir() {
|
|
134
|
+
return path.join(os.homedir(), '.codeium');
|
|
135
|
+
}
|
|
106
136
|
/** Cascade's real pre-hook event names (see module doc comment). Each maps
|
|
107
137
|
* to an ARRAY of hook entries in `hooks.json` — Windsurf's schema, unlike
|
|
108
138
|
* Cursor's, has no `failClosed` field; exit code 2 is the only block
|
|
109
139
|
* signal Cascade recognizes. */
|
|
110
140
|
const CASCADE_HOOK_EVENTS = ['pre_run_command', 'pre_write_code', 'pre_mcp_tool_use'];
|
|
111
|
-
function
|
|
112
|
-
return
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
141
|
+
function isRecord(v) {
|
|
142
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Register the gate for every Cascade pre-hook event in `filePath`, keeping
|
|
146
|
+
* every hook the user registered there. The Intutic entry is recognised by
|
|
147
|
+
* its command, so repeated syncs replace it rather than stacking copies. A
|
|
148
|
+
* file that is not a plain JSON object is left alone (see jsonMergeTarget.ts).
|
|
149
|
+
*/
|
|
150
|
+
async function mergeCascadeHooksJson(filePath, hookScriptPath, workspaceRoot) {
|
|
151
|
+
await keepOriginal(filePath, workspaceRoot);
|
|
152
|
+
const existing = await readJsonObjectForMerge(filePath);
|
|
153
|
+
if (existing === null)
|
|
154
|
+
return;
|
|
155
|
+
const command = `node "${hookScriptPath}"`;
|
|
156
|
+
const hooks = isRecord(existing.hooks) ? { ...existing.hooks } : {};
|
|
157
|
+
for (const event of CASCADE_HOOK_EVENTS) {
|
|
158
|
+
const current = Array.isArray(hooks[event]) ? hooks[event] : [];
|
|
159
|
+
hooks[event] = [...current.filter((e) => !(isRecord(e) && e.command === command)), { command }];
|
|
160
|
+
}
|
|
161
|
+
// Provenance fields earlier versions stamped when they owned the whole file.
|
|
162
|
+
delete existing._comment;
|
|
163
|
+
delete existing._lastSync;
|
|
164
|
+
delete existing._note;
|
|
165
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
166
|
+
await atomicWriteJson(filePath, { ...existing, hooks });
|
|
117
167
|
}
|
|
118
168
|
function buildHookScript(proxyUrl, workspaceRoot, workspaceId) {
|
|
119
169
|
const hookEventsLog = path.join(workspaceRoot, '.intutic', 'events', 'hook-events.jsonl');
|
|
@@ -247,10 +297,12 @@ process.stdin.on('end', () => {
|
|
|
247
297
|
*
|
|
248
298
|
* @param workspaceRoot - Absolute workspace root.
|
|
249
299
|
* @param proxyUrl - Intutic proxy URL (used in the hook script comment).
|
|
250
|
-
* @param proxyPort - Local port
|
|
300
|
+
* @param proxyPort - Local port the Intutic proxy listens on; it serves
|
|
301
|
+
* HTTP CONNECT (TLS MITM) on the same listener as its
|
|
302
|
+
* API routes.
|
|
251
303
|
* @param workspaceId - Workspace ID embedded in hook event payloads.
|
|
252
304
|
*/
|
|
253
|
-
export async function writeWindsurfHooks(workspaceRoot, proxyUrl, proxyPort =
|
|
305
|
+
export async function writeWindsurfHooks(workspaceRoot, proxyUrl, proxyPort = 4000, workspaceId = '') {
|
|
254
306
|
const hookScriptDir = path.join(workspaceRoot, '.intutic', 'hooks');
|
|
255
307
|
await fs.mkdir(hookScriptDir, { recursive: true });
|
|
256
308
|
// Ensure hook events log directory exists
|
|
@@ -260,48 +312,48 @@ export async function writeWindsurfHooks(workspaceRoot, proxyUrl, proxyPort = 88
|
|
|
260
312
|
await fs.writeFile(tmpScript, buildHookScript(proxyUrl, workspaceRoot, workspaceId), 'utf-8');
|
|
261
313
|
await fs.rename(tmpScript, hookScriptPath);
|
|
262
314
|
await fs.chmod(hookScriptPath, 0o755);
|
|
263
|
-
const config = buildHooksConfig(hookScriptPath);
|
|
264
315
|
// 1. User-level hooks — Desktop's path.
|
|
265
|
-
await
|
|
266
|
-
await atomicWriteJson(path.join(WINDSURF_USER_DIR, 'hooks.json'), config);
|
|
316
|
+
await mergeCascadeHooksJson(path.join(windsurfUserDir(), 'hooks.json'), hookScriptPath, workspaceRoot);
|
|
267
317
|
log.info({ action: 'windsurf_hooks_written', level: 'user' }, 'Windsurf user-level hooks written');
|
|
268
|
-
// 1b. User-level hooks — the JetBrains plugin's SEPARATE path. Same
|
|
269
|
-
//
|
|
318
|
+
// 1b. User-level hooks — the JetBrains plugin's SEPARATE path. Same entries:
|
|
319
|
+
// the JetBrains plugin's own changelog (v2.12.4) names
|
|
270
320
|
// `post_setup_worktree` — one of Cascade's documented event names — as a
|
|
271
321
|
// hook it added, which is corroborating evidence (not a guess) that it
|
|
272
322
|
// dispatches the same Cascade hook event/payload system as Desktop, just
|
|
273
323
|
// reads its user-level config from this different file.
|
|
274
|
-
await
|
|
275
|
-
await atomicWriteJson(path.join(WINDSURF_JETBRAINS_USER_DIR, 'hooks.json'), config);
|
|
324
|
+
await mergeCascadeHooksJson(path.join(windsurfJetBrainsUserDir(), 'hooks.json'), hookScriptPath, workspaceRoot);
|
|
276
325
|
log.info({ action: 'windsurf_hooks_written', level: 'user-jetbrains' }, 'Windsurf JetBrains plugin user-level hooks written');
|
|
277
326
|
// 2. Workspace-level hooks (.windsurf/hooks.json) — the SAME relative path
|
|
278
327
|
// for both Desktop and the JetBrains plugin (workspace-root-relative, not
|
|
279
328
|
// app-specific), so this one write already covers both. Hooks configured
|
|
280
329
|
// at multiple levels are NOT one-wins: Cascade runs every level's hooks
|
|
281
330
|
// for a matching event, in order system → user → workspace (confirmed
|
|
282
|
-
// against docs.devin.ai/desktop/cascade/hooks)
|
|
283
|
-
//
|
|
284
|
-
|
|
285
|
-
const wsWindsurfDir = path.join(workspaceRoot, '.windsurf');
|
|
286
|
-
await fs.mkdir(wsWindsurfDir, { recursive: true });
|
|
287
|
-
await atomicWriteJson(path.join(wsWindsurfDir, 'hooks.json'), {
|
|
288
|
-
...config,
|
|
289
|
-
_note: 'Workspace-level hooks — agent may be able to modify this file. Runs IN ADDITION to ' +
|
|
290
|
-
'user-level hooks (Cascade runs every configured level for a matching event; last-wins/' +
|
|
291
|
-
'precedence is not how this works), so this file being tampered with does not disable ' +
|
|
292
|
-
'user-level enforcement.',
|
|
293
|
-
});
|
|
331
|
+
// against docs.devin.ai/desktop/cascade/hooks), so this file being edited
|
|
332
|
+
// by an agent does not disable the user-level registration above.
|
|
333
|
+
await mergeCascadeHooksJson(path.join(workspaceRoot, '.windsurf', 'hooks.json'), hookScriptPath, workspaceRoot);
|
|
294
334
|
log.info({ action: 'windsurf_hooks_written', level: 'workspace' }, 'Windsurf workspace-level hooks written');
|
|
295
|
-
// 3. HTTP proxy settings — Desktop's own settings.json.
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
};
|
|
303
|
-
await
|
|
304
|
-
|
|
335
|
+
// 3. HTTP proxy settings — Desktop's own settings.json. Merged: the keys
|
|
336
|
+
// below are the only ones Intutic owns, and a file that is not a plain JSON
|
|
337
|
+
// object is left alone (see jsonMergeTarget.ts).
|
|
338
|
+
const settingsPath = windsurfSettingsPath();
|
|
339
|
+
await keepOriginal(settingsPath, workspaceRoot);
|
|
340
|
+
// The local listener, not the configured proxy URL: disconnect recognises
|
|
341
|
+
// the proxy settings below, and the JetBrains ones, by it.
|
|
342
|
+
await noteProxyUrl(`http://127.0.0.1:${proxyPort}`);
|
|
343
|
+
const existingSettings = await readJsonObjectForMerge(settingsPath);
|
|
344
|
+
if (existingSettings !== null) {
|
|
345
|
+
// Provenance fields earlier versions stamped when they owned the whole file.
|
|
346
|
+
delete existingSettings._comment;
|
|
347
|
+
delete existingSettings._lastSync;
|
|
348
|
+
await fs.mkdir(path.dirname(settingsPath), { recursive: true });
|
|
349
|
+
await atomicWriteJson(settingsPath, {
|
|
350
|
+
...existingSettings,
|
|
351
|
+
'http.proxy': `http://127.0.0.1:${proxyPort}`,
|
|
352
|
+
'http.proxyStrictSSL': false, // Our CA cert handles validation
|
|
353
|
+
'codeium.proxy': `http://127.0.0.1:${proxyPort}`,
|
|
354
|
+
});
|
|
355
|
+
log.info({ action: 'windsurf_proxy_configured', port: proxyPort }, 'Windsurf HTTP proxy configured for TLS MITM interception');
|
|
356
|
+
}
|
|
305
357
|
// 4. HTTP proxy settings — every installed JetBrains product. See
|
|
306
358
|
// windsurfJetBrainsProxy.ts's module doc comment for what this
|
|
307
359
|
// configures and why it needs two merge-writes per product rather than
|