mindforge-cc 9.0.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mindforge/config.json +1 -1
- package/CHANGELOG.md +15 -0
- package/LICENSE +1 -1
- package/MINDFORGE.md +13 -0
- package/README.md +7 -1
- package/bin/autonomous/audit-writer.js +90 -0
- package/bin/autonomous/auto-runner.js +209 -431
- package/bin/autonomous/state-manager.js +116 -0
- package/bin/autonomous/task-dispatcher.js +114 -0
- package/bin/autonomous/wave-executor.js +169 -0
- package/bin/browser/browser-daemon.js +31 -1
- package/bin/change-classifier.js +3 -3
- package/bin/dashboard/api-router.js +21 -22
- package/bin/dashboard/metrics-aggregator.js +44 -3
- package/bin/dashboard/server.js +54 -10
- package/bin/dashboard/sse-bridge.js +51 -5
- package/bin/engine/learning-manager.js +1 -1
- package/bin/engine/mesh-syncer.js +26 -22
- package/bin/engine/nexus-tracer.js +6 -5
- package/bin/engine/orbital-guardian.js +13 -10
- package/bin/engine/skill-evolver.js +12 -14
- package/bin/engine/temporal-hub.js +25 -1
- package/bin/governance/policy-engine.js +5 -5
- package/bin/governance/policy-gate-hardened.js +2 -2
- package/bin/governance/quantum-crypto.js +10 -2
- package/bin/memory/identity-synthesizer.js +9 -11
- package/bin/memory/knowledge-store.js +62 -6
- package/bin/memory/semantic-hub.js +26 -30
- package/bin/memory/vector-hub.js +377 -193
- package/bin/migrations/v8-sqlite-migration.js +22 -21
- package/bin/migrations/v9-unified-memory.js +1 -1
- package/bin/mindforge-cli.js +47 -11
- package/bin/models/model-broker.js +2 -0
- package/bin/revops/remediation-queue.js +16 -55
- package/bin/utils/errors.js +40 -0
- package/bin/utils/file-io.js +102 -0
- package/bin/utils/index.js +6 -0
- package/bin/utils/paths.js +33 -0
- package/docs/sdk-reference.md +374 -24
- package/docs/troubleshooting.md +4 -4
- package/examples/sdk-integration/README.md +24 -0
- package/examples/sdk-integration/index.js +24 -0
- package/examples/starter-project/MINDFORGE.md +8 -8
- package/package.json +25 -14
- package/.agent/bin/lib/commands.cjs +0 -959
- package/.agent/bin/lib/config.cjs +0 -421
- package/.agent/bin/lib/core.cjs +0 -1166
- package/.agent/bin/lib/frontmatter.cjs +0 -307
- package/.agent/bin/lib/init.cjs +0 -1336
- package/.agent/bin/lib/milestone.cjs +0 -252
- package/.agent/bin/lib/model-profiles.cjs +0 -68
- package/.agent/bin/lib/phase.cjs +0 -888
- package/.agent/bin/lib/profile-output.cjs +0 -952
- package/.agent/bin/lib/profile-pipeline.cjs +0 -539
- package/.agent/bin/lib/roadmap.cjs +0 -329
- package/.agent/bin/lib/security.cjs +0 -356
- package/.agent/bin/lib/state.cjs +0 -969
- package/.agent/bin/lib/template.cjs +0 -222
- package/.agent/bin/lib/uat.cjs +0 -189
- package/.agent/bin/lib/verify.cjs +0 -851
- package/.agent/bin/lib/workstream.cjs +0 -491
- package/.agent/bin/mindforge-tools.cjs +0 -897
- package/.agent/file-manifest.json +0 -219
- package/.agent/forge/help.md +0 -11
- package/.agent/forge/init-project.md +0 -36
- package/.agent/forge/plan-phase.md +0 -34
- package/.agent/mindforge/add-backlog.md +0 -32
- package/.agent/mindforge/agent.md +0 -31
- package/.agent/mindforge/approve.md +0 -22
- package/.agent/mindforge/audit.md +0 -34
- package/.agent/mindforge/auto.md +0 -26
- package/.agent/mindforge/benchmark.md +0 -37
- package/.agent/mindforge/browse.md +0 -30
- package/.agent/mindforge/complete-milestone.md +0 -22
- package/.agent/mindforge/costs.md +0 -15
- package/.agent/mindforge/cross-review.md +0 -21
- package/.agent/mindforge/dashboard.md +0 -102
- package/.agent/mindforge/debug.md +0 -133
- package/.agent/mindforge/discuss-phase.md +0 -142
- package/.agent/mindforge/do.md +0 -31
- package/.agent/mindforge/execute-phase.md +0 -200
- package/.agent/mindforge/health.md +0 -31
- package/.agent/mindforge/help.md +0 -33
- package/.agent/mindforge/init-org.md +0 -135
- package/.agent/mindforge/init-project.md +0 -170
- package/.agent/mindforge/install-skill.md +0 -28
- package/.agent/mindforge/learn.md +0 -147
- package/.agent/mindforge/learning.md +0 -20
- package/.agent/mindforge/map-codebase.md +0 -302
- package/.agent/mindforge/marketplace.md +0 -124
- package/.agent/mindforge/metrics.md +0 -26
- package/.agent/mindforge/migrate.md +0 -44
- package/.agent/mindforge/milestone.md +0 -16
- package/.agent/mindforge/new-runtime.md +0 -23
- package/.agent/mindforge/next.md +0 -109
- package/.agent/mindforge/note.md +0 -35
- package/.agent/mindforge/plan-phase.md +0 -131
- package/.agent/mindforge/plant-seed.md +0 -31
- package/.agent/mindforge/plugins.md +0 -44
- package/.agent/mindforge/pr-review.md +0 -45
- package/.agent/mindforge/profile-team.md +0 -27
- package/.agent/mindforge/publish-skill.md +0 -23
- package/.agent/mindforge/qa.md +0 -20
- package/.agent/mindforge/quick.md +0 -139
- package/.agent/mindforge/record-learning.md +0 -22
- package/.agent/mindforge/release.md +0 -14
- package/.agent/mindforge/remember.md +0 -30
- package/.agent/mindforge/research.md +0 -16
- package/.agent/mindforge/retrospective.md +0 -31
- package/.agent/mindforge/review-backlog.md +0 -34
- package/.agent/mindforge/review.md +0 -161
- package/.agent/mindforge/security-scan.md +0 -242
- package/.agent/mindforge/session-report.md +0 -39
- package/.agent/mindforge/ship.md +0 -111
- package/.agent/mindforge/skills.md +0 -145
- package/.agent/mindforge/status.md +0 -113
- package/.agent/mindforge/steer.md +0 -17
- package/.agent/mindforge/sync-confluence.md +0 -15
- package/.agent/mindforge/sync-jira.md +0 -16
- package/.agent/mindforge/tokens.md +0 -12
- package/.agent/mindforge/ui-phase.md +0 -34
- package/.agent/mindforge/ui-review.md +0 -36
- package/.agent/mindforge/update.md +0 -46
- package/.agent/mindforge/validate-phase.md +0 -31
- package/.agent/mindforge/verify-phase.md +0 -66
- package/.agent/mindforge/workspace.md +0 -33
- package/.agent/mindforge/workstreams.md +0 -35
- package/.agent/settings.json +0 -42
- package/.agent/skills/mindforge-add-backlog/SKILL.md +0 -72
- package/.agent/skills/mindforge-add-phase/SKILL.md +0 -39
- package/.agent/skills/mindforge-add-tests/SKILL.md +0 -28
- package/.agent/skills/mindforge-add-todo/SKILL.md +0 -42
- package/.agent/skills/mindforge-audit-milestone/SKILL.md +0 -29
- package/.agent/skills/mindforge-audit-uat/SKILL.md +0 -20
- package/.agent/skills/mindforge-autonomous/SKILL.md +0 -33
- package/.agent/skills/mindforge-brainstorming/SKILL.md +0 -164
- package/.agent/skills/mindforge-brainstorming/scripts/frame-template.html +0 -214
- package/.agent/skills/mindforge-brainstorming/scripts/helper.js +0 -88
- package/.agent/skills/mindforge-brainstorming/scripts/server.cjs +0 -354
- package/.agent/skills/mindforge-brainstorming/scripts/start-server.sh +0 -148
- package/.agent/skills/mindforge-brainstorming/scripts/stop-server.sh +0 -56
- package/.agent/skills/mindforge-brainstorming/spec-document-reviewer-prompt.md +0 -49
- package/.agent/skills/mindforge-brainstorming/visual-companion.md +0 -287
- package/.agent/skills/mindforge-check-todos/SKILL.md +0 -40
- package/.agent/skills/mindforge-cleanup/SKILL.md +0 -19
- package/.agent/skills/mindforge-complete-milestone/SKILL.md +0 -131
- package/.agent/skills/mindforge-debug/SKILL.md +0 -163
- package/.agent/skills/mindforge-debug_extended/CREATION-LOG.md +0 -119
- package/.agent/skills/mindforge-debug_extended/SKILL.md +0 -296
- package/.agent/skills/mindforge-debug_extended/condition-based-waiting-example.ts +0 -158
- package/.agent/skills/mindforge-debug_extended/condition-based-waiting.md +0 -115
- package/.agent/skills/mindforge-debug_extended/defense-in-depth.md +0 -122
- package/.agent/skills/mindforge-debug_extended/find-polluter.sh +0 -63
- package/.agent/skills/mindforge-debug_extended/root-cause-tracing.md +0 -169
- package/.agent/skills/mindforge-debug_extended/test-academic.md +0 -14
- package/.agent/skills/mindforge-debug_extended/test-pressure-1.md +0 -58
- package/.agent/skills/mindforge-debug_extended/test-pressure-2.md +0 -68
- package/.agent/skills/mindforge-debug_extended/test-pressure-3.md +0 -69
- package/.agent/skills/mindforge-discuss-phase/SKILL.md +0 -54
- package/.agent/skills/mindforge-do/SKILL.md +0 -26
- package/.agent/skills/mindforge-execute-phase/SKILL.md +0 -49
- package/.agent/skills/mindforge-execute-phase_extended/SKILL.md +0 -70
- package/.agent/skills/mindforge-fast/SKILL.md +0 -23
- package/.agent/skills/mindforge-forensics/SKILL.md +0 -49
- package/.agent/skills/mindforge-health/SKILL.md +0 -17
- package/.agent/skills/mindforge-help/SKILL.md +0 -23
- package/.agent/skills/mindforge-insert-phase/SKILL.md +0 -28
- package/.agent/skills/mindforge-join-discord/SKILL.md +0 -19
- package/.agent/skills/mindforge-list-phase-assumptions/SKILL.md +0 -41
- package/.agent/skills/mindforge-list-workspaces/SKILL.md +0 -17
- package/.agent/skills/mindforge-manager/SKILL.md +0 -32
- package/.agent/skills/mindforge-map-codebase/SKILL.md +0 -64
- package/.agent/skills/mindforge-milestone-summary/SKILL.md +0 -44
- package/.agent/skills/mindforge-neural-orchestrator/SKILL.md +0 -115
- package/.agent/skills/mindforge-neural-orchestrator/references/codex-tools.md +0 -100
- package/.agent/skills/mindforge-neural-orchestrator/references/gemini-tools.md +0 -33
- package/.agent/skills/mindforge-new-milestone/SKILL.md +0 -38
- package/.agent/skills/mindforge-new-project/SKILL.md +0 -36
- package/.agent/skills/mindforge-new-workspace/SKILL.md +0 -39
- package/.agent/skills/mindforge-next/SKILL.md +0 -19
- package/.agent/skills/mindforge-note/SKILL.md +0 -29
- package/.agent/skills/mindforge-parallel-mesh_extended/SKILL.md +0 -182
- package/.agent/skills/mindforge-pause-work/SKILL.md +0 -35
- package/.agent/skills/mindforge-plan-milestone-gaps/SKILL.md +0 -28
- package/.agent/skills/mindforge-plan-phase/SKILL.md +0 -38
- package/.agent/skills/mindforge-plan-phase_extended/SKILL.md +0 -152
- package/.agent/skills/mindforge-plan-phase_extended/plan-document-reviewer-prompt.md +0 -49
- package/.agent/skills/mindforge-plant-seed/SKILL.md +0 -22
- package/.agent/skills/mindforge-pr-branch/SKILL.md +0 -21
- package/.agent/skills/mindforge-profile-user/SKILL.md +0 -38
- package/.agent/skills/mindforge-progress/SKILL.md +0 -19
- package/.agent/skills/mindforge-quick/SKILL.md +0 -38
- package/.agent/skills/mindforge-reapply-patches/SKILL.md +0 -124
- package/.agent/skills/mindforge-remove-phase/SKILL.md +0 -26
- package/.agent/skills/mindforge-remove-workspace/SKILL.md +0 -22
- package/.agent/skills/mindforge-research-phase/SKILL.md +0 -186
- package/.agent/skills/mindforge-resume-work/SKILL.md +0 -35
- package/.agent/skills/mindforge-review/SKILL.md +0 -31
- package/.agent/skills/mindforge-review-backlog/SKILL.md +0 -58
- package/.agent/skills/mindforge-review-inbound/SKILL.md +0 -213
- package/.agent/skills/mindforge-review-request/SKILL.md +0 -105
- package/.agent/skills/mindforge-review-request/code-reviewer.md +0 -146
- package/.agent/skills/mindforge-session-report/SKILL.md +0 -16
- package/.agent/skills/mindforge-set-profile/SKILL.md +0 -9
- package/.agent/skills/mindforge-settings/SKILL.md +0 -32
- package/.agent/skills/mindforge-ship/SKILL.md +0 -16
- package/.agent/skills/mindforge-ship_extended/SKILL.md +0 -200
- package/.agent/skills/mindforge-skill-creation/SKILL.md +0 -655
- package/.agent/skills/mindforge-skill-creation/anthropic-best-practices.md +0 -1150
- package/.agent/skills/mindforge-skill-creation/examples/CLAUDE_MD_TESTING.md +0 -189
- package/.agent/skills/mindforge-skill-creation/graphviz-conventions.dot +0 -172
- package/.agent/skills/mindforge-skill-creation/persuasion-principles.md +0 -187
- package/.agent/skills/mindforge-skill-creation/render-graphs.js +0 -168
- package/.agent/skills/mindforge-skill-creation/testing-skills-with-subagents.md +0 -384
- package/.agent/skills/mindforge-stats/SKILL.md +0 -16
- package/.agent/skills/mindforge-swarm-execution/SKILL.md +0 -277
- package/.agent/skills/mindforge-swarm-execution/code-quality-reviewer-prompt.md +0 -26
- package/.agent/skills/mindforge-swarm-execution/implementer-prompt.md +0 -113
- package/.agent/skills/mindforge-swarm-execution/spec-reviewer-prompt.md +0 -61
- package/.agent/skills/mindforge-system-architecture/SKILL.md +0 -136
- package/.agent/skills/mindforge-system-architecture/examples.md +0 -120
- package/.agent/skills/mindforge-system-architecture/scaling-checklist.md +0 -76
- package/.agent/skills/mindforge-tdd/SKILL.md +0 -112
- package/.agent/skills/mindforge-tdd/deep-modules.md +0 -21
- package/.agent/skills/mindforge-tdd/interface-design.md +0 -22
- package/.agent/skills/mindforge-tdd/mocking.md +0 -24
- package/.agent/skills/mindforge-tdd/refactoring.md +0 -21
- package/.agent/skills/mindforge-tdd/tests.md +0 -28
- package/.agent/skills/mindforge-tdd_extended/SKILL.md +0 -371
- package/.agent/skills/mindforge-tdd_extended/testing-anti-patterns.md +0 -299
- package/.agent/skills/mindforge-thread/SKILL.md +0 -123
- package/.agent/skills/mindforge-ui-phase/SKILL.md +0 -24
- package/.agent/skills/mindforge-ui-review/SKILL.md +0 -24
- package/.agent/skills/mindforge-update/SKILL.md +0 -35
- package/.agent/skills/mindforge-validate-phase/SKILL.md +0 -26
- package/.agent/skills/mindforge-verify-work/SKILL.md +0 -30
- package/.agent/skills/mindforge-verify-work_extended/SKILL.md +0 -139
- package/.agent/skills/mindforge-workspace-isolated/SKILL.md +0 -218
- package/.agent/skills/mindforge-workstreams/SKILL.md +0 -65
- package/.agent/workflows/forge:help.md +0 -10
- package/.agent/workflows/forge:init-project.md +0 -35
- package/.agent/workflows/forge:plan-phase.md +0 -33
- package/.agent/workflows/mindforge-add-phase.md +0 -112
- package/.agent/workflows/mindforge-add-tests.md +0 -351
- package/.agent/workflows/mindforge-add-todo.md +0 -158
- package/.agent/workflows/mindforge-audit-milestone.md +0 -332
- package/.agent/workflows/mindforge-audit-uat.md +0 -109
- package/.agent/workflows/mindforge-autonomous.md +0 -815
- package/.agent/workflows/mindforge-check-todos.md +0 -177
- package/.agent/workflows/mindforge-cleanup.md +0 -152
- package/.agent/workflows/mindforge-complete-milestone.md +0 -766
- package/.agent/workflows/mindforge-diagnose-issues.md +0 -220
- package/.agent/workflows/mindforge-discovery-phase.md +0 -289
- package/.agent/workflows/mindforge-discuss-phase-assumptions.md +0 -645
- package/.agent/workflows/mindforge-discuss-phase.md +0 -1047
- package/.agent/workflows/mindforge-do.md +0 -104
- package/.agent/workflows/mindforge-execute-phase.md +0 -838
- package/.agent/workflows/mindforge-execute-plan.md +0 -509
- package/.agent/workflows/mindforge-fast.md +0 -105
- package/.agent/workflows/mindforge-forensics.md +0 -265
- package/.agent/workflows/mindforge-health.md +0 -181
- package/.agent/workflows/mindforge-help.md +0 -606
- package/.agent/workflows/mindforge-insert-phase.md +0 -130
- package/.agent/workflows/mindforge-list-phase-assumptions.md +0 -178
- package/.agent/workflows/mindforge-list-workspaces.md +0 -56
- package/.agent/workflows/mindforge-manager.md +0 -360
- package/.agent/workflows/mindforge-map-codebase.md +0 -370
- package/.agent/workflows/mindforge-milestone-summary.md +0 -223
- package/.agent/workflows/mindforge-new-milestone.md +0 -469
- package/.agent/workflows/mindforge-new-project.md +0 -1226
- package/.agent/workflows/mindforge-new-workspace.md +0 -237
- package/.agent/workflows/mindforge-next.md +0 -97
- package/.agent/workflows/mindforge-node-repair.md +0 -92
- package/.agent/workflows/mindforge-note.md +0 -156
- package/.agent/workflows/mindforge-pause-work.md +0 -176
- package/.agent/workflows/mindforge-plan-milestone-gaps.md +0 -273
- package/.agent/workflows/mindforge-plan-phase.md +0 -877
- package/.agent/workflows/mindforge-plant-seed.md +0 -169
- package/.agent/workflows/mindforge-pr-branch.md +0 -129
- package/.agent/workflows/mindforge-profile-user.md +0 -450
- package/.agent/workflows/mindforge-progress.md +0 -507
- package/.agent/workflows/mindforge-quick.md +0 -732
- package/.agent/workflows/mindforge-remove-phase.md +0 -155
- package/.agent/workflows/mindforge-remove-workspace.md +0 -90
- package/.agent/workflows/mindforge-research-phase.md +0 -74
- package/.agent/workflows/mindforge-resume-project.md +0 -325
- package/.agent/workflows/mindforge-review.md +0 -228
- package/.agent/workflows/mindforge-session-report.md +0 -146
- package/.agent/workflows/mindforge-settings.md +0 -283
- package/.agent/workflows/mindforge-ship.md +0 -228
- package/.agent/workflows/mindforge-stats.md +0 -60
- package/.agent/workflows/mindforge-transition.md +0 -671
- package/.agent/workflows/mindforge-ui-phase.md +0 -290
- package/.agent/workflows/mindforge-ui-review.md +0 -157
- package/.agent/workflows/mindforge-update.md +0 -323
- package/.agent/workflows/mindforge-validate-phase.md +0 -167
- package/.agent/workflows/mindforge-verify-phase.md +0 -254
- package/.agent/workflows/mindforge-verify-work.md +0 -628
- package/.agent/workflows/mindforge:add-backlog.md +0 -24
- package/.agent/workflows/mindforge:agent.md +0 -25
- package/.agent/workflows/mindforge:approve.md +0 -21
- package/.agent/workflows/mindforge:architecture.md +0 -40
- package/.agent/workflows/mindforge:audit.md +0 -33
- package/.agent/workflows/mindforge:auto.md +0 -25
- package/.agent/workflows/mindforge:benchmark.md +0 -36
- package/.agent/workflows/mindforge:brainstorming.md +0 -16
- package/.agent/workflows/mindforge:browse.md +0 -29
- package/.agent/workflows/mindforge:complete-milestone.md +0 -21
- package/.agent/workflows/mindforge:costs.md +0 -14
- package/.agent/workflows/mindforge:cross-review.md +0 -20
- package/.agent/workflows/mindforge:dashboard.md +0 -101
- package/.agent/workflows/mindforge:debug.md +0 -131
- package/.agent/workflows/mindforge:discuss-phase.md +0 -141
- package/.agent/workflows/mindforge:do.md +0 -25
- package/.agent/workflows/mindforge:execute-phase.md +0 -205
- package/.agent/workflows/mindforge:executor.md +0 -18
- package/.agent/workflows/mindforge:health.md +0 -24
- package/.agent/workflows/mindforge:help.md +0 -26
- package/.agent/workflows/mindforge:identity.md +0 -18
- package/.agent/workflows/mindforge:init-org.md +0 -134
- package/.agent/workflows/mindforge:init-project.md +0 -185
- package/.agent/workflows/mindforge:install-skill.md +0 -27
- package/.agent/workflows/mindforge:learn.md +0 -146
- package/.agent/workflows/mindforge:map-codebase.md +0 -301
- package/.agent/workflows/mindforge:marketplace.md +0 -123
- package/.agent/workflows/mindforge:memory.md +0 -18
- package/.agent/workflows/mindforge:metrics.md +0 -25
- package/.agent/workflows/mindforge:migrate.md +0 -43
- package/.agent/workflows/mindforge:milestone.md +0 -15
- package/.agent/workflows/mindforge:new-runtime.md +0 -22
- package/.agent/workflows/mindforge:next.md +0 -108
- package/.agent/workflows/mindforge:note.md +0 -27
- package/.agent/workflows/mindforge:plan-phase.md +0 -139
- package/.agent/workflows/mindforge:planner.md +0 -18
- package/.agent/workflows/mindforge:plant-seed.md +0 -24
- package/.agent/workflows/mindforge:plugins.md +0 -43
- package/.agent/workflows/mindforge:pr-review.md +0 -44
- package/.agent/workflows/mindforge:profile-team.md +0 -26
- package/.agent/workflows/mindforge:publish-skill.md +0 -22
- package/.agent/workflows/mindforge:qa.md +0 -19
- package/.agent/workflows/mindforge:quick.md +0 -138
- package/.agent/workflows/mindforge:release.md +0 -13
- package/.agent/workflows/mindforge:remember.md +0 -29
- package/.agent/workflows/mindforge:research.md +0 -15
- package/.agent/workflows/mindforge:researcher.md +0 -18
- package/.agent/workflows/mindforge:retrospective.md +0 -29
- package/.agent/workflows/mindforge:review-backlog.md +0 -26
- package/.agent/workflows/mindforge:review.md +0 -160
- package/.agent/workflows/mindforge:reviewer.md +0 -18
- package/.agent/workflows/mindforge:security-scan.md +0 -236
- package/.agent/workflows/mindforge:session-report.md +0 -31
- package/.agent/workflows/mindforge:ship.md +0 -108
- package/.agent/workflows/mindforge:skills.md +0 -144
- package/.agent/workflows/mindforge:soul.md +0 -54
- package/.agent/workflows/mindforge:status.md +0 -107
- package/.agent/workflows/mindforge:steer.md +0 -16
- package/.agent/workflows/mindforge:sync-confluence.md +0 -14
- package/.agent/workflows/mindforge:sync-jira.md +0 -15
- package/.agent/workflows/mindforge:tdd.md +0 -46
- package/.agent/workflows/mindforge:tokens.md +0 -11
- package/.agent/workflows/mindforge:tool.md +0 -18
- package/.agent/workflows/mindforge:ui-phase.md +0 -27
- package/.agent/workflows/mindforge:ui-review.md +0 -28
- package/.agent/workflows/mindforge:update.md +0 -45
- package/.agent/workflows/mindforge:validate-phase.md +0 -25
- package/.agent/workflows/mindforge:verify-phase.md +0 -65
- package/.agent/workflows/mindforge:workspace.md +0 -32
- package/.agent/workflows/mindforge:workstreams.md +0 -27
- package/.agent/workflows/publish-release.md +0 -36
- package/.claude/CLAUDE.md +0 -102
- package/.claude/commands/forge/help.md +0 -7
- package/.claude/commands/forge/init-project.md +0 -32
- package/.claude/commands/forge/plan-phase.md +0 -30
- package/.claude/commands/mindforge/add-backlog.md +0 -32
- package/.claude/commands/mindforge/agent.md +0 -31
- package/.claude/commands/mindforge/approve.md +0 -22
- package/.claude/commands/mindforge/audit.md +0 -34
- package/.claude/commands/mindforge/auto.md +0 -26
- package/.claude/commands/mindforge/benchmark.md +0 -37
- package/.claude/commands/mindforge/browse.md +0 -30
- package/.claude/commands/mindforge/complete-milestone.md +0 -22
- package/.claude/commands/mindforge/costs.md +0 -15
- package/.claude/commands/mindforge/cross-review.md +0 -21
- package/.claude/commands/mindforge/dashboard.md +0 -102
- package/.claude/commands/mindforge/debug.md +0 -133
- package/.claude/commands/mindforge/discuss-phase.md +0 -142
- package/.claude/commands/mindforge/do.md +0 -31
- package/.claude/commands/mindforge/execute-phase.md +0 -200
- package/.claude/commands/mindforge/health.md +0 -31
- package/.claude/commands/mindforge/help.md +0 -33
- package/.claude/commands/mindforge/init-org.md +0 -135
- package/.claude/commands/mindforge/init-project.md +0 -170
- package/.claude/commands/mindforge/install-skill.md +0 -28
- package/.claude/commands/mindforge/learn.md +0 -147
- package/.claude/commands/mindforge/learning.md +0 -20
- package/.claude/commands/mindforge/map-codebase.md +0 -302
- package/.claude/commands/mindforge/marketplace.md +0 -124
- package/.claude/commands/mindforge/metrics.md +0 -26
- package/.claude/commands/mindforge/migrate.md +0 -44
- package/.claude/commands/mindforge/milestone.md +0 -16
- package/.claude/commands/mindforge/new-runtime.md +0 -23
- package/.claude/commands/mindforge/next.md +0 -109
- package/.claude/commands/mindforge/note.md +0 -35
- package/.claude/commands/mindforge/plan-phase.md +0 -131
- package/.claude/commands/mindforge/plant-seed.md +0 -31
- package/.claude/commands/mindforge/plugins.md +0 -44
- package/.claude/commands/mindforge/pr-review.md +0 -45
- package/.claude/commands/mindforge/profile-team.md +0 -27
- package/.claude/commands/mindforge/publish-skill.md +0 -23
- package/.claude/commands/mindforge/qa.md +0 -20
- package/.claude/commands/mindforge/quick.md +0 -139
- package/.claude/commands/mindforge/record-learning.md +0 -22
- package/.claude/commands/mindforge/release.md +0 -14
- package/.claude/commands/mindforge/remember.md +0 -30
- package/.claude/commands/mindforge/research.md +0 -16
- package/.claude/commands/mindforge/retrospective.md +0 -31
- package/.claude/commands/mindforge/review-backlog.md +0 -34
- package/.claude/commands/mindforge/review.md +0 -161
- package/.claude/commands/mindforge/security-scan.md +0 -242
- package/.claude/commands/mindforge/session-report.md +0 -39
- package/.claude/commands/mindforge/ship.md +0 -111
- package/.claude/commands/mindforge/skills.md +0 -145
- package/.claude/commands/mindforge/status.md +0 -113
- package/.claude/commands/mindforge/steer.md +0 -17
- package/.claude/commands/mindforge/sync-confluence.md +0 -15
- package/.claude/commands/mindforge/sync-jira.md +0 -16
- package/.claude/commands/mindforge/tokens.md +0 -12
- package/.claude/commands/mindforge/ui-phase.md +0 -34
- package/.claude/commands/mindforge/ui-review.md +0 -36
- package/.claude/commands/mindforge/update.md +0 -46
- package/.claude/commands/mindforge/validate-phase.md +0 -31
- package/.claude/commands/mindforge/verify-phase.md +0 -66
- package/.claude/commands/mindforge/workspace.md +0 -33
- package/.claude/commands/mindforge/workstreams.md +0 -35
- package/.claude/settings.local.json +0 -16
- package/.mindforge/audit/AUDIT-SCHEMA.md +0 -470
- package/.mindforge/browser/daemon-protocol.md +0 -24
- package/.mindforge/browser/qa-engine.md +0 -16
- package/.mindforge/browser/session-manager.md +0 -18
- package/.mindforge/browser/visual-verify-spec.md +0 -31
- package/.mindforge/celestial.db +0 -0
- package/.mindforge/ci/ci-config-schema.md +0 -21
- package/.mindforge/ci/ci-mode.md +0 -179
- package/.mindforge/ci/github-actions-adapter.md +0 -224
- package/.mindforge/ci/gitlab-ci-adapter.md +0 -31
- package/.mindforge/ci/jenkins-adapter.md +0 -44
- package/.mindforge/dashboard/api-reference.md +0 -122
- package/.mindforge/dashboard/dashboard-spec.md +0 -96
- package/.mindforge/distribution/marketplace.md +0 -53
- package/.mindforge/distribution/registry-client.md +0 -166
- package/.mindforge/distribution/registry-schema.md +0 -96
- package/.mindforge/distribution/skill-publisher.md +0 -44
- package/.mindforge/distribution/skill-validator.md +0 -74
- package/.mindforge/governance/GOVERNANCE-CONFIG.md +0 -17
- package/.mindforge/governance/approval-workflow.md +0 -37
- package/.mindforge/governance/change-classifier.md +0 -63
- package/.mindforge/governance/compliance-gates.md +0 -31
- package/.mindforge/governance/policies/sovereign-default.json +0 -16
- package/.mindforge/integrations/confluence.md +0 -27
- package/.mindforge/integrations/connection-manager.md +0 -163
- package/.mindforge/integrations/github.md +0 -25
- package/.mindforge/integrations/gitlab.md +0 -13
- package/.mindforge/integrations/jira.md +0 -102
- package/.mindforge/integrations/slack.md +0 -41
- package/.mindforge/intelligence/antipattern-detector.md +0 -75
- package/.mindforge/intelligence/difficulty-scorer.md +0 -55
- package/.mindforge/intelligence/health-engine.md +0 -208
- package/.mindforge/intelligence/skill-gap-analyser.md +0 -40
- package/.mindforge/intelligence/smart-compaction.md +0 -71
- package/.mindforge/memory/MEMORY-SCHEMA.md +0 -155
- package/.mindforge/memory/engine/capture-protocol.md +0 -36
- package/.mindforge/memory/engine/global-sync-spec.md +0 -42
- package/.mindforge/memory/engine/retrieval-spec.md +0 -44
- package/.mindforge/memory/sync-manifest.json +0 -6
- package/.mindforge/metrics/METRICS-SCHEMA.md +0 -42
- package/.mindforge/metrics/quality-tracker.md +0 -32
- package/.mindforge/models/model-registry.md +0 -48
- package/.mindforge/models/model-router.md +0 -30
- package/.mindforge/monorepo/cross-package-planner.md +0 -114
- package/.mindforge/monorepo/dependency-graph-builder.md +0 -32
- package/.mindforge/monorepo/workspace-detector.md +0 -129
- package/.mindforge/org/CONVENTIONS.md +0 -62
- package/.mindforge/org/ORG.md +0 -51
- package/.mindforge/org/SECURITY.md +0 -50
- package/.mindforge/org/TOOLS.md +0 -53
- package/.mindforge/org/integrations/INTEGRATIONS-CONFIG.md +0 -58
- package/.mindforge/org/skills/MANIFEST.md +0 -15
- package/.mindforge/plugins/PLUGINS-MANIFEST.md +0 -23
- package/.mindforge/plugins/plugin-loader.md +0 -93
- package/.mindforge/plugins/plugin-registry.md +0 -44
- package/.mindforge/plugins/plugin-schema.md +0 -68
- package/.mindforge/pr-review/ai-reviewer.md +0 -266
- package/.mindforge/pr-review/finding-formatter.md +0 -46
- package/.mindforge/pr-review/review-prompt-templates.md +0 -44
- package/.mindforge/production/compatibility-layer.md +0 -39
- package/.mindforge/production/migration-engine.md +0 -52
- package/.mindforge/production/production-checklist.md +0 -76
- package/.mindforge/production/token-optimiser.md +0 -68
- package/.mindforge/skills-builder/auto-capture-protocol.md +0 -88
- package/.mindforge/skills-builder/learn-protocol.md +0 -161
- package/.mindforge/skills-builder/quality-scoring.md +0 -120
- package/.mindforge/team/TEAM-PROFILE.md +0 -42
- package/.mindforge/team/multi-handoff.md +0 -23
- package/.mindforge/team/profiles/README.md +0 -13
- package/.mindforge/team/session-merger.md +0 -18
- package/.planning/ARCHITECTURE.md +0 -0
- package/.planning/HANDOFF.json +0 -8
- package/.planning/PROJECT.md +0 -33
- package/.planning/RELEASE-CHECKLIST.md +0 -68
- package/.planning/REQUIREMENTS.md +0 -35
- package/.planning/ROADMAP.md +0 -12
- package/.planning/STATE.md +0 -36
- package/.planning/approvals/.gitkeep +0 -1
- package/.planning/archive/.gitkeep +0 -1
- package/.planning/audit-archive/.gitkeep +0 -1
- package/.planning/decisions/.gitkeep +0 -0
- package/.planning/jira-sync.json +0 -1
- package/.planning/milestones/.gitkeep +0 -1
- package/.planning/phases/.gitkeep +0 -0
- package/.planning/research/.gitkeep +0 -0
- package/.planning/screenshots/.gitkeep +0 -0
- package/.planning/slack-threads.json +0 -1
- package/docs/CAPABILITIES-MANIFEST.md +0 -64
- package/docs/Context/Master-Context.md +0 -731
- package/docs/INTELLIGENCE-MESH.md +0 -37
- package/docs/MIND-FORGE-REFERENCE-V6.md +0 -96
- package/docs/PERSONAS.md +0 -960
- package/docs/References/audit-events.md +0 -59
- package/docs/References/checkpoints.md +0 -778
- package/docs/References/commands.md +0 -107
- package/docs/References/config-reference.md +0 -81
- package/docs/References/continuation-format.md +0 -249
- package/docs/References/decimal-phase-calculation.md +0 -64
- package/docs/References/git-integration.md +0 -295
- package/docs/References/git-planning-commit.md +0 -38
- package/docs/References/model-profile-resolution.md +0 -36
- package/docs/References/model-profiles.md +0 -139
- package/docs/References/phase-argument-parsing.md +0 -61
- package/docs/References/planning-config.md +0 -202
- package/docs/References/questioning.md +0 -162
- package/docs/References/sdk-api.md +0 -53
- package/docs/References/skills-api.md +0 -57
- package/docs/References/tdd.md +0 -263
- package/docs/References/ui-brand.md +0 -160
- package/docs/References/user-profiling.md +0 -681
- package/docs/References/verification-patterns.md +0 -612
- package/docs/References/workstream-flag.md +0 -58
- package/docs/Templates/Agents/CLAUDE-MD.md +0 -122
- package/docs/Templates/Agents/COPILOT-INSTRUCTIONS.md +0 -7
- package/docs/Templates/Agents/DEBUGGER-PROMPT.md +0 -91
- package/docs/Templates/Agents/PLANNER-PROMPT.md +0 -117
- package/docs/Templates/Codebase/architecture.md +0 -255
- package/docs/Templates/Codebase/concerns.md +0 -310
- package/docs/Templates/Codebase/conventions.md +0 -307
- package/docs/Templates/Codebase/integrations.md +0 -280
- package/docs/Templates/Codebase/stack.md +0 -186
- package/docs/Templates/Codebase/structure.md +0 -285
- package/docs/Templates/Codebase/testing.md +0 -480
- package/docs/Templates/Execution/CONTINUE-HERE.md +0 -78
- package/docs/Templates/Execution/DISCUSSION-LOG.md +0 -63
- package/docs/Templates/Execution/PHASE-PROMPT.md +0 -610
- package/docs/Templates/Execution/STATE.md +0 -176
- package/docs/Templates/Execution/SUMMARY-COMPLEX.md +0 -59
- package/docs/Templates/Execution/SUMMARY-MINIMAL.md +0 -41
- package/docs/Templates/Execution/SUMMARY-STANDARD.md +0 -48
- package/docs/Templates/Execution/SUMMARY.md +0 -248
- package/docs/Templates/Profile/DEV-PREFERENCES.md +0 -21
- package/docs/Templates/Profile/USER-PROFILE.md +0 -146
- package/docs/Templates/Profile/USER-SETUP.md +0 -311
- package/docs/Templates/Project/AGENTS_LEARNING.md +0 -88
- package/docs/Templates/Project/DISCOVERY.md +0 -146
- package/docs/Templates/Project/MILESTONE-ARCHIVE.md +0 -123
- package/docs/Templates/Project/MILESTONE.md +0 -115
- package/docs/Templates/Project/PROJECT.md +0 -206
- package/docs/Templates/Project/REQUIREMENTS.md +0 -231
- package/docs/Templates/Project/RETROSPECTIVE.md +0 -54
- package/docs/Templates/Project/ROADMAP.md +0 -202
- package/docs/Templates/Quality/DEBUG.md +0 -164
- package/docs/Templates/Quality/UAT.md +0 -280
- package/docs/Templates/Quality/UI-SPEC.md +0 -100
- package/docs/Templates/Quality/VALIDATION.md +0 -76
- package/docs/Templates/Quality/VERIFICATION-REPORT.md +0 -322
- package/docs/Templates/Research/ARCHITECTURE.md +0 -204
- package/docs/Templates/Research/FEATURES.md +0 -147
- package/docs/Templates/Research/PITFALLS.md +0 -200
- package/docs/Templates/Research/STACK.md +0 -120
- package/docs/Templates/Research/SUMMARY.md +0 -170
- package/docs/Templates/System/CONFIG.json +0 -43
- package/docs/Templates/System/CONTEXT.md +0 -352
- package/docs/adr/ADR-024-browser-localhost-only.md +0 -17
- package/docs/adr/ADR-025-visual-verify-failure-treatment.md +0 -19
- package/docs/adr/ADR-026-session-persistence-security.md +0 -20
- package/docs/adr/ADR-042-ads-protocol.md +0 -30
- package/docs/architecture/NEXUS-DASHBOARD.md +0 -35
- package/docs/architecture/PAR-ZTS-SURVEY.md +0 -43
- package/docs/architecture/README.md +0 -78
- package/docs/architecture/V3-CORE.md +0 -52
- package/docs/architecture/V4-SWARM-MESH.md +0 -77
- package/docs/architecture/V5-ENTERPRISE.md +0 -131
- package/docs/architecture/V6-SOVEREIGN.md +0 -43
- package/docs/architecture/V8-SRE.md +0 -88
- package/docs/architecture/V9-BEDROCK.md +0 -162
- package/docs/architecture/adr-039-multi-runtime-support.md +0 -20
- package/docs/architecture/adr-040-additive-schema-migration.md +0 -21
- package/docs/architecture/adr-041-stable-runtime-interface-contract.md +0 -20
- package/docs/architecture/decision-records-index.md +0 -29
- package/docs/ci-cd-integration.md +0 -30
- package/docs/ci-cd.md +0 -92
- package/docs/ci-quickstart.md +0 -78
- package/docs/commands-skills/DISCOVERED_SKILLS.md +0 -21
- package/docs/contributing/CONTRIBUTING.md +0 -38
- package/docs/contributing/plugin-authoring.md +0 -50
- package/docs/contributing/skill-authoring.md +0 -41
- package/docs/enterprise-setup.md +0 -25
- package/docs/feature-dashboard.md +0 -63
- package/docs/governance-guide.md +0 -134
- package/docs/monorepo-guide.md +0 -26
- package/docs/persona-customisation.md +0 -56
- package/docs/publishing-guide.md +0 -43
- package/docs/quick-verify.md +0 -33
- package/docs/registry/AGENTS.md +0 -37
- package/docs/registry/COMMANDS.md +0 -87
- package/docs/registry/HOOKS.md +0 -38
- package/docs/registry/PERSONAS.md +0 -64
- package/docs/registry/README.md +0 -27
- package/docs/registry/SKILLS.md +0 -142
- package/docs/registry/WORKFLOWS.md +0 -72
- package/docs/release-checklist-guide.md +0 -37
- package/docs/requirements.md +0 -29
- package/docs/security/SECURITY.md +0 -55
- package/docs/security/ZTAI-OVERVIEW.md +0 -37
- package/docs/security/penetration-test-results.md +0 -31
- package/docs/security/threat-model.md +0 -142
- package/docs/skills-authoring-guide.md +0 -176
- package/docs/skills-publishing-guide.md +0 -22
- package/docs/team-setup-guide.md +0 -21
- package/docs/testing-current-version.md +0 -130
- package/docs/tutorial.md +0 -162
- package/docs/upgrade.md +0 -58
- package/docs/usp-features.md +0 -102
- package/docs/workflow-atlas.md +0 -57
package/bin/memory/vector-hub.js
CHANGED
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* MindForge v9 VectorHub — WASM SQLite Persistence Layer
|
|
3
|
+
* Uses sql.js (Emscripten-compiled SQLite) for zero native dependency operation.
|
|
4
|
+
* No node-gyp, no C++ compiler required — works everywhere Node runs.
|
|
5
|
+
*/
|
|
6
|
+
'use strict';
|
|
7
|
+
|
|
3
8
|
const crypto = require('crypto');
|
|
4
9
|
const path = require('path');
|
|
5
10
|
const fs = require('fs');
|
|
6
11
|
|
|
7
12
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
13
|
+
* VectorHub — Unified Persistence Layer
|
|
14
|
+
* Traces, remediations, skills, knowledge, and graph edges.
|
|
15
|
+
*
|
|
16
|
+
* This version uses sql.js (WASM-based SQLite) instead of better-sqlite3.
|
|
17
|
+
* Initialization is async — callers must await init() before use.
|
|
10
18
|
*/
|
|
11
19
|
class VectorHub {
|
|
12
20
|
constructor(dbPath = null) {
|
|
13
21
|
this.dbPath = dbPath || path.join(process.cwd(), '.mindforge', 'celestial.db');
|
|
14
|
-
this.
|
|
15
|
-
|
|
16
|
-
const nativeDb = new Database(this.dbPath);
|
|
17
|
-
this.db = new Kysely({
|
|
18
|
-
dialect: new SqliteDialect({
|
|
19
|
-
database: nativeDb,
|
|
20
|
-
}),
|
|
21
|
-
});
|
|
22
|
-
|
|
22
|
+
this._db = null;
|
|
23
23
|
this.initialized = false;
|
|
24
|
+
this._writeCount = 0;
|
|
25
|
+
this._batchSize = 10;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
_ensureDir() {
|
|
@@ -31,133 +33,235 @@ class VectorHub {
|
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
/**
|
|
34
|
-
* Initialize
|
|
36
|
+
* Initialize the WASM SQLite database and create tables + indexes.
|
|
35
37
|
*/
|
|
36
38
|
async init() {
|
|
37
39
|
if (this.initialized) return;
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
await
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
.
|
|
48
|
-
|
|
49
|
-
.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
41
|
+
const initSqlJs = require('sql.js');
|
|
42
|
+
const SQL = await initSqlJs();
|
|
43
|
+
|
|
44
|
+
this._ensureDir();
|
|
45
|
+
|
|
46
|
+
// Load existing database from disk if present
|
|
47
|
+
if (fs.existsSync(this.dbPath)) {
|
|
48
|
+
const buffer = fs.readFileSync(this.dbPath);
|
|
49
|
+
this._db = new SQL.Database(buffer);
|
|
50
|
+
} else {
|
|
51
|
+
this._db = new SQL.Database();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Pragmas for performance and reliability
|
|
55
|
+
this._db.run('PRAGMA journal_mode=WAL;');
|
|
56
|
+
this._db.run('PRAGMA synchronous=NORMAL;');
|
|
57
|
+
this._db.run('PRAGMA busy_timeout=5000;');
|
|
58
|
+
|
|
59
|
+
// ── Table Creation ──────────────────────────────────────────────────────
|
|
60
|
+
|
|
61
|
+
this._db.run(`
|
|
62
|
+
CREATE TABLE IF NOT EXISTS traces (
|
|
63
|
+
id TEXT PRIMARY KEY,
|
|
64
|
+
trace_id TEXT NOT NULL,
|
|
65
|
+
span_id TEXT,
|
|
66
|
+
event TEXT NOT NULL,
|
|
67
|
+
timestamp TEXT NOT NULL,
|
|
68
|
+
agent TEXT,
|
|
69
|
+
content TEXT,
|
|
70
|
+
metadata TEXT,
|
|
71
|
+
drift_score REAL,
|
|
72
|
+
mesh_node_id TEXT
|
|
73
|
+
)
|
|
74
|
+
`);
|
|
75
|
+
|
|
76
|
+
this._db.run(`
|
|
77
|
+
CREATE TABLE IF NOT EXISTS remediations (
|
|
78
|
+
id TEXT PRIMARY KEY,
|
|
79
|
+
trace_id TEXT NOT NULL,
|
|
80
|
+
strategy TEXT NOT NULL,
|
|
81
|
+
status TEXT NOT NULL,
|
|
82
|
+
timestamp TEXT NOT NULL,
|
|
83
|
+
outcome TEXT
|
|
84
|
+
)
|
|
85
|
+
`);
|
|
86
|
+
|
|
87
|
+
this._db.run(`
|
|
88
|
+
CREATE TABLE IF NOT EXISTS skills (
|
|
89
|
+
skill_id TEXT PRIMARY KEY,
|
|
90
|
+
name TEXT NOT NULL,
|
|
91
|
+
description TEXT,
|
|
92
|
+
path TEXT,
|
|
93
|
+
success_rate REAL DEFAULT 0.0,
|
|
94
|
+
last_verified TEXT
|
|
95
|
+
)
|
|
96
|
+
`);
|
|
97
|
+
|
|
98
|
+
this._db.run(`
|
|
99
|
+
CREATE TABLE IF NOT EXISTS attestations (
|
|
100
|
+
id TEXT PRIMARY KEY,
|
|
101
|
+
request_id TEXT NOT NULL,
|
|
102
|
+
status TEXT NOT NULL,
|
|
103
|
+
attestation_payload TEXT,
|
|
104
|
+
timestamp TEXT NOT NULL
|
|
105
|
+
)
|
|
106
|
+
`);
|
|
107
|
+
|
|
108
|
+
this._db.run(`
|
|
109
|
+
CREATE TABLE IF NOT EXISTS mesh_config (
|
|
110
|
+
key TEXT PRIMARY KEY,
|
|
111
|
+
value TEXT
|
|
112
|
+
)
|
|
113
|
+
`);
|
|
114
|
+
|
|
115
|
+
this._db.run(`
|
|
116
|
+
CREATE TABLE IF NOT EXISTS knowledge (
|
|
117
|
+
id TEXT PRIMARY KEY,
|
|
118
|
+
type TEXT NOT NULL,
|
|
119
|
+
content TEXT NOT NULL,
|
|
120
|
+
tags TEXT,
|
|
121
|
+
source TEXT,
|
|
122
|
+
confidence REAL DEFAULT 1.0,
|
|
123
|
+
created_at TEXT NOT NULL,
|
|
124
|
+
updated_at TEXT,
|
|
125
|
+
metadata TEXT
|
|
126
|
+
)
|
|
127
|
+
`);
|
|
128
|
+
|
|
129
|
+
this._db.run(`
|
|
130
|
+
CREATE TABLE IF NOT EXISTS graph_edges (
|
|
131
|
+
id TEXT PRIMARY KEY,
|
|
132
|
+
source_id TEXT NOT NULL,
|
|
133
|
+
target_id TEXT NOT NULL,
|
|
134
|
+
edge_type TEXT NOT NULL,
|
|
135
|
+
weight REAL DEFAULT 1.0,
|
|
136
|
+
created_at TEXT NOT NULL
|
|
137
|
+
)
|
|
138
|
+
`);
|
|
139
|
+
|
|
140
|
+
this._db.run(`
|
|
141
|
+
CREATE TABLE IF NOT EXISTS _migrations (
|
|
142
|
+
id INTEGER PRIMARY KEY,
|
|
143
|
+
name TEXT NOT NULL,
|
|
144
|
+
applied_at TEXT NOT NULL
|
|
145
|
+
)
|
|
146
|
+
`);
|
|
147
|
+
|
|
148
|
+
// ── FTS4 Virtual Tables (FTS4 is available in all sql.js builds) ────────
|
|
149
|
+
|
|
150
|
+
this._db.run(`
|
|
136
151
|
CREATE VIRTUAL TABLE IF NOT EXISTS traces_search
|
|
137
|
-
USING
|
|
138
|
-
|
|
152
|
+
USING fts4(trace_id, content, agent, tokenize=porter)
|
|
153
|
+
`);
|
|
139
154
|
|
|
140
|
-
|
|
155
|
+
this._db.run(`
|
|
141
156
|
CREATE VIRTUAL TABLE IF NOT EXISTS knowledge_search
|
|
142
|
-
USING
|
|
143
|
-
|
|
157
|
+
USING fts4(id, content, tags, tokenize=porter)
|
|
158
|
+
`);
|
|
159
|
+
|
|
160
|
+
// ── Indexes ─────────────────────────────────────────────────────────────
|
|
144
161
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
await sql`CREATE UNIQUE INDEX IF NOT EXISTS idx_migrations_name ON _migrations(name)`.execute(this.db);
|
|
162
|
+
this._db.run('CREATE INDEX IF NOT EXISTS idx_traces_trace_id ON traces(trace_id)');
|
|
163
|
+
this._db.run('CREATE INDEX IF NOT EXISTS idx_traces_timestamp ON traces(timestamp)');
|
|
164
|
+
this._db.run('CREATE INDEX IF NOT EXISTS idx_knowledge_type ON knowledge(type)');
|
|
165
|
+
this._db.run('CREATE INDEX IF NOT EXISTS idx_graph_edges_source ON graph_edges(source_id)');
|
|
166
|
+
this._db.run('CREATE INDEX IF NOT EXISTS idx_graph_edges_target ON graph_edges(target_id)');
|
|
167
|
+
this._db.run('CREATE UNIQUE INDEX IF NOT EXISTS idx_migrations_name ON _migrations(name)');
|
|
152
168
|
|
|
153
169
|
this.initialized = true;
|
|
154
|
-
|
|
170
|
+
this.save();
|
|
171
|
+
console.log(`[VectorHub] Initialized WASM SQLite persistence at ${this.dbPath}`);
|
|
155
172
|
}
|
|
156
173
|
|
|
174
|
+
/**
|
|
175
|
+
* Persist the in-memory database to disk.
|
|
176
|
+
*/
|
|
177
|
+
save() {
|
|
178
|
+
if (!this._db) return;
|
|
179
|
+
try {
|
|
180
|
+
this._ensureDir();
|
|
181
|
+
const data = this._db.export();
|
|
182
|
+
const buffer = Buffer.from(data);
|
|
183
|
+
fs.writeFileSync(this.dbPath, buffer);
|
|
184
|
+
} catch (err) {
|
|
185
|
+
console.warn(`[VectorHub] Failed to save database: ${err.message}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Auto-save after N writes.
|
|
191
|
+
*/
|
|
192
|
+
_autosave() {
|
|
193
|
+
this._writeCount++;
|
|
194
|
+
if (this._writeCount >= this._batchSize) {
|
|
195
|
+
this.save();
|
|
196
|
+
this._writeCount = 0;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Close the database and save final state to disk.
|
|
202
|
+
*/
|
|
157
203
|
async close() {
|
|
158
|
-
|
|
204
|
+
if (this._db) {
|
|
205
|
+
this.save();
|
|
206
|
+
this._db.close();
|
|
207
|
+
this._db = null;
|
|
208
|
+
this.initialized = false;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// ── Raw Query Interface ─────────────────────────────────────────────────────
|
|
213
|
+
// These methods replace direct Kysely .db access for consumers.
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Run a SQL query that returns rows (SELECT).
|
|
217
|
+
* @param {string} sqlText - SQL query
|
|
218
|
+
* @param {Array} params - Bound parameters
|
|
219
|
+
* @returns {Array<Object>} Array of row objects
|
|
220
|
+
*/
|
|
221
|
+
query(sqlText, params = []) {
|
|
222
|
+
const stmt = this._db.prepare(sqlText);
|
|
223
|
+
stmt.bind(params);
|
|
224
|
+
const results = [];
|
|
225
|
+
while (stmt.step()) {
|
|
226
|
+
results.push(stmt.getAsObject());
|
|
227
|
+
}
|
|
228
|
+
stmt.free();
|
|
229
|
+
return results;
|
|
159
230
|
}
|
|
160
231
|
|
|
232
|
+
/**
|
|
233
|
+
* Run a SQL statement that does not return rows (INSERT, UPDATE, DELETE).
|
|
234
|
+
* @param {string} sqlText - SQL statement
|
|
235
|
+
* @param {Array} params - Bound parameters
|
|
236
|
+
*/
|
|
237
|
+
run(sqlText, params = []) {
|
|
238
|
+
this._db.run(sqlText, params);
|
|
239
|
+
this._autosave();
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Run multiple statements inside a transaction.
|
|
244
|
+
* @param {Function} fn - Function that receives { query, run } helpers
|
|
245
|
+
*/
|
|
246
|
+
async transaction(fn) {
|
|
247
|
+
this._db.run('BEGIN TRANSACTION');
|
|
248
|
+
try {
|
|
249
|
+
await fn({
|
|
250
|
+
query: (sqlText, params) => this.query(sqlText, params),
|
|
251
|
+
run: (sqlText, params) => {
|
|
252
|
+
this._db.run(sqlText, params);
|
|
253
|
+
},
|
|
254
|
+
});
|
|
255
|
+
this._db.run('COMMIT');
|
|
256
|
+
this._autosave();
|
|
257
|
+
} catch (err) {
|
|
258
|
+
this._db.run('ROLLBACK');
|
|
259
|
+
throw err;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// ── Trace API ─────────────────────────────────────────────────────────────
|
|
264
|
+
|
|
161
265
|
/**
|
|
162
266
|
* Record a trace event.
|
|
163
267
|
*/
|
|
@@ -172,44 +276,99 @@ class VectorHub {
|
|
|
172
276
|
content: data.content || null,
|
|
173
277
|
metadata: data.metadata ? JSON.stringify(data.metadata) : null,
|
|
174
278
|
drift_score: data.drift_score || 0,
|
|
175
|
-
mesh_node_id: data.mesh_node_id || null
|
|
279
|
+
mesh_node_id: data.mesh_node_id || null,
|
|
176
280
|
};
|
|
177
281
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
.execute();
|
|
186
|
-
|
|
187
|
-
// Update FTS5 index if content exists
|
|
282
|
+
this.run(
|
|
283
|
+
`INSERT OR REPLACE INTO traces (id, trace_id, span_id, event, timestamp, agent, content, metadata, drift_score, mesh_node_id)
|
|
284
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
285
|
+
[entry.id, entry.trace_id, entry.span_id, entry.event, entry.timestamp, entry.agent, entry.content, entry.metadata, entry.drift_score, entry.mesh_node_id]
|
|
286
|
+
);
|
|
287
|
+
|
|
288
|
+
// Update FTS index if content exists
|
|
188
289
|
if (entry.content) {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
290
|
+
this._db.run('DELETE FROM traces_search WHERE trace_id = ?', [entry.trace_id]);
|
|
291
|
+
this._db.run(
|
|
292
|
+
'INSERT INTO traces_search (trace_id, content, agent) VALUES (?, ?, ?)',
|
|
293
|
+
[entry.trace_id, entry.content, entry.agent]
|
|
294
|
+
);
|
|
192
295
|
}
|
|
193
|
-
|
|
296
|
+
|
|
194
297
|
return entry.id;
|
|
195
298
|
}
|
|
196
299
|
|
|
197
300
|
/**
|
|
198
|
-
*
|
|
301
|
+
* Query traces with optional filters.
|
|
302
|
+
* @param {Object} opts - { trace_id, event, since, limit }
|
|
303
|
+
*/
|
|
304
|
+
async queryTraces(opts = {}) {
|
|
305
|
+
let sqlText = 'SELECT * FROM traces WHERE 1=1';
|
|
306
|
+
const params = [];
|
|
307
|
+
|
|
308
|
+
if (opts.trace_id) {
|
|
309
|
+
sqlText += ' AND trace_id = ?';
|
|
310
|
+
params.push(opts.trace_id);
|
|
311
|
+
}
|
|
312
|
+
if (opts.event) {
|
|
313
|
+
sqlText += ' AND event = ?';
|
|
314
|
+
params.push(opts.event);
|
|
315
|
+
}
|
|
316
|
+
if (opts.since) {
|
|
317
|
+
sqlText += ' AND timestamp > ?';
|
|
318
|
+
params.push(opts.since);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
sqlText += ' ORDER BY timestamp DESC LIMIT ?';
|
|
322
|
+
params.push(Math.min(Math.max(parseInt(opts.limit) || 100, 1), 1000));
|
|
323
|
+
|
|
324
|
+
return this.query(sqlText, params);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Full-text search for traces.
|
|
199
329
|
*/
|
|
200
330
|
async searchTraces(rawQuery) {
|
|
201
|
-
const
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
331
|
+
const escaped = rawQuery.replace(/"/g, '""');
|
|
332
|
+
const ftsQuery = `"${escaped}"`;
|
|
333
|
+
return this.query(
|
|
334
|
+
`SELECT t.*
|
|
335
|
+
FROM traces t
|
|
336
|
+
JOIN traces_search ts ON t.trace_id = ts.trace_id
|
|
337
|
+
WHERE traces_search MATCH ?
|
|
338
|
+
LIMIT 10`,
|
|
339
|
+
[ftsQuery]
|
|
340
|
+
);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Full-text search for traces (alias for backward compat).
|
|
345
|
+
*/
|
|
346
|
+
async searchFTS(rawQuery) {
|
|
347
|
+
return this.searchTraces(rawQuery);
|
|
211
348
|
}
|
|
212
|
-
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Get database statistics.
|
|
352
|
+
*/
|
|
353
|
+
async getStats() {
|
|
354
|
+
const traceCount = this.query('SELECT COUNT(*) as count FROM traces')[0]?.count || 0;
|
|
355
|
+
const knowledgeCount = this.query('SELECT COUNT(*) as count FROM knowledge')[0]?.count || 0;
|
|
356
|
+
const edgeCount = this.query('SELECT COUNT(*) as count FROM graph_edges')[0]?.count || 0;
|
|
357
|
+
const skillCount = this.query('SELECT COUNT(*) as count FROM skills')[0]?.count || 0;
|
|
358
|
+
const remediationCount = this.query('SELECT COUNT(*) as count FROM remediations')[0]?.count || 0;
|
|
359
|
+
|
|
360
|
+
return {
|
|
361
|
+
traces: traceCount,
|
|
362
|
+
knowledge: knowledgeCount,
|
|
363
|
+
edges: edgeCount,
|
|
364
|
+
skills: skillCount,
|
|
365
|
+
remediations: remediationCount,
|
|
366
|
+
dbPath: this.dbPath,
|
|
367
|
+
dbSizeBytes: fs.existsSync(this.dbPath) ? fs.statSync(this.dbPath).size : 0,
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// ── Knowledge API (v9 Pillar XXVI) ────────────────────────────────────────
|
|
213
372
|
|
|
214
373
|
async saveKnowledge(entry) {
|
|
215
374
|
const now = new Date().toISOString();
|
|
@@ -225,35 +384,34 @@ class VectorHub {
|
|
|
225
384
|
metadata: entry.metadata ? JSON.stringify(entry.metadata) : null,
|
|
226
385
|
};
|
|
227
386
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
.execute(this.db);
|
|
387
|
+
this.run(
|
|
388
|
+
`INSERT OR REPLACE INTO knowledge (id, type, content, tags, source, confidence, created_at, updated_at, metadata)
|
|
389
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
390
|
+
[record.id, record.type, record.content, record.tags, record.source, record.confidence, record.created_at, record.updated_at, record.metadata]
|
|
391
|
+
);
|
|
392
|
+
|
|
393
|
+
// Update FTS index
|
|
394
|
+
this._db.run('DELETE FROM knowledge_search WHERE id = ?', [record.id]);
|
|
395
|
+
this._db.run(
|
|
396
|
+
'INSERT INTO knowledge_search (id, content, tags) VALUES (?, ?, ?)',
|
|
397
|
+
[record.id, record.content, record.tags]
|
|
398
|
+
);
|
|
399
|
+
this._autosave();
|
|
242
400
|
|
|
243
401
|
return record.id;
|
|
244
402
|
}
|
|
245
403
|
|
|
246
404
|
async searchKnowledge(rawQuery, limit = 10) {
|
|
247
|
-
const
|
|
248
|
-
const
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
405
|
+
const escaped = rawQuery.replace(/"/g, '""');
|
|
406
|
+
const ftsQuery = `"${escaped}"`;
|
|
407
|
+
return this.query(
|
|
408
|
+
`SELECT k.*
|
|
409
|
+
FROM knowledge k
|
|
410
|
+
JOIN knowledge_search ks ON k.id = ks.id
|
|
411
|
+
WHERE knowledge_search MATCH ?
|
|
412
|
+
LIMIT ?`,
|
|
413
|
+
[ftsQuery, limit]
|
|
414
|
+
);
|
|
257
415
|
}
|
|
258
416
|
|
|
259
417
|
async saveEdge(edge) {
|
|
@@ -266,37 +424,63 @@ class VectorHub {
|
|
|
266
424
|
created_at: edge.created_at || new Date().toISOString(),
|
|
267
425
|
};
|
|
268
426
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
.
|
|
427
|
+
this.run(
|
|
428
|
+
`INSERT OR IGNORE INTO graph_edges (id, source_id, target_id, edge_type, weight, created_at)
|
|
429
|
+
VALUES (?, ?, ?, ?, ?, ?)`,
|
|
430
|
+
[record.id, record.source_id, record.target_id, record.edge_type, record.weight, record.created_at]
|
|
431
|
+
);
|
|
273
432
|
|
|
274
433
|
return record.id;
|
|
275
434
|
}
|
|
276
435
|
|
|
277
436
|
async getEdges(nodeId) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
eb('target_id', '=', nodeId),
|
|
283
|
-
]))
|
|
284
|
-
.execute();
|
|
285
|
-
return results;
|
|
437
|
+
return this.query(
|
|
438
|
+
'SELECT * FROM graph_edges WHERE source_id = ? OR target_id = ?',
|
|
439
|
+
[nodeId, nodeId]
|
|
440
|
+
);
|
|
286
441
|
}
|
|
287
442
|
|
|
288
|
-
// ── v9 Pillar XXVII
|
|
443
|
+
// ── Migration Tracking (v9 Pillar XXVII) ─────────────────────────────────
|
|
289
444
|
|
|
290
445
|
async getAppliedMigrations() {
|
|
291
|
-
const rows =
|
|
446
|
+
const rows = this.query('SELECT name FROM _migrations');
|
|
292
447
|
return rows.map(r => r.name);
|
|
293
448
|
}
|
|
294
449
|
|
|
295
450
|
async recordMigration(name) {
|
|
296
|
-
|
|
297
|
-
|
|
451
|
+
this.run(
|
|
452
|
+
'INSERT OR IGNORE INTO _migrations (name, applied_at) VALUES (?, ?)',
|
|
453
|
+
[name, new Date().toISOString()]
|
|
454
|
+
);
|
|
298
455
|
}
|
|
299
456
|
}
|
|
300
457
|
|
|
301
|
-
|
|
458
|
+
// ── Factory Function ──────────────────────────────────────────────────────────
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* Create a new VectorHub instance (async factory).
|
|
462
|
+
* @param {string} [dbPath] - Optional path for the SQLite database file
|
|
463
|
+
* @returns {Promise<VectorHub>} Initialized VectorHub instance
|
|
464
|
+
*/
|
|
465
|
+
async function createVectorHub(dbPath) {
|
|
466
|
+
const hub = new VectorHub(dbPath);
|
|
467
|
+
await hub.init();
|
|
468
|
+
return hub;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// Lazy singleton — not instantiated until first method call
|
|
472
|
+
let _instance = null;
|
|
473
|
+
const lazyHub = new Proxy({}, {
|
|
474
|
+
get(_, prop) {
|
|
475
|
+
if (prop === 'VectorHub') return VectorHub;
|
|
476
|
+
if (prop === 'createVectorHub') return createVectorHub;
|
|
477
|
+
if (!_instance) _instance = new VectorHub();
|
|
478
|
+
return typeof _instance[prop] === 'function'
|
|
479
|
+
? _instance[prop].bind(_instance)
|
|
480
|
+
: _instance[prop];
|
|
481
|
+
}
|
|
482
|
+
});
|
|
483
|
+
|
|
484
|
+
module.exports = lazyHub;
|
|
302
485
|
module.exports.VectorHub = VectorHub;
|
|
486
|
+
module.exports.createVectorHub = createVectorHub;
|