monomind 1.11.13 → 1.12.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/.claude/agents/generated/channel-intelligence-director.md +87 -0
- package/.claude/agents/generated/chief-growth-officer.md +88 -0
- package/.claude/agents/generated/content-seo-strategist.md +90 -0
- package/.claude/agents/generated/developer-community-strategist.md +91 -0
- package/.claude/agents/generated/outreach-partnership-strategist.md +90 -0
- package/.claude/agents/generated/social-media-strategist.md +91 -0
- package/.claude/agents/generated/video-visual-strategist.md +90 -0
- package/.claude/commands/mastermind/idea.md +1 -1
- package/.claude/helpers/auto-memory-hook.mjs +13 -4
- package/.claude/helpers/control-start.cjs +5 -0
- package/.claude/helpers/event-logger.cjs +114 -0
- package/.claude/helpers/handlers/adr-draft-handler.cjs +19 -5
- package/.claude/helpers/handlers/agent-start-handler.cjs +13 -4
- package/.claude/helpers/handlers/compact-handler.cjs +2 -0
- package/.claude/helpers/handlers/edit-handler.cjs +1 -1
- package/.claude/helpers/handlers/gates-handler.cjs +3 -0
- package/.claude/helpers/handlers/graph-status-handler.cjs +14 -8
- package/.claude/helpers/handlers/loops-status-handler.cjs +5 -2
- package/.claude/helpers/handlers/route-handler.cjs +13 -6
- package/.claude/helpers/handlers/session-handler.cjs +11 -4
- package/.claude/helpers/handlers/session-restore-handler.cjs +21 -11
- package/.claude/helpers/handlers/task-handler.cjs +13 -5
- package/.claude/helpers/intelligence.cjs +7 -2
- package/.claude/helpers/loop-tracker.cjs +15 -3
- package/.claude/helpers/memory.cjs +6 -1
- package/.claude/helpers/router.cjs +5 -2
- package/.claude/helpers/session.cjs +2 -0
- package/.claude/helpers/statusline.cjs +10 -2
- package/.claude/helpers/utils/micro-agents.cjs +20 -4
- package/.claude/scheduled_tasks.lock +1 -1
- package/.claude/settings.json +92 -1
- package/.claude/skills/mastermind/_protocol.md +23 -13
- package/.claude/skills/mastermind/architect.md +6 -9
- package/.claude/skills/mastermind/build.md +3 -3
- package/.claude/skills/mastermind/content.md +3 -3
- package/.claude/skills/mastermind/createorg.md +2 -2
- package/.claude/skills/mastermind/finance.md +3 -3
- package/.claude/skills/mastermind/idea.md +5 -3
- package/.claude/skills/mastermind/marketing.md +3 -3
- package/.claude/skills/mastermind/monitor.md +2 -2
- package/.claude/skills/mastermind/release.md +3 -3
- package/.claude/skills/mastermind/research.md +3 -3
- package/.claude/skills/mastermind/review.md +3 -3
- package/.claude/skills/mastermind/runorg.md +153 -86
- package/.claude/skills/mastermind/sales.md +3 -3
- package/README.md +286 -129
- package/package.json +19 -2
- package/packages/@monomind/cli/README.md +286 -129
- package/packages/@monomind/cli/bundled-graph/dist/src/build.js +73 -0
- package/packages/@monomind/cli/bundled-graph/dist/src/cluster.js +120 -0
- package/packages/@monomind/cli/bundled-graph/package.json +57 -0
- package/packages/@monomind/cli/dist/src/agents/halt-signal.d.ts +25 -0
- package/packages/@monomind/cli/dist/src/agents/halt-signal.js +76 -0
- package/packages/@monomind/cli/dist/src/agents/index.d.ts +18 -0
- package/packages/@monomind/cli/dist/src/agents/index.js +13 -0
- package/packages/@monomind/cli/dist/src/agents/managed-agent.d.ts +41 -0
- package/packages/@monomind/cli/dist/src/agents/managed-agent.js +69 -0
- package/packages/@monomind/cli/dist/src/agents/prompt-experiment.d.ts +23 -0
- package/packages/@monomind/cli/dist/src/agents/prompt-experiment.js +49 -0
- package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.d.ts +22 -0
- package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.js +80 -0
- package/packages/@monomind/cli/dist/src/agents/registry-builder.js +2 -0
- package/packages/@monomind/cli/dist/src/agents/registry-query.d.ts +71 -0
- package/packages/@monomind/cli/dist/src/agents/registry-query.js +125 -0
- package/packages/@monomind/cli/dist/src/agents/score-decay.d.ts +19 -0
- package/packages/@monomind/cli/dist/src/agents/score-decay.js +22 -0
- package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.js +40 -0
- package/packages/@monomind/cli/dist/src/agents/specialization-scorer.d.ts +54 -0
- package/packages/@monomind/cli/dist/src/agents/specialization-scorer.js +212 -0
- package/packages/@monomind/cli/dist/src/agents/termination-watcher.d.ts +30 -0
- package/packages/@monomind/cli/dist/src/agents/termination-watcher.js +84 -0
- package/packages/@monomind/cli/dist/src/agents/trigger-index.d.ts +20 -0
- package/packages/@monomind/cli/dist/src/agents/trigger-index.js +38 -0
- package/packages/@monomind/cli/dist/src/agents/trigger-scanner.d.ts +64 -0
- package/packages/@monomind/cli/dist/src/agents/trigger-scanner.js +308 -0
- package/packages/@monomind/cli/dist/src/agents/version-diff.d.ts +18 -0
- package/packages/@monomind/cli/dist/src/agents/version-diff.js +64 -0
- package/packages/@monomind/cli/dist/src/agents/version-store.d.ts +60 -0
- package/packages/@monomind/cli/dist/src/agents/version-store.js +235 -0
- package/packages/@monomind/cli/dist/src/autopilot-state.js +10 -5
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +13 -0
- package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +20 -9
- package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.d.ts +45 -0
- package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.js +404 -0
- package/packages/@monomind/cli/dist/src/browser/actions.js +10 -3
- package/packages/@monomind/cli/dist/src/browser/browser.js +12 -2
- package/packages/@monomind/cli/dist/src/browser/cdp.js +21 -3
- package/packages/@monomind/cli/dist/src/browser/har.js +27 -5
- package/packages/@monomind/cli/dist/src/commands/agent-wasm.d.ts +14 -0
- package/packages/@monomind/cli/dist/src/commands/agent-wasm.js +333 -0
- package/packages/@monomind/cli/dist/src/commands/agent.js +11 -8
- package/packages/@monomind/cli/dist/src/commands/analyze.js +36 -21
- package/packages/@monomind/cli/dist/src/commands/autopilot.js +12 -4
- package/packages/@monomind/cli/dist/src/commands/benchmark.js +51 -8
- package/packages/@monomind/cli/dist/src/commands/browse.js +5 -2
- package/packages/@monomind/cli/dist/src/commands/claims.js +29 -11
- package/packages/@monomind/cli/dist/src/commands/cleanup.js +25 -5
- package/packages/@monomind/cli/dist/src/commands/config.js +15 -7
- package/packages/@monomind/cli/dist/src/commands/daemon.js +6 -0
- package/packages/@monomind/cli/dist/src/commands/deployment.js +34 -19
- package/packages/@monomind/cli/dist/src/commands/doctor.js +151 -20
- package/packages/@monomind/cli/dist/src/commands/guidance.js +15 -2
- package/packages/@monomind/cli/dist/src/commands/hive-mind.js +37 -14
- package/packages/@monomind/cli/dist/src/commands/hooks.js +42 -25
- package/packages/@monomind/cli/dist/src/commands/init.js +9 -4
- package/packages/@monomind/cli/dist/src/commands/issues.js +29 -26
- package/packages/@monomind/cli/dist/src/commands/mcp.js +11 -5
- package/packages/@monomind/cli/dist/src/commands/memory.js +10 -0
- package/packages/@monomind/cli/dist/src/commands/migrate.js +5 -5
- package/packages/@monomind/cli/dist/src/commands/monograph.js +18 -5
- package/packages/@monomind/cli/dist/src/commands/monovector/backup.js +8 -2
- package/packages/@monomind/cli/dist/src/commands/monovector/benchmark.js +20 -7
- package/packages/@monomind/cli/dist/src/commands/monovector/import.js +15 -0
- package/packages/@monomind/cli/dist/src/commands/monovector/migrate.js +4 -1
- package/packages/@monomind/cli/dist/src/commands/monovector/optimize.js +11 -0
- package/packages/@monomind/cli/dist/src/commands/monovector/setup.js +11 -1
- package/packages/@monomind/cli/dist/src/commands/neural.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/performance.js +20 -7
- package/packages/@monomind/cli/dist/src/commands/platforms.js +90 -8
- package/packages/@monomind/cli/dist/src/commands/plugins.js +12 -5
- package/packages/@monomind/cli/dist/src/commands/process.js +33 -10
- package/packages/@monomind/cli/dist/src/commands/progress.js +5 -3
- package/packages/@monomind/cli/dist/src/commands/providers.js +5 -5
- package/packages/@monomind/cli/dist/src/commands/replay.js +8 -2
- package/packages/@monomind/cli/dist/src/commands/route.js +27 -7
- package/packages/@monomind/cli/dist/src/commands/security.js +4 -0
- package/packages/@monomind/cli/dist/src/commands/session.js +12 -1
- package/packages/@monomind/cli/dist/src/commands/start.js +11 -4
- package/packages/@monomind/cli/dist/src/commands/status.js +7 -4
- package/packages/@monomind/cli/dist/src/commands/swarm.js +27 -13
- package/packages/@monomind/cli/dist/src/commands/task.js +26 -11
- package/packages/@monomind/cli/dist/src/commands/tokens.js +7 -2
- package/packages/@monomind/cli/dist/src/commands/transfer-store.js +36 -22
- package/packages/@monomind/cli/dist/src/commands/ui.js +68 -0
- package/packages/@monomind/cli/dist/src/commands/update.js +15 -3
- package/packages/@monomind/cli/dist/src/commands/workflow.js +39 -6
- package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +18 -7
- package/packages/@monomind/cli/dist/src/consensus/index.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/consensus/index.js +6 -0
- package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +25 -8
- package/packages/@monomind/cli/dist/src/context/context-provider.d.ts +44 -0
- package/packages/@monomind/cli/dist/src/context/context-provider.js +25 -0
- package/packages/@monomind/cli/dist/src/context/git-state-provider.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/context/git-state-provider.js +34 -0
- package/packages/@monomind/cli/dist/src/context/index.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/context/index.js +12 -0
- package/packages/@monomind/cli/dist/src/context/project-conventions-provider.d.ts +15 -0
- package/packages/@monomind/cli/dist/src/context/project-conventions-provider.js +19 -0
- package/packages/@monomind/cli/dist/src/context/prompt-assembler.d.ts +26 -0
- package/packages/@monomind/cli/dist/src/context/prompt-assembler.js +93 -0
- package/packages/@monomind/cli/dist/src/context/task-history-provider.d.ts +24 -0
- package/packages/@monomind/cli/dist/src/context/task-history-provider.js +32 -0
- package/packages/@monomind/cli/dist/src/context/user-preferences-provider.d.ts +14 -0
- package/packages/@monomind/cli/dist/src/context/user-preferences-provider.js +27 -0
- package/packages/@monomind/cli/dist/src/dlq/dlq-reader.d.ts +31 -0
- package/packages/@monomind/cli/dist/src/dlq/dlq-reader.js +81 -0
- package/packages/@monomind/cli/dist/src/dlq/dlq-writer.d.ts +24 -0
- package/packages/@monomind/cli/dist/src/dlq/dlq-writer.js +65 -0
- package/packages/@monomind/cli/dist/src/dlq/index.d.ts +10 -0
- package/packages/@monomind/cli/dist/src/dlq/index.js +7 -0
- package/packages/@monomind/cli/dist/src/eval/dataset-manager.d.ts +33 -0
- package/packages/@monomind/cli/dist/src/eval/dataset-manager.js +107 -0
- package/packages/@monomind/cli/dist/src/eval/dataset-runner.d.ts +23 -0
- package/packages/@monomind/cli/dist/src/eval/dataset-runner.js +59 -0
- package/packages/@monomind/cli/dist/src/eval/index.d.ts +10 -0
- package/packages/@monomind/cli/dist/src/eval/index.js +7 -0
- package/packages/@monomind/cli/dist/src/eval/trace-collector.d.ts +40 -0
- package/packages/@monomind/cli/dist/src/eval/trace-collector.js +102 -0
- package/packages/@monomind/cli/dist/src/index.js +7 -3
- package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
- package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.js +264 -0
- package/packages/@monomind/cli/dist/src/init/executor.js +14 -11
- package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +20 -4
- package/packages/@monomind/cli/dist/src/init/statusline-generator.js +33 -12
- package/packages/@monomind/cli/dist/src/interactive/interrupt.d.ts +22 -0
- package/packages/@monomind/cli/dist/src/interactive/interrupt.js +71 -0
- package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.d.ts +25 -0
- package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.js +48 -0
- package/packages/@monomind/cli/dist/src/mcp/tool-registry.d.ts +61 -0
- package/packages/@monomind/cli/dist/src/mcp/tool-registry.js +246 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/a2a-tools.js +98 -13
- package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +16 -3
- package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +80 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +84 -22
- package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +35 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +82 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +37 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +49 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +45 -18
- package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +75 -25
- package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +32 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +91 -20
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +188 -29
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +25 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.js +11 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +148 -26
- package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +44 -9
- package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +45 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +7 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +15 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +61 -9
- package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +45 -14
- package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +15 -3
- package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +14 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +52 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +40 -6
- package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +37 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.js +230 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +29 -6
- package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +26 -10
- package/packages/@monomind/cli/dist/src/memory/intelligence.js +80 -19
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +21 -2
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +67 -3
- package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +14 -4
- package/packages/@monomind/cli/dist/src/model/complexity-scorer.d.ts +21 -0
- package/packages/@monomind/cli/dist/src/model/complexity-scorer.js +106 -0
- package/packages/@monomind/cli/dist/src/model/index.d.ts +4 -0
- package/packages/@monomind/cli/dist/src/model/index.js +4 -0
- package/packages/@monomind/cli/dist/src/model/model-settings.d.ts +22 -0
- package/packages/@monomind/cli/dist/src/model/model-settings.js +33 -0
- package/packages/@monomind/cli/dist/src/model/model-tier-resolver.d.ts +24 -0
- package/packages/@monomind/cli/dist/src/model/model-tier-resolver.js +65 -0
- package/packages/@monomind/cli/dist/src/monovector/capabilities.d.ts +34 -0
- package/packages/@monomind/cli/dist/src/monovector/capabilities.js +37 -0
- package/packages/@monomind/cli/dist/src/monovector/command-outcomes.js +43 -7
- package/packages/@monomind/cli/dist/src/monovector/coverage-router.js +8 -4
- package/packages/@monomind/cli/dist/src/monovector/coverage-tools.js +6 -3
- package/packages/@monomind/cli/dist/src/monovector/diff-classifier.js +13 -0
- package/packages/@monomind/cli/dist/src/monovector/route-outcomes.d.ts +2 -1
- package/packages/@monomind/cli/dist/src/monovector/route-outcomes.js +46 -4
- package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/orchestration/index.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/orchestration/index.js +6 -0
- package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.js +31 -0
- package/packages/@monomind/cli/dist/src/orchestration/routing-modes.d.ts +68 -0
- package/packages/@monomind/cli/dist/src/orchestration/routing-modes.js +180 -0
- package/packages/@monomind/cli/dist/src/plugins/manager.js +8 -3
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +46 -2
- package/packages/@monomind/cli/dist/src/plugins/store/search.js +5 -4
- package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.js +126 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.js +188 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.js +206 -0
- package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +17 -3
- package/packages/@monomind/cli/dist/src/production/error-handler.js +3 -0
- package/packages/@monomind/cli/dist/src/production/monitoring.js +20 -3
- package/packages/@monomind/cli/dist/src/production/rate-limiter.js +13 -4
- package/packages/@monomind/cli/dist/src/production/retry.js +17 -9
- package/packages/@monomind/cli/dist/src/routing/embed-worker.js +6 -2
- package/packages/@monomind/cli/dist/src/routing/embedder.js +0 -0
- package/packages/@monomind/cli/dist/src/routing/llm-caller.js +13 -2
- package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +18 -3
- package/packages/@monomind/cli/dist/src/runtime/headless.d.ts +60 -0
- package/packages/@monomind/cli/dist/src/runtime/headless.js +284 -0
- package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.d.ts +50 -0
- package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.js +95 -0
- package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/services/claim-service.js +8 -0
- package/packages/@monomind/cli/dist/src/services/config-file-manager.js +14 -2
- package/packages/@monomind/cli/dist/src/services/container-worker-pool.d.ts +197 -0
- package/packages/@monomind/cli/dist/src/services/container-worker-pool.js +623 -0
- package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +18 -2
- package/packages/@monomind/cli/dist/src/services/index.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/services/index.js +11 -0
- package/packages/@monomind/cli/dist/src/services/worker-daemon.js +53 -12
- package/packages/@monomind/cli/dist/src/services/worker-queue.d.ts +201 -0
- package/packages/@monomind/cli/dist/src/services/worker-queue.js +594 -0
- package/packages/@monomind/cli/dist/src/swarm/communication-graph.d.ts +25 -0
- package/packages/@monomind/cli/dist/src/swarm/communication-graph.js +77 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.d.ts +31 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.js +61 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.d.ts +19 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.js +68 -0
- package/packages/@monomind/cli/dist/src/transfer/anonymization/index.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +16 -1
- package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.js +205 -0
- package/packages/@monomind/cli/dist/src/transfer/export.js +8 -0
- package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.js +33 -3
- package/packages/@monomind/cli/dist/src/transfer/serialization/cfp.js +9 -3
- package/packages/@monomind/cli/dist/src/transfer/storage/gcs.js +37 -3
- package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +45 -3
- package/packages/@monomind/cli/dist/src/transfer/store/download.js +5 -0
- package/packages/@monomind/cli/dist/src/transfer/store/publish.js +13 -1
- package/packages/@monomind/cli/dist/src/transfer/store/registry.d.ts +8 -0
- package/packages/@monomind/cli/dist/src/transfer/store/registry.js +30 -5
- package/packages/@monomind/cli/dist/src/transfer/store/search.js +20 -5
- package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.js +190 -0
- package/packages/@monomind/cli/dist/src/transfer/test-seraphine.d.ts +6 -0
- package/packages/@monomind/cli/dist/src/transfer/test-seraphine.js +105 -0
- package/packages/@monomind/cli/dist/src/transfer/tests/test-store.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/transfer/tests/test-store.js +214 -0
- package/packages/@monomind/cli/dist/src/update/checker.js +59 -7
- package/packages/@monomind/cli/dist/src/update/executor.js +50 -3
- package/packages/@monomind/cli/dist/src/update/index.js +18 -1
- package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +6 -0
- package/packages/@monomind/cli/dist/src/update/rate-limiter.js +79 -7
- package/packages/@monomind/cli/dist/src/update/validator.js +52 -1
- package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.d.ts +10 -0
- package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.js +82 -0
- package/packages/@monomind/cli/dist/src/workflow/context-resolver.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/workflow/context-resolver.js +23 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-builder.d.ts +17 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-builder.js +129 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-executor.d.ts +9 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-executor.js +116 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-types.d.ts +41 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-types.js +8 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-parser.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-parser.js +20 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-schema.d.ts +165 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-schema.js +82 -0
- package/packages/@monomind/cli/dist/src/workflow/index.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/workflow/index.js +11 -0
- package/packages/@monomind/cli/dist/src/workflow/template-engine.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/workflow/template-engine.js +40 -0
- package/packages/@monomind/cli/dist/src/workflow/workflow-executor.d.ts +29 -0
- package/packages/@monomind/cli/dist/src/workflow/workflow-executor.js +227 -0
- package/packages/@monomind/cli/package.json +9 -10
- package/packages/@monomind/guidance/dist/adversarial.d.ts +284 -0
- package/packages/@monomind/guidance/dist/adversarial.js +572 -0
- package/packages/@monomind/guidance/dist/analyzer.d.ts +530 -0
- package/packages/@monomind/guidance/dist/analyzer.js +2518 -0
- package/packages/@monomind/guidance/dist/artifacts.d.ts +283 -0
- package/packages/@monomind/guidance/dist/artifacts.js +356 -0
- package/packages/@monomind/guidance/dist/authority.d.ts +290 -0
- package/packages/@monomind/guidance/dist/authority.js +558 -0
- package/packages/@monomind/guidance/dist/capabilities.d.ts +209 -0
- package/packages/@monomind/guidance/dist/capabilities.js +485 -0
- package/packages/@monomind/guidance/dist/coherence.d.ts +233 -0
- package/packages/@monomind/guidance/dist/coherence.js +372 -0
- package/packages/@monomind/guidance/dist/compiler.d.ts +87 -0
- package/packages/@monomind/guidance/dist/compiler.js +419 -0
- package/packages/@monomind/guidance/dist/conformance-kit.d.ts +225 -0
- package/packages/@monomind/guidance/dist/conformance-kit.js +629 -0
- package/packages/@monomind/guidance/dist/continue-gate.d.ts +214 -0
- package/packages/@monomind/guidance/dist/continue-gate.js +353 -0
- package/packages/@monomind/guidance/dist/crypto-utils.d.ts +17 -0
- package/packages/@monomind/guidance/dist/crypto-utils.js +24 -0
- package/packages/@monomind/guidance/dist/evolution.d.ts +282 -0
- package/packages/@monomind/guidance/dist/evolution.js +500 -0
- package/packages/@monomind/guidance/dist/gates.d.ts +79 -0
- package/packages/@monomind/guidance/dist/gates.js +302 -0
- package/packages/@monomind/guidance/dist/gateway.d.ts +206 -0
- package/packages/@monomind/guidance/dist/gateway.js +452 -0
- package/packages/@monomind/guidance/dist/generators.d.ts +153 -0
- package/packages/@monomind/guidance/dist/generators.js +682 -0
- package/packages/@monomind/guidance/dist/headless.d.ts +177 -0
- package/packages/@monomind/guidance/dist/headless.js +342 -0
- package/packages/@monomind/guidance/dist/hooks.d.ts +109 -0
- package/packages/@monomind/guidance/dist/hooks.js +347 -0
- package/packages/@monomind/guidance/dist/index.d.ts +205 -0
- package/packages/@monomind/guidance/dist/index.js +321 -0
- package/packages/@monomind/guidance/dist/ledger.d.ts +162 -0
- package/packages/@monomind/guidance/dist/ledger.js +375 -0
- package/packages/@monomind/guidance/dist/manifest-validator.d.ts +289 -0
- package/packages/@monomind/guidance/dist/manifest-validator.js +838 -0
- package/packages/@monomind/guidance/dist/memory-gate.d.ts +222 -0
- package/packages/@monomind/guidance/dist/memory-gate.js +382 -0
- package/packages/@monomind/guidance/dist/meta-governance.d.ts +265 -0
- package/packages/@monomind/guidance/dist/meta-governance.js +348 -0
- package/packages/@monomind/guidance/dist/optimizer.d.ts +104 -0
- package/packages/@monomind/guidance/dist/optimizer.js +329 -0
- package/packages/@monomind/guidance/dist/persistence.d.ts +189 -0
- package/packages/@monomind/guidance/dist/persistence.js +464 -0
- package/packages/@monomind/guidance/dist/proof.d.ts +185 -0
- package/packages/@monomind/guidance/dist/proof.js +238 -0
- package/packages/@monomind/guidance/dist/retriever.d.ts +116 -0
- package/packages/@monomind/guidance/dist/retriever.js +394 -0
- package/packages/@monomind/guidance/dist/ruvbot-integration.d.ts +370 -0
- package/packages/@monomind/guidance/dist/ruvbot-integration.js +738 -0
- package/packages/@monomind/guidance/dist/temporal.d.ts +426 -0
- package/packages/@monomind/guidance/dist/temporal.js +658 -0
- package/packages/@monomind/guidance/dist/trust.d.ts +283 -0
- package/packages/@monomind/guidance/dist/trust.js +473 -0
- package/packages/@monomind/guidance/dist/truth-anchors.d.ts +276 -0
- package/packages/@monomind/guidance/dist/truth-anchors.js +488 -0
- package/packages/@monomind/guidance/dist/types.d.ts +378 -0
- package/packages/@monomind/guidance/dist/types.js +10 -0
- package/packages/@monomind/guidance/dist/uncertainty.d.ts +372 -0
- package/packages/@monomind/guidance/dist/uncertainty.js +619 -0
- package/packages/@monomind/guidance/dist/wasm-kernel.d.ts +48 -0
- package/packages/@monomind/guidance/dist/wasm-kernel.js +158 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Plugin Store Demo
|
|
4
|
+
* Demonstrates the IPFS-based plugin registry working end-to-end
|
|
5
|
+
*/
|
|
6
|
+
import { createPluginDiscoveryService, searchPlugins, getOfficialPlugins, } from '../store/index.js';
|
|
7
|
+
async function demo() {
|
|
8
|
+
console.log('');
|
|
9
|
+
console.log('╔══════════════════════════════════════════════════════════════╗');
|
|
10
|
+
console.log('║ MONOMIND - IPFS PLUGIN STORE DEMO ║');
|
|
11
|
+
console.log('║ Decentralized Plugin Marketplace ║');
|
|
12
|
+
console.log('╚══════════════════════════════════════════════════════════════╝');
|
|
13
|
+
console.log('');
|
|
14
|
+
// Step 1: Initialize discovery service
|
|
15
|
+
console.log('🔍 Step 1: Initialize Plugin Discovery Service');
|
|
16
|
+
const discovery = createPluginDiscoveryService();
|
|
17
|
+
const registries = discovery.listRegistries();
|
|
18
|
+
console.log(` Found ${registries.length} bootstrap registries:`);
|
|
19
|
+
registries.forEach(r => {
|
|
20
|
+
console.log(` ├─ ${r.name} ${r.official ? '(Official)' : '(Community)'}`);
|
|
21
|
+
console.log(` │ └─ IPNS: ${r.ipnsName.slice(0, 30)}...`);
|
|
22
|
+
});
|
|
23
|
+
console.log('');
|
|
24
|
+
// Step 2: Discover registry via IPNS
|
|
25
|
+
console.log('🌐 Step 2: Discover Registry via IPNS');
|
|
26
|
+
const result = await discovery.discoverRegistry();
|
|
27
|
+
if (!result.success || !result.registry) {
|
|
28
|
+
console.error(' ❌ Failed to discover registry');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
console.log(` ✅ Registry discovered from: ${result.source}`);
|
|
32
|
+
console.log(` ├─ Total plugins: ${result.registry.totalPlugins}`);
|
|
33
|
+
console.log(` ├─ Total downloads: ${result.registry.totalDownloads.toLocaleString()}`);
|
|
34
|
+
console.log(` └─ CID: ${result.cid?.slice(0, 40)}...`);
|
|
35
|
+
console.log('');
|
|
36
|
+
// Step 3: List official plugins
|
|
37
|
+
console.log('📦 Step 3: Official Plugins Available');
|
|
38
|
+
const official = getOfficialPlugins(result.registry);
|
|
39
|
+
console.log('');
|
|
40
|
+
official.forEach(p => {
|
|
41
|
+
const stars = '★'.repeat(Math.round(p.rating));
|
|
42
|
+
console.log(` ${p.verified ? '✓' : ' '} ${p.displayName} v${p.version}`);
|
|
43
|
+
console.log(` └─ ${p.description.slice(0, 60)}...`);
|
|
44
|
+
console.log(` └─ ${p.downloads.toLocaleString()} downloads | ${stars} ${p.rating}`);
|
|
45
|
+
console.log('');
|
|
46
|
+
});
|
|
47
|
+
// Step 4: Search for plugin-creator
|
|
48
|
+
console.log('🔎 Step 4: Search for "plugin creator"');
|
|
49
|
+
const searchResult = searchPlugins(result.registry, { query: 'plugin creator' });
|
|
50
|
+
console.log(` Found ${searchResult.total} results`);
|
|
51
|
+
console.log('');
|
|
52
|
+
// Step 5: Plugin Creator details
|
|
53
|
+
const pluginCreator = searchResult.plugins.find(p => p.id === 'plugin-creator');
|
|
54
|
+
if (pluginCreator) {
|
|
55
|
+
console.log('═══════════════════════════════════════════════════════════════');
|
|
56
|
+
console.log(' PLUGIN CREATOR PRO ');
|
|
57
|
+
console.log('═══════════════════════════════════════════════════════════════');
|
|
58
|
+
console.log('');
|
|
59
|
+
console.log(` Name: ${pluginCreator.displayName}`);
|
|
60
|
+
console.log(` Version: ${pluginCreator.version}`);
|
|
61
|
+
console.log(` Trust: ${pluginCreator.trustLevel.toUpperCase()}`);
|
|
62
|
+
console.log(` Verified: ${pluginCreator.verified ? '✓ Yes' : '✗ No'}`);
|
|
63
|
+
console.log(` Downloads: ${pluginCreator.downloads.toLocaleString()}`);
|
|
64
|
+
console.log(` Rating: ${'★'.repeat(Math.round(pluginCreator.rating))} ${pluginCreator.rating}/5`);
|
|
65
|
+
console.log(` License: ${pluginCreator.license}`);
|
|
66
|
+
console.log('');
|
|
67
|
+
console.log(' Description:');
|
|
68
|
+
console.log(` ${pluginCreator.description}`);
|
|
69
|
+
console.log('');
|
|
70
|
+
console.log(' IPFS Storage:');
|
|
71
|
+
console.log(` ├─ CID: ${pluginCreator.cid}`);
|
|
72
|
+
console.log(` ├─ Size: ${(pluginCreator.size / 1024).toFixed(1)} KB`);
|
|
73
|
+
console.log(` └─ Checksum: ${pluginCreator.checksum}`);
|
|
74
|
+
console.log('');
|
|
75
|
+
console.log(' Commands Available:');
|
|
76
|
+
pluginCreator.commands.forEach(cmd => {
|
|
77
|
+
console.log(` └─ ${cmd}`);
|
|
78
|
+
});
|
|
79
|
+
console.log('');
|
|
80
|
+
console.log(' Hooks Provided:');
|
|
81
|
+
pluginCreator.hooks.forEach(hook => {
|
|
82
|
+
console.log(` └─ ${hook}`);
|
|
83
|
+
});
|
|
84
|
+
console.log('');
|
|
85
|
+
console.log(' Permissions Required:');
|
|
86
|
+
console.log(` └─ ${pluginCreator.permissions.join(', ')}`);
|
|
87
|
+
console.log('');
|
|
88
|
+
if (pluginCreator.securityAudit) {
|
|
89
|
+
console.log(' Security Audit:');
|
|
90
|
+
console.log(` ├─ Auditor: ${pluginCreator.securityAudit.auditor}`);
|
|
91
|
+
console.log(` ├─ Date: ${pluginCreator.securityAudit.auditDate}`);
|
|
92
|
+
console.log(` └─ Passed: ${pluginCreator.securityAudit.passed ? '✓ Yes' : '✗ No'}`);
|
|
93
|
+
console.log('');
|
|
94
|
+
}
|
|
95
|
+
console.log(' To install:');
|
|
96
|
+
console.log(' $ monomind plugins install -n plugin-creator');
|
|
97
|
+
console.log('');
|
|
98
|
+
}
|
|
99
|
+
// Summary
|
|
100
|
+
console.log('═══════════════════════════════════════════════════════════════');
|
|
101
|
+
console.log(' DEMO COMPLETE ');
|
|
102
|
+
console.log('═══════════════════════════════════════════════════════════════');
|
|
103
|
+
console.log('');
|
|
104
|
+
console.log(' The IPFS-based Plugin Store is working!');
|
|
105
|
+
console.log('');
|
|
106
|
+
console.log(' Features demonstrated:');
|
|
107
|
+
console.log(' ✅ Registry discovery via IPNS');
|
|
108
|
+
console.log(' ✅ Plugin search with full-text matching');
|
|
109
|
+
console.log(' ✅ Official/Verified plugin filtering');
|
|
110
|
+
console.log(' ✅ Plugin Creator Pro available for download');
|
|
111
|
+
console.log(' ✅ Security audit verification');
|
|
112
|
+
console.log(' ✅ Content-addressed storage (CID)');
|
|
113
|
+
console.log('');
|
|
114
|
+
console.log(' CLI Commands:');
|
|
115
|
+
console.log(' $ monomind plugins list # List all plugins');
|
|
116
|
+
console.log(' $ monomind plugins list --official # Official only');
|
|
117
|
+
console.log(' $ monomind plugins search -q neural # Search plugins');
|
|
118
|
+
console.log(' $ monomind plugins info -n plugin-creator');
|
|
119
|
+
console.log(' $ monomind plugins install -n plugin-creator');
|
|
120
|
+
console.log('');
|
|
121
|
+
}
|
|
122
|
+
demo().catch(err => {
|
|
123
|
+
console.error('Demo failed:', err);
|
|
124
|
+
process.exit(1);
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=demo-plugin-store.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Standalone Plugin Store Test
|
|
4
|
+
* Run this in any environment to verify the IPFS-based plugin store works
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx tsx standalone-test.ts
|
|
8
|
+
* # or
|
|
9
|
+
* npm run test:plugin-store
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=standalone-test.d.ts.map
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Standalone Plugin Store Test
|
|
4
|
+
* Run this in any environment to verify the IPFS-based plugin store works
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx tsx standalone-test.ts
|
|
8
|
+
* # or
|
|
9
|
+
* npm run test:plugin-store
|
|
10
|
+
*/
|
|
11
|
+
import { createPluginDiscoveryService, searchPlugins, getFeaturedPlugins, getOfficialPlugins, getPluginSearchSuggestions, getPluginTagCloud, findSimilarPlugins, } from '../store/index.js';
|
|
12
|
+
async function main() {
|
|
13
|
+
console.log('');
|
|
14
|
+
console.log('╔══════════════════════════════════════════════════════════════╗');
|
|
15
|
+
console.log('║ MONOMIND - STANDALONE PLUGIN STORE TEST ║');
|
|
16
|
+
console.log('║ IPFS-Based Decentralized Plugin Marketplace ║');
|
|
17
|
+
console.log('╚══════════════════════════════════════════════════════════════╝');
|
|
18
|
+
console.log('');
|
|
19
|
+
let passed = 0;
|
|
20
|
+
let failed = 0;
|
|
21
|
+
// Test 1: Discovery Service Creation
|
|
22
|
+
console.log('▶ Test 1: Create Discovery Service');
|
|
23
|
+
try {
|
|
24
|
+
const discovery = createPluginDiscoveryService();
|
|
25
|
+
const registries = discovery.listRegistries();
|
|
26
|
+
console.log(` ✅ Created service with ${registries.length} bootstrap registries`);
|
|
27
|
+
passed++;
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
31
|
+
failed++;
|
|
32
|
+
}
|
|
33
|
+
// Test 2: Discover Registry
|
|
34
|
+
console.log('▶ Test 2: Discover Registry via IPNS');
|
|
35
|
+
let registry = null;
|
|
36
|
+
try {
|
|
37
|
+
const discovery = createPluginDiscoveryService();
|
|
38
|
+
const result = await discovery.discoverRegistry();
|
|
39
|
+
if (result.success && result.registry) {
|
|
40
|
+
registry = result.registry;
|
|
41
|
+
console.log(` ✅ Discovered ${result.registry.plugins.length} plugins from ${result.source}`);
|
|
42
|
+
passed++;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
throw new Error(result.error || 'No registry');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
50
|
+
failed++;
|
|
51
|
+
}
|
|
52
|
+
if (!registry) {
|
|
53
|
+
console.log('\n❌ Cannot continue without registry\n');
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
// Test 3: Search Plugins
|
|
57
|
+
console.log('▶ Test 3: Search for "plugin creator"');
|
|
58
|
+
try {
|
|
59
|
+
const results = searchPlugins(registry, { query: 'plugin creator' });
|
|
60
|
+
const found = results.plugins.find(p => p.id === 'plugin-creator');
|
|
61
|
+
if (found) {
|
|
62
|
+
console.log(` ✅ Found Plugin Creator Pro v${found.version}`);
|
|
63
|
+
passed++;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
throw new Error('Plugin Creator not found in search results');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
71
|
+
failed++;
|
|
72
|
+
}
|
|
73
|
+
// Test 4: Get Official Plugins
|
|
74
|
+
console.log('▶ Test 4: Get Official Plugins');
|
|
75
|
+
try {
|
|
76
|
+
const official = getOfficialPlugins(registry);
|
|
77
|
+
console.log(` ✅ Found ${official.length} official plugins:`);
|
|
78
|
+
official.forEach(p => console.log(` - ${p.displayName} (${p.id})`));
|
|
79
|
+
passed++;
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
83
|
+
failed++;
|
|
84
|
+
}
|
|
85
|
+
// Test 5: Get Featured Plugins
|
|
86
|
+
console.log('▶ Test 5: Get Featured Plugins');
|
|
87
|
+
try {
|
|
88
|
+
const featured = getFeaturedPlugins(registry);
|
|
89
|
+
const hasPluginCreator = featured.some(p => p.id === 'plugin-creator');
|
|
90
|
+
console.log(` ✅ Found ${featured.length} featured plugins (Plugin Creator featured: ${hasPluginCreator})`);
|
|
91
|
+
passed++;
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
95
|
+
failed++;
|
|
96
|
+
}
|
|
97
|
+
// Test 6: Search with Filters
|
|
98
|
+
console.log('▶ Test 6: Search with Filters (verified only)');
|
|
99
|
+
try {
|
|
100
|
+
const results = searchPlugins(registry, { verified: true });
|
|
101
|
+
console.log(` ✅ Found ${results.plugins.length} verified plugins`);
|
|
102
|
+
passed++;
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
106
|
+
failed++;
|
|
107
|
+
}
|
|
108
|
+
// Test 7: Plugin Details
|
|
109
|
+
console.log('▶ Test 7: Get Plugin Creator Details');
|
|
110
|
+
try {
|
|
111
|
+
const plugin = registry.plugins.find((p) => p.id === 'plugin-creator');
|
|
112
|
+
if (plugin) {
|
|
113
|
+
console.log(` ✅ Plugin Creator Pro Details:`);
|
|
114
|
+
console.log(` Version: ${plugin.version}`);
|
|
115
|
+
console.log(` Trust: ${plugin.trustLevel}`);
|
|
116
|
+
console.log(` Commands: ${plugin.commands.length}`);
|
|
117
|
+
console.log(` Downloads: ${plugin.downloads.toLocaleString()}`);
|
|
118
|
+
console.log(` Rating: ${plugin.rating}/5`);
|
|
119
|
+
passed++;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
throw new Error('Plugin not found');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
127
|
+
failed++;
|
|
128
|
+
}
|
|
129
|
+
// Test 8: Tag Cloud
|
|
130
|
+
console.log('▶ Test 8: Get Tag Cloud');
|
|
131
|
+
try {
|
|
132
|
+
const tags = getPluginTagCloud(registry);
|
|
133
|
+
console.log(` ✅ Found ${tags.size} unique tags`);
|
|
134
|
+
passed++;
|
|
135
|
+
}
|
|
136
|
+
catch (e) {
|
|
137
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
138
|
+
failed++;
|
|
139
|
+
}
|
|
140
|
+
// Test 9: Search Suggestions
|
|
141
|
+
console.log('▶ Test 9: Get Search Suggestions');
|
|
142
|
+
try {
|
|
143
|
+
const suggestions = getPluginSearchSuggestions(registry, 'plug');
|
|
144
|
+
console.log(` ✅ Got ${suggestions.length} suggestions for "plug"`);
|
|
145
|
+
passed++;
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
149
|
+
failed++;
|
|
150
|
+
}
|
|
151
|
+
// Test 10: Similar Plugins
|
|
152
|
+
console.log('▶ Test 10: Find Similar Plugins');
|
|
153
|
+
try {
|
|
154
|
+
const similar = findSimilarPlugins(registry, '@monoes/neural', 3);
|
|
155
|
+
console.log(` ✅ Found ${similar.length} similar plugins to @monoes/neural`);
|
|
156
|
+
passed++;
|
|
157
|
+
}
|
|
158
|
+
catch (e) {
|
|
159
|
+
console.log(` ❌ Failed: ${e.message}`);
|
|
160
|
+
failed++;
|
|
161
|
+
}
|
|
162
|
+
// Summary
|
|
163
|
+
console.log('');
|
|
164
|
+
console.log('═══════════════════════════════════════════════════════════════');
|
|
165
|
+
console.log(' TEST RESULTS ');
|
|
166
|
+
console.log('═══════════════════════════════════════════════════════════════');
|
|
167
|
+
console.log('');
|
|
168
|
+
console.log(` Total: ${passed + failed}`);
|
|
169
|
+
console.log(` ✅ Passed: ${passed}`);
|
|
170
|
+
console.log(` ❌ Failed: ${failed}`);
|
|
171
|
+
console.log('');
|
|
172
|
+
if (failed === 0) {
|
|
173
|
+
console.log(' 🎉 All tests passed! Plugin Store is working correctly.');
|
|
174
|
+
console.log('');
|
|
175
|
+
console.log(' Available CLI Commands:');
|
|
176
|
+
console.log(' npx @monoes/cli plugins list');
|
|
177
|
+
console.log(' npx @monoes/cli plugins list --official');
|
|
178
|
+
console.log(' npx @monoes/cli plugins search -q "plugin creator"');
|
|
179
|
+
console.log(' npx @monoes/cli plugins info -n plugin-creator');
|
|
180
|
+
console.log('');
|
|
181
|
+
}
|
|
182
|
+
process.exit(failed > 0 ? 1 : 0);
|
|
183
|
+
}
|
|
184
|
+
main().catch(err => {
|
|
185
|
+
console.error('Fatal error:', err);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
});
|
|
188
|
+
//# sourceMappingURL=standalone-test.js.map
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Plugin Store Test Suite
|
|
4
|
+
* Tests IPFS-based plugin registry discovery, search, and operations
|
|
5
|
+
*/
|
|
6
|
+
import { createPluginDiscoveryService, searchPlugins, getPluginSearchSuggestions, getPluginTagCloud, getFeaturedPlugins, getTrendingPlugins, getOfficialPlugins, findSimilarPlugins, } from '../store/index.js';
|
|
7
|
+
// Test results tracking
|
|
8
|
+
const results = [];
|
|
9
|
+
function logTest(name, passed, details) {
|
|
10
|
+
results.push({ test: name, passed, details });
|
|
11
|
+
const icon = passed ? '✅' : '❌';
|
|
12
|
+
console.log(`${icon} ${name}${details ? `: ${details}` : ''}`);
|
|
13
|
+
}
|
|
14
|
+
async function runTests() {
|
|
15
|
+
console.log('');
|
|
16
|
+
console.log('╔══════════════════════════════════════════════════════════╗');
|
|
17
|
+
console.log('║ PLUGIN STORE TEST SUITE ║');
|
|
18
|
+
console.log('║ Testing IPFS-Based Registry Discovery ║');
|
|
19
|
+
console.log('╚══════════════════════════════════════════════════════════╝');
|
|
20
|
+
console.log('');
|
|
21
|
+
// ==========================================================================
|
|
22
|
+
// 1. DISCOVERY TESTS
|
|
23
|
+
// ==========================================================================
|
|
24
|
+
console.log('─── Discovery Tests ───────────────────────────────────────');
|
|
25
|
+
try {
|
|
26
|
+
const discovery = createPluginDiscoveryService();
|
|
27
|
+
logTest('Discovery service created', true);
|
|
28
|
+
// List registries
|
|
29
|
+
const registries = discovery.listRegistries();
|
|
30
|
+
logTest('List registries', registries.length > 0, `Found ${registries.length} registries`);
|
|
31
|
+
// Discover registry
|
|
32
|
+
const result = await discovery.discoverRegistry();
|
|
33
|
+
logTest('Discover registry via IPNS', result.success, result.success
|
|
34
|
+
? `Loaded ${result.registry?.plugins.length || 0} plugins`
|
|
35
|
+
: result.error);
|
|
36
|
+
// Cache test
|
|
37
|
+
if (result.success) {
|
|
38
|
+
const cachedResult = await discovery.discoverRegistry();
|
|
39
|
+
logTest('Cache hit', cachedResult.fromCache === true, 'Second request from cache');
|
|
40
|
+
}
|
|
41
|
+
console.log('');
|
|
42
|
+
// ==========================================================================
|
|
43
|
+
// 2. SEARCH TESTS
|
|
44
|
+
// ==========================================================================
|
|
45
|
+
console.log('─── Search Tests ──────────────────────────────────────────');
|
|
46
|
+
if (result.success && result.registry) {
|
|
47
|
+
const registry = result.registry;
|
|
48
|
+
// Basic search
|
|
49
|
+
const basicSearch = searchPlugins(registry);
|
|
50
|
+
logTest('Basic search', basicSearch.plugins.length > 0, `Found ${basicSearch.total} plugins`);
|
|
51
|
+
// Query search for plugin-creator
|
|
52
|
+
const creatorSearch = searchPlugins(registry, { query: 'creator' });
|
|
53
|
+
logTest('Query search: "creator"', creatorSearch.plugins.length > 0, `Found ${creatorSearch.plugins.length} plugins matching "creator"`);
|
|
54
|
+
// Verify plugin-creator exists
|
|
55
|
+
const pluginCreator = creatorSearch.plugins.find(p => p.id === 'plugin-creator');
|
|
56
|
+
logTest('Plugin Creator found', pluginCreator !== undefined, pluginCreator ? `v${pluginCreator.version} - ${pluginCreator.displayName}` : 'Not found');
|
|
57
|
+
// Category filter
|
|
58
|
+
const securitySearch = searchPlugins(registry, { category: 'security' });
|
|
59
|
+
logTest('Category filter: security', true, `Found ${securitySearch.plugins.length} security plugins`);
|
|
60
|
+
// Type filter
|
|
61
|
+
const commandSearch = searchPlugins(registry, { type: 'command' });
|
|
62
|
+
logTest('Type filter: command', commandSearch.plugins.length > 0, `Found ${commandSearch.plugins.length} command plugins`);
|
|
63
|
+
// Verified filter
|
|
64
|
+
const verifiedSearch = searchPlugins(registry, { verified: true });
|
|
65
|
+
logTest('Verified filter', verifiedSearch.plugins.length > 0, `Verified plugins: ${verifiedSearch.plugins.length}`);
|
|
66
|
+
// Sort by downloads
|
|
67
|
+
const sortedSearch = searchPlugins(registry, {
|
|
68
|
+
sortBy: 'downloads',
|
|
69
|
+
sortOrder: 'desc',
|
|
70
|
+
});
|
|
71
|
+
logTest('Sort by downloads', true, `Top plugin: ${sortedSearch.plugins[0]?.displayName || 'none'} (${sortedSearch.plugins[0]?.downloads || 0} downloads)`);
|
|
72
|
+
// Pagination
|
|
73
|
+
const page1 = searchPlugins(registry, { limit: 3, offset: 0 });
|
|
74
|
+
logTest('Pagination', page1.pageSize === 3, `Page 1 with ${page1.plugins.length} plugins, hasMore: ${page1.hasMore}`);
|
|
75
|
+
// Search suggestions
|
|
76
|
+
const suggestions = getPluginSearchSuggestions(registry, 'neu');
|
|
77
|
+
logTest('Search suggestions', suggestions.length >= 0, `Suggestions for "neu": ${suggestions.slice(0, 3).join(', ') || 'none'}`);
|
|
78
|
+
// Tag cloud
|
|
79
|
+
const tagCloud = getPluginTagCloud(registry);
|
|
80
|
+
logTest('Tag cloud', tagCloud.size > 0, `${tagCloud.size} unique tags`);
|
|
81
|
+
}
|
|
82
|
+
console.log('');
|
|
83
|
+
// ==========================================================================
|
|
84
|
+
// 3. FEATURED/TRENDING/OFFICIAL TESTS
|
|
85
|
+
// ==========================================================================
|
|
86
|
+
console.log('─── Featured/Trending/Official Tests ─────────────────────');
|
|
87
|
+
if (result.success && result.registry) {
|
|
88
|
+
const registry = result.registry;
|
|
89
|
+
// Featured plugins
|
|
90
|
+
const featured = getFeaturedPlugins(registry);
|
|
91
|
+
logTest('Featured plugins', featured.length > 0, `${featured.length} featured: ${featured.map(p => p.name).join(', ')}`);
|
|
92
|
+
// Check plugin-creator is featured
|
|
93
|
+
const creatorFeatured = featured.some(p => p.id === 'plugin-creator');
|
|
94
|
+
logTest('Plugin Creator is featured', creatorFeatured, creatorFeatured ? 'Yes' : 'No');
|
|
95
|
+
// Trending plugins
|
|
96
|
+
const trending = getTrendingPlugins(registry);
|
|
97
|
+
logTest('Trending plugins', trending.length > 0, `${trending.length} trending: ${trending.map(p => p.name).join(', ')}`);
|
|
98
|
+
// Official plugins
|
|
99
|
+
const official = getOfficialPlugins(registry);
|
|
100
|
+
logTest('Official plugins', official.length > 0, `${official.length} official plugins`);
|
|
101
|
+
// Similar plugins
|
|
102
|
+
const similar = findSimilarPlugins(registry, '@monoes/neural', 3);
|
|
103
|
+
logTest('Similar plugins', similar.length >= 0, `Similar to @monoes/neural: ${similar.map(p => p.name).join(', ') || 'none'}`);
|
|
104
|
+
}
|
|
105
|
+
console.log('');
|
|
106
|
+
// ==========================================================================
|
|
107
|
+
// 4. PLUGIN DETAILS TEST
|
|
108
|
+
// ==========================================================================
|
|
109
|
+
console.log('─── Plugin Details Test ───────────────────────────────────');
|
|
110
|
+
if (result.success && result.registry) {
|
|
111
|
+
const pluginCreator = result.registry.plugins.find(p => p.id === 'plugin-creator');
|
|
112
|
+
if (pluginCreator) {
|
|
113
|
+
logTest('Plugin Creator details', true);
|
|
114
|
+
console.log('');
|
|
115
|
+
console.log(' Plugin Creator Pro Details:');
|
|
116
|
+
console.log(` ├─ ID: ${pluginCreator.id}`);
|
|
117
|
+
console.log(` ├─ Version: ${pluginCreator.version}`);
|
|
118
|
+
console.log(` ├─ CID: ${pluginCreator.cid}`);
|
|
119
|
+
console.log(` ├─ Size: ${(pluginCreator.size / 1024).toFixed(1)} KB`);
|
|
120
|
+
console.log(` ├─ Downloads: ${pluginCreator.downloads.toLocaleString()}`);
|
|
121
|
+
console.log(` ├─ Rating: ${pluginCreator.rating}★ (${pluginCreator.ratingCount} ratings)`);
|
|
122
|
+
console.log(` ├─ Trust: ${pluginCreator.trustLevel}`);
|
|
123
|
+
console.log(` ├─ Verified: ${pluginCreator.verified ? '✓' : '✗'}`);
|
|
124
|
+
console.log(` ├─ Commands: ${pluginCreator.commands.length}`);
|
|
125
|
+
pluginCreator.commands.forEach(cmd => {
|
|
126
|
+
console.log(` │ └─ ${cmd}`);
|
|
127
|
+
});
|
|
128
|
+
console.log(` ├─ Hooks: ${pluginCreator.hooks.length}`);
|
|
129
|
+
pluginCreator.hooks.forEach(hook => {
|
|
130
|
+
console.log(` │ └─ ${hook}`);
|
|
131
|
+
});
|
|
132
|
+
console.log(` ├─ Permissions: ${pluginCreator.permissions.join(', ')}`);
|
|
133
|
+
console.log(` ├─ Security Audit: ${pluginCreator.securityAudit ? '✓ Passed' : 'None'}`);
|
|
134
|
+
console.log(` └─ License: ${pluginCreator.license}`);
|
|
135
|
+
console.log('');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// ==========================================================================
|
|
139
|
+
// 5. INTEGRATION TEST
|
|
140
|
+
// ==========================================================================
|
|
141
|
+
console.log('─── Integration Test ──────────────────────────────────────');
|
|
142
|
+
// Full workflow: discover -> search -> get details
|
|
143
|
+
const store = createPluginDiscoveryService();
|
|
144
|
+
const discoverResult = await store.discoverRegistry();
|
|
145
|
+
if (discoverResult.success && discoverResult.registry) {
|
|
146
|
+
const searchResult = searchPlugins(discoverResult.registry, {
|
|
147
|
+
query: 'plugin creator',
|
|
148
|
+
});
|
|
149
|
+
if (searchResult.plugins.length > 0) {
|
|
150
|
+
const plugin = searchResult.plugins[0];
|
|
151
|
+
logTest('Full workflow', true, `Discover → Search → Found "${plugin.displayName}" ready to download`);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
logTest('Full workflow', true, 'Discover → Search completed');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.error('Test error:', error);
|
|
160
|
+
logTest('Test suite', false, `Error: ${error}`);
|
|
161
|
+
}
|
|
162
|
+
// ==========================================================================
|
|
163
|
+
// SUMMARY
|
|
164
|
+
// ==========================================================================
|
|
165
|
+
console.log('');
|
|
166
|
+
console.log('═══════════════════════════════════════════════════════════');
|
|
167
|
+
console.log(' TEST SUMMARY ');
|
|
168
|
+
console.log('═══════════════════════════════════════════════════════════');
|
|
169
|
+
console.log('');
|
|
170
|
+
const passed = results.filter(r => r.passed).length;
|
|
171
|
+
const failed = results.filter(r => !r.passed).length;
|
|
172
|
+
const total = results.length;
|
|
173
|
+
console.log(` Total Tests: ${total}`);
|
|
174
|
+
console.log(` ✅ Passed: ${passed}`);
|
|
175
|
+
console.log(` ❌ Failed: ${failed}`);
|
|
176
|
+
console.log('');
|
|
177
|
+
if (failed === 0) {
|
|
178
|
+
console.log(' 🎉 All tests passed!');
|
|
179
|
+
console.log('');
|
|
180
|
+
console.log(' 📦 Plugin Store Features Verified:');
|
|
181
|
+
console.log(' - Registry discovery via IPNS');
|
|
182
|
+
console.log(' - Plugin search with filters');
|
|
183
|
+
console.log(' - Featured/Trending/Official listings');
|
|
184
|
+
console.log(' - Plugin Creator Pro available for download');
|
|
185
|
+
console.log('');
|
|
186
|
+
console.log(' 🔧 Plugin Creator Pro Commands:');
|
|
187
|
+
console.log(' - plugin-creator new Create new plugin');
|
|
188
|
+
console.log(' - plugin-creator template Use template');
|
|
189
|
+
console.log(' - plugin-creator validate Validate plugin');
|
|
190
|
+
console.log(' - plugin-creator test Run tests');
|
|
191
|
+
console.log(' - plugin-creator build Build plugin');
|
|
192
|
+
console.log(' - plugin-creator publish Publish to IPFS');
|
|
193
|
+
console.log(' - plugin-creator watch Hot-reload dev mode');
|
|
194
|
+
console.log('');
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
console.log(' ⚠️ Some tests failed. Please review the output above.');
|
|
198
|
+
}
|
|
199
|
+
process.exit(failed > 0 ? 1 : 0);
|
|
200
|
+
}
|
|
201
|
+
// Run tests
|
|
202
|
+
runTests().catch(error => {
|
|
203
|
+
console.error('Fatal error:', error);
|
|
204
|
+
process.exit(1);
|
|
205
|
+
});
|
|
206
|
+
//# sourceMappingURL=test-plugin-store.js.map
|
|
@@ -105,6 +105,11 @@ export class CircuitBreaker {
|
|
|
105
105
|
this.failures.push(now);
|
|
106
106
|
// Clean old failures outside window
|
|
107
107
|
this.failures = this.failures.filter(t => t > now - this.config.failureWindowMs);
|
|
108
|
+
// Hard cap: prevent unbounded growth under rapid-fire recordFailure() calls
|
|
109
|
+
// before the window filter prunes entries (e.g. clock skew or test hammering).
|
|
110
|
+
if (this.failures.length > 10_000) {
|
|
111
|
+
this.failures = this.failures.slice(-10_000);
|
|
112
|
+
}
|
|
108
113
|
// Check if we should open the circuit
|
|
109
114
|
if (this.state === 'closed' && this.failures.length >= this.config.failureThreshold) {
|
|
110
115
|
this.transitionTo('open');
|
|
@@ -214,17 +219,26 @@ export class CircuitBreaker {
|
|
|
214
219
|
// ============================================================================
|
|
215
220
|
const circuitBreakers = new Map();
|
|
216
221
|
const MAX_CIRCUIT_BREAKERS = 1000;
|
|
222
|
+
const MAX_CIRCUIT_BREAKER_NAME_LEN = 256;
|
|
223
|
+
const FORBIDDEN_CB_NAMES = new Set(['__proto__', 'constructor', 'prototype']);
|
|
217
224
|
/**
|
|
218
225
|
* Get or create a circuit breaker by name
|
|
219
226
|
*/
|
|
220
227
|
export function getCircuitBreaker(name, config) {
|
|
221
|
-
|
|
228
|
+
// Sanitize name: cap length and block prototype-pollution keys
|
|
229
|
+
const safeName = typeof name === 'string'
|
|
230
|
+
? name.slice(0, MAX_CIRCUIT_BREAKER_NAME_LEN)
|
|
231
|
+
: 'default';
|
|
232
|
+
if (FORBIDDEN_CB_NAMES.has(safeName)) {
|
|
233
|
+
throw new Error(`Invalid circuit breaker name: ${safeName}`);
|
|
234
|
+
}
|
|
235
|
+
if (!circuitBreakers.has(safeName)) {
|
|
222
236
|
if (circuitBreakers.size >= MAX_CIRCUIT_BREAKERS) {
|
|
223
237
|
throw new Error(`Circuit breaker registry full (max ${MAX_CIRCUIT_BREAKERS})`);
|
|
224
238
|
}
|
|
225
|
-
circuitBreakers.set(
|
|
239
|
+
circuitBreakers.set(safeName, new CircuitBreaker(config));
|
|
226
240
|
}
|
|
227
|
-
return circuitBreakers.get(
|
|
241
|
+
return circuitBreakers.get(safeName);
|
|
228
242
|
}
|
|
229
243
|
/**
|
|
230
244
|
* Get all circuit breaker stats
|
|
@@ -134,6 +134,9 @@ export class ErrorHandler {
|
|
|
134
134
|
return input;
|
|
135
135
|
if (_depth > 20)
|
|
136
136
|
return { '[MAX_DEPTH]': true };
|
|
137
|
+
// Primitives and null cannot be stored in a WeakSet — return them as-is.
|
|
138
|
+
if (input === null || typeof input !== 'object')
|
|
139
|
+
return input;
|
|
137
140
|
if (_seen.has(input))
|
|
138
141
|
return { '[CIRCULAR]': true };
|
|
139
142
|
_seen.add(input);
|
|
@@ -78,11 +78,25 @@ export class MonitoringHooks {
|
|
|
78
78
|
// Apply sampling
|
|
79
79
|
if (Math.random() > this.config.samplingRate)
|
|
80
80
|
return;
|
|
81
|
+
// Cap metric name and label keys/values to prevent DoS
|
|
82
|
+
const safeName = String(name).slice(0, 256);
|
|
83
|
+
const safeLabels = {};
|
|
84
|
+
let labelCount = 0;
|
|
85
|
+
for (const [k, v] of Object.entries(labels)) {
|
|
86
|
+
if (!Object.hasOwn(labels, k))
|
|
87
|
+
continue;
|
|
88
|
+
if (++labelCount > 20)
|
|
89
|
+
break;
|
|
90
|
+
// Block prototype pollution keys
|
|
91
|
+
if (k === '__proto__' || k === 'constructor' || k === 'prototype')
|
|
92
|
+
continue;
|
|
93
|
+
safeLabels[String(k).slice(0, 64)] = String(v).slice(0, 512);
|
|
94
|
+
}
|
|
81
95
|
const event = {
|
|
82
|
-
name,
|
|
96
|
+
name: safeName,
|
|
83
97
|
type,
|
|
84
98
|
value,
|
|
85
|
-
labels: { ...this.config.globalLabels, ...
|
|
99
|
+
labels: { ...this.config.globalLabels, ...safeLabels },
|
|
86
100
|
timestamp: Date.now(),
|
|
87
101
|
};
|
|
88
102
|
this.metrics.push(event);
|
|
@@ -131,7 +145,8 @@ export class MonitoringHooks {
|
|
|
131
145
|
* Register a health check
|
|
132
146
|
*/
|
|
133
147
|
registerHealthCheck(name, check) {
|
|
134
|
-
|
|
148
|
+
// Cap name length to prevent map-key inflation
|
|
149
|
+
this.healthChecks.set(String(name).slice(0, 128), check);
|
|
135
150
|
}
|
|
136
151
|
/**
|
|
137
152
|
* Run all health checks
|
|
@@ -285,6 +300,8 @@ export class MonitoringHooks {
|
|
|
285
300
|
// Private Methods
|
|
286
301
|
// ============================================================================
|
|
287
302
|
checkAlerts(name, value) {
|
|
303
|
+
if (!Object.hasOwn(this.config.alertThresholds, name))
|
|
304
|
+
return;
|
|
288
305
|
const thresholds = this.config.alertThresholds[name];
|
|
289
306
|
if (!thresholds)
|
|
290
307
|
return;
|