@quantiya/codevibe-claude-plugin 2.0.43 → 2.0.44

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 (21) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/node_modules/@quantiya/codevibe-core/dist/index.js +500 -498
  3. package/node_modules/@quantiya/codevibe-core/dist/local-executor/agentic-resolver-flag.d.ts +4 -7
  4. package/node_modules/@quantiya/codevibe-core/dist/local-executor/index.d.ts +1 -1
  5. package/node_modules/@quantiya/codevibe-core/dist/local-executor/merge-train.d.ts +1 -1
  6. package/node_modules/@quantiya/codevibe-core/dist/local-executor/reviewer-rationale-flag.d.ts +3 -8
  7. package/node_modules/@quantiya/codevibe-core/dist/local-executor/team-execution-flag.d.ts +0 -6
  8. package/node_modules/@quantiya/codevibe-core/dist/local-model/manager.d.ts +5 -3
  9. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +41855 -41025
  10. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/ImplementorSetupWizard.d.ts +10 -0
  11. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/implementor-preference.d.ts +24 -0
  12. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/index.d.ts +20 -0
  13. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/non-tty-fallback.d.ts +2 -3
  14. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/quorum-loop.d.ts +25 -33
  15. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/slash-routes/implementors.d.ts +17 -0
  16. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/team-decompose.d.ts +9 -8
  17. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/types.d.ts +48 -0
  18. package/node_modules/@quantiya/codevibe-core/dist/planner/types.d.ts +2 -2
  19. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/types.d.ts +12 -12
  20. package/node_modules/@quantiya/codevibe-core/package.json +1 -1
  21. package/package.json +2 -2
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import type { ImplementorWizardState } from '../types';
3
+ import { type ImplementorPreference } from '../implementor-preference';
4
+ export declare const IMPLEMENTOR_WIZARD_MAX_ROWS = 12;
5
+ export interface ImplementorSetupWizardProps {
6
+ wizard: ImplementorWizardState;
7
+ onSubmit: (pref: ImplementorPreference) => void;
8
+ onCancel: () => void;
9
+ }
10
+ export declare function ImplementorSetupWizard(props: ImplementorSetupWizardProps): React.ReactElement;
@@ -0,0 +1,24 @@
1
+ export type ActiveImplementorAgentKind = 'CLAUDE' | 'CODEX' | 'ANTIGRAVITY';
2
+ export declare const DEFAULT_IMPLEMENTOR_PRIORITY: readonly ActiveImplementorAgentKind[];
3
+ export interface ImplementorPreference {
4
+ schemaVersion: 1;
5
+ priorityOrder: ActiveImplementorAgentKind[];
6
+ confirmBeforeStart: boolean;
7
+ updatedAt: string;
8
+ }
9
+ export declare function implementorPreferenceFilePath(): string;
10
+ export declare function defaultImplementorPreference(): ImplementorPreference;
11
+ export declare function normalizeImplementorAgent(val: string): ActiveImplementorAgentKind | null;
12
+ /**
13
+ * Synchronously reads the implementor preference. Fails soft: returns defaults
14
+ * if the file is absent or corrupt.
15
+ */
16
+ export declare function readImplementorPreferenceSync(): ImplementorPreference;
17
+ /**
18
+ * Saves updated implementor preference to ~/.codevibe/implementor-preference.json.
19
+ */
20
+ export declare function saveImplementorPreference(patch: {
21
+ priorityOrder?: ActiveImplementorAgentKind[];
22
+ confirmBeforeStart?: boolean;
23
+ }): Promise<ImplementorPreference>;
24
+ export declare function resetImplementorPreference(): Promise<ImplementorPreference>;
@@ -47,8 +47,14 @@ import type { EnsureFreshResult } from './context-store';
47
47
  import { contextItemOccurrence, type ContextDurabilityReceipt } from './context-items';
48
48
  import { renderRehydratedSessionContext } from './context-compaction';
49
49
  import type { AgentKind as LocalExecutorAgentKind } from '../local-executor/types';
