@intutic/sync-daemon 2.2.0 → 2.4.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.
Files changed (235) hide show
  1. package/README.md +1 -1
  2. package/dist/agentReporter.d.ts +23 -11
  3. package/dist/agentReporter.d.ts.map +1 -1
  4. package/dist/agentReporter.js +20 -13
  5. package/dist/agentReporter.js.map +1 -1
  6. package/dist/configReader.d.ts +1 -3
  7. package/dist/configReader.d.ts.map +1 -1
  8. package/dist/configReader.js +0 -2
  9. package/dist/configReader.js.map +1 -1
  10. package/dist/configWriter.d.ts +11 -12
  11. package/dist/configWriter.d.ts.map +1 -1
  12. package/dist/configWriter.js +35 -58
  13. package/dist/configWriter.js.map +1 -1
  14. package/dist/disconnect/harnesses.d.ts +0 -2
  15. package/dist/disconnect/harnesses.d.ts.map +1 -1
  16. package/dist/disconnect/harnesses.js +157 -80
  17. package/dist/disconnect/harnesses.js.map +1 -1
  18. package/dist/disconnect/index.d.ts.map +1 -1
  19. package/dist/disconnect/index.js +11 -1
  20. package/dist/disconnect/index.js.map +1 -1
  21. package/dist/disconnect/mcp.d.ts +21 -0
  22. package/dist/disconnect/mcp.d.ts.map +1 -1
  23. package/dist/disconnect/mcp.js +71 -0
  24. package/dist/disconnect/mcp.js.map +1 -1
  25. package/dist/disconnect/recognise.d.ts +2 -2
  26. package/dist/disconnect/recognise.d.ts.map +1 -1
  27. package/dist/disconnect/recognise.js +15 -5
  28. package/dist/disconnect/recognise.js.map +1 -1
  29. package/dist/harness/aiderConfigMerger.d.ts +28 -8
  30. package/dist/harness/aiderConfigMerger.d.ts.map +1 -1
  31. package/dist/harness/aiderConfigMerger.js +59 -11
  32. package/dist/harness/aiderConfigMerger.js.map +1 -1
  33. package/dist/harness/antigravityCliHooks.d.ts +61 -0
  34. package/dist/harness/antigravityCliHooks.d.ts.map +1 -0
  35. package/dist/harness/antigravityCliHooks.js +207 -0
  36. package/dist/harness/antigravityCliHooks.js.map +1 -0
  37. package/dist/harness/antigravityHooks.d.ts +12 -2
  38. package/dist/harness/antigravityHooks.d.ts.map +1 -1
  39. package/dist/harness/antigravityHooks.js +36 -16
  40. package/dist/harness/antigravityHooks.js.map +1 -1
  41. package/dist/harness/antigravityProducts.d.ts +40 -0
  42. package/dist/harness/antigravityProducts.d.ts.map +1 -0
  43. package/dist/harness/antigravityProducts.js +109 -0
  44. package/dist/harness/antigravityProducts.js.map +1 -0
  45. package/dist/harness/claudeAgentsMd.d.ts +29 -0
  46. package/dist/harness/claudeAgentsMd.d.ts.map +1 -0
  47. package/dist/harness/claudeAgentsMd.js +80 -0
  48. package/dist/harness/claudeAgentsMd.js.map +1 -0
  49. package/dist/harness/claudeCodeHooks.d.ts +6 -5
  50. package/dist/harness/claudeCodeHooks.d.ts.map +1 -1
  51. package/dist/harness/claudeCodeHooks.js +98 -24
  52. package/dist/harness/claudeCodeHooks.js.map +1 -1
  53. package/dist/harness/clineHooks.d.ts +0 -1
  54. package/dist/harness/clineHooks.d.ts.map +1 -1
  55. package/dist/harness/clineHooks.js +10 -4
  56. package/dist/harness/clineHooks.js.map +1 -1
  57. package/dist/harness/codexHooks.d.ts +2 -0
  58. package/dist/harness/codexHooks.d.ts.map +1 -1
  59. package/dist/harness/codexHooks.js +12 -4
  60. package/dist/harness/codexHooks.js.map +1 -1
  61. package/dist/harness/cursorHooks.d.ts +5 -2
  62. package/dist/harness/cursorHooks.d.ts.map +1 -1
  63. package/dist/harness/cursorHooks.js +9 -3
  64. package/dist/harness/cursorHooks.js.map +1 -1
  65. package/dist/harness/dshHooks.d.ts +5 -5
  66. package/dist/harness/dshHooks.d.ts.map +1 -1
  67. package/dist/harness/dshHooks.js +5 -5
  68. package/dist/harness/gateArtifacts.d.ts +35 -0
  69. package/dist/harness/gateArtifacts.d.ts.map +1 -0
  70. package/dist/harness/gateArtifacts.js +88 -0
  71. package/dist/harness/gateArtifacts.js.map +1 -0
  72. package/dist/harness/gateBody.d.ts +186 -69
  73. package/dist/harness/gateBody.d.ts.map +1 -1
  74. package/dist/harness/gateBody.js +820 -182
  75. package/dist/harness/gateBody.js.map +1 -1
  76. package/dist/harness/gateSightings.d.ts +47 -0
  77. package/dist/harness/gateSightings.d.ts.map +1 -0
  78. package/dist/harness/gateSightings.js +159 -0
  79. package/dist/harness/gateSightings.js.map +1 -0
  80. package/dist/harness/githubCopilotHooks.d.ts.map +1 -1
  81. package/dist/harness/githubCopilotHooks.js +7 -1
  82. package/dist/harness/githubCopilotHooks.js.map +1 -1
  83. package/dist/harness/gooseHardener.d.ts +0 -1
  84. package/dist/harness/gooseHardener.d.ts.map +1 -1
  85. package/dist/harness/gooseHardener.js +1 -1
  86. package/dist/harness/gooseHardener.js.map +1 -1
  87. package/dist/harness/gooseHooks.d.ts +14 -1
  88. package/dist/harness/gooseHooks.d.ts.map +1 -1
  89. package/dist/harness/gooseHooks.js +55 -29
  90. package/dist/harness/gooseHooks.js.map +1 -1
  91. package/dist/harness/grokHooks.d.ts +2 -2
  92. package/dist/harness/grokHooks.d.ts.map +1 -1
  93. package/dist/harness/grokHooks.js +11 -6
  94. package/dist/harness/grokHooks.js.map +1 -1
  95. package/dist/harness/hermesHooks.d.ts +18 -8
  96. package/dist/harness/hermesHooks.d.ts.map +1 -1
  97. package/dist/harness/hermesHooks.js +48 -17
  98. package/dist/harness/hermesHooks.js.map +1 -1
  99. package/dist/harness/mcpAutoWrite.d.ts +24 -9
  100. package/dist/harness/mcpAutoWrite.d.ts.map +1 -1
  101. package/dist/harness/mcpAutoWrite.js +218 -25
  102. package/dist/harness/mcpAutoWrite.js.map +1 -1
  103. package/dist/harness/museHooks.d.ts +3 -3
  104. package/dist/harness/museHooks.d.ts.map +1 -1
  105. package/dist/harness/museHooks.js +9 -5
  106. package/dist/harness/museHooks.js.map +1 -1
  107. package/dist/harness/n8nHooks.d.ts +0 -1
  108. package/dist/harness/n8nHooks.d.ts.map +1 -1
  109. package/dist/harness/n8nHooks.js +4 -1
  110. package/dist/harness/n8nHooks.js.map +1 -1
  111. package/dist/harness/openCodeHooks.d.ts +2 -2
  112. package/dist/harness/openCodeHooks.d.ts.map +1 -1
  113. package/dist/harness/openCodeHooks.js +7 -3
  114. package/dist/harness/openCodeHooks.js.map +1 -1
  115. package/dist/harness/openWebuiHooks.d.ts +0 -1
  116. package/dist/harness/openWebuiHooks.d.ts.map +1 -1
  117. package/dist/harness/openWebuiHooks.js +5 -1
  118. package/dist/harness/openWebuiHooks.js.map +1 -1
  119. package/dist/harness/openclawHooks.d.ts +70 -18
  120. package/dist/harness/openclawHooks.d.ts.map +1 -1
  121. package/dist/harness/openclawHooks.js +213 -161
  122. package/dist/harness/openclawHooks.js.map +1 -1
  123. package/dist/harness/openhandsHooks.d.ts +24 -10
  124. package/dist/harness/openhandsHooks.d.ts.map +1 -1
  125. package/dist/harness/openhandsHooks.js +49 -48
  126. package/dist/harness/openhandsHooks.js.map +1 -1
  127. package/dist/harness/piHooks.d.ts +52 -17
  128. package/dist/harness/piHooks.d.ts.map +1 -1
  129. package/dist/harness/piHooks.js +177 -166
  130. package/dist/harness/piHooks.js.map +1 -1
  131. package/dist/harness/protectedPaths.d.ts +107 -25
  132. package/dist/harness/protectedPaths.d.ts.map +1 -1
  133. package/dist/harness/protectedPaths.js +342 -48
  134. package/dist/harness/protectedPaths.js.map +1 -1
  135. package/dist/harness/rulesSection.d.ts +62 -0
  136. package/dist/harness/rulesSection.d.ts.map +1 -0
  137. package/dist/harness/rulesSection.js +145 -0
  138. package/dist/harness/rulesSection.js.map +1 -0
  139. package/dist/harness/windsurfHooks.d.ts +0 -1
  140. package/dist/harness/windsurfHooks.d.ts.map +1 -1
  141. package/dist/harness/windsurfHooks.js +4 -1
  142. package/dist/harness/windsurfHooks.js.map +1 -1
  143. package/dist/index.d.ts +12 -8
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +11 -9
  146. package/dist/index.js.map +1 -1
  147. package/dist/inventory.d.ts +53 -0
  148. package/dist/inventory.d.ts.map +1 -0
  149. package/dist/inventory.js +133 -0
  150. package/dist/inventory.js.map +1 -0
  151. package/dist/lib/complianceProbes.d.ts +2 -1
  152. package/dist/lib/complianceProbes.d.ts.map +1 -1
  153. package/dist/lib/complianceProbes.js +1 -1
  154. package/dist/lib/complianceProbes.js.map +1 -1
  155. package/dist/lib/decisionsDigest.d.ts +34 -16
  156. package/dist/lib/decisionsDigest.d.ts.map +1 -1
  157. package/dist/lib/decisionsDigest.js +105 -46
  158. package/dist/lib/decisionsDigest.js.map +1 -1
  159. package/dist/lib/egressPolicy.d.ts +2 -2
  160. package/dist/lib/egressPolicy.js +2 -2
  161. package/dist/lib/mcpRegistryPy.d.ts +11 -0
  162. package/dist/lib/mcpRegistryPy.d.ts.map +1 -0
  163. package/dist/lib/mcpRegistryPy.js +173 -0
  164. package/dist/lib/mcpRegistryPy.js.map +1 -0
  165. package/dist/lib/phrasesPy.d.ts +11 -0
  166. package/dist/lib/phrasesPy.d.ts.map +1 -0
  167. package/dist/lib/phrasesPy.js +351 -0
  168. package/dist/lib/phrasesPy.js.map +1 -0
  169. package/dist/lib/policySnapshot.d.ts +46 -10
  170. package/dist/lib/policySnapshot.d.ts.map +1 -1
  171. package/dist/lib/policySnapshot.js +136 -47
  172. package/dist/lib/policySnapshot.js.map +1 -1
  173. package/dist/lib/processPoller.d.ts.map +1 -1
  174. package/dist/lib/processPoller.js +9 -2
  175. package/dist/lib/processPoller.js.map +1 -1
  176. package/dist/lib/regexLinearity.d.ts +43 -0
  177. package/dist/lib/regexLinearity.d.ts.map +1 -0
  178. package/dist/lib/regexLinearity.js +275 -0
  179. package/dist/lib/regexLinearity.js.map +1 -0
  180. package/dist/lib/runtimeEnv.d.ts +1 -3
  181. package/dist/lib/runtimeEnv.d.ts.map +1 -1
  182. package/dist/lib/runtimeEnv.js +0 -2
  183. package/dist/lib/runtimeEnv.js.map +1 -1
  184. package/dist/lib/sequencePy.d.ts +10 -0
  185. package/dist/lib/sequencePy.d.ts.map +1 -0
  186. package/dist/lib/sequencePy.js +102 -0
  187. package/dist/lib/sequencePy.js.map +1 -0
  188. package/dist/sessionReporter.d.ts +17 -11
  189. package/dist/sessionReporter.d.ts.map +1 -1
  190. package/dist/sessionReporter.js +36 -23
  191. package/dist/sessionReporter.js.map +1 -1
  192. package/dist/skillWriter.d.ts +23 -5
  193. package/dist/skillWriter.d.ts.map +1 -1
  194. package/dist/skillWriter.js +159 -16
  195. package/dist/skillWriter.js.map +1 -1
  196. package/dist/syncCycle.d.ts.map +1 -1
  197. package/dist/syncCycle.js +21 -9
  198. package/dist/syncCycle.js.map +1 -1
  199. package/dist/trajectoryMonitor.d.ts +1 -3
  200. package/dist/trajectoryMonitor.d.ts.map +1 -1
  201. package/dist/trajectoryMonitor.js +1 -4
  202. package/dist/trajectoryMonitor.js.map +1 -1
  203. package/dist/watcher/driftWatcher.d.ts +0 -1
  204. package/dist/watcher/driftWatcher.d.ts.map +1 -1
  205. package/dist/watcher/driftWatcher.js +1 -2
  206. package/dist/watcher/driftWatcher.js.map +1 -1
  207. package/dist/watcher/settingsGuard.d.ts +33 -7
  208. package/dist/watcher/settingsGuard.d.ts.map +1 -1
  209. package/dist/watcher/settingsGuard.js +373 -61
  210. package/dist/watcher/settingsGuard.js.map +1 -1
  211. package/dist/watcher/vscodeHookSettings.d.ts +30 -0
  212. package/dist/watcher/vscodeHookSettings.d.ts.map +1 -0
  213. package/dist/watcher/vscodeHookSettings.js +170 -0
  214. package/dist/watcher/vscodeHookSettings.js.map +1 -0
  215. package/dist/wsClient.d.ts +0 -1
  216. package/dist/wsClient.d.ts.map +1 -1
  217. package/dist/wsClient.js +0 -1
  218. package/dist/wsClient.js.map +1 -1
  219. package/package.json +5 -5
  220. package/dist/harness/claudeDesktopHooks.d.ts +0 -33
  221. package/dist/harness/claudeDesktopHooks.d.ts.map +0 -1
  222. package/dist/harness/claudeDesktopHooks.js +0 -256
  223. package/dist/harness/claudeDesktopHooks.js.map +0 -1
  224. package/dist/harness/continueHooks.d.ts +0 -63
  225. package/dist/harness/continueHooks.d.ts.map +0 -1
  226. package/dist/harness/continueHooks.js +0 -250
  227. package/dist/harness/continueHooks.js.map +0 -1
  228. package/dist/harness/gateKind.d.ts +0 -164
  229. package/dist/harness/gateKind.d.ts.map +0 -1
  230. package/dist/harness/gateKind.js +0 -144
  231. package/dist/harness/gateKind.js.map +0 -1
  232. package/dist/harness/rooCodeHooks.d.ts +0 -31
  233. package/dist/harness/rooCodeHooks.d.ts.map +0 -1
  234. package/dist/harness/rooCodeHooks.js +0 -281
  235. package/dist/harness/rooCodeHooks.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  * cursorHooks.ts — Cursor hook injection.
