@hs-x/cli 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 (302) hide show
  1. package/README.md +1001 -0
  2. package/dist/account-store.d.ts +51 -0
  3. package/dist/account-store.d.ts.map +1 -0
  4. package/dist/account-store.js +138 -0
  5. package/dist/account-store.js.map +1 -0
  6. package/dist/bin/hs-x.d.ts +3 -0
  7. package/dist/bin/hs-x.d.ts.map +1 -0
  8. package/dist/bin/hs-x.js +47 -0
  9. package/dist/bin/hs-x.js.map +1 -0
  10. package/dist/cli/index.d.ts +3 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +595 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/cli-error.d.ts +36 -0
  15. package/dist/cli-error.d.ts.map +1 -0
  16. package/dist/cli-error.js +40 -0
  17. package/dist/cli-error.js.map +1 -0
  18. package/dist/cloudflare-auth.d.ts +25 -0
  19. package/dist/cloudflare-auth.d.ts.map +1 -0
  20. package/dist/cloudflare-auth.js +251 -0
  21. package/dist/cloudflare-auth.js.map +1 -0
  22. package/dist/cloudflare-kv.d.ts +23 -0
  23. package/dist/cloudflare-kv.d.ts.map +1 -0
  24. package/dist/cloudflare-kv.js +101 -0
  25. package/dist/cloudflare-kv.js.map +1 -0
  26. package/dist/cloudflare-oauth-store.d.ts +16 -0
  27. package/dist/cloudflare-oauth-store.d.ts.map +1 -0
  28. package/dist/cloudflare-oauth-store.js +80 -0
  29. package/dist/cloudflare-oauth-store.js.map +1 -0
  30. package/dist/cloudflare-oauth.d.ts +82 -0
  31. package/dist/cloudflare-oauth.d.ts.map +1 -0
  32. package/dist/cloudflare-oauth.js +336 -0
  33. package/dist/cloudflare-oauth.js.map +1 -0
  34. package/dist/cloudflare-pointer.d.ts +13 -0
  35. package/dist/cloudflare-pointer.d.ts.map +1 -0
  36. package/dist/cloudflare-pointer.js +46 -0
  37. package/dist/cloudflare-pointer.js.map +1 -0
  38. package/dist/command-history.d.ts +7 -0
  39. package/dist/command-history.d.ts.map +1 -0
  40. package/dist/command-history.js +34 -0
  41. package/dist/command-history.js.map +1 -0
  42. package/dist/commands/account.d.ts +7 -0
  43. package/dist/commands/account.d.ts.map +1 -0
  44. package/dist/commands/account.js +315 -0
  45. package/dist/commands/account.js.map +1 -0
  46. package/dist/commands/api.d.ts +36 -0
  47. package/dist/commands/api.d.ts.map +1 -0
  48. package/dist/commands/api.js +521 -0
  49. package/dist/commands/api.js.map +1 -0
  50. package/dist/commands/completion.d.ts +7 -0
  51. package/dist/commands/completion.d.ts.map +1 -0
  52. package/dist/commands/completion.js +121 -0
  53. package/dist/commands/completion.js.map +1 -0
  54. package/dist/commands/connect.d.ts +7 -0
  55. package/dist/commands/connect.d.ts.map +1 -0
  56. package/dist/commands/connect.js +1123 -0
  57. package/dist/commands/connect.js.map +1 -0
  58. package/dist/commands/control-plane-read.d.ts +22 -0
  59. package/dist/commands/control-plane-read.d.ts.map +1 -0
  60. package/dist/commands/control-plane-read.js +350 -0
  61. package/dist/commands/control-plane-read.js.map +1 -0
  62. package/dist/commands/deploy-promote.d.ts +14 -0
  63. package/dist/commands/deploy-promote.d.ts.map +1 -0
  64. package/dist/commands/deploy-promote.js +105 -0
  65. package/dist/commands/deploy-promote.js.map +1 -0
  66. package/dist/commands/deploy.d.ts +18 -0
  67. package/dist/commands/deploy.d.ts.map +1 -0
  68. package/dist/commands/deploy.js +2764 -0
  69. package/dist/commands/deploy.js.map +1 -0
  70. package/dist/commands/dev.d.ts +7 -0
  71. package/dist/commands/dev.d.ts.map +1 -0
  72. package/dist/commands/dev.js +913 -0
  73. package/dist/commands/dev.js.map +1 -0
  74. package/dist/commands/doctor.d.ts +8 -0
  75. package/dist/commands/doctor.d.ts.map +1 -0
  76. package/dist/commands/doctor.js +258 -0
  77. package/dist/commands/doctor.js.map +1 -0
  78. package/dist/commands/flags.d.ts +22 -0
  79. package/dist/commands/flags.d.ts.map +1 -0
  80. package/dist/commands/flags.js +185 -0
  81. package/dist/commands/flags.js.map +1 -0
  82. package/dist/commands/help-command.d.ts +13 -0
  83. package/dist/commands/help-command.d.ts.map +1 -0
  84. package/dist/commands/help-command.js +482 -0
  85. package/dist/commands/help-command.js.map +1 -0
  86. package/dist/commands/history.d.ts +6 -0
  87. package/dist/commands/history.d.ts.map +1 -0
  88. package/dist/commands/history.js +42 -0
  89. package/dist/commands/history.js.map +1 -0
  90. package/dist/commands/init.d.ts +8 -0
  91. package/dist/commands/init.d.ts.map +1 -0
  92. package/dist/commands/init.js +233 -0
  93. package/dist/commands/init.js.map +1 -0
  94. package/dist/commands/link.d.ts +26 -0
  95. package/dist/commands/link.d.ts.map +1 -0
  96. package/dist/commands/link.js +441 -0
  97. package/dist/commands/link.js.map +1 -0
  98. package/dist/commands/login.d.ts +8 -0
  99. package/dist/commands/login.d.ts.map +1 -0
  100. package/dist/commands/login.js +381 -0
  101. package/dist/commands/login.js.map +1 -0
  102. package/dist/commands/migrate.d.ts +8 -0
  103. package/dist/commands/migrate.d.ts.map +1 -0
  104. package/dist/commands/migrate.js +258 -0
  105. package/dist/commands/migrate.js.map +1 -0
  106. package/dist/commands/rollback.d.ts +21 -0
  107. package/dist/commands/rollback.d.ts.map +1 -0
  108. package/dist/commands/rollback.js +301 -0
  109. package/dist/commands/rollback.js.map +1 -0
  110. package/dist/commands/secrets.d.ts +7 -0
  111. package/dist/commands/secrets.d.ts.map +1 -0
  112. package/dist/commands/secrets.js +230 -0
  113. package/dist/commands/secrets.js.map +1 -0
  114. package/dist/commands/status.d.ts +7 -0
  115. package/dist/commands/status.d.ts.map +1 -0
  116. package/dist/commands/status.js +241 -0
  117. package/dist/commands/status.js.map +1 -0
  118. package/dist/commands/unlink.d.ts +21 -0
  119. package/dist/commands/unlink.d.ts.map +1 -0
  120. package/dist/commands/unlink.js +83 -0
  121. package/dist/commands/unlink.js.map +1 -0
  122. package/dist/commands/update.d.ts +11 -0
  123. package/dist/commands/update.d.ts.map +1 -0
  124. package/dist/commands/update.js +154 -0
  125. package/dist/commands/update.js.map +1 -0
  126. package/dist/commands/validate.d.ts +9 -0
  127. package/dist/commands/validate.d.ts.map +1 -0
  128. package/dist/commands/validate.js +39 -0
  129. package/dist/commands/validate.js.map +1 -0
  130. package/dist/config.d.ts +12 -0
  131. package/dist/config.d.ts.map +1 -0
  132. package/dist/config.js +64 -0
  133. package/dist/config.js.map +1 -0
  134. package/dist/constants.d.ts +4 -0
  135. package/dist/constants.d.ts.map +1 -0
  136. package/dist/constants.js +4 -0
  137. package/dist/constants.js.map +1 -0
  138. package/dist/control-plane-fetch.d.ts +34 -0
  139. package/dist/control-plane-fetch.d.ts.map +1 -0
  140. package/dist/control-plane-fetch.js +73 -0
  141. package/dist/control-plane-fetch.js.map +1 -0
  142. package/dist/control-plane-loader.d.ts +16 -0
  143. package/dist/control-plane-loader.d.ts.map +1 -0
  144. package/dist/control-plane-loader.js +24 -0
  145. package/dist/control-plane-loader.js.map +1 -0
  146. package/dist/dev/compat-shim.d.ts +40 -0
  147. package/dist/dev/compat-shim.d.ts.map +1 -0
  148. package/dist/dev/compat-shim.js +65 -0
  149. package/dist/dev/compat-shim.js.map +1 -0
  150. package/dist/dev/event-bus.d.ts +27 -0
  151. package/dist/dev/event-bus.d.ts.map +1 -0
  152. package/dist/dev/event-bus.js +32 -0
  153. package/dist/dev/event-bus.js.map +1 -0
  154. package/dist/dev/log-server.d.ts +52 -0
  155. package/dist/dev/log-server.d.ts.map +1 -0
  156. package/dist/dev/log-server.js +216 -0
  157. package/dist/dev/log-server.js.map +1 -0
  158. package/dist/dev/session-manager.d.ts +33 -0
  159. package/dist/dev/session-manager.d.ts.map +1 -0
  160. package/dist/dev/session-manager.js +132 -0
  161. package/dist/dev/session-manager.js.map +1 -0
  162. package/dist/dev/stream-renderer.d.ts +22 -0
  163. package/dist/dev/stream-renderer.d.ts.map +1 -0
  164. package/dist/dev/stream-renderer.js +65 -0
  165. package/dist/dev/stream-renderer.js.map +1 -0
  166. package/dist/dev/tunnel.d.ts +40 -0
  167. package/dist/dev/tunnel.d.ts.map +1 -0
  168. package/dist/dev/tunnel.js +139 -0
  169. package/dist/dev/tunnel.js.map +1 -0
  170. package/dist/effect-http.d.ts +10 -0
  171. package/dist/effect-http.d.ts.map +1 -0
  172. package/dist/effect-http.js +38 -0
  173. package/dist/effect-http.js.map +1 -0
  174. package/dist/errors-registry.d.ts +11 -0
  175. package/dist/errors-registry.d.ts.map +1 -0
  176. package/dist/errors-registry.js +554 -0
  177. package/dist/errors-registry.js.map +1 -0
  178. package/dist/errors.d.ts +58 -0
  179. package/dist/errors.d.ts.map +1 -0
  180. package/dist/errors.js +30 -0
  181. package/dist/errors.js.map +1 -0
  182. package/dist/help.d.ts +6 -0
  183. package/dist/help.d.ts.map +1 -0
  184. package/dist/help.js +100 -0
  185. package/dist/help.js.map +1 -0
  186. package/dist/history.d.ts +15 -0
  187. package/dist/history.d.ts.map +1 -0
  188. package/dist/history.js +69 -0
  189. package/dist/history.js.map +1 -0
  190. package/dist/hubspot-auth.d.ts +53 -0
  191. package/dist/hubspot-auth.d.ts.map +1 -0
  192. package/dist/hubspot-auth.js +301 -0
  193. package/dist/hubspot-auth.js.map +1 -0
  194. package/dist/hubspot-developer-client.d.ts +10 -0
  195. package/dist/hubspot-developer-client.d.ts.map +1 -0
  196. package/dist/hubspot-developer-client.js +212 -0
  197. package/dist/hubspot-developer-client.js.map +1 -0
  198. package/dist/index.d.ts +5 -0
  199. package/dist/index.d.ts.map +1 -0
  200. package/dist/index.js +4 -0
  201. package/dist/index.js.map +1 -0
  202. package/dist/init/templates.d.ts +18 -0
  203. package/dist/init/templates.d.ts.map +1 -0
  204. package/dist/init/templates.js +239 -0
  205. package/dist/init/templates.js.map +1 -0
  206. package/dist/load-env.d.ts +16 -0
  207. package/dist/load-env.d.ts.map +1 -0
  208. package/dist/load-env.js +69 -0
  209. package/dist/load-env.js.map +1 -0
  210. package/dist/machine-id.d.ts +3 -0
  211. package/dist/machine-id.d.ts.map +1 -0
  212. package/dist/machine-id.js +41 -0
  213. package/dist/machine-id.js.map +1 -0
  214. package/dist/paths.d.ts +4 -0
  215. package/dist/paths.d.ts.map +1 -0
  216. package/dist/paths.js +19 -0
  217. package/dist/paths.js.map +1 -0
  218. package/dist/prompt.d.ts +43 -0
  219. package/dist/prompt.d.ts.map +1 -0
  220. package/dist/prompt.js +379 -0
  221. package/dist/prompt.js.map +1 -0
  222. package/dist/reporter/human.d.ts +28 -0
  223. package/dist/reporter/human.d.ts.map +1 -0
  224. package/dist/reporter/human.js +126 -0
  225. package/dist/reporter/human.js.map +1 -0
  226. package/dist/reporter/index.d.ts +14 -0
  227. package/dist/reporter/index.d.ts.map +1 -0
  228. package/dist/reporter/index.js +37 -0
  229. package/dist/reporter/index.js.map +1 -0
  230. package/dist/reporter/json.d.ts +43 -0
  231. package/dist/reporter/json.d.ts.map +1 -0
  232. package/dist/reporter/json.js +146 -0
  233. package/dist/reporter/json.js.map +1 -0
  234. package/dist/reporter/style.d.ts +34 -0
  235. package/dist/reporter/style.d.ts.map +1 -0
  236. package/dist/reporter/style.js +97 -0
  237. package/dist/reporter/style.js.map +1 -0
  238. package/dist/reporter/types.d.ts +41 -0
  239. package/dist/reporter/types.d.ts.map +1 -0
  240. package/dist/reporter/types.js +2 -0
  241. package/dist/reporter/types.js.map +1 -0
  242. package/dist/result.d.ts +4 -0
  243. package/dist/result.d.ts.map +1 -0
  244. package/dist/result.js +2 -0
  245. package/dist/result.js.map +1 -0
  246. package/dist/services/account-store.d.ts +31 -0
  247. package/dist/services/account-store.d.ts.map +1 -0
  248. package/dist/services/account-store.js +135 -0
  249. package/dist/services/account-store.js.map +1 -0
  250. package/dist/services/app-paths.d.ts +25 -0
  251. package/dist/services/app-paths.d.ts.map +1 -0
  252. package/dist/services/app-paths.js +34 -0
  253. package/dist/services/app-paths.js.map +1 -0
  254. package/dist/services/cloudflare-auth.d.ts +83 -0
  255. package/dist/services/cloudflare-auth.d.ts.map +1 -0
  256. package/dist/services/cloudflare-auth.js +30 -0
  257. package/dist/services/cloudflare-auth.js.map +1 -0
  258. package/dist/services/cloudflare-kv.d.ts +45 -0
  259. package/dist/services/cloudflare-kv.d.ts.map +1 -0
  260. package/dist/services/cloudflare-kv.js +151 -0
  261. package/dist/services/cloudflare-kv.js.map +1 -0
  262. package/dist/services/command-history.d.ts +29 -0
  263. package/dist/services/command-history.d.ts.map +1 -0
  264. package/dist/services/command-history.js +62 -0
  265. package/dist/services/command-history.js.map +1 -0
  266. package/dist/services/control-plane.d.ts +32 -0
  267. package/dist/services/control-plane.d.ts.map +1 -0
  268. package/dist/services/control-plane.js +57 -0
  269. package/dist/services/control-plane.js.map +1 -0
  270. package/dist/services/env-loader.d.ts +18 -0
  271. package/dist/services/env-loader.d.ts.map +1 -0
  272. package/dist/services/env-loader.js +34 -0
  273. package/dist/services/env-loader.js.map +1 -0
  274. package/dist/services/http.d.ts +19 -0
  275. package/dist/services/http.d.ts.map +1 -0
  276. package/dist/services/http.js +9 -0
  277. package/dist/services/http.js.map +1 -0
  278. package/dist/services/live.d.ts +16 -0
  279. package/dist/services/live.d.ts.map +1 -0
  280. package/dist/services/live.js +26 -0
  281. package/dist/services/live.js.map +1 -0
  282. package/dist/services/machine-id.d.ts +18 -0
  283. package/dist/services/machine-id.d.ts.map +1 -0
  284. package/dist/services/machine-id.js +39 -0
  285. package/dist/services/machine-id.js.map +1 -0
  286. package/dist/services/reporter.d.ts +55 -0
  287. package/dist/services/reporter.d.ts.map +1 -0
  288. package/dist/services/reporter.js +49 -0
  289. package/dist/services/reporter.js.map +1 -0
  290. package/dist/state-store.d.ts +39 -0
  291. package/dist/state-store.d.ts.map +1 -0
  292. package/dist/state-store.js +89 -0
  293. package/dist/state-store.js.map +1 -0
  294. package/dist/telemetry.d.ts +13 -0
  295. package/dist/telemetry.d.ts.map +1 -0
  296. package/dist/telemetry.js +129 -0
  297. package/dist/telemetry.js.map +1 -0
  298. package/dist/tenant-state.d.ts +69 -0
  299. package/dist/tenant-state.d.ts.map +1 -0
  300. package/dist/tenant-state.js +161 -0
  301. package/dist/tenant-state.js.map +1 -0
  302. package/package.json +38 -0
