@theholocron/cli 5.0.0-alpha.129 → 5.0.0-alpha.133

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/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { Analytics, Auth, AuthDescription, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, Ci, CiRun, CiRunFilter, CiRunStatus, ConnectionStringOptions, CreateAuthUserInput, DeployFunctionConfig, DeployFunctionResult, DeployScriptConfig, DeployScriptResult, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordRequest, 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, WikiProvisionOpts, WikiProxyConfig, Workers, isMulti } from "./plugin/capabilities.mjs";
1
+ import { Analytics, Auth, AuthDescription, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, Ci, CiRun, CiRunFilter, CiRunStatus, ConnectionStringOptions, CreateAuthUserInput, DeployFunctionConfig, DeployFunctionResult, DeployScriptConfig, DeployScriptResult, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordRequest, DnsRecordType, EnsureResult, Environment, EnvironmentReviewer, Environments, Errors, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, Logs, Monitoring, MonitoringAssertion, MonitoringAssertionComparison, MonitoringAssertionSource, MonitoringCheck, MonitoringCheckInput, MonitoringHttpMethod, 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, 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
3
  import { ConfigFileError } from "@theholocron/datapad";
4
4
  import { LogLevel } from "@theholocron/observability/core";
@@ -155,7 +155,7 @@ interface DocsConfig {
155
155
  * GitHub Pages build source.
156
156
  * "workflow" → GitHub Actions (PUT { build_type: "workflow" })
157
157
  * "branch" → classic gh-pages branch (PUT { build_type: "legacy", source: { branch: "gh-pages", path: "/" } })
158
- * When absent, Pages is not managed by `holocron setup`.
158
+ * When absent, Pages is not managed by `holocron repo setup`.
159
159
  */
160
160
  build?: "workflow" | "branch";
161
161
  /**
@@ -182,7 +182,7 @@ interface RepoConfig {
182
182
  * Sentinel's `validateConfig()` reads (D6: the App only ever reads config
183
183
  * from the repo's default branch, never a PR ref, as a security boundary
184
184
  * — never widen that to read PR branches instead of fixing this field).
185
- * Synced by `holocron setup`. Omit to leave GitHub's current setting
185
+ * Synced by `holocron repo setup`. Omit to leave GitHub's current setting
186
186
  * untouched — most repos never need this. Exists for a repo using a
187
187
  * `main`/`alpha` prerelease-channel split (CLAUDE.md's Releases section)
188
188
  * where active development happens on a non-`main` branch: set this to
@@ -192,7 +192,7 @@ interface RepoConfig {
192
192
  */
193
193
  defaultBranch?: string;
194
194
  /**
195
- * Branch protection preset applied by `holocron setup`. When omitted,
195
+ * Branch protection preset applied by `holocron repo setup`. When omitted,
196
196
  * no protection is applied and no `branch_protection_level` property is set.
197
197
  * Required-status-check contexts for `"strict"` are derived from the task
198
198
  * manifest — `{ required: true }` tasks + top-level `extraRequiredChecks`
@@ -200,7 +200,7 @@ interface RepoConfig {
200
200
  */
201
201
  protection?: RepoProtection;
202
202
  /**
203
- * GitHub teams granted repository access. Synced by `holocron setup`, which
203
+ * GitHub teams granted repository access. Synced by `holocron repo setup`, which
204
204
  * also writes `.github/CODEOWNERS` for teams with write-or-higher permission.
205
205
  * String shorthand defaults to `push` (Write).
206
206
  */
@@ -300,7 +300,7 @@ interface StorybookDeployProject {
300
300
  * `run-chromatic` accepts either a plain boolean (single-project) or a
301
301
  * `ChromaticProjectConfig[]` object (multi-project monorepo).
302
302
  *
303
- * `docs` / `storybook` are high-level deploy shorthand that `holocron setup`
303
+ * `docs` / `storybook` are high-level deploy shorthand that `holocron repo setup`
304
304
  * translates to `type` / `storybook-projects` before writing the thin caller.
305
305
  * They also drive automatic `paths:` derivation so you never need to write
306
306
  * `paths:` manually for deploy entries.
@@ -339,7 +339,7 @@ interface HolocronConfig {
339
339
  /** Project name. Derived from package.json when absent. */
340
340
  name?: string;
341
341
  description?: string;
342
- /** Project homepage URL. Synced to package.json#homepage and the GitHub repo's website field by `holocron sync`. */
342
+ /** Project homepage URL. Synced to package.json#homepage and the GitHub repo's website field by `holocron repo sync`. */
343
343
  homepage?: string;
344
344
  /**
345
345
  * Active org name for namespaced keyring lookup. When set, token resolution
@@ -378,7 +378,7 @@ interface HolocronConfig {
378
378
  * "knowledge.wiki" | "knowledge.docs" | "knowledge.components" |
379
379
  * "review" | "tag" | "stale" | "greetings" | "dependencies" | "bookkeeping"
380
380
  *
381
- * `holocron setup` writes `.github/workflows/<name>.yml` for each entry,
381
+ * `holocron repo setup` writes `.github/workflows/<name>.yml` for each entry,
382
382
  * calling the corresponding reusable workflow in `theholocron/.github`.
383
383
  * Files are overwritten on each run — they are generated artifacts.
384
384
  *
@@ -427,7 +427,7 @@ interface HolocronConfig {
427
427
  * }
428
428
  * ```
429
429
  * Each `tokenName` maps to a repository secret named
430
- * `CHROMATIC_PROJECT_TOKEN_<TOKENNAME>`. `holocron setup` expands this
430
+ * `CHROMATIC_PROJECT_TOKEN_<TOKENNAME>`. `holocron repo setup` expands this
431
431
  * to the flat `run-chromatic: true` + `chromatic-projects: <json>` inputs
432
432
  * that the reusable workflow accepts.
433
433
  *
@@ -437,7 +437,7 @@ interface HolocronConfig {
437
437
  */
438
438
  tasks?: Array<string | TaskEntryConfig>;
439
439
  /**
440
- * Opt out of `holocron sync`'s `package.json` script writes. Default `true`.
440
+ * Opt out of `holocron repo sync`'s `package.json` script writes. Default `true`.
441
441
  */
442
442
  syncScripts?: boolean;
443
443
  /**
@@ -448,15 +448,15 @@ interface HolocronConfig {
448
448
  holocronScript?: string;
449
449
  /**
450
450
  * Required status-check contexts not backed by a `required` task (codecov
451
- * gates, the bundle-build check, …). `holocron setup` appends these to the
451
+ * gates, the bundle-build check, …). `holocron repo setup` appends these to the
452
452
  * task-derived list from `astromech.requiredChecks()`.
453
453
  */
454
454
  extraRequiredChecks?: string[];
455
455
  /**
456
- * Git hooks `holocron setup` installs. `true` / `{ prePush: true }` writes
456
+ * Git hooks `holocron repo setup` installs. `true` / `{ prePush: true }` writes
457
457
  * `.husky/pre-push` (runs `holocron run ci` before every push); `false` /
458
458
  * `{ prePush: false }` opts out. Omitted → on for `protection: "strict"`,
459
- * off otherwise. `--hooks` / `--no-hooks` on `holocron setup` override.
459
+ * off otherwise. `--hooks` / `--no-hooks` on `holocron repo setup` override.
460
460
  */
461
461
  hooks?: boolean | {
462
462
  prePush?: boolean;
@@ -465,7 +465,7 @@ interface HolocronConfig {
465
465
  apps?: AppConfig[];
466
466
  doctor?: DoctorConfig;
467
467
  /**
468
- * Agent runtime that determines where skills are installed by `holocron setup`.
468
+ * Agent runtime that determines where skills are installed by `holocron repo setup`.
469
469
  * Skills are installed to `.agents/skills/<name>/` (canonical) with a
470
470
  * relative symlink at the agent-specific path:
471
471
  * - `"claude"` → `.claude/skills/<name>` → `../../.agents/skills/<name>`
@@ -473,7 +473,7 @@ interface HolocronConfig {
473
473
  */
474
474
  agent?: "claude" | "codex" | "gemini";
475
475
  /**
476
- * Skill names from `@theholocron/skills` to install during `holocron setup`.
476
+ * Skill names from `@theholocron/skills` to install during `holocron repo setup`.
477
477
  * Installed paths are gitignored and managed by setup — do not commit them.
478
478
  *
479
479
  * @example
@@ -481,7 +481,7 @@ interface HolocronConfig {
481
481
  */
482
482
  skills?: string[];
483
483
  /**
484
- * GitHub Pages configuration. When present, `holocron setup` calls the
484
+ * GitHub Pages configuration. When present, `holocron repo setup` calls the
485
485
  * Pages API using `HOLOCRON_DEPLOY_TOKEN` (requires `pages:write` + `repo` scope).
486
486
  * When absent, Pages is left as-is.
487
487
  *
@@ -770,7 +770,7 @@ declare function loadConfig(cwd: string): Promise<LoadedConfig>;
770
770
  //#region src/editorconfig/config.d.ts
771
771
  /**
772
772
  * The paths editorconfig-checker skips, read from the same
773
- * `editorconfig-checker.json` template `holocron setup` writes as a repo's
773
+ * `editorconfig-checker.json` template `holocron repo setup` writes as a repo's
774
774
  * `.editorconfig-checker.json` — so Sentinel's central editorconfig check
775
775
  * (holocron#927) excludes exactly what CI's editorconfig-checker does, from
776
776
  * one source.
@@ -815,10 +815,10 @@ declare const PRETTIER_IGNORE_PATTERNS: string[];
815
815
  /**
816
816
  * The org's canonical `alex` (inclusive-language) config, as raw parsed
817
817
  * data rather than the pre-rendered file strings `createRcConfig()`/
818
- * `createIgnoreConfig()` produce for `holocron setup` to write into a
818
+ * `createIgnoreConfig()` produce for `holocron repo setup` to write into a
819
819
  * repo's own `.alexrc.json`/`.alexignore`.
820
820
  *
821
- * `.alexrc.json` is explicitly "generated by `holocron setup` — do not
821
+ * `.alexrc.json` is explicitly "generated by `holocron repo setup` — do not
822
822
  * edit manually" (this repo's own `AGENTS.md`) — the real source of truth
823
823
  * is this JSON file, one canonical copy, not each repo's synced one. A
824
824
  * central Sentinel check (holocron#769/#793) reads it directly rather
@@ -833,11 +833,11 @@ declare const ALEX_CONFIG: {
833
833
  * Glob-ish path patterns `alex` skips. Kept as a literal here rather than
834
834
  * importing `../templates/configs/alexjs/alexignore` directly — that file
835
835
  * (like `commit-msg`/`pre-push`) is deliberately extensionless, matching
836
- * the real filename `holocron setup` writes, which ECMAScript's own
836
+ * the real filename `holocron repo setup` writes, which ECMAScript's own
837
837
  * module resolution (`moduleResolution: "nodenext"`) can't import across
838
838
  * a package boundary without an extension. Keep in sync with that file by
839
839
  * hand; it changes rarely.
840
840
  */
841
841
  declare const ALEX_IGNORE_PATTERNS: string[];
842
842
  //#endregion
843
- export { ALEX_CONFIG, ALEX_IGNORE_PATTERNS, Analytics, AppConfig, Auth, AuthDescription, AuthError, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, Capability, CapabilityConfigPackage, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, ChromaticProjectConfig, Ci, CiRun, CiRunFilter, CiRunStatus, CommitMessageViolation, ComposedPreset, ConfigError, ConfigFileError, ConnectionStringOptions, CreateAuthUserInput, DeployFunctionConfig, DeployFunctionResult, DeployScriptConfig, DeployScriptResult, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, DeriveProfileInput, Dns, DnsRecord, DnsRecordRequest, DnsRecordType, DocsConfig, DoctorConfig, EDITORCONFIG_CHECKER_EXCLUDE, EnsureResult, EnvConfig, Environment, EnvironmentReviewer, Environments, Errors, EslintConfig, FeatureResolverConfig, HolocronConfig, HolocronProfile, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, LintCommitMsgFileResult, LoadedConfig, LogConfig, Logs, MultiEntry, NormalizedAuthUser, Notifications, PRETTIER_IGNORE_PATTERNS, PackageJsonLike, 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, TaskEntryConfig, TeamEntry, TeamPermission, TelemetryConfig, Tooling, ToolingDoctorReport, TrackerDoctorReport, TrackerUser, Vault, type VerifyTokenFailure, type VerifyTokenResult, type VerifyTokenSuccess, WebhookDashboardInfo, WebhookVerificationError, Wiki, WikiProvisionOpts, WikiProxyConfig, Workers, WorkflowWithConfig, compose, createFeatureResolver, createResolveToken, createRestClient, defineConfig, deleteToken, deriveCapabilities, deriveCompliance, deriveProfile, deriveStack, getToken, isEditorConfigExcluded, isMulti, lintCommitMessage, lintCommitMsgFile, listStoredProviders, loadConfig, missingCapabilities, readWorkspacePackageJsons, resolveConfig, resolveEntry, resolvePluginPackage, setToken };
843
+ export { ALEX_CONFIG, ALEX_IGNORE_PATTERNS, Analytics, AppConfig, Auth, AuthDescription, AuthError, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, Capability, CapabilityConfigPackage, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, ChromaticProjectConfig, Ci, CiRun, CiRunFilter, CiRunStatus, CommitMessageViolation, ComposedPreset, ConfigError, ConfigFileError, ConnectionStringOptions, CreateAuthUserInput, DeployFunctionConfig, DeployFunctionResult, DeployScriptConfig, DeployScriptResult, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, DeriveProfileInput, Dns, DnsRecord, DnsRecordRequest, DnsRecordType, DocsConfig, DoctorConfig, EDITORCONFIG_CHECKER_EXCLUDE, EnsureResult, EnvConfig, Environment, EnvironmentReviewer, Environments, Errors, EslintConfig, FeatureResolverConfig, HolocronConfig, HolocronProfile, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, LintCommitMsgFileResult, LoadedConfig, LogConfig, Logs, Monitoring, MonitoringAssertion, MonitoringAssertionComparison, MonitoringAssertionSource, MonitoringCheck, MonitoringCheckInput, MonitoringHttpMethod, MultiEntry, NormalizedAuthUser, Notifications, PRETTIER_IGNORE_PATTERNS, PackageJsonLike, 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, TaskEntryConfig, TeamEntry, TeamPermission, TelemetryConfig, Tooling, ToolingDoctorReport, TrackerDoctorReport, TrackerUser, Vault, type VerifyTokenFailure, type VerifyTokenResult, type VerifyTokenSuccess, WebhookDashboardInfo, WebhookVerificationError, Wiki, WikiProvisionOpts, WikiProxyConfig, Workers, WorkflowWithConfig, compose, createFeatureResolver, createResolveToken, createRestClient, defineConfig, deleteToken, deriveCapabilities, deriveCompliance, deriveProfile, deriveStack, getToken, isEditorConfigExcluded, isMulti, lintCommitMessage, lintCommitMsgFile, listStoredProviders, loadConfig, missingCapabilities, readWorkspacePackageJsons, resolveConfig, resolveEntry, resolvePluginPackage, setToken };
package/dist/index.mjs CHANGED
@@ -186,7 +186,7 @@ function deriveCapabilities(providers) {
186
186
  return Object.keys(providers ?? {}).sort();
187
187
  }
188
188
  /**
189
- * `source` + `ci` are the minimal baseline every repo `holocron setup`
189
+ * `source` + `ci` are the minimal baseline every repo `holocron repo setup`
190
190
  * touches wires — every `holocron.config.ts` in this org already satisfies
191
191
  * this, so `non-compliant` here means drift (a provider manually removed
192
192
  * after setup), not an unmet aspirational policy. Deliberately not a richer
@@ -564,7 +564,7 @@ function parseGitRemoteUrl(url) {
564
564
  //#region src/editorconfig/config.ts
565
565
  /**
566
566
  * The paths editorconfig-checker skips, read from the same
567
- * `editorconfig-checker.json` template `holocron setup` writes as a repo's
567
+ * `editorconfig-checker.json` template `holocron repo setup` writes as a repo's
568
568
  * `.editorconfig-checker.json` — so Sentinel's central editorconfig check
569
569
  * (holocron#927) excludes exactly what CI's editorconfig-checker does, from
570
570
  * one source.
@@ -593,10 +593,10 @@ function isEditorConfigExcluded(path) {
593
593
  /**
594
594
  * The org's canonical `alex` (inclusive-language) config, as raw parsed
595
595
  * data rather than the pre-rendered file strings `createRcConfig()`/
596
- * `createIgnoreConfig()` produce for `holocron setup` to write into a
596
+ * `createIgnoreConfig()` produce for `holocron repo setup` to write into a
597
597
  * repo's own `.alexrc.json`/`.alexignore`.
598
598
  *
599
- * `.alexrc.json` is explicitly "generated by `holocron setup` — do not
599
+ * `.alexrc.json` is explicitly "generated by `holocron repo setup` — do not
600
600
  * edit manually" (this repo's own `AGENTS.md`) — the real source of truth
601
601
  * is this JSON file, one canonical copy, not each repo's synced one. A
602
602
  * central Sentinel check (holocron#769/#793) reads it directly rather
@@ -620,7 +620,7 @@ const ALEX_CONFIG = { allow: [
620
620
  * Glob-ish path patterns `alex` skips. Kept as a literal here rather than
621
621
  * importing `../templates/configs/alexjs/alexignore` directly — that file
622
622
  * (like `commit-msg`/`pre-push`) is deliberately extensionless, matching
623
- * the real filename `holocron setup` writes, which ECMAScript's own
623
+ * the real filename `holocron repo setup` writes, which ECMAScript's own
624
624
  * module resolution (`moduleResolution: "nodenext"`) can't import across
625
625
  * a package boundary without an extension. Keep in sync with that file by
626
626
  * hand; it changes rarely.
@@ -12,7 +12,7 @@ import { ProviderApiError } from "@theholocron/http-client";
12
12
  * See `docs/wiki/specifications/tech-architecture.spec.md` for the design narrative
13
13
  * (issue: #74).
14
14
  */
15
- type CapabilityKey = "source" | "ci" | "secrets" | "environments" | "issues" | "deployment" | "storage" | "auth" | "vault" | "dns" | "tooling" | "notifications" | "analytics" | "errors" | "logs" | "wiki" | "workers";
15
+ type CapabilityKey = "source" | "ci" | "secrets" | "environments" | "issues" | "deployment" | "storage" | "auth" | "vault" | "dns" | "tooling" | "notifications" | "analytics" | "errors" | "logs" | "monitoring" | "wiki" | "workers";
16
16
  type Cardinality = "single" | "many";
17
17
  declare const CARDINALITY: {
18
18
  readonly source: "single";
@@ -30,6 +30,7 @@ declare const CARDINALITY: {
30
30
  readonly analytics: "many";
31
31
  readonly errors: "single";
32
32
  readonly logs: "single";
33
+ readonly monitoring: "single";
33
34
  readonly wiki: "single";
34
35
  readonly workers: "single";
35
36
  };
@@ -389,7 +390,7 @@ interface Deployment extends ProviderIdentity {
389
390
  readonly key: "deployment";
390
391
  /**
391
392
  * Custom domain declared in the deployment provider's configuration.
392
- * `holocron setup` attaches it to the configured project and hands any
393
+ * `holocron repo setup` attaches it to the configured project and hands any
393
394
  * returned verification record to the `dns` capability.
394
395
  */
395
396
  readonly domain?: string;
@@ -678,6 +679,50 @@ interface Logs extends ProviderIdentity {
678
679
  alreadyExists: boolean;
679
680
  }>;
680
681
  }
682
+ type MonitoringAssertionSource = "status_code" | "response_time" | "body" | "header";
683
+ type MonitoringAssertionComparison = "equals" | "not_equals" | "contains" | "not_contains" | "greater_than" | "less_than";
684
+ interface MonitoringAssertion {
685
+ source: MonitoringAssertionSource;
686
+ comparison: MonitoringAssertionComparison;
687
+ /** Header name / JSON path — required when `source` needs one (e.g. `"header"`). */
688
+ property?: string;
689
+ target?: string;
690
+ }
691
+ type MonitoringHttpMethod = "GET" | "POST" | "PUT" | "HEAD" | "DELETE" | "PATCH";
692
+ interface MonitoringCheckInput {
693
+ /** Also the idempotency key — `ensureCheck` finds-or-creates by this name. */
694
+ name: string;
695
+ url: string;
696
+ method?: MonitoringHttpMethod;
697
+ /** Minutes between runs. Adapters round to their own supported values. */
698
+ frequency?: number;
699
+ assertions?: MonitoringAssertion[];
700
+ activated?: boolean;
701
+ }
702
+ interface MonitoringCheck {
703
+ id: string;
704
+ name: string;
705
+ }
706
+ interface Monitoring extends ProviderIdentity {
707
+ readonly key: "monitoring";
708
+ /**
709
+ * Checks this provider is configured to ensure exist — populated from
710
+ * the provider's own config (`holocron.config.ts`'s provider tuple),
711
+ * the same place `Deployment.domain` comes from. `holocron repo setup`
712
+ * loops this list and calls `ensureCheck` for each; empty when none
713
+ * are configured.
714
+ */
715
+ readonly checks: readonly MonitoringCheckInput[];
716
+ /** Auth sanity-check. Throws ProviderApiError on auth failure. */
717
+ whoami?(): Promise<{
718
+ ok: boolean;
719
+ }>;
720
+ /** Idempotent find-or-create-or-update by `input.name`. */
721
+ ensureCheck(input: MonitoringCheckInput): Promise<{
722
+ check: MonitoringCheck;
723
+ alreadyExists: boolean;
724
+ }>;
725
+ }
681
726
  interface ToolingDoctorReport {
682
727
  ok: boolean;
683
728
  message: string;
@@ -816,6 +861,7 @@ interface CapabilityImpls {
816
861
  analytics: Analytics;
817
862
  errors: Errors;
818
863
  logs: Logs;
864
+ monitoring: Monitoring;
819
865
  wiki: Wiki;
820
866
  workers: Workers;
821
867
  }
@@ -824,4 +870,4 @@ type CardinalityFor<K extends CapabilityKey> = (typeof CARDINALITY)[K];
824
870
  type ResolvedCapability<K extends CapabilityKey> = CardinalityFor<K> extends "many" ? CapabilityImpls[K][] : CapabilityImpls[K];
825
871
  declare function isMulti<K extends CapabilityKey>(key: K): CardinalityFor<K> extends "many" ? true : false;
826
872
  //#endregion
827
- export { Analytics, Auth, AuthDescription, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, Ci, CiRun, CiRunFilter, CiRunStatus, ConnectionStringOptions, CreateAuthUserInput, DeployFunctionConfig, DeployFunctionResult, DeployScriptConfig, DeployScriptResult, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordRequest, 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, WikiProvisionOpts, WikiProxyConfig, Workers, isMulti };
873
+ export { Analytics, Auth, AuthDescription, AuthEvent, AuthEventType, AuthIdentity, AuthUser, CARDINALITY, CapabilityImpls, CapabilityKey, Cardinality, CardinalityFor, Ci, CiRun, CiRunFilter, CiRunStatus, ConnectionStringOptions, CreateAuthUserInput, DeployFunctionConfig, DeployFunctionResult, DeployScriptConfig, DeployScriptResult, Deployment, DeploymentProject, DeploymentProjectSettings, DeploymentRecord, DeploymentTarget, DeploymentTrigger, Dns, DnsRecord, DnsRecordRequest, DnsRecordType, EnsureResult, Environment, EnvironmentReviewer, Environments, Errors, Issue, IssueSearchFilter, Issues, LabelDef, LifecycleResult, LifecycleSlot, Logs, Monitoring, MonitoringAssertion, MonitoringAssertionComparison, MonitoringAssertionSource, MonitoringCheck, MonitoringCheckInput, MonitoringHttpMethod, 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, WikiProvisionOpts, WikiProxyConfig, Workers, isMulti };
@@ -16,6 +16,7 @@ const CARDINALITY = {
16
16
  analytics: "many",
17
17
  errors: "single",
18
18
  logs: "single",
19
+ monitoring: "single",
19
20
  wiki: "single",
20
21
  workers: "single"
21
22
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theholocron/cli",
3
- "version": "5.0.0-alpha.129",
3
+ "version": "5.0.0-alpha.133",
4
4
  "description": "The Holocron CLI - a pluggable, capability-based orchestrator for spinning up and operating software projects.",
5
5
  "keywords": [
6
6
  "cli",
@@ -50,8 +50,8 @@
50
50
  "@sentry/node": "^10.70.0",
51
51
  "@theholocron/components-doc": "^1.6.0",
52
52
  "@theholocron/env-utils": "^1.9.2",
53
- "@theholocron/github-client": "^1.38.0",
54
- "@theholocron/http-client": "^1.39.0",
53
+ "@theholocron/github-client": "^1.40.0",
54
+ "@theholocron/http-client": "^1.40.0",
55
55
  "@theholocron/misc-utils": "^1.9.2",
56
56
  "@theholocron/observability": "^0.5.0",
57
57
  "@theholocron/registry-doc": "^1.12.0",
@@ -61,8 +61,8 @@
61
61
  "pino-pretty": "^13.1.3",
62
62
  "posthog-node": "^5.51.6",
63
63
  "yargs": "^18.1.0",
64
- "@theholocron/datapad": "5.0.0-alpha.129",
65
- "@theholocron/astromech": "5.0.0-alpha.129"
64
+ "@theholocron/astromech": "5.0.0-alpha.133",
65
+ "@theholocron/datapad": "5.0.0-alpha.133"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@commitlint/config-conventional": "^21.2.3",
@@ -81,7 +81,7 @@
81
81
  "tsx": "4.23.12",
82
82
  "typescript": "^5.9.3",
83
83
  "vitest": "^4.1.11",
84
- "@theholocron/rollup-plugin-transform-template": "5.0.0-alpha.129"
84
+ "@theholocron/rollup-plugin-transform-template": "5.0.0-alpha.133"
85
85
  },
86
86
  "engines": {
87
87
  "node": ">=22.0.0"