3
3
  *
4
4
  * Registers the gate in Cursor's hooks.json (schema per cursor.com/docs/agent/
5
- * hooks: `{version: 1, hooks: {<event>: [{command, matcher?, failClosed?}]}}`)
5
+ * hooks: `{version: 1, hooks: {<event>: [{command, matcher?, timeout?, failClosed?}]}}`)
6
6
  * for three events:
7
7
  * - `beforeShellExecution` — every shell command;
8
8
  * - `beforeMCPExecution` — every MCP tool call;
@@ -12,6 +12,8 @@
12
12
  * The gate refuses with exit code 2 and allows by printing
13
13
  * `{"permission":"allow"}`: with `failClosed: true` Cursor blocks on a hook
14
14
  * that crashes, times out or prints nothing, so an allow must be explicit.
15
+ * `timeout` (seconds) is set because Cursor does not state its default, and
16
+ * the gate's deadline is derived from it.
15
17
  *
16
18
  * Levels: project (`<workspaceRoot>/.cursor/hooks.json`) and user
17
19
  * (`~/.cursor/hooks.json`) on every sync; system level
@@ -19,7 +21,6 @@
19
21
  * only through `intutic enterprise install`, which needs root. The project and
20
22
  * user files are merged — hooks the user registered are kept.
21
23
  *
