@skrr-ai/cli 0.1.47 → 0.1.49

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 (286) hide show
  1. package/README.md +1 -1
  2. package/dist/base-command.d.ts +18 -0
  3. package/dist/base-command.js +61 -1
  4. package/dist/commands/agent-worker.d.ts +12 -0
  5. package/dist/commands/agent-worker.js +140 -0
  6. package/dist/commands/agents/chat.d.ts +21 -0
  7. package/dist/commands/agents/chat.js +26 -9
  8. package/dist/commands/balance/usage/breakdown.d.ts +14 -0
  9. package/dist/commands/balance/usage/breakdown.js +68 -0
  10. package/dist/commands/balance/usage.js +24 -0
  11. package/dist/commands/commerce/entitlements/explain.d.ts +22 -0
  12. package/dist/commands/commerce/entitlements/explain.js +40 -0
  13. package/dist/commands/commerce/incidents/audit.d.ts +20 -0
  14. package/dist/commands/commerce/incidents/audit.js +37 -0
  15. package/dist/commands/commerce/incidents/list.d.ts +22 -0
  16. package/dist/commands/commerce/incidents/list.js +49 -0
  17. package/dist/commands/commerce/incidents/resolve.d.ts +23 -0
  18. package/dist/commands/commerce/incidents/resolve.js +45 -0
  19. package/dist/commands/commerce/incidents/retry.d.ts +22 -0
  20. package/dist/commands/commerce/incidents/retry.js +45 -0
  21. package/dist/commands/commerce/incidents/show.d.ts +13 -0
  22. package/dist/commands/commerce/incidents/show.js +30 -0
  23. package/dist/commands/commerce/offers/approve.d.ts +17 -0
  24. package/dist/commands/commerce/offers/approve.js +33 -0
  25. package/dist/commands/commerce/offers/create.d.ts +18 -0
  26. package/dist/commands/commerce/offers/create.js +34 -0
  27. package/dist/commands/commerce/offers/publish.d.ts +13 -0
  28. package/dist/commands/commerce/offers/publish.js +28 -0
  29. package/dist/commands/commerce/offers/retire.d.ts +17 -0
  30. package/dist/commands/commerce/offers/retire.js +32 -0
  31. package/dist/commands/commerce/offers/validate.d.ts +18 -0
  32. package/dist/commands/commerce/offers/validate.js +33 -0
  33. package/dist/commands/commerce/products/create.d.ts +10 -0
  34. package/dist/commands/commerce/products/create.js +25 -0
  35. package/dist/commands/commerce/promotions/redeem.d.ts +13 -0
  36. package/dist/commands/commerce/promotions/redeem.js +32 -0
  37. package/dist/commands/commerce/terms/accept.d.ts +18 -0
  38. package/dist/commands/commerce/terms/accept.js +39 -0
  39. package/dist/commands/commerce/terms/show.d.ts +10 -0
  40. package/dist/commands/commerce/terms/show.js +34 -0
  41. package/dist/commands/commerce/trials/conversion-preview.d.ts +18 -0
  42. package/dist/commands/commerce/trials/conversion-preview.js +39 -0
  43. package/dist/commands/commerce/trials/start.d.ts +23 -0
  44. package/dist/commands/commerce/trials/start.js +58 -0
  45. package/dist/commands/commitments/accounting.d.ts +39 -0
  46. package/dist/commands/commitments/accounting.js +116 -0
  47. package/dist/commands/commitments/action-history.d.ts +1 -0
  48. package/dist/commands/commitments/action-history.js +8 -1
  49. package/dist/commands/commitments/case.d.ts +1 -0
  50. package/dist/commands/commitments/case.js +19 -3
  51. package/dist/commands/commitments/cases.d.ts +1 -0
  52. package/dist/commands/commitments/cases.js +11 -1
  53. package/dist/commands/commitments/checks.d.ts +1 -0
  54. package/dist/commands/commitments/checks.js +5 -1
  55. package/dist/commands/commitments/cost.d.ts +62 -0
  56. package/dist/commands/commitments/cost.js +130 -0
  57. package/dist/commands/commitments/create.js +1 -1
  58. package/dist/commands/commitments/delete.d.ts +1 -0
  59. package/dist/commands/commitments/delete.js +56 -6
  60. package/dist/commands/commitments/feedback.js +9 -1
  61. package/dist/commands/commitments/handover.js +16 -0
  62. package/dist/commands/commitments/hypotheses.d.ts +1 -0
  63. package/dist/commands/commitments/hypotheses.js +17 -2
  64. package/dist/commands/commitments/links/list.js +4 -1
  65. package/dist/commands/commitments/liveness.d.ts +18 -0
  66. package/dist/commands/commitments/liveness.js +80 -0
  67. package/dist/commands/commitments/metrics.d.ts +1 -0
  68. package/dist/commands/commitments/metrics.js +8 -1
  69. package/dist/commands/commitments/next-tick.d.ts +39 -0
  70. package/dist/commands/commitments/next-tick.js +122 -0
  71. package/dist/commands/commitments/observations.d.ts +1 -0
  72. package/dist/commands/commitments/observations.js +19 -2
  73. package/dist/commands/commitments/pause.js +12 -0
  74. package/dist/commands/commitments/receipt.d.ts +2 -0
  75. package/dist/commands/commitments/receipt.js +16 -2
  76. package/dist/commands/commitments/remediation-proposal.js +6 -2
  77. package/dist/commands/commitments/remediation-proposals.js +5 -1
  78. package/dist/commands/commitments/restore.d.ts +25 -0
  79. package/dist/commands/commitments/restore.js +46 -0
  80. package/dist/commands/commitments/show.js +32 -0
  81. package/dist/commands/commitments/trigger-status.js +33 -0
  82. package/dist/commands/commitments/update.d.ts +1 -0
  83. package/dist/commands/commitments/update.js +31 -5
  84. package/dist/commands/commitments/wake-capabilities.d.ts +0 -1
  85. package/dist/commands/commitments/wake-capabilities.js +8 -4
  86. package/dist/commands/enterprise/budgets/create.d.ts +11 -0
  87. package/dist/commands/enterprise/budgets/create.js +27 -0
  88. package/dist/commands/enterprise/budgets/evaluate.d.ts +17 -0
  89. package/dist/commands/enterprise/budgets/evaluate.js +32 -0
  90. package/dist/commands/enterprise/budgets/publish.d.ts +14 -0
  91. package/dist/commands/enterprise/budgets/publish.js +30 -0
  92. package/dist/commands/enterprise/contracts/activate.d.ts +14 -0
  93. package/dist/commands/enterprise/contracts/activate.js +30 -0
  94. package/dist/commands/enterprise/contracts/create.d.ts +14 -0
  95. package/dist/commands/enterprise/contracts/create.js +32 -0
  96. package/dist/commands/enterprise/contracts/issue.d.ts +18 -0
  97. package/dist/commands/enterprise/contracts/issue.js +34 -0
  98. package/dist/commands/enterprise/domains/begin.d.ts +20 -0
  99. package/dist/commands/enterprise/domains/begin.js +39 -0
  100. package/dist/commands/enterprise/domains/verify.d.ts +14 -0
  101. package/dist/commands/enterprise/domains/verify.js +32 -0
  102. package/dist/commands/enterprise/external-config/activate.d.ts +22 -0
  103. package/dist/commands/enterprise/external-config/activate.js +49 -0
  104. package/dist/commands/enterprise/external-config/set.d.ts +25 -0
  105. package/dist/commands/enterprise/external-config/set.js +123 -0
  106. package/dist/commands/enterprise/external-config/show.d.ts +12 -0
  107. package/dist/commands/enterprise/external-config/show.js +39 -0
  108. package/dist/commands/enterprise/external-config/suspend.d.ts +13 -0
  109. package/dist/commands/enterprise/external-config/suspend.js +41 -0
  110. package/dist/commands/enterprise/finance/close-snapshot.d.ts +11 -0
  111. package/dist/commands/enterprise/finance/close-snapshot.js +28 -0
  112. package/dist/commands/enterprise/finance/record-document.d.ts +18 -0
  113. package/dist/commands/enterprise/finance/record-document.js +35 -0
  114. package/dist/commands/enterprise/profile.d.ts +20 -0
  115. package/dist/commands/enterprise/profile.js +38 -0
  116. package/dist/commands/login.d.ts +13 -0
  117. package/dist/commands/login.js +77 -0
  118. package/dist/commands/machines/dedicated/index.js +3 -0
  119. package/dist/commands/machines/dedicated/service/apply.d.ts +23 -0
  120. package/dist/commands/machines/dedicated/service/apply.js +99 -0
  121. package/dist/commands/machines/dedicated/service/approve.d.ts +23 -0
  122. package/dist/commands/machines/dedicated/service/approve.js +52 -0
  123. package/dist/commands/machines/dedicated/service/create.d.ts +55 -0
  124. package/dist/commands/machines/dedicated/service/create.js +222 -0
  125. package/dist/commands/machines/dedicated/service/edit.d.ts +30 -0
  126. package/dist/commands/machines/dedicated/service/edit.js +146 -0
  127. package/dist/commands/machines/dedicated/service/exec.d.ts +26 -0
  128. package/dist/commands/machines/dedicated/service/exec.js +92 -0
  129. package/dist/commands/machines/dedicated/service/export.d.ts +29 -0
  130. package/dist/commands/machines/dedicated/service/export.js +106 -0
  131. package/dist/commands/machines/dedicated/service/index.d.ts +14 -0
  132. package/dist/commands/machines/dedicated/service/index.js +49 -0
  133. package/dist/commands/machines/dedicated/service/logs.d.ts +33 -0
  134. package/dist/commands/machines/dedicated/service/logs.js +148 -0
  135. package/dist/commands/machines/dedicated/service/ls.d.ts +20 -0
  136. package/dist/commands/machines/dedicated/service/ls.js +80 -0
  137. package/dist/commands/machines/dedicated/service/restart.d.ts +14 -0
  138. package/dist/commands/machines/dedicated/service/restart.js +29 -0
  139. package/dist/commands/machines/dedicated/service/rm.d.ts +20 -0
  140. package/dist/commands/machines/dedicated/service/rm.js +33 -0
  141. package/dist/commands/machines/dedicated/service/secret/index.d.ts +14 -0
  142. package/dist/commands/machines/dedicated/service/secret/index.js +25 -0
  143. package/dist/commands/machines/dedicated/service/secret/rm.d.ts +22 -0
  144. package/dist/commands/machines/dedicated/service/secret/rm.js +54 -0
  145. package/dist/commands/machines/dedicated/service/secret/set.d.ts +22 -0
  146. package/dist/commands/machines/dedicated/service/secret/set.js +93 -0
  147. package/dist/commands/machines/dedicated/service/start.d.ts +14 -0
  148. package/dist/commands/machines/dedicated/service/start.js +29 -0
  149. package/dist/commands/machines/dedicated/service/status.d.ts +21 -0
  150. package/dist/commands/machines/dedicated/service/status.js +85 -0
  151. package/dist/commands/machines/dedicated/service/stop.d.ts +20 -0
  152. package/dist/commands/machines/dedicated/service/stop.js +35 -0
  153. package/dist/commands/machines/dedicated/service/top.d.ts +22 -0
  154. package/dist/commands/machines/dedicated/service/top.js +120 -0
  155. package/dist/commands/machines/dedicated/sign-in-status.d.ts +22 -0
  156. package/dist/commands/machines/dedicated/sign-in-status.js +79 -0
  157. package/dist/commands/machines/dedicated/ssh-config.d.ts +28 -0
  158. package/dist/commands/machines/dedicated/ssh-config.js +66 -0
  159. package/dist/commands/machines/dedicated/ssh-proxy.d.ts +22 -0
  160. package/dist/commands/machines/dedicated/ssh-proxy.js +62 -0
  161. package/dist/commands/machines/dedicated/ssh.d.ts +29 -0
  162. package/dist/commands/machines/dedicated/ssh.js +121 -0
  163. package/dist/commands/native/allow-all.d.ts +14 -0
  164. package/dist/commands/native/allow-all.js +25 -0
  165. package/dist/commands/native/allow.d.ts +24 -0
  166. package/dist/commands/native/allow.js +45 -0
  167. package/dist/commands/native/deny.d.ts +24 -0
  168. package/dist/commands/native/deny.js +43 -0
  169. package/dist/commands/native/disable.d.ts +17 -0
  170. package/dist/commands/native/disable.js +28 -0
  171. package/dist/commands/native/enable.d.ts +12 -0
  172. package/dist/commands/native/enable.js +29 -0
  173. package/dist/commands/native/list-apps.d.ts +19 -0
  174. package/dist/commands/native/list-apps.js +30 -0
  175. package/dist/commands/native/restrict-to.d.ts +22 -0
  176. package/dist/commands/native/restrict-to.js +41 -0
  177. package/dist/commands/native/status.d.ts +19 -0
  178. package/dist/commands/native/status.js +33 -0
  179. package/dist/commands/native.d.ts +39 -0
  180. package/dist/commands/native.js +76 -0
  181. package/dist/commands/service/index.d.ts +14 -0
  182. package/dist/commands/service/index.js +31 -0
  183. package/dist/commands/service/logs.d.ts +18 -0
  184. package/dist/commands/service/logs.js +53 -0
  185. package/dist/commands/service/ls.d.ts +13 -0
  186. package/dist/commands/service/ls.js +48 -0
  187. package/dist/commands/service/propose.d.ts +34 -0
  188. package/dist/commands/service/propose.js +113 -0
  189. package/dist/commands/service/status.d.ts +17 -0
  190. package/dist/commands/service/status.js +56 -0
  191. package/dist/commands/spaces/auto-executor/runs.d.ts +13 -0
  192. package/dist/commands/spaces/auto-executor/runs.js +56 -0
  193. package/dist/commands/store/governance/artifacts.d.ts +25 -0
  194. package/dist/commands/store/governance/artifacts.js +55 -0
  195. package/dist/commands/store/governance/assign.d.ts +16 -0
  196. package/dist/commands/store/governance/assign.js +54 -0
  197. package/dist/commands/store/governance/create-license.d.ts +18 -0
  198. package/dist/commands/store/governance/create-license.js +35 -0
  199. package/dist/commands/store/governance/install-plan.d.ts +25 -0
  200. package/dist/commands/store/governance/install-plan.js +56 -0
  201. package/dist/commands/store/governance/license-policy.d.ts +30 -0
  202. package/dist/commands/store/governance/license-policy.js +69 -0
  203. package/dist/commands/store/governance/policy.d.ts +25 -0
  204. package/dist/commands/store/governance/policy.js +65 -0
  205. package/dist/commands/store/governance/publish-release.d.ts +17 -0
  206. package/dist/commands/store/governance/publish-release.js +34 -0
  207. package/dist/commands/tasks/deliverable/add.d.ts +15 -0
  208. package/dist/commands/tasks/deliverable/add.js +174 -0
  209. package/dist/commands/tasks/deliverable/archive.d.ts +35 -0
  210. package/dist/commands/tasks/deliverable/archive.js +205 -0
  211. package/dist/commands/tasks/labels/detach.js +3 -0
  212. package/dist/commands/tasks/labels/suggest.d.ts +24 -0
  213. package/dist/commands/tasks/labels/suggest.js +69 -0
  214. package/dist/commands/tasks/list.d.ts +16 -2
  215. package/dist/commands/tasks/list.js +100 -24
  216. package/dist/commands/tasks/show.d.ts +23 -0
  217. package/dist/commands/tasks/show.js +51 -1
  218. package/dist/commands/wiki/rm.d.ts +22 -1
  219. package/dist/commands/wiki/rm.js +52 -3
  220. package/dist/lib/agentic-stream.js +10 -2
  221. package/dist/lib/balance.d.ts +6 -1
  222. package/dist/lib/balance.js +15 -0
  223. package/dist/lib/commerce-command.d.ts +48 -0
  224. package/dist/lib/commerce-command.js +70 -0
  225. package/dist/lib/commerce.d.ts +93 -0
  226. package/dist/lib/commerce.js +129 -0
  227. package/dist/lib/commitment-product.js +1 -1
  228. package/dist/lib/commitments.d.ts +202 -29
  229. package/dist/lib/commitments.js +300 -33
  230. package/dist/lib/daemon-installer.d.ts +6 -5
  231. package/dist/lib/daemon-installer.js +4 -17
  232. package/dist/lib/dedicated-lease-command.js +10 -0
  233. package/dist/lib/dedicated-machines.d.ts +37 -0
  234. package/dist/lib/dedicated-machines.js +47 -0
  235. package/dist/lib/dedicated-service-command.d.ts +60 -0
  236. package/dist/lib/dedicated-service-command.js +182 -0
  237. package/dist/lib/dedicated-service.d.ts +342 -0
  238. package/dist/lib/dedicated-service.js +741 -0
  239. package/dist/lib/dedicated-ssh.d.ts +136 -0
  240. package/dist/lib/dedicated-ssh.js +387 -0
  241. package/dist/lib/delegated-cli.js +51 -13
  242. package/dist/lib/enterprise-commerce.d.ts +67 -0
  243. package/dist/lib/enterprise-commerce.js +112 -0
  244. package/dist/lib/enterprise-external-configuration.d.ts +60 -0
  245. package/dist/lib/enterprise-external-configuration.js +58 -0
  246. package/dist/lib/first-party-harness.js +17 -3
  247. package/dist/lib/governed-store.d.ts +110 -0
  248. package/dist/lib/governed-store.js +79 -0
  249. package/dist/lib/guest-service-command.d.ts +16 -0
  250. package/dist/lib/guest-service-command.js +32 -0
  251. package/dist/lib/guest-service.d.ts +67 -0
  252. package/dist/lib/guest-service.js +112 -0
  253. package/dist/lib/prompt.d.ts +1 -0
  254. package/dist/lib/prompt.js +1 -0
  255. package/dist/lib/task-asset-upload.d.ts +20 -0
  256. package/dist/lib/task-asset-upload.js +30 -8
  257. package/dist/lib/task-extras.d.ts +23 -0
  258. package/dist/lib/task-extras.js +6 -0
  259. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonScopes.d.ts +9 -3
  260. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonScopes.js +10 -3
  261. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/firstPartyHarness.d.ts +1 -1
  262. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/firstPartyHarness.js +1 -1
  263. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.d.ts +2 -2
  264. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.js +8 -5
  265. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/messages.d.ts +16 -0
  266. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/messages.js +21 -4
  267. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/releaseManifest.d.ts +38 -0
  268. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/releaseManifest.js +66 -1
  269. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/spawnEnv.d.ts +1 -1
  270. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/spawnEnv.js +24 -2
  271. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonScopes.d.ts +9 -3
  272. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonScopes.js +10 -3
  273. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/firstPartyHarness.d.ts +1 -1
  274. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/firstPartyHarness.js +1 -1
  275. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.d.ts +2 -2
  276. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.js +2 -2
  277. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/messages.d.ts +16 -0
  278. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/messages.js +20 -4
  279. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/releaseManifest.d.ts +38 -0
  280. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/releaseManifest.js +64 -0
  281. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/spawnEnv.d.ts +1 -1
  282. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/spawnEnv.js +24 -2
  283. package/dist/node_modules/@skrr-ai/auth-core/package.json +1 -1
  284. package/dist/node_modules/@skrr-ai/data-provider/index.js +5060 -4827
  285. package/oclif.manifest.json +35194 -29157
  286. package/package.json +43 -1
