@intutic/cli 1.9.0 → 1.10.1

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 (357) hide show
  1. package/README.md +1 -0
  2. package/dist/cli.js +868 -30
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/attenuate.d.ts +39 -0
  5. package/dist/commands/attenuate.d.ts.map +1 -0
  6. package/dist/commands/attenuate.js +98 -0
  7. package/dist/commands/attenuate.js.map +1 -0
  8. package/dist/commands/budget.d.ts +80 -0
  9. package/dist/commands/budget.d.ts.map +1 -1
  10. package/dist/commands/budget.js +119 -3
  11. package/dist/commands/budget.js.map +1 -1
  12. package/dist/commands/connect.d.ts +10 -0
  13. package/dist/commands/connect.d.ts.map +1 -1
  14. package/dist/commands/connect.js +358 -48
  15. package/dist/commands/connect.js.map +1 -1
  16. package/dist/commands/credentials.d.ts +31 -0
  17. package/dist/commands/credentials.d.ts.map +1 -0
  18. package/dist/commands/credentials.js +134 -0
  19. package/dist/commands/credentials.js.map +1 -0
  20. package/dist/commands/decision.d.ts +37 -0
  21. package/dist/commands/decision.d.ts.map +1 -0
  22. package/dist/commands/decision.js +56 -0
  23. package/dist/commands/decision.js.map +1 -0
  24. package/dist/commands/doctor.d.ts +38 -1
  25. package/dist/commands/doctor.d.ts.map +1 -1
  26. package/dist/commands/doctor.js +228 -18
  27. package/dist/commands/doctor.js.map +1 -1
  28. package/dist/commands/enforce.d.ts +33 -0
  29. package/dist/commands/enforce.d.ts.map +1 -0
  30. package/dist/commands/enforce.js +150 -0
  31. package/dist/commands/enforce.js.map +1 -0
  32. package/dist/commands/enterprise.d.ts +29 -0
  33. package/dist/commands/enterprise.d.ts.map +1 -0
  34. package/dist/commands/enterprise.js +141 -0
  35. package/dist/commands/enterprise.js.map +1 -0
  36. package/dist/commands/env.d.ts +7 -0
  37. package/dist/commands/env.d.ts.map +1 -0
  38. package/dist/commands/env.js +55 -0
  39. package/dist/commands/env.js.map +1 -0
  40. package/dist/commands/exec.d.ts +38 -2
  41. package/dist/commands/exec.d.ts.map +1 -1
  42. package/dist/commands/exec.js +247 -10
  43. package/dist/commands/exec.js.map +1 -1
  44. package/dist/commands/findings.d.ts +84 -0
  45. package/dist/commands/findings.d.ts.map +1 -0
  46. package/dist/commands/findings.js +329 -0
  47. package/dist/commands/findings.js.map +1 -0
  48. package/dist/commands/gateway.d.ts +62 -0
  49. package/dist/commands/gateway.d.ts.map +1 -0
  50. package/dist/commands/gateway.js +298 -0
  51. package/dist/commands/gateway.js.map +1 -0
  52. package/dist/commands/guardrails.d.ts +81 -0
  53. package/dist/commands/guardrails.d.ts.map +1 -0
  54. package/dist/commands/guardrails.js +735 -0
  55. package/dist/commands/guardrails.js.map +1 -0
  56. package/dist/commands/init.d.ts +8 -0
  57. package/dist/commands/init.d.ts.map +1 -1
  58. package/dist/commands/init.js +14 -2
  59. package/dist/commands/init.js.map +1 -1
  60. package/dist/commands/install-daemon.d.ts +70 -3
  61. package/dist/commands/install-daemon.d.ts.map +1 -1
  62. package/dist/commands/install-daemon.js +482 -47
  63. package/dist/commands/install-daemon.js.map +1 -1
  64. package/dist/commands/integrity.d.ts +205 -0
  65. package/dist/commands/integrity.d.ts.map +1 -0
  66. package/dist/commands/integrity.js +620 -0
  67. package/dist/commands/integrity.js.map +1 -0
  68. package/dist/commands/judge.d.ts +31 -0
  69. package/dist/commands/judge.d.ts.map +1 -0
  70. package/dist/commands/judge.js +118 -0
  71. package/dist/commands/judge.js.map +1 -0
  72. package/dist/commands/org.d.ts +31 -0
  73. package/dist/commands/org.d.ts.map +1 -0
  74. package/dist/commands/org.js +159 -0
  75. package/dist/commands/org.js.map +1 -0
  76. package/dist/commands/policy.d.ts +138 -4
  77. package/dist/commands/policy.d.ts.map +1 -1
  78. package/dist/commands/policy.js +538 -97
  79. package/dist/commands/policy.js.map +1 -1
  80. package/dist/commands/predict-cost.d.ts +45 -0
  81. package/dist/commands/predict-cost.d.ts.map +1 -0
  82. package/dist/commands/predict-cost.js +123 -0
  83. package/dist/commands/predict-cost.js.map +1 -0
  84. package/dist/commands/rollback.d.ts +5 -0
  85. package/dist/commands/rollback.d.ts.map +1 -0
  86. package/dist/commands/rollback.js +142 -0
  87. package/dist/commands/rollback.js.map +1 -0
  88. package/dist/commands/routing.d.ts +62 -0
  89. package/dist/commands/routing.d.ts.map +1 -0
  90. package/dist/commands/routing.js +121 -0
  91. package/dist/commands/routing.js.map +1 -0
  92. package/dist/commands/setup.d.ts +62 -0
  93. package/dist/commands/setup.d.ts.map +1 -0
  94. package/dist/commands/setup.js +238 -0
  95. package/dist/commands/setup.js.map +1 -0
  96. package/dist/commands/skill.d.ts +268 -1
  97. package/dist/commands/skill.d.ts.map +1 -1
  98. package/dist/commands/skill.js +744 -39
  99. package/dist/commands/skill.js.map +1 -1
  100. package/dist/commands/sops.d.ts +95 -0
  101. package/dist/commands/sops.d.ts.map +1 -1
  102. package/dist/commands/sops.js +334 -34
  103. package/dist/commands/sops.js.map +1 -1
  104. package/dist/commands/start.d.ts.map +1 -1
  105. package/dist/commands/start.js +1 -18
  106. package/dist/commands/start.js.map +1 -1
  107. package/dist/commands/status.d.ts.map +1 -1
  108. package/dist/commands/status.js +44 -1
  109. package/dist/commands/status.js.map +1 -1
  110. package/dist/commands/team.d.ts +38 -0
  111. package/dist/commands/team.d.ts.map +1 -0
  112. package/dist/commands/team.js +140 -0
  113. package/dist/commands/team.js.map +1 -0
  114. package/dist/commands/traces.d.ts +8 -1
  115. package/dist/commands/traces.d.ts.map +1 -1
  116. package/dist/commands/traces.js +114 -15
  117. package/dist/commands/traces.js.map +1 -1
  118. package/dist/commands/whoami.d.ts.map +1 -1
  119. package/dist/commands/whoami.js +2 -1
  120. package/dist/commands/whoami.js.map +1 -1
  121. package/dist/config/keychain.d.ts +10 -2
  122. package/dist/config/keychain.d.ts.map +1 -1
  123. package/dist/config/keychain.js +83 -14
  124. package/dist/config/keychain.js.map +1 -1
  125. package/dist/config/paths.d.ts +27 -0
  126. package/dist/config/paths.d.ts.map +1 -1
  127. package/dist/config/paths.js +37 -6
  128. package/dist/config/paths.js.map +1 -1
  129. package/dist/config/store.d.ts.map +1 -1
  130. package/dist/config/store.js +19 -3
  131. package/dist/config/store.js.map +1 -1
  132. package/dist/harness/ag2.d.ts +22 -0
  133. package/dist/harness/ag2.d.ts.map +1 -0
  134. package/dist/harness/ag2.js +34 -0
  135. package/dist/harness/ag2.js.map +1 -0
  136. package/dist/harness/agentcore.d.ts +55 -0
  137. package/dist/harness/agentcore.d.ts.map +1 -0
  138. package/dist/harness/agentcore.js +119 -0
  139. package/dist/harness/agentcore.js.map +1 -0
  140. package/dist/harness/agenticOrchestrator.d.ts +52 -0
  141. package/dist/harness/agenticOrchestrator.d.ts.map +1 -0
  142. package/dist/harness/agenticOrchestrator.js +115 -0
  143. package/dist/harness/agenticOrchestrator.js.map +1 -0
  144. package/dist/harness/aiSdkHarness.d.ts +30 -0
  145. package/dist/harness/aiSdkHarness.d.ts.map +1 -0
  146. package/dist/harness/aiSdkHarness.js +51 -0
  147. package/dist/harness/aiSdkHarness.js.map +1 -0
  148. package/dist/harness/aiSdkWorkflow.d.ts +26 -0
  149. package/dist/harness/aiSdkWorkflow.d.ts.map +1 -0
  150. package/dist/harness/aiSdkWorkflow.js +39 -0
  151. package/dist/harness/aiSdkWorkflow.js.map +1 -0
  152. package/dist/harness/autogen.d.ts +24 -0
  153. package/dist/harness/autogen.d.ts.map +1 -0
  154. package/dist/harness/autogen.js +36 -0
  155. package/dist/harness/autogen.js.map +1 -0
  156. package/dist/harness/base.js.map +1 -1
  157. package/dist/harness/continue.d.ts.map +1 -1
  158. package/dist/harness/continue.js +2 -1
  159. package/dist/harness/continue.js.map +1 -1
  160. package/dist/harness/crewai.d.ts +15 -0
  161. package/dist/harness/crewai.d.ts.map +1 -0
  162. package/dist/harness/crewai.js +26 -0
  163. package/dist/harness/crewai.js.map +1 -0
  164. package/dist/harness/detector.d.ts +1 -1
  165. package/dist/harness/detector.d.ts.map +1 -1
  166. package/dist/harness/detector.js +47 -1
  167. package/dist/harness/detector.js.map +1 -1
  168. package/dist/harness/dsh.d.ts +19 -0
  169. package/dist/harness/dsh.d.ts.map +1 -0
  170. package/dist/harness/dsh.js +93 -0
  171. package/dist/harness/dsh.js.map +1 -0
  172. package/dist/harness/eve.d.ts +40 -0
  173. package/dist/harness/eve.d.ts.map +1 -0
  174. package/dist/harness/eve.js +67 -0
  175. package/dist/harness/eve.js.map +1 -0
  176. package/dist/harness/googleAdk.d.ts +18 -0
  177. package/dist/harness/googleAdk.d.ts.map +1 -0
  178. package/dist/harness/googleAdk.js +29 -0
  179. package/dist/harness/googleAdk.js.map +1 -0
  180. package/dist/harness/goose.d.ts.map +1 -1
  181. package/dist/harness/goose.js +5 -1
  182. package/dist/harness/goose.js.map +1 -1
  183. package/dist/harness/grok.d.ts +16 -0
  184. package/dist/harness/grok.d.ts.map +1 -0
  185. package/dist/harness/grok.js +78 -0
  186. package/dist/harness/grok.js.map +1 -0
  187. package/dist/harness/jsSdkGatedAdapter.d.ts +102 -0
  188. package/dist/harness/jsSdkGatedAdapter.d.ts.map +1 -0
  189. package/dist/harness/jsSdkGatedAdapter.js +139 -0
  190. package/dist/harness/jsSdkGatedAdapter.js.map +1 -0
  191. package/dist/harness/langchain.d.ts +22 -0
  192. package/dist/harness/langchain.d.ts.map +1 -0
  193. package/dist/harness/langchain.js +33 -0
  194. package/dist/harness/langchain.js.map +1 -0
  195. package/dist/harness/langgraph.d.ts +22 -0
  196. package/dist/harness/langgraph.d.ts.map +1 -0
  197. package/dist/harness/langgraph.js +80 -0
  198. package/dist/harness/langgraph.js.map +1 -0
  199. package/dist/harness/mastra.d.ts +21 -0
  200. package/dist/harness/mastra.d.ts.map +1 -0
  201. package/dist/harness/mastra.js +33 -0
  202. package/dist/harness/mastra.js.map +1 -0
  203. package/dist/harness/muse.d.ts +22 -0
  204. package/dist/harness/muse.d.ts.map +1 -0
  205. package/dist/harness/muse.js +92 -0
  206. package/dist/harness/muse.js.map +1 -0
  207. package/dist/harness/n8n.d.ts.map +1 -1
  208. package/dist/harness/n8n.js +36 -11
  209. package/dist/harness/n8n.js.map +1 -1
  210. package/dist/harness/openaiAgents.d.ts +40 -0
  211. package/dist/harness/openaiAgents.d.ts.map +1 -0
  212. package/dist/harness/openaiAgents.js +107 -0
  213. package/dist/harness/openaiAgents.js.map +1 -0
  214. package/dist/harness/opencode.d.ts +24 -0
  215. package/dist/harness/opencode.d.ts.map +1 -0
  216. package/dist/harness/opencode.js +97 -0
  217. package/dist/harness/opencode.js.map +1 -0
  218. package/dist/harness/pydanticAi.d.ts +19 -0
  219. package/dist/harness/pydanticAi.d.ts.map +1 -0
  220. package/dist/harness/pydanticAi.js +30 -0
  221. package/dist/harness/pydanticAi.js.map +1 -0
  222. package/dist/harness/sdkGatedAdapter.d.ts +55 -0
  223. package/dist/harness/sdkGatedAdapter.d.ts.map +1 -0
  224. package/dist/harness/sdkGatedAdapter.js +85 -0
  225. package/dist/harness/sdkGatedAdapter.js.map +1 -0
  226. package/dist/harness/smolagents.d.ts +22 -0
  227. package/dist/harness/smolagents.d.ts.map +1 -0
  228. package/dist/harness/smolagents.js +33 -0
  229. package/dist/harness/smolagents.js.map +1 -0
  230. package/dist/harness/strands.d.ts +22 -0
  231. package/dist/harness/strands.d.ts.map +1 -0
  232. package/dist/harness/strands.js +35 -0
  233. package/dist/harness/strands.js.map +1 -0
  234. package/dist/harness/trueforge.d.ts +25 -0
  235. package/dist/harness/trueforge.d.ts.map +1 -0
  236. package/dist/harness/trueforge.js +40 -0
  237. package/dist/harness/trueforge.js.map +1 -0
  238. package/dist/harness/types.d.ts.map +1 -1
  239. package/dist/harness/types.js +70 -0
  240. package/dist/harness/types.js.map +1 -1
  241. package/dist/harness/vercelAiSdk.d.ts +31 -0
  242. package/dist/harness/vercelAiSdk.d.ts.map +1 -0
  243. package/dist/harness/vercelAiSdk.js +44 -0
  244. package/dist/harness/vercelAiSdk.js.map +1 -0
  245. package/dist/harness/xirp.d.ts +43 -0
  246. package/dist/harness/xirp.d.ts.map +1 -0
  247. package/dist/harness/xirp.js +95 -0
  248. package/dist/harness/xirp.js.map +1 -0
  249. package/dist/lib/api.d.ts +68 -0
  250. package/dist/lib/api.d.ts.map +1 -1
  251. package/dist/lib/api.js +108 -67
  252. package/dist/lib/api.js.map +1 -1
  253. package/dist/lib/authMessages.d.ts +19 -0
  254. package/dist/lib/authMessages.d.ts.map +1 -0
  255. package/dist/lib/authMessages.js +20 -0
  256. package/dist/lib/authMessages.js.map +1 -0
  257. package/dist/lib/binaryChecksum.d.ts +12 -0
  258. package/dist/lib/binaryChecksum.d.ts.map +1 -0
  259. package/dist/lib/binaryChecksum.js +45 -0
  260. package/dist/lib/binaryChecksum.js.map +1 -0
  261. package/dist/lib/binaryOnPath.d.ts +24 -0
  262. package/dist/lib/binaryOnPath.d.ts.map +1 -0
  263. package/dist/lib/binaryOnPath.js +31 -0
  264. package/dist/lib/binaryOnPath.js.map +1 -0
  265. package/dist/lib/caTrust.d.ts +69 -0
  266. package/dist/lib/caTrust.d.ts.map +1 -0
  267. package/dist/lib/caTrust.js +169 -0
  268. package/dist/lib/caTrust.js.map +1 -0
  269. package/dist/lib/ciscoScanner.d.ts +178 -0
  270. package/dist/lib/ciscoScanner.d.ts.map +1 -0
  271. package/dist/lib/ciscoScanner.js +292 -0
  272. package/dist/lib/ciscoScanner.js.map +1 -0
  273. package/dist/lib/decisionsLogRefresh.d.ts +28 -0
  274. package/dist/lib/decisionsLogRefresh.d.ts.map +1 -0
  275. package/dist/lib/decisionsLogRefresh.js +54 -0
  276. package/dist/lib/decisionsLogRefresh.js.map +1 -0
  277. package/dist/lib/deviceReport.d.ts +26 -0
  278. package/dist/lib/deviceReport.d.ts.map +1 -0
  279. package/dist/lib/deviceReport.js +55 -0
  280. package/dist/lib/deviceReport.js.map +1 -0
  281. package/dist/lib/elevation.d.ts +58 -0
  282. package/dist/lib/elevation.d.ts.map +1 -0
  283. package/dist/lib/elevation.js +83 -0
  284. package/dist/lib/elevation.js.map +1 -0
  285. package/dist/lib/enforcementState.d.ts +69 -0
  286. package/dist/lib/enforcementState.d.ts.map +1 -0
  287. package/dist/lib/enforcementState.js +113 -0
  288. package/dist/lib/enforcementState.js.map +1 -0
  289. package/dist/lib/ensureValkey.d.ts.map +1 -1
  290. package/dist/lib/ensureValkey.js +2 -2
  291. package/dist/lib/ensureValkey.js.map +1 -1
  292. package/dist/lib/envInjector.d.ts.map +1 -1
  293. package/dist/lib/envInjector.js +22 -4
  294. package/dist/lib/envInjector.js.map +1 -1
  295. package/dist/lib/gitHooks.d.ts +7 -2
  296. package/dist/lib/gitHooks.d.ts.map +1 -1
  297. package/dist/lib/gitHooks.js +180 -13
  298. package/dist/lib/gitHooks.js.map +1 -1
  299. package/dist/lib/gracefulShutdown.d.ts +37 -0
  300. package/dist/lib/gracefulShutdown.d.ts.map +1 -0
  301. package/dist/lib/gracefulShutdown.js +57 -0
  302. package/dist/lib/gracefulShutdown.js.map +1 -0
  303. package/dist/lib/graphIdentity.d.ts +80 -0
  304. package/dist/lib/graphIdentity.d.ts.map +1 -0
  305. package/dist/lib/graphIdentity.js +120 -0
  306. package/dist/lib/graphIdentity.js.map +1 -0
  307. package/dist/lib/localTraces.d.ts +61 -0
  308. package/dist/lib/localTraces.d.ts.map +1 -0
  309. package/dist/lib/localTraces.js +173 -0
  310. package/dist/lib/localTraces.js.map +1 -0
  311. package/dist/lib/mdmManifest.d.ts +73 -0
  312. package/dist/lib/mdmManifest.d.ts.map +1 -0
  313. package/dist/lib/mdmManifest.js +190 -0
  314. package/dist/lib/mdmManifest.js.map +1 -0
  315. package/dist/lib/onboarding.d.ts.map +1 -1
  316. package/dist/lib/onboarding.js +60 -1
  317. package/dist/lib/onboarding.js.map +1 -1
  318. package/dist/lib/otelPropagation.d.ts +26 -0
  319. package/dist/lib/otelPropagation.d.ts.map +1 -0
  320. package/dist/lib/otelPropagation.js +40 -0
  321. package/dist/lib/otelPropagation.js.map +1 -0
  322. package/dist/lib/policySnapshot.d.ts +92 -0
  323. package/dist/lib/policySnapshot.d.ts.map +1 -0
  324. package/dist/lib/policySnapshot.js +173 -0
  325. package/dist/lib/policySnapshot.js.map +1 -0
  326. package/dist/lib/process.d.ts.map +1 -1
  327. package/dist/lib/process.js +60 -0
  328. package/dist/lib/process.js.map +1 -1
  329. package/dist/lib/providerProbe.d.ts +28 -0
  330. package/dist/lib/providerProbe.d.ts.map +1 -0
  331. package/dist/lib/providerProbe.js +57 -0
  332. package/dist/lib/providerProbe.js.map +1 -0
  333. package/dist/lib/proxyBinary.d.ts +19 -0
  334. package/dist/lib/proxyBinary.d.ts.map +1 -0
  335. package/dist/lib/proxyBinary.js +30 -0
  336. package/dist/lib/proxyBinary.js.map +1 -0
  337. package/dist/lib/sandbox/firecracker.d.ts +89 -0
  338. package/dist/lib/sandbox/firecracker.d.ts.map +1 -0
  339. package/dist/lib/sandbox/firecracker.js +135 -0
  340. package/dist/lib/sandbox/firecracker.js.map +1 -0
  341. package/dist/lib/sandbox/index.d.ts +34 -0
  342. package/dist/lib/sandbox/index.d.ts.map +1 -0
  343. package/dist/lib/sandbox/index.js +54 -0
  344. package/dist/lib/sandbox/index.js.map +1 -0
  345. package/dist/lib/sandbox/oci.d.ts +38 -0
  346. package/dist/lib/sandbox/oci.d.ts.map +1 -0
  347. package/dist/lib/sandbox/oci.js +108 -0
  348. package/dist/lib/sandbox/oci.js.map +1 -0
  349. package/dist/lib/sandbox/types.d.ts +48 -0
  350. package/dist/lib/sandbox/types.d.ts.map +1 -0
  351. package/dist/lib/sandbox/types.js +12 -0
  352. package/dist/lib/sandbox/types.js.map +1 -0
  353. package/dist/lib/sopFrontMatter.d.ts +50 -0
  354. package/dist/lib/sopFrontMatter.d.ts.map +1 -0
  355. package/dist/lib/sopFrontMatter.js +129 -0
  356. package/dist/lib/sopFrontMatter.js.map +1 -0
  357. package/package.json +11 -6
