opentasks 0.0.3 → 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 (298) 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/index.d.ts +3 -0
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +6 -0
  254. package/dist/index.js.map +1 -1
  255. package/dist/providers/entire.d.ts +27 -2
  256. package/dist/providers/entire.d.ts.map +1 -1
  257. package/dist/providers/entire.js +13 -2
  258. package/dist/providers/entire.js.map +1 -1
  259. package/dist/providers/from-config.d.ts.map +1 -1
  260. package/dist/providers/from-config.js +23 -0
  261. package/dist/providers/from-config.js.map +1 -1
  262. package/dist/providers/global.d.ts +27 -0
  263. package/dist/providers/global.d.ts.map +1 -0
  264. package/dist/providers/global.js +242 -0
  265. package/dist/providers/global.js.map +1 -0
  266. package/dist/providers/index.d.ts +2 -1
  267. package/dist/providers/index.d.ts.map +1 -1
  268. package/dist/providers/index.js +3 -1
  269. package/dist/providers/index.js.map +1 -1
  270. package/dist/schema/edges.d.ts +5 -1
  271. package/dist/schema/edges.d.ts.map +1 -1
  272. package/dist/schema/index.d.ts +1 -1
  273. package/dist/schema/index.d.ts.map +1 -1
  274. package/dist/tracking/claude-task-reconstructor.d.ts +41 -0
  275. package/dist/tracking/claude-task-reconstructor.d.ts.map +1 -0
  276. package/dist/tracking/claude-task-reconstructor.js +91 -0
  277. package/dist/tracking/claude-task-reconstructor.js.map +1 -0
  278. package/dist/tracking/claude-tool-categorizer.d.ts +30 -0
  279. package/dist/tracking/claude-tool-categorizer.d.ts.map +1 -0
  280. package/dist/tracking/claude-tool-categorizer.js +98 -0
  281. package/dist/tracking/claude-tool-categorizer.js.map +1 -0
  282. package/dist/tracking/index.d.ts +19 -0
  283. package/dist/tracking/index.d.ts.map +1 -0
  284. package/dist/tracking/index.js +14 -0
  285. package/dist/tracking/index.js.map +1 -0
  286. package/dist/tracking/plan-mode-tracker.d.ts +20 -0
  287. package/dist/tracking/plan-mode-tracker.d.ts.map +1 -0
  288. package/dist/tracking/plan-mode-tracker.js +35 -0
  289. package/dist/tracking/plan-mode-tracker.js.map +1 -0
  290. package/dist/tracking/skill-tracker.d.ts +133 -0
  291. package/dist/tracking/skill-tracker.d.ts.map +1 -0
  292. package/dist/tracking/skill-tracker.js +130 -0
  293. package/dist/tracking/skill-tracker.js.map +1 -0
  294. package/dist/tracking/transcript-extractor.d.ts +45 -0
  295. package/dist/tracking/transcript-extractor.d.ts.map +1 -0
  296. package/dist/tracking/transcript-extractor.js +174 -0
  297. package/dist/tracking/transcript-extractor.js.map +1 -0
  298. package/package.json +2 -1
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Secret Redaction
3
+ *
4
+ * Multi-layered secret detection and redaction for transcripts.
5
+ * Uses both entropy-based detection and pattern matching
6
+ * for known secret formats.
7
+ */
8
+ /**
9
+ * Calculate Shannon entropy of a string
10
+ */
11
+ export declare function shannonEntropy(s: string): number;
12
+ interface RedactionRegion {
13
+ start: number;
14
+ end: number;
15
+ source: string;
16
+ }
17
+ /**
18
+ * Detect secret regions in a string
19
+ */
20
+ export declare function detectSecrets(text: string): RedactionRegion[];
21
+ /**
22
+ * Redact secrets from a plain string
23
+ */
24
+ export declare function redactString(text: string): string;
25
+ /**
26
+ * Redact secrets from a Buffer
27
+ */
28
+ export declare function redactBuffer(buf: Buffer): Buffer;
29
+ /**
30
+ * Redact secrets from JSONL content (line by line)
31
+ * Preserves JSON structure and skips safe fields
32
+ */
33
+ export declare function redactJSONL(content: string): string;
34
+ export {};
35
+ //# sourceMappingURL=redaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../../src/entire/security/redaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmFH;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAehD;AAMD,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AA2BD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CA8B7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAejD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAqBnD"}
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Secret Redaction
3
+ *
4
+ * Multi-layered secret detection and redaction for transcripts.
5
+ * Uses both entropy-based detection and pattern matching
6
+ * for known secret formats.
7
+ */
8
+ // ============================================================================
9
+ // Constants
10
+ // ============================================================================
11
+ const ENTROPY_THRESHOLD = 4.5;
12
+ const MIN_SECRET_LENGTH = 10;
13
+ const REDACTED_PLACEHOLDER = 'REDACTED';
14
+ /** High-entropy alphanumeric pattern (potential secrets) */
15
+ const HIGH_ENTROPY_PATTERN = /[A-Za-z0-9+_=-]{10,}/g;
16
+ // ============================================================================
17
+ // Known Secret Patterns (subset of gitleaks rules)
18
+ // ============================================================================
19
+ const SECRET_PATTERNS = [
20
+ // API Keys
21
+ { name: 'aws-access-key', pattern: /(?:A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}/g },
22
+ { name: 'aws-secret-key', pattern: /(?:aws_secret_access_key|aws_secret_key|secret_key)\s*[=:]\s*["']?([A-Za-z0-9/+=]{40})["']?/gi },
23
+ { name: 'github-token', pattern: /gh[pousr]_[A-Za-z0-9_]{36,255}/g },
24
+ { name: 'github-fine-grained', pattern: /github_pat_[A-Za-z0-9_]{22,255}/g },
25
+ { name: 'gitlab-token', pattern: /glpat-[A-Za-z0-9\-=_]{20,}/g },
26
+ { name: 'google-api-key', pattern: /AIza[A-Za-z0-9_\-]{35}/g },
27
+ { name: 'slack-token', pattern: /xox[baprs]-[0-9]{10,13}-[0-9]{10,13}-[a-zA-Z0-9]{24,34}/g },
28
+ { name: 'slack-webhook', pattern: /https:\/\/hooks\.slack\.com\/services\/T[A-Z0-9]{10}\/B[A-Z0-9]{10}\/[a-zA-Z0-9]{24}/g },
29
+ { name: 'stripe-key', pattern: /(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{10,99}/g },
30
+ { name: 'twilio-api-key', pattern: /SK[0-9a-fA-F]{32}/g },
31
+ { name: 'sendgrid-api-key', pattern: /SG\.[A-Za-z0-9_-]{22}\.[A-Za-z0-9_-]{43}/g },
32
+ { name: 'npm-token', pattern: /npm_[A-Za-z0-9]{36}/g },
33
+ { name: 'pypi-token', pattern: /pypi-[A-Za-z0-9_-]{100,}/g },
34
+ // Cloud Providers
35
+ { name: 'azure-connection-string', pattern: /DefaultEndpointsProtocol=https;AccountName=[^;]+;AccountKey=[A-Za-z0-9+/=]{88};/g },
36
+ { name: 'gcp-service-account', pattern: /"private_key":\s*"-----BEGIN (?:RSA )?PRIVATE KEY-----/g },
37
+ // Generic Secrets
38
+ { name: 'private-key', pattern: /-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----/g },
39
+ { name: 'jwt', pattern: /eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/g },
40
+ { name: 'basic-auth', pattern: /(?:basic|bearer)\s+[A-Za-z0-9+/=]{20,}/gi },
41
+ { name: 'password-in-url', pattern: /[a-zA-Z]{3,10}:\/\/[^/\s:@]{3,20}:[^/\s@]{3,20}@/g },
42
+ // Anthropic
43
+ { name: 'anthropic-api-key', pattern: /sk-ant-[A-Za-z0-9_-]{90,}/g },
44
+ // OpenAI
45
+ { name: 'openai-api-key', pattern: /sk-[A-Za-z0-9]{20}T3BlbkFJ[A-Za-z0-9]{20}/g },
46
+ // Database
47
+ { name: 'postgres-url', pattern: /postgres(?:ql)?:\/\/[^/\s:@]+:[^/\s@]+@[^/\s]+\/[^/\s]+/g },
48
+ { name: 'mysql-url', pattern: /mysql:\/\/[^/\s:@]+:[^/\s@]+@[^/\s]+\/[^/\s]+/g },
49
+ { name: 'mongodb-url', pattern: /mongodb(?:\+srv)?:\/\/[^/\s:@]+:[^/\s@]+@[^/\s]+/g },
50
+ // Hex-encoded secrets (generic)
51
+ { name: 'hex-secret', pattern: /(?:secret|token|key|password|api_key|apikey)\s*[=:]\s*["']?([0-9a-fA-F]{32,})["']?/gi },
52
+ ];
53
+ // Fields that should be skipped during redaction
54
+ const SAFE_FIELDS = new Set([
55
+ 'signature',
56
+ 'id',
57
+ 'uuid',
58
+ 'sessionId',
59
+ 'session_id',
60
+ 'checkpointId',
61
+ 'checkpoint_id',
62
+ 'nodeId',
63
+ 'node_id',
64
+ 'toolUseId',
65
+ 'tool_use_id',
66
+ 'file_path',
67
+ 'filePath',
68
+ 'path',
69
+ 'name',
70
+ 'type',
71
+ 'role',
72
+ ]);
73
+ // ============================================================================
74
+ // Entropy Calculation
75
+ // ============================================================================
76
+ /**
77
+ * Calculate Shannon entropy of a string
78
+ */
79
+ export function shannonEntropy(s) {
80
+ if (s.length === 0)
81
+ return 0;
82
+ const freq = new Map();
83
+ for (const ch of s) {
84
+ freq.set(ch, (freq.get(ch) ?? 0) + 1);
85
+ }
86
+ let entropy = 0;
87
+ for (const count of freq.values()) {
88
+ const p = count / s.length;
89
+ if (p > 0)
90
+ entropy -= p * Math.log2(p);
91
+ }
92
+ return entropy;
93
+ }
94
+ /**
95
+ * Merge overlapping regions
96
+ */
97
+ function mergeRegions(regions) {
98
+ if (regions.length === 0)
99
+ return [];
100
+ const sorted = [...regions].sort((a, b) => a.start - b.start);
101
+ const merged = [sorted[0]];
102
+ for (let i = 1; i < sorted.length; i++) {
103
+ const last = merged[merged.length - 1];
104
+ if (sorted[i].start <= last.end) {
105
+ last.end = Math.max(last.end, sorted[i].end);
106
+ }
107
+ else {
108
+ merged.push(sorted[i]);
109
+ }
110
+ }
111
+ return merged;
112
+ }
113
+ // ============================================================================
114
+ // Public API
115
+ // ============================================================================
116
+ /**
117
+ * Detect secret regions in a string
118
+ */
119
+ export function detectSecrets(text) {
120
+ const regions = [];
121
+ // Entropy-based detection
122
+ for (const match of text.matchAll(HIGH_ENTROPY_PATTERN)) {
123
+ const value = match[0];
124
+ if (value.length < MIN_SECRET_LENGTH)
125
+ continue;
126
+ if (shannonEntropy(value) >= ENTROPY_THRESHOLD) {
127
+ regions.push({
128
+ start: match.index,
129
+ end: match.index + value.length,
130
+ source: 'entropy',
131
+ });
132
+ }
133
+ }
134
+ // Pattern-based detection
135
+ for (const { name, pattern } of SECRET_PATTERNS) {
136
+ // Reset regex state
137
+ pattern.lastIndex = 0;
138
+ for (const match of text.matchAll(pattern)) {
139
+ regions.push({
140
+ start: match.index,
141
+ end: match.index + match[0].length,
142
+ source: name,
143
+ });
144
+ }
145
+ }
146
+ return mergeRegions(regions);
147
+ }
148
+ /**
149
+ * Redact secrets from a plain string
150
+ */
151
+ export function redactString(text) {
152
+ const regions = detectSecrets(text);
153
+ if (regions.length === 0)
154
+ return text;
155
+ let result = '';
156
+ let pos = 0;
157
+ for (const region of regions) {
158
+ result += text.slice(pos, region.start);
159
+ result += REDACTED_PLACEHOLDER;
160
+ pos = region.end;
161
+ }
162
+ result += text.slice(pos);
163
+ return result;
164
+ }
165
+ /**
166
+ * Redact secrets from a Buffer
167
+ */
168
+ export function redactBuffer(buf) {
169
+ return Buffer.from(redactString(buf.toString('utf-8')));
170
+ }
171
+ /**
172
+ * Redact secrets from JSONL content (line by line)
173
+ * Preserves JSON structure and skips safe fields
174
+ */
175
+ export function redactJSONL(content) {
176
+ const lines = content.split('\n');
177
+ const result = [];
178
+ for (const line of lines) {
179
+ if (!line.trim()) {
180
+ result.push(line);
181
+ continue;
182
+ }
183
+ try {
184
+ const parsed = JSON.parse(line);
185
+ const redacted = redactJSONValue(parsed);
186
+ result.push(JSON.stringify(redacted));
187
+ }
188
+ catch {
189
+ // Not valid JSON, redact as plain text
190
+ result.push(redactString(line));
191
+ }
192
+ }
193
+ return result.join('\n');
194
+ }
195
+ /**
196
+ * Recursively redact values in a JSON object
197
+ */
198
+ function redactJSONValue(value, key) {
199
+ // Skip safe fields
200
+ if (key && SAFE_FIELDS.has(key))
201
+ return value;
202
+ if (typeof value === 'string') {
203
+ return redactString(value);
204
+ }
205
+ if (Array.isArray(value)) {
206
+ return value.map((item) => redactJSONValue(item));
207
+ }
208
+ if (value && typeof value === 'object') {
209
+ const obj = value;
210
+ // Skip image/base64 objects
211
+ if (obj.type === 'image' || obj.type === 'base64')
212
+ return value;
213
+ const result = {};
214
+ for (const [k, v] of Object.entries(obj)) {
215
+ result[k] = redactJSONValue(v, k);
216
+ }
217
+ return result;
218
+ }
219
+ return value;
220
+ }
221
+ //# sourceMappingURL=redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../../src/entire/security/redaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
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
+ export type Phase = 'active' | 'idle' | 'ended';
11
+ /**
12
+ * Normalize a phase string, treating empty or unknown values as 'idle'
13
+ * for backward compatibility with pre-state-machine session files.
14
+ */
15
+ export declare function phaseFromString(s: string | undefined): Phase;
16
+ export declare const enum StateMachineEvent {
17
+ TurnStart = 0,
18
+ TurnEnd = 1,
19
+ GitCommit = 2,
20
+ SessionStart = 3,
21
+ SessionStop = 4,
22
+ Compaction = 5
23
+ }
24
+ export declare function eventToString(e: StateMachineEvent): string;
25
+ export declare const enum Action {
26
+ Condense = 0,
27
+ CondenseIfFilesTouched = 1,
28
+ DiscardIfNoFiles = 2,
29
+ WarnStaleSession = 3,
30
+ ClearEndedAt = 4,
31
+ UpdateLastInteraction = 5
32
+ }
33
+ export declare function actionToString(a: Action): string;
34
+ export interface TransitionContext {
35
+ hasFilesTouched: boolean;
36
+ isRebaseInProgress: boolean;
37
+ }
38
+ export interface TransitionResult {
39
+ newPhase: Phase;
40
+ actions: Action[];
41
+ }
42
+ export declare function transition(current: Phase, event: StateMachineEvent, ctx: TransitionContext): TransitionResult;
43
+ export interface ActionHandler {
44
+ handleCondense(state: StateMachineState): Promise<void>;
45
+ handleCondenseIfFilesTouched(state: StateMachineState): Promise<void>;
46
+ handleDiscardIfNoFiles(state: StateMachineState): Promise<void>;
47
+ handleWarnStaleSession(state: StateMachineState): Promise<void>;
48
+ }
49
+ export declare class NoOpActionHandler implements ActionHandler {
50
+ handleCondense(): Promise<void>;
51
+ handleCondenseIfFilesTouched(): Promise<void>;
52
+ handleDiscardIfNoFiles(): Promise<void>;
53
+ handleWarnStaleSession(): Promise<void>;
54
+ }
55
+ export interface StateMachineState {
56
+ sessionID: string;
57
+ phase: Phase;
58
+ filesTouched: string[];
59
+ lastInteractionTime?: string;
60
+ endedAt?: string;
61
+ }
62
+ /**
63
+ * Apply a TransitionResult to state: sets the new phase, then executes
64
+ * all actions. Common actions (UpdateLastInteraction, ClearEndedAt)
65
+ * always run. Strategy-specific handler actions stop on first error.
66
+ */
67
+ export declare function applyTransition(state: StateMachineState, result: TransitionResult, handler: ActionHandler): Promise<Error | null>;
68
+ /** Duration after which a session is considered stale (7 days) */
69
+ export declare const STALE_SESSION_THRESHOLD_MS: number;
70
+ /**
71
+ * Returns true when the session's last interaction exceeds the stale threshold.
72
+ */
73
+ export declare function isStale(lastInteractionTime: string | undefined): boolean;
74
+ /**
75
+ * Normalize session state after loading from disk.
76
+ * Migrates legacy phase values and deprecated transcript fields.
77
+ */
78
+ export declare function normalizeAfterLoad(state: {
79
+ phase?: string;
80
+ checkpointTranscriptStart?: number;
81
+ condensedTranscriptLines?: number;
82
+ transcriptLinesAtStart?: number;
83
+ attributionBaseCommit?: string;
84
+ baseCommit?: string;
85
+ }): void;
86
+ /**
87
+ * Generate a Mermaid state diagram from the transition table.
88
+ */
89
+ export declare function mermaidDiagram(): string;
90
+ //# sourceMappingURL=state-machine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-machine.d.ts","sourceRoot":"","sources":["../../../src/entire/session/state-machine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAa5D;AAMD,0BAAkB,iBAAiB;IACjC,SAAS,IAAI;IACb,OAAO,IAAI;IACX,SAAS,IAAI;IACb,YAAY,IAAI;IAChB,WAAW,IAAI;IACf,UAAU,IAAI;CACf;AAWD,wBAAgB,aAAa,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAiB1D;AAMD,0BAAkB,MAAM;IACtB,QAAQ,IAAI;IACZ,sBAAsB,IAAI;IAC1B,gBAAgB,IAAI;IACpB,gBAAgB,IAAI;IACpB,YAAY,IAAI;IAChB,qBAAqB,IAAI;CAC1B;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBhD;AAMD,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,KAAK,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAMD,wBAAgB,UAAU,CACxB,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,iBAAiB,GACrB,gBAAgB,CAalB;AA8HD,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,4BAA4B,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAC/C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAC7C,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IACvC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;CAC9C;AAMD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAqDvB;AAMD,kEAAkE;AAClE,eAAO,MAAM,0BAA0B,QAA0B,CAAC;AAElE;;GAEG;AACH,wBAAgB,OAAO,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGxE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAoBP;AAQD;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CA8CvC"}