@odla-ai/cli 0.25.22 → 0.25.23

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.cts CHANGED
@@ -1,10 +1,10 @@
1
- import { App } from '@odla-ai/apps';
1
+ import { RegistryConfigRevision, ConfigOperationReceipt, App } from '@odla-ai/apps';
2
2
  import { SecurityReport, PlatformSecurityRun } from '@odla-ai/security';
3
3
  import { HostedSecurityJob, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityIntentResponse, HostedSecurityPlan, HostedSecurityReport, HostedSecurityJobStatus } from '@odla-ai/security/hosted';
4
4
  export { GitHubConnectionAttempt, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityCounts, HostedSecurityCoverage, HostedSecurityIntent, HostedSecurityIntentResponse, HostedSecurityJob, HostedSecurityJobStatus, HostedSecurityPlan, HostedSecurityPlanRoute, HostedSecurityReport, HostedSecurityReportFinding, HostedSecurityRoute } from '@odla-ai/security/hosted';
5
5
 
6
6
  /** One exact device-grant scope obtainable through the approval flow. */
7
- type ScopedPlatformScope = "platform:ai:policy:read" | "platform:ai:policy:write" | "platform:ai:credential:read" | "platform:ai:credential:write" | "platform:ai:usage:read" | "platform:ai:audit:read" | "platform:status:read" | "app:config:read" | "app:code:host:connect" | "platform:code:host:connect" | "platform:security:self" | "platform:runbook:write";
7
+ type ScopedPlatformScope = "platform:ai:policy:read" | "platform:ai:policy:write" | "platform:ai:credential:read" | "platform:ai:credential:write" | "platform:ai:usage:read" | "platform:ai:audit:read" | "platform:status:read" | "app:config:read" | "app:config:write" | "app:code:host:connect" | "platform:code:host:connect" | "platform:security:self" | "platform:runbook:write";
8
8
  /** Inputs for obtaining one short-lived, exact-scope device grant. */
