@skrr-ai/cli 0.1.119 → 0.1.120

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 (276) hide show
  1. package/dist/base-command.d.ts +31 -0
  2. package/dist/base-command.js +106 -4
  3. package/dist/commands/commands.js +11 -0
  4. package/dist/commands/commitments/action-proposal.d.ts +13 -0
  5. package/dist/commands/commitments/action-proposal.js +39 -0
  6. package/dist/commands/commitments/action-proposals/decide.js +8 -1
  7. package/dist/commands/commitments/action-proposals/execute.js +11 -1
  8. package/dist/commands/commitments/create.js +2 -2
  9. package/dist/commands/commitments/doctor.d.ts +8 -0
  10. package/dist/commands/commitments/doctor.js +22 -0
  11. package/dist/commands/commitments/execute-remediation.js +12 -1
  12. package/dist/commands/commitments/observations.js +2 -2
  13. package/dist/commands/commitments/pack/bind.d.ts +18 -1
  14. package/dist/commands/commitments/pack/bind.js +66 -8
  15. package/dist/commands/commitments/pack/plan.d.ts +4 -1
  16. package/dist/commands/commitments/pack/plan.js +30 -2
  17. package/dist/commands/commitments/update.js +8 -2
  18. package/dist/commands/completion/index.js +1 -1
  19. package/dist/commands/completion/values.js +1 -1
  20. package/dist/commands/computer-use/audio.d.ts +1 -0
  21. package/dist/commands/computer-use/audio.js +1 -0
  22. package/dist/commands/computer-use/browser.d.ts +1 -0
  23. package/dist/commands/computer-use/browser.js +1 -0
  24. package/dist/commands/computer-use/disable.d.ts +1 -0
  25. package/dist/commands/computer-use/disable.js +1 -0
  26. package/dist/commands/computer-use/enable.d.ts +1 -0
  27. package/dist/commands/computer-use/enable.js +1 -0
  28. package/dist/commands/computer-use/index.d.ts +1 -0
  29. package/dist/commands/computer-use/index.js +1 -0
  30. package/dist/commands/computer-use/install.d.ts +1 -0
  31. package/dist/commands/computer-use/install.js +1 -0
  32. package/dist/commands/computer-use/recover.d.ts +1 -0
  33. package/dist/commands/computer-use/recover.js +1 -0
  34. package/dist/commands/computer-use/status.d.ts +1 -0
  35. package/dist/commands/computer-use/status.js +1 -0
  36. package/dist/commands/computer-use/stop.d.ts +1 -0
  37. package/dist/commands/computer-use/stop.js +1 -0
  38. package/dist/commands/context.js +16 -11
  39. package/dist/commands/convos/recovery.js +1 -1
  40. package/dist/commands/daemon/diagnostics.d.ts +9 -0
  41. package/dist/commands/daemon/diagnostics.js +53 -0
  42. package/dist/commands/daemon/index.js +2 -0
  43. package/dist/commands/daemon/maintenance/attest.d.ts +15 -0
  44. package/dist/commands/daemon/maintenance/attest.js +52 -0
  45. package/dist/commands/daemon/maintenance/hold.d.ts +17 -0
  46. package/dist/commands/daemon/maintenance/hold.js +70 -0
  47. package/dist/commands/daemon/maintenance/index.d.ts +12 -0
  48. package/dist/commands/daemon/maintenance/index.js +30 -0
  49. package/dist/commands/daemon/maintenance/resume.d.ts +13 -0
  50. package/dist/commands/daemon/maintenance/resume.js +36 -0
  51. package/dist/commands/daemon/maintenance/status.d.ts +13 -0
  52. package/dist/commands/daemon/maintenance/status.js +36 -0
  53. package/dist/commands/doctor.d.ts +4 -1
  54. package/dist/commands/doctor.js +50 -6
  55. package/dist/commands/followups/plans/cancel-batch.js +6 -3
  56. package/dist/commands/followups/plans/capacity.js +7 -3
  57. package/dist/commands/followups/plans/observability.js +11 -3
  58. package/dist/commands/followups/plans/preferences/set.js +26 -8
  59. package/dist/commands/followups/plans/preferences.js +1 -1
  60. package/dist/commands/followups/plans/show.js +1 -1
  61. package/dist/commands/goals/key-results/assess.d.ts +36 -0
  62. package/dist/commands/goals/key-results/assess.js +110 -0
  63. package/dist/commands/goals/key-results/history.d.ts +30 -0
  64. package/dist/commands/goals/key-results/history.js +104 -0
  65. package/dist/commands/goals/key-results/list.d.ts +5 -4
  66. package/dist/commands/goals/key-results/list.js +12 -6
  67. package/dist/commands/goals/key-results/show.d.ts +4 -2
  68. package/dist/commands/goals/key-results/show.js +25 -4
  69. package/dist/commands/goals/key-results/update.d.ts +4 -0
  70. package/dist/commands/goals/key-results/update.js +18 -24
  71. package/dist/commands/goals/plan-now.js +12 -1
  72. package/dist/commands/goals/planner-compare.d.ts +30 -0
  73. package/dist/commands/goals/planner-compare.js +136 -0
  74. package/dist/commands/machines/dedicated/service/exec.d.ts +3 -0
  75. package/dist/commands/machines/dedicated/service/exec.js +70 -11
  76. package/dist/commands/machines/hosted/destroy.d.ts +1 -0
  77. package/dist/commands/machines/hosted/destroy.js +11 -1
  78. package/dist/commands/machines/hosted/exec.d.ts +1 -0
  79. package/dist/commands/machines/hosted/exec.js +12 -1
  80. package/dist/commands/machines/hosted/index.js +1 -0
  81. package/dist/commands/machines/hosted/operation.d.ts +14 -0
  82. package/dist/commands/machines/hosted/operation.js +51 -0
  83. package/dist/commands/machines/hosted/pull.js +1 -1
  84. package/dist/commands/machines/hosted/start.js +6 -2
  85. package/dist/commands/spaces/auto-executor/compare.d.ts +18 -0
  86. package/dist/commands/spaces/auto-executor/compare.js +139 -0
  87. package/dist/commands/spaces/auto-executor/runs.d.ts +3 -0
  88. package/dist/commands/spaces/auto-executor/runs.js +13 -1
  89. package/dist/commands/spaces/charter/create-from-description.d.ts +21 -0
  90. package/dist/commands/spaces/charter/create-from-description.js +77 -0
  91. package/dist/commands/spaces/charter/show.d.ts +22 -0
  92. package/dist/commands/spaces/charter/show.js +61 -0
  93. package/dist/commands/spaces/heartbeats/list.d.ts +1 -16
  94. package/dist/commands/spaces/heartbeats/list.js +13 -0
  95. package/dist/commands/spaces/install-template.js +3 -0
  96. package/dist/commands/spaces/loops/migrate.d.ts +32 -0
  97. package/dist/commands/spaces/loops/migrate.js +103 -0
  98. package/dist/commands/spaces/loops/release.d.ts +14 -0
  99. package/dist/commands/spaces/loops/release.js +59 -0
  100. package/dist/commands/spaces/notebook.d.ts +25 -0
  101. package/dist/commands/spaces/notebook.js +75 -0
  102. package/dist/commands/spaces/proposals/discard.d.ts +17 -0
  103. package/dist/commands/spaces/proposals/discard.js +17 -0
  104. package/dist/commands/spaces/proposals/keep.d.ts +17 -0
  105. package/dist/commands/spaces/proposals/keep.js +17 -0
  106. package/dist/commands/spaces/proposals/list.d.ts +24 -0
  107. package/dist/commands/spaces/proposals/list.js +89 -0
  108. package/dist/commands/spaces/skills/propose.d.ts +29 -0
  109. package/dist/commands/spaces/skills/propose.js +82 -0
  110. package/dist/commands/spaces/templates/fork.js +3 -0
  111. package/dist/commands/spaces/triggers/show.js +6 -0
  112. package/dist/commands/spaces/workflows/retry.d.ts +1 -0
  113. package/dist/commands/spaces/workflows/retry.js +8 -1
  114. package/dist/commands/spaces/workflows/triggers/create.js +3 -2
  115. package/dist/commands/spaces/workflows/triggers/fire.js +4 -0
  116. package/dist/commands/spaces/workflows/triggers/update.js +2 -1
  117. package/dist/commands/spaces/write-policy/set.d.ts +22 -0
  118. package/dist/commands/spaces/write-policy/set.js +82 -0
  119. package/dist/commands/spaces/write-policy/show.d.ts +19 -0
  120. package/dist/commands/spaces/write-policy/show.js +49 -0
  121. package/dist/commands/store/artifacts/receipt.d.ts +14 -0
  122. package/dist/commands/store/artifacts/receipt.js +34 -0
  123. package/dist/commands/store/artifacts/release.d.ts +2 -0
  124. package/dist/commands/store/artifacts/release.js +11 -0
  125. package/dist/commands/store/governance/publish-release.d.ts +2 -0
  126. package/dist/commands/store/governance/publish-release.js +30 -1
  127. package/dist/commands/store/governance/release-receipt.d.ts +12 -0
  128. package/dist/commands/store/governance/release-receipt.js +32 -0
  129. package/dist/commands/tasks/approvals/list.d.ts +11 -5
  130. package/dist/commands/tasks/approvals/list.js +13 -6
  131. package/dist/commands/tasks/attachments/facts.d.ts +12 -0
  132. package/dist/commands/tasks/attachments/facts.js +29 -0
  133. package/dist/commands/tasks/attachments/upload.d.ts +1 -0
  134. package/dist/commands/tasks/attachments/upload.js +16 -0
  135. package/dist/commands/tasks/bulk-update.js +35 -1
  136. package/dist/commands/tasks/context.d.ts +15 -0
  137. package/dist/commands/tasks/context.js +69 -0
  138. package/dist/commands/tasks/copy.d.ts +18 -0
  139. package/dist/commands/tasks/copy.js +85 -0
  140. package/dist/commands/tasks/create-tree.js +97 -23
  141. package/dist/commands/tasks/create.js +9 -1
  142. package/dist/commands/tasks/deliverable/add.js +20 -10
  143. package/dist/commands/tasks/move.js +8 -1
  144. package/dist/commands/tasks/operations/show.d.ts +16 -0
  145. package/dist/commands/tasks/operations/show.js +98 -0
  146. package/dist/commands/tasks/operations/wait.d.ts +22 -0
  147. package/dist/commands/tasks/operations/wait.js +114 -0
  148. package/dist/commands/tasks/preflight.d.ts +1 -0
  149. package/dist/commands/tasks/preflight.js +11 -1
  150. package/dist/commands/tasks/rearm-recurrence.js +4 -0
  151. package/dist/commands/tasks/result/show.js +22 -0
  152. package/dist/commands/tasks/result/submit.d.ts +1 -0
  153. package/dist/commands/tasks/result/submit.js +3 -0
  154. package/dist/commands/tasks/retry-receipt.d.ts +15 -0
  155. package/dist/commands/tasks/retry-receipt.js +89 -0
  156. package/dist/commands/tasks/retry-review.d.ts +16 -0
  157. package/dist/commands/tasks/retry-review.js +66 -0
  158. package/dist/commands/tasks/retry.d.ts +4 -8
  159. package/dist/commands/tasks/retry.js +34 -68
  160. package/dist/commands/tasks/runs.d.ts +21 -0
  161. package/dist/commands/tasks/runs.js +95 -0
  162. package/dist/commands/tasks/show.d.ts +2 -0
  163. package/dist/commands/tasks/show.js +15 -1
  164. package/dist/commands/tasks/start-receipt.d.ts +15 -0
  165. package/dist/commands/tasks/start-receipt.js +95 -0
  166. package/dist/commands/tasks/start.d.ts +4 -0
  167. package/dist/commands/tasks/start.js +49 -3
  168. package/dist/commands/tasks/update.js +3 -0
  169. package/dist/commands/tasks/upsert.js +17 -3
  170. package/dist/commands/tasks/watch.d.ts +3 -0
  171. package/dist/commands/tasks/watch.js +85 -20
  172. package/dist/commands/wiki/history.d.ts +33 -0
  173. package/dist/commands/wiki/history.js +134 -0
  174. package/dist/commands/wiki/ls.d.ts +2 -0
  175. package/dist/commands/wiki/ls.js +8 -0
  176. package/dist/commands/wiki/update.d.ts +3 -1
  177. package/dist/commands/wiki/update.js +24 -2
  178. package/dist/commands/wiki/write.d.ts +22 -0
  179. package/dist/commands/wiki/write.js +144 -6
  180. package/dist/generated/agent-guides.json +81 -81
  181. package/dist/generated/managed-instruction-guides.json +1 -1
  182. package/dist/lib/agent-guides.d.ts +9 -0
  183. package/dist/lib/agent-guides.js +23 -1
  184. package/dist/lib/agentic-stream.d.ts +5 -0
  185. package/dist/lib/agentic-stream.js +122 -3
  186. package/dist/lib/auth-diagnostics.d.ts +39 -0
  187. package/dist/lib/auth-diagnostics.js +71 -0
  188. package/dist/lib/cli-client-identity.d.ts +6 -0
  189. package/dist/lib/cli-client-identity.js +16 -0
  190. package/dist/lib/cli-installation-diagnostics.d.ts +52 -0
  191. package/dist/lib/cli-installation-diagnostics.js +254 -0
  192. package/dist/lib/command-hygiene.d.ts +45 -0
  193. package/dist/lib/command-hygiene.js +413 -0
  194. package/dist/lib/commitments.d.ts +64 -3
  195. package/dist/lib/commitments.js +34 -6
  196. package/dist/lib/completion-index.d.ts +16 -4
  197. package/dist/lib/completion-index.js +50 -14
  198. package/dist/lib/config.js +7 -1
  199. package/dist/lib/daemon-maintenance-command.d.ts +22 -0
  200. package/dist/lib/daemon-maintenance-command.js +39 -0
  201. package/dist/lib/daemon-maintenance.d.ts +275 -0
  202. package/dist/lib/daemon-maintenance.js +1035 -0
  203. package/dist/lib/dedicated-service.d.ts +3 -2
  204. package/dist/lib/dedicated-service.js +11 -3
  205. package/dist/lib/governed-store.d.ts +8 -0
  206. package/dist/lib/governed-store.js +5 -0
  207. package/dist/lib/hosted-machines.d.ts +33 -2
  208. package/dist/lib/hosted-machines.js +19 -1
  209. package/dist/lib/json-output.d.ts +1 -1
  210. package/dist/lib/machines.d.ts +9 -1
  211. package/dist/lib/machines.js +15 -1
  212. package/dist/lib/node-adapter.js +13 -0
  213. package/dist/lib/record-output.d.ts +22 -0
  214. package/dist/lib/record-output.js +78 -0
  215. package/dist/lib/roles.d.ts +3 -3
  216. package/dist/lib/scoped-memory-command.d.ts +18 -0
  217. package/dist/lib/scoped-memory-command.js +53 -2
  218. package/dist/lib/space-charter.d.ts +49 -0
  219. package/dist/lib/space-charter.js +78 -0
  220. package/dist/lib/space-loop-migration.d.ts +18 -0
  221. package/dist/lib/space-loop-migration.js +128 -0
  222. package/dist/lib/space-notebook.d.ts +22 -0
  223. package/dist/lib/space-notebook.js +140 -0
  224. package/dist/lib/space-proposal-decision-command.d.ts +36 -0
  225. package/dist/lib/space-proposal-decision-command.js +108 -0
  226. package/dist/lib/space-proposals.d.ts +44 -0
  227. package/dist/lib/space-proposals.js +186 -0
  228. package/dist/lib/space-templates.d.ts +8 -0
  229. package/dist/lib/space-templates.js +17 -0
  230. package/dist/lib/space-write-policy.d.ts +24 -0
  231. package/dist/lib/space-write-policy.js +103 -0
  232. package/dist/lib/task-agent-context-capabilities.d.ts +10 -0
  233. package/dist/lib/task-agent-context-capabilities.js +22 -0
  234. package/dist/lib/task-agent-context-compatibility.d.ts +9 -0
  235. package/dist/lib/task-agent-context-compatibility.js +30 -0
  236. package/dist/lib/task-asset-upload.d.ts +22 -0
  237. package/dist/lib/task-asset-upload.js +257 -29
  238. package/dist/lib/task-batch.d.ts +15 -1
  239. package/dist/lib/task-batch.js +35 -2
  240. package/dist/lib/task-operation-watch.d.ts +66 -0
  241. package/dist/lib/task-operation-watch.js +159 -0
  242. package/dist/lib/task-resolver.d.ts +1 -1
  243. package/dist/lib/task-resolver.js +4 -3
  244. package/dist/lib/task-work.d.ts +1 -1
  245. package/dist/lib/task-work.js +35 -1
  246. package/dist/lib/task-write-attribution.d.ts +14 -0
  247. package/dist/lib/task-write-attribution.js +35 -2
  248. package/dist/lib/triggers.d.ts +11 -0
  249. package/dist/lib/triggers.js +7 -0
  250. package/dist/lib/wiki-update.d.ts +1 -0
  251. package/dist/lib/wiki-update.js +10 -1
  252. package/dist/lib/wiki.js +4 -1
  253. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/computerWire.d.ts +9 -1
  254. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/computerWire.js +31 -15
  255. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonToolApproval.js +1 -0
  256. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonWire.js +13 -7
  257. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/guidedUpdate.d.ts +370 -0
  258. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/guidedUpdate.js +315 -0
  259. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/maintenanceReportWire.d.ts +178 -0
  260. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/maintenanceReportWire.js +262 -0
  261. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/toolApprovalSignature.d.ts +51 -0
  262. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/toolApprovalSignature.js +106 -0
  263. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/computerWire.d.ts +9 -1
  264. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/computerWire.js +32 -5
  265. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonToolApproval.js +1 -0
  266. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonWire.js +33 -14
  267. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/guidedUpdate.d.ts +370 -0
  268. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/guidedUpdate.js +404 -0
  269. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/maintenanceReportWire.d.ts +178 -0
  270. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/maintenanceReportWire.js +342 -0
  271. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/toolApprovalSignature.d.ts +51 -0
  272. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/toolApprovalSignature.js +138 -0
  273. package/dist/node_modules/@skrr-ai/auth-core/package.json +20 -0
  274. package/dist/node_modules/@skrr-ai/data-provider/index.js +27085 -20250
  275. package/oclif.manifest.json +10566 -7247
  276. package/package.json +20 -2
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ /** Read-only recovery for one caller-owned task-start request. */
3
+ export default class TasksStartReceipt extends BaseCommand {
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ task: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'request-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const data_provider_1 = require("@skrr-ai/data-provider");
5
+ const base_command_1 = require("../../base-command");
6
+ const task_resolver_1 = require("../../lib/task-resolver");
7
+ /** Read-only recovery for one caller-owned task-start request. */
8
+ class TasksStartReceipt extends base_command_1.BaseCommand {
9
+ static description = 'Read the durable receipt for one task-start request without starting another run.';
10
+ static examples = [
11
+ '<%= config.bin %> tasks start-receipt <task-id> --request-id task-start:deploy-42',
12
+ '<%= config.bin %> tasks start-receipt <task-id> --request-id task-start:deploy-42 --json',
13
+ ];
14
+ static args = {
15
+ id: core_1.Args.string({
16
+ description: 'Task ID; defaults to OVERSKY_SESSION_TASK_ID in task runtimes',
17
+ required: false,
18
+ ignoreStdin: true,
19
+ }),
20
+ };
21
+ static flags = {
22
+ task: core_1.Flags.string({ description: 'Task ID; overrides daemon runtime context' }),
23
+ 'request-id': core_1.Flags.string({
24
+ description: 'The request id printed by tasks start',
25
+ required: true,
26
+ }),
27
+ json: core_1.Flags.boolean({ description: 'Output as JSON' }),
28
+ };
29
+ async run() {
30
+ this.requireAuth();
31
+ const { args, flags } = await this.parse(TasksStartReceipt);
32
+ let taskIdentity;
33
+ try {
34
+ taskIdentity = (0, task_resolver_1.resolveTaskIdentity)({ positionalId: args.id, flagTask: flags.task });
35
+ }
36
+ catch (err) {
37
+ const failure = (0, task_resolver_1.taskResolutionFailure)(err);
38
+ this.failWithCliError({
39
+ message: failure.message,
40
+ code: failure.code,
41
+ exit: 2,
42
+ retryable: false,
43
+ details: { suggestion: failure.suggestion, context: failure.details },
44
+ });
45
+ }
46
+ // `resolveTaskIdentity` decides which INPUT wins; it does no lookup. This
47
+ // turns whatever it picked into something the API can resolve — a UUID and
48
+ // an OSK-2423 ref pass through untouched, a title is searched.
49
+ const taskId = await this.resolveTaskReference(taskIdentity.id);
50
+ // The CLI may compile against a published data-provider declaration that
51
+ // predates this additive reader; use the runtime surface just as `start`
52
+ // does for its newer options.
53
+ const getTaskStartReceipt = data_provider_1.dataService
54
+ .getTaskStartReceipt;
55
+ let receipt;
56
+ try {
57
+ receipt = await getTaskStartReceipt(taskId, flags['request-id']);
58
+ }
59
+ catch (err) {
60
+ this.handleApiError(err, { subject: `Task ${taskId} start receipt` });
61
+ }
62
+ if (flags.json) {
63
+ this.printJsonResult(receipt);
64
+ return;
65
+ }
66
+ if (receipt.state === 'accepted') {
67
+ this.log(`Start request ${receipt.requestId} has an accepted server response.`);
68
+ if (receipt.responseStatus !== undefined)
69
+ this.log(`Response status: ${receipt.responseStatus}`);
70
+ if (receipt.run?.runId)
71
+ this.log(`Run: ${receipt.run.runId}`);
72
+ if (receipt.run?.autonomousRunId)
73
+ this.log(`Autonomous Run: ${receipt.run.autonomousRunId}`);
74
+ if (receipt.run?.conversationId)
75
+ this.log(`Conversation: ${receipt.run.conversationId}`);
76
+ if (receipt.run?.sessionId)
77
+ this.log(`Session: ${receipt.run.sessionId}`);
78
+ if (receipt.run?.responseMessageId) {
79
+ this.log(`Response message: ${receipt.run.responseMessageId}`);
80
+ }
81
+ if (receipt.code)
82
+ this.log(`Response code: ${receipt.code}`);
83
+ this.log('This receipt does not prove target acquisition, harness activity, or a terminal Task outcome.');
84
+ return;
85
+ }
86
+ if (receipt.state === 'pending') {
87
+ this.log(`Start request ${receipt.requestId} is pending; its outcome is not recorded yet.`);
88
+ this.log('Do not issue a fresh start. Wait for the original request or retry this exact request id.');
89
+ return;
90
+ }
91
+ this.log(`No task-scoped receipt exists for start request ${receipt.requestId}.`);
92
+ this.log(`That is not proof the start did not happen. Inspect: ${this.config.bin} tasks execution-state ${taskId}`);
93
+ }
94
+ }
95
+ exports.default = TasksStartReceipt;
@@ -11,7 +11,9 @@ export default class TasksStart extends BaseCommand {
11
11
  'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
12
  task: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  skill: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ capability: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
15
  branch: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ 'request-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
17
  };
16
18
  run(): Promise<void>;
17
19
  }