@@ -0,0 +1,482 @@
1
+ import { CLI_VERSION } from '../constants.js';
2
+ import { createReporter } from '../reporter/index.js';
3
+ import { detectColor, detectUnicode, makeStyle } from '../reporter/style.js';
4
+ import { apiHelpText } from './api.js';
5
+ import { completionHelpText } from './completion.js';
6
+ import { auditHelpText, checkpointHelpText, driftHelpText, routingHelpText, } from './control-plane-read.js';
7
+ import { initHelpText } from './init.js';
8
+ import { migrateHelpText } from './migrate.js';
9
+ import { rollbackHelpText } from './rollback.js';
10
+ import { secretsHelpText } from './secrets.js';
11
+ import { checkHelpText } from './validate.js';
12
+ const KNOWN_COMMAND_NAMES = [
13
+ 'init',
14
+ 'create',
15
+ 'check',
16
+ 'validate',
17
+ 'deploy',
18
+ 'promote',
19
+ 'connect',
20
+ 'whoami',
21
+ 'logout',
22
+ 'completion',
23
+ 'completions',
24
+ 'api',
25
+ 'account',
26
+ 'accounts',
27
+ 'audit',
28
+ 'drift',
29
+ 'checkpoint',
30
+ 'logs',
31
+ 'routing',
32
+ 'route',
33
+ 'routes',
34
+ 'rollback',
35
+ 'dev',
36
+ 'migrate',
37
+ 'status',
38
+ 'doctor',
39
+ 'history',
40
+ 'update',
41
+ 'upgrade',
42
+ 'help',
43
+ '--version',
44
+ '-v',
45
+ ];
46
+ export function unknownCommand(input) {
47
+ const code = 'HSX_E_INPUT_UNKNOWN_COMMAND';
48
+ const suggestion = closestCommand(input.command);
49
+ const hint = suggestion
50
+ ? `Did you mean \`hs-x ${suggestion}\`? Run \`hs-x help\` to see all commands.`
51
+ : 'Run `hs-x help` to see available commands.';
52
+ if (input.json) {
53
+ process.stdout.write(`${JSON.stringify({
54
+ schema_version: 1,
55
+ command: input.command,
56
+ ok: false,
57
+ error: { code, message: `Unknown command: ${input.command}`, hint },
58
+ }, null, 2)}\n`);
59
+ }
60
+ else {
61
+ const reporter = createReporter({ command: input.command, argv: input.argv });
62
+ reporter.error(code, `Unknown command: ${input.command}`, {
63
+ hint,
64
+ docs_url: `https://hs-x.dev/errors/${code}`,
65
+ });
66
+ reporter.done(undefined, 10);
67
+ }
68
+ return { exitCode: 10 };
69
+ }
70
+ function closestCommand(input) {
71
+ let best;
72
+ for (const cmd of KNOWN_COMMAND_NAMES) {
73
+ const d = levenshtein(input, cmd);
74
+ if (!best || d < best.distance)
75
+ best = { cmd, distance: d };
76
+ }
77
+ if (!best || best.distance > 3)
78
+ return undefined;
79
+ return best.cmd;
80
+ }
81
+ function levenshtein(a, b) {
82
+ const m = a.length;
83
+ const n = b.length;
84
+ if (m === 0)
85
+ return n;
86
+ if (n === 0)
87
+ return m;
88
+ const prev = new Array(n + 1);
89
+ const curr = new Array(n + 1);
90
+ for (let j = 0; j <= n; j++)
91
+ prev[j] = j;
92
+ for (let i = 1; i <= m; i++) {
93
+ curr[0] = i;
94
+ for (let j = 1; j <= n; j++) {
95
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
96
+ curr[j] = Math.min((curr[j - 1] ?? 0) + 1, (prev[j] ?? 0) + 1, (prev[j - 1] ?? 0) + cost);
97
+ }
98
+ for (let j = 0; j <= n; j++)
99
+ prev[j] = curr[j] ?? 0;
100
+ }
101
+ return prev[n] ?? 0;
102
+ }
103
+ const HELP_SECTIONS = [
104
+ {
105
+ title: 'Start:',
106
+ items: [
107
+ { cmd: 'hs-x init [name]', desc: 'Create a new HS-X project' },
108
+ { cmd: 'hs-x connect', desc: 'Link this project to HubSpot and Cloudflare' },
109
+ { cmd: 'hs-x doctor', desc: 'Diagnose local setup' },
110
+ { cmd: 'hs-x check', desc: 'Validate project source' },
111
+ ],
112
+ },
113
+ {
114
+ title: 'Develop:',
115
+ items: [
116
+ { cmd: 'hs-x dev', desc: 'Start the local dev server' },
117
+ { cmd: 'hs-x api <path>', desc: 'Call HubSpot or the HS-X control plane' },
118
+ { cmd: 'hs-x migrate', desc: 'Migrate legacy HubSpot apps' },
119
+ ],
120
+ },
121
+ {
122
+ title: 'Deploy:',
123
+ items: [
124
+ { cmd: 'hs-x deploy', desc: 'Deploy the project' },
125
+ { cmd: 'hs-x promote', desc: 'Promote a deploy to an environment' },
126
+ { cmd: 'hs-x rollback', desc: 'Roll back an environment' },
127
+ { cmd: 'hs-x routes', desc: 'Show active deploy routes' },
128
+ ],
129
+ },
130
+ {
131
+ title: 'Observe:',
132
+ items: [
133
+ { cmd: 'hs-x status', desc: 'Show project health' },
134
+ { cmd: 'hs-x logs', desc: 'Stream runtime and deploy telemetry' },
135
+ { cmd: 'hs-x drift', desc: 'Show project drift' },
136
+ { cmd: 'hs-x audit list', desc: 'List redacted account audit rows' },
137
+ { cmd: 'hs-x history', desc: 'Show recent command runs' },
138
+ ],
139
+ },
140
+ {
141
+ title: 'Account:',
142
+ items: [
143
+ { cmd: 'hs-x accounts', desc: 'Manage HS-X accounts' },
144
+ { cmd: 'hs-x whoami', desc: 'Show the active HS-X account' },
145
+ { cmd: 'hs-x logout', desc: 'Remove the active HS-X account' },
146
+ ],
147
+ },
148
+ {
149
+ title: 'Config:',
150
+ items: [
151
+ { cmd: 'hs-x secrets', desc: 'Store app secrets for runtime deploys' },
152
+ { cmd: 'hs-x completion <shell>', desc: 'Generate shell completion' },
153
+ { cmd: 'hs-x update', desc: 'Check for a newer CLI release' },
154
+ { cmd: 'hs-x help', desc: 'Show this help' },
155
+ ],
156
+ },
157
+ ];
158
+ function globalHelpWidest() {
159
+ return Math.max(...HELP_SECTIONS.flatMap((s) => s.items.map((i) => i.cmd.length)));
160
+ }
161
+ const HIGHLIGHTS = [
162
+ { cmd: 'hs-x init [name]', desc: 'Create a new HS-X project' },
163
+ { cmd: 'hs-x connect', desc: 'Link this project to HubSpot and Cloudflare' },
164
+ { cmd: 'hs-x dev', desc: 'Start the local dev server' },
165
+ { cmd: 'hs-x deploy', desc: 'Build artifacts and deploy' },
166
+ { cmd: 'hs-x doctor', desc: 'Run diagnostics' },
167
+ ];
168
+ export function helpText(mode = 'full') {
169
+ if (mode === 'highlights') {
170
+ const widest = Math.max(...HIGHLIGHTS.map((i) => i.cmd.length));
171
+ const lines = [
172
+ `hs-x ${CLI_VERSION}`,
173
+ '',
174
+ ...HIGHLIGHTS.map((i) => ` ${i.cmd.padEnd(widest)} ${i.desc}`),
175
+ '',
176
+ 'Run hs-x --help to see all commands.',
177
+ ];
178
+ return `${lines.join('\n')}\n`;
179
+ }
180
+ const lines = [`hs-x ${CLI_VERSION}`, ''];
181
+ for (const section of HELP_SECTIONS) {
182
+ lines.push(section.title);
183
+ const widest = globalHelpWidest();
184
+ for (const item of section.items) {
185
+ lines.push(` ${item.cmd.padEnd(widest)} ${item.desc}`);
186
+ }
187
+ lines.push('');
188
+ }
189
+ lines.push('Run hs-x <command> --help for command-specific flags and options.');
190
+ return `${lines.join('\n')}\n`;
191
+ }
192
+ export function helpTextStyled(env, isTTY, mode = 'full') {
193
+ const color = detectColor(env, isTTY);
194
+ const unicode = detectUnicode(env);
195
+ const style = makeStyle(color, unicode);
196
+ if (mode === 'highlights') {
197
+ const widest = Math.max(...HIGHLIGHTS.map((i) => i.cmd.length));
198
+ const lines = [style.dim(`hs-x ${CLI_VERSION}`), ''];
199
+ for (const item of HIGHLIGHTS) {
200
+ const cmd = style.bold(item.cmd.padEnd(widest));
201
+ lines.push(` ${cmd} ${style.dim(item.desc)}`);
202
+ }
203
+ lines.push('');
204
+ lines.push(style.dim('Run ') + style.bold('hs-x --help') + style.dim(' to see all commands.'));
205
+ return lines.join('\n');
206
+ }
207
+ const lines = [style.dim(`hs-x ${CLI_VERSION}`), ''];
208
+ for (const section of HELP_SECTIONS) {
209
+ lines.push(style.orange(section.title));
210
+ const widest = globalHelpWidest();
211
+ for (const item of section.items) {
212
+ const cmd = style.bold(item.cmd.padEnd(widest));
213
+ lines.push(` ${cmd} ${style.dim(item.desc)}`);
214
+ }
215
+ lines.push('');
216
+ }
217
+ lines.push(style.dim('Run ') +
218
+ style.bold('hs-x <command> --help') +
219
+ style.dim(' for command-specific flags and options.'));
220
+ return lines.join('\n');
221
+ }
222
+ export function connectHelpText() {
223
+ return `hs-x connect
224
+
225
+ Link this project to HS-X, HubSpot, and Cloudflare.
226
+
227
+ Commands:
228
+ hs-x connect
229
+ hs-x connect hubspot --account-id <id> --developer-account-id <id> --display-name <name> [--pak <token>] [--developer-api-key <key>]
230
+ hs-x connect cloudflare --account-id <id> [--auth-method api-token|oauth] [--cloudflare-account-id <id>] [--display-name <name>] [--api-token <token>] [--oauth-port <port>] [--oauth-timeout-ms <ms>]
231
+
232
+ HubSpot auth:
233
+ --pak is the HubSpot developer personal access key used by HubSpot CLI /
234
+ local-dev-lib project operations. In interactive mode, hs-x can discover it
235
+ from HubSpot CLI config after you run hs accounts auth.
236
+
237
+ --developer-api-key is the developer API key used only by endpoints that
238
+ explicitly document hapikey query authentication. It does not replace --pak
239
+ for project upload/deploy.
240
+
241
+ Cloudflare auth:
242
+ --auth-method api-token (default) prompts you to create an API token in the
243
+ Cloudflare dashboard and paste it back. --auth-method oauth runs an
244
+ authorization-code+PKCE flow against Cloudflare, exchanges the code for an
245
+ access token, and persists the refresh token under $XDG_CONFIG_HOME/hs-x
246
+ unless a legacy ~/.hsx/cloudflare-oauth.json file already exists.
247
+
248
+ The OAuth client is brokered by the HS-X control plane — end users do not
249
+ configure it. (Contributors can override via HSX_CLOUDFLARE_OAUTH_CLIENT_ID
250
+ to point at a sandbox client during development.)
251
+ `;
252
+ }
253
+ function promoteHelpText() {
254
+ return `hs-x promote
255
+
256
+ Promote a recorded deploy.
257
+
258
+ Common:
259
+ --deploy-id <id> Deploy to promote
260
+ --project-id <id> HS-X project id
261
+ --account-id <id> HS-X account id
262
+ --json Emit JSON result
263
+
264
+ Advanced:
265
+ --control-plane-url <u> Override control plane (HSX_CONTROL_PLANE_URL)
266
+ --user-id <id> Attribution for control-plane records
267
+
268
+ Alias:
269
+ hs-x deploy promote ...
270
+ `;
271
+ }
272
+ function devHelpText() {
273
+ return `hs-x dev
274
+
275
+ Start the local dev server and optionally register portal-scoped dev overrides.
276
+
277
+ Commands:
278
+ hs-x dev [--portal <id>] [--target-origin <url>] [--project-id <id>] [--account-id <id>] [--ttl-seconds <n>]
279
+ hs-x dev status --control-plane-url <url> --account-id <id> [--user-id <id>] [--json]
280
+ hs-x dev cleanup --control-plane-url <url> --account-id <id> --session-id <id> [--json]
281
+
282
+ Interactive:
283
+ When run in a TTY with control-plane override settings, hs-x prompts for the
284
+ portal id, public target origin, TTL, and component selection.
285
+ `;
286
+ }
287
+ export function commandHelpText(command) {
288
+ switch (command) {
289
+ case 'init':
290
+ case 'create':
291
+ return initHelpText();
292
+ case 'check':
293
+ case 'validate':
294
+ return checkHelpText(command);
295
+ case 'deploy':
296
+ return deployHelpText();
297
+ case 'promote':
298
+ return promoteHelpText();
299
+ case 'connect':
300
+ return connectHelpText();
301
+ case 'secrets':
302
+ case 'secret':
303
+ return secretsHelpText();
304
+ case 'login':
305
+ return loginHelpText();
306
+ case 'whoami':
307
+ return whoamiHelpText();
308
+ case 'logout':
309
+ return logoutHelpText();
310
+ case 'completion':
311
+ case 'completions':
312
+ return completionHelpText();
313
+ case 'api':
314
+ return apiHelpText();
315
+ case 'account':
316
+ case 'accounts':
317
+ return accountsHelpText();
318
+ case 'audit':
319
+ return auditHelpText();
320
+ case 'drift':
321
+ return driftHelpText();
322
+ case 'checkpoint':
323
+ case 'logs':
324
+ return checkpointHelpText();
325
+ case 'routing':
326
+ case 'route':
327
+ case 'routes':
328
+ return routingHelpText();
329
+ case 'rollback':
330
+ return rollbackHelpText();
331
+ case 'dev':
332
+ return devHelpText();
333
+ case 'migrate':
334
+ return migrateHelpText();
335
+ case 'doctor':
336
+ return doctorHelpText();
337
+ case 'status':
338
+ return statusHelpText();
339
+ case 'history':
340
+ return historyHelpText();
341
+ case 'update':
342
+ case 'upgrade':
343
+ return updateHelpText();
344
+ default:
345
+ return undefined;
346
+ }
347
+ }
348
+ function doctorHelpText() {
349
+ return `hs-x doctor
350
+
351
+ Diagnose local setup for accounts, HubSpot CLI auth, control-plane reachability,
352
+ and recent HS-X activity.
353
+
354
+ Flags:
355
+ --json Emit JSON result
356
+ `;
357
+ }
358
+ function statusHelpText() {
359
+ return `hs-x status
360
+
361
+ Show project health, validation diagnostics, and discovered worker capabilities.
362
+
363
+ Flags:
364
+ --cwd <path> Project directory (defaults to current working directory)
365
+ --json Emit JSON result
366
+ `;
367
+ }
368
+ function historyHelpText() {
369
+ return `hs-x history
370
+
371
+ Show recent command runs recorded by the local CLI.
372
+
373
+ Flags:
374
+ --limit <count> Number of history entries to show (default: 20)
375
+ --json Emit JSON result
376
+ `;
377
+ }
378
+ function updateHelpText() {
379
+ return `hs-x update
380
+
381
+ Check npm for a newer CLI release.
382
+
383
+ Flags:
384
+ --json Emit JSON result
385
+ `;
386
+ }
387
+ function accountsHelpText() {
388
+ return `hs-x accounts
389
+
390
+ Commands:
391
+ hs-x accounts list List HS-X accounts
392
+ hs-x accounts current Show the active default HS-X account
393
+ hs-x accounts switch <id> Set the default HS-X account
394
+ hs-x accounts logout <id> Remove an HS-X account from the local store
395
+
396
+ Aliases:
397
+ hs-x account list
398
+ hs-x account set <id>
399
+ `;
400
+ }
401
+ function loginHelpText() {
402
+ return `hs-x login
403
+
404
+ Authenticate the current shell with the HS-X control plane via magic-link email.
405
+
406
+ Usage:
407
+ hs-x login [--email <you@example.com>] [--control-plane-url <url>]
408
+
409
+ Flow:
410
+ 1. We POST your email to the control plane; it sends you a magic-link.
411
+ 2. Paste the URL from that email back here. The CLI extracts the token
412
+ from the URL, calls the consume endpoint, captures the session
413
+ cookie value, and stores it as a bearer token in
414
+ $XDG_CONFIG_HOME/hs-x/config.json.
415
+ 3. Every subsequent hs-x command sends Authorization: Bearer <token>.
416
+
417
+ Run \`hs-x logout\` to revoke the session on the server and clear the
418
+ local copy. The control plane defaults to https://api.hs-x.dev; override
419
+ with --control-plane-url or HSX_CONTROL_PLANE_URL.
420
+ `;
421
+ }
422
+ function whoamiHelpText() {
423
+ return `hs-x whoami
424
+
425
+ Show the active default HS-X account.
426
+
427
+ Usage:
428
+ hs-x whoami [--json]
429
+
430
+ Alias:
431
+ hs-x accounts current
432
+ `;
433
+ }
434
+ function logoutHelpText() {
435
+ return `hs-x logout
436
+
437
+ Remove an HS-X account from the local store. Without an account id, removes
438
+ the active default account.
439
+
440
+ Usage:
441
+ hs-x logout [account-id] [--json]
442
+
443
+ Alias:
444
+ hs-x accounts logout <account-id>
445
+ `;
446
+ }
447
+ function deployHelpText() {
448
+ return `hs-x deploy
449
+
450
+ Build artifacts and deploy to HubSpot and Cloudflare. Without a linked HS-X
451
+ account this runs unlinked; use --build-only for the old artifact-only path.
452
+
453
+ Common:
454
+ --plan, --dry-run Plan only; do not change anything
455
+ --yes, -y Skip the confirmation prompt and use the default account
456
+ --account-id <id> HS-X account (defaults to the active account from \`hs-x accounts switch\`)
457
+ --project-id <id> HS-X project id (defaults to \`name\` from hsx.config.ts)
458
+ --record-local Record the deploy against the control plane
459
+ --promote-when-healthy Wait for healthy and promote
460
+ --hubspot-upload Upload the HubSpot project bundle
461
+ --cloudflare-deploy Push Workers to Cloudflare via Alchemy
462
+ --build-only Generate local artifacts without deploying
463
+ --heartbeat Opt unlinked Workers into anonymous heartbeat events
464
+ --no-heartbeat Disable generated runtime heartbeat wiring
465
+ --quiet, -q Suppress progress output
466
+ --json Emit JSON result
467
+
468
+ Interactive:
469
+ In a TTY, hs-x can prompt for account/project context and confirms the plan
470
+ before changing HubSpot, Cloudflare, or control-plane state.
471
+
472
+ Advanced:
473
+ --hubspot-only Only deploy HubSpot side; fail if any capability needs a runtime
474
+ --local-hubspot-upload Use the local HubSpot mock for upload
475
+ --cloudflare-dry-run Render the Alchemy program but do not push
476
+ --local-control-plane Drive the in-process control plane
477
+ --apply-schema Apply portal schema changes inferred from workers
478
+ --no-manage-schema Skip portal schema management entirely
479
+ --user-id <id> Attribution for control-plane records
480
+ `;
481
+ }
482
+ //# sourceMappingURL=help-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-command.js","sourceRoot":"","sources":["../../src/commands/help-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { CliResult } from '../result.js';
2
+ export interface HistoryCommandInput {
3
+ readonly argv: readonly string[];
4
+ }
5
+ export declare function historyCommand(input: HistoryCommandInput): Promise<CliResult>;
6
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,CA6CnF"}
@@ -0,0 +1,42 @@
1
+ import { defaultHistoryPath, formatRelative, readHistory } from '../history.js';
2
+ import { createReporter } from '../reporter/index.js';
3
+ export async function historyCommand(input) {
4
+ const json = input.argv.includes('--json');
5
+ const limitFlag = input.argv.indexOf('--limit');
6
+ const limit = limitFlag !== -1 ? Number.parseInt(input.argv[limitFlag + 1] ?? '20', 10) || 20 : 20;
7
+ const entries = await readHistory({ limit });
8
+ const path = defaultHistoryPath();
9
+ if (json) {
10
+ process.stdout.write(`${JSON.stringify({
11
+ schema_version: 1,
12
+ command: 'history',
13
+ ok: true,
14
+ data: { source: path, entries },
15
+ })}\n`);
16
+ return { exitCode: 0 };
17
+ }
18
+ const reporter = createReporter({ command: 'history', argv: input.argv });
19
+ if (entries.length === 0) {
20
+ reporter.header();
21
+ reporter.info('No history yet. Run any `hs-x` command and it will appear here.');
22
+ reporter.done();
23
+ return { exitCode: 0 };
24
+ }
25
+ reporter.header(`${entries.length} entr${entries.length === 1 ? 'y' : 'ies'}`);
26
+ const now = new Date();
27
+ const widestCmd = Math.max(...entries.map((e) => e.command.length));
28
+ const lines = [];
29
+ for (const entry of entries) {
30
+ const when = formatRelative(now, new Date(entry.ts)).padEnd(10);
31
+ const cmd = entry.command.padEnd(widestCmd);
32
+ const status = entry.exit_code === 0 ? '✓' : '✗';
33
+ const duration = `${entry.duration_ms}ms`.padStart(7);
34
+ const acct = entry.account_id ? ` ${entry.account_id}` : '';
35
+ lines.push(`${status} ${when} ${cmd} ${duration}${acct}`);
36
+ }
37
+ reporter.block(lines.join('\n'));
38
+ reporter.info(`Source: ${path}`);
39
+ reporter.done();
40
+ return { exitCode: 0 };
41
+ }
42
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CliResult } from '../result.js';
2
+ export declare function initProject({ argv, cwd, json, }: {
3
+ readonly argv: readonly string[];
4
+ readonly cwd: string;
5
+ readonly json: boolean;
6
+ }): Promise<CliResult>;
7
+ export declare function initHelpText(): string;
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,wBAAsB,WAAW,CAAC,EAChC,IAAI,EACJ,GAAG,EACH,IAAI,GACL,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC,SAAS,CAAC,CAiLrB;AAmDD,wBAAgB,YAAY,IAAI,MAAM,CAiBrC"}