@intutic/cli 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.
Files changed (225) hide show
  1. package/dist/cli.js +131 -130
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/attenuate.d.ts.map +1 -1
  4. package/dist/commands/attenuate.js +4 -2
  5. package/dist/commands/attenuate.js.map +1 -1
  6. package/dist/commands/budget.d.ts.map +1 -1
  7. package/dist/commands/budget.js +2 -2
  8. package/dist/commands/budget.js.map +1 -1
  9. package/dist/commands/connect.d.ts.map +1 -1
  10. package/dist/commands/connect.js +138 -49
  11. package/dist/commands/connect.js.map +1 -1
  12. package/dist/commands/disconnect.d.ts +25 -0
  13. package/dist/commands/disconnect.d.ts.map +1 -0
  14. package/dist/commands/disconnect.js +252 -0
  15. package/dist/commands/disconnect.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +19 -1
  17. package/dist/commands/doctor.d.ts.map +1 -1
  18. package/dist/commands/doctor.js +33 -41
  19. package/dist/commands/doctor.js.map +1 -1
  20. package/dist/commands/enforce.d.ts +10 -0
  21. package/dist/commands/enforce.d.ts.map +1 -1
  22. package/dist/commands/enforce.js +36 -0
  23. package/dist/commands/enforce.js.map +1 -1
  24. package/dist/commands/env.d.ts +1 -1
  25. package/dist/commands/env.d.ts.map +1 -1
  26. package/dist/commands/env.js +2 -7
  27. package/dist/commands/env.js.map +1 -1
  28. package/dist/commands/exec.d.ts +7 -8
  29. package/dist/commands/exec.d.ts.map +1 -1
  30. package/dist/commands/exec.js +59 -60
  31. package/dist/commands/exec.js.map +1 -1
  32. package/dist/commands/gateway.d.ts +2 -0
  33. package/dist/commands/gateway.d.ts.map +1 -1
  34. package/dist/commands/gateway.js +16 -3
  35. package/dist/commands/gateway.js.map +1 -1
  36. package/dist/commands/guardrails.d.ts.map +1 -1
  37. package/dist/commands/guardrails.js +18 -1
  38. package/dist/commands/guardrails.js.map +1 -1
  39. package/dist/commands/init.d.ts +5 -2
  40. package/dist/commands/init.d.ts.map +1 -1
  41. package/dist/commands/init.js +38 -22
  42. package/dist/commands/init.js.map +1 -1
  43. package/dist/commands/install-daemon.d.ts +1 -1
  44. package/dist/commands/install-daemon.d.ts.map +1 -1
  45. package/dist/commands/install-daemon.js +5 -3
  46. package/dist/commands/install-daemon.js.map +1 -1
  47. package/dist/commands/integrity.d.ts +31 -2
  48. package/dist/commands/integrity.d.ts.map +1 -1
  49. package/dist/commands/integrity.js +116 -3
  50. package/dist/commands/integrity.js.map +1 -1
  51. package/dist/commands/judge.d.ts +8 -4
  52. package/dist/commands/judge.d.ts.map +1 -1
  53. package/dist/commands/judge.js +41 -21
  54. package/dist/commands/judge.js.map +1 -1
  55. package/dist/commands/login.d.ts +1 -0
  56. package/dist/commands/login.d.ts.map +1 -1
  57. package/dist/commands/login.js +16 -1
  58. package/dist/commands/login.js.map +1 -1
  59. package/dist/commands/predict-cost.d.ts +1 -2
  60. package/dist/commands/predict-cost.d.ts.map +1 -1
  61. package/dist/commands/predict-cost.js +1 -4
  62. package/dist/commands/predict-cost.js.map +1 -1
  63. package/dist/commands/setup.d.ts +1 -2
  64. package/dist/commands/setup.d.ts.map +1 -1
  65. package/dist/commands/setup.js +11 -68
  66. package/dist/commands/setup.js.map +1 -1
  67. package/dist/commands/skill.d.ts +1 -0
  68. package/dist/commands/skill.d.ts.map +1 -1
  69. package/dist/commands/skill.js +17 -3
  70. package/dist/commands/skill.js.map +1 -1
  71. package/dist/commands/start.d.ts.map +1 -1
  72. package/dist/commands/start.js +5 -1
  73. package/dist/commands/start.js.map +1 -1
  74. package/dist/commands/syncContext.d.ts.map +1 -1
  75. package/dist/commands/syncContext.js +15 -5
  76. package/dist/commands/syncContext.js.map +1 -1
  77. package/dist/config/paths.d.ts +25 -3
  78. package/dist/config/paths.d.ts.map +1 -1
  79. package/dist/config/paths.js +47 -7
  80. package/dist/config/paths.js.map +1 -1
  81. package/dist/harness/agentFramework.d.ts +25 -0
  82. package/dist/harness/agentFramework.d.ts.map +1 -0
  83. package/dist/harness/agentFramework.js +37 -0
  84. package/dist/harness/agentFramework.js.map +1 -0
  85. package/dist/harness/agentcore.d.ts +6 -3
  86. package/dist/harness/agentcore.d.ts.map +1 -1
  87. package/dist/harness/agentcore.js +7 -4
  88. package/dist/harness/agentcore.js.map +1 -1
  89. package/dist/harness/agenticOrchestrator.d.ts +3 -5
  90. package/dist/harness/agenticOrchestrator.d.ts.map +1 -1
  91. package/dist/harness/agenticOrchestrator.js +3 -5
  92. package/dist/harness/agenticOrchestrator.js.map +1 -1
  93. package/dist/harness/aiSdkHarness.d.ts +1 -1
  94. package/dist/harness/aiSdkHarness.js +1 -1
  95. package/dist/harness/aiSdkWorkflow.d.ts +1 -1
  96. package/dist/harness/aiSdkWorkflow.d.ts.map +1 -1
  97. package/dist/harness/aiSdkWorkflow.js +5 -3
  98. package/dist/harness/aiSdkWorkflow.js.map +1 -1
  99. package/dist/harness/aider.d.ts +4 -3
  100. package/dist/harness/aider.d.ts.map +1 -1
  101. package/dist/harness/aider.js +7 -6
  102. package/dist/harness/aider.js.map +1 -1
  103. package/dist/harness/antigravity.d.ts +4 -2
  104. package/dist/harness/antigravity.d.ts.map +1 -1
  105. package/dist/harness/antigravity.js +15 -12
  106. package/dist/harness/antigravity.js.map +1 -1
  107. package/dist/harness/base.d.ts +5 -1
  108. package/dist/harness/base.d.ts.map +1 -1
  109. package/dist/harness/base.js +9 -8
  110. package/dist/harness/base.js.map +1 -1
  111. package/dist/harness/cline.d.ts +10 -4
  112. package/dist/harness/cline.d.ts.map +1 -1
  113. package/dist/harness/cline.js +40 -32
  114. package/dist/harness/cline.js.map +1 -1
  115. package/dist/harness/codex.d.ts +10 -4
  116. package/dist/harness/codex.d.ts.map +1 -1
  117. package/dist/harness/codex.js +30 -32
  118. package/dist/harness/codex.js.map +1 -1
  119. package/dist/harness/continue.d.ts +8 -5
  120. package/dist/harness/continue.d.ts.map +1 -1
  121. package/dist/harness/continue.js +27 -63
  122. package/dist/harness/continue.js.map +1 -1
  123. package/dist/harness/cursor.d.ts.map +1 -1
  124. package/dist/harness/cursor.js +2 -6
  125. package/dist/harness/cursor.js.map +1 -1
  126. package/dist/harness/detector.d.ts +1 -1
  127. package/dist/harness/detector.d.ts.map +1 -1
  128. package/dist/harness/detector.js +3 -1
  129. package/dist/harness/detector.js.map +1 -1
  130. package/dist/harness/dsh.d.ts +2 -2
  131. package/dist/harness/dsh.js +3 -3
  132. package/dist/harness/dsh.js.map +1 -1
  133. package/dist/harness/eve.d.ts +1 -1
  134. package/dist/harness/eve.js +1 -1
  135. package/dist/harness/githubCopilot.d.ts +4 -2
  136. package/dist/harness/githubCopilot.d.ts.map +1 -1
  137. package/dist/harness/githubCopilot.js +13 -8
  138. package/dist/harness/githubCopilot.js.map +1 -1
  139. package/dist/harness/grok.d.ts.map +1 -1
  140. package/dist/harness/grok.js +4 -6
  141. package/dist/harness/grok.js.map +1 -1
  142. package/dist/harness/jsSdkGatedAdapter.d.ts.map +1 -1
  143. package/dist/harness/jsSdkGatedAdapter.js +8 -9
  144. package/dist/harness/jsSdkGatedAdapter.js.map +1 -1
  145. package/dist/harness/langgraph.d.ts.map +1 -1
  146. package/dist/harness/langgraph.js +8 -10
  147. package/dist/harness/langgraph.js.map +1 -1
  148. package/dist/harness/muse.d.ts.map +1 -1
  149. package/dist/harness/muse.js +4 -6
  150. package/dist/harness/muse.js.map +1 -1
  151. package/dist/harness/n8n.d.ts +12 -2
  152. package/dist/harness/n8n.d.ts.map +1 -1
  153. package/dist/harness/n8n.js +66 -3
  154. package/dist/harness/n8n.js.map +1 -1
  155. package/dist/harness/openWebUI.d.ts +7 -2
  156. package/dist/harness/openWebUI.d.ts.map +1 -1
  157. package/dist/harness/openWebUI.js +15 -4
  158. package/dist/harness/openWebUI.js.map +1 -1
  159. package/dist/harness/openaiAgents.d.ts.map +1 -1
  160. package/dist/harness/openaiAgents.js +4 -1
  161. package/dist/harness/openaiAgents.js.map +1 -1
  162. package/dist/harness/opencode.d.ts +3 -2
  163. package/dist/harness/opencode.d.ts.map +1 -1
  164. package/dist/harness/opencode.js +7 -8
  165. package/dist/harness/opencode.js.map +1 -1
  166. package/dist/harness/openhands.d.ts +3 -2
  167. package/dist/harness/openhands.d.ts.map +1 -1
  168. package/dist/harness/openhands.js +40 -27
  169. package/dist/harness/openhands.js.map +1 -1
  170. package/dist/harness/rooCode.d.ts +6 -5
  171. package/dist/harness/rooCode.d.ts.map +1 -1
  172. package/dist/harness/rooCode.js +13 -18
  173. package/dist/harness/rooCode.js.map +1 -1
  174. package/dist/harness/sdkGatedAdapter.d.ts.map +1 -1
  175. package/dist/harness/sdkGatedAdapter.js +8 -9
  176. package/dist/harness/sdkGatedAdapter.js.map +1 -1
  177. package/dist/harness/trueforge.js +2 -2
  178. package/dist/harness/trueforge.js.map +1 -1
  179. package/dist/harness/types.d.ts.map +1 -1
  180. package/dist/harness/types.js +4 -1
  181. package/dist/harness/types.js.map +1 -1
  182. package/dist/harness/windsurf.d.ts +4 -2
  183. package/dist/harness/windsurf.d.ts.map +1 -1
  184. package/dist/harness/windsurf.js +14 -11
  185. package/dist/harness/windsurf.js.map +1 -1
  186. package/dist/harness/xirp.d.ts +5 -7
  187. package/dist/harness/xirp.d.ts.map +1 -1
  188. package/dist/harness/xirp.js +5 -7
  189. package/dist/harness/xirp.js.map +1 -1
  190. package/dist/lib/envInjector.d.ts +16 -6
  191. package/dist/lib/envInjector.d.ts.map +1 -1
  192. package/dist/lib/envInjector.js +99 -88
  193. package/dist/lib/envInjector.js.map +1 -1
  194. package/dist/lib/localProxy.d.ts +19 -0
  195. package/dist/lib/localProxy.d.ts.map +1 -0
  196. package/dist/lib/localProxy.js +33 -0
  197. package/dist/lib/localProxy.js.map +1 -0
  198. package/dist/lib/onboarding.d.ts +1 -1
  199. package/dist/lib/onboarding.d.ts.map +1 -1
  200. package/dist/lib/onboarding.js +21 -27
  201. package/dist/lib/onboarding.js.map +1 -1
  202. package/dist/lib/otelPropagation.d.ts +1 -1
  203. package/dist/lib/otelPropagation.js +1 -1
  204. package/dist/lib/policySnapshot.d.ts +2 -1
  205. package/dist/lib/policySnapshot.d.ts.map +1 -1
  206. package/dist/lib/policySnapshot.js +11 -4
  207. package/dist/lib/policySnapshot.js.map +1 -1
  208. package/dist/lib/sandbox/image.d.ts +27 -0
  209. package/dist/lib/sandbox/image.d.ts.map +1 -0
  210. package/dist/lib/sandbox/image.js +54 -0
  211. package/dist/lib/sandbox/image.js.map +1 -0
  212. package/dist/lib/sandbox/oci.d.ts +1 -0
  213. package/dist/lib/sandbox/oci.d.ts.map +1 -1
  214. package/dist/lib/sandbox/oci.js +4 -0
  215. package/dist/lib/sandbox/oci.js.map +1 -1
  216. package/dist/lib/sandbox/types.d.ts +5 -0
  217. package/dist/lib/sandbox/types.d.ts.map +1 -1
  218. package/package.json +6 -5
  219. package/resources/sandbox/Dockerfile +30 -0
  220. package/resources/sandbox/entrypoint.sh +108 -0
  221. package/resources/sandbox/firecracker-launch.sh +120 -0
  222. package/dist/harness/vscodeSettingsWriter.d.ts +0 -40
  223. package/dist/harness/vscodeSettingsWriter.d.ts.map +0 -1
  224. package/dist/harness/vscodeSettingsWriter.js +0 -116
  225. package/dist/harness/vscodeSettingsWriter.js.map +0 -1
