@monoes/monomindcli 2.9.7 → 2.9.8
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/design/design-monodesign.md +1 -2
- package/.claude/agents/engineering/engineering-ai-data-remediation-engineer.md +1 -2
- package/.claude/agents/engineering/engineering-ai-engineer.md +1 -2
- package/.claude/agents/engineering/engineering-autonomous-optimization-architect.md +0 -1
- package/.claude/agents/engineering/engineering-backend-architect.md +1 -2
- package/.claude/agents/engineering/engineering-code-reviewer.md +1 -2
- package/.claude/agents/engineering/engineering-data-engineer.md +1 -2
- package/.claude/agents/engineering/engineering-database-optimizer.md +1 -2
- package/.claude/agents/engineering/engineering-devops-automator.md +1 -2
- package/.claude/agents/engineering/engineering-embedded-firmware-engineer.md +1 -2
- package/.claude/agents/engineering/engineering-feishu-integration-developer.md +1 -2
- package/.claude/agents/engineering/engineering-frontend-developer.md +1 -2
- package/.claude/agents/engineering/engineering-git-workflow-master.md +1 -2
- package/.claude/agents/engineering/engineering-incident-response-commander.md +0 -1
- package/.claude/agents/engineering/engineering-mobile-app-builder.md +1 -2
- package/.claude/agents/engineering/engineering-rapid-prototyper.md +1 -2
- package/.claude/agents/engineering/engineering-security-engineer.md +1 -2
- package/.claude/agents/engineering/engineering-senior-developer.md +1 -2
- package/.claude/agents/engineering/engineering-software-architect.md +1 -2
- package/.claude/agents/engineering/engineering-solidity-smart-contract-engineer.md +1 -2
- package/.claude/agents/engineering/engineering-sre.md +0 -1
- package/.claude/agents/engineering/engineering-technical-writer.md +1 -2
- package/.claude/agents/engineering/engineering-threat-detection-engineer.md +0 -1
- package/.claude/agents/engineering/engineering-wechat-mini-program-developer.md +1 -2
- package/.claude/agents/github/code-review-swarm.md +0 -1
- package/.claude/agents/github/github-modes.md +0 -1
- package/.claude/agents/github/issue-tracker.md +0 -1
- package/.claude/agents/github/multi-repo-swarm.md +0 -1
- package/.claude/agents/github/pr-manager.md +0 -1
- package/.claude/agents/github/project-board-sync.md +0 -1
- package/.claude/agents/github/release-manager.md +0 -1
- package/.claude/agents/github/repo-architect.md +0 -1
- package/.claude/agents/github/swarm-issue.md +0 -1
- package/.claude/agents/github/swarm-pr.md +0 -1
- package/.claude/agents/github/sync-coordinator.md +0 -1
- package/.claude/agents/github/workflow-automation.md +0 -1
- package/.claude/agents/marketing/marketing-competitive-content.md +1 -2
- package/.claude/agents/marketing/marketing-cro-specialist.md +1 -2
- package/.claude/agents/marketing/marketing-email-specialist.md +1 -2
- package/.claude/agents/marketing/marketing-launch-strategist.md +1 -2
- package/.claude/agents/marketing/marketing-pricing-strategist.md +1 -2
- package/.claude/agents/specialized/agentic-identity-trust.md +0 -1
- package/.claude/agents/specialized/agents-orchestrator.md +1 -2
- package/.claude/agents/specialized/automation-governance-architect.md +1 -2
- package/.claude/agents/specialized/blockchain-security-auditor.md +1 -2
- package/.claude/agents/specialized/compliance-auditor.md +1 -2
- package/.claude/agents/specialized/identity-graph-operator.md +0 -1
- package/.claude/agents/specialized/lsp-index-engineer.md +1 -2
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +0 -1
- package/.claude/agents/specialized/specialized-cultural-intelligence-strategist.md +0 -1
- package/.claude/agents/specialized/specialized-developer-advocate.md +1 -2
- package/.claude/agents/specialized/specialized-document-generator.md +1 -2
- package/.claude/agents/specialized/specialized-mcp-builder.md +1 -2
- package/.claude/agents/specialized/specialized-model-qa.md +0 -1
- package/.claude/agents/specialized/specialized-workflow-architect.md +1 -2
- package/.claude/agents/specialized/zk-steward.md +1 -2
- package/.claude/agents/testing/production-validator.md +0 -1
- package/.claude/agents/testing/tdd-london-swarm.md +0 -1
- package/.claude/agents/testing/testing-accessibility-auditor.md +0 -1
- package/.claude/agents/testing/testing-api-tester.md +1 -2
- package/.claude/agents/testing/testing-evidence-collector.md +1 -2
- package/.claude/agents/testing/testing-performance-benchmarker.md +1 -2
- package/.claude/agents/testing/testing-test-results-analyzer.md +1 -2
- package/.claude/agents/testing/testing-tool-evaluator.md +1 -2
- package/.claude/agents/testing/testing-workflow-optimizer.md +1 -2
- package/.claude/commands/hooks/README.md +1 -1
- package/.claude/commands/memory/README.md +6 -7
- package/.claude/commands/monitoring/README.md +1 -1
- package/.claude/helpers/control-start.cjs +27 -7
- package/.claude/helpers/handlers/route-handler.cjs +22 -3
- package/.claude/helpers/handlers/session-handler.cjs +43 -0
- package/.claude/helpers/intelligence.cjs +27 -6
- package/.claude/helpers/statusline.cjs +45 -11
- package/.claude/skills/agentic-jujutsu/SKILL.md +17 -15
- package/.claude/skills/hive-mind-advanced/SKILL.md +212 -559
- package/.claude/skills/hooks-automation/SKILL.md +1 -1
- package/.claude/skills/mastermind-adapters/SKILL.md +0 -11
- package/.claude/skills/mastermind-agents/SKILL.md +0 -11
- package/.claude/skills/mastermind-backup/SKILL.md +0 -11
- package/.claude/skills/mastermind-bootstrap/SKILL.md +0 -11
- package/.claude/skills/mastermind-delegation/SKILL.md +14 -12
- package/.claude/skills/mastermind-idea/SKILL.md +0 -5
- package/.claude/skills/mastermind-monitor/SKILL.md +0 -15
- package/.claude/skills/mastermind-org-settings/SKILL.md +0 -11
- package/.claude/skills/mastermind-plugins/SKILL.md +0 -11
- package/.claude/skills/mastermind-protocol/SKILL.md +6 -124
- package/.claude/skills/mastermind-repeat/SKILL.md +0 -25
- package/.claude/skills/mastermind-review/SKILL.md +1 -1
- package/.claude/skills/mastermind-stoporg/SKILL.md +0 -19
- package/.claude/skills/memory-toolkit/SKILL.md +12 -11
- package/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +8 -1
- package/.claude/skills/pair-programming/SKILL.md +1 -1
- package/.claude/skills/performance-analysis/SKILL.md +228 -484
- package/.claude/skills/specialagent/SKILL.md +31 -133
- package/.claude/skills/swarm-advanced/SKILL.md +2 -2
- package/.claude/skills/swarm-orchestration/SKILL.md +220 -150
- package/.claude/skills/verification-quality/SKILL.md +247 -571
- package/README.md +3 -3
- package/dist/src/commands/agent-lifecycle.js +3 -3
- package/dist/src/commands/agent-lifecycle.js.map +1 -1
- package/dist/src/commands/autopilot.d.ts.map +1 -1
- package/dist/src/commands/autopilot.js +7 -1
- package/dist/src/commands/autopilot.js.map +1 -1
- package/dist/src/commands/doc.d.ts.map +1 -1
- package/dist/src/commands/doc.js +14 -3
- package/dist/src/commands/doc.js.map +1 -1
- package/dist/src/commands/doctor-env-checks.d.ts +1 -1
- package/dist/src/commands/doctor-env-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.js +3 -37
- package/dist/src/commands/doctor-project-checks.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +30 -1
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -1
- package/dist/src/commands/hooks-coverage-commands.js +75 -67
- package/dist/src/commands/hooks-coverage-commands.js.map +1 -1
- package/dist/src/commands/hooks-workers.d.ts.map +1 -1
- package/dist/src/commands/hooks-workers.js +41 -10
- package/dist/src/commands/hooks-workers.js.map +1 -1
- package/dist/src/commands/hooks.js +1 -1
- package/dist/src/commands/index.d.ts +1 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +20 -4
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +80 -7
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +78 -2
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/neural-optimize.d.ts.map +1 -1
- package/dist/src/commands/neural-optimize.js +27 -5
- package/dist/src/commands/neural-optimize.js.map +1 -1
- package/dist/src/commands/org-observe.d.ts.map +1 -1
- package/dist/src/commands/org-observe.js +37 -30
- package/dist/src/commands/org-observe.js.map +1 -1
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +129 -2
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/commands/performance.js +1 -1
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/security-cve.d.ts.map +1 -1
- package/dist/src/commands/security-cve.js +1 -11
- package/dist/src/commands/security-cve.js.map +1 -1
- package/dist/src/commands/security-misc.d.ts +0 -9
- package/dist/src/commands/security-misc.d.ts.map +1 -1
- package/dist/src/commands/security-misc.js +33 -54
- package/dist/src/commands/security-misc.js.map +1 -1
- package/dist/src/commands/security-scan.d.ts.map +1 -1
- package/dist/src/commands/security-scan.js +3 -11
- package/dist/src/commands/security-scan.js.map +1 -1
- package/dist/src/commands/swarm.d.ts.map +1 -1
- package/dist/src/commands/swarm.js +7 -2
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/commands/ui.d.ts +8 -0
- package/dist/src/commands/ui.d.ts.map +1 -0
- package/dist/src/commands/ui.js +94 -0
- package/dist/src/commands/ui.js.map +1 -0
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +7 -9
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +13 -3
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/kimi-generator.d.ts +3 -2
- package/dist/src/init/kimi-generator.d.ts.map +1 -1
- package/dist/src/init/kimi-generator.js +45 -13
- package/dist/src/init/kimi-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts +1 -1
- package/dist/src/init/statusline-generator.js +1 -1
- package/dist/src/init/write-capabilities.js +7 -7
- package/dist/src/init/write-capabilities.js.map +1 -1
- package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
- package/dist/src/knowledge/document-pipeline.js +1 -0
- package/dist/src/knowledge/document-pipeline.js.map +1 -1
- package/dist/src/knowledge/eval/golden-set.d.ts.map +1 -1
- package/dist/src/knowledge/eval/golden-set.js +21 -32
- package/dist/src/knowledge/eval/golden-set.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +2 -2
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.js +29 -3
- package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +32 -19
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/query-tools.js +48 -18
- package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -1
- package/dist/src/mcp-tools/performance-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +15 -10
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/memory/embedding-operations.d.ts +4 -0
- package/dist/src/memory/embedding-operations.d.ts.map +1 -1
- package/dist/src/memory/embedding-operations.js +125 -32
- package/dist/src/memory/embedding-operations.js.map +1 -1
- package/dist/src/memory/hnsw-operations.d.ts +1 -1
- package/dist/src/memory/hnsw-operations.js +1 -1
- package/dist/src/memory/memory-bridge.d.ts +8 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +37 -8
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-read.d.ts +1 -1
- package/dist/src/memory/memory-read.js +2 -2
- package/dist/src/memory/memory-read.js.map +1 -1
- package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
- package/dist/src/orgrt/antigravity-runner.js +6 -6
- package/dist/src/orgrt/antigravity-runner.js.map +1 -1
- package/dist/src/orgrt/checkpoint-ops.d.ts +11 -1
- package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -1
- package/dist/src/orgrt/checkpoint-ops.js +18 -86
- package/dist/src/orgrt/checkpoint-ops.js.map +1 -1
- package/dist/src/orgrt/checkpoint.d.ts +1 -1
- package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
- package/dist/src/orgrt/checkpoint.js +3 -3
- package/dist/src/orgrt/checkpoint.js.map +1 -1
- package/dist/src/orgrt/daemon.d.ts +9 -1
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +267 -139
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/decisions.d.ts +13 -0
- package/dist/src/orgrt/decisions.d.ts.map +1 -1
- package/dist/src/orgrt/decisions.js +95 -0
- package/dist/src/orgrt/decisions.js.map +1 -1
- package/dist/src/orgrt/forwarder.d.ts.map +1 -1
- package/dist/src/orgrt/forwarder.js +148 -15
- package/dist/src/orgrt/forwarder.js.map +1 -1
- package/dist/src/orgrt/kimicode-runner.js +1 -1
- package/dist/src/orgrt/kimicode-runner.js.map +1 -1
- package/dist/src/orgrt/opencode-runner.js +1 -1
- package/dist/src/orgrt/opencode-runner.js.map +1 -1
- package/dist/src/orgrt/session.d.ts +27 -1
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +67 -6
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/task-dag.d.ts +11 -1
- package/dist/src/orgrt/task-dag.d.ts.map +1 -1
- package/dist/src/orgrt/task-dag.js +93 -2
- package/dist/src/orgrt/task-dag.js.map +1 -1
- package/dist/src/orgrt/templates.d.ts.map +1 -1
- package/dist/src/orgrt/templates.js +26 -2
- package/dist/src/orgrt/templates.js.map +1 -1
- package/dist/src/orgrt/types.d.ts +77 -1
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +28 -2
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/orgrt/vercel-providers.d.ts.map +1 -1
- package/dist/src/orgrt/vercel-providers.js +9 -4
- package/dist/src/orgrt/vercel-providers.js.map +1 -1
- package/dist/src/orgrt/vercel-runner.d.ts +0 -23
- package/dist/src/orgrt/vercel-runner.d.ts.map +1 -1
- package/dist/src/orgrt/vercel-runner.js +38 -7
- package/dist/src/orgrt/vercel-runner.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/.claude/commands/mastermind/approvev1.md +0 -94
- package/.claude/commands/mastermind/architect.md +0 -52
- package/.claude/commands/mastermind/autodev.md +0 -28
- package/.claude/commands/mastermind/build.md +0 -23
- package/.claude/commands/mastermind/finish.md +0 -17
- package/.claude/commands/mastermind/runorgv1.md +0 -159
- package/.claude/commands/mastermind/taskdev.md +0 -23
- package/.claude/commands/mastermind/tdd.md +0 -19
- package/.claude/commands/mastermind/verify.md +0 -19
- package/.claude/skills/mastermind-approvev1/SKILL.md +0 -191
- package/.claude/skills/mastermind-architect/SKILL.md +0 -862
- package/.claude/skills/mastermind-autodev/SKILL.md +0 -360
- package/.claude/skills/mastermind-build/SKILL.md +0 -169
- package/.claude/skills/mastermind-companies/SKILL.md +0 -256
- package/.claude/skills/mastermind-content/SKILL.md +0 -197
- package/.claude/skills/mastermind-costs/SKILL.md +0 -151
- package/.claude/skills/mastermind-finance/SKILL.md +0 -166
- package/.claude/skills/mastermind-finish/SKILL.md +0 -251
- package/.claude/skills/mastermind-heartbeatv1/SKILL.md +0 -167
- package/.claude/skills/mastermind-instance-settings/SKILL.md +0 -315
- package/.claude/skills/mastermind-marketing/SKILL.md +0 -228
- package/.claude/skills/mastermind-marketing/references/copywriting-frameworks.md +0 -181
- package/.claude/skills/mastermind-marketing/references/persuasion-psychology.md +0 -158
- package/.claude/skills/mastermind-ops/SKILL.md +0 -168
- package/.claude/skills/mastermind-org-chart/SKILL.md +0 -209
- package/.claude/skills/mastermind-project-detail/SKILL.md +0 -249
- package/.claude/skills/mastermind-project-workspace/SKILL.md +0 -244
- package/.claude/skills/mastermind-projects/SKILL.md +0 -167
- package/.claude/skills/mastermind-runorgv1/SKILL.md +0 -731
- package/.claude/skills/mastermind-sales/SKILL.md +0 -170
- package/.claude/skills/mastermind-taskdev/SKILL.md +0 -377
- package/.claude/skills/mastermind-taskdev/code-quality-reviewer-prompt.md +0 -60
- package/.claude/skills/mastermind-taskdev/final-reviewer-prompt.md +0 -144
- package/.claude/skills/mastermind-taskdev/implementer-prompt.md +0 -114
- package/.claude/skills/mastermind-taskdev/spec-reviewer-prompt.md +0 -80
- package/.claude/skills/mastermind-tdd/SKILL.md +0 -424
- package/.claude/skills/mastermind-verify/SKILL.md +0 -196
- package/.claude/skills/mastermind-wiki/SKILL.md +0 -314
- package/.claude/skills/monolean-review/SKILL.md +0 -57
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Workflow Architect
|
|
3
3
|
description: Workflow design specialist who maps complete workflow trees for every system, user journey, and agent interaction — covering happy paths, all branch conditions, failure modes, recovery paths, handoff contracts, and observable states to produce build-ready specs that agents can implement against and QA can test against.
|
|
4
|
-
color:
|
|
4
|
+
color: "#f97316"
|
|
5
5
|
emoji: "\U0001F5FA\uFE0F"
|
|
6
6
|
vibe: Every path the system can take — mapped, named, and specified before a single line is written.
|
|
7
|
-
tools: Read, Write, Edit, WebSearch, WebFetch
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# Workflow Architect Agent Personality
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ZK Steward
|
|
3
3
|
description: Zettelkasten knowledge-base steward (note-taking system, NOT zero-knowledge cryptography). Manages interconnected atomic notes in Luhmann's slip-box style; switches perspective to domain experts (Feynman, Munger, Ogilvy) by task. Use for personal knowledge management, note linking, complex task breakdown, and cross-domain decision support. For zero-knowledge proofs or ZK cryptography, use zk-steward is WRONG — use security-architect instead.
|
|
4
|
-
color:
|
|
4
|
+
color: "#14b8a6"
|
|
5
5
|
emoji: 🗃️
|
|
6
6
|
vibe: Channels Luhmann's Zettelkasten to build connected, validated knowledge bases.
|
|
7
|
-
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# ZK Steward Agent
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tdd-london-swarm
|
|
3
3
|
description: TDD London School specialist for mock-driven development within swarm coordination
|
|
4
|
-
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
4
|
capability:
|
|
6
5
|
role: tdd-london-swarm
|
|
7
6
|
goal: Drive development from user behavior down to implementation using mock-driven TDD
|
|
@@ -4,7 +4,6 @@ description: Expert accessibility specialist who audits interfaces against WCAG
|
|
|
4
4
|
color: "#0077B6"
|
|
5
5
|
emoji: ♿
|
|
6
6
|
vibe: If it's not tested with a screen reader, it's not accessible.
|
|
7
|
-
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
8
7
|
triggers:
|
|
9
8
|
- pattern: "\\b(a11y|accessibility|wcag|aria|screen.?reader|voiceover|nvda|jaws)\\b"
|
|
10
9
|
mode: "inject"
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: API Tester
|
|
3
3
|
description: Expert API testing specialist focused on comprehensive API validation, performance testing, and quality assurance across all systems and third-party integrations
|
|
4
|
-
color:
|
|
4
|
+
color: "#a855f7"
|
|
5
5
|
emoji: 🔌
|
|
6
6
|
vibe: Breaks your API before your users do.
|
|
7
|
-
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# API Tester Agent Personality
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Evidence Collector
|
|
3
3
|
description: Screenshot-obsessed, fantasy-allergic QA specialist - Default to finding 3-5 issues, requires visual proof for everything
|
|
4
|
-
color:
|
|
4
|
+
color: "#f97316"
|
|
5
5
|
emoji: 📸
|
|
6
6
|
vibe: Screenshot-obsessed QA who won't approve anything without visual proof.
|
|
7
|
-
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# QA Agent Personality
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Performance Benchmarker
|
|
3
3
|
description: Expert performance testing and optimization specialist focused on measuring, analyzing, and improving system performance across all applications and infrastructure
|
|
4
|
-
color:
|
|
4
|
+
color: "#f97316"
|
|
5
5
|
emoji: ⏱️
|
|
6
6
|
vibe: Measures everything, optimizes what matters, and proves the improvement.
|
|
7
|
-
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# Performance Benchmarker Agent Personality
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Test Results Analyzer
|
|
3
3
|
description: Expert test analysis specialist focused on comprehensive test result evaluation, quality metrics analysis, and actionable insight generation from testing activities
|
|
4
|
-
color:
|
|
4
|
+
color: "#6366f1"
|
|
5
5
|
emoji: 📋
|
|
6
6
|
vibe: Reads test results like a detective reads evidence — nothing gets past.
|
|
7
|
-
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# Test Results Analyzer Agent Personality
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Tool Evaluator
|
|
3
3
|
description: Expert technology assessment specialist focused on evaluating, testing, and recommending tools, software, and platforms for business use and productivity optimization
|
|
4
|
-
color:
|
|
4
|
+
color: "#14b8a6"
|
|
5
5
|
emoji: 🔧
|
|
6
6
|
vibe: Tests and recommends the right tools so your team doesn't waste time on the wrong ones.
|
|
7
|
-
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# Tool Evaluator Agent Personality
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Workflow Optimizer
|
|
3
3
|
description: Expert process improvement specialist focused on analyzing, optimizing, and automating workflows across all business functions for maximum productivity and efficiency
|
|
4
|
-
color:
|
|
4
|
+
color: "#22c55e"
|
|
5
5
|
emoji: ⚡
|
|
6
6
|
vibe: Finds the bottleneck, fixes the process, automates the rest.
|
|
7
|
-
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# Workflow Optimizer Agent Personality
|
|
@@ -20,7 +20,7 @@ Self-learning hooks system for intelligent workflow automation. Invoked as `npx
|
|
|
20
20
|
|
|
21
21
|
```
|
|
22
22
|
pre-edit Get context and agent suggestions before editing a file
|
|
23
|
-
post-edit Record editing outcome for
|
|
23
|
+
post-edit Record editing outcome for pattern logging
|
|
24
24
|
pre-command Assess risk before executing a command
|
|
25
25
|
post-command Record command execution outcome
|
|
26
26
|
pre-task Register task start and get agent suggestions + model routing
|
|
@@ -4,13 +4,13 @@ name: memory:README
|
|
|
4
4
|
|
|
5
5
|
# Memory Commands
|
|
6
6
|
|
|
7
|
-
Commands for the
|
|
7
|
+
Commands for the memory system — local SQLite persistent cache (sql.js/WASM) + local HF embeddings, namespaced storage, keyword fallback search, and cross-session persistence.
|
|
8
8
|
|
|
9
9
|
## Available Subcommands
|
|
10
10
|
|
|
11
11
|
| Subcommand | Description |
|
|
12
12
|
|---|---|
|
|
13
|
-
| `memory init` | Initialize memory backend (
|
|
13
|
+
| `memory init` | Initialize memory backend (sqlite, hybrid) |
|
|
14
14
|
| `memory store` | Store a memory entry with optional vector embedding |
|
|
15
15
|
| `memory retrieve` | Retrieve a memory entry by key |
|
|
16
16
|
| `memory search` | Search memory (semantic / keyword / hybrid) |
|
|
@@ -35,7 +35,7 @@ npx monomind memory init --backend hybrid
|
|
|
35
35
|
npx monomind memory store --key "auth-pattern" --value "Use JWT with refresh tokens" --namespace "patterns"
|
|
36
36
|
|
|
37
37
|
# Search
|
|
38
|
-
npx monomind memory search --query "authentication" --type hybrid
|
|
38
|
+
npx monomind memory search --query "authentication" --type hybrid
|
|
39
39
|
|
|
40
40
|
# Retrieve exact key
|
|
41
41
|
npx monomind memory retrieve --key "auth-pattern"
|
|
@@ -50,7 +50,7 @@ npx monomind memory import --input backup.json --merge
|
|
|
50
50
|
|
|
51
51
|
## Files
|
|
52
52
|
|
|
53
|
-
- [memory-search.md](./memory-search.md) — Search memory (semantic/keyword/hybrid
|
|
53
|
+
- [memory-search.md](./memory-search.md) — Search memory (semantic/keyword/hybrid; pure-JS HNSW is a dead fallback path, not the default)
|
|
54
54
|
|
|
55
55
|
## MCP Tools
|
|
56
56
|
|
|
@@ -68,12 +68,11 @@ npx monomind memory import --input backup.json --merge
|
|
|
68
68
|
|
|
69
69
|
| Backend | Description | Recommended |
|
|
70
70
|
|---|---|---|
|
|
71
|
-
| `lancedb` | Full LanceDB with HNSW vector search | Production |
|
|
72
71
|
| `sqlite` | SQLite-only, no vector search | Lightweight |
|
|
73
|
-
| `hybrid` | SQLite +
|
|
72
|
+
| `hybrid` | SQLite + local HF embeddings (keyword fallback; pure-JS HNSW is a dead fallback path, not the default) | Default (recommended) |
|
|
74
73
|
|
|
75
74
|
## See Also
|
|
76
75
|
|
|
77
76
|
- `hooks intelligence` — pattern learning on top of memory
|
|
78
|
-
- `neural` —
|
|
77
|
+
- `neural` — pattern logging
|
|
79
78
|
- `session` — session state (separate from memory)
|
|
@@ -13,7 +13,7 @@ Commands for monitoring Monomind system health — swarm status, agents, tasks,
|
|
|
13
13
|
| `status` | Full system status (swarm, agents, tasks, memory, MCP) |
|
|
14
14
|
| `status agents` | Detailed agent table with uptime and success rate |
|
|
15
15
|
| `status tasks` | Detailed task table with progress and priority |
|
|
16
|
-
| `status memory` | Memory backend stats
|
|
16
|
+
| `status memory` | Memory backend stats (SQLite + local embeddings; keyword fallback) |
|
|
17
17
|
| `agent metrics` | Agent performance metrics by type and time period |
|
|
18
18
|
| `agent health` | Per-agent health check with optional watch mode |
|
|
19
19
|
| `swarm status` | Swarm-specific status (topology, consensus, agents) |
|
|
@@ -89,7 +89,8 @@ function findCliPath() {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
// Try npx monomind as last resort
|
|
92
|
-
|
|
92
|
+
const npxCmd = process.platform === 'win32' ? 'npx.cmd' : 'npx';
|
|
93
|
+
return { cmd: npxCmd, args: ['monomind@latest'], usePort: false };
|
|
93
94
|
}
|
|
94
95
|
|
|
95
96
|
function readAuthCredential() {
|
|
@@ -220,6 +221,13 @@ async function main() {
|
|
|
220
221
|
env: { ...process.env, CLAUDE_PROJECT_DIR: CWD, MONOMIND_BOUND_REPORT: BOUND_REPORT },
|
|
221
222
|
});
|
|
222
223
|
|
|
224
|
+
child.on('error', (err) => {
|
|
225
|
+
if (String(process.env.MONOMIND_HOOK_QUIET || "") !== "1") {
|
|
226
|
+
process.stderr.write(`[control] spawn error: ${err.message}\n`);
|
|
227
|
+
}
|
|
228
|
+
releaseSpawnLock();
|
|
229
|
+
});
|
|
230
|
+
|
|
223
231
|
child.unref();
|
|
224
232
|
|
|
225
233
|
// Write optimistic status with DEFAULT_PORT immediately so dependent scripts
|
|
@@ -230,8 +238,8 @@ async function main() {
|
|
|
230
238
|
// If port 4242 was in use, server.mjs auto-increments (up to +10).
|
|
231
239
|
// Poll a few ports to find where it actually bound and update control.json.
|
|
232
240
|
const http = require('http');
|
|
233
|
-
// Resolves to the responder's pid (number),
|
|
234
|
-
//
|
|
241
|
+
// Resolves to the responder's pid (number), 'foreign-authwalled' for an
|
|
242
|
+
// auth-gated monomind server, null for unreadable, or false for "no answer".
|
|
235
243
|
function probePort(p) {
|
|
236
244
|
return new Promise((resolve) => {
|
|
237
245
|
const req = http.get({ hostname: 'localhost', port: p, path: '/api/status', timeout: 1000 }, (res) => {
|
|
@@ -240,8 +248,10 @@ async function main() {
|
|
|
240
248
|
res.on('end', () => {
|
|
241
249
|
if (res.statusCode >= 500) return resolve(false);
|
|
242
250
|
try {
|
|
243
|
-
const
|
|
244
|
-
|
|
251
|
+
const parsed = JSON.parse(body);
|
|
252
|
+
if (typeof parsed.pid === 'number') return resolve(parsed.pid);
|
|
253
|
+
if (res.statusCode === 401 && parsed.error) return resolve('foreign-authwalled');
|
|
254
|
+
resolve(null);
|
|
245
255
|
} catch { resolve(null); }
|
|
246
256
|
});
|
|
247
257
|
});
|
|
@@ -284,7 +294,9 @@ async function main() {
|
|
|
284
294
|
}
|
|
285
295
|
return;
|
|
286
296
|
}
|
|
287
|
-
if (p === DEFAULT_PORT && typeof responderPid === 'number'
|
|
297
|
+
if (p === DEFAULT_PORT && (typeof responderPid === 'number' || responderPid === 'foreign-authwalled')) {
|
|
298
|
+
sawForeignOnDefault = true;
|
|
299
|
+
}
|
|
288
300
|
// pid mismatch or unreadable — not provably ours, keep scanning
|
|
289
301
|
}
|
|
290
302
|
}
|
|
@@ -295,7 +307,15 @@ async function main() {
|
|
|
295
307
|
// and kill our redundant child.
|
|
296
308
|
try { process.kill(child.pid, 'SIGTERM'); } catch { /* already gone */ }
|
|
297
309
|
if (String(process.env.MONOMIND_HOOK_QUIET || "") !== "1") process.stdout.write(`[control] port ${DEFAULT_PORT} is served by another project's control server — reusing it (killed redundant child)\n`);
|
|
298
|
-
|
|
310
|
+
let foreignPid = await probePort(DEFAULT_PORT);
|
|
311
|
+
if (typeof foreignPid !== 'number' || foreignPid <= 0) {
|
|
312
|
+
try {
|
|
313
|
+
const { execFileSync } = require('child_process');
|
|
314
|
+
const lsofOut = execFileSync('lsof', ['-ti', `:${DEFAULT_PORT}`, '-sTCP:LISTEN'], { encoding: 'utf8', timeout: 3000 }).trim();
|
|
315
|
+
const parsedPid = parseInt(lsofOut.split('\n')[0], 10);
|
|
316
|
+
if (Number.isInteger(parsedPid) && parsedPid > 0) foreignPid = parsedPid;
|
|
317
|
+
} catch { /* ignore */ }
|
|
318
|
+
}
|
|
299
319
|
writeStatus(typeof foreignPid === 'number' ? foreignPid : 0, DEFAULT_PORT);
|
|
300
320
|
// Pair with the foreign server: resolve its project dir from its pid,
|
|
301
321
|
// copy its dashboard-token beside OUR control.json (ingest is
|
|
@@ -302,23 +302,42 @@ module.exports = {
|
|
|
302
302
|
var output = [];
|
|
303
303
|
var conf = result.confidence != null ? result.confidence : 0;
|
|
304
304
|
|
|
305
|
-
// ── Persist routing result for statusline display
|
|
305
|
+
// ── Persist routing result for statusline display & outcome correlation ─
|
|
306
306
|
try {
|
|
307
|
+
var crypto = require('crypto');
|
|
308
|
+
var routeId = typeof crypto.randomUUID === 'function' ? crypto.randomUUID() : ('route-' + Date.now() + '-' + Math.random().toString(36).slice(2, 8));
|
|
307
309
|
var routeDir = path.join(CWD, '.monomind');
|
|
308
310
|
fs.mkdirSync(routeDir, { recursive: true });
|
|
311
|
+
var agentName = result.agent || 'coder';
|
|
312
|
+
var confVal = typeof result.confidence === 'number' ? result.confidence : 0;
|
|
313
|
+
var promptSlice = (prompt || '').slice(0, 500);
|
|
309
314
|
fs.writeFileSync(
|
|
310
315
|
path.join(routeDir, 'last-route.json'),
|
|
311
316
|
JSON.stringify({
|
|
312
|
-
|
|
317
|
+
routeId: routeId,
|
|
318
|
+
agent: agentName,
|
|
313
319
|
agentSlug: result.agentSlug || null,
|
|
314
320
|
confidence: result.confidence,
|
|
315
321
|
reason: result.reason,
|
|
316
|
-
prompt:
|
|
322
|
+
prompt: promptSlice,
|
|
317
323
|
historicalPattern: result.historicalPattern || null,
|
|
318
324
|
updatedAt: new Date().toISOString(),
|
|
319
325
|
}),
|
|
320
326
|
'utf-8'
|
|
321
327
|
);
|
|
328
|
+
|
|
329
|
+
// Append initial route recommendation to route-outcomes.jsonl
|
|
330
|
+
var routeRec = {
|
|
331
|
+
routeId: routeId,
|
|
332
|
+
ts: Date.now(),
|
|
333
|
+
task: promptSlice,
|
|
334
|
+
recommendedAgent: agentName,
|
|
335
|
+
routingMethod: result.routingMethod || 'keyword',
|
|
336
|
+
confidence: confVal,
|
|
337
|
+
learningMode: 'js',
|
|
338
|
+
};
|
|
339
|
+
var outcomesPath = path.join(routeDir, 'route-outcomes.jsonl');
|
|
340
|
+
fs.appendFileSync(outcomesPath, JSON.stringify(routeRec) + '\n', 'utf-8');
|
|
322
341
|
} catch (e) { /* non-fatal */ }
|
|
323
342
|
|
|
324
343
|
// ── Skill auto-activation (the one thing the hook does better than Claude) ──
|
|
@@ -101,6 +101,49 @@ module.exports = {
|
|
|
101
101
|
// Only write the success flag when derived from actual evidence (commits, outcomes)
|
|
102
102
|
if (typeof sessionSuccess === 'boolean') feedbackEntry.intelligenceFeedback = sessionSuccess;
|
|
103
103
|
fs.appendFileSync(feedbackPath, JSON.stringify(feedbackEntry) + '\n', 'utf-8');
|
|
104
|
+
|
|
105
|
+
// Also join/record into route-outcomes.jsonl if routeId exists or outcome measured
|
|
106
|
+
if (typeof sessionSuccess === 'boolean') {
|
|
107
|
+
try {
|
|
108
|
+
var routeOutcomesPath = path.join(CWD, '.monomind', 'route-outcomes.jsonl');
|
|
109
|
+
if (fs.existsSync(routeOutcomesPath)) {
|
|
110
|
+
var roLines = fs.readFileSync(routeOutcomesPath, 'utf-8').trim().split('\n').filter(Boolean);
|
|
111
|
+
var updated = false;
|
|
112
|
+
if (lastRoute.routeId) {
|
|
113
|
+
for (var ri = roLines.length - 1; ri >= 0; ri--) {
|
|
114
|
+
try {
|
|
115
|
+
var roRec = JSON.parse(roLines[ri]);
|
|
116
|
+
if (roRec.routeId === lastRoute.routeId) {
|
|
117
|
+
roRec.agentActuallyUsed = agentSlug;
|
|
118
|
+
roRec.measuredSuccess = sessionSuccess;
|
|
119
|
+
roLines[ri] = JSON.stringify(roRec);
|
|
120
|
+
updated = true;
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
} catch (_) {}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (!updated) {
|
|
127
|
+
// If not found by routeId, join latest unresolved record
|
|
128
|
+
for (var ri2 = roLines.length - 1; ri2 >= 0; ri2--) {
|
|
129
|
+
try {
|
|
130
|
+
var roRec2 = JSON.parse(roLines[ri2]);
|
|
131
|
+
if (roRec2.measuredSuccess === undefined) {
|
|
132
|
+
roRec2.agentActuallyUsed = agentSlug;
|
|
133
|
+
roRec2.measuredSuccess = sessionSuccess;
|
|
134
|
+
roLines[ri2] = JSON.stringify(roRec2);
|
|
135
|
+
updated = true;
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
} catch (_) {}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (updated) {
|
|
142
|
+
fs.writeFileSync(routeOutcomesPath, roLines.join('\n') + '\n', 'utf-8');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
} catch (eRo) { /* non-fatal */ }
|
|
146
|
+
}
|
|
104
147
|
// Rotate: keep last 1000 lines to prevent unbounded growth.
|
|
105
148
|
try {
|
|
106
149
|
var MAX_FEEDBACK = 512 * 1024; // 512 KiB
|
|
@@ -29,6 +29,21 @@ const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10 MiB guard
|
|
|
29
29
|
const RING_BUFFER_MAX = 50;
|
|
30
30
|
const MAX_ENTRIES = 200;
|
|
31
31
|
|
|
32
|
+
// Same list as src/memory/text-tokens.ts's STOPWORDS (inlined — this is a
|
|
33
|
+
// standalone hook script with no access to the TS build). Without this,
|
|
34
|
+
// getContext()'s 2-word-overlap bar counts connector words like "you"/"can"/
|
|
35
|
+
// "the"/"that"/"any" as evidence of relevance, so almost any two prompts
|
|
36
|
+
// spuriously "match" and a stale, unrelated stored entry keeps resurfacing.
|
|
37
|
+
const STOPWORDS = new Set([
|
|
38
|
+
'a', 'an', 'the', 'and', 'or', 'but', 'if', 'of', 'to', 'in', 'on', 'at', 'by',
|
|
39
|
+
'for', 'with', 'from', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'do',
|
|
40
|
+
'does', 'did', 'doing', 'have', 'has', 'had', 'i', 'we', 'you', 'it', 'its',
|
|
41
|
+
'that', 'this', 'these', 'those', 'what', 'which', 'who', 'how', 'when', 'where',
|
|
42
|
+
'why', 'can', 'could', 'should', 'would', 'will', 'my', 'our', 'me', 'us', 'as',
|
|
43
|
+
'so', 'than', 'then', 'there', 'here', 'not', 'no', 'all', 'any', 'some', 'get',
|
|
44
|
+
'got', 'about', 'into', 'over', 'out', 'up', 'down', 'again', 'am', 'they',
|
|
45
|
+
]);
|
|
46
|
+
|
|
32
47
|
var _entries = []; // deduplicated memory entries loaded from store
|
|
33
48
|
var _recentEdits = []; // ring buffer of recently edited paths (in-memory, may be empty across subprocesses)
|
|
34
49
|
var _lastContext = null; // last non-null context returned by getContext()
|
|
@@ -163,7 +178,7 @@ function getContext(prompt) {
|
|
|
163
178
|
if (!prompt || typeof prompt !== 'string' || prompt.trim() === '') return null;
|
|
164
179
|
if (_entries.length === 0) return null;
|
|
165
180
|
|
|
166
|
-
var promptWords = prompt.toLowerCase().split(/\W+/).filter(function(w) { return w.length >= 3; });
|
|
181
|
+
var promptWords = prompt.toLowerCase().split(/\W+/).filter(function(w) { return w.length >= 3 && !STOPWORDS.has(w); });
|
|
167
182
|
var promptSet = new Set(promptWords);
|
|
168
183
|
if (promptSet.size < 2) return null; // need at least 2 meaningful words
|
|
169
184
|
|
|
@@ -171,11 +186,15 @@ function getContext(prompt) {
|
|
|
171
186
|
for (var i = 0; i < _entries.length; i++) {
|
|
172
187
|
var e = _entries[i];
|
|
173
188
|
var content = ((e.content || '') + ' ' + (e.summary || '')).toLowerCase();
|
|
174
|
-
var words = content.split(/\W+/).filter(function(w) { return w.length >= 3; });
|
|
189
|
+
var words = content.split(/\W+/).filter(function(w) { return w.length >= 3 && !STOPWORDS.has(w); });
|
|
190
|
+
// Count DISTINCT overlapping words, not raw occurrences — content and
|
|
191
|
+
// summary commonly repeat the same filenames, so a single shared word
|
|
192
|
+
// (e.g. "review" in both a file's name and its own summary restating it)
|
|
193
|
+
// was inflating hits to 2+ on its own, undermining the "distinct" bar
|
|
194
|
+
// this comment already promised.
|
|
195
|
+
var entrySet = new Set(words);
|
|
175
196
|
var hits = 0;
|
|
176
|
-
|
|
177
|
-
if (promptSet.has(words[j])) hits++;
|
|
178
|
-
}
|
|
197
|
+
promptSet.forEach(function(w) { if (entrySet.has(w)) hits++; });
|
|
179
198
|
// Require at least 2 distinct word matches to reduce false positives
|
|
180
199
|
if (hits >= 2) {
|
|
181
200
|
scored.push({ entry: e, hits: hits });
|
|
@@ -191,7 +210,9 @@ function getContext(prompt) {
|
|
|
191
210
|
});
|
|
192
211
|
|
|
193
212
|
var top = scored[0].entry;
|
|
194
|
-
var
|
|
213
|
+
var text = String(top.summary || top.content || top.id || 'context match');
|
|
214
|
+
if (text.length > 160) text = text.slice(0, 160) + '…';
|
|
215
|
+
var result = '[INTELLIGENCE] ' + text;
|
|
195
216
|
_lastContext = result;
|
|
196
217
|
return result;
|
|
197
218
|
}
|
|
@@ -932,9 +932,18 @@ function getHILPending() {
|
|
|
932
932
|
return { pending };
|
|
933
933
|
}
|
|
934
934
|
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
935
|
+
function isPidAlive(pid) {
|
|
936
|
+
if (!Number.isInteger(pid) || pid <= 0) return false;
|
|
937
|
+
try {
|
|
938
|
+
process.kill(pid, 0);
|
|
939
|
+
return true;
|
|
940
|
+
} catch {
|
|
941
|
+
return false;
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
// Active org runs — scan .monomind/orgs/*/runtime.json (Org Runtime v2)
|
|
946
|
+
// and fallback to .monomind/orgs/*/runs/*.jsonl / <runId>/bus.jsonl.
|
|
938
947
|
function getActiveOrgs() {
|
|
939
948
|
// Try git-common-dir path first (mastermind orgs store run files there)
|
|
940
949
|
let orgsDir = path.join(CWD, '.monomind', 'orgs');
|
|
@@ -954,31 +963,54 @@ function getActiveOrgs() {
|
|
|
954
963
|
try {
|
|
955
964
|
const orgNames = fs.readdirSync(orgsDir).filter(f => !f.startsWith('.'));
|
|
956
965
|
for (const orgName of orgNames.slice(0, 20)) {
|
|
957
|
-
const
|
|
958
|
-
|
|
966
|
+
const orgPath = path.join(orgsDir, orgName);
|
|
967
|
+
const runtimePath = path.join(orgPath, 'runtime.json');
|
|
968
|
+
// 1) Org Runtime v2: runtime.json is authoritative
|
|
969
|
+
if (fs.existsSync(runtimePath)) {
|
|
970
|
+
try {
|
|
971
|
+
const stat = safeStat(runtimePath);
|
|
972
|
+
const age = stat ? now - stat.mtimeMs : 0;
|
|
973
|
+
const data = readJSON(runtimePath);
|
|
974
|
+
if (data && typeof data === 'object') {
|
|
975
|
+
const isRunning = data.status === 'running' && (typeof data.pid === 'number' ? isPidAlive(data.pid) : age < STALE_MS);
|
|
976
|
+
if (isRunning || age < STALE_MS) {
|
|
977
|
+
active.push({
|
|
978
|
+
name: orgName,
|
|
979
|
+
runId: typeof data.run === 'string' ? data.run : 'active',
|
|
980
|
+
ageMs: age,
|
|
981
|
+
running: isRunning,
|
|
982
|
+
});
|
|
983
|
+
continue;
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
} catch { /* fallback to directory scan */ }
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
// 2) Fallback: scan runs/ or <runId>/bus.jsonl
|
|
990
|
+
const runsDir = path.join(orgPath, 'runs');
|
|
991
|
+
const scanDir = fs.existsSync(runsDir) ? runsDir : orgPath;
|
|
959
992
|
try {
|
|
960
|
-
const files = cleanEntries(
|
|
993
|
+
const files = cleanEntries(scanDir, f => f.endsWith('.jsonl') || f.endsWith('bus.jsonl'));
|
|
961
994
|
if (!files.length) continue;
|
|
962
995
|
files.sort();
|
|
963
996
|
const latest = files[files.length - 1];
|
|
964
|
-
const stat = safeStat(path.join(
|
|
997
|
+
const stat = safeStat(path.join(scanDir, latest));
|
|
965
998
|
if (!stat) continue;
|
|
966
999
|
const age = now - stat.mtimeMs;
|
|
967
1000
|
if (age < STALE_MS) {
|
|
968
|
-
// Check last event type to determine if still running
|
|
969
1001
|
let isRunning = true;
|
|
970
1002
|
try {
|
|
971
1003
|
const MAX_RUN = 512 * 1024; // 512 KiB
|
|
972
1004
|
if (stat.size <= MAX_RUN) {
|
|
973
|
-
const raw = fs.readFileSync(path.join(
|
|
1005
|
+
const raw = fs.readFileSync(path.join(scanDir, latest), 'utf-8');
|
|
974
1006
|
const lines = raw.trim().split('\n').filter(Boolean);
|
|
975
1007
|
if (lines.length) {
|
|
976
1008
|
const lastEv = JSON.parse(lines[lines.length - 1]);
|
|
977
|
-
if (lastEv.type === 'run:complete' || lastEv.type === 'org:complete') isRunning = false;
|
|
1009
|
+
if (lastEv.type === 'run:complete' || lastEv.type === 'org:complete' || (lastEv.type === 'status' && lastEv.msg === 'org stopped')) isRunning = false;
|
|
978
1010
|
}
|
|
979
1011
|
}
|
|
980
1012
|
} catch { /* treat as running */ }
|
|
981
|
-
active.push({ name: orgName, runId: latest.replace('.jsonl', ''), ageMs: age, running: isRunning });
|
|
1013
|
+
active.push({ name: orgName, runId: latest.replace('.jsonl', '').replace('/bus', ''), ageMs: age, running: isRunning });
|
|
982
1014
|
}
|
|
983
1015
|
} catch { /* skip */ }
|
|
984
1016
|
}
|
|
@@ -1406,6 +1438,7 @@ function generateJSON() {
|
|
|
1406
1438
|
tests: getTestStats(),
|
|
1407
1439
|
git: { modified: git.modified, untracked: git.untracked, staged: git.staged, ahead: git.ahead, behind: git.behind },
|
|
1408
1440
|
tokenCost: getTokenCostSummary(),
|
|
1441
|
+
activeOrgs: getActiveOrgs(),
|
|
1409
1442
|
lastUpdated: new Date().toISOString(),
|
|
1410
1443
|
};
|
|
1411
1444
|
}
|
|
@@ -1429,6 +1462,7 @@ if (require.main !== module) {
|
|
|
1429
1462
|
getSecurityStatus, getSwarmStatus, getADRStatus,
|
|
1430
1463
|
getHooksStatus, getActiveAgent, getLanceDBStats,
|
|
1431
1464
|
getLearningStats, getTestStats, getIntegrationStatus,
|
|
1465
|
+
getActiveOrgs,
|
|
1432
1466
|
generateJSON,
|
|
1433
1467
|
};
|
|
1434
1468
|
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentic-jujutsu
|
|
3
3
|
description: |
|
|
4
|
-
|
|
4
|
+
Self-learning version control for AI agents with ReasoningBank intelligence and multi-agent coordination. Wraps the separate `agentic-jujutsu` npm package.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Agentic Jujutsu - AI Agent Version Control
|
|
8
8
|
|
|
9
|
-
>
|
|
9
|
+
> Self-learning version control designed for multiple AI agents working simultaneously without conflicts.
|
|
10
10
|
|
|
11
11
|
## When to Use This Skill
|
|
12
12
|
|
|
13
13
|
Use **agentic-jujutsu** when you need:
|
|
14
14
|
- Multiple AI agents modifying code simultaneously
|
|
15
|
-
- Lock-free version control
|
|
15
|
+
- Lock-free version control
|
|
16
16
|
- Self-learning AI that improves from experience
|
|
17
|
-
- Quantum-resistant security for future-proof protection
|
|
18
|
-
- Automatic conflict resolution (87% success rate)
|
|
19
17
|
- Pattern recognition and intelligent suggestions
|
|
20
18
|
- Multi-agent coordination without blocking
|
|
21
19
|
|
|
20
|
+
> **Note:** this skill wraps the separate `agentic-jujutsu` npm package. Performance and feature claims should be verified against that package's own documentation before relying on them.
|
|
21
|
+
|
|
22
22
|
## Quick Start
|
|
23
23
|
|
|
24
24
|
### Installation
|
|
@@ -143,9 +143,9 @@ const similar = JSON.parse(tester.queryTrajectories('test feature', 5));
|
|
|
143
143
|
console.log(`Found ${similar.length} similar test approaches`);
|
|
144
144
|
```
|
|
145
145
|
|
|
146
|
-
### 5.
|
|
146
|
+
### 5. Cryptographic Integrity (v2.3.0+)
|
|
147
147
|
|
|
148
|
-
Fast integrity verification with
|
|
148
|
+
Fast integrity verification with SHA3-512 hashing:
|
|
149
149
|
|
|
150
150
|
```javascript
|
|
151
151
|
const { generateQuantumFingerprint, verifyQuantumFingerprint } = require('agentic-jujutsu');
|
|
@@ -405,7 +405,7 @@ for (let i = 1; i <= 10; i++) {
|
|
|
405
405
|
| `getUserOperations(limit)` | Get user operations only | JjOperation[] |
|
|
406
406
|
| `clearLog()` | Clear operation log | void |
|
|
407
407
|
|
|
408
|
-
###
|
|
408
|
+
### Cryptographic Methods (v2.3.0+)
|
|
409
409
|
|
|
410
410
|
| Method | Description | Returns |
|
|
411
411
|
|--------|-------------|---------|
|
|
@@ -417,13 +417,15 @@ for (let i = 1; i <= 10; i++) {
|
|
|
417
417
|
|
|
418
418
|
## Performance Characteristics
|
|
419
419
|
|
|
420
|
-
|
|
420
|
+
> The following figures are **vendor-published for the `agentic-jujutsu` npm package and not independently verified by monomind**. Treat as marketing claims until you benchmark against your own workload.
|
|
421
|
+
|
|
422
|
+
| Metric | Git | Agentic Jujutsu (vendor-claimed) |
|
|
421
423
|
|--------|-----|-----------------|
|
|
422
|
-
| Concurrent commits | 15 ops/s | 350 ops/s (23x) |
|
|
423
|
-
| Context switching | 500-1000ms | 50-100ms (10x) |
|
|
424
|
-
| Conflict resolution | 30-40% auto | 87% auto (2.5x) |
|
|
425
|
-
| Lock waiting | 50 min/day | 0 min (
|
|
426
|
-
|
|
|
424
|
+
| Concurrent commits | 15 ops/s | 350 ops/s (claimed ~23x) |
|
|
425
|
+
| Context switching | 500-1000ms | 50-100ms (claimed ~10x) |
|
|
426
|
+
| Conflict resolution | 30-40% auto | 87% auto (claimed ~2.5x) |
|
|
427
|
+
| Lock waiting | 50 min/day | 0 min (claimed) |
|
|
428
|
+
| SHA3-512 fingerprints | N/A | <1ms |
|
|
427
429
|
|
|
428
430
|
## Best Practices
|
|
429
431
|
|
|
@@ -634,7 +636,7 @@ async function agentSwarm(taskList) {
|
|
|
634
636
|
|
|
635
637
|
- **v2.3.2** - Documentation updates
|
|
636
638
|
- **v2.3.1** - Validation fixes for ReasoningBank
|
|
637
|
-
- **v2.3.0** -
|
|
639
|
+
- **v2.3.0** - Cryptographic security (SHA3-512) with @qudag/napi-core
|
|
638
640
|
- **v2.1.0** - Self-learning AI with ReasoningBank
|
|
639
641
|
- **v2.0.0** - Zero-dependency installation with embedded jj binary
|
|
640
642
|
|