@@ -25,6 +27,8 @@ export declare function waitingForMachine(err: unknown): {
25
27
  reason?: string;
26
28
  retryable?: boolean;
27
29
  } | null;
30
+ /** The next safe action when admission is retained but its machine is waking. */
31
+ export declare function waitingForMachineFollowUpLine(bin: string, taskRef: string): string;
28
32
  /**
29
33
  * What to run next, printed after a start (OSK-12128). A start used to print
30
34
  * two ids and stop, and the way to watch it was found by accident. Every
@@ -1,13 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.waitingForMachine = waitingForMachine;
4
+ exports.waitingForMachineFollowUpLine = waitingForMachineFollowUpLine;
4
5
  exports.startFollowUpLines = startFollowUpLines;
5
6
  const core_1 = require("@oclif/core");
7
+ const node_crypto_1 = require("node:crypto");
6
8
  const data_provider_1 = require("@skrr-ai/data-provider");
7
9
  const base_command_1 = require("../../base-command");
8
10
  const task_resolver_1 = require("../../lib/task-resolver");
9
11
  const git_task_1 = require("../../lib/git-task");
10
12
  const task_admission_1 = require("../../lib/task-admission");
13
+ const TASK_START_REQUEST_ID_PATTERN = /^[A-Za-z0-9._:/-]{1,200}$/;
11
14
  class TasksStart extends base_command_1.BaseCommand {
12
15
  static description = 'Start execution of a task: its assignee agent runs it in a new conversation + session. ' +
13
16
  'Alias: tasks execute';
@@ -19,9 +22,11 @@ class TasksStart extends base_command_1.BaseCommand {
19
22
  '<%= config.bin %> tasks start',
20
23
  '<%= config.bin %> tasks start --task <task-id> --json',
21
24
  '<%= config.bin %> tasks start <task-id> --skill <skill-id>',
25
+ '<%= config.bin %> tasks start <task-id> --capability shell --capability codex_session',
22
26
  '<%= config.bin %> tasks start OSK-123 --branch',
23
27
  '<%= config.bin %> tasks start <task-id> --json',
24
28
  '<%= config.bin %> tasks start <task-id> --dry-run --json',
29
+ '<%= config.bin %> tasks start <task-id> --request-id task-start:deploy-42',
25
30
  ];
26
31
  static args = {
27
32
  id: core_1.Args.string({
@@ -39,9 +44,16 @@ class TasksStart extends base_command_1.BaseCommand {
39
44
  skill: core_1.Flags.string({
40
45
  description: "Skill ID to inject into the run. Must be pinned to the task's space (server rejects unknown skills with 4xx).",
41
46
  }),
47
+ capability: core_1.Flags.string({
48
+ multiple: true,
49
+ description: 'Capability required of the selected execution target. Repeat for every required capability.',
50
+ }),
42
51
  branch: core_1.Flags.boolean({
43
52
  description: 'Create or check out the local oversky/task/<ref> branch before starting the task.',
44
53
  }),
54
+ 'request-id': core_1.Flags.string({
55
+ description: 'Stable idempotency key for this logical start. Reuse it after a lost response; inspect it with tasks start-receipt.',
56
+ }),
45
57
  };
46
58
  async run() {
47
59
  this.requireAuth();
@@ -60,6 +72,10 @@ class TasksStart extends base_command_1.BaseCommand {
60
72
  details: { suggestion: failure.suggestion, context: failure.details },
61
73
  });
62
74
  }
75
+ if (flags['request-id'] !== undefined &&
76
+ !TASK_START_REQUEST_ID_PATTERN.test(flags['request-id'])) {
77
+ this.error('--request-id must be 1-200 characters of letters, digits and . _ : / - (it is sent as an idempotency key).', { exit: 2 });
78
+ }
63
79
  if (flags['dry-run']) {
64
80
  if (flags.branch)
65
81
  this.error('--dry-run cannot check out a branch; omit --branch.', { exit: 2 });
@@ -67,7 +83,11 @@ class TasksStart extends base_command_1.BaseCommand {
67
83
  try {
68
84
  // A separate route is intentional: an older /start silently ignores
69
85
  // unknown request fields. A dryRun flag there could start real work.
70
- preview = await data_provider_1.dataService.previewTaskStart(taskIdentity.id, flags.skill ? { skillId: flags.skill } : undefined);
86
+ const previewOptions = {
87
+ ...(flags.skill ? { skillId: flags.skill } : {}),
88
+ ...(flags.capability?.length ? { requestedCapabilities: flags.capability } : {}),
89
+ };
90
+ preview = await data_provider_1.dataService.previewTaskStart(taskIdentity.id, Object.keys(previewOptions).length ? previewOptions : undefined);
71
91
  }
72
92
  catch (err) {
73
93
  this.handleApiError(err, { subject: `Task ${taskIdentity.id} execution preview` });
@@ -96,6 +116,10 @@ class TasksStart extends base_command_1.BaseCommand {
96
116
  const taskId = flags.branch
97
117
  ? await this.resolveTaskReference(taskIdentity.id)
98
118
  : taskIdentity.id;
119
+ // Task starts can allocate a Run. The CLI owns one request id per invocation
120
+ // and prints it, so a caller who loses the response can inspect or replay
121
+ // this exact request instead of guessing whether another start is safe.
122
+ const requestId = flags['request-id'] || `task-start:${(0, node_crypto_1.randomUUID)()}`;
99
123
  let branch;
100
124
  if (flags.branch) {
101
125
  try {
@@ -125,7 +149,11 @@ class TasksStart extends base_command_1.BaseCommand {
125
149
  }
126
150
  let result;
127
151
  try {
128
- result = await data_provider_1.dataService.startTask(taskId, flags.skill ? { skillId: flags.skill } : undefined);
152
+ result = await data_provider_1.dataService.startTask(taskId, {
153
+ ...(flags.skill ? { skillId: flags.skill } : {}),
154
+ ...(flags.capability?.length ? { requestedCapabilities: flags.capability } : {}),
155
+ requestId,
156
+ });
129
157
  }
130
158
  catch (err) {
131
159
  // A stopped Dedicated machine is being started for this work. That is the
@@ -139,6 +167,7 @@ class TasksStart extends base_command_1.BaseCommand {
139
167
  code: 'TASK_WAITING_FOR_MACHINE',
140
168
  taskId,
141
169
  task: { ...taskIdentity, id: taskId },
170
+ requestId,
142
171
  ...(branch ? { branch } : {}),
143
172
  ...waiting,
144
173
  }, null, 2));
@@ -148,8 +177,11 @@ class TasksStart extends base_command_1.BaseCommand {
148
177
  this.log(`${branch.created ? 'Created' : 'Checked out'} branch: ${branch.branch}`);
149
178
  }
150
179
  this.log(`Task ${taskIdentity.id} is waiting for the machine to start; the task will run by itself once it is ready.`);
180
+ this.log(`Start request: ${requestId}`);
181
+ this.log(`Inspect request receipt: ${this.config.bin} tasks start-receipt ${taskIdentity.id} --request-id ${requestId}`);
151
182
  if (waiting.message)
152
183
  this.log(waiting.message);
184
+ this.log(waitingForMachineFollowUpLine(this.config.bin, taskIdentity.id));
153
185
  return;
154
186
  }
155
187
  // Name the task in the failure. `skrr tasks start` is the command people
@@ -159,21 +191,30 @@ class TasksStart extends base_command_1.BaseCommand {
159
191
  this.handleApiError(err, { subject: `Task ${taskIdentity.id}` });
160
192
  }
161
193
  if (flags.json) {
194
+ const receipt = result.receipt || { requestId, state: 'accepted' };
162
195
  this.log(JSON.stringify({
163
196
  ...result,
197
+ receipt,
164
198
  taskId,
165
199
  task: { ...taskIdentity, id: taskId },
166
200
  ...(branch ? { branch } : {}),
167
201
  }, null, 2));
168
202
  return;
169
203
  }
170
- this.log(`Started task ${taskId}${flags.skill ? ` with skill ${flags.skill}` : ''}`);
204
+ this.log(`Accepted start request for task ${taskId}${flags.skill ? ` with skill ${flags.skill}` : ''}`);
205
+ this.log(`Start receipt: ${result.receipt?.requestId || requestId}`);
171
206
  if (branch)
172
207
  this.log(`${branch.created ? 'Created' : 'Checked out'} branch: ${branch.branch}`);
173
208
  for (const line of (0, task_admission_1.admissionLines)(result.executionAdmission))
174
209
  this.log(line);
210
+ if (result.runId)
211
+ this.log(`Run: ${result.runId}`);
212
+ if (result.autonomousRunId)
213
+ this.log(`Autonomous Run: ${result.autonomousRunId}`);
175
214
  this.log(`Conversation: ${result.conversationId}`);
176
215
  this.log(`Session: ${result.sessionId}`);
216
+ if (result.responseMessageId)
217
+ this.log(`Response message: ${result.responseMessageId}`);
177
218
  for (const line of startFollowUpLines(this.config.bin, taskIdentity.id))
178
219
  this.log(line);
179
220
  }
@@ -213,6 +254,10 @@ function waitingForMachine(err) {
213
254
  ...(typeof body.retryable === 'boolean' ? { retryable: body.retryable } : {}),
214
255
  };
215
256
  }
257
+ /** The next safe action when admission is retained but its machine is waking. */
258
+ function waitingForMachineFollowUpLine(bin, taskRef) {
259
+ return `Inspect recovery: ${bin} tasks execution-state ${taskRef}`;
260
+ }
216
261
  /**
217
262
  * What to run next, printed after a start (OSK-12128). A start used to print
218
263
  * two ids and stop, and the way to watch it was found by accident. Every
@@ -230,6 +275,7 @@ function startFollowUpLines(bin, taskRef) {
230
275
  '',
231
276
  'Follow it:',
232
277
  ` ${bin} tasks watch ${taskRef} status until it finishes or fails`,
278
+ ` ${bin} tasks execution-state ${taskRef} exact run, current attempt, wait and recovery state`,
233
279
  ` ${bin} tasks transcript ${taskRef} what the agent has said so far`,
234
280
  ` ${bin} tasks approvals list ${taskRef} approvals waiting on you, or why a run is blocked on one`,
235
281
  'On a local machine, the run may add its instruction file (AGENTS.md / CLAUDE.md) to the',
@@ -543,6 +543,9 @@ class TasksUpdate extends base_command_1.BaseCommand {
543
543
  }
544
544
  this.handleApiError(err);
545
545
  }
546
+ // Held for approval by the Space write policy: nothing was changed.
547
+ if (this.reportHeldSpaceWrite(updated, { json: flags.json }))
548
+ return;
546
549
  // Postcondition, not a prediction — see `droppedEstimateWarning`. On stderr
547
550
  // so `--json` stdout stays a parseable task row.
548
551
  const estimateWarning = (0, create_1.droppedEstimateWarning)(flags.estimate, updated, updated?.spaceId);
@@ -25,7 +25,10 @@ class TasksUpsert extends base_command_1.BaseCommand {
25
25
  'default-agent': core_1.Flags.string({
26
26
  description: 'Override the automatic assignee for creates, or fill an unassigned existing match. Use "auto" to inherit the space lead agent.',
27
27
  }),
28
- unassigned: core_1.Flags.boolean({ description: 'Explicitly clear both assignee kinds, suppressing automatic defaults while retaining executor intent.', exclusive: ['default-agent', 'assignee-agent', 'assignee-user'] }),
28
+ unassigned: core_1.Flags.boolean({
29
+ description: 'Explicitly clear both assignee kinds, suppressing automatic defaults while retaining executor intent.',
30
+ exclusive: ['default-agent', 'assignee-agent', 'assignee-user'],
31
+ }),
29
32
  title: core_1.Flags.string({ description: 'Task title (required when creating)' }),
30
33
  description: core_1.Flags.string({ description: 'Task description' }),
31
34
  'description-format': core_1.Flags.string({
@@ -70,7 +73,12 @@ class TasksUpsert extends base_command_1.BaseCommand {
70
73
  this.setJsonOperation({ command: 'tasks:upsert', mode: 'execute' });
71
74
  const unassignmentError = (0, tasks_1.taskUnassignmentFlagError)(flags);
72
75
  if (unassignmentError)
73
- this.failWithCliError({ message: unassignmentError, code: 'TASK_UNASSIGNED_CONFLICT', exit: 2, retryable: false });
76
+ this.failWithCliError({
77
+ message: unassignmentError,
78
+ code: 'TASK_UNASSIGNED_CONFLICT',
79
+ exit: 2,
80
+ retryable: false,
81
+ });
74
82
  let body = {};
75
83
  try {
76
84
  body = await (0, prompt_1.readJsonBody)(flags['from-json']);
@@ -219,6 +227,9 @@ class TasksUpsert extends base_command_1.BaseCommand {
219
227
  this.handleApiError(err);
220
228
  }
221
229
  }
230
+ // Held for approval by the Space write policy: nothing was written.
231
+ if (this.reportHeldSpaceWrite(task, { json: flags.json }))
232
+ return;
222
233
  const result = {
223
234
  object: 'task_upsert',
224
235
  action,
@@ -229,7 +240,10 @@ class TasksUpsert extends base_command_1.BaseCommand {
229
240
  url: (0, web_url_1.taskUrlFrom)(this.cliConfig.baseURL, task),
230
241
  };
231
242
  if (flags.json) {
232
- this.printJsonOperation(result, { resource: { kind: 'task', id: task?.id }, task: { id: task?.id } });
243
+ this.printJsonOperation(result, {
244
+ resource: { kind: 'task', id: task?.id },
245
+ task: { id: task?.id },
246
+ });
233
247
  return;
234
248
  }
235
249
  this.log(`${capitalize(action)} task ${(0, tasks_1.formatTaskLabel)(task)}`);
@@ -13,7 +13,10 @@ export default class TasksWatch extends BaseCommand {
13
13
  interval: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
14
14
  timeout: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
15
  limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
16
+ operation: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
17
  };
17
18
  run(): Promise<void>;
19
+ private watchOperation;
20
+ private printOperationCheckpoint;
18
21
  private printSnapshot;
19
22
  }
@@ -4,12 +4,15 @@ const core_1 = require("@oclif/core");
4
4
  const base_command_1 = require("../../base-command");
5
5
  const format_1 = require("../../lib/format");
6
6
  const task_execution_1 = require("../../lib/task-execution");
7
+ const task_operation_watch_1 = require("../../lib/task-operation-watch");
8
+ const data_provider_1 = require("@skrr-ai/data-provider");
7
9
  class TasksWatch extends base_command_1.BaseCommand {
8
- static description = 'Watch task execution status until completion or failure';
10
+ static description = 'Watch task execution status, or one immutable Task Operation, without dispatching work';
9
11
  static examples = [
10
12
  '<%= config.bin %> tasks watch <task-id>',
11
13
  '<%= config.bin %> tasks watch <root-task-id> --descendants',
12
14
  '<%= config.bin %> tasks watch <root-task-id> --descendants --json',
15
+ '<%= config.bin %> tasks watch <task-id> --operation <operation-id> --timeout 10m',
13
16
  ];
14
17
  static args = {
15
18
  id: core_1.Args.string({ description: 'Task or root task ID', required: true, ignoreStdin: true }),
@@ -27,14 +30,27 @@ class TasksWatch extends base_command_1.BaseCommand {
27
30
  interval: core_1.Flags.integer({ description: 'Polling interval in seconds', default: 5 }),
28
31
  timeout: core_1.Flags.string({ description: 'Timeout such as 30s, 10m, 2h' }),
29
32
  limit: core_1.Flags.integer({ description: 'Max descendants to inspect', default: 500 }),
33
+ operation: core_1.Flags.string({
34
+ description: 'Watch this immutable Task Operation rather than inferring completion from Task workflow status',
35
+ }),
30
36
  };
31
37
  async run() {
32
38
  this.requireAuth();
33
39
  const { args, flags } = await this.parse(TasksWatch);
40
+ if (flags.operation) {
41
+ if (flags.descendants ||
42
+ flags['children-only'] ||
43
+ (flags['fail-on'] !== undefined && flags['fail-on'] !== task_execution_1.DEFAULT_FAIL_STATUSES_FLAG) ||
44
+ (flags.limit !== undefined && flags.limit !== 500)) {
45
+ this.error('--operation cannot be combined with --descendants, --children-only, --fail-on, or --limit. It watches one immutable operation, not a Task tree.', { exit: 2 });
46
+ }
47
+ await this.watchOperation(args.id, flags.operation, flags);
48
+ return;
49
+ }
34
50
  const failOn = (0, task_execution_1.parseStatusSet)(flags['fail-on'], task_execution_1.DEFAULT_FAIL_STATUSES);
35
51
  let timeoutMs = null;
36
52
  try {
37
- timeoutMs = parseDurationMs(flags.timeout);
53
+ timeoutMs = (0, task_operation_watch_1.parseTaskOperationWatchDuration)(flags.timeout);
38
54
  }
39
55
  catch (err) {
40
56
  this.error(err.message, { exit: 1 });
@@ -76,6 +92,73 @@ class TasksWatch extends base_command_1.BaseCommand {
76
92
  await (0, task_execution_1.sleep)(intervalMs);
77
93
  }
78
94
  }
95
+ async watchOperation(taskRef, operationId, flags) {
96
+ const taskId = await this.resolveTaskReference(taskRef);
97
+ const canonicalOperationId = operationId.trim();
98
+ if (!canonicalOperationId || canonicalOperationId.length > 200) {
99
+ this.error('--operation must be a non-empty operation ID of at most 200 characters.', { exit: 2 });
100
+ return;
101
+ }
102
+ let timeoutMs;
103
+ try {
104
+ timeoutMs = (0, task_operation_watch_1.parseTaskOperationWatchDuration)(flags.timeout);
105
+ }
106
+ catch (error) {
107
+ this.error(error.message, { exit: 2 });
108
+ return;
109
+ }
110
+ const intervalMs = Math.max(1, flags.interval) * 1000;
111
+ const getTaskOperation = data_provider_1.dataService.getTaskOperation;
112
+ if (!getTaskOperation) {
113
+ this.failWithCliError({
114
+ code: 'TASK_OPERATION_READER_UNAVAILABLE',
115
+ message: 'This CLI build cannot read Task Operations. Update skrr before waiting on this operation.',
116
+ exit: 2,
117
+ retryable: false,
118
+ });
119
+ }
120
+ try {
121
+ const result = await (0, task_operation_watch_1.watchTaskOperation)({
122
+ taskId,
123
+ operationId: canonicalOperationId,
124
+ intervalMs,
125
+ timeoutMs,
126
+ read: getTaskOperation,
127
+ onCheckpoint: (checkpoint) => this.printOperationCheckpoint(checkpoint, Boolean(flags.json)),
128
+ });
129
+ if (result.result === 'failed')
130
+ this.exit(1);
131
+ }
132
+ catch (error) {
133
+ const candidate = error;
134
+ if (candidate?.code === 'TASK_OPERATION_WAIT_TIMEOUT') {
135
+ this.exit(124);
136
+ return;
137
+ }
138
+ if (candidate?.code === 'TASK_OPERATION_TERMINAL_UNKNOWN') {
139
+ this.failWithCliError({
140
+ code: 'TASK_OPERATION_TERMINAL_UNKNOWN',
141
+ message: 'The Task Operation is terminal but does not report a recognized outcome. Inspect it; do not issue a fresh operation by guesswork.',
142
+ exit: 2,
143
+ retryable: false,
144
+ details: { operationId: canonicalOperationId, taskId },
145
+ });
146
+ return;
147
+ }
148
+ this.handleApiError(error, { subject: `Task operation ${canonicalOperationId}` });
149
+ }
150
+ }
151
+ printOperationCheckpoint(checkpoint, json) {
152
+ if (json) {
153
+ this.log(JSON.stringify(checkpoint));
154
+ return;
155
+ }
156
+ // A text stream stays calm between changes; JSON preserves every polling
157
+ // checkpoint so automation can distinguish a live wait from silence.
158
+ if (checkpoint.changed || checkpoint.terminal || checkpoint.observation === 'timeout') {
159
+ this.log((0, task_operation_watch_1.taskOperationCheckpointLine)(checkpoint));
160
+ }
161
+ }
79
162
  printSnapshot(snapshot) {
80
163
  this.log('');
81
164
  this.log(`[${snapshot.generatedAt}] tasks=${snapshot.taskCount} active=${snapshot.activeCount} recovered=${snapshot.recoveredCount} terminal=${snapshot.terminalCount} pending=${snapshot.pendingCount}`);
@@ -101,21 +184,3 @@ class TasksWatch extends base_command_1.BaseCommand {
101
184
  }
102
185
  }
103
186
  exports.default = TasksWatch;
104
- function parseDurationMs(value) {
105
- if (!value)
106
- return null;
107
- const match = value.trim().match(/^(\d+)(ms|s|m|h)?$/i);
108
- if (!match)
109
- throw new Error(`Invalid --timeout value: ${value}`);
110
- const amount = Number(match[1]);
111
- const unit = (match[2] || 's').toLowerCase();
112
- if (unit === 'ms')
113
- return amount;
114
- if (unit === 's')
115
- return amount * 1000;
116
- if (unit === 'm')
117
- return amount * 60 * 1000;
118
- if (unit === 'h')
119
- return amount * 60 * 60 * 1000;
120
- return amount * 1000;
121
- }
@@ -0,0 +1,33 @@
1
+ import type { WikiPageAuthor, WikiPageRevision } from '@skrr-ai/data-provider';
2
+ import { BaseCommand } from '../../base-command';
3
+ /**
4
+ * `agent <id>` for a write a verified Run proved; otherwise the person whose
5
+ * credential wrote it, with the channel it came through — so an agent working
6
+ * through a delegated CLI credential without Run proof reads as
7
+ * "person <id> (via delegated agent CLI credential)", never as a bare person.
8
+ */
9
+ export declare function formatAuthor(author: WikiPageAuthor | undefined): string;
10
+ export declare function buildHistoryRows(revisions: WikiPageRevision[]): {
11
+ rev: string;
12
+ when: string;
13
+ author: string;
14
+ also: string;
15
+ source: string;
16
+ chars: string;
17
+ }[];
18
+ export default class WikiHistory extends BaseCommand {
19
+ static description: string;
20
+ static examples: string[];
21
+ static args: {
22
+ space: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
23
+ path: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
24
+ };
25
+ static flags: {
26
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
27
+ 'page-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
28
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
29
+ cursor: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
30
+ revision: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
31
+ };
32
+ run(): Promise<void>;
33
+ }