@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 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/commands/routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * `intutic setup` — the cohort setup wizard (LLD #70, model catalog & cohort
3
+ * wizard): codescan → provider → credentials → verify → persist → judge
4
+ * model → summary. Mirrors the dashboard's `SetupWizard.tsx` step order
5
+ * (minus the parts that need a browser) and, wherever a step corresponds to
6
+ * an existing flag-driven command, calls exactly what that command calls —
7
+ * `detectHarnesses` (same as `intutic init`), the provider-credentials PUT
8
+ * (same route `intutic credentials set` hits), `probeProviderCredential`
9
+ * (same shared-types probe spec the dashboard's verify button uses). This is
10
+ * a guided sequence over existing actions, not a parallel code path.
11
+ *
12
+ * `intutic init` stays exactly as it was — flag-driven, safe for CI, no
13
+ * prompts. This command is the interactive counterpart for a human at a
14
+ * keyboard.
15
+ *
16
+ * @module
17
+ */
18
+ export declare const CANCELLED: unique symbol;
19
+ /**
20
+ * The subset of @clack/prompts this command uses, behind an interface so
21
+ * tests can inject a scripted fake instead of driving a real terminal.
22
+ * `select`/`text`/`password`/`confirm` return `CANCELLED` on Ctrl-C, mirroring
23
+ * clack's own `isCancel` convention rather than throwing.
24
+ */
25
+ export interface SetupIO {
26
+ intro(msg: string): void;
27
+ outro(msg: string): void;
28
+ note(msg: string, title?: string): void;
29
+ log: {
30
+ info(msg: string): void;
31
+ success(msg: string): void;
32
+ warn(msg: string): void;
33
+ error(msg: string): void;
34
+ };
35
+ select<T extends string>(opts: {
36
+ message: string;
37
+ options: Array<{
38
+ value: T;
39
+ label: string;
40
+ hint?: string;
41
+ }>;
42
+ }): Promise<T | typeof CANCELLED>;
43
+ text(opts: {
44
+ message: string;
45
+ placeholder?: string;
46
+ defaultValue?: string;
47
+ }): Promise<string | typeof CANCELLED>;
48
+ password(opts: {
49
+ message: string;
50
+ }): Promise<string | typeof CANCELLED>;
51
+ confirm(opts: {
52
+ message: string;
53
+ initialValue?: boolean;
54
+ }): Promise<boolean | typeof CANCELLED>;
55
+ }
56
+ /** Real terminal IO, backed by @clack/prompts. */
57
+ export declare function createClackIO(): SetupIO;
58
+ export interface SetupOpts {
59
+ dev?: boolean;
60
+ }
61
+ export declare function runSetup(opts: SetupOpts, io?: SetupIO): Promise<void>;
62
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA4CH,eAAO,MAAM,SAAS,eAAsB,CAAA;AAE5C;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,GAAG,EAAE;QAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC/G,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,SAAS,CAAC,CAAA;IAC9I,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,SAAS,CAAC,CAAA;IAChH,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,SAAS,CAAC,CAAA;IACvE,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,SAAS,CAAC,CAAA;CAChG;AAED,kDAAkD;AAClD,wBAAgB,aAAa,IAAI,OAAO,CA6BvC;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAmBD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,GAAE,OAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6J5F"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * `intutic setup` — the cohort setup wizard (LLD #70, model catalog & cohort
3
+ * wizard): codescan → provider → credentials → verify → persist → judge
4
+ * model → summary. Mirrors the dashboard's `SetupWizard.tsx` step order
5
+ * (minus the parts that need a browser) and, wherever a step corresponds to
6
+ * an existing flag-driven command, calls exactly what that command calls —
7
+ * `detectHarnesses` (same as `intutic init`), the provider-credentials PUT
8
+ * (same route `intutic credentials set` hits), `probeProviderCredential`
9
+ * (same shared-types probe spec the dashboard's verify button uses). This is
10
+ * a guided sequence over existing actions, not a parallel code path.
11
+ *
12
+ * `intutic init` stays exactly as it was — flag-driven, safe for CI, no
13
+ * prompts. This command is the interactive counterpart for a human at a
14
+ * keyboard.
15
+ *
16
+ * @module
17
+ */
18
+ import * as p from '@clack/prompts';
19
+ import pc from 'picocolors';
20
+ import { writeFileSync } from 'node:fs';
21
+ import { join } from 'node:path';
22
+ import { PROVIDER_REGISTRY, getProviderDefinition, judgeModelChoices, findCatalogModel, } from '@intutic/shared-types';
23
+ import { findWorkspaceRoot } from './init.js';
24
+ import { detectHarnesses } from '../harness/detector.js';
25
+ import { loadCredentials } from '../config/store.js';
26
+ import { resolveControlPlaneUrl } from '../config/paths.js';
27
+ import { createApiClient } from '../lib/api.js';
28
+ import { probeProviderCredential } from '../lib/providerProbe.js';
29
+ // Exported (not just module-private) so a test's SetupIO implementation can
30
+ // return the SAME unique-symbol value the SetupIO interface's method
31
+ // signatures reference -- TS treats two `Symbol('cancelled')` literals in
32
+ // different files as distinct unique-symbol types, so a test-local re-
33
+ // declaration would fail to satisfy the interface even though it is
34
+ // semantically "the same" cancellation marker.
35
+ export const CANCELLED = Symbol('cancelled');
36
+ /** Real terminal IO, backed by @clack/prompts. */
37
+ export function createClackIO() {
38
+ return {
39
+ intro: (msg) => p.intro(msg),
40
+ outro: (msg) => p.outro(msg),
41
+ note: (msg, title) => p.note(msg, title),
42
+ log: { info: p.log.info, success: p.log.success, warn: p.log.warn, error: p.log.error },
43
+ async select(opts) {
44
+ // p.select<Value>'s Option<Value> is a conditional type that doesn't
45
+ // resolve against a still-generic T here (TS can't distribute
46
+ // `Value extends Primitive ? … : never` over an unresolved type
47
+ // parameter) -- the object shape is correct at runtime; the cast
48
+ // below is narrowing past that inference gap, not around a real type
49
+ // mismatch.
50
+ const res = await p.select(opts);
51
+ return p.isCancel(res) ? CANCELLED : res;
52
+ },
53
+ async text(opts) {
54
+ const res = await p.text(opts);
55
+ return p.isCancel(res) ? CANCELLED : res;
56
+ },
57
+ async password(opts) {
58
+ const res = await p.password(opts);
59
+ return p.isCancel(res) ? CANCELLED : res;
60
+ },
61
+ async confirm(opts) {
62
+ const res = await p.confirm(opts);
63
+ return p.isCancel(res) ? CANCELLED : res;
64
+ },
65
+ };
66
+ }
67
+ async function promptCredentialFields(io, def) {
68
+ const values = {};
69
+ for (const field of def.fields) {
70
+ const raw = field.type === 'password'
71
+ ? await io.password({ message: `${field.label}${field.required ? '' : ' (optional)'}` })
72
+ : await io.text({ message: `${field.label}${field.required ? '' : ' (optional)'}`, placeholder: field.placeholder });
73
+ if (raw === CANCELLED)
74
+ return null;
75
+ if (!raw && field.required) {
76
+ io.log.error(`${field.label} is required.`);
77
+ return null;
78
+ }
79
+ if (raw)
80
+ values[field.key] = raw;
81
+ }
82
+ return values;
83
+ }
84
+ export async function runSetup(opts, io = createClackIO()) {
85
+ io.intro(pc.bold('Intutic — Guided Setup'));
86
+ // ── Step 1: codescan — reuse exactly what `intutic init` uses ──
87
+ const workspaceRoot = findWorkspaceRoot();
88
+ if (workspaceRoot) {
89
+ const harnesses = await detectHarnesses(workspaceRoot);
90
+ const detected = harnesses.filter((h) => h.detected);
91
+ if (detected.length > 0) {
92
+ io.note(detected.map((h) => `${pc.green('✔')} ${h.type}`).join('\n'), 'Detected harnesses');
93
+ }
94
+ else {
95
+ io.log.warn('No harnesses detected in this workspace — Intutic still works via proxy redirect.');
96
+ }
97
+ }
98
+ else {
99
+ io.log.warn('Not inside a workspace (no .git/ or package.json found) — skipping harness detection.');
100
+ }
101
+ // ── Step 2: mode ──
102
+ const creds = await loadCredentials();
103
+ const mode = await io.select({
104
+ message: 'How do you want to configure this provider?',
105
+ options: [
106
+ {
107
+ value: 'connected',
108
+ label: 'Connected to Intutic',
109
+ hint: creds ? `authenticated as ${creds.email}` : 'requires `intutic login` first',
110
+ },
111
+ { value: 'local', label: 'Local / offline (no control plane)', hint: 'writes an env file you export yourself' },
112
+ ],
113
+ });
114
+ if (mode === CANCELLED)
115
+ return io.outro('Cancelled.');
116
+ if (mode === 'connected' && !creds) {
117
+ io.log.error('Not authenticated. Run `intutic login` first, or choose Local / offline.');
118
+ return io.outro('Cancelled.');
119
+ }
120
+ // ── Step 3: provider ──
121
+ const providerId = await io.select({
122
+ message: 'Which LLM provider do you want to configure?',
123
+ options: PROVIDER_REGISTRY.map((def) => ({
124
+ value: def.id,
125
+ label: def.displayName,
126
+ hint: def.routingLive ? 'live' : 'not yet routable',
127
+ })),
128
+ });
129
+ if (providerId === CANCELLED)
130
+ return io.outro('Cancelled.');
131
+ const def = getProviderDefinition(providerId);
132
+ // ── Step 4: credentials ──
133
+ io.note(`Enter your ${def.displayName} credential.${def.docsUrl ? ` Get one at ${def.docsUrl}` : ''}`, def.displayName);
134
+ const fields = await promptCredentialFields(io, def);
135
+ if (!fields)
136
+ return io.outro('Cancelled.');
137
+ // ── Step 5: verify (informational — 401/403 is the only hard stop) ──
138
+ io.log.info('Verifying credential…');
139
+ const probeResult = await probeProviderCredential(providerId, fields);
140
+ if (probeResult.status === 'invalid') {
141
+ io.log.error(probeResult.detail);
142
+ const proceed = await io.confirm({ message: 'Save it anyway?', initialValue: false });
143
+ if (proceed !== true)
144
+ return io.outro('Cancelled.');
145
+ }
146
+ else if (probeResult.status === 'valid') {
147
+ io.log.success(probeResult.detail);
148
+ }
149
+ else {
150
+ io.log.warn(probeResult.detail);
151
+ }
152
+ // ── Step 6: persist ──
153
+ if (mode === 'connected') {
154
+ const client = createApiClient(resolveControlPlaneUrl(opts.dev), creds.apiKey);
155
+ try {
156
+ await client.put(`/api/v1/workspace/provider-credentials/${encodeURIComponent(providerId)}`, fields);
157
+ io.log.success(`${def.displayName} credential saved to your workspace.`);
158
+ }
159
+ catch (err) {
160
+ io.log.error(`Failed to save credential: ${err instanceof Error ? err.message : String(err)}`);
161
+ return io.outro('Setup incomplete.');
162
+ }
163
+ }
164
+ else {
165
+ const envLines = Object.entries(fields).map(([k, v]) => `INTUTIC_${providerId.toUpperCase()}_${k.toUpperCase()}=${v}`);
166
+ const envPath = join(workspaceRoot ?? process.cwd(), '.intutic.env');
167
+ writeFileSync(envPath, envLines.join('\n') + '\n', { mode: 0o600 });
168
+ io.note(envLines.map((l) => l.replace(/=.*/, '=<redacted>')).join('\n'), `Written to ${envPath}`);
169
+ io.log.warn(`${envPath} contains a secret — do not commit it. Source it yourself before running your harness.`);
170
+ }
171
+ // ── Step 7: judge model ──
172
+ const wantJudge = await io.confirm({
173
+ message: "Set up an LLM-as-judge model for this workspace's checks?",
174
+ initialValue: false,
175
+ });
176
+ let judgeModel = null;
177
+ if (wantJudge === true) {
178
+ const choices = judgeModelChoices({ saasRoutableOnly: mode === 'connected' });
179
+ const CUSTOM = '__custom__';
180
+ const pick = await io.select({
181
+ message: 'Judge model',
182
+ options: [
183
+ ...choices.slice(0, 20).map((m) => ({ value: m.ref, label: `${m.displayName} (${m.provider})` })),
184
+ { value: CUSTOM, label: 'Enter a custom model name…' },
185
+ ],
186
+ });
187
+ if (pick !== CANCELLED) {
188
+ judgeModel = pick === CUSTOM ? null : pick;
189
+ if (pick === CUSTOM) {
190
+ const custom = await io.text({ message: 'Custom judge model name' });
191
+ judgeModel = custom === CANCELLED ? null : custom || null;
192
+ }
193
+ }
194
+ }
195
+ if (judgeModel) {
196
+ if (!findCatalogModel(judgeModel)) {
197
+ io.log.warn(`'${judgeModel}' is not in the known model catalog — treating it as a custom/BYO alias.`);
198
+ }
199
+ if (mode === 'connected') {
200
+ const client = createApiClient(resolveControlPlaneUrl(opts.dev), creds.apiKey);
201
+ try {
202
+ await client.put('/api/v1/workspace/settings', { managedJudgeModel: judgeModel });
203
+ io.log.success(`Judge model set to ${judgeModel}.`);
204
+ }
205
+ catch (err) {
206
+ io.log.error(`Failed to save judge model: ${err instanceof Error ? err.message : String(err)}`);
207
+ }
208
+ // Same round-trip the dashboard's JudgeModelPanel Test button runs
209
+ // (POST /api/v1/workspace/judge-model/test, workspace.ts) — a real,
210
+ // tiny completion through the exact path a workspace judge would
211
+ // take. Reported, not gating: the setting is already saved above, the
212
+ // same way the dashboard's Save and Test are independent actions.
213
+ io.log.info('Verifying the judge model…');
214
+ try {
215
+ const testResult = await client.post('/api/v1/workspace/judge-model/test', {
216
+ model: judgeModel,
217
+ });
218
+ if (testResult.ok) {
219
+ io.log.success(`Judge model verified — routes via ${testResult.provider}, ${testResult.latencyMs}ms round-trip.`);
220
+ }
221
+ else {
222
+ io.log.warn(`Judge model test failed at the ${testResult.stage} stage: ${testResult.error}` +
223
+ (testResult.stage === 'provider'
224
+ ? ' (this only means it cannot be tested right now — the setting above is already saved)'
225
+ : ''));
226
+ }
227
+ }
228
+ catch (err) {
229
+ io.log.warn(`Could not run the judge model test: ${err instanceof Error ? err.message : String(err)}`);
230
+ }
231
+ }
232
+ else {
233
+ io.note(`On-prem judge setup isn't finished by this command — run:\n intutic judge configure`, 'Next step');
234
+ }
235
+ }
236
+ io.outro(pc.bold('Setup complete.'));
237
+ }
238
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,262 @@
3
3
  *
4
4
  * LLD Phase 8 — Loop Engineering & Ingestion Proposals
5
5
  */
6
+ import { type SkillScanFinding, type SkillScanCategory } from '@intutic/shared-types';
7
+ import { type CiscoDirScanResult } from '../lib/ciscoScanner.js';
8
+ /**
9
+ * One row of the local skill/rule-file inventory reported to the control
10
+ * plane by `POST /api/v1/workspaces/:id/skills/report`.
11
+ */
12
+ export interface SkillReportEntry {
13
+ /** Path relative to the workspace root, e.g. `CLAUDE.md`. */
14
+ filePath: string;
15
+ /** Line count of the file as scanned. */
16
+ linesCount: number;
17
+ /** Audit findings in this file; always 0 for `skill list`, which only counts. */
18
+ issuesDetected: number;
19
+ /**
20
+ * Bounded findings from `scanSkillContent` (`@intutic/shared-types`), for
21
+ * real `.agents/skills/**\/SKILL.md` / `.claude/skills/**\/SKILL.md` skill
22
+ * files. Absent for the legacy rule-file rows, which keep the coarse
23
+ * regex audit above — never full skill content, see `scanSkillContent`'s
24
+ * own doc comment.
25
+ */
26
+ findings?: SkillScanFinding[];
27
+ /** sha256 of the file content at scan time, so a consumer can tell which
28
+ * content a set of findings refers to without re-uploading it. */
29
+ sha256?: string;
30
+ /**
31
+ * `false` when the file could not be read (permissions, vanished between
32
+ * discovery and read, etc). Refusal-not-pass: an unscanned file MUST NOT
33
+ * be reported as `issuesDetected: 0` implying safety — that would read as
34
+ * "scanned and clean" to anything downstream. Omitted (not `false`) for
35
+ * the legacy rule-file rows and for successfully scanned skill files, so
36
+ * `scanned === false` unambiguously means "we could not tell."
37
+ */
38
+ scanned?: boolean;
39
+ /**
40
+ * Which surface this row describes. `'skill_md'` for a skill's
41
+ * `SKILL.md`, `'script'` for a bundled file discovered by
42
+ * `discoverSkillBundledFiles` and audited by `auditScriptFile`. Absent for
43
+ * the legacy rule-file rows (`.cursorrules`, `CLAUDE.md`, etc), which
44
+ * predate this distinction and are neither.
45
+ */
46
+ kind?: 'skill_md' | 'script';
47
+ /**
48
+ * The script language `detectScriptLanguage` (`@intutic/shared-types`)
49
+ * inferred for a `kind: 'script'` row — `'unknown'` when neither the
50
+ * extension nor a shebang resolved (still hashed, never scanned; see
51
+ * `auditScriptFile`). Absent for anything that isn't a script row.
52
+ */
53
+ language?: string;
54
+ /**
55
+ * Phase S5 (TD-357). FULL content of a `kind: 'skill_md'` file, attached
56
+ * ONLY when the workspace has `semanticSkillAnalysisEnabled` on (read from
57
+ * `client.fetchConfig`'s resolved `settings`, the same way
58
+ * `enableLocalSkillAuditDelete` already is below) — never for `kind:
59
+ * 'script'` rows, which stay S2/S3/S4's domain. Capped client-side to the
60
+ * same 65536-char bound `SkillFileReportSchema` enforces server-side
61
+ * (`services/control-plane/src/routes/harnessConfig.ts`), so an oversized
62
+ * file 400s never a request; it is silently capped, the same
63
+ * refusal-vs-cap posture `capContentForTransport`'s own doc comment
64
+ * explains.
65
+ */
66
+ content?: string;
67
+ }
68
+ export declare function capContentForTransport(content: string): string;
69
+ export interface DiscoveredSkillFile {
70
+ /** Path relative to the workspace root, e.g. `.agents/skills/foo/SKILL.md`. */
71
+ filePath: string;
72
+ fullPath: string;
73
+ source: string;
74
+ }
75
+ /**
76
+ * Read, content-scan, and (if `prune` is set and the scan is not clean)
77
+ * auto-prune one real skill file. Extracted from `runSkillAudit` so the
78
+ * discovery/read/scan/report path is testable without the network and
79
+ * credentials setup the full command does.
80
+ *
81
+ * Refusal-not-pass: a read failure returns `scanned: false` with
82
+ * `issuesDetected: 0` — the zero is not a clean bill of health, it is "we
83
+ * never got to look." Callers must treat `scanned: false` as its own status,
84
+ * never as `clean`.
85
+ */
86
+ export declare function auditSkillFile(filePath: string, fullPath: string, prune: boolean,
87
+ /** Suppresses the per-finding `log.warn` narrative. Used by `--sarif`
88
+ * (`runSkillAudit`), whose stdout contract is a single JSON document — a
89
+ * CI tool piping that into a SARIF parser must not see decorated text
90
+ * interleaved with it. Findings are still returned; only the console
91
+ * narration is skipped. Defaults to `false` so every existing caller
92
+ * (including the tests that assert on `log.warn` output indirectly via
93
+ * behaviour) is unaffected. */
94
+ quiet?: boolean,
95
+ /**
96
+ * Phase S5 (TD-357). Attach the file's full content to the returned entry
97
+ * — only ever set by a caller that already confirmed
98
+ * `semanticSkillAnalysisEnabled` for this workspace (`runSkillAudit`
99
+ * below reads it off `client.fetchConfig`'s resolved settings, the same
100
+ * way it already reads `enableLocalSkillAuditDelete`). Defaults to
101
+ * `false` so every existing caller/test is unaffected. */
102
+ attachContent?: boolean): Promise<SkillReportEntry>;
103
+ /** Enumerate real `SKILL.md` files under both skill directory roots. A
104
+ * missing root is not an error — most workspaces have neither. Exported so
105
+ * tests can walk a fixture directory tree without going through the full
106
+ * `skill audit`/`skill list` command (credentials, network, etc). */
107
+ export declare function discoverSkillFiles(workspaceRoot: string): Promise<DiscoveredSkillFile[]>;
108
+ /** One bundled file discovered alongside a skill's `SKILL.md`. */
109
+ export interface DiscoveredScriptFile {
110
+ /** Path relative to the workspace root. */
111
+ filePath: string;
112
+ fullPath: string;
113
+ }
114
+ /**
115
+ * Bounded, symlink-skipping recursive walk of a skill directory's sibling
116
+ * files — everything alongside `SKILL.md`, the surface TD-356
117
+ * (`docs/TECH_DEBT.md`) named as unenumerated. `SKILL.md` itself is excluded
118
+ * (it is already covered by `discoverSkillFiles`/`auditSkillFile` above);
119
+ * everything else found, at any depth up to the cap, is a candidate for
120
+ * `auditScriptFile`.
121
+ *
122
+ * Bounded by `MAX_SKILL_DIR_DEPTH` and `MAX_FILES_PER_SKILL`
123
+ * (`@intutic/shared-types`) — a skill directory is developer-authored
124
+ * content, not something this command should ever walk unboundedly. Depth 0
125
+ * is the skill directory itself; nested subdirectories increment from
126
+ * there, and the walk stops recursing once depth exceeds the cap.
127
+ *
128
+ * Symlinks are never followed: `Dirent.isSymbolicLink()` is checked during
129
+ * `readdir` and skipped outright, without ever stat-ing or resolving where
130
+ * the link points. A symlink inside a skill directory could point outside
131
+ * that directory — or outside the workspace entirely — which would turn a
132
+ * bounded, skill-scoped walk into an effectively unbounded one, and would
133
+ * let a skill directory "bundle" a script that does not actually live on
134
+ * disk inside it.
135
+ */
136
+ export declare function discoverSkillBundledFiles(workspaceRoot: string,
137
+ /** Path to the skill directory (not `SKILL.md` itself), relative to
138
+ * `workspaceRoot`, e.g. `.agents/skills/my-skill`. */
139
+ skillDirPath: string): Promise<DiscoveredScriptFile[]>;
140
+ /**
141
+ * Read, hash, and — when recognized and within the byte cap — content-scan
142
+ * one bundled script file discovered by `discoverSkillBundledFiles`.
143
+ *
144
+ * The sha256 hash is ALWAYS computed, even for a file this scanner cannot
145
+ * itself interpret (a binary, an unrecognized extension with no useful
146
+ * shebang) — that is deliberate, not a leftover from a simpler version of
147
+ * this function. A later, separate, opt-in phase (Cisco `skill-scanner` /
148
+ * VirusTotal-style hash lookup, Phase S3) needs the hash of every bundled
149
+ * file regardless of whether THIS scanner's regex patterns can say anything
150
+ * about its content.
151
+ *
152
+ * Refusal-not-pass, same contract as `auditSkillFile`: a read failure, a
153
+ * file over `MAX_SCRIPT_SCAN_BYTES`, or an unrecognized language all return
154
+ * `scanned: false` — never folded into `issuesDetected: 0` implying safety.
155
+ * A file over the byte cap is a REFUSAL to look, reported as such, not a
156
+ * silent skip and not a false "clean".
157
+ */
158
+ export declare function auditScriptFile(filePath: string, fullPath: string, quiet?: boolean): Promise<SkillReportEntry>;
159
+ /**
160
+ * A loop run as returned by `GET /api/v1/loops`.
161
+ *
162
+ * `totalTokenCostUsd` and `budgetLimitUsd` are strings, not numbers: both are
163
+ * Postgres `numeric` columns, which the driver hands back as strings to keep
164
+ * the scale exact — hence the `parseFloat` at every use site.
165
+ */
166
+ export interface LoopRunSummary {
167
+ loopRunId: string;
168
+ name: string;
169
+ /**
170
+ * PENDING_REVIEW is the only non-ACTIVE status that is not terminal — see
171
+ * `LoopRunDetails` in the control plane's loopGovernanceService.
172
+ */
173
+ status: 'ACTIVE' | 'PENDING_REVIEW' | 'COMPLETED' | 'FAILED' | 'KILLED';
174
+ totalTokenCostUsd: string;
175
+ budgetLimitUsd: string;
176
+ }
177
+ /** Envelope of `GET /api/v1/loops`. */
178
+ export interface LoopListResponse {
179
+ ok: boolean;
180
+ loops: LoopRunSummary[];
181
+ }
6
182
  export declare function runSkillList(): Promise<void>;
7
- export declare function runSkillAudit(): Promise<void>;
183
+ /**
184
+ * A minimal, valid SARIF 2.1.0 document for CI/code-scanning interop.
185
+ *
186
+ * Built for GitHub Code Scanning and any other consumer of the format — not
187
+ * for Cisco's open-source `skill-scanner` project specifically, but so that
188
+ * tool's findings and ours can land in the same code-scanning pane on a repo
189
+ * that runs both. We do not shell out to or depend on that project; this is
190
+ * only a compatible OUTPUT shape.
191
+ *
192
+ * `rules` lists every pattern `scanSkillContent` knows how to report —
193
+ * SARIF's convention is the tool's full rule catalog, not only the ids that
194
+ * fired in this run, so a code-scanning UI can show a rule as "0 findings"
195
+ * rather than "unknown rule". `results` is built only from real skill files
196
+ * (`SkillReportEntry.findings`, populated by `auditSkillFile`); the legacy
197
+ * `.cursorrules`/`CLAUDE.md` regex checks above have no pattern ids and stay
198
+ * out of SARIF for that reason — see the entries' own `findings` being
199
+ * absent, not an omission here.
200
+ *
201
+ * `locations` deliberately carries no `region`: `SkillScanFinding` bounds an
202
+ * excerpt (see `skillScan.ts`'s `excerptFor`) but not a line/column, and
203
+ * SARIF's `region` is optional — fabricating `startLine: 1` would claim a
204
+ * precision this scanner does not have.
205
+ *
206
+ * `additionalRuns` (Phase S3): zero or more extra SARIF `runs[]`-shaped
207
+ * objects appended AFTER this codebase's own run — the Cisco skill-scanner
208
+ * integration's combined run, when that engine ran. SARIF is explicitly
209
+ * designed to carry multiple runs from different tools in one document, so
210
+ * these are appended AS-IS, never translated or merged into this function's
211
+ * own `results`/`rules` — that translation only happens for the internal
212
+ * `SkillScanFinding` representation (`mergeCiscoFindings`), never for this
213
+ * output mode.
214
+ */
215
+ export declare function buildSarifLog(entries: readonly SkillReportEntry[], additionalRuns?: readonly unknown[]): object;
216
+ /** See {@link CISCO_CATEGORY_MAP}. Exported for tests. */
217
+ export declare function mapCiscoCategory(category: string | undefined): SkillScanCategory;
218
+ /**
219
+ * Merges one skill directory's Cisco findings into that skill's existing
220
+ * report entries — the `SKILL.md` row, or a bundled-script row when a
221
+ * finding's own location matches one of `candidateEntries` exactly. Falls
222
+ * back to `fallbackEntry` (always the skill's `SKILL.md` row) when no
223
+ * location match is found — this codebase does not assume `skill-scanner`
224
+ * always attributes a finding to a specific bundled file, so an
225
+ * unmatched/absent location is treated as "belongs to the skill as a
226
+ * whole," not an error.
227
+ *
228
+ * Each Cisco finding becomes a `SkillScanFinding` with `patternId: 'cisco.'
229
+ * + ruleId`, a category from {@link mapCiscoCategory} (mapped from the
230
+ * finding's own `category`, not its `ruleId`), an excerpt capped at
231
+ * {@link CISCO_EXCERPT_CAP}, and `engine: 'cisco-skill-scanner'` — this
232
+ * codebase's own findings stamp `engine: 'native'` at construction
233
+ * (`skillScan.ts`/`scriptScan.ts`), so every finding in a report entry now
234
+ * carries its provenance.
235
+ *
236
+ * Returns the number of findings merged, for the caller's running `issues`
237
+ * count.
238
+ */
239
+ export declare function mergeCiscoFindings(candidateEntries: readonly SkillReportEntry[], fallbackEntry: SkillReportEntry, ciscoResult: CiscoDirScanResult, workspaceRoot: string): number;
240
+ export declare function runSkillAudit(opts?: {
241
+ sarif?: boolean;
242
+ engine?: 'native' | 'cisco';
243
+ }): Promise<void>;
244
+ /**
245
+ * Warn-only skill-content scan over staged additions in the skill surface.
246
+ *
247
+ * TD-358. This is the CLI entry point `lib/gitHooks.ts`'s pre-commit hook
248
+ * shells out to (`intutic skill scan-staged`) — deliberately separate from
249
+ * `skill audit` above, which scans the whole workspace and is too slow and
250
+ * too broad for a commit-time check that must stay fast.
251
+ *
252
+ * Never refuses a commit and never throws: `scanSkillContent`'s
253
+ * false-positive rate against real, benign skill markdown is unmeasured (see
254
+ * `skillScan.ts`'s module doc comment), so this phase stages the signal as
255
+ * an advisory only. Contrast `lib/gitHooks.ts`'s secret scan, which DOES
256
+ * refuse — that check is high-precision, prefixed credential shapes with no
257
+ * known false positives; this one is not, and must not borrow that check's
258
+ * authority until it has earned it the same way.
259
+ */
260
+ export declare function runSkillScanStaged(): Promise<void>;
261
+ export declare function getClient(dev?: boolean): Promise<import("../lib/api.js").ApiClient>;
8
262
  export declare function runLoopStart(opts: {
9
263
  name: string;
10
264
  budget?: string;
@@ -21,6 +275,19 @@ export declare function runLoopKill(loopRunId: string, opts: {
21
275
  export declare function runLoopList(opts: {
22
276
  dev?: boolean;
23
277
  }): Promise<void>;
278
+ /**
279
+ * Approve or reject a run held for human review.
280
+ *
281
+ * The other half of `review_before:`. Without it a hold has no resolution from
282
+ * the terminal, and the hold is deliberately permanent — there is no reaper, so
283
+ * an unreviewed run stays blocked until a person acts.
284
+ */
285
+ export declare function runLoopReview(loopRunId: string, opts: {
286
+ approve?: boolean;
287
+ reject?: boolean;
288
+ note?: string;
289
+ dev?: boolean;
290
+ }): Promise<void>;
24
291
  export declare function runLoopExec(commandAndArgs: string[], opts: {
25
292
  name?: string;
26
293
  budget?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAgDlD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAmGnD;AA+CD,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChB;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/F;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAa3F;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxE;AAED,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EAAE,EACxB,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CA6Ef"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}