mcoda 0.1.37 → 0.1.40

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  ## Unreleased
4
4
  - Initial npm packaging scaffold for the mcoda CLI.
5
+ - Added bundled mswarm consent terms plus guided `mcoda setup`/postinstall consent bootstrap for installed CLI packages.
5
6
 
6
7
  ## 0.1.9
7
8
  - Release v0.1.9.
@@ -0,0 +1,65 @@
1
+ Mswarm Data Collection Terms And Consent
2
+
3
+ Version: 2026-03-18
4
+
5
+ By using Docdex or mcoda with mswarm-backed services, you agree to the following terms.
6
+
7
+ ## What We Collect
8
+
9
+ We may collect and process:
10
+
11
+ - product installation and client identity metadata
12
+ - consent records, including acceptance time, source IP address, and user agent
13
+ - web search queries and web search results generated by the product
14
+ - fetched webpage content and ai-digested summaries generated from that content
15
+ - local delegation failures and related error diagnostics
16
+ - mcoda local and cloud agent ratings, evaluations, and performance signals
17
+ - package integrity metadata such as signatures, checksums, and upload timestamps
18
+
19
+ ## Why We Collect It
20
+
21
+ We use this data to:
22
+
23
+ - operate and improve mswarm-backed search, cache, and cloud features
24
+ - measure quality, reliability, performance, and cost
25
+ - detect abuse, fraud, tampering, or manipulated uploads
26
+ - validate user consent and maintain compliance records
27
+ - improve model ratings and answer-cache quality across the product ecosystem
28
+
29
+ ## Required Consent
30
+
31
+ - Consent is required to use the product.
32
+ - If you do not accept these terms, installation and setup cannot continue.
33
+ - Your consent is recorded server-side together with the acceptance timestamp and source IP address.
34
+
35
+ ## Local Storage
36
+
37
+ Before upload, the product stores telemetry locally under `~/.docdex` or `~/.mcoda`.
38
+ Local packages may include search, fetch, answer, error, and rating data until they are uploaded or purged.
39
+
40
+ ## Upload And Retention
41
+
42
+ - Telemetry packages are compressed, checksummed, and signed before upload.
43
+ - The product retries failed uploads automatically.
44
+ - Uploaded packages are deleted locally after successful transfer.
45
+ - Unsent local packages older than 30 days are deleted.
46
+
47
+ ## Security And Integrity
48
+
49
+ - Packages are signed to reduce the risk of tampering or malware injection.
50
+ - Checksums are verified before ingestion.
51
+ - mswarm may reject packages that fail integrity or policy checks.
52
+
53
+ ## Your Rights
54
+
55
+ Subject to applicable law, you may:
56
+
57
+ - withdraw consent for future collection
58
+ - request deletion of your stored data
59
+ - ask for a summary of data associated with your client identity
60
+
61
+ Withdrawing consent stops future uploads but may also limit or disable product functionality that depends on mswarm.
62
+
63
+ ## Contact And Updates
64
+
65
+ These terms may be updated. The product may require renewed acceptance when the policy version changes.
package/README.md CHANGED
@@ -5,10 +5,13 @@ mcoda is a local-first CLI for planning, documentation, and execution workflows
5
5
  ## Install
6
6
  - Requires Node.js >= 20.
7
7
  - Global install: `npm i -g mcoda`
8
+ - Interactive installs show the bundled mswarm data collection terms and require acceptance before setup can continue.
9
+ - If install cannot prompt, complete the same mandatory consent flow with `mcoda setup` before other commands.
8
10
  - Verify: `mcoda --version`
9
11
 
10
12
  ## Quick start
