@odla-ai/cli 0.9.0 → 0.10.1

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.ts CHANGED
@@ -30,6 +30,8 @@ type ScopedPlatformScope = "platform:ai:policy:read" | "platform:ai:policy:write
30
30
  interface ScopedPlatformTokenOptions {
31
31
  platform: string;
32
32
  scope: ScopedPlatformScope;
33
+ /** Existing odla account email used only when a fresh handshake is required. */
34
+ email?: string;
33
35
  open?: boolean;
34
36
  fetch?: typeof fetch;
35
37
  stdout?: Pick<typeof console, "log">;
@@ -59,6 +61,8 @@ interface AdminAiOptions {
59
61
  maxCallsPerRun?: number;
60
62
  platform?: string;
61
63
  token?: string;
64
+ /** Existing odla account email used only when a fresh handshake is required. */
65
+ email?: string;
62
66
  json?: boolean;
63
67
  open?: boolean;
64
68
  fetch?: typeof fetch;
@@ -91,79 +95,84 @@ declare function adminAi(options: AdminAiOptions): Promise<void>;
91
95
  /** Stable, machine-readable division of work between the CLI, coding agent,
92
96
  * human operator, and Studio. Printed by `odla-ai capabilities --json`. */
93
97
  declare const CAPABILITIES: {
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"];
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"];
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"];
98
+ readonly cli: readonly ["start an email-bound device request without accepting a password or user session token", "register the app and enable configured services per environment", "issue, persist, and explicitly rotate configured service credentials", "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", "apply read-only Google calendar mirror and public booking-page config, then drive state-bound consent, status, discovery, resync, and disconnect flows", "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"];
99
+ 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", "wire @odla-ai/calendar into trusted Worker code and keep the app admin key out of browsers"];
100
+ readonly human: readonly ["provide the existing odla account email, then sign in and explicitly review/approve the exact device code", "review mirrored calendar/attendee disclosure and complete the server-issued Google consent flow", "consent to 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"];
101
+ readonly studio: readonly ["view telemetry and environment state", "let signed-in users inventory/revoke their own agent grants and admins audit/global-revoke them", "review calendar connection, granted read scope, selected calendars, and sync health without exposing provider tokens", "perform manual credential recovery 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"];
98
102
  };
99
103
  type Output = Pick<typeof console, "log">;
100
104
  /** Print the stable responsibility boundary for humans or agent tooling. */
101
105
  declare function printCapabilities(json?: boolean, out?: Output): void;
102
106
 
103
- interface DoctorOptions {
104
- configPath: string;
105
- stdout?: Pick<typeof console, "log" | "error">;
107
+ declare const CALENDAR_STATES: readonly ["not_connected", "authorizing", "needs_sync", "initial_sync", "healthy", "degraded", "disconnected", "failed"];
108
+ /** Connection lifecycle reported by the registry; mirrors the platform's calendar states. */
109
+ type CalendarConnectionState = (typeof CALENDAR_STATES)[number];
110
+ /** Owner-visible, secret-free calendar connection and sync health. */
111
+ interface CalendarStatus {
112
+ env: string;
113
+ enabled: boolean;
114
+ /** True when the platform has provider credentials for this connection. */
115
+ connected: boolean;
116
+ provider: "google" | null;
117
+ status: CalendarConnectionState;
118
+ access?: "read";
119
+ calendars: string[];
120
+ attendeePolicy?: "full" | "hashed";
121
+ /** True once a booking projection may have established the DB privacy policy. */
122
+ attendeePolicyLocked?: boolean;
123
+ bookingPageUrl?: string | null;
124
+ grantedScopes: string[];
125
+ attemptId?: string;
126
+ lastSuccessfulSyncAt?: number;
127
+ lastFullSyncAt?: number;
128
+ watchExpiresAt?: number;
129
+ bookingCount?: number;
130
+ error?: {
131
+ code?: string;
132
+ message?: string;
133
+ };
134
+ }
135
+ /** One Google calendar the connected identity may select for mirroring. */
136
+ interface AvailableGoogleCalendar {
137
+ id: string;
138
+ summary?: string;
139
+ primary?: boolean;
140
+ selected?: boolean;
141
+ accessRole?: "freeBusyReader" | "reader" | "writer" | "owner";
106
142
  }
107
- /**
108
- * Validate and summarize an odla project config entirely offline — no network
109
- * calls and no file writes. Loads `configPath`, builds the provision plan, and
110
- * resolves the schema and rules (synthesizing deny-all rules from the schema
111
- * when `db.rules` is omitted and `db.defaultRules` isn't `false`), then prints a
112
- * summary line for the app, envs, services, schema entity count, rules namespace
113
- * count, and AI provider.
114
- *
115
- * It then collects warnings for the mistakes provision can't fix silently: a
116
- * schema with no entities, a rules namespace with no matching entity, the `ai`
117
- * service enabled without an `ai.provider`, `auth.clerk` entries that reference
118
- * an unset env var (`$FOO`), an `ai.keyEnv` that isn't set (provider key upload
119
- * will be skipped), and — when `o11y` is enabled — any env whose local
120
- * credentials lack an ingest token. It also folds in the shared rule linter,
121
- * git-tracked secret-shaped files, and wrangler config warnings. Prints `ok`
122
- * when clean, otherwise the warning list. Purely advisory: never throws on
123
- * warnings and never mutates anything.
124
- *
125
- * @param options.configPath Path to the `odla.config.mjs` to inspect.
126
- * @param options.stdout Optional console-like sink (defaults to `console`).
127
- */
128
- declare function doctor(options: DoctorOptions): Promise<void>;
129
143
 
130
- interface InitOptions {
131
- rootDir?: string;
132
- configPath?: string;
133
- appId: string;
134
- name: string;
135
- envs?: string[];
136
- services?: string[];
137
- aiProvider?: string;
138
- force?: boolean;
144
+ /** Shared inputs for the calendar lifecycle commands (status, connect,
145
+ * calendars, resync, disconnect): the project config path and env, plus
146
+ * injectable token, output, browser, clock, and polling hooks so agents and
147
+ * tests can drive the flow deterministically. */
148
+ interface CalendarLifecycleOptions {
149
+ /** Path to the checked-in odla project config. */ configPath: string;
150
+ /** Configured environment; defaults to dev when present. */ env?: string;
151
+ /** Existing developer-token override. */ token?: string;
152
+ /** Existing odla account email used only for a fresh handshake. */ email?: string;
153
+ open?: boolean;
154
+ interactive?: boolean;
155
+ yes?: boolean;
156
+ json?: boolean;
157
+ fetch?: typeof fetch;
139
158
  stdout?: Pick<typeof console, "log" | "error">;
159
+ openConsentUrl?: (url: string) => Promise<void>;
160
+ wait?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
161
+ pollTimeoutMs?: number;
162
+ now?: () => number;
163
+ signal?: AbortSignal;
140
164
  }
141
- /**
142
- * Scaffold a new odla project into `rootDir` (default: cwd). Writes an
143
- * `odla.config.mjs` (default name, overridable via `configPath`) plus starter
144
- * `src/odla/schema.mjs` (a single `notes` entity) and `src/odla/rules.mjs`
145
- * (deny-all), and creates the `src/odla` and `.odla` directories. Also runs
146
- * `ensureGitignore` so the local token/credentials paths are ignored.
147
- *
148
- * Fully local and synchronous — no network calls. The config file is only
149
- * written when it doesn't already exist unless `force` is set (otherwise it
150
- * throws); the schema/rules files are written only when missing (never
151
- * overwritten, even with `force`). `appId` must match `^[a-z0-9][a-z0-9-]*$` or
152
- * it throws. Defaults: `envs` → `["dev"]`, `services` → `["db","ai"]`,
153
- * `aiProvider` → `"anthropic"` (which also picks the `keyEnv`, e.g.
154
- * `ANTHROPIC_API_KEY`/`OPENAI_API_KEY`/`GOOGLE_API_KEY`).
155
- *
156
- * @param options.appId Slug for the app (lowercase alphanumerics and hyphens).
157
- * @param options.name Human-readable app name embedded in the config.
158
- * @param options.rootDir Project root (defaults to `process.cwd()`).
159
- * @param options.configPath Config filename relative to root (default `odla.config.mjs`).
160
- * @param options.envs Environment names (default `["dev"]`; production is an explicit opt-in).
161
- * @param options.services Enabled services (default `["db","ai"]`).
162
- * @param options.aiProvider AI provider slug (default `"anthropic"`).
163
- * @param options.force Overwrite an existing config file instead of throwing.
164
- * @param options.stdout Optional console-like sink (defaults to `console`).
165
- */
166
- declare function initProject(options: InitOptions): void;
165
+ /** Read the owner-visible Google connection and mirror health for one env. */
166
+ declare function calendarStatus(options: CalendarLifecycleOptions): Promise<CalendarStatus>;
167
+ /** List calendars visible to the connected Google identity for config authoring. */
168
+ declare function calendarCalendars(options: CalendarLifecycleOptions): Promise<AvailableGoogleCalendar[]>;
169
+ /** Apply the public booking page setting, then complete Google consent + initial sync. */
170
+ declare function calendarConnect(options: CalendarLifecycleOptions): Promise<CalendarStatus>;
171
+ /** Ask the hosted connector for an immediate incremental/full recovery sync. */
172
+ declare function calendarResync(options: CalendarLifecycleOptions): Promise<CalendarStatus>;
173
+ /** Stop watches and delete this connection's encrypted platform token/cursors
174
+ * without purging the mirror or revoking the shared Google project grant. */
175
+ declare function calendarDisconnect(options: CalendarLifecycleOptions): Promise<CalendarStatus>;
167
176
 
168
177
  interface RunResult {
169
178
  code: number;
@@ -188,6 +197,43 @@ interface ClerkAuthConfig {
188
197
  audience?: string;
189
198
  mode?: "client" | "full";
190
199
  }
200
+ /** Read-only event selection applied by the hosted Google calendar connector. */
201
+ interface GoogleCalendarMatchConfig {
202
+ /** Mirror only events whose summary begins with this value. */
203
+ summaryPrefix?: string;
204
+ /** Require the connected identity to organize the event. Defaults to true. */
205
+ organizerSelf?: boolean;
206
+ /** Require at least one attendee. Defaults to true. */
207
+ requireAttendees?: boolean;
208
+ }
209
+ /** Google Calendar intent. OAuth credentials never belong in this config. */
210
+ interface GoogleCalendarConfig {
211
+ /** One through ten provider calendar ids to mirror in each odla environment. */
212
+ calendars: Record<OdlaEnvName, string[]>;
213
+ /** Public Google Appointment Schedule URL for static embed/link mode. */
214
+ bookingPageUrl?: Record<OdlaEnvName, string | null>;
215
+ match?: GoogleCalendarMatchConfig;
216
+ /** Store normalized attendee addresses, or only SHA-256 match keys. */
217
+ attendeePolicy?: "full" | "hashed";
218
+ }
219
+ /** The `calendar` block of `odla.config.mjs` — the Google read-mirror
220
+ * settings; valid only alongside the db service. */
221
+ interface CalendarConfig {
222
+ google: GoogleCalendarConfig;
223
+ }
224
+ /** Canonical, environment-specific config sent to the calendar controller. */
225
+ interface CalendarServiceConfig extends Record<string, unknown> {
226
+ provider: "google";
227
+ access: "read";
228
+ /** Deduplicated provider ids; the hosted connector accepts at most ten. */
229
+ calendars: string[];
230
+ match: {
231
+ organizerSelf: boolean;
232
+ requireAttendees: boolean;
233
+ summaryPrefix?: string;
234
+ };
235
+ attendeePolicy: "full" | "hashed";
236
+ }
191
237
  /** Authored `odla.config.mjs` contract consumed by doctor and provision. */
192
238
  interface OdlaProjectConfig {
193
239
  platformUrl?: string;
@@ -216,6 +262,7 @@ interface OdlaProjectConfig {
216
262
  /** Vault secret name. Defaults to @odla-ai/ai's provider default. */
217
263
  secretName?: string;
218
264
  };
265
+ calendar?: CalendarConfig;
219
266
  o11y?: {
220
267
  /** This service's name in the collector. Defaults to the app id. */
221
268
  service?: string;
@@ -274,12 +321,18 @@ interface ProvisionOptions {
274
321
  writeCredentials?: boolean;
275
322
  writeDevVars?: string | boolean;
276
323
  token?: string;
324
+ /** Existing odla account email used only when a fresh device handshake is required. */
325
+ email?: string;
277
326
  /** true forces browser launch, false disables it, undefined auto-opens only for interactive terminals. */
278
327
  open?: boolean;
279
328
  /** Test/embedding override for terminal interactivity. Defaults to stdin/stdout TTY detection. */
280
329
  interactive?: boolean;
281
330
  /** Test/embedding override for opening the approval URL. Defaults to the OS browser opener. */
282
331
  openApprovalUrl?: (url: string) => Promise<void>;
332
+ /** Test/embedding override for calendar connection polling. */
333
+ calendarPollWait?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
334
+ /** Maximum calendar consent + initial-sync wait. Defaults to ten minutes. */
335
+ calendarPollTimeoutMs?: number;
283
336
  /** Explicit consent for a non-dry-run plan containing `prod` or `production`. */
284
337
  yes?: boolean;
285
338
  fetch?: typeof fetch;
@@ -303,10 +356,89 @@ interface ProvisionPlan {
303
356
  interface SmokeOptions {
304
357
  configPath: string;
305
358
  env?: string;
359
+ /** Developer-token override used only for owner-visible calendar health. */
360
+ token?: string;
361
+ /** Existing odla account email used only when a fresh device handshake is required. */
362
+ email?: string;
363
+ open?: boolean;
364
+ interactive?: boolean;
365
+ openApprovalUrl?: (url: string) => Promise<void>;
306
366
  fetch?: typeof fetch;
307
367
  stdout?: Pick<typeof console, "log" | "error">;
308
368
  }
309
369
 
370
+ /** The only Google OAuth scope the platform ever requests: read-only calendar events. */
371
+ declare const GOOGLE_CALENDAR_READ_SCOPE = "https://www.googleapis.com/auth/calendar.events.readonly";
372
+ /** Resolve the checked-in calendar block into one controller-safe env payload. */
373
+ declare function calendarServiceConfig(cfg: LoadedProjectConfig, env: string): CalendarServiceConfig;
374
+ /** Public Appointment Schedule URL to apply separately from connector config. */
375
+ declare function calendarBookingPageUrl(cfg: LoadedProjectConfig, env: string): string | null | undefined;
376
+
377
+ interface DoctorOptions {
378
+ configPath: string;
379
+ stdout?: Pick<typeof console, "log" | "error">;
380
+ }
381
+ /**
382
+ * Validate and summarize an odla project config entirely offline — no network
383
+ * calls and no file writes. Loads `configPath`, builds the provision plan, and
384
+ * resolves the schema and rules (synthesizing deny-all rules from the schema
385
+ * when `db.rules` is omitted and `db.defaultRules` isn't `false`), then prints a
386
+ * summary line for the app, envs, services, schema entity count, rules namespace
387
+ * count, and AI provider.
388
+ *
389
+ * It then collects warnings for the mistakes provision can't fix silently: a
390
+ * schema with no entities, a rules namespace with no matching entity, the `ai`
391
+ * service enabled without an `ai.provider`, `auth.clerk` entries that reference
392
+ * an unset env var (`$FOO`), an `ai.keyEnv` that isn't set (provider key upload
393
+ * will be skipped), and — when `o11y` is enabled — any env whose local
394
+ * credentials lack an ingest token. It also folds in the shared rule linter,
395
+ * git-tracked secret-shaped files, and wrangler config warnings. Prints `ok`
396
+ * when clean, otherwise the warning list. Purely advisory: never throws on
397
+ * warnings and never mutates anything.
398
+ *
399
+ * @param options.configPath Path to the `odla.config.mjs` to inspect.
400
+ * @param options.stdout Optional console-like sink (defaults to `console`).
401
+ */
402
+ declare function doctor(options: DoctorOptions): Promise<void>;
403
+
404
+ interface InitOptions {
405
+ rootDir?: string;
406
+ configPath?: string;
407
+ appId: string;
408
+ name: string;
409
+ envs?: string[];
410
+ services?: string[];
411
+ aiProvider?: string;
412
+ force?: boolean;
413
+ stdout?: Pick<typeof console, "log" | "error">;
414
+ }
415
+ /**
416
+ * Scaffold a new odla project into `rootDir` (default: cwd). Writes an
417
+ * `odla.config.mjs` (default name, overridable via `configPath`) plus starter
418
+ * `src/odla/schema.mjs` (a single `notes` entity) and `src/odla/rules.mjs`
419
+ * (deny-all), and creates the `src/odla` and `.odla` directories. Also runs
420
+ * `ensureGitignore` so the local token/credentials paths are ignored.
421
+ *
422
+ * Fully local and synchronous — no network calls. The config file is only
423
+ * written when it doesn't already exist unless `force` is set (otherwise it
424
+ * throws); the schema/rules files are written only when missing (never
425
+ * overwritten, even with `force`). `appId` must match `^[a-z0-9][a-z0-9-]*$` or
426
+ * it throws. Defaults: `envs` → `["dev"]`, `services` → `["db","ai"]`,
427
+ * `aiProvider` → `"anthropic"` (which also picks the `keyEnv`, e.g.
428
+ * `ANTHROPIC_API_KEY`/`OPENAI_API_KEY`/`GOOGLE_API_KEY`).
429
+ *
430
+ * @param options.appId Slug for the app (lowercase alphanumerics and hyphens).
431
+ * @param options.name Human-readable app name embedded in the config.
432
+ * @param options.rootDir Project root (defaults to `process.cwd()`).
433
+ * @param options.configPath Config filename relative to root (default `odla.config.mjs`).
434
+ * @param options.envs Environment names (default `["dev"]`; production is an explicit opt-in).
435
+ * @param options.services Enabled services (default `["db","ai"]`).
436
+ * @param options.aiProvider AI provider slug (default `"anthropic"`).
437
+ * @param options.force Overwrite an existing config file instead of throwing.
438
+ * @param options.stdout Optional console-like sink (defaults to `console`).
439
+ */
440
+ declare function initProject(options: InitOptions): void;
441
+
310
442
  /**
311
443
  * Provision an app end-to-end from its config — the primary deploy path, and
312
444
  * (apart from key rotation) idempotent, so re-running is safe. Obtains a
@@ -319,14 +451,17 @@ interface SmokeOptions {
319
451
  * (mode 0600, gitignored) and, when requested, `.dev.vars`.
320
452
  *
321
453
  * The developer token comes from (in order) `options.token`, `$ODLA_DEV_TOKEN`,
322
- * the cached `.odla` token, or a fresh device handshake — which prints a user
323
- * code + approval URL and, in interactive terminals, auto-opens the browser
454
+ * the cached `.odla` token, or a fresh email-bound device handshake — which
455
+ * prints a user code for the same signed-in account to review and, in
456
+ * interactive terminals, auto-opens the browser
324
457
  * (`open: true`/`false` forces/suppresses it). Network error bodies pass through
325
458
  * `redactSecrets` before display.
326
459
  *
327
460
  * @param options.dryRun Print the resolved plan and return before any network call/write.
328
461
  * @param options.rotateKeys Rotate db keys and o11y tokens.
329
462
  * @param options.rotateO11yToken Rotate only the o11y token.
463
+ * @param options.email Existing odla account email for a fresh handshake;
464
+ * this is an identity hint, never a password or session credential.
330
465
  * @param options.pushSecrets Preflight Wrangler, then push each env's configured
331
466
  * Worker secrets immediately after credential provisioning.
332
467
  * @param options.writeDevVars `true`/a path writes `.dev.vars`; `writeCredentials: false` skips the creds file.
@@ -384,6 +519,8 @@ interface SecretsSetOptions {
384
519
  yes?: boolean;
385
520
  /** Developer token override; defaults to $ODLA_DEV_TOKEN, the cached token, or a device handshake. */
386
521
  token?: string;
522
+ /** Existing odla account email used only when a fresh handshake is required. */
523
+ email?: string;
387
524
  open?: boolean;
388
525
  interactive?: boolean;
389
526
  openApprovalUrl?: (url: string) => Promise<void>;
@@ -666,4 +803,4 @@ declare function installSkill(options?: SkillInstallOptions): SkillInstallResult
666
803
  */
667
804
  declare function smoke(options: SmokeOptions): Promise<void>;
668
805
 
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 };
806
+ export { AGENT_HARNESSES, type AdminAiOptions, type AgentHarness, type AgentHarnessSelector, type AvailableGoogleCalendar, CAPABILITIES, type CalendarConfig, type CalendarConnectionState, type CalendarLifecycleOptions, type CalendarServiceConfig, type CalendarStatus, type CliDependencies, type ConnectGitHubSecuritySourceOptions, type DisconnectGitHubSecuritySourceOptions, type FollowHostedSecurityJobOptions, GOOGLE_CALENDAR_READ_SCOPE, type GetHostedSecurityIntentOptions, type GetHostedSecurityJobOptions, type GoogleCalendarConfig, type GoogleCalendarMatchConfig, 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, calendarBookingPageUrl, calendarCalendars, calendarConnect, calendarDisconnect, calendarResync, calendarServiceConfig, calendarStatus, 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
@@ -2,8 +2,16 @@
2
2
  import {
3
3
  AGENT_HARNESSES,
4
4
  CAPABILITIES,
5
+ GOOGLE_CALENDAR_READ_SCOPE,
5
6
  SYSTEM_AI_PURPOSES,
6
7
  adminAi,
8
+ calendarBookingPageUrl,
9
+ calendarCalendars,
10
+ calendarConnect,
11
+ calendarDisconnect,
12
+ calendarResync,
13
+ calendarServiceConfig,
14
+ calendarStatus,
7
15
  connectGitHubSecuritySource,
8
16
  disconnectGitHubSecuritySource,
9
17
  doctor,
@@ -30,12 +38,20 @@ import {
30
38
  secretsSetClerkKey,
31
39
  smoke,
32
40
  startHostedSecurityJob
33
- } from "./chunk-MJYQ7YDH.js";
41
+ } from "./chunk-MWVKOIGR.js";
34
42
  export {
35
43
  AGENT_HARNESSES,
36
44
  CAPABILITIES,
45
+ GOOGLE_CALENDAR_READ_SCOPE,
37
46
  SYSTEM_AI_PURPOSES,
38
47
  adminAi,
48
+ calendarBookingPageUrl,
49
+ calendarCalendars,
50
+ calendarConnect,
51
+ calendarDisconnect,
52
+ calendarResync,
53
+ calendarServiceConfig,
54
+ calendarStatus,
39
55
  connectGitHubSecuritySource,
40
56
  disconnectGitHubSecuritySource,
41
57
  doctor,