@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,84 @@
1
+ /**
2
+ * `intutic findings` — List and adjudicate detector findings.
3
+ *
4
+ * `services/control-plane/src/routes/findings.ts` has carried a complete
5
+ * TP/FP adjudication API since it landed, with zero consumers: no CLI
6
+ * command, no dashboard page. Without a way to actually rule on a finding,
7
+ * `false_positive_rate` in `/stats` and the response-echo report can only
8
+ * ever return null — the labelling rate was structurally zero. This is that
9
+ * missing writer.
10
+ *
11
+ * Subcommands:
12
+ * - `intutic findings list [--unadjudicated] [--detector <id>] [--limit N] [--json]`
13
+ * - `intutic findings adjudicate <findingId> (--true-positive|--false-positive) [--note <text>]`
14
+ * - `intutic findings stats [--json]`
15
+ * - `intutic findings echo-report [--since <date>] [--until <date>] [--json]`
16
+ *
17
+ * The adjudicator identity is never a flag here — the server derives it from
18
+ * the authenticated session (`c.get('auth')`), the same reasoning
19
+ * `intutic decision approve|reject` documents: a client-supplied name makes
20
+ * the audit trail forgeable.
21
+ *
22
+ * @module
23
+ */
24
+ interface FindingsCliOpts {
25
+ dev?: boolean;
26
+ }
27
+ /** Pad a string to a fixed VISIBLE width (right-pad with spaces). */
28
+ export declare function pad(str: string, width: number): string;
29
+ /**
30
+ * `intutic findings list` — List detector findings for the workspace.
31
+ *
32
+ * `--unadjudicated` matches the route's own default behaviour: omitted, the
33
+ * route returns every finding (adjudicated or not); passed, it adds
34
+ * `unadjudicated=true` and returns only the working queue. The CLI does not
35
+ * invent a different default than the route it calls.
36
+ */
37
+ export declare function runFindingsList(opts: FindingsCliOpts & {
38
+ unadjudicated?: boolean;
39
+ detector?: string;
40
+ limit?: string;
41
+ json?: boolean;
42
+ }): Promise<void>;
43
+ /**
44
+ * `intutic findings adjudicate <findingId>` — Record a human ruling on one finding.
45
+ *
46
+ * Exactly one of `--true-positive` / `--false-positive` is required, checked
47
+ * client-side before any request is made — the same discipline
48
+ * `runGatewayAssign`'s `--gateway`/`--clear` pair and `runGatewayConfigSet`
49
+ * use for their own mutually-exclusive flags.
50
+ */
51
+ export declare function runFindingsAdjudicate(findingId: string, opts: FindingsCliOpts & {
52
+ truePositive?: boolean;
53
+ falsePositive?: boolean;
54
+ note?: string;
55
+ json?: boolean;
56
+ }): Promise<void>;
57
+ /**
58
+ * `intutic findings stats` — Per-detector false-positive rate, over
59
+ * adjudicated findings only.
60
+ *
61
+ * The `caveats` array exists specifically to be read alongside the numbers
62
+ * it qualifies — this prints it verbatim, never summarized or suppressed.
63
+ */
64
+ export declare function runFindingsStats(opts: FindingsCliOpts & {
65
+ json?: boolean;
66
+ }): Promise<void>;
67
+ /**
68
+ * `intutic findings echo-report` — The response-injection echo measurement
69
+ * report: precision per pattern, over the `response_injection:*` rows
70
+ * `persistFindings` synthesizes from a trace's echo scan.
71
+ *
72
+ * `tracesIngested` is the anti-vacuity denominator and is always printed
73
+ * prominently, even when zero. A top-level `refusal` (zero traffic in the
74
+ * window) is printed as a warning, never suppressed — same for a
75
+ * per-pattern `refusal` (below the adjudicated-count threshold), which
76
+ * replaces that row's rate cell instead of a null percentage.
77
+ */
78
+ export declare function runFindingsEchoReport(opts: FindingsCliOpts & {
79
+ since?: string;
80
+ until?: string;
81
+ json?: boolean;
82
+ }): Promise<void>;
83
+ export {};
84
+ //# sourceMappingURL=findings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../src/commands/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AA+EH,UAAU,eAAe;IACvB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAuFD,qEAAqE;AACrE,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAItD;AAqBD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,eAAe,GAAG;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACrG,OAAO,CAAC,IAAI,CAAC,CAwEf;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,eAAe,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACzG,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuChG;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,eAAe,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACzE,OAAO,CAAC,IAAI,CAAC,CAsDf"}
@@ -0,0 +1,329 @@
1
+ /**
2
+ * `intutic findings` — List and adjudicate detector findings.
3
+ *
4
+ * `services/control-plane/src/routes/findings.ts` has carried a complete
5
+ * TP/FP adjudication API since it landed, with zero consumers: no CLI
6
+ * command, no dashboard page. Without a way to actually rule on a finding,
7
+ * `false_positive_rate` in `/stats` and the response-echo report can only
8
+ * ever return null — the labelling rate was structurally zero. This is that
9
+ * missing writer.
10
+ *
11
+ * Subcommands:
12
+ * - `intutic findings list [--unadjudicated] [--detector <id>] [--limit N] [--json]`
13
+ * - `intutic findings adjudicate <findingId> (--true-positive|--false-positive) [--note <text>]`
14
+ * - `intutic findings stats [--json]`
15
+ * - `intutic findings echo-report [--since <date>] [--until <date>] [--json]`
16
+ *
17
+ * The adjudicator identity is never a flag here — the server derives it from
18
+ * the authenticated session (`c.get('auth')`), the same reasoning
19
+ * `intutic decision approve|reject` documents: a client-supplied name makes
20
+ * the audit trail forgeable.
21
+ *
22
+ * @module
23
+ */
24
+ import { log } from '../lib/logger.js';
25
+ import { NOT_AUTHENTICATED } from '../lib/authMessages.js';
26
+ import { loadCredentials } from '../config/store.js';
27
+ import { resolveControlPlaneUrl } from '../config/paths.js';
28
+ import { createApiClient } from '../lib/api.js';
29
+ import pc from 'picocolors';
30
+ async function getClient(opts) {
31
+ const creds = await loadCredentials();
32
+ if (!creds) {
33
+ log.error(NOT_AUTHENTICATED);
34
+ process.exit(1);
35
+ }
36
+ const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
37
+ return createApiClient(controlPlaneUrl, creds.apiKey);
38
+ }
39
+ // ─── Formatting helpers (mirroring traces.ts's conventions) ───────────
40
+ /** Truncate a finding ID for table display. */
41
+ function truncateId(id) {
42
+ if (id.length <= 14)
43
+ return id;
44
+ return id.slice(0, 11) + '...';
45
+ }
46
+ /** Format ISO timestamp for compact table display. */
47
+ function formatTimestamp(iso) {
48
+ const d = new Date(iso);
49
+ const pad2 = (n) => String(n).padStart(2, '0');
50
+ return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} ${pad2(d.getHours())}:${pad2(d.getMinutes())}:${pad2(d.getSeconds())}`;
51
+ }
52
+ function truncateText(text, width) {
53
+ return text.length > width ? text.slice(0, width - 1) + '…' : text;
54
+ }
55
+ /** Color (or dim) a finding's outcome. `null` is rendered as "unruled", dimmed. */
56
+ function colorOutcome(outcome) {
57
+ if (outcome === null)
58
+ return pc.dim('unruled');
59
+ if (outcome === 'TRUE_POSITIVE')
60
+ return pc.green(outcome);
61
+ return pc.yellow(outcome);
62
+ }
63
+ /**
64
+ * A null rate is rendered as "no measured rate" — NEVER as "0" or "0%". A
65
+ * detector or pattern nobody has adjudicated has no measured rate; printing
66
+ * a number there would be an invention the route itself explicitly refuses
67
+ * to make (see `false_positive_rate`'s doc comment in routes/findings.ts).
68
+ */
69
+ function formatRate(rate) {
70
+ if (rate === null)
71
+ return pc.dim('no measured rate');
72
+ return `${(rate * 100).toFixed(1)}%`;
73
+ }
74
+ /**
75
+ * ANSI escapes are zero-width. Measuring and slicing raw string length counts
76
+ * them, so a coloured cell is both mis-padded and cut mid-escape — e.g.
77
+ * `pc.dim('no measured rate')` is more characters than its 17 visible ones,
78
+ * and a naive `str.slice(0, width)` against a narrower column truncates
79
+ * inside the escape sequence, corrupting the visible text (see the same
80
+ * fix and its full writeup in `integrity.ts`'s `padCell`).
81
+ */
82
+ // eslint-disable-next-line no-control-regex -- ESC () opens every SGR colour sequence; matching it is this pattern's whole purpose.
83
+ const ANSI = /\[[0-9;]*m/g;
84
+ function visibleLength(str) {
85
+ return str.replace(ANSI, '').length;
86
+ }
87
+ /** Cut to `width` VISIBLE characters, keeping escapes and closing any left open. */
88
+ function truncateVisible(str, width) {
89
+ let out = '';
90
+ let seen = 0;
91
+ let i = 0;
92
+ let coloured = false;
93
+ while (i < str.length && seen < width) {
94
+ ANSI.lastIndex = i;
95
+ const m = ANSI.exec(str);
96
+ if (m && m.index === i) {
97
+ out += m[0];
98
+ coloured = m[0] !== '' && m[0] !== '';
99
+ i += m[0].length;
100
+ continue;
101
+ }
102
+ out += str[i];
103
+ seen += 1;
104
+ i += 1;
105
+ }
106
+ // Never leave a colour open — it would tint the border and every later row.
107
+ return coloured ? out + '' : out;
108
+ }
109
+ /** Pad a string to a fixed VISIBLE width (right-pad with spaces). */
110
+ export function pad(str, width) {
111
+ const visible = visibleLength(str);
112
+ if (visible >= width)
113
+ return truncateVisible(str, width);
114
+ return str + ' '.repeat(width - visible);
115
+ }
116
+ /** Render a simple table with borders. */
117
+ function renderTable(headers, widths, rows) {
118
+ const top = '┌' + widths.map((w) => '─'.repeat(w + 2)).join('┬') + '┐';
119
+ const mid = '├' + widths.map((w) => '─'.repeat(w + 2)).join('┼') + '┤';
120
+ const bot = '└' + widths.map((w) => '─'.repeat(w + 2)).join('┴') + '┘';
121
+ const fmtRow = (cells) => '│ ' + cells.map((c, i) => pad(c, widths[i])).join(' │ ') + ' │';
122
+ console.log(top);
123
+ console.log(fmtRow(headers));
124
+ console.log(mid);
125
+ for (const row of rows) {
126
+ console.log(fmtRow(row));
127
+ }
128
+ console.log(bot);
129
+ }
130
+ // ─── Commands ───────────────────────────────────────────────────────
131
+ /**
132
+ * `intutic findings list` — List detector findings for the workspace.
133
+ *
134
+ * `--unadjudicated` matches the route's own default behaviour: omitted, the
135
+ * route returns every finding (adjudicated or not); passed, it adds
136
+ * `unadjudicated=true` and returns only the working queue. The CLI does not
137
+ * invent a different default than the route it calls.
138
+ */
139
+ export async function runFindingsList(opts) {
140
+ const client = await getClient(opts);
141
+ const params = new URLSearchParams();
142
+ if (opts.unadjudicated)
143
+ params.set('unadjudicated', 'true');
144
+ if (opts.detector)
145
+ params.set('detector_id', opts.detector);
146
+ if (opts.limit)
147
+ params.set('limit', opts.limit);
148
+ try {
149
+ const data = await client.get(`/api/v1/findings?${params.toString()}`);
150
+ if (opts.json) {
151
+ console.log(JSON.stringify(data, null, 2));
152
+ return;
153
+ }
154
+ log.header('Intutic — Detector Findings');
155
+ if (data.findings.length === 0) {
156
+ log.dim(' No findings match your filters.');
157
+ return;
158
+ }
159
+ // `reason` is what makes a request-path finding triageable from the
160
+ // terminal at all (e.g. "Runaway recursion: graph depth 12 exceeds the
161
+ // maximum of 8") — Detector is trimmed from 28 to 20 (still enough for
162
+ // the longest `response_injection:*` id once truncated) to make room for
163
+ // it without the table ballooning further.
164
+ const headers = ['Finding ID', 'Created', 'Detector', 'Reason', 'Disposition', 'Outcome'];
165
+ const widths = [14, 19, 20, 26, 12, 14];
166
+ const rows = data.findings.map((f) => [
167
+ truncateId(f.finding_id),
168
+ formatTimestamp(f.created_at),
169
+ truncateText(f.detector_id, 20),
170
+ truncateText(f.reason ?? '—', 26),
171
+ f.disposition ?? '—',
172
+ colorOutcome(f.outcome),
173
+ ]);
174
+ renderTable(headers, widths, rows);
175
+ console.log(pc.dim(`Showing ${data.findings.length} finding(s)${opts.unadjudicated ? ' (unadjudicated only)' : ''}${opts.detector ? ` for detector ${opts.detector}` : ''}`));
176
+ // Keyed off `detector_id` prefix — already visible in the table above,
177
+ // zero new API surface needed — rather than a precise "has a live
178
+ // snippet" boolean, which the list route deliberately doesn't carry (see
179
+ // routes/findings.ts's own comment on why). "May have" is honest given
180
+ // retention (14 days, independent of adjudication) could already have
181
+ // expired it by the time anyone reads this. The dashboard, not this CLI,
182
+ // is the only surface that ever displays the excerpt content itself —
183
+ // a terminal has no way to "hide again" once printed (scrollback, shell
184
+ // history, and terminal recordings all retain it indefinitely), so this
185
+ // deliberately stops at a pointer.
186
+ const withSnippetCandidate = data.findings.filter((f) => f.detector_id.startsWith('response_injection:')).length;
187
+ if (withSnippetCandidate > 0) {
188
+ console.log(pc.dim(`${withSnippetCandidate} finding(s) may have a scrubbed response snippet available — view in the dashboard (Findings queue) to review it before adjudicating.`));
189
+ }
190
+ }
191
+ catch (err) {
192
+ log.error(`Failed to list findings: ${err instanceof Error ? err.message : String(err)}`);
193
+ process.exit(1);
194
+ }
195
+ }
196
+ /**
197
+ * `intutic findings adjudicate <findingId>` — Record a human ruling on one finding.
198
+ *
199
+ * Exactly one of `--true-positive` / `--false-positive` is required, checked
200
+ * client-side before any request is made — the same discipline
201
+ * `runGatewayAssign`'s `--gateway`/`--clear` pair and `runGatewayConfigSet`
202
+ * use for their own mutually-exclusive flags.
203
+ */
204
+ export async function runFindingsAdjudicate(findingId, opts) {
205
+ if (opts.truePositive && opts.falsePositive) {
206
+ log.error('Specify exactly one of --true-positive or --false-positive, not both.');
207
+ process.exit(1);
208
+ }
209
+ if (!opts.truePositive && !opts.falsePositive) {
210
+ log.error('Specify exactly one of --true-positive or --false-positive.');
211
+ process.exit(1);
212
+ }
213
+ const outcome = opts.truePositive ? 'TRUE_POSITIVE' : 'FALSE_POSITIVE';
214
+ const client = await getClient(opts);
215
+ try {
216
+ const res = await client.post(`/api/v1/findings/${encodeURIComponent(findingId)}/adjudicate`, { outcome, note: opts.note });
217
+ if (opts.json) {
218
+ console.log(JSON.stringify(res, null, 2));
219
+ return;
220
+ }
221
+ log.success(`Finding ${res.finding_id} adjudicated as ${res.outcome}.`);
222
+ }
223
+ catch (err) {
224
+ log.error(`Failed to adjudicate finding: ${err instanceof Error ? err.message : String(err)}`);
225
+ process.exit(1);
226
+ }
227
+ }
228
+ /**
229
+ * `intutic findings stats` — Per-detector false-positive rate, over
230
+ * adjudicated findings only.
231
+ *
232
+ * The `caveats` array exists specifically to be read alongside the numbers
233
+ * it qualifies — this prints it verbatim, never summarized or suppressed.
234
+ */
235
+ export async function runFindingsStats(opts) {
236
+ const client = await getClient(opts);
237
+ try {
238
+ const data = await client.get('/api/v1/findings/stats');
239
+ if (opts.json) {
240
+ console.log(JSON.stringify(data, null, 2));
241
+ return;
242
+ }
243
+ log.header('Intutic — Findings Stats (per detector)');
244
+ if (data.detectors.length === 0) {
245
+ log.dim(' No findings recorded yet.');
246
+ }
247
+ else {
248
+ const headers = ['Detector', 'Shadowed', 'Total', 'Adjudicated', 'FP Rate'];
249
+ const widths = [28, 9, 7, 12, 18];
250
+ const rows = data.detectors.map((d) => [
251
+ truncateText(d.detector_id, 28),
252
+ d.shadowed ? 'yes' : 'no',
253
+ String(d.total_findings),
254
+ String(d.adjudicated),
255
+ formatRate(d.false_positive_rate),
256
+ ]);
257
+ renderTable(headers, widths, rows);
258
+ }
259
+ console.log('');
260
+ log.header('Caveats');
261
+ for (const caveat of data.caveats) {
262
+ log.dim(` - ${caveat}`);
263
+ }
264
+ }
265
+ catch (err) {
266
+ log.error(`Failed to fetch findings stats: ${err instanceof Error ? err.message : String(err)}`);
267
+ process.exit(1);
268
+ }
269
+ }
270
+ /**
271
+ * `intutic findings echo-report` — The response-injection echo measurement
272
+ * report: precision per pattern, over the `response_injection:*` rows
273
+ * `persistFindings` synthesizes from a trace's echo scan.
274
+ *
275
+ * `tracesIngested` is the anti-vacuity denominator and is always printed
276
+ * prominently, even when zero. A top-level `refusal` (zero traffic in the
277
+ * window) is printed as a warning, never suppressed — same for a
278
+ * per-pattern `refusal` (below the adjudicated-count threshold), which
279
+ * replaces that row's rate cell instead of a null percentage.
280
+ */
281
+ export async function runFindingsEchoReport(opts) {
282
+ const client = await getClient(opts);
283
+ const params = new URLSearchParams();
284
+ if (opts.since)
285
+ params.set('since', opts.since);
286
+ if (opts.until)
287
+ params.set('until', opts.until);
288
+ try {
289
+ const data = await client.get(`/api/v1/findings/response-echo/report?${params.toString()}`);
290
+ if (opts.json) {
291
+ console.log(JSON.stringify(data, null, 2));
292
+ return;
293
+ }
294
+ log.header('Intutic — Response-Echo Report');
295
+ log.field('Window', `${data.window.since} → ${data.window.until}`);
296
+ log.field('Traces ingested', String(data.tracesIngested));
297
+ if (data.refusal) {
298
+ console.log('');
299
+ log.warn(data.refusal);
300
+ }
301
+ console.log('');
302
+ // The table column is deliberately short ("withheld — see below") rather
303
+ // than the refusal text itself: renderTable's fixed-width cells truncate
304
+ // anything longer than the column, and a truncated refusal is a
305
+ // suppressed refusal wearing an ellipsis. The full text always follows,
306
+ // in full, below the table.
307
+ const headers = ['Pattern', 'Findings', 'Adjudicated', 'FP Rate'];
308
+ const widths = [28, 9, 12, 20];
309
+ const rows = data.patterns.map((p) => [
310
+ p.pattern,
311
+ String(p.findings),
312
+ String(p.adjudicated),
313
+ p.refusal ? 'withheld — see below' : formatRate(p.falsePositiveRate),
314
+ ]);
315
+ renderTable(headers, widths, rows);
316
+ const patternRefusals = data.patterns.filter((p) => p.refusal);
317
+ if (patternRefusals.length > 0) {
318
+ console.log('');
319
+ for (const p of patternRefusals) {
320
+ log.dim(` ${p.pattern}: ${p.refusal}`);
321
+ }
322
+ }
323
+ }
324
+ catch (err) {
325
+ log.error(`Failed to fetch response-echo report: ${err instanceof Error ? err.message : String(err)}`);
326
+ process.exit(1);
327
+ }
328
+ }
329
+ //# sourceMappingURL=findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/commands/findings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
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
+ interface GatewayCliOpts {
30
+ json?: boolean;
31
+ dev?: boolean;
32
+ }
33
+ /** `intutic gateway register` */
34
+ export declare function runGatewayRegister(opts: GatewayCliOpts & {
35
+ name?: string;
36
+ target?: string;
37
+ }): Promise<void>;
38
+ /** `intutic gateway list` */
39
+ export declare function runGatewayList(opts: GatewayCliOpts): Promise<void>;
40
+ /** `intutic gateway status <gateway_id>` */
41
+ export declare function runGatewayStatus(gatewayId: string, opts: GatewayCliOpts): Promise<void>;
42
+ /** `intutic gateway rotate <gateway_id>` */
43
+ export declare function runGatewayRotate(gatewayId: string, opts: GatewayCliOpts): Promise<void>;
44
+ /** `intutic gateway revoke <gateway_id>` */
45
+ export declare function runGatewayRevoke(gatewayId: string, opts: GatewayCliOpts & {
46
+ reason?: string;
47
+ }): Promise<void>;
48
+ /** `intutic gateway config set <gateway_id>` */
49
+ export declare function runGatewayConfigSet(gatewayId: string, opts: GatewayCliOpts & {
50
+ requireVk?: string;
51
+ requireProvisionedKey?: string;
52
+ }): Promise<void>;
53
+ /** `intutic gateway assign` — LLD #68 §2. */
54
+ export declare function runGatewayAssign(opts: GatewayCliOpts & {
55
+ gateway?: string;
56
+ clear?: boolean;
57
+ org?: string;
58
+ }): Promise<void>;
59
+ /** `intutic gateway resolve` — LLD #68 §2. */
60
+ export declare function runGatewayResolve(opts: GatewayCliOpts): Promise<void>;
61
+ export {};
62
+ //# sourceMappingURL=gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/commands/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAaH,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAgED,iCAAiC;AACjC,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED,6BAA6B;AAC7B,wBAAsB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCxE;AAED,4CAA4C;AAC5C,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7F;AAED,4CAA4C;AAC5C,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB7F;AAED,4CAA4C;AAC5C,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CAef;AAED,gDAAgD;AAChD,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,cAAc,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED,6CAA6C;AAC7C,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE,OAAO,CAAC,IAAI,CAAC,CAoCf;AAcD,8CAA8C;AAC9C,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD3E"}