@@ -0,0 +1,93 @@
1
+ /**
2
+ * `/api/commerce` — marketplace terms, the offer governance pipeline, trials,
3
+ * promotions, and the incident queue behind fulfillment and integrity.
4
+ *
5
+ * Most of it is `checkAdmin` on the server, which is not a reason to leave it
6
+ * in a browser: the API enforces that either way, so a CLI grants nothing and
7
+ * only gives an operator a path that is not a page. The incident queue and the
8
+ * offer pipeline are the two most CLI-shaped things in the file — a queue you
9
+ * triage and a lifecycle you advance are exactly what a headless operator does
10
+ * at 2am, which is the case the parity doctrine names.
11
+ *
12
+ * Every route is written out at its own call site rather than composed from a
13
+ * builder: the parity checker reads a LITERAL there and deliberately refuses a
14
+ * composed path.
15
+ *
16
+ * **Bodies are passed through, not re-declared.** The complex writes (a
17
+ * product, an offer version, an entitlement question) take JSON the server
18
+ * validates with its own zod schema. Restating those shapes here would be a
19
+ * second declaration of a vocabulary the server owns — the way a surface
20
+ * silently drifts from the API that rejects it.
21
+ */
22
+ export type MarketplaceTermsScope = 'buyer' | 'publisher';
23
+ /**
24
+ * `GET /marketplace/terms/current` — the terms in force for one side of a deal.
25
+ *
26
+ * The query rides in `withQuery` rather than being interpolated into the
27
+ * literal. That is not style: the parity checker reads the LITERAL at the call
28
+ * site, and a `?scope=${…}` baked into it resolves to a path with a query
29
+ * attached, which matches no route — so a covered endpoint reports as
30
+ * unreachable. `withQuery` is the wrapper the checker already understands, and
31
+ * it is the one the other libs use.
32
+ */
33
+ export declare function getMarketplaceTerms(scope: MarketplaceTermsScope): Promise<unknown>;
34
+ /**
35
+ * `POST /marketplace/terms/accept` — record that you accept them.
36
+ *
37
+ * `accepted: true` is a literal the server requires; it is not a flag the CLI
38
+ * may default, because the whole value of the receipt is that somebody said so.
39
+ */
40
+ export declare function acceptMarketplaceTerms(scope: MarketplaceTermsScope): Promise<unknown>;
41
+ /** `GET /admin/marketplace/incidents/:kind` — the queue. */
42
+ export declare function listMarketplaceIncidents(kind: string, params?: {
43
+ status?: string;
44
+ limit?: number;
45
+ }): Promise<unknown>;
46
+ /** `GET /admin/marketplace/incidents/:kind/:incidentId` — one incident. */
47
+ export declare function getMarketplaceIncident(kind: string, incidentId: string): Promise<unknown>;
48
+ /** `GET /admin/marketplace/incidents/:kind/:incidentId/audit` — what was done to it. */
49
+ export declare function listMarketplaceIncidentAudit(kind: string, incidentId: string): Promise<unknown>;
50
+ /**
51
+ * `POST /admin/marketplace/incidents/integrity/:incidentId/resolve` — close an
52
+ * integrity incident with a stated resolution.
53
+ *
54
+ * Integrity only. A fulfillment incident is retried, not resolved, and the two
55
+ * are different acts: one says the work can run again, the other says a human
56
+ * looked and decided. The CLI keeps them as separate verbs for that reason.
57
+ */
58
+ export declare function resolveIntegrityIncident(incidentId: string, body: Record<string, unknown>): Promise<unknown>;
59
+ /** `POST /admin/marketplace/fulfillment-reconciliations/:id/retry` — run it again. */
60
+ export declare function retryFulfillmentReconciliation(reconciliationId: string, body?: Record<string, unknown>): Promise<unknown>;
61
+ /** `POST /admin/products` — create a product. Body is the server's schema. */
62
+ export declare function createCommerceProduct(body: Record<string, unknown>): Promise<unknown>;
63
+ /** `POST /admin/offers` — create an offer VERSION. Body is the server's schema. */
64
+ export declare function createCommerceOfferVersion(body: Record<string, unknown>): Promise<unknown>;
65
+ /**
66
+ * The offer pipeline, in the order it is meant to run: validate → approve →
67
+ * publish, with retire as the exit. Four doors rather than one `--state` flag,
68
+ * because each is a distinct act with a distinct authority behind it, and a
69
+ * single mutate-the-state verb is how a governance pipeline becomes a field.
70
+ */
71
+ /** `POST /admin/offers/:offerVersionId/validate` — is it ready to be approved? */
72
+ export declare function validateCommerceOffer(offerVersionId: string): Promise<unknown>;
73
+ /** `POST /admin/offers/:offerVersionId/approve` — somebody signs off. */
74
+ export declare function approveCommerceOffer(offerVersionId: string): Promise<unknown>;
75
+ /** `POST /admin/offers/:offerVersionId/publish` — it becomes buyable. */
76
+ export declare function publishCommerceOffer(offerVersionId: string): Promise<unknown>;
77
+ /** `POST /admin/offers/:offerVersionId/retire` — it stops being buyable. */
78
+ export declare function retireCommerceOffer(offerVersionId: string): Promise<unknown>;
79
+ /** `POST /trials` — enrol the calling user. The subject is the credential, never a field. */
80
+ export declare function startCommerceTrial(body: Record<string, unknown>): Promise<unknown>;
81
+ /** `GET /trials/:enrollmentId/conversion-preview` — what converting would cost. */
82
+ export declare function previewCommerceTrialConversion(enrollmentId: string): Promise<unknown>;
83
+ /** `POST /promotions/redeem` — redeem a promotional offer version. */
84
+ export declare function redeemCommercePromotion(offerVersionId: string): Promise<unknown>;
85
+ /**
86
+ * `POST /admin/entitlements/explain` — WHY a subject does or does not have a
87
+ * capability.
88
+ *
89
+ * The most useful read on this mount and the reason a CLI is worth having:
90
+ * "this account cannot do X" is a support question answered by tracing an
91
+ * entitlement, and tracing it from a terminal beats clicking through a console.
92
+ */
93
+ export declare function explainCommerceEntitlement(body: Record<string, unknown>): Promise<unknown>;
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMarketplaceTerms = getMarketplaceTerms;
4
+ exports.acceptMarketplaceTerms = acceptMarketplaceTerms;
5
+ exports.listMarketplaceIncidents = listMarketplaceIncidents;
6
+ exports.getMarketplaceIncident = getMarketplaceIncident;
7
+ exports.listMarketplaceIncidentAudit = listMarketplaceIncidentAudit;
8
+ exports.resolveIntegrityIncident = resolveIntegrityIncident;
9
+ exports.retryFulfillmentReconciliation = retryFulfillmentReconciliation;
10
+ exports.createCommerceProduct = createCommerceProduct;
11
+ exports.createCommerceOfferVersion = createCommerceOfferVersion;
12
+ exports.validateCommerceOffer = validateCommerceOffer;
13
+ exports.approveCommerceOffer = approveCommerceOffer;
14
+ exports.publishCommerceOffer = publishCommerceOffer;
15
+ exports.retireCommerceOffer = retireCommerceOffer;
16
+ exports.startCommerceTrial = startCommerceTrial;
17
+ exports.previewCommerceTrialConversion = previewCommerceTrialConversion;
18
+ exports.redeemCommercePromotion = redeemCommercePromotion;
19
+ exports.explainCommerceEntitlement = explainCommerceEntitlement;
20
+ const api_fetch_1 = require("./api-fetch");
21
+ const triggers_1 = require("./triggers");
22
+ /**
23
+ * `GET /marketplace/terms/current` — the terms in force for one side of a deal.
24
+ *
25
+ * The query rides in `withQuery` rather than being interpolated into the
26
+ * literal. That is not style: the parity checker reads the LITERAL at the call
27
+ * site, and a `?scope=${…}` baked into it resolves to a path with a query
28
+ * attached, which matches no route — so a covered endpoint reports as
29
+ * unreachable. `withQuery` is the wrapper the checker already understands, and
30
+ * it is the one the other libs use.
31
+ */
32
+ async function getMarketplaceTerms(scope) {
33
+ return (0, api_fetch_1.apiFetch)((0, triggers_1.withQuery)('/api/commerce/marketplace/terms/current', { scope }));
34
+ }
35
+ /**
36
+ * `POST /marketplace/terms/accept` — record that you accept them.
37
+ *
38
+ * `accepted: true` is a literal the server requires; it is not a flag the CLI
39
+ * may default, because the whole value of the receipt is that somebody said so.
40
+ */
41
+ async function acceptMarketplaceTerms(scope) {
42
+ return (0, api_fetch_1.apiFetch)('/api/commerce/marketplace/terms/accept', {
43
+ method: 'POST',
44
+ body: { scope, accepted: true },
45
+ });
46
+ }
47
+ /** `GET /admin/marketplace/incidents/:kind` — the queue. */
48
+ async function listMarketplaceIncidents(kind, params = {}) {
49
+ return (0, api_fetch_1.apiFetch)((0, triggers_1.withQuery)(`/api/commerce/admin/marketplace/incidents/${encodeURIComponent(kind)}`, params));
50
+ }
51
+ /** `GET /admin/marketplace/incidents/:kind/:incidentId` — one incident. */
52
+ async function getMarketplaceIncident(kind, incidentId) {
53
+ return (0, api_fetch_1.apiFetch)(`/api/commerce/admin/marketplace/incidents/${encodeURIComponent(kind)}/${encodeURIComponent(incidentId)}`);
54
+ }
55
+ /** `GET /admin/marketplace/incidents/:kind/:incidentId/audit` — what was done to it. */
56
+ async function listMarketplaceIncidentAudit(kind, incidentId) {
57
+ return (0, api_fetch_1.apiFetch)(`/api/commerce/admin/marketplace/incidents/${encodeURIComponent(kind)}/${encodeURIComponent(incidentId)}/audit`);
58
+ }
59
+ /**
60
+ * `POST /admin/marketplace/incidents/integrity/:incidentId/resolve` — close an
61
+ * integrity incident with a stated resolution.
62
+ *
63
+ * Integrity only. A fulfillment incident is retried, not resolved, and the two
64
+ * are different acts: one says the work can run again, the other says a human
65
+ * looked and decided. The CLI keeps them as separate verbs for that reason.
66
+ */
67
+ async function resolveIntegrityIncident(incidentId, body) {
68
+ return (0, api_fetch_1.apiFetch)(`/api/commerce/admin/marketplace/incidents/integrity/${encodeURIComponent(incidentId)}/resolve`, { method: 'POST', body });
69
+ }
70
+ /** `POST /admin/marketplace/fulfillment-reconciliations/:id/retry` — run it again. */
71
+ async function retryFulfillmentReconciliation(reconciliationId, body = {}) {
72
+ return (0, api_fetch_1.apiFetch)(`/api/commerce/admin/marketplace/fulfillment-reconciliations/${encodeURIComponent(reconciliationId)}/retry`, { method: 'POST', body });
73
+ }
74
+ /** `POST /admin/products` — create a product. Body is the server's schema. */
75
+ async function createCommerceProduct(body) {
76
+ return (0, api_fetch_1.apiFetch)('/api/commerce/admin/products', { method: 'POST', body });
77
+ }
78
+ /** `POST /admin/offers` — create an offer VERSION. Body is the server's schema. */
79
+ async function createCommerceOfferVersion(body) {
80
+ return (0, api_fetch_1.apiFetch)('/api/commerce/admin/offers', { method: 'POST', body });
81
+ }
82
+ /**
83
+ * The offer pipeline, in the order it is meant to run: validate → approve →
84
+ * publish, with retire as the exit. Four doors rather than one `--state` flag,
85
+ * because each is a distinct act with a distinct authority behind it, and a
86
+ * single mutate-the-state verb is how a governance pipeline becomes a field.
87
+ */
88
+ /** `POST /admin/offers/:offerVersionId/validate` — is it ready to be approved? */
89
+ async function validateCommerceOffer(offerVersionId) {
90
+ return (0, api_fetch_1.apiFetch)(`/api/commerce/admin/offers/${encodeURIComponent(offerVersionId)}/validate`, { method: 'POST', body: {} });
91
+ }
92
+ /** `POST /admin/offers/:offerVersionId/approve` — somebody signs off. */
93
+ async function approveCommerceOffer(offerVersionId) {
94
+ return (0, api_fetch_1.apiFetch)(`/api/commerce/admin/offers/${encodeURIComponent(offerVersionId)}/approve`, { method: 'POST', body: {} });
95
+ }
96
+ /** `POST /admin/offers/:offerVersionId/publish` — it becomes buyable. */
97
+ async function publishCommerceOffer(offerVersionId) {
98
+ return (0, api_fetch_1.apiFetch)(`/api/commerce/admin/offers/${encodeURIComponent(offerVersionId)}/publish`, { method: 'POST', body: {} });
99
+ }
100
+ /** `POST /admin/offers/:offerVersionId/retire` — it stops being buyable. */
101
+ async function retireCommerceOffer(offerVersionId) {
102
+ return (0, api_fetch_1.apiFetch)(`/api/commerce/admin/offers/${encodeURIComponent(offerVersionId)}/retire`, { method: 'POST', body: {} });
103
+ }
104
+ /** `POST /trials` — enrol the calling user. The subject is the credential, never a field. */
105
+ async function startCommerceTrial(body) {
106
+ return (0, api_fetch_1.apiFetch)('/api/commerce/trials', { method: 'POST', body });
107
+ }
108
+ /** `GET /trials/:enrollmentId/conversion-preview` — what converting would cost. */
109
+ async function previewCommerceTrialConversion(enrollmentId) {
110
+ return (0, api_fetch_1.apiFetch)(`/api/commerce/trials/${encodeURIComponent(enrollmentId)}/conversion-preview`);
111
+ }
112
+ /** `POST /promotions/redeem` — redeem a promotional offer version. */
113
+ async function redeemCommercePromotion(offerVersionId) {
114
+ return (0, api_fetch_1.apiFetch)('/api/commerce/promotions/redeem', {
115
+ method: 'POST',
116
+ body: { offerVersionId },
117
+ });
118
+ }
119
+ /**
120
+ * `POST /admin/entitlements/explain` — WHY a subject does or does not have a
121
+ * capability.
122
+ *
123
+ * The most useful read on this mount and the reason a CLI is worth having:
124
+ * "this account cannot do X" is a support question answered by tracing an
125
+ * entitlement, and tracing it from a terminal beats clicking through a console.
126
+ */
127
+ async function explainCommerceEntitlement(body) {
128
+ return (0, api_fetch_1.apiFetch)('/api/commerce/admin/entitlements/explain', { method: 'POST', body });
129
+ }
@@ -125,7 +125,7 @@ function renderExecutionReceiptQuarterlyMetrics(response, log, verbose = false)
125
125
  log(` Execute starts: ${metrics.executeStarts}`);
