@litmers/cursorflow-orchestrator 0.1.40 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/CHANGELOG.md +0 -2
  2. package/README.md +7 -3
  3. package/commands/cursorflow-init.md +0 -4
  4. package/dist/cli/logs.js +108 -9
  5. package/dist/cli/logs.js.map +1 -1
  6. package/dist/cli/models.js +20 -3
  7. package/dist/cli/models.js.map +1 -1
  8. package/dist/cli/monitor.d.ts +7 -10
  9. package/dist/cli/monitor.js +1088 -1240
  10. package/dist/cli/monitor.js.map +1 -1
  11. package/dist/cli/resume.js +21 -1
  12. package/dist/cli/resume.js.map +1 -1
  13. package/dist/cli/run.js +28 -9
  14. package/dist/cli/run.js.map +1 -1
  15. package/dist/cli/signal.d.ts +6 -1
  16. package/dist/cli/signal.js +94 -12
  17. package/dist/cli/signal.js.map +1 -1
  18. package/dist/cli/tasks.js +3 -46
  19. package/dist/cli/tasks.js.map +1 -1
  20. package/dist/core/agent-supervisor.d.ts +23 -0
  21. package/dist/core/agent-supervisor.js +42 -0
  22. package/dist/core/agent-supervisor.js.map +1 -0
  23. package/dist/core/auto-recovery.d.ts +2 -1
  24. package/dist/core/auto-recovery.js +6 -1
  25. package/dist/core/auto-recovery.js.map +1 -1
  26. package/dist/core/failure-policy.d.ts +0 -1
  27. package/dist/core/failure-policy.js +0 -1
  28. package/dist/core/failure-policy.js.map +1 -1
  29. package/dist/core/git-lifecycle-manager.d.ts +284 -0
  30. package/dist/core/git-lifecycle-manager.js +778 -0
  31. package/dist/core/git-lifecycle-manager.js.map +1 -0
  32. package/dist/core/git-pipeline-coordinator.d.ts +21 -0
  33. package/dist/core/git-pipeline-coordinator.js +205 -0
  34. package/dist/core/git-pipeline-coordinator.js.map +1 -0
  35. package/dist/core/intervention.d.ts +176 -0
  36. package/dist/core/intervention.js +424 -0
  37. package/dist/core/intervention.js.map +1 -0
  38. package/dist/core/lane-state-machine.d.ts +423 -0
  39. package/dist/core/lane-state-machine.js +890 -0
  40. package/dist/core/lane-state-machine.js.map +1 -0
  41. package/dist/core/orchestrator.d.ts +4 -1
  42. package/dist/core/orchestrator.js +29 -62
  43. package/dist/core/orchestrator.js.map +1 -1
  44. package/dist/core/runner/agent.d.ts +7 -1
  45. package/dist/core/runner/agent.js +45 -30
  46. package/dist/core/runner/agent.js.map +1 -1
  47. package/dist/core/runner/pipeline.js +283 -123
  48. package/dist/core/runner/pipeline.js.map +1 -1
  49. package/dist/core/runner/task.d.ts +4 -5
  50. package/dist/core/runner/task.js +6 -80
  51. package/dist/core/runner/task.js.map +1 -1
  52. package/dist/core/runner.js +8 -2
  53. package/dist/core/runner.js.map +1 -1
  54. package/dist/core/stall-detection.d.ts +11 -4
  55. package/dist/core/stall-detection.js +62 -27
  56. package/dist/core/stall-detection.js.map +1 -1
  57. package/dist/hooks/contexts/index.d.ts +104 -0
  58. package/dist/hooks/contexts/index.js +134 -0
  59. package/dist/hooks/contexts/index.js.map +1 -0
  60. package/dist/hooks/data-accessor.d.ts +86 -0
  61. package/dist/hooks/data-accessor.js +410 -0
  62. package/dist/hooks/data-accessor.js.map +1 -0
  63. package/dist/hooks/flow-controller.d.ts +136 -0
  64. package/dist/hooks/flow-controller.js +351 -0
  65. package/dist/hooks/flow-controller.js.map +1 -0
  66. package/dist/hooks/index.d.ts +68 -0
  67. package/dist/hooks/index.js +105 -0
  68. package/dist/hooks/index.js.map +1 -0
  69. package/dist/hooks/manager.d.ts +129 -0
  70. package/dist/hooks/manager.js +389 -0
  71. package/dist/hooks/manager.js.map +1 -0
  72. package/dist/hooks/types.d.ts +463 -0
  73. package/dist/hooks/types.js +45 -0
  74. package/dist/hooks/types.js.map +1 -0
  75. package/dist/services/logging/buffer.d.ts +2 -2
  76. package/dist/services/logging/buffer.js +95 -42
  77. package/dist/services/logging/buffer.js.map +1 -1
  78. package/dist/services/logging/console.js +6 -1
  79. package/dist/services/logging/console.js.map +1 -1
  80. package/dist/services/logging/formatter.d.ts +9 -4
  81. package/dist/services/logging/formatter.js +64 -18
  82. package/dist/services/logging/formatter.js.map +1 -1
  83. package/dist/services/logging/index.d.ts +0 -1
  84. package/dist/services/logging/index.js +0 -1
  85. package/dist/services/logging/index.js.map +1 -1
  86. package/dist/services/logging/paths.d.ts +8 -0
  87. package/dist/services/logging/paths.js +48 -0
  88. package/dist/services/logging/paths.js.map +1 -0
  89. package/dist/services/logging/raw-log.d.ts +6 -0
  90. package/dist/services/logging/raw-log.js +37 -0
  91. package/dist/services/logging/raw-log.js.map +1 -0
  92. package/dist/services/process/index.js +1 -1
  93. package/dist/services/process/index.js.map +1 -1
  94. package/dist/types/agent.d.ts +15 -0
  95. package/dist/types/config.d.ts +22 -1
  96. package/dist/types/event-categories.d.ts +601 -0
  97. package/dist/types/event-categories.js +233 -0
  98. package/dist/types/event-categories.js.map +1 -0
  99. package/dist/types/events.d.ts +0 -20
  100. package/dist/types/flow.d.ts +10 -6
  101. package/dist/types/index.d.ts +1 -1
  102. package/dist/types/index.js +17 -3
  103. package/dist/types/index.js.map +1 -1
  104. package/dist/types/lane.d.ts +1 -1
  105. package/dist/types/logging.d.ts +1 -1
  106. package/dist/types/task.d.ts +12 -1
  107. package/dist/ui/log-viewer.d.ts +3 -0
  108. package/dist/ui/log-viewer.js +3 -0
  109. package/dist/ui/log-viewer.js.map +1 -1
  110. package/dist/utils/config.js +10 -1
  111. package/dist/utils/config.js.map +1 -1
  112. package/dist/utils/cursor-agent.d.ts +11 -1
  113. package/dist/utils/cursor-agent.js +63 -16
  114. package/dist/utils/cursor-agent.js.map +1 -1
  115. package/dist/utils/enhanced-logger.d.ts +5 -1
  116. package/dist/utils/enhanced-logger.js +98 -19
  117. package/dist/utils/enhanced-logger.js.map +1 -1
  118. package/dist/utils/event-registry.d.ts +222 -0
  119. package/dist/utils/event-registry.js +463 -0
  120. package/dist/utils/event-registry.js.map +1 -0
  121. package/dist/utils/events.d.ts +1 -13
  122. package/dist/utils/events.js.map +1 -1
  123. package/dist/utils/flow.d.ts +10 -0
  124. package/dist/utils/flow.js +75 -0
  125. package/dist/utils/flow.js.map +1 -1
  126. package/dist/utils/log-constants.d.ts +1 -0
  127. package/dist/utils/log-constants.js +2 -1
  128. package/dist/utils/log-constants.js.map +1 -1
  129. package/dist/utils/log-formatter.d.ts +2 -1
  130. package/dist/utils/log-formatter.js +10 -10
  131. package/dist/utils/log-formatter.js.map +1 -1
  132. package/dist/utils/logger.d.ts +11 -0
  133. package/dist/utils/logger.js +82 -3
  134. package/dist/utils/logger.js.map +1 -1
  135. package/dist/utils/repro-thinking-logs.js +0 -13
  136. package/dist/utils/repro-thinking-logs.js.map +1 -1
  137. package/dist/utils/run-service.js +1 -1
  138. package/dist/utils/run-service.js.map +1 -1
  139. package/examples/README.md +0 -2
  140. package/examples/demo-project/README.md +1 -2
  141. package/package.json +18 -28
  142. package/scripts/setup-security.sh +0 -1
  143. package/scripts/test-log-parser.ts +171 -0
  144. package/scripts/verify-change.sh +272 -0
  145. package/src/cli/logs.ts +121 -10
  146. package/src/cli/models.ts +20 -3
  147. package/src/cli/monitor.ts +1257 -1342
  148. package/src/cli/resume.ts +27 -1
  149. package/src/cli/run.ts +29 -11
  150. package/src/cli/signal.ts +115 -17
  151. package/src/cli/tasks.ts +2 -59
  152. package/src/core/agent-supervisor.ts +64 -0
  153. package/src/core/auto-recovery.ts +7 -1
  154. package/src/core/failure-policy.ts +0 -1
  155. package/src/core/git-lifecycle-manager.ts +1011 -0
  156. package/src/core/git-pipeline-coordinator.ts +221 -0
  157. package/src/core/intervention.ts +481 -0
  158. package/src/core/lane-state-machine.ts +1097 -0
  159. package/src/core/orchestrator.ts +35 -61
  160. package/src/core/runner/agent.ts +66 -33
  161. package/src/core/runner/pipeline.ts +318 -138
  162. package/src/core/runner/task.ts +12 -97
  163. package/src/core/runner.ts +8 -2
  164. package/src/core/stall-detection.ts +72 -27
  165. package/src/hooks/contexts/index.ts +256 -0
  166. package/src/hooks/data-accessor.ts +488 -0
  167. package/src/hooks/flow-controller.ts +425 -0
  168. package/src/hooks/index.ts +154 -0
  169. package/src/hooks/manager.ts +434 -0
  170. package/src/hooks/types.ts +544 -0
  171. package/src/services/logging/buffer.ts +104 -43
  172. package/src/services/logging/console.ts +7 -1
  173. package/src/services/logging/formatter.ts +74 -18
  174. package/src/services/logging/index.ts +0 -2
  175. package/src/services/logging/paths.ts +14 -0
  176. package/src/services/logging/raw-log.ts +43 -0
  177. package/src/services/process/index.ts +1 -1
  178. package/src/types/agent.ts +15 -0
  179. package/src/types/config.ts +23 -1
  180. package/src/types/event-categories.ts +663 -0
  181. package/src/types/events.ts +0 -25
  182. package/src/types/flow.ts +10 -6
  183. package/src/types/index.ts +50 -4
  184. package/src/types/lane.ts +1 -2
  185. package/src/types/logging.ts +2 -1
  186. package/src/types/task.ts +12 -1
  187. package/src/ui/log-viewer.ts +3 -0
  188. package/src/utils/config.ts +11 -1
  189. package/src/utils/cursor-agent.ts +68 -16
  190. package/src/utils/enhanced-logger.ts +105 -19
  191. package/src/utils/event-registry.ts +595 -0
  192. package/src/utils/events.ts +0 -16
  193. package/src/utils/flow.ts +83 -0
  194. package/src/utils/log-constants.ts +2 -1
  195. package/src/utils/log-formatter.ts +10 -11
  196. package/src/utils/logger.ts +49 -3
  197. package/src/utils/repro-thinking-logs.ts +0 -15
  198. package/src/utils/run-service.ts +1 -1
  199. package/dist/services/logging/file-writer.d.ts +0 -71
  200. package/dist/services/logging/file-writer.js +0 -516
  201. package/dist/services/logging/file-writer.js.map +0 -1
  202. package/dist/types/review.d.ts +0 -17
  203. package/dist/types/review.js +0 -6
  204. package/dist/types/review.js.map +0 -1
  205. package/scripts/ai-security-check.js +0 -233
  206. package/src/services/logging/file-writer.ts +0 -526
  207. package/src/types/review.ts +0 -20
