@odla-ai/cli 0.7.1 → 0.9.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 +90 -4
- package/dist/bin.cjs +1113 -257
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +1 -1
- package/dist/{chunk-643B2AKG.js → chunk-MJYQ7YDH.js} +1075 -195
- package/dist/chunk-MJYQ7YDH.js.map +1 -0
- package/dist/index.cjs +1156 -259
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +188 -26
- package/dist/index.d.ts +188 -26
- package/dist/index.js +33 -3
- package/llms.txt +286 -33
- package/package.json +3 -3
- package/skills/odla/SKILL.md +8 -1
- package/skills/odla/references/build.md +17 -2
- package/skills/odla/references/sdks.md +2 -2
- package/skills/odla-migrate/references/phase-2-db.md +2 -2
- package/skills/odla-migrate/references/phase-3b-user-sync.md +15 -8
- package/skills/odla-migrate/references/phase-5-cutover.md +8 -2
- package/skills/odla-migrate/references/secrets-map.md +16 -2
- package/dist/chunk-643B2AKG.js.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
import { SecurityReport, PlatformSecurityRun } from '@odla-ai/security';
|
|
2
|
+
import { HostedSecurityJob, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityIntentResponse, HostedSecurityPlan, HostedSecurityReport, HostedSecurityJobStatus } from '@odla-ai/security/hosted';
|
|
3
|
+
export { GitHubConnectionAttempt, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityCounts, HostedSecurityCoverage, HostedSecurityIntent, HostedSecurityIntentResponse, HostedSecurityJob, HostedSecurityJobStatus, HostedSecurityPlan, HostedSecurityPlanRoute, HostedSecurityReport, HostedSecurityReportFinding, HostedSecurityRoute } from '@odla-ai/security/hosted';
|
|
2
4
|
|
|
5
|
+
/** Injectable side-effect boundaries used to run and test the command dispatcher. */
|
|
6
|
+
interface CliDependencies {
|
|
7
|
+
fetch?: typeof fetch;
|
|
8
|
+
openUrl?: (url: string) => Promise<void>;
|
|
9
|
+
pollWait?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
10
|
+
readGitOrigin?: (cwd: string) => Promise<string>;
|
|
11
|
+
confirm?: (message: string) => Promise<boolean>;
|
|
12
|
+
stdout?: Pick<typeof console, "log" | "error">;
|
|
13
|
+
}
|
|
3
14
|
/**
|
|
4
|
-
* Parse CLI arguments and dispatch
|
|
5
|
-
* `bin.ts` invokes. `argv` defaults to `process.argv.slice(2)`; the first
|
|
6
|
-
* positional selects the command and the rest are parsed into flags (supporting
|
|
7
|
-
* `--flag value`, `--flag=value`, boolean `--flag`, `--no-flag`, and repeated
|
|
8
|
-
* flags collected into arrays).
|
|
15
|
+
* Parse CLI arguments and dispatch the matching odla command.
|
|
9
16
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* transfers write-only credentials, and reads metadata-only attributed usage
|
|
15
|
-
* through separate short-lived exact-scope device grants;
|
|
16
|
-
* `security run` performs an explicitly acknowledged, app-attributed hosted
|
|
17
|
-
* reasoning pass; `provision` runs the full provision (including optional secret
|
|
18
|
-
* rotation, local vars, and deployed secret push); `smoke` checks a live env;
|
|
19
|
-
* `setup` and `skill install` install the bundled offline runbooks for Claude
|
|
20
|
-
* Code, Codex, Cursor, Copilot, Gemini, and `AGENTS.md`-aware agents; and
|
|
21
|
-
* `secrets push` pipes the env's configured db/o11y secrets into the Worker via
|
|
22
|
-
* Wrangler (requires `--env`). Throws on an unknown command/subcommand, unsupported option, extra
|
|
23
|
-
* positional argument, missing required value, or a dispatched command error.
|
|
17
|
+
* The dispatcher covers project setup, platform AI administration, hosted and
|
|
18
|
+
* local security, provisioning, smoke checks, skill installation, and secret
|
|
19
|
+
* pushes. It rejects unknown commands, unsupported options, extra positionals,
|
|
20
|
+
* missing values, and errors returned by the selected command.
|
|
24
21
|
*
|
|
25
|
-
* @param argv Argument vector without the node/script prefix
|
|
26
|
-
*
|
|
22
|
+
* @param argv Argument vector without the node/script prefix.
|
|
23
|
+
* @param dependencies Optional side-effect overrides for embedding and tests.
|
|
27
24
|
*/
|
|
28
|
-
declare function runCli(argv?: string[]): Promise<void>;
|
|
25
|
+
declare function runCli(argv?: string[], dependencies?: CliDependencies): Promise<void>;
|
|
29
26
|
|
|
30
27
|
/** One exact platform scope obtainable through the admin device flow. */
|
|
31
28
|
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:security:self";
|
|
@@ -94,10 +91,10 @@ declare function adminAi(options: AdminAiOptions): Promise<void>;
|
|
|
94
91
|
/** Stable, machine-readable division of work between the CLI, coding agent,
|
|
95
92
|
* human operator, and Studio. Printed by `odla-ai capabilities --json`. */
|
|
96
93
|
declare const CAPABILITIES: {
|
|
97
|
-
readonly cli: readonly ["register the app and enable configured services per environment", "issue, persist, and explicitly rotate configured service credentials", "write local Worker values and push deployed Worker secrets through Wrangler stdin", "push db schema/rules and configure platform AI, auth, and deployment links", "validate config offline and smoke-test a provisioned db environment", "run app-attributed hosted security discovery and independent validation without 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"];
|
|
94
|
+
readonly cli: readonly ["register the app and enable configured services per environment", "issue, persist, and explicitly rotate configured service credentials", "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", "push db schema/rules and configure platform AI, auth, and deployment links", "validate config offline and smoke-test a provisioned db environment", "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"];
|
|
98
95
|
readonly agent: readonly ["install and import the selected odla SDKs", "wrap the Worker with withObservability and choose useful telemetry", "make application-specific schema, rules, auth, UI, and migration decisions"];
|
|
99
|
-
readonly human: readonly ["approve the odla device code and one-off third-party logins", "consent to production changes with --yes", "request destructive credential rotation explicitly", "review application semantics, security findings, releases, and merges", "approve redacted-source disclosure before hosted security reasoning"];
|
|
100
|
-
readonly studio: readonly ["view telemetry and environment state", "perform manual credential recovery when the CLI's local shown-once copy is unavailable", "configure system AI purposes and view app/environment/run-attributed usage"];
|
|
96
|
+
readonly human: readonly ["approve the odla device code and one-off third-party logins", "consent to production changes 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"];
|
|
97
|
+
readonly studio: readonly ["view telemetry and environment state", "perform manual credential recovery 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"];
|
|
101
98
|
};
|
|
102
99
|
type Output = Pick<typeof console, "log">;
|
|
103
100
|
/** Print the stable responsibility boundary for humans or agent tooling. */
|
|
@@ -370,6 +367,47 @@ interface SecretsPushOptions {
|
|
|
370
367
|
*/
|
|
371
368
|
declare function secretsPush(options: SecretsPushOptions): Promise<void>;
|
|
372
369
|
|
|
370
|
+
/**
|
|
371
|
+
* Inputs for one write-only tenant-vault transfer (`secrets set` /
|
|
372
|
+
* `secrets set-clerk-key`). Values may come only from a named environment
|
|
373
|
+
* variable or stdin, so a producer command can be piped straight into the
|
|
374
|
+
* vault without the secret ever being displayed or stored on disk.
|
|
375
|
+
*/
|
|
376
|
+
interface SecretsSetOptions {
|
|
377
|
+
configPath: string;
|
|
378
|
+
env: string;
|
|
379
|
+
/** Vault secret name (`secrets set` only; `$`-prefixed names are reserved). */
|
|
380
|
+
name?: string;
|
|
381
|
+
fromEnv?: string;
|
|
382
|
+
stdin?: boolean;
|
|
383
|
+
/** Explicit consent for a prod-named env (and for sk_live_ into a non-prod env). */
|
|
384
|
+
yes?: boolean;
|
|
385
|
+
/** Developer token override; defaults to $ODLA_DEV_TOKEN, the cached token, or a device handshake. */
|
|
386
|
+
token?: string;
|
|
387
|
+
open?: boolean;
|
|
388
|
+
interactive?: boolean;
|
|
389
|
+
openApprovalUrl?: (url: string) => Promise<void>;
|
|
390
|
+
fetch?: typeof fetch;
|
|
391
|
+
readStdin?: () => Promise<string>;
|
|
392
|
+
stdout?: Pick<typeof console, "log" | "error">;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Store one named secret in the env's tenant vault (the same write-only slot
|
|
396
|
+
* Studio's Secrets panel fills), e.g. `clerk_webhook_secret` for synced auth.
|
|
397
|
+
* The value is encrypted at rest and can be read back only by that tenant's
|
|
398
|
+
* app API key — never by this CLI, Studio, or the developer token.
|
|
399
|
+
*/
|
|
400
|
+
declare function secretsSet(options: SecretsSetOptions): Promise<void>;
|
|
401
|
+
/**
|
|
402
|
+
* Store the app's Clerk secret key under the reserved `$clerk_secret` slot so
|
|
403
|
+
* odla-db can resolve the app's users (invites, member lookups). Reserved
|
|
404
|
+
* secrets are never readable by app keys; the dedicated endpoint is the only
|
|
405
|
+
* way to set one. Guards against instance/env mismatches: an sk_test_ key
|
|
406
|
+
* never belongs in a prod-named env, and an sk_live_ key entering a non-prod
|
|
407
|
+
* env requires `--yes` (live users would sync into a non-prod tenant).
|
|
408
|
+
*/
|
|
409
|
+
declare function secretsSetClerkKey(options: SecretsSetOptions): Promise<void>;
|
|
410
|
+
|
|
373
411
|
/** Built-in security coverage profile selected for a hosted reasoning run. */
|
|
374
412
|
type HostedSecurityProfile = "odla" | "cloudflare-app" | "generic";
|
|
375
413
|
/** Exact attribution and authorization need supplied to a lazy token callback. */
|
|
@@ -425,6 +463,130 @@ interface HostedSecurityResult {
|
|
|
425
463
|
*/
|
|
426
464
|
declare function runHostedSecurity(options: RunHostedSecurityOptions): Promise<HostedSecurityResult>;
|
|
427
465
|
|
|
466
|
+
/**
|
|
467
|
+
* The hosted-security client surface. The WIRE types live in @odla-ai/security/hosted — one
|
|
468
|
+
* definition shared with the dashboard and the server that produces them. Re-exported here so
|
|
469
|
+
* this module stays the single import path for the rest of the CLI.
|
|
470
|
+
*
|
|
471
|
+
* What remains below is what is genuinely the CLI's own: transport controls (platform origin,
|
|
472
|
+
* token, fetch, AbortSignal) that no other client shares.
|
|
473
|
+
*/
|
|
474
|
+
|
|
475
|
+
/** Common authenticated transport controls for hosted-security requests. */
|
|
476
|
+
interface HostedSecurityRequestOptions {
|
|
477
|
+
platform: string;
|
|
478
|
+
token: string;
|
|
479
|
+
fetch?: typeof fetch;
|
|
480
|
+
signal?: AbortSignal;
|
|
481
|
+
}
|
|
482
|
+
/** Options for browser-mediated connection of one exact GitHub repository. */
|
|
483
|
+
interface ConnectGitHubSecuritySourceOptions extends HostedSecurityRequestOptions {
|
|
484
|
+
appId: string;
|
|
485
|
+
env: string;
|
|
486
|
+
/** Exact owner/name repository requested before GitHub approval. */
|
|
487
|
+
repository: string;
|
|
488
|
+
/** false prints but does not launch the install URL. Defaults to true. */
|
|
489
|
+
open?: boolean;
|
|
490
|
+
openInstallUrl?: (url: string) => Promise<void>;
|
|
491
|
+
/** Poll interval. The server attempt expiry remains authoritative. */
|
|
492
|
+
pollIntervalMs?: number;
|
|
493
|
+
pollTimeoutMs?: number;
|
|
494
|
+
wait?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
495
|
+
now?: () => number;
|
|
496
|
+
stdout?: Pick<typeof console, "log">;
|
|
497
|
+
}
|
|
498
|
+
/** Options for listing GitHub sources or reading the plan for one app environment. */
|
|
499
|
+
interface ListGitHubSecuritySourcesOptions extends HostedSecurityRequestOptions {
|
|
500
|
+
appId: string;
|
|
501
|
+
env: string;
|
|
502
|
+
}
|
|
503
|
+
/** Inputs for fetching the server-authored execution preview before enqueue. */
|
|
504
|
+
interface GetHostedSecurityIntentOptions extends HostedSecurityRequestOptions {
|
|
505
|
+
appId: string;
|
|
506
|
+
env: string;
|
|
507
|
+
sourceId: string;
|
|
508
|
+
ref?: string;
|
|
509
|
+
profile?: "odla" | "cloudflare-app" | "generic";
|
|
510
|
+
}
|
|
511
|
+
/** Options for revoking odla access to one saved GitHub source. */
|
|
512
|
+
interface DisconnectGitHubSecuritySourceOptions extends HostedSecurityRequestOptions {
|
|
513
|
+
appId: string;
|
|
514
|
+
sourceId: string;
|
|
515
|
+
}
|
|
516
|
+
/** Options for enqueueing a commit-pinned hosted security review. */
|
|
517
|
+
interface StartHostedSecurityJobOptions extends HostedSecurityRequestOptions {
|
|
518
|
+
appId: string;
|
|
519
|
+
env: string;
|
|
520
|
+
sourceId: string;
|
|
521
|
+
ref?: string;
|
|
522
|
+
profile?: "odla" | "cloudflare-app" | "generic";
|
|
523
|
+
clientRequestId?: string;
|
|
524
|
+
/** Versions shown in the disclosure preflight. The server rejects stale consent. */
|
|
525
|
+
expectedPolicyVersions: {
|
|
526
|
+
discovery: number;
|
|
527
|
+
validation: number;
|
|
528
|
+
};
|
|
529
|
+
/** Digest copied from the plan the app owner explicitly reviewed. */
|
|
530
|
+
expectedPlanDigest: `sha256:${string}`;
|
|
531
|
+
/** Digest copied from the exact server-authored source/ref/profile preview. */
|
|
532
|
+
expectedExecutionDigest: `sha256:${string}`;
|
|
533
|
+
/** Explicit disclosure acknowledgement; GitHub read access alone is not consent. */
|
|
534
|
+
sourceDisclosureAck?: "redacted";
|
|
535
|
+
}
|
|
536
|
+
/** Options for reading one hosted security job or its report. */
|
|
537
|
+
interface GetHostedSecurityJobOptions extends HostedSecurityRequestOptions {
|
|
538
|
+
appId: string;
|
|
539
|
+
jobId: string;
|
|
540
|
+
}
|
|
541
|
+
/** Options for listing hosted security jobs in one app environment. */
|
|
542
|
+
interface ListHostedSecurityJobsOptions extends HostedSecurityRequestOptions {
|
|
543
|
+
appId: string;
|
|
544
|
+
env: string;
|
|
545
|
+
}
|
|
546
|
+
/** Polling controls for following one hosted job to a terminal state. */
|
|
547
|
+
interface FollowHostedSecurityJobOptions extends GetHostedSecurityJobOptions {
|
|
548
|
+
pollIntervalMs?: number;
|
|
549
|
+
pollTimeoutMs?: number;
|
|
550
|
+
wait?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
551
|
+
now?: () => number;
|
|
552
|
+
onUpdate?: (job: Readonly<HostedSecurityJob>) => void;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/** Begin GitHub App installation, launch its server-issued GitHub URL, and
|
|
556
|
+
* poll the exact attempt until the callback has connected a source. */
|
|
557
|
+
declare function connectGitHubSecuritySource(options: ConnectGitHubSecuritySourceOptions): Promise<GitHubConnectionStatus>;
|
|
558
|
+
/** List repository sources the current app owner connected for one environment. */
|
|
559
|
+
declare function listGitHubSecuritySources(options: ListGitHubSecuritySourcesOptions): Promise<GitHubSecuritySource[]>;
|
|
560
|
+
/** Revoke odla's use of one saved source without requiring a GitHub-side App
|
|
561
|
+
* uninstall. The server marks the source deleted and rejects new jobs. */
|
|
562
|
+
declare function disconnectGitHubSecuritySource(options: DisconnectGitHubSecuritySourceOptions): Promise<void>;
|
|
563
|
+
/** Parse an HTTPS, ssh://, or git@github.com origin without retaining embedded
|
|
564
|
+
* credentials. Only github.com owner/name remotes are accepted. */
|
|
565
|
+
declare function repositoryFromGitRemote(remoteInput: string): string;
|
|
566
|
+
/** Read the current repository's origin without invoking a shell. */
|
|
567
|
+
declare function inferGitHubRepository(cwd?: string, readOrigin?: (cwd: string) => Promise<string>): Promise<string>;
|
|
568
|
+
|
|
569
|
+
/** Fetch the atomic processing-plan and source/ref/profile execution preview. */
|
|
570
|
+
declare function getHostedSecurityIntent(options: GetHostedSecurityIntentOptions): Promise<HostedSecurityIntentResponse>;
|
|
571
|
+
|
|
572
|
+
/** Read the admin-selected routes, budgets, readiness, disclosure boundary,
|
|
573
|
+
* and digest that must be acknowledged when a hosted review is enqueued. */
|
|
574
|
+
declare function getHostedSecurityPlan(options: ListGitHubSecuritySourcesOptions): Promise<HostedSecurityPlan>;
|
|
575
|
+
/** Enqueue a commit-pinned server-side review. The server resolves sourceId to
|
|
576
|
+
* its saved GitHub App installation; clients cannot choose an installation or
|
|
577
|
+
* pass a PAT. */
|
|
578
|
+
declare function startHostedSecurityJob(options: StartHostedSecurityJobOptions): Promise<HostedSecurityJob>;
|
|
579
|
+
/** Read one bounded hosted job status without an archive or explicit source excerpt. */
|
|
580
|
+
declare function getHostedSecurityJob(options: GetHostedSecurityJobOptions): Promise<HostedSecurityJob>;
|
|
581
|
+
/** List bounded, newest-first job metadata for an app environment. */
|
|
582
|
+
declare function listHostedSecurityJobs(options: ListHostedSecurityJobsOptions): Promise<HostedSecurityJob[]>;
|
|
583
|
+
/** Poll one exact job until it reaches a terminal state. */
|
|
584
|
+
declare function followHostedSecurityJob(options: FollowHostedSecurityJobOptions): Promise<HostedSecurityJob>;
|
|
585
|
+
/** Fetch the bounded normalized report projection for a completed hosted job. */
|
|
586
|
+
declare function getHostedSecurityReport(options: GetHostedSecurityJobOptions): Promise<HostedSecurityReport>;
|
|
587
|
+
/** Return whether a hosted job status can no longer transition. */
|
|
588
|
+
declare function isTerminalHostedSecurityStatus(status: HostedSecurityJobStatus): boolean;
|
|
589
|
+
|
|
428
590
|
/** Agent harnesses with a first-class local adapter. */
|
|
429
591
|
declare const AGENT_HARNESSES: readonly ["claude", "codex", "cursor", "copilot", "gemini", "agents"];
|
|
430
592
|
/** A supported coding-agent harness. `agents` is the portable `AGENTS.md` adapter. */
|
|
@@ -504,4 +666,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
|
|
|
504
666
|
*/
|
|
505
667
|
declare function smoke(options: SmokeOptions): Promise<void>;
|
|
506
668
|
|
|
507
|
-
export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, CAPABILITIES, type HarnessInstallResult, type HostedSecurityProfile, type HostedSecurityResult, type HostedSecurityTokenRequest, type LoadedProjectConfig, type LocalCredentials, type OdlaProjectConfig, type ProvisionOptions, type ProvisionPlan, type RunHostedSecurityOptions, SYSTEM_AI_PURPOSES, type ScopedPlatformTokenOptions, type SecretsPushOptions, type SkillInstallOptions, type SkillInstallResult, type SmokeOptions, type SystemAiPurpose, adminAi, doctor, getScopedPlatformToken, initProject, installSkill, printCapabilities, provision, redactSecrets, runCli, runHostedSecurity, secretsPush, smoke };
|
|
669
|
+
export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, CAPABILITIES, type CliDependencies, type ConnectGitHubSecuritySourceOptions, type DisconnectGitHubSecuritySourceOptions, type FollowHostedSecurityJobOptions, type GetHostedSecurityIntentOptions, type GetHostedSecurityJobOptions, type HarnessInstallResult, type HostedSecurityProfile, type HostedSecurityResult, type HostedSecurityTokenRequest, type ListGitHubSecuritySourcesOptions, type ListHostedSecurityJobsOptions, type LoadedProjectConfig, type LocalCredentials, 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, connectGitHubSecuritySource, disconnectGitHubSecuritySource, doctor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
import { SecurityReport, PlatformSecurityRun } from '@odla-ai/security';
|
|
2
|
+
import { HostedSecurityJob, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityIntentResponse, HostedSecurityPlan, HostedSecurityReport, HostedSecurityJobStatus } from '@odla-ai/security/hosted';
|
|
3
|
+
export { GitHubConnectionAttempt, GitHubConnectionStatus, GitHubSecuritySource, HostedSecurityCounts, HostedSecurityCoverage, HostedSecurityIntent, HostedSecurityIntentResponse, HostedSecurityJob, HostedSecurityJobStatus, HostedSecurityPlan, HostedSecurityPlanRoute, HostedSecurityReport, HostedSecurityReportFinding, HostedSecurityRoute } from '@odla-ai/security/hosted';
|
|
2
4
|
|
|
5
|
+
/** Injectable side-effect boundaries used to run and test the command dispatcher. */
|
|
6
|
+
interface CliDependencies {
|
|
7
|
+
fetch?: typeof fetch;
|
|
8
|
+
openUrl?: (url: string) => Promise<void>;
|
|
9
|
+
pollWait?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
10
|
+
readGitOrigin?: (cwd: string) => Promise<string>;
|
|
11
|
+
confirm?: (message: string) => Promise<boolean>;
|
|
12
|
+
stdout?: Pick<typeof console, "log" | "error">;
|
|
13
|
+
}
|
|
3
14
|
/**
|
|
4
|
-
* Parse CLI arguments and dispatch
|
|
5
|
-
* `bin.ts` invokes. `argv` defaults to `process.argv.slice(2)`; the first
|
|
6
|
-
* positional selects the command and the rest are parsed into flags (supporting
|
|
7
|
-
* `--flag value`, `--flag=value`, boolean `--flag`, `--no-flag`, and repeated
|
|
8
|
-
* flags collected into arrays).
|
|
15
|
+
* Parse CLI arguments and dispatch the matching odla command.
|
|
9
16
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* transfers write-only credentials, and reads metadata-only attributed usage
|
|
15
|
-
* through separate short-lived exact-scope device grants;
|
|
16
|
-
* `security run` performs an explicitly acknowledged, app-attributed hosted
|
|
17
|
-
* reasoning pass; `provision` runs the full provision (including optional secret
|
|
18
|
-
* rotation, local vars, and deployed secret push); `smoke` checks a live env;
|
|
19
|
-
* `setup` and `skill install` install the bundled offline runbooks for Claude
|
|
20
|
-
* Code, Codex, Cursor, Copilot, Gemini, and `AGENTS.md`-aware agents; and
|
|
21
|
-
* `secrets push` pipes the env's configured db/o11y secrets into the Worker via
|
|
22
|
-
* Wrangler (requires `--env`). Throws on an unknown command/subcommand, unsupported option, extra
|
|
23
|
-
* positional argument, missing required value, or a dispatched command error.
|
|
17
|
+
* The dispatcher covers project setup, platform AI administration, hosted and
|
|
18
|
+
* local security, provisioning, smoke checks, skill installation, and secret
|
|
19
|
+
* pushes. It rejects unknown commands, unsupported options, extra positionals,
|
|
20
|
+
* missing values, and errors returned by the selected command.
|
|
24
21
|
*
|
|
25
|
-
* @param argv Argument vector without the node/script prefix
|
|
26
|
-
*
|
|
22
|
+
* @param argv Argument vector without the node/script prefix.
|
|
23
|
+
* @param dependencies Optional side-effect overrides for embedding and tests.
|
|
27
24
|
*/
|
|
28
|
-
declare function runCli(argv?: string[]): Promise<void>;
|
|
25
|
+
declare function runCli(argv?: string[], dependencies?: CliDependencies): Promise<void>;
|
|
29
26
|
|
|
30
27
|
/** One exact platform scope obtainable through the admin device flow. */
|
|
31
28
|
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:security:self";
|
|
@@ -94,10 +91,10 @@ declare function adminAi(options: AdminAiOptions): Promise<void>;
|
|
|
94
91
|
/** Stable, machine-readable division of work between the CLI, coding agent,
|
|
95
92
|
* human operator, and Studio. Printed by `odla-ai capabilities --json`. */
|
|
96
93
|
declare const CAPABILITIES: {
|
|
97
|
-
readonly cli: readonly ["register the app and enable configured services per environment", "issue, persist, and explicitly rotate configured service credentials", "write local Worker values and push deployed Worker secrets through Wrangler stdin", "push db schema/rules and configure platform AI, auth, and deployment links", "validate config offline and smoke-test a provisioned db environment", "run app-attributed hosted security discovery and independent validation without 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"];
|
|
94
|
+
readonly cli: readonly ["register the app and enable configured services per environment", "issue, persist, and explicitly rotate configured service credentials", "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", "push db schema/rules and configure platform AI, auth, and deployment links", "validate config offline and smoke-test a provisioned db environment", "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"];
|
|
98
95
|
readonly agent: readonly ["install and import the selected odla SDKs", "wrap the Worker with withObservability and choose useful telemetry", "make application-specific schema, rules, auth, UI, and migration decisions"];
|
|
99
|
-
readonly human: readonly ["approve the odla device code and one-off third-party logins", "consent to production changes with --yes", "request destructive credential rotation explicitly", "review application semantics, security findings, releases, and merges", "approve redacted-source disclosure before hosted security reasoning"];
|
|
100
|
-
readonly studio: readonly ["view telemetry and environment state", "perform manual credential recovery when the CLI's local shown-once copy is unavailable", "configure system AI purposes and view app/environment/run-attributed usage"];
|
|
96
|
+
readonly human: readonly ["approve the odla device code and one-off third-party logins", "consent to production changes 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"];
|
|
97
|
+
readonly studio: readonly ["view telemetry and environment state", "perform manual credential recovery 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"];
|
|
101
98
|
};
|
|
102
99
|
type Output = Pick<typeof console, "log">;
|
|
103
100
|
/** Print the stable responsibility boundary for humans or agent tooling. */
|
|
@@ -370,6 +367,47 @@ interface SecretsPushOptions {
|
|
|
370
367
|
*/
|
|
371
368
|
declare function secretsPush(options: SecretsPushOptions): Promise<void>;
|
|
372
369
|
|
|
370
|
+
/**
|
|
371
|
+
* Inputs for one write-only tenant-vault transfer (`secrets set` /
|
|
372
|
+
* `secrets set-clerk-key`). Values may come only from a named environment
|
|
373
|
+
* variable or stdin, so a producer command can be piped straight into the
|
|
374
|
+
* vault without the secret ever being displayed or stored on disk.
|
|
375
|
+
*/
|
|
376
|
+
interface SecretsSetOptions {
|
|
377
|
+
configPath: string;
|
|
378
|
+
env: string;
|
|
379
|
+
/** Vault secret name (`secrets set` only; `$`-prefixed names are reserved). */
|
|
380
|
+
name?: string;
|
|
381
|
+
fromEnv?: string;
|
|
382
|
+
stdin?: boolean;
|
|
383
|
+
/** Explicit consent for a prod-named env (and for sk_live_ into a non-prod env). */
|
|
384
|
+
yes?: boolean;
|
|
385
|
+
/** Developer token override; defaults to $ODLA_DEV_TOKEN, the cached token, or a device handshake. */
|
|
386
|
+
token?: string;
|
|
387
|
+
open?: boolean;
|
|
388
|
+
interactive?: boolean;
|
|
389
|
+
openApprovalUrl?: (url: string) => Promise<void>;
|
|
390
|
+
fetch?: typeof fetch;
|
|
391
|
+
readStdin?: () => Promise<string>;
|
|
392
|
+
stdout?: Pick<typeof console, "log" | "error">;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Store one named secret in the env's tenant vault (the same write-only slot
|
|
396
|
+
* Studio's Secrets panel fills), e.g. `clerk_webhook_secret` for synced auth.
|
|
397
|
+
* The value is encrypted at rest and can be read back only by that tenant's
|
|
398
|
+
* app API key — never by this CLI, Studio, or the developer token.
|
|
399
|
+
*/
|
|
400
|
+
declare function secretsSet(options: SecretsSetOptions): Promise<void>;
|
|
401
|
+
/**
|
|
402
|
+
* Store the app's Clerk secret key under the reserved `$clerk_secret` slot so
|
|
403
|
+
* odla-db can resolve the app's users (invites, member lookups). Reserved
|
|
404
|
+
* secrets are never readable by app keys; the dedicated endpoint is the only
|
|
405
|
+
* way to set one. Guards against instance/env mismatches: an sk_test_ key
|
|
406
|
+
* never belongs in a prod-named env, and an sk_live_ key entering a non-prod
|
|
407
|
+
* env requires `--yes` (live users would sync into a non-prod tenant).
|
|
408
|
+
*/
|
|
409
|
+
declare function secretsSetClerkKey(options: SecretsSetOptions): Promise<void>;
|
|
410
|
+
|
|
373
411
|
/** Built-in security coverage profile selected for a hosted reasoning run. */
|
|
374
412
|
type HostedSecurityProfile = "odla" | "cloudflare-app" | "generic";
|
|
375
413
|
/** Exact attribution and authorization need supplied to a lazy token callback. */
|
|
@@ -425,6 +463,130 @@ interface HostedSecurityResult {
|
|
|
425
463
|
*/
|
|
426
464
|
declare function runHostedSecurity(options: RunHostedSecurityOptions): Promise<HostedSecurityResult>;
|
|
427
465
|
|
|
466
|
+
/**
|
|
467
|
+
* The hosted-security client surface. The WIRE types live in @odla-ai/security/hosted — one
|
|
468
|
+
* definition shared with the dashboard and the server that produces them. Re-exported here so
|
|
469
|
+
* this module stays the single import path for the rest of the CLI.
|
|
470
|
+
*
|
|
471
|
+
* What remains below is what is genuinely the CLI's own: transport controls (platform origin,
|
|
472
|
+
* token, fetch, AbortSignal) that no other client shares.
|
|
473
|
+
*/
|
|
474
|
+
|
|
475
|
+
/** Common authenticated transport controls for hosted-security requests. */
|
|
476
|
+
interface HostedSecurityRequestOptions {
|
|
477
|
+
platform: string;
|
|
478
|
+
token: string;
|
|
479
|
+
fetch?: typeof fetch;
|
|
480
|
+
signal?: AbortSignal;
|
|
481
|
+
}
|
|
482
|
+
/** Options for browser-mediated connection of one exact GitHub repository. */
|
|
483
|
+
interface ConnectGitHubSecuritySourceOptions extends HostedSecurityRequestOptions {
|
|
484
|
+
appId: string;
|
|
485
|
+
env: string;
|
|
486
|
+
/** Exact owner/name repository requested before GitHub approval. */
|
|
487
|
+
repository: string;
|
|
488
|
+
/** false prints but does not launch the install URL. Defaults to true. */
|
|
489
|
+
open?: boolean;
|
|
490
|
+
openInstallUrl?: (url: string) => Promise<void>;
|
|
491
|
+
/** Poll interval. The server attempt expiry remains authoritative. */
|
|
492
|
+
pollIntervalMs?: number;
|
|
493
|
+
pollTimeoutMs?: number;
|
|
494
|
+
wait?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
495
|
+
now?: () => number;
|
|
496
|
+
stdout?: Pick<typeof console, "log">;
|
|
497
|
+
}
|
|
498
|
+
/** Options for listing GitHub sources or reading the plan for one app environment. */
|
|
499
|
+
interface ListGitHubSecuritySourcesOptions extends HostedSecurityRequestOptions {
|
|
500
|
+
appId: string;
|
|
501
|
+
env: string;
|
|
502
|
+
}
|
|
503
|
+
/** Inputs for fetching the server-authored execution preview before enqueue. */
|
|
504
|
+
interface GetHostedSecurityIntentOptions extends HostedSecurityRequestOptions {
|
|
505
|
+
appId: string;
|
|
506
|
+
env: string;
|
|
507
|
+
sourceId: string;
|
|
508
|
+
ref?: string;
|
|
509
|
+
profile?: "odla" | "cloudflare-app" | "generic";
|
|
510
|
+
}
|
|
511
|
+
/** Options for revoking odla access to one saved GitHub source. */
|
|
512
|
+
interface DisconnectGitHubSecuritySourceOptions extends HostedSecurityRequestOptions {
|
|
513
|
+
appId: string;
|
|
514
|
+
sourceId: string;
|
|
515
|
+
}
|
|
516
|
+
/** Options for enqueueing a commit-pinned hosted security review. */
|
|
517
|
+
interface StartHostedSecurityJobOptions extends HostedSecurityRequestOptions {
|
|
518
|
+
appId: string;
|
|
519
|
+
env: string;
|
|
520
|
+
sourceId: string;
|
|
521
|
+
ref?: string;
|
|
522
|
+
profile?: "odla" | "cloudflare-app" | "generic";
|
|
523
|
+
clientRequestId?: string;
|
|
524
|
+
/** Versions shown in the disclosure preflight. The server rejects stale consent. */
|
|
525
|
+
expectedPolicyVersions: {
|
|
526
|
+
discovery: number;
|
|
527
|
+
validation: number;
|
|
528
|
+
};
|
|
529
|
+
/** Digest copied from the plan the app owner explicitly reviewed. */
|
|
530
|
+
expectedPlanDigest: `sha256:${string}`;
|
|
531
|
+
/** Digest copied from the exact server-authored source/ref/profile preview. */
|
|
532
|
+
expectedExecutionDigest: `sha256:${string}`;
|
|
533
|
+
/** Explicit disclosure acknowledgement; GitHub read access alone is not consent. */
|
|
534
|
+
sourceDisclosureAck?: "redacted";
|
|
535
|
+
}
|
|
536
|
+
/** Options for reading one hosted security job or its report. */
|
|
537
|
+
interface GetHostedSecurityJobOptions extends HostedSecurityRequestOptions {
|
|
538
|
+
appId: string;
|
|
539
|
+
jobId: string;
|
|
540
|
+
}
|
|
541
|
+
/** Options for listing hosted security jobs in one app environment. */
|
|
542
|
+
interface ListHostedSecurityJobsOptions extends HostedSecurityRequestOptions {
|
|
543
|
+
appId: string;
|
|
544
|
+
env: string;
|
|
545
|
+
}
|
|
546
|
+
/** Polling controls for following one hosted job to a terminal state. */
|
|
547
|
+
interface FollowHostedSecurityJobOptions extends GetHostedSecurityJobOptions {
|
|
548
|
+
pollIntervalMs?: number;
|
|
549
|
+
pollTimeoutMs?: number;
|
|
550
|
+
wait?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
551
|
+
now?: () => number;
|
|
552
|
+
onUpdate?: (job: Readonly<HostedSecurityJob>) => void;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/** Begin GitHub App installation, launch its server-issued GitHub URL, and
|
|
556
|
+
* poll the exact attempt until the callback has connected a source. */
|
|
557
|
+
declare function connectGitHubSecuritySource(options: ConnectGitHubSecuritySourceOptions): Promise<GitHubConnectionStatus>;
|
|
558
|
+
/** List repository sources the current app owner connected for one environment. */
|
|
559
|
+
declare function listGitHubSecuritySources(options: ListGitHubSecuritySourcesOptions): Promise<GitHubSecuritySource[]>;
|
|
560
|
+
/** Revoke odla's use of one saved source without requiring a GitHub-side App
|
|
561
|
+
* uninstall. The server marks the source deleted and rejects new jobs. */
|
|
562
|
+
declare function disconnectGitHubSecuritySource(options: DisconnectGitHubSecuritySourceOptions): Promise<void>;
|
|
563
|
+
/** Parse an HTTPS, ssh://, or git@github.com origin without retaining embedded
|
|
564
|
+
* credentials. Only github.com owner/name remotes are accepted. */
|
|
565
|
+
declare function repositoryFromGitRemote(remoteInput: string): string;
|
|
566
|
+
/** Read the current repository's origin without invoking a shell. */
|
|
567
|
+
declare function inferGitHubRepository(cwd?: string, readOrigin?: (cwd: string) => Promise<string>): Promise<string>;
|
|
568
|
+
|
|
569
|
+
/** Fetch the atomic processing-plan and source/ref/profile execution preview. */
|
|
570
|
+
declare function getHostedSecurityIntent(options: GetHostedSecurityIntentOptions): Promise<HostedSecurityIntentResponse>;
|
|
571
|
+
|
|
572
|
+
/** Read the admin-selected routes, budgets, readiness, disclosure boundary,
|
|
573
|
+
* and digest that must be acknowledged when a hosted review is enqueued. */
|
|
574
|
+
declare function getHostedSecurityPlan(options: ListGitHubSecuritySourcesOptions): Promise<HostedSecurityPlan>;
|
|
575
|
+
/** Enqueue a commit-pinned server-side review. The server resolves sourceId to
|
|
576
|
+
* its saved GitHub App installation; clients cannot choose an installation or
|
|
577
|
+
* pass a PAT. */
|
|
578
|
+
declare function startHostedSecurityJob(options: StartHostedSecurityJobOptions): Promise<HostedSecurityJob>;
|
|
579
|
+
/** Read one bounded hosted job status without an archive or explicit source excerpt. */
|
|
580
|
+
declare function getHostedSecurityJob(options: GetHostedSecurityJobOptions): Promise<HostedSecurityJob>;
|
|
581
|
+
/** List bounded, newest-first job metadata for an app environment. */
|
|
582
|
+
declare function listHostedSecurityJobs(options: ListHostedSecurityJobsOptions): Promise<HostedSecurityJob[]>;
|
|
583
|
+
/** Poll one exact job until it reaches a terminal state. */
|
|
584
|
+
declare function followHostedSecurityJob(options: FollowHostedSecurityJobOptions): Promise<HostedSecurityJob>;
|
|
585
|
+
/** Fetch the bounded normalized report projection for a completed hosted job. */
|
|
586
|
+
declare function getHostedSecurityReport(options: GetHostedSecurityJobOptions): Promise<HostedSecurityReport>;
|
|
587
|
+
/** Return whether a hosted job status can no longer transition. */
|
|
588
|
+
declare function isTerminalHostedSecurityStatus(status: HostedSecurityJobStatus): boolean;
|
|
589
|
+
|
|
428
590
|
/** Agent harnesses with a first-class local adapter. */
|
|
429
591
|
declare const AGENT_HARNESSES: readonly ["claude", "codex", "cursor", "copilot", "gemini", "agents"];
|
|
430
592
|
/** A supported coding-agent harness. `agents` is the portable `AGENTS.md` adapter. */
|
|
@@ -504,4 +666,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
|
|
|
504
666
|
*/
|
|
505
667
|
declare function smoke(options: SmokeOptions): Promise<void>;
|
|
506
668
|
|
|
507
|
-
export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, CAPABILITIES, type HarnessInstallResult, type HostedSecurityProfile, type HostedSecurityResult, type HostedSecurityTokenRequest, type LoadedProjectConfig, type LocalCredentials, type OdlaProjectConfig, type ProvisionOptions, type ProvisionPlan, type RunHostedSecurityOptions, SYSTEM_AI_PURPOSES, type ScopedPlatformTokenOptions, type SecretsPushOptions, type SkillInstallOptions, type SkillInstallResult, type SmokeOptions, type SystemAiPurpose, adminAi, doctor, getScopedPlatformToken, initProject, installSkill, printCapabilities, provision, redactSecrets, runCli, runHostedSecurity, secretsPush, smoke };
|
|
669
|
+
export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, CAPABILITIES, type CliDependencies, type ConnectGitHubSecuritySourceOptions, type DisconnectGitHubSecuritySourceOptions, type FollowHostedSecurityJobOptions, type GetHostedSecurityIntentOptions, type GetHostedSecurityJobOptions, type HarnessInstallResult, type HostedSecurityProfile, type HostedSecurityResult, type HostedSecurityTokenRequest, type ListGitHubSecuritySourcesOptions, type ListHostedSecurityJobsOptions, type LoadedProjectConfig, type LocalCredentials, 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, connectGitHubSecuritySource, disconnectGitHubSecuritySource, doctor, followHostedSecurityJob, getHostedSecurityIntent, getHostedSecurityJob, getHostedSecurityPlan, getHostedSecurityReport, getScopedPlatformToken, inferGitHubRepository, initProject, installSkill, isTerminalHostedSecurityStatus, listGitHubSecuritySources, listHostedSecurityJobs, printCapabilities, provision, redactSecrets, repositoryFromGitRemote, runCli, runHostedSecurity, secretsPush, secretsSet, secretsSetClerkKey, smoke, startHostedSecurityJob };
|
package/dist/index.js
CHANGED
|
@@ -4,33 +4,63 @@ import {
|
|
|
4
4
|
CAPABILITIES,
|
|
5
5
|
SYSTEM_AI_PURPOSES,
|
|
6
6
|
adminAi,
|
|
7
|
+
connectGitHubSecuritySource,
|
|
8
|
+
disconnectGitHubSecuritySource,
|
|
7
9
|
doctor,
|
|
10
|
+
followHostedSecurityJob,
|
|
11
|
+
getHostedSecurityIntent,
|
|
12
|
+
getHostedSecurityJob,
|
|
13
|
+
getHostedSecurityPlan,
|
|
14
|
+
getHostedSecurityReport,
|
|
8
15
|
getScopedPlatformToken,
|
|
16
|
+
inferGitHubRepository,
|
|
9
17
|
initProject,
|
|
10
18
|
installSkill,
|
|
19
|
+
isTerminalHostedSecurityStatus,
|
|
20
|
+
listGitHubSecuritySources,
|
|
21
|
+
listHostedSecurityJobs,
|
|
11
22
|
printCapabilities,
|
|
12
23
|
provision,
|
|
13
24
|
redactSecrets,
|
|
25
|
+
repositoryFromGitRemote,
|
|
14
26
|
runCli,
|
|
15
27
|
runHostedSecurity,
|
|
16
28
|
secretsPush,
|
|
17
|
-
|
|
18
|
-
|
|
29
|
+
secretsSet,
|
|
30
|
+
secretsSetClerkKey,
|
|
31
|
+
smoke,
|
|
32
|
+
startHostedSecurityJob
|
|
33
|
+
} from "./chunk-MJYQ7YDH.js";
|
|
19
34
|
export {
|
|
20
35
|
AGENT_HARNESSES,
|
|
21
36
|
CAPABILITIES,
|
|
22
37
|
SYSTEM_AI_PURPOSES,
|
|
23
38
|
adminAi,
|
|
39
|
+
connectGitHubSecuritySource,
|
|
40
|
+
disconnectGitHubSecuritySource,
|
|
24
41
|
doctor,
|
|
42
|
+
followHostedSecurityJob,
|
|
43
|
+
getHostedSecurityIntent,
|
|
44
|
+
getHostedSecurityJob,
|
|
45
|
+
getHostedSecurityPlan,
|
|
46
|
+
getHostedSecurityReport,
|
|
25
47
|
getScopedPlatformToken,
|
|
48
|
+
inferGitHubRepository,
|
|
26
49
|
initProject,
|
|
27
50
|
installSkill,
|
|
51
|
+
isTerminalHostedSecurityStatus,
|
|
52
|
+
listGitHubSecuritySources,
|
|
53
|
+
listHostedSecurityJobs,
|
|
28
54
|
printCapabilities,
|
|
29
55
|
provision,
|
|
30
56
|
redactSecrets,
|
|
57
|
+
repositoryFromGitRemote,
|
|
31
58
|
runCli,
|
|
32
59
|
runHostedSecurity,
|
|
33
60
|
secretsPush,
|
|
34
|
-
|
|
61
|
+
secretsSet,
|
|
62
|
+
secretsSetClerkKey,
|
|
63
|
+
smoke,
|
|
64
|
+
startHostedSecurityJob
|
|
35
65
|
};
|
|
36
66
|
//# sourceMappingURL=index.js.map
|