sessionlog 0.0.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 (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +388 -0
  3. package/dist/agent/agents/claude-code.d.ts +76 -0
  4. package/dist/agent/agents/claude-code.d.ts.map +1 -0
  5. package/dist/agent/agents/claude-code.js +769 -0
  6. package/dist/agent/agents/claude-code.js.map +1 -0
  7. package/dist/agent/agents/cursor.d.ts +35 -0
  8. package/dist/agent/agents/cursor.d.ts.map +1 -0
  9. package/dist/agent/agents/cursor.js +294 -0
  10. package/dist/agent/agents/cursor.js.map +1 -0
  11. package/dist/agent/agents/gemini-cli.d.ts +62 -0
  12. package/dist/agent/agents/gemini-cli.d.ts.map +1 -0
  13. package/dist/agent/agents/gemini-cli.js +474 -0
  14. package/dist/agent/agents/gemini-cli.js.map +1 -0
  15. package/dist/agent/agents/opencode.d.ts +100 -0
  16. package/dist/agent/agents/opencode.d.ts.map +1 -0
  17. package/dist/agent/agents/opencode.js +423 -0
  18. package/dist/agent/agents/opencode.js.map +1 -0
  19. package/dist/agent/registry.d.ts +54 -0
  20. package/dist/agent/registry.d.ts.map +1 -0
  21. package/dist/agent/registry.js +123 -0
  22. package/dist/agent/registry.js.map +1 -0
  23. package/dist/agent/session-types.d.ts +45 -0
  24. package/dist/agent/session-types.d.ts.map +1 -0
  25. package/dist/agent/session-types.js +48 -0
  26. package/dist/agent/session-types.js.map +1 -0
  27. package/dist/agent/types.d.ts +126 -0
  28. package/dist/agent/types.d.ts.map +1 -0
  29. package/dist/agent/types.js +40 -0
  30. package/dist/agent/types.js.map +1 -0
  31. package/dist/cli.d.ts +12 -0
  32. package/dist/cli.d.ts.map +1 -0
  33. package/dist/cli.js +425 -0
  34. package/dist/cli.js.map +1 -0
  35. package/dist/commands/clean.d.ts +30 -0
  36. package/dist/commands/clean.d.ts.map +1 -0
  37. package/dist/commands/clean.js +98 -0
  38. package/dist/commands/clean.js.map +1 -0
  39. package/dist/commands/disable.d.ts +23 -0
  40. package/dist/commands/disable.d.ts.map +1 -0
  41. package/dist/commands/disable.js +57 -0
  42. package/dist/commands/disable.js.map +1 -0
  43. package/dist/commands/doctor.d.ts +43 -0
  44. package/dist/commands/doctor.d.ts.map +1 -0
  45. package/dist/commands/doctor.js +97 -0
  46. package/dist/commands/doctor.js.map +1 -0
  47. package/dist/commands/enable.d.ts +37 -0
  48. package/dist/commands/enable.d.ts.map +1 -0
  49. package/dist/commands/enable.js +133 -0
  50. package/dist/commands/enable.js.map +1 -0
  51. package/dist/commands/explain.d.ts +68 -0
  52. package/dist/commands/explain.d.ts.map +1 -0
  53. package/dist/commands/explain.js +182 -0
  54. package/dist/commands/explain.js.map +1 -0
  55. package/dist/commands/reset.d.ts +23 -0
  56. package/dist/commands/reset.d.ts.map +1 -0
  57. package/dist/commands/reset.js +68 -0
  58. package/dist/commands/reset.js.map +1 -0
  59. package/dist/commands/resume.d.ts +42 -0
  60. package/dist/commands/resume.d.ts.map +1 -0
  61. package/dist/commands/resume.js +133 -0
  62. package/dist/commands/resume.js.map +1 -0
  63. package/dist/commands/rewind.d.ts +34 -0
  64. package/dist/commands/rewind.d.ts.map +1 -0
  65. package/dist/commands/rewind.js +155 -0
  66. package/dist/commands/rewind.js.map +1 -0
  67. package/dist/commands/status.d.ts +51 -0
  68. package/dist/commands/status.d.ts.map +1 -0
  69. package/dist/commands/status.js +112 -0
  70. package/dist/commands/status.js.map +1 -0
  71. package/dist/config.d.ts +40 -0
  72. package/dist/config.d.ts.map +1 -0
  73. package/dist/config.js +127 -0
  74. package/dist/config.js.map +1 -0
  75. package/dist/git-operations.d.ts +191 -0
  76. package/dist/git-operations.d.ts.map +1 -0
  77. package/dist/git-operations.js +462 -0
  78. package/dist/git-operations.js.map +1 -0
  79. package/dist/hooks/git-hooks.d.ts +22 -0
  80. package/dist/hooks/git-hooks.d.ts.map +1 -0
  81. package/dist/hooks/git-hooks.js +139 -0
  82. package/dist/hooks/git-hooks.js.map +1 -0
  83. package/dist/hooks/lifecycle.d.ts +21 -0
  84. package/dist/hooks/lifecycle.d.ts.map +1 -0
  85. package/dist/hooks/lifecycle.js +179 -0
  86. package/dist/hooks/lifecycle.js.map +1 -0
  87. package/dist/index.d.ts +76 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +166 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/security/redaction.d.ts +35 -0
  92. package/dist/security/redaction.d.ts.map +1 -0
  93. package/dist/security/redaction.js +239 -0
  94. package/dist/security/redaction.js.map +1 -0
  95. package/dist/session/state-machine.d.ts +90 -0
  96. package/dist/session/state-machine.d.ts.map +1 -0
  97. package/dist/session/state-machine.js +345 -0
  98. package/dist/session/state-machine.js.map +1 -0
  99. package/dist/store/checkpoint-store.d.ts +59 -0
  100. package/dist/store/checkpoint-store.d.ts.map +1 -0
  101. package/dist/store/checkpoint-store.js +321 -0
  102. package/dist/store/checkpoint-store.js.map +1 -0
  103. package/dist/store/native-store.d.ts +14 -0
  104. package/dist/store/native-store.d.ts.map +1 -0
  105. package/dist/store/native-store.js +159 -0
  106. package/dist/store/native-store.js.map +1 -0
  107. package/dist/store/provider-types.d.ts +78 -0
  108. package/dist/store/provider-types.d.ts.map +1 -0
  109. package/dist/store/provider-types.js +12 -0
  110. package/dist/store/provider-types.js.map +1 -0
  111. package/dist/store/session-store.d.ts +36 -0
  112. package/dist/store/session-store.d.ts.map +1 -0
  113. package/dist/store/session-store.js +193 -0
  114. package/dist/store/session-store.js.map +1 -0
  115. package/dist/strategy/attribution.d.ts +39 -0
  116. package/dist/strategy/attribution.d.ts.map +1 -0
  117. package/dist/strategy/attribution.js +225 -0
  118. package/dist/strategy/attribution.js.map +1 -0
  119. package/dist/strategy/common.d.ts +57 -0
  120. package/dist/strategy/common.d.ts.map +1 -0
  121. package/dist/strategy/common.js +156 -0
  122. package/dist/strategy/common.js.map +1 -0
  123. package/dist/strategy/content-overlap.d.ts +33 -0
  124. package/dist/strategy/content-overlap.d.ts.map +1 -0
  125. package/dist/strategy/content-overlap.js +176 -0
  126. package/dist/strategy/content-overlap.js.map +1 -0
  127. package/dist/strategy/manual-commit.d.ts +36 -0
  128. package/dist/strategy/manual-commit.d.ts.map +1 -0
  129. package/dist/strategy/manual-commit.js +717 -0
  130. package/dist/strategy/manual-commit.js.map +1 -0
  131. package/dist/strategy/types.d.ts +163 -0
  132. package/dist/strategy/types.d.ts.map +1 -0
  133. package/dist/strategy/types.js +48 -0
  134. package/dist/strategy/types.js.map +1 -0
  135. package/dist/summarize/claude-generator.d.ts +25 -0
  136. package/dist/summarize/claude-generator.d.ts.map +1 -0
  137. package/dist/summarize/claude-generator.js +87 -0
  138. package/dist/summarize/claude-generator.js.map +1 -0
  139. package/dist/summarize/summarize.d.ts +52 -0
  140. package/dist/summarize/summarize.d.ts.map +1 -0
  141. package/dist/summarize/summarize.js +335 -0
  142. package/dist/summarize/summarize.js.map +1 -0
  143. package/dist/types.d.ts +293 -0
  144. package/dist/types.d.ts.map +1 -0
  145. package/dist/types.js +94 -0
  146. package/dist/types.js.map +1 -0
  147. package/dist/utils/chunk-files.d.ts +25 -0
  148. package/dist/utils/chunk-files.d.ts.map +1 -0
  149. package/dist/utils/chunk-files.js +47 -0
  150. package/dist/utils/chunk-files.js.map +1 -0
  151. package/dist/utils/commit-message.d.ts +11 -0
  152. package/dist/utils/commit-message.d.ts.map +1 -0
  153. package/dist/utils/commit-message.js +54 -0
  154. package/dist/utils/commit-message.js.map +1 -0
  155. package/dist/utils/detect-agent.d.ts +19 -0
  156. package/dist/utils/detect-agent.d.ts.map +1 -0
  157. package/dist/utils/detect-agent.js +34 -0
  158. package/dist/utils/detect-agent.js.map +1 -0
  159. package/dist/utils/hook-managers.d.ts +24 -0
  160. package/dist/utils/hook-managers.d.ts.map +1 -0
  161. package/dist/utils/hook-managers.js +96 -0
  162. package/dist/utils/hook-managers.js.map +1 -0
  163. package/dist/utils/ide-tags.d.ts +12 -0
  164. package/dist/utils/ide-tags.d.ts.map +1 -0
  165. package/dist/utils/ide-tags.js +30 -0
  166. package/dist/utils/ide-tags.js.map +1 -0
  167. package/dist/utils/paths.d.ts +32 -0
  168. package/dist/utils/paths.d.ts.map +1 -0
  169. package/dist/utils/paths.js +55 -0
  170. package/dist/utils/paths.js.map +1 -0
  171. package/dist/utils/preview-rewind.d.ts +23 -0
  172. package/dist/utils/preview-rewind.d.ts.map +1 -0
  173. package/dist/utils/preview-rewind.js +63 -0
  174. package/dist/utils/preview-rewind.js.map +1 -0
  175. package/dist/utils/rewind-conflict.d.ts +52 -0
  176. package/dist/utils/rewind-conflict.d.ts.map +1 -0
  177. package/dist/utils/rewind-conflict.js +79 -0
  178. package/dist/utils/rewind-conflict.js.map +1 -0
  179. package/dist/utils/shadow-branch.d.ts +44 -0
  180. package/dist/utils/shadow-branch.d.ts.map +1 -0
  181. package/dist/utils/shadow-branch.js +93 -0
  182. package/dist/utils/shadow-branch.js.map +1 -0
  183. package/dist/utils/string-utils.d.ts +24 -0
  184. package/dist/utils/string-utils.d.ts.map +1 -0
  185. package/dist/utils/string-utils.js +47 -0
  186. package/dist/utils/string-utils.js.map +1 -0
  187. package/dist/utils/todo-extract.d.ts +52 -0
  188. package/dist/utils/todo-extract.d.ts.map +1 -0
  189. package/dist/utils/todo-extract.js +167 -0
  190. package/dist/utils/todo-extract.js.map +1 -0
  191. package/dist/utils/trailers.d.ts +36 -0
  192. package/dist/utils/trailers.d.ts.map +1 -0
  193. package/dist/utils/trailers.js +148 -0
  194. package/dist/utils/trailers.js.map +1 -0
  195. package/dist/utils/transcript-parse.d.ts +57 -0
  196. package/dist/utils/transcript-parse.d.ts.map +1 -0
  197. package/dist/utils/transcript-parse.js +126 -0
  198. package/dist/utils/transcript-parse.js.map +1 -0
  199. package/dist/utils/transcript-timestamp.d.ts +22 -0
  200. package/dist/utils/transcript-timestamp.d.ts.map +1 -0
  201. package/dist/utils/transcript-timestamp.js +56 -0
  202. package/dist/utils/transcript-timestamp.js.map +1 -0
  203. package/dist/utils/tree-ops.d.ts +47 -0
  204. package/dist/utils/tree-ops.d.ts.map +1 -0
  205. package/dist/utils/tree-ops.js +145 -0
  206. package/dist/utils/tree-ops.js.map +1 -0
  207. package/dist/utils/tty.d.ts +25 -0
  208. package/dist/utils/tty.d.ts.map +1 -0
  209. package/dist/utils/tty.js +70 -0
  210. package/dist/utils/tty.js.map +1 -0
  211. package/dist/utils/validation.d.ts +31 -0
  212. package/dist/utils/validation.d.ts.map +1 -0
  213. package/dist/utils/validation.js +59 -0
  214. package/dist/utils/validation.js.map +1 -0
  215. package/dist/utils/worktree.d.ts +16 -0
  216. package/dist/utils/worktree.d.ts.map +1 -0
  217. package/dist/utils/worktree.js +50 -0
  218. package/dist/utils/worktree.js.map +1 -0
  219. package/package.json +64 -0
@@ -0,0 +1,345 @@
1
+ /**
2
+ * Session State Machine
3
+ *
4
+ * Pure-function state machine for session lifecycle transitions.
5
+ * Ported from Go: session/phase.go
6
+ *
7
+ * The state machine computes the next phase and required actions given the
8
+ * current phase and an event. ApplyTransition executes side effects.
9
+ */
10
+ /**
11
+ * Normalize a phase string, treating empty or unknown values as 'idle'
12
+ * for backward compatibility with pre-state-machine session files.
13
+ */
14
+ export function phaseFromString(s) {
15
+ switch (s) {
16
+ case 'active':
17
+ case 'active_committed':
18
+ // "active_committed" was removed with the 1:1 checkpoint model.
19
+ return 'active';
20
+ case 'idle':
21
+ return 'idle';
22
+ case 'ended':
23
+ return 'ended';
24
+ default:
25
+ return 'idle';
26
+ }
27
+ }
28
+ const ALL_EVENTS = [
29
+ 0 /* StateMachineEvent.TurnStart */,
30
+ 1 /* StateMachineEvent.TurnEnd */,
31
+ 2 /* StateMachineEvent.GitCommit */,
32
+ 3 /* StateMachineEvent.SessionStart */,
33
+ 4 /* StateMachineEvent.SessionStop */,
34
+ 5 /* StateMachineEvent.Compaction */,
35
+ ];
36
+ export function eventToString(e) {
37
+ switch (e) {
38
+ case 0 /* StateMachineEvent.TurnStart */:
39
+ return 'TurnStart';
40
+ case 1 /* StateMachineEvent.TurnEnd */:
41
+ return 'TurnEnd';
42
+ case 2 /* StateMachineEvent.GitCommit */:
43
+ return 'GitCommit';
44
+ case 3 /* StateMachineEvent.SessionStart */:
45
+ return 'SessionStart';
46
+ case 4 /* StateMachineEvent.SessionStop */:
47
+ return 'SessionStop';
48
+ case 5 /* StateMachineEvent.Compaction */:
49
+ return 'Compaction';
50
+ default:
51
+ return `Event(${e})`;
52
+ }
53
+ }
54
+ export function actionToString(a) {
55
+ switch (a) {
56
+ case 0 /* Action.Condense */:
57
+ return 'Condense';
58
+ case 1 /* Action.CondenseIfFilesTouched */:
59
+ return 'CondenseIfFilesTouched';
60
+ case 2 /* Action.DiscardIfNoFiles */:
61
+ return 'DiscardIfNoFiles';
62
+ case 3 /* Action.WarnStaleSession */:
63
+ return 'WarnStaleSession';
64
+ case 4 /* Action.ClearEndedAt */:
65
+ return 'ClearEndedAt';
66
+ case 5 /* Action.UpdateLastInteraction */:
67
+ return 'UpdateLastInteraction';
68
+ default:
69
+ return `Action(${a})`;
70
+ }
71
+ }
72
+ // ============================================================================
73
+ // Transition — pure function, no side effects
74
+ // ============================================================================
75
+ export function transition(current, event, ctx) {
76
+ current = phaseFromString(current);
77
+ switch (current) {
78
+ case 'idle':
79
+ return transitionFromIdle(event, ctx);
80
+ case 'active':
81
+ return transitionFromActive(event, ctx);
82
+ case 'ended':
83
+ return transitionFromEnded(event, ctx);
84
+ default:
85
+ return { newPhase: 'idle', actions: [] };
86
+ }
87
+ }
88
+ function transitionFromIdle(event, ctx) {
89
+ switch (event) {
90
+ case 0 /* StateMachineEvent.TurnStart */:
91
+ return {
92
+ newPhase: 'active',
93
+ actions: [5 /* Action.UpdateLastInteraction */],
94
+ };
95
+ case 1 /* StateMachineEvent.TurnEnd */:
96
+ return { newPhase: 'idle', actions: [] };
97
+ case 2 /* StateMachineEvent.GitCommit */:
98
+ if (ctx.isRebaseInProgress) {
99
+ return { newPhase: 'idle', actions: [] };
100
+ }
101
+ return {
102
+ newPhase: 'idle',
103
+ actions: [0 /* Action.Condense */, 5 /* Action.UpdateLastInteraction */],
104
+ };
105
+ case 3 /* StateMachineEvent.SessionStart */:
106
+ return { newPhase: 'idle', actions: [] };
107
+ case 4 /* StateMachineEvent.SessionStop */:
108
+ return {
109
+ newPhase: 'ended',
110
+ actions: [5 /* Action.UpdateLastInteraction */],
111
+ };
112
+ case 5 /* StateMachineEvent.Compaction */:
113
+ return {
114
+ newPhase: 'idle',
115
+ actions: [1 /* Action.CondenseIfFilesTouched */, 5 /* Action.UpdateLastInteraction */],
116
+ };
117
+ default:
118
+ return { newPhase: 'idle', actions: [] };
119
+ }
120
+ }
121
+ function transitionFromActive(event, ctx) {
122
+ switch (event) {
123
+ case 0 /* StateMachineEvent.TurnStart */:
124
+ return {
125
+ newPhase: 'active',
126
+ actions: [5 /* Action.UpdateLastInteraction */],
127
+ };
128
+ case 1 /* StateMachineEvent.TurnEnd */:
129
+ return {
130
+ newPhase: 'idle',
131
+ actions: [5 /* Action.UpdateLastInteraction */],
132
+ };
133
+ case 2 /* StateMachineEvent.GitCommit */:
134
+ if (ctx.isRebaseInProgress) {
135
+ return { newPhase: 'active', actions: [] };
136
+ }
137
+ return {
138
+ newPhase: 'active',
139
+ actions: [0 /* Action.Condense */, 5 /* Action.UpdateLastInteraction */],
140
+ };
141
+ case 3 /* StateMachineEvent.SessionStart */:
142
+ return {
143
+ newPhase: 'active',
144
+ actions: [3 /* Action.WarnStaleSession */],
145
+ };
146
+ case 4 /* StateMachineEvent.SessionStop */:
147
+ return {
148
+ newPhase: 'ended',
149
+ actions: [5 /* Action.UpdateLastInteraction */],
150
+ };
151
+ case 5 /* StateMachineEvent.Compaction */:
152
+ return {
153
+ newPhase: 'active',
154
+ actions: [1 /* Action.CondenseIfFilesTouched */, 5 /* Action.UpdateLastInteraction */],
155
+ };
156
+ default:
157
+ return { newPhase: 'active', actions: [] };
158
+ }
159
+ }
160
+ function transitionFromEnded(event, ctx) {
161
+ switch (event) {
162
+ case 0 /* StateMachineEvent.TurnStart */:
163
+ return {
164
+ newPhase: 'active',
165
+ actions: [4 /* Action.ClearEndedAt */, 5 /* Action.UpdateLastInteraction */],
166
+ };
167
+ case 1 /* StateMachineEvent.TurnEnd */:
168
+ return { newPhase: 'ended', actions: [] };
169
+ case 2 /* StateMachineEvent.GitCommit */:
170
+ if (ctx.isRebaseInProgress) {
171
+ return { newPhase: 'ended', actions: [] };
172
+ }
173
+ if (ctx.hasFilesTouched) {
174
+ return {
175
+ newPhase: 'ended',
176
+ actions: [1 /* Action.CondenseIfFilesTouched */, 5 /* Action.UpdateLastInteraction */],
177
+ };
178
+ }
179
+ return {
180
+ newPhase: 'ended',
181
+ actions: [2 /* Action.DiscardIfNoFiles */, 5 /* Action.UpdateLastInteraction */],
182
+ };
183
+ case 3 /* StateMachineEvent.SessionStart */:
184
+ return {
185
+ newPhase: 'idle',
186
+ actions: [4 /* Action.ClearEndedAt */],
187
+ };
188
+ case 4 /* StateMachineEvent.SessionStop */:
189
+ return { newPhase: 'ended', actions: [] };
190
+ case 5 /* StateMachineEvent.Compaction */:
191
+ return { newPhase: 'ended', actions: [] };
192
+ default:
193
+ return { newPhase: 'ended', actions: [] };
194
+ }
195
+ }
196
+ export class NoOpActionHandler {
197
+ async handleCondense() { }
198
+ async handleCondenseIfFilesTouched() { }
199
+ async handleDiscardIfNoFiles() { }
200
+ async handleWarnStaleSession() { }
201
+ }
202
+ /**
203
+ * Apply a TransitionResult to state: sets the new phase, then executes
204
+ * all actions. Common actions (UpdateLastInteraction, ClearEndedAt)
205
+ * always run. Strategy-specific handler actions stop on first error.
206
+ */
207
+ export async function applyTransition(state, result, handler) {
208
+ state.phase = result.newPhase;
209
+ let handlerErr = null;
210
+ for (const action of result.actions) {
211
+ switch (action) {
212
+ case 5 /* Action.UpdateLastInteraction */:
213
+ state.lastInteractionTime = new Date().toISOString();
214
+ break;
215
+ case 4 /* Action.ClearEndedAt */:
216
+ state.endedAt = undefined;
217
+ break;
218
+ case 0 /* Action.Condense */:
219
+ if (!handlerErr) {
220
+ try {
221
+ await handler.handleCondense(state);
222
+ }
223
+ catch (e) {
224
+ handlerErr = e instanceof Error ? e : new Error(String(e));
225
+ }
226
+ }
227
+ break;
228
+ case 1 /* Action.CondenseIfFilesTouched */:
229
+ if (!handlerErr) {
230
+ try {
231
+ await handler.handleCondenseIfFilesTouched(state);
232
+ }
233
+ catch (e) {
234
+ handlerErr = e instanceof Error ? e : new Error(String(e));
235
+ }
236
+ }
237
+ break;
238
+ case 2 /* Action.DiscardIfNoFiles */:
239
+ if (!handlerErr) {
240
+ try {
241
+ await handler.handleDiscardIfNoFiles(state);
242
+ }
243
+ catch (e) {
244
+ handlerErr = e instanceof Error ? e : new Error(String(e));
245
+ }
246
+ }
247
+ break;
248
+ case 3 /* Action.WarnStaleSession */:
249
+ if (!handlerErr) {
250
+ try {
251
+ await handler.handleWarnStaleSession(state);
252
+ }
253
+ catch (e) {
254
+ handlerErr = e instanceof Error ? e : new Error(String(e));
255
+ }
256
+ }
257
+ break;
258
+ }
259
+ }
260
+ return handlerErr;
261
+ }
262
+ // ============================================================================
263
+ // Session State Helpers
264
+ // ============================================================================
265
+ /** Duration after which a session is considered stale (7 days) */
266
+ export const STALE_SESSION_THRESHOLD_MS = 7 * 24 * 60 * 60 * 1000;
267
+ /**
268
+ * Returns true when the session's last interaction exceeds the stale threshold.
269
+ */
270
+ export function isStale(lastInteractionTime) {
271
+ if (!lastInteractionTime)
272
+ return false;
273
+ return Date.now() - new Date(lastInteractionTime).getTime() > STALE_SESSION_THRESHOLD_MS;
274
+ }
275
+ /**
276
+ * Normalize session state after loading from disk.
277
+ * Migrates legacy phase values and deprecated transcript fields.
278
+ */
279
+ export function normalizeAfterLoad(state) {
280
+ // Normalize legacy phase values
281
+ state.phase = phaseFromString(state.phase);
282
+ // Migrate transcript fields
283
+ if (!state.checkpointTranscriptStart) {
284
+ if (state.condensedTranscriptLines && state.condensedTranscriptLines > 0) {
285
+ state.checkpointTranscriptStart = state.condensedTranscriptLines;
286
+ }
287
+ else if (state.transcriptLinesAtStart && state.transcriptLinesAtStart > 0) {
288
+ state.checkpointTranscriptStart = state.transcriptLinesAtStart;
289
+ }
290
+ }
291
+ // Clear deprecated fields
292
+ state.condensedTranscriptLines = 0;
293
+ state.transcriptLinesAtStart = 0;
294
+ // Backfill attributionBaseCommit
295
+ if (!state.attributionBaseCommit && state.baseCommit) {
296
+ state.attributionBaseCommit = state.baseCommit;
297
+ }
298
+ }
299
+ // ============================================================================
300
+ // Mermaid Diagram
301
+ // ============================================================================
302
+ const ALL_PHASES = ['idle', 'active', 'ended'];
303
+ /**
304
+ * Generate a Mermaid state diagram from the transition table.
305
+ */
306
+ export function mermaidDiagram() {
307
+ const lines = ['stateDiagram-v2'];
308
+ lines.push(' state "IDLE" as idle');
309
+ lines.push(' state "ACTIVE" as active');
310
+ lines.push(' state "ENDED" as ended');
311
+ lines.push('');
312
+ for (const phase of ALL_PHASES) {
313
+ for (const event of ALL_EVENTS) {
314
+ let variants;
315
+ if (event === 2 /* StateMachineEvent.GitCommit */ && phase === 'ended') {
316
+ variants = [
317
+ { label: '[files]', ctx: { hasFilesTouched: true, isRebaseInProgress: false } },
318
+ { label: '[no files]', ctx: { hasFilesTouched: false, isRebaseInProgress: false } },
319
+ { label: '[rebase]', ctx: { hasFilesTouched: false, isRebaseInProgress: true } },
320
+ ];
321
+ }
322
+ else if (event === 2 /* StateMachineEvent.GitCommit */) {
323
+ variants = [
324
+ { label: '', ctx: { hasFilesTouched: false, isRebaseInProgress: false } },
325
+ { label: '[rebase]', ctx: { hasFilesTouched: false, isRebaseInProgress: true } },
326
+ ];
327
+ }
328
+ else {
329
+ variants = [{ label: '', ctx: { hasFilesTouched: false, isRebaseInProgress: false } }];
330
+ }
331
+ for (const v of variants) {
332
+ const result = transition(phase, event, v.ctx);
333
+ let label = eventToString(event);
334
+ if (v.label)
335
+ label += ' ' + v.label;
336
+ if (result.actions.length > 0) {
337
+ label += ' / ' + result.actions.map(actionToString).join(', ');
338
+ }
339
+ lines.push(` ${phase} --> ${result.newPhase} : ${label}`);
340
+ }
341
+ }
342
+ }
343
+ return lines.join('\n') + '\n';
344
+ }
345
+ //# sourceMappingURL=state-machine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../../src/session/state-machine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Checkpoint Store
3
+ *
4
+ * Manages checkpoint data stored on git branches.
5
+ * - Temporary checkpoints live on shadow branches (entire/<hash>)
6
+ * - Committed checkpoints live on entire/checkpoints/v1 branch
7
+ */
8
+ import { type CheckpointID, type CheckpointSummary, type CommittedMetadata, type WriteTemporaryOptions, type WriteTemporaryResult, type WriteCommittedOptions } from '../types.js';
9
+ export interface CheckpointStore {
10
+ /** Generate a new checkpoint ID */
11
+ generateID(): Promise<CheckpointID>;
12
+ /** Write a temporary checkpoint (shadow branch) */
13
+ writeTemporary(opts: WriteTemporaryOptions): Promise<WriteTemporaryResult>;
14
+ /** Read the latest temporary checkpoint for a base commit */
15
+ readTemporary(baseCommit: string, worktreeID?: string): Promise<{
16
+ commitHash: string;
17
+ treeHash: string;
18
+ sessionID: string;
19
+ } | null>;
20
+ /** List all temporary (shadow) branches */
21
+ listTemporary(): Promise<Array<{
22
+ branchName: string;
23
+ baseCommit: string;
24
+ latestCommit: string;
25
+ sessionID: string;
26
+ timestamp: string;
27
+ }>>;
28
+ /** Write a committed checkpoint to the metadata branch */
29
+ writeCommitted(opts: WriteCommittedOptions): Promise<void>;
30
+ /** Read a committed checkpoint summary */
31
+ readCommitted(checkpointID: CheckpointID): Promise<CheckpointSummary | null>;
32
+ /** Read session content from a committed checkpoint */
33
+ readSessionContent(checkpointID: CheckpointID, sessionIndex: number): Promise<{
34
+ metadata: CommittedMetadata;
35
+ transcript: string;
36
+ prompts: string;
37
+ context: string;
38
+ } | null>;
39
+ /** List committed checkpoints (most recent first) */
40
+ listCommitted(limit?: number): Promise<CheckpointSummary[]>;
41
+ /** Delete a shadow branch */
42
+ deleteShadowBranch(branchName: string): Promise<void>;
43
+ /** Get the shadow branch name for a base commit */
44
+ getShadowBranchName(baseCommit: string, worktreeID?: string): string;
45
+ }
46
+ /**
47
+ * Create a checkpoint store.
48
+ *
49
+ * @param cwd - The project working directory (used for shadow branches / temporary checkpoints)
50
+ * @param sessionRepoCwd - Optional separate repo directory for committed checkpoints.
51
+ * When provided, the `entire/checkpoints/v1` branch and its data are stored
52
+ * in this repo instead of the project repo. Shadow branches remain in the
53
+ * project repo since they reference the project's git objects.
54
+ * @param checkpointsBranch - Optional override for the checkpoints branch name.
55
+ * Defaults to `entire/checkpoints/v1`. When multiple projects share a session
56
+ * repo, each project uses a unique branch like `entire/checkpoints/v1/<projectID>`.
57
+ */
58
+ export declare function createCheckpointStore(cwd?: string, sessionRepoCwd?: string, checkpointsBranch?: string): CheckpointStore;
59
+ //# sourceMappingURL=checkpoint-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-store.d.ts","sourceRoot":"","sources":["../../src/store/checkpoint-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAM3B,MAAM,aAAa,CAAC;AAuBrB,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAEpC,mDAAmD;IACnD,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE3E,6DAA6D;IAC7D,aAAa,CACX,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAE/E,2CAA2C;IAC3C,aAAa,IAAI,OAAO,CACtB,KAAK,CAAC;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CACH,CAAC;IAEF,0DAA0D;IAC1D,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,0CAA0C;IAC1C,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAE7E,uDAAuD;IACvD,kBAAkB,CAChB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;QACT,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC,CAAC;IAEV,qDAAqD;IACrD,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAE5D,6BAA6B;IAC7B,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD,mDAAmD;IACnD,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtE;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,CAAC,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,EACvB,iBAAiB,CAAC,EAAE,MAAM,GACzB,eAAe,CA6VjB"}