@@ -0,0 +1,389 @@
1
+ "use strict";
2
+ /**
3
+ * CursorFlow Hook System - Hook Manager
4
+ *
5
+ * Hook 등록 및 실행을 관리하는 중앙 매니저입니다.
6
+ * 외부 개발자가 Hook을 등록하고 CursorFlow가 적절한 시점에 실행합니다.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { hooks, HookPoint } from '@litmers/cursorflow-orchestrator';
11
+ *
12
+ * hooks.register({
13
+ * point: HookPoint.AFTER_TASK,
14
+ * mode: 'sync',
15
+ * handler: async (ctx) => {
16
+ * // Your logic here
17
+ * },
18
+ * });
19
+ * ```
20
+ */
21
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ var desc = Object.getOwnPropertyDescriptor(m, k);
24
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
25
+ desc = { enumerable: true, get: function() { return m[k]; } };
26
+ }
27
+ Object.defineProperty(o, k2, desc);
28
+ }) : (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ o[k2] = m[k];
31
+ }));
32
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
33
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
34
+ }) : function(o, v) {
35
+ o["default"] = v;
36
+ });
37
+ var __importStar = (this && this.__importStar) || (function () {
38
+ var ownKeys = function(o) {
39
+ ownKeys = Object.getOwnPropertyNames || function (o) {
40
+ var ar = [];
41
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
42
+ return ar;
43
+ };
44
+ return ownKeys(o);
45
+ };
46
+ return function (mod) {
47
+ if (mod && mod.__esModule) return mod;
48
+ var result = {};
49
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
50
+ __setModuleDefault(result, mod);
51
+ return result;
52
+ };
53
+ })();
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.hooks = exports.HookManager = void 0;
56
+ exports.getHookManager = getHookManager;
57
+ exports.resetHookManager = resetHookManager;
58
+ const logger = __importStar(require("../utils/logger"));
59
+ const types_1 = require("./types");
60
+ // ============================================================================
61
+ // Hook Manager
62
+ // ============================================================================
63
+ /**
64
+ * Hook Manager 클래스
65
+ *
66
+ * 싱글톤 패턴으로 구현되어 전역에서 접근 가능합니다.
67
+ */
68
+ class HookManager {
69
+ static instance = null;
70
+ /** 등록된 Hook 목록 (Hook Point별로 분류) */
71
+ hooks = new Map();
72
+ /** 설정 */
73
+ config = {
74
+ timeout: 30000,
75
+ continueOnError: false,
76
+ debug: false,
77
+ };
78
+ constructor() {
79
+ // 각 Hook Point에 대해 빈 배열 초기화
80
+ for (const point of Object.values(types_1.HookPoint)) {
81
+ this.hooks.set(point, []);
82
+ }
83
+ }
84
+ /**
85
+ * 싱글톤 인스턴스 획득
86
+ */
87
+ static getInstance() {
88
+ if (!HookManager.instance) {
89
+ HookManager.instance = new HookManager();
90
+ }
91
+ return HookManager.instance;
92
+ }
93
+ /**
94
+ * 인스턴스 리셋 (테스트용)
95
+ */
96
+ static resetInstance() {
97
+ HookManager.instance = null;
98
+ }
99
+ // ==========================================================================
100
+ // Configuration
101
+ // ==========================================================================
102
+ /**
103
+ * 설정 업데이트
104
+ */
105
+ configure(config) {
106
+ this.config = { ...this.config, ...config };
107
+ }
108
+ /**
109
+ * 현재 설정 조회
110
+ */
111
+ getConfig() {
112
+ return { ...this.config };
113
+ }
114
+ // ==========================================================================
115
+ // Hook Registration
116
+ // ==========================================================================
117
+ /**
118
+ * Hook 등록
119
+ *
120
+ * @param registration Hook 등록 정보
121
+ * @returns 등록 해제 함수
122
+ */
123
+ register(registration) {
124
+ const { point, priority = 50, name, enabled = true } = registration;
125
+ if (!enabled) {
126
+ if (this.config.debug) {
127
+ logger.debug(`[HookManager] Skipping disabled hook: ${name || 'unnamed'}`);
128
+ }
129
+ return () => { };
130
+ }
131
+ const hooks = this.hooks.get(point) || [];
132
+ // 우선순위에 따라 정렬된 위치에 삽입
133
+ const insertIndex = hooks.findIndex(h => (h.priority || 50) > priority);
134
+ if (insertIndex === -1) {
135
+ hooks.push(registration);
136
+ }
137
+ else {
138
+ hooks.splice(insertIndex, 0, registration);
139
+ }
140
+ this.hooks.set(point, hooks);
141
+ if (this.config.debug) {
142
+ logger.debug(`[HookManager] Registered hook "${name || 'unnamed'}" at ${point} (priority: ${priority})`);
143
+ }
144
+ // 등록 해제 함수 반환
145
+ return () => {
146
+ this.unregister(point, registration);
147
+ };
148
+ }
149
+ /**
150
+ * Hook 등록 해제
151
+ */
152
+ unregister(point, registration) {
153
+ const hooks = this.hooks.get(point) || [];
154
+ const index = hooks.indexOf(registration);
155
+ if (index !== -1) {
156
+ hooks.splice(index, 1);
157
+ this.hooks.set(point, hooks);
158
+ if (this.config.debug) {
159
+ logger.debug(`[HookManager] Unregistered hook "${registration.name || 'unnamed'}" from ${point}`);
160
+ }
161
+ }
162
+ }
163
+ /**
164
+ * 특정 Hook Point의 모든 Hook 제거
165
+ */
166
+ clearHooks(point) {
167
+ if (point) {
168
+ this.hooks.set(point, []);
169
+ }
170
+ else {
171
+ for (const p of Object.values(types_1.HookPoint)) {
172
+ this.hooks.set(p, []);
173
+ }
174
+ }
175
+ }
176
+ /**
177
+ * 등록된 Hook 수 조회
178
+ */
179
+ getHookCount(point) {
180
+ if (point) {
181
+ return this.hooks.get(point)?.length || 0;
182
+ }
183
+ let total = 0;
184
+ for (const hooks of this.hooks.values()) {
185
+ total += hooks.length;
186
+ }
187
+ return total;
188
+ }
189
+ /**
190
+ * Hook 등록 여부 확인
191
+ */
192
+ hasHooks(point) {
193
+ return (this.hooks.get(point)?.length || 0) > 0;
194
+ }
195
+ // ==========================================================================
196
+ // Hook Execution
197
+ // ==========================================================================
198
+ /**
199
+ * beforeTask Hook 실행
200
+ */
201
+ async executeBeforeTask(context) {
202
+ return this.execute(types_1.HookPoint.BEFORE_TASK, context);
203
+ }
204
+ /**
205
+ * afterTask Hook 실행
206
+ */
207
+ async executeAfterTask(context) {
208
+ return this.execute(types_1.HookPoint.AFTER_TASK, context);
209
+ }
210
+ /**
211
+ * onError Hook 실행
212
+ */
213
+ async executeOnError(context) {
214
+ return this.execute(types_1.HookPoint.ON_ERROR, context);
215
+ }
216
+ /**
217
+ * onStall Hook 실행
218
+ */
219
+ async executeOnStall(context) {
220
+ return this.execute(types_1.HookPoint.ON_STALL, context);
221
+ }
222
+ /**
223
+ * onLaneEnd Hook 실행
224
+ */
225
+ async executeOnLaneEnd(context) {
226
+ return this.execute(types_1.HookPoint.ON_LANE_END, context);
227
+ }
228
+ /**
229
+ * 일반 Hook 실행
230
+ */
231
+ async execute(point, context) {
232
+ const hooks = this.hooks.get(point) || [];
233
+ if (hooks.length === 0) {
234
+ return [];
235
+ }
236
+ if (this.config.debug) {
237
+ logger.debug(`[HookManager] Executing ${hooks.length} hooks for ${point}`);
238
+ }
239
+ const results = [];
240
+ const syncHooks = hooks.filter(h => h.mode === 'sync');
241
+ const asyncHooks = hooks.filter(h => h.mode === 'async');
242
+ // 동기 Hook 순차 실행 (블로킹)
243
+ for (const hook of syncHooks) {
244
+ const result = await this.executeHook(hook, context);
245
+ results.push(result);
246
+ // 에러 발생 시 중단 여부 결정
247
+ if (!result.success && !this.config.continueOnError) {
248
+ logger.error(`[HookManager] Hook "${hook.name || 'unnamed'}" failed, stopping execution`);
249
+ break;
250
+ }
251
+ }
252
+ // 비동기 Hook 병렬 실행 (논블로킹)
253
+ if (asyncHooks.length > 0) {
254
+ // 비동기 Hook은 백그라운드에서 실행 (결과를 기다리지 않음)
255
+ Promise.all(asyncHooks.map(hook => this.executeHook(hook, context))).then(asyncResults => {
256
+ for (const result of asyncResults) {
257
+ if (!result.success) {
258
+ logger.warn(`[HookManager] Async hook "${result.handlerName || 'unnamed'}" failed: ${result.error?.message}`);
259
+ }
260
+ }
261
+ }).catch(error => {
262
+ logger.error(`[HookManager] Async hooks error: ${error.message}`);
263
+ });
264
+ }
265
+ return results;
266
+ }
267
+ /**
268
+ * 단일 Hook 실행
269
+ */
270
+ async executeHook(hook, context) {
271
+ const startTime = Date.now();
272
+ const handlerName = hook.name || 'unnamed';
273
+ try {
274
+ // 타임아웃 설정
275
+ const timeout = this.config.timeout || 30000;
276
+ const result = await Promise.race([
277
+ hook.handler(context),
278
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Hook timeout after ${timeout}ms`)), timeout)),
279
+ ]);
280
+ const duration = Date.now() - startTime;
281
+ if (this.config.debug) {
282
+ logger.debug(`[HookManager] Hook "${handlerName}" completed in ${duration}ms`);
283
+ }
284
+ return {
285
+ success: true,
286
+ duration,
287
+ handlerName,
288
+ };
289
+ }
290
+ catch (error) {
291
+ const duration = Date.now() - startTime;
292
+ // FlowAbortError와 FlowRetryError는 정상적인 플로우 제어이므로 다시 throw
293
+ if (error.name === 'FlowAbortError' || error.name === 'FlowRetryError') {
294
+ throw error;
295
+ }
296
+ logger.error(`[HookManager] Hook "${handlerName}" error: ${error.message}`);
297
+ return {
298
+ success: false,
299
+ error,
300
+ duration,
301
+ handlerName,
302
+ };
303
+ }
304
+ }
305
+ // ==========================================================================
306
+ // Hook Loading
307
+ // ==========================================================================
308
+ /**
309
+ * 파일에서 Hook 로드
310
+ */
311
+ async loadHooksFromFile(filePath) {
312
+ try {
313
+ // TypeScript/JavaScript 파일 동적 로드
314
+ const resolved = require.resolve(filePath);
315
+ // 캐시 삭제 (개발 중 핫 리로드를 위해)
316
+ delete require.cache[resolved];
317
+ const module = await Promise.resolve(`${resolved}`).then(s => __importStar(require(s)));
318
+ // 모듈이 HookManager를 반환하거나 register를 호출했으면 성공
319
+ if (this.config.debug) {
320
+ logger.debug(`[HookManager] Loaded hooks from ${filePath}`);
321
+ }
322
+ return this.getHookCount();
323
+ }
324
+ catch (error) {
325
+ logger.error(`[HookManager] Failed to load hooks from ${filePath}: ${error.message}`);
326
+ throw error;
327
+ }
328
+ }
329
+ // ==========================================================================
330
+ // Debug & Inspection
331
+ // ==========================================================================
332
+ /**
333
+ * 등록된 Hook 목록 조회
334
+ */
335
+ listHooks(point) {
336
+ const result = [];
337
+ const points = point ? [point] : Object.values(types_1.HookPoint);
338
+ for (const p of points) {
339
+ const hooks = this.hooks.get(p) || [];
340
+ for (const hook of hooks) {
341
+ result.push({
342
+ point: p,
343
+ name: hook.name || 'unnamed',
344
+ mode: hook.mode,
345
+ priority: hook.priority || 50,
346
+ });
347
+ }
348
+ }
349
+ return result;
350
+ }
351
+ /**
352
+ * 디버그 정보 출력
353
+ */
354
+ debug() {
355
+ logger.info('=== HookManager Debug ===');
356
+ logger.info(`Config: ${JSON.stringify(this.config)}`);
357
+ logger.info(`Total hooks: ${this.getHookCount()}`);
358
+ for (const point of Object.values(types_1.HookPoint)) {
359
+ const hooks = this.hooks.get(point) || [];
360
+ if (hooks.length > 0) {
361
+ logger.info(` ${point}: ${hooks.length} hooks`);
362
+ for (const hook of hooks) {
363
+ logger.info(` - ${hook.name || 'unnamed'} (${hook.mode}, priority: ${hook.priority || 50})`);
364
+ }
365
+ }
366
+ }
367
+ }
368
+ }
369
+ exports.HookManager = HookManager;
370
+ // ============================================================================
371
+ // Singleton Instance & Convenience API
372
+ // ============================================================================
373
+ /**
374
+ * 전역 HookManager 인스턴스
375
+ */
376
+ exports.hooks = HookManager.getInstance();
377
+ /**
378
+ * HookManager 인스턴스 획득
379
+ */
380
+ function getHookManager() {
381
+ return HookManager.getInstance();
382
+ }
383
+ /**
384
+ * HookManager 인스턴스 리셋 (테스트용)
385
+ */
386
+ function resetHookManager() {
387
+ HookManager.resetInstance();
388
+ }
389
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/hooks/manager.ts"],"names":[],"mappings":"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"}