126
126
  log(` Declared deliveries: ${metrics.declaredDeliveries}`);
127
127
  log(` Verified outcomes: ${metrics.verifiedOutcomes}`);
128
- log(` Blocked: ${metrics.blocked}`);
128
+ log(` Blocked / failed: ${metrics.blocked} / ${metrics.failed ?? '—'}`);
129
129
  log('');
130
130
  log('Rates');
131
131
  log(` Verified per eligible wake: ${ratio(metrics.verifiedOutcomesPerEligibleMaterialWake)}`);
@@ -16,21 +16,14 @@
16
16
  * Two `kind`s: `achieve` (bounded, deadline-bearing) and `maintain` (perpetual
17
17
  * "hold this state", derived from a Compass invariant — not authored here).
18
18
  */
19
- import { COMMITMENT_WATCHED_SOURCES, COMMITMENT_TEMPLATE_IDS, COMMITMENT_CADENCE_MODES, COMMITMENT_CADENCE_TIME_PATTERN, COMMITMENT_CADENCE_MAX_TIMES, COMMITMENT_AUTONOMY_MODES, COMMITMENT_EXECUTION_ISOLATION_MODES } from '@skrr-ai/data-provider';
19
+ import { COMMITMENT_WATCHED_SOURCES, COMMITMENT_TEMPLATE_IDS, COMMITMENT_CADENCE_MODES, COMMITMENT_CADENCE_TIME_PATTERN, COMMITMENT_CADENCE_MAX_TIMES, COMMITMENT_AUTONOMY_MODES, COMMITMENT_EXECUTION_ISOLATION_MODES, COMMITMENT_STATUSES, COMMITMENT_KIND_VALUES } from '@skrr-ai/data-provider';
20
20
  import type { CommitmentCheck, CommitmentChecksResponse, Commitment, CommitmentActionProposal, CommitmentListResponse, CommitmentPlanResponse, CommitmentStatusResponse, CommitmentWorkLink, CommitmentExecutionReceiptListResponse, CommitmentExecutionReceiptQuarterlyMetricsResponse, CommitmentCapabilitySource, CommitmentDeliveryPatchResponse, CommitmentDeliveryBundleResponse } from '@skrr-ai/data-provider';