9
9
  interface ScopedPlatformTokenOptions {
10
10
  platform: string;
@@ -254,7 +254,7 @@ declare function adminAi(options: AdminAiOptions): Promise<void>;
254
254
  /** Stable, machine-readable division of work between the CLI, coding agent,
255
255
  * human operator, and Studio. Printed by `odla-ai capabilities --json`. */
256
256
  declare const CAPABILITIES: {
257
- readonly cli: readonly ["start an email-bound device request without accepting a password or user session token", "register the app and enable configured services per environment", "issue, persist, and explicitly rotate configured service credentials", "add or remove app co-owners, each of whom self-provisions their own credentials for the shared db without any secret handoff", "write local Worker values and push deployed Worker secrets through Wrangler stdin", "store tenant-vault secrets (including the Clerk webhook secret and reserved Clerk secret key) write-only from stdin or an env var", "compose declared app-capability schema/rules, create guarded seeds when absent, and configure platform AI, auth, and deployment links", "apply Google Calendar booking config, then drive state-bound consent, status, discovery, and disconnect flows (bookings run live through the platform proxy)", "validate integration contracts offline and smoke-test a provisioned db environment plus anonymous capability routes", "save and explicitly select non-secret named operator contexts with isolated credential caches; resolve and explain platform, app, environment, and credential provenance without authenticating; then run PM, Discussions, o11y, runbook, and identity operations outside a project checkout", "read one versioned o11y status envelope spanning application RED, exact Worker versions and Cloudflare colos observed in traffic, current live-sync freshness/load, the protected commit-to-visible canary, collector ingest/scheduler trust, provider-owned runtime metrics, account-scoped Durable Object, D1, and R2 evidence under odla-db, and a bounded machine verdict", "read one canonical platform fleet snapshot over private service bindings, including release identities, probe latency, Cloudflare load/runtime freshness, explicit unknowns, and stable next actions through a read-only capability", "compare one project's checked-in Registry intent with live owner-visible state and freeze a secret-free plan digest through an exact app:config:read capability", "inspect durable agent wakeups as a versioned JSON envelope and explicitly requeue one dead-lettered job with a scoped environment credential", "run app-attributed hosted security discovery and independent validation without provider keys", "connect/revoke source-read-only GitHub sources and drive commit-pinned hosted security jobs without PATs or provider keys", "let admins manage system AI policy and credentials, inspect attributed usage, and read immutable admin changes through separate short-lived capability-only approvals"];
257
+ readonly cli: readonly ["start an email-bound device request without accepting a password or user session token", "register the app and enable configured services per environment", "issue, persist, and explicitly rotate configured service credentials", "add or remove app co-owners, each of whom self-provisions their own credentials for the shared db without any secret handoff", "write local Worker values and push deployed Worker secrets through Wrangler stdin", "store tenant-vault secrets (including the Clerk webhook secret and reserved Clerk secret key) write-only from stdin or an env var", "compose declared app-capability schema/rules, create guarded seeds when absent, and configure platform AI, auth, and deployment links", "apply Google Calendar booking config, then drive state-bound consent, status, discovery, and disconnect flows (bookings run live through the platform proxy)", "validate integration contracts offline and smoke-test a provisioned db environment plus anonymous capability routes", "save and explicitly select non-secret named operator contexts with isolated credential caches; resolve and explain platform, app, environment, and credential provenance without authenticating; then run PM, Discussions, o11y, runbook, and identity operations outside a project checkout", "read one versioned o11y status envelope spanning application RED, exact Worker versions and Cloudflare colos observed in traffic, current live-sync freshness/load, the protected commit-to-visible canary, collector ingest/scheduler trust, provider-owned runtime metrics, account-scoped Durable Object, D1, and R2 evidence under odla-db, and a bounded machine verdict", "read one canonical platform fleet snapshot over private service bindings, including release identities, probe latency, Cloudflare load/runtime freshness, explicit unknowns, and stable next actions through a read-only capability", "compare one project's checked-in Registry intent with live owner-visible state, freeze a secret-free Registry-revision-bound plan through app:config:read, and conditionally apply checkpoint-free actions through exact app:config:write operation routes", "inspect or bounded-wait one exact durable config-operation journal entry and verify every terminal receipt digest before returning it to remote automation", "inspect durable agent wakeups as a versioned JSON envelope and explicitly requeue one dead-lettered job with a scoped environment credential", "run app-attributed hosted security discovery and independent validation without provider keys", "connect/revoke source-read-only GitHub sources and drive commit-pinned hosted security jobs without PATs or provider keys", "let admins manage system AI policy and credentials, inspect attributed usage, and read immutable admin changes through separate short-lived capability-only approvals"];
258
258
  readonly agent: readonly ["install and import the selected odla SDKs", "wrap the Worker with withObservability and choose useful telemetry", "install capability packages, mount their runtime routes, and make application-specific schema, rules, auth, UI, and migration decisions", "wire @odla-ai/calendar into trusted Worker code and keep the app admin key out of browsers"];
259
259
  readonly human: readonly ["provide the existing odla account email, then sign in and explicitly review/approve the exact device code", "review mirrored calendar/attendee disclosure and complete the server-issued Google consent flow", "consent to changes against an app's live database with --yes", "request destructive credential rotation explicitly", "review application semantics, security findings, releases, and merges", "approve redacted-source disclosure before hosted security reasoning", "approve GitHub App repository access separately from redacted-snippet disclosure"];
260
260
  readonly studio: readonly ["view application telemetry grouped by exact Worker version, reconciled live-sync load/freshness, commit-to-visible canary health, provider-owned Worker runtime metrics, and environment state", "let signed-in users inventory/revoke their own agent grants and admins audit/global-revoke them", "review calendar connection, granted read scope, selected calendars, and sync health without exposing provider tokens", "perform manual credential recovery — for the primary owner or any co-owner — when the CLI's local shown-once copy is unavailable", "configure system AI purposes and view app/environment/run-attributed usage", "connect/revoke GitHub security sources and inspect ref-to-SHA jobs, routes, retention, coverage, and normalized reports"];
@@ -683,6 +683,8 @@ interface ConfigReconciliation {
683
683
  };
684
684
  desiredRevision: ConfigDigest;
685
685
  observedRevision: ConfigDigest | null;
686
+ /** Monotonic Registry compare-and-set revision, separate from content hashes. */
687
+ registryRevision: RegistryConfigRevision | null;
686
688
  status: ConfigDrift;
687
689
  summary: {
688
690
  differences: number;
@@ -704,12 +706,13 @@ interface ConfigDiffDocument extends Omit<ConfigReconciliation, "actions"> {
704
706
  description: string;
705
707
  }>;
706
708
  }
707
- /** Revision-bound `odla.config-plan/v1` document returned by `configPlan`. */
709
+ /** Revision-bound `odla.config-plan/v2` document returned by `configPlan`. */
708
710
  interface ConfigPlanDocument extends ConfigReconciliation {
709
- schemaVersion: "odla.config-plan/v1";
711
+ schemaVersion: "odla.config-plan/v2";
710
712
  planDigest: ConfigDigest;
711
713
  apply: {
712
- supported: false;
714
+ supported: boolean;
715
+ checkpointRequired: boolean;
713
716
  reason: string;
714
717
  };
715
718
  nextActions: Array<{
@@ -730,6 +733,21 @@ interface ConfigInspectOptions {
730
733
  stdout?: Pick<typeof console, "log" | "error">;
731
734
  now?: () => Date;
732
735
  }
736
+ /** Inputs for applying one reviewed, frozen config plan from disk. */
737
+ interface ConfigApplyOptions extends ConfigInspectOptions {
738
+ planPath: string;
739
+ idempotencyKey?: string;
740
+ }
741
+ /** Inputs for exact-id config operation reads and bounded waits. */
742
+ interface ConfigOperationInspectOptions extends ConfigInspectOptions {
743
+ operationId: string;
744
+ intervalSeconds?: number;
745
+ timeoutSeconds?: number;
746
+ pollWait?: (milliseconds: number) => Promise<void>;
747
+ now?: () => Date;
748
+ }
749
+ /** Result returned by config apply or an operation journal command. */
750
+ type ConfigOperationResult = ConfigOperationReceipt;
733
751
  /** Secret-free Registry intent normalized from one loaded project configuration. */
734
752
  interface DesiredRegistryState {
735
753
  appId: string;
@@ -762,13 +780,22 @@ interface ReconciliationInput {
762
780
  * the caller explicitly supplies a token. This function performs no writes.
763
781
  */
764
782
  declare function configDiff(options: ConfigInspectOptions): Promise<ConfigDiffDocument>;
765
- /** Freeze desired/observed revisions and ordered actions into a reviewable plan.
766
- *
767
- * The returned plan intentionally has `apply.supported: false`; callers must
768
- * follow its explicit existing-command or Studio checkpoints separately.
769
- */
783
+ /** Freeze content revisions, Registry CAS revision, and ordered actions. */
770
784
  declare function configPlan(options: ConfigInspectOptions): Promise<ConfigPlanDocument>;
771
785
 
786
+ /** Apply one exact frozen plan through the Registry operation journal. */
787
+ declare function configApply(options: ConfigApplyOptions): Promise<ConfigOperationReceipt>;
788
+ /** Read one exact journal entry without replaying effects. */
789
+ declare function configOperationGet(options: ConfigOperationInspectOptions): Promise<ConfigOperationReceipt>;
790
+ /** Poll one exact journal entry until it closes or the bounded wait expires. */
791
+ declare function configOperationWait(options: ConfigOperationInspectOptions): Promise<ConfigOperationReceipt>;
792
+
793
+ /** Stable CLI failure code consumed by `exitCodeFor`. */
794
+ declare class ConfigOperationCommandError extends Error {
795
+ readonly code: string;
796
+ constructor(message: string, code: string);
797
+ }
798
+
772
799
  /** Project-config projection owned by Registry reconciliation.
773
800
  *
774
801
  * This deliberately excludes schema, rules, seeds, secrets, credentials, and
@@ -1222,4 +1249,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
1222
1249
  */
1223
1250
  declare function smoke(options: SmokeOptions): Promise<void>;
1224
1251
 
1225
- export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, type AvailableGoogleCalendar, CAPABILITIES, CODE_BUILD_RECIPES, CODE_PI_IMAGE, COMMAND_SURFACE, type CalendarConfig, type CalendarConnectionState, type CalendarLifecycleOptions, type CalendarServiceConfig, type CalendarStatus, type CliDependencies, type CodeBuildRule, type CodeConnectOptions, type CodeContainerEngine, type CodeHostCapabilities, type CodeLocalSourceDescriptor, type CodeRuntimeInput, type ConfigCoverage, type ConfigDiffDocument, type ConfigDifference, type ConfigDigest, type ConfigDrift, type ConfigInspectOptions, type ConfigPlanAction, type ConfigPlanDocument, type ConfigReconciliation, type ConfigRisk, type ConfigSource, type ConnectGitHubSecuritySourceOptions, type DesiredRegistryState, type DisconnectGitHubSecuritySourceOptions, type FollowHostedSecurityJobOptions, GOOGLE_CALENDAR_EVENTS_SCOPE, type GetHostedSecurityIntentOptions, type GetHostedSecurityJobOptions, type GoogleCalendarConfig, type HarnessInstallResult, type HostedSecurityProfile, type HostedSecurityResult, type HostedSecurityTokenRequest, type IntegrationProbe, type IntegrationSeed, type InvocationProblem, type ListGitHubSecuritySourcesOptions, type ListHostedSecurityJobsOptions, type LoadedProjectConfig, type LocalCredentials, type OdlaIntegration, type OdlaProjectConfig, type ProvisionOptions, type ProvisionPlan, type ReconciliationInput, type RunHostedSecurityOptions, SYSTEM_AI_PURPOSES, type ScopedPlatformTokenOptions, type SecretsPushOptions, type SecretsSetOptions, type SkillInstallOptions, type SkillInstallResult, type SmokeOptions, type StartHostedSecurityJobOptions, type SurfaceNode, type SystemAiPurpose, acceptedAfter, adminAi, calendarBookingPageUrl, calendarCalendars, calendarConnect, calendarDisconnect, calendarServiceConfig, calendarStatus, codeConnect, configDiff, configPlan, connectGitHubSecuritySource, describeProblem, desiredRegistryState, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, invocationPath, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, prepareCodeImages, printCapabilities, provision, reconcileConfig, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob, surfacePaths, validateInvocation };
1252
+ export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, type AvailableGoogleCalendar, CAPABILITIES, CODE_BUILD_RECIPES, CODE_PI_IMAGE, COMMAND_SURFACE, type CalendarConfig, type CalendarConnectionState, type CalendarLifecycleOptions, type CalendarServiceConfig, type CalendarStatus, type CliDependencies, type CodeBuildRule, type CodeConnectOptions, type CodeContainerEngine, type CodeHostCapabilities, type CodeLocalSourceDescriptor, type CodeRuntimeInput, type ConfigApplyOptions, type ConfigCoverage, type ConfigDiffDocument, type ConfigDifference, type ConfigDigest, type ConfigDrift, type ConfigInspectOptions, ConfigOperationCommandError, type ConfigOperationInspectOptions, type ConfigOperationResult, type ConfigPlanAction, type ConfigPlanDocument, type ConfigReconciliation, type ConfigRisk, type ConfigSource, type ConnectGitHubSecuritySourceOptions, type DesiredRegistryState, type DisconnectGitHubSecuritySourceOptions, type FollowHostedSecurityJobOptions, GOOGLE_CALENDAR_EVENTS_SCOPE, type GetHostedSecurityIntentOptions, type GetHostedSecurityJobOptions, type GoogleCalendarConfig, type HarnessInstallResult, type HostedSecurityProfile, type HostedSecurityResult, type HostedSecurityTokenRequest, type IntegrationProbe, type IntegrationSeed, type InvocationProblem, type ListGitHubSecuritySourcesOptions, type ListHostedSecurityJobsOptions, type LoadedProjectConfig, type LocalCredentials, type OdlaIntegration, type OdlaProjectConfig, type ProvisionOptions, type ProvisionPlan, type ReconciliationInput, type RunHostedSecurityOptions, SYSTEM_AI_PURPOSES, type ScopedPlatformTokenOptions, type SecretsPushOptions, type SecretsSetOptions, type SkillInstallOptions, type SkillInstallResult, type SmokeOptions, type StartHostedSecurityJobOptions, type SurfaceNode, type SystemAiPurpose, acceptedAfter, adminAi, calendarBookingPageUrl, calendarCalendars, calendarConnect, calendarDisconnect, calendarServiceConfig, calendarStatus, codeConnect, configApply, configDiff, configOperationGet, configOperationWait, configPlan, connectGitHubSecuritySource, describeProblem, desiredRegistryState, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, invocationPath, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, prepareCodeImages, printCapabilities, provision, reconcileConfig, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob, surfacePaths, validateInvocation };
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { App } from '@odla-ai/apps';
1
+ import { RegistryConfigRevision, ConfigOperationReceipt, App } from '@odla-ai/apps';
2
2
  import { SecurityReport, PlatformSecurityRun } from '@odla-ai/security';
3
3
  import { HostedSecurityJob, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityIntentResponse, HostedSecurityPlan, HostedSecurityReport, HostedSecurityJobStatus } from '@odla-ai/security/hosted';
4
4
  export { GitHubConnectionAttempt, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityCounts, HostedSecurityCoverage, HostedSecurityIntent, HostedSecurityIntentResponse, HostedSecurityJob, HostedSecurityJobStatus, HostedSecurityPlan, HostedSecurityPlanRoute, HostedSecurityReport, HostedSecurityReportFinding, HostedSecurityRoute } from '@odla-ai/security/hosted';
5
5
 
6
6
  /** One exact device-grant scope obtainable through the approval flow. */
7
- type ScopedPlatformScope = "platform:ai:policy:read" | "platform:ai:policy:write" | "platform:ai:credential:read" | "platform:ai:credential:write" | "platform:ai:usage:read" | "platform:ai:audit:read" | "platform:status:read" | "app:config:read" | "app:code:host:connect" | "platform:code:host:connect" | "platform:security:self" | "platform:runbook:write";
7
+ type ScopedPlatformScope = "platform:ai:policy:read" | "platform:ai:policy:write" | "platform:ai:credential:read" | "platform:ai:credential:write" | "platform:ai:usage:read" | "platform:ai:audit:read" | "platform:status:read" | "app:config:read" | "app:config:write" | "app:code:host:connect" | "platform:code:host:connect" | "platform:security:self" | "platform:runbook:write";
8
8
  /** Inputs for obtaining one short-lived, exact-scope device grant. */
9
9
  interface ScopedPlatformTokenOptions {
10
10
  platform: string;
@@ -254,7 +254,7 @@ declare function adminAi(options: AdminAiOptions): Promise<void>;
254
254
  /** Stable, machine-readable division of work between the CLI, coding agent,
255
255
  * human operator, and Studio. Printed by `odla-ai capabilities --json`. */
256
256
  declare const CAPABILITIES: {
257
- readonly cli: readonly ["start an email-bound device request without accepting a password or user session token", "register the app and enable configured services per environment", "issue, persist, and explicitly rotate configured service credentials", "add or remove app co-owners, each of whom self-provisions their own credentials for the shared db without any secret handoff", "write local Worker values and push deployed Worker secrets through Wrangler stdin", "store tenant-vault secrets (including the Clerk webhook secret and reserved Clerk secret key) write-only from stdin or an env var", "compose declared app-capability schema/rules, create guarded seeds when absent, and configure platform AI, auth, and deployment links", "apply Google Calendar booking config, then drive state-bound consent, status, discovery, and disconnect flows (bookings run live through the platform proxy)", "validate integration contracts offline and smoke-test a provisioned db environment plus anonymous capability routes", "save and explicitly select non-secret named operator contexts with isolated credential caches; resolve and explain platform, app, environment, and credential provenance without authenticating; then run PM, Discussions, o11y, runbook, and identity operations outside a project checkout", "read one versioned o11y status envelope spanning application RED, exact Worker versions and Cloudflare colos observed in traffic, current live-sync freshness/load, the protected commit-to-visible canary, collector ingest/scheduler trust, provider-owned runtime metrics, account-scoped Durable Object, D1, and R2 evidence under odla-db, and a bounded machine verdict", "read one canonical platform fleet snapshot over private service bindings, including release identities, probe latency, Cloudflare load/runtime freshness, explicit unknowns, and stable next actions through a read-only capability", "compare one project's checked-in Registry intent with live owner-visible state and freeze a secret-free plan digest through an exact app:config:read capability", "inspect durable agent wakeups as a versioned JSON envelope and explicitly requeue one dead-lettered job with a scoped environment credential", "run app-attributed hosted security discovery and independent validation without provider keys", "connect/revoke source-read-only GitHub sources and drive commit-pinned hosted security jobs without PATs or provider keys", "let admins manage system AI policy and credentials, inspect attributed usage, and read immutable admin changes through separate short-lived capability-only approvals"];
257
+ readonly cli: readonly ["start an email-bound device request without accepting a password or user session token", "register the app and enable configured services per environment", "issue, persist, and explicitly rotate configured service credentials", "add or remove app co-owners, each of whom self-provisions their own credentials for the shared db without any secret handoff", "write local Worker values and push deployed Worker secrets through Wrangler stdin", "store tenant-vault secrets (including the Clerk webhook secret and reserved Clerk secret key) write-only from stdin or an env var", "compose declared app-capability schema/rules, create guarded seeds when absent, and configure platform AI, auth, and deployment links", "apply Google Calendar booking config, then drive state-bound consent, status, discovery, and disconnect flows (bookings run live through the platform proxy)", "validate integration contracts offline and smoke-test a provisioned db environment plus anonymous capability routes", "save and explicitly select non-secret named operator contexts with isolated credential caches; resolve and explain platform, app, environment, and credential provenance without authenticating; then run PM, Discussions, o11y, runbook, and identity operations outside a project checkout", "read one versioned o11y status envelope spanning application RED, exact Worker versions and Cloudflare colos observed in traffic, current live-sync freshness/load, the protected commit-to-visible canary, collector ingest/scheduler trust, provider-owned runtime metrics, account-scoped Durable Object, D1, and R2 evidence under odla-db, and a bounded machine verdict", "read one canonical platform fleet snapshot over private service bindings, including release identities, probe latency, Cloudflare load/runtime freshness, explicit unknowns, and stable next actions through a read-only capability", "compare one project's checked-in Registry intent with live owner-visible state, freeze a secret-free Registry-revision-bound plan through app:config:read, and conditionally apply checkpoint-free actions through exact app:config:write operation routes", "inspect or bounded-wait one exact durable config-operation journal entry and verify every terminal receipt digest before returning it to remote automation", "inspect durable agent wakeups as a versioned JSON envelope and explicitly requeue one dead-lettered job with a scoped environment credential", "run app-attributed hosted security discovery and independent validation without provider keys", "connect/revoke source-read-only GitHub sources and drive commit-pinned hosted security jobs without PATs or provider keys", "let admins manage system AI policy and credentials, inspect attributed usage, and read immutable admin changes through separate short-lived capability-only approvals"];
258
258
  readonly agent: readonly ["install and import the selected odla SDKs", "wrap the Worker with withObservability and choose useful telemetry", "install capability packages, mount their runtime routes, and make application-specific schema, rules, auth, UI, and migration decisions", "wire @odla-ai/calendar into trusted Worker code and keep the app admin key out of browsers"];
259
259
  readonly human: readonly ["provide the existing odla account email, then sign in and explicitly review/approve the exact device code", "review mirrored calendar/attendee disclosure and complete the server-issued Google consent flow", "consent to changes against an app's live database with --yes", "request destructive credential rotation explicitly", "review application semantics, security findings, releases, and merges", "approve redacted-source disclosure before hosted security reasoning", "approve GitHub App repository access separately from redacted-snippet disclosure"];
260
260
  readonly studio: readonly ["view application telemetry grouped by exact Worker version, reconciled live-sync load/freshness, commit-to-visible canary health, provider-owned Worker runtime metrics, and environment state", "let signed-in users inventory/revoke their own agent grants and admins audit/global-revoke them", "review calendar connection, granted read scope, selected calendars, and sync health without exposing provider tokens", "perform manual credential recovery — for the primary owner or any co-owner — when the CLI's local shown-once copy is unavailable", "configure system AI purposes and view app/environment/run-attributed usage", "connect/revoke GitHub security sources and inspect ref-to-SHA jobs, routes, retention, coverage, and normalized reports"];
@@ -683,6 +683,8 @@ interface ConfigReconciliation {
683
683
  };
684
684
  desiredRevision: ConfigDigest;
685
685
  observedRevision: ConfigDigest | null;
686
+ /** Monotonic Registry compare-and-set revision, separate from content hashes. */
687
+ registryRevision: RegistryConfigRevision | null;
686
688
  status: ConfigDrift;
687
689
  summary: {
688
690
  differences: number;
@@ -704,12 +706,13 @@ interface ConfigDiffDocument extends Omit<ConfigReconciliation, "actions"> {
704
706
  description: string;
705
707
  }>;
706
708
  }
707
- /** Revision-bound `odla.config-plan/v1` document returned by `configPlan`. */
709
+ /** Revision-bound `odla.config-plan/v2` document returned by `configPlan`. */
708
710
  interface ConfigPlanDocument extends ConfigReconciliation {
709
- schemaVersion: "odla.config-plan/v1";
711
+ schemaVersion: "odla.config-plan/v2";
710
712
  planDigest: ConfigDigest;
711
713
  apply: {
712
- supported: false;
714
+ supported: boolean;
715
+ checkpointRequired: boolean;
713
716
  reason: string;
714
717
  };
715
718
  nextActions: Array<{
@@ -730,6 +733,21 @@ interface ConfigInspectOptions {
730
733
  stdout?: Pick<typeof console, "log" | "error">;
731
734
  now?: () => Date;
732
735
  }
736
+ /** Inputs for applying one reviewed, frozen config plan from disk. */
737
+ interface ConfigApplyOptions extends ConfigInspectOptions {
738
+ planPath: string;
739
+ idempotencyKey?: string;
740
+ }
741
+ /** Inputs for exact-id config operation reads and bounded waits. */
742
+ interface ConfigOperationInspectOptions extends ConfigInspectOptions {
743
+ operationId: string;
744
+ intervalSeconds?: number;
745
+ timeoutSeconds?: number;
746
+ pollWait?: (milliseconds: number) => Promise<void>;
747
+ now?: () => Date;
748
+ }
749
+ /** Result returned by config apply or an operation journal command. */
750
+ type ConfigOperationResult = ConfigOperationReceipt;
733
751
  /** Secret-free Registry intent normalized from one loaded project configuration. */
734
752
  interface DesiredRegistryState {
735
753
  appId: string;
@@ -762,13 +780,22 @@ interface ReconciliationInput {
762
780
  * the caller explicitly supplies a token. This function performs no writes.
763
781
  */
764
782
  declare function configDiff(options: ConfigInspectOptions): Promise<ConfigDiffDocument>;
765
- /** Freeze desired/observed revisions and ordered actions into a reviewable plan.
766
- *
767
- * The returned plan intentionally has `apply.supported: false`; callers must
768
- * follow its explicit existing-command or Studio checkpoints separately.
769
- */
783
+ /** Freeze content revisions, Registry CAS revision, and ordered actions. */
770
784
  declare function configPlan(options: ConfigInspectOptions): Promise<ConfigPlanDocument>;
771
785
 
786
+ /** Apply one exact frozen plan through the Registry operation journal. */
787
+ declare function configApply(options: ConfigApplyOptions): Promise<ConfigOperationReceipt>;
788
+ /** Read one exact journal entry without replaying effects. */
789
+ declare function configOperationGet(options: ConfigOperationInspectOptions): Promise<ConfigOperationReceipt>;
790
+ /** Poll one exact journal entry until it closes or the bounded wait expires. */
791
+ declare function configOperationWait(options: ConfigOperationInspectOptions): Promise<ConfigOperationReceipt>;
792
+
793
+ /** Stable CLI failure code consumed by `exitCodeFor`. */
794
+ declare class ConfigOperationCommandError extends Error {
795
+ readonly code: string;
796
+ constructor(message: string, code: string);
797
+ }
798
+
772
799
  /** Project-config projection owned by Registry reconciliation.
773
800
  *
774
801
  * This deliberately excludes schema, rules, seeds, secrets, credentials, and
@@ -1222,4 +1249,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
1222
1249
  */
1223
1250
  declare function smoke(options: SmokeOptions): Promise<void>;
1224
1251
 
1225
- export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, type AvailableGoogleCalendar, CAPABILITIES, CODE_BUILD_RECIPES, CODE_PI_IMAGE, COMMAND_SURFACE, type CalendarConfig, type CalendarConnectionState, type CalendarLifecycleOptions, type CalendarServiceConfig, type CalendarStatus, type CliDependencies, type CodeBuildRule, type CodeConnectOptions, type CodeContainerEngine, type CodeHostCapabilities, type CodeLocalSourceDescriptor, type CodeRuntimeInput, type ConfigCoverage, type ConfigDiffDocument, type ConfigDifference, type ConfigDigest, type ConfigDrift, type ConfigInspectOptions, type ConfigPlanAction, type ConfigPlanDocument, type ConfigReconciliation, type ConfigRisk, type ConfigSource, type ConnectGitHubSecuritySourceOptions, type DesiredRegistryState, type DisconnectGitHubSecuritySourceOptions, type FollowHostedSecurityJobOptions, GOOGLE_CALENDAR_EVENTS_SCOPE, type GetHostedSecurityIntentOptions, type GetHostedSecurityJobOptions, type GoogleCalendarConfig, type HarnessInstallResult, type HostedSecurityProfile, type HostedSecurityResult, type HostedSecurityTokenRequest, type IntegrationProbe, type IntegrationSeed, type InvocationProblem, type ListGitHubSecuritySourcesOptions, type ListHostedSecurityJobsOptions, type LoadedProjectConfig, type LocalCredentials, type OdlaIntegration, type OdlaProjectConfig, type ProvisionOptions, type ProvisionPlan, type ReconciliationInput, type RunHostedSecurityOptions, SYSTEM_AI_PURPOSES, type ScopedPlatformTokenOptions, type SecretsPushOptions, type SecretsSetOptions, type SkillInstallOptions, type SkillInstallResult, type SmokeOptions, type StartHostedSecurityJobOptions, type SurfaceNode, type SystemAiPurpose, acceptedAfter, adminAi, calendarBookingPageUrl, calendarCalendars, calendarConnect, calendarDisconnect, calendarServiceConfig, calendarStatus, codeConnect, configDiff, configPlan, connectGitHubSecuritySource, describeProblem, desiredRegistryState, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, invocationPath, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, prepareCodeImages, printCapabilities, provision, reconcileConfig, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob, surfacePaths, validateInvocation };
1252
+ export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, type AvailableGoogleCalendar, CAPABILITIES, CODE_BUILD_RECIPES, CODE_PI_IMAGE, COMMAND_SURFACE, type CalendarConfig, type CalendarConnectionState, type CalendarLifecycleOptions, type CalendarServiceConfig, type CalendarStatus, type CliDependencies, type CodeBuildRule, type CodeConnectOptions, type CodeContainerEngine, type CodeHostCapabilities, type CodeLocalSourceDescriptor, type CodeRuntimeInput, type ConfigApplyOptions, type ConfigCoverage, type ConfigDiffDocument, type ConfigDifference, type ConfigDigest, type ConfigDrift, type ConfigInspectOptions, ConfigOperationCommandError, type ConfigOperationInspectOptions, type ConfigOperationResult, type ConfigPlanAction, type ConfigPlanDocument, type ConfigReconciliation, type ConfigRisk, type ConfigSource, type ConnectGitHubSecuritySourceOptions, type DesiredRegistryState, type DisconnectGitHubSecuritySourceOptions, type FollowHostedSecurityJobOptions, GOOGLE_CALENDAR_EVENTS_SCOPE, type GetHostedSecurityIntentOptions, type GetHostedSecurityJobOptions, type GoogleCalendarConfig, type HarnessInstallResult, type HostedSecurityProfile, type HostedSecurityResult, type HostedSecurityTokenRequest, type IntegrationProbe, type IntegrationSeed, type InvocationProblem, type ListGitHubSecuritySourcesOptions, type ListHostedSecurityJobsOptions, type LoadedProjectConfig, type LocalCredentials, type OdlaIntegration, type OdlaProjectConfig, type ProvisionOptions, type ProvisionPlan, type ReconciliationInput, type RunHostedSecurityOptions, SYSTEM_AI_PURPOSES, type ScopedPlatformTokenOptions, type SecretsPushOptions, type SecretsSetOptions, type SkillInstallOptions, type SkillInstallResult, type SmokeOptions, type StartHostedSecurityJobOptions, type SurfaceNode, type SystemAiPurpose, acceptedAfter, adminAi, calendarBookingPageUrl, calendarCalendars, calendarConnect, calendarDisconnect, calendarServiceConfig, calendarStatus, codeConnect, configApply, configDiff, configOperationGet, configOperationWait, configPlan, connectGitHubSecuritySource, describeProblem, desiredRegistryState, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, invocationPath, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, prepareCodeImages, printCapabilities, provision, reconcileConfig, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob, surfacePaths, validateInvocation };
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  CODE_BUILD_RECIPES,
6
6
  CODE_PI_IMAGE,
7
7
  COMMAND_SURFACE,
8
+ ConfigOperationCommandError,
8
9
  GOOGLE_CALENDAR_EVENTS_SCOPE,
9
10
  SYSTEM_AI_PURPOSES,
10
11
  acceptedAfter,
@@ -16,7 +17,10 @@ import {
16
17
  calendarServiceConfig,
17
18
  calendarStatus,
18
19
  codeConnect,
20
+ configApply,
19
21
  configDiff,
22
+ configOperationGet,
23
+ configOperationWait,
20
24
  configPlan,
21
25
  connectGitHubSecuritySource,
22
26
  describeProblem,
@@ -53,13 +57,14 @@ import {
53
57
  startHostedSecurityJob,
54
58
  surfacePaths,
55
59
  validateInvocation
56
- } from "./chunk-2AFAXLKE.js";
60
+ } from "./chunk-JJ42NV7X.js";
57
61
  export {
58
62
  AGENT_HARNESSES,
59
63
  CAPABILITIES,
60
64
  CODE_BUILD_RECIPES,
61
65
  CODE_PI_IMAGE,
62
66
  COMMAND_SURFACE,
67
+ ConfigOperationCommandError,
63
68
  GOOGLE_CALENDAR_EVENTS_SCOPE,
64
69
  SYSTEM_AI_PURPOSES,
65
70
  acceptedAfter,
@@ -71,7 +76,10 @@ export {
71
76
  calendarServiceConfig,
72
77
  calendarStatus,
73
78
  codeConnect,
79
+ configApply,
74
80
  configDiff,
81
+ configOperationGet,
82
+ configOperationWait,
75
83
  configPlan,
76
84
  connectGitHubSecuritySource,
77
85
  describeProblem,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odla-ai/cli",
3
- "version": "0.25.22",
3
+ "version": "0.25.23",
4
4
  "description": "Agent-operable CLI for odla provisioning, calendar consent and sync lifecycle, System AI administration, Worker secrets, security jobs, and smoke checks.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://odla.ai/docs/packages/cli",
@@ -58,7 +58,7 @@
58
58
  },
59
59
  "dependencies": {
60
60
  "@odla-ai/ai": ">=0.5.0 <1.0.0",
61
- "@odla-ai/apps": ">=0.8.3 <1.0.0",
61
+ "@odla-ai/apps": ">=0.9.0 <1.0.0",
62
62
  "@odla-ai/db": ">=0.6.7 <1.0.0",
63
63
  "@odla-ai/security": ">=0.3.1 <1.0.0"
64
64
  },