@rewind-ai/cli 0.6.2

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 (244) hide show
  1. package/.env.example +8 -0
  2. package/LICENSE +21 -0
  3. package/README.md +39 -0
  4. package/dist/src/action/capture.d.ts +15 -0
  5. package/dist/src/action/capture.js +215 -0
  6. package/dist/src/action/capture.js.map +1 -0
  7. package/dist/src/action/mediate.d.ts +28 -0
  8. package/dist/src/action/mediate.js +109 -0
  9. package/dist/src/action/mediate.js.map +1 -0
  10. package/dist/src/action/mutate.d.ts +11 -0
  11. package/dist/src/action/mutate.js +189 -0
  12. package/dist/src/action/mutate.js.map +1 -0
  13. package/dist/src/action/objects.d.ts +5 -0
  14. package/dist/src/action/objects.js +50 -0
  15. package/dist/src/action/objects.js.map +1 -0
  16. package/dist/src/action/store.d.ts +24 -0
  17. package/dist/src/action/store.js +149 -0
  18. package/dist/src/action/store.js.map +1 -0
  19. package/dist/src/action/types.d.ts +84 -0
  20. package/dist/src/action/types.js +3 -0
  21. package/dist/src/action/types.js.map +1 -0
  22. package/dist/src/action/undo.d.ts +11 -0
  23. package/dist/src/action/undo.js +42 -0
  24. package/dist/src/action/undo.js.map +1 -0
  25. package/dist/src/adapters/filesystem.d.ts +35 -0
  26. package/dist/src/adapters/filesystem.js +499 -0
  27. package/dist/src/adapters/filesystem.js.map +1 -0
  28. package/dist/src/adapters/index.d.ts +7 -0
  29. package/dist/src/adapters/index.js +19 -0
  30. package/dist/src/adapters/index.js.map +1 -0
  31. package/dist/src/adapters/types.d.ts +54 -0
  32. package/dist/src/adapters/types.js +7 -0
  33. package/dist/src/adapters/types.js.map +1 -0
  34. package/dist/src/api/server.d.ts +25 -0
  35. package/dist/src/api/server.js +786 -0
  36. package/dist/src/api/server.js.map +1 -0
  37. package/dist/src/approval/store.d.ts +35 -0
  38. package/dist/src/approval/store.js +113 -0
  39. package/dist/src/approval/store.js.map +1 -0
  40. package/dist/src/checkpoint.d.ts +9 -0
  41. package/dist/src/checkpoint.js +140 -0
  42. package/dist/src/checkpoint.js.map +1 -0
  43. package/dist/src/cli/v5.d.ts +15 -0
  44. package/dist/src/cli/v5.js +110 -0
  45. package/dist/src/cli/v5.js.map +1 -0
  46. package/dist/src/cli.d.ts +2 -0
  47. package/dist/src/cli.js +823 -0
  48. package/dist/src/cli.js.map +1 -0
  49. package/dist/src/clients/types.d.ts +90 -0
  50. package/dist/src/clients/types.js +239 -0
  51. package/dist/src/clients/types.js.map +1 -0
  52. package/dist/src/commercial/auth/provider.d.ts +61 -0
  53. package/dist/src/commercial/auth/provider.js +227 -0
  54. package/dist/src/commercial/auth/provider.js.map +1 -0
  55. package/dist/src/commercial/entitlement/provider.d.ts +27 -0
  56. package/dist/src/commercial/entitlement/provider.js +192 -0
  57. package/dist/src/commercial/entitlement/provider.js.map +1 -0
  58. package/dist/src/commercial/entitlement/signing.d.ts +61 -0
  59. package/dist/src/commercial/entitlement/signing.js +124 -0
  60. package/dist/src/commercial/entitlement/signing.js.map +1 -0
  61. package/dist/src/commercial/env.d.ts +10 -0
  62. package/dist/src/commercial/env.js +40 -0
  63. package/dist/src/commercial/env.js.map +1 -0
  64. package/dist/src/commercial/product.d.ts +26 -0
  65. package/dist/src/commercial/product.js +39 -0
  66. package/dist/src/commercial/product.js.map +1 -0
  67. package/dist/src/commercial/store.d.ts +46 -0
  68. package/dist/src/commercial/store.js +104 -0
  69. package/dist/src/commercial/store.js.map +1 -0
  70. package/dist/src/commercial/stripe/checkout.d.ts +104 -0
  71. package/dist/src/commercial/stripe/checkout.js +469 -0
  72. package/dist/src/commercial/stripe/checkout.js.map +1 -0
  73. package/dist/src/core/compatibility.d.ts +15 -0
  74. package/dist/src/core/compatibility.js +226 -0
  75. package/dist/src/core/compatibility.js.map +1 -0
  76. package/dist/src/core/engine.d.ts +33 -0
  77. package/dist/src/core/engine.js +432 -0
  78. package/dist/src/core/engine.js.map +1 -0
  79. package/dist/src/core/lifecycle.d.ts +17 -0
  80. package/dist/src/core/lifecycle.js +56 -0
  81. package/dist/src/core/lifecycle.js.map +1 -0
  82. package/dist/src/core/types.d.ts +140 -0
  83. package/dist/src/core/types.js +37 -0
  84. package/dist/src/core/types.js.map +1 -0
  85. package/dist/src/destroy.d.ts +21 -0
  86. package/dist/src/destroy.js +219 -0
  87. package/dist/src/destroy.js.map +1 -0
  88. package/dist/src/diff.d.ts +13 -0
  89. package/dist/src/diff.js +251 -0
  90. package/dist/src/diff.js.map +1 -0
  91. package/dist/src/enforcement/detect.d.ts +13 -0
  92. package/dist/src/enforcement/detect.js +75 -0
  93. package/dist/src/enforcement/detect.js.map +1 -0
  94. package/dist/src/enforcement/hook-policy.d.ts +38 -0
  95. package/dist/src/enforcement/hook-policy.js +111 -0
  96. package/dist/src/enforcement/hook-policy.js.map +1 -0
  97. package/dist/src/enforcement/index.d.ts +8 -0
  98. package/dist/src/enforcement/index.js +8 -0
  99. package/dist/src/enforcement/index.js.map +1 -0
  100. package/dist/src/enforcement/perf.d.ts +6 -0
  101. package/dist/src/enforcement/perf.js +18 -0
  102. package/dist/src/enforcement/perf.js.map +1 -0
  103. package/dist/src/enforcement/policy.d.ts +12 -0
  104. package/dist/src/enforcement/policy.js +84 -0
  105. package/dist/src/enforcement/policy.js.map +1 -0
  106. package/dist/src/enforcement/readonly.d.ts +17 -0
  107. package/dist/src/enforcement/readonly.js +124 -0
  108. package/dist/src/enforcement/readonly.js.map +1 -0
  109. package/dist/src/enforcement/sandbox-clone.d.ts +6 -0
  110. package/dist/src/enforcement/sandbox-clone.js +11 -0
  111. package/dist/src/enforcement/sandbox-clone.js.map +1 -0
  112. package/dist/src/enforcement/setup.d.ts +33 -0
  113. package/dist/src/enforcement/setup.js +168 -0
  114. package/dist/src/enforcement/setup.js.map +1 -0
  115. package/dist/src/enforcement/trust.d.ts +10 -0
  116. package/dist/src/enforcement/trust.js +71 -0
  117. package/dist/src/enforcement/trust.js.map +1 -0
  118. package/dist/src/enforcement/types.d.ts +40 -0
  119. package/dist/src/enforcement/types.js +3 -0
  120. package/dist/src/enforcement/types.js.map +1 -0
  121. package/dist/src/entitlement/provider.d.ts +48 -0
  122. package/dist/src/entitlement/provider.js +95 -0
  123. package/dist/src/entitlement/provider.js.map +1 -0
  124. package/dist/src/hash.d.ts +9 -0
  125. package/dist/src/hash.js +23 -0
  126. package/dist/src/hash.js.map +1 -0
  127. package/dist/src/ledger/query.d.ts +19 -0
  128. package/dist/src/ledger/query.js +158 -0
  129. package/dist/src/ledger/query.js.map +1 -0
  130. package/dist/src/manifest.d.ts +32 -0
  131. package/dist/src/manifest.js +242 -0
  132. package/dist/src/manifest.js.map +1 -0
  133. package/dist/src/mcp/server.d.ts +7 -0
  134. package/dist/src/mcp/server.js +364 -0
  135. package/dist/src/mcp/server.js.map +1 -0
  136. package/dist/src/paths.d.ts +94 -0
  137. package/dist/src/paths.js +354 -0
  138. package/dist/src/paths.js.map +1 -0
  139. package/dist/src/permission/engine.d.ts +15 -0
  140. package/dist/src/permission/engine.js +147 -0
  141. package/dist/src/permission/engine.js.map +1 -0
  142. package/dist/src/permission/types.d.ts +42 -0
  143. package/dist/src/permission/types.js +3 -0
  144. package/dist/src/permission/types.js.map +1 -0
  145. package/dist/src/product/setup.d.ts +35 -0
  146. package/dist/src/product/setup.js +300 -0
  147. package/dist/src/product/setup.js.map +1 -0
  148. package/dist/src/protect/audit.d.ts +5 -0
  149. package/dist/src/protect/audit.js +26 -0
  150. package/dist/src/protect/audit.js.map +1 -0
  151. package/dist/src/protect/capture.d.ts +7 -0
  152. package/dist/src/protect/capture.js +250 -0
  153. package/dist/src/protect/capture.js.map +1 -0
  154. package/dist/src/protect/fingerprint.d.ts +4 -0
  155. package/dist/src/protect/fingerprint.js +49 -0
  156. package/dist/src/protect/fingerprint.js.map +1 -0
  157. package/dist/src/protect/hook-cli.d.ts +2 -0
  158. package/dist/src/protect/hook-cli.js +107 -0
  159. package/dist/src/protect/hook-cli.js.map +1 -0
  160. package/dist/src/protect/index.d.ts +12 -0
  161. package/dist/src/protect/index.js +12 -0
  162. package/dist/src/protect/index.js.map +1 -0
  163. package/dist/src/protect/install.d.ts +34 -0
  164. package/dist/src/protect/install.js +293 -0
  165. package/dist/src/protect/install.js.map +1 -0
  166. package/dist/src/protect/intercept.d.ts +11 -0
  167. package/dist/src/protect/intercept.js +390 -0
  168. package/dist/src/protect/intercept.js.map +1 -0
  169. package/dist/src/protect/protect.d.ts +17 -0
  170. package/dist/src/protect/protect.js +194 -0
  171. package/dist/src/protect/protect.js.map +1 -0
  172. package/dist/src/protect/root-paths.d.ts +13 -0
  173. package/dist/src/protect/root-paths.js +140 -0
  174. package/dist/src/protect/root-paths.js.map +1 -0
  175. package/dist/src/protect/shell-policy.d.ts +17 -0
  176. package/dist/src/protect/shell-policy.js +269 -0
  177. package/dist/src/protect/shell-policy.js.map +1 -0
  178. package/dist/src/protect/status.d.ts +11 -0
  179. package/dist/src/protect/status.js +165 -0
  180. package/dist/src/protect/status.js.map +1 -0
  181. package/dist/src/protect/store.d.ts +20 -0
  182. package/dist/src/protect/store.js +170 -0
  183. package/dist/src/protect/store.js.map +1 -0
  184. package/dist/src/protect/types.d.ts +116 -0
  185. package/dist/src/protect/types.js +3 -0
  186. package/dist/src/protect/types.js.map +1 -0
  187. package/dist/src/protect/undo-session.d.ts +14 -0
  188. package/dist/src/protect/undo-session.js +182 -0
  189. package/dist/src/protect/undo-session.js.map +1 -0
  190. package/dist/src/restore.d.ts +39 -0
  191. package/dist/src/restore.js +141 -0
  192. package/dist/src/restore.js.map +1 -0
  193. package/dist/src/sandbox.d.ts +23 -0
  194. package/dist/src/sandbox.js +198 -0
  195. package/dist/src/sandbox.js.map +1 -0
  196. package/dist/src/session/ambient.d.ts +10 -0
  197. package/dist/src/session/ambient.js +53 -0
  198. package/dist/src/session/ambient.js.map +1 -0
  199. package/dist/src/session/attribution.d.ts +27 -0
  200. package/dist/src/session/attribution.js +201 -0
  201. package/dist/src/session/attribution.js.map +1 -0
  202. package/dist/src/session/index.d.ts +25 -0
  203. package/dist/src/session/index.js +472 -0
  204. package/dist/src/session/index.js.map +1 -0
  205. package/dist/src/session/process.d.ts +34 -0
  206. package/dist/src/session/process.js +234 -0
  207. package/dist/src/session/process.js.map +1 -0
  208. package/dist/src/session/store.d.ts +14 -0
  209. package/dist/src/session/store.js +125 -0
  210. package/dist/src/session/store.js.map +1 -0
  211. package/dist/src/session/types.d.ts +111 -0
  212. package/dist/src/session/types.js +3 -0
  213. package/dist/src/session/types.js.map +1 -0
  214. package/dist/src/session/watcher.d.ts +32 -0
  215. package/dist/src/session/watcher.js +186 -0
  216. package/dist/src/session/watcher.js.map +1 -0
  217. package/dist/src/timing.d.ts +7 -0
  218. package/dist/src/timing.js +19 -0
  219. package/dist/src/timing.js.map +1 -0
  220. package/dist/src/types.d.ts +101 -0
  221. package/dist/src/types.js +3 -0
  222. package/dist/src/types.js.map +1 -0
  223. package/dist/src/verify.d.ts +8 -0
  224. package/dist/src/verify.js +126 -0
  225. package/dist/src/verify.js.map +1 -0
  226. package/docs/ADAPTERS.md +37 -0
  227. package/docs/APPROVALS.md +32 -0
  228. package/docs/ARCHITECTURE.md +57 -0
  229. package/docs/ATTRIBUTION.md +179 -0
  230. package/docs/COMMERCIAL.md +51 -0
  231. package/docs/CURSOR-ENFORCEMENT.md +73 -0
  232. package/docs/ENFORCEMENT.md +134 -0
  233. package/docs/FUTURE.md +91 -0
  234. package/docs/HUMAN-SETUP.md +98 -0
  235. package/docs/IDENTITY-AUTHORITY.md +35 -0
  236. package/docs/MCP.md +107 -0
  237. package/docs/PACKAGING.md +77 -0
  238. package/docs/PERMISSIONS.md +53 -0
  239. package/docs/PRODUCT-V5.md +63 -0
  240. package/docs/PRODUCT-V6.md +69 -0
  241. package/docs/PROTECTED-SESSIONS.md +155 -0
  242. package/docs/THREAT-MODEL.md +84 -0
  243. package/docs/TRANSACTIONS.md +57 -0
  244. package/package.json +85 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../../src/action/mutate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Shared content-addressable object store under .rewind/objects/ */