21
21
  import { withQuery } from './triggers';
22
- export { COMMITMENT_WATCHED_SOURCES, COMMITMENT_TEMPLATE_IDS, COMMITMENT_CADENCE_MODES, COMMITMENT_CADENCE_TIME_PATTERN, COMMITMENT_CADENCE_MAX_TIMES, };
22
+ export { COMMITMENT_WATCHED_SOURCES, COMMITMENT_TEMPLATE_IDS, COMMITMENT_CADENCE_MODES, COMMITMENT_CADENCE_TIME_PATTERN, COMMITMENT_CADENCE_MAX_TIMES, COMMITMENT_STATUSES, COMMITMENT_KIND_VALUES, };
23
23
  export type { CommitmentCheck, CommitmentChecksResponse, Commitment, CommitmentActionProposal, CommitmentListResponse, CommitmentPlanResponse, CommitmentStatusResponse, CommitmentWorkLink, };
24
24
  /** Derived from the installed compatibility vocabulary so the CLI remains
25
25
  * safe even while data-provider and CLI packages roll out separately. */
26
26
  export declare const COMMITMENT_AUTHORABLE_CADENCE_MODES: ("manual" | "daily" | "interval" | "event_plus_interval")[];
27
- /**
28
- * oclif's `options:` needs runtime arrays, but data-provider models these two as
29
- * union TYPES only. The values live here — and both directions of drift are a
30
- * COMPILE error: `satisfies` rejects an invalid or extra value, and the
31
- * `_Exhaustive*` guards fail to resolve if a canonical value is missing.
32
- */
33
- export declare const COMMITMENT_STATUSES: readonly ["draft", "active", "paused", "completed", "cancelled", "archived"];
34
27
  /**
35
28
  * Autonomy ladder — how much the commitment may act without asking.
36
29
  *
@@ -66,6 +59,12 @@ export declare const MAX_COMMITMENT_INTERVAL_MS: number;
66
59
  */
