@oxygen-agent/cli 1.1014.985 → 1.1014.1087

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 (131) hide show
  1. package/README.md +1 -1
  2. package/dist/command-families/program.d.ts +2 -0
  3. package/dist/command-families/program.js +241 -0
  4. package/dist/command-families/tables/automation.d.ts +22 -0
  5. package/dist/command-families/tables/automation.js +250 -0
  6. package/dist/command-families/tables/bundle-export.d.ts +7 -0
  7. package/dist/command-families/tables/bundle-export.js +198 -0
  8. package/dist/command-families/tables/bundle-format.d.ts +66 -0
  9. package/dist/command-families/tables/bundle-format.js +274 -0
  10. package/dist/command-families/tables/bundle-import.d.ts +20 -0
  11. package/dist/command-families/tables/bundle-import.js +260 -0
  12. package/dist/command-families/tables/display.d.ts +107 -0
  13. package/dist/command-families/tables/display.js +229 -0
  14. package/dist/command-families/tables/import-batches.d.ts +26 -0
  15. package/dist/command-families/tables/import-batches.js +94 -0
  16. package/dist/command-families/tables/import-columns.d.ts +24 -0
  17. package/dist/command-families/tables/import-columns.js +131 -0
  18. package/dist/command-families/tables/import-upload.d.ts +30 -0
  19. package/dist/command-families/tables/import-upload.js +203 -0
  20. package/dist/command-families/tables/import-values.d.ts +10 -0
  21. package/dist/command-families/tables/import-values.js +60 -0
  22. package/dist/command-families/tables/imports.d.ts +19 -0
  23. package/dist/command-families/tables/imports.js +200 -0
  24. package/dist/command-families/tables/options.d.ts +314 -0
  25. package/dist/command-families/tables/options.js +1 -0
  26. package/dist/command-families/tables/register-automation.d.ts +2 -0
  27. package/dist/command-families/tables/register-automation.js +127 -0
  28. package/dist/command-families/tables/register-external-imports.d.ts +2 -0
  29. package/dist/command-families/tables/register-external-imports.js +293 -0
  30. package/dist/command-families/tables/register-files.d.ts +2 -0
  31. package/dist/command-families/tables/register-files.js +72 -0
  32. package/dist/command-families/tables/register-followers.d.ts +2 -0
  33. package/dist/command-families/tables/register-followers.js +73 -0
  34. package/dist/command-families/tables/register-lifecycle.d.ts +2 -0
  35. package/dist/command-families/tables/register-lifecycle.js +114 -0
  36. package/dist/command-families/tables/register-reads.d.ts +2 -0
  37. package/dist/command-families/tables/register-reads.js +187 -0
  38. package/dist/command-families/tables/register-relations.d.ts +2 -0
  39. package/dist/command-families/tables/register-relations.js +244 -0
  40. package/dist/command-families/tables/register-row-actions.d.ts +2 -0
  41. package/dist/command-families/tables/register-row-actions.js +53 -0
  42. package/dist/command-families/tables/register-row-writes.d.ts +2 -0
  43. package/dist/command-families/tables/register-row-writes.js +140 -0
  44. package/dist/command-families/tables/register-views.d.ts +2 -0
  45. package/dist/command-families/tables/register-views.js +83 -0
  46. package/dist/command-families/tables/register-watchers.d.ts +2 -0
  47. package/dist/command-families/tables/register-watchers.js +65 -0
  48. package/dist/command-families/tables/register-webhooks.d.ts +2 -0
  49. package/dist/command-families/tables/register-webhooks.js +126 -0
  50. package/dist/command-families/tables/registration-context.d.ts +8 -0
  51. package/dist/command-families/tables/registration-context.js +1 -0
  52. package/dist/command-families/tables/registration.d.ts +3 -0
  53. package/dist/command-families/tables/registration.js +30 -0
  54. package/dist/command-families/tables/row-selection.d.ts +5 -0
  55. package/dist/command-families/tables/row-selection.js +82 -0
  56. package/dist/command-families/tables/send.d.ts +6 -0
  57. package/dist/command-families/tables/send.js +111 -0
  58. package/dist/command-manifest.js +1 -0
  59. package/dist/commands/copilot.js +8 -0
  60. package/dist/commands/deliverability.js +4 -2
  61. package/dist/commands/sequences.js +30 -2
  62. package/dist/commands/tables.d.ts +1 -3
  63. package/dist/commands/tables.js +1 -3505
  64. package/dist/credentials.js +1 -1
  65. package/dist/customer-operation-commands.js +62 -3
  66. package/dist/help.js +1 -1
  67. package/dist/index.d.ts +1 -99
  68. package/dist/index.js +5 -337
  69. package/dist/knowledge-mirror.js +1 -1
  70. package/dist/skills.js +4 -2
  71. package/dist/update.js +2 -1
  72. package/dist/workspace-placement-commands.d.ts +3 -0
  73. package/dist/workspace-placement-commands.js +32 -0
  74. package/node_modules/@oxygen/shared/dist/agent-sessions.d.ts +4 -0
  75. package/node_modules/@oxygen/shared/dist/agent-sessions.js +11 -3
  76. package/node_modules/@oxygen/shared/dist/agents-enabled.d.ts +29 -0
  77. package/node_modules/@oxygen/shared/dist/agents-enabled.js +51 -0
  78. package/node_modules/@oxygen/shared/dist/capability-discovery.js +39 -2
  79. package/node_modules/@oxygen/shared/dist/contracts/agent-sessions.js +1 -1
  80. package/node_modules/@oxygen/shared/dist/contracts/customer-operations.js +1 -1
  81. package/node_modules/@oxygen/shared/dist/contracts/guided-activation.js +5 -5
  82. package/node_modules/@oxygen/shared/dist/contracts/guided-company-files.d.ts +30 -0
  83. package/node_modules/@oxygen/shared/dist/contracts/guided-company-files.js +53 -0
  84. package/node_modules/@oxygen/shared/dist/contracts/guided-first-sourcing.d.ts +120 -0
  85. package/node_modules/@oxygen/shared/dist/contracts/guided-first-sourcing.js +48 -0
  86. package/node_modules/@oxygen/shared/dist/contracts/guided-onboarding-journey.d.ts +267 -0
  87. package/node_modules/@oxygen/shared/dist/contracts/guided-onboarding-journey.js +63 -0
  88. package/node_modules/@oxygen/shared/dist/contracts/operations.d.ts +6 -0
  89. package/node_modules/@oxygen/shared/dist/contracts/operations.js +9 -4
  90. package/node_modules/@oxygen/shared/dist/contracts/table-query-raw.d.ts +2 -0
  91. package/node_modules/@oxygen/shared/dist/contracts/table-query-raw.js +3 -0
  92. package/node_modules/@oxygen/shared/dist/contracts/teammates.js +17 -15
  93. package/node_modules/@oxygen/shared/dist/email-tracking-token.d.ts +2 -0
  94. package/node_modules/@oxygen/shared/dist/email-tracking-token.js +1 -0
  95. package/node_modules/@oxygen/shared/dist/feature-gates.d.ts +4 -0
  96. package/node_modules/@oxygen/shared/dist/feature-gates.js +5 -0
  97. package/node_modules/@oxygen/shared/dist/file-import.d.ts +46 -0
  98. package/node_modules/@oxygen/shared/dist/file-import.js +138 -0
  99. package/node_modules/@oxygen/shared/dist/guided-activation.d.ts +8 -0
  100. package/node_modules/@oxygen/shared/dist/guided-company-files.d.ts +13 -0
  101. package/node_modules/@oxygen/shared/dist/guided-company-files.js +14 -0
  102. package/node_modules/@oxygen/shared/dist/guided-first-sourcing.d.ts +116 -0
  103. package/node_modules/@oxygen/shared/dist/guided-first-sourcing.js +11 -0
  104. package/node_modules/@oxygen/shared/dist/guided-onboarding-answers.d.ts +4 -0
  105. package/node_modules/@oxygen/shared/dist/guided-onboarding-answers.js +42 -0
  106. package/node_modules/@oxygen/shared/dist/guided-onboarding-company-context.d.ts +22 -0
  107. package/node_modules/@oxygen/shared/dist/guided-onboarding-company-context.js +38 -0
  108. package/node_modules/@oxygen/shared/dist/guided-onboarding-journey.d.ts +147 -0
  109. package/node_modules/@oxygen/shared/dist/guided-onboarding-journey.fixture.d.ts +12 -0
  110. package/node_modules/@oxygen/shared/dist/guided-onboarding-journey.fixture.js +83 -0
  111. package/node_modules/@oxygen/shared/dist/guided-onboarding-journey.js +44 -0
  112. package/node_modules/@oxygen/shared/dist/guided-onboarding-prospects.d.ts +7 -0
  113. package/node_modules/@oxygen/shared/dist/guided-onboarding-prospects.js +13 -0
  114. package/node_modules/@oxygen/shared/dist/guided-onboarding-signals.d.ts +4 -0
  115. package/node_modules/@oxygen/shared/dist/guided-onboarding-signals.js +34 -0
  116. package/node_modules/@oxygen/shared/dist/guided-trial-billing.d.ts +26 -0
  117. package/node_modules/@oxygen/shared/dist/guided-trial-billing.js +19 -0
  118. package/node_modules/@oxygen/shared/dist/index.d.ts +0 -1
  119. package/node_modules/@oxygen/shared/dist/index.js +0 -6
  120. package/node_modules/@oxygen/shared/dist/table-limits.d.ts +1 -0
  121. package/node_modules/@oxygen/shared/dist/table-limits.js +6 -0
  122. package/node_modules/@oxygen/shared/dist/teammates.d.ts +13 -8
  123. package/node_modules/@oxygen/shared/dist/teammates.js +20 -11
  124. package/node_modules/@oxygen/shared/dist/user-capability-routing.js +78 -0
  125. package/node_modules/@oxygen/shared/dist/version.generated.d.ts +1 -1
  126. package/node_modules/@oxygen/shared/dist/version.generated.js +1 -1
  127. package/node_modules/@oxygen/shared/dist/workspace-placement-view.d.ts +149 -0
  128. package/node_modules/@oxygen/shared/dist/workspace-placement-view.js +101 -0
  129. package/node_modules/@oxygen/shared/dist/workspace-placement.d.ts +77 -0
  130. package/node_modules/@oxygen/shared/dist/workspace-placement.js +94 -0
  131. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync,