50
+ import type { OrchestrationState as OrchestrationStateType } from './types';
50
51
  import { type TaskProgressEvent } from './task-progress';
51
52
  import { taskLabel } from './task-label';
53
+ /**
54
+ * Gathers the implementor agents currently active across single-implementor running tasks
55
+ * and multi-track Agent Teams tracks. Used for multi-track priority allocation.
56
+ */
57
+ export declare function getInFlightImplementorAgents(state: OrchestrationStateType): LocalExecutorAgentKind[];
52
58
  /**
53
59
  * P46a (Stage 1 r1 F2a) — the oldest unresolved continuation-offer gate
54
60
  * prompt, whatever other gates are open. Pure.
@@ -703,6 +709,20 @@ export declare function routeTeamDecompose(deps: {
703
709
  /** Stage-2 R3 HIGH — the loop's durable store, so the live launch persists the retained spec + attachments. */
704
710
  durableStore?: RevertManifestStore;
705
711
  }): Promise<void>;
712
+ /**
713
+ * Shared helper for handling LaunchTeamOutcome for both unconfirmed (auto-launch)
714
+ * and confirmed ("yes" reply) team launches. Ensures parity across both paths:
715
+ * - 'accepted' -> clean return (success advisory already dispatched by launchTeamFromWorkItems)
716
+ * - 'disjointness_rejected' -> dispatch advisory, call fallbackToSingle (if provided)
717
+ * - 'unknown_create_error' -> retry ONCE with same idempotency key; if second attempt
718
+ * is disjointness_rejected -> fallbackToSingle; if second attempt is unknown_create_error ->
719
+ * dispatch "Couldn't confirm the team started — check /status or retry. Nothing was launched."
720
+ */
721
+ export declare function handleTeamLaunchOutcome(deps: {
722
+ launch: () => Promise<LaunchTeamOutcome>;
723
+ store: OrchestrationStore;
724
+ fallbackToSingle?: () => Promise<void>;
725
+ }): Promise<void>;
706
726
  /** Test seam — reset the module-level A1e and M7 composers (vitest-gated). */
707
727
  export declare function resetDispatchContextComposerForTests(): void;
708
728
  /** Test seam — install the M7 decomposer user-context composer (vitest-gated). */
