@hs-x/cli 0.1.0 → 0.1.2

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 (141) hide show
  1. package/README.md +59 -33
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +152 -334
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/cli/kit.d.ts +36 -0
  6. package/dist/cli/kit.d.ts.map +1 -0
  7. package/dist/cli/kit.js +64 -0
  8. package/dist/cli/kit.js.map +1 -0
  9. package/dist/cli-error.d.ts +19 -1
  10. package/dist/cli-error.d.ts.map +1 -1
  11. package/dist/cli-error.js +19 -4
  12. package/dist/cli-error.js.map +1 -1
  13. package/dist/commands/account.d.ts +55 -6
  14. package/dist/commands/account.d.ts.map +1 -1
  15. package/dist/commands/account.js +254 -252
  16. package/dist/commands/account.js.map +1 -1
  17. package/dist/commands/api.d.ts +16 -0
  18. package/dist/commands/api.d.ts.map +1 -1
  19. package/dist/commands/api.js +173 -0
  20. package/dist/commands/api.js.map +1 -1
  21. package/dist/commands/completion.d.ts +6 -0
  22. package/dist/commands/completion.d.ts.map +1 -1
  23. package/dist/commands/completion.js +34 -0
  24. package/dist/commands/completion.js.map +1 -1
  25. package/dist/commands/connect.d.ts +32 -0
  26. package/dist/commands/connect.d.ts.map +1 -1
  27. package/dist/commands/connect.js +126 -1
  28. package/dist/commands/connect.js.map +1 -1
  29. package/dist/commands/control-plane-read.d.ts +60 -17
  30. package/dist/commands/control-plane-read.d.ts.map +1 -1
  31. package/dist/commands/control-plane-read.js +269 -231
  32. package/dist/commands/control-plane-read.js.map +1 -1
  33. package/dist/commands/deploy-promote.d.ts +14 -0
  34. package/dist/commands/deploy-promote.d.ts.map +1 -1
  35. package/dist/commands/deploy-promote.js +128 -0
  36. package/dist/commands/deploy-promote.js.map +1 -1
  37. package/dist/commands/deploy.d.ts +57 -0
  38. package/dist/commands/deploy.d.ts.map +1 -1
  39. package/dist/commands/deploy.js +154 -1
  40. package/dist/commands/deploy.js.map +1 -1
  41. package/dist/commands/dev.d.ts +25 -0
  42. package/dist/commands/dev.d.ts.map +1 -1
  43. package/dist/commands/dev.js +108 -0
  44. package/dist/commands/dev.js.map +1 -1
  45. package/dist/commands/doctor.d.ts +7 -7
  46. package/dist/commands/doctor.d.ts.map +1 -1
  47. package/dist/commands/doctor.js +144 -143
  48. package/dist/commands/doctor.js.map +1 -1
  49. package/dist/commands/flags.d.ts +35 -0
  50. package/dist/commands/flags.d.ts.map +1 -1
  51. package/dist/commands/flags.js +229 -0
  52. package/dist/commands/flags.js.map +1 -1
  53. package/dist/commands/history.d.ts +8 -5
  54. package/dist/commands/history.d.ts.map +1 -1
  55. package/dist/commands/history.js +46 -40
  56. package/dist/commands/history.js.map +1 -1
  57. package/dist/commands/init.d.ts +30 -0
  58. package/dist/commands/init.d.ts.map +1 -1
  59. package/dist/commands/init.js +89 -0
  60. package/dist/commands/init.js.map +1 -1
  61. package/dist/commands/link.d.ts +15 -0
  62. package/dist/commands/link.d.ts.map +1 -1
  63. package/dist/commands/link.js +284 -0
  64. package/dist/commands/link.js.map +1 -1
  65. package/dist/commands/login.d.ts +17 -1
  66. package/dist/commands/login.d.ts.map +1 -1
  67. package/dist/commands/login.js +79 -21
  68. package/dist/commands/login.js.map +1 -1
  69. package/dist/commands/migrate.d.ts +32 -0
  70. package/dist/commands/migrate.d.ts.map +1 -1
  71. package/dist/commands/migrate.js +255 -0
  72. package/dist/commands/migrate.js.map +1 -1
  73. package/dist/commands/rollback.d.ts +22 -0
  74. package/dist/commands/rollback.d.ts.map +1 -1
  75. package/dist/commands/rollback.js +271 -0
  76. package/dist/commands/rollback.js.map +1 -1
  77. package/dist/commands/secrets.d.ts +35 -5
  78. package/dist/commands/secrets.d.ts.map +1 -1
  79. package/dist/commands/secrets.js +94 -196
  80. package/dist/commands/secrets.js.map +1 -1
  81. package/dist/commands/status.d.ts +8 -5
  82. package/dist/commands/status.d.ts.map +1 -1
  83. package/dist/commands/status.js +162 -121
  84. package/dist/commands/status.js.map +1 -1
  85. package/dist/commands/unlink.d.ts +11 -0
  86. package/dist/commands/unlink.d.ts.map +1 -1
  87. package/dist/commands/unlink.js +75 -0
  88. package/dist/commands/unlink.js.map +1 -1
  89. package/dist/commands/update.d.ts +8 -4
  90. package/dist/commands/update.d.ts.map +1 -1
  91. package/dist/commands/update.js +83 -35
  92. package/dist/commands/update.js.map +1 -1
  93. package/dist/commands/validate.d.ts +12 -6
  94. package/dist/commands/validate.d.ts.map +1 -1
  95. package/dist/commands/validate.js +50 -23
  96. package/dist/commands/validate.js.map +1 -1
  97. package/dist/config.d.ts +8 -0
  98. package/dist/config.d.ts.map +1 -1
  99. package/dist/config.js +1 -1
  100. package/dist/config.js.map +1 -1
  101. package/dist/constants.d.ts +1 -1
  102. package/dist/constants.js +1 -1
  103. package/dist/init/templates.js +1 -1
  104. package/dist/init/templates.js.map +1 -1
  105. package/dist/services/cloudflare-kv.d.ts +2 -2
  106. package/dist/services/cloudflare-kv.d.ts.map +1 -1
  107. package/dist/services/cloudflare-kv.js +10 -6
  108. package/dist/services/cloudflare-kv.js.map +1 -1
  109. package/dist/services/command-history.d.ts +2 -0
  110. package/dist/services/command-history.d.ts.map +1 -1
  111. package/dist/services/command-history.js +1 -1
  112. package/dist/services/command-history.js.map +1 -1
  113. package/dist/services/config.d.ts +24 -0
  114. package/dist/services/config.d.ts.map +1 -0
  115. package/dist/services/config.js +41 -0
  116. package/dist/services/config.js.map +1 -0
  117. package/dist/services/cwd.d.ts +12 -0
  118. package/dist/services/cwd.d.ts.map +1 -0
  119. package/dist/services/cwd.js +10 -0
  120. package/dist/services/cwd.js.map +1 -0
  121. package/dist/services/hubspot-dev-client.d.ts +38 -0
  122. package/dist/services/hubspot-dev-client.d.ts.map +1 -0
  123. package/dist/services/hubspot-dev-client.js +256 -0
  124. package/dist/services/hubspot-dev-client.js.map +1 -0
  125. package/dist/services/live.d.ts +7 -1
  126. package/dist/services/live.d.ts.map +1 -1
  127. package/dist/services/live.js +20 -8
  128. package/dist/services/live.js.map +1 -1
  129. package/dist/services/reporter.d.ts +14 -0
  130. package/dist/services/reporter.d.ts.map +1 -1
  131. package/dist/services/reporter.js +20 -0
  132. package/dist/services/reporter.js.map +1 -1
  133. package/dist/services/telemetry.d.ts +43 -0
  134. package/dist/services/telemetry.d.ts.map +1 -0
  135. package/dist/services/telemetry.js +93 -0
  136. package/dist/services/telemetry.js.map +1 -0
  137. package/dist/services/tenant-state.d.ts +85 -0
  138. package/dist/services/tenant-state.d.ts.map +1 -0
  139. package/dist/services/tenant-state.js +98 -0
  140. package/dist/services/tenant-state.js.map +1 -0
  141. package/package.json +4 -2
