@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.
Files changed (72) hide show
  1. package/README.md +440 -0
  2. package/bin/hooks-daemon.js +199 -0
  3. package/bin/statusline.js +77 -0
  4. package/dist/bridge/official-hooks-bridge.d.ts +99 -0
  5. package/dist/bridge/official-hooks-bridge.d.ts.map +1 -0
  6. package/dist/bridge/official-hooks-bridge.js +280 -0
  7. package/dist/bridge/official-hooks-bridge.js.map +1 -0
  8. package/dist/cli/guidance-cli.d.ts +17 -0
  9. package/dist/cli/guidance-cli.d.ts.map +1 -0
  10. package/dist/cli/guidance-cli.js +486 -0
  11. package/dist/cli/guidance-cli.js.map +1 -0
  12. package/dist/daemons/index.d.ts +204 -0
  13. package/dist/daemons/index.d.ts.map +1 -0
  14. package/dist/daemons/index.js +443 -0
  15. package/dist/daemons/index.js.map +1 -0
  16. package/dist/executor/index.d.ts +80 -0
  17. package/dist/executor/index.d.ts.map +1 -0
  18. package/dist/executor/index.js +273 -0
  19. package/dist/executor/index.js.map +1 -0
  20. package/dist/index.d.ts +51 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +85 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/llm/index.d.ts +11 -0
  25. package/dist/llm/index.d.ts.map +1 -0
  26. package/dist/llm/index.js +11 -0
  27. package/dist/llm/index.js.map +1 -0
  28. package/dist/llm/llm-hooks.d.ts +93 -0
  29. package/dist/llm/llm-hooks.d.ts.map +1 -0
  30. package/dist/llm/llm-hooks.js +382 -0
  31. package/dist/llm/llm-hooks.js.map +1 -0
  32. package/dist/mcp/index.d.ts +61 -0
  33. package/dist/mcp/index.d.ts.map +1 -0
  34. package/dist/mcp/index.js +501 -0
  35. package/dist/mcp/index.js.map +1 -0
  36. package/dist/reasoningbank/guidance-provider.d.ts +78 -0
  37. package/dist/reasoningbank/guidance-provider.d.ts.map +1 -0
  38. package/dist/reasoningbank/guidance-provider.js +350 -0
  39. package/dist/reasoningbank/guidance-provider.js.map +1 -0
  40. package/dist/reasoningbank/index.d.ts +212 -0
  41. package/dist/reasoningbank/index.d.ts.map +1 -0
  42. package/dist/reasoningbank/index.js +785 -0
  43. package/dist/reasoningbank/index.js.map +1 -0
  44. package/dist/registry/index.d.ts +85 -0
  45. package/dist/registry/index.d.ts.map +1 -0
  46. package/dist/registry/index.js +212 -0
  47. package/dist/registry/index.js.map +1 -0
  48. package/dist/statusline/index.d.ts +128 -0
  49. package/dist/statusline/index.d.ts.map +1 -0
  50. package/dist/statusline/index.js +493 -0
  51. package/dist/statusline/index.js.map +1 -0
  52. package/dist/swarm/index.d.ts +271 -0
  53. package/dist/swarm/index.d.ts.map +1 -0
  54. package/dist/swarm/index.js +638 -0
  55. package/dist/swarm/index.js.map +1 -0
  56. package/dist/types.d.ts +525 -0
  57. package/dist/types.d.ts.map +1 -0
  58. package/dist/types.js +56 -0
  59. package/dist/types.js.map +1 -0
  60. package/dist/workers/index.d.ts +232 -0
  61. package/dist/workers/index.d.ts.map +1 -0
  62. package/dist/workers/index.js +1521 -0
  63. package/dist/workers/index.js.map +1 -0
  64. package/dist/workers/mcp-tools.d.ts +37 -0
  65. package/dist/workers/mcp-tools.d.ts.map +1 -0
  66. package/dist/workers/mcp-tools.js +414 -0
  67. package/dist/workers/mcp-tools.js.map +1 -0
  68. package/dist/workers/session-hook.d.ts +42 -0
  69. package/dist/workers/session-hook.d.ts.map +1 -0
  70. package/dist/workers/session-hook.js +172 -0
  71. package/dist/workers/session-hook.js.map +1 -0
  72. package/package.json +101 -0
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Session Start Hook Integration
3
+ *
4
+ * Auto-starts workers when Claude Code session begins.
5
+ */
6
+ import { createWorkerManager } from './index.js';
7
+ import * as path from 'path';
8
+ // ============================================================================
9
+ // Session Hook Functions
10
+ // ============================================================================
11
+ /**
12
+ * Initialize workers on session start
13
+ *
14
+ * Call this from your SessionStart hook to auto-start the worker system.
15
+ */
16
+ export async function onSessionStart(config = {}) {
17
+ const { projectRoot = process.cwd(), autoStart = true, runInitialScan = true, workers = ['health', 'security', 'git'], } = config;
18
+ try {
19
+ // Create and initialize manager
20
+ const manager = createWorkerManager(projectRoot);
21
+ await manager.initialize();
22
+ let initialResults;
23
+ // Run initial scan of critical workers
24
+ if (runInitialScan && workers.length > 0) {
25
+ initialResults = {};
26
+ for (const workerName of workers) {
27
+ try {
28
+ const result = await manager.runWorker(workerName);
29
+ initialResults[workerName] = {
30
+ success: result.success,
31
+ data: result.data,
32
+ alerts: result.alerts,
33
+ };
34
+ }
35
+ catch {
36
+ initialResults[workerName] = { success: false, error: 'Worker failed' };
37
+ }
38
+ }
39
+ }
40
+ // Start scheduled workers
41
+ if (autoStart) {
42
+ await manager.start({
43
+ autoSave: true,
44
+ statuslineUpdate: true,
45
+ });
46
+ }
47
+ return {
48
+ success: true,
49
+ manager,
50
+ initialResults,
51
+ };
52
+ }
53
+ catch (error) {
54
+ return {
55
+ success: false,
56
+ manager: createWorkerManager(projectRoot),
57
+ error: error instanceof Error ? error.message : String(error),
58
+ };
59
+ }
60
+ }
61
+ /**
62
+ * Clean up workers on session end
63
+ */
64
+ export async function onSessionEnd(manager) {
65
+ await manager.stop();
66
+ }
67
+ /**
68
+ * Generate session start output for Claude Code hooks
69
+ *
70
+ * Returns formatted output suitable for Claude Code SessionStart hook.
71
+ */
72
+ export function formatSessionStartOutput(result) {
73
+ const lines = [];
74
+ if (result.success) {
75
+ lines.push('[Workers] System initialized');
76
+ if (result.initialResults) {
77
+ const healthResult = result.initialResults.health;
78
+ const securityResult = result.initialResults.security;
79
+ const gitResult = result.initialResults.git;
80
+ if (healthResult?.data) {
81
+ const status = healthResult.data.status || 'unknown';
82
+ const icon = status === 'healthy' ? '✓' : status === 'warning' ? '⚠' : '✗';
83
+ lines.push(` ${icon} Health: ${status}`);
84
+ }
85
+ if (securityResult?.data) {
86
+ const status = securityResult.data.status || 'unknown';
87
+ const issues = securityResult.data.totalIssues || 0;
88
+ const icon = status === 'clean' ? '✓' : status === 'warning' ? '⚠' : '✗';
89
+ lines.push(` ${icon} Security: ${status} (${issues} issues)`);
90
+ }
91
+ if (gitResult?.data) {
92
+ const branch = gitResult.data.branch || 'unknown';
93
+ const uncommitted = gitResult.data.uncommitted || 0;
94
+ lines.push(` ├─ Branch: ${branch}`);
95
+ lines.push(` └─ Uncommitted: ${uncommitted}`);
96
+ }
97
+ }
98
+ lines.push('[Workers] Background scheduling started');
99
+ }
100
+ else {
101
+ lines.push(`[Workers] Failed to initialize: ${result.error}`);
102
+ }
103
+ return lines.join('\n');
104
+ }
105
+ // ============================================================================
106
+ // Shell Script Generator
107
+ // ============================================================================
108
+ /**
109
+ * Generate a shell hook script for integration with .claude/settings.json
110
+ */
111
+ export function generateShellHook(projectRoot) {
112
+ const hookPath = path.join(projectRoot, 'v3', '@claude-flow', 'hooks');
113
+ return `#!/bin/bash
114
+ # Claude Flow V3 Workers - Session Start Hook
115
+ # Auto-generated - do not edit manually
116
+
117
+ set -euo pipefail
118
+
119
+ PROJECT_ROOT="${projectRoot}"
120
+ HOOKS_PATH="${hookPath}"
121
+
122
+ # Run worker initialization via Node.js
123
+ node --experimental-specifier-resolution=node -e "
124
+ const { onSessionStart, formatSessionStartOutput } = require('\${HOOKS_PATH}/dist/workers/session-hook.js');
125
+
126
+ async function main() {
127
+ const result = await onSessionStart({
128
+ projectRoot: '\${PROJECT_ROOT}',
129
+ autoStart: true,
130
+ runInitialScan: true,
131
+ workers: ['health', 'security', 'git'],
132
+ });
133
+
134
+ console.log(formatSessionStartOutput(result));
135
+ }
136
+
137
+ main().catch(err => {
138
+ console.error('[Workers] Error:', err.message);
139
+ process.exit(1);
140
+ });
141
+ "
142
+ `;
143
+ }
144
+ // ============================================================================
145
+ // Integration Helper
146
+ // ============================================================================
147
+ /**
148
+ * Create a global worker manager instance for the session
149
+ */
150
+ let globalManager = null;
151
+ export function getGlobalManager() {
152
+ return globalManager;
153
+ }
154
+ export function setGlobalManager(manager) {
155
+ globalManager = manager;
156
+ }
157
+ export async function initializeGlobalManager(projectRoot) {
158
+ if (globalManager) {
159
+ return globalManager;
160
+ }
161
+ const result = await onSessionStart({
162
+ projectRoot,
163
+ autoStart: true,
164
+ runInitialScan: true,
165
+ });
166
+ if (!result.success) {
167
+ throw new Error(result.error || 'Failed to initialize worker manager');
168
+ }
169
+ globalManager = result.manager;
170
+ return globalManager;
171
+ }
172
+ //# sourceMappingURL=session-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-hook.js","sourceRoot":"","sources":["../../src/workers/session-hook.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,101 @@
1
+ {
2
+ "name": "@claude-flow/hooks",
3
+ "version": "3.0.0-alpha.1",
4
+ "description": "V3 Hooks System - Event-driven lifecycle hooks with ReasoningBank learning integration",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.js",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./registry": {
14
+ "types": "./dist/registry/index.d.js",
15
+ "import": "./dist/registry/index.js"
16
+ },
17
+ "./executor": {
18
+ "types": "./dist/executor/index.d.js",
19
+ "import": "./dist/executor/index.js"
20
+ },
21
+ "./daemons": {
22
+ "types": "./dist/daemons/index.d.js",
23
+ "import": "./dist/daemons/index.js"
24
+ },
25
+ "./statusline": {
26
+ "types": "./dist/statusline/index.d.js",
27
+ "import": "./dist/statusline/index.js"
28
+ },
29
+ "./mcp": {
30
+ "types": "./dist/mcp/index.d.js",
31
+ "import": "./dist/mcp/index.js"
32
+ },
33
+ "./reasoningbank": {
34
+ "types": "./dist/reasoningbank/index.d.js",
35
+ "import": "./dist/reasoningbank/index.js"
36
+ },
37
+ "./guidance": {
38
+ "types": "./dist/reasoningbank/guidance-provider.d.js",
39
+ "import": "./dist/reasoningbank/guidance-provider.js"
40
+ }
41
+ },
42
+ "files": [
43
+ "dist",
44
+ "bin",
45
+ "scripts"
46
+ ],
47
+ "bin": {
48
+ "hooks-daemon": "./bin/hooks-daemon.js",
49
+ "statusline": "./bin/statusline.js",
50
+ "claude-flow-hooks": "./dist/cli/guidance-cli.js",
51
+ "guidance": "./dist/cli/guidance-cli.js"
52
+ },
53
+ "scripts": {
54
+ "build": "tsc -p tsconfig.json",
55
+ "clean": "rm -rf dist",
56
+ "test": "vitest run",
57
+ "test:watch": "vitest watch",
58
+ "test:coverage": "vitest run --coverage",
59
+ "lint": "eslint src --ext .ts",
60
+ "typecheck": "tsc --noEmit"
61
+ },
62
+ "dependencies": {
63
+ "@claude-flow/shared": "^3.0.0-alpha.1",
64
+ "@claude-flow/neural": "^3.0.0-alpha.1",
65
+ "@claude-flow/memory": "^3.0.0-alpha.1",
66
+ "better-sqlite3": "^11.0.0",
67
+ "zod": "^3.23.0"
68
+ },
69
+ "devDependencies": {
70
+ "@types/better-sqlite3": "^7.6.11",
71
+ "@types/node": "^20.10.0",
72
+ "typescript": "^5.3.0",
73
+ "vitest": "^2.0.0"
74
+ },
75
+ "peerDependencies": {
76
+ "@claude-flow/shared": "^3.0.0-alpha.1"
77
+ },
78
+ "engines": {
79
+ "node": ">=20.0.0"
80
+ },
81
+ "keywords": [
82
+ "claude-flow",
83
+ "hooks",
84
+ "daemons",
85
+ "statusline",
86
+ "reasoningbank",
87
+ "mcp",
88
+ "agents"
89
+ ],
90
+ "author": "Claude Flow Team",
91
+ "license": "MIT",
92
+ "repository": {
93
+ "type": "git",
94
+ "url": "https://github.com/ruvnet/claude-flow.git",
95
+ "directory": "v3/@claude-flow/hooks"
96
+ },
97
+ "publishConfig": {
98
+ "access": "public",
99
+ "tag": "v3alpha"
100
+ }
101
+ }