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,338 @@
1
+ /**
2
+ * Character Tracking Module
3
+ * 캐릭터 추적 및 검증 시스템
4
+ */
5
+
6
+ import { loadMemory, saveMemory, generateId, now } from './memory-manager';
7
+ import type { Character, EmotionPoint, SpeechLevel, WriterMemory } from './memory-manager';
8
+
9
+ // === Helper to find character ===
10
+ function findCharacter(memory: WriterMemory, nameOrAlias: string): Character | null {
11
+ // Direct lookup
12
+ if (memory.characters[nameOrAlias]) {
13
+ return memory.characters[nameOrAlias];
14
+ }
15
+ // Alias lookup
16
+ for (const char of Object.values(memory.characters)) {
17
+ if (char.aliases?.includes(nameOrAlias)) {
18
+ return char;
19
+ }
20
+ }
21
+ return null;
22
+ }
23
+
24
+ // === Character CRUD ===
25
+
26
+ export function addCharacter(name: string, options?: {
27
+ arc?: string;
28
+ tone?: string;
29
+ speechLevel?: SpeechLevel;
30
+ attitude?: string;
31
+ keywords?: string[];
32
+ notes?: string;
33
+ }): Character | null {
34
+ const memory = loadMemory();
35
+ if (!memory) return null;
36
+
37
+ if (memory.characters[name]) {
38
+ return null; // Already exists
39
+ }
40
+
41
+ const character: Character = {
42
+ id: generateId('char'),
43
+ name,
44
+ aliases: [],
45
+ arc: options?.arc || '',
46
+ tone: options?.tone || '',
47
+ speechLevel: options?.speechLevel || '반말',
48
+ attitude: options?.attitude || '',
49
+ keywords: options?.keywords || [],
50
+ timeline: [],
51
+ notes: options?.notes || '',
52
+ created: now(),
53
+ updated: now()
54
+ };
55
+
56
+ memory.characters[name] = character;
57
+ saveMemory(memory);
58
+ return character;
59
+ }
60
+
61
+ export function updateCharacter(name: string, updates: Partial<Character>): Character | null {
62
+ const memory = loadMemory();
63
+ if (!memory) return null;
64
+
65
+ const character = findCharacter(memory, name);
66
+ if (!character) return null;
67
+
68
+ // Apply updates (excluding id, name, created)
69
+ const { id, name: _, created, ...allowedUpdates } = updates as any;
70
+ Object.assign(character, allowedUpdates, { updated: now() });
71
+
72
+ saveMemory(memory);
73
+ return character;
74
+ }
75
+
76
+ export function removeCharacter(name: string): boolean {
77
+ const memory = loadMemory();
78
+ if (!memory) return false;
79
+
80
+ const character = findCharacter(memory, name);
81
+ if (!character) return false;
82
+
83
+ delete memory.characters[character.name];
84
+ saveMemory(memory);
85
+ return true;
86
+ }
87
+
88
+ export interface CharacterSummary {
89
+ id: string;
90
+ name: string;
91
+ arc: string;
92
+ tone: string;
93
+ emotionCount: number;
94
+ lastUpdated: string;
95
+ }
96
+
97
+ export function listCharacters(): CharacterSummary[] {
98
+ const memory = loadMemory();
99
+ if (!memory) return [];
100
+
101
+ return Object.values(memory.characters).map(c => ({
102
+ id: c.id,
103
+ name: c.name,
104
+ arc: c.arc,
105
+ tone: c.tone,
106
+ emotionCount: c.timeline?.length || 0,
107
+ lastUpdated: c.updated
108
+ }));
109
+ }
110
+
111
+ // === Alias Management ===
112
+
113
+ export function addAlias(characterName: string, alias: string): boolean {
114
+ const memory = loadMemory();
115
+ if (!memory) return false;
116
+
117
+ const character = findCharacter(memory, characterName);
118
+ if (!character) return false;
119
+
120
+ if (!character.aliases.includes(alias)) {
121
+ character.aliases.push(alias);
122
+ character.updated = now();
123
+ saveMemory(memory);
124
+ }
125
+ return true;
126
+ }
127
+
128
+ export function removeAlias(characterName: string, alias: string): boolean {
129
+ const memory = loadMemory();
130
+ if (!memory) return false;
131
+
132
+ const character = findCharacter(memory, characterName);
133
+ if (!character) return false;
134
+
135
+ const idx = character.aliases.indexOf(alias);
136
+ if (idx !== -1) {
137
+ character.aliases.splice(idx, 1);
138
+ character.updated = now();
139
+ saveMemory(memory);
140
+ return true;
141
+ }
142
+ return false;
143
+ }
144
+
145
+ export function resolveCharacter(nameOrAlias: string): Character | null {
146
+ const memory = loadMemory();
147
+ if (!memory) return null;
148
+ return findCharacter(memory, nameOrAlias);
149
+ }
150
+
151
+ // === Emotion Timeline ===
152
+
153
+ export function addEmotionPoint(characterName: string, emotion: string, trigger: string, options?: {
154
+ sceneId?: string;
155
+ intensity?: 1 | 2 | 3 | 4 | 5;
156
+ }): boolean {
157
+ const memory = loadMemory();
158
+ if (!memory) return false;
159
+
160
+ const character = findCharacter(memory, characterName);
161
+ if (!character) return false;
162
+
163
+ const point: EmotionPoint = {
164
+ timestamp: now(),
165
+ sceneId: options?.sceneId,
166
+ emotion,
167
+ trigger,
168
+ intensity: options?.intensity || 3
169
+ };
170
+
171
+ character.timeline.push(point);
172
+ character.updated = now();
173
+ saveMemory(memory);
174
+ return true;
175
+ }
176
+
177
+ export function getEmotionTimeline(characterName: string): EmotionPoint[] {
178
+ const character = resolveCharacter(characterName);
179
+ return character?.timeline || [];
180
+ }
181
+
182
+ export function getLatestEmotion(characterName: string): EmotionPoint | null {
183
+ const timeline = getEmotionTimeline(characterName);
184
+ return timeline.length > 0 ? timeline[timeline.length - 1] : null;
185
+ }
186
+
187
+ export function getEmotionArc(characterName: string): string {
188
+ const timeline = getEmotionTimeline(characterName);
189
+ if (timeline.length === 0) return '';
190
+ return timeline.map(e => e.emotion).join(' → ');
191
+ }
192
+
193
+ // === Dialogue Validation ===
194
+
195
+ export interface ValidationResult {
196
+ status: 'PASS' | 'WARN' | 'FAIL';
197
+ character: string;
198
+ checks: {
199
+ toneMatch: { passed: boolean; detail: string };
200
+ speechLevelMatch: { passed: boolean; detail: string };
201
+ keywordConsistency: { passed: boolean; detail: string };
202
+ };
203
+ suggestion: string;
204
+ }
205
+
206
+ export function detectSpeechLevel(text: string): SpeechLevel {
207
+ // 존댓말 patterns
208
+ const formal = /요$|습니다$|세요$|십시오$/;
209
+ // 반말 patterns
210
+ const informal = /야$|아$|어$|지$|는데$/;
211
+ // 해체 patterns
212
+ const casual = /임$|음$|ㅋ|ㅎ$/;
213
+
214
+ const sentences = text.split(/[.!?]/).filter(s => s.trim());
215
+ let formalCnt = 0, informalCnt = 0, casualCnt = 0;
216
+
217
+ for (const s of sentences) {
218
+ const t = s.trim();
219
+ if (formal.test(t)) formalCnt++;
220
+ if (informal.test(t)) informalCnt++;
221
+ if (casual.test(t)) casualCnt++;
222
+ }
223
+
224
+ if (formalCnt > informalCnt && formalCnt > casualCnt) return '존댓말';
225
+ if (casualCnt > informalCnt) return '해체';
226
+ if (informalCnt > 0) return '반말';
227
+ return '혼합';
228
+ }
229
+
230
+ export function validateDialogue(characterName: string, dialogue: string): ValidationResult {
231
+ const character = resolveCharacter(characterName);
232
+
233
+ if (!character) {
234
+ return {
235
+ status: 'FAIL',
236
+ character: characterName,
237
+ checks: {
238
+ toneMatch: { passed: false, detail: '캐릭터를 찾을 수 없음' },
239
+ speechLevelMatch: { passed: false, detail: '캐릭터를 찾을 수 없음' },
240
+ keywordConsistency: { passed: false, detail: '캐릭터를 찾을 수 없음' }
241
+ },
242
+ suggestion: `"${characterName}" 캐릭터가 메모리에 없습니다.`
243
+ };
244
+ }
245
+
246
+ // Check tone
247
+ const exclamations = (dialogue.match(/!/g) || []).length;
248
+ const toneCheck = { passed: true, detail: '톤 일치' };
249
+ if (character.tone.includes('담백') && exclamations > 1) {
250
+ toneCheck.passed = false;
251
+ toneCheck.detail = `담백한 톤에 느낌표 ${exclamations}개는 과함`;
252
+ }
253
+
254
+ // Check speech level
255
+ const detected = detectSpeechLevel(dialogue);
256
+ const speechCheck = {
257
+ passed: detected === character.speechLevel || detected === '혼합',
258
+ detail: detected === character.speechLevel ? '말투 일치' : `기대: ${character.speechLevel}, 감지: ${detected}`
259
+ };
260
+
261
+ // Check keywords
262
+ const keywordCheck = { passed: true, detail: '키워드 없음 (검사 생략)' };
263
+ if (character.keywords.length > 0) {
264
+ const hasKeyword = character.keywords.some(kw => dialogue.includes(kw));
265
+ keywordCheck.passed = hasKeyword;
266
+ keywordCheck.detail = hasKeyword ? '특징 키워드 포함' : `키워드 미포함: ${character.keywords.slice(0, 2).join(', ')}`;
267
+ }
268
+
269
+ const failCount = [toneCheck, speechCheck, keywordCheck].filter(c => !c.passed).length;
270
+ const status: 'PASS' | 'WARN' | 'FAIL' = failCount === 0 ? 'PASS' : failCount >= 2 ? 'FAIL' : 'WARN';
271
+
272
+ const suggestions: string[] = [];
273
+ if (!toneCheck.passed) suggestions.push(`톤 조정 필요`);
274
+ if (!speechCheck.passed) suggestions.push(`${character.speechLevel}로 말투 수정`);
275
+ if (!keywordCheck.passed) suggestions.push(`특징 키워드 사용 고려`);
276
+
277
+ return {
278
+ status,
279
+ character: character.name,
280
+ checks: {
281
+ toneMatch: toneCheck,
282
+ speechLevelMatch: speechCheck,
283
+ keywordConsistency: keywordCheck
284
+ },
285
+ suggestion: suggestions.length > 0 ? suggestions.join('. ') : '대사가 캐릭터와 잘 어울립니다.'
286
+ };
287
+ }
288
+
289
+ // === Profile Generation ===
290
+
291
+ export function generateCharacterProfile(characterName: string): string {
292
+ const character = resolveCharacter(characterName);
293
+
294
+ if (!character) {
295
+ return `# "${characterName}" 캐릭터를 찾을 수 없습니다`;
296
+ }
297
+
298
+ const latest = getLatestEmotion(characterName);
299
+ const arc = getEmotionArc(characterName);
300
+
301
+ let profile = `# ${character.name}\n\n`;
302
+
303
+ if (character.aliases.length > 0) {
304
+ profile += `**별칭**: ${character.aliases.join(', ')}\n\n`;
305
+ }
306
+
307
+ if (character.arc) {
308
+ profile += `**캐릭터 아크**: ${character.arc}\n\n`;
309
+ }
310
+
311
+ if (character.tone) {
312
+ profile += `**대사 톤**: ${character.tone}\n\n`;
313
+ }
314
+
315
+ profile += `**말투**: ${character.speechLevel}\n\n`;
316
+
317
+ if (character.keywords.length > 0) {
318
+ profile += `**핵심 키워드**: ${character.keywords.join(', ')}\n\n`;
319
+ }
320
+
321
+ if (latest) {
322
+ profile += `**현재 감정**: ${latest.emotion} (강도: ${latest.intensity}/5)\n\n`;
323
+ }
324
+
325
+ if (character.attitude) {
326
+ profile += `**태도**: ${character.attitude}\n\n`;
327
+ }
328
+
329
+ if (arc) {
330
+ profile += `**감정 궤도**: ${arc}\n\n`;
331
+ }
332
+
333
+ if (character.notes) {
334
+ profile += `**메모**: ${character.notes}\n\n`;
335
+ }
336
+
337
+ return profile.trim();
338
+ }