@@ -1,18 +1,22 @@
1
1
  /**
2
2
  * githubCopilot.ts — GitHub Copilot adapter.
3
3
  *
4
- * Detects GitHub Copilot presence (.git, .github, or .github/copilot-instructions.md)
5
- * and writes Markdown rules to `.github/copilot-instructions.md`.
4
+ * Detects GitHub Copilot presence (.git, .github, or .github/copilot-instructions.md),
5
+ * writes Markdown rules to `.github/copilot-instructions.md`, and installs the
6
+ * VS Code agent-mode PreToolUse gate (`.github/hooks/intutic-governance.json`
7
+ * and `~/.copilot/hooks/intutic-governance.json`) — see githubCopilotHooks.ts.
6
8
  *
7
9
  * HLD §3.14 — Harness Onboarding Matrix
8
10
  * @module
9
11
  */
10
- import { join, dirname } from 'node:path';
11
- import { access, mkdir, writeFile, rename } from 'node:fs/promises';
12
+ import { join } from 'node:path';
13
+ import { access } from 'node:fs/promises';
12
14
  import { existsSync } from 'node:fs';
13
15
  import { HarnessType } from '@intutic/shared-types';
14
16
  import { hashFile } from '../lib/hash.js';
15
17
  import { buildMarkdownContent } from './base.js';