3
3
  import { homedir } from "node:os";
4
4
  import { dirname, join } from "node:path";
5
5
  import { promisify } from "node:util";
6
- import { OxygenError } from "@oxygen/shared";
6
+ import { OxygenError } from "@oxygen/shared/cli-result";
7
7
  import { sameApiOrigin } from "./runtime.js";
8
8
  const execFileAsync = promisify(execFile);
9
9
  const SERVICE_NAME = "oxygen-cli";
@@ -1,3 +1,4 @@
1
+ import { createHash } from "node:crypto";
1
2
  import { readFile, writeFile } from "node:fs/promises";
2
3
  import { basename, extname, resolve } from "node:path";
3
4
  import { OxygenError } from "@oxygen/shared/cli-result";
@@ -31,8 +32,50 @@ const GROUP_PURPOSES = {
31
32
  "notetaker notes": "Edit saved meeting notes.",
32
33
  onboarding: "Save workspace discovery choices and resume guided onboarding.",
33
34
  "onboarding activation": "Resume your dev-pilot activation and its native resources.",
35
+ "onboarding journey": "Resume private onboarding, save answers and navigate using native revisions.",
36
+ "onboarding first-sourcing": "Read and review the native first-leads search before approving a capped run.",
37
+ };
38
+ const GUIDED_JOURNEY_FLAGS = {
39
+ activationId: { flag: "activation-id", help: "Exact activation ID returned by onboarding activation start or status." },
40
+ revision: { help: "Current activation revision returned by onboarding journey get; refresh after a conflict." },
41
+ mutation_id: { help: "Stable ID for this exact change; reuse only to recover the same request." },
42
+ step: { help: "Current saved step from onboarding journey get; use the revision you reviewed." },
43
+ answers: { help: "JSON object keyed by the current step, containing that step's reviewed answers." },
44
+ paused: { help: "Pause at this saved step; --no-paused resumes without advancing.", negateHelp: "Resume the saved step and tour position without changing visited history." },
45
+ tour_active_stop: { help: "Exact tour panel to return to, separate from visited history; only at the tour step." },
46
+ };
47
+ const GUIDED_FIRST_SOURCING_FLAGS = {
48
+ activationId: GUIDED_JOURNEY_FLAGS.activationId,
49
+ revision: { help: "Current activation revision from onboarding first-sourcing get; refresh and review after a conflict." },
50
+ generation: { help: "Current journey generation from onboarding journey get; supply revision, generation and --timezone-hint together for nightly defaults." },
51
+ timezoneHint: { flag: "timezone-hint", aliases: ["timezoneHint"], help: "Provisional customer/browser IANA timezone; supply revision, generation and --timezone-hint together. Does not confirm or save a schedule." },
52
+ "bounds.targetCount": { flag: "bounds-target-count", help: "Positive lead target, at most 50000; must match the stored preview for run." },
53
+ "bounds.maxPages": { flag: "bounds-max-pages", help: "Positive provider-page ceiling, at most 1000; must match the stored preview for run." },
54
+ "bounds.maxCredits": { flag: "bounds-max-credits", help: "Positive credit ceiling; native current pricing and the stored preview apply." },
55
+ previewId: { flag: "preview-id", help: "Exact stored previewId returned by onboarding first-sourcing preview; pass unchanged." },
56
+ previewDigest: { flag: "preview-digest", help: "Exact lowercase previewDigest from the stored native preview; pass unchanged." },
57
+ approved: { help: "Approve this exact stored preview and its bounds; native billing, access and current revision still apply." },
34
58
  };
