moflo 4.8.21 → 4.8.22
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/.claude/agents/browser/browser-agent.yaml +182 -182
- package/.claude/agents/core/coder.md +265 -265
- package/.claude/agents/core/planner.md +167 -167
- package/.claude/agents/core/researcher.md +189 -189
- package/.claude/agents/core/reviewer.md +325 -325
- package/.claude/agents/core/tester.md +318 -318
- package/.claude/agents/database-specialist.yaml +21 -21
- package/.claude/agents/dual-mode/codex-coordinator.md +224 -224
- package/.claude/agents/dual-mode/codex-worker.md +211 -211
- package/.claude/agents/dual-mode/dual-orchestrator.md +291 -291
- package/.claude/agents/github/code-review-swarm.md +537 -537
- package/.claude/agents/github/github-modes.md +172 -172
- package/.claude/agents/github/issue-tracker.md +318 -318
- package/.claude/agents/github/multi-repo-swarm.md +552 -552
- package/.claude/agents/github/pr-manager.md +190 -190
- package/.claude/agents/github/project-board-sync.md +508 -508
- package/.claude/agents/github/release-manager.md +366 -366
- package/.claude/agents/github/release-swarm.md +582 -582
- package/.claude/agents/github/repo-architect.md +397 -397
- package/.claude/agents/github/swarm-issue.md +572 -572
- package/.claude/agents/github/swarm-pr.md +427 -427
- package/.claude/agents/github/sync-coordinator.md +451 -451
- package/.claude/agents/github/workflow-automation.md +634 -634
- package/.claude/agents/goal/code-goal-planner.md +445 -445
- package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +129 -129
- package/.claude/agents/hive-mind/queen-coordinator.md +202 -202
- package/.claude/agents/hive-mind/scout-explorer.md +241 -241
- package/.claude/agents/hive-mind/swarm-memory-manager.md +192 -192
- package/.claude/agents/hive-mind/worker-specialist.md +216 -216
- package/.claude/agents/index.yaml +17 -17
- package/.claude/agents/neural/safla-neural.md +73 -73
- package/.claude/agents/project-coordinator.yaml +15 -15
- package/.claude/agents/python-specialist.yaml +21 -21
- package/.claude/agents/reasoning/goal-planner.md +72 -72
- package/.claude/agents/security-auditor.yaml +20 -20
- package/.claude/agents/swarm/adaptive-coordinator.md +395 -395
- package/.claude/agents/swarm/hierarchical-coordinator.md +326 -326
- package/.claude/agents/swarm/mesh-coordinator.md +391 -391
- package/.claude/agents/templates/migration-plan.md +745 -745
- package/.claude/agents/typescript-specialist.yaml +21 -21
- package/.claude/checkpoints/1767754460.json +8 -8
- package/.claude/commands/agents/agent-spawning.md +28 -28
- package/.claude/commands/github/github-modes.md +146 -146
- package/.claude/commands/github/github-swarm.md +121 -121
- package/.claude/commands/github/issue-tracker.md +291 -291
- package/.claude/commands/github/pr-manager.md +169 -169
- package/.claude/commands/github/release-manager.md +337 -337
- package/.claude/commands/github/repo-architect.md +366 -366
- package/.claude/commands/github/sync-coordinator.md +300 -300
- package/.claude/commands/memory/neural.md +47 -47
- package/.claude/commands/sparc/analyzer.md +51 -51
- package/.claude/commands/sparc/architect.md +53 -53
- package/.claude/commands/sparc/ask.md +97 -97
- package/.claude/commands/sparc/batch-executor.md +54 -54
- package/.claude/commands/sparc/code.md +89 -89
- package/.claude/commands/sparc/coder.md +54 -54
- package/.claude/commands/sparc/debug.md +83 -83
- package/.claude/commands/sparc/debugger.md +54 -54
- package/.claude/commands/sparc/designer.md +53 -53
- package/.claude/commands/sparc/devops.md +109 -109
- package/.claude/commands/sparc/docs-writer.md +80 -80
- package/.claude/commands/sparc/documenter.md +54 -54
- package/.claude/commands/sparc/innovator.md +54 -54
- package/.claude/commands/sparc/integration.md +83 -83
- package/.claude/commands/sparc/mcp.md +117 -117
- package/.claude/commands/sparc/memory-manager.md +54 -54
- package/.claude/commands/sparc/optimizer.md +54 -54
- package/.claude/commands/sparc/orchestrator.md +131 -131
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
- package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
- package/.claude/commands/sparc/researcher.md +54 -54
- package/.claude/commands/sparc/reviewer.md +54 -54
- package/.claude/commands/sparc/security-review.md +80 -80
- package/.claude/commands/sparc/sparc-modes.md +174 -174
- package/.claude/commands/sparc/sparc.md +111 -111
- package/.claude/commands/sparc/spec-pseudocode.md +80 -80
- package/.claude/commands/sparc/supabase-admin.md +348 -348
- package/.claude/commands/sparc/swarm-coordinator.md +54 -54
- package/.claude/commands/sparc/tdd.md +54 -54
- package/.claude/commands/sparc/tester.md +54 -54
- package/.claude/commands/sparc/tutorial.md +79 -79
- package/.claude/commands/sparc/workflow-manager.md +54 -54
- package/.claude/commands/sparc.md +166 -166
- package/.claude/commands/swarm/analysis.md +95 -95
- package/.claude/commands/swarm/development.md +96 -96
- package/.claude/commands/swarm/examples.md +168 -168
- package/.claude/commands/swarm/maintenance.md +102 -102
- package/.claude/commands/swarm/optimization.md +117 -117
- package/.claude/commands/swarm/research.md +136 -136
- package/.claude/commands/swarm/testing.md +131 -131
- package/.claude/commands/workflows/development.md +77 -77
- package/.claude/commands/workflows/research.md +62 -62
- package/.claude/guidance/moflo-bootstrap.md +126 -126
- package/.claude/guidance/shipped/agent-bootstrap.md +126 -126
- package/.claude/guidance/shipped/guidance-memory-strategy.md +262 -262
- package/.claude/guidance/shipped/memory-strategy.md +204 -204
- package/.claude/guidance/shipped/moflo.md +668 -653
- package/.claude/guidance/shipped/task-swarm-integration.md +441 -441
- package/.claude/helpers/intelligence.cjs +207 -207
- package/.claude/helpers/statusline.cjs +851 -851
- package/.claude/settings.local.json +18 -0
- package/.claude/skills/fl/SKILL.md +583 -583
- package/.claude/skills/flo/SKILL.md +583 -583
- package/.claude/skills/github-code-review/SKILL.md +1140 -1140
- package/.claude/skills/github-multi-repo/SKILL.md +874 -874
- package/.claude/skills/github-project-management/SKILL.md +1277 -1277
- package/.claude/skills/github-release-management/SKILL.md +1081 -1081
- package/.claude/skills/github-workflow-automation/SKILL.md +1065 -1065
- package/.claude/skills/hive-mind-advanced/SKILL.md +712 -712
- package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
- package/.claude/skills/performance-analysis/SKILL.md +563 -563
- package/.claude/skills/sparc-methodology/SKILL.md +1115 -1115
- package/.claude/skills/swarm-advanced/SKILL.md +973 -973
- package/.claude/workflow-state.json +4 -4
- package/LICENSE +21 -21
- package/README.md +685 -685
- package/bin/cli.js +0 -0
- package/bin/gate-hook.mjs +50 -50
- package/bin/gate.cjs +138 -138
- package/bin/generate-code-map.mjs +775 -775
- package/bin/hook-handler.cjs +83 -83
- package/bin/hooks.mjs +656 -656
- package/bin/index-guidance.mjs +892 -892
- package/bin/index-tests.mjs +709 -709
- package/bin/lib/process-manager.mjs +243 -243
- package/bin/lib/registry-cleanup.cjs +41 -41
- package/bin/prompt-hook.mjs +72 -72
- package/bin/semantic-search.mjs +472 -472
- package/bin/session-start-launcher.mjs +238 -238
- package/bin/setup-project.mjs +250 -250
- package/package.json +123 -123
- package/src/@claude-flow/cli/README.md +452 -452
- package/src/@claude-flow/cli/bin/cli.js +180 -180
- package/src/@claude-flow/cli/bin/preinstall.cjs +2 -2
- package/src/@claude-flow/cli/dist/src/commands/completions.js +409 -409
- package/src/@claude-flow/cli/dist/src/commands/doctor.js +5 -1
- package/src/@claude-flow/cli/dist/src/commands/embeddings.js +25 -25
- package/src/@claude-flow/cli/dist/src/commands/github.js +61 -61
- package/src/@claude-flow/cli/dist/src/commands/hive-mind.js +90 -90
- package/src/@claude-flow/cli/dist/src/commands/hooks.js +9 -9
- package/src/@claude-flow/cli/dist/src/commands/ruvector/import.js +14 -14
- package/src/@claude-flow/cli/dist/src/commands/ruvector/setup.js +624 -624
- package/src/@claude-flow/cli/dist/src/config/moflo-config.d.ts +3 -0
- package/src/@claude-flow/cli/dist/src/config/moflo-config.js +101 -91
- package/src/@claude-flow/cli/dist/src/index.d.ts +5 -0
- package/src/@claude-flow/cli/dist/src/index.js +44 -0
- package/src/@claude-flow/cli/dist/src/init/claudemd-generator.d.ts +29 -29
- package/src/@claude-flow/cli/dist/src/init/claudemd-generator.js +43 -43
- package/src/@claude-flow/cli/dist/src/init/executor.js +453 -453
- package/src/@claude-flow/cli/dist/src/init/helpers-generator.js +482 -482
- package/src/@claude-flow/cli/dist/src/init/moflo-init.d.ts +30 -30
- package/src/@claude-flow/cli/dist/src/init/moflo-init.js +140 -140
- package/src/@claude-flow/cli/dist/src/init/statusline-generator.js +876 -876
- package/src/@claude-flow/cli/dist/src/memory/memory-initializer.js +371 -371
- package/src/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
- package/src/@claude-flow/cli/dist/src/services/container-worker-pool.d.ts +197 -0
- package/src/@claude-flow/cli/dist/src/services/container-worker-pool.js +584 -0
- package/src/@claude-flow/cli/dist/src/services/daemon-lock.d.ts +14 -0
- package/src/@claude-flow/cli/dist/src/services/daemon-lock.js +1 -1
- package/src/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
- package/src/@claude-flow/cli/package.json +1 -1
- package/src/@claude-flow/guidance/README.md +1195 -1195
- package/src/@claude-flow/guidance/package.json +198 -198
- package/src/@claude-flow/memory/README.md +587 -587
- package/src/@claude-flow/memory/dist/agent-memory-scope.test.js +4 -7
- package/src/@claude-flow/memory/dist/agentdb-backend.d.ts +2 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.js +28 -26
- package/src/@claude-flow/memory/dist/auto-memory-bridge.test.js +36 -39
- package/src/@claude-flow/memory/dist/benchmark.test.js +1 -1
- package/src/@claude-flow/memory/dist/controller-registry.test.js +43 -0
- package/src/@claude-flow/memory/dist/database-provider.d.ts +2 -2
- package/src/@claude-flow/memory/dist/database-provider.js +6 -3
- package/src/@claude-flow/memory/dist/database-provider.test.js +1 -3
- package/src/@claude-flow/memory/dist/hybrid-backend.d.ts +245 -0
- package/src/@claude-flow/memory/dist/hybrid-backend.js +569 -0
- package/src/@claude-flow/memory/dist/hybrid-backend.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/hybrid-backend.test.js +320 -0
- package/src/@claude-flow/memory/dist/index.d.ts +3 -0
- package/src/@claude-flow/memory/dist/index.js +3 -0
- package/src/@claude-flow/memory/dist/sqlite-backend.d.ts +121 -0
- package/src/@claude-flow/memory/dist/sqlite-backend.js +572 -0
- package/src/@claude-flow/memory/dist/sqljs-backend.d.ts +4 -3
- package/src/@claude-flow/memory/dist/sqljs-backend.js +31 -30
- package/src/@claude-flow/memory/package.json +44 -44
- package/src/@claude-flow/shared/README.md +323 -323
- package/src/@claude-flow/shared/dist/core/config/defaults.js +1 -1
- package/src/@claude-flow/shared/dist/core/config/loader.js +1 -1
- package/src/@claude-flow/shared/dist/core/config/schema.js +1 -1
- package/src/@claude-flow/shared/dist/events/event-store.js +34 -50
- package/src/@claude-flow/shared/dist/events/event-store.test.js +4 -8
- package/src/@claude-flow/shared/dist/hooks/executor.js +4 -7
- package/src/@claude-flow/shared/dist/hooks/safety/file-organization.js +1 -1
- package/src/@claude-flow/shared/dist/hooks/safety/git-commit.js +3 -3
- package/src/@claude-flow/shared/dist/hooks/verify-exports.test.js +6 -6
- package/src/@claude-flow/shared/dist/utils/secure-logger.js +1 -1
- package/src/README.md +493 -493
- package/src/@claude-flow/guidance/dist/adversarial.d.ts +0 -284
- package/src/@claude-flow/guidance/dist/adversarial.js +0 -572
- package/src/@claude-flow/guidance/dist/analyzer.d.ts +0 -530
- package/src/@claude-flow/guidance/dist/analyzer.js +0 -2518
- package/src/@claude-flow/guidance/dist/artifacts.d.ts +0 -283
- package/src/@claude-flow/guidance/dist/artifacts.js +0 -356
- package/src/@claude-flow/guidance/dist/authority.d.ts +0 -290
- package/src/@claude-flow/guidance/dist/authority.js +0 -558
- package/src/@claude-flow/guidance/dist/capabilities.d.ts +0 -209
- package/src/@claude-flow/guidance/dist/capabilities.js +0 -485
- package/src/@claude-flow/guidance/dist/coherence.d.ts +0 -233
- package/src/@claude-flow/guidance/dist/coherence.js +0 -372
- package/src/@claude-flow/guidance/dist/compiler.d.ts +0 -87
- package/src/@claude-flow/guidance/dist/compiler.js +0 -419
- package/src/@claude-flow/guidance/dist/conformance-kit.d.ts +0 -225
- package/src/@claude-flow/guidance/dist/conformance-kit.js +0 -629
- package/src/@claude-flow/guidance/dist/continue-gate.d.ts +0 -214
- package/src/@claude-flow/guidance/dist/continue-gate.js +0 -353
- package/src/@claude-flow/guidance/dist/crypto-utils.d.ts +0 -17
- package/src/@claude-flow/guidance/dist/crypto-utils.js +0 -24
- package/src/@claude-flow/guidance/dist/evolution.d.ts +0 -282
- package/src/@claude-flow/guidance/dist/evolution.js +0 -500
- package/src/@claude-flow/guidance/dist/gates.d.ts +0 -79
- package/src/@claude-flow/guidance/dist/gates.js +0 -302
- package/src/@claude-flow/guidance/dist/gateway.d.ts +0 -206
- package/src/@claude-flow/guidance/dist/gateway.js +0 -452
- package/src/@claude-flow/guidance/dist/generators.d.ts +0 -153
- package/src/@claude-flow/guidance/dist/generators.js +0 -682
- package/src/@claude-flow/guidance/dist/headless.d.ts +0 -177
- package/src/@claude-flow/guidance/dist/headless.js +0 -342
- package/src/@claude-flow/guidance/dist/hooks.d.ts +0 -109
- package/src/@claude-flow/guidance/dist/hooks.js +0 -347
- package/src/@claude-flow/guidance/dist/index.d.ts +0 -205
- package/src/@claude-flow/guidance/dist/index.js +0 -321
- package/src/@claude-flow/guidance/dist/ledger.d.ts +0 -162
- package/src/@claude-flow/guidance/dist/ledger.js +0 -375
- package/src/@claude-flow/guidance/dist/manifest-validator.d.ts +0 -289
- package/src/@claude-flow/guidance/dist/manifest-validator.js +0 -838
- package/src/@claude-flow/guidance/dist/memory-gate.d.ts +0 -222
- package/src/@claude-flow/guidance/dist/memory-gate.js +0 -382
- package/src/@claude-flow/guidance/dist/meta-governance.d.ts +0 -265
- package/src/@claude-flow/guidance/dist/meta-governance.js +0 -348
- package/src/@claude-flow/guidance/dist/optimizer.d.ts +0 -104
- package/src/@claude-flow/guidance/dist/optimizer.js +0 -329
- package/src/@claude-flow/guidance/dist/persistence.d.ts +0 -189
- package/src/@claude-flow/guidance/dist/persistence.js +0 -464
- package/src/@claude-flow/guidance/dist/proof.d.ts +0 -185
- package/src/@claude-flow/guidance/dist/proof.js +0 -238
- package/src/@claude-flow/guidance/dist/retriever.d.ts +0 -116
- package/src/@claude-flow/guidance/dist/retriever.js +0 -394
- package/src/@claude-flow/guidance/dist/ruvbot-integration.d.ts +0 -370
- package/src/@claude-flow/guidance/dist/ruvbot-integration.js +0 -738
- package/src/@claude-flow/guidance/dist/temporal.d.ts +0 -426
- package/src/@claude-flow/guidance/dist/temporal.js +0 -658
- package/src/@claude-flow/guidance/dist/trust.d.ts +0 -283
- package/src/@claude-flow/guidance/dist/trust.js +0 -473
- package/src/@claude-flow/guidance/dist/truth-anchors.d.ts +0 -276
- package/src/@claude-flow/guidance/dist/truth-anchors.js +0 -488
- package/src/@claude-flow/guidance/dist/types.d.ts +0 -378
- package/src/@claude-flow/guidance/dist/types.js +0 -10
- package/src/@claude-flow/guidance/dist/uncertainty.d.ts +0 -372
- package/src/@claude-flow/guidance/dist/uncertainty.js +0 -619
- package/src/@claude-flow/guidance/dist/wasm-kernel.d.ts +0 -48
- package/src/@claude-flow/guidance/dist/wasm-kernel.js +0 -158
|
@@ -44,22 +44,11 @@ export class EventStore extends EventEmitter {
|
|
|
44
44
|
async initialize() {
|
|
45
45
|
if (this.initialized)
|
|
46
46
|
return;
|
|
47
|
-
// Load sql.js WASM
|
|
47
|
+
// Load sql.js WASM
|
|
48
48
|
this.SQL = await initSqlJs({
|
|
49
49
|
locateFile: this.config.wasmPath
|
|
50
50
|
? () => this.config.wasmPath
|
|
51
|
-
: (file) => {
|
|
52
|
-
// Try to resolve from node_modules first (works in Node.js)
|
|
53
|
-
try {
|
|
54
|
-
const sqlJsDir = require.resolve('sql.js');
|
|
55
|
-
const { dirname, join } = require('node:path');
|
|
56
|
-
const localPath = join(dirname(sqlJsDir), file);
|
|
57
|
-
if (require('node:fs').existsSync(localPath))
|
|
58
|
-
return localPath;
|
|
59
|
-
}
|
|
60
|
-
catch { /* fallback below */ }
|
|
61
|
-
return `https://sql.js.org/dist/${file}`;
|
|
62
|
-
},
|
|
51
|
+
: (file) => `https://sql.js.org/dist/${file}`,
|
|
63
52
|
});
|
|
64
53
|
// Load existing database if exists
|
|
65
54
|
if (this.config.databasePath !== ':memory:' && existsSync(this.config.databasePath)) {
|
|
@@ -121,11 +110,11 @@ export class EventStore extends EventEmitter {
|
|
|
121
110
|
// Set version on event
|
|
122
111
|
event.version = nextVersion;
|
|
123
112
|
// Insert event
|
|
124
|
-
const stmt = `
|
|
125
|
-
INSERT INTO events (
|
|
126
|
-
id, type, aggregate_id, aggregate_type, version, timestamp,
|
|
127
|
-
source, payload, metadata, causation_id, correlation_id
|
|
128
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
113
|
+
const stmt = `
|
|
114
|
+
INSERT INTO events (
|
|
115
|
+
id, type, aggregate_id, aggregate_type, version, timestamp,
|
|
116
|
+
source, payload, metadata, causation_id, correlation_id
|
|
117
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
129
118
|
`;
|
|
130
119
|
this.db.run(stmt, [
|
|
131
120
|
event.id,
|
|
@@ -261,10 +250,10 @@ export class EventStore extends EventEmitter {
|
|
|
261
250
|
*/
|
|
262
251
|
async saveSnapshot(snapshot) {
|
|
263
252
|
this.ensureInitialized();
|
|
264
|
-
const stmt = `
|
|
265
|
-
INSERT OR REPLACE INTO snapshots (
|
|
266
|
-
aggregate_id, aggregate_type, version, state, timestamp
|
|
267
|
-
) VALUES (?, ?, ?, ?, ?)
|
|
253
|
+
const stmt = `
|
|
254
|
+
INSERT OR REPLACE INTO snapshots (
|
|
255
|
+
aggregate_id, aggregate_type, version, state, timestamp
|
|
256
|
+
) VALUES (?, ?, ?, ?, ?)
|
|
268
257
|
`;
|
|
269
258
|
this.db.run(stmt, [
|
|
270
259
|
snapshot.aggregateId,
|
|
@@ -281,9 +270,7 @@ export class EventStore extends EventEmitter {
|
|
|
281
270
|
async getSnapshot(aggregateId) {
|
|
282
271
|
this.ensureInitialized();
|
|
283
272
|
const stmt = this.db.prepare('SELECT * FROM snapshots WHERE aggregate_id = ? ORDER BY version DESC LIMIT 1');
|
|
284
|
-
stmt.
|
|
285
|
-
const hasRow = stmt.step();
|
|
286
|
-
const row = hasRow ? stmt.getAsObject() : null;
|
|
273
|
+
const row = stmt.getAsObject([aggregateId]);
|
|
287
274
|
stmt.free();
|
|
288
275
|
if (!row || Object.keys(row).length === 0) {
|
|
289
276
|
return null;
|
|
@@ -303,7 +290,6 @@ export class EventStore extends EventEmitter {
|
|
|
303
290
|
this.ensureInitialized();
|
|
304
291
|
// Total events
|
|
305
292
|
const totalStmt = this.db.prepare('SELECT COUNT(*) as count FROM events');
|
|
306
|
-
totalStmt.step();
|
|
307
293
|
const totalRow = totalStmt.getAsObject();
|
|
308
294
|
totalStmt.free();
|
|
309
295
|
const totalEvents = totalRow.count || 0;
|
|
@@ -325,12 +311,10 @@ export class EventStore extends EventEmitter {
|
|
|
325
311
|
aggStmt.free();
|
|
326
312
|
// Timestamp range
|
|
327
313
|
const rangeStmt = this.db.prepare('SELECT MIN(timestamp) as oldest, MAX(timestamp) as newest FROM events');
|
|
328
|
-
rangeStmt.step();
|
|
329
314
|
const rangeRow = rangeStmt.getAsObject();
|
|
330
315
|
rangeStmt.free();
|
|
331
316
|
// Snapshot count
|
|
332
317
|
const snapshotStmt = this.db.prepare('SELECT COUNT(*) as count FROM snapshots');
|
|
333
|
-
snapshotStmt.step();
|
|
334
318
|
const snapshotRow = snapshotStmt.getAsObject();
|
|
335
319
|
snapshotStmt.free();
|
|
336
320
|
return {
|
|
@@ -362,20 +346,20 @@ export class EventStore extends EventEmitter {
|
|
|
362
346
|
if (!this.db)
|
|
363
347
|
return;
|
|
364
348
|
// Events table
|
|
365
|
-
this.db.run(`
|
|
366
|
-
CREATE TABLE IF NOT EXISTS events (
|
|
367
|
-
id TEXT PRIMARY KEY,
|
|
368
|
-
type TEXT NOT NULL,
|
|
369
|
-
aggregate_id TEXT NOT NULL,
|
|
370
|
-
aggregate_type TEXT NOT NULL,
|
|
371
|
-
version INTEGER NOT NULL,
|
|
372
|
-
timestamp INTEGER NOT NULL,
|
|
373
|
-
source TEXT NOT NULL,
|
|
374
|
-
payload TEXT NOT NULL,
|
|
375
|
-
metadata TEXT,
|
|
376
|
-
causation_id TEXT,
|
|
377
|
-
correlation_id TEXT
|
|
378
|
-
)
|
|
349
|
+
this.db.run(`
|
|
350
|
+
CREATE TABLE IF NOT EXISTS events (
|
|
351
|
+
id TEXT PRIMARY KEY,
|
|
352
|
+
type TEXT NOT NULL,
|
|
353
|
+
aggregate_id TEXT NOT NULL,
|
|
354
|
+
aggregate_type TEXT NOT NULL,
|
|
355
|
+
version INTEGER NOT NULL,
|
|
356
|
+
timestamp INTEGER NOT NULL,
|
|
357
|
+
source TEXT NOT NULL,
|
|
358
|
+
payload TEXT NOT NULL,
|
|
359
|
+
metadata TEXT,
|
|
360
|
+
causation_id TEXT,
|
|
361
|
+
correlation_id TEXT
|
|
362
|
+
)
|
|
379
363
|
`);
|
|
380
364
|
// Indexes for performance
|
|
381
365
|
this.db.run('CREATE INDEX IF NOT EXISTS idx_aggregate_id ON events(aggregate_id)');
|
|
@@ -385,14 +369,14 @@ export class EventStore extends EventEmitter {
|
|
|
385
369
|
this.db.run('CREATE INDEX IF NOT EXISTS idx_version ON events(version)');
|
|
386
370
|
this.db.run('CREATE UNIQUE INDEX IF NOT EXISTS idx_aggregate_version ON events(aggregate_id, version)');
|
|
387
371
|
// Snapshots table
|
|
388
|
-
this.db.run(`
|
|
389
|
-
CREATE TABLE IF NOT EXISTS snapshots (
|
|
390
|
-
aggregate_id TEXT PRIMARY KEY,
|
|
391
|
-
aggregate_type TEXT NOT NULL,
|
|
392
|
-
version INTEGER NOT NULL,
|
|
393
|
-
state TEXT NOT NULL,
|
|
394
|
-
timestamp INTEGER NOT NULL
|
|
395
|
-
)
|
|
372
|
+
this.db.run(`
|
|
373
|
+
CREATE TABLE IF NOT EXISTS snapshots (
|
|
374
|
+
aggregate_id TEXT PRIMARY KEY,
|
|
375
|
+
aggregate_type TEXT NOT NULL,
|
|
376
|
+
version INTEGER NOT NULL,
|
|
377
|
+
state TEXT NOT NULL,
|
|
378
|
+
timestamp INTEGER NOT NULL
|
|
379
|
+
)
|
|
396
380
|
`);
|
|
397
381
|
if (this.config.verbose) {
|
|
398
382
|
console.log('[EventStore] Schema created successfully');
|
|
@@ -112,18 +112,14 @@ describe('EventStore', () => {
|
|
|
112
112
|
expect(events).toHaveLength(3);
|
|
113
113
|
});
|
|
114
114
|
it('should replay from specific version', async () => {
|
|
115
|
-
|
|
116
|
-
await eventStore.append(
|
|
117
|
-
await eventStore.append(
|
|
118
|
-
await eventStore.append(createTaskCreatedEvent('task-1', 'implementation', 'Task', 'Desc', 'high', [])); // v1
|
|
115
|
+
await eventStore.append(createAgentSpawnedEvent('agent-1', 'coder', 'core', []));
|
|
116
|
+
await eventStore.append(createAgentStartedEvent('agent-1'));
|
|
117
|
+
await eventStore.append(createTaskCreatedEvent('task-1', 'implementation', 'Task', 'Desc', 'high', []));
|
|
119
118
|
const events = [];
|
|
120
119
|
for await (const event of eventStore.replay(2)) {
|
|
121
120
|
events.push(event);
|
|
122
121
|
}
|
|
123
|
-
|
|
124
|
-
// Only agent-1's second event (v2) qualifies
|
|
125
|
-
expect(events.length).toBeGreaterThanOrEqual(1);
|
|
126
|
-
expect(events[0].version).toBeGreaterThanOrEqual(2);
|
|
122
|
+
expect(events.length).toBeGreaterThanOrEqual(2);
|
|
127
123
|
});
|
|
128
124
|
});
|
|
129
125
|
describe('Snapshots', () => {
|
|
@@ -205,8 +205,6 @@ export class HookExecutor {
|
|
|
205
205
|
const results = [];
|
|
206
206
|
let currentContext = { ...initialContext };
|
|
207
207
|
let totalExecutionTime = 0;
|
|
208
|
-
let totalHooksExecuted = 0;
|
|
209
|
-
let totalHooksFailed = 0;
|
|
210
208
|
let aborted = false;
|
|
211
209
|
for (const event of events) {
|
|
212
210
|
if (aborted) {
|
|
@@ -215,8 +213,6 @@ export class HookExecutor {
|
|
|
215
213
|
const result = await this.execute(event, currentContext, options);
|
|
216
214
|
results.push(...result.results);
|
|
217
215
|
totalExecutionTime += result.totalExecutionTime;
|
|
218
|
-
totalHooksExecuted += result.hooksExecuted;
|
|
219
|
-
totalHooksFailed += result.hooksFailed;
|
|
220
216
|
// Merge context for next event
|
|
221
217
|
if (result.finalContext) {
|
|
222
218
|
currentContext = { ...currentContext, ...result.finalContext };
|
|
@@ -226,12 +222,13 @@ export class HookExecutor {
|
|
|
226
222
|
break;
|
|
227
223
|
}
|
|
228
224
|
}
|
|
225
|
+
const hooksFailed = results.filter(r => !r.success).length;
|
|
229
226
|
return {
|
|
230
|
-
success:
|
|
227
|
+
success: hooksFailed === 0 && !aborted,
|
|
231
228
|
results: options.collectResults ? results : [],
|
|
232
229
|
totalExecutionTime,
|
|
233
|
-
hooksExecuted:
|
|
234
|
-
hooksFailed
|
|
230
|
+
hooksExecuted: results.length,
|
|
231
|
+
hooksFailed,
|
|
235
232
|
aborted,
|
|
236
233
|
finalContext: currentContext,
|
|
237
234
|
};
|
|
@@ -142,7 +142,7 @@ export class FileOrganizationHook {
|
|
|
142
142
|
blocked = true;
|
|
143
143
|
blockReason = `Source files should not be written to root folder. Suggested: ${fileTypeInfo.directories[0]}`;
|
|
144
144
|
suggestedDirectory = fileTypeInfo.directories[0];
|
|
145
|
-
suggestedPath = path.join(suggestedDirectory, fileName)
|
|
145
|
+
suggestedPath = path.join(suggestedDirectory, fileName);
|
|
146
146
|
issues.push({
|
|
147
147
|
type: 'root-write',
|
|
148
148
|
severity: 'error',
|
|
@@ -22,8 +22,8 @@ describe('Hooks Module Exports', () => {
|
|
|
22
22
|
it('should export types (type-only imports)', () => {
|
|
23
23
|
expect(true).toBe(true);
|
|
24
24
|
});
|
|
25
|
-
it('should create instances from exported factories',
|
|
26
|
-
const { createHookRegistry, createHookExecutor } =
|
|
25
|
+
it('should create instances from exported factories', () => {
|
|
26
|
+
const { createHookRegistry, createHookExecutor } = require('./index.js');
|
|
27
27
|
const registry = createHookRegistry();
|
|
28
28
|
expect(registry).toBeDefined();
|
|
29
29
|
expect(typeof registry.register).toBe('function');
|
|
@@ -32,8 +32,8 @@ describe('Hooks Module Exports', () => {
|
|
|
32
32
|
expect(executor).toBeDefined();
|
|
33
33
|
expect(typeof executor.execute).toBe('function');
|
|
34
34
|
});
|
|
35
|
-
it('should have all 26 hook events defined',
|
|
36
|
-
const { HookEvent } =
|
|
35
|
+
it('should have all 26 hook events defined', () => {
|
|
36
|
+
const { HookEvent } = require('./index.js');
|
|
37
37
|
const expectedEvents = [
|
|
38
38
|
'PreToolUse',
|
|
39
39
|
'PostToolUse',
|
|
@@ -68,8 +68,8 @@ describe('Hooks Module Exports', () => {
|
|
|
68
68
|
expect(HookEvent[event]).toBeDefined();
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
|
-
it('should have all 5 priority levels defined',
|
|
72
|
-
const { HookPriority } =
|
|
71
|
+
it('should have all 5 priority levels defined', () => {
|
|
72
|
+
const { HookPriority } = require('./index.js');
|
|
73
73
|
expect(HookPriority.Critical).toBe(1000);
|
|
74
74
|
expect(HookPriority.High).toBe(500);
|
|
75
75
|
expect(HookPriority.Normal).toBe(0);
|
|
@@ -191,7 +191,7 @@ export function createSecureLogger(prefix, config) {
|
|
|
191
191
|
/**
|
|
192
192
|
* Default logger instance
|
|
193
193
|
*/
|
|
194
|
-
export const logger = createSecureLogger('
|
|
194
|
+
export const logger = createSecureLogger('claude-flow');
|
|
195
195
|
/**
|
|
196
196
|
* Sanitize an error for safe logging/display
|
|
197
197
|
*/
|