oh-my-claude-sisyphus 3.7.0 → 3.7.3

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 (381) hide show
  1. package/README.md +24 -1
  2. package/commands/hud.md +37 -5
  3. package/commands/omc-setup.md +105 -0
  4. package/dist/__tests__/compatibility-security.test.d.ts +13 -0
  5. package/dist/__tests__/compatibility-security.test.d.ts.map +1 -0
  6. package/dist/__tests__/compatibility-security.test.js +403 -0
  7. package/dist/__tests__/compatibility-security.test.js.map +1 -0
  8. package/dist/__tests__/compatibility.test.d.ts +7 -0
  9. package/dist/__tests__/compatibility.test.d.ts.map +1 -0
  10. package/dist/__tests__/compatibility.test.js +484 -0
  11. package/dist/__tests__/compatibility.test.js.map +1 -0
  12. package/dist/__tests__/hud/analytics-display.test.js +141 -1
  13. package/dist/__tests__/hud/analytics-display.test.js.map +1 -1
  14. package/dist/__tests__/hud-windows.test.d.ts +2 -0
  15. package/dist/__tests__/hud-windows.test.d.ts.map +1 -0
  16. package/dist/__tests__/hud-windows.test.js +91 -0
  17. package/dist/__tests__/hud-windows.test.js.map +1 -0
  18. package/dist/cli/analytics.js +0 -0
  19. package/dist/cli/index.js +0 -0
  20. package/dist/compatibility/discovery.d.ts +58 -0
  21. package/dist/compatibility/discovery.d.ts.map +1 -0
  22. package/dist/compatibility/discovery.js +619 -0
  23. package/dist/compatibility/discovery.js.map +1 -0
  24. package/dist/compatibility/index.d.ts +51 -0
  25. package/dist/compatibility/index.d.ts.map +1 -0
  26. package/dist/compatibility/index.js +72 -0
  27. package/dist/compatibility/index.js.map +1 -0
  28. package/dist/compatibility/mcp-bridge.d.ts +138 -0
  29. package/dist/compatibility/mcp-bridge.d.ts.map +1 -0
  30. package/dist/compatibility/mcp-bridge.js +524 -0
  31. package/dist/compatibility/mcp-bridge.js.map +1 -0
  32. package/dist/compatibility/permission-adapter.d.ts +79 -0
  33. package/dist/compatibility/permission-adapter.d.ts.map +1 -0
  34. package/dist/compatibility/permission-adapter.js +369 -0
  35. package/dist/compatibility/permission-adapter.js.map +1 -0
  36. package/dist/compatibility/registry.d.ts +161 -0
  37. package/dist/compatibility/registry.d.ts.map +1 -0
  38. package/dist/compatibility/registry.js +389 -0
  39. package/dist/compatibility/registry.js.map +1 -0
  40. package/dist/compatibility/types.d.ts +249 -0
  41. package/dist/compatibility/types.d.ts.map +1 -0
  42. package/dist/compatibility/types.js +8 -0
  43. package/dist/compatibility/types.js.map +1 -0
  44. package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -1
  45. package/dist/features/rate-limit-wait/daemon.js +44 -1
  46. package/dist/features/rate-limit-wait/daemon.js.map +1 -1
  47. package/dist/features/state-manager/index.d.ts.map +1 -1
  48. package/dist/features/state-manager/index.js +4 -1
  49. package/dist/features/state-manager/index.js.map +1 -1
  50. package/dist/hooks/permission-handler/__tests__/index.test.js +47 -0
  51. package/dist/hooks/permission-handler/__tests__/index.test.js.map +1 -1
  52. package/dist/hooks/permission-handler/index.d.ts +1 -1
  53. package/dist/hooks/permission-handler/index.d.ts.map +1 -1
  54. package/dist/hooks/permission-handler/index.js +11 -15
  55. package/dist/hooks/permission-handler/index.js.map +1 -1
  56. package/dist/hooks/plugin-patterns/index.d.ts +5 -0
  57. package/dist/hooks/plugin-patterns/index.d.ts.map +1 -1
  58. package/dist/hooks/plugin-patterns/index.js +26 -1
  59. package/dist/hooks/plugin-patterns/index.js.map +1 -1
  60. package/dist/hooks/session-end/index.d.ts +0 -8
  61. package/dist/hooks/session-end/index.d.ts.map +1 -1
  62. package/dist/hooks/session-end/index.js +5 -12
  63. package/dist/hooks/session-end/index.js.map +1 -1
  64. package/dist/hooks/subagent-tracker/index.d.ts.map +1 -1
  65. package/dist/hooks/subagent-tracker/index.js +32 -17
  66. package/dist/hooks/subagent-tracker/index.js.map +1 -1
  67. package/dist/hud/analytics-display.d.ts +17 -1
  68. package/dist/hud/analytics-display.d.ts.map +1 -1
  69. package/dist/hud/analytics-display.js +55 -12
  70. package/dist/hud/analytics-display.js.map +1 -1
  71. package/dist/hud/render.d.ts.map +1 -1
  72. package/dist/hud/render.js +49 -18
  73. package/dist/hud/render.js.map +1 -1
  74. package/dist/hud/types.d.ts +2 -0
  75. package/dist/hud/types.d.ts.map +1 -1
  76. package/dist/hud/types.js +14 -0
  77. package/dist/hud/types.js.map +1 -1
  78. package/dist/installer/index.d.ts.map +1 -1
  79. package/dist/installer/index.js +3 -2
  80. package/dist/installer/index.js.map +1 -1
  81. package/docs/COMPATIBILITY.md +1051 -0
  82. package/hooks/keyword-detector.sh +4 -4
  83. package/hooks/persistent-mode.sh +10 -10
  84. package/hooks/session-start.sh +4 -4
  85. package/package.json +3 -1
  86. package/scripts/keyword-detector.mjs +4 -4
  87. package/scripts/persistent-mode.mjs +6 -6
  88. package/scripts/persistent-mode.sh +10 -10
  89. package/scripts/session-start.mjs +4 -4
  90. package/skills/hud/SKILL.md +37 -5
  91. package/skills/omc-setup/SKILL.md +162 -4
  92. package/skills/writer-memory/SKILL.md +443 -0
  93. package/skills/writer-memory/lib/character-tracker.ts +338 -0
  94. package/skills/writer-memory/lib/memory-manager.ts +804 -0
  95. package/skills/writer-memory/lib/relationship-graph.ts +400 -0
  96. package/skills/writer-memory/lib/scene-organizer.ts +544 -0
  97. package/skills/writer-memory/lib/synopsis-builder.ts +339 -0
  98. package/skills/writer-memory/templates/synopsis-template.md +46 -0
  99. package/templates/hooks/keyword-detector.sh +4 -4
  100. package/templates/hooks/persistent-mode.sh +10 -10
  101. package/templates/hooks/session-start.sh +4 -4
  102. package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
  103. package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
  104. package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
  105. package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
  106. package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
  107. package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
  108. package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
  109. package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
  110. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
  111. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
  112. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
  113. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
  114. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
  115. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
  116. package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
  117. package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
  118. package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
  119. package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
  120. package/dist/__tests__/learned-skills/config.test.js +0 -37
  121. package/dist/__tests__/learned-skills/config.test.js.map +0 -1
  122. package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
  123. package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
  124. package/dist/__tests__/learned-skills/detector.test.js +0 -99
  125. package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
  126. package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
  127. package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
  128. package/dist/__tests__/learned-skills/finder.test.js +0 -59
  129. package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
  130. package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
  131. package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
  132. package/dist/__tests__/learned-skills/loader.test.js +0 -69
  133. package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
  134. package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
  135. package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
  136. package/dist/__tests__/learned-skills/parser.test.js +0 -81
  137. package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
  138. package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
  139. package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
  140. package/dist/__tests__/learned-skills/validator.test.js +0 -85
  141. package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
  142. package/dist/agents/codex-agents.d.ts +0 -20
  143. package/dist/agents/codex-agents.d.ts.map +0 -1
  144. package/dist/agents/codex-agents.js +0 -36
  145. package/dist/agents/codex-agents.js.map +0 -1
  146. package/dist/agents/document-writer.d.ts +0 -11
  147. package/dist/agents/document-writer.d.ts.map +0 -1
  148. package/dist/agents/document-writer.js +0 -209
  149. package/dist/agents/document-writer.js.map +0 -1
  150. package/dist/agents/frontend-engineer.d.ts +0 -11
  151. package/dist/agents/frontend-engineer.d.ts.map +0 -1
  152. package/dist/agents/frontend-engineer.js +0 -115
  153. package/dist/agents/frontend-engineer.js.map +0 -1
  154. package/dist/agents/librarian.d.ts +0 -12
  155. package/dist/agents/librarian.d.ts.map +0 -1
  156. package/dist/agents/librarian.js +0 -103
  157. package/dist/agents/librarian.js.map +0 -1
  158. package/dist/agents/metis.d.ts +0 -12
  159. package/dist/agents/metis.d.ts.map +0 -1
  160. package/dist/agents/metis.js +0 -117
  161. package/dist/agents/metis.js.map +0 -1
  162. package/dist/agents/momus.d.ts +0 -12
  163. package/dist/agents/momus.d.ts.map +0 -1
  164. package/dist/agents/momus.js +0 -128
  165. package/dist/agents/momus.js.map +0 -1
  166. package/dist/agents/multimodal-looker.d.ts +0 -11
  167. package/dist/agents/multimodal-looker.d.ts.map +0 -1
  168. package/dist/agents/multimodal-looker.js +0 -70
  169. package/dist/agents/multimodal-looker.js.map +0 -1
  170. package/dist/agents/oracle.d.ts +0 -13
  171. package/dist/agents/oracle.d.ts.map +0 -1
  172. package/dist/agents/oracle.js +0 -191
  173. package/dist/agents/oracle.js.map +0 -1
  174. package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
  175. package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
  176. package/dist/agents/orchestrator-sisyphus.js +0 -115
  177. package/dist/agents/orchestrator-sisyphus.js.map +0 -1
  178. package/dist/agents/prometheus.d.ts +0 -12
  179. package/dist/agents/prometheus.d.ts.map +0 -1
  180. package/dist/agents/prometheus.js +0 -195
  181. package/dist/agents/prometheus.js.map +0 -1
  182. package/dist/agents/sisyphus-junior.d.ts +0 -12
  183. package/dist/agents/sisyphus-junior.d.ts.map +0 -1
  184. package/dist/agents/sisyphus-junior.js +0 -93
  185. package/dist/agents/sisyphus-junior.js.map +0 -1
  186. package/dist/cli/components/CostDashboard.d.ts +0 -15
  187. package/dist/cli/components/CostDashboard.d.ts.map +0 -1
  188. package/dist/cli/components/CostDashboard.js +0 -15
  189. package/dist/cli/components/CostDashboard.js.map +0 -1
  190. package/dist/cli/components/LiveStats.d.ts +0 -16
  191. package/dist/cli/components/LiveStats.d.ts.map +0 -1
  192. package/dist/cli/components/LiveStats.js +0 -16
  193. package/dist/cli/components/LiveStats.js.map +0 -1
  194. package/dist/cli/components/SessionBrowser.d.ts +0 -14
  195. package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
  196. package/dist/cli/components/SessionBrowser.js +0 -14
  197. package/dist/cli/components/SessionBrowser.js.map +0 -1
  198. package/dist/cli/tui.d.ts +0 -21
  199. package/dist/cli/tui.d.ts.map +0 -1
  200. package/dist/cli/tui.js +0 -21
  201. package/dist/cli/tui.js.map +0 -1
  202. package/dist/hooks/autopilot/signals.d.ts +0 -20
  203. package/dist/hooks/autopilot/signals.d.ts.map +0 -1
  204. package/dist/hooks/autopilot/signals.js +0 -75
  205. package/dist/hooks/autopilot/signals.js.map +0 -1
  206. package/dist/hooks/autopilot/summary.d.ts +0 -27
  207. package/dist/hooks/autopilot/summary.d.ts.map +0 -1
  208. package/dist/hooks/autopilot/summary.js +0 -160
  209. package/dist/hooks/autopilot/summary.js.map +0 -1
  210. package/dist/hooks/autopilot/transition.d.ts +0 -39
  211. package/dist/hooks/autopilot/transition.d.ts.map +0 -1
  212. package/dist/hooks/autopilot/transition.js +0 -216
  213. package/dist/hooks/autopilot/transition.js.map +0 -1
  214. package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
  215. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
  216. package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
  217. package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
  218. package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
  219. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
  220. package/dist/hooks/context-window-limit-recovery/index.js +0 -201
  221. package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
  222. package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
  223. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
  224. package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
  225. package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
  226. package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
  227. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
  228. package/dist/hooks/context-window-limit-recovery/types.js +0 -34
  229. package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
  230. package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
  231. package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
  232. package/dist/hooks/edit-error-recovery/index.js +0 -89
  233. package/dist/hooks/edit-error-recovery/index.js.map +0 -1
  234. package/dist/hooks/learned-skills/config.d.ts +0 -53
  235. package/dist/hooks/learned-skills/config.d.ts.map +0 -1
  236. package/dist/hooks/learned-skills/config.js +0 -103
  237. package/dist/hooks/learned-skills/config.js.map +0 -1
  238. package/dist/hooks/learned-skills/constants.d.ts +0 -24
  239. package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
  240. package/dist/hooks/learned-skills/constants.js +0 -26
  241. package/dist/hooks/learned-skills/constants.js.map +0 -1
  242. package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
  243. package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
  244. package/dist/hooks/learned-skills/detection-hook.js +0 -83
  245. package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
  246. package/dist/hooks/learned-skills/detector.d.ts +0 -30
  247. package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
  248. package/dist/hooks/learned-skills/detector.js +0 -150
  249. package/dist/hooks/learned-skills/detector.js.map +0 -1
  250. package/dist/hooks/learned-skills/finder.d.ts +0 -21
  251. package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
  252. package/dist/hooks/learned-skills/finder.js +0 -117
  253. package/dist/hooks/learned-skills/finder.js.map +0 -1
  254. package/dist/hooks/learned-skills/index.d.ts +0 -62
  255. package/dist/hooks/learned-skills/index.d.ts.map +0 -1
  256. package/dist/hooks/learned-skills/index.js +0 -137
  257. package/dist/hooks/learned-skills/index.js.map +0 -1
  258. package/dist/hooks/learned-skills/loader.d.ts +0 -20
  259. package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
  260. package/dist/hooks/learned-skills/loader.js +0 -107
  261. package/dist/hooks/learned-skills/loader.js.map +0 -1
  262. package/dist/hooks/learned-skills/parser.d.ts +0 -21
  263. package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
  264. package/dist/hooks/learned-skills/parser.js +0 -190
  265. package/dist/hooks/learned-skills/parser.js.map +0 -1
  266. package/dist/hooks/learned-skills/promotion.d.ts +0 -29
  267. package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
  268. package/dist/hooks/learned-skills/promotion.js +0 -87
  269. package/dist/hooks/learned-skills/promotion.js.map +0 -1
  270. package/dist/hooks/learned-skills/types.d.ts +0 -109
  271. package/dist/hooks/learned-skills/types.d.ts.map +0 -1
  272. package/dist/hooks/learned-skills/types.js +0 -8
  273. package/dist/hooks/learned-skills/types.js.map +0 -1
  274. package/dist/hooks/learned-skills/validator.d.ts +0 -15
  275. package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
  276. package/dist/hooks/learned-skills/validator.js +0 -87
  277. package/dist/hooks/learned-skills/validator.js.map +0 -1
  278. package/dist/hooks/learned-skills/writer.d.ts +0 -27
  279. package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
  280. package/dist/hooks/learned-skills/writer.js +0 -126
  281. package/dist/hooks/learned-skills/writer.js.map +0 -1
  282. package/dist/hooks/mnemosyne/config.d.ts +0 -53
  283. package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
  284. package/dist/hooks/mnemosyne/config.js +0 -103
  285. package/dist/hooks/mnemosyne/config.js.map +0 -1
  286. package/dist/hooks/mnemosyne/constants.d.ts +0 -24
  287. package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
  288. package/dist/hooks/mnemosyne/constants.js +0 -26
  289. package/dist/hooks/mnemosyne/constants.js.map +0 -1
  290. package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
  291. package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
  292. package/dist/hooks/mnemosyne/detection-hook.js +0 -83
  293. package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
  294. package/dist/hooks/mnemosyne/detector.d.ts +0 -30
  295. package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
  296. package/dist/hooks/mnemosyne/detector.js +0 -150
  297. package/dist/hooks/mnemosyne/detector.js.map +0 -1
  298. package/dist/hooks/mnemosyne/finder.d.ts +0 -21
  299. package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
  300. package/dist/hooks/mnemosyne/finder.js +0 -117
  301. package/dist/hooks/mnemosyne/finder.js.map +0 -1
  302. package/dist/hooks/mnemosyne/index.d.ts +0 -62
  303. package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
  304. package/dist/hooks/mnemosyne/index.js +0 -137
  305. package/dist/hooks/mnemosyne/index.js.map +0 -1
  306. package/dist/hooks/mnemosyne/loader.d.ts +0 -20
  307. package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
  308. package/dist/hooks/mnemosyne/loader.js +0 -113
  309. package/dist/hooks/mnemosyne/loader.js.map +0 -1
  310. package/dist/hooks/mnemosyne/parser.d.ts +0 -21
  311. package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
  312. package/dist/hooks/mnemosyne/parser.js +0 -190
  313. package/dist/hooks/mnemosyne/parser.js.map +0 -1
  314. package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
  315. package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
  316. package/dist/hooks/mnemosyne/promotion.js +0 -87
  317. package/dist/hooks/mnemosyne/promotion.js.map +0 -1
  318. package/dist/hooks/mnemosyne/types.d.ts +0 -109
  319. package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
  320. package/dist/hooks/mnemosyne/types.js +0 -8
  321. package/dist/hooks/mnemosyne/types.js.map +0 -1
  322. package/dist/hooks/mnemosyne/validator.d.ts +0 -15
  323. package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
  324. package/dist/hooks/mnemosyne/validator.js +0 -87
  325. package/dist/hooks/mnemosyne/validator.js.map +0 -1
  326. package/dist/hooks/mnemosyne/writer.d.ts +0 -27
  327. package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
  328. package/dist/hooks/mnemosyne/writer.js +0 -126
  329. package/dist/hooks/mnemosyne/writer.js.map +0 -1
  330. package/dist/hooks/ralph-loop/index.d.ts +0 -116
  331. package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
  332. package/dist/hooks/ralph-loop/index.js +0 -322
  333. package/dist/hooks/ralph-loop/index.js.map +0 -1
  334. package/dist/hooks/ralph-prd/index.d.ts +0 -130
  335. package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
  336. package/dist/hooks/ralph-prd/index.js +0 -310
  337. package/dist/hooks/ralph-prd/index.js.map +0 -1
  338. package/dist/hooks/ralph-progress/index.d.ts +0 -102
  339. package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
  340. package/dist/hooks/ralph-progress/index.js +0 -408
  341. package/dist/hooks/ralph-progress/index.js.map +0 -1
  342. package/dist/hooks/ralph-verifier/index.d.ts +0 -72
  343. package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
  344. package/dist/hooks/ralph-verifier/index.js +0 -223
  345. package/dist/hooks/ralph-verifier/index.js.map +0 -1
  346. package/dist/hooks/session-recovery/constants.d.ts +0 -56
  347. package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
  348. package/dist/hooks/session-recovery/constants.js +0 -78
  349. package/dist/hooks/session-recovery/constants.js.map +0 -1
  350. package/dist/hooks/session-recovery/index.d.ts +0 -53
  351. package/dist/hooks/session-recovery/index.d.ts.map +0 -1
  352. package/dist/hooks/session-recovery/index.js +0 -321
  353. package/dist/hooks/session-recovery/index.js.map +0 -1
  354. package/dist/hooks/session-recovery/storage.d.ts +0 -76
  355. package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
  356. package/dist/hooks/session-recovery/storage.js +0 -383
  357. package/dist/hooks/session-recovery/storage.js.map +0 -1
  358. package/dist/hooks/session-recovery/types.d.ts +0 -145
  359. package/dist/hooks/session-recovery/types.d.ts.map +0 -1
  360. package/dist/hooks/session-recovery/types.js +0 -8
  361. package/dist/hooks/session-recovery/types.js.map +0 -1
  362. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
  363. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
  364. package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
  365. package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
  366. package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
  367. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
  368. package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
  369. package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
  370. package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
  371. package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
  372. package/dist/hooks/ultraqa-loop/index.js +0 -216
  373. package/dist/hooks/ultraqa-loop/index.js.map +0 -1
  374. package/dist/hooks/ultrawork-state/index.d.ts +0 -62
  375. package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
  376. package/dist/hooks/ultrawork-state/index.js +0 -208
  377. package/dist/hooks/ultrawork-state/index.js.map +0 -1
  378. package/dist/hud/sisyphus-state.d.ts +0 -31
  379. package/dist/hud/sisyphus-state.d.ts.map +0 -1
  380. package/dist/hud/sisyphus-state.js +0 -163
  381. package/dist/hud/sisyphus-state.js.map +0 -1
