@intutic/cli 2.1.0 → 2.3.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 (368) hide show
  1. package/README.md +8 -8
  2. package/dist/cli.d.ts +0 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +492 -21
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/apiCommand.d.ts +40 -0
  7. package/dist/commands/apiCommand.d.ts.map +1 -0
  8. package/dist/commands/apiCommand.js +88 -0
  9. package/dist/commands/apiCommand.js.map +1 -0
  10. package/dist/commands/budget.d.ts +4 -0
  11. package/dist/commands/budget.d.ts.map +1 -1
  12. package/dist/commands/budget.js +8 -0
  13. package/dist/commands/budget.js.map +1 -1
  14. package/dist/commands/compliance.d.ts +122 -0
  15. package/dist/commands/compliance.d.ts.map +1 -0
  16. package/dist/commands/compliance.js +278 -0
  17. package/dist/commands/compliance.js.map +1 -0
  18. package/dist/commands/connect.d.ts +26 -1
  19. package/dist/commands/connect.d.ts.map +1 -1
  20. package/dist/commands/connect.js +222 -86
  21. package/dist/commands/connect.js.map +1 -1
  22. package/dist/commands/credentials.d.ts +1 -1
  23. package/dist/commands/credentials.js +1 -1
  24. package/dist/commands/decision.d.ts +4 -4
  25. package/dist/commands/decision.js +4 -4
  26. package/dist/commands/disconnect.d.ts +29 -0
  27. package/dist/commands/disconnect.d.ts.map +1 -0
  28. package/dist/commands/disconnect.js +266 -0
  29. package/dist/commands/disconnect.js.map +1 -0
  30. package/dist/commands/doctor.d.ts +0 -1
  31. package/dist/commands/doctor.d.ts.map +1 -1
  32. package/dist/commands/doctor.js +0 -1
  33. package/dist/commands/doctor.js.map +1 -1
  34. package/dist/commands/enforce.d.ts +1 -1
  35. package/dist/commands/enforce.js +1 -1
  36. package/dist/commands/enterprise.d.ts +3 -2
  37. package/dist/commands/enterprise.d.ts.map +1 -1
  38. package/dist/commands/enterprise.js +11 -3
  39. package/dist/commands/enterprise.js.map +1 -1
  40. package/dist/commands/env.d.ts +1 -1
  41. package/dist/commands/env.d.ts.map +1 -1
  42. package/dist/commands/env.js +3 -8
  43. package/dist/commands/env.js.map +1 -1
  44. package/dist/commands/exec.d.ts +2 -3
  45. package/dist/commands/exec.d.ts.map +1 -1
  46. package/dist/commands/exec.js +4 -5
  47. package/dist/commands/exec.js.map +1 -1
  48. package/dist/commands/gateLiveness.d.ts +15 -0
  49. package/dist/commands/gateLiveness.d.ts.map +1 -0
  50. package/dist/commands/gateLiveness.js +34 -0
  51. package/dist/commands/gateLiveness.js.map +1 -0
  52. package/dist/commands/gateway.d.ts +16 -4
  53. package/dist/commands/gateway.d.ts.map +1 -1
  54. package/dist/commands/gateway.js +47 -6
  55. package/dist/commands/gateway.js.map +1 -1
  56. package/dist/commands/github.d.ts +20 -0
  57. package/dist/commands/github.d.ts.map +1 -0
  58. package/dist/commands/github.js +41 -0
  59. package/dist/commands/github.js.map +1 -0
  60. package/dist/commands/guardrails.d.ts +28 -2
  61. package/dist/commands/guardrails.d.ts.map +1 -1
  62. package/dist/commands/guardrails.js +233 -24
  63. package/dist/commands/guardrails.js.map +1 -1
  64. package/dist/commands/init.d.ts +1 -2
  65. package/dist/commands/init.d.ts.map +1 -1
  66. package/dist/commands/init.js +3 -2
  67. package/dist/commands/init.js.map +1 -1
  68. package/dist/commands/install-daemon.d.ts +1 -1
  69. package/dist/commands/install-daemon.js +2 -2
  70. package/dist/commands/integrity.d.ts +10 -2
  71. package/dist/commands/integrity.d.ts.map +1 -1
  72. package/dist/commands/integrity.js +10 -3
  73. package/dist/commands/integrity.js.map +1 -1
  74. package/dist/commands/inventory.d.ts +60 -0
  75. package/dist/commands/inventory.d.ts.map +1 -0
  76. package/dist/commands/inventory.js +141 -0
  77. package/dist/commands/inventory.js.map +1 -0
  78. package/dist/commands/judge.d.ts +1 -1
  79. package/dist/commands/judge.js +2 -2
  80. package/dist/commands/judge.js.map +1 -1
  81. package/dist/commands/login.d.ts +0 -1
  82. package/dist/commands/login.d.ts.map +1 -1
  83. package/dist/commands/login.js +0 -1
  84. package/dist/commands/login.js.map +1 -1
  85. package/dist/commands/logout.d.ts +0 -1
  86. package/dist/commands/logout.d.ts.map +1 -1
  87. package/dist/commands/logout.js +0 -1
  88. package/dist/commands/logout.js.map +1 -1
  89. package/dist/commands/mcp.d.ts +31 -0
  90. package/dist/commands/mcp.d.ts.map +1 -0
  91. package/dist/commands/mcp.js +65 -0
  92. package/dist/commands/mcp.js.map +1 -0
  93. package/dist/commands/notifications.d.ts +54 -0
  94. package/dist/commands/notifications.d.ts.map +1 -0
  95. package/dist/commands/notifications.js +151 -0
  96. package/dist/commands/notifications.js.map +1 -0
  97. package/dist/commands/org.d.ts +3 -3
  98. package/dist/commands/org.js +3 -3
  99. package/dist/commands/policy.d.ts +6 -1
  100. package/dist/commands/policy.d.ts.map +1 -1
  101. package/dist/commands/policy.js +77 -37
  102. package/dist/commands/policy.js.map +1 -1
  103. package/dist/commands/predict-cost.d.ts +1 -2
  104. package/dist/commands/predict-cost.d.ts.map +1 -1
  105. package/dist/commands/predict-cost.js +1 -4
  106. package/dist/commands/predict-cost.js.map +1 -1
  107. package/dist/commands/rollback.d.ts.map +1 -1
  108. package/dist/commands/rollback.js +3 -1
  109. package/dist/commands/rollback.js.map +1 -1
  110. package/dist/commands/routing.d.ts +1 -1
  111. package/dist/commands/routing.js +1 -1
  112. package/dist/commands/rules.d.ts +74 -0
  113. package/dist/commands/rules.d.ts.map +1 -0
  114. package/dist/commands/rules.js +283 -0
  115. package/dist/commands/rules.js.map +1 -0
  116. package/dist/commands/settings.d.ts +43 -0
  117. package/dist/commands/settings.d.ts.map +1 -0
  118. package/dist/commands/settings.js +108 -0
  119. package/dist/commands/settings.js.map +1 -0
  120. package/dist/commands/setup.d.ts +1 -1
  121. package/dist/commands/setup.js +1 -1
  122. package/dist/commands/siem.d.ts +53 -0
  123. package/dist/commands/siem.d.ts.map +1 -0
  124. package/dist/commands/siem.js +132 -0
  125. package/dist/commands/siem.js.map +1 -0
  126. package/dist/commands/skill.d.ts +5 -5
  127. package/dist/commands/skill.js +7 -7
  128. package/dist/commands/skill.js.map +1 -1
  129. package/dist/commands/status.d.ts +0 -1
  130. package/dist/commands/status.d.ts.map +1 -1
  131. package/dist/commands/status.js +2 -3
  132. package/dist/commands/status.js.map +1 -1
  133. package/dist/commands/syncContext.d.ts +0 -1
  134. package/dist/commands/syncContext.d.ts.map +1 -1
  135. package/dist/commands/syncContext.js +0 -1
  136. package/dist/commands/syncContext.js.map +1 -1
  137. package/dist/commands/team.d.ts +2 -2
  138. package/dist/commands/team.js +2 -2
  139. package/dist/commands/traces.d.ts +0 -3
  140. package/dist/commands/traces.d.ts.map +1 -1
  141. package/dist/commands/traces.js +0 -3
  142. package/dist/commands/traces.js.map +1 -1
  143. package/dist/commands/usage.d.ts +41 -0
  144. package/dist/commands/usage.d.ts.map +1 -0
  145. package/dist/commands/usage.js +129 -0
  146. package/dist/commands/usage.js.map +1 -0
  147. package/dist/commands/whoami.d.ts +0 -1
  148. package/dist/commands/whoami.d.ts.map +1 -1
  149. package/dist/commands/whoami.js +0 -1
  150. package/dist/commands/whoami.js.map +1 -1
  151. package/dist/config/keychain.d.ts +0 -1
  152. package/dist/config/keychain.d.ts.map +1 -1
  153. package/dist/config/keychain.js +0 -1
  154. package/dist/config/keychain.js.map +1 -1
  155. package/dist/config/paths.d.ts +0 -1
  156. package/dist/config/paths.d.ts.map +1 -1
  157. package/dist/config/paths.js +0 -1
  158. package/dist/config/paths.js.map +1 -1
  159. package/dist/config/store.d.ts +0 -1
  160. package/dist/config/store.d.ts.map +1 -1
  161. package/dist/config/store.js +0 -1
  162. package/dist/config/store.js.map +1 -1
  163. package/dist/harness/ag2.d.ts +1 -1
  164. package/dist/harness/ag2.js +1 -1
  165. package/dist/harness/agentFramework.d.ts +1 -1
  166. package/dist/harness/agentFramework.js +1 -1
  167. package/dist/harness/agenticOrchestrator.d.ts +4 -6
  168. package/dist/harness/agenticOrchestrator.d.ts.map +1 -1
  169. package/dist/harness/agenticOrchestrator.js +5 -7
  170. package/dist/harness/agenticOrchestrator.js.map +1 -1
  171. package/dist/harness/agentsMd.d.ts +24 -0
  172. package/dist/harness/agentsMd.d.ts.map +1 -0
  173. package/dist/harness/agentsMd.js +28 -0
  174. package/dist/harness/agentsMd.js.map +1 -0
  175. package/dist/harness/aider.d.ts +3 -1
  176. package/dist/harness/aider.d.ts.map +1 -1
  177. package/dist/harness/aider.js +9 -7
  178. package/dist/harness/aider.js.map +1 -1
  179. package/dist/harness/antigravity.d.ts +23 -5
  180. package/dist/harness/antigravity.d.ts.map +1 -1
  181. package/dist/harness/antigravity.js +45 -54
  182. package/dist/harness/antigravity.js.map +1 -1
  183. package/dist/harness/autogen.d.ts +1 -1
  184. package/dist/harness/autogen.js +2 -2
  185. package/dist/harness/autogen.js.map +1 -1
  186. package/dist/harness/claudeCode.d.ts +22 -1
  187. package/dist/harness/claudeCode.d.ts.map +1 -1
  188. package/dist/harness/claudeCode.js +47 -3
  189. package/dist/harness/claudeCode.js.map +1 -1
  190. package/dist/harness/cline.d.ts.map +1 -1
  191. package/dist/harness/cline.js +16 -24
  192. package/dist/harness/cline.js.map +1 -1
  193. package/dist/harness/codex.d.ts +6 -1
  194. package/dist/harness/codex.d.ts.map +1 -1
  195. package/dist/harness/codex.js +26 -28
  196. package/dist/harness/codex.js.map +1 -1
  197. package/dist/harness/continue.d.ts +10 -4
  198. package/dist/harness/continue.d.ts.map +1 -1
  199. package/dist/harness/continue.js +22 -22
  200. package/dist/harness/continue.js.map +1 -1
  201. package/dist/harness/cursor.d.ts +5 -2
  202. package/dist/harness/cursor.d.ts.map +1 -1
  203. package/dist/harness/cursor.js +19 -27
  204. package/dist/harness/cursor.js.map +1 -1
  205. package/dist/harness/detector.d.ts +0 -1
  206. package/dist/harness/detector.d.ts.map +1 -1
  207. package/dist/harness/detector.js +0 -1
  208. package/dist/harness/detector.js.map +1 -1
  209. package/dist/harness/dsh.d.ts +5 -3
  210. package/dist/harness/dsh.d.ts.map +1 -1
  211. package/dist/harness/dsh.js +17 -29
  212. package/dist/harness/dsh.js.map +1 -1
  213. package/dist/harness/eve.d.ts +3 -4
  214. package/dist/harness/eve.d.ts.map +1 -1
  215. package/dist/harness/eve.js +3 -4
  216. package/dist/harness/eve.js.map +1 -1
  217. package/dist/harness/githubCopilot.d.ts +4 -1
  218. package/dist/harness/githubCopilot.d.ts.map +1 -1
  219. package/dist/harness/githubCopilot.js +13 -24
  220. package/dist/harness/githubCopilot.js.map +1 -1
  221. package/dist/harness/goose.d.ts +7 -3
  222. package/dist/harness/goose.d.ts.map +1 -1
  223. package/dist/harness/goose.js +18 -21
  224. package/dist/harness/goose.js.map +1 -1
  225. package/dist/harness/grok.d.ts +2 -2
  226. package/dist/harness/grok.d.ts.map +1 -1
  227. package/dist/harness/grok.js +15 -28
  228. package/dist/harness/grok.js.map +1 -1
  229. package/dist/harness/hermes.d.ts +6 -0
  230. package/dist/harness/hermes.d.ts.map +1 -1
  231. package/dist/harness/hermes.js +17 -16
  232. package/dist/harness/hermes.js.map +1 -1
  233. package/dist/harness/jsSdkGatedAdapter.d.ts.map +1 -1
  234. package/dist/harness/jsSdkGatedAdapter.js +4 -6
  235. package/dist/harness/jsSdkGatedAdapter.js.map +1 -1
  236. package/dist/harness/langgraph.d.ts.map +1 -1
  237. package/dist/harness/langgraph.js +4 -6
  238. package/dist/harness/langgraph.js.map +1 -1
  239. package/dist/harness/muse.d.ts +3 -7
  240. package/dist/harness/muse.d.ts.map +1 -1
  241. package/dist/harness/muse.js +17 -39
  242. package/dist/harness/muse.js.map +1 -1
  243. package/dist/harness/n8n.d.ts +13 -7
  244. package/dist/harness/n8n.d.ts.map +1 -1
  245. package/dist/harness/n8n.js +21 -127
  246. package/dist/harness/n8n.js.map +1 -1
  247. package/dist/harness/openWebUI.d.ts.map +1 -1
  248. package/dist/harness/openWebUI.js +5 -4
  249. package/dist/harness/openWebUI.js.map +1 -1
  250. package/dist/harness/openaiAgents.d.ts +1 -1
  251. package/dist/harness/openaiAgents.d.ts.map +1 -1
  252. package/dist/harness/openaiAgents.js +6 -3
  253. package/dist/harness/openaiAgents.js.map +1 -1
  254. package/dist/harness/openclaw.d.ts +8 -0
  255. package/dist/harness/openclaw.d.ts.map +1 -1
  256. package/dist/harness/openclaw.js +27 -12
  257. package/dist/harness/openclaw.js.map +1 -1
  258. package/dist/harness/opencode.d.ts +4 -5
  259. package/dist/harness/opencode.d.ts.map +1 -1
  260. package/dist/harness/opencode.js +17 -34
  261. package/dist/harness/opencode.js.map +1 -1
  262. package/dist/harness/openhands.d.ts +9 -3
  263. package/dist/harness/openhands.d.ts.map +1 -1
  264. package/dist/harness/openhands.js +43 -25
  265. package/dist/harness/openhands.js.map +1 -1
  266. package/dist/harness/pi.d.ts +7 -2
  267. package/dist/harness/pi.d.ts.map +1 -1
  268. package/dist/harness/pi.js +19 -18
  269. package/dist/harness/pi.js.map +1 -1
  270. package/dist/harness/rooCode.d.ts +12 -5
  271. package/dist/harness/rooCode.d.ts.map +1 -1
  272. package/dist/harness/rooCode.js +25 -43
  273. package/dist/harness/rooCode.js.map +1 -1
  274. package/dist/harness/rulesFiles.d.ts +53 -0
  275. package/dist/harness/rulesFiles.d.ts.map +1 -0
  276. package/dist/harness/rulesFiles.js +106 -0
  277. package/dist/harness/rulesFiles.js.map +1 -0
  278. package/dist/harness/sdkGatedAdapter.d.ts.map +1 -1
  279. package/dist/harness/sdkGatedAdapter.js +4 -6
  280. package/dist/harness/sdkGatedAdapter.js.map +1 -1
  281. package/dist/harness/smolagents.d.ts +2 -2
  282. package/dist/harness/smolagents.js +3 -3
  283. package/dist/harness/smolagents.js.map +1 -1
  284. package/dist/harness/types.d.ts +20 -6
  285. package/dist/harness/types.d.ts.map +1 -1
  286. package/dist/harness/types.js +1 -95
  287. package/dist/harness/types.js.map +1 -1
  288. package/dist/harness/windsurf.d.ts +7 -2
  289. package/dist/harness/windsurf.d.ts.map +1 -1
  290. package/dist/harness/windsurf.js +22 -29
  291. package/dist/harness/windsurf.js.map +1 -1
  292. package/dist/harness/xirp.d.ts +6 -9
  293. package/dist/harness/xirp.d.ts.map +1 -1
  294. package/dist/harness/xirp.js +7 -10
  295. package/dist/harness/xirp.js.map +1 -1
  296. package/dist/lib/api.d.ts +27 -1
  297. package/dist/lib/api.d.ts.map +1 -1
  298. package/dist/lib/api.js +55 -18
  299. package/dist/lib/api.js.map +1 -1
  300. package/dist/lib/ciscoScanner.d.ts +1 -1
  301. package/dist/lib/ciscoScanner.js +1 -1
  302. package/dist/lib/decisionsLogRefresh.d.ts.map +1 -1
  303. package/dist/lib/decisionsLogRefresh.js +6 -7
  304. package/dist/lib/decisionsLogRefresh.js.map +1 -1
  305. package/dist/lib/deviceReport.d.ts +15 -0
  306. package/dist/lib/deviceReport.d.ts.map +1 -1
  307. package/dist/lib/deviceReport.js +30 -0
  308. package/dist/lib/deviceReport.js.map +1 -1
  309. package/dist/lib/envInjector.d.ts +16 -6
  310. package/dist/lib/envInjector.d.ts.map +1 -1
  311. package/dist/lib/envInjector.js +99 -88
  312. package/dist/lib/envInjector.js.map +1 -1
  313. package/dist/lib/gitHooks.d.ts +0 -1
  314. package/dist/lib/gitHooks.d.ts.map +1 -1
  315. package/dist/lib/gitHooks.js +8 -9
  316. package/dist/lib/gitHooks.js.map +1 -1
  317. package/dist/lib/gracefulShutdown.d.ts +1 -1
  318. package/dist/lib/gracefulShutdown.js +1 -1
  319. package/dist/lib/hash.d.ts +0 -1
  320. package/dist/lib/hash.d.ts.map +1 -1
  321. package/dist/lib/hash.js +0 -1
  322. package/dist/lib/hash.js.map +1 -1
  323. package/dist/lib/inventory.d.ts +47 -0
  324. package/dist/lib/inventory.d.ts.map +1 -0
  325. package/dist/lib/inventory.js +106 -0
  326. package/dist/lib/inventory.js.map +1 -0
  327. package/dist/lib/logger.d.ts +0 -1
  328. package/dist/lib/logger.d.ts.map +1 -1
  329. package/dist/lib/logger.js +0 -1
  330. package/dist/lib/logger.js.map +1 -1
  331. package/dist/lib/mdmManifest.d.ts +30 -2
  332. package/dist/lib/mdmManifest.d.ts.map +1 -1
  333. package/dist/lib/mdmManifest.js +50 -2
  334. package/dist/lib/mdmManifest.js.map +1 -1
  335. package/dist/lib/onboarding.d.ts +0 -1
  336. package/dist/lib/onboarding.d.ts.map +1 -1
  337. package/dist/lib/onboarding.js +2 -3
  338. package/dist/lib/onboarding.js.map +1 -1
  339. package/dist/lib/otelPropagation.d.ts +1 -1
  340. package/dist/lib/otelPropagation.js +1 -1
  341. package/dist/lib/policySnapshot.d.ts +3 -1
  342. package/dist/lib/policySnapshot.d.ts.map +1 -1
  343. package/dist/lib/policySnapshot.js +15 -5
  344. package/dist/lib/policySnapshot.js.map +1 -1
  345. package/dist/lib/process.d.ts +5 -1
  346. package/dist/lib/process.d.ts.map +1 -1
  347. package/dist/lib/process.js +13 -4
  348. package/dist/lib/process.js.map +1 -1
  349. package/dist/lib/providerProbe.d.ts +2 -2
  350. package/dist/lib/providerProbe.js +2 -2
  351. package/dist/lib/sandbox/firecracker.d.ts +3 -3
  352. package/dist/lib/sandbox/firecracker.js +3 -3
  353. package/dist/lib/sandbox/index.d.ts +2 -2
  354. package/dist/lib/sandbox/index.js +2 -2
  355. package/dist/lib/sandbox/oci.d.ts +1 -1
  356. package/dist/lib/sandbox/oci.js +1 -1
  357. package/dist/lib/sandbox/types.d.ts +1 -1
  358. package/dist/lib/sandbox/types.js +1 -1
  359. package/dist/lib/sopFrontMatter.d.ts +1 -1
  360. package/dist/lib/sopFrontMatter.js +1 -1
  361. package/package.json +6 -5
  362. package/resources/sandbox/Dockerfile +1 -1
  363. package/resources/sandbox/entrypoint.sh +4 -4
  364. package/resources/sandbox/firecracker-launch.sh +1 -1
  365. package/dist/harness/base.d.ts +0 -20
  366. package/dist/harness/base.d.ts.map +0 -1
  367. package/dist/harness/base.js +0 -73
  368. package/dist/harness/base.js.map +0 -1
