@quantiya/codevibe-claude-plugin 2.0.17 → 2.0.19

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 (47) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/server.js +18 -18
  3. package/node_modules/@quantiya/codevibe-core/dist/__tests__/mobile-prompt-input.test.d.ts +1 -0
  4. package/node_modules/@quantiya/codevibe-core/dist/appsync/__tests__/group-operation-result.test.d.ts +1 -0
  5. package/node_modules/@quantiya/codevibe-core/dist/appsync/appsync-client.d.ts +155 -0
  6. package/node_modules/@quantiya/codevibe-core/dist/appsync/queries.d.ts +14 -0
  7. package/node_modules/@quantiya/codevibe-core/dist/crypto/__tests__/crypto-service.test.d.ts +1 -0
  8. package/node_modules/@quantiya/codevibe-core/dist/crypto/crypto-service.d.ts +7 -0
  9. package/node_modules/@quantiya/codevibe-core/dist/index.d.ts +2 -0
  10. package/node_modules/@quantiya/codevibe-core/dist/index.js +525 -304
  11. package/node_modules/@quantiya/codevibe-core/dist/local-executor/local-executor-impl.d.ts +34 -0
  12. package/node_modules/@quantiya/codevibe-core/dist/local-executor/snapshot-merge.d.ts +6 -0
  13. package/node_modules/@quantiya/codevibe-core/dist/local-executor/types.d.ts +6 -0
  14. package/node_modules/@quantiya/codevibe-core/dist/mobile-prompt-input.d.ts +13 -0
  15. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-attempt-live-handoff.test.d.ts +1 -0
  16. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-attempt-recovery.test.d.ts +1 -0
  17. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-attempt-session-serialization.test.d.ts +1 -0
  18. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-attempt.test.d.ts +1 -0
  19. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/decision-effect.test.d.ts +1 -0
  20. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/gate-resolution-event.test.d.ts +1 -0
  21. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/supervision-catch-up.test.d.ts +1 -0
  22. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/workspace-outcome.test.d.ts +1 -0
  23. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/__tests__/workspace-terminal-coordinator.test.d.ts +1 -0
  24. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.d.ts +3 -0
  25. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +5621 -1758
  26. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/ConversationPane.d.ts +2 -1
  27. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/GatePromptEntry.d.ts +1 -0
  28. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/decision-attempt-recovery.d.ts +70 -0
  29. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/decision-attempt.d.ts +211 -0
  30. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/decision-effect.d.ts +39 -0
  31. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/emit-shell-event.d.ts +20 -2
  32. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/gate-decision-submit.d.ts +20 -2
  33. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/gate-prompts.d.ts +4 -0
  34. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/gate-resolution-event.d.ts +10 -0
  35. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/index.d.ts +6 -2
  36. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/quorum-loop.d.ts +11 -0
  37. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/supervision-catch-up.d.ts +7 -0
  38. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/types.d.ts +57 -0
  39. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/workspace-outcome.d.ts +20 -0
  40. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/workspace-terminal-coordinator.d.ts +114 -0
  41. package/node_modules/@quantiya/codevibe-core/dist/types/events.d.ts +7 -0
  42. package/node_modules/@quantiya/codevibe-core/dist/types/session.d.ts +2 -0
  43. package/node_modules/@quantiya/codevibe-core/package.json +1 -1
  44. package/node_modules/fs-ext/build/Makefile +1 -1
  45. package/node_modules/fs-ext/build/Release/fs_ext.node +0 -0
  46. package/node_modules/fs-ext/build/config.gypi +0 -2
  47. package/package.json +2 -2
@@ -115,6 +115,16 @@ export type SubstrateEngager = (input: {
115
115
  }) => Promise<SubstrateEngageResult>;
116
116
  /** Backend lease is 15 minutes; three renewal opportunities fit inside it. */
117
117
  export declare const TEAM_TRACK_HEARTBEAT_INTERVAL_MS: number;
