@gkorepanov/ccodex 0.3.0 → 0.4.1

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 (210) hide show
  1. package/README.md +139 -63
  2. package/assets/ccodex/goals/continuation.md +1 -0
  3. package/{compatibility.json → config/compatibility.json} +5 -6
  4. package/dist/claude/asyncQueue.d.ts +3 -0
  5. package/dist/claude/asyncQueue.js +13 -2
  6. package/dist/claude/asyncQueue.js.map +1 -1
  7. package/dist/claude/commandActions.d.ts +6 -0
  8. package/dist/claude/commandActions.js +57 -0
  9. package/dist/claude/commandActions.js.map +1 -0
  10. package/dist/claude/compactCommand.d.ts +2 -0
  11. package/dist/claude/compactCommand.js +7 -0
  12. package/dist/claude/compactCommand.js.map +1 -0
  13. package/dist/claude/goalTools.d.ts +15 -0
  14. package/dist/claude/goalTools.js +128 -0
  15. package/dist/claude/goalTools.js.map +1 -0
  16. package/dist/claude/hookMapper.d.ts +17 -4
  17. package/dist/claude/hookMapper.js +7 -5
  18. package/dist/claude/hookMapper.js.map +1 -1
  19. package/dist/claude/inputMapper.d.ts +1 -0
  20. package/dist/claude/inputMapper.js +1 -0
  21. package/dist/claude/inputMapper.js.map +1 -1
  22. package/dist/claude/rateLimits.d.ts +72 -0
  23. package/dist/claude/rateLimits.js +330 -0
  24. package/dist/claude/rateLimits.js.map +1 -0
  25. package/dist/claude/responseItemValidation.d.ts +2 -0
  26. package/dist/claude/responseItemValidation.js +40 -0
  27. package/dist/claude/responseItemValidation.js.map +1 -0
  28. package/dist/claude/resultClassifier.d.ts +8 -2
  29. package/dist/claude/resultClassifier.js +9 -1
  30. package/dist/claude/resultClassifier.js.map +1 -1
  31. package/dist/claude/service.d.ts +116 -29
  32. package/dist/claude/service.js +1337 -680
  33. package/dist/claude/service.js.map +1 -1
  34. package/dist/claude/session/backgroundOutput.d.ts +2 -0
  35. package/dist/claude/session/backgroundOutput.js +29 -0
  36. package/dist/claude/session/backgroundOutput.js.map +1 -0
  37. package/dist/claude/session/commands.d.ts +862 -0
  38. package/dist/claude/session/commands.js +2 -0
  39. package/dist/claude/session/commands.js.map +1 -0
  40. package/dist/claude/session/goalState.d.ts +49 -0
  41. package/dist/claude/session/goalState.js +407 -0
  42. package/dist/claude/session/goalState.js.map +1 -0
  43. package/dist/claude/session/mailbox.d.ts +52 -0
  44. package/dist/claude/session/mailbox.js +190 -0
  45. package/dist/claude/session/mailbox.js.map +1 -0
  46. package/dist/claude/session/outputAdapter.d.ts +11 -0
  47. package/dist/claude/session/outputAdapter.js +31 -0
  48. package/dist/claude/session/outputAdapter.js.map +1 -0
  49. package/dist/claude/session/permissionUpdates.d.ts +4 -0
  50. package/dist/claude/session/permissionUpdates.js +17 -0
  51. package/dist/claude/session/permissionUpdates.js.map +1 -0
  52. package/dist/claude/session/providerFacts.d.ts +47 -0
  53. package/dist/claude/session/providerFacts.js +84 -0
  54. package/dist/claude/session/providerFacts.js.map +1 -0
  55. package/dist/claude/session/providerRuntime.d.ts +1 -0
  56. package/dist/claude/session/providerRuntime.js +2 -0
  57. package/dist/claude/session/providerRuntime.js.map +1 -0
  58. package/dist/claude/session/providerRuntimeFactory.d.ts +49 -0
  59. package/dist/claude/session/providerRuntimeFactory.js +122 -0
  60. package/dist/claude/session/providerRuntimeFactory.js.map +1 -0
  61. package/dist/claude/session/repository.d.ts +57 -0
  62. package/dist/claude/session/repository.js +161 -0
  63. package/dist/claude/session/repository.js.map +1 -0
  64. package/dist/claude/session/runtime.d.ts +46 -0
  65. package/dist/claude/session/runtime.js +140 -0
  66. package/dist/claude/session/runtime.js.map +1 -0
  67. package/dist/claude/session/scopeState.d.ts +61 -0
  68. package/dist/claude/session/scopeState.js +74 -0
  69. package/dist/claude/session/scopeState.js.map +1 -0
  70. package/dist/claude/session/session.d.ts +285 -0
  71. package/dist/claude/session/session.js +6778 -0
  72. package/dist/claude/session/session.js.map +1 -0
  73. package/dist/claude/session/shellRunner.d.ts +13 -0
  74. package/dist/claude/session/shellRunner.js +103 -0
  75. package/dist/claude/session/shellRunner.js.map +1 -0
  76. package/dist/claude/session/usage.d.ts +2 -0
  77. package/dist/claude/session/usage.js +10 -0
  78. package/dist/claude/session/usage.js.map +1 -0
  79. package/dist/claude/sessionRegistry.d.ts +26 -0
  80. package/dist/claude/sessionRegistry.js +118 -0
  81. package/dist/claude/sessionRegistry.js.map +1 -0
  82. package/dist/claude/shellSupervisor.d.ts +1 -0
  83. package/dist/claude/shellSupervisor.js +69 -0
  84. package/dist/claude/shellSupervisor.js.map +1 -0
  85. package/dist/claude/statusCommand.d.ts +21 -0
  86. package/dist/claude/statusCommand.js +97 -0
  87. package/dist/claude/statusCommand.js.map +1 -0
  88. package/dist/claude/toolMapper.d.ts +9 -1
  89. package/dist/claude/toolMapper.js +98 -18
  90. package/dist/claude/toolMapper.js.map +1 -1
  91. package/dist/claude/transcriptBrancher.d.ts +37 -0
  92. package/dist/claude/transcriptBrancher.js +103 -0
  93. package/dist/claude/transcriptBrancher.js.map +1 -0
  94. package/dist/cli/delegate.js +23 -1
  95. package/dist/cli/delegate.js.map +1 -1
  96. package/dist/cli/main.js +28 -12
  97. package/dist/cli/main.js.map +1 -1
  98. package/dist/codex/generated/ResponseItemRuntimeSchema.d.ts +8 -0
  99. package/dist/codex/generated/ResponseItemRuntimeSchema.js +7 -0
  100. package/dist/codex/generated/ResponseItemRuntimeSchema.js.map +1 -0
  101. package/dist/compatibility/probe.js +12 -7
  102. package/dist/compatibility/probe.js.map +1 -1
  103. package/dist/config/config.d.ts +12 -0
  104. package/dist/config/config.js +103 -11
  105. package/dist/config/config.js.map +1 -1
  106. package/dist/daemon/daemon.js +91 -43
  107. package/dist/daemon/daemon.js.map +1 -1
  108. package/dist/daemon/ownership.d.ts +15 -0
  109. package/dist/daemon/ownership.js +185 -0
  110. package/dist/daemon/ownership.js.map +1 -0
  111. package/dist/daemon/probe.js +1 -1
  112. package/dist/daemon/supervisor.d.ts +3 -0
  113. package/dist/daemon/supervisor.js +37 -1
  114. package/dist/daemon/supervisor.js.map +1 -1
  115. package/dist/gateway/clientConnection.d.ts +7 -1
  116. package/dist/gateway/clientConnection.js +656 -60
  117. package/dist/gateway/clientConnection.js.map +1 -1
  118. package/dist/gateway/logicalThreadProjection.d.ts +8 -0
  119. package/dist/gateway/logicalThreadProjection.js +59 -0
  120. package/dist/gateway/logicalThreadProjection.js.map +1 -0
  121. package/dist/gateway/remoteRelay.js +0 -1
  122. package/dist/gateway/remoteRelay.js.map +1 -1
  123. package/dist/gateway/server.d.ts +1 -1
  124. package/dist/gateway/server.js +69 -11
  125. package/dist/gateway/server.js.map +1 -1
  126. package/dist/gateway/stockRpc.d.ts +5 -2
  127. package/dist/gateway/stockRpc.js +52 -6
  128. package/dist/gateway/stockRpc.js.map +1 -1
  129. package/dist/gateway/subscriptions.d.ts +19 -3
  130. package/dist/gateway/subscriptions.js +152 -13
  131. package/dist/gateway/subscriptions.js.map +1 -1
  132. package/dist/gateway/threadList.d.ts +7 -2
  133. package/dist/gateway/threadList.js +8 -4
  134. package/dist/gateway/threadList.js.map +1 -1
  135. package/dist/gateway/transientNotice.d.ts +15 -0
  136. package/dist/gateway/transientNotice.js +96 -1
  137. package/dist/gateway/transientNotice.js.map +1 -1
  138. package/dist/handoff/providerEpochs.d.ts +18 -0
  139. package/dist/handoff/providerEpochs.js +77 -0
  140. package/dist/handoff/providerEpochs.js.map +1 -0
  141. package/dist/handoff/service.d.ts +86 -6
  142. package/dist/handoff/service.js +1276 -168
  143. package/dist/handoff/service.js.map +1 -1
  144. package/dist/handoff/store.d.ts +189 -2
  145. package/dist/handoff/store.js +618 -7
  146. package/dist/handoff/store.js.map +1 -1
  147. package/dist/handoff/titleGeneration.d.ts +28 -0
  148. package/dist/handoff/titleGeneration.js +138 -0
  149. package/dist/handoff/titleGeneration.js.map +1 -0
  150. package/dist/management/doctor.d.ts +1 -1
  151. package/dist/management/doctor.js +32 -23
  152. package/dist/management/doctor.js.map +1 -1
  153. package/dist/management/lifecycle.js +14 -2
  154. package/dist/management/lifecycle.js.map +1 -1
  155. package/dist/management/remoteShim.d.ts +10 -0
  156. package/dist/management/remoteShim.js +65 -0
  157. package/dist/management/remoteShim.js.map +1 -0
  158. package/dist/management/setup.d.ts +5 -0
  159. package/dist/management/setup.js +122 -41
  160. package/dist/management/setup.js.map +1 -1
  161. package/dist/management/shimSelect.d.ts +3 -0
  162. package/dist/management/shimSelect.js +49 -0
  163. package/dist/management/shimSelect.js.map +1 -0
  164. package/dist/management/shims.d.ts +5 -0
  165. package/dist/management/shims.js +59 -0
  166. package/dist/management/shims.js.map +1 -0
  167. package/dist/observability/metrics.d.ts +2 -0
  168. package/dist/observability/metrics.js +6 -0
  169. package/dist/observability/metrics.js.map +1 -1
  170. package/dist/protocol/errors.d.ts +1 -0
  171. package/dist/protocol/errors.js +4 -1
  172. package/dist/protocol/errors.js.map +1 -1
  173. package/dist/runtime/dependencies.js +3 -3
  174. package/dist/runtime/dependencies.js.map +1 -1
  175. package/dist/runtime/providerAvailability.d.ts +24 -0
  176. package/dist/runtime/providerAvailability.js +107 -0
  177. package/dist/runtime/providerAvailability.js.map +1 -0
  178. package/dist/state/stateCommand.d.ts +21 -0
  179. package/dist/state/stateCommand.js +198 -0
  180. package/dist/state/stateCommand.js.map +1 -0
  181. package/dist/state/stockStateTracker.d.ts +16 -0
  182. package/dist/state/stockStateTracker.js +137 -0
  183. package/dist/state/stockStateTracker.js.map +1 -0
  184. package/dist/store/HybridStore.d.ts +118 -2
  185. package/dist/store/HybridStore.js +23 -1
  186. package/dist/store/HybridStore.js.map +1 -1
  187. package/dist/store/memoryStore.d.ts +57 -7
  188. package/dist/store/memoryStore.js +337 -5
  189. package/dist/store/memoryStore.js.map +1 -1
  190. package/dist/store/sqliteStore.d.ts +30 -4
  191. package/dist/store/sqliteStore.js +395 -42
  192. package/dist/store/sqliteStore.js.map +1 -1
  193. package/examples/config.toml +35 -0
  194. package/{LICENSES.md → legal/LICENSES.md} +2 -2
  195. package/{THIRD_PARTY_NOTICES.md → legal/THIRD_PARTY_NOTICES.md} +177 -148
  196. package/package.json +36 -24
  197. package/{install.sh → scripts/install.sh} +2 -2
  198. package/scripts/postinstall.mjs +10 -0
  199. package/vendor/codex/continuation.md +51 -0
  200. package/BUILD_BENCHMARKS.md +0 -27
  201. package/RELEASING.md +0 -98
  202. package/SSH_VERIFY.md +0 -69
  203. package/config.example.toml +0 -20
  204. package/dist/claude/interactions.d.ts +0 -23
  205. package/dist/claude/interactions.js +0 -77
  206. package/dist/claude/interactions.js.map +0 -1
  207. package/dist/claude/sessionRuntime.d.ts +0 -102
  208. package/dist/claude/sessionRuntime.js +0 -1361
  209. package/dist/claude/sessionRuntime.js.map +0 -1
  210. /package/{uninstall.sh → scripts/uninstall.sh} +0 -0
