opentasks 0.0.2 → 0.0.4

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 (309) hide show
  1. package/README.md +58 -1
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +81 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/client/client.d.ts +20 -0
  7. package/dist/client/client.d.ts.map +1 -1
  8. package/dist/client/client.js +46 -5
  9. package/dist/client/client.js.map +1 -1
  10. package/dist/config/env.d.ts.map +1 -1
  11. package/dist/config/env.js +11 -0
  12. package/dist/config/env.js.map +1 -1
  13. package/dist/config/index.d.ts +1 -1
  14. package/dist/config/index.d.ts.map +1 -1
  15. package/dist/config/index.js.map +1 -1
  16. package/dist/config/schema.d.ts +76 -0
  17. package/dist/config/schema.d.ts.map +1 -1
  18. package/dist/config/schema.js +60 -0
  19. package/dist/config/schema.js.map +1 -1
  20. package/dist/core/init.d.ts +17 -0
  21. package/dist/core/init.d.ts.map +1 -0
  22. package/dist/core/init.js +54 -0
  23. package/dist/core/init.js.map +1 -0
  24. package/dist/daemon/entire-linker.d.ts +3 -0
  25. package/dist/daemon/entire-linker.d.ts.map +1 -1
  26. package/dist/daemon/entire-linker.js +29 -2
  27. package/dist/daemon/entire-linker.js.map +1 -1
  28. package/dist/daemon/factory.d.ts +3 -0
  29. package/dist/daemon/factory.d.ts.map +1 -1
  30. package/dist/daemon/factory.js +2 -1
  31. package/dist/daemon/factory.js.map +1 -1
  32. package/dist/daemon/lifecycle.d.ts.map +1 -1
  33. package/dist/daemon/lifecycle.js +34 -4
  34. package/dist/daemon/lifecycle.js.map +1 -1
  35. package/dist/daemon/location-state.d.ts +2 -1
  36. package/dist/daemon/location-state.d.ts.map +1 -1
  37. package/dist/daemon/location-state.js +19 -4
  38. package/dist/daemon/location-state.js.map +1 -1
  39. package/dist/daemon/methods/tools.d.ts +11 -1
  40. package/dist/daemon/methods/tools.d.ts.map +1 -1
  41. package/dist/daemon/methods/tools.js +40 -6
  42. package/dist/daemon/methods/tools.js.map +1 -1
  43. package/dist/entire/agent/agents/claude-code.d.ts +76 -0
  44. package/dist/entire/agent/agents/claude-code.d.ts.map +1 -0
  45. package/dist/entire/agent/agents/claude-code.js +759 -0
  46. package/dist/entire/agent/agents/claude-code.js.map +1 -0
  47. package/dist/entire/agent/agents/cursor.d.ts +35 -0
  48. package/dist/entire/agent/agents/cursor.d.ts.map +1 -0
  49. package/dist/entire/agent/agents/cursor.js +294 -0
  50. package/dist/entire/agent/agents/cursor.js.map +1 -0
  51. package/dist/entire/agent/agents/gemini-cli.d.ts +62 -0
  52. package/dist/entire/agent/agents/gemini-cli.d.ts.map +1 -0
  53. package/dist/entire/agent/agents/gemini-cli.js +462 -0
  54. package/dist/entire/agent/agents/gemini-cli.js.map +1 -0
  55. package/dist/entire/agent/agents/opencode.d.ts +100 -0
  56. package/dist/entire/agent/agents/opencode.d.ts.map +1 -0
  57. package/dist/entire/agent/agents/opencode.js +423 -0
  58. package/dist/entire/agent/agents/opencode.js.map +1 -0
  59. package/dist/entire/agent/registry.d.ts +54 -0
  60. package/dist/entire/agent/registry.d.ts.map +1 -0
  61. package/dist/entire/agent/registry.js +123 -0
  62. package/dist/entire/agent/registry.js.map +1 -0
  63. package/dist/entire/agent/session-types.d.ts +45 -0
  64. package/dist/entire/agent/session-types.d.ts.map +1 -0
  65. package/dist/entire/agent/session-types.js +50 -0
  66. package/dist/entire/agent/session-types.js.map +1 -0
  67. package/dist/entire/agent/types.d.ts +126 -0
  68. package/dist/entire/agent/types.d.ts.map +1 -0
  69. package/dist/entire/agent/types.js +39 -0
  70. package/dist/entire/agent/types.js.map +1 -0
  71. package/dist/entire/commands/clean.d.ts +30 -0
  72. package/dist/entire/commands/clean.d.ts.map +1 -0
  73. package/dist/entire/commands/clean.js +99 -0
  74. package/dist/entire/commands/clean.js.map +1 -0
  75. package/dist/entire/commands/disable.d.ts +23 -0
  76. package/dist/entire/commands/disable.d.ts.map +1 -0
  77. package/dist/entire/commands/disable.js +57 -0
  78. package/dist/entire/commands/disable.js.map +1 -0
  79. package/dist/entire/commands/doctor.d.ts +43 -0
  80. package/dist/entire/commands/doctor.d.ts.map +1 -0
  81. package/dist/entire/commands/doctor.js +97 -0
  82. package/dist/entire/commands/doctor.js.map +1 -0
  83. package/dist/entire/commands/enable.d.ts +29 -0
  84. package/dist/entire/commands/enable.d.ts.map +1 -0
  85. package/dist/entire/commands/enable.js +102 -0
  86. package/dist/entire/commands/enable.js.map +1 -0
  87. package/dist/entire/commands/explain.d.ts +68 -0
  88. package/dist/entire/commands/explain.d.ts.map +1 -0
  89. package/dist/entire/commands/explain.js +182 -0
  90. package/dist/entire/commands/explain.js.map +1 -0
  91. package/dist/entire/commands/reset.d.ts +23 -0
  92. package/dist/entire/commands/reset.d.ts.map +1 -0
  93. package/dist/entire/commands/reset.js +68 -0
  94. package/dist/entire/commands/reset.js.map +1 -0
  95. package/dist/entire/commands/resume.d.ts +42 -0
  96. package/dist/entire/commands/resume.d.ts.map +1 -0
  97. package/dist/entire/commands/resume.js +134 -0
  98. package/dist/entire/commands/resume.js.map +1 -0
  99. package/dist/entire/commands/rewind.d.ts +34 -0
  100. package/dist/entire/commands/rewind.d.ts.map +1 -0
  101. package/dist/entire/commands/rewind.js +155 -0
  102. package/dist/entire/commands/rewind.js.map +1 -0
  103. package/dist/entire/commands/status.d.ts +51 -0
  104. package/dist/entire/commands/status.d.ts.map +1 -0
  105. package/dist/entire/commands/status.js +94 -0
  106. package/dist/entire/commands/status.js.map +1 -0
  107. package/dist/entire/config.d.ts +40 -0
  108. package/dist/entire/config.d.ts.map +1 -0
  109. package/dist/entire/config.js +126 -0
  110. package/dist/entire/config.js.map +1 -0
  111. package/dist/entire/git-operations.d.ts +170 -0
  112. package/dist/entire/git-operations.d.ts.map +1 -0
  113. package/dist/entire/git-operations.js +395 -0
  114. package/dist/entire/git-operations.js.map +1 -0
  115. package/dist/entire/hooks/git-hooks.d.ts +22 -0
  116. package/dist/entire/hooks/git-hooks.d.ts.map +1 -0
  117. package/dist/entire/hooks/git-hooks.js +145 -0
  118. package/dist/entire/hooks/git-hooks.js.map +1 -0
  119. package/dist/entire/hooks/lifecycle.d.ts +21 -0
  120. package/dist/entire/hooks/lifecycle.d.ts.map +1 -0
  121. package/dist/entire/hooks/lifecycle.js +179 -0
  122. package/dist/entire/hooks/lifecycle.js.map +1 -0
  123. package/dist/entire/index.d.ts +68 -0
  124. package/dist/entire/index.d.ts.map +1 -0
  125. package/dist/entire/index.js +152 -0
  126. package/dist/entire/index.js.map +1 -0
  127. package/dist/entire/security/redaction.d.ts +35 -0
  128. package/dist/entire/security/redaction.d.ts.map +1 -0
  129. package/dist/entire/security/redaction.js +221 -0
  130. package/dist/entire/security/redaction.js.map +1 -0
  131. package/dist/entire/session/state-machine.d.ts +90 -0
  132. package/dist/entire/session/state-machine.d.ts.map +1 -0
  133. package/dist/entire/session/state-machine.js +347 -0
  134. package/dist/entire/session/state-machine.js.map +1 -0
  135. package/dist/entire/store/checkpoint-store.d.ts +47 -0
  136. package/dist/entire/store/checkpoint-store.d.ts.map +1 -0
  137. package/dist/entire/store/checkpoint-store.js +307 -0
  138. package/dist/entire/store/checkpoint-store.js.map +1 -0
  139. package/dist/entire/store/native-store.d.ts +14 -0
  140. package/dist/entire/store/native-store.d.ts.map +1 -0
  141. package/dist/entire/store/native-store.js +159 -0
  142. package/dist/entire/store/native-store.js.map +1 -0
  143. package/dist/entire/store/session-store.d.ts +28 -0
  144. package/dist/entire/store/session-store.d.ts.map +1 -0
  145. package/dist/entire/store/session-store.js +187 -0
  146. package/dist/entire/store/session-store.js.map +1 -0
  147. package/dist/entire/strategy/attribution.d.ts +39 -0
  148. package/dist/entire/strategy/attribution.d.ts.map +1 -0
  149. package/dist/entire/strategy/attribution.js +227 -0
  150. package/dist/entire/strategy/attribution.js.map +1 -0
  151. package/dist/entire/strategy/common.d.ts +57 -0
  152. package/dist/entire/strategy/common.d.ts.map +1 -0
  153. package/dist/entire/strategy/common.js +156 -0
  154. package/dist/entire/strategy/common.js.map +1 -0
  155. package/dist/entire/strategy/content-overlap.d.ts +33 -0
  156. package/dist/entire/strategy/content-overlap.d.ts.map +1 -0
  157. package/dist/entire/strategy/content-overlap.js +168 -0
  158. package/dist/entire/strategy/content-overlap.js.map +1 -0
  159. package/dist/entire/strategy/manual-commit.d.ts +31 -0
  160. package/dist/entire/strategy/manual-commit.d.ts.map +1 -0
  161. package/dist/entire/strategy/manual-commit.js +730 -0
  162. package/dist/entire/strategy/manual-commit.js.map +1 -0
  163. package/dist/entire/strategy/types.d.ts +163 -0
  164. package/dist/entire/strategy/types.d.ts.map +1 -0
  165. package/dist/entire/strategy/types.js +49 -0
  166. package/dist/entire/strategy/types.js.map +1 -0
  167. package/dist/entire/summarize/claude-generator.d.ts +25 -0
  168. package/dist/entire/summarize/claude-generator.d.ts.map +1 -0
  169. package/dist/entire/summarize/claude-generator.js +87 -0
  170. package/dist/entire/summarize/claude-generator.js.map +1 -0
  171. package/dist/entire/summarize/summarize.d.ts +52 -0
  172. package/dist/entire/summarize/summarize.d.ts.map +1 -0
  173. package/dist/entire/summarize/summarize.js +335 -0
  174. package/dist/entire/summarize/summarize.js.map +1 -0
  175. package/dist/entire/types.d.ts +288 -0
  176. package/dist/entire/types.d.ts.map +1 -0
  177. package/dist/entire/types.js +94 -0
  178. package/dist/entire/types.js.map +1 -0
  179. package/dist/entire/utils/chunk-files.d.ts +25 -0
  180. package/dist/entire/utils/chunk-files.d.ts.map +1 -0
  181. package/dist/entire/utils/chunk-files.js +47 -0
  182. package/dist/entire/utils/chunk-files.js.map +1 -0
  183. package/dist/entire/utils/commit-message.d.ts +11 -0
  184. package/dist/entire/utils/commit-message.d.ts.map +1 -0
  185. package/dist/entire/utils/commit-message.js +54 -0
  186. package/dist/entire/utils/commit-message.js.map +1 -0
  187. package/dist/entire/utils/detect-agent.d.ts +19 -0
  188. package/dist/entire/utils/detect-agent.d.ts.map +1 -0
  189. package/dist/entire/utils/detect-agent.js +34 -0
  190. package/dist/entire/utils/detect-agent.js.map +1 -0
  191. package/dist/entire/utils/hook-managers.d.ts +24 -0
  192. package/dist/entire/utils/hook-managers.d.ts.map +1 -0
  193. package/dist/entire/utils/hook-managers.js +87 -0
  194. package/dist/entire/utils/hook-managers.js.map +1 -0
  195. package/dist/entire/utils/ide-tags.d.ts +12 -0
  196. package/dist/entire/utils/ide-tags.d.ts.map +1 -0
  197. package/dist/entire/utils/ide-tags.js +30 -0
  198. package/dist/entire/utils/ide-tags.js.map +1 -0
  199. package/dist/entire/utils/paths.d.ts +32 -0
  200. package/dist/entire/utils/paths.d.ts.map +1 -0
  201. package/dist/entire/utils/paths.js +55 -0
  202. package/dist/entire/utils/paths.js.map +1 -0
  203. package/dist/entire/utils/preview-rewind.d.ts +23 -0
  204. package/dist/entire/utils/preview-rewind.d.ts.map +1 -0
  205. package/dist/entire/utils/preview-rewind.js +63 -0
  206. package/dist/entire/utils/preview-rewind.js.map +1 -0
  207. package/dist/entire/utils/rewind-conflict.d.ts +52 -0
  208. package/dist/entire/utils/rewind-conflict.d.ts.map +1 -0
  209. package/dist/entire/utils/rewind-conflict.js +79 -0
  210. package/dist/entire/utils/rewind-conflict.js.map +1 -0
  211. package/dist/entire/utils/shadow-branch.d.ts +44 -0
  212. package/dist/entire/utils/shadow-branch.d.ts.map +1 -0
  213. package/dist/entire/utils/shadow-branch.js +93 -0
  214. package/dist/entire/utils/shadow-branch.js.map +1 -0
  215. package/dist/entire/utils/string-utils.d.ts +24 -0
  216. package/dist/entire/utils/string-utils.d.ts.map +1 -0
  217. package/dist/entire/utils/string-utils.js +47 -0
  218. package/dist/entire/utils/string-utils.js.map +1 -0
  219. package/dist/entire/utils/todo-extract.d.ts +52 -0
  220. package/dist/entire/utils/todo-extract.d.ts.map +1 -0
  221. package/dist/entire/utils/todo-extract.js +167 -0
  222. package/dist/entire/utils/todo-extract.js.map +1 -0
  223. package/dist/entire/utils/trailers.d.ts +36 -0
  224. package/dist/entire/utils/trailers.d.ts.map +1 -0
  225. package/dist/entire/utils/trailers.js +149 -0
  226. package/dist/entire/utils/trailers.js.map +1 -0
  227. package/dist/entire/utils/transcript-parse.d.ts +57 -0
  228. package/dist/entire/utils/transcript-parse.d.ts.map +1 -0
  229. package/dist/entire/utils/transcript-parse.js +126 -0
  230. package/dist/entire/utils/transcript-parse.js.map +1 -0
  231. package/dist/entire/utils/transcript-timestamp.d.ts +22 -0
  232. package/dist/entire/utils/transcript-timestamp.d.ts.map +1 -0
  233. package/dist/entire/utils/transcript-timestamp.js +56 -0
  234. package/dist/entire/utils/transcript-timestamp.js.map +1 -0
  235. package/dist/entire/utils/tree-ops.d.ts +47 -0
  236. package/dist/entire/utils/tree-ops.d.ts.map +1 -0
  237. package/dist/entire/utils/tree-ops.js +145 -0
  238. package/dist/entire/utils/tree-ops.js.map +1 -0
  239. package/dist/entire/utils/tty.d.ts +25 -0
  240. package/dist/entire/utils/tty.d.ts.map +1 -0
  241. package/dist/entire/utils/tty.js +70 -0
  242. package/dist/entire/utils/tty.js.map +1 -0
  243. package/dist/entire/utils/validation.d.ts +31 -0
  244. package/dist/entire/utils/validation.d.ts.map +1 -0
  245. package/dist/entire/utils/validation.js +59 -0
  246. package/dist/entire/utils/validation.js.map +1 -0
  247. package/dist/entire/utils/worktree.d.ts +16 -0
  248. package/dist/entire/utils/worktree.d.ts.map +1 -0
  249. package/dist/entire/utils/worktree.js +50 -0
  250. package/dist/entire/utils/worktree.js.map +1 -0
  251. package/dist/graph/provider-store.d.ts.map +1 -1
  252. package/dist/graph/provider-store.js +28 -2
  253. package/dist/graph/provider-store.js.map +1 -1
  254. package/dist/graph/store.d.ts.map +1 -1
  255. package/dist/graph/store.js +1 -0
  256. package/dist/graph/store.js.map +1 -1
  257. package/dist/graph/types.d.ts +2 -0
  258. package/dist/graph/types.d.ts.map +1 -1
  259. package/dist/graph/types.js.map +1 -1
  260. package/dist/index.d.ts +5 -2
  261. package/dist/index.d.ts.map +1 -1
  262. package/dist/index.js +7 -1
  263. package/dist/index.js.map +1 -1
  264. package/dist/providers/entire.d.ts +27 -2
  265. package/dist/providers/entire.d.ts.map +1 -1
  266. package/dist/providers/entire.js +13 -2
  267. package/dist/providers/entire.js.map +1 -1
  268. package/dist/providers/from-config.d.ts.map +1 -1
  269. package/dist/providers/from-config.js +23 -0
  270. package/dist/providers/from-config.js.map +1 -1
  271. package/dist/providers/global.d.ts +27 -0
  272. package/dist/providers/global.d.ts.map +1 -0
  273. package/dist/providers/global.js +242 -0
  274. package/dist/providers/global.js.map +1 -0
  275. package/dist/providers/index.d.ts +2 -1
  276. package/dist/providers/index.d.ts.map +1 -1
  277. package/dist/providers/index.js +3 -1
  278. package/dist/providers/index.js.map +1 -1
  279. package/dist/providers/materialization.js +1 -1
  280. package/dist/providers/materialization.js.map +1 -1
  281. package/dist/schema/edges.d.ts +5 -1
  282. package/dist/schema/edges.d.ts.map +1 -1
  283. package/dist/schema/index.d.ts +1 -1
  284. package/dist/schema/index.d.ts.map +1 -1
  285. package/dist/tracking/claude-task-reconstructor.d.ts +41 -0
  286. package/dist/tracking/claude-task-reconstructor.d.ts.map +1 -0
  287. package/dist/tracking/claude-task-reconstructor.js +91 -0
  288. package/dist/tracking/claude-task-reconstructor.js.map +1 -0
  289. package/dist/tracking/claude-tool-categorizer.d.ts +30 -0
  290. package/dist/tracking/claude-tool-categorizer.d.ts.map +1 -0
  291. package/dist/tracking/claude-tool-categorizer.js +98 -0
  292. package/dist/tracking/claude-tool-categorizer.js.map +1 -0
  293. package/dist/tracking/index.d.ts +19 -0
  294. package/dist/tracking/index.d.ts.map +1 -0
  295. package/dist/tracking/index.js +14 -0
  296. package/dist/tracking/index.js.map +1 -0
  297. package/dist/tracking/plan-mode-tracker.d.ts +20 -0
  298. package/dist/tracking/plan-mode-tracker.d.ts.map +1 -0
  299. package/dist/tracking/plan-mode-tracker.js +35 -0
  300. package/dist/tracking/plan-mode-tracker.js.map +1 -0
  301. package/dist/tracking/skill-tracker.d.ts +133 -0
  302. package/dist/tracking/skill-tracker.d.ts.map +1 -0
  303. package/dist/tracking/skill-tracker.js +130 -0
  304. package/dist/tracking/skill-tracker.js.map +1 -0
  305. package/dist/tracking/transcript-extractor.d.ts +45 -0
  306. package/dist/tracking/transcript-extractor.d.ts.map +1 -0
  307. package/dist/tracking/transcript-extractor.js +174 -0
  308. package/dist/tracking/transcript-extractor.js.map +1 -0
  309. package/package.json +2 -1
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Rewind Command
3
+ *
4
+ * Browse checkpoints and restore session state to a previous point.
5
+ * Supports both shadow branch (temporary) and committed checkpoint rewind.
6
+ */
7
+ import type { RewindPoint } from '../types.js';
8
+ export interface RewindOptions {
9
+ cwd?: string;
10
+ /** Maximum number of rewind points to return */
11
+ limit?: number;
12
+ }
13
+ export interface RewindResult {
14
+ success: boolean;
15
+ message: string;
16
+ rewindPoint?: RewindPoint;
17
+ }
18
+ /**
19
+ * List available rewind points
20
+ */
21
+ export declare function listRewindPoints(options?: RewindOptions): Promise<RewindPoint[]>;
22
+ /**
23
+ * Rewind to a specific point (non-interactive)
24
+ */
25
+ export declare function rewindTo(pointID: string, options?: {
26
+ cwd?: string;
27
+ logsOnly?: boolean;
28
+ reset?: boolean;
29
+ }): Promise<RewindResult>;
30
+ /**
31
+ * List rewind points as JSON (for CLI --list flag)
32
+ */
33
+ export declare function listRewindPointsJSON(options?: RewindOptions): Promise<string>;
34
+ //# sourceMappingURL=rewind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewind.d.ts","sourceRoot":"","sources":["../../../src/entire/commands/rewind.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAmC,MAAM,aAAa,CAAC;AAiBhF,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA8D1F;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAClE,OAAO,CAAC,YAAY,CAAC,CAmEvB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBvF"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Rewind Command
3
+ *
4
+ * Browse checkpoints and restore session state to a previous point.
5
+ * Supports both shadow branch (temporary) and committed checkpoint rewind.
6
+ */
7
+ import { git, hasUncommittedChanges, } from '../git-operations.js';
8
+ import { createCheckpointStore } from '../store/checkpoint-store.js';
9
+ // ============================================================================
10
+ // Implementation
11
+ // ============================================================================
12
+ /**
13
+ * List available rewind points
14
+ */
15
+ export async function listRewindPoints(options = {}) {
16
+ const cwd = options.cwd;
17
+ const limit = options.limit ?? 20;
18
+ const points = [];
19
+ const checkpointStore = createCheckpointStore(cwd);
20
+ // 1. Shadow branch checkpoints (temporary, most recent)
21
+ const temporaryBranches = await checkpointStore.listTemporary();
22
+ for (const temp of temporaryBranches) {
23
+ points.push({
24
+ id: temp.latestCommit,
25
+ message: `Shadow checkpoint on ${temp.branchName}`,
26
+ date: temp.timestamp,
27
+ isTaskCheckpoint: false,
28
+ isLogsOnly: false,
29
+ sessionID: temp.sessionID,
30
+ sessionCount: 1,
31
+ sessionIDs: temp.sessionID ? [temp.sessionID] : [],
32
+ });
33
+ }
34
+ // 2. Committed checkpoints (permanent)
35
+ const committed = await checkpointStore.listCommitted(limit);
36
+ for (const cp of committed) {
37
+ const sessionIDs = cp.sessions
38
+ .map((s) => {
39
+ const match = s.metadata.match(/\/(\d+)\/metadata\.json$/);
40
+ return match ? match[1] : '';
41
+ })
42
+ .filter(Boolean);
43
+ points.push({
44
+ id: cp.checkpointID,
45
+ message: `Checkpoint ${cp.checkpointID.slice(0, 8)}`,
46
+ checkpointID: cp.checkpointID,
47
+ date: new Date().toISOString(), // Will be populated from metadata
48
+ isTaskCheckpoint: false,
49
+ isLogsOnly: true,
50
+ agent: undefined,
51
+ sessionCount: cp.sessions.length,
52
+ sessionIDs,
53
+ });
54
+ // Read detailed metadata for each committed checkpoint
55
+ for (let i = 0; i < cp.sessions.length; i++) {
56
+ const content = await checkpointStore.readSessionContent(cp.checkpointID, i);
57
+ if (content) {
58
+ const lastPoint = points[points.length - 1];
59
+ lastPoint.date = content.metadata.createdAt;
60
+ lastPoint.agent = content.metadata.agent;
61
+ lastPoint.sessionID = content.metadata.sessionID;
62
+ if (content.metadata.isTask) {
63
+ lastPoint.isTaskCheckpoint = true;
64
+ }
65
+ }
66
+ }
67
+ }
68
+ // Sort by date (most recent first) and limit
69
+ points.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
70
+ return points.slice(0, limit);
71
+ }
72
+ /**
73
+ * Rewind to a specific point (non-interactive)
74
+ */
75
+ export async function rewindTo(pointID, options = {}) {
76
+ const cwd = options.cwd;
77
+ // Safety check: uncommitted changes
78
+ if (await hasUncommittedChanges(cwd)) {
79
+ return {
80
+ success: false,
81
+ message: 'Cannot rewind: there are uncommitted changes. Commit or stash them first.',
82
+ };
83
+ }
84
+ // Find the rewind point
85
+ const points = await listRewindPoints({ cwd, limit: 50 });
86
+ const point = points.find((p) => p.id === pointID || p.checkpointID === pointID);
87
+ if (!point) {
88
+ return { success: false, message: `Rewind point not found: ${pointID}` };
89
+ }
90
+ if (point.isLogsOnly && !options.logsOnly && !options.reset) {
91
+ return {
92
+ success: false,
93
+ message: 'This is a logs-only checkpoint. Use --logs-only to restore logs, or --reset to reset the branch.',
94
+ };
95
+ }
96
+ if (options.reset) {
97
+ // Destructive: git reset --hard
98
+ try {
99
+ await git(['reset', '--hard', pointID], { cwd });
100
+ return {
101
+ success: true,
102
+ message: `Reset to ${pointID.slice(0, 8)}`,
103
+ rewindPoint: point,
104
+ };
105
+ }
106
+ catch (e) {
107
+ return {
108
+ success: false,
109
+ message: `Reset failed: ${e instanceof Error ? e.message : String(e)}`,
110
+ };
111
+ }
112
+ }
113
+ if (point.isLogsOnly || options.logsOnly) {
114
+ // Restore logs only (no checkout)
115
+ return {
116
+ success: true,
117
+ message: `Logs restored for checkpoint ${point.checkpointID ?? pointID}`,
118
+ rewindPoint: point,
119
+ };
120
+ }
121
+ // Full rewind: checkout to the shadow branch commit
122
+ try {
123
+ await git(['checkout', pointID], { cwd });
124
+ return {
125
+ success: true,
126
+ message: `Rewound to ${pointID.slice(0, 8)}`,
127
+ rewindPoint: point,
128
+ };
129
+ }
130
+ catch (e) {
131
+ return {
132
+ success: false,
133
+ message: `Rewind failed: ${e instanceof Error ? e.message : String(e)}`,
134
+ };
135
+ }
136
+ }
137
+ /**
138
+ * List rewind points as JSON (for CLI --list flag)
139
+ */
140
+ export async function listRewindPointsJSON(options = {}) {
141
+ const points = await listRewindPoints(options);
142
+ return JSON.stringify(points.map((p) => ({
143
+ id: p.id,
144
+ message: p.message,
145
+ date: p.date,
146
+ is_task_checkpoint: p.isTaskCheckpoint,
147
+ is_logs_only: p.isLogsOnly,
148
+ checkpoint_id: p.checkpointID,
149
+ agent: p.agent,
150
+ session_id: p.sessionID,
151
+ session_prompt: p.sessionPrompt,
152
+ session_count: p.sessionCount,
153
+ })), null, 2);
154
+ }
155
+ //# sourceMappingURL=rewind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewind.js","sourceRoot":"","sources":["../../../src/entire/commands/rewind.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Status Command
3
+ *
4
+ * Shows the current Entire setup status, active sessions,
5
+ * and configuration.
6
+ */
7
+ import { type EntireSettings } from '../types.js';
8
+ export interface StatusResult {
9
+ /** Whether Entire is set up and enabled */
10
+ enabled: boolean;
11
+ /** Current strategy */
12
+ strategy: string;
13
+ /** Current branch */
14
+ branch: string | null;
15
+ /** Whether the checkpoints branch exists */
16
+ hasCheckpointsBranch: boolean;
17
+ /** Active sessions */
18
+ sessions: SessionStatus[];
19
+ /** Installed agents with hooks */
20
+ agents: string[];
21
+ /** Whether git hooks are installed */
22
+ gitHooksInstalled: boolean;
23
+ /** Effective settings */
24
+ settings: EntireSettings;
25
+ }
26
+ export interface SessionStatus {
27
+ sessionID: string;
28
+ agentType: string;
29
+ phase: string;
30
+ startedAt: string;
31
+ firstPrompt?: string;
32
+ filesTouched: string[];
33
+ stepCount: number;
34
+ tokenUsage?: {
35
+ input: number;
36
+ output: number;
37
+ };
38
+ }
39
+ /**
40
+ * Get the current status of Entire
41
+ */
42
+ export declare function status(cwd?: string): Promise<StatusResult>;
43
+ /**
44
+ * Format status for display (JSON output)
45
+ */
46
+ export declare function formatStatusJSON(result: StatusResult): string;
47
+ /**
48
+ * Format token count for display
49
+ */
50
+ export declare function formatTokens(count: number): string;
51
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/entire/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqB,KAAK,cAAc,EAAsB,MAAM,aAAa,CAAC;AAiBzF,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IAEjB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IAEjB,qBAAqB;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,4CAA4C;IAC5C,oBAAoB,EAAE,OAAO,CAAC;IAE9B,sBAAsB;IACtB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAE1B,kCAAkC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,sCAAsC;IACtC,iBAAiB,EAAE,OAAO,CAAC;IAE3B,yBAAyB;IACzB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAMD;;GAEG;AACH,wBAAsB,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA8DhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlD"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Status Command
3
+ *
4
+ * Shows the current Entire setup status, active sessions,
5
+ * and configuration.
6
+ */
7
+ import { CHECKPOINTS_BRANCH } from '../types.js';
8
+ import { isGitRepository, getWorktreeRoot, getCurrentBranch, refExists, } from '../git-operations.js';
9
+ import { loadSettings } from '../config.js';
10
+ import { createSessionStore } from '../store/session-store.js';
11
+ import { areGitHooksInstalled } from '../hooks/git-hooks.js';
12
+ import { detectAgents } from '../agent/registry.js';
13
+ import { hasHookSupport } from '../agent/types.js';
14
+ // ============================================================================
15
+ // Implementation
16
+ // ============================================================================
17
+ /**
18
+ * Get the current status of Entire
19
+ */
20
+ export async function status(cwd) {
21
+ const isRepo = await isGitRepository(cwd);
22
+ if (!isRepo) {
23
+ return {
24
+ enabled: false,
25
+ strategy: 'manual-commit',
26
+ branch: null,
27
+ hasCheckpointsBranch: false,
28
+ sessions: [],
29
+ agents: [],
30
+ gitHooksInstalled: false,
31
+ settings: { enabled: false, strategy: 'manual-commit' },
32
+ };
33
+ }
34
+ const root = await getWorktreeRoot(cwd);
35
+ const settings = await loadSettings(cwd);
36
+ const branch = await getCurrentBranch(cwd);
37
+ const hasCheckpoints = await refExists(`refs/heads/${CHECKPOINTS_BRANCH}`, cwd);
38
+ const gitHooks = await areGitHooksInstalled(root);
39
+ // Detect agents with hooks
40
+ const agents = await detectAgents(cwd);
41
+ const agentNames = [];
42
+ for (const agent of agents) {
43
+ if (hasHookSupport(agent)) {
44
+ const installed = await agent.areHooksInstalled(root);
45
+ if (installed)
46
+ agentNames.push(agent.name);
47
+ }
48
+ }
49
+ // Load sessions
50
+ const sessionStore = createSessionStore(cwd);
51
+ const allSessions = await sessionStore.list();
52
+ const sessions = allSessions.map((s) => ({
53
+ sessionID: s.sessionID,
54
+ agentType: s.agentType,
55
+ phase: s.phase,
56
+ startedAt: s.startedAt,
57
+ firstPrompt: s.firstPrompt,
58
+ filesTouched: s.filesTouched,
59
+ stepCount: s.stepCount,
60
+ tokenUsage: s.tokenUsage
61
+ ? {
62
+ input: s.tokenUsage.inputTokens + s.tokenUsage.cacheReadTokens,
63
+ output: s.tokenUsage.outputTokens,
64
+ }
65
+ : undefined,
66
+ }));
67
+ return {
68
+ enabled: settings.enabled,
69
+ strategy: settings.strategy,
70
+ branch,
71
+ hasCheckpointsBranch: hasCheckpoints,
72
+ sessions,
73
+ agents: agentNames,
74
+ gitHooksInstalled: gitHooks,
75
+ settings,
76
+ };
77
+ }
78
+ /**
79
+ * Format status for display (JSON output)
80
+ */
81
+ export function formatStatusJSON(result) {
82
+ return JSON.stringify(result, null, 2);
83
+ }
84
+ /**
85
+ * Format token count for display
86
+ */
87
+ export function formatTokens(count) {
88
+ if (count >= 1_000_000)
89
+ return `${(count / 1_000_000).toFixed(1)}M`;
90
+ if (count >= 1_000)
91
+ return `${(count / 1_000).toFixed(1)}k`;
92
+ return String(count);
93
+ }
94
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/entire/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Configuration Management
3
+ *
4
+ * Loads and manages Entire settings from .entire/settings.json
5
+ * and .entire/settings.local.json (local overrides).
6
+ */
7
+ import { type EntireSettings } from './types.js';
8
+ /**
9
+ * Load effective settings (project merged with local overrides)
10
+ */
11
+ export declare function loadSettings(cwd?: string): Promise<EntireSettings>;
12
+ /**
13
+ * Load project-level settings (.entire/settings.json)
14
+ */
15
+ export declare function loadProjectSettings(cwd?: string): Promise<EntireSettings>;
16
+ /**
17
+ * Load local settings (.entire/settings.local.json)
18
+ */
19
+ export declare function loadLocalSettings(cwd?: string): Promise<EntireSettings>;
20
+ /**
21
+ * Save project-level settings
22
+ */
23
+ export declare function saveProjectSettings(settings: Partial<EntireSettings>, cwd?: string): Promise<void>;
24
+ /**
25
+ * Save local settings
26
+ */
27
+ export declare function saveLocalSettings(settings: Partial<EntireSettings>, cwd?: string): Promise<void>;
28
+ /**
29
+ * Check if Entire is enabled in the current repository
30
+ */
31
+ export declare function isEnabled(cwd?: string): Promise<boolean>;
32
+ /**
33
+ * Get the current strategy name
34
+ */
35
+ export declare function getStrategy(cwd?: string): Promise<string>;
36
+ /**
37
+ * Ensure the .entire directory is gitignored for local files
38
+ */
39
+ export declare function ensureGitignore(cwd?: string): Promise<void>;
40
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/entire/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,KAAK,cAAc,EAKpB,MAAM,YAAY,CAAC;AAQpB;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAIxE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAI/E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAI7E;AA2BD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,EACjC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,EACjC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAMD;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/D;AAWD;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBjE"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Configuration Management
3
+ *
4
+ * Loads and manages Entire settings from .entire/settings.json
5
+ * and .entire/settings.local.json (local overrides).
6
+ */
7
+ import * as fs from 'node:fs';
8
+ import * as path from 'node:path';
9
+ import { DEFAULT_SETTINGS, ENTIRE_SETTINGS_FILE, ENTIRE_SETTINGS_LOCAL_FILE, ENTIRE_DIR, } from './types.js';
10
+ import { getWorktreeRoot } from './git-operations.js';
11
+ import { atomicWriteFile } from './git-operations.js';
12
+ // ============================================================================
13
+ // Load Settings
14
+ // ============================================================================
15
+ /**
16
+ * Load effective settings (project merged with local overrides)
17
+ */
18
+ export async function loadSettings(cwd) {
19
+ const project = await loadProjectSettings(cwd);
20
+ const local = await loadLocalSettings(cwd);
21
+ return mergeSettings(project, local);
22
+ }
23
+ /**
24
+ * Load project-level settings (.entire/settings.json)
25
+ */
26
+ export async function loadProjectSettings(cwd) {
27
+ const root = cwd ?? (await getWorktreeRoot());
28
+ const settingsPath = path.join(root, ENTIRE_SETTINGS_FILE);
29
+ return loadSettingsFile(settingsPath);
30
+ }
31
+ /**
32
+ * Load local settings (.entire/settings.local.json)
33
+ */
34
+ export async function loadLocalSettings(cwd) {
35
+ const root = cwd ?? (await getWorktreeRoot());
36
+ const settingsPath = path.join(root, ENTIRE_SETTINGS_LOCAL_FILE);
37
+ return loadSettingsFile(settingsPath);
38
+ }
39
+ function loadSettingsFile(filePath) {
40
+ try {
41
+ const content = fs.readFileSync(filePath, 'utf-8');
42
+ const data = JSON.parse(content);
43
+ return { ...DEFAULT_SETTINGS, ...data };
44
+ }
45
+ catch {
46
+ return { ...DEFAULT_SETTINGS };
47
+ }
48
+ }
49
+ function mergeSettings(project, local) {
50
+ return {
51
+ enabled: local.enabled !== DEFAULT_SETTINGS.enabled ? local.enabled : project.enabled,
52
+ strategy: local.strategy !== DEFAULT_SETTINGS.strategy ? local.strategy : project.strategy,
53
+ logLevel: local.logLevel ?? project.logLevel,
54
+ skipPushSessions: local.skipPushSessions ?? project.skipPushSessions,
55
+ telemetryEnabled: local.telemetryEnabled ?? project.telemetryEnabled,
56
+ summarizationEnabled: local.summarizationEnabled ?? project.summarizationEnabled,
57
+ };
58
+ }
59
+ // ============================================================================
60
+ // Save Settings
61
+ // ============================================================================
62
+ /**
63
+ * Save project-level settings
64
+ */
65
+ export async function saveProjectSettings(settings, cwd) {
66
+ const root = cwd ?? (await getWorktreeRoot());
67
+ const settingsPath = path.join(root, ENTIRE_SETTINGS_FILE);
68
+ await ensureEntireDir(root);
69
+ await atomicWriteFile(settingsPath, JSON.stringify(settings, null, 2));
70
+ }
71
+ /**
72
+ * Save local settings
73
+ */
74
+ export async function saveLocalSettings(settings, cwd) {
75
+ const root = cwd ?? (await getWorktreeRoot());
76
+ const settingsPath = path.join(root, ENTIRE_SETTINGS_LOCAL_FILE);
77
+ await ensureEntireDir(root);
78
+ await atomicWriteFile(settingsPath, JSON.stringify(settings, null, 2));
79
+ }
80
+ // ============================================================================
81
+ // Queries
82
+ // ============================================================================
83
+ /**
84
+ * Check if Entire is enabled in the current repository
85
+ */
86
+ export async function isEnabled(cwd) {
87
+ const settings = await loadSettings(cwd);
88
+ return settings.enabled;
89
+ }
90
+ /**
91
+ * Get the current strategy name
92
+ */
93
+ export async function getStrategy(cwd) {
94
+ const settings = await loadSettings(cwd);
95
+ return settings.strategy;
96
+ }
97
+ // ============================================================================
98
+ // Helpers
99
+ // ============================================================================
100
+ async function ensureEntireDir(root) {
101
+ const dir = path.join(root, ENTIRE_DIR);
102
+ await fs.promises.mkdir(dir, { recursive: true });
103
+ }
104
+ /**
105
+ * Ensure the .entire directory is gitignored for local files
106
+ */
107
+ export async function ensureGitignore(cwd) {
108
+ const root = cwd ?? (await getWorktreeRoot());
109
+ const gitignorePath = path.join(root, ENTIRE_DIR, '.gitignore');
110
+ const content = [
111
+ '# Entire local files (not committed)',
112
+ 'settings.local.json',
113
+ 'tmp/',
114
+ 'logs/',
115
+ '',
116
+ ].join('\n');
117
+ try {
118
+ await fs.promises.access(gitignorePath);
119
+ // Already exists
120
+ }
121
+ catch {
122
+ await ensureEntireDir(root);
123
+ await fs.promises.writeFile(gitignorePath, content);
124
+ }
125
+ }
126
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/entire/config.ts"],"names":[],"mappings":"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"}