@@ -1,9 +1,137 @@
1
+ import * as Command from '@effect/cli/Command';
1
2
  import { HttpClientRequest, Schema, schemas } from '@hs-x/types';
3
+ import { Config, Effect, Option } from 'effect';
2
4
  import { isLinked } from '../account-store.js';
5
+ import { CliError, cliError } from '../cli-error.js';
6
+ import { accountIdOption, controlPlaneUrlOption, deployIdOption, jsonOption, projectIdOption, runHandler, userIdOption, } from '../cli/kit.js';
3
7
  import { controlPlaneAuthHeaders } from '../control-plane-fetch.js';
4
8
  import { executeCliHttp } from '../effect-http.js';
5
9
  import { createReporter } from '../reporter/index.js';
10
+ import { AccountStore } from '../services/account-store.js';
11
+ import { ControlPlaneClient } from '../services/control-plane.js';
12
+ import { CliHttp } from '../services/http.js';
13
+ import { Reporter } from '../services/reporter.js';
6
14
  const UNLINKED_PROMOTE_HINT = 'Promote is a linked-mode operation tied to control-plane revisioned routing. Unlinked deploys become active automatically when they succeed. Run `hs-x link` to enable the staged promote workflow, or use `hs-x rollback --deploy-id <id>` to move the active pointer in tenant state.';
