@claude-flow/hooks 3.0.0-alpha.1
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.
- package/README.md +440 -0
- package/bin/hooks-daemon.js +199 -0
- package/bin/statusline.js +77 -0
- package/dist/bridge/official-hooks-bridge.d.ts +99 -0
- package/dist/bridge/official-hooks-bridge.d.ts.map +1 -0
- package/dist/bridge/official-hooks-bridge.js +280 -0
- package/dist/bridge/official-hooks-bridge.js.map +1 -0
- package/dist/cli/guidance-cli.d.ts +17 -0
- package/dist/cli/guidance-cli.d.ts.map +1 -0
- package/dist/cli/guidance-cli.js +486 -0
- package/dist/cli/guidance-cli.js.map +1 -0
- package/dist/daemons/index.d.ts +204 -0
- package/dist/daemons/index.d.ts.map +1 -0
- package/dist/daemons/index.js +443 -0
- package/dist/daemons/index.js.map +1 -0
- package/dist/executor/index.d.ts +80 -0
- package/dist/executor/index.d.ts.map +1 -0
- package/dist/executor/index.js +273 -0
- package/dist/executor/index.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/index.d.ts +11 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +11 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm-hooks.d.ts +93 -0
- package/dist/llm/llm-hooks.d.ts.map +1 -0
- package/dist/llm/llm-hooks.js +382 -0
- package/dist/llm/llm-hooks.js.map +1 -0
- package/dist/mcp/index.d.ts +61 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +501 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/reasoningbank/guidance-provider.d.ts +78 -0
- package/dist/reasoningbank/guidance-provider.d.ts.map +1 -0
- package/dist/reasoningbank/guidance-provider.js +350 -0
- package/dist/reasoningbank/guidance-provider.js.map +1 -0
- package/dist/reasoningbank/index.d.ts +212 -0
- package/dist/reasoningbank/index.d.ts.map +1 -0
- package/dist/reasoningbank/index.js +785 -0
- package/dist/reasoningbank/index.js.map +1 -0
- package/dist/registry/index.d.ts +85 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +212 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/statusline/index.d.ts +128 -0
- package/dist/statusline/index.d.ts.map +1 -0
- package/dist/statusline/index.js +493 -0
- package/dist/statusline/index.js.map +1 -0
- package/dist/swarm/index.d.ts +271 -0
- package/dist/swarm/index.d.ts.map +1 -0
- package/dist/swarm/index.js +638 -0
- package/dist/swarm/index.js.map +1 -0
- package/dist/types.d.ts +525 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +56 -0
- package/dist/types.js.map +1 -0
- package/dist/workers/index.d.ts +232 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +1521 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/mcp-tools.d.ts +37 -0
- package/dist/workers/mcp-tools.d.ts.map +1 -0
- package/dist/workers/mcp-tools.js +414 -0
- package/dist/workers/mcp-tools.js.map +1 -0
- package/dist/workers/session-hook.d.ts +42 -0
- package/dist/workers/session-hook.d.ts.map +1 -0
- package/dist/workers/session-hook.js +172 -0
- package/dist/workers/session-hook.js.map +1 -0
- package/package.json +101 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Official Claude Code Hooks Bridge
|
|
3
|
+
*
|
|
4
|
+
* Maps V3 internal hook events to official Claude Code hook events.
|
|
5
|
+
* This bridge enables seamless integration between claude-flow's
|
|
6
|
+
* internal hook system and the official Claude Code plugin API.
|
|
7
|
+
*
|
|
8
|
+
* @module v3/hooks/bridge/official-hooks-bridge
|
|
9
|
+
*/
|
|
10
|
+
import { HookEvent, type HookHandler, type HookContext, type HookResult } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Official Claude Code hook event types
|
|
13
|
+
* Based on https://code.claude.com/docs/en/hooks
|
|
14
|
+
*/
|
|
15
|
+
export type OfficialHookEvent = 'PreToolUse' | 'PostToolUse' | 'UserPromptSubmit' | 'PermissionRequest' | 'Notification' | 'Stop' | 'SubagentStop' | 'PreCompact' | 'SessionStart';
|
|
16
|
+
/**
|
|
17
|
+
* Official hook input structure (received via stdin)
|
|
18
|
+
*/
|
|
19
|
+
export interface OfficialHookInput {
|
|
20
|
+
session_id: string;
|
|
21
|
+
transcript_path: string;
|
|
22
|
+
cwd: string;
|
|
23
|
+
permission_mode: string;
|
|
24
|
+
hook_event_name: OfficialHookEvent;
|
|
25
|
+
tool_name?: string;
|
|
26
|
+
tool_input?: Record<string, unknown>;
|
|
27
|
+
tool_output?: unknown;
|
|
28
|
+
tool_success?: boolean;
|
|
29
|
+
tool_exit_code?: number;
|
|
30
|
+
prompt?: string;
|
|
31
|
+
notification_message?: string;
|
|
32
|
+
notification_level?: 'info' | 'warning' | 'error';
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Official hook output structure (returned via stdout)
|
|
36
|
+
*/
|
|
37
|
+
export interface OfficialHookOutput {
|
|
38
|
+
/** Decision for permission/flow control */
|
|
39
|
+
decision?: 'allow' | 'deny' | 'block' | 'ask' | 'approve' | 'stop' | 'continue';
|
|
40
|
+
/** Reason for the decision */
|
|
41
|
+
reason?: string;
|
|
42
|
+
/** Whether to continue processing (false stops Claude) */
|
|
43
|
+
continue?: boolean;
|
|
44
|
+
/** Modified tool input (for PreToolUse) */
|
|
45
|
+
updatedInput?: Record<string, unknown>;
|
|
46
|
+
/** Suppress the tool call result display */
|
|
47
|
+
suppressOutput?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Mapping from V3 HookEvent to Official hook events
|
|
51
|
+
*/
|
|
52
|
+
export declare const V3_TO_OFFICIAL_HOOK_MAP: Record<HookEvent, OfficialHookEvent | null>;
|
|
53
|
+
/**
|
|
54
|
+
* Tool matchers for V3 events that map to PreToolUse/PostToolUse
|
|
55
|
+
*/
|
|
56
|
+
export declare const V3_TOOL_MATCHERS: Partial<Record<HookEvent, string>>;
|
|
57
|
+
/**
|
|
58
|
+
* Bridge class for converting between V3 and official hooks
|
|
59
|
+
*/
|
|
60
|
+
export declare class OfficialHooksBridge {
|
|
61
|
+
/**
|
|
62
|
+
* Convert official hook input to V3 HookContext
|
|
63
|
+
*/
|
|
64
|
+
static toV3Context(input: OfficialHookInput): HookContext;
|
|
65
|
+
/**
|
|
66
|
+
* Convert V3 HookResult to official hook output
|
|
67
|
+
*/
|
|
68
|
+
static toOfficialOutput(result: HookResult, event: OfficialHookEvent): OfficialHookOutput;
|
|
69
|
+
/**
|
|
70
|
+
* Convert official hook event to V3 HookEvent
|
|
71
|
+
*/
|
|
72
|
+
static officialToV3Event(officialEvent: OfficialHookEvent, toolName?: string): HookEvent;
|
|
73
|
+
/**
|
|
74
|
+
* Get tool matcher for a V3 event
|
|
75
|
+
*/
|
|
76
|
+
static getToolMatcher(event: HookEvent): string | null;
|
|
77
|
+
/**
|
|
78
|
+
* Check if V3 event maps to an official hook
|
|
79
|
+
*/
|
|
80
|
+
static hasOfficialMapping(event: HookEvent): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Create a CLI command for a V3 hook handler
|
|
83
|
+
*/
|
|
84
|
+
static createCLICommand(event: HookEvent, handler: string): string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Process stdin from official Claude Code hook system
|
|
88
|
+
*/
|
|
89
|
+
export declare function processOfficialHookInput(): Promise<OfficialHookInput | null>;
|
|
90
|
+
/**
|
|
91
|
+
* Output result to official Claude Code hook system
|
|
92
|
+
*/
|
|
93
|
+
export declare function outputOfficialHookResult(output: OfficialHookOutput): void;
|
|
94
|
+
/**
|
|
95
|
+
* Execute a V3 handler and bridge to official output
|
|
96
|
+
*/
|
|
97
|
+
export declare function executeWithBridge(input: OfficialHookInput, handler: HookHandler): Promise<OfficialHookOutput>;
|
|
98
|
+
export default OfficialHooksBridge;
|
|
99
|
+
//# sourceMappingURL=official-hooks-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"official-hooks-bridge.d.ts","sourceRoot":"","sources":["../../src/bridge/official-hooks-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Official Claude Code Hooks Bridge
|
|
3
|
+
*
|
|
4
|
+
* Maps V3 internal hook events to official Claude Code hook events.
|
|
5
|
+
* This bridge enables seamless integration between claude-flow's
|
|
6
|
+
* internal hook system and the official Claude Code plugin API.
|
|
7
|
+
*
|
|
8
|
+
* @module v3/hooks/bridge/official-hooks-bridge
|
|
9
|
+
*/
|
|
10
|
+
import { HookEvent } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Mapping from V3 HookEvent to Official hook events
|
|
13
|
+
*/
|
|
14
|
+
export const V3_TO_OFFICIAL_HOOK_MAP = {
|
|
15
|
+
// Direct mappings
|
|
16
|
+
[HookEvent.PreToolUse]: 'PreToolUse',
|
|
17
|
+
[HookEvent.PostToolUse]: 'PostToolUse',
|
|
18
|
+
[HookEvent.SessionStart]: 'SessionStart',
|
|
19
|
+
// File operations map to tool hooks with matchers
|
|
20
|
+
[HookEvent.PreEdit]: 'PreToolUse', // matcher: Edit|Write|MultiEdit
|
|
21
|
+
[HookEvent.PostEdit]: 'PostToolUse', // matcher: Edit|Write|MultiEdit
|
|
22
|
+
[HookEvent.PreRead]: 'PreToolUse', // matcher: Read
|
|
23
|
+
[HookEvent.PostRead]: 'PostToolUse', // matcher: Read
|
|
24
|
+
// Command operations map to tool hooks
|
|
25
|
+
[HookEvent.PreCommand]: 'PreToolUse', // matcher: Bash
|
|
26
|
+
[HookEvent.PostCommand]: 'PostToolUse', // matcher: Bash
|
|
27
|
+
// Task operations
|
|
28
|
+
[HookEvent.PreTask]: 'UserPromptSubmit',
|
|
29
|
+
[HookEvent.PostTask]: 'PostToolUse', // matcher: Task
|
|
30
|
+
[HookEvent.TaskProgress]: null, // Internal only
|
|
31
|
+
// Session operations
|
|
32
|
+
[HookEvent.SessionEnd]: 'Stop',
|
|
33
|
+
[HookEvent.SessionRestore]: 'SessionStart',
|
|
34
|
+
// Agent operations
|
|
35
|
+
[HookEvent.AgentSpawn]: 'PostToolUse', // matcher: Task
|
|
36
|
+
[HookEvent.AgentTerminate]: 'SubagentStop',
|
|
37
|
+
// Routing (internal)
|
|
38
|
+
[HookEvent.PreRoute]: 'UserPromptSubmit',
|
|
39
|
+
[HookEvent.PostRoute]: null, // Internal only
|
|
40
|
+
// Learning (internal)
|
|
41
|
+
[HookEvent.PatternLearned]: null, // Internal only
|
|
42
|
+
[HookEvent.PatternConsolidated]: null, // Internal only
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Tool matchers for V3 events that map to PreToolUse/PostToolUse
|
|
46
|
+
*/
|
|
47
|
+
export const V3_TOOL_MATCHERS = {
|
|
48
|
+
[HookEvent.PreEdit]: '^(Write|Edit|MultiEdit)$',
|
|
49
|
+
[HookEvent.PostEdit]: '^(Write|Edit|MultiEdit)$',
|
|
50
|
+
[HookEvent.PreRead]: '^Read$',
|
|
51
|
+
[HookEvent.PostRead]: '^Read$',
|
|
52
|
+
[HookEvent.PreCommand]: '^Bash$',
|
|
53
|
+
[HookEvent.PostCommand]: '^Bash$',
|
|
54
|
+
[HookEvent.PreTask]: '^Task$',
|
|
55
|
+
[HookEvent.PostTask]: '^Task$',
|
|
56
|
+
[HookEvent.AgentSpawn]: '^Task$',
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Bridge class for converting between V3 and official hooks
|
|
60
|
+
*/
|
|
61
|
+
export class OfficialHooksBridge {
|
|
62
|
+
/**
|
|
63
|
+
* Convert official hook input to V3 HookContext
|
|
64
|
+
*/
|
|
65
|
+
static toV3Context(input) {
|
|
66
|
+
const event = this.officialToV3Event(input.hook_event_name, input.tool_name);
|
|
67
|
+
const context = {
|
|
68
|
+
event,
|
|
69
|
+
timestamp: new Date(),
|
|
70
|
+
metadata: {
|
|
71
|
+
session_id: input.session_id,
|
|
72
|
+
transcript_path: input.transcript_path,
|
|
73
|
+
cwd: input.cwd,
|
|
74
|
+
permission_mode: input.permission_mode,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
// Add tool information
|
|
78
|
+
if (input.tool_name) {
|
|
79
|
+
context.tool = {
|
|
80
|
+
name: input.tool_name,
|
|
81
|
+
parameters: input.tool_input ?? {},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Add file information for file operations
|
|
85
|
+
if (input.tool_name && ['Write', 'Edit', 'MultiEdit', 'Read'].includes(input.tool_name)) {
|
|
86
|
+
context.file = {
|
|
87
|
+
path: input.tool_input?.file_path ?? '',
|
|
88
|
+
operation: input.tool_name === 'Read' ? 'read' : 'modify',
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// Add command information for Bash
|
|
92
|
+
if (input.tool_name === 'Bash') {
|
|
93
|
+
context.command = {
|
|
94
|
+
raw: input.tool_input?.command ?? '',
|
|
95
|
+
workingDirectory: input.cwd,
|
|
96
|
+
exitCode: input.tool_exit_code,
|
|
97
|
+
output: typeof input.tool_output === 'string' ? input.tool_output : undefined,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// Add task information for Task tool
|
|
101
|
+
if (input.tool_name === 'Task') {
|
|
102
|
+
context.task = {
|
|
103
|
+
id: `task-${Date.now()}`,
|
|
104
|
+
description: input.tool_input?.prompt ?? '',
|
|
105
|
+
agent: input.tool_input?.subagent_type,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
// Add session information
|
|
109
|
+
context.session = {
|
|
110
|
+
id: input.session_id,
|
|
111
|
+
startedAt: new Date(),
|
|
112
|
+
};
|
|
113
|
+
// Add prompt for UserPromptSubmit
|
|
114
|
+
if (input.prompt) {
|
|
115
|
+
context.routing = {
|
|
116
|
+
task: input.prompt,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return context;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Convert V3 HookResult to official hook output
|
|
123
|
+
*/
|
|
124
|
+
static toOfficialOutput(result, event) {
|
|
125
|
+
const output = {};
|
|
126
|
+
// Map abort to decision
|
|
127
|
+
if (result.abort) {
|
|
128
|
+
output.decision = event === 'PermissionRequest' ? 'deny' : 'block';
|
|
129
|
+
output.continue = false;
|
|
130
|
+
}
|
|
131
|
+
else if (result.success) {
|
|
132
|
+
output.decision = event === 'PermissionRequest' ? 'allow' : 'continue';
|
|
133
|
+
output.continue = true;
|
|
134
|
+
}
|
|
135
|
+
// Add reason
|
|
136
|
+
if (result.error) {
|
|
137
|
+
output.reason = result.error;
|
|
138
|
+
}
|
|
139
|
+
else if (result.message) {
|
|
140
|
+
output.reason = result.message;
|
|
141
|
+
}
|
|
142
|
+
// Pass through updated input if present
|
|
143
|
+
if (result.data?.updatedInput) {
|
|
144
|
+
output.updatedInput = result.data.updatedInput;
|
|
145
|
+
}
|
|
146
|
+
return output;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Convert official hook event to V3 HookEvent
|
|
150
|
+
*/
|
|
151
|
+
static officialToV3Event(officialEvent, toolName) {
|
|
152
|
+
// Handle tool-specific mappings
|
|
153
|
+
if (officialEvent === 'PreToolUse' && toolName) {
|
|
154
|
+
if (['Write', 'Edit', 'MultiEdit'].includes(toolName)) {
|
|
155
|
+
return HookEvent.PreEdit;
|
|
156
|
+
}
|
|
157
|
+
if (toolName === 'Read') {
|
|
158
|
+
return HookEvent.PreRead;
|
|
159
|
+
}
|
|
160
|
+
if (toolName === 'Bash') {
|
|
161
|
+
return HookEvent.PreCommand;
|
|
162
|
+
}
|
|
163
|
+
if (toolName === 'Task') {
|
|
164
|
+
return HookEvent.PreTask;
|
|
165
|
+
}
|
|
166
|
+
return HookEvent.PreToolUse;
|
|
167
|
+
}
|
|
168
|
+
if (officialEvent === 'PostToolUse' && toolName) {
|
|
169
|
+
if (['Write', 'Edit', 'MultiEdit'].includes(toolName)) {
|
|
170
|
+
return HookEvent.PostEdit;
|
|
171
|
+
}
|
|
172
|
+
if (toolName === 'Read') {
|
|
173
|
+
return HookEvent.PostRead;
|
|
174
|
+
}
|
|
175
|
+
if (toolName === 'Bash') {
|
|
176
|
+
return HookEvent.PostCommand;
|
|
177
|
+
}
|
|
178
|
+
if (toolName === 'Task') {
|
|
179
|
+
return HookEvent.PostTask;
|
|
180
|
+
}
|
|
181
|
+
return HookEvent.PostToolUse;
|
|
182
|
+
}
|
|
183
|
+
// Direct mappings
|
|
184
|
+
const mapping = {
|
|
185
|
+
PreToolUse: HookEvent.PreToolUse,
|
|
186
|
+
PostToolUse: HookEvent.PostToolUse,
|
|
187
|
+
UserPromptSubmit: HookEvent.PreTask,
|
|
188
|
+
PermissionRequest: HookEvent.PreToolUse,
|
|
189
|
+
Notification: HookEvent.PostTask, // Closest match
|
|
190
|
+
Stop: HookEvent.SessionEnd,
|
|
191
|
+
SubagentStop: HookEvent.AgentTerminate,
|
|
192
|
+
PreCompact: HookEvent.SessionEnd, // Closest match
|
|
193
|
+
SessionStart: HookEvent.SessionStart,
|
|
194
|
+
};
|
|
195
|
+
return mapping[officialEvent] ?? HookEvent.PreToolUse;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get tool matcher for a V3 event
|
|
199
|
+
*/
|
|
200
|
+
static getToolMatcher(event) {
|
|
201
|
+
return V3_TOOL_MATCHERS[event] ?? null;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if V3 event maps to an official hook
|
|
205
|
+
*/
|
|
206
|
+
static hasOfficialMapping(event) {
|
|
207
|
+
return V3_TO_OFFICIAL_HOOK_MAP[event] !== null;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Create a CLI command for a V3 hook handler
|
|
211
|
+
*/
|
|
212
|
+
static createCLICommand(event, handler) {
|
|
213
|
+
const baseCommand = 'npx claude-flow@alpha hooks';
|
|
214
|
+
switch (event) {
|
|
215
|
+
case HookEvent.PreEdit:
|
|
216
|
+
return `${baseCommand} pre-edit --file "$TOOL_INPUT_file_path"`;
|
|
217
|
+
case HookEvent.PostEdit:
|
|
218
|
+
return `${baseCommand} post-edit --file "$TOOL_INPUT_file_path" --success "$TOOL_SUCCESS" --train-patterns`;
|
|
219
|
+
case HookEvent.PreCommand:
|
|
220
|
+
return `${baseCommand} pre-command --command "$TOOL_INPUT_command"`;
|
|
221
|
+
case HookEvent.PostCommand:
|
|
222
|
+
return `${baseCommand} post-command --command "$TOOL_INPUT_command" --success "$TOOL_SUCCESS"`;
|
|
223
|
+
case HookEvent.PreTask:
|
|
224
|
+
return `${baseCommand} pre-task --description "$PROMPT"`;
|
|
225
|
+
case HookEvent.PostTask:
|
|
226
|
+
return `${baseCommand} post-task --task-id "$TOOL_RESULT_agent_id" --analyze-performance`;
|
|
227
|
+
case HookEvent.SessionStart:
|
|
228
|
+
return `${baseCommand} session-start --session-id "$SESSION_ID" --load-context`;
|
|
229
|
+
case HookEvent.SessionEnd:
|
|
230
|
+
return `${baseCommand} session-end --session-id "$SESSION_ID" --export-metrics`;
|
|
231
|
+
default:
|
|
232
|
+
return `${baseCommand} ${handler}`;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Process stdin from official Claude Code hook system
|
|
238
|
+
*/
|
|
239
|
+
export async function processOfficialHookInput() {
|
|
240
|
+
return new Promise((resolve) => {
|
|
241
|
+
let data = '';
|
|
242
|
+
process.stdin.setEncoding('utf8');
|
|
243
|
+
process.stdin.on('readable', () => {
|
|
244
|
+
let chunk;
|
|
245
|
+
while ((chunk = process.stdin.read()) !== null) {
|
|
246
|
+
data += chunk;
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
process.stdin.on('end', () => {
|
|
250
|
+
try {
|
|
251
|
+
resolve(JSON.parse(data));
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
resolve(null);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
// Handle case where no stdin (testing)
|
|
258
|
+
setTimeout(() => {
|
|
259
|
+
if (!data) {
|
|
260
|
+
resolve(null);
|
|
261
|
+
}
|
|
262
|
+
}, 100);
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Output result to official Claude Code hook system
|
|
267
|
+
*/
|
|
268
|
+
export function outputOfficialHookResult(output) {
|
|
269
|
+
console.log(JSON.stringify(output));
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Execute a V3 handler and bridge to official output
|
|
273
|
+
*/
|
|
274
|
+
export async function executeWithBridge(input, handler) {
|
|
275
|
+
const context = OfficialHooksBridge.toV3Context(input);
|
|
276
|
+
const result = await handler(context);
|
|
277
|
+
return OfficialHooksBridge.toOfficialOutput(result, input.hook_event_name);
|
|
278
|
+
}
|
|
279
|
+
export default OfficialHooksBridge;
|
|
280
|
+
//# sourceMappingURL=official-hooks-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"official-hooks-bridge.js","sourceRoot":"","sources":["../../src/bridge/official-hooks-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* V3 Guidance CLI
|
|
4
|
+
*
|
|
5
|
+
* Command-line interface for hooks guidance system.
|
|
6
|
+
* Outputs plain text or JSON that Claude Code hooks can consume.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* npx @claude-flow/hooks session-context
|
|
10
|
+
* npx @claude-flow/hooks user-prompt "Fix authentication bug"
|
|
11
|
+
* npx @claude-flow/hooks pre-edit "/path/to/file.ts"
|
|
12
|
+
* npx @claude-flow/hooks route "Implement caching layer"
|
|
13
|
+
*
|
|
14
|
+
* @module @claude-flow/hooks/cli/guidance-cli
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=guidance-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guidance-cli.d.ts","sourceRoot":"","sources":["../../src/cli/guidance-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG"}
|