@quantiya/codevibe-codex-plugin 2.0.111 → 2.0.113

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.
Files changed (30) hide show
  1. package/dist/native-launch.js +1 -1
  2. package/dist/server.js +1 -1
  3. package/node_modules/@quantiya/codevibe-core/dist/index.d.ts +3 -3
  4. package/node_modules/@quantiya/codevibe-core/dist/index.js +689 -669
  5. package/node_modules/@quantiya/codevibe-core/dist/local-executor/implementor-argv.d.ts +11 -14
  6. package/node_modules/@quantiya/codevibe-core/dist/local-executor/index.d.ts +1 -1
  7. package/node_modules/@quantiya/codevibe-core/dist/orchestration/agent-model-catalog.d.ts +11 -0
  8. package/node_modules/@quantiya/codevibe-core/dist/orchestration/agent-model-settings.d.ts +56 -0
  9. package/node_modules/@quantiya/codevibe-core/dist/orchestration/detect-agents.d.ts +2 -1
  10. package/node_modules/@quantiya/codevibe-core/dist/orchestration/index.d.ts +1 -0
  11. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/advisory-fingerprint/git-availability.d.ts +30 -0
  12. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/advisory-fingerprint/git-classify.d.ts +34 -0
  13. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/advisory-fingerprint/git-runner.d.ts +24 -0
  14. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/advisory-fingerprint/repo-record.d.ts +47 -0
  15. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/advisory-fingerprint/walk.d.ts +34 -0
  16. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/brainstorm-quorum.d.ts +14 -4
  17. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +5107 -3544
  18. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/ImplementorSetupWizard.d.ts +1 -1
  19. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/ReviewerSetupWizard.d.ts +3 -14
  20. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/context-store.d.ts +3 -58
  21. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/implementor-preference.d.ts +3 -0
  22. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/index.d.ts +1 -1
  23. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/model-resolution.d.ts +40 -0
  24. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/reviewer-preference.d.ts +25 -0
  25. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/slash-routes/implementors.d.ts +8 -3
  26. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/slash-routes/reviewers.d.ts +5 -27
  27. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/types.d.ts +4 -0
  28. package/node_modules/@quantiya/codevibe-core/dist/substrate-launch/apikey-bootstrap.d.ts +5 -0
  29. package/node_modules/@quantiya/codevibe-core/package.json +1 -1
  30. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { ImplementorWizardState } from '../types';
3
3
  import { type ImplementorPreference } from '../implementor-preference';