@@ -0,0 +1,25 @@
1
+ /**
2
+ * trueforge.ts — TrueForge (embedded) adapter (env-file config, SDK-side gate).
3
+ *
4
+ * Same shape as mastra.ts/vercelAiSdk.ts (see jsSdkGatedAdapter.ts): detected
5
+ * via `@truefoundry/trueforge-core` in `package.json`, and points at
6
+ * `@intutic/gate/trueforge`'s `intuticApprovalResponder()` rather than an
7
+ * `intutic-clawde` import.
8
+ *
9
+ * Covers ONLY the embedded-library deployment mode — another team's Node
10
+ * process importing `@truefoundry/trueforge-core` directly. TrueForge run as
11
+ * its own standalone/hosted server (`npx @truefoundry/trueforge`, Docker
12
+ * Compose, or the Helm chart) is a separate, not-yet-built HarnessType and is
13
+ * NOT detected by this adapter.
14
+ *
15
+ * NOTE (confirmed against a real install, `@truefoundry/trueforge-core@0.1.4`):
16
+ * unlike Mastra's `beforeToolCall`/Vercel AI SDK's `toolApproval`, TrueForge
17
+ * has no synchronous in-process approval callback at all — the gate is a
18
+ * batch responder answering `tool.approval_required` turn pauses. See
19
+ * `@intutic/gate/trueforge`'s module doc for the full record.
20
+ *
21
+ * HLD §3.14 — Harness Onboarding Matrix
22
+ * @module
23
+ */
24
+ export declare const trueforgeAdapter: import("./types.js").IHarnessAdapter;
25
+ //# sourceMappingURL=trueforge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trueforge.d.ts","sourceRoot":"","sources":["../../src/harness/trueforge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,eAAO,MAAM,gBAAgB,sCAc3B,CAAA"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * trueforge.ts — TrueForge (embedded) adapter (env-file config, SDK-side gate).
3
+ *
4
+ * Same shape as mastra.ts/vercelAiSdk.ts (see jsSdkGatedAdapter.ts): detected
5
+ * via `@truefoundry/trueforge-core` in `package.json`, and points at
6
+ * `@intutic/gate/trueforge`'s `intuticApprovalResponder()` rather than an
7
+ * `intutic-clawde` import.
8
+ *
9
+ * Covers ONLY the embedded-library deployment mode — another team's Node
10
+ * process importing `@truefoundry/trueforge-core` directly. TrueForge run as
11
+ * its own standalone/hosted server (`npx @truefoundry/trueforge`, Docker
12
+ * Compose, or the Helm chart) is a separate, not-yet-built HarnessType and is
13
+ * NOT detected by this adapter.
14
+ *
15
+ * NOTE (confirmed against a real install, `@truefoundry/trueforge-core@0.1.4`):
16
+ * unlike Mastra's `beforeToolCall`/Vercel AI SDK's `toolApproval`, TrueForge
17
+ * has no synchronous in-process approval callback at all — the gate is a
18
+ * batch responder answering `tool.approval_required` turn pauses. See
19
+ * `@intutic/gate/trueforge`'s module doc for the full record.
20
+ *
21
+ * HLD §3.14 — Harness Onboarding Matrix
22
+ * @module
23
+ */
24
+ import { HarnessType } from '@intutic/shared-types';
25
+ import { makeJsSdkGatedAdapter } from './jsSdkGatedAdapter.js';
26
+ export const trueforgeAdapter = makeJsSdkGatedAdapter({
27
+ type: HarnessType.TRUEFORGE,
28
+ label: 'TrueForge (embedded)',
29
+ requires: [{ name: '@truefoundry/trueforge-core' }],
30
+ npmInstall: '@intutic/gate',
31
+ importLine: "import { intuticApprovalResponder } from '@intutic/gate/trueforge'",
32
+ usageSummary: 'intuticApprovalResponder() answers tool.approval_required pauses with a real ' +
33
+ 'Gate.guard() verdict, producing user.tool_approval items for your next ' +
34
+ "session.createTurn() call. NOTE: TrueForge has no synchronous approval callback to " +
35
+ 'hang a function off — this is a batch responder, not a beforeToolCall/toolApproval ' +
36
+ 'option. Covers embedded-library mode only; the standalone/hosted server is not yet ' +
37
+ 'supported.',
38
+ docsSlug: 'trueforge',
39
+ });
40
+ //# sourceMappingURL=trueforge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trueforge.js","sourceRoot":"","sources":["../../src/harness/trueforge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;IACpD,IAAI,EAAE,WAAW,CAAC,SAAS;IAC3B,KAAK,EAAE,sBAAsB;IAC7B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;IACnD,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,oEAAoE;IAChF,YAAY,EACV,+EAA+E;QAC/E,yEAAyE;QACzE,qFAAqF;QACrF,qFAAqF;QACrF,qFAAqF;QACrF,YAAY;IACd,QAAQ,EAAE,WAAW;CACtB,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEtE,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,+DAA+D;IAC/D,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/C;;;OAGG;IACH,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAClG,4FAA4F;IAC5F,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAC/D;AAED,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAmB5D,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEtE,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,+DAA+D;IAC/D,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/C;;;OAGG;IACH,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAClG,4FAA4F;IAC5F,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAC/D;AAED,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAyF5D,CAAA"}
@@ -28,5 +28,75 @@ export const HARNESS_CONFIG_FILES = {
28
28
  'claude-desktop': '',
29
29
  'goose': '',
30
30
  'open-webui': '',
31
+ 'langgraph': '.env.intutic',
32
+ // Muse Code reads AGENTS.md (falling back to CLAUDE.md) — see muse.ts.
33
+ 'muse-code': 'AGENTS.md',
34
+ // AGENTS.md is Grok Build's native rules file — the same cross-tool
35
+ // convention Codex/Amp read. Delivered via the generic markdown formatter
36
+ // (`buildMarkdownContent`/`formatMarkdown`) every `---`-separated rules
37
+ // file in this codebase already shares (Cursor, Claude Code, Windsurf,
38
+ // GitHub Copilot) — not a bespoke format.
39
+ 'grok': 'AGENTS.md',
40
+ // OpenCode reads AGENTS.md (CLAUDE.md fallback) — see opencode.ts. The gate
41
+ // is the plugin `openCodeHooks.ts` generates, not this file.
42
+ 'opencode': 'AGENTS.md',
43
+ // dsh has no workspace-relative rules file in the research this phase could
44
+ // verify — its config lives entirely under $DSH_HOME (profiles/*/cordis.patch.yml,
45
+ // settings.yaml), not the project workspace. Empty, matching goose/cline/
46
+ // continue/claude-desktop/open-webui's precedent for "no single canonical
47
+ // file" harnesses; dsh.ts's own adapter resolves its real paths directly.
48
+ 'dsh': '',
49
+ // Xirp writes no config of its own — see xirp.ts's module doc. It
50
+ // orchestrates other already-gated harnesses (Claude Code, Codex,
51
+ // Antigravity/Gemini CLI), whose own adapters do the real writing.
52
+ 'xirp': '',
53
+ // Agentic Orchestrator writes no config of its own — see
54
+ // agenticOrchestrator.ts's module doc. It orchestrates other CLI backends
55
+ // (Claude Code, Codex, OpenCode), whose own adapters do the real writing.
56
+ 'agentic-orchestrator': '',
57
+ // Wave 1 SDK-gated frameworks — same rationale as langgraph above: no
58
+ // on-disk hook/config file exists to gate tool calls, so each of these
59
+ // writes .env.intutic (proxy base-URL vars + an SDK-gate pointer comment).
60
+ 'langchain': '.env.intutic',
61
+ 'crewai': '.env.intutic',
62
+ 'autogen': '.env.intutic',
63
+ 'ag2': '.env.intutic',
64
+ 'google-adk': '.env.intutic',
65
+ 'openai-agents': '.env.intutic',
66
+ 'pydantic-ai': '.env.intutic',
67
+ 'smolagents': '.env.intutic',
68
+ // A4: AWS Strands Agents — same Python SDK-gated rationale as the Wave 1
69
+ // family above (gate ships in intutic_clawde.gate.adapters.strands).
70
+ 'strands': '.env.intutic',
71
+ // T2: JS/TS SDK-gated frameworks — same rationale as the Wave 1 Python
72
+ // family above, but the blocking gate ships in @intutic/gate
73
+ // (packages/gate-js) rather than intutic-clawde.
74
+ 'mastra': '.env.intutic',
75
+ 'vercel-ai-sdk': '.env.intutic',
76
+ // eve (Vercel, PREVIEW) — same JS/TS SDK-gated family; detection is a
77
+ // compound `eve` dep + `agent/` directory check — see eve.ts.
78
+ 'eve': '.env.intutic',
79
+ // TrueForge (embedded-library mode only — see trueforge.ts's module doc
80
+ // and the HarnessType.TRUEFORGE doc comment); same JS/TS SDK-gated family.
81
+ 'trueforge': '.env.intutic',
82
+ // A3: Vercel platform-agent runtimes — same @intutic/gate family. Note the
83
+ // env vars are weaker still for ai-sdk-harness (tool execution is
84
+ // server-side in Vercel Sandbox microVMs; see aiSdkHarness.ts's module doc
85
+ // and the envPreamble override it carries).
86
+ 'ai-sdk-harness': '.env.intutic',
87
+ 'ai-sdk-workflow': '.env.intutic',
88
+ // B2: AWS Bedrock AgentCore Runtime — hosts the customer's own framework
89
+ // code unchanged; the actual tool-call gate belongs to whichever
90
+ // already-supported framework adapter that code uses (Strands, LangGraph,
91
+ // ...), same 'delegated'/no-file-of-its-own shape as xirp/
92
+ // agentic-orchestrator above. See agentcore.ts's module doc.
93
+ 'agentcore-runtime': '',
94
+ // B3: TrueForge, standalone/hosted server (see the HarnessType.TRUEFORGE_SERVER
95
+ // doc comment) — no CLI adapter exists for this row at all: it is an
96
+ // operator-configured deployment, not a package.json dependency of
97
+ // whatever repo `intutic init` runs against, so there is nothing for this
98
+ // detector to find and no config file to write. Governed entirely by
99
+ // services/trueforge-bridge instead (GateKind: 'bridge').
100
+ 'trueforge-server': '',
31
101
  };
