@quantiya/codevibe-claude-plugin 2.0.42 → 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 (31) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/node_modules/@quantiya/codevibe-core/dist/index.js +502 -491
  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/class-b-consumer.d.ts +5 -5
  5. package/node_modules/@quantiya/codevibe-core/dist/local-executor/hook-bridge.d.ts +1 -1
  6. package/node_modules/@quantiya/codevibe-core/dist/local-executor/index.d.ts +1 -1
  7. package/node_modules/@quantiya/codevibe-core/dist/local-executor/local-executor-impl.d.ts +52 -20
  8. package/node_modules/@quantiya/codevibe-core/dist/local-executor/merge-train.d.ts +1 -1
  9. package/node_modules/@quantiya/codevibe-core/dist/local-executor/reviewer-rationale-flag.d.ts +3 -8
  10. package/node_modules/@quantiya/codevibe-core/dist/local-executor/team-execution-flag.d.ts +0 -6
  11. package/node_modules/@quantiya/codevibe-core/dist/local-executor/types.d.ts +7 -2
  12. package/node_modules/@quantiya/codevibe-core/dist/local-executor/workspace-shadow.d.ts +16 -0
  13. package/node_modules/@quantiya/codevibe-core/dist/local-model/manager.d.ts +5 -3
  14. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +42310 -40649
  15. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/ImplementorSetupWizard.d.ts +10 -0
  16. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/InputBar.d.ts +1 -0
  17. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/gate-decision-submit.d.ts +26 -5
  18. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/implementor-preference.d.ts +24 -0
  19. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/index.d.ts +37 -0
  20. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/non-tty-fallback.d.ts +3 -4
  21. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/quorum-loop.d.ts +248 -84
  22. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/reducer.d.ts +7 -0
  23. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/slash-routes/continuation.d.ts +5 -0
  24. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/slash-routes/implementors.d.ts +17 -0
  25. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/task-label.d.ts +25 -0
  26. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/team-decompose.d.ts +9 -8
  27. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/types.d.ts +131 -0
  28. package/node_modules/@quantiya/codevibe-core/dist/planner/types.d.ts +2 -2
  29. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/types.d.ts +12 -12
  30. package/node_modules/@quantiya/codevibe-core/package.json +1 -1
  31. package/package.json +2 -2
