@odla-ai/cli 0.18.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -14
- package/dist/bin.cjs +243 -14
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +1 -1
- package/dist/{chunk-TOSMNGGQ.js → chunk-I4XURPUK.js} +258 -15
- package/dist/chunk-I4XURPUK.js.map +1 -0
- package/dist/index.cjs +264 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -1
- package/dist/index.d.ts +41 -1
- package/dist/index.js +13 -3
- package/package.json +1 -1
- package/skills/odla/SKILL.md +14 -0
- package/dist/chunk-TOSMNGGQ.js.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -254,6 +254,46 @@ type Output = Pick<typeof console, "log">;
|
|
|
254
254
|
/** Print the stable responsibility boundary for humans or agent tooling. */
|
|
255
255
|
declare function printCapabilities(json?: boolean, out?: Output): void;
|
|
256
256
|
|
|
257
|
+
/** A node in the invocation tree. An empty node is a leaf: everything after it
|
|
258
|
+
* is arguments, not sub-actions, and is not validated here. */
|
|
259
|
+
interface SurfaceNode {
|
|
260
|
+
readonly [word: string]: SurfaceNode;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Every invocation the CLI dispatches, as a tree of words.
|
|
264
|
+
*
|
|
265
|
+
* Keyed by the word at that position; the value is what may follow it. A leaf
|
|
266
|
+
* (`{}`) means the command takes arguments from there on, so `odla-ai runbook
|
|
267
|
+
* get release` validates `runbook get` and leaves `release` alone.
|
|
268
|
+
*/
|
|
269
|
+
declare const COMMAND_SURFACE: SurfaceNode;
|
|
270
|
+
/** The words accepted at a path, sorted for stable messages. */
|
|
271
|
+
declare function acceptedAfter(path: readonly string[]): string[];
|
|
272
|
+
/** One rejected invocation: where it went wrong and what was accepted there. */
|
|
273
|
+
interface InvocationProblem {
|
|
274
|
+
/** The words that were valid, joined — `runbook` for `runbook imapct`. */
|
|
275
|
+
validPrefix: string;
|
|
276
|
+
/** The word that was not accepted. */
|
|
277
|
+
word: string;
|
|
278
|
+
/** What could have appeared instead. */
|
|
279
|
+
accepted: string[];
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Check an invocation's words against the surface.
|
|
283
|
+
*
|
|
284
|
+
* Returns null when the words name a real command path. Validation stops at the
|
|
285
|
+
* first leaf — arguments are not sub-actions — so an unknown *argument* is never
|
|
286
|
+
* reported as an unknown command.
|
|
287
|
+
*/
|
|
288
|
+
declare function validateInvocation(words: readonly string[]): InvocationProblem | null;
|
|
289
|
+
/** Render a problem as the sentence a dispatcher throws, so the message a user
|
|
290
|
+
* sees and the message a gate prints come from the same place. */
|
|
291
|
+
declare function describeProblem(problem: InvocationProblem): string;
|
|
292
|
+
/** Every complete path through the surface, as word arrays. Used by the test
|
|
293
|
+
* that drives each one through the real dispatcher, and by the published-surface
|
|
294
|
+
* gate to know what a version is expected to carry. */
|
|
295
|
+
declare function surfacePaths(node?: SurfaceNode, prefix?: readonly string[]): string[][];
|
|
296
|
+
|
|
257
297
|
declare const CALENDAR_STATES: readonly ["not_connected", "authorizing", "healthy", "degraded", "disconnected", "failed"];
|
|
258
298
|
/** Connection lifecycle reported by the registry; mirrors the platform's
|
|
259
299
|
* calendar states. `degraded` means connected but re-consent is required. */
|
|
@@ -1002,4 +1042,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
|
|
|
1002
1042
|
*/
|
|
1003
1043
|
declare function smoke(options: SmokeOptions): Promise<void>;
|
|
1004
1044
|
|
|
1005
|
-
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, prepareCodeImages, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob };
|
|
1045
|
+
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, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, prepareCodeImages, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob, surfacePaths, validateInvocation };
|
package/dist/index.d.ts
CHANGED
|
@@ -254,6 +254,46 @@ type Output = Pick<typeof console, "log">;
|
|
|
254
254
|
/** Print the stable responsibility boundary for humans or agent tooling. */
|
|
255
255
|
declare function printCapabilities(json?: boolean, out?: Output): void;
|
|
256
256
|
|
|
257
|
+
/** A node in the invocation tree. An empty node is a leaf: everything after it
|
|
258
|
+
* is arguments, not sub-actions, and is not validated here. */
|
|
259
|
+
interface SurfaceNode {
|
|
260
|
+
readonly [word: string]: SurfaceNode;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Every invocation the CLI dispatches, as a tree of words.
|
|
264
|
+
*
|
|
265
|
+
* Keyed by the word at that position; the value is what may follow it. A leaf
|
|
266
|
+
* (`{}`) means the command takes arguments from there on, so `odla-ai runbook
|
|
267
|
+
* get release` validates `runbook get` and leaves `release` alone.
|
|
268
|
+
*/
|
|
269
|
+
declare const COMMAND_SURFACE: SurfaceNode;
|
|
270
|
+
/** The words accepted at a path, sorted for stable messages. */
|
|
271
|
+
declare function acceptedAfter(path: readonly string[]): string[];
|
|
272
|
+
/** One rejected invocation: where it went wrong and what was accepted there. */
|
|
273
|
+
interface InvocationProblem {
|
|
274
|
+
/** The words that were valid, joined — `runbook` for `runbook imapct`. */
|
|
275
|
+
validPrefix: string;
|
|
276
|
+
/** The word that was not accepted. */
|
|
277
|
+
word: string;
|
|
278
|
+
/** What could have appeared instead. */
|
|
279
|
+
accepted: string[];
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Check an invocation's words against the surface.
|
|
283
|
+
*
|
|
284
|
+
* Returns null when the words name a real command path. Validation stops at the
|
|
285
|
+
* first leaf — arguments are not sub-actions — so an unknown *argument* is never
|
|
286
|
+
* reported as an unknown command.
|
|
287
|
+
*/
|
|
288
|
+
declare function validateInvocation(words: readonly string[]): InvocationProblem | null;
|
|
289
|
+
/** Render a problem as the sentence a dispatcher throws, so the message a user
|
|
290
|
+
* sees and the message a gate prints come from the same place. */
|
|
291
|
+
declare function describeProblem(problem: InvocationProblem): string;
|
|
292
|
+
/** Every complete path through the surface, as word arrays. Used by the test
|
|
293
|
+
* that drives each one through the real dispatcher, and by the published-surface
|
|
294
|
+
* gate to know what a version is expected to carry. */
|
|
295
|
+
declare function surfacePaths(node?: SurfaceNode, prefix?: readonly string[]): string[][];
|
|
296
|
+
|
|
257
297
|
declare const CALENDAR_STATES: readonly ["not_connected", "authorizing", "healthy", "degraded", "disconnected", "failed"];
|
|
258
298
|
/** Connection lifecycle reported by the registry; mirrors the platform's
|
|
259
299
|
* calendar states. `degraded` means connected but re-consent is required. */
|
|
@@ -1002,4 +1042,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
|
|
|
1002
1042
|
*/
|
|
1003
1043
|
declare function smoke(options: SmokeOptions): Promise<void>;
|
|
1004
1044
|
|
|
1005
|
-
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, prepareCodeImages, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob };
|
|
1045
|
+
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, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, prepareCodeImages, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runCodeRuntime, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob, surfacePaths, validateInvocation };
|
package/dist/index.js
CHANGED
|
@@ -4,8 +4,10 @@ import {
|
|
|
4
4
|
CAPABILITIES,
|
|
5
5
|
CODE_BUILD_RECIPES,
|
|
6
6
|
CODE_PI_IMAGE,
|
|
7
|
+
COMMAND_SURFACE,
|
|
7
8
|
GOOGLE_CALENDAR_EVENTS_SCOPE,
|
|
8
9
|
SYSTEM_AI_PURPOSES,
|
|
10
|
+
acceptedAfter,
|
|
9
11
|
adminAi,
|
|
10
12
|
calendarBookingPageUrl,
|
|
11
13
|
calendarCalendars,
|
|
@@ -15,6 +17,7 @@ import {
|
|
|
15
17
|
calendarStatus,
|
|
16
18
|
codeConnect,
|
|
17
19
|
connectGitHubSecuritySource,
|
|
20
|
+
describeProblem,
|
|
18
21
|
disconnectGitHubSecuritySource,
|
|
19
22
|
doctor,
|
|
20
23
|
exitCodeFor,
|
|
@@ -42,15 +45,19 @@ import {
|
|
|
42
45
|
secretsSet,
|
|
43
46
|
secretsSetClerkKey,
|
|
44
47
|
smoke,
|
|
45
|
-
startHostedSecurityJob
|
|
46
|
-
|
|
48
|
+
startHostedSecurityJob,
|
|
49
|
+
surfacePaths,
|
|
50
|
+
validateInvocation
|
|
51
|
+
} from "./chunk-I4XURPUK.js";
|
|
47
52
|
export {
|
|
48
53
|
AGENT_HARNESSES,
|
|
49
54
|
CAPABILITIES,
|
|
50
55
|
CODE_BUILD_RECIPES,
|
|
51
56
|
CODE_PI_IMAGE,
|
|
57
|
+
COMMAND_SURFACE,
|
|
52
58
|
GOOGLE_CALENDAR_EVENTS_SCOPE,
|
|
53
59
|
SYSTEM_AI_PURPOSES,
|
|
60
|
+
acceptedAfter,
|
|
54
61
|
adminAi,
|
|
55
62
|
calendarBookingPageUrl,
|
|
56
63
|
calendarCalendars,
|
|
@@ -60,6 +67,7 @@ export {
|
|
|
60
67
|
calendarStatus,
|
|
61
68
|
codeConnect,
|
|
62
69
|
connectGitHubSecuritySource,
|
|
70
|
+
describeProblem,
|
|
63
71
|
disconnectGitHubSecuritySource,
|
|
64
72
|
doctor,
|
|
65
73
|
exitCodeFor,
|
|
@@ -87,6 +95,8 @@ export {
|
|
|
87
95
|
secretsSet,
|
|
88
96
|
secretsSetClerkKey,
|
|
89
97
|
smoke,
|
|
90
|
-
startHostedSecurityJob
|
|
98
|
+
startHostedSecurityJob,
|
|
99
|
+
surfacePaths,
|
|
100
|
+
validateInvocation
|
|
91
101
|
};
|
|
92
102
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odla-ai/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.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",
|
package/skills/odla/SKILL.md
CHANGED
|
@@ -214,6 +214,20 @@ the database, so no build, test, or CI gate in the repository can see it drift
|
|
|
214
214
|
from your code. Reread what it names and fix any step your change made wrong,
|
|
215
215
|
in the same piece of work.
|
|
216
216
|
|
|
217
|
+
The other direction — are the runbooks themselves still true?
|
|
218
|
+
|
|
219
|
+
```cmd
|
|
220
|
+
npx @odla-ai/cli runbook lint
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Every `odla-ai …` command the runbooks name is held against this CLI's real
|
|
224
|
+
command surface, and against the minimum versions each runbook declares. Because
|
|
225
|
+
a runbook is edited without a release, its text can name a command only a newer
|
|
226
|
+
package has; a runbook records that as `requires` (`@odla-ai/cli@0.18.0`), and
|
|
227
|
+
`runbook get` warns on stderr when yours is older. If you add a command and then
|
|
228
|
+
tell a runbook to use it, set `requires` in the same edit — otherwise the first
|
|
229
|
+
reader on an older CLI gets an "unknown action" error instead of an explanation.
|
|
230
|
+
|
|
217
231
|
Found a wrong step? Fix an app runbook directly. For a platform runbook,
|
|
218
232
|
`runbook edit` requests an admin-approved capability — a plain handshake token is
|
|
219
233
|
never admin, and `npx @odla-ai/cli whoami` tells you what you hold.
|