@odla-ai/cli 0.17.1 → 0.19.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" | "app:code:host:connect" | "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" | "platform:runbook:write";
7
7
  /** Inputs for obtaining one short-lived, exact-scope platform device grant. */
8
8
  interface ScopedPlatformTokenOptions {
9
9
  platform: string;
@@ -15,6 +15,15 @@ interface ScopedPlatformTokenOptions {
15
15
  stdout?: Pick<typeof console, "log">;
16
16
  openApprovalUrl?: (url: string) => Promise<void>;
17
17
  tokenFile?: string;
18
+ /**
19
+ * Project root the grant cache hangs off, mirroring how the developer token
20
+ * resolves `.odla/dev-token.json` against the loaded config's `rootDir`.
21
+ * Callers with a project should pass `cfg.rootDir`: without it the cache
22
+ * follows the shell's working directory rather than the project, so the same
23
+ * command run from a subdirectory reads a different cache — and writes a
24
+ * credential file wherever it happened to be standing.
25
+ */
26
+ rootDir?: string;
18
27
  /** Keep the shown-once grant only in memory. */
19
28
  cache?: boolean;
20
29
  /** Human-visible purpose recorded on the exact handshake. */
@@ -165,6 +174,9 @@ interface CliDependencies {
165
174
  confirm?: (message: string) => Promise<boolean>;
166
175
  stdout?: Pick<typeof console, "log" | "error">;
167
176
  codeConnect?: (options: CodeConnectOptions) => Promise<void>;
177
+ /** Runs git in the working directory; injected so `runbook impact` can be
178
+ * driven over a fixed diff instead of whatever the checkout happens to be. */
179
+ runGit?: (args: string[]) => string;
168
180
  }
169
181
  /**
170
182
  * Parse CLI arguments and dispatch the matching odla command.
@@ -180,7 +192,7 @@ interface CliDependencies {
180
192
  declare function runCli(argv?: string[], dependencies?: CliDependencies): Promise<void>;
181
193
 
182
194
  /** Hosted platform purposes whose provider, model, and budgets an admin may route. */
183
- declare const SYSTEM_AI_PURPOSES: readonly ["o11y.triage", "security.discovery", "security.validation"];
195
+ declare const SYSTEM_AI_PURPOSES: readonly ["o11y.triage", "security.discovery", "security.validation", "runbook.answer"];
184
196
  /** One catalog-validated, platform-funded System AI purpose. */
185
197
  type SystemAiPurpose = (typeof SYSTEM_AI_PURPOSES)[number];
186
198
 
@@ -242,6 +254,46 @@ type Output = Pick<typeof console, "log">;
242
254
  /** Print the stable responsibility boundary for humans or agent tooling. */
243
255
  declare function printCapabilities(json?: boolean, out?: Output): void;
244
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
+
245
297
  declare const CALENDAR_STATES: readonly ["not_connected", "authorizing", "healthy", "degraded", "disconnected", "failed"];
246
298
  /** Connection lifecycle reported by the registry; mirrors the platform's
247
299
  * calendar states. `degraded` means connected but re-consent is required. */
@@ -990,4 +1042,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
990
1042
  */
991
1043
  declare function smoke(options: SmokeOptions): Promise<void>;
992
1044
 
993
- 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
@@ -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" | "app:code:host:connect" | "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" | "platform:runbook:write";
7
7
  /** Inputs for obtaining one short-lived, exact-scope platform device grant. */
8
8
  interface ScopedPlatformTokenOptions {
9
9
  platform: string;
@@ -15,6 +15,15 @@ interface ScopedPlatformTokenOptions {
15
15
  stdout?: Pick<typeof console, "log">;
16
16
  openApprovalUrl?: (url: string) => Promise<void>;
17
17
  tokenFile?: string;
18
+ /**
19
+ * Project root the grant cache hangs off, mirroring how the developer token
20
+ * resolves `.odla/dev-token.json` against the loaded config's `rootDir`.
21
+ * Callers with a project should pass `cfg.rootDir`: without it the cache
22
+ * follows the shell's working directory rather than the project, so the same
23
+ * command run from a subdirectory reads a different cache — and writes a
24
+ * credential file wherever it happened to be standing.
25
+ */
26
+ rootDir?: string;
18
27
  /** Keep the shown-once grant only in memory. */
19
28
  cache?: boolean;
20
29
  /** Human-visible purpose recorded on the exact handshake. */
@@ -165,6 +174,9 @@ interface CliDependencies {
165
174
  confirm?: (message: string) => Promise<boolean>;
166
175
  stdout?: Pick<typeof console, "log" | "error">;
167
176
  codeConnect?: (options: CodeConnectOptions) => Promise<void>;
177
+ /** Runs git in the working directory; injected so `runbook impact` can be
178
+ * driven over a fixed diff instead of whatever the checkout happens to be. */
179
+ runGit?: (args: string[]) => string;
168
180
  }
169
181
  /**
170
182
  * Parse CLI arguments and dispatch the matching odla command.
@@ -180,7 +192,7 @@ interface CliDependencies {
180
192
  declare function runCli(argv?: string[], dependencies?: CliDependencies): Promise<void>;
181
193
 
182
194
  /** Hosted platform purposes whose provider, model, and budgets an admin may route. */
183
- declare const SYSTEM_AI_PURPOSES: readonly ["o11y.triage", "security.discovery", "security.validation"];
195
+ declare const SYSTEM_AI_PURPOSES: readonly ["o11y.triage", "security.discovery", "security.validation", "runbook.answer"];
184
196
  /** One catalog-validated, platform-funded System AI purpose. */
185
197
  type SystemAiPurpose = (typeof SYSTEM_AI_PURPOSES)[number];
186
198
 
@@ -242,6 +254,46 @@ type Output = Pick<typeof console, "log">;
242
254
  /** Print the stable responsibility boundary for humans or agent tooling. */
243
255
  declare function printCapabilities(json?: boolean, out?: Output): void;
244
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
+
245
297
  declare const CALENDAR_STATES: readonly ["not_connected", "authorizing", "healthy", "degraded", "disconnected", "failed"];
246
298
  /** Connection lifecycle reported by the registry; mirrors the platform's
247
299
  * calendar states. `degraded` means connected but re-consent is required. */
@@ -990,4 +1042,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
990
1042
  */
991
1043
  declare function smoke(options: SmokeOptions): Promise<void>;
992
1044
 
993
- 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
- } from "./chunk-2UKO2NED.js";
48
+ startHostedSecurityJob,
49
+ surfacePaths,
50
+ validateInvocation
51
+ } from "./chunk-QMA5OGKQ.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