@vorionsys/a3i 0.1.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 (166) hide show
  1. package/LICENSE +190 -0
  2. package/dist/api/handlers.d.ts +231 -0
  3. package/dist/api/handlers.d.ts.map +1 -0
  4. package/dist/api/handlers.js +279 -0
  5. package/dist/api/handlers.js.map +1 -0
  6. package/dist/api/index.d.ts +24 -0
  7. package/dist/api/index.d.ts.map +1 -0
  8. package/dist/api/index.js +27 -0
  9. package/dist/api/index.js.map +1 -0
  10. package/dist/api/middleware.d.ts +106 -0
  11. package/dist/api/middleware.d.ts.map +1 -0
  12. package/dist/api/middleware.js +186 -0
  13. package/dist/api/middleware.js.map +1 -0
  14. package/dist/api/routes.d.ts +41 -0
  15. package/dist/api/routes.d.ts.map +1 -0
  16. package/dist/api/routes.js +91 -0
  17. package/dist/api/routes.js.map +1 -0
  18. package/dist/authorization/constraints.d.ts +75 -0
  19. package/dist/authorization/constraints.d.ts.map +1 -0
  20. package/dist/authorization/constraints.js +302 -0
  21. package/dist/authorization/constraints.js.map +1 -0
  22. package/dist/authorization/decision.d.ts +98 -0
  23. package/dist/authorization/decision.d.ts.map +1 -0
  24. package/dist/authorization/decision.js +202 -0
  25. package/dist/authorization/decision.js.map +1 -0
  26. package/dist/authorization/engine.d.ts +141 -0
  27. package/dist/authorization/engine.d.ts.map +1 -0
  28. package/dist/authorization/engine.js +339 -0
  29. package/dist/authorization/engine.js.map +1 -0
  30. package/dist/authorization/index.d.ts +10 -0
  31. package/dist/authorization/index.d.ts.map +1 -0
  32. package/dist/authorization/index.js +13 -0
  33. package/dist/authorization/index.js.map +1 -0
  34. package/dist/banding/band-calculator.d.ts +137 -0
  35. package/dist/banding/band-calculator.d.ts.map +1 -0
  36. package/dist/banding/band-calculator.js +252 -0
  37. package/dist/banding/band-calculator.js.map +1 -0
  38. package/dist/banding/bands.d.ts +56 -0
  39. package/dist/banding/bands.d.ts.map +1 -0
  40. package/dist/banding/bands.js +200 -0
  41. package/dist/banding/bands.js.map +1 -0
  42. package/dist/banding/hysteresis.d.ts +64 -0
  43. package/dist/banding/hysteresis.d.ts.map +1 -0
  44. package/dist/banding/hysteresis.js +143 -0
  45. package/dist/banding/hysteresis.js.map +1 -0
  46. package/dist/banding/index.d.ts +10 -0
  47. package/dist/banding/index.d.ts.map +1 -0
  48. package/dist/banding/index.js +10 -0
  49. package/dist/banding/index.js.map +1 -0
  50. package/dist/canary/canary-service.d.ts +123 -0
  51. package/dist/canary/canary-service.d.ts.map +1 -0
  52. package/dist/canary/canary-service.js +353 -0
  53. package/dist/canary/canary-service.js.map +1 -0
  54. package/dist/canary/index.d.ts +12 -0
  55. package/dist/canary/index.d.ts.map +1 -0
  56. package/dist/canary/index.js +14 -0
  57. package/dist/canary/index.js.map +1 -0
  58. package/dist/canary/probe-library.d.ts +43 -0
  59. package/dist/canary/probe-library.d.ts.map +1 -0
  60. package/dist/canary/probe-library.js +655 -0
  61. package/dist/canary/probe-library.js.map +1 -0
  62. package/dist/execution/engine.d.ts +120 -0
  63. package/dist/execution/engine.d.ts.map +1 -0
  64. package/dist/execution/engine.js +220 -0
  65. package/dist/execution/engine.js.map +1 -0
  66. package/dist/execution/index.d.ts +7 -0
  67. package/dist/execution/index.d.ts.map +1 -0
  68. package/dist/execution/index.js +7 -0
  69. package/dist/execution/index.js.map +1 -0
  70. package/dist/gate/index.d.ts +12 -0
  71. package/dist/gate/index.d.ts.map +1 -0
  72. package/dist/gate/index.js +14 -0
  73. package/dist/gate/index.js.map +1 -0
  74. package/dist/gate/pre-action-gate.d.ts +87 -0
  75. package/dist/gate/pre-action-gate.d.ts.map +1 -0
  76. package/dist/gate/pre-action-gate.js +286 -0
  77. package/dist/gate/pre-action-gate.js.map +1 -0
  78. package/dist/gate/risk-classifier.d.ts +43 -0
  79. package/dist/gate/risk-classifier.d.ts.map +1 -0
  80. package/dist/gate/risk-classifier.js +157 -0
  81. package/dist/gate/risk-classifier.js.map +1 -0
  82. package/dist/hooks/executor.d.ts +56 -0
  83. package/dist/hooks/executor.d.ts.map +1 -0
  84. package/dist/hooks/executor.js +217 -0
  85. package/dist/hooks/executor.js.map +1 -0
  86. package/dist/hooks/index.d.ts +45 -0
  87. package/dist/hooks/index.d.ts.map +1 -0
  88. package/dist/hooks/index.js +49 -0
  89. package/dist/hooks/index.js.map +1 -0
  90. package/dist/hooks/manager.d.ts +156 -0
  91. package/dist/hooks/manager.d.ts.map +1 -0
  92. package/dist/hooks/manager.js +267 -0
  93. package/dist/hooks/manager.js.map +1 -0
  94. package/dist/hooks/registry.d.ts +130 -0
  95. package/dist/hooks/registry.d.ts.map +1 -0
  96. package/dist/hooks/registry.js +238 -0
  97. package/dist/hooks/registry.js.map +1 -0
  98. package/dist/hooks/types.d.ts +226 -0
  99. package/dist/hooks/types.d.ts.map +1 -0
  100. package/dist/hooks/types.js +41 -0
  101. package/dist/hooks/types.js.map +1 -0
  102. package/dist/index.d.ts +20 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +31 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/observation/attestation.d.ts +102 -0
  107. package/dist/observation/attestation.d.ts.map +1 -0
  108. package/dist/observation/attestation.js +127 -0
  109. package/dist/observation/attestation.js.map +1 -0
  110. package/dist/observation/ceilings.d.ts +60 -0
  111. package/dist/observation/ceilings.d.ts.map +1 -0
  112. package/dist/observation/ceilings.js +110 -0
  113. package/dist/observation/ceilings.js.map +1 -0
  114. package/dist/observation/index.d.ts +11 -0
  115. package/dist/observation/index.d.ts.map +1 -0
  116. package/dist/observation/index.js +14 -0
  117. package/dist/observation/index.js.map +1 -0
  118. package/dist/observation/tiers.d.ts +96 -0
  119. package/dist/observation/tiers.d.ts.map +1 -0
  120. package/dist/observation/tiers.js +225 -0
  121. package/dist/observation/tiers.js.map +1 -0
  122. package/dist/orchestrator/index.d.ts +8 -0
  123. package/dist/orchestrator/index.d.ts.map +1 -0
  124. package/dist/orchestrator/index.js +8 -0
  125. package/dist/orchestrator/index.js.map +1 -0
  126. package/dist/orchestrator/orchestrator.d.ts +225 -0
  127. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  128. package/dist/orchestrator/orchestrator.js +302 -0
  129. package/dist/orchestrator/orchestrator.js.map +1 -0
  130. package/dist/orchestrator/proof-plane-adapter.d.ts +80 -0
  131. package/dist/orchestrator/proof-plane-adapter.d.ts.map +1 -0
  132. package/dist/orchestrator/proof-plane-adapter.js +78 -0
  133. package/dist/orchestrator/proof-plane-adapter.js.map +1 -0
  134. package/dist/trust/calculator.d.ts +60 -0
  135. package/dist/trust/calculator.d.ts.map +1 -0
  136. package/dist/trust/calculator.js +163 -0
  137. package/dist/trust/calculator.js.map +1 -0
  138. package/dist/trust/dimensions.d.ts +133 -0
  139. package/dist/trust/dimensions.d.ts.map +1 -0
  140. package/dist/trust/dimensions.js +257 -0
  141. package/dist/trust/dimensions.js.map +1 -0
  142. package/dist/trust/index.d.ts +14 -0
  143. package/dist/trust/index.d.ts.map +1 -0
  144. package/dist/trust/index.js +25 -0
  145. package/dist/trust/index.js.map +1 -0
  146. package/dist/trust/profile-service.d.ts +179 -0
  147. package/dist/trust/profile-service.d.ts.map +1 -0
  148. package/dist/trust/profile-service.js +378 -0
  149. package/dist/trust/profile-service.js.map +1 -0
  150. package/dist/trust/profile-store.d.ts +122 -0
  151. package/dist/trust/profile-store.d.ts.map +1 -0
  152. package/dist/trust/profile-store.js +132 -0
  153. package/dist/trust/profile-store.js.map +1 -0
  154. package/dist/trust/trust-calculator.d.ts +111 -0
  155. package/dist/trust/trust-calculator.d.ts.map +1 -0
  156. package/dist/trust/trust-calculator.js +271 -0
  157. package/dist/trust/trust-calculator.js.map +1 -0
  158. package/dist/trust/trust-dynamics.d.ts +152 -0
  159. package/dist/trust/trust-dynamics.d.ts.map +1 -0
  160. package/dist/trust/trust-dynamics.js +302 -0
  161. package/dist/trust/trust-dynamics.js.map +1 -0
  162. package/dist/trust/weights.d.ts +57 -0
  163. package/dist/trust/weights.d.ts.map +1 -0
  164. package/dist/trust/weights.js +75 -0
  165. package/dist/trust/weights.js.map +1 -0
  166. package/package.json +81 -0
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Hook Manager - High-level API for the hook system
3
+ *
4
+ * Provides a unified interface for registering and executing hooks.
5
+ */
6
+ import { HookPhase, } from './types.js';
7
+ import { createHookRegistry, } from './registry.js';
8
+ import { createHookExecutor, successResult, abortResult, errorResult, } from './executor.js';
9
+ /**
10
+ * HookManager - High-level hook management API
11
+ */
12
+ export class HookManager {
13
+ registry;
14
+ executor;
15
+ config;
16
+ constructor(config = {}) {
17
+ this.registry = config.registry ?? createHookRegistry();
18
+ this.executor = createHookExecutor(this.registry);
19
+ this.config = {
20
+ registry: this.registry,
21
+ defaultExecutionOptions: config.defaultExecutionOptions ?? {},
22
+ enableLogging: config.enableLogging ?? false,
23
+ };
24
+ }
25
+ // ============================================================
26
+ // Hook Registration - Type-safe methods for each phase
27
+ // ============================================================
28
+ /**
29
+ * Register a pre-authorize hook
30
+ */
31
+ onPreAuthorize(name, handler, options) {
32
+ return this.registry.register({
33
+ name,
34
+ phase: HookPhase.PRE_AUTHORIZE,
35
+ handler,
36
+ ...options,
37
+ });
38
+ }
39
+ /**
40
+ * Register a post-authorize hook
41
+ */
42
+ onPostAuthorize(name, handler, options) {
43
+ return this.registry.register({
44
+ name,
45
+ phase: HookPhase.POST_AUTHORIZE,
46
+ handler,
47
+ ...options,
48
+ });
49
+ }
50
+ /**
51
+ * Register a pre-execute hook
52
+ */
53
+ onPreExecute(name, handler, options) {
54
+ return this.registry.register({
55
+ name,
56
+ phase: HookPhase.PRE_EXECUTE,
57
+ handler,
58
+ ...options,
59
+ });
60
+ }
61
+ /**
62
+ * Register a post-execute hook
63
+ */
64
+ onPostExecute(name, handler, options) {
65
+ return this.registry.register({
66
+ name,
67
+ phase: HookPhase.POST_EXECUTE,
68
+ handler,
69
+ ...options,
70
+ });
71
+ }
72
+ /**
73
+ * Register an execution-failed hook
74
+ */
75
+ onExecutionFailed(name, handler, options) {
76
+ return this.registry.register({
77
+ name,
78
+ phase: HookPhase.EXECUTION_FAILED,
79
+ handler,
80
+ ...options,
81
+ });
82
+ }
83
+ /**
84
+ * Register a trust-change hook
85
+ */
86
+ onTrustChange(name, handler, options) {
87
+ return this.registry.register({
88
+ name,
89
+ phase: HookPhase.TRUST_CHANGE,
90
+ handler,
91
+ ...options,
92
+ });
93
+ }
94
+ /**
95
+ * Register a trust-violation hook
96
+ */
97
+ onTrustViolation(name, handler, options) {
98
+ return this.registry.register({
99
+ name,
100
+ phase: HookPhase.TRUST_VIOLATION,
101
+ handler,
102
+ ...options,
103
+ });
104
+ }
105
+ /**
106
+ * Register an event-emitted hook
107
+ */
108
+ onEventEmitted(name, handler, options) {
109
+ return this.registry.register({
110
+ name,
111
+ phase: HookPhase.EVENT_EMITTED,
112
+ handler,
113
+ ...options,
114
+ });
115
+ }
116
+ /**
117
+ * Register a hook with full options
118
+ */
119
+ register(options) {
120
+ return this.registry.register(options);
121
+ }
122
+ // ============================================================
123
+ // Hook Execution
124
+ // ============================================================
125
+ /**
126
+ * Execute pre-authorize hooks
127
+ */
128
+ async executePreAuthorize(context, options) {
129
+ return this.execute(HookPhase.PRE_AUTHORIZE, context, options);
130
+ }
131
+ /**
132
+ * Execute post-authorize hooks
133
+ */
134
+ async executePostAuthorize(context, options) {
135
+ return this.execute(HookPhase.POST_AUTHORIZE, context, options);
136
+ }
137
+ /**
138
+ * Execute pre-execute hooks
139
+ */
140
+ async executePreExecute(context, options) {
141
+ return this.execute(HookPhase.PRE_EXECUTE, context, options);
142
+ }
143
+ /**
144
+ * Execute post-execute hooks
145
+ */
146
+ async executePostExecute(context, options) {
147
+ return this.execute(HookPhase.POST_EXECUTE, context, options);
148
+ }
149
+ /**
150
+ * Execute execution-failed hooks
151
+ */
152
+ async executeExecutionFailed(context, options) {
153
+ return this.execute(HookPhase.EXECUTION_FAILED, context, options);
154
+ }
155
+ /**
156
+ * Execute trust-change hooks
157
+ */
158
+ async executeTrustChange(context, options) {
159
+ return this.execute(HookPhase.TRUST_CHANGE, context, options);
160
+ }
161
+ /**
162
+ * Execute trust-violation hooks
163
+ */
164
+ async executeTrustViolation(context, options) {
165
+ return this.execute(HookPhase.TRUST_VIOLATION, context, options);
166
+ }
167
+ /**
168
+ * Execute event-emitted hooks
169
+ */
170
+ async executeEventEmitted(context, options) {
171
+ return this.execute(HookPhase.EVENT_EMITTED, context, options);
172
+ }
173
+ /**
174
+ * Execute hooks for a phase
175
+ */
176
+ async execute(phase, context, options) {
177
+ const mergedOptions = { ...this.config.defaultExecutionOptions, ...options };
178
+ const summary = await this.executor.execute(phase, context, mergedOptions);
179
+ if (this.config.enableLogging) {
180
+ this.logSummary(summary);
181
+ }
182
+ return summary;
183
+ }
184
+ // ============================================================
185
+ // Hook Management
186
+ // ============================================================
187
+ /**
188
+ * Unregister a hook
189
+ */
190
+ unregister(hookId) {
191
+ return this.registry.unregister(hookId);
192
+ }
193
+ /**
194
+ * Enable a hook
195
+ */
196
+ enable(hookId) {
197
+ return this.registry.enable(hookId);
198
+ }
199
+ /**
200
+ * Disable a hook
201
+ */
202
+ disable(hookId) {
203
+ return this.registry.disable(hookId);
204
+ }
205
+ /**
206
+ * Get a hook by ID
207
+ */
208
+ getHook(hookId) {
209
+ return this.registry.get(hookId);
210
+ }
211
+ /**
212
+ * Get all hooks for a phase
213
+ */
214
+ getHooksForPhase(phase) {
215
+ return this.registry.getByPhase(phase);
216
+ }
217
+ /**
218
+ * Get hook statistics
219
+ */
220
+ getStats() {
221
+ return this.registry.getStats();
222
+ }
223
+ /**
224
+ * Clear all hooks
225
+ */
226
+ clear() {
227
+ this.registry.clear();
228
+ }
229
+ /**
230
+ * Get the underlying registry
231
+ */
232
+ getRegistry() {
233
+ return this.registry;
234
+ }
235
+ /**
236
+ * Get the underlying executor
237
+ */
238
+ getExecutor() {
239
+ return this.executor;
240
+ }
241
+ // ============================================================
242
+ // Private Methods
243
+ // ============================================================
244
+ logSummary(summary) {
245
+ const status = summary.aborted ? 'ABORTED' : summary.failed > 0 ? 'FAILED' : 'OK';
246
+ console.log(`[Hooks] ${summary.phase}: ${status} - ` +
247
+ `${summary.succeeded}/${summary.hooksExecuted} succeeded ` +
248
+ `(${summary.totalDurationMs}ms)`);
249
+ if (summary.aborted && summary.abortReason) {
250
+ console.log(`[Hooks] Abort reason: ${summary.abortReason}`);
251
+ }
252
+ for (const result of summary.results) {
253
+ if (!result.result.success) {
254
+ console.log(`[Hooks] ${result.hookName} failed: ${result.result.error?.message}`);
255
+ }
256
+ }
257
+ }
258
+ }
259
+ /**
260
+ * Create a hook manager
261
+ */
262
+ export function createHookManager(config) {
263
+ return new HookManager(config);
264
+ }
265
+ // Re-export utility functions
266
+ export { successResult, abortResult, errorResult };
267
+ //# 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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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Hook Registry - Central registry for hook management
3
+ *
4
+ * Manages registration, retrieval, and lifecycle of hooks.
5
+ */
6
+ import { HookPhase, HookPriority, type HookDefinition, type HookHandler, type AnyHookContext } from './types.js';
7
+ /**
8
+ * Options for registering a hook
9
+ */
10
+ export interface RegisterHookOptions<T extends AnyHookContext = AnyHookContext> {
11
+ /** Unique hook ID (auto-generated if not provided) */
12
+ id?: string;
13
+ /** Hook name */
14
+ name: string;
15
+ /** Hook phase */
16
+ phase: HookPhase;
17
+ /** The handler function */
18
+ handler: HookHandler<T>;
19
+ /** Execution priority (default: NORMAL) */
20
+ priority?: HookPriority;
21
+ /** Whether enabled (default: true) */
22
+ enabled?: boolean;
23
+ /** Timeout in ms (default: 5000) */
24
+ timeoutMs?: number;
25
+ /** Continue on error (default: false) */
26
+ continueOnError?: boolean;
27
+ /** Filter function */
28
+ filter?: (context: T) => boolean;
29
+ /** Metadata */
30
+ metadata?: Record<string, unknown>;
31
+ }
32
+ /**
33
+ * Hook registry error
34
+ */
35
+ export declare class HookRegistryError extends Error {
36
+ readonly code: HookRegistryErrorCode;
37
+ readonly hookId?: string | undefined;
38
+ constructor(message: string, code: HookRegistryErrorCode, hookId?: string | undefined);
39
+ }
40
+ /**
41
+ * Error codes for hook registry
42
+ */
43
+ export declare enum HookRegistryErrorCode {
44
+ DUPLICATE_HOOK = "DUPLICATE_HOOK",
45
+ HOOK_NOT_FOUND = "HOOK_NOT_FOUND",
46
+ INVALID_HOOK = "INVALID_HOOK"
47
+ }
48
+ /**
49
+ * HookRegistry - Manages hook registration and retrieval
50
+ */
51
+ export declare class HookRegistry {
52
+ private hooks;
53
+ private hooksByPhase;
54
+ constructor();
55
+ /**
56
+ * Register a new hook
57
+ */
58
+ register<T extends AnyHookContext>(options: RegisterHookOptions<T>): HookDefinition<T>;
59
+ /**
60
+ * Unregister a hook
61
+ */
62
+ unregister(hookId: string): boolean;
63
+ /**
64
+ * Get a hook by ID
65
+ */
66
+ get<T extends AnyHookContext>(hookId: string): HookDefinition<T> | undefined;
67
+ /**
68
+ * Get all hooks for a phase, sorted by priority
69
+ */
70
+ getByPhase<T extends AnyHookContext>(phase: HookPhase): HookDefinition<T>[];
71
+ /**
72
+ * Get enabled hooks for a phase, sorted by priority
73
+ */
74
+ getEnabledByPhase<T extends AnyHookContext>(phase: HookPhase): HookDefinition<T>[];
75
+ /**
76
+ * Enable a hook
77
+ */
78
+ enable(hookId: string): boolean;
79
+ /**
80
+ * Disable a hook
81
+ */
82
+ disable(hookId: string): boolean;
83
+ /**
84
+ * Check if a hook exists
85
+ */
86
+ has(hookId: string): boolean;
87
+ /**
88
+ * Get the count of hooks
89
+ */
90
+ count(phase?: HookPhase): number;
91
+ /**
92
+ * Get all hook IDs
93
+ */
94
+ getIds(): string[];
95
+ /**
96
+ * Get all hooks
97
+ */
98
+ getAll(): HookDefinition[];
99
+ /**
100
+ * Clear all hooks
101
+ */
102
+ clear(): void;
103
+ /**
104
+ * Clear hooks for a specific phase
105
+ */
106
+ clearPhase(phase: HookPhase): void;
107
+ /**
108
+ * Get statistics about registered hooks
109
+ */
110
+ getStats(): {
111
+ totalHooks: number;
112
+ enabledHooks: number;
113
+ disabledHooks: number;
114
+ byPhase: Record<string, number>;
115
+ byPriority: Record<string, number>;
116
+ };
117
+ }
118
+ /**
119
+ * Create a new hook registry
120
+ */
121
+ export declare function createHookRegistry(): HookRegistry;
122
+ /**
123
+ * Get or create the global hook registry
124
+ */
125
+ export declare function getGlobalHookRegistry(): HookRegistry;
126
+ /**
127
+ * Reset the global hook registry (for testing)
128
+ */
129
+ export declare function resetGlobalHookRegistry(): void;
130
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/hooks/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * Hook Registry - Central registry for hook management
3
+ *
4
+ * Manages registration, retrieval, and lifecycle of hooks.
5
+ */
6
+ import { HookPhase, HookPriority, } from './types.js';
7
+ /**
8
+ * Hook registry error
9
+ */
10
+ export class HookRegistryError extends Error {
11
+ code;
12
+ hookId;
13
+ constructor(message, code, hookId) {
14
+ super(message);
15
+ this.code = code;
16
+ this.hookId = hookId;
17
+ this.name = 'HookRegistryError';
18
+ }
19
+ }
20
+ /**
21
+ * Error codes for hook registry
22
+ */
23
+ export var HookRegistryErrorCode;
24
+ (function (HookRegistryErrorCode) {
25
+ HookRegistryErrorCode["DUPLICATE_HOOK"] = "DUPLICATE_HOOK";
26
+ HookRegistryErrorCode["HOOK_NOT_FOUND"] = "HOOK_NOT_FOUND";
27
+ HookRegistryErrorCode["INVALID_HOOK"] = "INVALID_HOOK";
28
+ })(HookRegistryErrorCode || (HookRegistryErrorCode = {}));
29
+ /**
30
+ * Counter for generating unique hook IDs
31
+ */
32
+ let hookIdCounter = 0;
33
+ /**
34
+ * Generate a unique hook ID
35
+ */
36
+ function generateHookId(phase) {
37
+ hookIdCounter++;
38
+ return `${phase}-${hookIdCounter}-${Date.now().toString(36)}`;
39
+ }
40
+ /**
41
+ * HookRegistry - Manages hook registration and retrieval
42
+ */
43
+ export class HookRegistry {
44
+ hooks = new Map();
45
+ hooksByPhase = new Map();
46
+ constructor() {
47
+ // Initialize phase sets
48
+ for (const phase of Object.values(HookPhase)) {
49
+ this.hooksByPhase.set(phase, new Set());
50
+ }
51
+ }
52
+ /**
53
+ * Register a new hook
54
+ */
55
+ register(options) {
56
+ const id = options.id ?? generateHookId(options.phase);
57
+ if (this.hooks.has(id)) {
58
+ throw new HookRegistryError(`Hook with ID '${id}' already exists`, HookRegistryErrorCode.DUPLICATE_HOOK, id);
59
+ }
60
+ const hook = {
61
+ id,
62
+ name: options.name,
63
+ phase: options.phase,
64
+ priority: options.priority ?? HookPriority.NORMAL,
65
+ handler: options.handler,
66
+ enabled: options.enabled ?? true,
67
+ timeoutMs: options.timeoutMs ?? 5000,
68
+ continueOnError: options.continueOnError ?? false,
69
+ filter: options.filter,
70
+ metadata: options.metadata,
71
+ };
72
+ this.hooks.set(id, hook);
73
+ this.hooksByPhase.get(options.phase).add(id);
74
+ return hook;
75
+ }
76
+ /**
77
+ * Unregister a hook
78
+ */
79
+ unregister(hookId) {
80
+ const hook = this.hooks.get(hookId);
81
+ if (!hook) {
82
+ return false;
83
+ }
84
+ this.hooks.delete(hookId);
85
+ this.hooksByPhase.get(hook.phase).delete(hookId);
86
+ return true;
87
+ }
88
+ /**
89
+ * Get a hook by ID
90
+ */
91
+ get(hookId) {
92
+ return this.hooks.get(hookId);
93
+ }
94
+ /**
95
+ * Get all hooks for a phase, sorted by priority
96
+ */
97
+ getByPhase(phase) {
98
+ const hookIds = this.hooksByPhase.get(phase) ?? new Set();
99
+ const hooks = [];
100
+ for (const id of hookIds) {
101
+ const hook = this.hooks.get(id);
102
+ if (hook) {
103
+ hooks.push(hook);
104
+ }
105
+ }
106
+ // Sort by priority (lower number = higher priority)
107
+ return hooks.sort((a, b) => a.priority - b.priority);
108
+ }
109
+ /**
110
+ * Get enabled hooks for a phase, sorted by priority
111
+ */
112
+ getEnabledByPhase(phase) {
113
+ return this.getByPhase(phase).filter(h => h.enabled);
114
+ }
115
+ /**
116
+ * Enable a hook
117
+ */
118
+ enable(hookId) {
119
+ const hook = this.hooks.get(hookId);
120
+ if (!hook) {
121
+ return false;
122
+ }
123
+ hook.enabled = true;
124
+ return true;
125
+ }
126
+ /**
127
+ * Disable a hook
128
+ */
129
+ disable(hookId) {
130
+ const hook = this.hooks.get(hookId);
131
+ if (!hook) {
132
+ return false;
133
+ }
134
+ hook.enabled = false;
135
+ return true;
136
+ }
137
+ /**
138
+ * Check if a hook exists
139
+ */
140
+ has(hookId) {
141
+ return this.hooks.has(hookId);
142
+ }
143
+ /**
144
+ * Get the count of hooks
145
+ */
146
+ count(phase) {
147
+ if (phase) {
148
+ return this.hooksByPhase.get(phase)?.size ?? 0;
149
+ }
150
+ return this.hooks.size;
151
+ }
152
+ /**
153
+ * Get all hook IDs
154
+ */
155
+ getIds() {
156
+ return Array.from(this.hooks.keys());
157
+ }
158
+ /**
159
+ * Get all hooks
160
+ */
161
+ getAll() {
162
+ return Array.from(this.hooks.values());
163
+ }
164
+ /**
165
+ * Clear all hooks
166
+ */
167
+ clear() {
168
+ this.hooks.clear();
169
+ for (const phase of Object.values(HookPhase)) {
170
+ this.hooksByPhase.set(phase, new Set());
171
+ }
172
+ }
173
+ /**
174
+ * Clear hooks for a specific phase
175
+ */
176
+ clearPhase(phase) {
177
+ const hookIds = this.hooksByPhase.get(phase) ?? new Set();
178
+ for (const id of hookIds) {
179
+ this.hooks.delete(id);
180
+ }
181
+ this.hooksByPhase.set(phase, new Set());
182
+ }
183
+ /**
184
+ * Get statistics about registered hooks
185
+ */
186
+ getStats() {
187
+ const byPhase = {};
188
+ const byPriority = {};
189
+ let enabledCount = 0;
190
+ let disabledCount = 0;
191
+ for (const [phase, ids] of this.hooksByPhase) {
192
+ byPhase[phase] = ids.size;
193
+ }
194
+ for (const hook of this.hooks.values()) {
195
+ if (hook.enabled) {
196
+ enabledCount++;
197
+ }
198
+ else {
199
+ disabledCount++;
200
+ }
201
+ const priorityName = HookPriority[hook.priority] ?? String(hook.priority);
202
+ byPriority[priorityName] = (byPriority[priorityName] ?? 0) + 1;
203
+ }
204
+ return {
205
+ totalHooks: this.hooks.size,
206
+ enabledHooks: enabledCount,
207
+ disabledHooks: disabledCount,
208
+ byPhase,
209
+ byPriority,
210
+ };
211
+ }
212
+ }
213
+ /**
214
+ * Create a new hook registry
215
+ */
216
+ export function createHookRegistry() {
217
+ return new HookRegistry();
218
+ }
219
+ /**
220
+ * Global hook registry singleton
221
+ */
222
+ let globalRegistry = null;
223
+ /**
224
+ * Get or create the global hook registry
225
+ */
226
+ export function getGlobalHookRegistry() {
227
+ if (!globalRegistry) {
228
+ globalRegistry = createHookRegistry();
229
+ }
230
+ return globalRegistry;
231
+ }
232
+ /**
233
+ * Reset the global hook registry (for testing)
234
+ */
235
+ export function resetGlobalHookRegistry() {
236
+ globalRegistry = null;
237
+ }
238
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/hooks/registry.ts"],"names":[],"mappings":"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"}