oh-my-claude-sisyphus 3.6.2 → 3.7.0

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 (124) hide show
  1. package/README.md +16 -0
  2. package/commands/doctor.md +1 -1
  3. package/dist/__tests__/delegation-enforcement-levels.test.d.ts +9 -0
  4. package/dist/__tests__/delegation-enforcement-levels.test.d.ts.map +1 -0
  5. package/dist/__tests__/delegation-enforcement-levels.test.js +550 -0
  6. package/dist/__tests__/delegation-enforcement-levels.test.js.map +1 -0
  7. package/dist/__tests__/installer.test.js +1 -1
  8. package/dist/__tests__/rate-limit-wait/daemon.test.d.ts +5 -0
  9. package/dist/__tests__/rate-limit-wait/daemon.test.d.ts.map +1 -0
  10. package/dist/__tests__/rate-limit-wait/daemon.test.js +313 -0
  11. package/dist/__tests__/rate-limit-wait/daemon.test.js.map +1 -0
  12. package/dist/__tests__/rate-limit-wait/integration.test.d.ts +8 -0
  13. package/dist/__tests__/rate-limit-wait/integration.test.d.ts.map +1 -0
  14. package/dist/__tests__/rate-limit-wait/integration.test.js +329 -0
  15. package/dist/__tests__/rate-limit-wait/integration.test.js.map +1 -0
  16. package/dist/__tests__/rate-limit-wait/rate-limit-monitor.test.d.ts +5 -0
  17. package/dist/__tests__/rate-limit-wait/rate-limit-monitor.test.d.ts.map +1 -0
  18. package/dist/__tests__/rate-limit-wait/rate-limit-monitor.test.js +167 -0
  19. package/dist/__tests__/rate-limit-wait/rate-limit-monitor.test.js.map +1 -0
  20. package/dist/__tests__/rate-limit-wait/tmux-detector.test.d.ts +5 -0
  21. package/dist/__tests__/rate-limit-wait/tmux-detector.test.d.ts.map +1 -0
  22. package/dist/__tests__/rate-limit-wait/tmux-detector.test.js +295 -0
  23. package/dist/__tests__/rate-limit-wait/tmux-detector.test.js.map +1 -0
  24. package/dist/__tests__/skills.test.js +6 -5
  25. package/dist/__tests__/skills.test.js.map +1 -1
  26. package/dist/cli/commands/wait.d.ts +52 -0
  27. package/dist/cli/commands/wait.d.ts.map +1 -0
  28. package/dist/cli/commands/wait.js +229 -0
  29. package/dist/cli/commands/wait.js.map +1 -0
  30. package/dist/cli/index.js +54 -0
  31. package/dist/cli/index.js.map +1 -1
  32. package/dist/features/rate-limit-wait/daemon.d.ts +52 -0
  33. package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -0
  34. package/dist/features/rate-limit-wait/daemon.js +545 -0
  35. package/dist/features/rate-limit-wait/daemon.js.map +1 -0
  36. package/dist/features/rate-limit-wait/index.d.ts +16 -0
  37. package/dist/features/rate-limit-wait/index.d.ts.map +1 -0
  38. package/dist/features/rate-limit-wait/index.js +18 -0
  39. package/dist/features/rate-limit-wait/index.js.map +1 -0
  40. package/dist/features/rate-limit-wait/rate-limit-monitor.d.ts +22 -0
  41. package/dist/features/rate-limit-wait/rate-limit-monitor.d.ts.map +1 -0
  42. package/dist/features/rate-limit-wait/rate-limit-monitor.js +99 -0
  43. package/dist/features/rate-limit-wait/rate-limit-monitor.js.map +1 -0
  44. package/dist/features/rate-limit-wait/tmux-detector.d.ts +59 -0
  45. package/dist/features/rate-limit-wait/tmux-detector.d.ts.map +1 -0
  46. package/dist/features/rate-limit-wait/tmux-detector.js +304 -0
  47. package/dist/features/rate-limit-wait/tmux-detector.js.map +1 -0
  48. package/dist/features/rate-limit-wait/types.d.ts +121 -0
  49. package/dist/features/rate-limit-wait/types.d.ts.map +1 -0
  50. package/dist/features/rate-limit-wait/types.js +8 -0
  51. package/dist/features/rate-limit-wait/types.js.map +1 -0
  52. package/dist/hooks/bridge.d.ts +1 -1
  53. package/dist/hooks/bridge.d.ts.map +1 -1
  54. package/dist/hooks/bridge.js +50 -4
  55. package/dist/hooks/bridge.js.map +1 -1
  56. package/dist/hooks/index.d.ts +5 -0
  57. package/dist/hooks/index.d.ts.map +1 -1
  58. package/dist/hooks/index.js +15 -0
  59. package/dist/hooks/index.js.map +1 -1
  60. package/dist/hooks/omc-orchestrator/audit.d.ts +2 -1
  61. package/dist/hooks/omc-orchestrator/audit.d.ts.map +1 -1
  62. package/dist/hooks/omc-orchestrator/audit.js.map +1 -1
  63. package/dist/hooks/omc-orchestrator/index.d.ts +7 -0
  64. package/dist/hooks/omc-orchestrator/index.d.ts.map +1 -1
  65. package/dist/hooks/omc-orchestrator/index.js +95 -8
  66. package/dist/hooks/omc-orchestrator/index.js.map +1 -1
  67. package/dist/hooks/permission-handler/__tests__/index.test.d.ts +2 -0
  68. package/dist/hooks/permission-handler/__tests__/index.test.d.ts.map +1 -0
  69. package/dist/hooks/permission-handler/__tests__/index.test.js +244 -0
  70. package/dist/hooks/permission-handler/__tests__/index.test.js.map +1 -0
  71. package/dist/hooks/permission-handler/index.d.ts +42 -0
  72. package/dist/hooks/permission-handler/index.d.ts.map +1 -0
  73. package/dist/hooks/permission-handler/index.js +111 -0
  74. package/dist/hooks/permission-handler/index.js.map +1 -0
  75. package/dist/hooks/pre-compact/index.d.ts +82 -0
  76. package/dist/hooks/pre-compact/index.d.ts.map +1 -0
  77. package/dist/hooks/pre-compact/index.js +265 -0
  78. package/dist/hooks/pre-compact/index.js.map +1 -0
  79. package/dist/hooks/session-end/index.d.ts +50 -0
  80. package/dist/hooks/session-end/index.d.ts.map +1 -0
  81. package/dist/hooks/session-end/index.js +207 -0
  82. package/dist/hooks/session-end/index.js.map +1 -0
  83. package/dist/hooks/setup/index.d.ts +66 -0
  84. package/dist/hooks/setup/index.d.ts.map +1 -0
  85. package/dist/hooks/setup/index.js +299 -0
  86. package/dist/hooks/setup/index.js.map +1 -0
  87. package/dist/hooks/setup/types.d.ts +25 -0
  88. package/dist/hooks/setup/types.d.ts.map +1 -0
  89. package/dist/hooks/setup/types.js +5 -0
  90. package/dist/hooks/setup/types.js.map +1 -0
  91. package/dist/hooks/subagent-tracker/index.d.ts +68 -29
  92. package/dist/hooks/subagent-tracker/index.d.ts.map +1 -1
  93. package/dist/hooks/subagent-tracker/index.js +301 -131
  94. package/dist/hooks/subagent-tracker/index.js.map +1 -1
  95. package/dist/installer/index.d.ts +1 -1
  96. package/dist/installer/index.js +1 -1
  97. package/docs/MIGRATION.md +2 -2
  98. package/hooks/hooks.json +83 -1
  99. package/package.json +3 -1
  100. package/scripts/permission-handler.mjs +23 -0
  101. package/scripts/pre-compact.mjs +23 -0
  102. package/scripts/session-end.mjs +23 -0
  103. package/scripts/setup-init.mjs +23 -0
  104. package/scripts/setup-maintenance.mjs +23 -0
  105. package/scripts/subagent-tracker.mjs +35 -0
  106. package/skills/doctor/SKILL.md +1 -1
  107. package/templates/hooks/keyword-detector.mjs +198 -0
  108. package/templates/hooks/keyword-detector.sh +102 -0
  109. package/templates/hooks/persistent-mode.mjs +249 -0
  110. package/templates/hooks/persistent-mode.sh +187 -0
  111. package/templates/hooks/post-tool-use.mjs +133 -0
  112. package/templates/hooks/post-tool-use.sh +90 -0
  113. package/templates/hooks/pre-tool-use.mjs +145 -0
  114. package/templates/hooks/pre-tool-use.sh +113 -0
  115. package/templates/hooks/session-start.mjs +100 -0
  116. package/templates/hooks/session-start.sh +62 -0
  117. package/templates/hooks/stop-continuation.mjs +80 -0
  118. package/templates/hooks/stop-continuation.sh +40 -0
  119. package/templates/rules/README.md +40 -0
  120. package/templates/rules/coding-style.md +74 -0
  121. package/templates/rules/git-workflow.md +41 -0
  122. package/templates/rules/performance.md +40 -0
  123. package/templates/rules/security.md +41 -0
  124. package/templates/rules/testing.md +42 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/rate-limit-wait/integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for rate-limit-monitor.ts
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=rate-limit-monitor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-monitor.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/rate-limit-wait/rate-limit-monitor.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Tests for rate-limit-monitor.ts
3
+ */
4
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
5
+ import { checkRateLimitStatus, formatTimeUntilReset, formatRateLimitStatus, } from '../../features/rate-limit-wait/rate-limit-monitor.js';
6
+ // Mock the usage-api module
7
+ vi.mock('../../hud/usage-api.js', () => ({
8
+ getUsage: vi.fn(),
9
+ }));
10
+ import { getUsage } from '../../hud/usage-api.js';
11
+ describe('rate-limit-monitor', () => {
12
+ beforeEach(() => {
13
+ vi.clearAllMocks();
14
+ });
15
+ describe('checkRateLimitStatus', () => {
16
+ it('should return null when getUsage returns null', async () => {
17
+ vi.mocked(getUsage).mockResolvedValue(null);
18
+ const result = await checkRateLimitStatus();
19
+ expect(result).toBeNull();
20
+ });
21
+ it('should detect 5-hour rate limit', async () => {
22
+ const resetTime = new Date(Date.now() + 3600000); // 1 hour from now
23
+ vi.mocked(getUsage).mockResolvedValue({
24
+ fiveHourPercent: 100,
25
+ weeklyPercent: 50,
26
+ fiveHourResetsAt: resetTime,
27
+ weeklyResetsAt: null,
28
+ });
29
+ const result = await checkRateLimitStatus();
30
+ expect(result).not.toBeNull();
31
+ expect(result.fiveHourLimited).toBe(true);
32
+ expect(result.weeklyLimited).toBe(false);
33
+ expect(result.isLimited).toBe(true);
34
+ expect(result.nextResetAt).toEqual(resetTime);
35
+ });
36
+ it('should detect weekly rate limit', async () => {
37
+ const resetTime = new Date(Date.now() + 86400000); // 1 day from now
38
+ vi.mocked(getUsage).mockResolvedValue({
39
+ fiveHourPercent: 50,
40
+ weeklyPercent: 100,
41
+ fiveHourResetsAt: null,
42
+ weeklyResetsAt: resetTime,
43
+ });
44
+ const result = await checkRateLimitStatus();
45
+ expect(result).not.toBeNull();
46
+ expect(result.fiveHourLimited).toBe(false);
47
+ expect(result.weeklyLimited).toBe(true);
48
+ expect(result.isLimited).toBe(true);
49
+ expect(result.nextResetAt).toEqual(resetTime);
50
+ });
51
+ it('should detect both limits and return earliest reset', async () => {
52
+ const fiveHourReset = new Date(Date.now() + 3600000); // 1 hour
53
+ const weeklyReset = new Date(Date.now() + 86400000); // 1 day
54
+ vi.mocked(getUsage).mockResolvedValue({
55
+ fiveHourPercent: 100,
56
+ weeklyPercent: 100,
57
+ fiveHourResetsAt: fiveHourReset,
58
+ weeklyResetsAt: weeklyReset,
59
+ });
60
+ const result = await checkRateLimitStatus();
61
+ expect(result).not.toBeNull();
62
+ expect(result.fiveHourLimited).toBe(true);
63
+ expect(result.weeklyLimited).toBe(true);
64
+ expect(result.isLimited).toBe(true);
65
+ expect(result.nextResetAt).toEqual(fiveHourReset); // Earlier reset
66
+ });
67
+ it('should return not limited when under thresholds', async () => {
68
+ vi.mocked(getUsage).mockResolvedValue({
69
+ fiveHourPercent: 50,
70
+ weeklyPercent: 75,
71
+ fiveHourResetsAt: null,
72
+ weeklyResetsAt: null,
73
+ });
74
+ const result = await checkRateLimitStatus();
75
+ expect(result).not.toBeNull();
76
+ expect(result.fiveHourLimited).toBe(false);
77
+ expect(result.weeklyLimited).toBe(false);
78
+ expect(result.isLimited).toBe(false);
79
+ expect(result.nextResetAt).toBeNull();
80
+ expect(result.timeUntilResetMs).toBeNull();
81
+ });
82
+ it('should handle API errors gracefully', async () => {
83
+ vi.mocked(getUsage).mockRejectedValue(new Error('API error'));
84
+ const result = await checkRateLimitStatus();
85
+ expect(result).toBeNull();
86
+ });
87
+ });
88
+ describe('formatTimeUntilReset', () => {
89
+ it('should format hours and minutes', () => {
90
+ const twoHours = 2 * 60 * 60 * 1000 + 30 * 60 * 1000; // 2h 30m
91
+ expect(formatTimeUntilReset(twoHours)).toBe('2h 30m');
92
+ });
93
+ it('should format minutes and seconds', () => {
94
+ const fiveMinutes = 5 * 60 * 1000 + 45 * 1000; // 5m 45s
95
+ expect(formatTimeUntilReset(fiveMinutes)).toBe('5m 45s');
96
+ });
97
+ it('should format seconds only', () => {
98
+ const thirtySeconds = 30 * 1000;
99
+ expect(formatTimeUntilReset(thirtySeconds)).toBe('30s');
100
+ });
101
+ it('should return "now" for zero or negative', () => {
102
+ expect(formatTimeUntilReset(0)).toBe('now');
103
+ expect(formatTimeUntilReset(-1000)).toBe('now');
104
+ });
105
+ });
106
+ describe('formatRateLimitStatus', () => {
107
+ it('should format not limited status', () => {
108
+ const status = {
109
+ fiveHourLimited: false,
110
+ weeklyLimited: false,
111
+ isLimited: false,
112
+ fiveHourResetsAt: null,
113
+ weeklyResetsAt: null,
114
+ nextResetAt: null,
115
+ timeUntilResetMs: null,
116
+ lastCheckedAt: new Date(),
117
+ };
118
+ expect(formatRateLimitStatus(status)).toBe('Not rate limited');
119
+ });
120
+ it('should format 5-hour limit', () => {
121
+ const status = {
122
+ fiveHourLimited: true,
123
+ weeklyLimited: false,
124
+ isLimited: true,
125
+ fiveHourResetsAt: new Date(),
126
+ weeklyResetsAt: null,
127
+ nextResetAt: new Date(),
128
+ timeUntilResetMs: 3600000, // 1 hour
129
+ lastCheckedAt: new Date(),
130
+ };
131
+ const result = formatRateLimitStatus(status);
132
+ expect(result).toContain('5-hour limit reached');
133
+ expect(result).toContain('1h 0m');
134
+ });
135
+ it('should format weekly limit', () => {
136
+ const status = {
137
+ fiveHourLimited: false,
138
+ weeklyLimited: true,
139
+ isLimited: true,
140
+ fiveHourResetsAt: null,
141
+ weeklyResetsAt: new Date(),
142
+ nextResetAt: new Date(),
143
+ timeUntilResetMs: 86400000, // 1 day
144
+ lastCheckedAt: new Date(),
145
+ };
146
+ const result = formatRateLimitStatus(status);
147
+ expect(result).toContain('Weekly limit reached');
148
+ expect(result).toContain('24h 0m');
149
+ });
150
+ it('should format both limits', () => {
151
+ const status = {
152
+ fiveHourLimited: true,
153
+ weeklyLimited: true,
154
+ isLimited: true,
155
+ fiveHourResetsAt: new Date(),
156
+ weeklyResetsAt: new Date(),
157
+ nextResetAt: new Date(),
158
+ timeUntilResetMs: 3600000,
159
+ lastCheckedAt: new Date(),
160
+ };
161
+ const result = formatRateLimitStatus(status);
162
+ expect(result).toContain('5-hour limit reached');
163
+ expect(result).toContain('Weekly limit reached');
164
+ });
165
+ });
166
+ });
167
+ //# sourceMappingURL=rate-limit-monitor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-monitor.test.js","sourceRoot":"","sources":["../../../src/__tests__/rate-limit-wait/rate-limit-monitor.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,sDAAsD,CAAC;AAG9D,4BAA4B;AAC5B,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;CAClB,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,kBAAkB;YACpE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC;gBACpC,eAAe,EAAE,GAAG;gBACpB,aAAa,EAAE,EAAE;gBACjB,gBAAgB,EAAE,SAAS;gBAC3B,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,CAAC,MAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB;YACpE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC;gBACpC,eAAe,EAAE,EAAE;gBACnB,aAAa,EAAE,GAAG;gBAClB,gBAAgB,EAAE,IAAI;gBACtB,cAAc,EAAE,SAAS;aAC1B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,MAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,CAAC,MAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS;YAC/D,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ;YAC7D,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC;gBACpC,eAAe,EAAE,GAAG;gBACpB,aAAa,EAAE,GAAG;gBAClB,gBAAgB,EAAE,aAAa;gBAC/B,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,MAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,CAAC,MAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC;gBACpC,eAAe,EAAE,EAAE;gBACnB,aAAa,EAAE,EAAE;gBACjB,gBAAgB,EAAE,IAAI;gBACtB,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,CAAC,MAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,MAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YAE9D,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;YAC/D,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;YACxD,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC;YAChC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,MAAM,GAAoB;gBAC9B,eAAe,EAAE,KAAK;gBACtB,aAAa,EAAE,KAAK;gBACpB,SAAS,EAAE,KAAK;gBAChB,gBAAgB,EAAE,IAAI;gBACtB,cAAc,EAAE,IAAI;gBACpB,WAAW,EAAE,IAAI;gBACjB,gBAAgB,EAAE,IAAI;gBACtB,aAAa,EAAE,IAAI,IAAI,EAAE;aAC1B,CAAC;YAEF,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAAoB;gBAC9B,eAAe,EAAE,IAAI;gBACrB,aAAa,EAAE,KAAK;gBACpB,SAAS,EAAE,IAAI;gBACf,gBAAgB,EAAE,IAAI,IAAI,EAAE;gBAC5B,cAAc,EAAE,IAAI;gBACpB,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,gBAAgB,EAAE,OAAO,EAAE,SAAS;gBACpC,aAAa,EAAE,IAAI,IAAI,EAAE;aAC1B,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAAoB;gBAC9B,eAAe,EAAE,KAAK;gBACtB,aAAa,EAAE,IAAI;gBACnB,SAAS,EAAE,IAAI;gBACf,gBAAgB,EAAE,IAAI;gBACtB,cAAc,EAAE,IAAI,IAAI,EAAE;gBAC1B,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,gBAAgB,EAAE,QAAQ,EAAE,QAAQ;gBACpC,aAAa,EAAE,IAAI,IAAI,EAAE;aAC1B,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,MAAM,GAAoB;gBAC9B,eAAe,EAAE,IAAI;gBACrB,aAAa,EAAE,IAAI;gBACnB,SAAS,EAAE,IAAI;gBACf,gBAAgB,EAAE,IAAI,IAAI,EAAE;gBAC5B,cAAc,EAAE,IAAI,IAAI,EAAE;gBAC1B,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,gBAAgB,EAAE,OAAO;gBACzB,aAAa,EAAE,IAAI,IAAI,EAAE;aAC1B,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for tmux-detector.ts
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=tmux-detector.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmux-detector.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/rate-limit-wait/tmux-detector.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Tests for tmux-detector.ts
3
+ */
4
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
5
+ import { analyzePaneContent, isTmuxAvailable, listTmuxPanes, capturePaneContent, formatBlockedPanesSummary, } from '../../features/rate-limit-wait/tmux-detector.js';
6
+ // Mock child_process
7
+ vi.mock('child_process', () => ({
8
+ execSync: vi.fn(),
9
+ spawnSync: vi.fn(),
10
+ }));
11
+ import { execSync, spawnSync } from 'child_process';
12
+ describe('tmux-detector', () => {
13
+ beforeEach(() => {
14
+ vi.clearAllMocks();
15
+ });
16
+ describe('analyzePaneContent', () => {
17
+ it('should detect rate limit messages with Claude Code context', () => {
18
+ const content = `
19
+ Claude Code v1.2.3
20
+ You've reached your rate limit. Please wait for the limit to reset.
21
+ [1] Continue when ready
22
+ [2] Exit
23
+ `;
24
+ const result = analyzePaneContent(content);
25
+ expect(result.hasClaudeCode).toBe(true);
26
+ expect(result.hasRateLimitMessage).toBe(true);
27
+ expect(result.isBlocked).toBe(true);
28
+ expect(result.confidence).toBeGreaterThan(0.5);
29
+ });
30
+ it('should detect 5-hour rate limit', () => {
31
+ const content = `
32
+ Claude Code assistant
33
+ 5-hour usage limit reached
34
+ [1] Wait for reset
35
+ `;
36
+ const result = analyzePaneContent(content);
37
+ expect(result.hasRateLimitMessage).toBe(true);
38
+ expect(result.rateLimitType).toBe('five_hour');
39
+ });
40
+ it('should detect weekly rate limit', () => {
41
+ const content = `
42
+ Claude Code
43
+ Weekly usage quota exceeded
44
+ Please try again later
45
+ `;
46
+ const result = analyzePaneContent(content);
47
+ expect(result.hasRateLimitMessage).toBe(true);
48
+ expect(result.rateLimitType).toBe('weekly');
49
+ });
50
+ it('should not flag content without Claude Code indicators', () => {
51
+ const content = `
52
+ vim test.js
53
+ Hello World
54
+ `;
55
+ const result = analyzePaneContent(content);
56
+ expect(result.hasClaudeCode).toBe(false);
57
+ expect(result.isBlocked).toBe(false);
58
+ });
59
+ it('should not flag rate limit messages in non-Claude contexts', () => {
60
+ const content = `
61
+ curl api.example.com
62
+ Error: rate limit exceeded
63
+ `;
64
+ const result = analyzePaneContent(content);
65
+ expect(result.hasClaudeCode).toBe(false);
66
+ expect(result.hasRateLimitMessage).toBe(true);
67
+ expect(result.isBlocked).toBe(false); // No Claude context
68
+ });
69
+ it('should handle empty content', () => {
70
+ const result = analyzePaneContent('');
71
+ expect(result.hasClaudeCode).toBe(false);
72
+ expect(result.hasRateLimitMessage).toBe(false);
73
+ expect(result.isBlocked).toBe(false);
74
+ expect(result.confidence).toBe(0);
75
+ });
76
+ it('should detect waiting patterns', () => {
77
+ const content = `
78
+ Claude assistant
79
+ Rate limit reached
80
+ [1] Continue
81
+ [2] Cancel
82
+ `;
83
+ const result = analyzePaneContent(content);
84
+ expect(result.confidence).toBeGreaterThan(0.6);
85
+ });
86
+ });
87
+ describe('isTmuxAvailable', () => {
88
+ it('should return true when tmux is installed', () => {
89
+ vi.mocked(spawnSync).mockReturnValue({
90
+ status: 0,
91
+ stdout: '/usr/bin/tmux\n',
92
+ stderr: '',
93
+ signal: null,
94
+ pid: 1234,
95
+ output: [],
96
+ });
97
+ expect(isTmuxAvailable()).toBe(true);
98
+ });
99
+ it('should return false when tmux is not installed', () => {
100
+ vi.mocked(spawnSync).mockReturnValue({
101
+ status: 1,
102
+ stdout: '',
103
+ stderr: '',
104
+ signal: null,
105
+ pid: 1234,
106
+ output: [],
107
+ });
108
+ expect(isTmuxAvailable()).toBe(false);
109
+ });
110
+ it('should return false when spawnSync throws', () => {
111
+ vi.mocked(spawnSync).mockImplementation(() => {
112
+ throw new Error('Command not found');
113
+ });
114
+ expect(isTmuxAvailable()).toBe(false);
115
+ });
116
+ });
117
+ describe('listTmuxPanes', () => {
118
+ it('should parse tmux pane list correctly', () => {
119
+ vi.mocked(spawnSync).mockReturnValue({
120
+ status: 0,
121
+ stdout: '/usr/bin/tmux',
122
+ stderr: '',
123
+ signal: null,
124
+ pid: 1234,
125
+ output: [],
126
+ });
127
+ vi.mocked(execSync).mockReturnValue('main:0.0 %0 1 dev Claude\nmain:0.1 %1 0 dev Other\n');
128
+ const panes = listTmuxPanes();
129
+ expect(panes).toHaveLength(2);
130
+ expect(panes[0]).toEqual({
131
+ id: '%0',
132
+ session: 'main',
133
+ windowIndex: 0,
134
+ windowName: 'dev',
135
+ paneIndex: 0,
136
+ title: 'Claude',
137
+ isActive: true,
138
+ });
139
+ expect(panes[1]).toEqual({
140
+ id: '%1',
141
+ session: 'main',
142
+ windowIndex: 0,
143
+ windowName: 'dev',
144
+ paneIndex: 1,
145
+ title: 'Other',
146
+ isActive: false,
147
+ });
148
+ });
149
+ it('should return empty array when tmux not available', () => {
150
+ vi.mocked(spawnSync).mockReturnValue({
151
+ status: 1,
152
+ stdout: '',
153
+ stderr: '',
154
+ signal: null,
155
+ pid: 1234,
156
+ output: [],
157
+ });
158
+ const panes = listTmuxPanes();
159
+ expect(panes).toEqual([]);
160
+ });
161
+ });
162
+ describe('capturePaneContent', () => {
163
+ it('should capture pane content', () => {
164
+ vi.mocked(spawnSync).mockReturnValue({
165
+ status: 0,
166
+ stdout: '/usr/bin/tmux',
167
+ stderr: '',
168
+ signal: null,
169
+ pid: 1234,
170
+ output: [],
171
+ });
172
+ vi.mocked(execSync).mockReturnValue('Line 1\nLine 2\nLine 3\n');
173
+ const content = capturePaneContent('%0', 3);
174
+ expect(content).toBe('Line 1\nLine 2\nLine 3\n');
175
+ expect(execSync).toHaveBeenCalledWith("tmux capture-pane -t '%0' -p -S -3", expect.any(Object));
176
+ });
177
+ it('should return empty string when tmux not available', () => {
178
+ vi.mocked(spawnSync).mockReturnValue({
179
+ status: 1,
180
+ stdout: '',
181
+ stderr: '',
182
+ signal: null,
183
+ pid: 1234,
184
+ output: [],
185
+ });
186
+ const content = capturePaneContent('%0');
187
+ expect(content).toBe('');
188
+ });
189
+ });
190
+ describe('security: input validation', () => {
191
+ it('should reject invalid pane IDs in capturePaneContent', () => {
192
+ vi.mocked(spawnSync).mockReturnValue({
193
+ status: 0,
194
+ stdout: '/usr/bin/tmux',
195
+ stderr: '',
196
+ signal: null,
197
+ pid: 1234,
198
+ output: [],
199
+ });
200
+ // Valid pane ID should work
201
+ vi.mocked(execSync).mockReturnValue('content');
202
+ const validResult = capturePaneContent('%0');
203
+ expect(validResult).toBe('content');
204
+ // Invalid pane IDs should return empty string (not execute command)
205
+ const invalidIds = [
206
+ '; rm -rf /',
207
+ '%0; echo hacked',
208
+ '$(whoami)',
209
+ '%0`id`',
210
+ '../etc/passwd',
211
+ '',
212
+ 'abc',
213
+ ];
214
+ for (const invalidId of invalidIds) {
215
+ vi.mocked(execSync).mockClear();
216
+ const result = capturePaneContent(invalidId);
217
+ expect(result).toBe('');
218
+ }
219
+ });
220
+ it('should validate lines parameter bounds', () => {
221
+ vi.mocked(spawnSync).mockReturnValue({
222
+ status: 0,
223
+ stdout: '/usr/bin/tmux',
224
+ stderr: '',
225
+ signal: null,
226
+ pid: 1234,
227
+ output: [],
228
+ });
229
+ vi.mocked(execSync).mockReturnValue('content');
230
+ // Should clamp negative to 1
231
+ capturePaneContent('%0', -5);
232
+ expect(execSync).toHaveBeenCalledWith(expect.stringContaining('-S -1'), expect.any(Object));
233
+ // Should clamp excessive values to 100
234
+ vi.mocked(execSync).mockClear();
235
+ capturePaneContent('%0', 1000);
236
+ expect(execSync).toHaveBeenCalledWith(expect.stringContaining('-S -100'), expect.any(Object));
237
+ });
238
+ });
239
+ describe('formatBlockedPanesSummary', () => {
240
+ it('should format empty list', () => {
241
+ const result = formatBlockedPanesSummary([]);
242
+ expect(result).toBe('No blocked Claude Code sessions detected.');
243
+ });
244
+ it('should format blocked panes', () => {
245
+ const panes = [
246
+ {
247
+ id: '%0',
248
+ session: 'main',
249
+ windowIndex: 0,
250
+ windowName: 'dev',
251
+ paneIndex: 0,
252
+ isActive: true,
253
+ analysis: {
254
+ hasClaudeCode: true,
255
+ hasRateLimitMessage: true,
256
+ isBlocked: true,
257
+ rateLimitType: 'five_hour',
258
+ confidence: 0.9,
259
+ },
260
+ firstDetectedAt: new Date(),
261
+ resumeAttempted: false,
262
+ },
263
+ ];
264
+ const result = formatBlockedPanesSummary(panes);
265
+ expect(result).toContain('Found 1 blocked');
266
+ expect(result).toContain('%0');
267
+ expect(result).toContain('five_hour');
268
+ expect(result).toContain('90%');
269
+ });
270
+ it('should show resume status', () => {
271
+ const panes = [
272
+ {
273
+ id: '%0',
274
+ session: 'main',
275
+ windowIndex: 0,
276
+ windowName: 'dev',
277
+ paneIndex: 0,
278
+ isActive: true,
279
+ analysis: {
280
+ hasClaudeCode: true,
281
+ hasRateLimitMessage: true,
282
+ isBlocked: true,
283
+ confidence: 0.8,
284
+ },
285
+ firstDetectedAt: new Date(),
286
+ resumeAttempted: true,
287
+ resumeSuccessful: true,
288
+ },
289
+ ];
290
+ const result = formatBlockedPanesSummary(panes);
291
+ expect(result).toContain('[RESUMED]');
292
+ });
293
+ });
294
+ });
295
+ //# sourceMappingURL=tmux-detector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmux-detector.test.js","sourceRoot":"","sources":["../../../src/__tests__/rate-limit-wait/tmux-detector.test.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,13 @@ describe('Builtin Skills', () => {
6
6
  clearSkillsCache();
