@hs-x/cli 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -33
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +152 -334
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/kit.d.ts +36 -0
- package/dist/cli/kit.d.ts.map +1 -0
- package/dist/cli/kit.js +64 -0
- package/dist/cli/kit.js.map +1 -0
- package/dist/cli-error.d.ts +19 -1
- package/dist/cli-error.d.ts.map +1 -1
- package/dist/cli-error.js +19 -4
- package/dist/cli-error.js.map +1 -1
- package/dist/commands/account.d.ts +55 -6
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +254 -252
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/api.d.ts +16 -0
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +173 -0
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/completion.d.ts +6 -0
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +34 -0
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/connect.d.ts +32 -0
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +126 -1
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/control-plane-read.d.ts +60 -17
- package/dist/commands/control-plane-read.d.ts.map +1 -1
- package/dist/commands/control-plane-read.js +269 -231
- package/dist/commands/control-plane-read.js.map +1 -1
- package/dist/commands/deploy-promote.d.ts +14 -0
- package/dist/commands/deploy-promote.d.ts.map +1 -1
- package/dist/commands/deploy-promote.js +128 -0
- package/dist/commands/deploy-promote.js.map +1 -1
- package/dist/commands/deploy.d.ts +57 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +154 -1
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +25 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +108 -0
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +7 -7
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +144 -143
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/flags.d.ts +35 -0
- package/dist/commands/flags.d.ts.map +1 -1
- package/dist/commands/flags.js +229 -0
- package/dist/commands/flags.js.map +1 -1
- package/dist/commands/history.d.ts +8 -5
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +46 -40
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init.d.ts +30 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +89 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/link.d.ts +15 -0
- package/dist/commands/link.d.ts.map +1 -1
- package/dist/commands/link.js +284 -0
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/login.d.ts +17 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +79 -21
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/migrate.d.ts +32 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +255 -0
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/rollback.d.ts +22 -0
- package/dist/commands/rollback.d.ts.map +1 -1
- package/dist/commands/rollback.js +271 -0
- package/dist/commands/rollback.js.map +1 -1
- package/dist/commands/secrets.d.ts +35 -5
- package/dist/commands/secrets.d.ts.map +1 -1
- package/dist/commands/secrets.js +94 -196
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/status.d.ts +8 -5
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +162 -121
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/unlink.d.ts +11 -0
- package/dist/commands/unlink.d.ts.map +1 -1
- package/dist/commands/unlink.js +75 -0
- package/dist/commands/unlink.js.map +1 -1
- package/dist/commands/update.d.ts +8 -4
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +83 -35
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.d.ts +12 -6
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +50 -23
- package/dist/commands/validate.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -1
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +9 -7
- package/dist/init/templates.js.map +1 -1
- package/dist/services/cloudflare-kv.d.ts +2 -2
- package/dist/services/cloudflare-kv.d.ts.map +1 -1
- package/dist/services/cloudflare-kv.js +10 -6
- package/dist/services/cloudflare-kv.js.map +1 -1
- package/dist/services/command-history.d.ts +2 -0
- package/dist/services/command-history.d.ts.map +1 -1
- package/dist/services/command-history.js +1 -1
- package/dist/services/command-history.js.map +1 -1
- package/dist/services/config.d.ts +24 -0
- package/dist/services/config.d.ts.map +1 -0
- package/dist/services/config.js +41 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/cwd.d.ts +12 -0
- package/dist/services/cwd.d.ts.map +1 -0
- package/dist/services/cwd.js +10 -0
- package/dist/services/cwd.js.map +1 -0
- package/dist/services/hubspot-dev-client.d.ts +38 -0
- package/dist/services/hubspot-dev-client.d.ts.map +1 -0
- package/dist/services/hubspot-dev-client.js +256 -0
- package/dist/services/hubspot-dev-client.js.map +1 -0
- package/dist/services/live.d.ts +7 -1
- package/dist/services/live.d.ts.map +1 -1
- package/dist/services/live.js +20 -8
- package/dist/services/live.js.map +1 -1
- package/dist/services/reporter.d.ts +14 -0
- package/dist/services/reporter.d.ts.map +1 -1
- package/dist/services/reporter.js +20 -0
- package/dist/services/reporter.js.map +1 -1
- package/dist/services/telemetry.d.ts +43 -0
- package/dist/services/telemetry.d.ts.map +1 -0
- package/dist/services/telemetry.js +93 -0
- package/dist/services/telemetry.js.map +1 -0
- package/dist/services/tenant-state.d.ts +85 -0
- package/dist/services/tenant-state.d.ts.map +1 -0
- package/dist/services/tenant-state.js +98 -0
- package/dist/services/tenant-state.js.map +1 -0
- package/package.json +3 -2
package/dist/commands/doctor.js
CHANGED
|
@@ -1,72 +1,157 @@
|
|
|
1
|
+
import * as Command from '@effect/cli/Command';
|
|
2
|
+
import { HttpClientRequest } from '@hs-x/types';
|
|
3
|
+
import { Config, Effect } from 'effect';
|
|
1
4
|
import { defaultStorePath, isActiveUserSession, loadStore } from '../account-store.js';
|
|
5
|
+
import { jsonOption, runHandler } from '../cli/kit.js';
|
|
2
6
|
import { formatRelative, readHistory } from '../history.js';
|
|
3
7
|
import { discoverHubSpotAccounts, discoverHubSpotPak } from '../hubspot-auth.js';
|
|
4
8
|
import { getMachineId } from '../machine-id.js';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
ok: exitCode === 0,
|
|
57
|
-
data: { checks, summary: { pass, warn, fail } },
|
|
58
|
-
})}\n`);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
9
|
+
import { Cwd } from '../services/cwd.js';
|
|
10
|
+
import { CliHttp } from '../services/http.js';
|
|
11
|
+
import { Reporter } from '../services/reporter.js';
|
|
12
|
+
// ─── Native @effect/cli command (Phase 4) ───────────────────────────────────
|
|
13
|
+
// Diagnostic checks rebuilt as an Effect handler over services: `Cwd` (project
|
|
14
|
+
// root), `CliHttp` (PAK + control-plane probes — no raw fetch), `Reporter`
|
|
15
|
+
// (steps + JSON envelope), `Config` (env reads). The check ordering, pass/warn/
|
|
16
|
+
// fail detail strings, JSON shape, and exit-code semantics are preserved exactly
|
|
17
|
+
// against the legacy body so the subprocess tests keep matching.
|
|
18
|
+
//
|
|
19
|
+
// JSON shape note: the `JsonReporter` envelope is
|
|
20
|
+
// { schema_version, command, ok, data, warnings? }
|
|
21
|
+
// and `reporter.data({ checks, summary })` + `reporter.done(summary, exitCode)`
|
|
22
|
+
// reproduces the legacy `{schema_version:1, command:'doctor', ok, data:{checks,
|
|
23
|
+
// summary:{pass,warn,fail}}}` verbatim (`ok` is `exitCode === 0`). No mismatch.
|
|
24
|
+
export const doctorCmd = Command.make('doctor', { json: jsonOption }, (opts) => runHandler('doctor', { json: opts.json }, doctorBody(opts)));
|
|
25
|
+
function doctorBody(opts) {
|
|
26
|
+
return Effect.gen(function* () {
|
|
27
|
+
const reporter = yield* Reporter;
|
|
28
|
+
const cwd = yield* Cwd;
|
|
29
|
+
if (!opts.json)
|
|
30
|
+
yield* reporter.header();
|
|
31
|
+
const checks = [];
|
|
32
|
+
const run = (effect) => Effect.gen(function* () {
|
|
33
|
+
const check = yield* effect;
|
|
34
|
+
checks.push(check);
|
|
35
|
+
if (!opts.json)
|
|
36
|
+
yield* renderStepEffect(reporter, check);
|
|
37
|
+
});
|
|
38
|
+
// 1. HS-X account store
|
|
39
|
+
yield* run(checkAccountStoreEffect);
|
|
40
|
+
// 2. Link state and machine identity
|
|
41
|
+
yield* run(checkLinkStateEffect);
|
|
42
|
+
yield* run(checkMachineIdEffect);
|
|
43
|
+
// 3. HubSpot CLI config (where we discover PAKs)
|
|
44
|
+
yield* run(checkHubSpotCliEffect(cwd));
|
|
45
|
+
// 4. HubSpot PAK validity
|
|
46
|
+
yield* run(checkHubSpotPakEffect(cwd));
|
|
47
|
+
// 5. HS-X control plane reachability
|
|
48
|
+
yield* run(checkControlPlaneEffect);
|
|
49
|
+
// 6. Recent activity from history log
|
|
50
|
+
yield* run(checkRecentActivityEffect);
|
|
51
|
+
const pass = checks.filter((c) => c.status === 'ok').length;
|
|
52
|
+
const warn = checks.filter((c) => c.status === 'warn').length;
|
|
53
|
+
const fail = checks.filter((c) => c.status === 'fail').length;
|
|
54
|
+
const exitCode = fail > 0 ? 1 : 0;
|
|
55
|
+
if (opts.json) {
|
|
56
|
+
yield* reporter.data({ checks, summary: { pass, warn, fail } });
|
|
57
|
+
yield* reporter.done(undefined, exitCode);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
61
60
|
const summary = fail > 0
|
|
62
61
|
? `${fail} issue${fail === 1 ? '' : 's'}`
|
|
63
62
|
: warn > 0
|
|
64
63
|
? `${pass} ok, ${warn} warning${warn === 1 ? '' : 's'}`
|
|
65
64
|
: `${pass} ok`;
|
|
66
|
-
reporter.done(summary, exitCode);
|
|
67
|
-
}
|
|
68
|
-
|
|
65
|
+
yield* reporter.done(summary, exitCode);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function renderStepEffect(reporter, check) {
|
|
69
|
+
return Effect.gen(function* () {
|
|
70
|
+
const step = yield* reporter.step(check.name);
|
|
71
|
+
if (check.status === 'ok')
|
|
72
|
+
yield* step.ok(check.detail);
|
|
73
|
+
else if (check.status === 'warn')
|
|
74
|
+
yield* step.warn(check.detail);
|
|
75
|
+
else if (check.status === 'fail')
|
|
76
|
+
yield* step.fail(check.detail);
|
|
77
|
+
else
|
|
78
|
+
yield* step.warn('skipped');
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
const checkLinkStateEffect = Effect.promise(() => checkLinkState());
|
|
82
|
+
const checkMachineIdEffect = Effect.promise(() => checkMachineId());
|
|
83
|
+
const checkAccountStoreEffect = Effect.promise(() => checkAccountStore());
|
|
84
|
+
const checkRecentActivityEffect = Effect.promise(() => checkRecentActivity());
|
|
85
|
+
function checkHubSpotCliEffect(cwd) {
|
|
86
|
+
return Effect.promise(() => checkHubSpotCli(cwd));
|
|
87
|
+
}
|
|
88
|
+
function checkHubSpotPakEffect(cwd) {
|
|
89
|
+
return Effect.gen(function* () {
|
|
90
|
+
const http = yield* CliHttp;
|
|
91
|
+
const fromEnv = yield* Config.string('HSX_HUBSPOT_PAK')
|
|
92
|
+
.pipe(Config.withDefault(''))
|
|
93
|
+
.pipe(Effect.orDie);
|
|
94
|
+
const pak = fromEnv.length > 0 ? fromEnv : (yield* Effect.promise(() => discoverHubSpotPak(cwd)))?.pak;
|
|
95
|
+
if (!pak) {
|
|
96
|
+
return {
|
|
97
|
+
name: 'HubSpot PAK',
|
|
98
|
+
status: 'warn',
|
|
99
|
+
detail: 'no PAK in env or HubSpot CLI config',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
const request = HttpClientRequest.get('https://api.hubapi.com/integrators/v1/timeline/event-types').pipe(HttpClientRequest.setHeaders({
|
|
103
|
+
authorization: `Bearer ${pak}`,
|
|
104
|
+
accept: 'application/json',
|
|
105
|
+
}));
|
|
106
|
+
const result = yield* http
|
|
107
|
+
.execute(request, { abortSignal: AbortSignal.timeout(4000) })
|
|
108
|
+
.pipe(Effect.either);
|
|
109
|
+
if (result._tag === 'Left') {
|
|
110
|
+
return { name: 'HubSpot PAK', status: 'warn', detail: result.left.message };
|
|
111
|
+
}
|
|
112
|
+
const response = result.right;
|
|
113
|
+
if (response.status === 401 || response.status === 403) {
|
|
114
|
+
return {
|
|
115
|
+
name: 'HubSpot PAK',
|
|
116
|
+
status: 'fail',
|
|
117
|
+
detail: `auth check returned ${response.status}`,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (response.status >= 500) {
|
|
121
|
+
return { name: 'HubSpot PAK', status: 'warn', detail: `HubSpot ${response.status}` };
|
|
122
|
+
}
|
|
123
|
+
return { name: 'HubSpot PAK', status: 'ok', detail: 'authenticated' };
|
|
124
|
+
});
|
|
69
125
|
}
|
|
126
|
+
const checkControlPlaneEffect = Effect.gen(function* () {
|
|
127
|
+
const http = yield* CliHttp;
|
|
128
|
+
const url = yield* Config.string('HSX_CONTROL_PLANE_URL')
|
|
129
|
+
.pipe(Config.withDefault(''))
|
|
130
|
+
.pipe(Effect.orDie);
|
|
131
|
+
if (url.length === 0) {
|
|
132
|
+
return {
|
|
133
|
+
name: 'HS-X control plane',
|
|
134
|
+
status: 'warn',
|
|
135
|
+
detail: 'HSX_CONTROL_PLANE_URL not set',
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const request = HttpClientRequest.get(new URL('/_hsx/health', url));
|
|
139
|
+
const result = yield* http
|
|
140
|
+
.execute(request, { abortSignal: AbortSignal.timeout(3000) })
|
|
141
|
+
.pipe(Effect.either);
|
|
142
|
+
if (result._tag === 'Left') {
|
|
143
|
+
return { name: 'HS-X control plane', status: 'fail', detail: result.left.message };
|
|
144
|
+
}
|
|
145
|
+
const response = result.right;
|
|
146
|
+
if (response.ok) {
|
|
147
|
+
return { name: 'HS-X control plane', status: 'ok', detail: url };
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
name: 'HS-X control plane',
|
|
151
|
+
status: 'fail',
|
|
152
|
+
detail: `${url} returned ${response.status}`,
|
|
153
|
+
};
|
|
154
|
+
});
|
|
70
155
|
async function checkLinkState() {
|
|
71
156
|
try {
|
|
72
157
|
const store = await loadStore();
|
|
@@ -105,17 +190,6 @@ async function checkMachineId() {
|
|
|
105
190
|
};
|
|
106
191
|
}
|
|
107
192
|
}
|
|
108
|
-
function renderStep(reporter, check) {
|
|
109
|
-
const step = reporter.step(check.name);
|
|
110
|
-
if (check.status === 'ok')
|
|
111
|
-
step.ok(check.detail);
|
|
112
|
-
else if (check.status === 'warn')
|
|
113
|
-
step.warn(check.detail);
|
|
114
|
-
else if (check.status === 'fail')
|
|
115
|
-
step.fail(check.detail);
|
|
116
|
-
else
|
|
117
|
-
step.warn('skipped');
|
|
118
|
-
}
|
|
119
193
|
async function checkAccountStore() {
|
|
120
194
|
try {
|
|
121
195
|
const store = await loadStore();
|
|
@@ -157,45 +231,6 @@ async function checkHubSpotCli(cwd) {
|
|
|
157
231
|
detail: `${discovered.accounts.length} account${discovered.accounts.length === 1 ? '' : 's'} in ${discovered.source}`,
|
|
158
232
|
};
|
|
159
233
|
}
|
|
160
|
-
async function checkHubSpotPak(cwd, fetchImpl) {
|
|
161
|
-
const fromEnv = process.env.HSX_HUBSPOT_PAK;
|
|
162
|
-
const pak = fromEnv && fromEnv.length > 0 ? fromEnv : (await discoverHubSpotPak(cwd))?.pak;
|
|
163
|
-
if (!pak) {
|
|
164
|
-
return {
|
|
165
|
-
name: 'HubSpot PAK',
|
|
166
|
-
status: 'warn',
|
|
167
|
-
detail: 'no PAK in env or HubSpot CLI config',
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
try {
|
|
171
|
-
const controller = new AbortController();
|
|
172
|
-
const timer = setTimeout(() => controller.abort(), 4000);
|
|
173
|
-
const response = await fetchImpl('https://api.hubapi.com/integrators/v1/timeline/event-types', {
|
|
174
|
-
method: 'GET',
|
|
175
|
-
headers: { authorization: `Bearer ${pak}`, accept: 'application/json' },
|
|
176
|
-
signal: controller.signal,
|
|
177
|
-
});
|
|
178
|
-
clearTimeout(timer);
|
|
179
|
-
if (response.status === 401 || response.status === 403) {
|
|
180
|
-
return {
|
|
181
|
-
name: 'HubSpot PAK',
|
|
182
|
-
status: 'fail',
|
|
183
|
-
detail: `auth check returned ${response.status}`,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
if (response.status >= 500) {
|
|
187
|
-
return { name: 'HubSpot PAK', status: 'warn', detail: `HubSpot ${response.status}` };
|
|
188
|
-
}
|
|
189
|
-
return { name: 'HubSpot PAK', status: 'ok', detail: 'authenticated' };
|
|
190
|
-
}
|
|
191
|
-
catch (error) {
|
|
192
|
-
return {
|
|
193
|
-
name: 'HubSpot PAK',
|
|
194
|
-
status: 'warn',
|
|
195
|
-
detail: error instanceof Error ? error.message : 'request failed',
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
234
|
async function checkRecentActivity() {
|
|
200
235
|
const entries = await readHistory({ limit: 50 });
|
|
201
236
|
if (entries.length === 0) {
|
|
@@ -221,38 +256,4 @@ async function checkRecentActivity() {
|
|
|
221
256
|
}
|
|
222
257
|
return { name: 'Recent activity', status: 'ok', detail: parts.join(', ') };
|
|
223
258
|
}
|
|
224
|
-
async function checkControlPlane(fetchImpl) {
|
|
225
|
-
const url = process.env.HSX_CONTROL_PLANE_URL;
|
|
226
|
-
if (!url || url.length === 0) {
|
|
227
|
-
return {
|
|
228
|
-
name: 'HS-X control plane',
|
|
229
|
-
status: 'warn',
|
|
230
|
-
detail: 'HSX_CONTROL_PLANE_URL not set',
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
try {
|
|
234
|
-
const controller = new AbortController();
|
|
235
|
-
const timer = setTimeout(() => controller.abort(), 3000);
|
|
236
|
-
const response = await fetchImpl(new URL('/_hsx/health', url), {
|
|
237
|
-
method: 'GET',
|
|
238
|
-
signal: controller.signal,
|
|
239
|
-
});
|
|
240
|
-
clearTimeout(timer);
|
|
241
|
-
if (response.ok) {
|
|
242
|
-
return { name: 'HS-X control plane', status: 'ok', detail: url };
|
|
243
|
-
}
|
|
244
|
-
return {
|
|
245
|
-
name: 'HS-X control plane',
|
|
246
|
-
status: 'fail',
|
|
247
|
-
detail: `${url} returned ${response.status}`,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
catch (error) {
|
|
251
|
-
return {
|
|
252
|
-
name: 'HS-X control plane',
|
|
253
|
-
status: 'fail',
|
|
254
|
-
detail: error instanceof Error ? error.message : 'unreachable',
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
259
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/flags.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import * as Command from '@effect/cli/Command';
|
|
2
|
+
import { FileSystem } from '@effect/platform';
|
|
3
|
+
import { Option } from 'effect';
|
|
4
|
+
import { CliError } from '../cli-error.js';
|
|
1
5
|
import type { CliResult } from '../result.js';
|
|
6
|
+
import { Cwd } from '../services/cwd.js';
|
|
2
7
|
/**
|
|
3
8
|
* ADR-015 §5 `hs-x flags` — the leaveable, direct-to-tenant flag authoring CLI.
|
|
4
9
|
* It reads the per-install grant secret + InstallationKey scope a linked deploy
|
|
@@ -19,4 +24,34 @@ export declare function flagsCommand(input: {
|
|
|
19
24
|
readonly json: boolean;
|
|
20
25
|
readonly root?: string;
|
|
21
26
|
}): Promise<CliResult>;
|
|
27
|
+
export declare const flagsCmd: Command.Command<"flags", FileSystem.FileSystem | Cwd, CliError, {
|
|
28
|
+
readonly subcommand: Option.Option<{
|
|
29
|
+
readonly limit: Option.Option<number>;
|
|
30
|
+
readonly json: boolean;
|
|
31
|
+
readonly projectId: Option.Option<string>;
|
|
32
|
+
readonly appId: Option.Option<number>;
|
|
33
|
+
readonly environment: Option.Option<string>;
|
|
34
|
+
readonly env: Option.Option<string>;
|
|
35
|
+
readonly runtimeOrigin: Option.Option<string>;
|
|
36
|
+
readonly cloudflareApiToken: Option.Option<string>;
|
|
37
|
+
} | {
|
|
38
|
+
readonly file: Option.Option<string>;
|
|
39
|
+
readonly json: boolean;
|
|
40
|
+
readonly projectId: Option.Option<string>;
|
|
41
|
+
readonly appId: Option.Option<number>;
|
|
42
|
+
readonly environment: Option.Option<string>;
|
|
43
|
+
readonly env: Option.Option<string>;
|
|
44
|
+
readonly runtimeOrigin: Option.Option<string>;
|
|
45
|
+
readonly cloudflareApiToken: Option.Option<string>;
|
|
46
|
+
} | {
|
|
47
|
+
readonly key: Option.Option<string>;
|
|
48
|
+
readonly json: boolean;
|
|
49
|
+
readonly projectId: Option.Option<string>;
|
|
50
|
+
readonly appId: Option.Option<number>;
|
|
51
|
+
readonly environment: Option.Option<string>;
|
|
52
|
+
readonly env: Option.Option<string>;
|
|
53
|
+
readonly runtimeOrigin: Option.Option<string>;
|
|
54
|
+
readonly cloudflareApiToken: Option.Option<string>;
|
|
55
|
+
}>;
|
|
56
|
+
}>;
|
|
22
57
|
//# sourceMappingURL=flags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/commands/flags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/commands/flags.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAAkB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAY,MAAM,iBAAiB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAuBzC;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,SAAS,CAAC,CA4ErB;AA2WD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASpB,CAAC"}
|
package/dist/commands/flags.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import * as Command from '@effect/cli/Command';
|
|
3
|
+
import * as Options from '@effect/cli/Options';
|
|
4
|
+
import { FileSystem } from '@effect/platform';
|
|
2
5
|
import { Schema, schemas } from '@hs-x/types';
|
|
3
6
|
import { RuntimeFlagAuthoringError, createFlagAuthoringClient, } from '@hs-x/runtime';
|
|
7
|
+
import { Config, Effect, Option } from 'effect';
|
|
8
|
+
import { CliError, exitWith } from '../cli-error.js';
|
|
9
|
+
import { jsonOption, runHandler } from '../cli/kit.js';
|
|
4
10
|
import { loadTenantStateStore } from '../tenant-state.js';
|
|
11
|
+
import { Cwd } from '../services/cwd.js';
|
|
12
|
+
import { Reporter } from '../services/reporter.js';
|
|
5
13
|
const SUBCOMMANDS = new Set(['list', 'create', 'define', 'enable', 'disable', 'archive']);
|
|
6
14
|
function resolveFlag(argv, flag) {
|
|
7
15
|
for (let index = 0; index < argv.length; index += 1) {
|
|
@@ -182,4 +190,225 @@ async function runSetState(input) {
|
|
|
182
190
|
}
|
|
183
191
|
return { exitCode: 0 };
|
|
184
192
|
}
|
|
193
|
+
// ─── Native @effect/cli command (Phase 4) ───────────────────────────────────
|
|
194
|
+
// `flags` rebuilt as a parent command with one subcommand per flag action. The
|
|
195
|
+
// `--file` JSON read is lifted onto `@effect/platform` `FileSystem` (no
|
|
196
|
+
// `node:fs`); `Cwd` supplies the project root; identity falls back to
|
|
197
|
+
// `HSX_PROJECT_ID` / `HSX_APP_ID` / `HSX_RUNTIME_BASE_URL` via `Config`. The pure
|
|
198
|
+
// `runList`/`runCreate`/`runSetState` bodies and the `createFlagAuthoringClient`
|
|
199
|
+
// transport are reused verbatim from the legacy path.
|
|
200
|
+
//
|
|
201
|
+
// JSON-shape MISMATCH (flagged, NOT changed): every flags output is a bespoke
|
|
202
|
+
// shape — `{ ok, flags }`, `{ ok, flag, syncedSnapshots }`, `{ ok:false, error }`,
|
|
203
|
+
// all pretty-printed (2-space) — and NOT the `JsonReporter`
|
|
204
|
+
// `{schema_version, command, ok, data}` envelope. Errors in human mode print
|
|
205
|
+
// `Error: <msg>` to stderr. To preserve the exact bytes the subprocess tests
|
|
206
|
+
// assert, the bodies emit through the legacy `fail()` / `process.stdout` writers
|
|
207
|
+
// and the handler fails with a silent `exitWith(1)` so `runHandler` does not
|
|
208
|
+
// re-render. TODO(phase-5): reconcile these payloads with the standard envelope
|
|
209
|
+
// once the dispatch swap lets the fixtures move in lockstep.
|
|
210
|
+
const projectIdOption = Options.text('project-id').pipe(Options.optional);
|
|
211
|
+
const appIdOption = Options.integer('app-id').pipe(Options.optional);
|
|
212
|
+
const environmentOption = Options.text('environment').pipe(Options.optional);
|
|
213
|
+
const envOption = Options.text('env').pipe(Options.optional);
|
|
214
|
+
const runtimeOriginOption = Options.text('runtime-origin').pipe(Options.optional);
|
|
215
|
+
const cloudflareApiTokenOption = Options.text('cloudflare-api-token').pipe(Options.optional);
|
|
216
|
+
const limitOption = Options.integer('limit').pipe(Options.optional);
|
|
217
|
+
const fileOption = Options.text('file').pipe(Options.optional);
|
|
218
|
+
const keyOption = Options.text('key').pipe(Options.optional);
|
|
219
|
+
const identityOptions = {
|
|
220
|
+
json: jsonOption,
|
|
221
|
+
projectId: projectIdOption,
|
|
222
|
+
appId: appIdOption,
|
|
223
|
+
environment: environmentOption,
|
|
224
|
+
env: envOption,
|
|
225
|
+
runtimeOrigin: runtimeOriginOption,
|
|
226
|
+
cloudflareApiToken: cloudflareApiTokenOption,
|
|
227
|
+
};
|
|
228
|
+
/** Effect twin of `fail()` for the native path: emit the bespoke output, then fail silently. */
|
|
229
|
+
function failEff(json, message) {
|
|
230
|
+
return Effect.sync(() => fail(json, message)).pipe(Effect.zipRight(Effect.fail(exitWith(1))));
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Resolve the {@link FlagAuthoringClient} from options + env (mirrors the legacy
|
|
234
|
+
* preamble). Reuses `loadTenantStateStore`/`createFlagAuthoringClient`; identity
|
|
235
|
+
* env fallbacks are read through `Config`. Cloudflare creds resolve from
|
|
236
|
+
* `--cloudflare-api-token` (reconstructed into a minimal argv) or env.
|
|
237
|
+
*/
|
|
238
|
+
function resolveClient(opts) {
|
|
239
|
+
return Effect.gen(function* () {
|
|
240
|
+
const json = opts.json;
|
|
241
|
+
const root = yield* Cwd;
|
|
242
|
+
const envProjectId = yield* Config.string('HSX_PROJECT_ID')
|
|
243
|
+
.pipe(Config.withDefault(''))
|
|
244
|
+
.pipe(Effect.orDie);
|
|
245
|
+
const envAppId = yield* Config.string('HSX_APP_ID').pipe(Config.withDefault('')).pipe(Effect.orDie);
|
|
246
|
+
const envRuntimeBaseUrl = yield* Config.string('HSX_RUNTIME_BASE_URL')
|
|
247
|
+
.pipe(Config.withDefault(''))
|
|
248
|
+
.pipe(Effect.orDie);
|
|
249
|
+
const projectId = Option.getOrElse(opts.projectId, () => (envProjectId.length > 0 ? envProjectId : undefined));
|
|
250
|
+
const environment = Option.getOrElse(opts.environment, () => Option.getOrElse(opts.env, () => 'production'));
|
|
251
|
+
const appIdRaw = Option.match(opts.appId, {
|
|
252
|
+
onNone: () => (envAppId.length > 0 ? Number(envAppId) : undefined),
|
|
253
|
+
onSome: (value) => value,
|
|
254
|
+
});
|
|
255
|
+
const runtimeBaseUrl = Option.getOrElse(opts.runtimeOrigin, () => envRuntimeBaseUrl.length > 0 ? envRuntimeBaseUrl : undefined);
|
|
256
|
+
if (!projectId)
|
|
257
|
+
return yield* failEff(json, 'Require --project-id (or HSX_PROJECT_ID).');
|
|
258
|
+
if (appIdRaw === undefined || !Number.isInteger(appIdRaw)) {
|
|
259
|
+
return yield* failEff(json, 'Require an integer --app-id (or HSX_APP_ID).');
|
|
260
|
+
}
|
|
261
|
+
const hubSpotAppId = appIdRaw;
|
|
262
|
+
if (!runtimeBaseUrl) {
|
|
263
|
+
return yield* failEff(json, 'Require --runtime-origin (or HSX_RUNTIME_BASE_URL) — the deployed Worker URL.');
|
|
264
|
+
}
|
|
265
|
+
// loadTenantStateStore reads Cloudflare creds from argv-style flags or env;
|
|
266
|
+
// forward an explicit --cloudflare-api-token when provided, else rely on env.
|
|
267
|
+
const argv = Option.match(opts.cloudflareApiToken, {
|
|
268
|
+
onNone: () => [],
|
|
269
|
+
onSome: (token) => ['--cloudflare-api-token', token],
|
|
270
|
+
});
|
|
271
|
+
const context = yield* Effect.tryPromise({
|
|
272
|
+
try: () => loadTenantStateStore({ argv, root }),
|
|
273
|
+
catch: (cause) => cause,
|
|
274
|
+
}).pipe(Effect.catchAll((cause) => failEff(json, cause instanceof Error ? cause.message : String(cause))));
|
|
275
|
+
if (!context) {
|
|
276
|
+
return yield* failEff(json, 'No .hs-x/cloudflare.json found. Deploy this project first with `hs-x deploy`.');
|
|
277
|
+
}
|
|
278
|
+
const binding = yield* Effect.tryPromise({
|
|
279
|
+
try: () => context.stateStore.getBinding({
|
|
280
|
+
projectId,
|
|
281
|
+
environment,
|
|
282
|
+
hubSpotAppId: hubSpotAppId,
|
|
283
|
+
}),
|
|
284
|
+
catch: (cause) => cause,
|
|
285
|
+
}).pipe(Effect.catchAll((cause) => failEff(json, cause instanceof Error ? cause.message : String(cause))));
|
|
286
|
+
if (!binding?.syncGrantSecretValue || !binding.tenantScopeAccountId) {
|
|
287
|
+
return yield* failEff(json, `No flag-authoring credentials for ${projectId}/${environment} (app ${hubSpotAppId}). Re-deploy as a linked project to provision the tenant data plane.`);
|
|
288
|
+
}
|
|
289
|
+
const scope = {
|
|
290
|
+
accountId: binding.tenantScopeAccountId,
|
|
291
|
+
projectId,
|
|
292
|
+
environment,
|
|
293
|
+
hubSpotAppId,
|
|
294
|
+
};
|
|
295
|
+
const client = createFlagAuthoringClient({
|
|
296
|
+
runtimeBaseUrl,
|
|
297
|
+
grantSecret: binding.syncGrantSecretValue,
|
|
298
|
+
scope,
|
|
299
|
+
});
|
|
300
|
+
return { client, scope };
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Map a thrown `RuntimeFlagAuthoringError`/`Error` to the legacy bespoke
|
|
305
|
+
* failure. A `CliError` (an already-rendered `failEff`) is re-raised untouched;
|
|
306
|
+
* anything else is rendered like the legacy `try/catch` around the dispatch.
|
|
307
|
+
*/
|
|
308
|
+
function withClientErrors(json, body) {
|
|
309
|
+
return body.pipe(Effect.catchAll((error) => error instanceof CliError
|
|
310
|
+
? Effect.fail(error)
|
|
311
|
+
: error instanceof RuntimeFlagAuthoringError
|
|
312
|
+
? failEff(json, `Tenant Worker rejected the request (${error.status}): ${error.message}`)
|
|
313
|
+
: failEff(json, error instanceof Error ? error.message : String(error))));
|
|
314
|
+
}
|
|
315
|
+
const flagsListCmd = Command.make('list', { ...identityOptions, limit: limitOption }, (opts) => runHandler('flags', { json: opts.json }, Effect.gen(function* () {
|
|
316
|
+
const { client } = yield* resolveClient(opts);
|
|
317
|
+
const limit = Option.getOrUndefined(opts.limit);
|
|
318
|
+
yield* withClientErrors(opts.json, Effect.tryPromise({
|
|
319
|
+
try: () => runList({
|
|
320
|
+
argv: limit !== undefined ? ['flags', 'list', '--limit', String(limit)] : ['flags', 'list'],
|
|
321
|
+
json: opts.json,
|
|
322
|
+
client,
|
|
323
|
+
}),
|
|
324
|
+
catch: (cause) => cause,
|
|
325
|
+
}).pipe(Effect.asVoid));
|
|
326
|
+
})));
|
|
327
|
+
function makeCreateCmd(name) {
|
|
328
|
+
return Command.make(name, { ...identityOptions, file: fileOption }, (opts) => runHandler('flags', { json: opts.json }, Effect.gen(function* () {
|
|
329
|
+
const { client, scope } = yield* resolveClient(opts);
|
|
330
|
+
const file = Option.getOrUndefined(opts.file);
|
|
331
|
+
if (!file) {
|
|
332
|
+
return yield* failEff(opts.json, 'Require --file <flag-definition.json> for `flags create`.');
|
|
333
|
+
}
|
|
334
|
+
// Read via FileSystem (no node:fs); a read failure mirrors the legacy
|
|
335
|
+
// "could not read/parse" bespoke failure.
|
|
336
|
+
const fs = yield* FileSystem.FileSystem;
|
|
337
|
+
const source = yield* fs.readFileString(file).pipe(Effect.mapError((cause) => ({ kind: 'read', cause })), Effect.either);
|
|
338
|
+
if (source._tag === 'Left') {
|
|
339
|
+
return yield* failEff(opts.json, `Could not read/parse ${file}: ${String(source.left.cause)}`);
|
|
340
|
+
}
|
|
341
|
+
yield* withClientErrors(opts.json, runCreateFromSource({ source: source.right, file, json: opts.json, client, scope }));
|
|
342
|
+
})));
|
|
343
|
+
}
|
|
344
|
+
const flagsCreateCmd = makeCreateCmd('create');
|
|
345
|
+
const flagsDefineCmd = makeCreateCmd('define');
|
|
346
|
+
function makeSetStateCmd(name, state) {
|
|
347
|
+
return Command.make(name, { ...identityOptions, key: keyOption }, (opts) => runHandler('flags', { json: opts.json }, Effect.gen(function* () {
|
|
348
|
+
const { client } = yield* resolveClient(opts);
|
|
349
|
+
const key = Option.getOrUndefined(opts.key);
|
|
350
|
+
yield* withClientErrors(opts.json, Effect.tryPromise({
|
|
351
|
+
try: () => runSetState({
|
|
352
|
+
argv: key !== undefined ? ['flags', name, '--key', key] : ['flags', name],
|
|
353
|
+
json: opts.json,
|
|
354
|
+
client,
|
|
355
|
+
state,
|
|
356
|
+
}),
|
|
357
|
+
catch: (cause) => cause,
|
|
358
|
+
}).pipe(Effect.asVoid));
|
|
359
|
+
})));
|
|
360
|
+
}
|
|
361
|
+
const flagsEnableCmd = makeSetStateCmd('enable', 'enabled');
|
|
362
|
+
const flagsDisableCmd = makeSetStateCmd('disable', 'disabled');
|
|
363
|
+
const flagsArchiveCmd = makeSetStateCmd('archive', 'archived');
|
|
364
|
+
export const flagsCmd = Command.make('flags').pipe(Command.withSubcommands([
|
|
365
|
+
flagsListCmd,
|
|
366
|
+
flagsCreateCmd,
|
|
367
|
+
flagsDefineCmd,
|
|
368
|
+
flagsEnableCmd,
|
|
369
|
+
flagsDisableCmd,
|
|
370
|
+
flagsArchiveCmd,
|
|
371
|
+
]));
|
|
372
|
+
/**
|
|
373
|
+
* Effect-native `flags create` body: parses the already-read source string and
|
|
374
|
+
* stamps identity from the resolved scope, mirroring `runCreate` byte-for-byte
|
|
375
|
+
* but with the file read hoisted to the caller (so it can go through FileSystem).
|
|
376
|
+
*/
|
|
377
|
+
function runCreateFromSource(input) {
|
|
378
|
+
return Effect.gen(function* () {
|
|
379
|
+
let parsed;
|
|
380
|
+
try {
|
|
381
|
+
parsed = JSON.parse(input.source);
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
return yield* failEff(input.json, `Could not read/parse ${input.file}: ${error instanceof Error ? error.message : String(error)}`);
|
|
385
|
+
}
|
|
386
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
387
|
+
return yield* failEff(input.json, `${input.file} must contain a JSON flag definition object.`);
|
|
388
|
+
}
|
|
389
|
+
const candidate = {
|
|
390
|
+
version: 1,
|
|
391
|
+
...parsed,
|
|
392
|
+
accountId: input.scope.accountId,
|
|
393
|
+
projectId: input.scope.projectId,
|
|
394
|
+
environment: input.scope.environment,
|
|
395
|
+
hubSpotAppId: input.scope.hubSpotAppId,
|
|
396
|
+
updatedAt: new Date().toISOString(),
|
|
397
|
+
};
|
|
398
|
+
const decoded = Schema.decodeUnknownEither(schemas.FlagDefinition)(candidate);
|
|
399
|
+
if (decoded._tag === 'Left') {
|
|
400
|
+
return yield* failEff(input.json, `Invalid flag definition: ${String(decoded.left)}`);
|
|
401
|
+
}
|
|
402
|
+
const result = yield* Effect.tryPromise({
|
|
403
|
+
try: () => input.client.defineFlag(decoded.right),
|
|
404
|
+
catch: (cause) => cause,
|
|
405
|
+
});
|
|
406
|
+
if (input.json) {
|
|
407
|
+
process.stdout.write(`${JSON.stringify({ ok: true, flag: result.flag, syncedSnapshots: result.syncedSnapshots }, null, 2)}\n`);
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
process.stdout.write(`Defined "${result.flag.key}" [${result.flag.type}, ${result.flag.state}, v${result.flag.version}] — synced ${result.syncedSnapshots} snapshot(s).\n`);
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
}
|
|
185
414
|
//# sourceMappingURL=flags.js.map
|