monomind 2.5.1 → 2.5.2
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/package.json +2 -1
- package/packages/@monomind/cli/.claude/agents/design/design-monodesign.md +6 -6
- 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/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} +5 -5
- 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 +22 -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 -63
- 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 +227 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context.mjs +1062 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/critique-storage.mjs +243 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect-csp.mjs +199 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect.mjs +34 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +1938 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/cli/main.mjs +322 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/design-system.mjs +815 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +5246 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns.mjs +51 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/detect-url.mjs +260 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +259 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +574 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +1016 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +235 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/visual/screenshot-contrast.mjs +199 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/findings.mjs +13 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +199 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/profile/profiler.mjs +167 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +515 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +2704 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/color.mjs +125 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +102 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/fonts.mjs +31 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +149 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/page.mjs +8 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-admin.mjs +662 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-before-edit.mjs +517 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-lib.mjs +1777 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook.mjs +62 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/design-parser.mjs +843 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/is-generated.mjs +70 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +641 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +130 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/provider.mjs +5 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/target-args.mjs +43 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/browser-script-parts.mjs +51 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/completion.mjs +20 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/event-validation.mjs +138 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/insert-ui.mjs +459 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-apply.mjs +940 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edit-routes.mjs +358 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +153 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/session-store.mjs +290 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/svelte-component.mjs +827 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +275 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/ui-core.mjs +181 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/vocabulary.mjs +37 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-accept.mjs +813 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-dom.js +147 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-session.js +124 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser.js +11241 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +1242 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-complete.mjs +76 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +684 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +52 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-inject.mjs +584 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-insert.mjs +273 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +364 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-poll.mjs +385 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-resume.mjs +95 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-server.mjs +1138 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-status.mjs +62 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-target.mjs +31 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-wrap.mjs +895 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live.mjs +298 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/modern-screenshot.umd.js +15 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/palette.mjs +634 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/pin.mjs +222 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/teach.md +7 -58
- package/packages/@monomind/cli/dist/src/commands/design-detect.d.ts +7 -1
- package/packages/@monomind/cli/dist/src/commands/design-detect.js +70 -38
- package/packages/@monomind/cli/dist/src/commands/design-palette.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/design-palette.js +3 -3
- package/packages/@monomind/cli/dist/src/commands/doc.js +72 -15
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +4 -0
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +23 -0
- package/packages/@monomind/cli/dist/src/commands/doctor.js +3 -3
- package/packages/@monomind/cli/dist/src/commands/org.js +109 -9
- package/packages/@monomind/cli/dist/src/init/executor.js +14 -3
- package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.d.ts +2 -0
- package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +1 -0
- 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 +185 -0
- package/packages/@monomind/cli/dist/src/memory/memory-kg.js +449 -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/ui/dashboard.html +154 -6
- 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/package.json +5 -3
- /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
|
@@ -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. */
|
|
@@ -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,
|
|
@@ -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' }],
|
|
@@ -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)) {
|
|
@@ -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;
|
|
@@ -390,6 +390,7 @@ export async function searchKnowledge(query, opts) {
|
|
|
390
390
|
// content, and goes empty when a re-ingested file's hash changed.
|
|
391
391
|
const srcTag = (r.tags ?? []).find((tag) => tag.startsWith('src:'));
|
|
392
392
|
return {
|
|
393
|
+
id: r.id,
|
|
393
394
|
filePath: srcTag ? srcTag.slice(4) : hashToFile.get(hash) ?? '',
|
|
394
395
|
text: r.content,
|
|
395
396
|
similarity: r.score + t.boost,
|
|
@@ -71,7 +71,7 @@ const knowledgeIngest = {
|
|
|
71
71
|
};
|
|
72
72
|
const knowledgeSearch = {
|
|
73
73
|
name: 'knowledge_search',
|
|
74
|
-
description: '
|
|
74
|
+
description: 'Search the Second Brain. A rule-based router picks the retrieval surfaces per query — document excerpts, knowledge-graph triplets, distilled rules, past memories — and fuses them by reciprocal rank. Excerpt ids can be rated via memory_feedback.',
|
|
75
75
|
category: 'knowledge',
|
|
76
76
|
tags: ['documents', 'search', 'second-brain', 'rag'],
|
|
77
77
|
inputSchema: {
|
|
@@ -81,21 +81,52 @@ const knowledgeSearch = {
|
|
|
81
81
|
scope: { type: 'string', description: 'Knowledge scope (default: shared)' },
|
|
82
82
|
limit: { type: 'number', description: 'Max results (default: 10)' },
|
|
83
83
|
minScore: { type: 'number', description: 'Minimum similarity threshold (default: 0.3)' },
|
|
84
|
+
surfaces: { type: 'array', items: { type: 'string' }, description: "Override routing: any of 'chunks','kg','rules','memory'" },
|
|
84
85
|
},
|
|
85
86
|
required: ['query'],
|
|
86
87
|
},
|
|
87
88
|
handler: async (input) => {
|
|
88
89
|
const { searchKnowledge } = await import('../knowledge/document-pipeline.js');
|
|
90
|
+
const { routeQuery, rrfFuse } = await import('../memory/query-router.js');
|
|
89
91
|
try {
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
const query = String(input.query);
|
|
93
|
+
const limit = input.limit ? Number(input.limit) : 10;
|
|
94
|
+
const route = routeQuery(query);
|
|
95
|
+
const surfaces = Array.isArray(input.surfaces) && input.surfaces.length
|
|
96
|
+
? input.surfaces
|
|
97
|
+
: (route.confident ? route.surfaces : ['chunks', ...route.surfaces.filter(s => s !== 'chunks')]);
|
|
98
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
99
|
+
const kg = await import('../memory/memory-kg.js');
|
|
100
|
+
const [excerpts, graph, rules, memories] = await Promise.all([
|
|
101
|
+
surfaces.includes('chunks')
|
|
102
|
+
? searchKnowledge(query, {
|
|
103
|
+
scope: input.scope ? String(input.scope) : undefined,
|
|
104
|
+
limit,
|
|
105
|
+
minScore: input.minScore ? Number(input.minScore) : undefined,
|
|
106
|
+
})
|
|
107
|
+
: [],
|
|
108
|
+
surfaces.includes('kg') ? kg.kgSearch({ query, limit: 6 }) : null,
|
|
109
|
+
surfaces.includes('rules') ? bridge.bridgeSearchEntries({ query, namespace: 'rules', limit: 3, threshold: 0.35 }) : null,
|
|
110
|
+
surfaces.includes('memory') ? bridge.bridgeSearchEntries({ query, namespace: 'patterns', limit: 3 }) : null,
|
|
111
|
+
]);
|
|
112
|
+
// Rank-fuse heterogeneous lists (raw scores aren't comparable).
|
|
113
|
+
const fused = rrfFuse([
|
|
114
|
+
excerpts.map(e => ({ id: e.id || `${e.filePath}#${e.chunkIndex}`, kind: 'excerpt', ...e })),
|
|
115
|
+
(graph?.triplets ?? []).map((t, i) => ({ id: `kg:${i}:${t.source}|${t.relation}|${t.target}`, kind: 'triplet', ...t })),
|
|
116
|
+
(rules?.results ?? []).map(r => ({ id: r.id, kind: 'rule', key: r.key, text: r.content, importance: 0.7 })),
|
|
117
|
+
(memories?.results ?? []).map(r => ({ id: r.id, kind: 'memory', key: r.key, text: r.content })),
|
|
118
|
+
], limit);
|
|
95
119
|
return {
|
|
96
120
|
content: [{
|
|
97
121
|
type: 'text',
|
|
98
|
-
text: JSON.stringify({
|
|
122
|
+
text: JSON.stringify({
|
|
123
|
+
success: true,
|
|
124
|
+
count: fused.length,
|
|
125
|
+
routing: { surfaces, confident: route.confident },
|
|
126
|
+
results: fused,
|
|
127
|
+
// Back-compat: excerpt-only view for existing consumers.
|
|
128
|
+
excerpts,
|
|
129
|
+
}),
|
|
99
130
|
}],
|
|
100
131
|
};
|
|
101
132
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Memory MCP Tools — Phase 6 of ADR-053
|
|
3
3
|
*
|
|
4
|
-
* Exposes Memory backend operations as MCP tools
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Exposes Memory backend operations as MCP tools: pattern store/search,
|
|
5
|
+
* usage-weighted feedback (EWMA), the conversation knowledge graph
|
|
6
|
+
* (memory_kg_*), session records, weight-aware GC, and bridge health.
|
|
7
7
|
*
|
|
8
8
|
* Security: All handlers validate input types, enforce length bounds,
|
|
9
9
|
* and sanitize error messages before returning to MCP callers.
|
|
@@ -17,6 +17,11 @@ export declare const memoryPatternStore: MCPTool;
|
|
|
17
17
|
export declare const memoryPatternSearch: MCPTool;
|
|
18
18
|
export declare const memoryFeedback: MCPTool;
|
|
19
19
|
export declare const memoryCausalEdge: MCPTool;
|
|
20
|
+
export declare const memoryKgIngest: MCPTool;
|
|
21
|
+
export declare const memoryKgSearch: MCPTool;
|
|
22
|
+
export declare const memoryKgRollback: MCPTool;
|
|
23
|
+
export declare const memoryKgConsolidate: MCPTool;
|
|
24
|
+
export declare const memoryKgStats: MCPTool;
|
|
20
25
|
export declare const memoryRoute: MCPTool;
|
|
21
26
|
export declare const memorySessionStart: MCPTool;
|
|
22
27
|
export declare const memorySessionEnd: MCPTool;
|