claude-flow-novice 2.0.3 → 2.0.4
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/dist/src/cli/commands/guidance.js +487 -668
- package/dist/src/cli/commands/index-validate.js +18 -29
- package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
- package/dist/src/cli/commands/neural-goal-init.js +92 -125
- package/dist/src/cli/commands/swarm-exec.js +317 -393
- package/dist/src/cli/commands/swarm.js +1 -1
- package/dist/src/cli/commands/validate-framework.js +983 -1100
- package/dist/src/cli/commands/validate.js +144 -223
- package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
- package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
- package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
- package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
- package/dist/src/cli/simple-commands/agent.js +157 -193
- package/dist/src/cli/simple-commands/analysis.js +336 -446
- package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
- package/dist/src/cli/simple-commands/automation.js +481 -469
- package/dist/src/cli/simple-commands/batch-manager.js +261 -313
- package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
- package/dist/src/cli/simple-commands/claude-track.js +68 -90
- package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
- package/dist/src/cli/simple-commands/config.js +245 -290
- package/dist/src/cli/simple-commands/coordination.js +182 -234
- package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
- package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
- package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
- package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
- package/dist/src/cli/simple-commands/github/github-api.js +535 -574
- package/dist/src/cli/simple-commands/github/init.js +276 -303
- package/dist/src/cli/simple-commands/github.js +222 -247
- package/dist/src/cli/simple-commands/goal.js +51 -63
- package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
- package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
- package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
- package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
- package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
- package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
- package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
- package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
- package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
- package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
- package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
- package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
- package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
- package/dist/src/cli/simple-commands/hive.js +90 -79
- package/dist/src/cli/simple-commands/hook-safety.js +431 -521
- package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
- package/dist/src/cli/simple-commands/hooks.js +1064 -1204
- package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
- package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
- package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
- package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
- package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
- package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
- package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
- package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
- package/dist/src/cli/simple-commands/init/help.js +104 -107
- package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
- package/dist/src/cli/simple-commands/init/index.js +1510 -1759
- package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
- package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
- package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
- package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
- package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
- package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
- package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
- package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
- package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
- package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
- package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
- package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
- package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
- package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
- package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
- package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
- package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
- package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
- package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
- package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
- package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
- package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
- package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
- package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
- package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
- package/dist/src/cli/simple-commands/init.js +1 -2
- package/dist/src/cli/simple-commands/mcp-health.js +131 -158
- package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
- package/dist/src/cli/simple-commands/mcp.js +345 -400
- package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
- package/dist/src/cli/simple-commands/memory.js +247 -311
- package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
- package/dist/src/cli/simple-commands/monitor.js +294 -363
- package/dist/src/cli/simple-commands/neural.js +51 -65
- package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
- package/dist/src/cli/simple-commands/pair-basic.js +528 -656
- package/dist/src/cli/simple-commands/pair-old.js +430 -543
- package/dist/src/cli/simple-commands/pair-working.js +615 -751
- package/dist/src/cli/simple-commands/pair.js +615 -751
- package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
- package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
- package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
- package/dist/src/cli/simple-commands/process-ui.js +230 -254
- package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
- package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
- package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
- package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
- package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
- package/dist/src/cli/simple-commands/sparc/index.js +241 -298
- package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
- package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
- package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
- package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
- package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
- package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
- package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
- package/dist/src/cli/simple-commands/sparc.js +465 -493
- package/dist/src/cli/simple-commands/start-ui.js +108 -132
- package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
- package/dist/src/cli/simple-commands/start.js +1 -1
- package/dist/src/cli/simple-commands/status.js +254 -275
- package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
- package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
- package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
- package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
- package/dist/src/cli/simple-commands/stream-chain.js +260 -318
- package/dist/src/cli/simple-commands/stream-processor.js +290 -315
- package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
- package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
- package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
- package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
- package/dist/src/cli/simple-commands/swarm.js +887 -1082
- package/dist/src/cli/simple-commands/task.js +161 -206
- package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
- package/dist/src/cli/simple-commands/token-tracker.js +258 -316
- package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
- package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
- package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
- package/dist/src/cli/simple-commands/training.js +170 -227
- package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
- package/dist/src/cli/simple-commands/verification-integration.js +389 -417
- package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
- package/dist/src/cli/simple-commands/verification.js +493 -513
- package/dist/src/cli/simple-commands/web-server.js +766 -836
- package/dist/src/cli/simple-commands/webui-validator.js +106 -124
- package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
- package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
- package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
- package/dist/src/coordination/iteration-tracker.js +363 -454
- package/dist/src/enterprise/analytics-manager.js +1135 -0
- package/dist/src/enterprise/audit-manager.js +1115 -0
- package/dist/src/enterprise/cloud-manager.js +891 -0
- package/dist/src/enterprise/deployment-manager.js +966 -0
- package/dist/src/enterprise/index.js +6 -0
- package/dist/src/enterprise/project-manager.js +584 -0
- package/dist/src/enterprise/security-manager.js +991 -0
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/DEPRECATED.js +46 -60
- package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
- package/dist/src/mcp/implementations/agent-tracker.js +114 -128
- package/dist/src/mcp/implementations/daa-tools.js +292 -350
- package/dist/src/mcp/implementations/workflow-tools.js +329 -361
- package/dist/src/mcp/mcp-config-manager.js +1183 -1331
- package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
- package/dist/src/mcp/mcp-server-novice.js +11 -17
- package/dist/src/mcp/mcp-server-sdk.js +11 -17
- package/dist/src/mcp/mcp-server.js +1620 -1484
- package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
- package/dist/src/memory/advanced-serializer.js +609 -589
- package/dist/src/memory/enhanced-examples.js +220 -305
- package/dist/src/memory/enhanced-memory.js +295 -336
- package/dist/src/memory/enhanced-session-serializer.js +408 -492
- package/dist/src/memory/fallback-memory-system.js +900 -1021
- package/dist/src/memory/fallback-store.js +93 -131
- package/dist/src/memory/high-performance-serialization.js +592 -730
- package/dist/src/memory/in-memory-store.js +161 -213
- package/dist/src/memory/index.js +123 -157
- package/dist/src/memory/lock-free-structures.js +578 -764
- package/dist/src/memory/memory-mapped-persistence.js +585 -766
- package/dist/src/memory/memory-pressure-manager.js +569 -707
- package/dist/src/memory/migration.js +358 -445
- package/dist/src/memory/shared-memory.js +641 -768
- package/dist/src/memory/sqlite-store.js +245 -325
- package/dist/src/memory/sqlite-wrapper.js +122 -151
- package/dist/src/memory/swarm-memory.js +470 -603
- package/dist/src/memory/test-example.js +126 -134
- package/dist/src/memory/ultra-fast-memory-store.js +622 -821
- package/dist/src/memory/unified-memory-manager.js +356 -437
- package/dist/src/migration/index.js +92 -0
- package/dist/src/migration/logger.js +121 -0
- package/dist/src/migration/migration-analyzer.js +268 -0
- package/dist/src/migration/migration-runner.js +522 -0
- package/dist/src/migration/migration-validator.js +285 -0
- package/dist/src/migration/progress-reporter.js +150 -0
- package/dist/src/migration/rollback-manager.js +321 -0
- package/dist/src/migration/tests/migration-system.test.js +7 -0
- package/dist/src/migration/types.js +3 -0
- package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
- package/dist/src/swarm/__tests__/integration.test.js +227 -0
- package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
- package/dist/src/swarm/advanced-orchestrator.js +1095 -0
- package/dist/src/swarm/claude-code-interface.js +961 -0
- package/dist/src/swarm/claude-flow-executor.js +229 -0
- package/dist/src/swarm/consensus-coordinator.js +475 -0
- package/dist/src/swarm/coordinator.js +2993 -0
- package/dist/src/swarm/direct-executor.js +1180 -0
- package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
- package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
- package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
- package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
- package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
- package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
- package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
- package/dist/src/swarm/executor-v2.js +322 -0
- package/dist/src/swarm/executor.js +815 -0
- package/dist/src/swarm/hive-mind-integration.js +703 -0
- package/dist/src/swarm/index.js +41 -0
- package/dist/src/swarm/json-output-aggregator.js +267 -0
- package/dist/src/swarm/large-scale-coordinator.js +542 -0
- package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
- package/dist/src/swarm/memory.js +1117 -0
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
- package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
- package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
- package/dist/src/swarm/optimizations/connection-pool.js +244 -0
- package/dist/src/swarm/optimizations/index.js +28 -0
- package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
- package/dist/src/swarm/optimizations/ttl-map.js +234 -0
- package/dist/src/swarm/prompt-cli.js +200 -0
- package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
- package/dist/src/swarm/prompt-copier.js +381 -0
- package/dist/src/swarm/prompt-manager.js +295 -0
- package/dist/src/swarm/prompt-utils.js +310 -0
- package/dist/src/swarm/result-aggregator.js +718 -0
- package/dist/src/swarm/sparc-executor.js +1568 -0
- package/dist/src/swarm/strategies/auto.js +758 -0
- package/dist/src/swarm/strategies/base.js +128 -0
- package/dist/src/swarm/strategies/research.js +914 -0
- package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
- package/dist/src/swarm/types.js +52 -0
- package/dist/src/swarm/workers/copy-worker.js +56 -0
- package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
- package/dist/src/utils/github-cli-safe.js +56 -64
- package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
- package/dist/src/utils/npx-isolated-cache.js +104 -119
- package/dist/src/utils/preference-manager.js +622 -652
- package/dist/src/utils/timezone-utils.js +86 -105
- package/dist/src/validators/epic-config-schema.js +214 -0
- package/dist/src/validators/index.js +10 -0
- package/dist/src/validators/swarm-init-validator.js +259 -0
- package/dist/src/validators/todowrite-batching-validator.js +215 -0
- package/dist/src/validators/todowrite-integration.js +187 -0
- package/package.json +2 -2
|
@@ -3,173 +3,160 @@
|
|
|
3
3
|
*
|
|
4
4
|
* These patterns prevent infinite loops that could cost thousands of dollars
|
|
5
5
|
* by avoiding recursive hook execution when hooks call 'claude' commands.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
6
|
+
*/ /**
|
|
9
7
|
* DANGEROUS PATTERN - DO NOT USE
|
|
10
8
|
* This creates an infinite loop that can cost thousands of dollars!
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
9
|
+
*/ export const DANGEROUS_PATTERN_EXAMPLE = {
|
|
10
|
+
name: 'DANGEROUS: Stop hook calling claude command',
|
|
11
|
+
description: '❌ NEVER USE THIS - Creates infinite recursion loop',
|
|
12
|
+
pattern: {
|
|
13
|
+
hooks: {
|
|
14
|
+
Stop: [
|
|
15
|
+
{
|
|
16
|
+
matcher: '',
|
|
17
|
+
hooks: [
|
|
18
|
+
{
|
|
19
|
+
type: 'command',
|
|
20
|
+
command: 'claude -c -p "Update all changes to history.md"'
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
28
26
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
],
|
|
27
|
+
problems: [
|
|
28
|
+
'🚨 Creates infinite loop: Stop → claude command → Stop → claude command...',
|
|
29
|
+
'💰 Can cost $3600+ per day by bypassing rate limits',
|
|
30
|
+
'🚫 Makes system unresponsive',
|
|
31
|
+
'⚡ No built-in protection in Claude Code'
|
|
32
|
+
]
|
|
36
33
|
};
|
|
37
|
-
|
|
38
34
|
/**
|
|
39
35
|
* SAFE PATTERN 1: Flag-based updates
|
|
40
36
|
* Set a flag instead of calling claude directly
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
],
|
|
37
|
+
*/ export const SAFE_FLAG_PATTERN = {
|
|
38
|
+
name: 'Safe Pattern: Flag-based updates',
|
|
39
|
+
description: '✅ Set flag when update needed, run manually',
|
|
40
|
+
pattern: {
|
|
41
|
+
hooks: {
|
|
42
|
+
Stop: [
|
|
43
|
+
{
|
|
44
|
+
matcher: '',
|
|
45
|
+
hooks: [
|
|
46
|
+
{
|
|
47
|
+
type: 'command',
|
|
48
|
+
command: 'bash -c \'echo "History update needed at $(date)" > ~/.claude/needs_update && echo "📝 History update flagged. Run: claude -c -p \\"Update history.md\\""\''
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
59
54
|
},
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
],
|
|
55
|
+
benefits: [
|
|
56
|
+
'✅ No recursion - just sets a flag',
|
|
57
|
+
'💰 Zero risk of infinite API calls',
|
|
58
|
+
'🔄 User controls when update runs',
|
|
59
|
+
'📝 Clear instructions for manual execution'
|
|
60
|
+
],
|
|
61
|
+
usage: [
|
|
62
|
+
'1. Hook sets flag when update is needed',
|
|
63
|
+
'2. User sees notification',
|
|
64
|
+
'3. User manually runs: claude -c -p "Update history.md"',
|
|
65
|
+
'4. Update runs once safely'
|
|
66
|
+
]
|
|
73
67
|
};
|
|
74
|
-
|
|
75
68
|
/**
|
|
76
69
|
* SAFE PATTERN 2: PostToolUse hooks instead of Stop hooks
|
|
77
70
|
* React to specific tool usage rather than session end
|
|
78
|
-
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
71
|
+
*/ export const SAFE_POST_TOOL_PATTERN = {
|
|
72
|
+
name: 'Safe Pattern: PostToolUse hooks',
|
|
73
|
+
description: '✅ React to specific file operations instead of Stop events',
|
|
74
|
+
pattern: {
|
|
75
|
+
hooks: {
|
|
76
|
+
PostToolUse: [
|
|
77
|
+
{
|
|
78
|
+
matcher: 'Write|Edit|MultiEdit',
|
|
79
|
+
hooks: [
|
|
80
|
+
{
|
|
81
|
+
type: 'command',
|
|
82
|
+
command: "echo 'File modified: {file}' >> ~/.claude/modifications.log"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
}
|
|
95
88
|
},
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
],
|
|
89
|
+
benefits: [
|
|
90
|
+
'✅ Only triggers on actual file changes',
|
|
91
|
+
'🎯 More precise than Stop hooks',
|
|
92
|
+
'📝 Logs specific modifications',
|
|
93
|
+
'🔄 No risk of Stop hook recursion'
|
|
94
|
+
],
|
|
95
|
+
usage: [
|
|
96
|
+
'1. Triggers only when files are written/edited',
|
|
97
|
+
'2. Logs the specific file that was modified',
|
|
98
|
+
'3. Can be used for change tracking',
|
|
99
|
+
'4. Safe to use with any logging command'
|
|
100
|
+
]
|
|
109
101
|
};
|
|
110
|
-
|
|
111
102
|
/**
|
|
112
103
|
* SAFE PATTERN 3: Conditional execution with skip-hooks
|
|
113
104
|
* Check for hook context before executing claude commands
|
|
114
|
-
*/
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
],
|
|
105
|
+
*/ export const SAFE_CONDITIONAL_PATTERN = {
|
|
106
|
+
name: 'Safe Pattern: Conditional execution with context check',
|
|
107
|
+
description: '✅ Check if running in hook context before calling claude',
|
|
108
|
+
pattern: {
|
|
109
|
+
hooks: {
|
|
110
|
+
Stop: [
|
|
111
|
+
{
|
|
112
|
+
matcher: '',
|
|
113
|
+
hooks: [
|
|
114
|
+
{
|
|
115
|
+
type: 'command',
|
|
116
|
+
command: 'bash -c \'if [ -z "$CLAUDE_HOOK_CONTEXT" ]; then claude -c -p "Update history.md" --skip-hooks; else echo "Skipping update - in hook context"; fi\''
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
132
122
|
},
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
],
|
|
123
|
+
benefits: [
|
|
124
|
+
'✅ Checks hook context before execution',
|
|
125
|
+
'🛡️ Uses --skip-hooks flag for safety',
|
|
126
|
+
'🔄 Prevents recursive hook calls',
|
|
127
|
+
'📊 Provides clear feedback'
|
|
128
|
+
],
|
|
129
|
+
usage: [
|
|
130
|
+
'1. Checks CLAUDE_HOOK_CONTEXT environment variable',
|
|
131
|
+
'2. Only runs claude if not in hook context',
|
|
132
|
+
'3. Uses --skip-hooks to prevent triggering more hooks',
|
|
133
|
+
'4. Shows clear message when skipping'
|
|
134
|
+
]
|
|
146
135
|
};
|
|
147
|
-
|
|
148
136
|
/**
|
|
149
137
|
* SAFE PATTERN 4: Batch processing with scheduled execution
|
|
150
138
|
* Accumulate changes and process them on a schedule
|
|
151
|
-
*/
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
139
|
+
*/ export const SAFE_BATCH_PATTERN = {
|
|
140
|
+
name: 'Safe Pattern: Batch processing with scheduled execution',
|
|
141
|
+
description: '✅ Accumulate changes and process them separately',
|
|
142
|
+
pattern: {
|
|
143
|
+
hooks: {
|
|
144
|
+
Stop: [
|
|
145
|
+
{
|
|
146
|
+
matcher: '',
|
|
147
|
+
hooks: [
|
|
148
|
+
{
|
|
149
|
+
type: 'command',
|
|
150
|
+
command: 'echo "$(date): Session ended" >> ~/.claude/session_log.txt'
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
]
|
|
155
|
+
}
|
|
168
156
|
},
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
updateScript: `#!/bin/bash
|
|
157
|
+
additionalSetup: {
|
|
158
|
+
cronJob: '# Add to crontab (run every hour):\n# 0 * * * * /path/to/update-history.sh',
|
|
159
|
+
updateScript: `#!/bin/bash
|
|
173
160
|
# update-history.sh - Safe batch update script
|
|
174
161
|
LOCK_FILE="~/.claude/update.lock"
|
|
175
162
|
LOG_FILE="~/.claude/session_log.txt"
|
|
@@ -193,40 +180,37 @@ if [ -f "$LOG_FILE" ] && [ -s "$LOG_FILE" ]; then
|
|
|
193
180
|
fi
|
|
194
181
|
|
|
195
182
|
# Remove lock file
|
|
196
|
-
rm "$LOCK_FILE"
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
183
|
+
rm "$LOCK_FILE"`
|
|
184
|
+
},
|
|
185
|
+
benefits: [
|
|
186
|
+
'✅ No risk of recursion',
|
|
187
|
+
'⏰ Scheduled processing prevents overload',
|
|
188
|
+
'🔒 Lock file prevents concurrent updates',
|
|
189
|
+
'📦 Batches multiple sessions efficiently'
|
|
190
|
+
]
|
|
204
191
|
};
|
|
205
|
-
|
|
206
192
|
/**
|
|
207
193
|
* SAFE PATTERN 5: Database/file-based queue system
|
|
208
194
|
* Use external queue for processing commands
|
|
209
|
-
*/
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
],
|
|
195
|
+
*/ export const SAFE_QUEUE_PATTERN = {
|
|
196
|
+
name: 'Safe Pattern: Queue-based command processing',
|
|
197
|
+
description: '✅ Queue commands for external processing',
|
|
198
|
+
pattern: {
|
|
199
|
+
hooks: {
|
|
200
|
+
Stop: [
|
|
201
|
+
{
|
|
202
|
+
matcher: '',
|
|
203
|
+
hooks: [
|
|
204
|
+
{
|
|
205
|
+
type: 'command',
|
|
206
|
+
command: 'echo \'{"command": "update-history", "timestamp": "\'$(date -Iseconds)\'", "session": "\'$CLAUDE_SESSION_ID\'"}\' >> ~/.claude/command_queue.jsonl'
|
|
207
|
+
}
|
|
208
|
+
]
|
|
209
|
+
}
|
|
210
|
+
]
|
|
211
|
+
}
|
|
227
212
|
},
|
|
228
|
-
|
|
229
|
-
processor: `#!/usr/bin/env python3
|
|
213
|
+
processor: `#!/usr/bin/env python3
|
|
230
214
|
# queue-processor.py - Safe command queue processor
|
|
231
215
|
import json
|
|
232
216
|
import subprocess
|
|
@@ -268,30 +252,26 @@ if __name__ == '__main__':
|
|
|
268
252
|
time.sleep(PROCESSING_INTERVAL)
|
|
269
253
|
except KeyboardInterrupt:
|
|
270
254
|
break`,
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
255
|
+
benefits: [
|
|
256
|
+
'✅ Complete separation of hook and claude execution',
|
|
257
|
+
'⏰ Rate limited processing',
|
|
258
|
+
'🔄 Handles multiple queued commands',
|
|
259
|
+
'🛡️ No risk of infinite loops'
|
|
260
|
+
]
|
|
277
261
|
};
|
|
278
|
-
|
|
279
262
|
/**
|
|
280
263
|
* Get all safe patterns for documentation generation
|
|
281
|
-
*/
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
SAFE_QUEUE_PATTERN,
|
|
264
|
+
*/ export const ALL_SAFE_PATTERNS = [
|
|
265
|
+
SAFE_FLAG_PATTERN,
|
|
266
|
+
SAFE_POST_TOOL_PATTERN,
|
|
267
|
+
SAFE_CONDITIONAL_PATTERN,
|
|
268
|
+
SAFE_BATCH_PATTERN,
|
|
269
|
+
SAFE_QUEUE_PATTERN
|
|
288
270
|
];
|
|
289
|
-
|
|
290
271
|
/**
|
|
291
272
|
* Generate safe hooks documentation
|
|
292
|
-
*/
|
|
293
|
-
|
|
294
|
-
return `# 🛡️ Safe Hook Patterns for Claude Code
|
|
273
|
+
*/ export function generateSafeHooksGuide() {
|
|
274
|
+
return `# 🛡️ Safe Hook Patterns for Claude Code
|
|
295
275
|
|
|
296
276
|
⚠️ **CRITICAL WARNING**: Stop hooks that call 'claude' commands create infinite loops that can cost thousands of dollars per day!
|
|
297
277
|
|
|
@@ -304,14 +284,13 @@ ${JSON.stringify(DANGEROUS_PATTERN_EXAMPLE.pattern, null, 2)}
|
|
|
304
284
|
\`\`\`
|
|
305
285
|
|
|
306
286
|
**Problems:**
|
|
307
|
-
${DANGEROUS_PATTERN_EXAMPLE.problems.map((p)
|
|
287
|
+
${DANGEROUS_PATTERN_EXAMPLE.problems.map((p)=>`- ${p}`).join('\n')}
|
|
308
288
|
|
|
309
289
|
---
|
|
310
290
|
|
|
311
291
|
## ✅ SAFE PATTERNS
|
|
312
292
|
|
|
313
|
-
${ALL_SAFE_PATTERNS.map(
|
|
314
|
-
(pattern) => `
|
|
293
|
+
${ALL_SAFE_PATTERNS.map((pattern)=>`
|
|
315
294
|
### ${pattern.name}
|
|
316
295
|
|
|
317
296
|
${pattern.description}
|
|
@@ -322,56 +301,35 @@ ${JSON.stringify(pattern.pattern, null, 2)}
|
|
|
322
301
|
\`\`\`
|
|
323
302
|
|
|
324
303
|
**Benefits:**
|
|
325
|
-
${pattern.benefits.map((b)
|
|
304
|
+
${pattern.benefits.map((b)=>`- ${b}`).join('\n')}
|
|
326
305
|
|
|
327
|
-
${
|
|
328
|
-
|
|
329
|
-
? `**Usage:**
|
|
330
|
-
${pattern.usage.map((u, i) => `${i + 1}. ${u}`).join('\n')}`
|
|
331
|
-
: ''
|
|
332
|
-
}
|
|
306
|
+
${pattern.usage ? `**Usage:**
|
|
307
|
+
${pattern.usage.map((u, i)=>`${i + 1}. ${u}`).join('\n')}` : ''}
|
|
333
308
|
|
|
334
|
-
${
|
|
335
|
-
|
|
336
|
-
? `**Additional Setup:**
|
|
337
|
-
${
|
|
338
|
-
pattern.additionalSetup.cronJob
|
|
339
|
-
? `
|
|
309
|
+
${pattern.additionalSetup ? `**Additional Setup:**
|
|
310
|
+
${pattern.additionalSetup.cronJob ? `
|
|
340
311
|
**Cron Job:**
|
|
341
312
|
\`\`\`bash
|
|
342
313
|
${pattern.additionalSetup.cronJob}
|
|
343
314
|
\`\`\`
|
|
344
|
-
`
|
|
345
|
-
: ''
|
|
346
|
-
}
|
|
315
|
+
` : ''}
|
|
347
316
|
|
|
348
|
-
${
|
|
349
|
-
pattern.additionalSetup.updateScript
|
|
350
|
-
? `
|
|
317
|
+
${pattern.additionalSetup.updateScript ? `
|
|
351
318
|
**Update Script:**
|
|
352
319
|
\`\`\`bash
|
|
353
320
|
${pattern.additionalSetup.updateScript}
|
|
354
321
|
\`\`\`
|
|
355
|
-
`
|
|
356
|
-
: ''
|
|
357
|
-
}`
|
|
358
|
-
: ''
|
|
359
|
-
}
|
|
322
|
+
` : ''}` : ''}
|
|
360
323
|
|
|
361
|
-
${
|
|
362
|
-
pattern.processor
|
|
363
|
-
? `
|
|
324
|
+
${pattern.processor ? `
|
|
364
325
|
**Queue Processor:**
|
|
365
326
|
\`\`\`python
|
|
366
327
|
${pattern.processor}
|
|
367
328
|
\`\`\`
|
|
368
|
-
`
|
|
369
|
-
: ''
|
|
370
|
-
}
|
|
329
|
+
` : ''}
|
|
371
330
|
|
|
372
331
|
---
|
|
373
|
-
|
|
374
|
-
).join('')}
|
|
332
|
+
`).join('')}
|
|
375
333
|
|
|
376
334
|
## 🚀 Quick Migration Guide
|
|
377
335
|
|
|
@@ -422,9 +380,8 @@ claude-flow-novice hook-safety reset
|
|
|
422
380
|
**Remember**: When in doubt, use flag-based patterns or PostToolUse hooks instead of Stop hooks!
|
|
423
381
|
`;
|
|
424
382
|
}
|
|
425
|
-
|
|
426
383
|
export default {
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
384
|
+
DANGEROUS_PATTERN_EXAMPLE,
|
|
385
|
+
ALL_SAFE_PATTERNS,
|
|
386
|
+
generateSafeHooksGuide
|
|
430
387
|
};
|