@@ -0,0 +1,544 @@
1
+ import { loadMemory, saveMemory, findSceneById, findScenesByCharacter, generateId, now } from './memory-manager';
2
+ import type { Scene, Cut, WriterMemory } from './memory-manager';
3
+
4
+ // === Korean Emotion Vocabulary ===
5
+ const EMOTION_VOCABULARY: string[] = [
6
+ "긴장", "설렘", "불안", "평온", "갈등",
7
+ "슬픔", "기쁨", "분노", "체념", "희망",
8
+ "외로움", "그리움", "애틋함", "당혹", "환희",
9
+ "공포", "안도", "후회", "결의", "허탈"
10
+ ];
11
+
12
+ const CUT_TYPE_LABELS: Record<string, string> = {
13
+ dialogue: "대사",
14
+ narration: "내레이션",
15
+ action: "액션",
16
+ internal: "내면"
17
+ };
18
+
19
+ // === Type Definitions ===
20
+ export interface SceneSummary {
21
+ id: string;
22
+ title: string;
23
+ chapter?: string;
24
+ order: number;
25
+ characterCount: number;
26
+ cutCount: number;
27
+ emotionTags: string[];
28
+ }
29
+
30
+ export interface SceneFlowEntry {
31
+ order: number;
32
+ title: string;
33
+ chapter?: string;
34
+ primaryEmotion: string;
35
+ characters: string[];
36
+ cutCount: number;
37
+ }
38
+
39
+ // === Scene CRUD ===
40
+
41
+ export function addScene(title: string, options?: {
42
+ chapter?: string;
43
+ characters?: string[];
44
+ emotionTags?: string[];
45
+ narrationTone?: string;
46
+ notes?: string;
47
+ }): Scene | null {
48
+ try {
49
+ const memory = loadMemory();
50
+
51
+ const newScene: Scene = {
52
+ id: generateId('scene'),
53
+ title,
54
+ chapter: options?.chapter,
55
+ characters: options?.characters || [],
56
+ emotionTags: options?.emotionTags || [],
57
+ cuts: [],
58
+ narrationTone: options?.narrationTone || '',
59
+ notes: options?.notes || '',
60
+ order: memory.scenes.length,
61
+ created: now()
62
+ };
63
+
64
+ memory.scenes.push(newScene);
65
+ saveMemory(memory);
66
+
67
+ return newScene;
68
+ } catch (error) {
69
+ console.error('Failed to add scene:', error);
70
+ return null;
71
+ }
72
+ }
73
+
74
+ export function updateScene(sceneId: string, updates: Partial<Scene>): Scene | null {
75
+ try {
76
+ const memory = loadMemory();
77
+ const scene = findSceneById(memory, sceneId);
78
+
79
+ if (!scene) {
80
+ console.error(`Scene not found: ${sceneId}`);
81
+ return null;
82
+ }
83
+
84
+ // Apply updates (preserve immutable fields)
85
+ Object.assign(scene, {
86
+ ...updates,
87
+ id: scene.id,
88
+ created: scene.created
89
+ });
90
+
91
+ saveMemory(memory);
92
+ return scene;
93
+ } catch (error) {
94
+ console.error('Failed to update scene:', error);
95
+ return null;
96
+ }
97
+ }
98
+
99
+ export function removeScene(sceneId: string): boolean {
100
+ try {
101
+ const memory = loadMemory();
102
+ const index = memory.scenes.findIndex(s => s.id === sceneId);
103
+
104
+ if (index === -1) {
105
+ console.error(`Scene not found: ${sceneId}`);
106
+ return false;
107
+ }
108
+
109
+ memory.scenes.splice(index, 1);
110
+
111
+ // Reorder remaining scenes
112
+ memory.scenes.forEach((scene, idx) => {
113
+ scene.order = idx;
114
+ });
115
+
116
+ saveMemory(memory);
117
+ return true;
118
+ } catch (error) {
119
+ console.error('Failed to remove scene:', error);
120
+ return false;
121
+ }
122
+ }
123
+
124
+ export function getScene(sceneId: string): Scene | null {
125
+ try {
126
+ const memory = loadMemory();
127
+ return findSceneById(memory, sceneId);
128
+ } catch (error) {
129
+ console.error('Failed to get scene:', error);
130
+ return null;
131
+ }
132
+ }
133
+
134
+ export function listScenes(options?: {
135
+ chapter?: string;
136
+ character?: string;
137
+ emotionTag?: string;
138
+ }): SceneSummary[] {
139
+ try {
140
+ const memory = loadMemory();
141
+ let scenes = [...memory.scenes];
142
+
143
+ // Apply filters
144
+ if (options?.chapter) {
145
+ scenes = scenes.filter(s => s.chapter === options.chapter);
146
+ }
147
+
148
+ if (options?.character) {
149
+ scenes = scenes.filter(s => s.characters.includes(options.character!));
150
+ }
151
+
152
+ if (options?.emotionTag) {
153
+ scenes = scenes.filter(s => s.emotionTags.includes(options.emotionTag!));
154
+ }
155
+
156
+ // Sort by order
157
+ scenes.sort((a, b) => a.order - b.order);
158
+
159
+ // Convert to summaries
160
+ return scenes.map(scene => ({
161
+ id: scene.id,
162
+ title: scene.title,
163
+ chapter: scene.chapter,
164
+ order: scene.order,
165
+ characterCount: scene.characters.length,
166
+ cutCount: scene.cuts.length,
167
+ emotionTags: scene.emotionTags
168
+ }));
169
+ } catch (error) {
170
+ console.error('Failed to list scenes:', error);
171
+ return [];
172
+ }
173
+ }
174
+
175
+ // === Cut Management (콘티 컷) ===
176
+
177
+ export function addCut(sceneId: string, cut: {
178
+ type: "dialogue" | "narration" | "action" | "internal";
179
+ content: string;
180
+ character?: string;
181
+ emotionTag?: string;
182
+ }): boolean {
183
+ try {
184
+ const memory = loadMemory();
185
+ const scene = findSceneById(memory, sceneId);
186
+
187
+ if (!scene) {
188
+ console.error(`Scene not found: ${sceneId}`);
189
+ return false;
190
+ }
191
+
192
+ const newCut: Cut = {
193
+ order: scene.cuts.length,
194
+ type: cut.type,
195
+ content: cut.content,
196
+ character: cut.character,
197
+ emotionTag: cut.emotionTag
198
+ };
199
+
200
+ scene.cuts.push(newCut);
201
+
202
+ saveMemory(memory);
203
+ return true;
204
+ } catch (error) {
205
+ console.error('Failed to add cut:', error);
206
+ return false;
207
+ }
208
+ }
209
+
210
+ export function updateCut(sceneId: string, cutOrder: number, updates: Partial<Cut>): boolean {
211
+ try {
212
+ const memory = loadMemory();
213
+ const scene = findSceneById(memory, sceneId);
214
+
215
+ if (!scene) {
216
+ console.error(`Scene not found: ${sceneId}`);
217
+ return false;
218
+ }
219
+
220
+ const cut = scene.cuts.find(c => c.order === cutOrder);
221
+
222
+ if (!cut) {
223
+ console.error(`Cut not found: order ${cutOrder} in scene ${sceneId}`);
224
+ return false;
225
+ }
226
+
227
+ // Apply updates (preserve order)
228
+ Object.assign(cut, {
229
+ ...updates,
230
+ order: cut.order
231
+ });
232
+
233
+ saveMemory(memory);
234
+ return true;
235
+ } catch (error) {
236
+ console.error('Failed to update cut:', error);
237
+ return false;
238
+ }
239
+ }
240
+
241
+ export function removeCut(sceneId: string, cutOrder: number): boolean {
242
+ try {
243
+ const memory = loadMemory();
244
+ const scene = findSceneById(memory, sceneId);
245
+
246
+ if (!scene) {
247
+ console.error(`Scene not found: ${sceneId}`);
248
+ return false;
249
+ }
250
+
251
+ const index = scene.cuts.findIndex(c => c.order === cutOrder);
252
+
253
+ if (index === -1) {
254
+ console.error(`Cut not found: order ${cutOrder} in scene ${sceneId}`);
255
+ return false;
256
+ }
257
+
258
+ scene.cuts.splice(index, 1);
259
+
260
+ // Reorder remaining cuts
261
+ scene.cuts.forEach((cut, idx) => {
262
+ cut.order = idx;
263
+ });
264
+
265
+ saveMemory(memory);
266
+ return true;
267
+ } catch (error) {
268
+ console.error('Failed to remove cut:', error);
269
+ return false;
270
+ }
271
+ }
272
+
273
+ export function reorderCuts(sceneId: string, newOrder: number[]): boolean {
274
+ try {
275
+ const memory = loadMemory();
276
+ const scene = findSceneById(memory, sceneId);
277
+
278
+ if (!scene) {
279
+ console.error(`Scene not found: ${sceneId}`);
280
+ return false;
281
+ }
282
+
283
+ if (newOrder.length !== scene.cuts.length) {
284
+ console.error('New order length does not match cuts length');
285
+ return false;
286
+ }
287
+
288
+ // Validate all indices are present
289
+ const sortedOrder = [...newOrder].sort((a, b) => a - b);
290
+ for (let i = 0; i < sortedOrder.length; i++) {
291
+ if (sortedOrder[i] !== i) {
292
+ console.error('Invalid order array: must contain all indices 0 to n-1');
293
+ return false;
294
+ }
295
+ }
296
+
297
+ // Reorder cuts
298
+ const reorderedCuts: Cut[] = newOrder.map(oldIdx => scene.cuts[oldIdx]);
299
+ reorderedCuts.forEach((cut, newIdx) => {
300
+ cut.order = newIdx;
301
+ });
302
+
303
+ scene.cuts = reorderedCuts;
304
+
305
+ saveMemory(memory);
306
+ return true;
307
+ } catch (error) {
308
+ console.error('Failed to reorder cuts:', error);
309
+ return false;
310
+ }
311
+ }
312
+
313
+ // === Emotion Tags ===
314
+
315
+ export function addEmotionTag(sceneId: string, tag: string): boolean {
316
+ try {
317
+ const memory = loadMemory();
318
+ const scene = findSceneById(memory, sceneId);
319
+
320
+ if (!scene) {
321
+ console.error(`Scene not found: ${sceneId}`);
322
+ return false;
323
+ }
324
+
325
+ if (scene.emotionTags.includes(tag)) {
326
+ console.warn(`Emotion tag already exists: ${tag}`);
327
+ return true; // Not an error
328
+ }
329
+
330
+ scene.emotionTags.push(tag);
331
+
332
+ saveMemory(memory);
333
+ return true;
334
+ } catch (error) {
335
+ console.error('Failed to add emotion tag:', error);
336
+ return false;
337
+ }
338
+ }
339
+
340
+ export function removeEmotionTag(sceneId: string, tag: string): boolean {
341
+ try {
342
+ const memory = loadMemory();
343
+ const scene = findSceneById(memory, sceneId);
344
+
345
+ if (!scene) {
346
+ console.error(`Scene not found: ${sceneId}`);
347
+ return false;
348
+ }
349
+
350
+ const index = scene.emotionTags.indexOf(tag);
351
+
352
+ if (index === -1) {
353
+ console.warn(`Emotion tag not found: ${tag}`);
354
+ return true; // Not an error
355
+ }
356
+
357
+ scene.emotionTags.splice(index, 1);
358
+
359
+ saveMemory(memory);
360
+ return true;
361
+ } catch (error) {
362
+ console.error('Failed to remove emotion tag:', error);
363
+ return false;
364
+ }
365
+ }
366
+
367
+ export function getScenesByEmotion(emotionTag: string): Scene[] {
368
+ try {
369
+ const memory = loadMemory();
370
+ return memory.scenes
371
+ .filter(scene => scene.emotionTags.includes(emotionTag))
372
+ .sort((a, b) => a.order - b.order);
373
+ } catch (error) {
374
+ console.error('Failed to get scenes by emotion:', error);
375
+ return [];
376
+ }
377
+ }
378
+
379
+ export function getAllEmotionTags(): { tag: string; count: number }[] {
380
+ try {
381
+ const memory = loadMemory();
382
+ const tagCounts = new Map<string, number>();
383
+
384
+ memory.scenes.forEach(scene => {
385
+ scene.emotionTags.forEach(tag => {
386
+ tagCounts.set(tag, (tagCounts.get(tag) || 0) + 1);
387
+ });
388
+ });
389
+
390
+ return Array.from(tagCounts.entries())
391
+ .map(([tag, count]) => ({ tag, count }))
392
+ .sort((a, b) => b.count - a.count);
393
+ } catch (error) {
394
+ console.error('Failed to get all emotion tags:', error);
395
+ return [];
396
+ }
397
+ }
398
+
399
+ // === Scene Organization ===
400
+
401
+ export function reorderScenes(sceneIds: string[]): boolean {
402
+ try {
403
+ const memory = loadMemory();
404
+
405
+ if (sceneIds.length !== memory.scenes.length) {
406
+ console.error('Scene IDs length does not match scenes length');
407
+ return false;
408
+ }
409
+
410
+ // Validate all IDs exist
411
+ const sceneMap = new Map(memory.scenes.map(s => [s.id, s]));
412
+ for (const id of sceneIds) {
413
+ if (!sceneMap.has(id)) {
414
+ console.error(`Scene not found: ${id}`);
415
+ return false;
416
+ }
417
+ }
418
+
419
+ // Reorder scenes
420
+ memory.scenes = sceneIds.map(id => sceneMap.get(id)!);
421
+ memory.scenes.forEach((scene, idx) => {
422
+ scene.order = idx;
423
+ });
424
+
425
+ saveMemory(memory);
426
+ return true;
427
+ } catch (error) {
428
+ console.error('Failed to reorder scenes:', error);
429
+ return false;
430
+ }
431
+ }
432
+
433
+ export function getSceneFlow(): SceneFlowEntry[] {
434
+ try {
435
+ const memory = loadMemory();
436
+
437
+ return memory.scenes
438
+ .sort((a, b) => a.order - b.order)
439
+ .map(scene => ({
440
+ order: scene.order + 1, // 1-indexed for display
441
+ title: scene.title,
442
+ chapter: scene.chapter,
443
+ primaryEmotion: scene.emotionTags[0] || "감정 미설정",
444
+ characters: scene.characters,
445
+ cutCount: scene.cuts.length
446
+ }));
447
+ } catch (error) {
448
+ console.error('Failed to get scene flow:', error);
449
+ return [];
450
+ }
451
+ }
452
+
453
+ // === Scene Profile Generation ===
454
+
455
+ export function generateSceneProfile(sceneId: string): string {
456
+ try {
457
+ const scene = getScene(sceneId);
458
+
459
+ if (!scene) {
460
+ return `# 오류: 장면을 찾을 수 없습니다 (${sceneId})`;
461
+ }
462
+
463
+ let profile = `# 장면: ${scene.title}\n\n`;
464
+
465
+ if (scene.chapter) {
466
+ profile += `**챕터**: ${scene.chapter}\n`;
467
+ }
468
+
469
+ if (scene.characters.length > 0) {
470
+ profile += `**등장인물**: ${scene.characters.join(', ')}\n`;
471
+ }
472
+
473
+ if (scene.emotionTags.length > 0) {
474
+ profile += `**감정 태그**: ${scene.emotionTags.join(', ')}\n`;
475
+ }
476
+
477
+ if (scene.narrationTone) {
478
+ profile += `**내레이션 톤**: ${scene.narrationTone}\n`;
479
+ }
480
+
481
+ if (scene.notes) {
482
+ profile += `\n**노트**: ${scene.notes}\n`;
483
+ }
484
+
485
+ profile += `\n## 컷 구성\n\n`;
486
+
487
+ if (scene.cuts.length === 0) {
488
+ profile += `*(컷이 아직 추가되지 않았습니다)*\n`;
489
+ } else {
490
+ scene.cuts.forEach(cut => {
491
+ const typeLabel = CUT_TYPE_LABELS[cut.type] || cut.type;
492
+ const charPart = cut.character ? `/${cut.character}` : '';
493
+ const emotionPart = cut.emotionTag ? ` (감정: ${cut.emotionTag})` : '';
494
+
495
+ profile += `${cut.order + 1}. [${typeLabel}${charPart}] ${cut.content}${emotionPart}\n`;
496
+ });
497
+ }
498
+
499
+ return profile;
500
+ } catch (error) {
501
+ console.error('Failed to generate scene profile:', error);
502
+ return `# 오류: 장면 프로필 생성 실패`;
503
+ }
504
+ }
505
+
506
+ export function generateSceneList(): string {
507
+ try {
508
+ const memory = loadMemory();
509
+
510
+ let list = `## 전체 장면 목록\n\n`;
511
+ list += `| # | 제목 | 챕터 | 감정 | 등장인물 | 컷 수 |\n`;
512
+ list += `|---|------|------|------|---------|-------|\n`;
513
+
514
+ if (memory.scenes.length === 0) {
515
+ list += `| - | *(장면이 아직 추가되지 않았습니다)* | - | - | - | - |\n`;
516
+ return list;
517
+ }
518
+
519
+ const sortedScenes = [...memory.scenes].sort((a, b) => a.order - b.order);
520
+
521
+ sortedScenes.forEach(scene => {
522
+ const sceneNum = scene.order + 1;
523
+ const title = scene.title;
524
+ const chapter = scene.chapter || '-';
525
+ const emotions = scene.emotionTags.length > 0
526
+ ? scene.emotionTags.join(', ')
527
+ : '-';
528
+ const characters = scene.characters.length > 0
529
+ ? scene.characters.join(', ')
530
+ : '-';
531
+ const cutCount = scene.cuts.length;
532
+
533
+ list += `| ${sceneNum} | ${title} | ${chapter} | ${emotions} | ${characters} | ${cutCount} |\n`;
534
+ });
535
+
536
+ return list;
537
+ } catch (error) {
538
+ console.error('Failed to generate scene list:', error);
539
+ return `## 오류: 장면 목록 생성 실패`;
540
+ }
541
+ }
542
+
543
+ // Export emotion vocabulary for external use
544
+ export { EMOTION_VOCABULARY, CUT_TYPE_LABELS };