@intutic/cli 1.10.0 → 2.0.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 (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,298 @@
1
+ /**
2
+ * `intutic gateway` — manage self-hosted gateway registrations (LLD #66)
3
+ * and routing assignment (LLD #68 §2).
4
+ *
5
+ * Subcommands:
6
+ * - `intutic gateway register --name <name> --target <docker|kubernetes|bare_metal>`
7
+ * - `intutic gateway list [--json]`
8
+ * - `intutic gateway status <gateway_id> [--json]`
9
+ * - `intutic gateway rotate <gateway_id>`
10
+ * - `intutic gateway revoke <gateway_id> [--reason <text>]`
11
+ * - `intutic gateway config set <gateway_id> [--require-vk <bool>] [--require-provisioned-key <bool>]`
12
+ * - `intutic gateway assign --gateway <gateway_id>|--clear [--org <org_id>]`
13
+ * - `intutic gateway resolve [--json]`
14
+ *
15
+ * Server side: services/control-plane/src/routes/gateways.ts,
16
+ * routes/gatewayHeartbeat.ts, routes/orgs.ts (`PATCH .../gateway`). A
17
+ * gateway token (`gwk_...`) is a distinct credential from the `vk_`/JWT
18
+ * this command authenticates with — it is printed exactly once, on
19
+ * `register` and `rotate`, and never retrievable again, matching the
20
+ * server's own one-shot design.
21
+ *
22
+ * `assign`/`resolve` are client-side discovery, not traffic routing:
23
+ * there is no proxy-in-front-of-proxies in this architecture, so
24
+ * `resolve` tells you which gateway a client SHOULD point at; actually
25
+ * pointing one there (`CONTROL_PLANE_URL=...`) is still a manual step.
26
+ *
27
+ * @module
28
+ */
29
+ import { log } from '../lib/logger.js';
30
+ import { loadCredentials } from '../config/store.js';
31
+ import { resolveControlPlaneUrl } from '../config/paths.js';
32
+ import { createApiClient } from '../lib/api.js';
33
+ import pc from 'picocolors';
34
+ const NOT_AUTHENTICATED = 'Not authenticated. Run `intutic login` first — gateway registration is an org-scoped control plane feature.';
35
+ const DEPLOYMENT_TARGETS = ['docker', 'kubernetes', 'bare_metal'];
36
+ async function getClient(opts) {
37
+ const creds = await loadCredentials();
38
+ if (!creds) {
39
+ log.error(NOT_AUTHENTICATED);
40
+ process.exit(1);
41
+ }
42
+ const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
43
+ return createApiClient(controlPlaneUrl, creds.apiKey);
44
+ }
45
+ function colorStatus(status) {
46
+ switch (status) {
47
+ case 'online':
48
+ return pc.green(status);
49
+ case 'degraded':
50
+ return pc.yellow(status);
51
+ case 'unreachable':
52
+ case 'revoked':
53
+ return pc.red(status);
54
+ default:
55
+ return pc.dim(status);
56
+ }
57
+ }
58
+ /** `intutic gateway register` */
59
+ export async function runGatewayRegister(opts) {
60
+ if (!opts.name || !opts.name.trim()) {
61
+ log.error('--name is required');
62
+ process.exit(1);
63
+ }
64
+ if (!opts.target || !DEPLOYMENT_TARGETS.includes(opts.target)) {
65
+ log.error(`--target must be one of: ${DEPLOYMENT_TARGETS.join(', ')}`);
66
+ process.exit(1);
67
+ }
68
+ const client = await getClient(opts);
69
+ try {
70
+ const res = await client.post('/api/v1/gateways', {
71
+ name: opts.name.trim(),
72
+ deploymentTarget: opts.target,
73
+ });
74
+ if (opts.json) {
75
+ console.log(JSON.stringify(res, null, 2));
76
+ return;
77
+ }
78
+ log.header('Intutic — Gateway Registered');
79
+ log.field('Gateway ID', res.gatewayId);
80
+ log.field('Name', res.name);
81
+ log.field('Deployment target', res.deploymentTarget);
82
+ log.field('Status', colorStatus(res.status));
83
+ console.log('');
84
+ log.warn('This token is shown ONCE and cannot be retrieved again:');
85
+ console.log(` ${pc.bold(res.token)}`);
86
+ console.log('');
87
+ log.dim(` ${res.instructions}`);
88
+ }
89
+ catch (err) {
90
+ log.error(`Failed to register gateway: ${err instanceof Error ? err.message : String(err)}`);
91
+ process.exit(1);
92
+ }
93
+ }
94
+ /** `intutic gateway list` */
95
+ export async function runGatewayList(opts) {
96
+ const client = await getClient(opts);
97
+ try {
98
+ const res = await client.get('/api/v1/gateways');
99
+ const rows = res.data ?? [];
100
+ if (opts.json) {
101
+ console.log(JSON.stringify(res, null, 2));
102
+ return;
103
+ }
104
+ log.header('Intutic — Gateways');
105
+ if (rows.length === 0) {
106
+ log.dim(' No gateways registered for this org yet. Run `intutic gateway register` to add one.');
107
+ return;
108
+ }
109
+ for (const g of rows) {
110
+ console.log('');
111
+ log.field('Gateway ID', g.gatewayId);
112
+ log.field('Name', g.name);
113
+ log.field('Target', g.deploymentTarget);
114
+ log.field('Status', colorStatus(g.status));
115
+ log.field('Token prefix', g.keyPrefix);
116
+ log.field('Last heartbeat', g.lastHeartbeatAt ?? '— (never)');
117
+ log.field('Proxy version', g.proxyVersion ?? '—');
118
+ }
119
+ }
120
+ catch (err) {
121
+ log.error(`Failed to list gateways: ${err instanceof Error ? err.message : String(err)}`);
122
+ process.exit(1);
123
+ }
124
+ }
125
+ /** `intutic gateway status <gateway_id>` */
126
+ export async function runGatewayStatus(gatewayId, opts) {
127
+ const client = await getClient(opts);
128
+ try {
129
+ const res = await client.get(`/api/v1/gateways/${encodeURIComponent(gatewayId)}/status`);
130
+ if (opts.json) {
131
+ console.log(JSON.stringify(res, null, 2));
132
+ return;
133
+ }
134
+ log.header('Intutic — Gateway Status');
135
+ log.field('Status', colorStatus(res.status));
136
+ log.field('Proxy version', res.proxyVersion ?? '—');
137
+ log.field('Uptime (s)', res.uptimeSeconds !== null ? String(res.uptimeSeconds) : '—');
138
+ log.field('Active workspaces', res.activeWorkspaces !== null ? String(res.activeWorkspaces) : '—');
139
+ log.field('LiteLLM reachable', res.litellmReachable === null ? '— (not reported by this proxy version)' : String(res.litellmReachable));
140
+ log.field('Last error', res.lastError ?? '—');
141
+ log.field('Reported at', res.reportedAt ?? '— (no heartbeat received within the TTL window)');
142
+ }
143
+ catch (err) {
144
+ log.error(`Failed to fetch gateway status: ${err instanceof Error ? err.message : String(err)}`);
145
+ process.exit(1);
146
+ }
147
+ }
148
+ /** `intutic gateway rotate <gateway_id>` */
149
+ export async function runGatewayRotate(gatewayId, opts) {
150
+ const client = await getClient(opts);
151
+ try {
152
+ const res = await client.post(`/api/v1/gateways/${encodeURIComponent(gatewayId)}/rotate`, {});
153
+ if (opts.json) {
154
+ console.log(JSON.stringify(res, null, 2));
155
+ return;
156
+ }
157
+ log.header('Intutic — Gateway Token Rotated');
158
+ log.warn('This new token is shown ONCE and cannot be retrieved again:');
159
+ console.log(` ${pc.bold(res.token)}`);
160
+ console.log('');
161
+ log.dim(` ${res.instructions}`);
162
+ }
163
+ catch (err) {
164
+ log.error(`Failed to rotate gateway token: ${err instanceof Error ? err.message : String(err)}`);
165
+ process.exit(1);
166
+ }
167
+ }
168
+ /** `intutic gateway revoke <gateway_id>` */
169
+ export async function runGatewayRevoke(gatewayId, opts) {
170
+ const client = await getClient(opts);
171
+ try {
172
+ await client.del(`/api/v1/gateways/${encodeURIComponent(gatewayId)}`, {
173
+ reason: opts.reason,
174
+ });
175
+ log.success(`Gateway ${gatewayId} revoked.`);
176
+ if (!opts.reason) {
177
+ log.dim(' Tip: pass --reason "<text>" next time — it is recorded in the audit log.');
178
+ }
179
+ }
180
+ catch (err) {
181
+ log.error(`Failed to revoke gateway: ${err instanceof Error ? err.message : String(err)}`);
182
+ process.exit(1);
183
+ }
184
+ }
185
+ /** `intutic gateway config set <gateway_id>` */
186
+ export async function runGatewayConfigSet(gatewayId, opts) {
187
+ const body = {};
188
+ if (opts.requireVk !== undefined) {
189
+ if (opts.requireVk !== 'true' && opts.requireVk !== 'false') {
190
+ log.error('--require-vk must be "true" or "false"');
191
+ process.exit(1);
192
+ }
193
+ body.requireVk = opts.requireVk === 'true';
194
+ }
195
+ if (opts.requireProvisionedKey !== undefined) {
196
+ if (opts.requireProvisionedKey !== 'true' && opts.requireProvisionedKey !== 'false') {
197
+ log.error('--require-provisioned-key must be "true" or "false"');
198
+ process.exit(1);
199
+ }
200
+ body.requireProvisionedKey = opts.requireProvisionedKey === 'true';
201
+ }
202
+ if (Object.keys(body).length === 0) {
203
+ log.error('At least one of --require-vk, --require-provisioned-key is required');
204
+ process.exit(1);
205
+ }
206
+ const client = await getClient(opts);
207
+ try {
208
+ const res = await client.patch(`/api/v1/gateways/${encodeURIComponent(gatewayId)}/config`, body);
209
+ if (opts.json) {
210
+ console.log(JSON.stringify(res, null, 2));
211
+ return;
212
+ }
213
+ log.success(`Gateway config updated (version ${res.configVersion}).`);
214
+ log.dim(' A daemon-supervised gateway (packages/gateway-daemon) applies this on its next poll. ' +
215
+ 'Docker/Kubernetes deployments require a manual redeploy to pick up config changes.');
216
+ }
217
+ catch (err) {
218
+ log.error(`Failed to update gateway config: ${err instanceof Error ? err.message : String(err)}`);
219
+ process.exit(1);
220
+ }
221
+ }
222
+ /** `intutic gateway assign` — LLD #68 §2. */
223
+ export async function runGatewayAssign(opts) {
224
+ if (!opts.clear && !opts.gateway) {
225
+ log.error('Either --gateway <gateway_id> or --clear is required');
226
+ process.exit(1);
227
+ }
228
+ if (opts.clear && opts.gateway) {
229
+ log.error('--gateway and --clear are mutually exclusive');
230
+ process.exit(1);
231
+ }
232
+ const gatewayId = opts.clear ? null : opts.gateway;
233
+ const client = await getClient(opts);
234
+ const path = opts.org
235
+ ? `/api/v1/orgs/${encodeURIComponent(opts.org)}/gateway`
236
+ : '/api/v1/workspace/gateway';
237
+ try {
238
+ const res = await client.patch(path, { gatewayId });
239
+ if (opts.json) {
240
+ console.log(JSON.stringify(res, null, 2));
241
+ return;
242
+ }
243
+ if (res.gatewayId) {
244
+ log.success(`${opts.org ? `Org ${opts.org}` : 'This workspace'} now defaults to gateway ${res.gatewayId}.`);
245
+ }
246
+ else {
247
+ log.success(`${opts.org ? `Org ${opts.org}'s` : "This workspace's"} gateway override cleared.`);
248
+ }
249
+ }
250
+ catch (err) {
251
+ log.error(`Failed to update gateway assignment: ${err instanceof Error ? err.message : String(err)}`);
252
+ process.exit(1);
253
+ }
254
+ }
255
+ /** `intutic gateway resolve` — LLD #68 §2. */
256
+ export async function runGatewayResolve(opts) {
257
+ const client = await getClient(opts);
258
+ try {
259
+ const res = await client.get('/api/v1/workspace/gateway-resolution');
260
+ if (opts.json) {
261
+ console.log(JSON.stringify(res, null, 2));
262
+ return;
263
+ }
264
+ log.header('Intutic — Gateway Resolution');
265
+ if (res.staleAssignment) {
266
+ log.warn(`This ${res.source} points at gateway ${res.staleAssignment}, which no longer exists or was revoked.`);
267
+ log.dim(' Falling back to the shared gateway.intutic.ai until this is reassigned or cleared.');
268
+ return;
269
+ }
270
+ if (!res.gateway) {
271
+ log.dim(' No override assigned — this workspace uses the shared gateway.intutic.ai.');
272
+ return;
273
+ }
274
+ log.field('Source', res.source === 'workspace' ? 'This workspace\'s own override' : "This org's default");
275
+ log.field('Gateway ID', res.gateway.gatewayId);
276
+ log.field('Name', res.gateway.name);
277
+ log.field('Target', res.gateway.deploymentTarget);
278
+ log.field('Status', colorStatus(res.gateway.status));
279
+ console.log('');
280
+ if (res.gateway.registeredEndpoint && res.gateway.status === 'online') {
281
+ log.field('Endpoint', res.gateway.registeredEndpoint);
282
+ log.dim(" intutic connect uses this automatically once no proxyUrl override is set on the workspace.");
283
+ }
284
+ else if (res.gateway.registeredEndpoint) {
285
+ log.dim(` Endpoint ${res.gateway.registeredEndpoint} is registered but the gateway isn't online yet ` +
286
+ `(status: ${res.gateway.status}) — traffic stays on the shared gateway until it heartbeats.`);
287
+ }
288
+ else {
289
+ log.dim(' Pointing a client here is still manual — set CONTROL_PLANE_URL (or the proxy target) ' +
290
+ "to this gateway's own reachable address.");
291
+ }
292
+ }
293
+ catch (err) {
294
+ log.error(`Failed to resolve gateway: ${err instanceof Error ? err.message : String(err)}`);
295
+ process.exit(1);
296
+ }
297
+ }
298
+ //# sourceMappingURL=gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/commands/gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * `intutic guardrails` — the Policy Clause Ledger from the terminal
3
+ * (LLD #71, Wave 6): sources, documents, the review queue, and the three
4
+ * decisions that move a cited guardrail. A client of
5
+ * `/api/v1/policy-guardrails/*` and `/api/v1/connectors`; nothing here
6
+ * decides anything the server would not.
7
+ *
8
+ * Not `intutic policy` (the WASM rule loop) and not `intutic sops` (the
9
+ * file plane). The acting identity is never a flag: the server records the
10
+ * authenticated member, so a client-supplied name cannot forge the audit
11
+ * trail — same rule as `intutic findings adjudicate`.
12
+ */
13
+ interface CommonOpts {
14
+ dev?: boolean;
15
+ json?: boolean;
16
+ }
17
+ export declare function runGuardrailsSourcesList(opts: CommonOpts): Promise<void>;
18
+ export declare function runGuardrailsSourcesAdd(provider: string, opts: CommonOpts & {
19
+ name?: string;
20
+ token?: string;
21
+ tokenFile?: string;
22
+ config?: string;
23
+ }): Promise<void>;
24
+ export declare function runGuardrailsSourcesSync(connectorId: string, opts: CommonOpts): Promise<void>;
25
+ export declare function runGuardrailsDocsList(opts: CommonOpts): Promise<void>;
26
+ export declare function runGuardrailsDocsShow(docId: string, opts: CommonOpts): Promise<void>;
27
+ export declare function runGuardrailsDocsExtract(docId: string, opts: CommonOpts & {
28
+ noLlm?: boolean;
29
+ }): Promise<void>;
30
+ export declare function runGuardrailsSearch(token: string, opts: CommonOpts & {
31
+ text?: boolean;
32
+ }): Promise<void>;
33
+ export declare function runGuardrailsImpact(opts: CommonOpts & {
34
+ doc?: string;
35
+ passage?: string;
36
+ }): Promise<void>;
37
+ export declare function runGuardrailsDuplicates(opts: CommonOpts & {
38
+ minJaccard?: string;
39
+ }): Promise<void>;
40
+ export declare function runGuardrailsList(opts: CommonOpts & {
41
+ status?: string;
42
+ target?: string;
43
+ doc?: string;
44
+ limit?: string;
45
+ }): Promise<void>;
46
+ export declare function runGuardrailsShow(guardrailId: string, opts: CommonOpts): Promise<void>;
47
+ export declare function runGuardrailsApproveShadow(guardrailId: string, opts: CommonOpts): Promise<void>;
48
+ export declare function runGuardrailsPromote(guardrailId: string, opts: CommonOpts & {
49
+ acknowledgeNoTraffic?: boolean;
50
+ }): Promise<void>;
51
+ export declare function runGuardrailsReject(guardrailId: string, opts: CommonOpts & {
52
+ reason?: string;
53
+ }): Promise<void>;
54
+ export declare function runGuardrailsRetire(guardrailId: string, opts: CommonOpts): Promise<void>;
55
+ export declare function runGuardrailsReconfirm(guardrailId: string, opts: CommonOpts): Promise<void>;
56
+ export declare function runGuardrailsReplay(guardrailId: string, opts: CommonOpts): Promise<void>;
57
+ export declare function runGuardrailsConflicts(opts: CommonOpts): Promise<void>;
58
+ /**
59
+ * `intutic guardrails pull` — the SHADOW and ENFORCING front-matter
60
+ * guardrails `GET /api/v1/workspace/sops-policy` serves, written to
61
+ * `.intutic/sops/guardrail-<id>.md` for a proxy that reads SOPs from disk.
62
+ *
63
+ * Flat, not in a subdirectory: the proxy's loader reads one directory level
64
+ * and titles each SOP by its file stem, and `guardrail-<id>` is a stem the
65
+ * control plane credits shadow reports to. The served markdown already
66
+ * carries its own front-matter fence with the enforcing keys and
67
+ * `mode: shadow`; `withContentHash` puts the pull marker inside that fence
68
+ * rather than wrapping a second one the proxy would never read.
69
+ *
70
+ * Same overwrite rule as `intutic sops pull`: a file whose recorded hash no
71
+ * longer matches its body was edited by hand and is left alone without
72
+ * `--force`. A file for a guardrail that is no longer served (retired or
73
+ * rejected) is reported — a proxy reading the directory still enforces it —
74
+ * and removed only with `--prune`, and only when it is unmodified.
75
+ */
76
+ export declare function runGuardrailsPull(opts: CommonOpts & {
77
+ force?: boolean;
78
+ prune?: boolean;
79
+ }): Promise<void>;
80
+ export {};
81
+ //# sourceMappingURL=guardrails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../../src/commands/guardrails.ts"],"names":[],"mappings":"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"}