4
- export declare const IMPLEMENTOR_WIZARD_MAX_ROWS = 12;
4
+ export declare const IMPLEMENTOR_WIZARD_MAX_ROWS: number;
5
5
  export interface ImplementorSetupWizardProps {
6
6
  wizard: ImplementorWizardState;
7
7
  onSubmit: (pref: ImplementorPreference) => void;
@@ -1,24 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import type { ReviewerWizardState } from '../types';
3
3
  import { type UpdateReviewerPolicyInput } from '../../types/reviewer';
4
- /**
5
- * Worst-case wizard height in rows: rounded border (2) + title (1) + current
6
- * context (1) + question (1) + the bounded role list (ROLE_LIST_LIMIT) + hint
7
- * (1). Exported so `<OrchestrationApp>` reserves this in the #469 live-region
8
- * height cap while a wizard is open (it renders in the InputBar's slot, so the
9
- * cap must budget for the wizard, not the shorter InputBar).
10
- */
11
4
  export declare const WIZARD_MAX_ROWS: number;
5
+ type AgentKind = 'CLAUDE' | 'CODEX' | 'ANTIGRAVITY';
12
6
  export interface ReviewerSetupWizardProps {
13
7
  wizard: ReviewerWizardState;
14
- /**
15
- * Persist the chosen policy. The parent owns the network write + result
16
- * advisory + `REVIEWER_WIZARD_CLOSE` (which unmounts this component). Called
17
- * exactly once per wizard run; the component shows a "Saving…" step until the
18
- * parent closes the modal.
19
- */
20
8
  onSubmit: (input: UpdateReviewerPolicyInput) => void;
21
- /** Abandon the wizard with NO policy change (Esc / explicit Cancel). */
9
+ onSubmitAgentModels?: (models: Partial<Record<AgentKind, string | null>>) => void;
22
10
  onCancel: () => void;
23
11
  }
24
12
  export declare function ReviewerSetupWizard(props: ReviewerSetupWizardProps): React.ReactElement;
13
+ export {};
@@ -1,4 +1,5 @@
1
1
  import type { StructuralSummary, StructuralSummaryGenerator, RepoSummary } from '../structural-summary/types';
2
+ import { type AdvisoryProbeOptions, type AdvisoryWorkspaceFingerprintProbe } from './advisory-fingerprint/walk';
2
3
  import type { Tier } from './types';
3
4
  export declare function setStrictDirectorySyncFaultForTests(fault: {
4
5
  phase: 'open' | 'sync';
@@ -403,63 +404,8 @@ export declare const WORKSPACE_TREE_FINGERPRINT_TIMEOUT_MS = 3000;
403
404
  export declare function probeWorkspaceTreeFingerprint(workspaceRoot: string, options?: {
404
405
  timeoutMs?: number;
405
406
  }): Promise<WorkspaceTreeFingerprintProbe>;
406
- /** Budget of the git-free walk below; past it the probe fails (fail closed). */
407
- export declare const ADVISORY_WALK_FINGERPRINT_TIMEOUT_MS = 10000;
408
- /** Entry cap of the git-free walk below; past it the probe fails (fail closed). */
409
- export declare const ADVISORY_WALK_FINGERPRINT_MAX_ENTRIES = 200000;
410
- export type AdvisoryWorkspaceFingerprintProbe = {
411
- kind: 'fingerprint';
412
- method: 'git' | 'walk';
413
- value: string;
414
- entries: number;
415
- durationMs: number;
416
- } | {
417
- kind: 'probe-failed';
418
- method: 'git' | 'walk' | 'marker';
419
- reason: string;
420
- durationMs: number;
421
- };
422
- /**
423
- * The before/after fingerprint of a read-only advisory turn (`@agent` /
424
- * `@all`), which fails closed when the two differ or cannot be taken.
425
- *
426
- * Inside a git repository (a `.git` entry or git-directory shape in the workspace
427
- * or any ancestor that git accepts, or a repository-locating GIT_* variable) this
428
- * is {@link probeWorkspaceTreeFingerprint}, unchanged. A folder that is not a
429
- * repository — no `.git` at all, a `.git` that git rejects (git's own "not a git
430
- * repository" failure), or no `git` binary (ENOENT; the macOS shim without the
431
- * command-line tools is a git failure, so that case fails closed) — is walked
432
- * instead; with no `.git` marker `git` is never run — 2.0 workspaces are git-free,
433
- * and on a Mac without the command-line tools `/usr/bin/git` opens an install
434
- * dialog. A marker check that cannot conclude refuses the turn. Core 2.0.77 used
435
- * the git probe for every folder, so every advisory turn outside a repository
436
- * failed closed before any agent ran.
437
- *
438
- * The walk records the root's mode and each entry's relative path, type and mode; for files and
439
- * symlinks also size, mtime (rounded to the nearest second) and inode, and a symlink's target.
440
- * ctime is left out and mtime is coarse on purpose: in an iCloud-synced folder
441
- * the sync client moves ctime and file flags without changing content, and a
442
- * file downloaded again because the agent read it comes back with its mtime off
443
- * by nanoseconds; without git's content index the walk cannot tell those apart
444
- * from edits, so they would fail the turn. The cost is that a same-size in-place
445
- * rewrite whose new mtime rounds to the same whole second as the old one (up to
446
- * half a second either side of it), or whose mtime is put back, goes unseen; the agents are read-only by their own
447
- * invocations, and this check is the backstop. Symlinks are not followed. A
448
- * subfolder or entry that cannot be read is recorded with its error code (so
449
- * changes inside it go unseen), but a root that cannot be listed fails the
450
- * probe. A deadline races the asynchronous work — a stalled `readdir` or `lstat`
451
- * cannot hold the turn, though the stalled call itself keeps its libuv worker
452
- * until the OS answers — and an entry cap is applied while a folder is read; past
453
- * either it is `probe-failed`. The final sort and hash are synchronous and cannot
454
- * be interrupted: if they run past the deadline, the result is `probe-failed`
455
- * (`timeout`) when they finish, never a late success. The method is part of the value,
456
- * so a `.git` that appears during the turn also reads as a change. Never
457
- * throws.
458
- */
459
- export declare function probeAdvisoryWorkspaceFingerprint(workspaceRoot: string, options?: {
460
- timeoutMs?: number;
461
- maxEntries?: number;
462
- }): Promise<AdvisoryWorkspaceFingerprintProbe>;
407
+ export { ADVISORY_WALK_FINGERPRINT_TIMEOUT_MS, ADVISORY_WALK_FINGERPRINT_MAX_ENTRIES, type AdvisoryWorkspaceFingerprintProbe, type AdvisoryProbeOptions, } from './advisory-fingerprint/walk';
408
+ export declare const probeAdvisoryWorkspaceFingerprint: (workspaceRoot: string, options?: AdvisoryProbeOptions) => Promise<AdvisoryWorkspaceFingerprintProbe>;
463
409
  /**
464
410
  * Hash the generation inputs (§4.2 conjunct (d)). A `StructuralSummary` is a
465
411
  * pure function of `tree content × generation inputs`; this hashes the
@@ -649,4 +595,3 @@ export declare function resolveContextRef(deps: {
649
595
  * §5.4) — only the `directoryTree` is trimmed to the selected subtrees.
650
596
  */
651
597
  export declare function sliceSummary(summary: StructuralSummary, selector: SliceSelector, workspaceRoot?: string): RepoSummary[];
652
- export {};
@@ -4,6 +4,7 @@ export interface ImplementorPreference {
4
4
  schemaVersion: 1;
5
5
  priorityOrder: ActiveImplementorAgentKind[];
6
6
  confirmBeforeStart: boolean;
7
+ models?: Partial<Record<ActiveImplementorAgentKind, string>>;
7
8
  updatedAt: string;
8
9
  }
9
10
  export declare function implementorPreferenceFilePath(): string;
@@ -20,5 +21,7 @@ export declare function readImplementorPreferenceSync(): ImplementorPreference;
20
21
  export declare function saveImplementorPreference(patch: {
21
22
  priorityOrder?: ActiveImplementorAgentKind[];
22
23
  confirmBeforeStart?: boolean;
24
+ models?: Partial<Record<ActiveImplementorAgentKind, string | null>>;
25
+ resetModels?: boolean;
23
26
  }): Promise<ImplementorPreference>;
24
27
  export declare function resetImplementorPreference(): Promise<ImplementorPreference>;
@@ -632,7 +632,7 @@ export declare function readOnlyAgentPrompt(args: {
632
632
  folderListing?: string;
633
633
  }): string;
634
634
  export declare function readOnlyAdvisoryAllowsRepositoryTools(_input: string): boolean;
635
- export declare function applyReadOnlyAdvisoryToolPolicy(agent: LocalExecutorAgentKind, plan: ReturnType<typeof buildImplementorArgv>, allowRepositoryTools: boolean, workingDir?: string, attachments?: readonly string[]): ReturnType<typeof buildImplementorArgv>;
635
+ export declare function applyReadOnlyAdvisoryToolPolicy(agent: LocalExecutorAgentKind, plan: ReturnType<typeof buildImplementorArgv>, allowRepositoryTools: boolean, workingDir?: string, attachments?: readonly string[], model?: string | null): ReturnType<typeof buildImplementorArgv>;
636
636
  export declare const BRAINSTORM_PANEL_ADVISORY_TIMEOUT_MS = 1800000;
637
637
  /**
638
638
  * [#637] The Claude CLI reports a usage-limit INSIDE its stdout result envelope
@@ -0,0 +1,40 @@
1
+ import type { AgentKind } from '../local-executor/types';
2
+ import type { ReviewerAgentSpec } from '../types/reviewer';
3
+ export declare function resolveExplicitCodevibeEnvModel(agent: string, env?: NodeJS.ProcessEnv): string | null;
4
+ /**
5
+ * Resolves the explicit `--model` override for Implementor-family scenarios:
6
+ * - Task implementor (`plan` / `execute`, single-task & Agent Teams)
7
+ * - Conflict resolver (CP-14 WB2 agentic resolver & Wave B bounded resolver)
8
+ * - Team decomposer (`start_team` decomposition)
9
+ *
10
+ * Returns `null` when unset so the spawned agent CLI honors the user's machine default.
11
+ */
12
+ export declare function resolveImplementorScenarioModel(agent: AgentKind | string, env?: NodeJS.ProcessEnv): string | null;
13
+ export interface ReviewerModelLookupOptions {
14
+ env?: NodeJS.ProcessEnv;
15
+ configuredAgentModels?: Partial<Record<string, string | null>>;
16
+ seats?: ReadonlyArray<Pick<ReviewerAgentSpec, 'seatId' | 'agent' | 'modelHint'>> | null;
17
+ }
18
+ /**
19
+ * Resolves the explicit `model_hint` for a specific Quorum Reviewer Seat (`seatId`).
20
+ * Precedence:
21
+ * 1. Explicit `CODEVIBE_<AGENT>_MODEL` env override
22
+ * 2. Custom seat `modelHint` from `/reviewer-setup` (`seats` or cached cloud seats)
23
+ * 3. Per-agent reviewer model override from `/reviewer-setup` (`reviewer-preference.json`)
24
+ * 4. Caller-supplied `configuredAgentModels[agent]` (host env default / test injection)
25
+ * 5. `null` (honors user's machine default)
26
+ */
27
+ export declare function resolveReviewerSeatModel(seatId: number, agentKind: string, opts?: ReviewerModelLookupOptions): string | null;
28
+ /**
29
+ * Resolves the explicit model override for agent-addressed Reviewer/Advisory scenarios:
30
+ * - Wave B Tier-2 final-tip review
31
+ * - Attributed `@agent` advisory turns (`@claude`, `@codex`, `@agy`, `@all`)
32
+ *
33
+ * Precedence:
34
+ * 1. Explicit `CODEVIBE_<AGENT>_MODEL` env override
35
+ * 2. Per-agent reviewer model override from `/reviewer-setup` (`reviewer-preference.json`)
36
+ * 3. First custom seat `modelHint` matching `agent` from `/reviewer-setup`
37
+ * 4. Caller-supplied `configuredAgentModels[agent]`
38
+ * 5. `null` (honors user's machine default)
39
+ */
40
+ export declare function resolveReviewerAgentModel(agent: AgentKind | string, opts?: ReviewerModelLookupOptions): string | null;
@@ -0,0 +1,25 @@
1
+ import type { ReviewerAgentSpec } from '../types/reviewer';
2
+ import { type ActiveImplementorAgentKind } from './implementor-preference';
3
+ export interface CachedReviewerSeatPreference {
4
+ seatId: number;
5
+ role: string;
6
+ agent: string;
7
+ modelHint?: string;
8
+ }
9
+ export interface ReviewerPreference {
10
+ schemaVersion: 1;
11
+ models?: Partial<Record<ActiveImplementorAgentKind, string>>;
12
+ cachedSeats?: CachedReviewerSeatPreference[];
13
+ updatedAt: string;
14
+ }
15
+ export declare function reviewerPreferenceFilePath(): string;
16
+ export declare function reviewerSeatsCacheFilePath(): string;
17
+ export declare function defaultReviewerPreference(): ReviewerPreference;
18
+ export declare function readReviewerPreferenceSync(): ReviewerPreference;
19
+ export declare function saveReviewerPreference(patch: {
20
+ models?: Partial<Record<ActiveImplementorAgentKind, string | null>>;
21
+ resetModels?: boolean;
22
+ cachedSeats?: readonly ReviewerAgentSpec[] | null;
23
+ }): Promise<ReviewerPreference>;
24
+ export declare function syncCachedReviewerSeats(seats: readonly ReviewerAgentSpec[] | null | undefined): Promise<void>;
25
+ export declare function resetReviewerPreference(): Promise<ReviewerPreference>;
@@ -1,8 +1,9 @@
1
1
  import type { AgentKind } from '../../local-executor/types';
2
2
  import type { Tier } from '../types';
3
- import { detectInstalledAgents } from '../../orchestration';
4
- import { type ImplementorPreference, readImplementorPreferenceSync } from '../implementor-preference';
3
+ import { detectInstalledAgents, discoverAgentModelCatalog, discoverAllAgentModelCatalogs } from '../../orchestration';
4
+ import { type ActiveImplementorAgentKind, type ImplementorPreference, readImplementorPreferenceSync } from '../implementor-preference';
5
5
  export declare function displayAgentName(agent: string): string;
6
+ export declare function formatAgentModelLine(agent: ActiveImplementorAgentKind, overrideModel: string | undefined, machineDefault: string | null): string;
6
7
  /**
7
8
  * Human-readable, ANSI-free rendering of implementor preference & multi-track allocation.
8
9
  */
@@ -14,4 +15,8 @@ export declare function runImplementorsCli(detectFn?: typeof detectInstalledAgen
14
15
  /**
15
16
  * Handles CLI invocation of `/implementor-setup <args>`.
16
17
  */
17
- export declare function runImplementorSetupCli(args: string, detectFn?: typeof detectInstalledAgents): Promise<string>;
18
+ export declare function runImplementorSetupCli(args: string, detectFn?: typeof detectInstalledAgents, discoverCatalogFn?: typeof discoverAgentModelCatalog, discoverAllCatalogsFn?: typeof discoverAllAgentModelCatalogs): Promise<string>;
19
+ export declare function loadImplementorWizardData(detected: readonly AgentKind[]): {
20
+ installedAgents: AgentKind[];
21
+ currentPreference: ImplementorPreference;
22
+ };
@@ -1,43 +1,21 @@
1
1
  import type { AppSyncClient } from '../../appsync';
2
2
  import type { ReviewerAgentSpec, ReviewerQuorumSettings, UserReviewerPolicySnapshot } from '../../types/reviewer';
3
- import { detectInstalledAgents } from '../../orchestration';
4
- /**
5
- * Human-readable, ANSI-free rendering of a reviewer-policy snapshot. Renders ONLY
6
- * the readable+writable policy surface (detected agents + the reviewer panel). The
7
- * legacy `orchestrationEnabledDefault` opt-in was removed in CP-1 (2.0
8
- * orchestration is shell-driven, not a stored flag — `queries.ts` does not select
9
- * it: selecting it 401s on a post-CP-1 schema), so it is intentionally NOT shown
10
- * (it would always render a misleading default).
11
- */
3
+ import { type AgentModelCatalog, type ConfigurableAgentKind, detectInstalledAgents, discoverAgentModelCatalog, discoverAllAgentModelCatalogs } from '../../orchestration';
12
4
  export declare function formatReviewerPolicy(snapshot: UserReviewerPolicySnapshot): string;
13
5
  export declare function formatPassRule(settings: ReviewerQuorumSettings): string;
14
- /**
15
- * Fetches + formats the user's reviewer panel. Re-pushes the locally detected
16
- * agents (idempotent) and renders the returned snapshot. Never throws — returns
17
- * a friendly error line so `/reviewers` can't crash the shell turn.
18
- */
19
6
  export declare function runReviewersCli(client: AppSyncClient): Promise<string>;
20
- /**
21
- * Tier-agnostic payload for opening the `/reviewer-setup` wizard: the host's
22
- * detected agents + the user's current policy. The caller folds in the session
23
- * `tier` to build the full `ReviewerWizardState`.
24
- */
25
7
  export interface ReviewerWizardData {
26
8
  installedAgents: ReturnType<typeof detectInstalledAgents>;
27
9
  currentSeats: ReviewerAgentSpec[] | null;
28
10
  currentQuorum?: ReviewerQuorumSettings | null;
11
+ modelCatalogs?: Partial<Record<ConfigurableAgentKind, AgentModelCatalog>>;
12
+ currentAgentModels?: Partial<Record<ConfigurableAgentKind, string>>;
29
13
  }
30
- /**
31
- * Gathers everything the interactive wizard needs to render synchronously:
32
- * detects installed agents (the only valid reviewer choices) and reads back the
33
- * current policy via the idempotent `updateAvailableAgents` round-trip. Never
34
- * throws — returns a `{ ok:false, message }` the caller surfaces as an advisory
35
- * (no agents installed, or a transport error) instead of opening an empty modal.
36
- */
37
- export declare function loadReviewerWizardData(client: AppSyncClient, detectFn?: typeof detectInstalledAgents): Promise<{
14
+ export declare function loadReviewerWizardData(client: AppSyncClient, detectFn?: typeof detectInstalledAgents, discoverCatalogsFn?: typeof discoverAllAgentModelCatalogs): Promise<{
38
15
  ok: true;
39
16
  data: ReviewerWizardData;
40
17
  } | {
41
18
  ok: false;
42
19
  message: string;
43
20
  }>;
21
+ export declare function runReviewerSetupCli(args: string, client?: AppSyncClient, detectFn?: typeof detectInstalledAgents, discoverCatalogFn?: typeof discoverAgentModelCatalog, discoverAllCatalogsFn?: typeof discoverAllAgentModelCatalogs): Promise<string>;
@@ -4,6 +4,7 @@ import type { GatePromptEnvelope, ReviewSummaryPanelModel } from './gate-prompts
4
4
  import type { TaskProgressEvent } from './task-progress';
5
5
  import type { ReviewerAgentSpec, ReviewerQuorumSettings } from '../types/reviewer';
6
6
  import type { ImplementorPreference } from './implementor-preference';
7
+ import type { AgentModelCatalog, ConfigurableAgentKind } from '../orchestration/agent-model-catalog';
7
8
  import type { AgentKind as LocalExecutorAgentKind } from '../local-executor/types';
8
9
  import type { WorkItemInput } from '../local-executor/task-group-types';
9
10
  /**
@@ -989,6 +990,8 @@ export interface ReviewerWizardState {
989
990
  installedAgents: Array<'CLAUDE' | 'GEMINI' | 'CODEX' | 'ANTIGRAVITY'>;
990
991
  currentSeats: ReviewerAgentSpec[] | null;
991
992
  currentQuorum?: ReviewerQuorumSettings | null;
993
+ modelCatalogs?: Partial<Record<ConfigurableAgentKind, AgentModelCatalog>>;
994
+ currentAgentModels?: Partial<Record<ConfigurableAgentKind, string>>;
992
995
  }
993
996
  /**
994
997
  * `/implementor-setup` interactive wizard state.
@@ -996,6 +999,7 @@ export interface ReviewerWizardState {
996
999
  export interface ImplementorWizardState {
997
1000
  installedAgents: AgentKind[];
998
1001
  currentPreference: ImplementorPreference;
1002
+ modelCatalogs?: Partial<Record<ConfigurableAgentKind, AgentModelCatalog>>;
999
1003
  }
1000
1004
  /**
1001
1005
  * §5.1 LOCK lines 502-513. Discriminated union over every state
@@ -1,5 +1,6 @@
1
1
  import type { VendorProvider } from "../credential-broker/types";
2
2
  import type { WorkspaceRootAuthority } from "../local-executor/workspace-authority";
3
+ import { type SafeClaudeModelSettings, type SafeCodexModelConfig } from "../orchestration/agent-model-catalog";
3
4
  /** The fixed filenames inside the bootstrap dir (host + sandbox agree). */
4
5
  export declare const HELPER_SCRIPT_NAME = "broker-apikey-helper.sh";
5
6
  export declare const TOKEN_FILE_NAME = "broker-token";
@@ -73,6 +74,10 @@ export interface ApiKeyBootstrapInput {
73
74
  * check (no workdir to collide with).
74
75
  */
75
76
  workdir?: string;
77
+ /** Optional sanitized host Claude model/effort defaults to seed into settings.json. */
78
+ claudeModelSettings?: SafeClaudeModelSettings;
79
+ /** Optional sanitized host Codex model/reasoning defaults to seed into config.toml. */
80
+ codexModelConfig?: SafeCodexModelConfig;
76
81
  }
77
82
  /**
78
83
  * A materialized apiKeyHelper bootstrap. Holds the host paths so the LE can
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quantiya/codevibe-core",
3
- "version": "2.0.95",
3
+ "version": "2.0.97",
4
4
  "description": "Core library for CodeVibe plugins - shared keychain, crypto, AppSync, and auth functionality",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quantiya/codevibe-codex-plugin",
3
- "version": "2.0.111",
3
+ "version": "2.0.113",
4
4
  "description": "Control OpenAI Codex CLI from your iPhone and Android — real-time sync, approve file edits, send prompts by voice. Part of CodeVibe.",
5
5
  "main": "dist/server.js",
6
6
  "codevibe": {
@@ -47,7 +47,7 @@
47
47
  "node": ">=22.0.0"
48
48
  },
49
49
  "dependencies": {
50
- "@quantiya/codevibe-core": "^2.0.95",
50
+ "@quantiya/codevibe-core": "^2.0.97",
51
51
  "@quantiya/quorum-core": "^1.0.1",
52
52
  "chokidar": "^4.0.0",
53
53
  "dotenv": "^16.6.1",