15
+ // ─── Native @effect/cli command (Phase 4) ───────────────────────────────────
16
+ // Control-plane deploy promotion as an Effect handler. Link-required gating runs
17
+ // through `AccountStore.isLinked`; the staged promote POST goes through
18
+ // `ControlPlaneClient.authHeaders` (bearer-or-x-hsx-user-id fallback, matching
19
+ // legacy `controlPlaneAuthHeaders`) + `CliHttp` — no raw fetch.
20
+ //
21
+ // JSON-shape MISMATCH (flagged, NOT changed): both the success and the
22
+ // link-required branches emit bespoke pretty-printed objects (the success shape
23
+ // is `{ ok, command:'promote', linkState, mode, promotion }`; the error shape is
24
+ // `{ ok:false, command, linkState:'unlinked', error:{code,message,hint} }`) —
25
+ // NOT the `JsonReporter` envelope. Subprocess tests assert those exact shapes,
26
+ // so the JSON branches write verbatim via sync stdout writes.
27
+ // TODO(phase-5): reconcile these bespoke payloads with the standard envelope.
28
+ export const promoteCmd = Command.make('promote', {
29
+ json: jsonOption,
30
+ deployId: deployIdOption,
31
+ accountId: accountIdOption,
32
+ projectId: projectIdOption,
33
+ controlPlaneUrl: controlPlaneUrlOption,
34
+ userId: userIdOption,
35
+ }, (opts) => runHandler('promote', { json: opts.json }, promoteBody(opts)));
36
+ function promoteBody(opts) {
37
+ return Effect.gen(function* () {
38
+ const store = yield* AccountStore;
39
+ const controlPlane = yield* ControlPlaneClient;
40
+ const reporter = yield* Reporter;
41
+ const commandName = 'promote';
42
+ const envControlPlaneUrl = yield* Config.string('HSX_CONTROL_PLANE_URL').pipe(Config.withDefault(''), Effect.orDie);
43
+ const explicitControlPlaneUrl = Option.getOrUndefined(opts.controlPlaneUrl) ?? (envControlPlaneUrl || undefined);
44
+ const linked = yield* store.isLinked;
45
+ if (!linked && !explicitControlPlaneUrl) {
46
+ if (opts.json) {
47
+ yield* Effect.sync(() => process.stdout.write(`${JSON.stringify({
48
+ ok: false,
49
+ command: commandName,
50
+ linkState: 'unlinked',
51
+ error: {
52
+ code: 'HSX_E_LINK_REQUIRED',
53
+ message: 'Promote requires a linked HS-X account.',
54
+ hint: UNLINKED_PROMOTE_HINT,
55
+ },
56
+ }, null, 2)}\n`));
57
+ }
58
+ else {
59
+ yield* reporter.error('HSX_E_LINK_REQUIRED', 'Promote requires a linked HS-X account.', {
60
+ hint: UNLINKED_PROMOTE_HINT,
61
+ });
62
+ yield* reporter.done(undefined, 10);
63
+ }
64
+ return yield* Effect.fail(cliError('HSX_E_LINK_REQUIRED', 'Promote requires a linked HS-X account.', {
65
+ silent: true,
66
+ exitCode: 10,
67
+ }));
68
+ }
69
+ const deployId = Option.getOrUndefined(opts.deployId);
70
+ const accountId = yield* resolveWithEnv(opts.accountId, 'HSX_ACCOUNT_ID');
71
+ const projectId = yield* resolveWithEnv(opts.projectId, 'HSX_PROJECT_ID');
72
+ const controlPlaneUrl = explicitControlPlaneUrl;
73
+ if (!deployId || !accountId || !projectId || !controlPlaneUrl) {
74
+ return yield* Effect.fail(cliError('HSX_E_INTERNAL', 'Linked deploy promotion requires --deploy-id, --account-id/HSX_ACCOUNT_ID, --project-id/HSX_PROJECT_ID, and --control-plane-url/HSX_CONTROL_PLANE_URL.'));
75
+ }
76
+ const userIdEnv = yield* Config.string('HSX_USER_ID').pipe(Config.withDefault(''), Effect.orDie);
77
+ const userId = Option.getOrUndefined(opts.userId) ?? (userIdEnv || 'local-cli-user');
78
+ const headers = yield* controlPlane.authHeaders(userId);
79
+ const promotion = yield* requestControlPlaneDeployPromotionEff({
80
+ controlPlaneUrl,
81
+ deployId,
82
+ accountId,
83
+ projectId,
84
+ headers,
85
+ });
86
+ const result = {
87
+ ok: true,
88
+ command: commandName,
89
+ linkState: 'linked',
90
+ mode: 'control-plane-promote',
91
+ promotion,
92
+ };
93
+ if (opts.json) {
94
+ yield* Effect.sync(() => process.stdout.write(`${JSON.stringify(result, null, 2)}\n`));
95
+ return;
96
+ }
97
+ yield* reporter.header(projectId);
98
+ const step = yield* reporter.step(`Promoted ${promotion.promoted.deployId}`);
99
+ yield* step.ok();
100
+ yield* reporter.done('Promoted');
101
+ });
102
+ }
103
+ function resolveWithEnv(flag, envKey) {
104
+ return Effect.gen(function* () {
105
+ const fromFlag = Option.getOrUndefined(flag);
106
+ if (fromFlag)
107
+ return fromFlag;
108
+ const env = yield* Config.string(envKey).pipe(Config.withDefault(''), Effect.orDie);
109
+ return env || undefined;
110
+ });
111
+ }
112
+ /** Effect-native control-plane promote POST over `CliHttp`. */
113
+ function requestControlPlaneDeployPromotionEff(input) {
114
+ return Effect.gen(function* () {
115
+ const http = yield* CliHttp;
116
+ const url = new URL(`/v1/deploys/${encodeURIComponent(input.deployId)}/promote`, input.controlPlaneUrl);
117
+ const headers = {
118
+ ...input.headers,
119
+ 'content-type': 'application/json',
120
+ };
121
+ const request = HttpClientRequest.make('POST')(url).pipe(HttpClientRequest.setHeaders(headers), HttpClientRequest.bodyText(JSON.stringify({ accountId: input.accountId, projectId: input.projectId }), 'application/json'));
122
+ const response = yield* http.execute(request);
123
+ const body = yield* Effect.promise(() => response.json().catch(() => undefined));
124
+ if (!response.ok) {
125
+ return yield* Effect.fail(cliError('HSX_E_INTERNAL', isRecord(body) && typeof body.message === 'string'
126
+ ? body.message
127
+ : `Control-plane deploy promotion failed with status ${response.status}`));
128
+ }
129
+ return yield* Effect.try({
130
+ try: () => Schema.decodeUnknownSync(schemas.DeployPromotionResult)(body),
131
+ catch: (cause) => cliError('HSX_E_INTERNAL', String(cause)),
132
+ });
133
+ });
134
+ }
7
135
  export async function deployPromoteCommand({ argv, json, }) {
8
136
  const commandName = argv[0] === 'promote' ? 'promote' : 'deploy promote';
9
137
  const explicitControlPlaneUrl = resolveFlag(argv, '--control-plane-url') ?? process.env.HSX_CONTROL_PLANE_URL;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-promote.js","sourceRoot":"","sources":["../../src/commands/deploy-promote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy-promote.js","sourceRoot":"","sources":["../../src/commands/deploy-promote.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import * as Command from '@effect/cli/Command';
2
+ import { Option } from 'effect';
3
+ import { Cwd } from '../services/cwd.js';
1
4
  import type { CliResult } from '../result.js';
2
5
  export declare function deployCommand({ argv, root, json, }: {
3
6
  readonly argv: readonly string[];
@@ -15,4 +18,58 @@ export declare function renderWranglerConfig(input: {
15
18
  /** Path (relative to this config) to the tenant-D1 migrations wrangler auto-applies. */
16
19
  readonly tenantMigrationsDir?: string;
17
20
  }): string;
21
+ export declare const deployCmd: Command.Command<"deploy", Cwd, import("../cli-error.js").CliError, {
22
+ readonly json: boolean;
23
+ readonly cwd: Option.Option<string>;
24
+ readonly controlPlaneUrl: Option.Option<string>;
25
+ readonly userId: Option.Option<string>;
26
+ readonly projectId: Option.Option<string>;
27
+ readonly accountId: Option.Option<string>;
28
+ readonly env: Option.Option<string>;
29
+ readonly environment: Option.Option<string>;
30
+ readonly promotionTimeoutMs: Option.Option<string>;
31
+ readonly runtimeOrigin: Option.Option<string>;
32
+ readonly portalSchemaFixture: Option.Option<string>;
33
+ readonly compatibilityDate: Option.Option<string>;
34
+ readonly hubspotAppId: Option.Option<string>;
35
+ readonly hubspotClientId: Option.Option<string>;
36
+ readonly hubspotClientSecret: Option.Option<string>;
37
+ readonly developerAccountId: Option.Option<string>;
38
+ readonly hubspotBuildTimeoutMs: Option.Option<string>;
39
+ readonly message: Option.Option<string>;
40
+ readonly platformVersion: Option.Option<string>;
41
+ readonly hubspotProjectName: Option.Option<string>;
42
+ readonly plan: boolean;
43
+ readonly dryRun: boolean;
44
+ readonly buildOnly: boolean;
45
+ readonly hubspotOnly: boolean;
46
+ readonly hubspotUpload: boolean;
47
+ readonly localHubspotUpload: boolean;
48
+ readonly hubspotUploadOnly: boolean;
49
+ readonly skipDeploy: boolean;
50
+ readonly cloudflareDeploy: boolean;
51
+ readonly cloudflareDryRun: boolean;
52
+ readonly noManageSchema: boolean;
53
+ readonly localControlPlane: boolean;
54
+ readonly recordLocal: boolean;
55
+ readonly promoteWhenHealthy: boolean;
56
+ readonly applySchema: boolean;
57
+ readonly heartbeat: boolean;
58
+ readonly noHeartbeat: boolean;
59
+ readonly portalSchemaLive: boolean;
60
+ readonly localHubspotSchema: boolean;
61
+ readonly force: boolean;
62
+ readonly yes: boolean;
63
+ readonly subcommand: Option.Option<{
64
+ readonly json: boolean;
65
+ readonly cwd: Option.Option<string>;
66
+ readonly controlPlaneUrl: Option.Option<string>;
67
+ readonly accountId: Option.Option<string>;
68
+ readonly projectId: Option.Option<string>;
69
+ readonly deployId: Option.Option<string>;
70
+ readonly userId: Option.Option<string>;
71
+ readonly force: boolean;
72
+ readonly yes: boolean;
73
+ }>;
74
+ }>;
18
75
  //# sourceMappingURL=deploy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAsV9C,wBAAsB,aAAa,CAAC,EAClC,IAAI,EACJ,IAAI,EACJ,IAAI,GACL,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC,SAAS,CAAC,CAqXrB;AA+hDD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,wFAAwF;IACxF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC,GAAG,MAAM,CAsCT"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAexC,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAyBzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAsV9C,wBAAsB,aAAa,CAAC,EAClC,IAAI,EACJ,IAAI,EACJ,IAAI,GACL,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC,SAAS,CAAC,CAqXrB;AA+hDD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,wFAAwF;IACxF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC,GAAG,MAAM,CAsCT;AAgiDD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAqE,CAAC"}
@@ -9,7 +9,12 @@ import { cloudflareResourceName, generateHubSpotRuntimeProject, generateProjectA
9
9
  import { loadCreateControlPlane } from '../control-plane-loader.js';
10
10
  import { HttpClientRequest, Schema, schemas } from '@hs-x/types';
11
11
  import { validateProject } from '@hs-x/validator';
12
- import { Effect } from 'effect';
12
+ import * as Command from '@effect/cli/Command';
13
+ import * as Options from '@effect/cli/Options';
14
+ import { Effect, Option } from 'effect';
15
+ import { exitWith } from '../cli-error.js';
16
+ import { accountIdOption, controlPlaneUrlOption, cwdOption, deployIdOption, forceOption, jsonOption, projectIdOption, runHandler, runQuarantined, userIdOption, yesOption, } from '../cli/kit.js';
17
+ import { Cwd } from '../services/cwd.js';
13
18
  import { isLinked } from '../account-store.js';
14
19
  import { resolveCloudflareCredentials } from '../cloudflare-kv.js';
15
20
  import { DEFAULT_CONTROL_PLANE_URL, formatConfigUrl, loadCliConfig, resolveControlPlaneUrl, } from '../config.js';
@@ -2761,4 +2766,152 @@ function resolveFlags(argv, flag) {
2761
2766
  function write(message) {
2762
2767
  process.stdout.write(message);
2763
2768
  }
2769
+ // ─── Native @effect/cli command (Phase 4) ───────────────────────────────────
2770
+ // `deploy` is QUARANTINED. Its heavy imperative internals (artifact codegen,
2771
+ // Cloudflare/wrangler orchestration, HubSpot upload, control-plane plan/record/
2772
+ // promote, portal-schema management) stay in `deployCommand`. The native
2773
+ // `deployCmd` reconstructs the legacy argv from its typed options and delegates
2774
+ // to the existing `deployCommand` Promise via `Effect.tryPromise`; only the
2775
+ // command boundary is Effect. A non-zero `CliResult.exitCode` (0 clean, 20
2776
+ // partial, 1/10 failure) is surfaced as a silent `exitWith(code)` — the legacy
2777
+ // body already rendered its own human/JSON output — so `runHandler` does not
2778
+ // re-render. `--cwd` overrides the injected `Cwd` for the project root.
2779
+ const deployOptions = {
2780
+ json: jsonOption,
2781
+ cwd: cwdOption,
2782
+ // ── text-valued flags (resolveFlag) ──
2783
+ controlPlaneUrl: controlPlaneUrlOption, // --control-plane-url
2784
+ userId: userIdOption, // --user-id
2785
+ projectId: projectIdOption, // --project-id
2786
+ accountId: accountIdOption, // --account-id
2787
+ env: Options.text('env').pipe(Options.optional), // --env
2788
+ environment: Options.text('environment').pipe(Options.optional), // --environment
2789
+ promotionTimeoutMs: Options.text('promotion-timeout-ms').pipe(Options.optional), // --promotion-timeout-ms
2790
+ runtimeOrigin: Options.text('runtime-origin').pipe(Options.optional), // --runtime-origin
2791
+ portalSchemaFixture: Options.text('portal-schema-fixture').pipe(Options.optional), // --portal-schema-fixture
2792
+ compatibilityDate: Options.text('compatibility-date').pipe(Options.optional), // --compatibility-date
2793
+ hubspotAppId: Options.text('hubspot-app-id').pipe(Options.optional), // --hubspot-app-id
2794
+ hubspotClientId: Options.text('hubspot-client-id').pipe(Options.optional), // --hubspot-client-id
2795
+ hubspotClientSecret: Options.text('hubspot-client-secret').pipe(Options.optional), // --hubspot-client-secret
2796
+ developerAccountId: Options.text('developer-account-id').pipe(Options.optional), // --developer-account-id
2797
+ hubspotBuildTimeoutMs: Options.text('hubspot-build-timeout-ms').pipe(Options.optional), // --hubspot-build-timeout-ms
2798
+ message: Options.text('message').pipe(Options.optional), // --message
2799
+ platformVersion: Options.text('platform-version').pipe(Options.optional), // --platform-version
2800
+ hubspotProjectName: Options.text('hubspot-project-name').pipe(Options.optional), // --hubspot-project-name
2801
+ // ── boolean flags (argv.includes) ──
2802
+ plan: Options.boolean('plan').pipe(Options.withDefault(false)), // --plan
2803
+ dryRun: Options.boolean('dry-run').pipe(Options.withDefault(false)), // --dry-run
2804
+ buildOnly: Options.boolean('build-only').pipe(Options.withDefault(false)), // --build-only
2805
+ hubspotOnly: Options.boolean('hubspot-only').pipe(Options.withDefault(false)), // --hubspot-only
2806
+ hubspotUpload: Options.boolean('hubspot-upload').pipe(Options.withDefault(false)), // --hubspot-upload
2807
+ localHubspotUpload: Options.boolean('local-hubspot-upload').pipe(Options.withDefault(false)), // --local-hubspot-upload
2808
+ hubspotUploadOnly: Options.boolean('hubspot-upload-only').pipe(Options.withDefault(false)), // --hubspot-upload-only
2809
+ skipDeploy: Options.boolean('skip-deploy').pipe(Options.withDefault(false)), // --skip-deploy
2810
+ cloudflareDeploy: Options.boolean('cloudflare-deploy').pipe(Options.withDefault(false)), // --cloudflare-deploy
2811
+ cloudflareDryRun: Options.boolean('cloudflare-dry-run').pipe(Options.withDefault(false)), // --cloudflare-dry-run
2812
+ noManageSchema: Options.boolean('no-manage-schema').pipe(Options.withDefault(false)), // --no-manage-schema
2813
+ localControlPlane: Options.boolean('local-control-plane').pipe(Options.withDefault(false)), // --local-control-plane
2814
+ recordLocal: Options.boolean('record-local').pipe(Options.withDefault(false)), // --record-local
2815
+ promoteWhenHealthy: Options.boolean('promote-when-healthy').pipe(Options.withDefault(false)), // --promote-when-healthy
2816
+ applySchema: Options.boolean('apply-schema').pipe(Options.withDefault(false)), // --apply-schema
2817
+ heartbeat: Options.boolean('heartbeat').pipe(Options.withDefault(false)), // --heartbeat
2818
+ noHeartbeat: Options.boolean('no-heartbeat').pipe(Options.withDefault(false)), // --no-heartbeat
2819
+ portalSchemaLive: Options.boolean('portal-schema-live').pipe(Options.withDefault(false)), // --portal-schema-live
2820
+ localHubspotSchema: Options.boolean('local-hubspot-schema').pipe(Options.withDefault(false)), // --local-hubspot-schema
2821
+ force: Options.boolean('force').pipe(Options.withDefault(false)), // --force
2822
+ yes: Options.boolean('yes').pipe(Options.withAlias('y'), Options.withDefault(false)), // --yes / -y
2823
+ };
2824
+ const deployBaseCmd = Command.make('deploy', deployOptions, (opts) => runHandler('deploy', { json: opts.json }, Effect.gen(function* () {
2825
+ // The default project root is the injected Cwd; --cwd overrides it.
2826
+ const cwd = yield* Cwd;
2827
+ const root = Option.getOrElse(opts.cwd, () => cwd);
2828
+ // Reconstruct the argv the quarantined body parses. Lead with 'deploy'
2829
+ // (NOT a subcommand) so `argv[1]` is never the `promote` sentinel.
2830
+ const argv = ['deploy'];
2831
+ const push = (flag, value) => {
2832
+ if (Option.isSome(value))
2833
+ argv.push(flag, value.value);
2834
+ };
2835
+ const flag = (name, on) => {
2836
+ if (on)
2837
+ argv.push(name);
2838
+ };
2839
+ push('--control-plane-url', opts.controlPlaneUrl);
2840
+ push('--user-id', opts.userId);
2841
+ push('--project-id', opts.projectId);
2842
+ push('--account-id', opts.accountId);
2843
+ push('--env', opts.env);
2844
+ push('--environment', opts.environment);
2845
+ push('--promotion-timeout-ms', opts.promotionTimeoutMs);
2846
+ push('--runtime-origin', opts.runtimeOrigin);
2847
+ push('--portal-schema-fixture', opts.portalSchemaFixture);
2848
+ push('--compatibility-date', opts.compatibilityDate);
2849
+ push('--hubspot-app-id', opts.hubspotAppId);
2850
+ push('--hubspot-client-id', opts.hubspotClientId);
2851
+ push('--hubspot-client-secret', opts.hubspotClientSecret);
2852
+ push('--developer-account-id', opts.developerAccountId);
2853
+ push('--hubspot-build-timeout-ms', opts.hubspotBuildTimeoutMs);
2854
+ push('--message', opts.message);
2855
+ push('--platform-version', opts.platformVersion);
2856
+ push('--hubspot-project-name', opts.hubspotProjectName);
2857
+ flag('--plan', opts.plan);
2858
+ flag('--dry-run', opts.dryRun);
2859
+ flag('--build-only', opts.buildOnly);
2860
+ flag('--hubspot-only', opts.hubspotOnly);
2861
+ flag('--hubspot-upload', opts.hubspotUpload);
2862
+ flag('--local-hubspot-upload', opts.localHubspotUpload);
2863
+ flag('--hubspot-upload-only', opts.hubspotUploadOnly);
2864
+ flag('--skip-deploy', opts.skipDeploy);
2865
+ flag('--cloudflare-deploy', opts.cloudflareDeploy);
2866
+ flag('--cloudflare-dry-run', opts.cloudflareDryRun);
2867
+ flag('--no-manage-schema', opts.noManageSchema);
2868
+ flag('--local-control-plane', opts.localControlPlane);
2869
+ flag('--record-local', opts.recordLocal);
2870
+ flag('--promote-when-healthy', opts.promoteWhenHealthy);
2871
+ flag('--apply-schema', opts.applySchema);
2872
+ flag('--heartbeat', opts.heartbeat);
2873
+ flag('--no-heartbeat', opts.noHeartbeat);
2874
+ flag('--portal-schema-live', opts.portalSchemaLive);
2875
+ flag('--local-hubspot-schema', opts.localHubspotSchema);
2876
+ flag('--force', opts.force);
2877
+ flag('--yes', opts.yes);
2878
+ if (opts.json)
2879
+ argv.push('--json');
2880
+ yield* runQuarantined(opts.json, () => deployCommand({ argv, root, json: opts.json }));
2881
+ })));
2882
+ // `hs-x deploy promote` — preserved as a subcommand that delegates to the legacy
2883
+ // `deployCommand` promote branch (argv[1] === 'promote'), byte-for-byte. The
2884
+ // top-level `promote` command shares the same control-plane promotion path.
2885
+ const deployPromoteSubCmd = Command.make('promote', {
2886
+ json: jsonOption,
2887
+ cwd: cwdOption,
2888
+ controlPlaneUrl: controlPlaneUrlOption,
2889
+ accountId: accountIdOption,
2890
+ projectId: projectIdOption,
2891
+ deployId: deployIdOption,
2892
+ userId: userIdOption,
2893
+ force: forceOption,
2894
+ yes: yesOption,
2895
+ }, (opts) => runHandler('deploy promote', { json: opts.json }, Effect.gen(function* () {
2896
+ const cwd = yield* Cwd;
2897
+ const root = Option.getOrElse(opts.cwd, () => cwd);
2898
+ const argv = ['deploy', 'promote'];
2899
+ const push = (flag, value) => {
2900
+ if (Option.isSome(value))
2901
+ argv.push(flag, value.value);
2902
+ };
2903
+ push('--control-plane-url', opts.controlPlaneUrl);
2904
+ push('--account-id', opts.accountId);
2905
+ push('--project-id', opts.projectId);
2906
+ push('--deploy-id', opts.deployId);
2907
+ push('--user-id', opts.userId);
2908
+ if (opts.force)
2909
+ argv.push('--force');
2910
+ if (opts.yes)
2911
+ argv.push('--yes');
2912
+ if (opts.json)
2913
+ argv.push('--json');
2914
+ yield* runQuarantined(opts.json, () => deployCommand({ argv, root, json: opts.json }));
2915
+ })));
2916
+ export const deployCmd = deployBaseCmd.pipe(Command.withSubcommands([deployPromoteSubCmd]));
2764
2917
  //# sourceMappingURL=deploy.js.map