22
- * LLD #14 — Phase 3 cross-harness defence
23
24
  * HLD §3.14 — Three-Tier Defense Cascade
24
25
  *
25
26
  * @module
@@ -30,6 +31,7 @@ import * as os from 'node:os';
30
31
  import { createLogger } from '@intutic/logger';
31
32
  import { keepOriginal } from '../disconnect/originals.js';
32
33
  import { newIso } from '@intutic/id';
34
+ import { HOOK_TIMEOUT_SECONDS } from '@intutic/shared-types';
33
35
  import { emitJsGate, emitJsFailClosedPrelude } from './gateBody.js';
34
36
  import { readJsonObjectForMerge } from './jsonMergeTarget.js';
35
37
  const log = createLogger('sync-cursor-hooks');
@@ -66,7 +68,7 @@ export function buildHooksConfig(hookScriptPath) {
66
68
  version: 1,
67
69
  hooks: Object.fromEntries(HOOK_EVENTS.map(({ event, matcher }) => [
68
70
  event,
69
- [{ command: `node "${hookScriptPath}"`, ...(matcher ? { matcher } : {}), failClosed: true }],
71
+ [{ command: `node "${hookScriptPath}"`, ...(matcher ? { matcher } : {}), timeout: HOOK_TIMEOUT_SECONDS, failClosed: true }],
70
72
  ])),
71
73
  };