@@ -14,3 +14,10 @@ export declare function reducer(state: OrchestrationState, action: Orchestration
14
14
  * task-start size heuristic.
15
15
  */
16
16
  export declare function hasRunningSingleTask(state: OrchestrationState): boolean;
17
+ /**
18
+ * P46a C3 — the apply-conflict menu's reply hint. A digit answers it only while
19
+ * no review gate is awaiting a number (the gate composer takes digits first);
20
+ * `/task retry <n>` / `/task discard <n>` answer it unambiguously at any time.
21
+ * Slash commands keep the menu open; any other text closes it (Stage 1 r1 F3).
22
+ */
23
+ export declare const APPLY_CONFLICT_MENU_HINT = "Reply with a number 1-2 (or /task retry <n> / /task discard <n> while another review is open); other text closes this menu.";
@@ -52,6 +52,11 @@ export interface ContinuationCliDeps {
52
52
  } | null>;
53
53
  /** Resolve the active-task request context (loop state). `null` if no active task. */
54
54
  getActiveRequestContext?: () => ActiveContinuationRequestContext | null;
55
+ /**
56
+ * P46a B1 — the refusal text when `getActiveRequestContext` is null (several
57
+ * tasks running a round → the `#n` candidates; none → the plain message).
58
+ */
59
+ explainNoActiveRequest?: () => string;
55
60
  /**
56
61
  * PHASE-CP-10-MIN (#585) #C10M-9/11 — `/continue accept <target>`: the
57
62
  * rescue/headless path. The entrypoint wires this to call
@@ -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>;
@@ -0,0 +1,25 @@
1
+ import type { OrchestrationState } from './types';
2
+ export declare function shortTaskId(taskId: string): string;
3
+ /**
4
+ * The label for `taskId` (a single task id, a team child task id, a
5
+ * `taskGroupId`, or a `group:<id>` gate id).
6
+ */
7
+ export declare function taskLabel(state: Pick<OrchestrationState, 'taskOrdinals' | 'team'>, taskId: string): string;
8
+ /**
9
+ * Resolve `#n` / `n` (a single task or a team group number) back to the id
10
+ * that holds it, or null. Used by `/task focus <n>`.
11
+ */
12
+ export declare function taskIdForOrdinal(state: Pick<OrchestrationState, 'taskOrdinals'>, ordinal: number): string | null;
13
+ /**
14
+ * P46a (F-P46a-6) — the advisory the shell prints under a gate prompt whose
15
+ * task already ENDED on this side as `discarded` (its implementor round failed
16
+ * here — typically the result's submit lost its response in a network cut —
17
+ * while the engine still had the result, reviewed it and raised the gate).
18
+ * Accepting such a gate applies nothing; the user must know before deciding.
19
+ * Returns null for a live task or any other outcome.
20
+ */
21
+ export declare function endedTaskAdvisory(described: ReadonlyArray<{
22
+ taskId: string;
23
+ label: string;
24
+ outcome: string;
25
+ }>, taskId: string): string | null;
@@ -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;
@@ -427,6 +432,7 @@ export type ConversationEntry = {
427
432
  panel: {
428
433
  variant: 'prompt';
429
434
  envelope: GatePromptEnvelope;
435
+ taskLabel?: string;
430
436
  } | {
431
437
  variant: 'summary';
432
438
  reviewSummary: ReviewSummaryPanelModel;
@@ -450,6 +456,24 @@ export interface QueuedTask {
450
456
  * resolves the most recent question and re-routes through
451
457
  * `classifyPlannerPrompt` with the full `clarifications` array.
452
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
+ }
453
477
  export interface PendingClarification {
454
478
  originalPrompt: string;
455
479
  rounds: Array<{
@@ -473,6 +497,12 @@ export interface PendingClarification {
473
497
  * both resolve to the correct ref. Grows by exactly this turn's `imagePaths` each turn.
474
498
  */
475
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;
476
506
  }
477
507
  /**
478
508
  * A1a #3/#4 — one numbered choice in a `PendingPlannerOffer`. Contract-ready
@@ -522,6 +552,51 @@ export interface PendingPlannerOffer {
522
552
  /** §13 Option-2 — ordered-with-dups carried paths for the number-based chip rewrite. */
523
553
  attachmentPaths?: string[];
524
554
  }
555
+ /**
556
+ * P46a D1 — one in-session task number. Assigned by the reducer from ONE
557
+ * per-session counter (`nextTaskOrdinal`) at the START-confirmed point of a
558
+ * single task (`QuorumLoop.startTask`) or when `createTaskGroup` returns for a
559
+ * team (`launchTeamFromWorkItems`), so both paths share the numbering. A team
560
+ * group is one number (its child tasks render `#n.1`, `#n.2` via `state.team`).
561
+ * `retryOf` links a `#n retry` task (P46a C2/C3) to the `apply_failed` original.
562
+ * In-memory only: production has no session resume (design §2.4/A8), so every
563
+ * launch is a new session with its own numbering; nothing is persisted.
564
+ */
565
+ export interface TaskOrdinalRecord {
566
+ readonly ordinal: number;
567
+ readonly kind: 'single' | 'group';
568
+ readonly retryOf?: string;
569
+ }
570
+ /**
571
+ * P46a C3 — the desktop-local "could not apply" menu. Modeled on
572
+ * `pendingPlannerOffer` (a local numbered reply resolves it; free text clears
573
+ * it) but NEVER mirrored to mobile — the durable, mobile-answerable form is
574
+ * P46b A5 (HD-10). Not durable: a desktop relaunch drops it with its session
575
+ * (the failed task's shadow is already discarded; the durable `apply_failed`
576
+ * outcome stands).
577
+ */
578
+ export interface PendingApplyConflict {
579
+ /** The `apply_failed` task the menu is about. */
580
+ readonly taskId: string;
581
+ /** Its rendered label (`#n`, `#n retry`, or the short-id fallback). */
582
+ readonly taskLabel: string;
583
+ /** Workspace-relative paths + their attribution (paths only — never content). */
584
+ readonly conflicts: ReadonlyArray<{
585
+ readonly path: string;
586
+ readonly cause: 'session-task' | 'external' | 'write-error';
587
+ /** Rendered label of the session task whose promote changed the path. */
588
+ readonly byTaskLabel?: string;
589
+ }>;
590
+ /** True when this menu follows the one automatic retry's own promote failure. */
591
+ readonly autoRetried: boolean;
592
+ /** The `advisory` conversation entry that rendered the numbered options. */
593
+ readonly conversationEntryId: string;
594
+ /** The composed retry brief (original request + files changed since + reviewed contents). */
595
+ readonly retryBrief: string;
596
+ /** The ROOT user request the retry carries (Stage 1 r3 F1: web access and `/status` follow the user's own words). */
597
+ readonly request: string;
598
+ readonly agent: AgentKind;
599
+ }
525
600
  /**
526
601
  * [ADDITIVE WIDENING — CP-12 W3, per PHASE-CP-12-DESIGN.md §3.5 "minimal
527
602
  * multi-track status node; rich UX is #469"]. Per-track lifecycle state as the
@@ -679,6 +754,32 @@ export interface OrchestrationState {
679
754
  * source of truth.
680
755
  */
681
756
  pendingPlannerOffer: PendingPlannerOffer | null;
757
+ /**
758
+ * `[ADDITIVE WIDENING — P46a D1]` The in-session task numbers, keyed by
759
+ * single-task id or team `taskGroupId`. Reducer-owned (`TASK_ORDINAL_ASSIGNED`)
760
+ * from the single per-session `nextTaskOrdinal` counter; never persisted.
761
+ */
762
+ taskOrdinals: Map<string, TaskOrdinalRecord>;
763
+ /** `[ADDITIVE WIDENING — P46a D1]` The next number to assign (starts at 1). */
764
+ nextTaskOrdinal: number;
765
+ /**
766
+ * `[ADDITIVE WIDENING — P46a C3]` The OPEN desktop-local apply-conflict menus,
767
+ * keyed by the failed task's id, in presentation order (empty by default).
768
+ * Set by `APPLY_CONFLICT_PRESENTED` (a second task's menu never replaces the
769
+ * first — Stage 1 r2 F2); `/task retry|discard <n>` answers one by number, a
770
+ * bare digit only when exactly one is open; other desktop text closes them
771
+ * (`CLEAR_PENDING_APPLY_CONFLICT`). Never mirrored to mobile (P46b A5).
772
+ */
773
+ pendingApplyConflicts: ReadonlyMap<string, PendingApplyConflict>;
774
+ /**
775
+ * `[ADDITIVE WIDENING — P46a D1]` The gate-prompt entry the desktop composer,
776
+ * its pinned card and a typed digit currently target (null when no open gate
777
+ * is answerable). Reducer-owned and STICKY (Stage 1 r2 F1): it stays on the
778
+ * current gate while that gate is answerable; only when it leaves the
779
+ * answerable phases does the oldest answerable open gate take over — a
780
+ * rolled-back older gate waits its turn instead of taking the digits back.
781
+ */
782
+ activeGatePromptId: string | null;
682
783
  inputHistory: string[];
683
784
  /**
684
785
  * `[ADDITIVE WIDENING — CP-1.d]` per `PHASE-CP-1-D-DESIGN.md` §4.8
@@ -720,6 +821,12 @@ export interface OrchestrationState {
720
821
  * keyboard focus. Non-team / Companion / CP-1.a sessions never open it.
721
822
  */
722
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;
723
830
  /**
724
831
  * `[ADDITIVE WIDENING — O1 C1 (#652)]` per
725
832
  * PHASE-O1-C1-SAFETY-OBSERVABILITY-DESIGN.md §3.1 item 1: the shell used to
@@ -804,6 +911,13 @@ export interface ReviewerWizardState {
804
911
  installedAgents: Array<'CLAUDE' | 'GEMINI' | 'CODEX' | 'ANTIGRAVITY'>;
805
912
  currentSeats: ReviewerAgentSpec[] | null;
806
913
  }
914
+ /**
915
+ * `/implementor-setup` interactive wizard state.
916
+ */
917
+ export interface ImplementorWizardState {
918
+ installedAgents: AgentKind[];
919
+ currentPreference: ImplementorPreference;
920
+ }
807
921
  /**
808
922
  * §5.1 LOCK lines 502-513. Discriminated union over every state
809
923
  * transition the reducer covers. `attachedTaskId` / `ATTACH` / `DETACH`
@@ -845,6 +959,7 @@ export type OrchestrationAction = {
845
959
  decision: PlannerDecision;
846
960
  taskId?: string;
847
961
  brainstorm?: BrainstormContextMetadata;
962
+ startConfirmation?: TaskStartConfirmationState;
848
963
  } | {
849
964
  type: 'EVENT_RECEIVED';
850
965
  event: EventStreamEntry;
@@ -884,6 +999,17 @@ export type OrchestrationAction = {
884
999
  offer: PendingPlannerOffer;
885
1000
  } | {
886
1001
  type: 'CLEAR_PENDING_PLANNER_OFFER';
1002
+ } | {
1003
+ type: 'TASK_ORDINAL_ASSIGNED';
1004
+ taskId: string;
1005
+ kind: 'single' | 'group';
1006
+ retryOf?: string;
1007
+ } | {
1008
+ type: 'APPLY_CONFLICT_PRESENTED';
1009
+ menu: Omit<PendingApplyConflict, 'conversationEntryId'>;
1010
+ } | {
1011
+ type: 'CLEAR_PENDING_APPLY_CONFLICT';
1012
+ taskId?: string;
887
1013
  } | {
888
1014
  type: 'STRUCTURAL_SUMMARY_GENERATED';
889
1015
  summary: StructuralSummary;
@@ -988,6 +1114,11 @@ export type OrchestrationAction = {
988
1114
  wizard: ReviewerWizardState;
989
1115
  } | {
990
1116
  type: 'REVIEWER_WIZARD_CLOSE';
1117
+ } | {
1118
+ type: 'IMPLEMENTOR_WIZARD_OPEN';
1119
+ wizard: ImplementorWizardState;
1120
+ } | {
1121
+ type: 'IMPLEMENTOR_WIZARD_CLOSE';
991
1122
  } | {
992
1123
  type: 'AUDIT_FLAG_INDEX_RETAINED';
993
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.37",
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.42",
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.37",
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",