@quantiya/codevibe-claude-plugin 2.0.73 → 2.0.75

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 (41) 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/appsync/appsync-client.d.ts +62 -24
  4. package/node_modules/@quantiya/codevibe-core/dist/appsync/queries.d.ts +8 -12
  5. package/node_modules/@quantiya/codevibe-core/dist/appsync/sync-event-client.d.ts +3 -3
  6. package/node_modules/@quantiya/codevibe-core/dist/appsync/sync-inbound-journal.d.ts +2 -0
  7. package/node_modules/@quantiya/codevibe-core/dist/appsync/sync-live-connection.d.ts +6 -1
  8. package/node_modules/@quantiya/codevibe-core/dist/appsync/sync-operation-journal.d.ts +5 -0
  9. package/node_modules/@quantiya/codevibe-core/dist/appsync/sync-workspace-outcome.d.ts +5 -3
  10. package/node_modules/@quantiya/codevibe-core/dist/index.d.ts +1 -1
  11. package/node_modules/@quantiya/codevibe-core/dist/index.js +594 -595
  12. package/node_modules/@quantiya/codevibe-core/dist/local-model/ollama-gemma-runner.d.ts +18 -0
  13. package/node_modules/@quantiya/codevibe-core/dist/local-model/ollama.d.ts +26 -0
  14. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/attachments.d.ts +8 -14
  15. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.d.ts +50 -64
  16. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +2787 -2797
  17. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/components/OrchestrationApp.d.ts +3 -1
  18. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/decision-attempt-recovery.d.ts +2 -2
  19. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/gate-decision-submit.d.ts +2 -2
  20. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/git-status-summary.d.ts +5 -10
  21. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/index.d.ts +29 -46
  22. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/route-browse.d.ts +4 -4
  23. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/runtime-labels.d.ts +63 -0
  24. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/task-progress-relay.d.ts +9 -1
  25. package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/task-progress.d.ts +7 -0
  26. package/node_modules/@quantiya/codevibe-core/dist/planner/cache.d.ts +7 -0
  27. package/node_modules/@quantiya/codevibe-core/dist/planner/gemma-errors.d.ts +61 -0
  28. package/node_modules/@quantiya/codevibe-core/dist/planner/gemma-pipeline.d.ts +219 -0
  29. package/node_modules/@quantiya/codevibe-core/dist/planner/gemma-runner.d.ts +66 -0
  30. package/node_modules/@quantiya/codevibe-core/dist/planner/hosted-gemma-runner.d.ts +83 -0
  31. package/node_modules/@quantiya/codevibe-core/dist/planner/index.d.ts +5 -3
  32. package/node_modules/@quantiya/codevibe-core/dist/planner/local-advisory.d.ts +3 -6
  33. package/node_modules/@quantiya/codevibe-core/dist/planner/local-gemma.d.ts +82 -21
  34. package/node_modules/@quantiya/codevibe-core/dist/planner/types.d.ts +4 -4
  35. package/node_modules/@quantiya/codevibe-core/dist/reviewer/verdict-classifier.d.ts +18 -5
  36. package/node_modules/@quantiya/codevibe-core/dist/tool-activity/consolidator.d.ts +5 -1
  37. package/node_modules/@quantiya/codevibe-core/package.json +1 -1
  38. package/package.json +2 -2
  39. package/node_modules/@quantiya/codevibe-core/dist/planner/composite-adapter.d.ts +0 -39
  40. package/node_modules/@quantiya/codevibe-core/dist/planner/composite-advisory.d.ts +0 -26
  41. package/node_modules/@quantiya/codevibe-core/dist/planner/hosted-advisory.d.ts +0 -40
