@skrr-ai/cli 0.1.47 → 0.1.48

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 (274) 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/agents/chat.d.ts +21 -0
  5. package/dist/commands/agents/chat.js +26 -9
  6. package/dist/commands/balance/usage/breakdown.d.ts +14 -0
  7. package/dist/commands/balance/usage/breakdown.js +68 -0
  8. package/dist/commands/balance/usage.js +24 -0
  9. package/dist/commands/commerce/entitlements/explain.d.ts +22 -0
  10. package/dist/commands/commerce/entitlements/explain.js +40 -0
  11. package/dist/commands/commerce/incidents/audit.d.ts +20 -0
  12. package/dist/commands/commerce/incidents/audit.js +37 -0
  13. package/dist/commands/commerce/incidents/list.d.ts +22 -0
  14. package/dist/commands/commerce/incidents/list.js +49 -0
  15. package/dist/commands/commerce/incidents/resolve.d.ts +23 -0
  16. package/dist/commands/commerce/incidents/resolve.js +45 -0
  17. package/dist/commands/commerce/incidents/retry.d.ts +22 -0
  18. package/dist/commands/commerce/incidents/retry.js +45 -0
  19. package/dist/commands/commerce/incidents/show.d.ts +13 -0
  20. package/dist/commands/commerce/incidents/show.js +30 -0
  21. package/dist/commands/commerce/offers/approve.d.ts +17 -0
  22. package/dist/commands/commerce/offers/approve.js +33 -0
  23. package/dist/commands/commerce/offers/create.d.ts +18 -0
  24. package/dist/commands/commerce/offers/create.js +34 -0
  25. package/dist/commands/commerce/offers/publish.d.ts +13 -0
  26. package/dist/commands/commerce/offers/publish.js +28 -0
  27. package/dist/commands/commerce/offers/retire.d.ts +17 -0
  28. package/dist/commands/commerce/offers/retire.js +32 -0
  29. package/dist/commands/commerce/offers/validate.d.ts +18 -0
  30. package/dist/commands/commerce/offers/validate.js +33 -0
  31. package/dist/commands/commerce/products/create.d.ts +10 -0
  32. package/dist/commands/commerce/products/create.js +25 -0
  33. package/dist/commands/commerce/promotions/redeem.d.ts +13 -0
  34. package/dist/commands/commerce/promotions/redeem.js +32 -0
  35. package/dist/commands/commerce/terms/accept.d.ts +18 -0
  36. package/dist/commands/commerce/terms/accept.js +39 -0
  37. package/dist/commands/commerce/terms/show.d.ts +10 -0
  38. package/dist/commands/commerce/terms/show.js +34 -0
  39. package/dist/commands/commerce/trials/conversion-preview.d.ts +18 -0
  40. package/dist/commands/commerce/trials/conversion-preview.js +39 -0
  41. package/dist/commands/commerce/trials/start.d.ts +23 -0
  42. package/dist/commands/commerce/trials/start.js +58 -0
  43. package/dist/commands/commitments/accounting.d.ts +39 -0
  44. package/dist/commands/commitments/accounting.js +116 -0
  45. package/dist/commands/commitments/action-history.d.ts +1 -0
  46. package/dist/commands/commitments/action-history.js +8 -1
  47. package/dist/commands/commitments/case.d.ts +1 -0
  48. package/dist/commands/commitments/case.js +19 -3
  49. package/dist/commands/commitments/cases.d.ts +1 -0
  50. package/dist/commands/commitments/cases.js +11 -1
  51. package/dist/commands/commitments/checks.d.ts +1 -0
  52. package/dist/commands/commitments/checks.js +5 -1
  53. package/dist/commands/commitments/cost.d.ts +62 -0
  54. package/dist/commands/commitments/cost.js +130 -0
  55. package/dist/commands/commitments/create.js +1 -1
  56. package/dist/commands/commitments/delete.d.ts +1 -0
  57. package/dist/commands/commitments/delete.js +56 -6
  58. package/dist/commands/commitments/feedback.js +9 -1
  59. package/dist/commands/commitments/handover.js +16 -0
  60. package/dist/commands/commitments/hypotheses.d.ts +1 -0
  61. package/dist/commands/commitments/hypotheses.js +17 -2
  62. package/dist/commands/commitments/links/list.js +4 -1
  63. package/dist/commands/commitments/liveness.d.ts +18 -0
  64. package/dist/commands/commitments/liveness.js +80 -0
  65. package/dist/commands/commitments/metrics.d.ts +1 -0
  66. package/dist/commands/commitments/metrics.js +8 -1
  67. package/dist/commands/commitments/next-tick.d.ts +39 -0
  68. package/dist/commands/commitments/next-tick.js +122 -0
  69. package/dist/commands/commitments/observations.d.ts +1 -0
  70. package/dist/commands/commitments/observations.js +19 -2
  71. package/dist/commands/commitments/pause.js +12 -0
  72. package/dist/commands/commitments/receipt.d.ts +2 -0
  73. package/dist/commands/commitments/receipt.js +16 -2
  74. package/dist/commands/commitments/remediation-proposal.js +6 -2
  75. package/dist/commands/commitments/remediation-proposals.js +5 -1
  76. package/dist/commands/commitments/restore.d.ts +25 -0
  77. package/dist/commands/commitments/restore.js +46 -0
  78. package/dist/commands/commitments/show.js +32 -0
  79. package/dist/commands/commitments/trigger-status.js +33 -0
  80. package/dist/commands/commitments/update.d.ts +1 -0
  81. package/dist/commands/commitments/update.js +31 -5
  82. package/dist/commands/commitments/wake-capabilities.d.ts +0 -1
  83. package/dist/commands/commitments/wake-capabilities.js +8 -4
  84. package/dist/commands/enterprise/budgets/create.d.ts +11 -0
  85. package/dist/commands/enterprise/budgets/create.js +27 -0
  86. package/dist/commands/enterprise/budgets/evaluate.d.ts +17 -0
  87. package/dist/commands/enterprise/budgets/evaluate.js +32 -0
  88. package/dist/commands/enterprise/budgets/publish.d.ts +14 -0
  89. package/dist/commands/enterprise/budgets/publish.js +30 -0
  90. package/dist/commands/enterprise/contracts/activate.d.ts +14 -0
  91. package/dist/commands/enterprise/contracts/activate.js +30 -0
  92. package/dist/commands/enterprise/contracts/create.d.ts +14 -0
  93. package/dist/commands/enterprise/contracts/create.js +32 -0
  94. package/dist/commands/enterprise/contracts/issue.d.ts +18 -0
  95. package/dist/commands/enterprise/contracts/issue.js +34 -0
  96. package/dist/commands/enterprise/domains/begin.d.ts +20 -0
  97. package/dist/commands/enterprise/domains/begin.js +39 -0
  98. package/dist/commands/enterprise/domains/verify.d.ts +14 -0
  99. package/dist/commands/enterprise/domains/verify.js +32 -0
  100. package/dist/commands/enterprise/external-config/activate.d.ts +22 -0
  101. package/dist/commands/enterprise/external-config/activate.js +49 -0
  102. package/dist/commands/enterprise/external-config/set.d.ts +25 -0
  103. package/dist/commands/enterprise/external-config/set.js +123 -0
  104. package/dist/commands/enterprise/external-config/show.d.ts +12 -0
  105. package/dist/commands/enterprise/external-config/show.js +39 -0
  106. package/dist/commands/enterprise/external-config/suspend.d.ts +13 -0
  107. package/dist/commands/enterprise/external-config/suspend.js +41 -0
  108. package/dist/commands/enterprise/finance/close-snapshot.d.ts +11 -0
  109. package/dist/commands/enterprise/finance/close-snapshot.js +28 -0
  110. package/dist/commands/enterprise/finance/record-document.d.ts +18 -0
  111. package/dist/commands/enterprise/finance/record-document.js +35 -0
  112. package/dist/commands/enterprise/profile.d.ts +20 -0
  113. package/dist/commands/enterprise/profile.js +38 -0
  114. package/dist/commands/login.d.ts +13 -0
  115. package/dist/commands/login.js +77 -0
  116. package/dist/commands/machines/dedicated/index.js +3 -0
  117. package/dist/commands/machines/dedicated/service/apply.d.ts +23 -0
  118. package/dist/commands/machines/dedicated/service/apply.js +99 -0
  119. package/dist/commands/machines/dedicated/service/approve.d.ts +23 -0
  120. package/dist/commands/machines/dedicated/service/approve.js +52 -0
  121. package/dist/commands/machines/dedicated/service/create.d.ts +55 -0
  122. package/dist/commands/machines/dedicated/service/create.js +222 -0
  123. package/dist/commands/machines/dedicated/service/edit.d.ts +30 -0
  124. package/dist/commands/machines/dedicated/service/edit.js +146 -0
  125. package/dist/commands/machines/dedicated/service/exec.d.ts +26 -0
  126. package/dist/commands/machines/dedicated/service/exec.js +92 -0
  127. package/dist/commands/machines/dedicated/service/export.d.ts +29 -0
  128. package/dist/commands/machines/dedicated/service/export.js +106 -0
  129. package/dist/commands/machines/dedicated/service/index.d.ts +14 -0
  130. package/dist/commands/machines/dedicated/service/index.js +49 -0
  131. package/dist/commands/machines/dedicated/service/logs.d.ts +33 -0
  132. package/dist/commands/machines/dedicated/service/logs.js +148 -0
  133. package/dist/commands/machines/dedicated/service/ls.d.ts +20 -0
  134. package/dist/commands/machines/dedicated/service/ls.js +80 -0
  135. package/dist/commands/machines/dedicated/service/restart.d.ts +14 -0
  136. package/dist/commands/machines/dedicated/service/restart.js +29 -0
  137. package/dist/commands/machines/dedicated/service/rm.d.ts +20 -0
  138. package/dist/commands/machines/dedicated/service/rm.js +33 -0
  139. package/dist/commands/machines/dedicated/service/secret/index.d.ts +14 -0
  140. package/dist/commands/machines/dedicated/service/secret/index.js +25 -0
  141. package/dist/commands/machines/dedicated/service/secret/rm.d.ts +22 -0
  142. package/dist/commands/machines/dedicated/service/secret/rm.js +54 -0
  143. package/dist/commands/machines/dedicated/service/secret/set.d.ts +22 -0
  144. package/dist/commands/machines/dedicated/service/secret/set.js +93 -0
  145. package/dist/commands/machines/dedicated/service/start.d.ts +14 -0
  146. package/dist/commands/machines/dedicated/service/start.js +29 -0
  147. package/dist/commands/machines/dedicated/service/status.d.ts +21 -0
  148. package/dist/commands/machines/dedicated/service/status.js +85 -0
  149. package/dist/commands/machines/dedicated/service/stop.d.ts +20 -0
  150. package/dist/commands/machines/dedicated/service/stop.js +35 -0
  151. package/dist/commands/machines/dedicated/service/top.d.ts +22 -0
  152. package/dist/commands/machines/dedicated/service/top.js +120 -0
  153. package/dist/commands/machines/dedicated/sign-in-status.d.ts +22 -0
  154. package/dist/commands/machines/dedicated/sign-in-status.js +79 -0
  155. package/dist/commands/machines/dedicated/ssh-config.d.ts +28 -0
  156. package/dist/commands/machines/dedicated/ssh-config.js +66 -0
  157. package/dist/commands/machines/dedicated/ssh-proxy.d.ts +22 -0
  158. package/dist/commands/machines/dedicated/ssh-proxy.js +62 -0
  159. package/dist/commands/machines/dedicated/ssh.d.ts +29 -0
  160. package/dist/commands/machines/dedicated/ssh.js +121 -0
  161. package/dist/commands/native/allow-all.d.ts +14 -0
  162. package/dist/commands/native/allow-all.js +25 -0
  163. package/dist/commands/native/allow.d.ts +24 -0
  164. package/dist/commands/native/allow.js +45 -0
  165. package/dist/commands/native/deny.d.ts +24 -0
  166. package/dist/commands/native/deny.js +43 -0
  167. package/dist/commands/native/disable.d.ts +17 -0
  168. package/dist/commands/native/disable.js +28 -0
  169. package/dist/commands/native/enable.d.ts +12 -0
  170. package/dist/commands/native/enable.js +29 -0
  171. package/dist/commands/native/list-apps.d.ts +19 -0
  172. package/dist/commands/native/list-apps.js +30 -0
  173. package/dist/commands/native/restrict-to.d.ts +22 -0
  174. package/dist/commands/native/restrict-to.js +41 -0
  175. package/dist/commands/native/status.d.ts +19 -0
  176. package/dist/commands/native/status.js +33 -0
  177. package/dist/commands/native.d.ts +39 -0
  178. package/dist/commands/native.js +76 -0
  179. package/dist/commands/service/index.d.ts +14 -0
  180. package/dist/commands/service/index.js +31 -0
  181. package/dist/commands/service/logs.d.ts +18 -0
  182. package/dist/commands/service/logs.js +53 -0
  183. package/dist/commands/service/ls.d.ts +13 -0
  184. package/dist/commands/service/ls.js +48 -0
  185. package/dist/commands/service/propose.d.ts +34 -0
  186. package/dist/commands/service/propose.js +113 -0
  187. package/dist/commands/service/status.d.ts +17 -0
  188. package/dist/commands/service/status.js +56 -0
  189. package/dist/commands/spaces/auto-executor/runs.d.ts +13 -0
  190. package/dist/commands/spaces/auto-executor/runs.js +56 -0
  191. package/dist/commands/store/governance/artifacts.d.ts +25 -0
  192. package/dist/commands/store/governance/artifacts.js +55 -0
  193. package/dist/commands/store/governance/assign.d.ts +16 -0
  194. package/dist/commands/store/governance/assign.js +54 -0
  195. package/dist/commands/store/governance/create-license.d.ts +18 -0
  196. package/dist/commands/store/governance/create-license.js +35 -0
  197. package/dist/commands/store/governance/install-plan.d.ts +25 -0
  198. package/dist/commands/store/governance/install-plan.js +56 -0
  199. package/dist/commands/store/governance/license-policy.d.ts +30 -0
  200. package/dist/commands/store/governance/license-policy.js +69 -0
  201. package/dist/commands/store/governance/policy.d.ts +25 -0
  202. package/dist/commands/store/governance/policy.js +65 -0
  203. package/dist/commands/store/governance/publish-release.d.ts +17 -0
  204. package/dist/commands/store/governance/publish-release.js +34 -0
  205. package/dist/commands/tasks/deliverable/add.d.ts +15 -0
  206. package/dist/commands/tasks/deliverable/add.js +174 -0
  207. package/dist/commands/tasks/deliverable/archive.d.ts +35 -0
  208. package/dist/commands/tasks/deliverable/archive.js +205 -0
  209. package/dist/commands/tasks/labels/detach.js +3 -0
  210. package/dist/commands/tasks/labels/suggest.d.ts +24 -0
  211. package/dist/commands/tasks/labels/suggest.js +69 -0
  212. package/dist/commands/tasks/list.d.ts +16 -2
  213. package/dist/commands/tasks/list.js +100 -24
  214. package/dist/commands/tasks/show.d.ts +23 -0
  215. package/dist/commands/tasks/show.js +51 -1
  216. package/dist/commands/wiki/rm.d.ts +22 -1
  217. package/dist/commands/wiki/rm.js +52 -3
  218. package/dist/lib/agentic-stream.js +10 -2
  219. package/dist/lib/balance.d.ts +6 -1
  220. package/dist/lib/balance.js +15 -0
  221. package/dist/lib/commerce-command.d.ts +48 -0
  222. package/dist/lib/commerce-command.js +70 -0
  223. package/dist/lib/commerce.d.ts +93 -0
  224. package/dist/lib/commerce.js +129 -0
  225. package/dist/lib/commitment-product.js +1 -1
  226. package/dist/lib/commitments.d.ts +202 -29
  227. package/dist/lib/commitments.js +300 -33
  228. package/dist/lib/dedicated-lease-command.js +10 -0
  229. package/dist/lib/dedicated-machines.d.ts +37 -0
  230. package/dist/lib/dedicated-machines.js +47 -0
  231. package/dist/lib/dedicated-service-command.d.ts +60 -0
  232. package/dist/lib/dedicated-service-command.js +182 -0
  233. package/dist/lib/dedicated-service.d.ts +342 -0
  234. package/dist/lib/dedicated-service.js +741 -0
  235. package/dist/lib/dedicated-ssh.d.ts +136 -0
  236. package/dist/lib/dedicated-ssh.js +387 -0
  237. package/dist/lib/delegated-cli.js +51 -13
  238. package/dist/lib/enterprise-commerce.d.ts +67 -0
  239. package/dist/lib/enterprise-commerce.js +112 -0
  240. package/dist/lib/enterprise-external-configuration.d.ts +60 -0
  241. package/dist/lib/enterprise-external-configuration.js +58 -0
  242. package/dist/lib/first-party-harness.js +17 -3
  243. package/dist/lib/governed-store.d.ts +110 -0
  244. package/dist/lib/governed-store.js +79 -0
  245. package/dist/lib/guest-service-command.d.ts +16 -0
  246. package/dist/lib/guest-service-command.js +32 -0
  247. package/dist/lib/guest-service.d.ts +67 -0
  248. package/dist/lib/guest-service.js +112 -0
  249. package/dist/lib/prompt.d.ts +1 -0
  250. package/dist/lib/prompt.js +1 -0
  251. package/dist/lib/task-asset-upload.d.ts +20 -0
  252. package/dist/lib/task-asset-upload.js +30 -8
  253. package/dist/lib/task-extras.d.ts +23 -0
  254. package/dist/lib/task-extras.js +6 -0
  255. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonScopes.d.ts +9 -3
  256. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonScopes.js +10 -3
  257. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.d.ts +1 -1
  258. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.js +6 -5
  259. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/messages.d.ts +16 -0
  260. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/messages.js +21 -4
  261. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/spawnEnv.d.ts +1 -1
  262. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/spawnEnv.js +24 -2
  263. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonScopes.d.ts +9 -3
  264. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonScopes.js +10 -3
  265. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.d.ts +1 -1
  266. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.js +1 -1
  267. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/messages.d.ts +16 -0
  268. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/messages.js +20 -4
  269. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/spawnEnv.d.ts +1 -1
  270. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/spawnEnv.js +24 -2
  271. package/dist/node_modules/@skrr-ai/auth-core/package.json +1 -1
  272. package/dist/node_modules/@skrr-ai/data-provider/index.js +5060 -4827
  273. package/oclif.manifest.json +37416 -31416
  274. package/package.json +43 -1
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The shape every commerce and governed-store write shares.
3
+ *
4
+ * These endpoints validate rich bodies with their own zod schemas, and the CLI
5
+ * deliberately does not restate those shapes as flags. Two reasons, and the
6
+ * second is the one that bites:
7
+ *
8
+ * 1. A vocabulary declared twice drifts. The server owns what a contract, an
9
+ * offer version or a budget policy looks like; a flag table here would be a
10
+ * second declaration that silently falls behind the API that rejects it.
11
+ * 2. These are financial writes. A flag table invites a half-specified body
12
+ * assembled from defaults; a file you wrote and can diff is a document you
13
+ * reviewed. `-` reads stdin, so a pipeline still works.
14
+ *
15
+ * What the CLI DOES own is refusing to send nothing: a mutation whose body is
16
+ * required will not be fired with `{}` just because a path was omitted.
17
+ */
18
+ export declare const jsonBodyFlags: {
19
+ file: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
20
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
21
+ };
22
+ export interface JsonBodyOwner {
23
+ error(message: string, options?: {
24
+ exit?: number;
25
+ }): never | void;
26
+ }
27
+ /**
28
+ * Read `--file`, refusing an empty body when the endpoint requires one.
29
+ *
30
+ * `required: false` is for the verbs whose body is genuinely optional — an
31
+ * offer `publish` carries nothing but its id — where `{}` is the honest
32
+ * request rather than a missing argument.
33
+ */
34
+ export declare function jsonBodyFrom(command: JsonBodyOwner, file: string | undefined, { required }?: {
35
+ required?: boolean;
36
+ }): Promise<Record<string, unknown>>;
37
+ /**
38
+ * Print a result.
39
+ *
40
+ * Deliberately JSON-by-default for these surfaces rather than a summary line.
41
+ * A contract, a budget evaluation or an entitlement explanation is a DOCUMENT
42
+ * whose fields an operator is about to reason about; summarising it would be
43
+ * choosing for them which parts of a financial record matter, and every field
44
+ * this CLI hides is one they would have to open a browser to see.
45
+ */
46
+ export declare function printResult(command: {
47
+ log(message: string): void;
48
+ }, result: unknown, humanSummary?: string[]): void;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonBodyFlags = void 0;
4
+ exports.jsonBodyFrom = jsonBodyFrom;
5
+ exports.printResult = printResult;
6
+ const core_1 = require("@oclif/core");
7
+ const prompt_1 = require("./prompt");
8
+ /**
9
+ * The shape every commerce and governed-store write shares.
10
+ *
11
+ * These endpoints validate rich bodies with their own zod schemas, and the CLI
12
+ * deliberately does not restate those shapes as flags. Two reasons, and the
13
+ * second is the one that bites:
14
+ *
15
+ * 1. A vocabulary declared twice drifts. The server owns what a contract, an
16
+ * offer version or a budget policy looks like; a flag table here would be a
17
+ * second declaration that silently falls behind the API that rejects it.
18
+ * 2. These are financial writes. A flag table invites a half-specified body
19
+ * assembled from defaults; a file you wrote and can diff is a document you
20
+ * reviewed. `-` reads stdin, so a pipeline still works.
21
+ *
22
+ * What the CLI DOES own is refusing to send nothing: a mutation whose body is
23
+ * required will not be fired with `{}` just because a path was omitted.
24
+ */
25
+ exports.jsonBodyFlags = {
26
+ file: core_1.Flags.string({
27
+ description: 'Path to the JSON body, or - to read stdin',
28
+ }),
29
+ json: core_1.Flags.boolean({ description: 'Output as JSON' }),
30
+ };
31
+ /**
32
+ * Read `--file`, refusing an empty body when the endpoint requires one.
33
+ *
34
+ * `required: false` is for the verbs whose body is genuinely optional — an
35
+ * offer `publish` carries nothing but its id — where `{}` is the honest
36
+ * request rather than a missing argument.
37
+ */
38
+ async function jsonBodyFrom(command, file, { required = true } = {}) {
39
+ if (!file) {
40
+ if (!required)
41
+ return {};
42
+ command.error('This write needs a body: pass --file <path> (or --file - to read stdin). The body is ' +
43
+ 'validated by the server, which owns its shape — see the command help for what it expects.', { exit: 2 });
44
+ return {};
45
+ }
46
+ try {
47
+ return await (0, prompt_1.readJsonBody)(file);
48
+ }
49
+ catch (error) {
50
+ command.error(error instanceof Error ? error.message : String(error), { exit: 1 });
51
+ return {};
52
+ }
53
+ }
54
+ /**
55
+ * Print a result.
56
+ *
57
+ * Deliberately JSON-by-default for these surfaces rather than a summary line.
58
+ * A contract, a budget evaluation or an entitlement explanation is a DOCUMENT
59
+ * whose fields an operator is about to reason about; summarising it would be
60
+ * choosing for them which parts of a financial record matter, and every field
61
+ * this CLI hides is one they would have to open a browser to see.
62
+ */
63
+ function printResult(command, result, humanSummary) {
64
+ if (humanSummary?.length) {
65
+ for (const line of humanSummary)
66
+ command.log(line);
67
+ return;
68
+ }
69
+ command.log(JSON.stringify(result, null, 2));
70
+ }
@@ -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)}`);