32
102
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqBH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAgC;IAC/D,QAAQ,EAAE,cAAc;IACxB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,EAAE,EAAE,6CAA6C;IACxD,UAAU,EAAE,yBAAyB;IACrC,QAAQ,EAAE,qBAAqB;IAC/B,IAAI,EAAE,gBAAgB;IACtB,gBAAgB,EAAE,iCAAiC;IACnD,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,EAAE;IACpB,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,EAAE;CACjB,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqBH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAgC;IAC/D,QAAQ,EAAE,cAAc;IACxB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,EAAE,EAAE,6CAA6C;IACxD,UAAU,EAAE,yBAAyB;IACrC,QAAQ,EAAE,qBAAqB;IAC/B,IAAI,EAAE,gBAAgB;IACtB,gBAAgB,EAAE,iCAAiC;IACnD,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,EAAE;IACpB,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,cAAc;IAC3B,uEAAuE;IACvE,WAAW,EAAE,WAAW;IACxB,oEAAoE;IACpE,0EAA0E;IAC1E,wEAAwE;IACxE,uEAAuE;IACvE,0CAA0C;IAC1C,MAAM,EAAE,WAAW;IACnB,4EAA4E;IAC5E,6DAA6D;IAC7D,UAAU,EAAE,WAAW;IACvB,4EAA4E;IAC5E,mFAAmF;IACnF,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,KAAK,EAAE,EAAE;IACT,kEAAkE;IAClE,kEAAkE;IAClE,mEAAmE;IACnE,MAAM,EAAE,EAAE;IACV,yDAAyD;IACzD,0EAA0E;IAC1E,0EAA0E;IAC1E,sBAAsB,EAAE,EAAE;IAC1B,sEAAsE;IACtE,uEAAuE;IACvE,2EAA2E;IAC3E,WAAW,EAAE,cAAc;IAC3B,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,cAAc;IACzB,KAAK,EAAE,cAAc;IACrB,YAAY,EAAE,cAAc;IAC5B,eAAe,EAAE,cAAc;IAC/B,aAAa,EAAE,cAAc;IAC7B,YAAY,EAAE,cAAc;IAC5B,yEAAyE;IACzE,qEAAqE;IACrE,SAAS,EAAE,cAAc;IACzB,uEAAuE;IACvE,6DAA6D;IAC7D,iDAAiD;IACjD,QAAQ,EAAE,cAAc;IACxB,eAAe,EAAE,cAAc;IAC/B,sEAAsE;IACtE,8DAA8D;IAC9D,KAAK,EAAE,cAAc;IACrB,wEAAwE;IACxE,2EAA2E;IAC3E,WAAW,EAAE,cAAc;IAC3B,2EAA2E;IAC3E,kEAAkE;IAClE,2EAA2E;IAC3E,4CAA4C;IAC5C,gBAAgB,EAAE,cAAc;IAChC,iBAAiB,EAAE,cAAc;IACjC,yEAAyE;IACzE,iEAAiE;IACjE,0EAA0E;IAC1E,2DAA2D;IAC3D,6DAA6D;IAC7D,mBAAmB,EAAE,EAAE;IACvB,gFAAgF;IAChF,qEAAqE;IACrE,mEAAmE;IACnE,0EAA0E;IAC1E,qEAAqE;IACrE,0DAA0D;IAC1D,kBAAkB,EAAE,EAAE;CACvB,CAAA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * vercelAiSdk.ts — Vercel AI SDK adapter (env-file config, SDK-side gate).
3
+ *
4
+ * Same shape as langgraph.ts's Python-side siblings (see
5
+ * jsSdkGatedAdapter.ts), but JS/TS-native: detected via `ai` at major
6
+ * version >= 6 (the `toolApproval` veto point this points at is a v6+ API —
7
+ * a bare `ai` presence check would false-positive on pre-6 workspaces whose
8
+ * tool-loop surface does not have this hook at all) PLUS at least one
9
+ * `@ai-sdk/*` provider package, since `ai` alone declares the tool-loop
10
+ * surface but ships no model provider.
11
+ *
12
+ * DOCUMENTED LIMITATION carried into the generated `.env.intutic`: unlike
13
+ * every other harness this env-file convention covers, the Vercel AI SDK
14
+ * has no environment-variable LLM-egress override — the written
15
+ * `ANTHROPIC_BASE_URL`/`OPENAI_BASE_URL`/`INTUTIC_PROXY_URL` vars are
16
+ * therefore INERT for this framework's own LLM calls (a plain `source
17
+ * .env.intutic` does nothing for `ai`) unless the caller's own provider
18
+ * construction reads them explicitly — routing requires in-code
19
+ * `createOpenAI({ baseURL })`/`createGateway({ baseURL })` via
20
+ * `@intutic/gate/vercel`'s `withIntuticProxy()`. The vars are still
21
+ * written (a workspace may run OTHER harnesses that DO honour them, or a
22
+ * caller may wire them in manually), but this is not a "zero-code" proxy
23
+ * hookup the way it is for `langchain`/`langgraph`. See
24
+ * `@intutic/gate/vercel`'s module doc and
25
+ * `apps/docs/integrations/vercel-ai-sdk.md`.
26
+ *
27
+ * HLD §3.14 — Harness Onboarding Matrix
28
+ * @module
29
+ */
30
+ export declare const vercelAiSdkAdapter: import("./types.js").IHarnessAdapter;
31
+ //# sourceMappingURL=vercelAiSdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercelAiSdk.d.ts","sourceRoot":"","sources":["../../src/harness/vercelAiSdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,eAAO,MAAM,kBAAkB,sCAY7B,CAAA"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * vercelAiSdk.ts — Vercel AI SDK adapter (env-file config, SDK-side gate).
3
+ *
4
+ * Same shape as langgraph.ts's Python-side siblings (see
5
+ * jsSdkGatedAdapter.ts), but JS/TS-native: detected via `ai` at major
6
+ * version >= 6 (the `toolApproval` veto point this points at is a v6+ API —
7
+ * a bare `ai` presence check would false-positive on pre-6 workspaces whose
8
+ * tool-loop surface does not have this hook at all) PLUS at least one
9
+ * `@ai-sdk/*` provider package, since `ai` alone declares the tool-loop
10
+ * surface but ships no model provider.
11
+ *
12
+ * DOCUMENTED LIMITATION carried into the generated `.env.intutic`: unlike
13
+ * every other harness this env-file convention covers, the Vercel AI SDK
14
+ * has no environment-variable LLM-egress override — the written
15
+ * `ANTHROPIC_BASE_URL`/`OPENAI_BASE_URL`/`INTUTIC_PROXY_URL` vars are
16
+ * therefore INERT for this framework's own LLM calls (a plain `source
17
+ * .env.intutic` does nothing for `ai`) unless the caller's own provider
18
+ * construction reads them explicitly — routing requires in-code
19
+ * `createOpenAI({ baseURL })`/`createGateway({ baseURL })` via
20
+ * `@intutic/gate/vercel`'s `withIntuticProxy()`. The vars are still
21
+ * written (a workspace may run OTHER harnesses that DO honour them, or a
22
+ * caller may wire them in manually), but this is not a "zero-code" proxy
23
+ * hookup the way it is for `langchain`/`langgraph`. See
24
+ * `@intutic/gate/vercel`'s module doc and
25
+ * `apps/docs/integrations/vercel-ai-sdk.md`.
26
+ *
27
+ * HLD §3.14 — Harness Onboarding Matrix
28
+ * @module
29
+ */
30
+ import { HarnessType } from '@intutic/shared-types';
31
+ import { makeJsSdkGatedAdapter } from './jsSdkGatedAdapter.js';
32
+ export const vercelAiSdkAdapter = makeJsSdkGatedAdapter({
33
+ type: HarnessType.VERCEL_AI_SDK,
34
+ label: 'Vercel AI SDK',
35
+ requires: [{ name: 'ai', minMajor: 6 }],
36
+ requiresPrefix: '@ai-sdk/',
37
+ npmInstall: '@intutic/gate',
38
+ importLine: "import { intuticToolApproval, withIntuticProxy } from '@intutic/gate/vercel'",
39
+ usageSummary: 'generateText({ ..., toolApproval: intuticToolApproval() }) — the toolApproval veto point. ' +
40
+ 'NOTE: this framework has NO env-var LLM-egress routing; use withIntuticProxy(createOpenAI)( ' +
41
+ '...) or equivalent in code — the env vars above do not route this framework on their own.',
42
+ docsSlug: 'vercel-ai-sdk',
43
+ });
44
+ //# sourceMappingURL=vercelAiSdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercelAiSdk.js","sourceRoot":"","sources":["../../src/harness/vercelAiSdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;IACtD,IAAI,EAAE,WAAW,CAAC,aAAa;IAC/B,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACvC,cAAc,EAAE,UAAU;IAC1B,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,8EAA8E;IAC1F,YAAY,EACV,4FAA4F;QAC5F,8FAA8F;QAC9F,2FAA2F;IAC7F,QAAQ,EAAE,eAAe;CAC1B,CAAC,CAAA"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * xirp.ts — Spotify "Xirp" adapter (macOS-only desktop orchestrator, beta
3
+ * since 2026-08-11).
4
+ *
5
+ * Xirp is NOT itself an AI agent — it is an orchestrator that spawns one or
6
+ * more ALREADY-INSTALLED CLI coding agents (Claude Code, Codex, Gemini CLI)
7
+ * each inside its own tmux session and `git worktree`, so a developer can run
8
+ * several parallel agent sessions against the same repository without their
9
+ * working-tree state colliding. Per Xirp's own public FAQ, it preserves each
10
+ * wrapped harness's NATIVE, UNMODIFIED configuration — it introduces no
11
+ * config format of its own for Intutic to parse or gate.
12
+ *
13
+ * That means this adapter exists for DETECTION/reporting only. `writeConfig`
14
+ * writes nothing: whatever Intutic already writes for the wrapped harness
15
+ * (`claudeCode.ts` / `codex.ts` / `antigravity.ts`'s own adapters) is what
16
+ * governs a tool call made inside a Xirp-managed session — PROVIDED those
17
+ * files actually reach the git worktree Xirp creates for that session, which
18
+ * they do not by default: a worktree checkout has its own independent
19
+ * working tree, and project-tier governance files are untracked. Part B of
20
+ * the phase that added this adapter (`services/sync-daemon/src/lib/
21
+ * gitWorktrees.ts` + its wiring into `syncLoop.ts`) is what closes that gap;
22
+ * this adapter's only job is recognising that a Xirp-managed workspace is
23
+ * present at all, so `intutic status`/`intutic init` can report it.
24
+ *
25
+ * See `services/sync-daemon/__tests__/harness/gateRegistry.ts`'s NO_GATE row
26
+ * for `xirp` for the full governance rationale, and
27
+ * `apps/docs/integrations/xirp.md` for user-facing docs.
28
+ *
29
+ * # Unconfirmed facts (flagged, not silently assumed)
30
+ *
31
+ * Xirp is a macOS-only beta app with no CLI/npm package and no public
32
+ * download available in this environment, so none of the detection paths
33
+ * below were live-verified against a real install — they follow this
34
+ * codebase's own convention for comparable tools (`~/.grok`, `~/.muse`,
35
+ * `<Name>.app` in `/Applications`) rather than a confirmed Xirp source. See
36
+ * TD-390.
37
+ *
38
+ * HLD §3.14 — Harness Onboarding Matrix
39
+ * @module
40
+ */
41
+ import type { IHarnessAdapter } from './types.js';
42
+ export declare const xirpAdapter: IHarnessAdapter;
43
+ //# sourceMappingURL=xirp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xirp.d.ts","sourceRoot":"","sources":["../../src/harness/xirp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,eAAO,MAAM,WAAW,EAAE,eAgDzB,CAAA"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * xirp.ts — Spotify "Xirp" adapter (macOS-only desktop orchestrator, beta
3
+ * since 2026-08-11).
4
+ *
5
+ * Xirp is NOT itself an AI agent — it is an orchestrator that spawns one or
6
+ * more ALREADY-INSTALLED CLI coding agents (Claude Code, Codex, Gemini CLI)
7
+ * each inside its own tmux session and `git worktree`, so a developer can run
8
+ * several parallel agent sessions against the same repository without their
9
+ * working-tree state colliding. Per Xirp's own public FAQ, it preserves each
10
+ * wrapped harness's NATIVE, UNMODIFIED configuration — it introduces no
11
+ * config format of its own for Intutic to parse or gate.
12
+ *
13
+ * That means this adapter exists for DETECTION/reporting only. `writeConfig`
14
+ * writes nothing: whatever Intutic already writes for the wrapped harness
15
+ * (`claudeCode.ts` / `codex.ts` / `antigravity.ts`'s own adapters) is what
16
+ * governs a tool call made inside a Xirp-managed session — PROVIDED those
17
+ * files actually reach the git worktree Xirp creates for that session, which
18
+ * they do not by default: a worktree checkout has its own independent
19
+ * working tree, and project-tier governance files are untracked. Part B of
20
+ * the phase that added this adapter (`services/sync-daemon/src/lib/
21
+ * gitWorktrees.ts` + its wiring into `syncLoop.ts`) is what closes that gap;
22
+ * this adapter's only job is recognising that a Xirp-managed workspace is
23
+ * present at all, so `intutic status`/`intutic init` can report it.
24
+ *
25
+ * See `services/sync-daemon/__tests__/harness/gateRegistry.ts`'s NO_GATE row
26
+ * for `xirp` for the full governance rationale, and
27
+ * `apps/docs/integrations/xirp.md` for user-facing docs.
28
+ *
29
+ * # Unconfirmed facts (flagged, not silently assumed)
30
+ *
31
+ * Xirp is a macOS-only beta app with no CLI/npm package and no public
32
+ * download available in this environment, so none of the detection paths
33
+ * below were live-verified against a real install — they follow this
34
+ * codebase's own convention for comparable tools (`~/.grok`, `~/.muse`,
35
+ * `<Name>.app` in `/Applications`) rather than a confirmed Xirp source. See
36
+ * TD-390.
37
+ *
38
+ * HLD §3.14 — Harness Onboarding Matrix
39
+ * @module
40
+ */
41
+ import { access } from 'node:fs/promises';
42
+ import { join } from 'node:path';
43
+ import { homedir } from 'node:os';
44
+ import { HarnessType } from '@intutic/shared-types';
45
+ /** Best-effort assumed default — see module doc's "Unconfirmed facts". */
46
+ const XIRP_HOME_FRAGMENT = '.xirp';
47
+ /** Best-effort assumed default — see module doc's "Unconfirmed facts". */
48
+ const XIRP_APP_PATH = '/Applications/Xirp.app';
49
+ export const xirpAdapter = {
50
+ type: HarnessType.XIRP,
51
+ // No config file of its own — see module doc. Matches the goose/cline-
52
+ // style convention of an empty HARNESS_CONFIG_FILES entry for a harness
53
+ // whose governance-relevant writes are not a single named file (in Xirp's
54
+ // case: no writes of its own at all).
55
+ configFileName: '',
56
+ async detect(_workspaceRoot) {
57
+ // Xirp is macOS-only (per its own FAQ) — guard before touching any
58
+ // macOS-specific path so this adapter is a clean no-op elsewhere.
59
+ if (process.platform !== 'darwin')
60
+ return false;
61
+ // 1. `$XIRP_HOME` env var, if the user (or Xirp itself) has set one.
62
+ const envHome = process.env.XIRP_HOME;
63
+ if (envHome) {
64
+ try {
65
+ await access(envHome);
66
+ return true;
67
+ }
68
+ catch { /* fall through */ }
69
+ }
70
+ // 2. `~/.xirp` — assumed default install/state directory.
71
+ try {
72
+ await access(join(homedir(), XIRP_HOME_FRAGMENT));
73
+ return true;
74
+ }
75
+ catch { /* fall through */ }
76
+ // 3. `Xirp.app` installed in /Applications.
77
+ try {
78
+ await access(XIRP_APP_PATH);
79
+ return true;
80
+ }
81
+ catch { /* fall through */ }
82
+ return false;
83
+ },
84
+ // Xirp introduces no config format of its own — see module doc. Nothing to
85
+ // write; the wrapped harness's own adapter is what writes real governance
86
+ // content, once per worktree Xirp creates (the sync daemon's worktree
87
+ // propagation, not this adapter).
88
+ async writeConfig(_workspaceRoot, _sops, _proxyUrl) {
89
+ return null;
90
+ },
91
+ async readCurrentHash(_workspaceRoot) {
92
+ return null;
93
+ },
94
+ };
95
+ //# sourceMappingURL=xirp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xirp.js","sourceRoot":"","sources":["../../src/harness/xirp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;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;AAInD,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG,OAAO,CAAA;AAClC,0EAA0E;AAC1E,MAAM,aAAa,GAAG,wBAAwB,CAAA;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,sCAAsC;IACtC,cAAc,EAAE,EAAE;IAElB,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,mEAAmE;QACnE,kEAAkE;QAClE,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAE/C,qEAAqE;QACrE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAA;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;gBACrB,OAAO,IAAI,CAAA;YACb,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QAED,0DAA0D;QAC1D,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAA;YACjD,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAE9B,4CAA4C;QAC5C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC3B,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAE9B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,kCAAkC;IAClC,KAAK,CAAC,WAAW,CAAC,cAAsB,EAAE,KAAqB,EAAE,SAAiB;QAChF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
package/dist/lib/api.d.ts CHANGED
@@ -33,10 +33,49 @@ export interface ApiClient {
33
33
  }>;
