@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.
- package/.claude-plugin/plugin.json +1 -1
- package/node_modules/@quantiya/codevibe-core/dist/index.js +500 -498
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/agentic-resolver-flag.d.ts +4 -7
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/index.d.ts +1 -1
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/merge-train.d.ts +1 -1
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/reviewer-rationale-flag.d.ts +3 -8
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/team-execution-flag.d.ts +0 -6
- package/node_modules/@quantiya/codevibe-core/dist/local-model/manager.d.ts +5 -3
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +41855 -41025
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/ImplementorSetupWizard.d.ts +10 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/implementor-preference.d.ts +24 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/index.d.ts +20 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/non-tty-fallback.d.ts +2 -3
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/quorum-loop.d.ts +25 -33
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/slash-routes/implementors.d.ts +17 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/team-decompose.d.ts +9 -8
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/types.d.ts +48 -0
- package/node_modules/@quantiya/codevibe-core/dist/planner/types.d.ts +2 -2
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/types.d.ts +12 -12
- package/node_modules/@quantiya/codevibe-core/package.json +1 -1
- 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;
|
package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/implementor-preference.d.ts
ADDED
|
@@ -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
|
-
*
|
|
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
|
-
* -
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
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
|
|
324
|
-
* shipped path byte-identical
|
|
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
|
|
336
|
-
* when this engager is wired (
|
|
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
|
|
822
|
-
*
|
|
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:
|
|
1679
|
-
* see NO rationale
|
|
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
|
|
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 (
|
|
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`
|
|
2192
|
-
*
|
|
2193
|
-
*
|
|
2194
|
-
*
|
|
2195
|
-
*
|
|
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`
|
|
2212
|
-
*
|
|
2213
|
-
*
|
|
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
|
package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/slash-routes/implementors.d.ts
ADDED
|
@@ -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
|
-
*
|
|
224
|
-
* detected
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
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" | "
|
|
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" | "
|
|
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;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quantiya/codevibe-claude-plugin",
|
|
3
|
-
"version": "2.0.
|
|
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.
|
|
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",
|