pax8-cta 0.1.0

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 (224) hide show
  1. package/LICENSE +200 -0
  2. package/README.md +659 -0
  3. package/demo-data/solutions/ProductQADemo_1_0_0_2_managed.zip +0 -0
  4. package/dist/commands/analyze.d.ts +28 -0
  5. package/dist/commands/analyze.d.ts.map +1 -0
  6. package/dist/commands/analyze.js +571 -0
  7. package/dist/commands/analyze.js.map +1 -0
  8. package/dist/commands/auth.d.ts +18 -0
  9. package/dist/commands/auth.d.ts.map +1 -0
  10. package/dist/commands/auth.js +171 -0
  11. package/dist/commands/auth.js.map +1 -0
  12. package/dist/commands/config.d.ts +34 -0
  13. package/dist/commands/config.d.ts.map +1 -0
  14. package/dist/commands/config.js +299 -0
  15. package/dist/commands/config.js.map +1 -0
  16. package/dist/commands/demo.d.ts +33 -0
  17. package/dist/commands/demo.d.ts.map +1 -0
  18. package/dist/commands/demo.js +362 -0
  19. package/dist/commands/demo.js.map +1 -0
  20. package/dist/commands/deploy.d.ts +18 -0
  21. package/dist/commands/deploy.d.ts.map +1 -0
  22. package/dist/commands/deploy.js +1186 -0
  23. package/dist/commands/deploy.js.map +1 -0
  24. package/dist/commands/deployments/helpers.d.ts +68 -0
  25. package/dist/commands/deployments/helpers.d.ts.map +1 -0
  26. package/dist/commands/deployments/helpers.js +414 -0
  27. package/dist/commands/deployments/helpers.js.map +1 -0
  28. package/dist/commands/deployments/index.d.ts +24 -0
  29. package/dist/commands/deployments/index.d.ts.map +1 -0
  30. package/dist/commands/deployments/index.js +47 -0
  31. package/dist/commands/deployments/index.js.map +1 -0
  32. package/dist/commands/deployments/list.d.ts +18 -0
  33. package/dist/commands/deployments/list.d.ts.map +1 -0
  34. package/dist/commands/deployments/list.js +97 -0
  35. package/dist/commands/deployments/list.js.map +1 -0
  36. package/dist/commands/deployments/show.d.ts +18 -0
  37. package/dist/commands/deployments/show.d.ts.map +1 -0
  38. package/dist/commands/deployments/show.js +81 -0
  39. package/dist/commands/deployments/show.js.map +1 -0
  40. package/dist/commands/deployments/undo.d.ts +18 -0
  41. package/dist/commands/deployments/undo.d.ts.map +1 -0
  42. package/dist/commands/deployments/undo.js +295 -0
  43. package/dist/commands/deployments/undo.js.map +1 -0
  44. package/dist/commands/export.d.ts +18 -0
  45. package/dist/commands/export.d.ts.map +1 -0
  46. package/dist/commands/export.js +133 -0
  47. package/dist/commands/export.js.map +1 -0
  48. package/dist/commands/import.d.ts +18 -0
  49. package/dist/commands/import.d.ts.map +1 -0
  50. package/dist/commands/import.js +129 -0
  51. package/dist/commands/import.js.map +1 -0
  52. package/dist/commands/init-config.d.ts +26 -0
  53. package/dist/commands/init-config.d.ts.map +1 -0
  54. package/dist/commands/init-config.js +123 -0
  55. package/dist/commands/init-config.js.map +1 -0
  56. package/dist/commands/init-validation.d.ts +47 -0
  57. package/dist/commands/init-validation.d.ts.map +1 -0
  58. package/dist/commands/init-validation.js +339 -0
  59. package/dist/commands/init-validation.js.map +1 -0
  60. package/dist/commands/init-wizard.d.ts +25 -0
  61. package/dist/commands/init-wizard.d.ts.map +1 -0
  62. package/dist/commands/init-wizard.js +433 -0
  63. package/dist/commands/init-wizard.js.map +1 -0
  64. package/dist/commands/init.d.ts +18 -0
  65. package/dist/commands/init.d.ts.map +1 -0
  66. package/dist/commands/init.js +46 -0
  67. package/dist/commands/init.js.map +1 -0
  68. package/dist/commands/resolve-url.d.ts +18 -0
  69. package/dist/commands/resolve-url.d.ts.map +1 -0
  70. package/dist/commands/resolve-url.js +126 -0
  71. package/dist/commands/resolve-url.js.map +1 -0
  72. package/dist/commands/setup.d.ts +18 -0
  73. package/dist/commands/setup.d.ts.map +1 -0
  74. package/dist/commands/setup.js +239 -0
  75. package/dist/commands/setup.js.map +1 -0
  76. package/dist/commands/solutions/drift-analysis.d.ts +73 -0
  77. package/dist/commands/solutions/drift-analysis.d.ts.map +1 -0
  78. package/dist/commands/solutions/drift-analysis.js +416 -0
  79. package/dist/commands/solutions/drift-analysis.js.map +1 -0
  80. package/dist/commands/solutions/drift.d.ts +32 -0
  81. package/dist/commands/solutions/drift.d.ts.map +1 -0
  82. package/dist/commands/solutions/drift.js +641 -0
  83. package/dist/commands/solutions/drift.js.map +1 -0
  84. package/dist/commands/solutions/fix-planner.d.ts +48 -0
  85. package/dist/commands/solutions/fix-planner.d.ts.map +1 -0
  86. package/dist/commands/solutions/fix-planner.js +43 -0
  87. package/dist/commands/solutions/fix-planner.js.map +1 -0
  88. package/dist/commands/solutions/helpers.d.ts +35 -0
  89. package/dist/commands/solutions/helpers.d.ts.map +1 -0
  90. package/dist/commands/solutions/helpers.js +54 -0
  91. package/dist/commands/solutions/helpers.js.map +1 -0
  92. package/dist/commands/solutions/index.d.ts +18 -0
  93. package/dist/commands/solutions/index.d.ts.map +1 -0
  94. package/dist/commands/solutions/index.js +30 -0
  95. package/dist/commands/solutions/index.js.map +1 -0
  96. package/dist/commands/solutions/list.d.ts +18 -0
  97. package/dist/commands/solutions/list.d.ts.map +1 -0
  98. package/dist/commands/solutions/list.js +174 -0
  99. package/dist/commands/solutions/list.js.map +1 -0
  100. package/dist/commands/solutions/remove.d.ts +18 -0
  101. package/dist/commands/solutions/remove.d.ts.map +1 -0
  102. package/dist/commands/solutions/remove.js +137 -0
  103. package/dist/commands/solutions/remove.js.map +1 -0
  104. package/dist/commands/solutions/risk-calculator.d.ts +33 -0
  105. package/dist/commands/solutions/risk-calculator.d.ts.map +1 -0
  106. package/dist/commands/solutions/risk-calculator.js +79 -0
  107. package/dist/commands/solutions/risk-calculator.js.map +1 -0
  108. package/dist/commands/solutions/show.d.ts +18 -0
  109. package/dist/commands/solutions/show.d.ts.map +1 -0
  110. package/dist/commands/solutions/show.js +165 -0
  111. package/dist/commands/solutions/show.js.map +1 -0
  112. package/dist/commands/status.d.ts +18 -0
  113. package/dist/commands/status.d.ts.map +1 -0
  114. package/dist/commands/status.js +573 -0
  115. package/dist/commands/status.js.map +1 -0
  116. package/dist/commands/telemetry.d.ts +18 -0
  117. package/dist/commands/telemetry.d.ts.map +1 -0
  118. package/dist/commands/telemetry.js +85 -0
  119. package/dist/commands/telemetry.js.map +1 -0
  120. package/dist/commands/tenants/health.d.ts +18 -0
  121. package/dist/commands/tenants/health.d.ts.map +1 -0
  122. package/dist/commands/tenants/health.js +172 -0
  123. package/dist/commands/tenants/health.js.map +1 -0
  124. package/dist/commands/tenants/helpers.d.ts +44 -0
  125. package/dist/commands/tenants/helpers.d.ts.map +1 -0
  126. package/dist/commands/tenants/helpers.js +72 -0
  127. package/dist/commands/tenants/helpers.js.map +1 -0
  128. package/dist/commands/tenants/index.d.ts +19 -0
  129. package/dist/commands/tenants/index.d.ts.map +1 -0
  130. package/dist/commands/tenants/index.js +39 -0
  131. package/dist/commands/tenants/index.js.map +1 -0
  132. package/dist/commands/tenants/inspect.d.ts +18 -0
  133. package/dist/commands/tenants/inspect.d.ts.map +1 -0
  134. package/dist/commands/tenants/inspect.js +176 -0
  135. package/dist/commands/tenants/inspect.js.map +1 -0
  136. package/dist/commands/tenants/list.d.ts +18 -0
  137. package/dist/commands/tenants/list.d.ts.map +1 -0
  138. package/dist/commands/tenants/list.js +144 -0
  139. package/dist/commands/tenants/list.js.map +1 -0
  140. package/dist/commands/tenants/manage.d.ts +20 -0
  141. package/dist/commands/tenants/manage.d.ts.map +1 -0
  142. package/dist/commands/tenants/manage.js +206 -0
  143. package/dist/commands/tenants/manage.js.map +1 -0
  144. package/dist/commands/tenants/show.d.ts +18 -0
  145. package/dist/commands/tenants/show.d.ts.map +1 -0
  146. package/dist/commands/tenants/show.js +191 -0
  147. package/dist/commands/tenants/show.js.map +1 -0
  148. package/dist/commands/validate.d.ts +18 -0
  149. package/dist/commands/validate.d.ts.map +1 -0
  150. package/dist/commands/validate.js +536 -0
  151. package/dist/commands/validate.js.map +1 -0
  152. package/dist/index.d.ts +19 -0
  153. package/dist/index.d.ts.map +1 -0
  154. package/dist/index.js +258 -0
  155. package/dist/index.js.map +1 -0
  156. package/dist/lib/auth.d.ts +51 -0
  157. package/dist/lib/auth.d.ts.map +1 -0
  158. package/dist/lib/auth.js +153 -0
  159. package/dist/lib/auth.js.map +1 -0
  160. package/dist/lib/banner.d.ts +19 -0
  161. package/dist/lib/banner.d.ts.map +1 -0
  162. package/dist/lib/banner.js +78 -0
  163. package/dist/lib/banner.js.map +1 -0
  164. package/dist/lib/command-wrapper.d.ts +56 -0
  165. package/dist/lib/command-wrapper.d.ts.map +1 -0
  166. package/dist/lib/command-wrapper.js +71 -0
  167. package/dist/lib/command-wrapper.js.map +1 -0
  168. package/dist/lib/credentials.d.ts +56 -0
  169. package/dist/lib/credentials.d.ts.map +1 -0
  170. package/dist/lib/credentials.js +146 -0
  171. package/dist/lib/credentials.js.map +1 -0
  172. package/dist/lib/demo-banner.d.ts +15 -0
  173. package/dist/lib/demo-banner.d.ts.map +1 -0
  174. package/dist/lib/demo-banner.js +33 -0
  175. package/dist/lib/demo-banner.js.map +1 -0
  176. package/dist/lib/error-handler.d.ts +51 -0
  177. package/dist/lib/error-handler.d.ts.map +1 -0
  178. package/dist/lib/error-handler.js +458 -0
  179. package/dist/lib/error-handler.js.map +1 -0
  180. package/dist/lib/errors.d.ts +61 -0
  181. package/dist/lib/errors.d.ts.map +1 -0
  182. package/dist/lib/errors.js +168 -0
  183. package/dist/lib/errors.js.map +1 -0
  184. package/dist/lib/formatters.d.ts +55 -0
  185. package/dist/lib/formatters.d.ts.map +1 -0
  186. package/dist/lib/formatters.js +163 -0
  187. package/dist/lib/formatters.js.map +1 -0
  188. package/dist/lib/graph-client.d.ts +74 -0
  189. package/dist/lib/graph-client.d.ts.map +1 -0
  190. package/dist/lib/graph-client.js +231 -0
  191. package/dist/lib/graph-client.js.map +1 -0
  192. package/dist/lib/input.d.ts +22 -0
  193. package/dist/lib/input.d.ts.map +1 -0
  194. package/dist/lib/input.js +120 -0
  195. package/dist/lib/input.js.map +1 -0
  196. package/dist/lib/interactive-wizard.d.ts +26 -0
  197. package/dist/lib/interactive-wizard.d.ts.map +1 -0
  198. package/dist/lib/interactive-wizard.js +550 -0
  199. package/dist/lib/interactive-wizard.js.map +1 -0
  200. package/dist/lib/oss-surface.d.ts +21 -0
  201. package/dist/lib/oss-surface.d.ts.map +1 -0
  202. package/dist/lib/oss-surface.js +29 -0
  203. package/dist/lib/oss-surface.js.map +1 -0
  204. package/dist/lib/output.d.ts +74 -0
  205. package/dist/lib/output.d.ts.map +1 -0
  206. package/dist/lib/output.js +156 -0
  207. package/dist/lib/output.js.map +1 -0
  208. package/dist/lib/picker.d.ts +75 -0
  209. package/dist/lib/picker.d.ts.map +1 -0
  210. package/dist/lib/picker.js +115 -0
  211. package/dist/lib/picker.js.map +1 -0
  212. package/dist/lib/repl.d.ts +19 -0
  213. package/dist/lib/repl.d.ts.map +1 -0
  214. package/dist/lib/repl.js +158 -0
  215. package/dist/lib/repl.js.map +1 -0
  216. package/dist/lib/spinner.d.ts +41 -0
  217. package/dist/lib/spinner.d.ts.map +1 -0
  218. package/dist/lib/spinner.js +126 -0
  219. package/dist/lib/spinner.js.map +1 -0
  220. package/dist/lib/telemetry.d.ts +96 -0
  221. package/dist/lib/telemetry.d.ts.map +1 -0
  222. package/dist/lib/telemetry.js +367 -0
  223. package/dist/lib/telemetry.js.map +1 -0
  224. package/package.json +68 -0