34
34
  /** Generic GET request for arbitrary API paths. */
35
35
  get<T>(path: string): Promise<T>;
36
+ /**
37
+ * GET that hands back the status instead of throwing on it.
38
+ *
39
+ * For endpoints where a non-2xx *is* the answer: `/api/v1/integrity/chain`
40
+ * returns 409 with the whole chain walk in the body when a root names a
41
+ * predecessor that is not there. `get()` throws on any non-2xx, which would
42
+ * leave the caller digging the break out of an error message.
43
+ */
44
+ getWithStatus<T>(path: string): Promise<{
45
+ status: number;
46
+ body: T;
47
+ }>;
36
48
  /** Generic POST request for arbitrary API paths. */
37
49
  post<T>(path: string, body?: unknown): Promise<T>;
50
+ /**
51
+ * POST that hands back the status instead of throwing on it.
52
+ *
53
+ * Same rationale as `getWithStatus`: `POST /api/v1/wasm-rules/:id/replay`
54
+ * returns 422 with `{error: 'not_enough_traffic', contextCount, minRequired}`
55
+ * when the workspace has too little sampled history, and that body is the
56
+ * answer a caller needs to report, not a failure to unwrap and discard.
57
+ */
58
+ postWithStatus<T>(path: string, body?: unknown): Promise<{
59
+ status: number;
60
+ body: T;
61
+ }>;
62
+ /**
63
+ * Multipart POST that hands back the status.
64
+ *
65
+ * `POST /api/v1/rule-candidates/:id/bundle` reads a `file` field and a
66
+ * `source_sha256` field; `post()` JSON-encodes, so it cannot carry either.
67
+ * The content type is left to `fetch`, which writes the boundary.
68
+ */
69
+ postForm<T>(path: string, form: FormData): Promise<{
70
+ status: number;
71
+ body: T;
72
+ }>;
38
73
  /** Generic PUT request for arbitrary API paths. */