@@ -38,9 +38,8 @@ export interface RunLineLogFallbackArgs {
38
38
  /**
39
39
  * Whether the internal planner-classification entry (`[planner] <action>:
40
40
  * <rationale>` / the TTY "Planner classified …" node) is shown to the user.
41
- * OFF by default — it's internal mechanics that duplicate the actual response /
42
- * clarification the user already sees, and leaks taxonomy jargon ("classify").
43
- * Opt in with `CODEVIBE_PLANNER_DEBUG=1` when debugging the planner. The entry is
41
+ * OFF by default — it's internal mechanics that duplicate the actual response.
42
+ * Standardized to log level `CODEVIBE_LOG_LEVEL=debug`. The entry is
44
43
  * ALWAYS kept in conversation state (audit / logic / tests) — only the VIEW is gated.
45
44
  */
46
45
  export declare function plannerDecisionRenderEnabled(env?: NodeJS.ProcessEnv): boolean;
@@ -103,17 +103,18 @@ export declare function policyRejectionAdvisoryText(info: {
103
103
  * - An explicit `override` (from `/task --agent claude|codex|antigravity`) wins, BUT only
104
104
  * when that agent was actually detected on this host (else fail-closed to the
105
105
  * default — we never spawn a binary the host doesn't have).
106
- * - Otherwise: CLAUDE when it is among the detected agents (the documented
107
- * default), else the FIRST detected agent, else CLAUDE as the universal
108
- * fail-safe (matches the engine's Claude-only fallback when the host detected
109
- * nothing). The implementor argv allowlist already covers all three agents,
110
- * so any returned kind is spawnable without widening it.
106
+ * - Configurable implementor priority order via ~/.codevibe/implementor-preference.json
107
+ * (defaults to CLAUDE > CODEX > ANTIGRAVITY).
108
+ * - Multi-track priority allocation: when concurrent tracks run, allocates each track
109
+ * to the next idle agent in priority order. For hosts with a single installed agent,
110
+ * all tracks allocate to that agent.
111
+ * - Explicit override (@mention or --agent flag) always takes precedence if installed.
111
112
  *
112
113
  * Returns `{ agent, note }` — `note` is a non-null user-facing string ONLY when
113
114
  * an explicit override could not be honored (so the shell can surface it); null
114
115
  * when the selection was clean. NEVER throws.
115
116
  */
116
- export declare function selectImplementorAgent(detected: readonly AgentKind[], override?: AgentKind | null): {
117
+ export declare function selectImplementorAgent(detected: readonly AgentKind[], override?: AgentKind | null, inFlightAgents?: readonly AgentKind[] | null, priorityOrder?: readonly AgentKind[] | null): {
117
118
  agent: AgentKind;
118
119
  note: string | null;
119
120
  };
@@ -320,9 +321,8 @@ export interface QuorumLoopDeps {
320
321
  /**
321
322
  * CP-14 Wave A — the team execution model. `worktree_merge` makes each team
322
323
  * track commit to a persistent branch (the merge-before-push spine) instead of
323
- * the merge-train promote (the only model since the §10 retirement). Omitted keeps the
324
- * shipped path byte-identical. Resolved from `CODEVIBE_TEAM_EXECUTION` when
325
- * unset (see {@link resolveTeamExecution}).
324
+ * the merge-train promote (the sole model since the §10 retirement). Omitted keeps the
325
+ * shipped path byte-identical (see {@link resolveTeamExecution}).
326
326
  */
327
327
  teamExecution?: TeamExecution;
328
328
  /**
@@ -332,11 +332,8 @@ export interface QuorumLoopDeps {
332
332
  * agent reviewer runs INSIDE the sandbox with no ambient vendor creds and a
333
333
  * broker-routed model call — closing the CP-14 §8/§13 reviewer-sandbox gap.
334
334
  * ABSENT (legacy / companion / tests) → reviewers take the legacy unsandboxed
335
- * path BYTE-IDENTICAL (§7 non-regression). Reviewer-sandboxing DEFAULTS ON
336
- * when this engager is wired (R7 A4), with an operator opt-out env flag
337
- * (`CODEVIBE_SANDBOX_REVIEWERS=0`, read in `engageSeatSubstrate` on the
338
- * `spawnOneSeat` path — see `reviewerSandboxingEnabled`). The flag is
339
- * independent of implementor sandboxing (which has its own engager).
335
+ * path BYTE-IDENTICAL (§7 non-regression). Reviewer-sandboxing is mandatory
336
+ * when this engager is wired (see `reviewerSandboxingEnabled`).
340
337
  */
341
338
  engageReviewerSubstrate?: ReviewerSubstrateEngager;
342
339
  /**
@@ -818,8 +815,8 @@ export declare class QuorumLoop {
818
815
  * the stdin, NEVER the task_brief the reviewers see.
819
816
  * 2. The agentic class-2 resolver brief (≤ RATIONALE_RESOLVER_MAX_BYTES,
820
817
  * ungated — the resolver is intent-starved by design).
821
- * 3. Reviewer packets, ONLY behind the DEFAULT-OFF
822
- * OQ-REVIEWER-RATIONALE flag, as a labeled UNTRUSTED claim.
818
+ * 3. Reviewer packets NEVER receive implementor rationale (permanent
819
+ * diff-only review policy invariant).
823
820
  * Lifecycle mirrors `userNotesByTask` (promote / terminal discard / restart
824
821
  * clear; PRESERVED across the non-terminal quota-fork/takeover discards).
825
822
  */
@@ -1675,8 +1672,8 @@ export declare class QuorumLoop {
1675
1672
  * `handleReviseFeedback` so the revise implementor does not re-derive its
1676
1673
  * own reasoning. Appended to the STDIN payload ONLY (self-visibility) —
1677
1674
  * NEVER to `args.brief`, which becomes the execute-first `task_brief`
1678
- * rendered into the reviewer prompts (OQ-REVIEWER-RATIONALE: GA reviewers
1679
- * see NO rationale; the flag-gated reviewer path is separate).
1675
+ * rendered into the reviewer prompts (OQ-REVIEWER-RATIONALE: reviewers
1676
+ * see NO rationale permanent diff-only review policy invariant).
1680
1677
  */
1681
1678
  priorRationale?: {
1682
1679
  round: number;
@@ -2096,8 +2093,7 @@ export declare class QuorumLoop {
2096
2093
  * path (that defeats the moat).
2097
2094
  *
2098
2095
  * TRI-STATE (decided here, mirroring the implementor LE):
2099
- * 1. No engager wired OR `CODEVIBE_SANDBOX_REVIEWERS=0` opted out (the gate
2100
- * DEFAULTS ON — R7 A4) → LEGACY (byte-identical non-regression). No badge.
2096
+ * 1. No engager wired LEGACY (byte-identical non-regression). No badge.
2101
2097
  * 1b. No resolvable taskId (cannot scope a per-task broker) → LEGACY + a
2102
2098
  * reduced-trust badge (Stage-2 r1 Codex LOW — a trust-downgrade must be
2103
2099
  * VISIBLE, never a silent ambient-cred fallback; see
@@ -2144,7 +2140,7 @@ export declare class QuorumLoop {
2144
2140
  private describeReviewShapeForDiagnostics;
2145
2141
  /**
2146
2142
  * Wave B §2.1 confinement TRI-STATE for a merge-gate model/reviewer invocation
2147
- * (LOCK #C14-MOAT). Path A: the CP-7 substrate/broker (not opted out + a Trusted
2143
+ * (LOCK #C14-MOAT). Path A: the CP-7 substrate/broker (a Trusted
2148
2144
  * agent + engage succeeds → a handle; no ambient vendor cred in the child). Path B: a
2149
2145
  * trusted-container boundary (legacy spawn confined by the OUTER container — the
2150
2146
  * dogfood/E2E path). Path C: neither → NOT confined. A path-A engage that
@@ -2188,13 +2184,11 @@ export declare class QuorumLoop {
2188
2184
  * unwired, keeping today's IMMEDIATE legacy human-gate instead of
2189
2185
  * converting it into a per-slot spawn-time fail-close.
2190
2186
  *
2191
- * Deliberately DECOUPLED from `engageWaveBConfinement` and its
2192
- * `CODEVIBE_SANDBOX_REVIEWERS` gate (default-ON, `=0` opts out — R7 A4):
2193
- * that flag gates REVIEWER sandboxing (per-seat, `makeConflictModelCaller`,
2194
- * Tier-2) exactly as before — riding
2195
- * it here made the A1d resolver row unreachable on the default bare host.
2196
- * The ladder select is side-effect-free (no launch, no broker); test seams
2197
- * via `deps.resolverProbeDeps`.
2187
+ * Deliberately DECOUPLED from `engageWaveBConfinement` reviewer sandboxing:
2188
+ * that mechanism gates REVIEWER sandboxing (per-seat, `makeConflictModelCaller`,
2189
+ * Tier-2) coupling it here made the A1d resolver row unreachable on the
2190
+ * default bare host. The ladder select is side-effect-free (no launch, no broker);
2191
+ * test seams via `deps.resolverProbeDeps`.
2198
2192
  */
2199
2193
  private probeResolverDispatchConfinement;
2200
2194
  /**
@@ -2208,11 +2202,9 @@ export declare class QuorumLoop {
2208
2202
  * MED): `probeResolverDispatchConfinement` wires the closure iff the
2209
2203
  * DISPATCH-time engage could establish a confining substrate on this
2210
2204
  * host (a real §6 Q2 ladder tier, or the preserved trusted-container
2211
- * posture). Deliberately DECOUPLED from `engageWaveBConfinement`'s
2212
- * `CODEVIBE_SANDBOX_REVIEWERS` gate (default-ON post-R7-A4) — that flag
2213
- * gates REVIEWER
2214
- * sandboxing (seat/`makeConflictModelCaller`/Tier-2, unchanged), and
2215
- * riding it here made the A1d write-confined resolver row unreachable
2205
+ * posture). Deliberately DECOUPLED from `engageWaveBConfinement` — that
2206
+ * mechanism gates REVIEWER sandboxing (seat/`makeConflictModelCaller`/Tier-2),
2207
+ * and coupling it here made the A1d write-confined resolver row unreachable
2216
2208
  * on the default bare-host path. Unwired → return `null` →
2217
2209
  * `resolveAgentic` is NOT set on the context → a fresh class-2 conflict
2218
2210
  * takes the legacy `caller` path (which on path C is the
@@ -0,0 +1,17 @@
1
+ import type { AgentKind } from '../../local-executor/types';
2
+ import type { Tier } from '../types';
3
+ import { detectInstalledAgents } from '../../orchestration';
4
+ import { type ImplementorPreference, readImplementorPreferenceSync } from '../implementor-preference';
5
+ export declare function displayAgentName(agent: string): string;
6
+ /**
7
+ * Human-readable, ANSI-free rendering of implementor preference & multi-track allocation.
8
+ */
9
+ export declare function formatImplementorPolicy(detected: readonly AgentKind[], pref: ImplementorPreference, tier?: Tier): string;
10
+ /**
11
+ * Synchronously formats the user's implementor policy. Never throws.
12
+ */
13
+ export declare function runImplementorsCli(detectFn?: typeof detectInstalledAgents, readPrefFn?: typeof readImplementorPreferenceSync, tier?: Tier): string;
14
+ /**
15
+ * Handles CLI invocation of `/implementor-setup <args>`.
16
+ */
17
+ export declare function runImplementorSetupCli(args: string, detectFn?: typeof detectInstalledAgents): Promise<string>;
@@ -197,6 +197,8 @@ export interface RunLocalDecomposerDeps {
197
197
  localExecutor: LocalExecutor;
198
198
  /** Canonicalized real working dir (the repo) — the decomposer reads the tree. */
199
199
  workingDir: string;
200
+ /** Optional user priority order. Defaults to DEFAULT_IMPLEMENTOR_PRIORITY. */
201
+ priorityOrder?: readonly AgentKind[];
200
202
  }
201
203
  /**
202
204
  * Run the local decomposition pass (§3.B). Spawns the FIRST available agent in
@@ -220,12 +222,11 @@ export declare function runLocalDecomposer(deps: RunLocalDecomposerDeps, brief:
220
222
  */
221
223
  repoContext?: string): Promise<DecomposerResult>;
222
224
  /**
223
- * Validate + normalize each work item's `implementorAgent` against the active
224
- * detected agent set (§3.C — v1 is DETECTED-ONLY; NO capability-health
225
- * filtering, NO per-spawn auth-recheck). For each item:
226
- * `.toUpperCase()`-normalize the suggested agent; keep it if active +
227
- * detected; else SUBSTITUTE the first active detected agent. If NO active
228
- * agent is detected `null` (the caller falls back to single). Returns NEW
229
- * work items (does not mutate the inputs).
225
+ * §3.C / §3.E availability-validate the parsed agent strings against the
226
+ * host's detected list.
227
+ * Allocates tracks across detected agents according to the user's priority order
228
+ * and in-flight busy agents, matching multi-track allocation.
229
+ * If no supported active agent is detected `null` (the caller falls back to single).
230
+ * Returns NEW work items (does not mutate the inputs).
230
231
  */
231
- export declare function validateAgentAvailability(workItems: DecomposerWorkItem[], detected: AgentKind[]): DecomposerWorkItem[] | null;
232
+ export declare function validateAgentAvailability(workItems: DecomposerWorkItem[], detected: AgentKind[], priorityOrder?: readonly AgentKind[] | null, inFlightAgents?: readonly AgentKind[]): DecomposerWorkItem[] | null;
@@ -3,6 +3,9 @@ import type { StructuralSummary } from '../structural-summary/types';
3
3
  import type { GatePromptEnvelope, ReviewSummaryPanelModel } from './gate-prompts';
4
4
  import type { TaskProgressEvent } from './task-progress';
5
5
  import type { ReviewerAgentSpec } from '../types/reviewer';
6
+ import type { ImplementorPreference } from './implementor-preference';
7
+ import type { AgentKind as LocalExecutorAgentKind } from '../local-executor/types';
8
+ import type { WorkItemInput } from '../local-executor/task-group-types';
6
9
  /**
7
10
  * Engine's reply to `applyUserDecision`. Surfaced by the SDK as
8
11
  * `Promise<PostDecisionAction>`. Discriminated by `kind`; payload
@@ -134,6 +137,8 @@ export interface PlannerDecision {
134
137
  * locks shape.
135
138
  */
136
139
  gateRequest?: Record<string, unknown>;
140
+ /** Task start confirmation metadata when ask_user is confirming a start_task. */
141
+ startConfirmation?: TaskStartConfirmationState;
137
142
  }
138
143
  export interface BrainstormContextMetadata {
139
144
  needsRepositoryContext: boolean;
@@ -451,6 +456,24 @@ export interface QueuedTask {
451
456
  * resolves the most recent question and re-routes through
452
457
  * `classifyPlannerPrompt` with the full `clarifications` array.
453
458
  */
459
+ /**
460
+ * Metadata stored on PendingClarification when confirmBeforeStart prompts the user.
461
+ */
462
+ export interface TaskStartConfirmationState {
463
+ kind?: 'single' | 'team';
464
+ agent?: LocalExecutorAgentKind;
465
+ decision: PlannerDecision;
466
+ brief: string;
467
+ attachments?: ImageAttachment[];
468
+ teamSpec?: {
469
+ workItems: WorkItemInput[];
470
+ briefsByTrackIndex: Map<number, string>;
471
+ groupIdempotencyKey: string;
472
+ decomposeAttachments?: ImageAttachment[];
473
+ decomposeAttachmentPaths?: string[];
474
+ singleFallbackBrief?: string;
475
+ };
476
+ }
454
477
  export interface PendingClarification {
455
478
  originalPrompt: string;
456
479
  rounds: Array<{
@@ -474,6 +497,12 @@ export interface PendingClarification {
474
497
  * both resolve to the correct ref. Grows by exactly this turn's `imagePaths` each turn.
475
498
  */
476
499
  attachmentPaths?: string[];
500
+ /**
501
+ * Task start confirmation metadata when `confirmBeforeStart: true`.
502
+ * When present, user's subsequent input is intercepted as confirmation ("yes" starts,
503
+ * anything else cancels) without calling the planner classifier.
504
+ */
505
+ startConfirmation?: TaskStartConfirmationState;
477
506
  }
478
507
  /**
479
508
  * A1a #3/#4 — one numbered choice in a `PendingPlannerOffer`. Contract-ready
@@ -792,6 +821,12 @@ export interface OrchestrationState {
792
821
  * keyboard focus. Non-team / Companion / CP-1.a sessions never open it.
793
822
  */
794
823
  reviewerWizard: ReviewerWizardState | null;
824
+ /**
825
+ * `/implementor-setup` interactive wizard. OPEN sets the state; cleared
826
+ * on save/cancel (`IMPLEMENTOR_WIZARD_CLOSE`). While non-null,
827
+ * `<OrchestrationApp>` renders `<ImplementorSetupWizard>` in place of `<InputBar>`.
828
+ */
829
+ implementorWizard: ImplementorWizardState | null;
795
830
  /**
796
831
  * `[ADDITIVE WIDENING — O1 C1 (#652)]` per
797
832
  * PHASE-O1-C1-SAFETY-OBSERVABILITY-DESIGN.md §3.1 item 1: the shell used to
@@ -876,6 +911,13 @@ export interface ReviewerWizardState {
876
911
  installedAgents: Array<'CLAUDE' | 'GEMINI' | 'CODEX' | 'ANTIGRAVITY'>;
877
912
  currentSeats: ReviewerAgentSpec[] | null;
878
913
  }
914
+ /**
915
+ * `/implementor-setup` interactive wizard state.
916
+ */
917
+ export interface ImplementorWizardState {
918
+ installedAgents: AgentKind[];
919
+ currentPreference: ImplementorPreference;
920
+ }
879
921
  /**
880
922
  * §5.1 LOCK lines 502-513. Discriminated union over every state
881
923
  * transition the reducer covers. `attachedTaskId` / `ATTACH` / `DETACH`
@@ -917,6 +959,7 @@ export type OrchestrationAction = {
917
959
  decision: PlannerDecision;
918
960
  taskId?: string;
919
961
  brainstorm?: BrainstormContextMetadata;
962
+ startConfirmation?: TaskStartConfirmationState;
920
963
  } | {
921
964
  type: 'EVENT_RECEIVED';
922
965
  event: EventStreamEntry;
@@ -1071,6 +1114,11 @@ export type OrchestrationAction = {
1071
1114
  wizard: ReviewerWizardState;
1072
1115
  } | {
1073
1116
  type: 'REVIEWER_WIZARD_CLOSE';
1117
+ } | {
1118
+ type: 'IMPLEMENTOR_WIZARD_OPEN';
1119
+ wizard: ImplementorWizardState;
1120
+ } | {
1121
+ type: 'IMPLEMENTOR_WIZARD_CLOSE';
1074
1122
  } | {
1075
1123
  type: 'AUDIT_FLAG_INDEX_RETAINED';
1076
1124
  index: AuditFlagIndex;
@@ -19,14 +19,14 @@ export declare const SessionContextSchema: z.ZodObject<{
19
19
  sessionId: string;
20
20
  userId: string;
21
21
  tier: "FREE" | "PRO" | "MAX";
22
- currentTaskState: "none" | "merge_gate_pending" | "in_progress" | "awaiting_user" | "awaiting_review";
22
+ currentTaskState: "none" | "in_progress" | "awaiting_user" | "awaiting_review" | "merge_gate_pending";
23
23
  structuralSummaryDigest: string;
24
24
  recentEventCount: number;
25
25
  }, {
26
26
  sessionId: string;
27
27
  userId: string;
28
28
  tier: "FREE" | "PRO" | "MAX";
29
- currentTaskState: "none" | "merge_gate_pending" | "in_progress" | "awaiting_user" | "awaiting_review";
29
+ currentTaskState: "none" | "in_progress" | "awaiting_user" | "awaiting_review" | "merge_gate_pending";
30
30
  structuralSummaryDigest: string;
31
31
  recentEventCount: number;
32
32
  }>;
@@ -66,11 +66,11 @@ export declare const ToolActivityGroupSchema: z.ZodObject<{
66
66
  }>, "many">>;
67
67
  }, "strip", z.ZodTypeAny, {
68
68
  count: number;
69
- tool: string;
70
69
  occurrences: {
71
70
  id: string;
72
71
  ts: string;
73
72
  }[];
73
+ tool: string;
74
74
  target?: string | undefined;
75
75
  detail?: {
76
76
  i: number;
@@ -78,11 +78,11 @@ export declare const ToolActivityGroupSchema: z.ZodObject<{
78
78
  }[] | undefined;
79
79
  }, {
80
80
  count: number;
81
- tool: string;
82
81
  occurrences: {
83
82
  id: string;
84
83
  ts: string;
85
84
  }[];
85
+ tool: string;
86
86
  target?: string | undefined;
87
87
  detail?: {
88
88
  i: number;
@@ -130,11 +130,11 @@ export declare const ToolActivityManifestSchema: z.ZodObject<{
130
130
  }>, "many">>;
131
131
  }, "strip", z.ZodTypeAny, {
132
132
  count: number;
133
- tool: string;
134
133
  occurrences: {
135
134
  id: string;
136
135
  ts: string;
137
136
  }[];
137
+ tool: string;
138
138
  target?: string | undefined;
139
139
  detail?: {
140
140
  i: number;
@@ -142,11 +142,11 @@ export declare const ToolActivityManifestSchema: z.ZodObject<{
142
142
  }[] | undefined;
143
143
  }, {
144
144
  count: number;
145
- tool: string;
146
145
  occurrences: {
147
146
  id: string;
148
147
  ts: string;
149
148
  }[];
149
+ tool: string;
150
150
  target?: string | undefined;
151
151
  detail?: {
152
152
  i: number;
@@ -157,11 +157,11 @@ export declare const ToolActivityManifestSchema: z.ZodObject<{
157
157
  }, "strip", z.ZodTypeAny, {
158
158
  groups: {
159
159
  count: number;
160
- tool: string;
161
160
  occurrences: {
162
161
  id: string;
163
162
  ts: string;
164
163
  }[];
164
+ tool: string;
165
165
  target?: string | undefined;
166
166
  detail?: {
167
167
  i: number;
@@ -176,11 +176,11 @@ export declare const ToolActivityManifestSchema: z.ZodObject<{
176
176
  }, {
177
177
  groups: {
178
178
  count: number;
179
- tool: string;
180
179
  occurrences: {
181
180
  id: string;
182
181
  ts: string;
183
182
  }[];
183
+ tool: string;
184
184
  target?: string | undefined;
185
185
  detail?: {
186
186
  i: number;
@@ -247,11 +247,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
247
247
  }>, "many">>;
248
248
  }, "strip", z.ZodTypeAny, {
249
249
  count: number;
250
- tool: string;
251
250
  occurrences: {
252
251
  id: string;
253
252
  ts: string;
254
253
  }[];
254
+ tool: string;
255
255
  target?: string | undefined;
256
256
  detail?: {
257
257
  i: number;
@@ -259,11 +259,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
259
259
  }[] | undefined;
260
260
  }, {
261
261
  count: number;
262
- tool: string;
263
262
  occurrences: {
264
263
  id: string;
265
264
  ts: string;
266
265
  }[];
266
+ tool: string;
267
267
  target?: string | undefined;
268
268
  detail?: {
269
269
  i: number;
@@ -274,11 +274,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
274
274
  }, "strip", z.ZodTypeAny, {
275
275
  groups: {
276
276
  count: number;
277
- tool: string;
278
277
  occurrences: {
279
278
  id: string;
280
279
  ts: string;
281
280
  }[];
281
+ tool: string;
282
282
  target?: string | undefined;
283
283
  detail?: {
284
284
  i: number;
@@ -293,11 +293,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
293
293
  }, {
294
294
  groups: {
295
295
  count: number;
296
- tool: string;
297
296
  occurrences: {
298
297
  id: string;
299
298
  ts: string;
300
299
  }[];
300
+ tool: string;
301
301
  target?: string | undefined;
302
302
  detail?: {
303
303
  i: number;
@@ -317,11 +317,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
317
317
  manifest: {
318
318
  groups: {
319
319
  count: number;
320
- tool: string;
321
320
  occurrences: {
322
321
  id: string;
323
322
  ts: string;
324
323
  }[];
324
+ tool: string;
325
325
  target?: string | undefined;
326
326
  detail?: {
327
327
  i: number;
@@ -343,11 +343,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
343
343
  manifest: {
344
344
  groups: {
345
345
  count: number;
346
- tool: string;
347
346
  occurrences: {
348
347
  id: string;
349
348
  ts: string;
350
349
  }[];
350
+ tool: string;
351
351
  target?: string | undefined;
352
352
  detail?: {
353
353
  i: number;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quantiya/codevibe-core",
3
- "version": "2.0.38",
3
+ "version": "2.0.39",
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-claude-plugin",
3
- "version": "2.0.43",
3
+ "version": "2.0.44",
4
4
  "description": "Control Claude Code 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": {
@@ -48,7 +48,7 @@
48
48
  "node": ">=22.0.0"
49
49
  },
50
50
  "dependencies": {
51
- "@quantiya/codevibe-core": "^2.0.38",
51
+ "@quantiya/codevibe-core": "^2.0.39",
52
52
  "@quantiya/quorum-core": "^1.0.1",
53
53
  "dotenv": "^16.6.1",
54
54
  "express": "^5.1.0",