72
74
  }
@@ -136,6 +138,9 @@ function logEvent(verdict, toolName, reason) {
136
138
  try {
137
139
  const ts = new Date().toISOString();
138
140
  const incidentId = crypto.createHash('sha1').update(ts + toolName + _intuticWsId).digest('hex').slice(0, 16);
141
+ // The event's id: random, made once here, and resent with the line it is
142
+ // written into, so the control plane processes the event once.
143
+ const eventId = crypto.randomBytes(16).toString('hex');
139
144
  const entry = JSON.stringify({
140
145
  // Passed through, not collapsed to two values: the advisory tier emits
141
146
  // 'tool_flagged', and a ternary here silently recorded it as an allow.
@@ -145,6 +150,7 @@ function logEvent(verdict, toolName, reason) {
145
150
  harnessType: 'cursor',
146
151
  timestamp: ts,
147
152
  incidentId,
153
+ eventId,
148
154
  ...(_intuticSessionId ? { sessionId: _intuticSessionId } : {}),
149
155
  }) + '\\n';
150
156
  fs.appendFileSync(${JSON.stringify(hookEventsLog)}, entry, { flag: 'a' });
@@ -1 +1 @@
1
- {"version":3,"file":"cursorHooks.js","sourceRoot":"","sources":["../../src/harness/cursorHooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursorHooks.js","sourceRoot":"","sources":["../../src/harness/cursorHooks.ts"],"names":[],"mappings":"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"}
@@ -54,9 +54,9 @@
54
54
  * included. Node resolves it from the profile directory's own
55
55
  * `node_modules` (the "two-anchor" resolution `profile.d.ts` documents
56
56
  * for out-of-tree plugins) — which means `@intutic/gate` must actually be
57
- * installed there; see {@link mergeProfileDependency} and the TD entry
57
+ * installed there; see {@link mergeProfileDependency}
58
58
  * for why this writer cannot run `pnpm install` on the user's behalf.
59
- * - **LLM egress, re-verified against dsh 0.2.0-rc.2 (TD-370, 2026-10-03).**
59
+ * - **LLM egress, re-verified against dsh 0.2.0-rc.2 (2026-10-03).**
60
60
  * 0.2 removed the harness-home `settings.yaml` document this writer used
61
61
  * to merge into: `@deepseek-ai/dsh-settings` now imports a leftover
62
62
  * `$DSH_HOME/settings.yaml` ONCE into whichever profile boots first
@@ -118,11 +118,11 @@ export interface DshCoverageGap {
118
118
  /** Number of EXISTING dsh profiles — see {@link listDshProfileDirs}. */
119
119
  profileCount: number;
120
120
  /** `dshDetected && profileCount === 0`: dsh is present but nothing is
121
- * governed yet — TD-370's "silent no-profile window". */
121
+ * governed yet — the "silent no-profile window". */
122
122
  gap: boolean;
123
123
  }
124
124
  /**
125
- * Detects TD-370's "silent no-profile window": the stretch between `intutic
125
+ * Detects the "silent no-profile window": the stretch between `intutic
126
126
  * connect` and the user's first `dsh --profile <name>` run, during which dsh
127
127
  * is entirely ungoverned — {@link writeDshHooks} is a documented no-op with
128
128
  * nothing to register into yet — and, before this function existed, nothing
@@ -157,7 +157,7 @@ export declare function mergeProfilePatch(profileDir: string, workspaceRoot: str
157
157
  * `dsh: warning: 1 entry did not activate` / `intutic-governance
158
158
  * (@intutic/gate/dsh): failed to import` on stderr and the session then runs
159
159
  * UNGOVERNED — loud, but fail-OPEN (dsh's hard-fail list is global to the
160
- * launcher; a profile row cannot mark itself required). See the TD entry and
160
+ * launcher; a profile row cannot mark itself required). See
161
161
  * `apps/docs/integrations/dsh.md`.
162
162
  *
163
163
  * Adds the declaration only when the profile has none: an existing one was
@@ -1 +1 @@
1
- {"version":3,"file":"dshHooks.d.ts","sourceRoot":"","sources":["../../src/harness/dshHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AAmCH;;;;0CAI0C;AAC1C,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB3E;AAoBD,MAAM,WAAW,cAAc;IAC7B;mFAC+E;IAC/E,WAAW,EAAE,OAAO,CAAA;IACpB,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAA;IACpB;8DAC0D;IAC1D,GAAG,EAAE,OAAO,CAAA;CACb;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,SAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ9F;AAkED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DrH;AAID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9E;AA0BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD9F;AA4ED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5G"}
1
+ {"version":3,"file":"dshHooks.d.ts","sourceRoot":"","sources":["../../src/harness/dshHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AAmCH;;;;0CAI0C;AAC1C,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB3E;AAoBD,MAAM,WAAW,cAAc;IAC7B;mFAC+E;IAC/E,WAAW,EAAE,OAAO,CAAA;IACpB,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAA;IACpB;yDACqD;IACrD,GAAG,EAAE,OAAO,CAAA;CACb;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,SAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ9F;AAkED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DrH;AAID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9E;AA0BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD9F;AA4ED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5G"}
@@ -54,9 +54,9 @@
54
54
  * included. Node resolves it from the profile directory's own
55
55
  * `node_modules` (the "two-anchor" resolution `profile.d.ts` documents
56
56
  * for out-of-tree plugins) — which means `@intutic/gate` must actually be
57
- * installed there; see {@link mergeProfileDependency} and the TD entry
57
+ * installed there; see {@link mergeProfileDependency}
58
58
  * for why this writer cannot run `pnpm install` on the user's behalf.
59
- * - **LLM egress, re-verified against dsh 0.2.0-rc.2 (TD-370, 2026-10-03).**
59
+ * - **LLM egress, re-verified against dsh 0.2.0-rc.2 (2026-10-03).**
60
60
  * 0.2 removed the harness-home `settings.yaml` document this writer used
61
61
  * to merge into: `@deepseek-ai/dsh-settings` now imports a leftover
62
62
  * `$DSH_HOME/settings.yaml` ONCE into whichever profile boots first
@@ -163,7 +163,7 @@ export async function listDshProfileDirs(dshHome) {
163
163
  }
164
164
  return out;
165
165
  }
166
- // ─── Coverage-gap detection (TD-370: the silent no-profile window) ────────
166
+ // ─── Coverage-gap detection (the silent no-profile window) ────────────────
167
167
  /** Markers dsh leaves under `$DSH_HOME` even before any profile exists —
168
168
  * mirrors `tools/cli/src/harness/dsh.ts`'s own `detect()` list, minus the
169
169
  * `profiles` marker itself (which is what "zero profiles" already answers
@@ -180,7 +180,7 @@ function isDshOnPath() {
180
180
  return false;
181
181
  }
182
182
  /**
183
- * Detects TD-370's "silent no-profile window": the stretch between `intutic
183
+ * Detects the "silent no-profile window": the stretch between `intutic
184
184
  * connect` and the user's first `dsh --profile <name>` run, during which dsh
185
185
  * is entirely ungoverned — {@link writeDshHooks} is a documented no-op with
186
186
  * nothing to register into yet — and, before this function existed, nothing
@@ -335,7 +335,7 @@ export async function mergeProfilePatch(profileDir, workspaceRoot, workspaceId)
335
335
  * `dsh: warning: 1 entry did not activate` / `intutic-governance
336
336
  * (@intutic/gate/dsh): failed to import` on stderr and the session then runs
337
337
  * UNGOVERNED — loud, but fail-OPEN (dsh's hard-fail list is global to the
338
- * launcher; a profile row cannot mark itself required). See the TD entry and
338
+ * launcher; a profile row cannot mark itself required). See
339
339
  * `apps/docs/integrations/dsh.md`.
340
340
  *
341
341
  * Adds the declaration only when the profile has none: an existing one was
@@ -0,0 +1,35 @@
1
+ /**
2
+ * gateArtifacts.ts — where each hook-gated harness's gate file lives, so the
3
+ * AI inventory can say whether it is on disk.
4
+ *
5
+ * Every path is the one the harness's writer emits, relative to the root it
6
+ * was given: the `intutic connect` workspace, or the home directory for the
7
+ * writers that install per user. The inventory looks under both. A harness
8
+ * whose gate is not a file this daemon writes (`gateKind.ts`: `sdk`, `none`,
9
+ * `delegated`, `bridge`) has no entry.
10
+ *
11
+ * `gateArtifacts.test.ts` holds this list to the gate registry the generated
12
+ * gates are tested from (`__tests__/harness/gateRegistry.ts`), in both
13
+ * directions, so a new or removed gate cannot leave it stale.
14
+ *
15
+ * @module
16
+ */
17
+ import type { HarnessType } from '@intutic/shared-types';
18
+ /** Gate file paths per harness, relative to the workspace root or the home directory. */
19
+ export declare const GATE_ARTIFACTS: Readonly<Partial<Record<HarnessType, readonly string[]>>>;
20
+ /**
21
+ * The gate file of each gate id of the harness with two (`gateIdentitiesOf`
22
+ * in `@intutic/shared-types`): Google Antigravity's and Gemini CLI's, both
23
+ * written by the `antigravity` writers and both listed under that harness above.
24
+ */
25
+ export declare const GATE_IDENTITY_ARTIFACTS: Readonly<Record<string, readonly string[]>>;
26
+ /** dsh's gate is a patch file in each profile under `$DSH_HOME/profiles`, whose names only the machine knows. */
27
+ export declare const DSH_PROFILE_GATE_FILE = "cordis.patch.yml";
28
+ /**
29
+ * The absolute path of this harness's gate file if one is on disk, else null.
30
+ * Only meaningful for a `hook`-gated harness; any other returns null.
31
+ */
32
+ export declare function findGateFile(harness: string, workspaceRoot: string, home: string): Promise<string | null>;
33
+ /** As {@link findGateFile}, for one gate id of a harness with two ({@link GATE_IDENTITY_ARTIFACTS}). */
34
+ export declare function findIdentityGateFile(gateId: string, workspaceRoot: string, home: string): Promise<string | null>;
35
+ //# sourceMappingURL=gateArtifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateArtifacts.d.ts","sourceRoot":"","sources":["../../src/harness/gateArtifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,yFAAyF;AACzF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAkBpF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAG/E,CAAA;AAED,iHAAiH;AACjH,eAAO,MAAM,qBAAqB,qBAAqB,CAAA;AAUvD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS/G;AAED,wGAAwG;AACxG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEhH"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * gateArtifacts.ts — where each hook-gated harness's gate file lives, so the
3
+ * AI inventory can say whether it is on disk.
4
+ *
5
+ * Every path is the one the harness's writer emits, relative to the root it
6
+ * was given: the `intutic connect` workspace, or the home directory for the
7
+ * writers that install per user. The inventory looks under both. A harness
8
+ * whose gate is not a file this daemon writes (`gateKind.ts`: `sdk`, `none`,
9
+ * `delegated`, `bridge`) has no entry.
10
+ *
11
+ * `gateArtifacts.test.ts` holds this list to the gate registry the generated
12
+ * gates are tested from (`__tests__/harness/gateRegistry.ts`), in both
13
+ * directions, so a new or removed gate cannot leave it stale.
14
+ *
15
+ * @module
16
+ */
17
+ import * as node_fs from 'node:fs/promises';
18
+ import * as node_path from 'node:path';
19
+ import { listDshProfileDirs, resolveDshHome } from './dshHooks.js';
20
+ /** Gate file paths per harness, relative to the workspace root or the home directory. */
21
+ export const GATE_ARTIFACTS = {
22
+ 'claude-code': ['.intutic/hooks/claude-code-check.js'],
23
+ 'cursor': ['.intutic/hooks/cursor-check.js'],
24
+ 'windsurf': ['.intutic/hooks/windsurf-check.js'],
25
+ 'codex': ['.intutic/hooks/codex-check.js'],
26
+ 'antigravity': ['.intutic/hooks/antigravity-check.sh', '.intutic/hooks/antigravity-cli-check.js'],
27
+ 'openhands': ['.intutic/hooks/openhands-check.sh'],
28
+ 'hermes': ['.intutic/hooks/hermes-check.sh'],
29
+ 'pi': ['.pi/agent/extensions/intutic-governance.js'],
30
+ 'openclaw': ['.intutic/hooks/openclaw/intutic-governance.cjs'],
31
+ 'muse-code': ['.intutic/hooks/muse-check.js'],
32
+ 'github-copilot': ['.intutic/hooks/github-copilot-check.js'],
33
+ 'grok': ['.intutic/hooks/grok-check.js'],
34
+ 'cline': ['.clinerules/hooks/PreToolUse'],
35
+ 'goose': ['.agents/plugins/intutic-governance/scripts/intutic-check.sh'],
36
+ 'opencode': ['.opencode/plugins/intutic-governance.js', '.opencode/plugins/intutic-governance/index.js'],
37
+ 'n8n': ['.intutic/hooks/n8n-governance-hook.js'],
38
+ 'open-webui': ['.open-webui/intutic-governance-filter.py'],
39
+ };
40
+ /**
41
+ * The gate file of each gate id of the harness with two (`gateIdentitiesOf`
42
+ * in `@intutic/shared-types`): Google Antigravity's and Gemini CLI's, both
43
+ * written by the `antigravity` writers and both listed under that harness above.
44
+ */
45
+ export const GATE_IDENTITY_ARTIFACTS = {
46
+ 'antigravity': ['.intutic/hooks/antigravity-cli-check.js'],
47
+ 'gemini-cli': ['.intutic/hooks/antigravity-check.sh'],
48
+ };
49
+ /** dsh's gate is a patch file in each profile under `$DSH_HOME/profiles`, whose names only the machine knows. */
50
+ export const DSH_PROFILE_GATE_FILE = 'cordis.patch.yml';
51
+ async function isFile(p) {
52
+ try {
53
+ return (await node_fs.stat(p)).isFile();
54
+ }
55
+ catch {
56
+ return false;
57
+ }
58
+ }
59
+ /**
60
+ * The absolute path of this harness's gate file if one is on disk, else null.
61
+ * Only meaningful for a `hook`-gated harness; any other returns null.
62
+ */
63
+ export async function findGateFile(harness, workspaceRoot, home) {
64
+ if (harness === 'dsh') {
65
+ for (const profile of await listDshProfileDirs(resolveDshHome())) {
66
+ const file = node_path.join(profile, DSH_PROFILE_GATE_FILE);
67
+ if (await isFile(file))
68
+ return file;
69
+ }
70
+ return null;
71
+ }
72
+ return firstFile(GATE_ARTIFACTS[harness] ?? [], workspaceRoot, home);
73
+ }
74
+ /** As {@link findGateFile}, for one gate id of a harness with two ({@link GATE_IDENTITY_ARTIFACTS}). */
75
+ export function findIdentityGateFile(gateId, workspaceRoot, home) {
76
+ return firstFile(GATE_IDENTITY_ARTIFACTS[gateId] ?? [], workspaceRoot, home);
77
+ }
78
+ async function firstFile(rels, workspaceRoot, home) {
79
+ for (const rel of rels) {
80
+ for (const root of [workspaceRoot, home]) {
81
+ const file = node_path.join(root, rel);
82
+ if (await isFile(file))
83
+ return file;
84
+ }
85
+ }
86
+ return null;
87
+ }
88
+ //# sourceMappingURL=gateArtifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateArtifacts.js","sourceRoot":"","sources":["../../src/harness/gateArtifacts.ts"],"names":[],"mappings":"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"}