11
13
  ```sh
14
+ mcoda setup
12
15
  mcoda set-workspace --workspace-root .
13
16
  mcoda docs pdr generate --workspace-root . --project WEB --rfp-path docs/rfp/web.md --agent codex
14
17
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"McodaEntrypoint.d.ts","sourceRoot":"","sources":["../../src/bin/McodaEntrypoint.ts"],"names":[],"mappings":";AA+BA,qBAAa,eAAe;WACb,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;CAuMxE"}
1
+ {"version":3,"file":"McodaEntrypoint.d.ts","sourceRoot":"","sources":["../../src/bin/McodaEntrypoint.ts"],"names":[],"mappings":";AAoCA,qBAAa,eAAe;WACb,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;CA6OxE"}
@@ -1,53 +1,58 @@
1
1
  #!/usr/bin/env node
2
- import { realpathSync } from "node:fs";
3
- import { fileURLToPath } from "node:url";
4
- import packageJson from "../../package.json" with { type: "json" };
5
- import { AgentsCommands } from "../commands/agents/AgentsCommands.js";
6
- import { GatewayAgentCommand } from "../commands/agents/GatewayAgentCommand.js";
7
- import { DocsCommands } from "../commands/docs/DocsCommands.js";
8
- import { JobsCommands } from "../commands/jobs/JobsCommands.js";
9
- import { OpenapiCommands } from "../commands/openapi/OpenapiCommands.js";
10
- import { CreateTasksCommand } from "../commands/planning/CreateTasksCommand.js";
11
- import { RefineTasksCommand } from "../commands/planning/RefineTasksCommand.js";
12
- import { TaskSufficiencyAuditCommand } from "../commands/planning/TaskSufficiencyAuditCommand.js";
13
- import { SdsPreflightCommand } from "../commands/planning/SdsPreflightCommand.js";
14
- import { BacklogCommands } from "../commands/backlog/BacklogCommands.js";
15
- import { TaskShowCommands } from "../commands/backlog/TaskShowCommands.js";
16
- import { OrderTasksCommand } from "../commands/backlog/OrderTasksCommand.js";
17
- import { EstimateCommands } from "../commands/estimate/EstimateCommands.js";
18
- import { TelemetryCommands } from "../commands/telemetry/TelemetryCommands.js";
19
- import { WorkOnTasksCommand } from "../commands/work/WorkOnTasksCommand.js";
20
- import { GatewayTrioCommand } from "../commands/work/GatewayTrioCommand.js";
21
- import { AddTestsCommand } from "../commands/work/AddTestsCommand.js";
22
- import { CodeReviewCommand } from "../commands/review/CodeReviewCommand.js";
23
- import { QaTasksCommand } from "../commands/planning/QaTasksCommand.js";
24
- import { MigrateTasksCommand } from "../commands/planning/MigrateTasksCommand.js";
25
- import { UpdateCommands } from "../commands/update/UpdateCommands.js";
26
- import { RoutingCommands } from "../commands/routing/RoutingCommands.js";
27
- import { TestAgentCommand } from "../commands/agents/TestAgentCommand.js";
28
- import { AgentRunCommand } from "../commands/agents/AgentRunCommand.js";
29
- import { SetWorkspaceCommand } from "../commands/workspace/SetWorkspaceCommand.js";
30
- import { ProjectGuidanceCommand } from "../commands/workspace/ProjectGuidanceCommand.js";
2
+ import { realpathSync } from 'node:fs';
3
+ import { fileURLToPath } from 'node:url';
4
+ import packageJson from '../../package.json' with { type: 'json' };
5
+ import { AgentsCommands } from '../commands/agents/AgentsCommands.js';
6
+ import { CloudCommands } from '../commands/cloud/CloudCommands.js';
7
+ import { ConfigCommands } from '../commands/config/ConfigCommands.js';
8
+ import { ConsentCommands } from '../commands/consent/ConsentCommands.js';
9
+ import { GatewayAgentCommand } from '../commands/agents/GatewayAgentCommand.js';
10
+ import { DocsCommands } from '../commands/docs/DocsCommands.js';
11
+ import { JobsCommands } from '../commands/jobs/JobsCommands.js';
12
+ import { OpenapiCommands } from '../commands/openapi/OpenapiCommands.js';
13
+ import { CreateTasksCommand } from '../commands/planning/CreateTasksCommand.js';
14
+ import { RefineTasksCommand } from '../commands/planning/RefineTasksCommand.js';
15
+ import { TaskSufficiencyAuditCommand } from '../commands/planning/TaskSufficiencyAuditCommand.js';
16
+ import { SdsPreflightCommand } from '../commands/planning/SdsPreflightCommand.js';
17
+ import { BacklogCommands } from '../commands/backlog/BacklogCommands.js';
18
+ import { TaskShowCommands } from '../commands/backlog/TaskShowCommands.js';
19
+ import { OrderTasksCommand } from '../commands/backlog/OrderTasksCommand.js';
20
+ import { EstimateCommands } from '../commands/estimate/EstimateCommands.js';
21
+ import { TelemetryCommands } from '../commands/telemetry/TelemetryCommands.js';
22
+ import { WorkOnTasksCommand } from '../commands/work/WorkOnTasksCommand.js';
23
+ import { GatewayTrioCommand } from '../commands/work/GatewayTrioCommand.js';
24
+ import { AddTestsCommand } from '../commands/work/AddTestsCommand.js';
25
+ import { CodeReviewCommand } from '../commands/review/CodeReviewCommand.js';
26
+ import { QaTasksCommand } from '../commands/planning/QaTasksCommand.js';
27
+ import { MigrateTasksCommand } from '../commands/planning/MigrateTasksCommand.js';
28
+ import { UpdateCommands } from '../commands/update/UpdateCommands.js';
29
+ import { RoutingCommands } from '../commands/routing/RoutingCommands.js';
30
+ import { SetupCommand } from '../commands/setup/SetupCommand.js';
31
+ import { TestAgentCommand } from '../commands/agents/TestAgentCommand.js';
32
+ import { AgentRunCommand } from '../commands/agents/AgentRunCommand.js';
33
+ import { SetWorkspaceCommand } from '../commands/workspace/SetWorkspaceCommand.js';
34
+ import { ProjectGuidanceCommand } from '../commands/workspace/ProjectGuidanceCommand.js';
35
+ import { MswarmConfigStore } from '@mcoda/core';
31
36
  export class McodaEntrypoint {
32
37
  static async run(argv = process.argv.slice(2)) {
33
38
  const applyCodexNoSandboxFlag = (value) => {
34
- if (value === undefined || value === "") {
35
- process.env.MCODA_CODEX_NO_SANDBOX = "1";
39
+ if (value === undefined || value === '') {
40
+ process.env.MCODA_CODEX_NO_SANDBOX = '1';
36
41
  return;
37
42
  }
38
43
  const normalized = value.trim().toLowerCase();
39
- if (["0", "false", "off", "no"].includes(normalized)) {
40
- process.env.MCODA_CODEX_NO_SANDBOX = "0";
44
+ if (['0', 'false', 'off', 'no'].includes(normalized)) {
45
+ process.env.MCODA_CODEX_NO_SANDBOX = '0';
41
46
  return;
42
47
  }
43
- process.env.MCODA_CODEX_NO_SANDBOX = "1";
48
+ process.env.MCODA_CODEX_NO_SANDBOX = '1';
44
49
  };
45
50
  const filteredArgs = [];
46
51
  for (let i = 0; i < argv.length; i += 1) {
47
52
  const arg = argv[i];
48
- if (arg === "--codex-no-sandbox") {
53
+ if (arg === '--codex-no-sandbox') {
49
54
  const next = argv[i + 1];
50
- if (next && !next.startsWith("--")) {
55
+ if (next && !next.startsWith('--')) {
51
56
  applyCodexNoSandboxFlag(next);
52
57
  i += 1;
53
58
  }
@@ -56,170 +61,202 @@ export class McodaEntrypoint {
56
61
  }
57
62
  continue;
58
63
  }
59
- if (arg.startsWith("--codex-no-sandbox=")) {
60
- const [, raw] = arg.split("=", 2);
64
+ if (arg.startsWith('--codex-no-sandbox=')) {
65
+ const [, raw] = arg.split('=', 2);
61
66
  applyCodexNoSandboxFlag(raw);
62
67
  continue;
63
68
  }
64
69
  filteredArgs.push(arg);
65
70
  }
66
71
  const [command, ...rest] = filteredArgs;
67
- const wantsJson = argv.some((arg) => arg === "--json" || arg.startsWith("--json="));
68
- const wantsQuiet = argv.some((arg) => arg === "--quiet" || arg.startsWith("--quiet="));
72
+ const wantsJson = argv.some((arg) => arg === '--json' || arg.startsWith('--json='));
73
+ const wantsQuiet = argv.some((arg) => arg === '--quiet' || arg.startsWith('--quiet='));
69
74
  if (wantsJson || wantsQuiet) {
70
- process.env.MCODA_STREAM_IO = "0";
71
- process.env.MCODA_STREAM_IO_PROMPT = "0";
75
+ process.env.MCODA_STREAM_IO = '0';
76
+ process.env.MCODA_STREAM_IO_PROMPT = '0';
72
77
  }
73
78
  else if (process.env.MCODA_STREAM_IO === undefined) {
74
- process.env.MCODA_STREAM_IO = "0";
79
+ process.env.MCODA_STREAM_IO = '0';
75
80
  if (process.env.MCODA_STREAM_IO_PROMPT === undefined) {
76
- process.env.MCODA_STREAM_IO_PROMPT = "0";
81
+ process.env.MCODA_STREAM_IO_PROMPT = '0';
77
82
  }
78
83
  }
79
- if (command === "--version" || command === "-v" || command === "version") {
84
+ if (command === '--version' || command === '-v' || command === 'version') {
80
85
  // Keep this simple so `mcoda --version` works even in thin installs.
81
86
  // eslint-disable-next-line no-console
82
- console.log(packageJson.version ?? "dev");
87
+ console.log(packageJson.version ?? 'dev');
83
88
  return;
84
89
  }
85
90
  if (!command) {
86
- throw new Error("Usage: mcoda <agent|gateway-agent|test-agent|agent-run|routing|docs|openapi|job|jobs|tokens|telemetry|create-tasks|migrate-tasks|refine-tasks|task-sufficiency-audit|sds-preflight|order-tasks|tasks|add-tests|work-on-tasks|gateway-trio|code-review|qa-tasks|backlog|task|task-detail|estimate|update|set-workspace|project-guidance|pdr|sds> [...args]\n" +
87
- "Routing: use `mcoda routing defaults` to view/update workspace/global defaults, `mcoda routing preview|explain` to inspect agent selection/provenance (override workspace_default → global_default).\n" +
88
- "Aliases: `tasks order-by-deps` forwards to `order-tasks` (dependency-aware ordering), `task`/`task-detail` show a single task.\n" +
89
- "Job commands (mcoda job --help for details): list|status|watch|logs|inspect|resume|cancel|tokens\n" +
90
- "Jobs API required for job commands (set MCODA_API_BASE_URL/MCODA_JOBS_API_URL or workspace api.baseUrl). status/watch/logs exit non-zero on failed/cancelled jobs per SDS.");
91
+ throw new Error('Usage: mcoda <agent|cloud|cloud-agent|config|consent|setup|gateway-agent|test-agent|agent-run|routing|docs|openapi|job|jobs|tokens|telemetry|create-tasks|migrate-tasks|refine-tasks|task-sufficiency-audit|sds-preflight|order-tasks|tasks|add-tests|work-on-tasks|gateway-trio|code-review|qa-tasks|backlog|task|task-detail|estimate|update|set-workspace|project-guidance|pdr|sds> [...args]\n' +
92
+ 'Setup: use `mcoda setup` after installation (or accept the postinstall prompt) to complete the mandatory mswarm telemetry consent flow.\n' +
93
+ 'Config: use `mcoda config set mswarm-api-key <KEY>` to persist an encrypted mswarm API key in the resolved global mcoda config file.\n' +
94
+ 'Consent: use `mcoda consent accept` before other commands if you need to complete consent outside the guided setup flow.\n' +
95
+ 'Routing: use `mcoda routing defaults` to view/update workspace/global defaults, `mcoda routing preview|explain` to inspect agent selection/provenance (override workspace_default → global_default).\n' +
96
+ 'Cloud agents: use `mcoda cloud agent list|details|sync` to discover and materialize mswarm-managed remote agents.\n' +
97
+ 'Aliases: `tasks order-by-deps` forwards to `order-tasks` (dependency-aware ordering), `task`/`task-detail` show a single task.\n' +
98
+ 'Job commands (mcoda job --help for details): list|status|watch|logs|inspect|resume|cancel|tokens\n' +
99
+ 'Jobs API required for job commands (set MCODA_API_BASE_URL/MCODA_JOBS_API_URL or workspace api.baseUrl). status/watch/logs exit non-zero on failed/cancelled jobs per SDS.');
100
+ }
101
+ if (!['config', 'consent', 'setup'].includes(command)) {
102
+ const consentState = await new MswarmConfigStore().readState();
103
+ const consentAccepted = Boolean(consentState.consentAccepted);
104
+ const consentTokenSet = Boolean(consentState.consentToken?.trim());
105
+ if (!consentAccepted || !consentTokenSet) {
106
+ throw new Error('Telemetry consent is required before using mcoda. Review the mswarm data collection terms and run `mcoda setup` or `mcoda consent accept`.');
107
+ }
91
108
  }
92
- if (command === "agent") {
109
+ if (command === 'agent') {
93
110
  await AgentsCommands.run(rest);
94
111
  return;
95
112
  }
96
- if (command === "gateway-agent") {
113
+ if (command === 'cloud') {
114
+ await CloudCommands.run(rest);
115
+ return;
116
+ }
117
+ if (command === 'config') {
118
+ await ConfigCommands.run(rest);
119
+ return;
120
+ }
121
+ if (command === 'consent') {
122
+ await ConsentCommands.run(rest);
123
+ return;
124
+ }
125
+ if (command === 'setup') {
126
+ await SetupCommand.run(rest);
127
+ return;
128
+ }
129
+ if (command === 'cloud-agent') {
130
+ await CloudCommands.run(['agent', ...rest]);
131
+ return;
132
+ }
133
+ if (command === 'gateway-agent') {
97
134
  await GatewayAgentCommand.run(rest);
98
135
  return;
99
136
  }
100
- if (command === "test-agent") {
137
+ if (command === 'test-agent') {
101
138
  await TestAgentCommand.run(rest);
102
139
  return;
103
140
  }
104
- if (command === "agent-run") {
141
+ if (command === 'agent-run') {
105
142
  await AgentRunCommand.run(rest);
106
143
  return;
107
144
  }
108
- if (command === "routing") {
145
+ if (command === 'routing') {
109
146
  await RoutingCommands.run(rest);
110
147
  return;
111
148
  }
112
- if (command === "docs") {
149
+ if (command === 'docs') {
113
150
  await DocsCommands.run(rest);
114
151
  return;
115
152
  }
116
- if (command === "openapi-from-docs" || command === "openapi") {
153
+ if (command === 'openapi-from-docs' || command === 'openapi') {
117
154
  await OpenapiCommands.run(rest);
118
155
  return;
119
156
  }
120
- if (command === "job" || command === "jobs") {
157
+ if (command === 'job' || command === 'jobs') {
121
158
  await JobsCommands.run(rest);
122
159
  return;
123
160
  }
124
- if (command === "tokens") {
161
+ if (command === 'tokens') {
125
162
  await TelemetryCommands.runTokens(rest);
126
163
  return;
127
164
  }
128
- if (command === "telemetry") {
165
+ if (command === 'telemetry') {
129
166
  await TelemetryCommands.runTelemetry(rest);
130
167
  return;
131
168
  }
132
- if (command === "pdr" || command === "mcoda:pdr") {
133
- await DocsCommands.run(["pdr", "generate", ...rest]);
169
+ if (command === 'pdr' || command === 'mcoda:pdr') {
170
+ await DocsCommands.run(['pdr', 'generate', ...rest]);
134
171
  return;
135
172
  }
136
- if (command === "sds" || command === "mcoda:sds") {
173
+ if (command === 'sds' || command === 'mcoda:sds') {
137
174
  const [subcommand, ...tail] = rest;
138
- if (subcommand === "generate" || subcommand === "suggestions") {
139
- await DocsCommands.run(["sds", subcommand, ...tail]);
175
+ if (subcommand === 'generate' || subcommand === 'suggestions') {
176
+ await DocsCommands.run(['sds', subcommand, ...tail]);
140
177
  }
141
178
  else {
142
- await DocsCommands.run(["sds", "generate", ...rest]);
179
+ await DocsCommands.run(['sds', 'generate', ...rest]);
143
180
  }
144
181
  return;
145
182
  }
146
- if (command === "create-tasks") {
183
+ if (command === 'create-tasks') {
147
184
  await CreateTasksCommand.run(rest);
148
185
  return;
149
186
  }
150
- if (command === "migrate-tasks") {
187
+ if (command === 'migrate-tasks') {
151
188
  await MigrateTasksCommand.run(rest);
152
189
  return;
153
190
  }
154
- if (command === "refine-tasks") {
191
+ if (command === 'refine-tasks') {
155
192
  await RefineTasksCommand.run(rest);
156
193
  return;
157
194
  }
158
- if (command === "task-sufficiency-audit") {
195
+ if (command === 'task-sufficiency-audit') {
159
196
  await TaskSufficiencyAuditCommand.run(rest);
160
197
  return;
161
198
  }
162
- if (command === "sds-preflight") {
199
+ if (command === 'sds-preflight') {
163
200
  await SdsPreflightCommand.run(rest);
164
201
  return;
165
202
  }
166
- if (command === "qa-tasks") {
167
- if (rest.includes("--help") || rest.includes("-h")) {
203
+ if (command === 'qa-tasks') {
204
+ if (rest.includes('--help') || rest.includes('-h')) {
168
205
  // eslint-disable-next-line no-console
169
- console.log("Usage: mcoda qa-tasks [--workspace-root <path>] --project <PROJECT_KEY> [--task <TASK_KEY> ... | --epic <EPIC_KEY> | --story <STORY_KEY>] [--status <STATUS_FILTER>] [--limit N] [--mode auto|manual] [--profile <PROFILE_NAME>] [--level unit|integration|acceptance] [--test-command \"<CMD>\"] [--agent <NAME>] [--agent-stream true|false] [--resume <JOB_ID>] [--create-followup-tasks auto|none|prompt] [--result pass|fail] [--notes \"<text>\"] [--evidence-url \"<url>\"] [--dry-run] [--json]");
206
+ console.log('Usage: mcoda qa-tasks [--workspace-root <path>] --project <PROJECT_KEY> [--task <TASK_KEY> ... | --epic <EPIC_KEY> | --story <STORY_KEY>] [--status <STATUS_FILTER>] [--limit N] [--mode auto|manual] [--profile <PROFILE_NAME>] [--level unit|integration|acceptance] [--test-command "<CMD>"] [--agent <NAME>] [--agent-stream true|false] [--resume <JOB_ID>] [--create-followup-tasks auto|none|prompt] [--result pass|fail] [--notes "<text>"] [--evidence-url "<url>"] [--dry-run] [--json]');
170
207
  return;
171
208
  }
172
209
  await QaTasksCommand.run(rest);
173
210
  return;
174
211
  }
175
- if (command === "order-tasks") {
212
+ if (command === 'order-tasks') {
176
213
  await OrderTasksCommand.run(rest);
177
214
  return;
178
215
  }
179
- if (command === "tasks") {
216
+ if (command === 'tasks') {
180
217
  const [sub, ...tail] = rest;
181
- if (sub === "order-by-deps" || sub === "order-by-dependencies") {
218
+ if (sub === 'order-by-deps' || sub === 'order-by-dependencies') {
182
219
  await OrderTasksCommand.run(tail);
183
220
  return;
184
221
  }
185
222
  }
186
- if (command === "work-on-tasks") {
223
+ if (command === 'work-on-tasks') {
187
224
  await WorkOnTasksCommand.run(rest);
188
225
  return;
189
226
  }
190
- if (command === "add-tests") {
227
+ if (command === 'add-tests') {
191
228
  await AddTestsCommand.run(rest);
192
229
  return;
193
230
  }
194
- if (command === "gateway-trio") {
231
+ if (command === 'gateway-trio') {
195
232
  await GatewayTrioCommand.run(rest);
196
233
  return;
197
234
  }
198
- if (command === "code-review") {
235
+ if (command === 'code-review') {
199
236
  await CodeReviewCommand.run(rest);
200
237
  return;
201
238
  }
202
- if (command === "backlog") {
239
+ if (command === 'backlog') {
203
240
  await BacklogCommands.run(rest);
204
241
  return;
205
242
  }
206
- if (command === "task" || command === "task-detail") {
243
+ if (command === 'task' || command === 'task-detail') {
207
244
  await TaskShowCommands.run(rest);
208
245
  return;
209
246
  }
210
- if (command === "estimate") {
247
+ if (command === 'estimate') {
211
248
  await EstimateCommands.run(rest);
212
249
  return;
213
250
  }
214
- if (command === "update") {
251
+ if (command === 'update') {
215
252
  await UpdateCommands.run(rest);
216
253
  return;
217
254
  }
218
- if (command === "set-workspace") {
255
+ if (command === 'set-workspace') {
219
256
  await SetWorkspaceCommand.run(rest);
220
257
  return;
221
258
  }
222
- if (command === "project-guidance") {
259
+ if (command === 'project-guidance') {
223
260
  await ProjectGuidanceCommand.run(rest);
224
261
  return;
225
262
  }
@@ -227,7 +264,7 @@ export class McodaEntrypoint {
227
264
  }
228
265
  }
229
266
  const isDirectRun = (() => {
230
- if (typeof process.argv[1] !== "string") {
267
+ if (typeof process.argv[1] !== 'string') {
231
268
  return false;
232
269
  }
233
270
  try {
@@ -0,0 +1,4 @@
1
+ export declare class CloudCommands {
2
+ static run(argv: string[]): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=CloudCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudCommands.d.ts","sourceRoot":"","sources":["../../../src/commands/cloud/CloudCommands.ts"],"names":[],"mappings":"AAkNA,qBAAa,aAAa;WACX,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA4FhD"}