18
+ import { loadCredentials } from '../config/store.js';
19
+ import { writeGithubCopilotHooks, writeOwnedFile } from '@intutic/sync-daemon';
16
20
  const CONFIG_FILE = '.github/copilot-instructions.md';
17
21
  export const githubCopilotAdapter = {
18
22
  type: HarnessType.GITHUB_COPILOT,
@@ -32,14 +36,15 @@ export const githubCopilotAdapter = {
32
36
  }
33
37
  },
34
38
  async writeConfig(workspaceRoot, sops, proxyUrl) {
39
+ // The gate is installed even with zero SOPs: it is what refuses tool
40
+ // calls, and the built-in protections apply without any SOP.
41
+ const creds = await loadCredentials();
42
+ await writeGithubCopilotHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
35
43
  if (sops.length === 0)
36
44
  return null;
37
45
  const filePath = join(workspaceRoot, CONFIG_FILE);
38
- const tmpPath = filePath + '.intutic-tmp';
39
46
  const content = buildMarkdownContent(sops, proxyUrl);
40
- await mkdir(dirname(filePath), { recursive: true });
41
- await writeFile(tmpPath, content, 'utf-8');
42
- await rename(tmpPath, filePath);
47
+ await writeOwnedFile(filePath, workspaceRoot, content);
43
48
  return filePath;
44
49
  },