7
7
  });
8
8
  describe('createBuiltinSkills()', () => {
9
- it('should return correct number of skills (35)', () => {
9
+ it('should return correct number of skills (36)', () => {
10
10
  const skills = createBuiltinSkills();
11
- // 35 skills: analyze, autopilot, build-fix, cancel, code-review, deepinit, deepsearch, doctor, ecomode,
11
+ // 36 skills: analyze, autopilot, build-fix, cancel, code-review, deepinit, deepsearch, doctor, ecomode,
12
12
  // frontend-ui-ux, git-master, help, hud, learn-about-omc, learner, local-skills-setup, mcp-setup, note,
13
- // omc-setup, orchestrate, pipeline, plan, ralph, ralph-init, ralplan, release, research, review,
13
+ // omc-setup, orchestrate, pipeline, plan, project-session-manager, ralph, ralph-init, ralplan, release, research, review,
14
14
  // security-review, skill, swarm, tdd, ultrapilot, ultraqa, ultrawork
15
- expect(skills).toHaveLength(35);
15
+ expect(skills).toHaveLength(36);
16
16
  });
17
17
  it('should return an array of BuiltinSkill objects', () => {
18
18
  const skills = createBuiltinSkills();
@@ -77,6 +77,7 @@ describe('Builtin Skills', () => {
77
77
  'orchestrate',
78
78
  'pipeline',
79
79
  'plan',
80
+ 'project-session-manager',
80
81
  'ralph',
81
82
  'ralph-init',
82
83
  'ralplan',
@@ -126,7 +127,7 @@ describe('Builtin Skills', () => {
126
127
  describe('listBuiltinSkillNames()', () => {
127
128
  it('should return all skill names', () => {
128
129
  const names = listBuiltinSkillNames();
129
- expect(names).toHaveLength(35);
130
+ expect(names).toHaveLength(36);
130
131
  expect(names).toContain('orchestrate');
131
132
  expect(names).toContain('autopilot');
132
133
  expect(names).toContain('cancel');
@@ -1 +1 @@
1
- {"version":3,"file":"skills.test.js","sourceRoot":"","sources":["../../src/__tests__/skills.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.test.js","sourceRoot":"","sources":["../../src/__tests__/skills.test.ts"],"names":[],"mappings":"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"}