monomind 2.5.1 → 2.5.3
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/README.md +1 -1
- package/package.json +2 -1
- package/packages/@monomind/cli/.claude/agents/design/design-monodesign.md +6 -6
- package/packages/@monomind/cli/.claude/agents/github/repo-architect.md +3 -3
- package/packages/@monomind/cli/.claude/agents/github/sync-coordinator.md +2 -2
- package/packages/@monomind/cli/.claude/agents/specialists/integration-architect.md +4 -4
- package/packages/@monomind/cli/.claude/commands/github/repo-architect.md +4 -4
- package/packages/@monomind/cli/.claude/commands/github/sync-coordinator.md +2 -2
- package/packages/@monomind/cli/.claude/commands/mastermind/_repeat.md +4 -4
- package/packages/@monomind/cli/.claude/commands/mastermind/approvev1.md +4 -4
- package/packages/@monomind/cli/.claude/commands/mastermind/architect.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/autodev.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/brain.md +2 -2
- package/packages/@monomind/cli/.claude/commands/mastermind/build.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/code-review.md +2 -2
- package/packages/@monomind/cli/.claude/commands/mastermind/content.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/createorg.md +4 -4
- package/packages/@monomind/cli/.claude/commands/mastermind/createtask.md +3 -3
- package/packages/@monomind/cli/.claude/commands/mastermind/debug.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/design.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/do.md +2 -2
- package/packages/@monomind/cli/.claude/commands/mastermind/execute.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/finance.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/finish.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/idea.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/ideate.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/improve.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/marketing.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/master.md +54 -54
- package/packages/@monomind/cli/.claude/commands/mastermind/ops.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/orgs.md +2 -2
- package/packages/@monomind/cli/.claude/commands/mastermind/orgstatus.md +2 -2
- package/packages/@monomind/cli/.claude/commands/mastermind/plan.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/receive-review.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/release.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/research.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/review.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/runorg.md +4 -4
- package/packages/@monomind/cli/.claude/commands/mastermind/runorgv1.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/sales.md +6 -6
- package/packages/@monomind/cli/.claude/commands/mastermind/skill-builder.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/stoporg.md +3 -3
- package/packages/@monomind/cli/.claude/commands/mastermind/taskdev.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/tdd.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/techport.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/verify.md +5 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/worktree.md +5 -5
- package/packages/@monomind/cli/.claude/helpers/control-start.cjs +30 -0
- package/packages/@monomind/cli/.claude/helpers/event-logger.cjs +2 -2
- package/packages/@monomind/cli/.claude/helpers/extras-registry.json +1 -1
- package/packages/@monomind/cli/.claude/helpers/handlers/agent-start-handler.cjs +2 -2
- package/packages/@monomind/cli/.claude/helpers/handlers/edit-handler.cjs +2 -2
- package/packages/@monomind/cli/.claude/helpers/handlers/gates-handler.cjs +1 -1
- package/packages/@monomind/cli/.claude/helpers/handlers/route-handler.cjs +1 -1
- package/packages/@monomind/cli/.claude/helpers/handlers/session-handler.cjs +1 -1
- package/packages/@monomind/cli/.claude/helpers/handlers/session-restore-handler.cjs +11 -11
- package/packages/@monomind/cli/.claude/helpers/handlers/task-handler.cjs +2 -2
- package/packages/@monomind/cli/.claude/helpers/hook-handler.cjs +8 -8
- package/packages/@monomind/cli/.claude/helpers/utils/monograph.cjs +44 -12
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/access.md → mastermind-access/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/activity.md → mastermind-activity/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/adapter-manager.md → mastermind-adapter-manager/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/adapters.md → mastermind-adapters/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/agent-detail.md → mastermind-agent-detail/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/agents.md → mastermind-agents/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/approval-detail.md → mastermind-approval-detail/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/approvev1.md → mastermind-approvev1/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/architect.md → mastermind-architect/SKILL.md} +7 -7
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/autodev.md → mastermind-autodev/SKILL.md} +10 -10
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/backup.md → mastermind-backup/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/bootstrap.md → mastermind-bootstrap/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/budgets.md → mastermind-budgets/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/build.md → mastermind-build/SKILL.md} +5 -5
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/companies.md → mastermind-companies/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/content.md → mastermind-content/SKILL.md} +5 -5
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/costs.md → mastermind-costs/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/createorg.md → mastermind-createorg/SKILL.md} +3 -3
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/debug.md → mastermind-debug/SKILL.md} +4 -4
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_delegation.md → mastermind-delegation/SKILL.md} +1 -1
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/design.md → mastermind-design/SKILL.md} +9 -9
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/diagnose.md → mastermind-diagnose/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/env.md → mastermind-env/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/environments.md → mastermind-environments/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/execute.md → mastermind-execute/SKILL.md} +10 -10
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/export.md → mastermind-export/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/finance.md → mastermind-finance/SKILL.md} +5 -5
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/goal-detail.md → mastermind-goal-detail/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/goals.md → mastermind-goals/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/heartbeatv1.md → mastermind-heartbeatv1/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/idea.md → mastermind-idea/SKILL.md} +7 -7
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/import.md → mastermind-import/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/inbox.md → mastermind-inbox/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/instance.md → mastermind-instance/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/instance-settings.md → mastermind-instance-settings/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/invite-landing.md → mastermind-invite-landing/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/invites.md → mastermind-invites/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/issue-detail.md → mastermind-issue-detail/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/issues.md → mastermind-issues/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/join-queue.md → mastermind-join-queue/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/liveness.md → mastermind-liveness/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/marketing.md → mastermind-marketing/SKILL.md} +8 -8
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/memory.md → mastermind-memory/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/monitor.md → mastermind-monitor/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/my-issues.md → mastermind-my-issues/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/new-agent.md → mastermind-new-agent/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/ops.md → mastermind-ops/SKILL.md} +5 -5
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/org-chart.md → mastermind-org-chart/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/org-settings.md → mastermind-org-settings/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/orgs.md → mastermind-orgs/SKILL.md} +1 -1
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/orgstatus.md → mastermind-orgstatus/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plan.md → mastermind-plan/SKILL.md} +7 -7
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plan-to-tasks.md → mastermind-plan-to-tasks/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plugin-manager.md → mastermind-plugin-manager/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plugin-settings.md → mastermind-plugin-settings/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plugins.md → mastermind-plugins/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/profile.md → mastermind-profile/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/project-detail.md → mastermind-project-detail/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/project-workspace.md → mastermind-project-workspace/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/projects.md → mastermind-projects/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_protocol.md → mastermind-protocol/SKILL.md} +3 -3
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/release.md → mastermind-release/SKILL.md} +5 -5
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_repeat.md → mastermind-repeat/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/research.md → mastermind-research/SKILL.md} +5 -5
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/review.md → mastermind-review/SKILL.md} +5 -5
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/routine-detail.md → mastermind-routine-detail/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/routines.md → mastermind-routines/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/runorgv1.md → mastermind-runorgv1/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/sales.md → mastermind-sales/SKILL.md} +5 -5
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/search.md → mastermind-search/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/secrets.md → mastermind-secrets/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/skill-builder.md → mastermind-skill-builder/SKILL.md} +16 -14
- package/packages/@monomind/cli/.claude/skills/mastermind-skills/{skills.md → SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/stoporg.md → mastermind-stoporg/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/taskdev.md → mastermind-taskdev/SKILL.md} +6 -6
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/implementer-prompt.md +1 -1
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/tasks.md → mastermind-tasks/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/tdd.md → mastermind-tdd/SKILL.md} +4 -4
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/techport.md → mastermind-techport/SKILL.md} +6 -6
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/threads.md → mastermind-threads/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/tree-control.md → mastermind-tree-control/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/verify.md → mastermind-verify/SKILL.md} +1 -1
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/wiki.md → mastermind-wiki/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/workspace-detail.md → mastermind-workspace-detail/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/{mastermind-skills/workspaces.md → mastermind-workspaces/SKILL.md} +2 -2
- package/packages/@monomind/cli/.claude/skills/monodesign/SKILL.md +114 -190
- package/packages/@monomind/cli/.claude/skills/monodesign/adapt.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/agents/monodesign-asset-producer.md +4 -4
- package/packages/@monomind/cli/.claude/skills/monodesign/agents/monodesign-manual-edit-applier.md +103 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/audit.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/craft.md +2 -2
- package/packages/@monomind/cli/.claude/skills/monodesign/critique.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/init.md +30 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/layout.md +36 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/live.md +19 -44
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/adapt.md +122 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/adapt.native.md +58 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/android.md +40 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/animate.md +39 -11
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/antipatterns-catalog.md +67 -16
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/audit.md +5 -3
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/audit.native.md +139 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/bolder.md +71 -64
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/brand.md +12 -18
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/clarify.md +114 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/codex.md +4 -6
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/colorize.md +108 -5
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/craft.md +70 -143
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/critique.md +635 -68
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/delight.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/distill.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/document.md +24 -22
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/extract.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/hooks.md +22 -29
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/init.md +221 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/interaction-design.md +0 -6
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/ios.md +45 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/layout.md +57 -13
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/live.md +159 -71
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/overdrive.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/personas.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/polish.md +16 -8
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/pre-delivery-checklist.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/product.md +1 -3
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/quieter.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/shape.md +27 -13
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/teach.md +6 -152
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/typeset.md +180 -3
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/command-metadata.json +94 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context-signals.mjs +260 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context.mjs +1061 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/critique-storage.mjs +416 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect-csp.mjs +198 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect.mjs +33 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +1962 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/cli/main.mjs +321 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/design-system.mjs +814 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +5601 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns.mjs +50 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/detect-url.mjs +259 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +258 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +636 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +1015 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +253 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/visual/screenshot-contrast.mjs +198 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/findings.mjs +12 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/fix/css-regions.mjs +181 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/fix/fixers.mjs +373 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/fix/index.mjs +426 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +198 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/profile/profiler.mjs +166 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +563 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +2995 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/color.mjs +124 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +101 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/fonts.mjs +30 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +148 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/page.mjs +7 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-admin.mjs +661 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-before-edit.mjs +516 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-lib.mjs +1776 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook.mjs +61 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/design-parser.mjs +842 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/is-generated.mjs +69 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +640 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +129 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/provider.mjs +4 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/target-args.mjs +42 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/browser-script-parts.mjs +50 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/completion.mjs +19 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/event-validation.mjs +137 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/insert-ui.mjs +458 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-apply.mjs +939 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edit-routes.mjs +357 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +152 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/session-store.mjs +293 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/svelte-component.mjs +826 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +274 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/ui-core.mjs +180 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/vocabulary.mjs +36 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-accept.mjs +812 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-dom.js +146 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-session.js +123 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser.js +11240 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +1241 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-complete.mjs +75 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +683 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +51 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-inject.mjs +583 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-insert.mjs +272 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +363 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-poll.mjs +384 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-resume.mjs +94 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-server.mjs +1137 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-status.mjs +61 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-target.mjs +30 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-wrap.mjs +894 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live.mjs +297 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/modern-screenshot.umd.js +14 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/palette.mjs +633 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/pin.mjs +221 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/teach.md +7 -58
- package/packages/@monomind/cli/README.md +1 -1
- package/packages/@monomind/cli/dist/src/commands/design-detect.d.ts +7 -1
- package/packages/@monomind/cli/dist/src/commands/design-detect.js +131 -38
- package/packages/@monomind/cli/dist/src/commands/design-palette.d.ts +0 -1
- package/packages/@monomind/cli/dist/src/commands/design-palette.js +2 -3
- package/packages/@monomind/cli/dist/src/commands/doc.js +72 -15
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +5 -1
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +24 -1
- package/packages/@monomind/cli/dist/src/commands/doctor.js +3 -3
- package/packages/@monomind/cli/dist/src/commands/hooks-workers.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/hooks-workers.js +8 -8
- package/packages/@monomind/cli/dist/src/commands/init.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/org.js +109 -9
- package/packages/@monomind/cli/dist/src/index.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/index.js +3 -3
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +5 -5
- package/packages/@monomind/cli/dist/src/init/executor.js +17 -6
- package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.d.ts +2 -0
- package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +4 -1
- package/packages/@monomind/cli/dist/src/mcp-server.js +2 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.js +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.js +2 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/knowledge-tools.js +38 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.d.ts +8 -3
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +193 -31
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +33 -0
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +166 -17
- package/packages/@monomind/cli/dist/src/memory/memory-kg.d.ts +186 -0
- package/packages/@monomind/cli/dist/src/memory/memory-kg.js +450 -0
- package/packages/@monomind/cli/dist/src/memory/query-router.d.ts +44 -0
- package/packages/@monomind/cli/dist/src/memory/query-router.js +113 -0
- package/packages/@monomind/cli/dist/src/orgrt/daemon.d.ts +18 -0
- package/packages/@monomind/cli/dist/src/orgrt/daemon.js +249 -12
- package/packages/@monomind/cli/dist/src/orgrt/migrate.js +7 -0
- package/packages/@monomind/cli/dist/src/orgrt/policy.js +7 -0
- package/packages/@monomind/cli/dist/src/orgrt/session.d.ts +24 -1
- package/packages/@monomind/cli/dist/src/orgrt/session.js +18 -3
- package/packages/@monomind/cli/dist/src/orgrt/templates.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/orgrt/templates.js +9 -4
- package/packages/@monomind/cli/dist/src/orgrt/types.d.ts +15 -0
- package/packages/@monomind/cli/dist/src/orgrt/types.js +2 -0
- package/packages/@monomind/cli/dist/src/routing/embed-worker.js +1 -1
- package/packages/@monomind/cli/dist/src/routing/llm-caller.js +1 -1
- package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +1 -1
- package/packages/@monomind/cli/dist/src/ui/dashboard.html +176 -26
- package/packages/@monomind/cli/dist/src/ui/orgs.html +24 -0
- package/packages/@monomind/cli/dist/src/ui/server.mjs +162 -12
- package/packages/@monomind/cli/dist/src/update/checker.js +3 -3
- package/packages/@monomind/cli/package.json +8 -6
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_agent-select.md → mastermind-agent-select/SKILL.md} +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/finish.md → mastermind-finish/SKILL.md} +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_intake.md → mastermind-intake/SKILL.md} +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-marketing}/references/copywriting-frameworks.md +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-marketing}/references/persuasion-psychology.md +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/monotask.md → mastermind-monotask/SKILL.md} +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/receive-review.md → mastermind-receive-review/SKILL.md} +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/runorg.md → mastermind-runorg/SKILL.md} +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/code-quality-reviewer-prompt.md +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/final-reviewer-prompt.md +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/spec-reviewer-prompt.md +0 -0
- /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/worktree.md → mastermind-worktree/SKILL.md} +0 -0
|
@@ -88,6 +88,7 @@ const searchDocCommand = {
|
|
|
88
88
|
{ name: 'scope', short: 's', description: 'Knowledge scope (default: shared)', type: 'string', default: 'shared' },
|
|
89
89
|
{ name: 'min-score', description: 'Minimum similarity (default: 0.3)', type: 'number', default: 0.3 },
|
|
90
90
|
{ name: 'store', description: 'Which store(s): project | global | all (default: all — project results win ties)', type: 'string', default: 'all' },
|
|
91
|
+
{ name: 'surfaces', description: "Override routing: comma list of chunks,kg,rules,memory (default: rule-based router picks)", type: 'string' },
|
|
91
92
|
],
|
|
92
93
|
examples: [
|
|
93
94
|
{ command: 'monomind doc search -q "authentication flow"', description: 'Search project + global brain' },
|
|
@@ -100,28 +101,84 @@ const searchDocCommand = {
|
|
|
100
101
|
return { success: false, exitCode: 1 };
|
|
101
102
|
}
|
|
102
103
|
const { searchKnowledge } = await import('../knowledge/document-pipeline.js');
|
|
104
|
+
const { routeQuery, rrfFuse, recordRouteOverride } = await import('../memory/query-router.js');
|
|
103
105
|
const storeFlag = String(ctx.flags.store || 'all');
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
106
|
+
const limit = Number(ctx.flags.limit || 10);
|
|
107
|
+
// Same surface routing as the MCP knowledge_search tool and the warm
|
|
108
|
+
// /api/knowledge/search endpoint: the rule-based router picks which
|
|
109
|
+
// retrieval surfaces to spend queries on; --surfaces overrides it.
|
|
110
|
+
const route = routeQuery(query);
|
|
111
|
+
const VALID_SURFACES = ['chunks', 'kg', 'rules', 'memory'];
|
|
112
|
+
const rawSurfaces = String(ctx.flags.surfaces || '').split(',').map(s => s.trim()).filter(Boolean);
|
|
113
|
+
const requested = rawSurfaces.filter(s => VALID_SURFACES.includes(s));
|
|
114
|
+
const invalidSurfaces = rawSurfaces.filter(s => !VALID_SURFACES.includes(s));
|
|
115
|
+
if (invalidSurfaces.length) {
|
|
116
|
+
output.writeln(output.dim(`ignoring unknown surface(s): ${invalidSurfaces.join(',')} (valid: ${VALID_SURFACES.join(',')})`));
|
|
117
|
+
}
|
|
118
|
+
const surfaces = requested.length
|
|
119
|
+
? requested
|
|
120
|
+
: (route.confident ? route.surfaces : ['chunks', ...route.surfaces.filter(s => s !== 'chunks')]);
|
|
121
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
122
|
+
const kg = await import('../memory/memory-kg.js');
|
|
123
|
+
const [excerpts, graph, rules, memories] = await Promise.all([
|
|
124
|
+
surfaces.includes('chunks')
|
|
125
|
+
? searchKnowledge(query, {
|
|
126
|
+
scope: String(ctx.flags.scope || 'shared'),
|
|
127
|
+
limit,
|
|
128
|
+
minScore: Number(ctx.flags['min-score'] || 0.3),
|
|
129
|
+
store: storeFlag === 'project' || storeFlag === 'global' ? storeFlag : 'all',
|
|
130
|
+
})
|
|
131
|
+
: [],
|
|
132
|
+
surfaces.includes('kg') ? kg.kgSearch({ query, limit: 6 }).catch(() => null) : null,
|
|
133
|
+
surfaces.includes('rules') ? bridge.bridgeSearchEntries({ query, namespace: 'rules', limit: 3, threshold: 0.35 }).catch(() => null) : null,
|
|
134
|
+
surfaces.includes('memory') ? bridge.bridgeSearchEntries({ query, namespace: 'patterns', limit: 3 }).catch(() => null) : null,
|
|
135
|
+
]);
|
|
136
|
+
// Confident non-chunk routing against an empty surface (e.g. a project
|
|
137
|
+
// with no KG yet) must not read as "no knowledge" — fall back to chunks.
|
|
138
|
+
let fellBack = false;
|
|
139
|
+
let chunkExcerpts = excerpts;
|
|
140
|
+
if (!requested.length && !chunkExcerpts.length && !(graph?.triplets?.length) && !(rules?.results?.length) && !(memories?.results?.length) && !surfaces.includes('chunks')) {
|
|
141
|
+
fellBack = true;
|
|
142
|
+
recordRouteOverride(surfaces[0], 'chunks');
|
|
143
|
+
chunkExcerpts = await searchKnowledge(query, {
|
|
144
|
+
scope: String(ctx.flags.scope || 'shared'),
|
|
145
|
+
limit,
|
|
146
|
+
minScore: Number(ctx.flags['min-score'] || 0.3),
|
|
147
|
+
store: storeFlag === 'project' || storeFlag === 'global' ? storeFlag : 'all',
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
const fused = rrfFuse([
|
|
151
|
+
chunkExcerpts.map(e => ({ id: e.id || `${e.filePath}#${e.chunkIndex}`, kind: 'excerpt', ...e })),
|
|
152
|
+
(graph?.triplets ?? []).map((t, i) => ({ id: `kg:${i}:${t.source}|${t.relation}|${t.target}`, kind: 'triplet', ...t })),
|
|
153
|
+
(rules?.results ?? []).map(r => ({ id: r.id, kind: 'rule', key: r.key, text: r.content, score: r.score, importance: 0.7 })),
|
|
154
|
+
(memories?.results ?? []).map(r => ({ id: r.id, kind: 'memory', key: r.key, text: r.content, score: r.score })),
|
|
155
|
+
], limit);
|
|
156
|
+
if (!fused.length) {
|
|
111
157
|
output.writeln(output.dim('No results found.'));
|
|
112
158
|
return { success: true, data: [] };
|
|
113
159
|
}
|
|
114
|
-
output.writeln(output.bold(`${
|
|
160
|
+
output.writeln(output.bold(`${fused.length} results ${output.dim(`(surfaces: ${fellBack ? surfaces.join(',') + ' → chunks fallback' : surfaces.join(',')})`)}:`));
|
|
115
161
|
output.writeln();
|
|
116
|
-
for (let i = 0; i <
|
|
117
|
-
const
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
162
|
+
for (let i = 0; i < fused.length; i++) {
|
|
163
|
+
const r = fused[i];
|
|
164
|
+
const n = output.highlight(`${i + 1}.`);
|
|
165
|
+
if (r.kind === 'triplet') {
|
|
166
|
+
const fact = r.fact && r.fact !== `${r.source} ${r.relation} ${r.target}` ? ` ${output.dim(`(${String(r.fact).slice(0, 160)})`)}` : '';
|
|
167
|
+
output.writeln(`${n} ${output.dim('[kg]')} ${r.source} —${r.relation}→ ${r.target}${fact}`);
|
|
168
|
+
}
|
|
169
|
+
else if (r.kind === 'rule' || r.kind === 'memory') {
|
|
170
|
+
output.writeln(`${n} ${output.dim(`[${r.kind}]`)} ${String(r.text || '').replace(/\s+/g, ' ').slice(0, 200)}`);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
const origin = r.scope === 'global' ? ` ${output.dim('[global]')}` : '';
|
|
174
|
+
const sim = typeof r.similarity === 'number' ? `(${r.similarity.toFixed(3)}) ` : '';
|
|
175
|
+
output.writeln(`${n} ${output.dim(sim)}${r.filePath || 'unknown'}${origin}`);
|
|
176
|
+
const text = String(r.text || '');
|
|
177
|
+
output.writeln(` ${output.dim(text.length > 200 ? text.slice(0, 200) + '...' : text)}`);
|
|
178
|
+
}
|
|
122
179
|
output.writeln();
|
|
123
180
|
}
|
|
124
|
-
return { success: true, data:
|
|
181
|
+
return { success: true, data: fused };
|
|
125
182
|
},
|
|
126
183
|
};
|
|
127
184
|
const listDocCommand = {
|
|
@@ -6,6 +6,10 @@ import type { HealthCheck } from './doctor-env-checks.js';
|
|
|
6
6
|
export type { HealthCheck };
|
|
7
7
|
export declare function checkConfigFile(): Promise<HealthCheck>;
|
|
8
8
|
export declare function checkMemoryDatabase(): Promise<HealthCheck>;
|
|
9
|
+
/** Memory knowledge graph (cognee port): entities/relations/rules distilled
|
|
10
|
+
* from sessions and org runs. Informational — an empty graph on a fresh
|
|
11
|
+
* project is normal, so it never fails. */
|
|
12
|
+
export declare function checkMemoryKnowledgeGraph(): Promise<HealthCheck>;
|
|
9
13
|
/** Second Brain: when this project has an indexed knowledge base, semantic
|
|
10
14
|
* search needs the local embedding model. Its absence is silent (search
|
|
11
15
|
* degrades to keyword matching) — surface it here instead. */
|
|
@@ -22,7 +26,7 @@ export declare function checkGitignoreCoverage(): Promise<HealthCheck>;
|
|
|
22
26
|
export declare function checkAgentRegistry(): Promise<HealthCheck>;
|
|
23
27
|
export declare function checkGuidanceGates(): Promise<HealthCheck>;
|
|
24
28
|
/**
|
|
25
|
-
* Worker metrics freshness — reports the age of the @
|
|
29
|
+
* Worker metrics freshness — reports the age of the @monoes/hooks worker
|
|
26
30
|
* output files (written at session start with a 6h staleness gate, or on
|
|
27
31
|
* demand via `monomind hooks worker run <name>`), so missing/stale worker
|
|
28
32
|
* output is visible without digging through .monomind/metrics.
|
|
@@ -44,6 +44,29 @@ export async function checkMemoryDatabase() {
|
|
|
44
44
|
}
|
|
45
45
|
return { name: 'Memory Database', status: 'warn', message: 'Not initialized', fix: 'monomind memory configure --backend hybrid' };
|
|
46
46
|
}
|
|
47
|
+
/** Memory knowledge graph (cognee port): entities/relations/rules distilled
|
|
48
|
+
* from sessions and org runs. Informational — an empty graph on a fresh
|
|
49
|
+
* project is normal, so it never fails. */
|
|
50
|
+
export async function checkMemoryKnowledgeGraph() {
|
|
51
|
+
const name = 'Memory Knowledge Graph';
|
|
52
|
+
try {
|
|
53
|
+
const kg = await import('../memory/memory-kg.js');
|
|
54
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
55
|
+
const project = await kg.kgStats();
|
|
56
|
+
const orgDb = join(process.cwd(), '.monomind', 'org-memory');
|
|
57
|
+
const org = existsSync(orgDb) ? await kg.kgStats({ dbPath: orgDb }) : null;
|
|
58
|
+
await bridge.shutdownBridge().catch(() => { });
|
|
59
|
+
const total = project.nodes + (org?.nodes ?? 0);
|
|
60
|
+
const fmt = (s) => `${s.nodes}n/${s.edges}e/${s.rules}r`;
|
|
61
|
+
if (total === 0) {
|
|
62
|
+
return { name, status: 'warn', message: 'Empty — sessions/org runs have not distilled knowledge yet', fix: 'org runs call org_learn automatically; sessions use memory_kg_ingest' };
|
|
63
|
+
}
|
|
64
|
+
return { name, status: 'pass', message: `project ${fmt(project)}${org ? ` · org ${fmt(org)}` : ''}` };
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
return { name, status: 'warn', message: `Check failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
47
70
|
/** Second Brain: when this project has an indexed knowledge base, semantic
|
|
48
71
|
* search needs the local embedding model. Its absence is silent (search
|
|
49
72
|
* degrades to keyword matching) — surface it here instead. */
|
|
@@ -563,7 +586,7 @@ function readMetricsJSON(name) {
|
|
|
563
586
|
}
|
|
564
587
|
}
|
|
565
588
|
/**
|
|
566
|
-
* Worker metrics freshness — reports the age of the @
|
|
589
|
+
* Worker metrics freshness — reports the age of the @monoes/hooks worker
|
|
567
590
|
* output files (written at session start with a 6h staleness gate, or on
|
|
568
591
|
* demand via `monomind hooks worker run <name>`), so missing/stale worker
|
|
569
592
|
* output is visible without digging through .monomind/metrics.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import { output } from '../output.js';
|
|
9
9
|
import { checkNodeVersion, checkNpmVersion, checkGit, checkGitRepo, checkDiskSpace, checkBuildTools, checkVersionFreshness, checkClaudeCode, installClaudeCode, } from './doctor-env-checks.js';
|
|
10
|
-
import { checkConfigFile, checkMemoryDatabase, checkApiKeys, checkMcpServers, checkMonograph, checkMonographFreshness, checkMonoesMemory, checkHelpersFresh, fixStaleHelpers, checkMonoesIntegration, checkGuidanceGates, checkGitignoreCoverage, checkAgentRegistry, checkMemoryProficiency, checkMetricsFreshness, checkSecurityAuditFindings, checkSecondBrainModel, } from './doctor-project-checks.js';
|
|
10
|
+
import { checkConfigFile, checkMemoryDatabase, checkApiKeys, checkMcpServers, checkMonograph, checkMonographFreshness, checkMonoesMemory, checkHelpersFresh, fixStaleHelpers, checkMonoesIntegration, checkGuidanceGates, checkGitignoreCoverage, checkAgentRegistry, checkMemoryProficiency, checkMetricsFreshness, checkSecurityAuditFindings, checkSecondBrainModel, checkMemoryKnowledgeGraph, } from './doctor-project-checks.js';
|
|
11
11
|
import { checkMonoesTools, fixMonoesTools } from './doctor-monoes-checks.js';
|
|
12
12
|
function formatCheck(check) {
|
|
13
13
|
const icon = check.status === 'pass' ? output.success('✓') :
|
|
@@ -65,7 +65,7 @@ export const doctorCommand = {
|
|
|
65
65
|
checkMonograph, checkMonoesMemory, checkHelpersFresh, checkMonoesIntegration,
|
|
66
66
|
checkGuidanceGates, checkAgentRegistry, checkGit, checkApiKeys,
|
|
67
67
|
checkMemoryProficiency, checkMetricsFreshness, checkSecurityAuditFindings,
|
|
68
|
-
checkSecondBrainModel,
|
|
68
|
+
checkSecondBrainModel, checkMemoryKnowledgeGraph,
|
|
69
69
|
];
|
|
70
70
|
const codeOnlyChecks = [
|
|
71
71
|
checkGitRepo, checkMcpServers,
|
|
@@ -79,7 +79,7 @@ export const doctorCommand = {
|
|
|
79
79
|
node: checkNodeVersion, npm: checkNpmVersion, claude: checkClaudeCode,
|
|
80
80
|
config: checkConfigFile, memory: checkMemoryDatabase,
|
|
81
81
|
api: checkApiKeys, git: checkGit, mcp: checkMcpServers, disk: checkDiskSpace,
|
|
82
|
-
'second-brain': checkSecondBrainModel,
|
|
82
|
+
'second-brain': checkSecondBrainModel, kg: checkMemoryKnowledgeGraph,
|
|
83
83
|
typescript: checkBuildTools, monograph: checkMonograph,
|
|
84
84
|
'graph-freshness': checkMonographFreshness, 'memory-pkg': checkMonoesMemory,
|
|
85
85
|
helpers: checkHelpersFresh, monoes: checkMonoesIntegration,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hooks Worker Commands
|
|
3
|
-
* Background worker management (@
|
|
3
|
+
* Background worker management (@monoes/hooks workers) + Intelligence command
|
|
4
4
|
* Extracted from hooks.ts to reduce file size.
|
|
5
5
|
*/
|
|
6
6
|
import type { Command } from '../types.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hooks Worker Commands
|
|
3
|
-
* Background worker management (@
|
|
3
|
+
* Background worker management (@monoes/hooks workers) + Intelligence command
|
|
4
4
|
* Extracted from hooks.ts to reduce file size.
|
|
5
5
|
*/
|
|
6
6
|
import { output } from '../output.js';
|
|
@@ -414,21 +414,21 @@ export const intelligenceCommand = {
|
|
|
414
414
|
}
|
|
415
415
|
};
|
|
416
416
|
// =============================================================================
|
|
417
|
-
// Worker Commands (@
|
|
417
|
+
// Worker Commands (@monoes/hooks WorkerManager)
|
|
418
418
|
// =============================================================================
|
|
419
419
|
// The old worker subcommands (dispatch/status/detect/cancel) dispatched to a
|
|
420
420
|
// simulated in-memory tracker that fronted the deleted worker daemon. The
|
|
421
|
-
// surviving commands run the real @
|
|
421
|
+
// surviving commands run the real @monoes/hooks workers in-process.
|
|
422
422
|
const workerListCommand = {
|
|
423
423
|
name: 'list',
|
|
424
|
-
description: 'List all @
|
|
424
|
+
description: 'List all @monoes/hooks background workers',
|
|
425
425
|
options: [],
|
|
426
426
|
examples: [
|
|
427
427
|
{ command: 'monomind hooks worker list', description: 'List all workers' },
|
|
428
428
|
],
|
|
429
429
|
action: async () => {
|
|
430
430
|
try {
|
|
431
|
-
const hooks = await import('@
|
|
431
|
+
const hooks = await import('@monoes/hooks');
|
|
432
432
|
const workers = Object.values(hooks.WORKER_CONFIGS).map(w => ({
|
|
433
433
|
name: w.name,
|
|
434
434
|
description: w.description,
|
|
@@ -478,7 +478,7 @@ const workerRunCommand = {
|
|
|
478
478
|
const spinner = output.createSpinner({ text: `Running ${name} worker...`, spinner: 'dots' });
|
|
479
479
|
spinner.start();
|
|
480
480
|
try {
|
|
481
|
-
const hooks = await import('@
|
|
481
|
+
const hooks = await import('@monoes/hooks');
|
|
482
482
|
if (!hooks.WORKER_CONFIGS[name]) {
|
|
483
483
|
spinner.fail(`Unknown worker: ${name}`);
|
|
484
484
|
output.writeln(`Available workers: ${Object.keys(hooks.WORKER_CONFIGS).join(', ')}`);
|
|
@@ -516,7 +516,7 @@ const workerRunCommand = {
|
|
|
516
516
|
// Worker parent command
|
|
517
517
|
export const workerCommand = {
|
|
518
518
|
name: 'worker',
|
|
519
|
-
description: 'Background worker management (@
|
|
519
|
+
description: 'Background worker management (@monoes/hooks workers, run in-process)',
|
|
520
520
|
subcommands: [
|
|
521
521
|
workerListCommand,
|
|
522
522
|
workerRunCommand,
|
|
@@ -528,7 +528,7 @@ export const workerCommand = {
|
|
|
528
528
|
],
|
|
529
529
|
action: async () => {
|
|
530
530
|
output.writeln();
|
|
531
|
-
output.writeln(output.bold('Background Worker System (@
|
|
531
|
+
output.writeln(output.bold('Background Worker System (@monoes/hooks)'));
|
|
532
532
|
output.writeln();
|
|
533
533
|
output.writeln('Workers run in-process and write their results to .monomind/metrics/.');
|
|
534
534
|
output.writeln('The metrics-producing workers (ddd, map, audit, optimize, consolidate)');
|
|
@@ -215,7 +215,7 @@ const initAction = async (ctx) => {
|
|
|
215
215
|
// Audit" as unconfigured, even though nothing is actually broken.
|
|
216
216
|
try {
|
|
217
217
|
output.writeln(output.dim(' Seeding worker metrics...'));
|
|
218
|
-
const hooksMod = await import('@
|
|
218
|
+
const hooksMod = await import('@monoes/hooks').catch(() => null);
|
|
219
219
|
if (hooksMod && hooksMod.createWorkerManager) {
|
|
220
220
|
const manager = hooksMod.createWorkerManager(ctx.cwd);
|
|
221
221
|
await manager.ensureMetricsDir();
|
|
@@ -236,7 +236,7 @@ const initAction = async (ctx) => {
|
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
238
|
else {
|
|
239
|
-
output.writeln(output.dim(' Worker metrics seeding skipped (@
|
|
239
|
+
output.writeln(output.dim(' Worker metrics seeding skipped (@monoes/hooks unavailable)'));
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
242
|
catch (e) {
|
|
@@ -73,10 +73,21 @@ const runAction = async (ctx) => {
|
|
|
73
73
|
const { buildRolePrompt } = await import('../orgrt/session.js');
|
|
74
74
|
const roster = def.roles.map(r => r.id);
|
|
75
75
|
const perRole = Math.floor((def.run_config.budget_tokens ?? 1_000_000) / def.roles.length);
|
|
76
|
+
// Same KG entity glossary the live daemon injects — the preview must
|
|
77
|
+
// match what sessions actually receive.
|
|
78
|
+
const glossary = await (async () => {
|
|
79
|
+
try {
|
|
80
|
+
const kg = await import('../memory/memory-kg.js');
|
|
81
|
+
return await kg.kgGlossary({ dbPath: join(process.cwd(), '.monomind', 'org-memory') });
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
})();
|
|
76
87
|
log(output.info(`DRY RUN — org ${name}: ${def.roles.length} roles, ${perRole} tokens each, goal: ${taskFlag ?? def.goal}`));
|
|
77
88
|
for (const role of def.roles) {
|
|
78
89
|
log(output.info(`\n─── ${role.id} (${role.title || role.type})${role.adapter_config?.model ? ` [${role.adapter_config.model}]` : ''} ───`));
|
|
79
|
-
log(buildRolePrompt(role, { name: def.name, goal: taskFlag ?? def.goal }, roster));
|
|
90
|
+
log(buildRolePrompt(role, { name: def.name, goal: taskFlag ?? def.goal }, roster, glossary));
|
|
80
91
|
}
|
|
81
92
|
return { success: true, message: 'dry run complete — no sessions started' };
|
|
82
93
|
}
|
|
@@ -107,15 +118,20 @@ const runAction = async (ctx) => {
|
|
|
107
118
|
return { success: false, message: 'org start failed' };
|
|
108
119
|
}
|
|
109
120
|
log(output.info(`org ${name} running (${running.def.roles.length} agents, run ${running.run}) — Ctrl-C or "monomind org stop ${name}" to stop`));
|
|
110
|
-
// stopfile poll lets `org stop` work from another terminal;
|
|
111
|
-
//
|
|
121
|
+
// stopfile poll lets `org stop` work from another terminal; the daemon can
|
|
122
|
+
// also stop the org itself (boss called org_complete, or the idle watchdog
|
|
123
|
+
// fired) — detect that via getOrg() so the CLI exits instead of polling a
|
|
124
|
+
// stopfile forever after a finished run. Clear any stale stopfile from a
|
|
125
|
+
// previous run before polling.
|
|
112
126
|
clearStopfile(ctx.cwd, name);
|
|
113
127
|
const stopfile = join(ctx.cwd, ORG_DIR, name, 'stop');
|
|
114
128
|
await new Promise(resolvePromise => {
|
|
115
|
-
const iv = setInterval(() => {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
129
|
+
const iv = setInterval(() => {
|
|
130
|
+
if (existsSync(stopfile) || !daemon.getOrg(name)) {
|
|
131
|
+
clearInterval(iv);
|
|
132
|
+
resolvePromise();
|
|
133
|
+
}
|
|
134
|
+
}, 2000);
|
|
119
135
|
process.once('SIGINT', () => { clearInterval(iv); resolvePromise(); });
|
|
120
136
|
process.once('SIGTERM', () => { clearInterval(iv); resolvePromise(); });
|
|
121
137
|
});
|
|
@@ -291,7 +307,18 @@ const listAction = async (ctx) => {
|
|
|
291
307
|
const sched = def.schedule ? `every ${def.schedule}` : 'manual';
|
|
292
308
|
let status = 'never run';
|
|
293
309
|
try {
|
|
294
|
-
|
|
310
|
+
const rt = JSON.parse(readFileSync(join(orgsDir, stem, 'runtime.json'), 'utf8'));
|
|
311
|
+
status = rt.status ?? status;
|
|
312
|
+
// Same liveness rule as `org status`: a 'running' record with a dead
|
|
313
|
+
// pid is a crashed daemon, not a running org — list must not disagree.
|
|
314
|
+
if (status === 'running' && rt.pid) {
|
|
315
|
+
try {
|
|
316
|
+
process.kill(rt.pid, 0);
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
status = 'crashed';
|
|
320
|
+
}
|
|
321
|
+
}
|
|
295
322
|
}
|
|
296
323
|
catch { /* no runtime state yet */ }
|
|
297
324
|
const goal = typeof def.goal === 'string' && def.goal
|
|
@@ -381,7 +408,16 @@ const markCompleteAction = async (ctx) => {
|
|
|
381
408
|
}
|
|
382
409
|
catch { /* default */ }
|
|
383
410
|
try {
|
|
384
|
-
|
|
411
|
+
// All dashboard /api routes are auth-gated — attach the local session token.
|
|
412
|
+
let auth = '';
|
|
413
|
+
try {
|
|
414
|
+
auth = readFileSync(join(cwd, '.monomind', 'dashboard-token'), 'utf8').trim();
|
|
415
|
+
}
|
|
416
|
+
catch { /* server may be pre-auth */ }
|
|
417
|
+
const res = await fetch(`${ctrlUrl}/api/orgs/${encodeURIComponent(orgName)}/mark-complete`, {
|
|
418
|
+
method: 'POST',
|
|
419
|
+
headers: auth ? { 'x-monomind-token': auth } : {},
|
|
420
|
+
});
|
|
385
421
|
const body = await res.json().catch(() => ({}));
|
|
386
422
|
if (!res.ok) {
|
|
387
423
|
log(output.error(`mark-complete failed (${res.status}): ${body.error || 'unknown error'}`));
|
|
@@ -489,6 +525,70 @@ export const orgCommand = {
|
|
|
489
525
|
return reportAction(ctx, v.name);
|
|
490
526
|
},
|
|
491
527
|
},
|
|
528
|
+
{
|
|
529
|
+
name: 'memory', description: 'Inspect an org\'s cross-run memory and knowledge graph (stats | search <query> | rules | rollback <run-ref>)',
|
|
530
|
+
examples: [
|
|
531
|
+
{ command: 'monomind org memory growth stats', description: 'KG size and namespaces' },
|
|
532
|
+
{ command: 'monomind org memory growth search "launch checklist"', description: 'Search org memory + KG' },
|
|
533
|
+
{ command: 'monomind org memory growth rollback run:m4x2', description: 'Delete everything one run wrote to the KG' },
|
|
534
|
+
],
|
|
535
|
+
action: async (ctx) => {
|
|
536
|
+
const v = validateOrgName(ctx.args[0]);
|
|
537
|
+
if (!v.ok)
|
|
538
|
+
return v.result;
|
|
539
|
+
const sub = String(ctx.args[1] ?? 'stats');
|
|
540
|
+
const { join } = await import('node:path');
|
|
541
|
+
const dbPath = join(process.cwd(), '.monomind', 'org-memory');
|
|
542
|
+
const kg = await import('../memory/memory-kg.js');
|
|
543
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
544
|
+
try {
|
|
545
|
+
if (sub === 'stats') {
|
|
546
|
+
const [stats, glossary, backend] = await Promise.all([
|
|
547
|
+
kg.kgStats({ dbPath }), kg.kgGlossary({ dbPath, limit: 15 }), bridge.bridgeGetBackendStats(dbPath),
|
|
548
|
+
]);
|
|
549
|
+
log(output.info(`Knowledge graph: ${stats.nodes} entities, ${stats.edges} relations, ${stats.rules} rules`));
|
|
550
|
+
if (glossary.length)
|
|
551
|
+
log(output.info(`Top entities: ${glossary.join(', ')}`));
|
|
552
|
+
const byNs = backend?.entriesByNamespace ?? {};
|
|
553
|
+
for (const [ns, count] of Object.entries(byNs))
|
|
554
|
+
log(output.info(` ${ns}: ${count} entries`));
|
|
555
|
+
return { success: true, message: 'org memory stats', data: { ...stats, namespaces: byNs } };
|
|
556
|
+
}
|
|
557
|
+
if (sub === 'search') {
|
|
558
|
+
const q = ctx.args.slice(2).join(' ');
|
|
559
|
+
if (!q)
|
|
560
|
+
return { success: false, message: 'usage: org memory <org> search <query>' };
|
|
561
|
+
const [mem, graph] = await Promise.all([
|
|
562
|
+
bridge.bridgeSearchEntries({ query: q, namespace: `org:${v.name}`, limit: 5, dbPath }),
|
|
563
|
+
kg.kgSearch({ query: q, dbPath, limit: 8 }),
|
|
564
|
+
]);
|
|
565
|
+
for (const r of mem?.results ?? [])
|
|
566
|
+
log(output.info(`[${r.score.toFixed(2)}] ${r.key}: ${r.content.slice(0, 160)}`));
|
|
567
|
+
if (graph.context)
|
|
568
|
+
log(output.info(`\nKnowledge graph:\n${graph.context}`));
|
|
569
|
+
return { success: true, message: `${(mem?.results ?? []).length} memories, ${graph.triplets.length} triplets` };
|
|
570
|
+
}
|
|
571
|
+
if (sub === 'rules') {
|
|
572
|
+
const rules = await kg.kgListRules({ dbPath, limit: 50 });
|
|
573
|
+
for (const r of rules)
|
|
574
|
+
log(output.info(`- ${r.rule.slice(0, 200)}`));
|
|
575
|
+
return { success: true, message: `${rules.length} rules`, data: { rules } };
|
|
576
|
+
}
|
|
577
|
+
if (sub === 'rollback') {
|
|
578
|
+
const ref = ctx.args[2];
|
|
579
|
+
if (!ref)
|
|
580
|
+
return { success: false, message: 'usage: org memory <org> rollback <origin-ref> (e.g. run:m4x2)' };
|
|
581
|
+
const res = await kg.kgRollback({ originRef: ref, dbPath });
|
|
582
|
+
log(output.info(`Rolled back ${ref}: ${res.deleted} deleted, ${res.retained} retained (shared with other origins)`));
|
|
583
|
+
return { success: res.success, message: `rollback ${ref}`, data: res };
|
|
584
|
+
}
|
|
585
|
+
return { success: false, message: `unknown subcommand "${sub}" — use stats | search | rules | rollback` };
|
|
586
|
+
}
|
|
587
|
+
finally {
|
|
588
|
+
await bridge.shutdownBridge().catch(() => { });
|
|
589
|
+
}
|
|
590
|
+
},
|
|
591
|
+
},
|
|
492
592
|
{
|
|
493
593
|
name: 'questions', description: 'List pending ask_human questions from an org\'s agents',
|
|
494
594
|
options: [{ name: 'all', description: 'Include answered questions', type: 'boolean' }],
|
|
@@ -49,7 +49,7 @@ export declare class CLI {
|
|
|
49
49
|
private loadConfig;
|
|
50
50
|
/**
|
|
51
51
|
* Initialize optional subsystems at startup (non-blocking, all failures are silent).
|
|
52
|
-
* Starts the @
|
|
52
|
+
* Starts the @monoes/hooks WorkerManager, wires SwarmCheckpointer, and builds
|
|
53
53
|
* the unified agent registry so that packages/@monomind/* actually contribute
|
|
54
54
|
* to the live runtime.
|
|
55
55
|
*/
|
|
@@ -458,12 +458,12 @@ export class CLI {
|
|
|
458
458
|
}
|
|
459
459
|
/**
|
|
460
460
|
* Initialize optional subsystems at startup (non-blocking, all failures are silent).
|
|
461
|
-
* Starts the @
|
|
461
|
+
* Starts the @monoes/hooks WorkerManager, wires SwarmCheckpointer, and builds
|
|
462
462
|
* the unified agent registry so that packages/@monomind/* actually contribute
|
|
463
463
|
* to the live runtime.
|
|
464
464
|
*/
|
|
465
465
|
async initSubsystems() {
|
|
466
|
-
// NOTE: the @
|
|
466
|
+
// NOTE: the @monoes/hooks WorkerManager is intentionally NOT started
|
|
467
467
|
// here. Workers run from the session-restore hook (6h staleness gate) and
|
|
468
468
|
// on demand via `monomind hooks worker run <name>`. Starting it on every
|
|
469
469
|
// CLI invocation scheduled staggered 1-10s timers that usually died with
|
|
@@ -510,7 +510,7 @@ export class CLI {
|
|
|
510
510
|
// could skip the warning even when the underlying issue was present. Doctor
|
|
511
511
|
// runs it synchronously within its own check pass instead, so it's always
|
|
512
512
|
// visible and itemized when you actually look for it.
|
|
513
|
-
// NOTE: Semantic routing (@
|
|
513
|
+
// NOTE: Semantic routing (@monoes/routing) is constructed on-demand by
|
|
514
514
|
// its consumers — `monomind route semantic` (commands/route.ts) and the
|
|
515
515
|
// `hooks_route_semantic` MCP tool (mcp-tools/hooks-routing.ts), both via
|
|
516
516
|
// routing/route-layer-factory.ts. `monomind agent` has no --task flag —
|
|
@@ -22,9 +22,9 @@ function detectOptionalPackages() {
|
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
_availabilityCache = {
|
|
25
|
-
hooks: resolvable('@
|
|
26
|
-
mcp: resolvable('@
|
|
27
|
-
routing: resolvable('@
|
|
25
|
+
hooks: resolvable('@monoes/hooks'),
|
|
26
|
+
mcp: resolvable('@monoes/mcp'),
|
|
27
|
+
routing: resolvable('@monoes/routing'),
|
|
28
28
|
monofence: resolvable('monofence-ai'),
|
|
29
29
|
};
|
|
30
30
|
return _availabilityCache;
|
|
@@ -242,7 +242,7 @@ function hooksSystem() {
|
|
|
242
242
|
| \`intelligence\` | Pattern-learning intelligence system |
|
|
243
243
|
| \`worker\` | Background worker management |
|
|
244
244
|
|
|
245
|
-
### Background Workers (@
|
|
245
|
+
### Background Workers (@monoes/hooks, run in-process)${unavailNote(avail.hooks)}
|
|
246
246
|
|
|
247
247
|
| Worker | Priority | Description |
|
|
248
248
|
|--------|----------|-------------|
|
|
@@ -255,7 +255,7 @@ function hooksSystem() {
|
|
|
255
255
|
| \`performance\`, \`health\`, \`swarm\`, \`git\`, \`learning\`, \`adr\`, \`patterns\`, \`cache\`, \`progress\` | various | See \`hooks worker list\` for the full 15 |
|
|
256
256
|
|
|
257
257
|
Metrics-producing workers refresh at session start when output is >6h old.
|
|
258
|
-
${avail.hooks ? '' : '\n> \\@
|
|
258
|
+
${avail.hooks ? '' : '\n> \\@monoes/hooks is not resolvable in this install — background workers will fail to load (see `hooks worker list`). This is an install/publish gap, not a project misconfiguration.\n'}
|
|
259
259
|
\`\`\`bash
|
|
260
260
|
npx monomind@latest hooks pre-task --description "[task]"
|
|
261
261
|
npx monomind@latest hooks post-task --task-id "[id]" --success true
|
|
@@ -75,9 +75,11 @@ const SKILLS_MAP = {
|
|
|
75
75
|
'monolean-help',
|
|
76
76
|
'hive-mind-advanced',
|
|
77
77
|
// The mastermind command files installed by init invoke
|
|
78
|
-
// Skill("mastermind
|
|
79
|
-
//
|
|
80
|
-
|
|
78
|
+
// Skill("mastermind-<name>") at runtime — one top-level
|
|
79
|
+
// mastermind-<name>/SKILL.md directory per skill. The glob expands in
|
|
80
|
+
// copySkills against the source tree, so newly added mastermind skills
|
|
81
|
+
// ship automatically; without them those references break in user projects.
|
|
82
|
+
'mastermind-*',
|
|
81
83
|
],
|
|
82
84
|
browser: ['agent-browser-testing'],
|
|
83
85
|
// NOTE: memory-toolkit and github-toolkit are single consolidated skills
|
|
@@ -981,6 +983,15 @@ async function copySkills(targetDir, options, result) {
|
|
|
981
983
|
result.errors.push('Could not find source skills directory');
|
|
982
984
|
return;
|
|
983
985
|
}
|
|
986
|
+
// Expand glob-style entries ('mastermind-*') against the source tree.
|
|
987
|
+
// Only directories that actually contain a SKILL.md count — this also
|
|
988
|
+
// filters exFAT AppleDouble junk (._mastermind-…).
|
|
989
|
+
for (const entry of skillsToCopy.filter(e => e.endsWith('*'))) {
|
|
990
|
+
const prefix = entry.slice(0, -1);
|
|
991
|
+
skillsToCopy.splice(skillsToCopy.indexOf(entry), 1);
|
|
992
|
+
skillsToCopy.push(...fs.readdirSync(sourceSkillsDir).filter(n => n.startsWith(prefix) &&
|
|
993
|
+
fs.existsSync(path.join(sourceSkillsDir, n, 'SKILL.md'))));
|
|
994
|
+
}
|
|
984
995
|
// Remove stale skill directories no longer in the current version's map
|
|
985
996
|
const knownSkills = new Set([...new Set(skillsToCopy)]);
|
|
986
997
|
if (fs.existsSync(targetSkillsDir)) {
|
|
@@ -1582,7 +1593,7 @@ async function writeCapabilitiesDoc(targetDir, options, result) {
|
|
|
1582
1593
|
result.skipped.push('.monomind/CAPABILITIES.md');
|
|
1583
1594
|
return;
|
|
1584
1595
|
}
|
|
1585
|
-
const hooksAvailable = _isOptionalPackageResolvable('@
|
|
1596
|
+
const hooksAvailable = _isOptionalPackageResolvable('@monoes/hooks');
|
|
1586
1597
|
const capabilities = `# Monomind - Complete Capabilities Reference
|
|
1587
1598
|
> Generated: ${new Date().toISOString()}
|
|
1588
1599
|
> Full documentation: https://github.com/monoes/monomind
|
|
@@ -1743,7 +1754,7 @@ npx monomind@latest doctor --fix
|
|
|
1743
1754
|
|
|
1744
1755
|
## Hooks System
|
|
1745
1756
|
|
|
1746
|
-
### 29 Available Hook Subcommands${hooksAvailable ? '' : ' — background workers unavailable in this install (@
|
|
1757
|
+
### 29 Available Hook Subcommands${hooksAvailable ? '' : ' — background workers unavailable in this install (@monoes/hooks did not resolve)'}
|
|
1747
1758
|
|
|
1748
1759
|
#### Core Hooks (6)
|
|
1749
1760
|
| Hook | Description |
|
|
@@ -1779,7 +1790,7 @@ npx monomind@latest doctor --fix
|
|
|
1779
1790
|
| \`coverage-suggest\` | Improvement suggestions |
|
|
1780
1791
|
| \`coverage-gaps\` | Gap analysis |
|
|
1781
1792
|
|
|
1782
|
-
### 15 Background Workers (@
|
|
1793
|
+
### 15 Background Workers (@monoes/hooks, run in-process)
|
|
1783
1794
|
| Worker | Priority | Purpose |
|
|
1784
1795
|
|--------|----------|---------|
|
|
1785
1796
|
| \`performance\` | normal | Benchmark performance |
|
|
@@ -19,6 +19,8 @@ export interface BatchIngestResult {
|
|
|
19
19
|
results: IngestResult[];
|
|
20
20
|
}
|
|
21
21
|
export interface KnowledgeExcerpt {
|
|
22
|
+
/** Memory entry id — pass back to memory_feedback/bridgeApplyFeedback to rate usefulness. */
|
|
23
|
+
id: string;
|
|
22
24
|
filePath: string;
|
|
23
25
|
text: string;
|
|
24
26
|
similarity: number;
|
|
@@ -312,7 +312,9 @@ export async function ingestDirectory(dirPath, scope = 'shared', opts) {
|
|
|
312
312
|
return;
|
|
313
313
|
}
|
|
314
314
|
for (const entry of entries) {
|
|
315
|
-
|
|
315
|
+
// Skip dotfiles/dot-dirs (incl. exFAT `._*` junk) — except `.monodesign`,
|
|
316
|
+
// whose critique snapshots are markdown worth surfacing in the Second Brain.
|
|
317
|
+
if (entry.name.startsWith('.') && entry.name !== '.monodesign')
|
|
316
318
|
continue;
|
|
317
319
|
const full = path.join(dir, entry.name);
|
|
318
320
|
if (entry.isDirectory()) {
|
|
@@ -390,6 +392,7 @@ export async function searchKnowledge(query, opts) {
|
|
|
390
392
|
// content, and goes empty when a re-ingested file's hash changed.
|
|
391
393
|
const srcTag = (r.tags ?? []).find((tag) => tag.startsWith('src:'));
|
|
392
394
|
return {
|
|
395
|
+
id: r.id,
|
|
393
396
|
filePath: srcTag ? srcTag.slice(4) : hashToFile.get(hash) ?? '',
|
|
394
397
|
text: r.content,
|
|
395
398
|
similarity: r.score + t.boost,
|
|
@@ -677,8 +677,8 @@ export class MCPServerManager extends EventEmitter {
|
|
|
677
677
|
}
|
|
678
678
|
// Dynamically import the MCP server package
|
|
679
679
|
// FIX for issue #942: Use proper package import instead of broken relative path
|
|
680
|
-
// @ts-ignore — @
|
|
681
|
-
const { createMCPServer } = await import('@
|
|
680
|
+
// @ts-ignore — @monoes/mcp is an optional peer resolved at runtime
|
|
681
|
+
const { createMCPServer } = await import('@monoes/mcp');
|
|
682
682
|
const logger = {
|
|
683
683
|
debug: (msg, data) => this.emit('log', { level: 'debug', msg, data }),
|
|
684
684
|
info: (msg, data) => this.emit('log', { level: 'info', msg, data }),
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* intelligence stats/learn/attention, and model routing.
|
|
5
5
|
* Extracted from hooks-tools.ts.
|
|
6
6
|
* The simulated worker dispatch/status/detect/cancel tools were deleted with
|
|
7
|
-
* the worker daemon -- real workers live in @
|
|
7
|
+
* the worker daemon -- real workers live in @monoes/hooks (`hooks worker run`).
|
|
8
8
|
*/
|
|
9
9
|
import { type MCPTool } from './types.js';
|
|
10
10
|
export declare const hooksIntelligenceReset: MCPTool;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* intelligence stats/learn/attention, and model routing.
|
|
5
5
|
* Extracted from hooks-tools.ts.
|
|
6
6
|
* The simulated worker dispatch/status/detect/cancel tools were deleted with
|
|
7
|
-
* the worker daemon -- real workers live in @
|
|
7
|
+
* the worker daemon -- real workers live in @monoes/hooks (`hooks worker run`).
|
|
8
8
|
*/
|
|
9
9
|
import { existsSync, readdirSync, unlinkSync } from 'fs';
|
|
10
10
|
import { join } from 'path';
|