@@ -4,6 +4,23 @@ import type { Turn } from "../codex/generated/v2/Turn.js";
4
4
  import type { ThreadGoal } from "../codex/generated/v2/ThreadGoal.js";
5
5
  import type { TokenUsageBreakdown } from "../codex/generated/v2/TokenUsageBreakdown.js";
6
6
  import type { ApprovalsReviewer } from "../codex/generated/v2/ApprovalsReviewer.js";
7
+ export interface InternalGoal extends ThreadGoal {
8
+ readonly goalId: string;
9
+ }
10
+ export interface GoalPatch {
11
+ readonly objective?: string;
12
+ readonly status?: ThreadGoal["status"];
13
+ readonly tokenBudget?: number | null;
14
+ readonly replace?: boolean;
15
+ readonly now?: number;
16
+ }
17
+ export interface GoalUsageInput {
18
+ readonly threadId: string;
19
+ readonly expectedGoalId: string;
20
+ readonly tokenDelta: number;
21
+ readonly timeDeltaSeconds: number;
22
+ readonly checkpointKey?: string;
23
+ }
7
24
  export interface ClaudeThreadRecord {
8
25
  readonly thread: Thread;
9
26
  readonly claudeSessionId: string;
@@ -25,7 +42,13 @@ export interface ClaudeThreadRecord {
25
42
  readonly collaborationMode: unknown | null;
26
43
  readonly outputSchema: unknown | null;
27
44
  readonly tokenUsageTotal: TokenUsageBreakdown;
45
+ readonly tokenUsageLast: TokenUsageBreakdown | null;
46
+ readonly modelContextWindow: number | null;
47
+ readonly providerCostUsdTotal?: number;
48
+ readonly settingsGeneration?: number;
28
49
  }
50
+ export declare function settingsGeneration(record: ClaudeThreadRecord): number;
51
+ export declare function withSettingsFrom(base: ClaudeThreadRecord, settings: ClaudeThreadRecord): ClaudeThreadRecord;
29
52
  export interface PendingRequestRecord {
30
53
  readonly requestId: string;
31
54
  readonly threadId: string;
@@ -44,6 +67,76 @@ export interface EventPersistence {
44
67
  readonly providerEventId?: string | null;
45
68
  readonly dedupKey?: string | null;
46
69
  }
70
+ export interface StateEvent {
71
+ readonly turnId: string | null;
72
+ readonly method: string;
73
+ readonly params: unknown;
74
+ readonly providerEventType?: string | null;
75
+ readonly providerEventId?: string | null;
76
+ }
77
+ export interface ThreadStateCommit {
78
+ readonly record: ClaudeThreadRecord;
79
+ readonly turn?: Turn;
80
+ readonly insertTurn?: boolean;
81
+ readonly providerBoundary?: ProviderBoundaryCommit;
82
+ readonly events: readonly StateEvent[];
83
+ }
84
+ export interface TurnProviderBoundary {
85
+ readonly turnId: string;
86
+ readonly messageUuid: string;
87
+ }
88
+ export interface ProviderBoundaryCommit extends TurnProviderBoundary {
89
+ readonly ownerThreadId: string;
90
+ readonly itemIds?: readonly string[];
91
+ }
92
+ export interface PendingThreadRemoval {
93
+ readonly rootThreadId: string;
94
+ readonly claudeSessionId: string;
95
+ readonly cwd: string;
96
+ readonly kind: "delete" | "release" | "discard";
97
+ }
98
+ export interface StoredEvent {
99
+ readonly sequence: number;
100
+ readonly threadId: string;
101
+ readonly turnId: string | null;
102
+ readonly method: string;
103
+ readonly params: unknown;
104
+ readonly createdAt: number;
105
+ }
106
+ export type ProviderEventDisposition = "pending" | "projected" | "stateOnly" | "retainedOnly" | "abandoned" | "unsupportedVisible" | "failed";
107
+ export interface ProviderEventRecord {
108
+ readonly sequence: number;
109
+ readonly threadId: string;
110
+ readonly processEpoch: string;
111
+ readonly providerSequence: number;
112
+ readonly providerEventType: string;
113
+ readonly providerEventId: string | null;
114
+ readonly payload: unknown;
115
+ readonly disposition: ProviderEventDisposition;
116
+ readonly error: string | null;
117
+ readonly createdAt: number;
118
+ readonly projectedAt: number | null;
119
+ }
120
+ export interface ProviderItemCorrelation {
121
+ readonly providerMessageId: string;
122
+ readonly ownerThreadId: string;
123
+ readonly turnId: string;
124
+ readonly itemId: string;
125
+ }
126
+ export interface ProviderRetractionMutation {
127
+ readonly ownerThreadId: string;
128
+ readonly turn: Turn;
129
+ readonly clearBoundary: boolean;
130
+ }
131
+ export interface AppendProviderEvent {
132
+ readonly threadId: string;
133
+ readonly processEpoch: string;
134
+ readonly providerSequence: number;
135
+ readonly providerEventType: string;
136
+ readonly providerEventId: string | null;
137
+ readonly payload: unknown;
138
+ readonly createdAt: number;
139
+ }
47
140
  export interface HybridStore {
48
141
  createThread(record: ClaudeThreadRecord): void;
49
142
  hasThread(threadId: string): boolean;
@@ -51,7 +144,13 @@ export interface HybridStore {
51
144
  allThreadRecords(): ClaudeThreadRecord[];
52
145
  listThreads(params: ThreadListParams): Thread[];
53
146
  updateThread(record: ClaudeThreadRecord): void;
147
+ isThreadArchived(threadId: string): boolean;
54
148
  setThreadArchived(threadId: string, archived: boolean): void;
149
+ commitThreadsArchived(threadIds: readonly string[], archived: boolean): void;
150
+ beginThreadRemoval(removal: PendingThreadRemoval): void;
151
+ cancelThreadRemoval(rootThreadId: string): void;
152
+ listPendingThreadRemovals(): PendingThreadRemoval[];
153
+ commitThreadRemoval(rootThreadId: string, threadIds: readonly string[]): void;
55
154
  deleteThread(threadId: string): void;
56
155
  createTurn(threadId: string, turn: Turn): void;
57
156
  updateTurn(threadId: string, turn: Turn): void;
@@ -60,16 +159,33 @@ export interface HybridStore {
60
159
  setTurnClaudeMessageUuid(threadId: string, turnId: string, messageUuid: string): void;
61
160
  getTurnClaudeMessageUuid(threadId: string, turnId: string): string | undefined;
62
161
  truncateTurns(threadId: string, keepCount: number): void;
162
+ commitForkedThread(record: ClaudeThreadRecord, turns: readonly Turn[], boundaries: readonly TurnProviderBoundary[]): void;
163
+ commitThreadRollback(record: ClaudeThreadRecord, keepCount: number, boundaries: readonly TurnProviderBoundary[], removedThreadIds?: readonly string[]): void;
164
+ commitThreadState(commit: ThreadStateCommit): number[];
63
165
  appendEvent(threadId: string, turnId: string | null, method: string, params: unknown, persistence?: EventPersistence): number;
166
+ eventHighWatermark(threadId: string): number;
167
+ listEventsAfter(threadId: string, sequence: number): StoredEvent[];
64
168
  hasProcessedProviderEvent(threadId: string, providerEventId: string): boolean;
65
169
  markProviderEventProcessed(threadId: string, providerEventType: string, providerEventId: string): void;
170
+ appendProviderEvent(event: AppendProviderEvent): {
171
+ record: ProviderEventRecord;
172
+ inserted: boolean;
173
+ };
174
+ completeProviderEvent(threadId: string, sequence: number, disposition: Exclude<ProviderEventDisposition, "pending">, error?: string | null): void;
175
+ listProviderEvents(threadId: string, disposition?: ProviderEventDisposition): ProviderEventRecord[];
176
+ pruneProviderEvents(threadId: string, maxEvents: number, maxBytes: number): number;
177
+ linkProviderItems(threadId: string, providerMessageId: string, ownerThreadId: string, turnId: string, itemIds: readonly string[]): void;
178
+ listProviderItemCorrelations(threadId: string, providerMessageIds: readonly string[]): ProviderItemCorrelation[];
179
+ deleteProviderItemCorrelations(threadId: string, providerMessageIds: readonly string[]): void;
180
+ commitProviderRetraction(record: ClaudeThreadRecord, providerMessageIds: readonly string[], mutations: readonly ProviderRetractionMutation[], removedThreadIds?: readonly string[]): void;
66
181
  createPendingRequest(request: PendingRequestRecord): void;
67
182
  getPendingRequest(requestId: string): PendingRequestRecord | undefined;
68
183
  findPendingRequestByClaudeId(threadId: string, claudeRequestId: string): PendingRequestRecord | undefined;
69
184
  listPendingRequests(threadId: string): PendingRequestRecord[];
70
185
  resolvePendingRequest(requestId: string, status: "resolved" | "cancelled", response: unknown): void;
71
- getGoal(threadId: string): ThreadGoal | undefined;
72
- setGoal(goal: ThreadGoal): void;
186
+ getGoal(threadId: string): InternalGoal | undefined;
187
+ setGoal(threadId: string, patch: GoalPatch): InternalGoal;
73
188
  clearGoal(threadId: string): boolean;
189
+ accountGoalUsage(input: GoalUsageInput): InternalGoal | undefined;
74
190
  close(): void;
75
191
  }
@@ -1,2 +1,24 @@
1
- export {};
1
+ export function settingsGeneration(record) {
2
+ return record.settingsGeneration ?? 0;
3
+ }
4
+ export function withSettingsFrom(base, settings) {
5
+ return {
6
+ ...base,
7
+ thread: { ...base.thread, cwd: settings.thread.cwd },
8
+ modelPickerId: settings.modelPickerId,
9
+ claudeModelValue: settings.claudeModelValue,
10
+ serviceTier: settings.serviceTier,
11
+ approvalPolicy: settings.approvalPolicy,
12
+ approvalsReviewer: settings.approvalsReviewer,
13
+ sandboxPolicy: settings.sandboxPolicy,
14
+ baseInstructions: settings.baseInstructions,
15
+ developerInstructions: settings.developerInstructions,
16
+ personality: settings.personality,
17
+ reasoningEffort: settings.reasoningEffort,
18
+ reasoningSummary: settings.reasoningSummary,
19
+ collaborationMode: settings.collaborationMode,
20
+ outputSchema: settings.outputSchema,
21
+ settingsGeneration: settingsGeneration(settings),
22
+ };
23
+ }
2
24
  //# sourceMappingURL=HybridStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HybridStore.js","sourceRoot":"","sources":["../../src/store/HybridStore.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"HybridStore.js","sourceRoot":"","sources":["../../src/store/HybridStore.ts"],"names":[],"mappings":"AAsDA,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAwB,EACxB,QAA4B;IAE5B,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE;QACpD,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;QACrD,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,kBAAkB,EAAE,kBAAkB,CAAC,QAAQ,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -1,17 +1,21 @@
1
1
  import type { Thread } from "../codex/generated/v2/Thread.js";
2
2
  import type { ThreadListParams } from "../codex/generated/v2/ThreadListParams.js";
3
3
  import type { Turn } from "../codex/generated/v2/Turn.js";
4
- import type { ThreadGoal } from "../codex/generated/v2/ThreadGoal.js";
5
- import type { ClaudeThreadRecord, EventPersistence, HybridStore, PendingRequestRecord } from "./HybridStore.js";
4
+ import type { AppendProviderEvent, ClaudeThreadRecord, EventPersistence, GoalPatch, GoalUsageInput, HybridStore, InternalGoal, PendingRequestRecord, PendingThreadRemoval, ProviderEventDisposition, ProviderEventRecord, ProviderItemCorrelation, ProviderRetractionMutation, StoredEvent, ThreadStateCommit, TurnProviderBoundary } from "./HybridStore.js";
6
5
  export declare class MemoryHybridStore implements HybridStore {
7
6
  private readonly records;
8
7
  private readonly turns;
9
8
  private readonly pending;
10
9
  private readonly archived;
10
+ private readonly pendingRemovals;
11
11
  private readonly goals;
12
+ private readonly goalCheckpoints;
12
13
  private readonly turnMessages;
13
14
  private readonly eventDedup;
14
15
  private readonly providerEvents;
16
+ private readonly providerJournal;
17
+ private readonly providerItemCorrelations;
18
+ private readonly events;
15
19
  private eventSequence;
16
20
  createThread(record: ClaudeThreadRecord): void;
17
21
  hasThread(threadId: string): boolean;
@@ -19,7 +23,13 @@ export declare class MemoryHybridStore implements HybridStore {
19
23
  allThreadRecords(): ClaudeThreadRecord[];
20
24
  listThreads(params: ThreadListParams): Thread[];
21
25
  updateThread(record: ClaudeThreadRecord): void;
26
+ isThreadArchived(threadId: string): boolean;
22
27
  setThreadArchived(threadId: string, archived: boolean): void;
28
+ commitThreadsArchived(threadIds: readonly string[], archived: boolean): void;
29
+ beginThreadRemoval(removal: PendingThreadRemoval): void;
30
+ cancelThreadRemoval(rootThreadId: string): void;
31
+ listPendingThreadRemovals(): PendingThreadRemoval[];
32
+ commitThreadRemoval(rootThreadId: string, threadIds: readonly string[]): void;
23
33
  deleteThread(threadId: string): void;
24
34
  createTurn(threadId: string, turn: Turn): void;
25
35
  updateTurn(threadId: string, turn: Turn): void;
@@ -28,17 +38,34 @@ export declare class MemoryHybridStore implements HybridStore {
28
38
  setTurnClaudeMessageUuid(threadId: string, turnId: string, messageUuid: string): void;
29
39
  getTurnClaudeMessageUuid(threadId: string, turnId: string): string | undefined;
30
40
  truncateTurns(threadId: string, keepCount: number): void;
31
- appendEvent(threadId: string, _turnId: string | null, _method: string, _params: unknown, persistence?: EventPersistence): number;
41
+ commitForkedThread(record: ClaudeThreadRecord, turns: readonly Turn[], boundaries: readonly TurnProviderBoundary[]): void;
42
+ commitThreadRollback(record: ClaudeThreadRecord, keepCount: number, boundaries: readonly TurnProviderBoundary[], removedThreadIds?: readonly string[]): void;
43
+ commitThreadState(commit: ThreadStateCommit): number[];
44
+ appendEvent(threadId: string, turnId: string | null, method: string, params: unknown, persistence?: EventPersistence): number;
45
+ eventHighWatermark(threadId: string): number;
46
+ listEventsAfter(threadId: string, sequence: number): StoredEvent[];
32
47
  hasProcessedProviderEvent(threadId: string, providerEventId: string): boolean;
33
48
  markProviderEventProcessed(threadId: string, _providerEventType: string, providerEventId: string): void;
49
+ appendProviderEvent(event: AppendProviderEvent): {
50
+ record: ProviderEventRecord;
51
+ inserted: boolean;
52
+ };
53
+ completeProviderEvent(threadId: string, sequence: number, disposition: Exclude<ProviderEventDisposition, "pending">, error?: string | null): void;
54
+ listProviderEvents(threadId: string, disposition?: ProviderEventDisposition): ProviderEventRecord[];
55
+ pruneProviderEvents(threadId: string, maxEvents: number, maxBytes: number): number;
56
+ linkProviderItems(threadId: string, providerMessageId: string, ownerThreadId: string, turnId: string, itemIds: readonly string[]): void;
57
+ listProviderItemCorrelations(threadId: string, providerMessageIds: readonly string[]): ProviderItemCorrelation[];
58
+ deleteProviderItemCorrelations(threadId: string, providerMessageIds: readonly string[]): void;
59
+ commitProviderRetraction(record: ClaudeThreadRecord, providerMessageIds: readonly string[], mutations: readonly ProviderRetractionMutation[], removedThreadIds?: readonly string[]): void;
34
60
  createPendingRequest(request: PendingRequestRecord): void;
35
61
  getPendingRequest(requestId: string): PendingRequestRecord | undefined;
36
62
  findPendingRequestByClaudeId(threadId: string, claudeRequestId: string): PendingRequestRecord | undefined;
37
63
  listPendingRequests(threadId: string): PendingRequestRecord[];
38
64
  resolvePendingRequest(requestId: string, status: "resolved" | "cancelled", response: unknown): void;
39
- getGoal(threadId: string): ThreadGoal | undefined;
40
- setGoal(goal: ThreadGoal): void;
65
+ getGoal(threadId: string): InternalGoal | undefined;
66
+ setGoal(threadId: string, patch: GoalPatch): InternalGoal;
41
67
  clearGoal(threadId: string): boolean;
68
+ accountGoalUsage(input: GoalUsageInput): InternalGoal | undefined;
42
69
  close(): void;
43
70
  }
44
71
  export declare class LayeredHybridStore implements HybridStore {
@@ -52,7 +79,13 @@ export declare class LayeredHybridStore implements HybridStore {
52
79
  allThreadRecords(): ClaudeThreadRecord[];
53
80
  listThreads(params: ThreadListParams): Thread[];
54
81
  updateThread(record: ClaudeThreadRecord): void;
82
+ isThreadArchived(threadId: string): boolean;
55
83
  setThreadArchived(threadId: string, archived: boolean): void;
84
+ commitThreadsArchived(threadIds: readonly string[], archived: boolean): void;
85
+ beginThreadRemoval(removal: PendingThreadRemoval): void;
86
+ cancelThreadRemoval(rootThreadId: string): void;
87
+ listPendingThreadRemovals(): PendingThreadRemoval[];
88
+ commitThreadRemoval(rootThreadId: string, threadIds: readonly string[]): void;
56
89
  deleteThread(threadId: string): void;
57
90
  createTurn(threadId: string, turn: Turn): void;
58
91
  updateTurn(threadId: string, turn: Turn): void;
@@ -61,16 +94,33 @@ export declare class LayeredHybridStore implements HybridStore {
61
94
  setTurnClaudeMessageUuid(threadId: string, turnId: string, messageUuid: string): void;
62
95
  getTurnClaudeMessageUuid(threadId: string, turnId: string): string | undefined;
63
96
  truncateTurns(threadId: string, keepCount: number): void;
97
+ commitForkedThread(record: ClaudeThreadRecord, turns: readonly Turn[], boundaries: readonly TurnProviderBoundary[]): void;
98
+ commitThreadRollback(record: ClaudeThreadRecord, keepCount: number, boundaries: readonly TurnProviderBoundary[], removedThreadIds?: readonly string[]): void;
99
+ commitThreadState(commit: ThreadStateCommit): number[];
64
100
  appendEvent(threadId: string, turnId: string | null, method: string, params: unknown, persistence?: EventPersistence): number;
101
+ eventHighWatermark(threadId: string): number;
102
+ listEventsAfter(threadId: string, sequence: number): StoredEvent[];
65
103
  hasProcessedProviderEvent(threadId: string, providerEventId: string): boolean;
66
104
  markProviderEventProcessed(threadId: string, providerEventType: string, providerEventId: string): void;
105
+ appendProviderEvent(event: AppendProviderEvent): {
106
+ record: ProviderEventRecord;
107
+ inserted: boolean;
108
+ };
109
+ completeProviderEvent(threadId: string, sequence: number, disposition: Exclude<ProviderEventDisposition, "pending">, error?: string | null): void;
110
+ listProviderEvents(threadId: string, disposition?: ProviderEventDisposition): ProviderEventRecord[];
111
+ pruneProviderEvents(threadId: string, maxEvents: number, maxBytes: number): number;
112
+ linkProviderItems(threadId: string, providerMessageId: string, ownerThreadId: string, turnId: string, itemIds: readonly string[]): void;
113
+ listProviderItemCorrelations(threadId: string, providerMessageIds: readonly string[]): ProviderItemCorrelation[];
114
+ deleteProviderItemCorrelations(threadId: string, providerMessageIds: readonly string[]): void;
115
+ commitProviderRetraction(record: ClaudeThreadRecord, providerMessageIds: readonly string[], mutations: readonly ProviderRetractionMutation[], removedThreadIds?: readonly string[]): void;
67
116
  createPendingRequest(request: PendingRequestRecord): void;
68
117
  getPendingRequest(requestId: string): PendingRequestRecord | undefined;
69
118
  findPendingRequestByClaudeId(threadId: string, claudeRequestId: string): PendingRequestRecord | undefined;
70
119
  listPendingRequests(threadId: string): PendingRequestRecord[];
71
120
  resolvePendingRequest(requestId: string, status: "resolved" | "cancelled", response: unknown): void;
72
- getGoal(threadId: string): ThreadGoal | undefined;
73
- setGoal(goal: ThreadGoal): void;
121
+ getGoal(threadId: string): InternalGoal | undefined;
122
+ setGoal(threadId: string, patch: GoalPatch): InternalGoal;
74
123
  clearGoal(threadId: string): boolean;
124
+ accountGoalUsage(input: GoalUsageInput): InternalGoal | undefined;
75
125
  close(): void;
76
126
  }