39
74
  put<T>(path: string, body?: unknown): Promise<T>;
75
+ /** Generic PATCH request for arbitrary API paths. */
76
+ patch<T>(path: string, body?: unknown): Promise<T>;
77
+ /** Generic DELETE request for arbitrary API paths. */
78
+ del<T>(path: string, body?: unknown): Promise<T>;
40
79
  }
41
80
  /**
42
81
  * Create an API client bound to a control plane URL and API key.
@@ -45,4 +84,33 @@ export interface ApiClient {
45
84
  * @param apiKey - API key (vk_*) or JWT access token
46
85
  */
47
86
  export declare function createApiClient(controlPlaneUrl: string, apiKey: string): ApiClient;
87
+ /**
88
+ * Decodes a TOON payload, normalising "not TOON" to an empty list.
89
+ *
90
+ * The format lives in `@intutic/shared-types`, imported rather than copied. It
91
+ * used to be a private `splitCells` here, byte-identical to one in the dashboard
92
+ * and a third in the control plane, with a comment in each saying they must not
93
+ * diverge. They did — an escaping fix reached the encoder and the control
94
+ * plane's own decoder, which nothing calls, while these two kept the old code
95
+ * and a CRITICAL incident carried on printing as its trace id.
96
+ *
97
+ * The shared decoder returns `null` for input that is not TOON; this surface has
98
+ * always returned a list, and its caller assigns the result straight onto the
99
+ * response object, so the shape is preserved here rather than pushed outward.
100
+ */
101
+ export declare function toonDecode(toon: string): Record<string, unknown>[];
102
+ /**
103
+ * Move a TOON-encoded list out of its envelope and onto `listProperty`.
104
+ *
105
+ * Extracted from `request` because it was inline and therefore untestable, and
106
+ * it was wrong: the old code assigned the decoded rows and only THEN deleted
107
+ * `data`. `listProperty` names where the rows should land, and for
108
+ * `/api/v1/incidents` that name IS `data` — so the rows were written and
109
+ * immediately deleted, and any incidents response over the 20-row TOON
110
+ * threshold arrived as `{meta:{total:22}}`. Zero rows, no error.
111
+ * `/api/v1/traces` escaped only because its listProperty is `traces`.
112
+ *
113
+ * Non-TOON bodies pass through untouched.
114
+ */
115
+ export declare function unwrapToonEnvelope(data: unknown): unknown;
48
116
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACd,MAAM,uBAAuB,CAAA;AAE9B,kDAAkD;AAClD,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC5D,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpF,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpE,KAAK,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxF,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpJ,mDAAmD;IACnD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAChC,oDAAoD;IACpD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACjD,mDAAmD;IACnD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAuElF"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACd,MAAM,uBAAuB,CAAA;AAI9B,kDAAkD;AAClD,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC5D,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpF,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpE,KAAK,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxF,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpJ,mDAAmD;IACnD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAChC;;;;;;;OAOG;IACH,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAA;IACpE,oDAAoD;IACpD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACjD;;;;;;;OAOG;IACH,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAA;IACrF;;;;;;OAMG;IACH,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAA;IAC/E,mDAAmD;IACnD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAChD,qDAAqD;IACrD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAClD,sDAAsD;IACtD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAmHlF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAElE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAmBzD"}