118
+ export interface SnapshotGroupPromotionAuthority {
119
+ taskGroupId: string;
120
+ groupGeneration: number;
121
+ anchorId: string;
122
+ anchorTimestamp: string;
123
+ manifestHash: string;
124
+ memberCount: number;
125
+ operationHash: string;
126
+ operationToken: string;
127
+ }
118
128
  export interface LocalExecutorImplDeps {
119
129
  sessionId: string;
120
130
  initialScope?: AuthorityScope;
@@ -310,6 +320,21 @@ export interface LocalExecutorImplDeps {
310
320
  readSnapshotPromotion?: (taskGroupId: string) => Promise<SnapshotPromotionJournalV1 | null>;
311
321
  prepareSnapshotPromotion?: (taskGroupId: string, operationHash: string, files: readonly ReviewedShadowDiffFile[], workspaceRootAuthority: WorkspaceRootAuthority) => Promise<void>;
312
322
  markSnapshotPromotionApplied?: (taskGroupId: string, operationHash: string) => Promise<void>;
323
+ /** Prove a prepared v2 promotion never mutated the tree, then retire it. */
324
+ rejectSnapshotPromotionNoChange?: (taskGroupId: string, operationHash: string) => Promise<void>;
325
+ /** Reserve + begin the backend group PROMOTE before the first user-tree write. */
326
+ authorizeSnapshotPromotion?: (input: {
327
+ taskGroupId: string;
328
+ groupGeneration: number;
329
+ localOperationHash: string;
330
+ }) => Promise<SnapshotGroupPromotionAuthority>;
331
+ /** Commit the backend promotion, then release the prepared outcome to its outbox. */
332
+ completeSnapshotPromotion?: (input: {
333
+ authority: SnapshotGroupPromotionAuthority;
334
+ localOperationHash: string;
335
+ completionKind: 'FRESH_APPLIED' | 'RECONCILED_APPLIED' | 'ROLLED_BACK_NO_CHANGE';
336
+ filesApplied: number;
337
+ }) => Promise<void>;
313
338
  /** Optional shadow lifecycle hooks shared with implementor workspaces. */
314
339
  snapshotShadowEnv?: ShadowEnv;
315
340
  /** Mark a successfully accepted group terminal and reclaim its bundle state. */
@@ -671,6 +696,15 @@ export declare class LocalExecutorImpl implements LocalExecutor {
671
696
  * A thrown exit never returns → the wrapper's boolean stays `false` → freeze.
672
697
  */
673
698
  private runMergeGateInner;
699
+ /**
700
+ * Submit one signed local MergeGate classification and return only an
701
+ * authoritative hosted outcome. `null` means the same-key submit/replay did
702
+ * not converge; callers must retain local recovery authority and withhold UI
703
+ * convergence. For protocol v2 PASS this runs before the first user-tree
704
+ * mutation, because the server can derive a policy failure that outranks the
705
+ * desktop's local PASS.
706
+ */
707
+ private submitHostedMergeGateVerdict;
674
708
  private submitMergeGateVerdictWithDeadline;
675
709
  /**
676
710
  * PHASE-589+469 W1 (§5.A / §5.C / #TC-2 / #TC-3) — drive the desktop CLI
@@ -70,6 +70,12 @@ export interface RunSnapshotMergeGateArgs {
70
70
  persistPreImages: (entries: PromoteManifestInput[]) => Promise<void>;
71
71
  readPromotion: () => Promise<SnapshotPromotionJournalV1 | null>;
72
72
  preparePromotion: (operationHash: string, files: readonly ReviewedShadowDiffFile[], workspaceRootAuthority: WorkspaceRootAuthority) => Promise<void>;
73
+ /**
74
+ * Backend + local terminal authority barrier. Called only after the local
75
+ * PREPARED journal is durable and before the first user-tree write, including
76
+ * journal replay after a crash.
77
+ */
78
+ beforePromotionMutation?: (operationHash: string, files: readonly ReviewedShadowDiffFile[], workspaceRootAuthority: WorkspaceRootAuthority) => Promise<void>;
73
79
  markPromotionApplied: (operationHash: string) => Promise<void>;
74
80
  timeoutMs?: number;
75
81
  /** @internal deterministic merge-planning aggregate-work ceiling for tests. */
@@ -179,6 +179,10 @@ export interface TrackAssignedPayload {
179
179
  */
180
180
  export interface MergeGateDispatchPayload {
181
181
  task_group_id: string;
182
+ /** Immutable group decision protocol; absent legacy packets are v1. */
183
+ decision_protocol_version?: 1 | 2;
184
+ /** Immutable terminal generation; required on v2, legacy v1 defaults to 1. */
185
+ group_generation?: number;
182
186
  merge_gate_id: string;
183
187
  /**
184
188
  * §12 Q1 — names CP-3 verification-runner wrapper(s). On the wire this is the
@@ -201,6 +205,8 @@ export interface MergeGateDispatchPayload {
201
205
  */
202
206
  export interface TaskGroupHaltedPayload {
203
207
  task_group_id: string;
208
+ /** Immutable server stamp; only v1 groups use a desktop-synthesized prompt. */
209
+ decision_protocol_version?: 1 | 2;
204
210
  halt_reason: string;
205
211
  per_track_status: {
206
212
  track_index: number;
@@ -0,0 +1,13 @@
1
+ export type MobilePromptInputIntent = {
2
+ kind: 'option';
3
+ option: string;
4
+ followUpText?: string;
5
+ } | {
6
+ kind: 'continue_conversation';
7
+ };
8
+ /**
9
+ * Separate explicit numbered prompt answers from normal conversation input.
10
+ * Only numbers advertised by the current prompt are option answers; every
11
+ * other value continues the conversation and therefore supersedes that prompt.
12
+ */
13
+ export declare function classifyMobilePromptInput(content: string, validOptionNumbers: readonly string[]): MobilePromptInputIntent;
@@ -9,6 +9,7 @@ import type { PlannerAdapter, PlannerInput, PlannerDecision, PlannerProbeResult
9
9
  import { type LocalExecutor, type AuthorityScope, type EmitShellEventFn as LEEmitShellEventFn } from '../local-executor';
10
10
  import { type EngineGroupState } from '../local-executor';
11
11
  import type { TeamTapEvent } from './index';
12
+ import type { WorkspaceOutcomeSinkTap } from './workspace-terminal-coordinator';
12
13
  import type { GroupDecisionSubmitDeps } from './gate-decision-submit';
13
14
  import { QuorumLoop } from './quorum-loop';
14
15
  import type { TaskProgressEvent } from './task-progress';
@@ -237,6 +238,8 @@ export declare function buildProductionPlannerStack(appsyncClient: AppSyncClient
237
238
  };
238
239
  export interface BuildTeamLocalExecutorResult {
239
240
  localExecutor: LocalExecutor;
241
+ /** Shell-installed writer-outcome coordinator used by v2 team promotion. */
242
+ workspaceOutcomeTap: WorkspaceOutcomeSinkTap;
240
243
  teamShellEventTap: {
241
244
  fn: (args: TeamTapEvent) => void;
242
245
  };