35
59
  const OPERATION_FLAGS = {
60
+ "onboarding first-sourcing get": GUIDED_FIRST_SOURCING_FLAGS,
61
+ "onboarding first-sourcing preview": GUIDED_FIRST_SOURCING_FLAGS,
62
+ "onboarding first-sourcing run": GUIDED_FIRST_SOURCING_FLAGS,
63
+ "onboarding company-files upload": {
64
+ activationId: GUIDED_JOURNEY_FLAGS.activationId,
65
+ revision: GUIDED_JOURNEY_FLAGS.revision,
66
+ upload_id: { help: "Stable UUID for these exact original file bytes; reuse only to recover the same upload." },
67
+ sha256: { help: "Lowercase SHA-256 of the original file bytes; native storage verifies it." },
68
+ size_bytes: { help: "Exact original file byte length, before base64 encoding." },
69
+ },
70
+ "onboarding journey get": GUIDED_JOURNEY_FLAGS,
71
+ "onboarding journey save": GUIDED_JOURNEY_FLAGS,
72
+ "onboarding journey advance": GUIDED_JOURNEY_FLAGS,
73
+ "onboarding journey back": GUIDED_JOURNEY_FLAGS,
74
+ "onboarding journey restart": GUIDED_JOURNEY_FLAGS,
75
+ "onboarding journey navigation": GUIDED_JOURNEY_FLAGS,
76
+ "onboarding journey prospects-preview": GUIDED_JOURNEY_FLAGS,
77
+ "onboarding journey billing": GUIDED_JOURNEY_FLAGS,
78
+ "onboarding journey checkout": GUIDED_JOURNEY_FLAGS,
36
79
  "agent session activate": {
37
80
  revision: { help: "Current session revision returned by agent session preview; must match the reviewed configuration." },
38
81
  preview_token: { help: "Exact preview_token from agent session preview, binding reviewed resources, actions, schedule and credit caps. Pass unchanged; --approved is separate. Preview again after changes." },
@@ -85,12 +128,14 @@ export function registerCustomerOperationCommands(program, handle) {
85
128
  if (spec.binary)
86
129
  command.requiredOption("--output <path>", "Write the exact downloaded bytes to this local file.");
87
130
  if (spec.multipart)
88
- command.option("--file <path>", "Upload bytes from this local file. Omit the base64 flag; file name and content type default from the path.");
131
+ command.option("--file <path>", "Upload bytes from this local file. Omit the base64 flag; file name and content type default from the path."
132
+ + (spec.multipart.fileMetadata ? " Original SHA-256 and size are derived; explicit assertions must match." : ""));
89
133
  for (const name of contract.required ?? []) {
90
134
  const property = contract.properties[name];
91
135
  const flag = `--${overlay[name]?.flag ?? name.replace(/_/g, "-")}`;
92
136
  const option = command.options.find((candidate) => candidate.long === flag || candidate.long === `${flag}-json`);
93
- const multipartAlternative = spec.multipart && [spec.multipart.contentField, spec.multipart.nameField, spec.multipart.typeField].includes(name);
137
+ const multipartAlternative = spec.multipart && [spec.multipart.contentField, spec.multipart.nameField, spec.multipart.typeField,
138
+ ...(spec.multipart.fileMetadata ? [spec.multipart.fileMetadata.sha256Field, spec.multipart.fileMetadata.sizeBytesField] : [])].includes(name);
94
139
  if (multipartAlternative) {
95
140
  if (option)
96
141
  option.description = `${option.description} Required unless supplied by --file.`.trim();
@@ -113,9 +158,22 @@ export function registerCustomerOperationCommands(program, handle) {
113
158
  if (input[spec.multipart.contentField] !== undefined)
114
159
  throw new OxygenError("invalid_request", "Choose --file or the base64 content flag, not both.", { exitCode: 2 });
115
160
  const filePath = String(options.file);
116
- input[spec.multipart.contentField] = (await readFile(filePath)).toString("base64");
161
+ const bytes = await readFile(filePath);
162
+ input[spec.multipart.contentField] = bytes.toString("base64");
117
163
  input[spec.multipart.nameField] ??= basename(filePath);
118
164
  input[spec.multipart.typeField] ??= uploadContentType(filePath);
165
+ const metadata = spec.multipart.fileMetadata;
166
+ if (metadata) {
167
+ const digest = createHash("sha256").update(bytes).digest("hex");
168
+ if (input[metadata.sha256Field] !== undefined && input[metadata.sha256Field] !== digest) {
169
+ throw new OxygenError("invalid_request", `${metadata.sha256Field} must match the original file bytes.`, { exitCode: 2 });
170
+ }
171
+ if (input[metadata.sizeBytesField] !== undefined && input[metadata.sizeBytesField] !== bytes.length) {
172
+ throw new OxygenError("invalid_request", `${metadata.sizeBytesField} must equal the original decoded byte length.`, { exitCode: 2 });
173
+ }
174
+ input[metadata.sha256Field] ??= digest;
175
+ input[metadata.sizeBytesField] ??= bytes.length;
176
+ }
119
177
  }
120
178
  const issues = operationInputIssues(spec, input);
121
179
  if (issues.length)
@@ -188,6 +246,7 @@ function uploadContentType(filePath) {
188
246
  const types = {
189
247
  ".png": "image/png", ".jpg": "image/jpeg", ".jpeg": "image/jpeg", ".webp": "image/webp", ".svg": "image/svg+xml",
190
248
  ".csv": "text/csv", ".json": "application/json", ".jsonl": "application/x-ndjson",
249
+ ".txt": "text/plain", ".md": "text/markdown", ".markdown": "text/markdown", ".pdf": "application/pdf",
191
250
  ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
192
251
  };
193
252
  return types[extname(filePath).toLowerCase()] ?? "application/octet-stream";
package/dist/help.js CHANGED
@@ -170,7 +170,7 @@ export function applyOxygenHelp(program, binaryName, docsUrl = "https://oxygen-a
170
170
  // first-touch surface names the skill that teaches the GTM loops.
171
171
  ` 2. ${binaryName} skills install --json load the skills that teach the GTM loops (automatic after login)`,
172
172
  " Add --project to keep the skills inside the current project, including confined agent sessions.",
173
- ` 3. ${binaryName} context resolve --purpose onboarding --json load workspace context and the next reads`,
173
+ ` 3. ${binaryName} context resolve --purpose onboarding --json load context; may migrate the workspace schema`,
174
174
  // Populated workspaces need the same first-win guidance as empty ones.
175
175
  ` Getting started? ${binaryName} skills get oxygen-onboarding --json`,
176
176
  " It sharpens your offer and ICP, then ranks the warmest leads you can reach now.",
package/dist/index.d.ts CHANGED
@@ -1,100 +1,2 @@
1
- import "./admin-lead-magnet-commands.js";
2
- import "./admin-primary-providers-render.js";
3
- import "./auto-update.js";
4
- import "./browser-login.js";
5
- import "./cli-values.js";
6
- import "./column-decision-options.js";
7
- import "./column-run-notices.js";
8
- import "./command-manifest.js";
9
- import "./compact-list-flags.js";
10
- import "./connectors-commands.js";
11
- import "./contract-flags.js";
12
- import "./credentials.js";
13
- import "./crm-file-read-commands.js";
14
- import "./crm-support-flags.js";
15
- import "./customer-operation-commands.js";
16
- import "./database-query-flags.js";
17
- import "./diagnostics.js";
18
- import "./feed-read-flags.js";
19
- import "./functions-commands.js";
20
- import "./help.js";
21
- import "./home-standup.js";
22
- import "./http-client.js";
23
- import "./inbox-needs-reply-notice.js";
24
- import "./json-output.js";
25
- import "./knowledge-mirror.js";
26
- import "./knowledge-repository-commands.js";
27
- import "./local-custom-http-column.js";
28
- import "./mailbox-ramp-notice.js";
29
- import "./run-wait.js";
30
- import "./runtime.js";
31
- import "./search-ai-filter-notice.js";
32
- import "./sender-limits-flags.js";
33
- import "./session.js";
34
- import "./settings-commands.js";
35
- import "./skills.js";
36
- import "./streamed-file-import.js";
37
- import "./tool-catalog-detail-command.js";
38
- import "./tool-catalog-search-window.js";
39
- import "./transcript.js";
40
- import "./ugc-commands.js";
41
- import "./update.js";
42
- import "./util.js";
43
- import "./visual-commands.js";
44
- import "./whatsapp-account-flags.js";
45
- import "./workflow-plan-limit-notices.js";
46
- import "./workflow-run-list-flags.js";
47
- import "./workspace-skill-commands.js";
48
- import "./workspace-utility-flags.js";
49
- import "@oxygen/recipe-sdk";
50
- import "@oxygen/shared";
51
- import "@oxygen/shared/billing";
52
- import "@oxygen/shared/company-reply-pause";
53
- import "@oxygen/shared/contracts/billing-owner-read";
54
- import "@oxygen/shared/contracts/copilot-sessions";
55
- import "@oxygen/shared/contracts/crm-enrichment-read";
56
- import "@oxygen/shared/contracts/database";
57
- import "@oxygen/shared/contracts/inbox-drafts-read";
58
- import "@oxygen/shared/contracts/integration-connect";
59
- import "@oxygen/shared/contracts/knowledge-content-reads";
60
- import "@oxygen/shared/contracts/limits-read";
61
- import "@oxygen/shared/contracts/linkedin-invites-list";
62
- import "@oxygen/shared/contracts/operations";
63
- import "@oxygen/shared/contracts/pipedrive-catalog";
64
- import "@oxygen/shared/contracts/publishing-reads";
65
- import "@oxygen/shared/contracts/sender-limits";
66
- import "@oxygen/shared/contracts/sequence-analytics-read";
67
- import "@oxygen/shared/contracts/sequence-list";
68
- import "@oxygen/shared/contracts/table-feed-update";
69
- import "@oxygen/shared/contracts/table-list";
70
- import "@oxygen/shared/contracts/table-query-grid";
71
- import "@oxygen/shared/contracts/table-query-raw";
72
- import "@oxygen/shared/contracts/whatsapp-reads";
73
- import "@oxygen/shared/contracts/workflow-run-list";
74
- import "@oxygen/shared/copilot-questions";
75
- import "@oxygen/shared/data-suppliers";
76
- import "@oxygen/shared/file-import";
77
- import "@oxygen/shared/knowledge-constants";
78
- import "@oxygen/shared/linkedin-sequences";
79
- import "@oxygen/shared/mailbox-import";
80
- import "@oxygen/shared/plan-band";
81
- import "@oxygen/shared/pricing-sheet";
82
- import "@oxygen/shared/select-options";
83
- import "@oxygen/shared/sequence-lifecycle";
84
- import "@oxygen/shared/table-field-types";
85
- import "@oxygen/shared/table-filter-operators";
86
- import "@oxygen/shared/table-run-summary";
87
- import "@oxygen/shared/user-capability-routing";
88
- import "@oxygen/workflows";
89
- import "commander";
90
- import "node:child_process";
91
- import "node:crypto";
92
- import "node:fs";
93
- import "node:os";
94
- import "node:path";
95
- import "node:process";
96
- import "node:readline/promises";
97
- import "node:url";
98
- import { Command } from "commander";
99
- export declare function createProgram(): Command;
1
+ export { createProgram } from "./command-families/program.js";
100
2
  export { formatDisabledWorkflowNotices } from "./command-support.js";
package/dist/index.js CHANGED
@@ -1,344 +1,12 @@
1
- // Preserve pre-extraction runtime import initialization order.
2
- import "./admin-lead-magnet-commands.js";
3
- import "./admin-primary-providers-render.js";
4
- import "./auto-update.js";
5
- import "./browser-login.js";
6
- import "./cli-values.js";
7
- import "./column-decision-options.js";
8
- import "./column-run-notices.js";
9
- import "./command-manifest.js";
10
- import "./compact-list-flags.js";
11
- import "./connectors-commands.js";
12
- import "./contract-flags.js";
13
- import "./credentials.js";
14
- import "./crm-file-read-commands.js";
15
- import "./crm-support-flags.js";
16
- import "./customer-operation-commands.js";
17
- import "./database-query-flags.js";
18
- import "./diagnostics.js";
19
- import "./feed-read-flags.js";
20
- import "./functions-commands.js";
21
- import "./help.js";
22
- import "./home-standup.js";
23
- import "./http-client.js";
24
- import "./inbox-needs-reply-notice.js";
25
- import "./json-output.js";
26
- import "./knowledge-mirror.js";
27
- import "./knowledge-repository-commands.js";
28
- import "./local-custom-http-column.js";
29
- import "./mailbox-ramp-notice.js";
30
- import "./run-wait.js";
31
- import "./runtime.js";
32
- import "./search-ai-filter-notice.js";
33
- import "./sender-limits-flags.js";
34
- import "./session.js";
35
- import "./settings-commands.js";
36
- import "./skills.js";
37
- import "./streamed-file-import.js";
38
- import "./tool-catalog-detail-command.js";
39
- import "./tool-catalog-search-window.js";
40
- import "./transcript.js";
41
- import "./ugc-commands.js";
42
- import "./update.js";
43
- import "./util.js";
44
- import "./visual-commands.js";
45
- import "./whatsapp-account-flags.js";
46
- import "./workflow-plan-limit-notices.js";
47
- import "./workflow-run-list-flags.js";
48
- import "./workspace-skill-commands.js";
49
- import "./workspace-utility-flags.js";
50
- import "@oxygen/recipe-sdk";
51
- import "@oxygen/shared";
52
- import "@oxygen/shared/billing";
53
- import "@oxygen/shared/company-reply-pause";
54
- import "@oxygen/shared/contracts/billing-owner-read";
55
- import "@oxygen/shared/contracts/copilot-sessions";
56
- import "@oxygen/shared/contracts/crm-enrichment-read";
57
- import "@oxygen/shared/contracts/database";
58
- import "@oxygen/shared/contracts/inbox-drafts-read";
59
- import "@oxygen/shared/contracts/integration-connect";
60
- import "@oxygen/shared/contracts/knowledge-content-reads";
61
- import "@oxygen/shared/contracts/limits-read";
62
- import "@oxygen/shared/contracts/linkedin-invites-list";
63
- import "@oxygen/shared/contracts/operations";
64
- import "@oxygen/shared/contracts/pipedrive-catalog";
65
- import "@oxygen/shared/contracts/publishing-reads";
66
- import "@oxygen/shared/contracts/sender-limits";
67
- import "@oxygen/shared/contracts/sequence-analytics-read";
68
- import "@oxygen/shared/contracts/sequence-list";
69
- import "@oxygen/shared/contracts/table-feed-update";
70
- import "@oxygen/shared/contracts/table-list";
71
- import "@oxygen/shared/contracts/table-query-grid";
72
- import "@oxygen/shared/contracts/table-query-raw";
73
- import "@oxygen/shared/contracts/whatsapp-reads";
74
- import "@oxygen/shared/contracts/workflow-run-list";
75
- import "@oxygen/shared/copilot-questions";
76
- import "@oxygen/shared/data-suppliers";
77
- import "@oxygen/shared/file-import";
78
- import "@oxygen/shared/knowledge-constants";
79
- import "@oxygen/shared/linkedin-sequences";
80
- import "@oxygen/shared/mailbox-import";
81
- import "@oxygen/shared/plan-band";
82
- import "@oxygen/shared/pricing-sheet";
83
- import "@oxygen/shared/select-options";
84
- import "@oxygen/shared/sequence-lifecycle";
85
- import "@oxygen/shared/table-field-types";
86
- import "@oxygen/shared/table-filter-operators";
87
- import "@oxygen/shared/table-run-summary";
88
- import "@oxygen/shared/user-capability-routing";
89
- import "@oxygen/workflows";
90
- import "commander";
91
- import "node:child_process";
92
- import "node:crypto";
93
- import "node:fs";
94
- import "node:os";
95
- import "node:path";
96
- import "node:process";
97
- import "node:readline/promises";
98
- import "node:url";
99
- import { registerAdminLeadMagnetCommands } from "./admin-lead-magnet-commands.js";
100
1
  import { maybeScheduleBackgroundUpdate } from "./auto-update.js";
101
- import { emitCliFailure, handleAsyncAction, writeJson } from "./cli-output.js";
102
- import { recordCliProfileFlag } from "./cli-profile-context.js";
103
- import { registerActionColumnFamily } from "./commands/action-column.js";
104
- import { registerActivationFamily } from "./commands/activation.js";
105
- import { registerAdminFamily } from "./commands/admin.js";
106
- import { registerAdsFamily } from "./commands/ads.js";
107
- import { registerAgentFamily } from "./commands/agent.js";
108
- import { registerApiKeysFamily } from "./commands/api-keys.js";
109
- import { registerApprovalsFamily } from "./commands/approvals.js";
110
- import { registerAuthFamily } from "./commands/auth.js";
111
- import { registerBillingFamily } from "./commands/billing.js";
112
- import { registerBlueprintsFamily } from "./commands/blueprints.js";
113
- import { registerBudgetFamily } from "./commands/budget.js";
114
- import { registerCallablesFamily } from "./commands/callables.js";
115
- import { registerCapabilitiesFamily } from "./commands/capabilities.js";
116
- import { registerCellsFamily } from "./commands/cells.js";
117
- import { registerColumnsFamily } from "./commands/columns.js";
118
- import { registerCommandsFamily } from "./commands/commands.js";
119
- import { registerCommentsFamily } from "./commands/comments.js";
120
- import { registerCompaniesFamily } from "./commands/companies.js";
121
- import { registerConnectionsFamily } from "./commands/connections.js";
122
- import { registerContextFamily } from "./commands/context.js";
123
- import { registerCopilotFamily } from "./commands/copilot.js";
124
- import { registerCrmFamily } from "./commands/crm.js";
125
- import { registerCustomIntegrationsFamily } from "./commands/custom-integrations.js";
126
- import { registerDashboardsFamily } from "./commands/dashboards.js";
127
- import { registerDbFamily } from "./commands/db.js";
128
- import { registerDeliverabilityFamily } from "./commands/deliverability.js";
129
- import { registerDirectoryFamily } from "./commands/directory.js";
130
- import { registerDomainsFamily } from "./commands/domains.js";
131
- import { registerEgressFamily } from "./commands/egress.js";
132
- import { registerEmailFamily } from "./commands/email.js";
133
- import { registerEngagementFamily } from "./commands/engagement.js";
134
- import { registerEnrichColumnFamily } from "./commands/enrich-column.js";
135
- import { registerEnrichmentFamily } from "./commands/enrichment.js";
136
- import { registerFeedbackFamily } from "./commands/feedback.js";
137
- import { registerFeedsFamily } from "./commands/feeds.js";
138
- import { registerFindFamily } from "./commands/find.js";
139
- import { registerFollowersFamily } from "./commands/followers.js";
140
- import { registerFormulasFamily } from "./commands/formulas.js";
141
- import { registerHomeFamily } from "./commands/home.js";
142
- import { registerInboxFamily } from "./commands/inbox.js";
143
- import { registerIntegrationsFamily } from "./commands/integrations.js";
144
- import { registerKnowledgeFamily } from "./commands/knowledge.js";
145
- import { registerLeadSourcingFamily } from "./commands/lead-sourcing.js";
146
- import { registerLimitsFamily } from "./commands/limits.js";
147
- import { registerLinkedinFamily } from "./commands/linkedin.js";
148
- import { registerLoginFamily } from "./commands/login.js";
149
- import { registerLogoutFamily } from "./commands/logout.js";
150
- import { registerMailboxesFamily } from "./commands/mailboxes.js";
151
- import { registerManagedInboxesFamily } from "./commands/managed-inboxes.js";
152
- import { registerMessagesFamily } from "./commands/messages.js";
153
- import { registerNotetakerFamily } from "./commands/notetaker.js";
154
- import { registerObservabilityFamily } from "./commands/observability.js";
155
- import { registerOrgsFamily } from "./commands/orgs.js";
156
- import { registerPeopleFamily } from "./commands/people.js";
157
- import { registerPostsFamily } from "./commands/posts.js";
158
- import { registerProfilesFamily } from "./commands/profiles.js";
159
- import { registerProjectsFamily } from "./commands/projects.js";
160
- import { registerPromptsFamily } from "./commands/prompts.js";
161
- import { registerPublishingFamily } from "./commands/publishing.js";
162
- import { registerRecipesFamily } from "./commands/recipes.js";
163
- import { registerReviewsFamily } from "./commands/reviews.js";
164
- import { registerRowsFamily } from "./commands/rows.js";
165
- import { registerRunsFamily } from "./commands/runs.js";
166
- import { registerSearchFamily } from "./commands/search.js";
167
- import { registerSendersFamily } from "./commands/senders.js";
168
- import { registerSequencesFamily } from "./commands/sequences.js";
169
- import { registerSessionFamily } from "./commands/session.js";
170
- import { registerSignalsFamily } from "./commands/signals.js";
171
- import { registerSignupLeadsFamily } from "./commands/signup-leads.js";
172
- import { registerSkillsFamily } from "./commands/skills.js";
173
- import { registerSourcingFamily } from "./commands/sourcing.js";
174
- import { registerStatusFamily } from "./commands/status.js";
175
- import { registerSupabaseFamily } from "./commands/supabase.js";
176
- import { registerSupportFamily } from "./commands/support.js";
177
- import { registerSuppressionsFamily } from "./commands/suppressions.js";
178
- import { registerTableIngestionsFamily } from "./commands/table-ingestions.js";
179
- import { registerTableRunsFamily } from "./commands/table-runs.js";
180
- import { registerTablesFamily } from "./commands/tables.js";
181
- import { registerTagsFamily } from "./commands/tags.js";
182
- import { registerToolsFamily } from "./commands/tools.js";
183
- import { registerUpdateFamily } from "./commands/update.js";
184
- import { registerVerifyFamily } from "./commands/verify.js";
185
- import { registerViewersFamily } from "./commands/viewers.js";
186
- import { registerVoiceFamily } from "./commands/voice.js";
187
- import { registerWhatsappFamily } from "./commands/whatsapp.js";
188
- import { registerWhoamiFamily } from "./commands/whoami.js";
189
- import { registerWorkerFamily } from "./commands/worker.js";
190
- import { registerWorkflowsFamily } from "./commands/workflows.js";
191
- import { registerWorkspaceFamily } from "./commands/workspace.js";
192
- import { registerConnectorsCommands } from "./connectors-commands.js";
193
- import { defaultApiUrl } from "./credentials.js";
194
- import { registerCrmFileReadCommands } from "./crm-file-read-commands.js";
195
- import { registerCrmSupportFlags } from "./crm-support-flags.js";
196
- import { registerCustomerOperationCommands } from "./customer-operation-commands.js";
2
+ import { emitCliFailure, writeJson } from "./cli-output.js";
3
+ import { createProgram } from "./command-families/program.js";
197
4
  import { beginCliDiagnostics, finishCliDiagnostics, setCliDiagnosticOperation, recordCliDiagnosticFailure } from "./diagnostics.js";
198
- import { registerFunctionsCommands } from "./functions-commands.js";
199
- import { applyOxygenHelp, argvRequestsJson, commanderUsageFailure, commandNameForArgv, enableCommandSuggestions, oxygenDocsUrl, unknownCommandHint, unknownOptionHint, requiredOptionHint, withoutHelpForUnknownCommand, validateRequiredOptionValues } from "./help.js";
200
- import { registerKnowledgeRepositoryCommands } from "./knowledge-repository-commands.js";
201
- import { resolveCliBinaryName } from "./runtime.js";
202
- import { registerSettingsCommands } from "./settings-commands.js";
203
- import { registerUgcCommands } from "./ugc-commands.js";
5
+ import { argvRequestsJson, commanderUsageFailure, commandNameForArgv, unknownCommandHint, unknownOptionHint, requiredOptionHint, withoutHelpForUnknownCommand } from "./help.js";
204
6
  import { isRecord } from "./util.js";
205
- import { registerVisualCommands } from "./visual-commands.js";
206
- import { registerWorkspaceSkillCommands } from "./workspace-skill-commands.js";
207
7
  import { OxygenError } from "@oxygen/shared/cli-result";
208
- import { OXYGEN_VERSION } from "@oxygen/shared/version";
209
- import { Command, CommanderError } from "commander";
210
- export function createProgram() {
211
- const program = new Command();
212
- const binaryName = resolveCliBinaryName();
213
- const directoryDocsUrl = oxygenDocsUrl(defaultApiUrl(), "/agencies");
214
- const billingDocsUrl = oxygenDocsUrl(defaultApiUrl(), "/safety/billing");
215
- program
216
- .name(binaryName)
217
- .description("The agentic GTM platform for B2B GTM teams: tables, enrichment, sequences, workflows, CRM, knowledge. Everything here also runs in the web app and over MCP; every state-changing action returns a web_url deep-link.")
218
- .version(OXYGEN_VERSION)
219
- .option("--pretty", "Indent JSON for human reading; omit for compact agent output.")
220
- .option("--profile <name>", "Use a stored CLI profile for this command.")
221
- .option("--org <organization>", "Use an organization id, Clerk org id, or slug for this command.");
222
- program.hook("preAction", (_root, selected) => {
223
- validateRequiredOptionValues(program, selected);
224
- const options = program.opts();
225
- if (options.profile) {
226
- recordCliProfileFlag(options.profile);
227
- process.env.OXYGEN_PROFILE = options.profile;
228
- }
229
- if (options.org) {
230
- process.env.OXYGEN_ORG = options.org;
231
- }
232
- });
233
- registerLoginFamily(program, handleAsyncAction);
234
- registerAuthFamily(program, handleAsyncAction);
235
- registerProfilesFamily(program, handleAsyncAction);
236
- registerLogoutFamily(program, handleAsyncAction);
237
- registerUpdateFamily(program, handleAsyncAction);
238
- registerApiKeysFamily(program, handleAsyncAction);
239
- registerWhoamiFamily(program, handleAsyncAction);
240
- registerHomeFamily(program, handleAsyncAction);
241
- registerWorkspaceFamily(program, handleAsyncAction);
242
- registerActivationFamily(program, handleAsyncAction);
243
- registerCommandsFamily(program, handleAsyncAction, binaryName);
244
- registerCapabilitiesFamily(program, handleAsyncAction);
245
- registerStatusFamily(program, handleAsyncAction);
246
- registerOrgsFamily(program, handleAsyncAction);
247
- registerSupportFamily(program, handleAsyncAction);
248
- registerFeedbackFamily(program, handleAsyncAction);
249
- registerDbFamily(program, handleAsyncAction);
250
- registerProjectsFamily(program, handleAsyncAction);
251
- registerNotetakerFamily(program, handleAsyncAction);
252
- registerPublishingFamily(program, handleAsyncAction);
253
- registerDashboardsFamily(program, handleAsyncAction);
254
- registerCrmFamily(program, handleAsyncAction);
255
- registerSignalsFamily(program, handleAsyncAction);
256
- registerTablesFamily(program, handleAsyncAction, binaryName);
257
- registerFeedsFamily(program, handleAsyncAction);
258
- registerContextFamily(program, handleAsyncAction);
259
- registerKnowledgeFamily(program, handleAsyncAction);
260
- registerAdsFamily(program, handleAsyncAction);
261
- registerTagsFamily(program, handleAsyncAction);
262
- registerCommentsFamily(program, handleAsyncAction);
263
- registerApprovalsFamily(program, handleAsyncAction);
264
- registerBlueprintsFamily(program, handleAsyncAction);
265
- registerRecipesFamily(program, handleAsyncAction);
266
- registerPromptsFamily(program, handleAsyncAction);
267
- registerReviewsFamily(program, handleAsyncAction);
268
- registerColumnsFamily(program, handleAsyncAction);
269
- registerActionColumnFamily(program, handleAsyncAction);
270
- registerFormulasFamily(program, handleAsyncAction);
271
- registerTableRunsFamily(program, handleAsyncAction);
272
- registerTableIngestionsFamily(program, handleAsyncAction);
273
- registerSourcingFamily(program, handleAsyncAction);
274
- registerLeadSourcingFamily(program, handleAsyncAction);
275
- registerSearchFamily(program, handleAsyncAction);
276
- registerCompaniesFamily(program, handleAsyncAction);
277
- registerPeopleFamily(program, handleAsyncAction);
278
- registerWorkerFamily(program, handleAsyncAction);
279
- registerLimitsFamily(program, handleAsyncAction, billingDocsUrl);
280
- registerBillingFamily(program, handleAsyncAction, billingDocsUrl);
281
- registerBudgetFamily(program, handleAsyncAction);
282
- registerEgressFamily(program, handleAsyncAction);
283
- registerDirectoryFamily(program, handleAsyncAction, directoryDocsUrl, billingDocsUrl);
284
- registerAdminFamily(program, handleAsyncAction, binaryName);
285
- registerSignupLeadsFamily(program, handleAsyncAction);
286
- registerObservabilityFamily(program, handleAsyncAction);
287
- registerAgentFamily(program, handleAsyncAction);
288
- registerCopilotFamily(program, handleAsyncAction);
289
- registerRunsFamily(program, handleAsyncAction);
290
- registerRowsFamily(program, handleAsyncAction);
291
- registerCellsFamily(program, handleAsyncAction);
292
- registerSessionFamily(program, handleAsyncAction);
293
- registerCustomIntegrationsFamily(program, handleAsyncAction);
294
- registerToolsFamily(program, handleAsyncAction);
295
- registerEnrichColumnFamily(program, handleAsyncAction);
296
- registerFindFamily(program, handleAsyncAction);
297
- registerVerifyFamily(program, handleAsyncAction);
298
- registerEnrichmentFamily(program, handleAsyncAction);
299
- registerSupabaseFamily(program, handleAsyncAction);
300
- registerIntegrationsFamily(program, handleAsyncAction);
301
- registerSendersFamily(program, handleAsyncAction);
302
- registerConnectionsFamily(program, handleAsyncAction);
303
- registerFollowersFamily(program, handleAsyncAction);
304
- registerViewersFamily(program, handleAsyncAction);
305
- registerPostsFamily(program, handleAsyncAction);
306
- registerEngagementFamily(program, handleAsyncAction);
307
- registerLinkedinFamily(program, handleAsyncAction);
308
- registerWhatsappFamily(program, handleAsyncAction);
309
- registerInboxFamily(program, handleAsyncAction);
310
- registerMessagesFamily(program, handleAsyncAction);
311
- registerSequencesFamily(program, handleAsyncAction);
312
- registerVoiceFamily(program, handleAsyncAction);
313
- registerSuppressionsFamily(program, handleAsyncAction);
314
- registerEmailFamily(program, handleAsyncAction);
315
- registerManagedInboxesFamily(program, handleAsyncAction);
316
- registerMailboxesFamily(program, handleAsyncAction);
317
- registerDeliverabilityFamily(program, handleAsyncAction);
318
- registerDomainsFamily(program, handleAsyncAction);
319
- registerCallablesFamily(program, handleAsyncAction);
320
- registerWorkflowsFamily(program, handleAsyncAction);
321
- registerSkillsFamily(program, handleAsyncAction);
322
- registerVisualCommands(program, handleAsyncAction);
323
- registerFunctionsCommands(program, handleAsyncAction);
324
- registerUgcCommands(program, handleAsyncAction);
325
- registerKnowledgeRepositoryCommands(program, handleAsyncAction);
326
- registerAdminLeadMagnetCommands(program, handleAsyncAction);
327
- registerConnectorsCommands(program, handleAsyncAction);
328
- registerSettingsCommands(program, handleAsyncAction);
329
- registerCrmSupportFlags(program);
330
- registerWorkspaceSkillCommands(program, handleAsyncAction);
331
- registerCustomerOperationCommands(program, handleAsyncAction);
332
- registerCrmFileReadCommands(program, handleAsyncAction);
333
- // After the register* helpers: help groups are assigned to the commands that
334
- // exist when this runs, and a family registered later fell into commander's
335
- // trailing default "Commands:" list (the 2026-09-30 blind agent read the first
336
- // 80 lines of help and missed `connectors` there).
337
- applyOxygenHelp(program, binaryName, oxygenDocsUrl(defaultApiUrl()));
338
- // Last, so every command registered above is covered.
339
- enableCommandSuggestions(program);
340
- return program;
341
- }
8
+ import { CommanderError } from "commander";
9
+ export { createProgram } from "./command-families/program.js";
342
10
  // Piping CLI output into a consumer that exits early (`oxygen whoami --json |
343
11
  // head -c 20`) otherwise crashes with a raw EPIPE stack after the consumer
344
12
  // closes the pipe; a closed pipe is normal shell behavior, not an error.
@@ -16,7 +16,7 @@ import { createHash } from "node:crypto";
16
16
  import { chmodSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
17
17
  import { homedir } from "node:os";
18
18
  import { basename, dirname, join } from "node:path";
19
- import { OxygenError } from "@oxygen/shared";
19
+ import { OxygenError } from "@oxygen/shared/cli-result";
20
20
  const MIRROR_SIDECAR_DIRNAME = ".oxygen";
21
21
  const MIRROR_MANIFEST_FILENAME = "manifest.json";
22
22
  const MIRROR_LOCK_FILENAME = "lock";
package/dist/skills.js CHANGED
@@ -2,12 +2,14 @@ import { spawnSync } from "node:child_process";
2
2
  import { closeSync, existsSync, lstatSync, mkdirSync, mkdtempSync, openSync, readFileSync, readSync, readdirSync, readlinkSync, rmSync, unlinkSync, writeFileSync, } from "node:fs";
3
3
  import { homedir, tmpdir } from "node:os";
4
4
  import { dirname, join, posix, resolve } from "node:path";
5
- import { OxygenError, errorMessage, inferUserCapabilityRoute, serializeCapabilityRoute, toFailure, } from "@oxygen/shared";
5
+ import { OxygenError, toFailure } from "@oxygen/shared/cli-result";
6
+ import { errorMessage } from "@oxygen/shared/error-message";
7
+ import { serializeCapabilityRoute } from "@oxygen/shared/capability-discovery";
8
+ import { capabilityDiscoveryRecovery, inferUserCapabilityRoute } from "@oxygen/shared/user-capability-routing";
6
9
  import { defaultApiUrl, loadCredentials, normalizeApiUrl } from "./credentials.js";
7
10
  import { requestOxygen } from "./http-client.js";
8
11
  import { isRecord, readOption } from "./util.js";
9
12
  import { resolveCmdShimInvocation } from "./windows-shim.js";
10
- import { capabilityDiscoveryRecovery } from "@oxygen/shared/user-capability-routing";
11
13
  const DEFAULT_SKILL_AGENTS = ["codex", "claude-code", "cursor"];
12
14
  const SKILL_INDEX_PATH = "/.well-known/skills/index.json";
13
15
  const SKILLS_ACCESS_API_PATH = "/api/cli/skills/access";
package/dist/update.js CHANGED
@@ -2,7 +2,8 @@ import { spawnSync } from "node:child_process";
2
2
  import { readFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
- import { OXYGEN_VERSION, OxygenError } from "@oxygen/shared";
5
+ import { OxygenError } from "@oxygen/shared/cli-result";
6
+ import { OXYGEN_VERSION } from "@oxygen/shared/version";
6
7
  import { runAutomaticSkillsInstall, skippedAutomaticSkillsInstall, } from "./skills.js";
7
8
  import { resolveCliBinaryName } from "./runtime.js";
8
9
  import { readOption } from "./util.js";
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import { type ExtractedCommandActionHandler } from "./command-support.js";
3
+ export declare function registerWorkspacePlacementCommands(root: Command, handle: ExtractedCommandActionHandler): void;