@hs-x/cli 0.1.1 → 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.
- 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 +1 -1
- package/dist/constants.js +1 -1
- package/dist/init/templates.js +1 -1
- 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
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ConfigProvider, Context, Effect, Layer } from 'effect';
|
|
2
|
+
import { DEFAULT_CONTROL_PLANE_URL, cliConfig } from '../config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolved CLI configuration (control-plane URL, identity, selected
|
|
5
|
+
* account/project) as a service. Values are read from the ambient
|
|
6
|
+
* `ConfigProvider`, which the dispatch composes from process env + parsed
|
|
7
|
+
* global flags + ancestor dotenv (see `providerLayer`).
|
|
8
|
+
*/
|
|
9
|
+
export class CliConfig extends Context.Tag('cli/Config')() {
|
|
10
|
+
}
|
|
11
|
+
// Resilient: an invalid/empty CONTROL_PLANE_URL env (some tests set it to "")
|
|
12
|
+
// must NOT crash the whole layer graph — commands that need a configured URL
|
|
13
|
+
// validate it themselves and fail gracefully. Fall back to the default config.
|
|
14
|
+
const defaultConfig = {
|
|
15
|
+
controlPlaneUrl: new URL(DEFAULT_CONTROL_PLANE_URL),
|
|
16
|
+
userId: 'local-cli-user',
|
|
17
|
+
};
|
|
18
|
+
export const layer = Layer.effect(CliConfig, cliConfig.pipe(Effect.orElseSucceed(() => defaultConfig)));
|
|
19
|
+
/**
|
|
20
|
+
* Build a `ConfigProvider` layer that overlays (highest precedence last):
|
|
21
|
+
* process env (the default provider) ← ancestor dotenv ← explicit flag values.
|
|
22
|
+
* The dispatch passes flag values already parsed by `@effect/cli` (keyed by the
|
|
23
|
+
* `HSX_*` names the config reads), so there is no argv string re-parsing.
|
|
24
|
+
*/
|
|
25
|
+
export function providerLayer(input) {
|
|
26
|
+
const overlay = new Map();
|
|
27
|
+
// dotenv first, then flags so explicit flags win within the overlay.
|
|
28
|
+
if (input.dotenv)
|
|
29
|
+
for (const [key, value] of input.dotenv)
|
|
30
|
+
overlay.set(key, value);
|
|
31
|
+
if (input.flags) {
|
|
32
|
+
for (const [key, value] of Object.entries(input.flags)) {
|
|
33
|
+
if (value !== undefined && value.length > 0)
|
|
34
|
+
overlay.set(key, value);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Precedence: overlay (dotenv+flags) wins; process env is the fallback base.
|
|
38
|
+
const provider = ConfigProvider.fromMap(overlay, { pathDelim: '_', seqDelim: ',' }).pipe(ConfigProvider.orElse(() => ConfigProvider.fromEnv()));
|
|
39
|
+
return Layer.setConfigProvider(provider);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAoC,MAAM,cAAc,CAAC;AAEtG;;;;;GAKG;AACH,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAA6B;CAAG;AAExF,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,MAAM,aAAa,GAAmB;IACpC,eAAe,EAAE,IAAI,GAAG,CAAC,yBAAyB,CAAC;IACnD,MAAM,EAAE,gBAAgB;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAA2B,KAAK,CAAC,MAAM,CACvD,SAAS,EACT,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAC1D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAG7B;IACC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,qEAAqE;IACrE,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnF,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IACD,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CACtF,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CACtD,CAAC;IACF,OAAO,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Context, Layer } from 'effect';
|
|
2
|
+
declare const Cwd_base: Context.TagClass<Cwd, "cli/Cwd", string>;
|
|
3
|
+
/**
|
|
4
|
+
* The process working directory, captured once at the dispatch edge and
|
|
5
|
+
* injected — so command handlers resolve project roots without reading
|
|
6
|
+
* `process.cwd()` themselves. A `--cwd` option overrides it per command.
|
|
7
|
+
*/
|
|
8
|
+
export declare class Cwd extends Cwd_base {
|
|
9
|
+
}
|
|
10
|
+
export declare const layer: (dir: string) => Layer.Layer<Cwd>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=cwd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cwd.d.ts","sourceRoot":"","sources":["../../src/services/cwd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;;AAExC;;;;GAIG;AACH,qBAAa,GAAI,SAAQ,QAAqC;CAAG;AAEjE,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Context, Layer } from 'effect';
|
|
2
|
+
/**
|
|
3
|
+
* The process working directory, captured once at the dispatch edge and
|
|
4
|
+
* injected — so command handlers resolve project roots without reading
|
|
5
|
+
* `process.cwd()` themselves. A `--cwd` option overrides it per command.
|
|
6
|
+
*/
|
|
7
|
+
export class Cwd extends Context.Tag('cli/Cwd')() {
|
|
8
|
+
}
|
|
9
|
+
export const layer = (dir) => Layer.succeed(Cwd, dir);
|
|
10
|
+
//# sourceMappingURL=cwd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cwd.js","sourceRoot":"","sources":["../../src/services/cwd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAExC;;;;GAIG;AACH,MAAM,OAAO,GAAI,SAAQ,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAe;CAAG;AAEjE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type HubSpotDeveloperClient } from '@hs-x/hubspot-cli';
|
|
2
|
+
import { Schema, schemas } from '@hs-x/types';
|
|
3
|
+
import { Context, Effect, Layer } from 'effect';
|
|
4
|
+
import { type CliError } from '../cli-error.js';
|
|
5
|
+
import { ControlPlaneClient } from './control-plane.js';
|
|
6
|
+
import { CliHttp } from './http.js';
|
|
7
|
+
export type LeaseOperation = Schema.Schema.Type<typeof schemas.LeaseOperation>;
|
|
8
|
+
/**
|
|
9
|
+
* Options mirroring the legacy `createDeployHubSpotDeveloperClient(...)`
|
|
10
|
+
* factory. `argv` carries the raw deploy flags; credential discovery follows
|
|
11
|
+
* the same order the factory used (control-plane lease → CLI flags / env →
|
|
12
|
+
* HubSpot CLI config).
|
|
13
|
+
*/
|
|
14
|
+
export interface CreateDevClientInput {
|
|
15
|
+
readonly argv: readonly string[];
|
|
16
|
+
readonly local: boolean;
|
|
17
|
+
readonly allowedOperations: readonly LeaseOperation[];
|
|
18
|
+
readonly cwd?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* HubSpot developer-client credential discovery + construction as an Effect
|
|
22
|
+
* service. Resolves a usable `HubSpotDeveloperClient` for deploy operations by
|
|
23
|
+
* trying, in order: a short-TTL control-plane lease (when `--control-plane-url`
|
|
24
|
+
* / `--account-id` are present), then explicit `--pak` /
|
|
25
|
+
* `--developer-account-id` / `--developer-api-key` flags or their `HSX_*` env
|
|
26
|
+
* equivalents, then the HubSpot CLI config on the machine (the same source
|
|
27
|
+
* `hs-x doctor` reads). Fails with a typed `CliError` (`HSX_E_API_NO_HUBSPOT_AUTH`)
|
|
28
|
+
* when every source is exhausted, mirroring the legacy actionable errors.
|
|
29
|
+
*/
|
|
30
|
+
export interface HubSpotDevClientApi {
|
|
31
|
+
readonly create: (input: CreateDevClientInput) => Effect.Effect<HubSpotDeveloperClient, CliError>;
|
|
32
|
+
}
|
|
33
|
+
declare const HubSpotDevClient_base: Context.TagClass<HubSpotDevClient, "cli/HubSpotDevClient", HubSpotDevClientApi>;
|
|
34
|
+
export declare class HubSpotDevClient extends HubSpotDevClient_base {
|
|
35
|
+
}
|
|
36
|
+
export declare const layer: Layer.Layer<HubSpotDevClient, never, ControlPlaneClient | CliHttp>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=hubspot-dev-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hubspot-dev-client.d.ts","sourceRoot":"","sources":["../../src/services/hubspot-dev-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,sBAAsB,EAG5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAqB,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAU,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,cAAc,EAAE,CAAC;IACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;CACnG;;AAED,qBAAa,gBAAiB,SAAQ,qBAGnC;CAAG;AAWN,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAqLpF,CAAC"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { createHubSpotDeveloperClient, } from '@hs-x/hubspot-cli';
|
|
2
|
+
import { HttpClientRequest, Schema, schemas } from '@hs-x/types';
|
|
3
|
+
import { Config, Context, Effect, Layer } from 'effect';
|
|
4
|
+
import { cliError } from '../cli-error.js';
|
|
5
|
+
import { discoverHubSpotAccounts } from '../hubspot-auth.js';
|
|
6
|
+
import { ControlPlaneClient } from './control-plane.js';
|
|
7
|
+
import { CliHttp } from './http.js';
|
|
8
|
+
export class HubSpotDevClient extends Context.Tag('cli/HubSpotDevClient')() {
|
|
9
|
+
}
|
|
10
|
+
export const layer = Layer.effect(HubSpotDevClient, Effect.gen(function* () {
|
|
11
|
+
const controlPlane = yield* ControlPlaneClient;
|
|
12
|
+
const http = yield* CliHttp;
|
|
13
|
+
const readEnv = Config.all({
|
|
14
|
+
developerAccountId: Config.string('HSX_HUBSPOT_DEVELOPER_ACCOUNT_ID').pipe(Config.withDefault('')),
|
|
15
|
+
pak: Config.string('HSX_HUBSPOT_PAK').pipe(Config.withDefault('')),
|
|
16
|
+
developerApiKey: Config.string('HSX_HUBSPOT_DEVELOPER_API_KEY').pipe(Config.withDefault('')),
|
|
17
|
+
controlPlaneUrl: Config.string('HSX_CONTROL_PLANE_URL').pipe(Config.withDefault('')),
|
|
18
|
+
accountId: Config.string('HSX_ACCOUNT_ID').pipe(Config.withDefault('')),
|
|
19
|
+
userId: Config.string('HSX_USER_ID').pipe(Config.withDefault('')),
|
|
20
|
+
}).pipe(Effect.orDie);
|
|
21
|
+
/**
|
|
22
|
+
* Request a HubSpot developer lease from the control plane. Returns
|
|
23
|
+
* `undefined` when neither a control-plane URL nor an account id is
|
|
24
|
+
* configured (no lease intended); fails loud when only one is present.
|
|
25
|
+
*/
|
|
26
|
+
const requestLease = (argv, allowedOperations, env) => Effect.gen(function* () {
|
|
27
|
+
const controlPlaneUrl = orUndefined(resolveFlag(argv, '--control-plane-url'), env.controlPlaneUrl);
|
|
28
|
+
const accountId = orUndefined(resolveFlag(argv, '--account-id'), env.accountId);
|
|
29
|
+
if (!controlPlaneUrl && !accountId) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
if (!controlPlaneUrl || !accountId) {
|
|
33
|
+
return yield* Effect.fail(cliError('HSX_E_API_NO_HUBSPOT_AUTH', 'Control-plane lease requires both --control-plane-url/HSX_CONTROL_PLANE_URL and --account-id/HSX_ACCOUNT_ID.'));
|
|
34
|
+
}
|
|
35
|
+
const userId = orUndefined(resolveFlag(argv, '--user-id'), env.userId) ?? 'local-cli-user';
|
|
36
|
+
// Use CliHttp directly (not controlPlane.fetch, which hard-requires a
|
|
37
|
+
// logged-in session): the lease auths via the bearer-or-`x-hsx-user-id`
|
|
38
|
+
// fallback from authHeaders, so it works unlinked — matching legacy.
|
|
39
|
+
const authHeaders = yield* controlPlane.authHeaders(userId);
|
|
40
|
+
const leaseUrl = new URL(`/v1/accounts/${encodeURIComponent(accountId)}/hubspot/lease`, controlPlaneUrl);
|
|
41
|
+
const request = HttpClientRequest.post(leaseUrl).pipe(HttpClientRequest.setHeaders({
|
|
42
|
+
accept: 'application/json',
|
|
43
|
+
'content-type': 'application/json',
|
|
44
|
+
...authHeaders,
|
|
45
|
+
}), HttpClientRequest.bodyText(JSON.stringify({ deployId: resolveFlag(argv, '--deploy-id'), allowedOperations }), 'application/json'));
|
|
46
|
+
const response = yield* http.execute(request);
|
|
47
|
+
const body = yield* Effect.tryPromise({
|
|
48
|
+
try: () => response.json(),
|
|
49
|
+
catch: (cause) => cliError('HSX_E_INTERNAL', `Control-plane lease response was not JSON: ${String(cause)}`),
|
|
50
|
+
});
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
return yield* Effect.fail(cliError('HSX_E_API_NO_HUBSPOT_AUTH', isRecord(body) && typeof body.message === 'string'
|
|
53
|
+
? body.message
|
|
54
|
+
: `Control-plane HubSpot lease failed with status ${response.status}`));
|
|
55
|
+
}
|
|
56
|
+
return yield* Effect.try({
|
|
57
|
+
try: () => Schema.decodeUnknownSync(schemas.HubSpotDeveloperLease)(body),
|
|
58
|
+
catch: (cause) => cliError('HSX_E_INTERNAL', `Control-plane HubSpot lease payload was malformed: ${String(cause)}`),
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
const create = (input) => Effect.gen(function* () {
|
|
62
|
+
const { argv, local, allowedOperations } = input;
|
|
63
|
+
const cwd = input.cwd ?? process.cwd();
|
|
64
|
+
const env = yield* readEnv;
|
|
65
|
+
if (local) {
|
|
66
|
+
if (hasFlag(argv, '--control-plane-url') || hasFlag(argv, '--account-id')) {
|
|
67
|
+
yield* requestLease(argv, allowedOperations, env);
|
|
68
|
+
}
|
|
69
|
+
return yield* makeClient({
|
|
70
|
+
developerAccountId: Number(resolveFlag(argv, '--developer-account-id') ?? '12345'),
|
|
71
|
+
adapter: createLocalHubSpotDeployAdapter(),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const lease = yield* requestLease(argv, allowedOperations, env);
|
|
75
|
+
if (lease) {
|
|
76
|
+
if (!lease.personalAccessKey) {
|
|
77
|
+
return yield* Effect.fail(cliError('HSX_E_API_NO_HUBSPOT_AUTH', 'Control-plane HubSpot lease did not include PAK material.'));
|
|
78
|
+
}
|
|
79
|
+
return yield* makeClient({
|
|
80
|
+
developerAccountId: lease.developerAccountId,
|
|
81
|
+
personalAccessKey: lease.personalAccessKey,
|
|
82
|
+
...(lease.developerApiKey ? { developerApiKey: lease.developerApiKey } : {}),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
let developerAccountId = orUndefined(resolveFlag(argv, '--developer-account-id'), env.developerAccountId);
|
|
86
|
+
let personalAccessKey = orUndefined(resolveFlag(argv, '--pak'), env.pak);
|
|
87
|
+
const developerApiKey = orUndefined(resolveFlag(argv, '--developer-api-key'), env.developerApiKey);
|
|
88
|
+
// Fall back to the HubSpot CLI config (~/.hscli/config.yml,
|
|
89
|
+
// hubspot.config.yml) that `hs-x doctor` already reads, so a configured
|
|
90
|
+
// machine can deploy without re-passing --pak / --developer-account-id.
|
|
91
|
+
// Both are taken from one account (the default, or the sole configured
|
|
92
|
+
// account) to stay coherent; an explicit flag/env always wins.
|
|
93
|
+
if (!developerAccountId || !personalAccessKey) {
|
|
94
|
+
const discovered = yield* Effect.tryPromise({
|
|
95
|
+
try: () => discoverHubSpotAccounts(cwd),
|
|
96
|
+
catch: (cause) => cliError('HSX_E_INTERNAL', `Failed to read HubSpot CLI config: ${String(cause)}`),
|
|
97
|
+
});
|
|
98
|
+
const account = discovered?.accounts.find((candidate) => candidate.isDefault) ??
|
|
99
|
+
(discovered?.accounts.length === 1 ? discovered.accounts[0] : undefined);
|
|
100
|
+
if (account) {
|
|
101
|
+
developerAccountId ??= String(account.portalId);
|
|
102
|
+
personalAccessKey ??= account.personalAccessKey;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (!developerAccountId) {
|
|
106
|
+
return yield* Effect.fail(cliError('HSX_E_API_NO_HUBSPOT_AUTH', 'HubSpot developer account id is required. Pass --developer-account-id, set HSX_HUBSPOT_DEVELOPER_ACCOUNT_ID, or configure a HubSpot CLI account (see `hs-x doctor`).'));
|
|
107
|
+
}
|
|
108
|
+
if (!personalAccessKey) {
|
|
109
|
+
return yield* Effect.fail(cliError('HSX_E_API_NO_HUBSPOT_AUTH', 'HubSpot PAK is required. Pass --pak, set HSX_HUBSPOT_PAK, or configure a HubSpot CLI account (see `hs-x doctor`).'));
|
|
110
|
+
}
|
|
111
|
+
return yield* makeClient({
|
|
112
|
+
developerAccountId,
|
|
113
|
+
personalAccessKey,
|
|
114
|
+
...(developerApiKey ? { developerApiKey } : {}),
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
return { create };
|
|
118
|
+
}));
|
|
119
|
+
/**
|
|
120
|
+
* Wrap the imperative `@hs-x/hubspot-cli` client constructor at the Effect
|
|
121
|
+
* boundary. The constructor is synchronous, but isolating it keeps any future
|
|
122
|
+
* throw from escaping as a defect.
|
|
123
|
+
*/
|
|
124
|
+
function makeClient(options) {
|
|
125
|
+
return Effect.try({
|
|
126
|
+
try: () => createHubSpotDeveloperClient(options),
|
|
127
|
+
catch: (cause) => cliError('HSX_E_INTERNAL', `Failed to construct HubSpot developer client: ${String(cause)}`),
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function createLocalHubSpotDeployAdapter() {
|
|
131
|
+
return {
|
|
132
|
+
async uploadProject(_accountId, projectName) {
|
|
133
|
+
return { buildId: deterministicNumber(`build:${projectName}`, 10_000) };
|
|
134
|
+
},
|
|
135
|
+
async deployProjectV2(_accountId, projectName, buildId) {
|
|
136
|
+
return { deployId: deterministicNumber(`deploy:${projectName}:${buildId}`, 10_000) };
|
|
137
|
+
},
|
|
138
|
+
async getBuildStatus(_accountId, projectName, buildId) {
|
|
139
|
+
return { projectName, buildId, status: 'SUCCESS' };
|
|
140
|
+
},
|
|
141
|
+
async getDeployStatus(_accountId, projectName, deployId) {
|
|
142
|
+
return { projectName, deployId, status: 'SUCCESS' };
|
|
143
|
+
},
|
|
144
|
+
async fetchProject(_accountId, projectName) {
|
|
145
|
+
return { id: deterministicNumber(`project:${projectName}`, 10_000), name: projectName };
|
|
146
|
+
},
|
|
147
|
+
async createProject(_accountId, projectName) {
|
|
148
|
+
return { id: deterministicNumber(`project:${projectName}`, 10_000), name: projectName };
|
|
149
|
+
},
|
|
150
|
+
async fetchProjectComponentsMetadata(_accountId, projectId) {
|
|
151
|
+
return {
|
|
152
|
+
topLevelComponentMetadata: [
|
|
153
|
+
{
|
|
154
|
+
componentName: `project-${projectId}`,
|
|
155
|
+
type: { name: 'private-app' },
|
|
156
|
+
deployOutput: { appId: 321 },
|
|
157
|
+
featureComponents: [],
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
async fetchAppMetadataBySourceId(_accountId, projectId, appUid) {
|
|
163
|
+
return { id: 321, projectId, sourceId: appUid };
|
|
164
|
+
},
|
|
165
|
+
async fetchAppMetadataByUid(_accountId, appUid) {
|
|
166
|
+
return { id: 321, sourceId: appUid };
|
|
167
|
+
},
|
|
168
|
+
async listMigrationApps() {
|
|
169
|
+
return { results: [{ appId: 321, name: 'Local migrated App Card app' }] };
|
|
170
|
+
},
|
|
171
|
+
async migrateCardViews(_accountId, request) {
|
|
172
|
+
return {
|
|
173
|
+
accepted: true,
|
|
174
|
+
appId: request.appId,
|
|
175
|
+
legacyCrmCardId: request.legacyCrmCardId,
|
|
176
|
+
replacementAppCardId: request.replacementAppCardId,
|
|
177
|
+
...(request.helpDeskAppCardId ? { helpDeskAppCardId: request.helpDeskAppCardId } : {}),
|
|
178
|
+
};
|
|
179
|
+
},
|
|
180
|
+
async listProperties(_accountId, objectType) {
|
|
181
|
+
return {
|
|
182
|
+
objectType,
|
|
183
|
+
results: objectType === 'contacts' ? [{ name: 'email', type: 'string' }] : [],
|
|
184
|
+
};
|
|
185
|
+
},
|
|
186
|
+
async createProperty(_accountId, objectType, request) {
|
|
187
|
+
return { objectType, name: request.name, label: request.label, type: request.type };
|
|
188
|
+
},
|
|
189
|
+
async updateProperty(_accountId, objectType, propertyName, request) {
|
|
190
|
+
return {
|
|
191
|
+
objectType,
|
|
192
|
+
name: propertyName,
|
|
193
|
+
type: request.type ?? 'string',
|
|
194
|
+
...(request.label ? { label: request.label } : {}),
|
|
195
|
+
};
|
|
196
|
+
},
|
|
197
|
+
async listSchemas() {
|
|
198
|
+
return { results: [] };
|
|
199
|
+
},
|
|
200
|
+
async createSchema(_accountId, request) {
|
|
201
|
+
return {
|
|
202
|
+
name: request.name,
|
|
203
|
+
labels: request.labels,
|
|
204
|
+
...(request.properties
|
|
205
|
+
? {
|
|
206
|
+
properties: request.properties.map((property) => ({
|
|
207
|
+
name: property.name,
|
|
208
|
+
label: property.label,
|
|
209
|
+
type: property.type,
|
|
210
|
+
...(property.fieldType ? { fieldType: property.fieldType } : {}),
|
|
211
|
+
...(property.groupName ? { groupName: property.groupName } : {}),
|
|
212
|
+
})),
|
|
213
|
+
}
|
|
214
|
+
: {}),
|
|
215
|
+
};
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
function deterministicNumber(input, modulo) {
|
|
220
|
+
let hash = 2_166_136_261;
|
|
221
|
+
for (let index = 0; index < input.length; index += 1) {
|
|
222
|
+
hash ^= input.charCodeAt(index);
|
|
223
|
+
hash = Math.imul(hash, 16_777_619);
|
|
224
|
+
}
|
|
225
|
+
return Math.abs(hash >>> 0) % modulo;
|
|
226
|
+
}
|
|
227
|
+
/** Prefer an explicit flag, then a non-empty env default, else `undefined`. */
|
|
228
|
+
function orUndefined(flagValue, envValue) {
|
|
229
|
+
if (flagValue !== undefined)
|
|
230
|
+
return flagValue;
|
|
231
|
+
return envValue.length > 0 ? envValue : undefined;
|
|
232
|
+
}
|
|
233
|
+
function hasFlag(argv, flag) {
|
|
234
|
+
return argv.includes(flag);
|
|
235
|
+
}
|
|
236
|
+
function isFlagValue(value) {
|
|
237
|
+
return value !== undefined && value.length > 0 && !value.startsWith('-');
|
|
238
|
+
}
|
|
239
|
+
function resolveFlag(argv, flag) {
|
|
240
|
+
const index = argv.indexOf(flag);
|
|
241
|
+
if (index !== -1) {
|
|
242
|
+
const next = argv[index + 1];
|
|
243
|
+
if (isFlagValue(next))
|
|
244
|
+
return next;
|
|
245
|
+
}
|
|
246
|
+
const prefix = `${flag}=`;
|
|
247
|
+
const found = argv.find((arg) => arg.startsWith(prefix));
|
|
248
|
+
if (!found)
|
|
249
|
+
return undefined;
|
|
250
|
+
const value = found.slice(prefix.length);
|
|
251
|
+
return value.length > 0 ? value : undefined;
|
|
252
|
+
}
|
|
253
|
+
function isRecord(value) {
|
|
254
|
+
return typeof value === 'object' && value !== null;
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=hubspot-dev-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hubspot-dev-client.js","sourceRoot":"","sources":["../../src/services/hubspot-dev-client.ts"],"names":[],"mappings":"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"}
|
package/dist/services/live.d.ts
CHANGED
|
@@ -2,15 +2,21 @@ import { BunContext } from '@effect/platform-bun';
|
|
|
2
2
|
import { Layer } from 'effect';
|
|
3
3
|
import * as AccountStore from './account-store.js';
|
|
4
4
|
import * as AppPaths from './app-paths.js';
|
|
5
|
+
import * as CloudflareAuth from './cloudflare-auth.js';
|
|
6
|
+
import * as CloudflareKv from './cloudflare-kv.js';
|
|
5
7
|
import * as CommandHistory from './command-history.js';
|
|
8
|
+
import * as CliConfig from './config.js';
|
|
6
9
|
import * as ControlPlane from './control-plane.js';
|
|
7
10
|
import * as EnvLoader from './env-loader.js';
|
|
11
|
+
import * as HubSpotDevClient from './hubspot-dev-client.js';
|
|
8
12
|
import * as CliHttp from './http.js';
|
|
9
13
|
import * as MachineId from './machine-id.js';
|
|
14
|
+
import * as Telemetry from './telemetry.js';
|
|
15
|
+
import * as TenantState from './tenant-state.js';
|
|
10
16
|
/**
|
|
11
17
|
* Platform layer: FileSystem, Path, Terminal, CommandExecutor, HttpClient.
|
|
12
18
|
* The single place the CLI binds to the Bun runtime.
|
|
13
19
|
*/
|
|
14
20
|
export declare const PlatformLive: Layer.Layer<BunContext.BunContext, never, never>;
|
|
15
|
-
export declare const ServicesLive: Layer.Layer<
|
|
21
|
+
export declare const ServicesLive: Layer.Layer<Telemetry.Telemetry | AppPaths.AppPaths | CliHttp.CliHttp | MachineId.MachineId | CliConfig.CliConfig | BunContext.BunContext | AccountStore.AccountStore | CommandHistory.CommandHistory | EnvLoader.EnvLoader | CloudflareAuth.CloudflareAuth | ControlPlane.ControlPlaneClient | CloudflareKv.CloudflareKv | TenantState.TenantState | HubSpotDevClient.HubSpotDevClient, never, never>;
|
|
16
22
|
//# sourceMappingURL=live.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/services/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/services/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,YAAY,kDAAmB,CAAC;AAiC7C,eAAO,MAAM,YAAY,wYAA+C,CAAC"}
|
package/dist/services/live.js
CHANGED
|
@@ -2,25 +2,37 @@ import { BunContext } from '@effect/platform-bun';
|
|
|
2
2
|
import { Layer } from 'effect';
|
|
3
3
|
import * as AccountStore from './account-store.js';
|
|
4
4
|
import * as AppPaths from './app-paths.js';
|
|
5
|
+
import * as CloudflareAuth from './cloudflare-auth.js';
|
|
6
|
+
import * as CloudflareKv from './cloudflare-kv.js';
|
|
5
7
|
import * as CommandHistory from './command-history.js';
|
|
8
|
+
import * as CliConfig from './config.js';
|
|
6
9
|
import * as ControlPlane from './control-plane.js';
|
|
7
10
|
import * as EnvLoader from './env-loader.js';
|
|
11
|
+
import * as HubSpotDevClient from './hubspot-dev-client.js';
|
|
8
12
|
import * as CliHttp from './http.js';
|
|
9
13
|
import * as MachineId from './machine-id.js';
|
|
14
|
+
import * as Telemetry from './telemetry.js';
|
|
15
|
+
import * as TenantState from './tenant-state.js';
|
|
10
16
|
/**
|
|
11
17
|
* Platform layer: FileSystem, Path, Terminal, CommandExecutor, HttpClient.
|
|
12
18
|
* The single place the CLI binds to the Bun runtime.
|
|
13
19
|
*/
|
|
14
20
|
export const PlatformLive = BunContext.layer;
|
|
15
21
|
/**
|
|
16
|
-
* All CLI domain services, wired and provided the platform layer.
|
|
17
|
-
*
|
|
22
|
+
* All CLI domain services, wired and provided the platform layer. Consumers
|
|
23
|
+
* (`bin`, tests) provide just `ServicesLive`. `Reporter` is intentionally NOT
|
|
24
|
+
* here — it is command-scoped and provided per-invocation alongside this.
|
|
18
25
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
26
|
+
* Wiring is layered by dependency depth:
|
|
27
|
+
* - base: stores + env-loader, all over AppPaths
|
|
28
|
+
* - http: CliHttp (no deps), CliConfig (no deps), CloudflareAuth (no deps)
|
|
29
|
+
* - clients: ControlPlane (←AccountStore,CliHttp), CloudflareKv (←CliHttp)
|
|
30
|
+
* - upper: TenantState (←CloudflareKv), HubSpotDevClient (←ControlPlane),
|
|
31
|
+
* Telemetry (←AppPaths,CliHttp,MachineId,CliConfig)
|
|
21
32
|
*/
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
33
|
+
const Base = Layer.mergeAll(AccountStore.layer, CommandHistory.layer, MachineId.layer, EnvLoader.layer).pipe(Layer.provideMerge(AppPaths.layer));
|
|
34
|
+
const Roots = Layer.mergeAll(Base, CliHttp.layer, CliConfig.layer, CloudflareAuth.layer);
|
|
35
|
+
const Clients = Layer.mergeAll(ControlPlane.layer, CloudflareKv.layer).pipe(Layer.provideMerge(Roots));
|
|
36
|
+
const Upper = Layer.mergeAll(TenantState.layer, HubSpotDevClient.layer, Telemetry.layer).pipe(Layer.provideMerge(Clients));
|
|
37
|
+
export const ServicesLive = Upper.pipe(Layer.provideMerge(PlatformLive));
|
|
26
38
|
//# sourceMappingURL=live.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/services/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/services/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;AAE7C;;;;;;;;;;;GAWG;AACH,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CACzB,YAAY,CAAC,KAAK,EAClB,cAAc,CAAC,KAAK,EACpB,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,KAAK,CAChB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAE3C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAEzF,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CACzE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAC1B,CAAC;AAEF,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAC1B,WAAW,CAAC,KAAK,EACjB,gBAAgB,CAAC,KAAK,EACtB,SAAS,CAAC,KAAK,CAChB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC"}
|
|
@@ -46,6 +46,20 @@ export interface ReporterLayerInput {
|
|
|
46
46
|
* handlers receive only the Effect facade.
|
|
47
47
|
*/
|
|
48
48
|
export declare function layer(input: ReporterLayerInput): Layer.Layer<Reporter>;
|
|
49
|
+
export interface ReporterFlags {
|
|
50
|
+
readonly json?: boolean;
|
|
51
|
+
readonly jsonStream?: boolean;
|
|
52
|
+
readonly verbose?: boolean;
|
|
53
|
+
readonly debug?: boolean;
|
|
54
|
+
readonly quiet?: boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Live layer built from typed flags (the dispatch parses options via
|
|
58
|
+
* `@effect/cli`, not argv). Internally synthesizes the minimal argv that the
|
|
59
|
+
* rendering engine's mode detection reads — reporter config only, never
|
|
60
|
+
* re-dispatch.
|
|
61
|
+
*/
|
|
62
|
+
export declare function layerFromFlags(command: string, flags: ReporterFlags, entry?: boolean): Layer.Layer<Reporter>;
|
|
49
63
|
/**
|
|
50
64
|
* Test layer: routes all output into a provided in-memory implementation so
|
|
51
65
|
* specs can assert on emitted lines without spawning a subprocess.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/services/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEjG;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACzD;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5D,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClE,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvF,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtF,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC7E;;AAED,qBAAa,QAAS,SAAQ,aAAoD;CAAG;AAErF,uEAAuE;AACvE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,CAuBxD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,kBAAkB,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAUtE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAEnE"}
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/services/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,26 @@ export function layer(input) {
|
|
|
39
39
|
...(input.entry === undefined ? {} : { entry: input.entry }),
|
|
40
40
|
})));
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Live layer built from typed flags (the dispatch parses options via
|
|
44
|
+
* `@effect/cli`, not argv). Internally synthesizes the minimal argv that the
|
|
45
|
+
* rendering engine's mode detection reads — reporter config only, never
|
|
46
|
+
* re-dispatch.
|
|
47
|
+
*/
|
|
48
|
+
export function layerFromFlags(command, flags, entry = false) {
|
|
49
|
+
const argv = [];
|
|
50
|
+
if (flags.json)
|
|
51
|
+
argv.push('--json');
|
|
52
|
+
if (flags.jsonStream)
|
|
53
|
+
argv.push('--json-stream');
|
|
54
|
+
if (flags.verbose)
|
|
55
|
+
argv.push('--verbose');
|
|
56
|
+
if (flags.debug)
|
|
57
|
+
argv.push('--debug');
|
|
58
|
+
if (flags.quiet)
|
|
59
|
+
argv.push('--quiet');
|
|
60
|
+
return layer({ command, argv, entry });
|
|
61
|
+
}
|
|
42
62
|
/**
|
|
43
63
|
* Test layer: routes all output into a provided in-memory implementation so
|
|
44
64
|
* specs can assert on emitted lines without spawning a subprocess.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/services/reporter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/services/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { FileSystem, Path } from '@effect/platform';
|
|
2
|
+
import { Context, Effect, Layer } from 'effect';
|
|
3
|
+
import { AppPaths } from './app-paths.js';
|
|
4
|
+
import { CliConfig } from './config.js';
|
|
5
|
+
import { CliHttp } from './http.js';
|
|
6
|
+
import { MachineId } from './machine-id.js';
|
|
7
|
+
type CliOutputMode = 'human' | 'plain' | 'json' | 'ndjson';
|
|
8
|
+
export interface TelemetryEmitInput {
|
|
9
|
+
readonly command: string;
|
|
10
|
+
readonly subcommand?: string;
|
|
11
|
+
readonly exitCode: number;
|
|
12
|
+
readonly durationMs: number;
|
|
13
|
+
readonly mode: CliOutputMode;
|
|
14
|
+
/** `--no-telemetry` was passed. */
|
|
15
|
+
readonly optedOutByFlag: boolean;
|
|
16
|
+
/** Running from the source tree (`/packages/cli/src/bin/`) — suppressed unless forced. */
|
|
17
|
+
readonly isSourceTreeRun: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface TelemetryNoticeInput {
|
|
20
|
+
readonly command: string;
|
|
21
|
+
readonly json: boolean;
|
|
22
|
+
readonly optedOutByFlag: boolean;
|
|
23
|
+
readonly isSourceTreeRun: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Anonymous best-effort usage telemetry. Every method is total: failures are
|
|
27
|
+
* swallowed and never affect CLI behavior. Network goes through `CliHttp`,
|
|
28
|
+
* paths through `AppPaths`; platform facts (os/arch/runtime) are captured once
|
|
29
|
+
* at the edge. The first-run notice is returned as lines for the dispatch to
|
|
30
|
+
* render through its `Reporter` (keeping this service Reporter-free so it stays
|
|
31
|
+
* in the closed `ServicesLive` layer).
|
|
32
|
+
*/
|
|
33
|
+
export interface TelemetryApi {
|
|
34
|
+
readonly emit: (input: TelemetryEmitInput) => Effect.Effect<void>;
|
|
35
|
+
/** Notice lines to show on first run (and marks the stamp); `[]` if suppressed. */
|
|
36
|
+
readonly noticeLines: (input: TelemetryNoticeInput) => Effect.Effect<readonly string[]>;
|
|
37
|
+
}
|
|
38
|
+
declare const Telemetry_base: Context.TagClass<Telemetry, "cli/Telemetry", TelemetryApi>;
|
|
39
|
+
export declare class Telemetry extends Telemetry_base {
|
|
40
|
+
}
|
|
41
|
+
export declare const layer: Layer.Layer<Telemetry, never, FileSystem.FileSystem | Path.Path | AppPaths | CliHttp | MachineId | CliConfig>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/services/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAU,OAAO,EAAY,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,KAAK,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,mCAAmC;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,0FAA0F;IAC1F,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClE,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACzF;;AAED,qBAAa,SAAU,SAAQ,cAAuD;CAAG;AAIzF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,SAAS,EACT,KAAK,EACL,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CA6F/E,CAAC"}
|