@odla-ai/cli 0.25.21 → 0.25.22
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 +34 -2
- package/REQUIREMENTS.md +6 -0
- package/dist/bin.cjs +1130 -618
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +1 -1
- package/dist/{chunk-L2NG4UR4.js → chunk-2AFAXLKE.js} +1043 -529
- package/dist/chunk-2AFAXLKE.js.map +1 -0
- package/dist/index.cjs +1138 -618
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +169 -6
- package/dist/index.d.ts +169 -6
- package/dist/index.js +9 -1
- package/package.json +1 -1
- package/dist/chunk-L2NG4UR4.js.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { App } from '@odla-ai/apps';
|
|
1
2
|
import { SecurityReport, PlatformSecurityRun } from '@odla-ai/security';
|
|
2
3
|
import { HostedSecurityJob, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityIntentResponse, HostedSecurityPlan, HostedSecurityReport, HostedSecurityJobStatus } from '@odla-ai/security/hosted';
|
|
3
4
|
export { GitHubConnectionAttempt, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityCounts, HostedSecurityCoverage, HostedSecurityIntent, HostedSecurityIntentResponse, HostedSecurityJob, HostedSecurityJobStatus, HostedSecurityPlan, HostedSecurityPlanRoute, HostedSecurityReport, HostedSecurityReportFinding, HostedSecurityRoute } from '@odla-ai/security/hosted';
|
|
4
5
|
|
|
5
|
-
/** One exact
|
|
6
|
-
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:code:host:connect" | "platform:code:host:connect" | "platform:security:self" | "platform:runbook:write";
|
|
7
|
-
/** Inputs for obtaining one short-lived, exact-scope
|
|
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";
|
|
8
|
+
/** Inputs for obtaining one short-lived, exact-scope device grant. */
|
|
8
9
|
interface ScopedPlatformTokenOptions {
|
|
9
10
|
platform: string;
|
|
10
11
|
scope: ScopedPlatformScope;
|
|
@@ -29,7 +30,7 @@ interface ScopedPlatformTokenOptions {
|
|
|
29
30
|
/** Human-visible purpose recorded on the exact handshake. */
|
|
30
31
|
label?: string;
|
|
31
32
|
}
|
|
32
|
-
/** Obtain/cache one exact
|
|
33
|
+
/** Obtain/cache one exact device scope without granting ambient authority. */
|
|
33
34
|
declare function getScopedPlatformToken(options: ScopedPlatformTokenOptions): Promise<string>;
|
|
34
35
|
|
|
35
36
|
/** Immutable local-checkout attestation advertised by a connected terminal. */
|
|
@@ -253,7 +254,7 @@ declare function adminAi(options: AdminAiOptions): Promise<void>;
|
|
|
253
254
|
/** Stable, machine-readable division of work between the CLI, coding agent,
|
|
254
255
|
* human operator, and Studio. Printed by `odla-ai capabilities --json`. */
|
|
255
256
|
declare const CAPABILITIES: {
|
|
256
|
-
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", "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 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
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"];
|
|
258
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"];
|
|
259
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"];
|
|
@@ -622,6 +623,168 @@ declare function calendarServiceConfig(cfg: LoadedProjectConfig, env: string): C
|
|
|
622
623
|
/** Public Appointment Schedule URL to apply separately from connector config. */
|
|
623
624
|
declare function calendarBookingPageUrl(cfg: LoadedProjectConfig, env: string): string | null | undefined;
|
|
624
625
|
|
|
626
|
+
/** Canonical SHA-256 identifier for normalized configuration or a frozen plan. */
|
|
627
|
+
type ConfigDigest = `sha256:${string}`;
|
|
628
|
+
/** Overall relationship between repository-managed intent and observed state. */
|
|
629
|
+
type ConfigDrift = "in_sync" | "different" | "unmanaged";
|
|
630
|
+
/** Review severity assigned to a proposed configuration action. */
|
|
631
|
+
type ConfigRisk = "low" | "medium" | "high";
|
|
632
|
+
/** Provenance of one side of the reconciliation comparison. */
|
|
633
|
+
interface ConfigSource {
|
|
634
|
+
kind: "project_config" | "registry";
|
|
635
|
+
location: string;
|
|
636
|
+
}
|
|
637
|
+
/** One repository-managed field that differs, or one live value deliberately left unmanaged. */
|
|
638
|
+
interface ConfigDifference {
|
|
639
|
+
path: string;
|
|
640
|
+
env?: string;
|
|
641
|
+
service?: string;
|
|
642
|
+
status: Exclude<ConfigDrift, "in_sync">;
|
|
643
|
+
desired: unknown;
|
|
644
|
+
observed: unknown;
|
|
645
|
+
desiredSource: ConfigSource;
|
|
646
|
+
observedSource: ConfigSource;
|
|
647
|
+
reason: string;
|
|
648
|
+
}
|
|
649
|
+
/** One ordered, secret-free operation derived from a frozen desired/observed comparison. */
|
|
650
|
+
interface ConfigPlanAction {
|
|
651
|
+
id: string;
|
|
652
|
+
kind: "create_app" | "rename_app" | "enable_service" | "configure_service" | "disable_service" | "set_auth" | "set_link";
|
|
653
|
+
path: string;
|
|
654
|
+
env?: string;
|
|
655
|
+
service?: string;
|
|
656
|
+
before: unknown;
|
|
657
|
+
after: unknown;
|
|
658
|
+
risk: ConfigRisk;
|
|
659
|
+
requiresApproval: boolean;
|
|
660
|
+
applySupport: "provision" | "command" | "studio";
|
|
661
|
+
command?: string;
|
|
662
|
+
reason: string;
|
|
663
|
+
}
|
|
664
|
+
/** Fields deliberately included in or excluded from this reconciliation boundary. */
|
|
665
|
+
interface ConfigCoverage {
|
|
666
|
+
included: string[];
|
|
667
|
+
excluded: Array<{
|
|
668
|
+
path: string;
|
|
669
|
+
reason: string;
|
|
670
|
+
}>;
|
|
671
|
+
}
|
|
672
|
+
/** Normalized comparison shared by config diff and plan before presentation fields are added. */
|
|
673
|
+
interface ConfigReconciliation {
|
|
674
|
+
generatedAt: string;
|
|
675
|
+
scope: {
|
|
676
|
+
appId: string;
|
|
677
|
+
platformUrl: string;
|
|
678
|
+
environments: string[];
|
|
679
|
+
};
|
|
680
|
+
sources: {
|
|
681
|
+
desired: ConfigSource;
|
|
682
|
+
observed: ConfigSource;
|
|
683
|
+
};
|
|
684
|
+
desiredRevision: ConfigDigest;
|
|
685
|
+
observedRevision: ConfigDigest | null;
|
|
686
|
+
status: ConfigDrift;
|
|
687
|
+
summary: {
|
|
688
|
+
differences: number;
|
|
689
|
+
unmanaged: number;
|
|
690
|
+
actions: number;
|
|
691
|
+
productionActions: number;
|
|
692
|
+
highRiskActions: number;
|
|
693
|
+
};
|
|
694
|
+
coverage: ConfigCoverage;
|
|
695
|
+
differences: ConfigDifference[];
|
|
696
|
+
actions: ConfigPlanAction[];
|
|
697
|
+
}
|
|
698
|
+
/** Stable read-only `odla.config-diff/v1` document returned by `configDiff`. */
|
|
699
|
+
interface ConfigDiffDocument extends Omit<ConfigReconciliation, "actions"> {
|
|
700
|
+
schemaVersion: "odla.config-diff/v1";
|
|
701
|
+
nextActions: Array<{
|
|
702
|
+
code: string;
|
|
703
|
+
command: string;
|
|
704
|
+
description: string;
|
|
705
|
+
}>;
|
|
706
|
+
}
|
|
707
|
+
/** Revision-bound `odla.config-plan/v1` document returned by `configPlan`. */
|
|
708
|
+
interface ConfigPlanDocument extends ConfigReconciliation {
|
|
709
|
+
schemaVersion: "odla.config-plan/v1";
|
|
710
|
+
planDigest: ConfigDigest;
|
|
711
|
+
apply: {
|
|
712
|
+
supported: false;
|
|
713
|
+
reason: string;
|
|
714
|
+
};
|
|
715
|
+
nextActions: Array<{
|
|
716
|
+
code: string;
|
|
717
|
+
command: string;
|
|
718
|
+
description: string;
|
|
719
|
+
}>;
|
|
720
|
+
}
|
|
721
|
+
/** Inputs for reading and comparing one project's Registry-owned configuration. */
|
|
722
|
+
interface ConfigInspectOptions {
|
|
723
|
+
configPath: string;
|
|
724
|
+
token?: string;
|
|
725
|
+
email?: string;
|
|
726
|
+
open?: boolean;
|
|
727
|
+
json?: boolean;
|
|
728
|
+
fetch?: typeof fetch;
|
|
729
|
+
openApprovalUrl?: (url: string) => Promise<void>;
|
|
730
|
+
stdout?: Pick<typeof console, "log" | "error">;
|
|
731
|
+
now?: () => Date;
|
|
732
|
+
}
|
|
733
|
+
/** Secret-free Registry intent normalized from one loaded project configuration. */
|
|
734
|
+
interface DesiredRegistryState {
|
|
735
|
+
appId: string;
|
|
736
|
+
name: string;
|
|
737
|
+
environments: Record<string, {
|
|
738
|
+
services: Record<string, {
|
|
739
|
+
enabled: boolean;
|
|
740
|
+
config?: Record<string, unknown>;
|
|
741
|
+
}>;
|
|
742
|
+
auth?: {
|
|
743
|
+
publishableKey: string;
|
|
744
|
+
audience?: string;
|
|
745
|
+
mode?: "client" | "full";
|
|
746
|
+
};
|
|
747
|
+
link?: string | null;
|
|
748
|
+
}>;
|
|
749
|
+
}
|
|
750
|
+
/** Desired, observed, and provenance inputs accepted by the pure reconciler. */
|
|
751
|
+
interface ReconciliationInput {
|
|
752
|
+
desired: DesiredRegistryState;
|
|
753
|
+
observed: App | null;
|
|
754
|
+
configPath: string;
|
|
755
|
+
platformUrl: string;
|
|
756
|
+
generatedAt: string;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
/** Read live Registry state and emit a stable, secret-free difference document.
|
|
760
|
+
*
|
|
761
|
+
* Authentication uses only the short-lived `app:config:read` capability unless
|
|
762
|
+
* the caller explicitly supplies a token. This function performs no writes.
|
|
763
|
+
*/
|
|
764
|
+
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
|
+
*/
|
|
770
|
+
declare function configPlan(options: ConfigInspectOptions): Promise<ConfigPlanDocument>;
|
|
771
|
+
|
|
772
|
+
/** Project-config projection owned by Registry reconciliation.
|
|
773
|
+
*
|
|
774
|
+
* This deliberately excludes schema, rules, seeds, secrets, credentials, and
|
|
775
|
+
* provider connection state. A plan that cannot see those must not imply that
|
|
776
|
+
* they are synchronized.
|
|
777
|
+
*/
|
|
778
|
+
declare function desiredRegistryState(cfg: LoadedProjectConfig): DesiredRegistryState;
|
|
779
|
+
|
|
780
|
+
/** Compare normalized project intent with one owner-visible Registry snapshot.
|
|
781
|
+
*
|
|
782
|
+
* The result is deterministic apart from `input.generatedAt`: differences are
|
|
783
|
+
* stable, actions are dependency ordered, and action ids are content-derived.
|
|
784
|
+
* It never reads credentials or mutates either source.
|
|
785
|
+
*/
|
|
786
|
+
declare function reconcileConfig(input: ReconciliationInput): ConfigReconciliation;
|
|
787
|
+
|
|
625
788
|
interface DoctorOptions {
|
|
626
789
|
configPath: string;
|
|
627
790
|
stdout?: Pick<typeof console, "log" | "error">;
|
|
@@ -1059,4 +1222,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
|
|
|
1059
1222
|
*/
|
|
1060
1223
|
declare function smoke(options: SmokeOptions): Promise<void>;
|
|
1061
1224
|
|
|
1062
|
-
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 ConnectGitHubSecuritySourceOptions, 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 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, connectGitHubSecuritySource, describeProblem, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, invocationPath, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, prepareCodeImages, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob, surfacePaths, validateInvocation };
|
|
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 };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { App } from '@odla-ai/apps';
|
|
1
2
|
import { SecurityReport, PlatformSecurityRun } from '@odla-ai/security';
|
|
2
3
|
import { HostedSecurityJob, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityIntentResponse, HostedSecurityPlan, HostedSecurityReport, HostedSecurityJobStatus } from '@odla-ai/security/hosted';
|
|
3
4
|
export { GitHubConnectionAttempt, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityCounts, HostedSecurityCoverage, HostedSecurityIntent, HostedSecurityIntentResponse, HostedSecurityJob, HostedSecurityJobStatus, HostedSecurityPlan, HostedSecurityPlanRoute, HostedSecurityReport, HostedSecurityReportFinding, HostedSecurityRoute } from '@odla-ai/security/hosted';
|
|
4
5
|
|
|
5
|
-
/** One exact
|
|
6
|
-
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:code:host:connect" | "platform:code:host:connect" | "platform:security:self" | "platform:runbook:write";
|
|
7
|
-
/** Inputs for obtaining one short-lived, exact-scope
|
|
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";
|
|
8
|
+
/** Inputs for obtaining one short-lived, exact-scope device grant. */
|
|
8
9
|
interface ScopedPlatformTokenOptions {
|
|
9
10
|
platform: string;
|
|
10
11
|
scope: ScopedPlatformScope;
|
|
@@ -29,7 +30,7 @@ interface ScopedPlatformTokenOptions {
|
|
|
29
30
|
/** Human-visible purpose recorded on the exact handshake. */
|
|
30
31
|
label?: string;
|
|
31
32
|
}
|
|
32
|
-
/** Obtain/cache one exact
|
|
33
|
+
/** Obtain/cache one exact device scope without granting ambient authority. */
|
|
33
34
|
declare function getScopedPlatformToken(options: ScopedPlatformTokenOptions): Promise<string>;
|
|
34
35
|
|
|
35
36
|
/** Immutable local-checkout attestation advertised by a connected terminal. */
|
|
@@ -253,7 +254,7 @@ declare function adminAi(options: AdminAiOptions): Promise<void>;
|
|
|
253
254
|
/** Stable, machine-readable division of work between the CLI, coding agent,
|
|
254
255
|
* human operator, and Studio. Printed by `odla-ai capabilities --json`. */
|
|
255
256
|
declare const CAPABILITIES: {
|
|
256
|
-
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", "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 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
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"];
|
|
258
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"];
|
|
259
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"];
|
|
@@ -622,6 +623,168 @@ declare function calendarServiceConfig(cfg: LoadedProjectConfig, env: string): C
|
|
|
622
623
|
/** Public Appointment Schedule URL to apply separately from connector config. */
|
|
623
624
|
declare function calendarBookingPageUrl(cfg: LoadedProjectConfig, env: string): string | null | undefined;
|
|
624
625
|
|
|
626
|
+
/** Canonical SHA-256 identifier for normalized configuration or a frozen plan. */
|
|
627
|
+
type ConfigDigest = `sha256:${string}`;
|
|
628
|
+
/** Overall relationship between repository-managed intent and observed state. */
|
|
629
|
+
type ConfigDrift = "in_sync" | "different" | "unmanaged";
|
|
630
|
+
/** Review severity assigned to a proposed configuration action. */
|
|
631
|
+
type ConfigRisk = "low" | "medium" | "high";
|
|
632
|
+
/** Provenance of one side of the reconciliation comparison. */
|
|
633
|
+
interface ConfigSource {
|
|
634
|
+
kind: "project_config" | "registry";
|
|
635
|
+
location: string;
|
|
636
|
+
}
|
|
637
|
+
/** One repository-managed field that differs, or one live value deliberately left unmanaged. */
|
|
638
|
+
interface ConfigDifference {
|
|
639
|
+
path: string;
|
|
640
|
+
env?: string;
|
|
641
|
+
service?: string;
|
|
642
|
+
status: Exclude<ConfigDrift, "in_sync">;
|
|
643
|
+
desired: unknown;
|
|
644
|
+
observed: unknown;
|
|
645
|
+
desiredSource: ConfigSource;
|
|
646
|
+
observedSource: ConfigSource;
|
|
647
|
+
reason: string;
|
|
648
|
+
}
|
|
649
|
+
/** One ordered, secret-free operation derived from a frozen desired/observed comparison. */
|
|
650
|
+
interface ConfigPlanAction {
|
|
651
|
+
id: string;
|
|
652
|
+
kind: "create_app" | "rename_app" | "enable_service" | "configure_service" | "disable_service" | "set_auth" | "set_link";
|
|
653
|
+
path: string;
|
|
654
|
+
env?: string;
|
|
655
|
+
service?: string;
|
|
656
|
+
before: unknown;
|
|
657
|
+
after: unknown;
|
|
658
|
+
risk: ConfigRisk;
|
|
659
|
+
requiresApproval: boolean;
|
|
660
|
+
applySupport: "provision" | "command" | "studio";
|
|
661
|
+
command?: string;
|
|
662
|
+
reason: string;
|
|
663
|
+
}
|
|
664
|
+
/** Fields deliberately included in or excluded from this reconciliation boundary. */
|
|
665
|
+
interface ConfigCoverage {
|
|
666
|
+
included: string[];
|
|
667
|
+
excluded: Array<{
|
|
668
|
+
path: string;
|
|
669
|
+
reason: string;
|
|
670
|
+
}>;
|
|
671
|
+
}
|
|
672
|
+
/** Normalized comparison shared by config diff and plan before presentation fields are added. */
|
|
673
|
+
interface ConfigReconciliation {
|
|
674
|
+
generatedAt: string;
|
|
675
|
+
scope: {
|
|
676
|
+
appId: string;
|
|
677
|
+
platformUrl: string;
|
|
678
|
+
environments: string[];
|
|
679
|
+
};
|
|
680
|
+
sources: {
|
|
681
|
+
desired: ConfigSource;
|
|
682
|
+
observed: ConfigSource;
|
|
683
|
+
};
|
|
684
|
+
desiredRevision: ConfigDigest;
|
|
685
|
+
observedRevision: ConfigDigest | null;
|
|
686
|
+
status: ConfigDrift;
|
|
687
|
+
summary: {
|
|
688
|
+
differences: number;
|
|
689
|
+
unmanaged: number;
|
|
690
|
+
actions: number;
|
|
691
|
+
productionActions: number;
|
|
692
|
+
highRiskActions: number;
|
|
693
|
+
};
|
|
694
|
+
coverage: ConfigCoverage;
|
|
695
|
+
differences: ConfigDifference[];
|
|
696
|
+
actions: ConfigPlanAction[];
|
|
697
|
+
}
|
|
698
|
+
/** Stable read-only `odla.config-diff/v1` document returned by `configDiff`. */
|
|
699
|
+
interface ConfigDiffDocument extends Omit<ConfigReconciliation, "actions"> {
|
|
700
|
+
schemaVersion: "odla.config-diff/v1";
|
|
701
|
+
nextActions: Array<{
|
|
702
|
+
code: string;
|
|
703
|
+
command: string;
|
|
704
|
+
description: string;
|
|
705
|
+
}>;
|
|
706
|
+
}
|
|
707
|
+
/** Revision-bound `odla.config-plan/v1` document returned by `configPlan`. */
|
|
708
|
+
interface ConfigPlanDocument extends ConfigReconciliation {
|
|
709
|
+
schemaVersion: "odla.config-plan/v1";
|
|
710
|
+
planDigest: ConfigDigest;
|
|
711
|
+
apply: {
|
|
712
|
+
supported: false;
|
|
713
|
+
reason: string;
|
|
714
|
+
};
|
|
715
|
+
nextActions: Array<{
|
|
716
|
+
code: string;
|
|
717
|
+
command: string;
|
|
718
|
+
description: string;
|
|
719
|
+
}>;
|
|
720
|
+
}
|
|
721
|
+
/** Inputs for reading and comparing one project's Registry-owned configuration. */
|
|
722
|
+
interface ConfigInspectOptions {
|
|
723
|
+
configPath: string;
|
|
724
|
+
token?: string;
|
|
725
|
+
email?: string;
|
|
726
|
+
open?: boolean;
|
|
727
|
+
json?: boolean;
|
|
728
|
+
fetch?: typeof fetch;
|
|
729
|
+
openApprovalUrl?: (url: string) => Promise<void>;
|
|
730
|
+
stdout?: Pick<typeof console, "log" | "error">;
|
|
731
|
+
now?: () => Date;
|
|
732
|
+
}
|
|
733
|
+
/** Secret-free Registry intent normalized from one loaded project configuration. */
|
|
734
|
+
interface DesiredRegistryState {
|
|
735
|
+
appId: string;
|
|
736
|
+
name: string;
|
|
737
|
+
environments: Record<string, {
|
|
738
|
+
services: Record<string, {
|
|
739
|
+
enabled: boolean;
|
|
740
|
+
config?: Record<string, unknown>;
|
|
741
|
+
}>;
|
|
742
|
+
auth?: {
|
|
743
|
+
publishableKey: string;
|
|
744
|
+
audience?: string;
|
|
745
|
+
mode?: "client" | "full";
|
|
746
|
+
};
|
|
747
|
+
link?: string | null;
|
|
748
|
+
}>;
|
|
749
|
+
}
|
|
750
|
+
/** Desired, observed, and provenance inputs accepted by the pure reconciler. */
|
|
751
|
+
interface ReconciliationInput {
|
|
752
|
+
desired: DesiredRegistryState;
|
|
753
|
+
observed: App | null;
|
|
754
|
+
configPath: string;
|
|
755
|
+
platformUrl: string;
|
|
756
|
+
generatedAt: string;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
/** Read live Registry state and emit a stable, secret-free difference document.
|
|
760
|
+
*
|
|
761
|
+
* Authentication uses only the short-lived `app:config:read` capability unless
|
|
762
|
+
* the caller explicitly supplies a token. This function performs no writes.
|
|
763
|
+
*/
|
|
764
|
+
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
|
+
*/
|
|
770
|
+
declare function configPlan(options: ConfigInspectOptions): Promise<ConfigPlanDocument>;
|
|
771
|
+
|
|
772
|
+
/** Project-config projection owned by Registry reconciliation.
|
|
773
|
+
*
|
|
774
|
+
* This deliberately excludes schema, rules, seeds, secrets, credentials, and
|
|
775
|
+
* provider connection state. A plan that cannot see those must not imply that
|
|
776
|
+
* they are synchronized.
|
|
777
|
+
*/
|
|
778
|
+
declare function desiredRegistryState(cfg: LoadedProjectConfig): DesiredRegistryState;
|
|
779
|
+
|
|
780
|
+
/** Compare normalized project intent with one owner-visible Registry snapshot.
|
|
781
|
+
*
|
|
782
|
+
* The result is deterministic apart from `input.generatedAt`: differences are
|
|
783
|
+
* stable, actions are dependency ordered, and action ids are content-derived.
|
|
784
|
+
* It never reads credentials or mutates either source.
|
|
785
|
+
*/
|
|
786
|
+
declare function reconcileConfig(input: ReconciliationInput): ConfigReconciliation;
|
|
787
|
+
|
|
625
788
|
interface DoctorOptions {
|
|
626
789
|
configPath: string;
|
|
627
790
|
stdout?: Pick<typeof console, "log" | "error">;
|
|
@@ -1059,4 +1222,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
|
|
|
1059
1222
|
*/
|
|
1060
1223
|
declare function smoke(options: SmokeOptions): Promise<void>;
|
|
1061
1224
|
|
|
1062
|
-
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 ConnectGitHubSecuritySourceOptions, 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 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, connectGitHubSecuritySource, describeProblem, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, invocationPath, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, prepareCodeImages, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob, surfacePaths, validateInvocation };
|
|
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 };
|
package/dist/index.js
CHANGED
|
@@ -16,8 +16,11 @@ import {
|
|
|
16
16
|
calendarServiceConfig,
|
|
17
17
|
calendarStatus,
|
|
18
18
|
codeConnect,
|
|
19
|
+
configDiff,
|
|
20
|
+
configPlan,
|
|
19
21
|
connectGitHubSecuritySource,
|
|
20
22
|
describeProblem,
|
|
23
|
+
desiredRegistryState,
|
|
21
24
|
disconnectGitHubSecuritySource,
|
|
22
25
|
doctor,
|
|
23
26
|
exitCodeFor,
|
|
@@ -37,6 +40,7 @@ import {
|
|
|
37
40
|
prepareCodeImages,
|
|
38
41
|
printCapabilities,
|
|
39
42
|
provision,
|
|
43
|
+
reconcileConfig,
|
|
40
44
|
redactSecrets,
|
|
41
45
|
repositoryFromGitRemote,
|
|
42
46
|
runCli,
|
|
@@ -49,7 +53,7 @@ import {
|
|
|
49
53
|
startHostedSecurityJob,
|
|
50
54
|
surfacePaths,
|
|
51
55
|
validateInvocation
|
|
52
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-2AFAXLKE.js";
|
|
53
57
|
export {
|
|
54
58
|
AGENT_HARNESSES,
|
|
55
59
|
CAPABILITIES,
|
|
@@ -67,8 +71,11 @@ export {
|
|
|
67
71
|
calendarServiceConfig,
|
|
68
72
|
calendarStatus,
|
|
69
73
|
codeConnect,
|
|
74
|
+
configDiff,
|
|
75
|
+
configPlan,
|
|
70
76
|
connectGitHubSecuritySource,
|
|
71
77
|
describeProblem,
|
|
78
|
+
desiredRegistryState,
|
|
72
79
|
disconnectGitHubSecuritySource,
|
|
73
80
|
doctor,
|
|
74
81
|
exitCodeFor,
|
|
@@ -88,6 +95,7 @@ export {
|
|
|
88
95
|
prepareCodeImages,
|
|
89
96
|
printCapabilities,
|
|
90
97
|
provision,
|
|
98
|
+
reconcileConfig,
|
|
91
99
|
redactSecrets,
|
|
92
100
|
repositoryFromGitRemote,
|
|
93
101
|
runCli,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odla-ai/cli",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.22",
|
|
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",
|