@@ -2,8 +2,8 @@
2
2
  * grok.ts — xAI Grok Build adapter (binary `grok`, GA 2026-05, open-sourced
3
3
  * 2026-07-15).
4
4
  *
5
- * Detects the Grok Build CLI, writes AGENTS.md governance text (the same
6
- * cross-tool rules-file convention Codex/Amp read), and injects the Intutic
5
+ * Detects the Grok Build CLI, writes the rule sets into `AGENTS.md` through
6
+ * the shared writer (agentsMd.ts), and injects the Intutic
7
7
  * governance hook (`grokHooks.ts` — PreToolUse, no matcher, confirmed
8
8
  * `{"decision":"deny","reason":"..."}` stdout contract) plus the
9
9
  * `config.toml` `[model.*]` `base_url` merge.
@@ -11,20 +11,18 @@
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
- import { hashFile } from '../lib/hash.js';
19
- import { buildMarkdownContent } from './base.js';
20
18
  import { writeGrokHooks } from '@intutic/sync-daemon/harness/grokHooks';
21
- const CONFIG_FILE = 'AGENTS.md';
19
+ import { AGENTS_MD, agentsMdHash, writeAgentsMd } from './agentsMd.js';
22
20
  export const grokAdapter = {
23
21
  type: HarnessType.GROK,
24
- configFileName: CONFIG_FILE,
22
+ configFileName: AGENTS_MD,
25
23
  async detect(workspaceRoot) {
26
24
  // Workspace-local `.grok/` (project config/hooks dir) or AGENTS.md.
27
- for (const marker of ['.grok', CONFIG_FILE]) {
25
+ for (const marker of ['.grok', AGENTS_MD]) {
28
26
  try {
29
27
  await access(join(workspaceRoot, marker));
30
28
  return true;
@@ -52,27 +50,16 @@ export const grokAdapter = {
52
50
  catch { /* ignore */ }
53
51
  return false;
54
52
  },
55
- async writeConfig(workspaceRoot, sops, proxyUrl) {
56
- // 1. AGENTS.md — governance rules text, same markdown formatter every
57
- // other `---`-separated rules file in this codebase shares.
58
- const filePath = join(workspaceRoot, CONFIG_FILE);
59
- 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);
64
- // 2. PreToolUse gate (project + user level) + config.toml model base_url
65
- // merge (project + user level).
53
+ /** PreToolUse gate (project + user level) + config.toml model base_url
54
+ * merge (project + user level). */
55
+ async installGate(workspaceRoot, proxyUrl) {
66
56
  await writeGrokHooks(workspaceRoot, proxyUrl, '');
67
- return filePath;
68
57
  },
69
- async readCurrentHash(workspaceRoot) {
70
- try {
71
- return await hashFile(join(workspaceRoot, CONFIG_FILE));
72
- }
73
- catch {
74
- return null;
75
- }
58
+ writeConfig(workspaceRoot, sops, proxyUrl) {
59
+ return writeAgentsMd(workspaceRoot, sops, proxyUrl);
60
+ },
61
+ readCurrentHash(workspaceRoot) {
62
+ return agentsMdHash(workspaceRoot);
76
63
  },
77
64
  };
78
65
  //# sourceMappingURL=grok.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../src/harness/grok.ts"],"names":[],"mappings":"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"}
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,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,cAAc,EAAE,SAAS;IAEzB,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,oEAAoE;QACpE,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1C,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;wCACoC;IACpC,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB;QACvD,MAAM,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
@@ -4,6 +4,12 @@
4
4
  * Detects Hermes presence and invokes the sync-daemon hooks compiler
5
5
  * to inject Intutic pre-tool use gates.
6
6
  *
7
+ * Hermes loads the `AGENTS.md` files between the git root and where it runs,
8
+ * unless a `.hermes.md` or `HERMES.md` is found first, which takes their
9
+ * place; the rule sets go into the workspace's `AGENTS.md` through the shared
10
+ * writer (agentsMd.ts;
11
+ * https://github.com/NousResearch/hermes-agent/blob/8ac5c74432d1f217033993c8370e911b2c91b04a/agent/prompt_builder.py).
12
+ *
7
13
  * HLD §3.14 — Harness Onboarding Matrix
8
14
  * @module
9
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/harness/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,eAAO,MAAM,aAAa,EAAE,eA+B3B,CAAA"}
1
+ {"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/harness/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,eAAO,MAAM,aAAa,EAAE,eA4B3B,CAAA"}
@@ -4,6 +4,12 @@
4
4
  * Detects Hermes presence and invokes the sync-daemon hooks compiler
5
5
  * to inject Intutic pre-tool use gates.
6
6
  *
7
+ * Hermes loads the `AGENTS.md` files between the git root and where it runs,
8
+ * unless a `.hermes.md` or `HERMES.md` is found first, which takes their
9
+ * place; the rule sets go into the workspace's `AGENTS.md` through the shared
10
+ * writer (agentsMd.ts;
11
+ * https://github.com/NousResearch/hermes-agent/blob/8ac5c74432d1f217033993c8370e911b2c91b04a/agent/prompt_builder.py).
12
+ *
7
13
  * HLD §3.14 — Harness Onboarding Matrix
8
14
  * @module
9
15
  */
@@ -12,16 +18,16 @@ import { access } from 'node:fs/promises';
12
18
  import { existsSync } from 'node:fs';
13
19
  import { homedir } from 'node:os';
14
20
  import { HarnessType } from '@intutic/shared-types';
15
- import { hashFile } from '../lib/hash.js';
16
21
  import { loadCredentials } from '../config/store.js';
22
+ import { AGENTS_MD, agentsMdHash, writeAgentsMd } from './agentsMd.js';
17
23
  import { writeHermesHooks } from '@intutic/sync-daemon';
18
- const CONFIG_FILE = '.hermes/config.yaml';
24
+ const DETECT_FILE = '.hermes/config.yaml';
19
25
  export const hermesAdapter = {
20
26
  type: HarnessType.HERMES,
21
- configFileName: CONFIG_FILE,
27
+ configFileName: AGENTS_MD,
22
28
  async detect(workspaceRoot) {
23
29
  const globalHermes = join(homedir(), '.hermes');
24
- const localHermes = join(workspaceRoot, CONFIG_FILE);
30
+ const localHermes = join(workspaceRoot, DETECT_FILE);
25
31
  try {
26
32
  if (existsSync(globalHermes))
27
33
  return true;
@@ -32,20 +38,15 @@ export const hermesAdapter = {
32
38
  return false;
33
39
  }
34
40
  },
35
- async writeConfig(workspaceRoot, _sops, proxyUrl) {
36
- const filePath = join(workspaceRoot, CONFIG_FILE);
41
+ async installGate(workspaceRoot, proxyUrl) {
37
42
  const creds = await loadCredentials();
38
- const workspaceId = creds?.workspaceId || 'local';
39
- await writeHermesHooks(workspaceRoot, proxyUrl, workspaceId);
40
- return filePath;
43
+ await writeHermesHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
41
44
  },
42
- async readCurrentHash(workspaceRoot) {
43
- try {
44
- return await hashFile(join(workspaceRoot, CONFIG_FILE));
45
- }
46
- catch {
47
- return null;
48
- }
45
+ writeConfig(workspaceRoot, sops, proxyUrl) {
46
+ return writeAgentsMd(workspaceRoot, sops, proxyUrl);
47
+ },
48
+ readCurrentHash(workspaceRoot) {
49
+ return agentsMdHash(workspaceRoot);
49
50
  },
50
51
  };
51
52
  //# sourceMappingURL=hermes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/harness/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,WAAW,CAAC,MAAM;IACxB,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACpD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAA;YACzC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACzB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,KAAqB,EAAE,QAAgB;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,OAAO,CAAA;QACjD,MAAM,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC5D,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":"hermes.js","sourceRoot":"","sources":["../../src/harness/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;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,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,WAAW,CAAC,MAAM;IACxB,cAAc,EAAE,SAAS;IAEzB,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACpD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAA;YACzC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACzB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB;QACvD,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,CAAA;IAChF,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,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;AAEtE,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,11 +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
31
  import { anthropicBaseUrl, openaiBaseUrl, proxyHost } from '@intutic/shared-types';
32
32
  import { hashFile } from '../lib/hash.js';
33
33
  import { newIso } from '@intutic/id';
34
+ import { writeOwnedFile } from '@intutic/sync-daemon';
34
35
  const CONFIG_FILE = '.env.intutic';
35
36
  function isDigit(c) {
36
37
  return c >= '0' && c <= '9';
@@ -121,10 +122,7 @@ export function makeJsSdkGatedAdapter(spec) {
121
122
  `# See https://docs.intutic.ai/integrations/${spec.docsSlug}`,
122
123
  '',
123
124
  ].join('\n');
124
- await mkdir(dirname(filePath), { recursive: true });
125
- const tmpEnv = filePath + '.intutic-tmp';
126
- await writeFile(tmpEnv, envContent, 'utf-8');
127
- await rename(tmpEnv, filePath);
125
+ await writeOwnedFile(filePath, workspaceRoot, envContent);
128
126
  return filePath;
129
127
  },
130
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';
20
+ import { join } from 'node:path';
21
+ import { readFile } from 'node:fs/promises';
22
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'];
@@ -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,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;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,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,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,13 +1,9 @@
1
1
  /**
2
2
  * muse.ts — Meta "Muse Code" adapter (binary `muse`, model Muse Spark).
3
3
  *
4
- * Muse Code is a CLI harness, beta since 2026-08-05. Its rules/instructions
5
- * file is `AGENTS.md` (it falls back to `CLAUDE.md` when that is absent) —
6
- * this codebase has no dedicated "AGENTS.md content builder" of its own to
7
- * reuse; the shared markdown content path every text-rules harness already
8
- * uses (`buildMarkdownContent`, the same function Claude Code's `CLAUDE.md`
9
- * adapter calls) is what gets reused here, so Muse does not grow a second
10
- * rules format.
4
+ * Muse Code is a CLI harness, beta since 2026-08-05. Its instructions file
5
+ * is `AGENTS.md` (it falls back to `CLAUDE.md` when that is absent); the rule
6
+ * sets go there through the shared `AGENTS.md` writer (agentsMd.ts).
11
7
  *
12
8
  * The governance-critical half — the PreToolUse/PermissionRequest hook
13
9
  * registration and the MCP `mcp_servers` proxy-wrap — is delegated to
@@ -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;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQjD,eAAO,MAAM,WAAW,EAAE,eA2CzB,CAAA"}
@@ -1,13 +1,9 @@
1
1
  /**
2
2
  * muse.ts — Meta "Muse Code" adapter (binary `muse`, model Muse Spark).
3
3
  *
4
- * Muse Code is a CLI harness, beta since 2026-08-05. Its rules/instructions
5
- * file is `AGENTS.md` (it falls back to `CLAUDE.md` when that is absent) —
6
- * this codebase has no dedicated "AGENTS.md content builder" of its own to
7
- * reuse; the shared markdown content path every text-rules harness already
8
- * uses (`buildMarkdownContent`, the same function Claude Code's `CLAUDE.md`
9
- * adapter calls) is what gets reused here, so Muse does not grow a second
10
- * rules format.
4
+ * Muse Code is a CLI harness, beta since 2026-08-05. Its instructions file
5
+ * is `AGENTS.md` (it falls back to `CLAUDE.md` when that is absent); the rule
6
+ * sets go there through the shared `AGENTS.md` writer (agentsMd.ts).
11
7
  *
12
8
  * The governance-critical half — the PreToolUse/PermissionRequest hook
13
9
  * registration and the MCP `mcp_servers` proxy-wrap — is delegated to
@@ -17,21 +13,18 @@
17
13
  * HLD §3.14 — Harness Onboarding Matrix
18
14
  * @module
19
15
  */
20
- import { join, dirname } from 'node:path';
21
- import { access, writeFile, rename, mkdir } from 'node:fs/promises';
16
+ import { join } from 'node:path';
17
+ import { access } from 'node:fs/promises';
22
18
  import { homedir } from 'node:os';
23
19
  import { HarnessType } from '@intutic/shared-types';
24
- import { hashFile } from '../lib/hash.js';
25
- import { buildMarkdownContent } from './base.js';
26
20
  import { writeMuseHooks } from '@intutic/sync-daemon/harness/museHooks';
27
- /** Workspace-relative rules file. Muse reads this, falling back to CLAUDE.md. */
28
- const CONFIG_FILE = 'AGENTS.md';
21
+ import { AGENTS_MD, agentsMdHash, writeAgentsMd } from './agentsMd.js';
29
22
  /** `~/.config/muse/settings.json` — carries `schema_version`, `mcp_servers`,
30
23
  * and (once `museHooks.ts` has run) `managed_hooks_path`. */
31
24
  const MUSE_SETTINGS = join(homedir(), '.config', 'muse', 'settings.json');
32
25
  export const museAdapter = {
33
26
  type: HarnessType.MUSE_CODE,
34
- configFileName: CONFIG_FILE,
27
+ configFileName: AGENTS_MD,
35
28
  async detect(workspaceRoot) {
36
29
  // 1. Project-local `.muse/` directory.
37
30
  try {
@@ -60,33 +53,18 @@ export const museAdapter = {
60
53
  catch { /* ignore */ }
61
54
  return false;
62
55
  },
63
- async writeConfig(workspaceRoot, sops, proxyUrl) {
64
- const agentsPath = join(workspaceRoot, CONFIG_FILE);
65
- // 1. AGENTS.md rules file — same "skip when there is nothing to write"
66
- // convention `createMarkdownAdapter` uses; unlike Goose, Muse DOES
67
- // have a rules file, so sops are not ignored here.
68
- if (sops.length > 0) {
69
- 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);
74
- }
75
- // 2. PreToolUse/PermissionRequest hooks (project .muse/hooks.json +
76
- // managed_hooks_path merge into ~/.config/muse/settings.json).
77
- // `intutic connect` has no workspace id in scope — same limitation
78
- // `gooseAdapter` has — the sync daemon re-runs this with a real one
79
- // on the next cycle.
56
+ /** PreToolUse/PermissionRequest hooks (project .muse/hooks.json +
57
+ * managed_hooks_path merge into ~/.config/muse/settings.json). `intutic
58
+ * connect` has no workspace id in scope — same limitation `gooseAdapter`
59
+ * has — the sync daemon re-runs this with a real one on the next cycle. */
60
+ async installGate(workspaceRoot, proxyUrl) {
80
61
  await writeMuseHooks(workspaceRoot, proxyUrl, '');
81
- return agentsPath;
82
62
  },
83
- async readCurrentHash(workspaceRoot) {
84
- try {
85
- return await hashFile(join(workspaceRoot, CONFIG_FILE));
86
- }
87
- catch {
88
- return null;
89
- }
63
+ writeConfig(workspaceRoot, sops, proxyUrl) {
64
+ return writeAgentsMd(workspaceRoot, sops, proxyUrl);
65
+ },
66
+ readCurrentHash(workspaceRoot) {
67
+ return agentsMdHash(workspaceRoot);
90
68
  },
91
69
  };
92
70
  //# sourceMappingURL=muse.js.map
@@ -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":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEtE;8DAC8D;AAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE,WAAW,CAAC,SAAS;IAC3B,cAAc,EAAE,SAAS;IAEzB,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,uCAAuC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAE1B,2EAA2E;QAC3E,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC3B,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAE1B,4BAA4B;QAC5B,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;;;gFAG4E;IAC5E,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB;QACvD,MAAM,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
@@ -1,17 +1,23 @@
1
1
  /**
2
- * n8n adapter — Real-time REST parameter sync plus the workflow-level gate.
2
+ * n8n adapter — the workflow-level gate.
3
3
  *
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,
6
- * and writes the external-hook gate module (`~/.intutic/hooks/
4
+ * Writes the external-hook gate module (`~/.intutic/hooks/
7
5
  * n8n-governance-hook.js`) with its INSTALL.md — see n8nHooks.ts. The gate
8
6
  * takes effect only once the n8n operator sets EXTERNAL_HOOK_FILES to it.
9
7
  *
10
- * Supports local n8n instances by falling back to unauthenticated requests
11
- * if N8N_API_TOKEN is not provided.
8
+ * Rule sets are not written anywhere for n8n: n8n has no file or setting it
9
+ * loads as standing instructions. An AI Agent node's system message is a
10
+ * parameter of that node, written by whoever builds the workflow. Earlier
11
+ * versions put the rule sets in each workflow's `settings.variables` through
12
+ * `PUT /api/v1/workflows/{id}`, but the public API's workflow-settings schema
13
+ * has had `additionalProperties: false` since the API was introduced, with no
14
+ * free-text field, so every one of those updates was refused with a 400
15
+ * (https://github.com/n8n-io/n8n/blob/6fc0aeda35ea62ee353dd80b0f8d3e0f1f4e50d0/packages/cli/src/public-api/v1/handlers/workflows/spec/schemas/workflowSettings.yml).
16
+ * n8n's instance variables are no substitute: a value is capped at 1,000
17
+ * characters and the feature needs a paid licence
18
+ * (https://github.com/n8n-io/n8n/blob/6fc0aeda35ea62ee353dd80b0f8d3e0f1f4e50d0/packages/@n8n/api-types/src/dto/variables/base.dto.ts).
12
19
  *
13
20
  * HLD §3.14 — Harness Onboarding Matrix
14
- * Tech Debt: TD-037 — n8n API Adapter
15
21
  *
16
22
  * @module
17
23
  */
@@ -1 +1 @@
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;AA0EjD,eAAO,MAAM,UAAU,EAAE,eAyIxB,CAAA"}
1
+ {"version":3,"file":"n8n.d.ts","sourceRoot":"","sources":["../../src/harness/n8n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAIjD,eAAO,MAAM,UAAU,EAAE,eA4BxB,CAAA"}
@@ -1,39 +1,29 @@
1
1
  /**
2
- * n8n adapter — Real-time REST parameter sync plus the workflow-level gate.
2
+ * n8n adapter — the workflow-level gate.
3
3
  *
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,
6
- * and writes the external-hook gate module (`~/.intutic/hooks/
4
+ * Writes the external-hook gate module (`~/.intutic/hooks/
7
5
  * n8n-governance-hook.js`) with its INSTALL.md — see n8nHooks.ts. The gate
8
6
  * takes effect only once the n8n operator sets EXTERNAL_HOOK_FILES to it.
9
7
  *
10
- * Supports local n8n instances by falling back to unauthenticated requests
11
- * if N8N_API_TOKEN is not provided.
8
+ * Rule sets are not written anywhere for n8n: n8n has no file or setting it
9
+ * loads as standing instructions. An AI Agent node's system message is a
10
+ * parameter of that node, written by whoever builds the workflow. Earlier
11
+ * versions put the rule sets in each workflow's `settings.variables` through
12
+ * `PUT /api/v1/workflows/{id}`, but the public API's workflow-settings schema
13
+ * has had `additionalProperties: false` since the API was introduced, with no
14
+ * free-text field, so every one of those updates was refused with a 400
15
+ * (https://github.com/n8n-io/n8n/blob/6fc0aeda35ea62ee353dd80b0f8d3e0f1f4e50d0/packages/cli/src/public-api/v1/handlers/workflows/spec/schemas/workflowSettings.yml).
16
+ * n8n's instance variables are no substitute: a value is capped at 1,000
17
+ * characters and the feature needs a paid licence
18
+ * (https://github.com/n8n-io/n8n/blob/6fc0aeda35ea62ee353dd80b0f8d3e0f1f4e50d0/packages/@n8n/api-types/src/dto/variables/base.dto.ts).
12
19
  *
13
20
  * HLD §3.14 — Harness Onboarding Matrix
14
- * Tech Debt: TD-037 — n8n API Adapter
15
21
  *
16
22
  * @module
17
23
  */
18
- import { createHash } from 'node:crypto';
19
24
  import { HarnessType } from '@intutic/shared-types';
20
25
  import { loadCredentials } from '../config/store.js';
21
26
  import { writeN8nHooks } from '@intutic/sync-daemon';
22
- // Format SOPs for n8n parameters
23
- function buildSopsMarkdown(sops) {
24
- if (sops.length === 0)
25
- return '';
26
- return sops.map((sop) => `## ${sop.title}\n\n${sop.content}`).join('\n\n---\n\n') + '\n';
27
- }
28
- function getHeaders() {
29
- const headers = {
30
- 'Content-Type': 'application/json',
31
- };
32
- if (process.env.N8N_API_TOKEN) {
33
- headers['X-N8N-API-KEY'] = process.env.N8N_API_TOKEN;
34
- }
35
- return headers;
36
- }
37
27
  export const n8nAdapter = {
38
28
  type: HarnessType.N8N,
39
29
  configFileName: '',
@@ -47,113 +37,17 @@ export const n8nAdapter = {
47
37
  return !!process.env.N8N_API_TOKEN;
48
38
  }
49
39
  },
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.
40
+ /** The local external-hook gate. */
41
+ async installGate(workspaceRoot, proxyUrl) {
53
42
  const creds = await loadCredentials();
54
43
  await writeN8nHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
55
- const n8nUrl = process.env.N8N_URL || 'http://localhost:5678';
56
- const sopsMarkdown = buildSopsMarkdown(sops);
57
- try {
58
- // 1. Get list of workflows
59
- const listRes = await fetch(`${n8nUrl}/api/v1/workflows`, {
60
- headers: getHeaders(),
61
- signal: AbortSignal.timeout(5000),
62
- });
63
- if (!listRes.ok) {
64
- throw new Error(`Failed to list workflows: ${listRes.statusText}`);
65
- }
66
- const listData = (await listRes.json());
67
- const workflows = listData.data || [];
68
- if (workflows.length === 0) {
69
- return 'n8n:no_workflows';
70
- }
71
- // 2. Inject parameters into variables of each workflow
72
- let updated = 0;
73
- for (const w of workflows) {
74
- const detailRes = await fetch(`${n8nUrl}/api/v1/workflows/${w.id}`, {
75
- headers: getHeaders(),
76
- signal: AbortSignal.timeout(5000),
77
- });
78
- if (!detailRes.ok)
79
- continue;
80
- const detail = (await detailRes.json());
81
- // Inject Intutic values, preserving the workflow's own settings and
82
- // any variables it already had.
83
- const settings = {
84
- ...detail.settings,
85
- variables: {
86
- ...detail.settings?.variables,
87
- intutic_proxy_url: proxyUrl,
88
- intutic_governance_rules: sopsMarkdown,
89
- },
90
- };
91
- // Only the writable fields — see N8nWorkflowUpdateBody. Echoing the
92
- // whole GET payload back (which is what this used to do) is rejected
93
- // by the API's additionalProperties check.
94
- const body = {
95
- name: detail.name ?? w.name ?? 'Untitled',
96
- nodes: detail.nodes ?? [],
97
- connections: detail.connections ?? {},
98
- settings,
99
- };
100
- if (detail.staticData !== undefined) {
101
- body.staticData = detail.staticData;
102
- }
103
- // Save updated workflow
104
- const updateRes = await fetch(`${n8nUrl}/api/v1/workflows/${w.id}`, {
105
- method: 'PUT',
106
- headers: getHeaders(),
107
- body: JSON.stringify(body),
108
- signal: AbortSignal.timeout(5000),
109
- });
110
- if (!updateRes.ok) {
111
- console.warn(`[n8n-adapter] workflow ${w.id} was not updated: HTTP ${updateRes.status} ${updateRes.statusText}`);
112
- continue;
113
- }
114
- updated++;
115
- }
116
- // Reporting a write that every workflow rejected as a success left the
117
- // sync daemon recording a config version it had never applied.
118
- if (updated === 0)
119
- return null;
120
- return `n8n:${updated}_workflows`;
121
- }
122
- catch (err) {
123
- console.warn(`[n8n-adapter] failed to sync parameters:`, err);
124
- return null;
125
- }
126
44
  },
127
- async readCurrentHash(_workspaceRoot) {
128
- const n8nUrl = process.env.N8N_URL || 'http://localhost:5678';
129
- try {
130
- const listRes = await fetch(`${n8nUrl}/api/v1/workflows`, {
131
- headers: getHeaders(),
132
- signal: AbortSignal.timeout(3000),
133
- });
134
- if (!listRes.ok)
135
- return null;
136
- const listData = (await listRes.json());
137
- const workflows = listData.data || [];
138
- if (workflows.length === 0)
139
- return null;
140
- // Fetch the first workflow's variables to compute the hash
141
- const firstId = workflows[0].id;
142
- const detailRes = await fetch(`${n8nUrl}/api/v1/workflows/${firstId}`, {
143
- headers: getHeaders(),
144
- signal: AbortSignal.timeout(3000),
145
- });
146
- if (!detailRes.ok)
147
- return null;
148
- const detail = (await detailRes.json());
149
- const rules = detail.settings?.variables?.intutic_governance_rules ?? '';
150
- if (!rules)
151
- return null;
152
- return createHash('sha256').update(rules, 'utf-8').digest('hex');
153
- }
154
- catch {
155
- return null;
156
- }
45
+ /** No rules file: see the module doc. */
46
+ async writeConfig() {
47
+ return null;
48
+ },
49
+ async readCurrentHash() {
50
+ return null;
157
51
  },
158
52
  };
159
53
  //# sourceMappingURL=n8n.js.map