@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,201 @@
1
+ import { matchAmbientPath } from "./ambient.js";
2
+ function emptySummary() {
3
+ return {
4
+ total: 0,
5
+ likelyAgent: 0,
6
+ likelyHuman: 0,
7
+ ambientSystem: 0,
8
+ unknown: 0,
9
+ confidenceHigh: 0,
10
+ confidenceMedium: 0,
11
+ confidenceLow: 0,
12
+ confidenceNone: 0,
13
+ };
14
+ }
15
+ function bumpConfidence(s, c) {
16
+ switch (c) {
17
+ case "HIGH":
18
+ s.confidenceHigh++;
19
+ break;
20
+ case "MEDIUM":
21
+ s.confidenceMedium++;
22
+ break;
23
+ case "LOW":
24
+ s.confidenceLow++;
25
+ break;
26
+ case "NONE":
27
+ s.confidenceNone++;
28
+ break;
29
+ }
30
+ }
31
+ function changePaths(c) {
32
+ const out = [];
33
+ if (c.pathBefore)
34
+ out.push(c.pathBefore);
35
+ if (c.pathAfter)
36
+ out.push(c.pathAfter);
37
+ return out;
38
+ }
39
+ /**
40
+ * Correlate authoritative manifest diffs with watcher signals + weak process hints.
41
+ *
42
+ * Honesty rules:
43
+ * - Do NOT label AGENT just because Cursor is running.
44
+ * - Ambient filename patterns → SYSTEM / MEDIUM with explicit evidence.
45
+ * - Watcher-only correlation → UNKNOWN / NONE or LOW if temporally near events.
46
+ * - lsof open-handle matches (if provided via evidence on events) can raise LOW→MEDIUM.
47
+ * - Without Endpoint Security / responsible-PID metadata, HIGH agent confidence is unreachable.
48
+ */
49
+ export function attributeChanges(options) {
50
+ const notes = [];
51
+ const knownHuman = new Set(options.knownHumanPaths ?? []);
52
+ const knownSelf = new Set(options.knownSelfWritePaths ?? []);
53
+ const cursorSeen = options.processSnapshots.some((s) => s.cursorRelated.length > 0);
54
+ if (cursorSeen) {
55
+ notes.push("Cursor-related processes were observed during the session, but FSEvents does not include responsible PID — presence alone is NOT attribution.");
56
+ }
57
+ else {
58
+ notes.push("No Cursor-related processes were identified in snapshots (or process listing was unavailable).");
59
+ }
60
+ const eventsByPath = new Map();
61
+ for (const ev of options.events) {
62
+ const list = eventsByPath.get(ev.path) ?? [];
63
+ list.push(ev);
64
+ eventsByPath.set(ev.path, list);
65
+ }
66
+ const attributed = [];
67
+ const summary = emptySummary();
68
+ summary.total = options.changes.length;
69
+ for (const change of options.changes) {
70
+ const paths = changePaths(change);
71
+ const correlated = [];
72
+ for (const p of paths) {
73
+ const evs = eventsByPath.get(p);
74
+ if (evs)
75
+ correlated.push(...evs);
76
+ }
77
+ const evidence = [];
78
+ let actor = "UNKNOWN";
79
+ let confidence = "NONE";
80
+ let ambient = false;
81
+ // Authoritative ambient basename check on final paths
82
+ for (const p of paths) {
83
+ const m = matchAmbientPath(p);
84
+ if (m.ambient) {
85
+ ambient = true;
86
+ evidence.push({
87
+ kind: "ambient_filename_pattern",
88
+ detail: m.evidence,
89
+ });
90
+ }
91
+ }
92
+ if (correlated.length > 0) {
93
+ evidence.push({
94
+ kind: "watcher_correlation",
95
+ detail: `${correlated.length} coalesced watcher event(s) touched path(s)`,
96
+ });
97
+ for (const ev of correlated) {
98
+ evidence.push(...ev.evidence);
99
+ }
100
+ }
101
+ else {
102
+ evidence.push({
103
+ kind: "no_watcher_event",
104
+ detail: "Final diff path had no correlated live watcher event (missed/coalesced/pre-watch).",
105
+ });
106
+ }
107
+ // Fixture / test markers — only when explicitly provided
108
+ const humanHit = paths.some((p) => knownHuman.has(p));
109
+ const selfHit = paths.some((p) => knownSelf.has(p));
110
+ if (humanHit) {
111
+ actor = "USER";
112
+ confidence = "HIGH";
113
+ evidence.push({
114
+ kind: "explicit_human_marker",
115
+ detail: "Path marked as human-originated in concurrent-change test harness",
116
+ });
117
+ }
118
+ else if (selfHit) {
119
+ actor = "AGENT";
120
+ confidence = "HIGH";
121
+ evidence.push({
122
+ kind: "explicit_self_write_marker",
123
+ detail: "Path marked as written by controlled REWIND demo tool (not inferred from OS)",
124
+ });
125
+ }
126
+ else if (ambient) {
127
+ actor = "SYSTEM";
128
+ confidence = "MEDIUM";
129
+ }
130
+ else {
131
+ // Default honest outcome without ES/responsible PID
132
+ actor = "UNKNOWN";
133
+ confidence = correlated.length > 0 ? "NONE" : "NONE";
134
+ evidence.push({
135
+ kind: "no_responsible_pid",
136
+ detail: "macOS FSEvents/chokidar provides no process ID for the writer; cannot attribute to AGENT vs USER.",
137
+ });
138
+ if (cursorSeen) {
139
+ evidence.push({
140
+ kind: "cursor_present_uncorrelated",
141
+ detail: "Cursor processes existed during session but were not linked to this write.",
142
+ });
143
+ // Tempting to say LOW agent — we refuse. Presence ≠ authorship.
144
+ }
145
+ }
146
+ attributed.push({
147
+ change,
148
+ actor,
149
+ confidence,
150
+ evidence,
151
+ ambient,
152
+ correlatedEvents: correlated.map((e) => e.id),
153
+ });
154
+ switch (actor) {
155
+ case "AGENT":
156
+ summary.likelyAgent++;
157
+ break;
158
+ case "USER":
159
+ summary.likelyHuman++;
160
+ break;
161
+ case "SYSTEM":
162
+ summary.ambientSystem++;
163
+ break;
164
+ case "UNKNOWN":
165
+ summary.unknown++;
166
+ break;
167
+ }
168
+ bumpConfidence(summary, confidence);
169
+ }
170
+ notes.push("Selective agent-only rewind is UNSAFE while most changes remain UNKNOWN.");
171
+ const overall = summary.confidenceHigh > 0 &&
172
+ summary.unknown === 0 &&
173
+ summary.confidenceNone === 0
174
+ ? "HIGH"
175
+ : summary.confidenceMedium > summary.total / 2
176
+ ? "MEDIUM"
177
+ : summary.total === 0
178
+ ? "NONE"
179
+ : "LOW";
180
+ return { attributed, summary, overall, notes };
181
+ }
182
+ export function printAttributionReport(summary, durationLabel) {
183
+ console.log("REWIND SESSION COMPLETE");
184
+ console.log("");
185
+ console.log(`Duration: ${durationLabel}`);
186
+ console.log("");
187
+ console.log(`Final filesystem changes: ${summary.total}`);
188
+ console.log("");
189
+ console.log(`Likely agent: ${summary.likelyAgent}`);
190
+ console.log(`Likely human: ${summary.likelyHuman}`);
191
+ console.log(`Ambient/system: ${summary.ambientSystem}`);
192
+ console.log(`Unknown: ${summary.unknown}`);
193
+ console.log("");
194
+ console.log("Attribution confidence:");
195
+ console.log("");
196
+ console.log(`High: ${summary.confidenceHigh}`);
197
+ console.log(`Medium: ${summary.confidenceMedium}`);
198
+ console.log(`Low: ${summary.confidenceLow}`);
199
+ console.log(`Unknown: ${summary.confidenceNone}`);
200
+ }
201
+ //# sourceMappingURL=attribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribution.js","sourceRoot":"","sources":["../../../src/session/attribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ObservedEvent, RewindSession } from "./types.js";
2
+ export interface StartSessionOptions {
3
+ projectRoot?: string;
4
+ /** If true, recreate sandbox before checkpoint. Default false for live Cursor tests. */
5
+ recreateSandbox?: boolean;
6
+ /** Auto-stop after N ms (tests). */
7
+ autoStopMs?: number;
8
+ /** Paths explicitly marked human for concurrent-change experiments. */
9
+ knownHumanPaths?: string[];
10
+ /** Called for each live event (tests). */
11
+ onEvent?: (ev: ObservedEvent) => void;
12
+ /** Skip process snapshots (faster tests). */
13
+ skipProcessSnapshots?: boolean;
14
+ quiet?: boolean;
15
+ }
16
+ export declare function startSession(options?: StartSessionOptions): Promise<RewindSession>;
17
+ export declare function stopSession(projectRoot?: string): Promise<void>;
18
+ export declare function sessionStatus(projectRoot?: string): Promise<void>;
19
+ export declare function rewindSession(sessionId?: string | "latest", projectRoot?: string): Promise<void>;
20
+ export declare function showSessionReport(sessionId?: string | "latest", projectRoot?: string): Promise<void>;
21
+ export declare function printProcessProbe(projectRoot?: string): Promise<void>;
22
+ /**
23
+ * Automated V1 demo: watch + synthetic writes + ambient + human marker + full rewind.
24
+ */
25
+ export declare function demoV1(projectRoot?: string): Promise<void>;