45
50
  async readCurrentHash(workspaceRoot) {
@@ -1 +1 @@
1
- {"version":3,"file":"githubCopilot.js","sourceRoot":"","sources":["../../src/harness/githubCopilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,GAAG,iCAAiC,CAAA;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAoB;IACnD,IAAI,EAAE,WAAW,CAAC,cAAc;IAChC,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAA;YAClE,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;YACxB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAA;QACzC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpD,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAC1C,MAAM,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC/B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"githubCopilot.js","sourceRoot":"","sources":["../../src/harness/githubCopilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE9E,MAAM,WAAW,GAAG,iCAAiC,CAAA;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAoB;IACnD,IAAI,EAAE,WAAW,CAAC,cAAc;IAChC,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAA;YAClE,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;YACxB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,qEAAqE;QACrE,6DAA6D;QAC7D,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,uBAAuB,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,CAAA;QAErF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpD,MAAM,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;QACtD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"grok.d.ts","sourceRoot":"","sources":["../../src/harness/grok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,eAAO,MAAM,WAAW,EAAE,eA0CzB,CAAA"}
1
+ {"version":3,"file":"grok.d.ts","sourceRoot":"","sources":["../../src/harness/grok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQjD,eAAO,MAAM,WAAW,EAAE,eAuCzB,CAAA"}
@@ -11,13 +11,14 @@
11
11
  * HLD §3.14 — Harness Onboarding Matrix
12
12
  * @module
13
13
  */
14
- import { access, writeFile, rename, mkdir } from 'node:fs/promises';
15
- import { join, dirname } from 'node:path';
14
+ import { access } from 'node:fs/promises';
15
+ import { join } from 'node:path';
16
16
  import { homedir } from 'node:os';
17
17
  import { HarnessType } from '@intutic/shared-types';
18
18
  import { hashFile } from '../lib/hash.js';
19
19
  import { buildMarkdownContent } from './base.js';
20
20
  import { writeGrokHooks } from '@intutic/sync-daemon/harness/grokHooks';
21
+ import { writeOwnedFile } from '@intutic/sync-daemon';
21
22
  const CONFIG_FILE = 'AGENTS.md';
22
23
  export const grokAdapter = {
23
24
  type: HarnessType.GROK,
@@ -57,10 +58,7 @@ export const grokAdapter = {
57
58
  // other `---`-separated rules file in this codebase shares.
58
59
  const filePath = join(workspaceRoot, CONFIG_FILE);
59
60
  const content = buildMarkdownContent(sops, proxyUrl);
60
- await mkdir(dirname(filePath), { recursive: true });
61
- const tmp = filePath + '.intutic-tmp';
62
- await writeFile(tmp, content, 'utf-8');
63
- await rename(tmp, filePath);
61
+ await writeOwnedFile(filePath, workspaceRoot, content);
64
62
  // 2. PreToolUse gate (project + user level) + config.toml model base_url
65
63
  // merge (project + user level).
66
64
  await writeGrokHooks(workspaceRoot, proxyUrl, '');
@@ -1 +1 @@
1
- {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../src/harness/grok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAEvE,MAAM,WAAW,GAAG,WAAW,CAAA;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,oEAAoE;QACpE,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC7F,CAAC;QACD,0EAA0E;QAC1E,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxF,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACzF,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YAC9C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,sEAAsE;QACtE,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpD,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,MAAM,GAAG,GAAG,QAAQ,GAAG,cAAc,CAAA;QACrC,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACtC,MAAM,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAE3B,yEAAyE;QACzE,mCAAmC;QACnC,MAAM,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;QAEjD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,IAAI,CAAC;YAAC,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;IACvF,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../src/harness/grok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,WAAW,GAAG,WAAW,CAAA;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,oEAAoE;QACpE,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC7F,CAAC;QACD,0EAA0E;QAC1E,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxF,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACzF,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YAC9C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,sEAAsE;QACtE,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpD,MAAM,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;QAEtD,yEAAyE;QACzE,mCAAmC;QACnC,MAAM,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;QAEjD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,IAAI,CAAC;YAAC,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;IACvF,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"jsSdkGatedAdapter.d.ts","sourceRoot":"","sources":["../../src/harness/jsSdkGatedAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD;;;;;;;sCAOsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,IAAI,EAAE,WAAW,CAAA;IACjB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAA;IACzC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,YAAY,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAMD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOhE;AAYD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,uBAAuB,GAAG,eAAe,CAkFpF"}
1
+ {"version":3,"file":"jsSdkGatedAdapter.d.ts","sourceRoot":"","sources":["../../src/harness/jsSdkGatedAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD;;;;;;;sCAOsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,IAAI,EAAE,WAAW,CAAA;IACjB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAA;IACzC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,YAAY,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAMD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOhE;AAYD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,uBAAuB,GAAG,eAAe,CA+EpF"}
@@ -26,10 +26,12 @@
26
26
  *
27
27
  * @module
28
28
  */
29
- import { join, dirname } from 'node:path';
30
- import { readFile, writeFile, rename, mkdir } from 'node:fs/promises';
29
+ import { join } from 'node:path';
30
+ import { readFile } from 'node:fs/promises';
31
+ import { anthropicBaseUrl, openaiBaseUrl, proxyHost } from '@intutic/shared-types';
31
32
  import { hashFile } from '../lib/hash.js';
32
33
  import { newIso } from '@intutic/id';
34
+ import { writeOwnedFile } from '@intutic/sync-daemon';
33
35
  const CONFIG_FILE = '.env.intutic';
34
36
  function isDigit(c) {
35
37
  return c >= '0' && c <= '9';
@@ -108,9 +110,9 @@ export function makeJsSdkGatedAdapter(spec) {
108
110
  `# Last sync: ${newIso()}`,
109
111
  '# Source this file: source .env.intutic',
110
112
  '',
111
- `export ANTHROPIC_BASE_URL="${proxyUrl}"`,
112
- `export OPENAI_BASE_URL="${proxyUrl}"`,
113
- `export INTUTIC_PROXY_URL="${proxyUrl}"`,
113
+ `export ANTHROPIC_BASE_URL="${anthropicBaseUrl(proxyUrl)}"`,
114
+ `export OPENAI_BASE_URL="${openaiBaseUrl(proxyUrl)}"`,
115
+ `export INTUTIC_PROXY_URL="${proxyHost(proxyUrl)}"`,
114
116
  `export INTUTIC_SOP_COUNT=${sops.length}`,
115
117
  '',
116
118
  ...preamble.map((line) => `# ${line}`),
@@ -120,10 +122,7 @@ export function makeJsSdkGatedAdapter(spec) {
120
122
  `# See https://docs.intutic.ai/integrations/${spec.docsSlug}`,
121
123
  '',
122
124
  ].join('\n');
123
- await mkdir(dirname(filePath), { recursive: true });
124
- const tmpEnv = filePath + '.intutic-tmp';
125
- await writeFile(tmpEnv, envContent, 'utf-8');
126
- await rename(tmpEnv, filePath);
125
+ await writeOwnedFile(filePath, workspaceRoot, envContent);
127
126
  return filePath;
128
127
  },
129
128
  async readCurrentHash(workspaceRoot) {
@@ -1 +1 @@
1
- {"version":3,"file":"jsSdkGatedAdapter.js","sourceRoot":"","sources":["../../src/harness/jsSdkGatedAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsSdkGatedAdapter.js","sourceRoot":"","sources":["../../src/harness/jsSdkGatedAdapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"langgraph.d.ts","sourceRoot":"","sources":["../../src/harness/langgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AASjD,eAAO,MAAM,gBAAgB,EAAE,eAqD9B,CAAA"}
1
+ {"version":3,"file":"langgraph.d.ts","sourceRoot":"","sources":["../../src/harness/langgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAUjD,eAAO,MAAM,gBAAgB,EAAE,eAkD9B,CAAA"}
@@ -17,11 +17,12 @@
17
17
  * HLD §3.14 — Harness Onboarding Matrix
18
18
  * @module
19
19
  */
20
- import { join, dirname } from 'node:path';
21
- import { readFile, writeFile, rename, mkdir } from 'node:fs/promises';
22
- import { HarnessType } from '@intutic/shared-types';
20
+ import { join } from 'node:path';
21
+ import { readFile } from 'node:fs/promises';
22
+ import { HarnessType, anthropicBaseUrl, openaiBaseUrl, proxyHost } from '@intutic/shared-types';
23
23
  import { hashFile } from '../lib/hash.js';
24
24
  import { newIso } from '@intutic/id';
25
+ import { writeOwnedFile } from '@intutic/sync-daemon';
25
26
  const CONFIG_FILE = '.env.intutic';
26
27
  /** Dependency manifests scanned for a langgraph/langchain dependency. */
27
28
  const MANIFEST_FILES = ['pyproject.toml', 'requirements.txt', 'uv.lock'];
@@ -48,9 +49,9 @@ export const langgraphAdapter = {
48
49
  `# Last sync: ${newIso()}`,
49
50
  '# Source this file: source .env.intutic',
50
51
  '',
51
- `export ANTHROPIC_BASE_URL="${proxyUrl}"`,
52
- `export OPENAI_BASE_URL="${proxyUrl}"`,
53
- `export INTUTIC_PROXY_URL="${proxyUrl}"`,
52
+ `export ANTHROPIC_BASE_URL="${anthropicBaseUrl(proxyUrl)}"`,
53
+ `export OPENAI_BASE_URL="${openaiBaseUrl(proxyUrl)}"`,
54
+ `export INTUTIC_PROXY_URL="${proxyHost(proxyUrl)}"`,
54
55
  `export INTUTIC_SOP_COUNT=${sops.length}`,
55
56
  '',
56
57
  '# These env vars govern LLM egress only. LangGraph tools run in your own',
@@ -62,10 +63,7 @@ export const langgraphAdapter = {
62
63
  '# body runs. See https://docs.intutic.ai/integrations/langgraph',
63
64
  '',
64
65
  ].join('\n');
65
- await mkdir(dirname(filePath), { recursive: true });
66
- const tmpEnv = filePath + '.intutic-tmp';
67
- await writeFile(tmpEnv, envContent, 'utf-8');
68
- await rename(tmpEnv, filePath);
66
+ await writeOwnedFile(filePath, workspaceRoot, envContent);
69
67
  return filePath;
70
68
  },
71
69
  async readCurrentHash(workspaceRoot) {
@@ -1 +1 @@
1
- {"version":3,"file":"langgraph.js","sourceRoot":"","sources":["../../src/harness/langgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,WAAW,GAAG,cAAc,CAAA;AAElC,yEAAyE;AACzE,MAAM,cAAc,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAA;AAExE,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,WAAW,CAAC,SAAS;IAC3B,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;gBACtE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;gBACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAAE,OAAO,IAAI,CAAA;YAC7E,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,UAAU,GAAG;YACjB,6CAA6C;YAC7C,gDAAgD;YAChD,gBAAgB,MAAM,EAAE,EAAE;YAC1B,yCAAyC;YACzC,EAAE;YACF,8BAA8B,QAAQ,GAAG;YACzC,2BAA2B,QAAQ,GAAG;YACtC,6BAA6B,QAAQ,GAAG;YACxC,4BAA4B,IAAI,CAAC,MAAM,EAAE;YACzC,EAAE;YACF,0EAA0E;YAC1E,oEAAoE;YACpE,sCAAsC;YACtC,gCAAgC;YAChC,iDAAiD;YACjD,uEAAuE;YACvE,iEAAiE;YACjE,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEZ,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAA;QACxC,MAAM,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QAC5C,MAAM,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAE9B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"langgraph.js","sourceRoot":"","sources":["../../src/harness/langgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAG/F,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,WAAW,GAAG,cAAc,CAAA;AAElC,yEAAyE;AACzE,MAAM,cAAc,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAA;AAExE,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,WAAW,CAAC,SAAS;IAC3B,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;gBACtE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;gBACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAAE,OAAO,IAAI,CAAA;YAC7E,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,UAAU,GAAG;YACjB,6CAA6C;YAC7C,gDAAgD;YAChD,gBAAgB,MAAM,EAAE,EAAE;YAC1B,yCAAyC;YACzC,EAAE;YACF,8BAA8B,gBAAgB,CAAC,QAAQ,CAAC,GAAG;YAC3D,2BAA2B,aAAa,CAAC,QAAQ,CAAC,GAAG;YACrD,6BAA6B,SAAS,CAAC,QAAQ,CAAC,GAAG;YACnD,4BAA4B,IAAI,CAAC,MAAM,EAAE;YACzC,EAAE;YACF,0EAA0E;YAC1E,oEAAoE;YACpE,sCAAsC;YACtC,gCAAgC;YAChC,iDAAiD;YACjD,uEAAuE;YACvE,iEAAiE;YACjE,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEZ,MAAM,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;QAEzD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"muse.d.ts","sourceRoot":"","sources":["../../src/harness/muse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAYjD,eAAO,MAAM,WAAW,EAAE,eA2DzB,CAAA"}
1
+ {"version":3,"file":"muse.d.ts","sourceRoot":"","sources":["../../src/harness/muse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAajD,eAAO,MAAM,WAAW,EAAE,eAwDzB,CAAA"}
@@ -17,13 +17,14 @@
17
17
  * HLD §3.14 — Harness Onboarding Matrix
18
18
  * @module
19
19
  */
20
- import { join, dirname } from 'node:path';
21
- import { access, writeFile, rename, mkdir } from 'node:fs/promises';
20
+ import { join } from 'node:path';
21
+ import { access } from 'node:fs/promises';
22
22
  import { homedir } from 'node:os';
23
23
  import { HarnessType } from '@intutic/shared-types';
24
24
  import { hashFile } from '../lib/hash.js';
25
25
  import { buildMarkdownContent } from './base.js';
26
26
  import { writeMuseHooks } from '@intutic/sync-daemon/harness/museHooks';
27
+ import { writeOwnedFile } from '@intutic/sync-daemon';
27
28
  /** Workspace-relative rules file. Muse reads this, falling back to CLAUDE.md. */
28
29
  const CONFIG_FILE = 'AGENTS.md';
29
30
  /** `~/.config/muse/settings.json` — carries `schema_version`, `mcp_servers`,
@@ -67,10 +68,7 @@ export const museAdapter = {
67
68
  // have a rules file, so sops are not ignored here.
68
69
  if (sops.length > 0) {
69
70
  const content = buildMarkdownContent(sops, proxyUrl);
70
- await mkdir(dirname(agentsPath), { recursive: true });
71
- const tmp = agentsPath + '.intutic-tmp';
72
- await writeFile(tmp, content, 'utf-8');
73
- await rename(tmp, agentsPath);
71
+ await writeOwnedFile(agentsPath, workspaceRoot, content);
74
72
  }
75
73
  // 2. PreToolUse/PermissionRequest hooks (project .muse/hooks.json +
76
74
  // managed_hooks_path merge into ~/.config/muse/settings.json).
@@ -1 +1 @@
1
- {"version":3,"file":"muse.js","sourceRoot":"","sources":["../../src/harness/muse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"muse.js","sourceRoot":"","sources":["../../src/harness/muse.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  /**
2
- * n8n adapter — Real-time REST parameter sync.
2
+ * n8n adapter — Real-time REST parameter sync plus the workflow-level gate.
3
3
  *
4
4
  * Interacts with n8n workflow management API (GET/PUT /api/v1/workflows)
5
- * to inject Intutic proxy URL and SOP governance rules as workflow variables.
5
+ * to inject Intutic proxy URL and SOP governance rules as workflow variables,
6
+ * and writes the external-hook gate module (`~/.intutic/hooks/
7
+ * n8n-governance-hook.js`) with its INSTALL.md — see n8nHooks.ts. The gate
8
+ * takes effect only once the n8n operator sets EXTERNAL_HOOK_FILES to it.
6
9
  *
7
10
  * Supports local n8n instances by falling back to unauthenticated requests
8
11
  * if N8N_API_TOKEN is not provided.
@@ -13,5 +16,12 @@
13
16
  * @module
14
17
  */
15
18
  import type { IHarnessAdapter } from './types.js';
19
+ import { type DisconnectPlan } from '@intutic/sync-daemon';
16
20
  export declare const n8nAdapter: IHarnessAdapter;
21
+ /**
22
+ * Plans removing the two variables `writeConfig` sets on every workflow in
23
+ * the local n8n. Read-only until the plan is applied; an n8n that does not
24
+ * answer gets a note instead.
25
+ */
26
+ export declare function planN8nDisconnect(plan: DisconnectPlan): Promise<void>;
17
27
  //# sourceMappingURL=n8n.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"n8n.d.ts","sourceRoot":"","sources":["../../src/harness/n8n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAwEjD,eAAO,MAAM,UAAU,EAAE,eAoIxB,CAAA"}
1
+ {"version":3,"file":"n8n.d.ts","sourceRoot":"","sources":["../../src/harness/n8n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAwEzE,eAAO,MAAM,UAAU,EAAE,eAyIxB,CAAA;AAKD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C3E"}
@@ -1,8 +1,11 @@
1
1
  /**
2
- * n8n adapter — Real-time REST parameter sync.
2
+ * n8n adapter — Real-time REST parameter sync plus the workflow-level gate.
3
3
  *
4
4
  * Interacts with n8n workflow management API (GET/PUT /api/v1/workflows)
5
- * to inject Intutic proxy URL and SOP governance rules as workflow variables.
5
+ * to inject Intutic proxy URL and SOP governance rules as workflow variables,
6
+ * and writes the external-hook gate module (`~/.intutic/hooks/
7
+ * n8n-governance-hook.js`) with its INSTALL.md — see n8nHooks.ts. The gate
8
+ * takes effect only once the n8n operator sets EXTERNAL_HOOK_FILES to it.
6
9
  *
7
10
  * Supports local n8n instances by falling back to unauthenticated requests
8
11
  * if N8N_API_TOKEN is not provided.
@@ -14,6 +17,8 @@
14
17
  */
15
18
  import { createHash } from 'node:crypto';
16
19
  import { HarnessType } from '@intutic/shared-types';
20
+ import { loadCredentials } from '../config/store.js';
21
+ import { writeN8nHooks } from '@intutic/sync-daemon';
17
22
  // Format SOPs for n8n parameters
18
23
  function buildSopsMarkdown(sops) {
19
24
  if (sops.length === 0)
@@ -42,7 +47,11 @@ export const n8nAdapter = {
42
47
  return !!process.env.N8N_API_TOKEN;
43
48
  }
44
49
  },
45
- async writeConfig(_workspaceRoot, sops, proxyUrl) {
50
+ async writeConfig(workspaceRoot, sops, proxyUrl) {
51
+ // Written first and independently of the REST sync below: the gate file
52
+ // is local, and an unreachable n8n API must not stop it being refreshed.
53
+ const creds = await loadCredentials();
54
+ await writeN8nHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
46
55
  const n8nUrl = process.env.N8N_URL || 'http://localhost:5678';
47
56
  const sopsMarkdown = buildSopsMarkdown(sops);
48
57
  try {
@@ -147,4 +156,58 @@ export const n8nAdapter = {
147
156
  }
148
157
  },
149
158
  };
159
+ /** The workflow variables `writeConfig` sets; `intutic disconnect` takes them out again. */
160
+ const INTUTIC_VARIABLES = ['intutic_proxy_url', 'intutic_governance_rules'];
161
+ /**
162
+ * Plans removing the two variables `writeConfig` sets on every workflow in
163
+ * the local n8n. Read-only until the plan is applied; an n8n that does not
164
+ * answer gets a note instead.
165
+ */
166
+ export async function planN8nDisconnect(plan) {
167
+ const n8nUrl = process.env.N8N_URL || 'http://localhost:5678';
168
+ let workflows;
169
+ try {
170
+ const listRes = await fetch(`${n8nUrl}/api/v1/workflows`, { headers: getHeaders(), signal: AbortSignal.timeout(5000) });
171
+ if (!listRes.ok)
172
+ throw new Error(`HTTP ${listRes.status}`);
173
+ workflows = (await listRes.json()).data ?? [];
174
+ }
175
+ catch (err) {
176
+ plan.note(n8nUrl, `n8n did not answer (${err instanceof Error ? err.message : String(err)}), so its workflows were not checked for the ${INTUTIC_VARIABLES.join(' and ')} variables`);
177
+ return;
178
+ }
179
+ for (const w of workflows) {
180
+ const detailRes = await fetch(`${n8nUrl}/api/v1/workflows/${w.id}`, { headers: getHeaders(), signal: AbortSignal.timeout(5000) });
181
+ if (!detailRes.ok)
182
+ continue;
183
+ const detail = (await detailRes.json());
184
+ const variables = detail.settings?.variables;
185
+ if (!variables || !INTUTIC_VARIABLES.some((k) => k in variables))
186
+ continue;
187
+ plan.change(`${n8nUrl}/api/v1/workflows/${w.id}`, `remove the Intutic variables from workflow "${detail.name ?? w.name ?? w.id}"`, async () => {
188
+ const kept = Object.fromEntries(Object.entries(variables).filter(([k]) => !INTUTIC_VARIABLES.includes(k)));
189
+ const settings = { ...detail.settings };
190
+ if (Object.keys(kept).length > 0)
191
+ settings.variables = kept;
192
+ else
193
+ delete settings.variables;
194
+ const body = {
195
+ name: detail.name ?? w.name ?? 'Untitled',
196
+ nodes: detail.nodes ?? [],
197
+ connections: detail.connections ?? {},
198
+ settings,
199
+ };
200
+ if (detail.staticData !== undefined)
201
+ body.staticData = detail.staticData;
202
+ const res = await fetch(`${n8nUrl}/api/v1/workflows/${w.id}`, {
203
+ method: 'PUT',
204
+ headers: getHeaders(),
205
+ body: JSON.stringify(body),
206
+ signal: AbortSignal.timeout(5000),
207
+ });
208
+ if (!res.ok)
209
+ throw new Error(`n8n refused the update to workflow ${w.id}: HTTP ${res.status}`);
210
+ });
211
+ }
212
+ }
150
213
  //# sourceMappingURL=n8n.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"n8n.js","sourceRoot":"","sources":["../../src/harness/n8n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"n8n.js","sourceRoot":"","sources":["../../src/harness/n8n.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  /**
2
- * OpenWebUI adapter — detection-only stub for the OpenWebUI interface.
2
+ * OpenWebUI adapter — writes the Open WebUI governance filter.
3
3
  *
4
4
  * OpenWebUI is a Docker-based service and cannot be reliably detected
5
5
  * via filesystem checks. Detection always returns false; the harness
6
- * can be manually enabled via CLI flags or org config.
6
+ * is enabled by listing `open-webui` in the workspace's harnesses.
7
+ *
8
+ * Once enabled, each sync writes `~/.open-webui/intutic-governance-filter.py`
9
+ * (see openWebuiHooks.ts). Open WebUI loads filters only through its admin UI,
10
+ * so an admin pastes that file in as a Function once; this adapter cannot
11
+ * install it into a running instance.
7
12
  *
8
13
  * HLD §3.14 — Harness Onboarding Matrix
9
14
  * @module
@@ -1 +1 @@
1
- {"version":3,"file":"openWebUI.d.ts","sourceRoot":"","sources":["../../src/harness/openWebUI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,gBAAgB,EAAE,eAe9B,CAAA"}
1
+ {"version":3,"file":"openWebUI.d.ts","sourceRoot":"","sources":["../../src/harness/openWebUI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAIjD,eAAO,MAAM,gBAAgB,EAAE,eAiB9B,CAAA"}
@@ -1,22 +1,33 @@
1
1
  /**
2
- * OpenWebUI adapter — detection-only stub for the OpenWebUI interface.
2
+ * OpenWebUI adapter — writes the Open WebUI governance filter.
3
3
  *
4
4
  * OpenWebUI is a Docker-based service and cannot be reliably detected
5
5
  * via filesystem checks. Detection always returns false; the harness
6
- * can be manually enabled via CLI flags or org config.
6
+ * is enabled by listing `open-webui` in the workspace's harnesses.
7
+ *
8
+ * Once enabled, each sync writes `~/.open-webui/intutic-governance-filter.py`
9
+ * (see openWebuiHooks.ts). Open WebUI loads filters only through its admin UI,
10
+ * so an admin pastes that file in as a Function once; this adapter cannot
11
+ * install it into a running instance.
7
12
  *
8
13
  * HLD §3.14 — Harness Onboarding Matrix
9
14
  * @module
10
15
  */
16
+ import { join } from 'node:path';
17
+ import { homedir } from 'node:os';
11
18
  import { HarnessType } from '@intutic/shared-types';
19
+ import { loadCredentials } from '../config/store.js';
20
+ import { writeOpenWebuiHooks } from '@intutic/sync-daemon';
12
21
  export const openWebUIAdapter = {
13
22
  type: HarnessType.OPEN_WEBUI,
14
23
  configFileName: '',
15
24
  async detect(_workspaceRoot) {
16
25
  return false;
17
26
  },
18
- async writeConfig() {
19
- return null;
27
+ async writeConfig(workspaceRoot, _sops, proxyUrl) {
28
+ const creds = await loadCredentials();
29
+ await writeOpenWebuiHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
30
+ return join(homedir(), '.open-webui', 'intutic-governance-filter.py');
20
31
  },
21
32
  async readCurrentHash() {
22
33
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"openWebUI.js","sourceRoot":"","sources":["../../src/harness/openWebUI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,WAAW,CAAC,UAAU;IAC5B,cAAc,EAAE,EAAE;IAElB,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"openWebUI.js","sourceRoot":"","sources":["../../src/harness/openWebUI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,WAAW,CAAC,UAAU;IAC5B,cAAc,EAAE,EAAE;IAElB,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,KAAqB,EAAE,QAAgB;QAC9E,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,mBAAmB,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,CAAA;QACjF,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,8BAA8B,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"openaiAgents.d.ts","sourceRoot":"","sources":["../../src/harness/openaiAgents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAuCjD,eAAO,MAAM,mBAAmB,EAAE,eAwCjC,CAAA"}
1
+ {"version":3,"file":"openaiAgents.d.ts","sourceRoot":"","sources":["../../src/harness/openaiAgents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAuCjD,eAAO,MAAM,mBAAmB,EAAE,eA0CjC,CAAA"}
@@ -35,7 +35,8 @@
35
35
  * HLD §3.14 — Harness Onboarding Matrix
36
36
  * @module
37
37
  */
38
- import { appendFile } from 'node:fs/promises';
38
+ import { appendFile, readFile } from 'node:fs/promises';
39
+ import { noteWritten } from '@intutic/sync-daemon';
39
40
  import { HarnessType } from '@intutic/shared-types';
40
41
  import { makeSdkGatedAdapter } from './sdkGatedAdapter.js';
41
42
  import { makeJsSdkGatedAdapter } from './jsSdkGatedAdapter.js';
@@ -98,6 +99,8 @@ export const openaiAgentsAdapter = {
98
99
  '# See https://docs.intutic.ai/integrations/openai-agents',
99
100
  '',
100
101
  ].join('\n'), 'utf-8');
102
+ // Still entirely Intutic's: recorded, so disconnect does not mistake the addition for a user edit.
103
+ await noteWritten(filePath, workspaceRoot, await readFile(filePath, 'utf-8'));
101
104
  }
102
105
  return filePath;
103
106
  },
@@ -1 +1 @@
1
- {"version":3,"file":"openaiAgents.js","sourceRoot":"","sources":["../../src/harness/openaiAgents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D;wEACwE;AACxE,MAAM,aAAa,GAAG,mBAAmB,CAAC;IACxC,IAAI,EAAE,WAAW,CAAC,aAAa;IAC/B,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,CAAC,eAAe,CAAC;IAC3B,UAAU,EAAE,+BAA+B;IAC3C,UAAU,EAAE,+EAA+E;IAC3F,YAAY,EACV,mFAAmF;QACnF,iDAAiD;IACnD,QAAQ,EAAE,eAAe;CAC1B,CAAC,CAAA;AAEF;;;;;0DAK0D;AAC1D,MAAM,SAAS,GAAG,qBAAqB,CAAC;IACtC,IAAI,EAAE,WAAW,CAAC,aAAa;IAC/B,KAAK,EAAE,gCAAgC;IACvC,QAAQ,EAAE,EAAE;IACZ,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,qEAAqE;IACjF,YAAY,EACV,4FAA4F;QAC5F,2FAA2F;QAC3F,wFAAwF;QACxF,gCAAgC;IAClC,QAAQ,EAAE,eAAe;CAC1B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAoB;IAClD,IAAI,EAAE,WAAW,CAAC,aAAa;IAC/B,cAAc,EAAE,cAAc;IAE9B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,OAAO,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IAC/F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ;QAC7C,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;YACnC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;SAChC,CAAC,CAAA;QACF,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC7D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC/E,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;YACnB,oEAAoE;YACpE,sEAAsE;YACtE,mEAAmE;YACnE,0CAA0C;YAC1C,MAAM,UAAU,CACd,QAAQ,EACR;gBACE,+EAA+E;gBAC/E,8EAA8E;gBAC9E,+BAA+B;gBAC/B,yEAAyE;gBACzE,0DAA0D;gBAC1D,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,OAAO,CACR,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,sEAAsE;IACtE,eAAe,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,aAAa,CAAC;CACjF,CAAA"}
1
+ {"version":3,"file":"openaiAgents.js","sourceRoot":"","sources":["../../src/harness/openaiAgents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D;wEACwE;AACxE,MAAM,aAAa,GAAG,mBAAmB,CAAC;IACxC,IAAI,EAAE,WAAW,CAAC,aAAa;IAC/B,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,CAAC,eAAe,CAAC;IAC3B,UAAU,EAAE,+BAA+B;IAC3C,UAAU,EAAE,+EAA+E;IAC3F,YAAY,EACV,mFAAmF;QACnF,iDAAiD;IACnD,QAAQ,EAAE,eAAe;CAC1B,CAAC,CAAA;AAEF;;;;;0DAK0D;AAC1D,MAAM,SAAS,GAAG,qBAAqB,CAAC;IACtC,IAAI,EAAE,WAAW,CAAC,aAAa;IAC/B,KAAK,EAAE,gCAAgC;IACvC,QAAQ,EAAE,EAAE;IACZ,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,qEAAqE;IACjF,YAAY,EACV,4FAA4F;QAC5F,2FAA2F;QAC3F,wFAAwF;QACxF,gCAAgC;IAClC,QAAQ,EAAE,eAAe;CAC1B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAoB;IAClD,IAAI,EAAE,WAAW,CAAC,aAAa;IAC/B,cAAc,EAAE,cAAc;IAE9B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,OAAO,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IAC/F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ;QAC7C,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;YACnC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;SAChC,CAAC,CAAA;QACF,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC7D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC/E,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;YACnB,oEAAoE;YACpE,sEAAsE;YACtE,mEAAmE;YACnE,0CAA0C;YAC1C,MAAM,UAAU,CACd,QAAQ,EACR;gBACE,+EAA+E;gBAC/E,8EAA8E;gBAC9E,+BAA+B;gBAC/B,yEAAyE;gBACzE,0DAA0D;gBAC1D,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,OAAO,CACR,CAAA;YACD,mGAAmG;YACnG,MAAM,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/E,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,sEAAsE;IACtE,eAAe,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,aAAa,CAAC;CACjF,CAAA"}
@@ -13,8 +13,9 @@
13
13
  * `tool.execute.before` hook (1.x) / `tool execute.before` hook (2.x) before
14
14
  * every tool call; throwing refuses the call. That plugin is generated by
15
15
  * `@intutic/sync-daemon`'s `openCodeHooks.ts`, the same split Muse and Grok
16
- * use for their hook writers. `opencode.json` is not written — see the
17
- * writer's module doc.
16
+ * use for their hook writers. This adapter does not write `opencode.json`;
17
+ * the sync daemon's `mcpAutoWrite.ts` edits its `mcp` block only (TD-487) —
18
+ * see the writer's module doc.
18
19
  *
19
20
  * HLD §3.14 — Harness Onboarding Matrix
20
21
  * @module
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/harness/opencode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAajD,eAAO,MAAM,eAAe,EAAE,eA6D7B,CAAA"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/harness/opencode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAcjD,eAAO,MAAM,eAAe,EAAE,eA0D7B,CAAA"}
@@ -13,19 +13,21 @@
13
13
  * `tool.execute.before` hook (1.x) / `tool execute.before` hook (2.x) before
14
14
  * every tool call; throwing refuses the call. That plugin is generated by
15
15
  * `@intutic/sync-daemon`'s `openCodeHooks.ts`, the same split Muse and Grok
16
- * use for their hook writers. `opencode.json` is not written — see the
17
- * writer's module doc.
16
+ * use for their hook writers. This adapter does not write `opencode.json`;
17
+ * the sync daemon's `mcpAutoWrite.ts` edits its `mcp` block only (TD-487) —
18
+ * see the writer's module doc.
18
19
  *
19
20
  * HLD §3.14 — Harness Onboarding Matrix
20
21
  * @module
21
22
  */
22
- import { join, dirname } from 'node:path';
23
- import { access, writeFile, rename, mkdir } from 'node:fs/promises';
23
+ import { join } from 'node:path';
24
+ import { access } from 'node:fs/promises';
24
25
  import { homedir } from 'node:os';
25
26
  import { HarnessType } from '@intutic/shared-types';
26
27
  import { hashFile } from '../lib/hash.js';
27
28
  import { buildMarkdownContent } from './base.js';
28
29
  import { writeOpenCodeHooks } from '@intutic/sync-daemon/harness/openCodeHooks';
30
+ import { writeOwnedFile } from '@intutic/sync-daemon';
29
31
  /** Workspace-relative rules file. OpenCode reads this, falling back to CLAUDE.md. */
30
32
  const CONFIG_FILE = 'AGENTS.md';
31
33
  /** `$OPENCODE_CONFIG_DIR` or `~/.config/opencode` — the user-level config dir. */
@@ -74,10 +76,7 @@ export const opencodeAdapter = {
74
76
  // convention every markdown adapter uses.
75
77
  if (sops.length > 0) {
76
78
  const content = buildMarkdownContent(sops, proxyUrl);
77
- await mkdir(dirname(agentsPath), { recursive: true });
78
- const tmp = agentsPath + '.intutic-tmp';
79
- await writeFile(tmp, content, 'utf-8');
80
- await rename(tmp, agentsPath);
79
+ await writeOwnedFile(agentsPath, workspaceRoot, content);
81
80
  }
82
81
  // 2. The plugin gate. `intutic connect` has no workspace id in scope —
83
82
  // same limitation `museAdapter` has — the sync daemon re-runs this