2
+ export declare function objectAbsPath(hash: string, projectRoot?: string): string;
3
+ export declare function storeObject(data: Buffer, projectRoot?: string): Promise<string>;
4
+ export declare function readObject(hash: string, projectRoot?: string): Promise<Buffer>;
5
+ export declare function objectExists(hash: string, projectRoot?: string): Promise<boolean>;
@@ -0,0 +1,50 @@
1
+ import path from "node:path";
2
+ import { mkdir, writeFile, readFile, lstat, rm } from "node:fs/promises";
3
+ import { getObjectsDir, getProjectRoot } from "../paths.js";
4
+ import { sha256 } from "../hash.js";
5
+ /** Shared content-addressable object store under .rewind/objects/ */
6
+ export function objectAbsPath(hash, projectRoot = getProjectRoot()) {
7
+ return path.join(getObjectsDir(projectRoot), hash.slice(0, 2), hash);
8
+ }
9
+ export async function storeObject(data, projectRoot = getProjectRoot()) {
10
+ const hash = sha256(data);
11
+ const dest = objectAbsPath(hash, projectRoot);
12
+ await mkdir(path.dirname(dest), { recursive: true });
13
+ try {
14
+ await lstat(dest);
15
+ return hash;
16
+ }
17
+ catch {
18
+ /* create */
19
+ }
20
+ const tmp = `${dest}.tmp-${process.pid}-${Date.now()}`;
21
+ await writeFile(tmp, data);
22
+ const { rename } = await import("node:fs/promises");
23
+ try {
24
+ await rename(tmp, dest);
25
+ }
26
+ catch (err) {
27
+ await rm(tmp, { force: true }).catch(() => undefined);
28
+ try {
29
+ await lstat(dest);
30
+ return hash;
31
+ }
32
+ catch {
33
+ throw err;
34
+ }
35
+ }
36
+ return hash;
37
+ }
38
+ export async function readObject(hash, projectRoot = getProjectRoot()) {
39
+ return readFile(objectAbsPath(hash, projectRoot));
40
+ }
41
+ export async function objectExists(hash, projectRoot = getProjectRoot()) {
42
+ try {
43
+ await lstat(objectAbsPath(hash, projectRoot));
44
+ return true;
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ //# sourceMappingURL=objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.js","sourceRoot":"","sources":["../../../src/action/objects.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,qEAAqE;AAErE,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,WAAW,GAAG,cAAc,EAAE;IAE9B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,WAAW,GAAG,cAAc,EAAE;IAE9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACvD,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,WAAW,GAAG,cAAc,EAAE;IAE9B,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,WAAW,GAAG,cAAc,EAAE;IAE9B,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { ActionRecord } from "./types.js";
2
+ export declare function newActionId(): string;
3
+ export declare function actionPath(id: string, projectRoot?: string): string;
4
+ export declare function saveAction(action: ActionRecord, projectRoot?: string): Promise<void>;
5
+ export declare function loadAction(id: string, projectRoot?: string): Promise<ActionRecord>;
6
+ export declare function listActions(projectRoot?: string): Promise<ActionRecord[]>;
7
+ export declare function listIncompleteActions(projectRoot?: string): Promise<ActionRecord[]>;
8
+ export declare function markIncompleteFailed(projectRoot?: string): Promise<number>;
9
+ export interface McpSessionMeta {
10
+ id: string;
11
+ startedAt: string;
12
+ endedAt: string | null;
13
+ client: ActionRecord["client"];
14
+ actionCount: number;
15
+ nextSequence: number;
16
+ }
17
+ export declare function newMcpSessionId(): string;
18
+ export declare function loadOrCreateMcpSession(projectRoot: string | undefined, client: ActionRecord["client"]): Promise<McpSessionMeta>;
19
+ export declare function saveMcpSession(meta: McpSessionMeta, projectRoot?: string): Promise<void>;
20
+ export declare function nextSequence(projectRoot: string | undefined, client: ActionRecord["client"]): Promise<{
21
+ session: McpSessionMeta;
22
+ sequence: number;
23
+ }>;
24
+ export declare function endMcpSession(projectRoot?: string): Promise<McpSessionMeta | null>;
@@ -0,0 +1,149 @@
1
+ import path from "node:path";
2
+ import { mkdir, writeFile, readFile, readdir, rm, appendFile, } from "node:fs/promises";
3
+ import { getActionsDir, getMcpSessionsDir, getProjectRoot, PathSafetyError, } from "../paths.js";
4
+ import { randomBytes } from "node:crypto";
5
+ function assertSafeActionId(id) {
6
+ if (!/^act_[A-Za-z0-9]+$/.test(id)) {
7
+ throw new PathSafetyError(`Invalid action id: ${id}`);
8
+ }
9
+ return id;
10
+ }
11
+ export function newActionId() {
12
+ return `act_${randomBytes(8).toString("hex")}`;
13
+ }
14
+ async function writeJsonAtomic(file, data) {
15
+ await mkdir(path.dirname(file), { recursive: true });
16
+ const tmp = `${file}.tmp-${process.pid}`;
17
+ await writeFile(tmp, JSON.stringify(data, null, 2) + "\n", "utf8");
18
+ const { rename } = await import("node:fs/promises");
19
+ await rename(tmp, file);
20
+ }
21
+ export function actionPath(id, projectRoot = getProjectRoot()) {
22
+ return path.join(getActionsDir(projectRoot), `${assertSafeActionId(id)}.json`);
23
+ }
24
+ export async function saveAction(action, projectRoot = getProjectRoot()) {
25
+ await mkdir(getActionsDir(projectRoot), { recursive: true });
26
+ await writeJsonAtomic(actionPath(action.id, projectRoot), action);
27
+ await appendFile(path.join(getActionsDir(projectRoot), "index.jsonl"), JSON.stringify({
28
+ id: action.id,
29
+ sessionId: action.sessionId,
30
+ sequence: action.sequence,
31
+ tool: action.tool,
32
+ target: action.target,
33
+ status: action.status,
34
+ at: action.completedAt ?? action.requestedAt,
35
+ }) + "\n", "utf8").catch(async () => {
36
+ // index is best-effort; recreate if missing
37
+ await appendFile(path.join(getActionsDir(projectRoot), "index.jsonl"), JSON.stringify({
38
+ id: action.id,
39
+ sessionId: action.sessionId,
40
+ sequence: action.sequence,
41
+ tool: action.tool,
42
+ target: action.target,
43
+ status: action.status,
44
+ at: action.completedAt ?? action.requestedAt,
45
+ }) + "\n", "utf8");
46
+ });
47
+ await writeJsonAtomic(path.join(getActionsDir(projectRoot), "latest.json"), {
48
+ id: action.id,
49
+ });
50
+ }
51
+ export async function loadAction(id, projectRoot = getProjectRoot()) {
52
+ try {
53
+ const raw = await readFile(actionPath(id, projectRoot), "utf8");
54
+ return JSON.parse(raw);
55
+ }
56
+ catch {
57
+ throw new PathSafetyError(`Action not found: ${id}`);
58
+ }
59
+ }
60
+ export async function listActions(projectRoot = getProjectRoot()) {
61
+ const dir = getActionsDir(projectRoot);
62
+ let names;
63
+ try {
64
+ names = await readdir(dir);
65
+ }
66
+ catch {
67
+ return [];
68
+ }
69
+ const ids = names
70
+ .filter((n) => n.startsWith("act_") && n.endsWith(".json"))
71
+ .map((n) => n.replace(/\.json$/, ""));
72
+ const actions = [];
73
+ for (const id of ids) {
74
+ try {
75
+ actions.push(await loadAction(id, projectRoot));
76
+ }
77
+ catch {
78
+ /* skip corrupt */
79
+ }
80
+ }
81
+ actions.sort((a, b) => a.sequence - b.sequence || a.id.localeCompare(b.id));
82
+ return actions;
83
+ }
84
+ export async function listIncompleteActions(projectRoot = getProjectRoot()) {
85
+ const all = await listActions(projectRoot);
86
+ return all.filter((a) => a.status === "PREPARED" || a.status === "EXECUTING");
87
+ }
88
+ export async function markIncompleteFailed(projectRoot = getProjectRoot()) {
89
+ // V5: skip AWAITING_APPROVAL; recover PREPARED/EXECUTING/UNDOING only.
90
+ const { recoverIncompleteTransactions } = await import("../core/engine.js");
91
+ return recoverIncompleteTransactions(projectRoot);
92
+ }
93
+ export function newMcpSessionId() {
94
+ return `msess_${randomBytes(4).toString("hex")}`;
95
+ }
96
+ export async function loadOrCreateMcpSession(projectRoot = getProjectRoot(), client) {
97
+ const dir = getMcpSessionsDir(projectRoot);
98
+ await mkdir(dir, { recursive: true });
99
+ const activePath = path.join(dir, "active.json");
100
+ try {
101
+ const raw = await readFile(activePath, "utf8");
102
+ const meta = JSON.parse(raw);
103
+ if (!meta.endedAt)
104
+ return meta;
105
+ }
106
+ catch {
107
+ /* create */
108
+ }
109
+ const meta = {
110
+ id: newMcpSessionId(),
111
+ startedAt: new Date().toISOString(),
112
+ endedAt: null,
113
+ client,
114
+ actionCount: 0,
115
+ nextSequence: 1,
116
+ };
117
+ await writeJsonAtomic(activePath, meta);
118
+ await writeJsonAtomic(path.join(dir, `${meta.id}.json`), meta);
119
+ return meta;
120
+ }
121
+ export async function saveMcpSession(meta, projectRoot = getProjectRoot()) {
122
+ const dir = getMcpSessionsDir(projectRoot);
123
+ await writeJsonAtomic(path.join(dir, "active.json"), meta);
124
+ await writeJsonAtomic(path.join(dir, `${meta.id}.json`), meta);
125
+ }
126
+ export async function nextSequence(projectRoot = getProjectRoot(), client) {
127
+ const session = await loadOrCreateMcpSession(projectRoot, client);
128
+ const sequence = session.nextSequence;
129
+ session.nextSequence += 1;
130
+ session.actionCount += 1;
131
+ session.client = client;
132
+ await saveMcpSession(session, projectRoot);
133
+ return { session, sequence };
134
+ }
135
+ export async function endMcpSession(projectRoot = getProjectRoot()) {
136
+ const dir = getMcpSessionsDir(projectRoot);
137
+ try {
138
+ const raw = await readFile(path.join(dir, "active.json"), "utf8");
139
+ const meta = JSON.parse(raw);
140
+ meta.endedAt = new Date().toISOString();
141
+ await saveMcpSession(meta, projectRoot);
142
+ await rm(path.join(dir, "active.json"), { force: true });
143
+ return meta;
144
+ }
145
+ catch {
146
+ return null;
147
+ }
148
+ }
149
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/action/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /** V2/V3 mediated action types. */
2
+ import type { SandboxName } from "../paths.js";
3
+ export type ActionStatus = "PREPARED" | "EXECUTING" | "COMPLETED" | "FAILED" | "UNDONE" | "CONFLICTED";
4
+ export type ActionReversibility = "REVERSIBLE" | "COMPENSABLE" | "IRREVERSIBLE";
5
+ export type ActionTool = "rewind_write_file" | "rewind_create_file" | "rewind_delete_file" | "rewind_move_file" | "rewind_create_directory" | "rewind_delete_directory";
6
+ export type EntrySnapshotKind = "file" | "directory" | "symlink" | "absent";
7
+ export interface EntrySnapshot {
8
+ exists: boolean;
9
+ kind: EntrySnapshotKind;
10
+ hash: string | null;
11
+ size: number;
12
+ mode: number | null;
13
+ linkTarget: string | null;
14
+ /** Content-addressable object id (SHA-256) when a file blob was stored. */
15
+ objectId: string | null;
16
+ /** For directory delete: relative paths of captured subtree entries. */
17
+ subtree?: SubtreeEntry[];
18
+ }
19
+ export interface SubtreeEntry {
20
+ path: string;
21
+ kind: "file" | "directory" | "symlink";
22
+ hash: string | null;
23
+ size: number;
24
+ mode: number;
25
+ linkTarget: string | null;
26
+ objectId: string | null;
27
+ }
28
+ export interface McpClientInfo {
29
+ name: string;
30
+ version: string;
31
+ }
32
+ export interface ActionRecord {
33
+ id: string;
34
+ version: 2;
35
+ sessionId: string;
36
+ sequence: number;
37
+ source: "MCP";
38
+ tool: ActionTool;
39
+ /** Which approved sandbox this action targeted. Absent ⇒ sandbox-test-project. */
40
+ sandbox?: SandboxName;
41
+ requestedAt: string;
42
+ completedAt: string | null;
43
+ /** Primary target path (POSIX relative to sandbox). */
44
+ target: string;
45
+ /** Secondary path for moves. */
46
+ targetSecondary: string | null;
47
+ before: EntrySnapshot;
48
+ after: EntrySnapshot;
49
+ /** Destination before-state for moves (overwrite protection). */
50
+ beforeSecondary: EntrySnapshot | null;
51
+ afterSecondary: EntrySnapshot | null;
52
+ reversibility: ActionReversibility;
53
+ status: ActionStatus;
54
+ client: McpClientInfo | {
55
+ name: "UNKNOWN_MCP_CLIENT";
56
+ version: "unknown";
57
+ };
58
+ error: string | null;
59
+ undoneAt: string | null;
60
+ undoVerification: {
61
+ expectedAfterHash: string | null;
62
+ actualBeforeUndoHash: string | null;
63
+ restoredHash: string | null;
64
+ ok: boolean;
65
+ } | null;
66
+ conflict: {
67
+ expectedHash: string | null;
68
+ actualHash: string | null;
69
+ message: string;
70
+ } | null;
71
+ }
72
+ export interface UndoResult {
73
+ ok: boolean;
74
+ conflict: boolean;
75
+ action: ActionRecord;
76
+ message: string;
77
+ }
78
+ export interface MediateContext {
79
+ projectRoot: string;
80
+ sessionId: string;
81
+ client: ActionRecord["client"];
82
+ /** Defaults to sandbox-test-project when omitted. */
83
+ sandboxName?: SandboxName;
84
+ }
@@ -0,0 +1,3 @@
1
+ /** V2/V3 mediated action types. */
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/action/types.ts"],"names":[],"mappings":"AAAA,mCAAmC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Undo a COMPLETED mediated action — delegates to V5 transaction engine.
3
+ * Conflict-aware: refuses when current != recorded after.
4
+ */
5
+ import type { UndoResult } from "./types.js";
6
+ /**
7
+ * Undo a COMPLETED mediated action iff current state still equals action.after.
8
+ * Never blindly overwrite newer work.
9
+ */
10
+ export declare function undoAction(actionId: string, projectRoot: string): Promise<UndoResult>;
11
+ export declare function formatUndoConflict(result: UndoResult): string;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Undo a COMPLETED mediated action — delegates to V5 transaction engine.
3
+ * Conflict-aware: refuses when current != recorded after.
4
+ */
5
+ import { PathSafetyError } from "../paths.js";
6
+ import { undoTransaction, loadTransaction, transactionToLegacyAction, } from "../core/engine.js";
7
+ /**
8
+ * Undo a COMPLETED mediated action iff current state still equals action.after.
9
+ * Never blindly overwrite newer work.
10
+ */
11
+ export async function undoAction(actionId, projectRoot) {
12
+ try {
13
+ await loadTransaction(actionId, projectRoot);
14
+ }
15
+ catch {
16
+ throw new PathSafetyError(`Action not found: ${actionId}`);
17
+ }
18
+ const result = await undoTransaction(actionId, projectRoot);
19
+ const action = transactionToLegacyAction(result.transaction);
20
+ // Ensure conflict fields mirror v2 shape for callers
21
+ if (result.conflict && result.transaction.undo.conflict) {
22
+ action.status = "CONFLICTED";
23
+ action.conflict = {
24
+ expectedHash: result.transaction.undo.conflict.expected,
25
+ actualHash: result.transaction.undo.conflict.actual,
26
+ message: result.transaction.undo.conflict.message,
27
+ };
28
+ }
29
+ return {
30
+ ok: result.ok,
31
+ conflict: result.conflict,
32
+ action,
33
+ message: result.message,
34
+ };
35
+ }
36
+ export function formatUndoConflict(result) {
37
+ if (result.conflict && result.action.conflict) {
38
+ return result.action.conflict.message;
39
+ }
40
+ return result.message;
41
+ }
42
+ //# sourceMappingURL=undo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo.js","sourceRoot":"","sources":["../../../src/action/undo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EACL,eAAe,EACf,eAAe,EACf,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAgB,EAChB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,eAAe,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAiB,yBAAyB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE3E,qDAAqD;IACrD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;QAC7B,MAAM,CAAC,QAAQ,GAAG;YAChB,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;YACvD,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;YACnD,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;SAClD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAkB;IACnD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * FilesystemAdapter — wraps proven V2 FS mediation (capture / mutate / undo).
3
+ * Does not duplicate mutation paths; reuses action/* primitives.
4
+ */
5
+ import type { AdapterStatePayload, Transaction, TransactionIntent, TransactionTarget } from "../core/types.js";
6
+ import type { AdapterCompareResult, AdapterDescribe, AdapterExecuteResult, AdapterPrepareResult, AdapterReverseResult, AdapterValidation, RewindAdapter } from "./types.js";
7
+ export type FilesystemOperation = "write" | "create" | "delete" | "move" | "create_directory" | "delete_directory";
8
+ export interface FilesystemWriteInput {
9
+ path: string;
10
+ content: string;
11
+ createOnly?: boolean;
12
+ }
13
+ export interface FilesystemDeleteInput {
14
+ path: string;
15
+ }
16
+ export interface FilesystemMoveInput {
17
+ from: string;
18
+ to: string;
19
+ }
20
+ export interface FilesystemDirInput {
21
+ path: string;
22
+ }
23
+ export declare class FilesystemAdapter implements RewindAdapter {
24
+ readonly id = "filesystem";
25
+ identifyTarget(intent: TransactionIntent): TransactionTarget;
26
+ validateOperation(intent: TransactionIntent): Promise<AdapterValidation>;
27
+ inspectCurrent(intent: TransactionIntent): Promise<AdapterStatePayload>;
28
+ captureBefore(intent: TransactionIntent): Promise<AdapterPrepareResult>;
29
+ execute(intent: TransactionIntent, txn: Transaction): Promise<AdapterExecuteResult>;
30
+ captureAfter(intent: TransactionIntent, txn: Transaction): Promise<AdapterStatePayload>;
31
+ compareExpectedCurrent(txn: Transaction): Promise<AdapterCompareResult>;
32
+ reverse(txn: Transaction): Promise<AdapterReverseResult>;
33
+ describe(txn: Transaction): AdapterDescribe;
34
+ }
35
+ export declare const filesystemAdapter: FilesystemAdapter;