@@ -762,10 +762,6 @@ export declare class AppSyncClient {
762
762
  * added wait. Retain the server's earliest retry time after cancellation or
763
763
  * exhaustion so a later caller cannot restart I/O before that time. */
764
764
  private readCompanionSyncState;
765
- /** Reuse only the server-unexpired protocol selection, never its entitlement
766
- * or usage as admission authority. Every selected cloud operation still
767
- * authorizes itself. Explicit status/quota refreshes remain fresh reads. */
768
- private getCompanionSyncRoute;
769
765
  /** Subscribe to validated reads already performed by this client. No new
770
766
  * request, persistent journal, producer grant or retry is created here. */
771
767
  subscribeCompanionSyncState(userId: string, listener: (state: CompanionSyncState | null) => void): () => void;
@@ -779,8 +775,8 @@ export declare class AppSyncClient {
779
775
  private resetSyncProducerAuthority;
780
776
  private resetCompanionSyncDisplay;
781
777
  private publishCompanionSyncDisplay;
782
- /** Signed closed safety fact, independent of customer event quota. Only an
783
- * affirmative cloud LEGACY selection permits the caller's legacy sink.
778
+ /** Signed closed safety fact. The cloud owns availability/accounting policy;
779
+ * no client status read or transport selection precedes this operation.
784
780
  * Success confirms canonical persistence, never phone/render delivery. */
785
781
  reportSecurityPostureIfSelected(sessionScope: {
786
782
  sessionId: string;
@@ -872,17 +868,18 @@ export declare class AppSyncClient {
872
868
  ledger: ToolActivityLedger;
873
869
  }): Promise<void>;
874
870
  /**
875
- * Provider startup uses cloud routing, never a local tier/flag or an error
876
- * fallback. A transport is generation-bound for its entire lifetime. Cutover
877
- * and rollback must drain/restart the producer; they cannot reinterpret its
878
- * sealed source windows as a different protocol.
871
+ * Both producer formats use the existing createEvent API. Retained signed
872
+ * sources keep their original generation and bytes; legacy sessions keep
873
+ * their supported request shape. Neither format selects accounting policy.
879
874
  */
880
875
  selectToolActivityTransport(options: {
881
876
  sessionId: string;
882
877
  root?: string;
883
878
  legacyTransport: ToolActivityTransport;
884
879
  }): Promise<ToolActivityTransport>;
885
- /** Shared cloud-selected routing for tools and ordinary native sources. */
880
+ /** Prepare request format from session identity, never quota/control mode.
881
+ * SDK tags remain temporarily for existing source owners. They identify
882
+ * journal formats, not different APIs or accounting policies. */
886
883
  selectCompanionSourceTransport(options: {
887
884
  sessionId: string;
888
885
  root?: string;
@@ -897,6 +894,9 @@ export declare class AppSyncClient {
897
894
  getEncryptionContext(): Promise<ToolActivitySyncEncryption>;
898
895
  prepareEvent(input: CreateEventInput, operationId: string): Promise<CreateDesktopSyncEventInput>;
899
896
  }>;
897
+ /** An ordinary subscription/reader is not authority to sign as the creator.
898
+ * Read the existing identity only; never mint a replacement for this check. */
899
+ private canSignDesktopSession;
900
900
  /** Shared E1 producer adapter. The legacy encryption factory runs only after
901
901
  * affirmative cloud LEGACY selection. V2 encrypts inside the durable source
902
902
  * factory and never maps a quota omission to a successful cloud publication. */
@@ -928,7 +928,7 @@ export declare class AppSyncClient {
928
928
  }, legacy: () => Promise<boolean>, options?: {
929
929
  root?: string;
930
930
  }): Promise<boolean>;
931
- private resolvePromptByProtocol;
931
+ private resolveOwnedPrompt;
932
932
  private finishPromptResolution;
933
933
  /** Explicit session-owned restart recovery. Inventory is bounded by the
934
934
  * account store's 256-file cap; empty inventory does no cloud I/O. Reuses
@@ -1000,11 +1000,10 @@ export declare class AppSyncClient {
1000
1000
  /** Monotonic control transition; safe retry means re-read canonical status,
1001
1001
  * not retrying the provider input or manufacturing a full Event response. */
1002
1002
  updateDesktopSyncEventStatus(input: UpdateDesktopSyncStatusInput, signal?: AbortSignal): Promise<SyncStatusReceipt>;
1003
- /** One budgeted liveness operation, never a legacy fallback. The producer
1004
- * must persist each receipt/progress before advancing its refresh batch. */
1003
+ /** Compatibility helper over the existing batch API; no expiry is invented. */
1005
1004
  refreshDesktopSyncPrompt(promptId: string, signal?: AbortSignal): Promise<SyncPromptRetentionReceipt>;
1006
- /** Producer-facing batch: V2 keeps exact per-incarnation progress; the
1007
- * legacy protocol retains its existing chunked endpoint until cutover. */
1005
+ /** One canonical batch route. Retained generations identify only the local
1006
+ * re-raise journal; they cannot select a cloud API or accounting policy. */
1008
1007
  refreshSessionOpenPromptTtl(options: {
1009
1008
  sessionId: string;
1010
1009
  promptIds: readonly string[];
@@ -1041,7 +1040,7 @@ export declare class AppSyncClient {
1041
1040
  getSession(sessionId: string): Promise<Session | null>;
1042
1041
  /** The workspace owner retains its existing durable outbox. Never put a
1043
1042
  * second journal around it, re-encrypt it, or choose the current generation.
1044
- * Quota omission is a canonical ACK, not a synthetic Event or a retry queue.
1043
+ * Existing createEvent owns cloud policy and returns its authenticated Event.
1045
1044
  */
1046
1045
  submitWorkspaceOutcome(value: CreateEventInput, options?: WorkspaceOutcomeSubmissionOptions): Promise<WorkspaceOutcomeReceipt>;
1047
1046
  /**
@@ -1057,7 +1056,7 @@ export declare class AppSyncClient {
1057
1056
  * row/Event had already aged out — the caller re-raises those (§6a-4
1058
1057
  * return-driven re-raise). No-ops on an empty list (no network call).
1059
1058
  */
1060
- refreshOpenPromptTtl(promptIds: string[]): Promise<string[]>;
1059
+ refreshOpenPromptTtl(promptIds: string[], signal?: AbortSignal): Promise<string[]>;
1061
1060
  /**
1062
1061
  * Update event status
1063
1062
  */
@@ -1283,6 +1282,45 @@ export declare class AppSyncClient {
1283
1282
  serverLatencyMs: number;
1284
1283
  providerUsed: string;
1285
1284
  }>;
1285
+ /**
1286
+ * Planner parity (codevibe-backend docs/2.0/PLANNER-RUNTIME-PARITY-DESIGN.md §4.1) — classify a
1287
+ * prompt core's shared renderer produced. `encryptedPrompt` is AES-GCM ciphertext under the
1288
+ * session key; `responseSchema` is forwarded by the server only when allow-listed. Returns the
1289
+ * RAW model text, encrypted. Errors surface as `AppSyncGraphQLError` whose `responseMessage`
1290
+ * starts with a bracketed code (`[BudgetExceeded] …`); the hosted runner maps them.
1291
+ */
1292
+ classifyRenderedPlannerPrompt(input: {
1293
+ sessionId: string;
1294
+ encryptedPrompt: string;
1295
+ responseSchema?: string;
1296
+ maxOutputTokens: number;
1297
+ }, signal?: AbortSignal): Promise<{
1298
+ encryptedOutput: string;
1299
+ finishReason: 'STOP' | 'LENGTH' | null;
1300
+ promptTokens: number | null;
1301
+ outputTokens: number | null;
1302
+ }>;
1303
+ /**
1304
+ * Planner parity §4.2 — `generatePlannerAdvisory` in client-rendered mode: no server preamble,
1305
+ * the hosted image capability (≤ 8 images, PNG/JPEG/GIF/BMP/WEBP, 4,500,000 total ciphertext),
1306
+ * and the mode's extra output fields (a missing `finishReason` means a backend that predates
1307
+ * the mode; the hosted runner fails closed on it).
1308
+ */
1309
+ generatePlannerAdvisoryRendered(input: {
1310
+ sessionId: string;
1311
+ prompt: string;
1312
+ images?: string[];
1313
+ maxTokens: number;
1314
+ temperature: number;
1315
+ responseFormat: 'TEXT' | 'JSON_OBJECT';
1316
+ }, signal?: AbortSignal): Promise<{
1317
+ advisoryText: string;
1318
+ serverLatencyMs: number;
1319
+ providerUsed: string;
1320
+ finishReason: 'STOP' | 'LENGTH' | null;
1321
+ promptTokens: number | null;
1322
+ outputTokens: number | null;
1323
+ }>;
1286
1324
  /**
1287
1325
  * CP-8 min Stage 1 R1 HIGH-1 closure (Hendry-approved 2026-05-19).
1288
1326
  *
@@ -1328,9 +1366,9 @@ export declare class AppSyncClient {
1328
1366
  * result is deliberately not subscribed: it fences the submitting client but
1329
1367
  * never stands in for the durable GATE_RESOLUTION Event.
1330
1368
  */
1331
- submitGateDecisionV2(request: CanonicalGateDecisionRequest, canonicalRequestHash: string): Promise<DecisionSubmissionResult>;
1369
+ submitGateDecision(request: CanonicalGateDecisionRequest, canonicalRequestHash: string): Promise<DecisionSubmissionResult>;
1332
1370
  /** P16/P20 TaskGroup-native decision admission (CLAIM, not workflow COMMIT). */
1333
- submitGroupDecisionV2(request: CanonicalGroupDecisionRequest, canonicalRequestHash: string): Promise<DecisionSubmissionResult>;
1371
+ submitGroupDecision(request: CanonicalGroupDecisionRequest, canonicalRequestHash: string): Promise<DecisionSubmissionResult>;
1334
1372
  authorizeGroupTerminalOperation(input: {
1335
1373
  sessionId: string;
1336
1374
  taskGroupId: string;
@@ -1385,7 +1423,7 @@ export declare class AppSyncClient {
1385
1423
  operationHash: string;
1386
1424
  operationReceiptHash: string;
1387
1425
  }): Promise<GroupOperationResult>;
1388
- commitGroupDecisionV2(input: {
1426
+ commitGroupDecision(input: {
1389
1427
  sessionId: string;
1390
1428
  taskGroupId: string;
1391
1429
  decisionClaimId: string;
@@ -1397,8 +1435,9 @@ export declare class AppSyncClient {
1397
1435
  promptId: string;
1398
1436
  decisionAttemptId: string;
1399
1437
  }): Promise<DecisionAttemptResult>;
1400
- /** Cloud-selected recovery protocol. V2 requires the session owner's known
1401
- * generation and never falls back to a live Session lookup or legacy Event. */
1438
+ /** One canonical recovery API. The cloud verifies owner/history authority
1439
+ * and, when supplied, the exact generation. No accounting-route/status read
1440
+ * or second delivery transport may block decision recovery. */
1402
1441
  getGateResolution(input: {
1403
1442
  sessionId: string;
1404
1443
  promptId: string;
@@ -1776,7 +1815,6 @@ export declare class AppSyncClient {
1776
1815
  private ownSyncReader;
1777
1816
  private trackSyncClosure;
1778
1817
  private joinSyncSubscriptionClosures;
1779
- private syncHistoryForSession;
1780
1818
  /**
1781
1819
  * Subscribe to events for a session
1782
1820
  */
@@ -4,7 +4,6 @@ export declare const queries: {
4
4
  listEvents: string;
5
5
  listSupervisionEvents: string;
6
6
  getDecisionAttempt: string;
7
- getGateResolutionV2: string;
8
7
  getGateResolution: string;
9
8
  listOpenPrompts: string;
10
9
  listUserDeviceKeys: string;
@@ -35,17 +34,12 @@ export declare const mutations: {
35
34
  putContextItem: string;
36
35
  createSession: string;
37
36
  updateSession: string;
38
- createEventV2: string;
39
- recordWorkspaceOutcomeV2: string;
40
- updateEventV2: string;
37
+ updateEvent: string;
41
38
  createEvent: string;
42
39
  refreshOpenPromptTtl: string;
43
- refreshOpenPromptTtlV2: string;
44
- resolveOpenPromptV2: string;
45
- reportSecurityPostureV2: string;
46
- confirmSessionRetirementV2: string;
40
+ reportSecurityPosture: string;
41
+ confirmSessionRetirement: string;
47
42
  updateEventStatus: string;
48
- updateEventStatusV2: string;
49
43
  registerDeviceKey: string;
50
44
  grantSessionKey: string;
51
45
  getAttachmentDownloadUrl: string;
@@ -55,16 +49,18 @@ export declare const mutations: {
55
49
  classifyPlannerPrompt: string;
56
50
  pingPlanner: string;
57
51
  generatePlannerAdvisory: string;
52
+ classifyRenderedPlannerPrompt: string;
53
+ generatePlannerAdvisoryRendered: string;
58
54
  applyUserDecision: string;
59
- submitGateDecisionV2: string;
60
- submitGroupDecisionV2: string;
55
+ submitGateDecision: string;
56
+ submitGroupDecision: string;
61
57
  authorizeGroupTerminalOperation: string;
62
58
  beginGroupPromotion: string;
63
59
  completeGroupPromotion: string;
64
60
  beginGroupRevert: string;
65
61
  completeGroupRevert: string;
66
62
  prepareGroupKeep: string;
67
- commitGroupDecisionV2: string;
63
+ commitGroupDecision: string;
68
64
  recordContinuationPacketWritten: string;
69
65
  createTaskGroup: string;
70
66
  submitMergeGateVerdict: string;
@@ -66,7 +66,7 @@ export interface SyncStatusReceipt {
66
66
  export type SyncPromptRetentionReceipt = {
67
67
  promptId: string;
68
68
  status: 'REFRESHED';
69
- expiresAt: number;
69
+ expiresAt?: number;
70
70
  } | {
71
71
  promptId: string;
72
72
  status: 'RERAISE_REQUIRED';
@@ -82,8 +82,8 @@ export interface SyncEventReceipt {
82
82
  emittedBy: 'IMPLEMENTOR' | 'SYSTEM' | 'USER';
83
83
  }
84
84
  export declare class SyncEventClientError extends Error {
85
- readonly code: 'INVALID_SYNC_INPUT' | 'INVALID_SYNC_RECEIPT' | 'INVALID_SYNC_STATE' | 'SYNC_IDENTITY_UNAVAILABLE' | 'SYNC_ACCOUNT_CHANGED' | 'SYNC_PRODUCER_FROZEN' | 'SYNC_SESSION_UNAVAILABLE' | 'SYNC_SESSION_GENERATION_CHANGED' | 'SYNC_SESSION_KEY_UNAVAILABLE';
86
- constructor(code: 'INVALID_SYNC_INPUT' | 'INVALID_SYNC_RECEIPT' | 'INVALID_SYNC_STATE' | 'SYNC_IDENTITY_UNAVAILABLE' | 'SYNC_ACCOUNT_CHANGED' | 'SYNC_PRODUCER_FROZEN' | 'SYNC_SESSION_UNAVAILABLE' | 'SYNC_SESSION_GENERATION_CHANGED' | 'SYNC_SESSION_KEY_UNAVAILABLE');
85
+ readonly code: 'INVALID_SYNC_INPUT' | 'INVALID_SYNC_RECEIPT' | 'INVALID_SYNC_STATE' | 'SYNC_IDENTITY_UNAVAILABLE' | 'SYNC_ACCOUNT_CHANGED' | 'SYNC_PRODUCER_FROZEN' | 'SYNC_SESSION_UNAVAILABLE' | 'SYNC_SESSION_GENERATION_CHANGED' | 'SYNC_SESSION_KEY_UNAVAILABLE' | 'SYNC_INBOUND_RECOVERY_REQUIRED' | 'SYNC_INPUT_RECOVERY_INCOMPLETE';
86
+ constructor(code: 'INVALID_SYNC_INPUT' | 'INVALID_SYNC_RECEIPT' | 'INVALID_SYNC_STATE' | 'SYNC_IDENTITY_UNAVAILABLE' | 'SYNC_ACCOUNT_CHANGED' | 'SYNC_PRODUCER_FROZEN' | 'SYNC_SESSION_UNAVAILABLE' | 'SYNC_SESSION_GENERATION_CHANGED' | 'SYNC_SESSION_KEY_UNAVAILABLE' | 'SYNC_INBOUND_RECOVERY_REQUIRED' | 'SYNC_INPUT_RECOVERY_INCOMPLETE');
87
87
  }
88
88
  export declare const SYNC_PROMPT_RAISE_FIELDS: readonly ["promptId", "ownerToken", "producerKind", "mobileActionable"];
89
89
  /** Same closed commitment as the backend. No key/transport work is performed. */
@@ -104,6 +104,8 @@ export interface DesktopInboundJournal {
104
104
  pending: readonly SyncRecoveryTarget[];
105
105
  uncertain: number;
106
106
  }>;
107
+ /** Read-only compatibility exclusion set, including uncertain handoffs. */
108
+ retainedCoordinates(): Promise<readonly SyncRecoveryTarget[]>;
107
109
  /** Coordinates only. Their payload must never be sent to a provider again. */
108
110
  pendingAcknowledgements(): Promise<readonly SyncRecoveryTarget[]>;
109
111
  /** Only a completed local handoff authorizes retrying its status write.
@@ -1,5 +1,5 @@
1
1
  import WebSocket from 'ws';
2
- import { DesktopSyncReadClient, type SyncReadEvent, type SyncRecoveryTarget, type SyncExecutedInput } from './sync-read-client';
2
+ import { DesktopSyncReadClient, type SyncReadEvent, type SyncInputCoordinate, type SyncRecoveryTarget, type SyncExecutedInput } from './sync-read-client';
3
3
  import type { DurableDesktopSyncReader } from './sync-desktop-registration';
4
4
  import type { DesktopSyncSessionScope } from './sync-operation-journal';
5
5
  import type { DesktopInboundJournal } from './sync-inbound-journal';
@@ -63,6 +63,11 @@ export declare class DesktopSyncLiveConnection {
63
63
  private now;
64
64
  private fence;
65
65
  private sameScope;
66
+ /** One finite upgrade recovery pass, not a live delivery transport. Recover
67
+ * saved coordinates and previously accepted lifecycle inputs whose hints
68
+ * never reached this host. Ordinary canonical Events have no lifecycle stamp
69
+ * and are left to AppSync. No socket, history scan, maintenance or timer. */
70
+ recoverAcceptedInputs(onCoordinate?: (coordinate: Readonly<SyncInputCoordinate>) => void): Promise<void>;
66
71
  start(): Promise<void>;
67
72
  private deadline;
68
73
  private sendControl;
@@ -145,6 +145,11 @@ export declare class DurableDesktopSyncWriter {
145
145
  promptId: string;
146
146
  state: 'STAGED' | 'SETTLED';
147
147
  }>>;
148
+ /** Metadata-only inventory for preserving pre-consolidation re-raise owners.
149
+ * These generations identify local receipts, never a cloud API or tier. */
150
+ promptRetentionScopes(): Promise<Array<DesktopSyncSessionScope & {
151
+ promptIds: string[];
152
+ }>>;
148
153
  promptRetention(): PromptRetentionJournal;
149
154
  /** Canonical INACTIVE proof and joined publication owners are prerequisites.
150
155
  * Validate the complete exact-incarnation target set before deleting anything;
@@ -11,13 +11,15 @@ export interface WorkspaceOutcomeReceipt {
11
11
  syncDisposition: 'ADMITTED' | 'OMITTED_QUOTA' | 'LEGACY_COMMITTED';
12
12
  }
13
13
  export interface WorkspaceOutcomeSubmissionOptions {
14
- /** Persisted by the existing outbox; V2 results never downgrade on rollback. */
14
+ /** Retained old outbox marker; never selects a network route or accounting. */
15
15
  requiresV2?: boolean;
16
- /** Must durably pin V2 before the first V2 network mutation. */
16
+ /** Existing outbox durability barrier, called before the canonical mutation. */
17
17
  beforeV2?: () => Promise<void>;
18
18
  }
19
19
  /** Original ciphertext and generation only; no current Session/key lookup. */
20
20
  export declare function snapshotWorkspaceOutcomeInput(value: CreateEventInput): CreateEventInput;
21
21
  export declare function parseWorkspaceOutcomeReceipt(value: unknown, expected: CreateEventInput): WorkspaceOutcomeReceipt;
22
- /** Used only after an affirmative cloud LEGACY route and a real Event ACK. */
22
+ /** Local projection of the real canonical Event. It is not billing authority. */
23
+ export declare function workspaceOutcomeEventReceipt(event: Event, expected: CreateEventInput): WorkspaceOutcomeReceipt;
24
+ /** Retained decoder helper for the existing legacy receipt representation. */
23
25
  export declare function legacyWorkspaceOutcomeReceipt(event: Event, expected: CreateEventInput): WorkspaceOutcomeReceipt;
@@ -59,7 +59,7 @@ export * as CredentialBroker from './credential-broker';
59
59
  export * as SubstrateLaunch from './substrate-launch';
60
60
  export * from './types';
61
61
  export * as Planner from './planner';
62
- export { CompositePlannerAdapter, type CompositePlannerAdapterOptions, type AdvisoryRunner, type AdvisoryOptions, type AdvisoryResponseFormat, type LocalGemmaAdvisoryRunner, type LocalGemmaAdvisoryOptions, type LocalGemmaAdvisoryResponseFormat, HostedGemmaAdvisoryRunner, type HostedGemmaAdvisoryRunnerDeps, type HostedAdvisoryTransport, CompositeAdvisoryRunner, type CompositeAdvisoryRunnerOptions, } from './planner';
62
+ export { type AdvisoryRunner, type AdvisoryOptions, type AdvisoryResponseFormat, type LocalGemmaAdvisoryRunner, type LocalGemmaAdvisoryOptions, type LocalGemmaAdvisoryResponseFormat, GemmaCallPipeline, GemmaPlannerAdapter, } from './planner';
63
63
  export { assertReviewerVendorCredential, reviewerProviderFor, withReviewerCredentialPreflight, ReviewerCredentialMissingError, assertImplementorVendorCredential, implementorProviderFor, withImplementorCredentialPreflight, ImplementorCredentialMissingError, type ReviewerCredentialStore, } from './substrate-launch';
64
64
  export { OllamaGemmaPlannerRunner, type OllamaRuntimeConfig } from './local-model/ollama';
65
65
  export * as Continuation from './continuation';