67
60
  export type CommitmentView = Partial<Commitment>;
68
61
  export type CommitmentCheckView = Partial<CommitmentCheck>;
62
+ /** The `object:'list'` envelope every per-commitment read list now answers. */
63
+ export type CommitmentListPage = {
64
+ data: unknown[];
65
+ has_more?: boolean;
66
+ next_cursor?: string | null;
67
+ };
69
68
  export type CommitmentPreflightReport = {
70
69
  verdict: 'ready' | 'needs_review' | 'blocked';
71
70
  capabilities?: CommitmentCapabilitySource[];
@@ -204,6 +203,11 @@ export declare const commitmentApi: {
204
203
  * anything failing.
205
204
  */
206
205
  list: (query?: Parameters<typeof withQuery>[1]) => Promise<CommitmentListResponse>;
206
+ /**
207
+ * Fleet-level liveness sweep health (OSK-10958): when the reconciler last
208
+ * swept, how stale that is, and the tally it last persisted. Aggregate only.
209
+ */
210
+ livenessSweep: () => Promise<Record<string, unknown>>;
207
211
  manifest: (id: string) => Promise<Record<string, unknown>>;
208
212
  import: (body: Record<string, unknown>) => Promise<{
209
213
  commitment: {
@@ -249,10 +253,14 @@ export declare const commitmentApi: {
249
253
  }>;
250
254
  plan: (body: Record<string, unknown>) => Promise<CommitmentPlanResponse>;
251
255
  checkNow: (id: string) => Promise<Record<string, unknown>>;
252
- checks: (id: string, limit?: number) => Promise<CommitmentChecksResponse>;
253
- actionHistory: (id: string, limit?: number) => Promise<{
254
- data: unknown[];
255
- }>;
256
+ checks: (id: string, query?: {
257
+ limit?: number;
258
+ cursor?: string;
259
+ }) => Promise<CommitmentChecksResponse>;
260
+ actionHistory: (id: string, query?: {
261
+ limit?: number;
262
+ cursor?: string;
263
+ }) => Promise<CommitmentListPage>;
256
264
  actionProposals: (id: string, query?: {
257
265
  status?: string;
258
266
  limit?: number;
@@ -295,7 +303,11 @@ export declare const commitmentApi: {
295
303
  autonomy: (id: string, body: Record<string, unknown>) => Promise<Commitment>;
296
304
  mode: (id: string, body: Record<string, unknown>) => Promise<Commitment>;
297
305
  delivery: (id: string, body: Record<string, unknown>) => Promise<Commitment>;
298
- receipts: (id: string, limit?: number) => Promise<CommitmentExecutionReceiptListResponse>;
306
+ receipts: (id: string, query?: {
307
+ limit?: number;
308
+ checkId?: string;
309
+ runId?: string;
310
+ } | number) => Promise<CommitmentExecutionReceiptListResponse>;
299
311
  receiptQuarterlyMetrics: (id: string, year: number, quarter: number) => Promise<CommitmentExecutionReceiptQuarterlyMetricsResponse>;
300
312
  deliveryPatch: (id: string, taskId: string) => Promise<CommitmentDeliveryPatchResponse>;
301
313
  deliveryBundle: (id: string, taskId: string) => Promise<CommitmentDeliveryBundleResponse>;
@@ -306,9 +318,8 @@ export declare const commitmentApi: {
306
318
  cases: (id: string, query?: {
307
319
  limit?: number;
308
320
  status?: string;
309
- }) => Promise<{
310
- data: unknown[];
311
- }>;
321
+ cursor?: string;
322
+ }) => Promise<CommitmentListPage>;
312
323
  caseDetail: (id: string, caseId: string) => Promise<Record<string, unknown>>;
313
324
  remediationProposals: (id: string, query?: {
314
325
  caseId?: string;
@@ -329,19 +340,61 @@ export declare const commitmentApi: {
329
340
  * reference it stay resolvable. Refused for an active or system-managed
330
341
  * commitment — see CommitmentControl.deleteCommitment.
331
342
  */
332
- remove: (id: string, reason?: string) => Promise<Record<string, unknown>>;
343
+ remove: (id: string, reason?: string, opts?: {
344
+ stopOpenWork?: boolean;
345
+ }) => Promise<Record<string, unknown>>;
346
+ /** What a delete would leave behind. Read-only. */
347
+ deletionPreview: (id: string) => Promise<Record<string, unknown>>;
348
+ /** Un-delete. Returns the Commitment PAUSED, never active. */
349
+ restore: (id: string) => Promise<Commitment>;
333
350
  trace: (id: string, query?: {
334
351
  limit?: number;
335
352
  cursor?: string;
336
353
  }) => Promise<Record<string, unknown>>;
337
354
  ledger: (id: string, query?: Record<string, string | number | undefined>) => Promise<Record<string, unknown>>;
338
355
  wakeCapabilities: (id: string) => Promise<CommitmentWakeCapabilities>;
339
- dailyMetrics: (id: string, limit?: number) => Promise<{
340
- data: unknown[];
341
- }>;
356
+ dailyMetrics: (id: string, query?: {
357
+ limit?: number;
358
+ cursor?: string;
359
+ }) => Promise<CommitmentListPage>;
342
360
  cadenceDecisions: (id: string, limit?: number) => Promise<{
343
361
  data: unknown[];
344
362
  }>;
363
+ /**
364
+ * What the NEXT check would decide, computed without taking it.
365
+ *
366
+ * Every other read on this object is retrospective. This one stops at the
367
+ * DecisionEnvelope → Arbiter boundary — no Check row, no budget debit, no
368
+ * delivery gate, no contract write — so it is the only way to answer "what is
369
+ * this commitment about to do" before it does it. Worth its own command for
370
+ * the same reason `trigger-status` is: when a commitment is about to nudge
371
+ * somebody and nobody can say why, the posture and its policy trail are the
372
+ * answer, and re-running a real check to find out changes the thing you are
373
+ * trying to observe.
374
+ */
375
+ nextTick: (id: string) => Promise<CommitmentNextTickProjection>;
376
+ /**
377
+ * The accounting SHADOW readout behind allowance accounting.
378
+ *
379
+ * WORKSPACE-scoped despite hanging off one commitment's id: it aggregates
380
+ * every closed daily metric in the workspace, because the question it answers
381
+ * is "does this workspace have enough closed evidence to activate" rather than
382
+ * "what has this commitment spent". `cost` is the per-commitment question.
383
+ */
384
+ accountingReadout: (id: string) => Promise<CommitmentAccountingReadout>;
385
+ /**
386
+ * Closed-period spend for ONE commitment over a UTC day window.
387
+ *
388
+ * `costStatus` is the load-bearing field, not the dollar figure: `partial` and
389
+ * `unavailable` mean some runs carried no cost attribution at all, so the
390
+ * number understates the spend and a caller that printed it bare would be
391
+ * quietly wrong. The server refuses a window that is not on UTC day
392
+ * boundaries, so the caller builds one rather than passing a wall-clock time.
393
+ */
394
+ cost: (id: string, window: {
395
+ from: string;
396
+ to: string;
397
+ }) => Promise<CommitmentCostWindow>;
345
398
  /**
346
399
  * What this commitment's RUNS claim to have seen (agent-as-sensor).
347
400
  *
@@ -363,17 +416,15 @@ export declare const commitmentApi: {
363
416
  limit?: number;
364
417
  investigationKey?: string;
365
418
  status?: string;
366
- }) => Promise<{
367
- data: unknown[];
368
- }>;
419
+ cursor?: string;
420
+ }) => Promise<CommitmentListPage>;
369
421
  observations: (id: string, query?: {
370
422
  limit?: number;
371
423
  declaredOnly?: boolean;
372
424
  changedOnly?: boolean;
373
425
  since?: string;
374
- }) => Promise<{
375
- data: unknown[];
376
- }>;
426
+ cursor?: string;
427
+ }) => Promise<CommitmentListPage>;
377
428
  /** One-tap feedback on a check — the signal Reflection retunes cadence from. */
378
429
  checkFeedback: (id: string, checkId: string, body: Record<string, unknown>) => Promise<Record<string, unknown>>;
379
430
  /** Bounded, named corrections — never a free-form contract edit. */
@@ -383,6 +434,89 @@ export declare const commitmentApi: {
383
434
  linkGoal: (id: string, goalId: string) => Promise<Record<string, unknown>>;
384
435
  unlinkGoal: (id: string, goalId: string) => Promise<Record<string, unknown>>;
385
436
  };
437
+ /**
438
+ * Shape of `GET /:id/next-tick`.
439
+ *
440
+ * `envelope` is the full DecisionEnvelope — large, versioned, and only useful
441
+ * under `--json` — so it stays `unknown` here rather than being half-typed into
442
+ * something a renderer would be tempted to trust.
443
+ */
444
+ export interface CommitmentNextTickProjection {
445
+ object?: string;
446
+ commitmentId?: string;
447
+ projectedAt?: string;
448
+ envelope?: Record<string, unknown>;
449
+ /**
450
+ * OSK-11433 — the stored liveness verdict, carried alongside the projected
451
+ * envelope because the projection reads world-model delta, not run
452
+ * outcomes: a commitment whose dispatches are all refused still projects
453
+ * on_track, and without this field the two honest answers contradict
454
+ * silently across surfaces.
455
+ */
456
+ health?: string;
457
+ liveness?: {
458
+ observedAt?: string;
459
+ diagnosisKind?: string;
460
+ terminalDispositionCensus?: {
461
+ workFailures?: number;
462
+ budgetRefusals?: number;
463
+ terminal?: number;
464
+ };
465
+ };
466
+ decision?: {
467
+ posture?: string;
468
+ health?: string;
469
+ confidence?: number;
470
+ riskLevel?: string;
471
+ whyNow?: string;
472
+ actionPlan?: Array<{
473
+ kind?: string;
474
+ type?: string;
475
+ summary?: string;
476
+ title?: string;
477
+ }>;
478
+ policyTrace?: Array<{
479
+ rule?: string;
480
+ decision?: string;
481
+ reason?: string;
482
+ }>;
483
+ };
484
+ }
485
+ /** Shape of `GET /:id/accounting-readout`. */
486
+ export interface CommitmentAccountingReadout {
487
+ windowDays?: number;
488
+ evidenceDays?: number;
489
+ source?: string;
490
+ attempts?: number;
491
+ advancements?: number;
492
+ netAdvancements?: number;
493
+ allowanceAttemptDivergence?: number;
494
+ costUsdMicros?: number;
495
+ costRunCount?: number;
496
+ costReportedRunCount?: number;
497
+ costUnavailableRunCount?: number;
498
+ costStatus?: 'reported' | 'partial' | 'unavailable' | 'not_applicable';
499
+ recommendedAttemptMultiplier?: number | null;
500
+ multiplierDerivation?: string;
501
+ canActivate?: boolean;
502
+ activationBlocker?: string | null;
503
+ noneByReason?: Record<string, number>;
504
+ advancementsByKind?: Record<string, number>;
505
+ /** The mode the workspace ASKED for, which `canActivate` may still withhold. */
506
+ requestedMode?: string;
507
+ }
508
+ /** Shape of `GET /:id/cost`. */
509
+ export interface CommitmentCostWindow {
510
+ commitmentId?: string;
511
+ from?: string;
512
+ to?: string;
513
+ dayCount?: number;
514
+ costUsdMicros?: number;
515
+ runCount?: number;
516
+ reportedRunCount?: number;
517
+ unavailableRunCount?: number;
518
+ costStatus?: 'reported' | 'partial' | 'unavailable' | 'not_applicable';
519
+ }
386
520
  /** Shape of `GET /:id/wake-capabilities`. */
387
521
  export interface CommitmentWakeCapabilities {
388
522
  workPromotionModel?: 'monitor_prepare_execute_v1';
@@ -481,6 +615,14 @@ export type EvidenceHealthView = {
481
615
  * is noise in a summary someone reads to find what is wrong.
482
616
  */
483
617
  export declare function describeEvidenceHealth(health?: EvidenceHealthView | null, criteriaCount?: number): string | undefined;
618
+ /**
619
+ * `stalled` is a verdict, not a reason. Printed bare it reads like `unknown`
620
+ * with a harsher word, and the operator's next move is to go and read run
621
+ * history to find what the reconciler had already decided. Returns undefined
622
+ * for every other health value, including `unknown` — "nobody has judged" has
623
+ * no diagnosis to name.
624
+ */
625
+ export declare function describeStalledHealth(commitment: CommitmentView): string | undefined;
484
626
  /** Render an interval back as a compact human string. */
485
627
  export declare function describeIntervalMs(ms: number | undefined): string;
486
628
  /**
@@ -619,10 +761,41 @@ type ReadModelRecord = Record<string, unknown>;
619
761
  export declare function renderCommitmentLedger(ledger: ReadModelRecord, log: (line: string) => void): void;
620
762
  /** Human view for the ordered commitment trace. */
621
763
  export declare function renderCommitmentTrace(trace: ReadModelRecord, log: (line: string) => void): void;
622
- export declare function renderCommitmentObservations(response: ReadModelRecord, log: (line: string) => void): void;
764
+ /**
765
+ * Print the continuation hint for a paged `object:'list'` response — the line
766
+ * that makes history beyond the newest page reachable instead of invisible.
767
+ */
768
+ export declare function renderListPageHint(page: {
769
+ has_more?: boolean;
770
+ next_cursor?: string | null;
771
+ } | undefined, log: (line: string) => void): void;
772
+ export declare function renderCommitmentObservations(response: ReadModelRecord, log: (line: string) => void, options?: {
773
+ emptyMessage?: string;
774
+ }): void;
623
775
  /** Human view for causal hypotheses. */
624
- export declare function renderCommitmentHypotheses(response: ReadModelRecord, log: (line: string) => void): void;
776
+ export declare function renderCommitmentHypotheses(response: ReadModelRecord, log: (line: string) => void, options?: {
777
+ emptyMessage?: string;
778
+ }): void;
625
779
  /** Human view for the commitment → work lineage projection. */
626
780
  export declare function renderCommitmentLineage(lineage: ReadModelRecord, log: (line: string) => void): void;
627
781
  /** Human view for daily control-loop metrics. */
628
782
  export declare function renderCommitmentMetrics(response: ReadModelRecord, log: (line: string) => void): void;
783
+ /** Human view for the case list — one row per durable problem case. */
784
+ export declare function renderCommitmentCases(response: ReadModelRecord, log: (line: string) => void): void;
785
+ /**
786
+ * Human view for one case — a bounded digest, never the raw document.
787
+ *
788
+ * A case accumulates factRefs, hypothesisRefs, actionRefs, and receipts with
789
+ * no per-case bound, and the route projects the whole thing again as `trace`.
790
+ * Printing the payload verbatim produced a 93k-line dump for a single case
791
+ * (OSK-10952); the summary counts and the most recent entries answer "what is
792
+ * this case and what happened last" in one screen, and `--json` stays the
793
+ * opt-in for the full document.
794
+ */
795
+ export declare function renderCommitmentCaseDetail(response: ReadModelRecord, log: (line: string) => void, options?: {
796
+ maxEntries?: number;
797
+ }): void;
798
+ /** Human view for the remediation-proposal list. */
799
+ export declare function renderCommitmentRemediationProposals(response: ReadModelRecord, log: (line: string) => void): void;
800
+ /** Human view for one frozen remediation proposal. */
801
+ export declare function renderCommitmentRemediationProposal(response: ReadModelRecord, log: (line: string) => void): void;