@odla-ai/cli 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -3,7 +3,7 @@ import { HostedSecurityJob, GitHubConnectionStatus, GitHubSecuritySource, Hosted
3
3
  export { GitHubConnectionAttempt, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityCounts, HostedSecurityCoverage, HostedSecurityIntent, HostedSecurityIntentResponse, HostedSecurityJob, HostedSecurityJobStatus, HostedSecurityPlan, HostedSecurityPlanRoute, HostedSecurityReport, HostedSecurityReportFinding, HostedSecurityRoute } from '@odla-ai/security/hosted';
4
4
 
5
5
  /** One exact platform scope obtainable through the admin device flow. */
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:code:host:connect" | "platform:security:self";
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" | "app:code:host:connect" | "platform:code:host:connect" | "platform:security:self";
7
7
  /** Inputs for obtaining one short-lived, exact-scope platform device grant. */
8
8
  interface ScopedPlatformTokenOptions {
9
9
  platform: string;
@@ -23,10 +23,31 @@ interface ScopedPlatformTokenOptions {
23
23
  /** Obtain/cache one exact platform scope without granting ambient admin. */
24
24
  declare function getScopedPlatformToken(options: ScopedPlatformTokenOptions): Promise<string>;
25
25
 
26
+ /** Immutable local-checkout attestation advertised by a connected terminal. */
27
+ interface CodeLocalSourceDescriptor {
28
+ kind: "local_checkout";
29
+ repository: string;
30
+ headCommitSha: string;
31
+ trustedBaseDigest: `sha256:${string}`;
32
+ developerPatchDigest: `sha256:${string}`;
33
+ snapshotDigest: `sha256:${string}`;
34
+ modified: boolean;
35
+ fileCount: number;
36
+ byteCount: number;
37
+ capturedAt: number;
38
+ }
39
+
40
+ interface PreparedCodeLocalSource {
41
+ descriptor: CodeLocalSourceDescriptor;
42
+ trustedBaseDir: string;
43
+ sourceDir: string;
44
+ cleanup(): Promise<void>;
45
+ }
46
+ /** Freeze the local Git tree and exact commit base before any approval request. */
47
+ declare function prepareCodeLocalSource(cwd: string, repository: string, readHead?: (cwd: string) => Promise<string>): Promise<PreparedCodeLocalSource>;
48
+
26
49
  /** Immutable, release-owned Pi adapter. No registry credential enters it. */
27
- declare const CODE_PI_IMAGE = "ghcr.io/cory/odla-pi-agent@sha256:713db58428bc05cb486167c5747de8fd826669c9b283ff78e0139ac194c3d058";
28
- /** Supported local isolation engines for an odla Code host runtime. */
29
- type CodeContainerEngine = "container" | "podman" | "docker";
50
+ declare const CODE_PI_IMAGE = "ghcr.io/cory/odla-pi-agent@sha256:e7858b4f0291543171b2659b47c5d00f97acc4767cafd9b74ae5228899e0cde4";
30
51
  /** Immutable CaMeL-registered build recipe available to an agent container. */
31
52
  interface CodeBuildRule {
32
53
  id: string;
@@ -39,6 +60,12 @@ interface CodeBuildRule {
39
60
  pids?: number;
40
61
  tmpfsBytes?: number;
41
62
  }
63
+ /** Initial dependency-free dogfood recipe. App-registered catalogs can replace
64
+ * this once their owner-visible registration contract exists. */
65
+ declare const CODE_BUILD_RECIPES: readonly CodeBuildRule[];
66
+
67
+ /** Supported local isolation engines for an odla Code host runtime. */
68
+ type CodeContainerEngine = "container" | "podman" | "docker";
42
69
  /** Bounded host facts reported on each outbound Code control-plane heartbeat. */
43
70
  interface CodeHostCapabilities {
44
71
  protocolVersion: 1;
@@ -47,10 +74,16 @@ interface CodeHostCapabilities {
47
74
  engines: CodeContainerEngine[];
48
75
  cpuCount: number;
49
76
  memoryBytes: number;
77
+ source: CodeLocalSourceDescriptor;
78
+ images: {
79
+ ready: true;
80
+ pi: string;
81
+ recipes: Array<{
82
+ id: string;
83
+ image: string;
84
+ }>;
85
+ };
50
86
  }
51
- /** Initial CaMeL-registered clean-build rule. App-specific recipes can replace
52
- * this only after their own owner-visible registration flow exists. */
53
- declare const CODE_BUILD_RECIPES: readonly CodeBuildRule[];
54
87
  type Output$1 = Pick<typeof console, "log" | "error">;
55
88
  /** Inputs for enrolling the current checkout and running its foreground Pi host. */
56
89
  interface CodeConnectOptions {
@@ -58,6 +91,10 @@ interface CodeConnectOptions {
58
91
  /** Repository root. Defaults to the current directory. */
59
92
  cwd?: string;
60
93
  env?: string;
94
+ /** Explicit Studio control-plane origin; overrides config and environment. */
95
+ platform?: string;
96
+ /** Explicit app target; useful before or without odla.config.mjs. */
97
+ appId?: string;
61
98
  email?: string;
62
99
  open?: boolean;
63
100
  name?: string;
@@ -75,6 +112,9 @@ interface CodeConnectOptions {
75
112
  selectEngine?: (requested: CodeContainerEngine | "auto") => Promise<CodeContainerEngine>;
76
113
  runRuntime?: (input: CodeRuntimeInput) => Promise<void>;
77
114
  readGitOrigin?: (cwd: string) => Promise<string>;
115
+ readGitHead?: (cwd: string) => Promise<string>;
116
+ prepareImages?: (engine: CodeContainerEngine, images: readonly string[]) => Promise<void>;
117
+ prepareLocalSource?: typeof prepareCodeLocalSource;
78
118
  }
79
119
  /** Authority and runtime boundaries used after a Code host enrollment succeeds. */
80
120
  interface CodeRuntimeInput {
@@ -87,6 +127,11 @@ interface CodeRuntimeInput {
87
127
  signal?: AbortSignal;
88
128
  stdout: Output$1;
89
129
  fetch?: typeof fetch;
130
+ localSource?: {
131
+ descriptor: CodeLocalSourceDescriptor;
132
+ trustedBaseDir: string;
133
+ sourceDir: string;
134
+ };
90
135
  }
91
136
  /** Enroll this machine from an odla project and keep the embedded Pi runtime
92
137
  * online. Both the approval grant and host credential hashes are stored in
@@ -748,8 +793,9 @@ interface HostedSecurityRequestOptions {
748
793
  interface ConnectGitHubSecuritySourceOptions extends HostedSecurityRequestOptions {
749
794
  appId: string;
750
795
  env: string;
751
- /** Exact owner/name repository requested before GitHub approval. */
752
- repository: string;
796
+ /** Optional owner/name cross-check. The server always scans the app's one
797
+ * Studio-connected repository; a mismatch fails the connect. */
798
+ repository?: string;
753
799
  /** false prints but does not launch the install URL. Defaults to true. */
754
800
  open?: boolean;
755
801
  openInstallUrl?: (url: string) => Promise<void>;
@@ -932,4 +978,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
932
978
  */
933
979
  declare function smoke(options: SmokeOptions): Promise<void>;
934
980
 
935
- export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, type AvailableGoogleCalendar, CAPABILITIES, CODE_BUILD_RECIPES, CODE_PI_IMAGE, type CalendarConfig, type CalendarConnectionState, type CalendarLifecycleOptions, type CalendarServiceConfig, type CalendarStatus, type CliDependencies, type CodeBuildRule, type CodeConnectOptions, type CodeContainerEngine, type CodeHostCapabilities, 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 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 SystemAiPurpose, adminAi, calendarBookingPageUrl, calendarCalendars, calendarConnect, calendarDisconnect, calendarServiceConfig, calendarStatus, codeConnect, connectGitHubSecuritySource, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob };
981
+ export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, type AvailableGoogleCalendar, CAPABILITIES, CODE_BUILD_RECIPES, CODE_PI_IMAGE, 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 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 SystemAiPurpose, adminAi, calendarBookingPageUrl, calendarCalendars, calendarConnect, calendarDisconnect, calendarServiceConfig, calendarStatus, codeConnect, connectGitHubSecuritySource, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob };
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { HostedSecurityJob, GitHubConnectionStatus, GitHubSecuritySource, Hosted
3
3
  export { GitHubConnectionAttempt, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityCounts, HostedSecurityCoverage, HostedSecurityIntent, HostedSecurityIntentResponse, HostedSecurityJob, HostedSecurityJobStatus, HostedSecurityPlan, HostedSecurityPlanRoute, HostedSecurityReport, HostedSecurityReportFinding, HostedSecurityRoute } from '@odla-ai/security/hosted';
4
4
 
5
5
  /** One exact platform scope obtainable through the admin device flow. */
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:code:host:connect" | "platform:security:self";
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" | "app:code:host:connect" | "platform:code:host:connect" | "platform:security:self";
7
7
  /** Inputs for obtaining one short-lived, exact-scope platform device grant. */
8
8
  interface ScopedPlatformTokenOptions {
9
9
  platform: string;
@@ -23,10 +23,31 @@ interface ScopedPlatformTokenOptions {
23
23
  /** Obtain/cache one exact platform scope without granting ambient admin. */
24
24
  declare function getScopedPlatformToken(options: ScopedPlatformTokenOptions): Promise<string>;
25
25
 
26
+ /** Immutable local-checkout attestation advertised by a connected terminal. */
27
+ interface CodeLocalSourceDescriptor {
28
+ kind: "local_checkout";
29
+ repository: string;
30
+ headCommitSha: string;
31
+ trustedBaseDigest: `sha256:${string}`;
32
+ developerPatchDigest: `sha256:${string}`;
33
+ snapshotDigest: `sha256:${string}`;
34
+ modified: boolean;
35
+ fileCount: number;
36
+ byteCount: number;
37
+ capturedAt: number;
38
+ }
39
+
40
+ interface PreparedCodeLocalSource {
41
+ descriptor: CodeLocalSourceDescriptor;
42
+ trustedBaseDir: string;
43
+ sourceDir: string;
44
+ cleanup(): Promise<void>;
45
+ }
46
+ /** Freeze the local Git tree and exact commit base before any approval request. */
47
+ declare function prepareCodeLocalSource(cwd: string, repository: string, readHead?: (cwd: string) => Promise<string>): Promise<PreparedCodeLocalSource>;
48
+
26
49
  /** Immutable, release-owned Pi adapter. No registry credential enters it. */
27
- declare const CODE_PI_IMAGE = "ghcr.io/cory/odla-pi-agent@sha256:713db58428bc05cb486167c5747de8fd826669c9b283ff78e0139ac194c3d058";
28
- /** Supported local isolation engines for an odla Code host runtime. */
29
- type CodeContainerEngine = "container" | "podman" | "docker";
50
+ declare const CODE_PI_IMAGE = "ghcr.io/cory/odla-pi-agent@sha256:e7858b4f0291543171b2659b47c5d00f97acc4767cafd9b74ae5228899e0cde4";
30
51
  /** Immutable CaMeL-registered build recipe available to an agent container. */
31
52
  interface CodeBuildRule {
32
53
  id: string;
@@ -39,6 +60,12 @@ interface CodeBuildRule {
39
60
  pids?: number;
40
61
  tmpfsBytes?: number;
41
62
  }
63
+ /** Initial dependency-free dogfood recipe. App-registered catalogs can replace
64
+ * this once their owner-visible registration contract exists. */
65
+ declare const CODE_BUILD_RECIPES: readonly CodeBuildRule[];
66
+
67
+ /** Supported local isolation engines for an odla Code host runtime. */
68
+ type CodeContainerEngine = "container" | "podman" | "docker";
42
69
  /** Bounded host facts reported on each outbound Code control-plane heartbeat. */
43
70
  interface CodeHostCapabilities {
44
71
  protocolVersion: 1;
@@ -47,10 +74,16 @@ interface CodeHostCapabilities {
47
74
  engines: CodeContainerEngine[];
48
75
  cpuCount: number;
49
76
  memoryBytes: number;
77
+ source: CodeLocalSourceDescriptor;
78
+ images: {
79
+ ready: true;
80
+ pi: string;
81
+ recipes: Array<{
82
+ id: string;
83
+ image: string;
84
+ }>;
85
+ };
50
86
  }
51
- /** Initial CaMeL-registered clean-build rule. App-specific recipes can replace
52
- * this only after their own owner-visible registration flow exists. */
53
- declare const CODE_BUILD_RECIPES: readonly CodeBuildRule[];
54
87
  type Output$1 = Pick<typeof console, "log" | "error">;
55
88
  /** Inputs for enrolling the current checkout and running its foreground Pi host. */
56
89
  interface CodeConnectOptions {
@@ -58,6 +91,10 @@ interface CodeConnectOptions {
58
91
  /** Repository root. Defaults to the current directory. */
59
92
  cwd?: string;
60
93
  env?: string;
94
+ /** Explicit Studio control-plane origin; overrides config and environment. */
95
+ platform?: string;
96
+ /** Explicit app target; useful before or without odla.config.mjs. */
97
+ appId?: string;
61
98
  email?: string;
62
99
  open?: boolean;
63
100
  name?: string;
@@ -75,6 +112,9 @@ interface CodeConnectOptions {
75
112
  selectEngine?: (requested: CodeContainerEngine | "auto") => Promise<CodeContainerEngine>;
76
113
  runRuntime?: (input: CodeRuntimeInput) => Promise<void>;
77
114
  readGitOrigin?: (cwd: string) => Promise<string>;
115
+ readGitHead?: (cwd: string) => Promise<string>;
116
+ prepareImages?: (engine: CodeContainerEngine, images: readonly string[]) => Promise<void>;
117
+ prepareLocalSource?: typeof prepareCodeLocalSource;
78
118
  }
79
119
  /** Authority and runtime boundaries used after a Code host enrollment succeeds. */
80
120
  interface CodeRuntimeInput {
@@ -87,6 +127,11 @@ interface CodeRuntimeInput {
87
127
  signal?: AbortSignal;
88
128
  stdout: Output$1;
89
129
  fetch?: typeof fetch;
130
+ localSource?: {
131
+ descriptor: CodeLocalSourceDescriptor;
132
+ trustedBaseDir: string;
133
+ sourceDir: string;
134
+ };
90
135
  }
91
136
  /** Enroll this machine from an odla project and keep the embedded Pi runtime
92
137
  * online. Both the approval grant and host credential hashes are stored in
@@ -748,8 +793,9 @@ interface HostedSecurityRequestOptions {
748
793
  interface ConnectGitHubSecuritySourceOptions extends HostedSecurityRequestOptions {
749
794
  appId: string;
750
795
  env: string;
751
- /** Exact owner/name repository requested before GitHub approval. */
752
- repository: string;
796
+ /** Optional owner/name cross-check. The server always scans the app's one
797
+ * Studio-connected repository; a mismatch fails the connect. */
798
+ repository?: string;
753
799
  /** false prints but does not launch the install URL. Defaults to true. */
754
800
  open?: boolean;
755
801
  openInstallUrl?: (url: string) => Promise<void>;
@@ -932,4 +978,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
932
978
  */
933
979
  declare function smoke(options: SmokeOptions): Promise<void>;
934
980
 
935
- export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, type AvailableGoogleCalendar, CAPABILITIES, CODE_BUILD_RECIPES, CODE_PI_IMAGE, type CalendarConfig, type CalendarConnectionState, type CalendarLifecycleOptions, type CalendarServiceConfig, type CalendarStatus, type CliDependencies, type CodeBuildRule, type CodeConnectOptions, type CodeContainerEngine, type CodeHostCapabilities, 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 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 SystemAiPurpose, adminAi, calendarBookingPageUrl, calendarCalendars, calendarConnect, calendarDisconnect, calendarServiceConfig, calendarStatus, codeConnect, connectGitHubSecuritySource, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob };
981
+ export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, type AvailableGoogleCalendar, CAPABILITIES, CODE_BUILD_RECIPES, CODE_PI_IMAGE, 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 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 SystemAiPurpose, adminAi, calendarBookingPageUrl, calendarCalendars, calendarConnect, calendarDisconnect, calendarServiceConfig, calendarStatus, codeConnect, connectGitHubSecuritySource, disconnectGitHubSecuritySource, doctor, exitCodeFor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob };
package/dist/index.js CHANGED
@@ -42,7 +42,7 @@ import {
42
42
  secretsSetClerkKey,
43
43
  smoke,
44
44
  startHostedSecurityJob
45
- } from "./chunk-3AC74CD2.js";
45
+ } from "./chunk-E3CCYDIT.js";
46
46
  export {
47
47
  AGENT_HARNESSES,
48
48
  CAPABILITIES,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odla-ai/cli",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
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",
@@ -47,6 +47,13 @@ own key. Treat first-prod provision/deploy as the usual human checkpoint
47
47
  (`provision --dry-run` review, then `provision --yes --push-secrets`), and never
48
48
  rotate another owner's credentials on their behalf.
49
49
 
50
+ ## If provision says "you are not an owner"
51
+
52
+ provision checks tenant admin access up front and aborts **before** anything is
53
+ minted or written — no credential lands on disk, in the vault, or in a Worker.
54
+ It means the registry doesn't list you as an owner yet: ask an existing owner
55
+ to run `npx @odla-ai/cli app owners add <your-email>`, then re-run provision.
56
+
50
57
  ## If a co-owner loses their local key
51
58
 
52
59
  Keys are shown once and stored hashed — there is no reveal. Re-mint instead:
@@ -11,8 +11,8 @@ opens the review page in interactive terminals; loading it alone is inert.
11
11
 
12
12
  ## Steps
13
13
 
14
- 1. Require `npm view @odla-ai/cli@0.13.0 version` to succeed, then run
15
- `npm i -D --save-exact @odla-ai/cli@0.13.0` and `npm i @odla-ai/db`.
14
+ 1. Require `npm view @odla-ai/cli@0.15.0 version` to succeed, then run
15
+ `npm i -D --save-exact @odla-ai/cli@0.15.0` and `npm i @odla-ai/db`.
16
16
  2. `npx @odla-ai/cli init --app-id <id> --name "<Name>" --env dev --services db`
17
17
  Review `odla.config.mjs`. Keep `envs: ["dev"]` — prod is Phase 5. Set
18
18
  `links.dev` to the URL the Phase 1 `wrangler deploy` **actually printed** —