@@ -0,0 +1,573 @@
1
+ /**
2
+ * Copyright 2024 Pax8, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Command } from "commander";
17
+ import { resolve } from "node:path";
18
+ import { existsSync } from "node:fs";
19
+ import chalk from "chalk";
20
+ import { createSpinner, isQuietMode } from "../lib/spinner.js";
21
+ import { withDemoMode } from "../lib/command-wrapper.js";
22
+ import { DEMO_TENANTS } from "@pax8-cta/core";
23
+ import { formatStatus, formatTimeAgo, calculateDuration, truncate } from "../lib/formatters.js";
24
+ import { loadConfig, TokenManager, DataverseClient } from "@pax8-cta/core";
25
+ import { getClientSecretWithFallback } from "../lib/credentials.js";
26
+ import { handleCommandError } from "../lib/errors.js";
27
+ import { exitOssUnavailable } from "../lib/oss-surface.js";
28
+ import { output, resolveFormat } from "../lib/output.js";
29
+ import { showDemoBanner } from "../lib/demo-banner.js";
30
+ // Mock deployment data for demo mode
31
+ const DEMO_DEPLOYMENTS = [
32
+ {
33
+ id: "dep-demo-latest",
34
+ solutionName: "CustomerSupportAgent",
35
+ status: "in_progress",
36
+ totalTenants: 5,
37
+ completedTenants: 3,
38
+ failedTenants: 1,
39
+ createdAt: new Date(Date.now() - 5 * 60 * 1000).toISOString(),
40
+ },
41
+ {
42
+ id: "dep-demo-success",
43
+ solutionName: "SalesAgent",
44
+ status: "completed",
45
+ totalTenants: 3,
46
+ completedTenants: 3,
47
+ failedTenants: 0,
48
+ createdAt: new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString(),
49
+ },
50
+ {
51
+ id: "dep-demo-failed",
52
+ solutionName: "HRAgent",
53
+ status: "completed",
54
+ totalTenants: 4,
55
+ completedTenants: 2,
56
+ failedTenants: 2,
57
+ createdAt: new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString(),
58
+ },
59
+ ];
60
+ function getDemoDeploymentDetails(trackingId) {
61
+ const deployment = DEMO_DEPLOYMENTS.find((d) => d.id === trackingId);
62
+ if (!deployment)
63
+ return null;
64
+ const tenantResults = DEMO_TENANTS.slice(0, deployment.totalTenants).map((tenant, i) => {
65
+ let status = "completed";
66
+ let error = undefined;
67
+ let startedAt = new Date(Date.now() - 10 * 60 * 1000 + i * 2 * 60 * 1000).toISOString();
68
+ let completedAt = new Date(Date.now() - 5 * 60 * 1000 + i * 2 * 60 * 1000).toISOString();
69
+ if (deployment.status === "in_progress") {
70
+ if (i === deployment.completedTenants) {
71
+ status = "in_progress";
72
+ completedAt = undefined;
73
+ }
74
+ else if (i > deployment.completedTenants) {
75
+ status = "pending";
76
+ startedAt = undefined;
77
+ completedAt = undefined;
78
+ }
79
+ }
80
+ if (i === deployment.totalTenants - 1 && deployment.failedTenants > 0) {
81
+ status = "failed";
82
+ error = "Missing privilege 'prvWriteContact' - GDAP role lacks Power Platform Admin";
83
+ }
84
+ return {
85
+ tenantName: tenant.name,
86
+ tenantId: tenant.tenantId,
87
+ status,
88
+ error,
89
+ startedAt,
90
+ completedAt,
91
+ };
92
+ });
93
+ return {
94
+ ...deployment,
95
+ tenantResults,
96
+ };
97
+ }
98
+ const SHIPMENT_LIST_COLUMNS = [
99
+ { key: "id", header: "Tracking #", format: (v) => chalk.cyan(String(v)) },
100
+ { key: "agent", header: "Agent" },
101
+ { key: "status", header: "Status" },
102
+ { key: "progress", header: "Progress" },
103
+ { key: "created", header: "Created", format: (v) => chalk.gray(String(v)) },
104
+ ];
105
+ const SHIPMENT_DESTINATION_COLUMNS = [
106
+ { key: "destination", header: "Destination" },
107
+ { key: "status", header: "Status" },
108
+ { key: "transitTime", header: "Transit Time" },
109
+ {
110
+ key: "issue",
111
+ header: "Issue",
112
+ format: (v) => (v && v !== "-" ? chalk.red(truncate(String(v), 35)) : "-"),
113
+ },
114
+ ];
115
+ const SETUP_STATUS_COLUMNS = [
116
+ { key: "tenant", header: "Tenant" },
117
+ {
118
+ key: "appRegistered",
119
+ header: "App Registered",
120
+ format: (v) => (v === "Yes" ? chalk.green("Yes") : chalk.red("No")),
121
+ },
122
+ {
123
+ key: "systemAdminRole",
124
+ header: "System Admin Role",
125
+ format: (v) => {
126
+ if (v === "Yes")
127
+ return chalk.green("Yes");
128
+ if (v === "No")
129
+ return chalk.yellow("No");
130
+ return chalk.gray("-");
131
+ },
132
+ },
133
+ {
134
+ key: "status",
135
+ header: "Status",
136
+ format: (v) => {
137
+ if (v === "Ready")
138
+ return chalk.green("Ready");
139
+ if (v === "Needs Setup")
140
+ return chalk.yellow("Needs Setup");
141
+ if (v === "Needs Role")
142
+ return chalk.yellow("Needs Role");
143
+ return chalk.red("Error");
144
+ },
145
+ },
146
+ ];
147
+ /** True when format is something other than the human "table" rendering. */
148
+ function isStructured(fmt) {
149
+ return fmt !== "table";
150
+ }
151
+ export const statusCommand = new Command("status")
152
+ .alias("track")
153
+ .description("Check deployment status")
154
+ .option("-d, --deployment <id>", "Deployment ID to track")
155
+ .option("-s, --shipment <id>", "Deprecated alias for --deployment (kept for backward compatibility)")
156
+ .option("-l, --list", "List all recent deployments")
157
+ .option("--setup", "Show comprehensive setup status")
158
+ .option("-c, --config <path>", "Path to config file", "./config/tenants.yaml")
159
+ .option("--json", "Output as JSON")
160
+ .option("--quiet", "Suppress all output (exit code only)")
161
+ .action(async (options, cmd) => {
162
+ // Merge global flags (--json, --quiet, --ids-only registered on root) into
163
+ // local options so callers using either form work identically.
164
+ Object.assign(options, cmd.optsWithGlobals());
165
+ const fmt = resolveFormat({
166
+ json: options.json,
167
+ quiet: options.quiet,
168
+ });
169
+ const structured = isStructured(fmt);
170
+ // Handle --setup flag
171
+ if (options.setup) {
172
+ await handleSetupStatus(options, fmt);
173
+ return;
174
+ }
175
+ // Default to --list behavior when no specific flag is provided.
176
+ // "pax8-cta status" with no args is the natural way users ask
177
+ // "what's running" — treating it as an error (issue #384) was hostile.
178
+ const trackingId = options.shipment || options.deployment;
179
+ if (!options.list && !trackingId) {
180
+ if (!isQuietMode() && !structured) {
181
+ console.error(chalk.gray("(no flags given — showing recent deployments; use --help for options)"));
182
+ }
183
+ options.list = true;
184
+ }
185
+ // Handle --list flag
186
+ if (options.list) {
187
+ await withDemoMode(() => {
188
+ if (!isQuietMode() && !structured) {
189
+ showDemoBanner();
190
+ }
191
+ const rows = DEMO_DEPLOYMENTS.map((d) => {
192
+ const progress = `${d.completedTenants}/${d.totalTenants}`;
193
+ const statusText = d.status === "completed"
194
+ ? d.failedTenants > 0
195
+ ? chalk.yellow("⚠ Completed")
196
+ : chalk.green("✓ Completed")
197
+ : chalk.yellow("● In Progress");
198
+ return {
199
+ id: d.id,
200
+ agent: d.solutionName,
201
+ status: statusText,
202
+ progress: d.failedTenants > 0 ? `${progress} (${d.failedTenants} failed)` : progress,
203
+ created: getTimeAgo(d.createdAt),
204
+ };
205
+ });
206
+ if (fmt === "json") {
207
+ console.log(JSON.stringify({ deployments: DEMO_DEPLOYMENTS }, null, 2));
208
+ return;
209
+ }
210
+ if (fmt === "quiet")
211
+ return;
212
+ console.log(chalk.bold("Recent Deployments:"));
213
+ console.log();
214
+ output(rows, { format: "table", columns: SHIPMENT_LIST_COLUMNS });
215
+ console.log();
216
+ console.log(chalk.gray(`Use 'pax8-cta deployments show <id>' to view details`));
217
+ }, () => {
218
+ exitOssUnavailable("'status --list'", {
219
+ alternatives: ["deployments list"],
220
+ });
221
+ });
222
+ return;
223
+ }
224
+ // Defensive: with the default-to-list branch above this is unreachable,
225
+ // but keep the guard so a future refactor can't silently fall through.
226
+ if (!trackingId) {
227
+ console.error(chalk.red("Error: must specify --deployment <id>, or use --list."));
228
+ process.exit(2);
229
+ }
230
+ await withDemoMode(() => {
231
+ if (!isQuietMode() && !structured) {
232
+ showDemoBanner();
233
+ }
234
+ const deployment = getDemoDeploymentDetails(trackingId);
235
+ if (!deployment) {
236
+ if (fmt === "json") {
237
+ console.log(JSON.stringify({
238
+ deployment: null,
239
+ trackingId,
240
+ available: DEMO_DEPLOYMENTS.map((d) => ({
241
+ id: d.id,
242
+ solutionName: d.solutionName,
243
+ })),
244
+ }, null, 2));
245
+ return;
246
+ }
247
+ if (fmt === "quiet")
248
+ return;
249
+ console.log(chalk.yellow(`Deployment '${trackingId}' not found`));
250
+ console.log();
251
+ console.log(chalk.gray("Available demo deployments:"));
252
+ DEMO_DEPLOYMENTS.forEach((d) => {
253
+ console.log(chalk.gray(` - ${chalk.cyan(d.id)} (${d.solutionName})`));
254
+ });
255
+ return;
256
+ }
257
+ if (fmt === "json") {
258
+ console.log(JSON.stringify({ deployment }, null, 2));
259
+ return;
260
+ }
261
+ if (fmt === "quiet")
262
+ return;
263
+ // Display overall status
264
+ console.log(chalk.bold("📋 Deployment Tracking"));
265
+ console.log("─".repeat(50));
266
+ console.log(` Deployment ID: ${deployment.id}`);
267
+ console.log(` Solution: ${deployment.solutionName}`);
268
+ console.log(` Status: ${formatTrackingStatus(deployment.status)}`);
269
+ console.log(` Completed: ${deployment.completedTenants}/${deployment.totalTenants} target tenants`);
270
+ if (deployment.failedTenants > 0) {
271
+ console.log(` Failed: ${chalk.red(deployment.failedTenants.toString())} tenant(s)`);
272
+ }
273
+ console.log();
274
+ // Display per-tenant results via output() so future formatters plug in here.
275
+ const destRows = deployment.tenantResults.map((result) => ({
276
+ destination: result.tenantName,
277
+ status: formatTrackingStatus(result.status),
278
+ transitTime: calculateDuration(result.startedAt, result.completedAt),
279
+ issue: result.error ?? "-",
280
+ }));
281
+ output(destRows, { format: "table", columns: SHIPMENT_DESTINATION_COLUMNS });
282
+ console.log();
283
+ console.log(chalk.gray("Demo mode - use 'demo off' to disable"));
284
+ }, () => {
285
+ exitOssUnavailable("'status' tracking view", {
286
+ alternatives: [`deployments show ${trackingId}`],
287
+ });
288
+ });
289
+ });
290
+ // Tracking-style status formatting for the per-deployment view
291
+ const formatTrackingStatus = (status) => formatStatus(status, "tracking");
292
+ // Alias for backward compatibility
293
+ const getTimeAgo = formatTimeAgo;
294
+ /**
295
+ * Handle --setup flag to show comprehensive setup status.
296
+ *
297
+ * In structured (--json / --quiet / pipe-default) modes the human banners
298
+ * and intermediate "Checking ..." prints are suppressed; the final state is
299
+ * emitted as a single JSON envelope (or nothing for --quiet).
300
+ */
301
+ async function handleSetupStatus(options, fmt) {
302
+ const structured = isStructured(fmt);
303
+ const spinner = createSpinner("Loading configuration...").start();
304
+ try {
305
+ // Check config file existence
306
+ const configPath = resolve(process.cwd(), options.config);
307
+ const configExists = existsSync(configPath);
308
+ if (!structured) {
309
+ console.log();
310
+ console.log(chalk.bold("Configuration Status"));
311
+ console.log("─".repeat(50));
312
+ }
313
+ if (!configExists) {
314
+ spinner.stop();
315
+ if (fmt === "json") {
316
+ console.log(JSON.stringify({
317
+ configFile: { exists: false, path: configPath },
318
+ tenants: [],
319
+ summary: { ready: 0, total: 0 },
320
+ }, null, 2));
321
+ return;
322
+ }
323
+ if (fmt === "quiet")
324
+ return;
325
+ console.log(` Config file: ${chalk.red("✗")} Not found at ${configPath}`);
326
+ console.log();
327
+ console.log(chalk.yellow("Next steps:"));
328
+ console.log(` 1. Create config file at ${configPath}`);
329
+ console.log(" 2. Then run 'status --setup' again");
330
+ return;
331
+ }
332
+ if (!structured) {
333
+ console.log(` Config file: ${chalk.green("✓")} Found at ${configPath}`);
334
+ }
335
+ // Load config
336
+ const config = await loadConfig(configPath);
337
+ spinner.text = "Configuration loaded";
338
+ // Check client secret
339
+ let hasClientSecret = false;
340
+ try {
341
+ await getClientSecretWithFallback();
342
+ hasClientSecret = true;
343
+ if (!structured) {
344
+ console.log(` Client secret: ${chalk.green("✓")} Found (environment or keychain)`);
345
+ }
346
+ }
347
+ catch {
348
+ if (!structured) {
349
+ console.log(` Client secret: ${chalk.red("✗")} Not found in environment or keychain`);
350
+ }
351
+ }
352
+ // Show source environment info
353
+ if (!structured && config.source) {
354
+ console.log(` Source env: ${chalk.green("✓")} ${config.source.environmentUrl}`);
355
+ }
356
+ if (!structured) {
357
+ console.log();
358
+ }
359
+ spinner.succeed("Configuration loaded");
360
+ if (!hasClientSecret) {
361
+ if (fmt === "json") {
362
+ console.log(JSON.stringify({
363
+ configFile: { exists: true, path: configPath },
364
+ clientSecret: false,
365
+ tenants: [],
366
+ summary: { ready: 0, total: 0 },
367
+ }, null, 2));
368
+ return;
369
+ }
370
+ if (fmt === "quiet")
371
+ return;
372
+ console.log();
373
+ console.log(chalk.yellow("Cannot check tenant setup without client secret."));
374
+ console.log();
375
+ console.log(chalk.yellow("Next steps:"));
376
+ console.log(" 1. Set PARTNER_CLIENT_SECRET environment variable");
377
+ console.log(" 2. Then run 'status --setup' again");
378
+ return;
379
+ }
380
+ // Get enabled tenants
381
+ const enabledTenants = config.tenants.filter((t) => t.enabled);
382
+ if (enabledTenants.length === 0) {
383
+ if (fmt === "json") {
384
+ console.log(JSON.stringify({
385
+ configFile: { exists: true, path: configPath },
386
+ clientSecret: true,
387
+ tenants: [],
388
+ summary: { ready: 0, total: 0 },
389
+ }, null, 2));
390
+ return;
391
+ }
392
+ if (fmt === "quiet")
393
+ return;
394
+ console.log();
395
+ console.log(chalk.yellow("No enabled tenants found in configuration."));
396
+ return;
397
+ }
398
+ if (!structured) {
399
+ console.log();
400
+ console.log(chalk.bold(`Checking ${enabledTenants.length} tenant(s)...`));
401
+ console.log();
402
+ }
403
+ // Check setup status for each tenant
404
+ const statuses = [];
405
+ for (const tenant of enabledTenants) {
406
+ const status = await checkSetupStatus(config, tenant);
407
+ statuses.push(status);
408
+ }
409
+ // Calculate summary up-front; reused by both human and JSON paths.
410
+ const readyCount = statuses.filter((s) => s.status === "ready").length;
411
+ const needsSetupCount = statuses.filter((s) => s.status === "needs_setup" || s.status === "partial").length;
412
+ const errorCount = statuses.filter((s) => s.status === "error").length;
413
+ if (fmt === "json") {
414
+ console.log(JSON.stringify({
415
+ configFile: { exists: true, path: configPath },
416
+ clientSecret: true,
417
+ tenants: statuses,
418
+ summary: {
419
+ total: statuses.length,
420
+ ready: readyCount,
421
+ needsSetup: needsSetupCount,
422
+ errors: errorCount,
423
+ },
424
+ }, null, 2));
425
+ return;
426
+ }
427
+ if (fmt === "quiet")
428
+ return;
429
+ // Display per-tenant status (table mode)
430
+ displaySetupStatus(statuses);
431
+ console.log();
432
+ console.log(chalk.bold("Overall Readiness:"));
433
+ console.log(` ${chalk.green(`${readyCount} of ${statuses.length} tenant(s) ready`)}`);
434
+ if (needsSetupCount > 0 || errorCount > 0) {
435
+ console.log();
436
+ console.log(chalk.bold("Next steps:"));
437
+ const tenantsNeedingSetup = statuses.filter((s) => s.status === "needs_setup" || s.status === "partial");
438
+ if (tenantsNeedingSetup.length > 0) {
439
+ if (tenantsNeedingSetup.length === enabledTenants.length) {
440
+ console.log(` 1. Run ${chalk.cyan("'setup --all'")} to create app users`);
441
+ }
442
+ else {
443
+ console.log(" 1. Setup individual tenants:");
444
+ tenantsNeedingSetup.forEach((s) => {
445
+ console.log(` ${chalk.cyan(`setup --tenant "${s.tenantName}"`)}`);
446
+ });
447
+ }
448
+ console.log(` 2. Then: ${chalk.cyan("deploy --all --solution ./agent.zip")}`);
449
+ }
450
+ if (errorCount > 0) {
451
+ console.log();
452
+ console.log(chalk.yellow(` Note: ${errorCount} tenant(s) have errors. Check the details above.`));
453
+ }
454
+ }
455
+ }
456
+ catch (error) {
457
+ handleCommandError(error, spinner, "Failed to check setup status");
458
+ }
459
+ }
460
+ /**
461
+ * Check setup status for a tenant using Dataverse Web API
462
+ * (Reused from setup.ts)
463
+ */
464
+ async function checkSetupStatus(config, tenant) {
465
+ const clientSecret = await getClientSecretWithFallback();
466
+ const tokenManager = new TokenManager({
467
+ tenantId: tenant.tenantId,
468
+ clientId: config.partner.clientId,
469
+ clientSecret: clientSecret,
470
+ });
471
+ const client = new DataverseClient({
472
+ environmentUrl: tenant.environmentUrl,
473
+ tokenManager,
474
+ });
475
+ try {
476
+ // Check if app user exists
477
+ const appId = config.partner.clientId;
478
+ const result = await client.get("/systemusers", {
479
+ $filter: `applicationid eq '${appId}'`,
480
+ $select: "systemuserid,fullname,applicationid,isdisabled",
481
+ });
482
+ if (result.value.length === 0) {
483
+ return {
484
+ tenantName: tenant.name,
485
+ environmentUrl: tenant.environmentUrl,
486
+ appRegistered: false,
487
+ roleAssigned: false,
488
+ status: "needs_setup",
489
+ };
490
+ }
491
+ const user = result.value[0];
492
+ // Check if System Administrator role is assigned
493
+ const rolesResult = await client.get(`/systemusers(${user.systemuserid})/systemuserroles_association`, {
494
+ $select: "roleid,name",
495
+ });
496
+ const hasAdminRole = rolesResult.value.some((r) => r.name === "System Administrator");
497
+ if (!hasAdminRole) {
498
+ return {
499
+ tenantName: tenant.name,
500
+ environmentUrl: tenant.environmentUrl,
501
+ appRegistered: true,
502
+ roleAssigned: false,
503
+ status: "partial",
504
+ userId: user.systemuserid,
505
+ };
506
+ }
507
+ return {
508
+ tenantName: tenant.name,
509
+ environmentUrl: tenant.environmentUrl,
510
+ appRegistered: true,
511
+ roleAssigned: true,
512
+ status: "ready",
513
+ userId: user.systemuserid,
514
+ };
515
+ }
516
+ catch (error) {
517
+ const errorMsg = error instanceof Error ? error.message : String(error);
518
+ // Check if it's an auth error (app not registered)
519
+ if (errorMsg.includes("not a member of the organization")) {
520
+ return {
521
+ tenantName: tenant.name,
522
+ environmentUrl: tenant.environmentUrl,
523
+ appRegistered: false,
524
+ roleAssigned: false,
525
+ status: "needs_setup",
526
+ error: "App not registered in this environment",
527
+ };
528
+ }
529
+ return {
530
+ tenantName: tenant.name,
531
+ environmentUrl: tenant.environmentUrl,
532
+ appRegistered: false,
533
+ roleAssigned: false,
534
+ status: "error",
535
+ error: errorMsg,
536
+ };
537
+ }
538
+ }
539
+ /**
540
+ * Display setup status in a table — routed through output() so the same
541
+ * column schema feeds future formatters (CSV, etc.). Per-cell colouring
542
+ * lives in SETUP_STATUS_COLUMNS so the raw status strings here stay simple.
543
+ */
544
+ function displaySetupStatus(statuses) {
545
+ const rows = statuses.map((status) => {
546
+ let statusLabel;
547
+ if (status.status === "ready")
548
+ statusLabel = "Ready";
549
+ else if (status.status === "needs_setup")
550
+ statusLabel = "Needs Setup";
551
+ else if (status.status === "partial")
552
+ statusLabel = "Needs Role";
553
+ else
554
+ statusLabel = "Error";
555
+ return {
556
+ tenant: status.tenantName,
557
+ appRegistered: status.appRegistered ? "Yes" : "No",
558
+ systemAdminRole: status.roleAssigned ? "Yes" : status.appRegistered ? "No" : "-",
559
+ status: statusLabel,
560
+ };
561
+ });
562
+ output(rows, { format: "table", columns: SETUP_STATUS_COLUMNS });
563
+ // Show errors if any
564
+ const errors = statuses.filter((s) => s.error);
565
+ if (errors.length > 0) {
566
+ console.log();
567
+ console.log(chalk.bold("Notes:"));
568
+ for (const status of errors) {
569
+ console.log(chalk.yellow(` ${status.tenantName}: ${status.error}`));
570
+ }
571
+ }
572
+ }
573
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright 2024 Pax8, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Command } from "commander";
17
+ export declare const telemetryCommand: Command;
18
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/commands/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,gBAAgB,SAKzB,CAAC"}