@theholocron/cli 3.53.0 → 3.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- package/dist/cli.mjs +128 -44
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.mts +20 -2
- package/dist/index.mjs +2 -26
- package/dist/plugin/capabilities.d.mts +43 -24
- package/dist/plugin/capabilities.mjs +2 -1
- package/package.json +5 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Analytics, Auth, AuthDescription, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, Ci, CiRun, CiRunFilter, CiRunStatus, ConnectionStringOptions, CreateAuthUserInput, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordType, EnsureResult, Environment, EnvironmentReviewer, Environments, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, NormalizedAuthUser, Notifications,
|
|
1
|
+
import { Analytics, Auth, AuthDescription, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, Ci, CiRun, CiRunFilter, CiRunStatus, ConnectionStringOptions, CreateAuthUserInput, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordType, EnsureResult, Environment, EnvironmentReviewer, Environments, Errors, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, Logs, NormalizedAuthUser, Notifications, PagesConfig, ParseWebhookInput, ProviderApiError, ProviderIdentity, PullRequest, REQUIRED_CAPABILITIES, RepoRef, RepoSettings, ResolvedCapability, Ruleset, SecretScope, Secrets, Source, StatusCategory, Storage, StorageBranch, TeamEntry, TeamPermission, Tooling, ToolingDoctorReport, TrackerDoctorReport, TrackerUser, Vault, WebhookDashboardInfo, WebhookVerificationError, Wiki, WikiDnsRecord, WikiProvisionOpts, WikiProxyConfig, Workers, isMulti } from "./plugin/capabilities.mjs";
|
|
2
2
|
import { AuthError, RequestOptions, ResolveTokenConfig as ResolveTokenConfig$1, ResolveTokenInput, RestClient, RestClientConfig, createRestClient } from "@theholocron/http-client";
|
|
3
|
+
import { LogLevel } from "@theholocron/logger";
|
|
3
4
|
//#region src/auth/auth-resolver.d.ts
|
|
4
5
|
type ResolveTokenConfig = Omit<ResolveTokenConfig$1, "getKeyringToken">;
|
|
5
6
|
/** Wraps `createResolveToken` from `@theholocron/http` and injects the
|
|
@@ -65,6 +66,14 @@ declare function deleteToken(provider: string): boolean;
|
|
|
65
66
|
declare function listStoredProviders(): string[];
|
|
66
67
|
//#endregion
|
|
67
68
|
//#region src/config/config.d.ts
|
|
69
|
+
/** Structured-logging config — level only; credentials never live in config. */
|
|
70
|
+
interface LogConfig {
|
|
71
|
+
/**
|
|
72
|
+
* Default log level. The lowest-priority level source: `--verbose` /
|
|
73
|
+
* `--quiet` and `HOLOCRON_LOG_LEVEL` both outrank it.
|
|
74
|
+
*/
|
|
75
|
+
level?: LogLevel;
|
|
76
|
+
}
|
|
68
77
|
type ProviderOptions = Record<string, unknown>;
|
|
69
78
|
/**
|
|
70
79
|
* The shape a capability config package's default export must satisfy.
|
|
@@ -374,6 +383,14 @@ interface HolocronConfig {
|
|
|
374
383
|
* { namespaces: ["HOLOCRON", "MY_CLI"] }
|
|
375
384
|
*/
|
|
376
385
|
env?: EnvConfig;
|
|
386
|
+
/**
|
|
387
|
+
* Structured-logging config. Only the level belongs here — Axiom
|
|
388
|
+
* credentials come from env vars, never a committed file.
|
|
389
|
+
*
|
|
390
|
+
* @example
|
|
391
|
+
* { level: "debug" }
|
|
392
|
+
*/
|
|
393
|
+
log?: LogConfig;
|
|
377
394
|
}
|
|
378
395
|
interface ResolvedTuple {
|
|
379
396
|
provider: string;
|
|
@@ -409,6 +426,7 @@ interface ResolvedHolocronConfig {
|
|
|
409
426
|
/** Resolved Pages config. `build` is guaranteed present when this field exists. */
|
|
410
427
|
docs?: PagesConfig;
|
|
411
428
|
env?: EnvConfig;
|
|
429
|
+
log?: LogConfig;
|
|
412
430
|
}
|
|
413
431
|
declare class ConfigError extends Error {
|
|
414
432
|
name: string;
|
|
@@ -498,4 +516,4 @@ interface LoadedConfig {
|
|
|
498
516
|
*/
|
|
499
517
|
declare function loadConfig(cwd: string): Promise<LoadedConfig>;
|
|
500
518
|
//#endregion
|
|
501
|
-
export { Analytics, AppConfig, Auth, AuthDescription, AuthError, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, Capability, CapabilityConfigPackage, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, ChromaticProjectConfig, Ci, CiRun, CiRunFilter, CiRunStatus, ComposedPreset, ConfigError, ConfigFileError, ConnectionStringOptions, CreateAuthUserInput, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordType, DocsConfig, DoctorConfig, EnsureResult, EnvConfig, Environment, EnvironmentReviewer, Environments, FeatureResolverConfig, HolocronConfig, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, LoadedConfig, MultiEntry, NormalizedAuthUser, Notifications,
|
|
519
|
+
export { Analytics, AppConfig, Auth, AuthDescription, AuthError, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, Capability, CapabilityConfigPackage, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, ChromaticProjectConfig, Ci, CiRun, CiRunFilter, CiRunStatus, ComposedPreset, ConfigError, ConfigFileError, ConnectionStringOptions, CreateAuthUserInput, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordType, DocsConfig, DoctorConfig, EnsureResult, EnvConfig, Environment, EnvironmentReviewer, Environments, Errors, FeatureResolverConfig, HolocronConfig, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, LoadedConfig, LogConfig, Logs, MultiEntry, NormalizedAuthUser, Notifications, PagesConfig, ParseWebhookInput, ProviderApiError, ProviderIdentity, ProviderOptions, PullRequest, REQUIRED_CAPABILITIES, RawProviderEntry, RawProvidersConfig, RepoConfig, RepoProperties, RepoProtection, RepoRef, RepoSettings, type RequestOptions, ResolveTokenConfig, type ResolveTokenInput, ResolvedCapability, ResolvedHolocronConfig, ResolvedProviderEntry, ResolvedProvidersConfig, ResolvedTuple, type RestClient, type RestClientConfig, Ruleset, SecretScope, Secrets, SingleEntry, Source, StatusCategory, Storage, StorageBranch, StorybookDeployProject, TeamEntry, TeamPermission, Tooling, ToolingDoctorReport, TrackerDoctorReport, TrackerUser, Vault, WebhookDashboardInfo, WebhookVerificationError, Wiki, WikiDnsRecord, WikiProvisionOpts, WikiProxyConfig, Workers, WorkflowWithConfig, compose, createFeatureResolver, createResolveToken, createRestClient, defineConfig, deleteToken, getToken, isMulti, listStoredProviders, loadConfig, resolveConfig, resolveEntry, resolvePluginPackage, setToken };
|
package/dist/index.mjs
CHANGED
|
@@ -113,31 +113,6 @@ function createFeatureResolver(config) {
|
|
|
113
113
|
}
|
|
114
114
|
//#endregion
|
|
115
115
|
//#region src/config/config.ts
|
|
116
|
-
/**
|
|
117
|
-
* `holocron.config.json` schema, parser, and provider resolution.
|
|
118
|
-
*
|
|
119
|
-
* ESLint-style entry forms:
|
|
120
|
-
*
|
|
121
|
-
* "source": "github" ← single, short
|
|
122
|
-
* "deployment": ["vercel", { team: "rando" }] ← single, with options
|
|
123
|
-
* "notifications": ["slack", "discord"] ← multi, short
|
|
124
|
-
* "notifications": [
|
|
125
|
-
* ["slack", { channel: "#ops" }],
|
|
126
|
-
* ["discord", { webhook: "env:HOOK" }]
|
|
127
|
-
* ] ← multi, with options
|
|
128
|
-
*
|
|
129
|
-
* Discriminator: an array entry is a `[provider, options]` tuple when
|
|
130
|
-
* the length is 2 AND element[1] is a non-array, non-null object.
|
|
131
|
-
* Otherwise it's a multi-provider list (string[] or tuple[]).
|
|
132
|
-
*
|
|
133
|
-
* Validation rules:
|
|
134
|
-
* - `vault` is REQUIRED (every project has secrets somewhere)
|
|
135
|
-
* - Entries for `'many'` capabilities are normalized to an array of
|
|
136
|
-
* normalized tuples; entries for `'single'` capabilities are
|
|
137
|
-
* normalized to one tuple
|
|
138
|
-
* - Tokens / secret values never appear in config — providers read
|
|
139
|
-
* them from env (or pull from `vault` at runtime)
|
|
140
|
-
*/
|
|
141
116
|
var ConfigError = class extends Error {
|
|
142
117
|
name = "ConfigError";
|
|
143
118
|
};
|
|
@@ -235,7 +210,8 @@ function resolveConfig(raw) {
|
|
|
235
210
|
agent: raw.agent,
|
|
236
211
|
skills: raw.skills,
|
|
237
212
|
docs,
|
|
238
|
-
env: raw.env
|
|
213
|
+
env: raw.env,
|
|
214
|
+
log: raw.log
|
|
239
215
|
};
|
|
240
216
|
}
|
|
241
217
|
//#endregion
|
|
@@ -9,10 +9,10 @@ import { ProviderApiError } from "@theholocron/http-client";
|
|
|
9
9
|
* `CardinalityFor<K>` so config resolution + command code can branch
|
|
10
10
|
* statically.
|
|
11
11
|
*
|
|
12
|
-
* See `.notes/tech-architecture.spec.md` for the design narrative
|
|
13
|
-
* (
|
|
12
|
+
* See `.notes/archive/tech-architecture.spec.md` for the design narrative
|
|
13
|
+
* (issue: #74).
|
|
14
14
|
*/
|
|
15
|
-
type CapabilityKey = "source" | "ci" | "secrets" | "environments" | "issues" | "deployment" | "storage" | "auth" | "vault" | "dns" | "tooling" | "notifications" | "analytics" | "
|
|
15
|
+
type CapabilityKey = "source" | "ci" | "secrets" | "environments" | "issues" | "deployment" | "storage" | "auth" | "vault" | "dns" | "tooling" | "notifications" | "analytics" | "errors" | "logs" | "wiki" | "workers";
|
|
16
16
|
type Cardinality = "single" | "many";
|
|
17
17
|
declare const CARDINALITY: {
|
|
18
18
|
readonly source: "single";
|
|
@@ -28,7 +28,8 @@ declare const CARDINALITY: {
|
|
|
28
28
|
readonly tooling: "many";
|
|
29
29
|
readonly notifications: "many";
|
|
30
30
|
readonly analytics: "many";
|
|
31
|
-
readonly
|
|
31
|
+
readonly errors: "single";
|
|
32
|
+
readonly logs: "single";
|
|
32
33
|
readonly wiki: "single";
|
|
33
34
|
readonly workers: "single";
|
|
34
35
|
};
|
|
@@ -577,6 +578,41 @@ interface Dns extends ProviderIdentity {
|
|
|
577
578
|
upsertRecord(domain: string, record: DnsRecord): Promise<DnsRecord>;
|
|
578
579
|
deleteRecord(domain: string, id: string): Promise<void>;
|
|
579
580
|
}
|
|
581
|
+
interface Errors extends ProviderIdentity {
|
|
582
|
+
readonly key: "errors";
|
|
583
|
+
/** Returns the env var names the app reads at runtime for this provider. */
|
|
584
|
+
describe(): Promise<{
|
|
585
|
+
provider: string;
|
|
586
|
+
envKeys: string[];
|
|
587
|
+
}>;
|
|
588
|
+
whoami?(): Promise<{
|
|
589
|
+
org: string;
|
|
590
|
+
}>;
|
|
591
|
+
ensureProject?(input: {
|
|
592
|
+
name: string;
|
|
593
|
+
platform?: string;
|
|
594
|
+
}): Promise<{
|
|
595
|
+
dsn: string;
|
|
596
|
+
alreadyExists: boolean;
|
|
597
|
+
}>;
|
|
598
|
+
}
|
|
599
|
+
interface Logs extends ProviderIdentity {
|
|
600
|
+
readonly key: "logs";
|
|
601
|
+
/** Returns the env var names the app reads at runtime for this provider. */
|
|
602
|
+
describe(): Promise<{
|
|
603
|
+
provider: string;
|
|
604
|
+
envKeys: string[];
|
|
605
|
+
}>;
|
|
606
|
+
/** Verify the token by fetching the target dataset's info. */
|
|
607
|
+
whoami?(): Promise<{
|
|
608
|
+
ok: boolean;
|
|
609
|
+
dataset: string;
|
|
610
|
+
}>;
|
|
611
|
+
/** Create the aggregation dataset if it does not already exist. Idempotent. */
|
|
612
|
+
ensureDataset?(name: string): Promise<{
|
|
613
|
+
alreadyExists: boolean;
|
|
614
|
+
}>;
|
|
615
|
+
}
|
|
580
616
|
interface ToolingDoctorReport {
|
|
581
617
|
ok: boolean;
|
|
582
618
|
message: string;
|
|
@@ -610,24 +646,6 @@ interface Analytics extends ProviderIdentity {
|
|
|
610
646
|
alreadyExists: boolean;
|
|
611
647
|
}>;
|
|
612
648
|
}
|
|
613
|
-
interface Observability extends ProviderIdentity {
|
|
614
|
-
readonly key: "observability";
|
|
615
|
-
/** Returns the env var names the app reads at runtime for this provider. */
|
|
616
|
-
describe(): Promise<{
|
|
617
|
-
provider: string;
|
|
618
|
-
envKeys: string[];
|
|
619
|
-
}>;
|
|
620
|
-
whoami?(): Promise<{
|
|
621
|
-
org: string;
|
|
622
|
-
}>;
|
|
623
|
-
ensureProject?(input: {
|
|
624
|
-
name: string;
|
|
625
|
-
platform?: string;
|
|
626
|
-
}): Promise<{
|
|
627
|
-
dsn: string;
|
|
628
|
-
alreadyExists: boolean;
|
|
629
|
-
}>;
|
|
630
|
-
}
|
|
631
649
|
interface WikiProvisionOpts {
|
|
632
650
|
/** Project display name used in the wiki title (e.g. "Holocron"). */
|
|
633
651
|
name?: string;
|
|
@@ -710,7 +728,8 @@ interface CapabilityImpls {
|
|
|
710
728
|
tooling: Tooling;
|
|
711
729
|
notifications: Notifications;
|
|
712
730
|
analytics: Analytics;
|
|
713
|
-
|
|
731
|
+
errors: Errors;
|
|
732
|
+
logs: Logs;
|
|
714
733
|
wiki: Wiki;
|
|
715
734
|
workers: Workers;
|
|
716
735
|
}
|
|
@@ -719,4 +738,4 @@ type CardinalityFor<K extends CapabilityKey> = (typeof CARDINALITY)[K];
|
|
|
719
738
|
type ResolvedCapability<K extends CapabilityKey> = CardinalityFor<K> extends "many" ? CapabilityImpls[K][] : CapabilityImpls[K];
|
|
720
739
|
declare function isMulti<K extends CapabilityKey>(key: K): CardinalityFor<K> extends "many" ? true : false;
|
|
721
740
|
//#endregion
|
|
722
|
-
export { Analytics, Auth, AuthDescription, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, Ci, CiRun, CiRunFilter, CiRunStatus, ConnectionStringOptions, CreateAuthUserInput, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordType, EnsureResult, Environment, EnvironmentReviewer, Environments, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, NormalizedAuthUser, Notifications,
|
|
741
|
+
export { Analytics, Auth, AuthDescription, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, Ci, CiRun, CiRunFilter, CiRunStatus, ConnectionStringOptions, CreateAuthUserInput, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordType, EnsureResult, Environment, EnvironmentReviewer, Environments, Errors, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, Logs, NormalizedAuthUser, Notifications, PagesConfig, ParseWebhookInput, ProviderApiError, ProviderIdentity, PullRequest, REQUIRED_CAPABILITIES, RepoRef, RepoSettings, ResolvedCapability, Ruleset, SecretScope, Secrets, Source, StatusCategory, Storage, StorageBranch, TeamEntry, TeamPermission, Tooling, ToolingDoctorReport, TrackerDoctorReport, TrackerUser, Vault, WebhookDashboardInfo, WebhookVerificationError, Wiki, WikiDnsRecord, WikiProvisionOpts, WikiProxyConfig, Workers, isMulti };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theholocron/cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.55.0",
|
|
4
4
|
"description": "The Holocron CLI — a pluggable, capability-based orchestrator for spinning up and operating software projects.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -47,11 +47,12 @@
|
|
|
47
47
|
"@theholocron/env-utils": "^1.6.0",
|
|
48
48
|
"@theholocron/github-client": "^1.14.2",
|
|
49
49
|
"@theholocron/http-client": "^1.14.2",
|
|
50
|
-
"@theholocron/registry-doc": "^1.
|
|
50
|
+
"@theholocron/registry-doc": "^1.10.0",
|
|
51
51
|
"chalk": "^6.0.0",
|
|
52
52
|
"ora": "^9.4.1",
|
|
53
53
|
"tsx": "4.23.12",
|
|
54
|
-
"yargs": "^18.1.0"
|
|
54
|
+
"yargs": "^18.1.0",
|
|
55
|
+
"@theholocron/logger": "3.55.0"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
|
57
58
|
"@theholocron/eslint-config": "^7.32.1",
|
|
@@ -67,7 +68,7 @@
|
|
|
67
68
|
"tsdown": "^0.22.14",
|
|
68
69
|
"typescript": "^5.9.3",
|
|
69
70
|
"vitest": "^4.1.11",
|
|
70
|
-
"@theholocron/rollup-plugin-transform-template": "3.
|
|
71
|
+
"@theholocron/rollup-plugin-transform-template": "3.55.0"
|
|
71
72
|
},
|
|
72
73
|
"engines": {
|
|
73
74
|
"node": ">=22.0.0"
|