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
|
@@ -108,7 +108,7 @@ export function bridgeGetDbPath(customPath) {
|
|
|
108
108
|
return getDbPath(customPath);
|
|
109
109
|
}
|
|
110
110
|
function getAutomemConfig() {
|
|
111
|
-
const defaults = { dedupThreshold: 0.85, staleDays: 7 };
|
|
111
|
+
const defaults = { dedupThreshold: 0.85, staleDays: 7, feedbackInfluence: 0.2 };
|
|
112
112
|
try {
|
|
113
113
|
const configPath = path.join(process.cwd(), '.monomind', 'automem-config.json');
|
|
114
114
|
if (!fs.existsSync(configPath))
|
|
@@ -120,12 +120,43 @@ function getAutomemConfig() {
|
|
|
120
120
|
return {
|
|
121
121
|
dedupThreshold: typeof config?.scaffold?.dedupThreshold === 'number' ? config.scaffold.dedupThreshold : defaults.dedupThreshold,
|
|
122
122
|
staleDays: typeof config?.scaffold?.staleDays === 'number' ? config.scaffold.staleDays : defaults.staleDays,
|
|
123
|
+
feedbackInfluence: typeof config?.scaffold?.feedbackInfluence === 'number'
|
|
124
|
+
? Math.max(0, Math.min(1, config.scaffold.feedbackInfluence)) : defaults.feedbackInfluence,
|
|
123
125
|
};
|
|
124
126
|
}
|
|
125
127
|
catch {
|
|
126
128
|
return defaults;
|
|
127
129
|
}
|
|
128
130
|
}
|
|
131
|
+
// ===== Usage/feedback weights (cognee-style, stored in entry metadata) =====
|
|
132
|
+
//
|
|
133
|
+
// feedback_weight (0..1, default 0.5): EWMA of explicit/auto ratings applied to
|
|
134
|
+
// the entries actually used to produce an answer. frequency_weight (>=0): how
|
|
135
|
+
// often the entry was returned by a search. Both live in the entry's metadata
|
|
136
|
+
// JSON — deliberately NOT backend schema columns, so no @monoes/memory publish
|
|
137
|
+
// is needed and both backends work unchanged.
|
|
138
|
+
const DEFAULT_FEEDBACK_WEIGHT = 0.5;
|
|
139
|
+
const FEEDBACK_EWMA_ALPHA = 0.1;
|
|
140
|
+
/** frequency_weight normalization ceiling: 10+ uses counts as fully reinforced. */
|
|
141
|
+
const FREQUENCY_NORM_CAP = 10;
|
|
142
|
+
function entryWeights(metadata) {
|
|
143
|
+
const md = (metadata ?? {});
|
|
144
|
+
const fw = typeof md.feedback_weight === 'number' && Number.isFinite(md.feedback_weight)
|
|
145
|
+
? Math.max(0, Math.min(1, md.feedback_weight)) : DEFAULT_FEEDBACK_WEIGHT;
|
|
146
|
+
const freq = typeof md.frequency_weight === 'number' && Number.isFinite(md.frequency_weight)
|
|
147
|
+
? Math.max(0, md.frequency_weight) : 0;
|
|
148
|
+
return { feedback: fw, frequency: freq };
|
|
149
|
+
}
|
|
150
|
+
/** Blend learned usefulness into a GENUINE embedding-similarity score.
|
|
151
|
+
* Cognee guard: never applied to keyword-fallback scores — those carry no
|
|
152
|
+
* real relevance signal, and blending there lets a high-feedback stale entry
|
|
153
|
+
* outrank relevant matches and self-reinforce (rich-get-richer). */
|
|
154
|
+
function blendScore(cosineSim, weights, influence) {
|
|
155
|
+
if (influence <= 0)
|
|
156
|
+
return cosineSim;
|
|
157
|
+
const usefulness = 0.7 * weights.feedback + 0.3 * Math.min(1, weights.frequency / FREQUENCY_NORM_CAP);
|
|
158
|
+
return (1 - influence) * cosineSim + influence * usefulness;
|
|
159
|
+
}
|
|
129
160
|
function generateId(prefix) {
|
|
130
161
|
return `${prefix}_${Date.now()}_${crypto.randomBytes(8).toString('hex')}`;
|
|
131
162
|
}
|
|
@@ -285,6 +316,7 @@ export async function bridgeStoreEntry(options) {
|
|
|
285
316
|
content: value,
|
|
286
317
|
namespace,
|
|
287
318
|
tags,
|
|
319
|
+
metadata: options.metadata,
|
|
288
320
|
expiresAt: options.ttl ? now + options.ttl * 1000 : undefined,
|
|
289
321
|
});
|
|
290
322
|
// Override id and set embedding
|
|
@@ -312,6 +344,9 @@ export async function bridgeStoreEntry(options) {
|
|
|
312
344
|
filters: { type: 'exact', namespace },
|
|
313
345
|
});
|
|
314
346
|
if (similar.length > 0 && similar[0].score >= automemCfg.dedupThreshold) {
|
|
347
|
+
// Re-storing near-identical content is a usage signal: the fact keeps
|
|
348
|
+
// being worth remembering. Reinforce the surviving entry.
|
|
349
|
+
await recordUsageOnBackend(backend, [similar[0].entry.id]).catch(() => { });
|
|
315
350
|
return { success: true, id: similar[0].entry.id, duplicate: true };
|
|
316
351
|
}
|
|
317
352
|
}
|
|
@@ -353,16 +388,22 @@ export async function bridgeSearchEntries(options) {
|
|
|
353
388
|
threshold,
|
|
354
389
|
filters: namespace ? { type: 'exact', namespace } : undefined,
|
|
355
390
|
});
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
391
|
+
const { feedbackInfluence } = getAutomemConfig();
|
|
392
|
+
results = searchResults.map((r) => {
|
|
393
|
+
const weights = entryWeights(r.entry.metadata);
|
|
394
|
+
// Blend only here (semantic path): r.score is a genuine cosine similarity.
|
|
395
|
+
const blended = blendScore(r.score, weights, feedbackInfluence);
|
|
396
|
+
return {
|
|
397
|
+
id: r.entry.id,
|
|
398
|
+
key: r.entry.key,
|
|
399
|
+
content: r.entry.content || '',
|
|
400
|
+
score: blended,
|
|
401
|
+
namespace: r.entry.namespace,
|
|
402
|
+
provenance: `semantic:${r.score.toFixed(3)}${blended !== r.score ? `→${blended.toFixed(3)}` : ''}`,
|
|
403
|
+
tags: r.entry.tags ?? [],
|
|
404
|
+
_createdAt: r.entry.createdAt || 0,
|
|
405
|
+
};
|
|
406
|
+
}).sort((a, b) => b.score - a.score);
|
|
366
407
|
searchMethod = 'semantic';
|
|
367
408
|
}
|
|
368
409
|
catch { /* fall through to keyword search */ }
|
|
@@ -411,11 +452,14 @@ export async function bridgeSearchEntries(options) {
|
|
|
411
452
|
// forever) — keying it on the query's namespace filter meant an
|
|
412
453
|
// all-namespace search silently dropped knowledge:* results past the
|
|
413
454
|
// stale cutoff.
|
|
414
|
-
|
|
455
|
+
// org:* (cross-run org memory) and rules are durable learned state like
|
|
456
|
+
// documents — the stale cliff silently erased org recall after a week.
|
|
457
|
+
const durableNs = (ns) => ns.startsWith('knowledge:') || ns.startsWith('org:') || ns.startsWith('agent:') || ns.startsWith('kg:') || ns === 'rules';
|
|
458
|
+
const isKnowledgeNs = namespace ? durableNs(namespace) : false;
|
|
415
459
|
if (!isKnowledgeNs) {
|
|
416
460
|
const { staleDays } = getAutomemConfig();
|
|
417
461
|
const staleCutoff = Date.now() - staleDays * 86400000;
|
|
418
|
-
results = results.filter((r) => String(r.namespace ?? '')
|
|
462
|
+
results = results.filter((r) => durableNs(String(r.namespace ?? ''))
|
|
419
463
|
|| !r._createdAt || r._createdAt > staleCutoff);
|
|
420
464
|
}
|
|
421
465
|
results.forEach((r) => delete r._createdAt);
|
|
@@ -453,6 +497,7 @@ export async function bridgeListEntries(options) {
|
|
|
453
497
|
updatedAt: new Date(e.updatedAt).toISOString(),
|
|
454
498
|
hasEmbedding: !!(e.embedding && e.embedding.length > 0),
|
|
455
499
|
tags: e.tags ?? [],
|
|
500
|
+
metadata: e.metadata ?? {},
|
|
456
501
|
})),
|
|
457
502
|
total: entries.length,
|
|
458
503
|
};
|
|
@@ -483,6 +528,7 @@ export async function bridgeGetEntry(options) {
|
|
|
483
528
|
updatedAt: new Date(entry.updatedAt).toISOString(),
|
|
484
529
|
hasEmbedding: !!(entry.embedding && entry.embedding.length > 0),
|
|
485
530
|
tags: entry.tags ?? [],
|
|
531
|
+
metadata: entry.metadata ?? {},
|
|
486
532
|
},
|
|
487
533
|
};
|
|
488
534
|
}
|
|
@@ -683,6 +729,93 @@ export async function bridgeSearchPatterns(options) {
|
|
|
683
729
|
}),
|
|
684
730
|
};
|
|
685
731
|
}
|
|
732
|
+
// ===== Usage capture & feedback weighting (closed loop) =====
|
|
733
|
+
async function recordUsageOnBackend(backend, entryIds) {
|
|
734
|
+
let updated = 0;
|
|
735
|
+
for (const id of entryIds) {
|
|
736
|
+
if (typeof id !== 'string' || !id)
|
|
737
|
+
continue;
|
|
738
|
+
try {
|
|
739
|
+
const entry = await backend.get(id);
|
|
740
|
+
if (!entry)
|
|
741
|
+
continue;
|
|
742
|
+
const { frequency } = entryWeights(entry.metadata);
|
|
743
|
+
await backend.update(id, {
|
|
744
|
+
metadata: { frequency_weight: frequency + 1 },
|
|
745
|
+
lastAccessedAt: Date.now(),
|
|
746
|
+
});
|
|
747
|
+
updated++;
|
|
748
|
+
}
|
|
749
|
+
catch { /* skip unreadable entries */ }
|
|
750
|
+
}
|
|
751
|
+
return updated;
|
|
752
|
+
}
|
|
753
|
+
/** Record that these entries were actually USED (returned to and consumed by a
|
|
754
|
+
* caller) — increments frequency_weight, which feeds the ranking blend. */
|
|
755
|
+
export async function bridgeRecordUsage(options) {
|
|
756
|
+
const backend = await getBackend(options.dbPath);
|
|
757
|
+
if (!backend)
|
|
758
|
+
return null;
|
|
759
|
+
try {
|
|
760
|
+
const updated = await recordUsageOnBackend(backend, (options.entryIds ?? []).slice(0, 100));
|
|
761
|
+
if (updated)
|
|
762
|
+
await flushBackend(backend);
|
|
763
|
+
return { success: true, updated };
|
|
764
|
+
}
|
|
765
|
+
catch {
|
|
766
|
+
return { success: false, updated: 0 };
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
/** Apply a usefulness rating to the entries that produced an answer:
|
|
770
|
+
* EWMA feedback_weight' = w + alpha*(score - w), clipped [0,1] (cognee's
|
|
771
|
+
* apply_feedback_weights). `ledgerKey` makes application idempotent — a
|
|
772
|
+
* daemon retry or duplicate MCP call must never compound the update. */
|
|
773
|
+
export async function bridgeApplyFeedback(options) {
|
|
774
|
+
const backend = await getBackend(options.dbPath);
|
|
775
|
+
if (!backend)
|
|
776
|
+
return null;
|
|
777
|
+
try {
|
|
778
|
+
const score = Math.max(0, Math.min(1, options.score));
|
|
779
|
+
const alpha = typeof options.alpha === 'number' ? Math.max(0, Math.min(1, options.alpha)) : FEEDBACK_EWMA_ALPHA;
|
|
780
|
+
const ledgerEntryKey = options.ledgerKey ? `applied_${options.ledgerKey.slice(0, 500)}` : null;
|
|
781
|
+
if (ledgerEntryKey) {
|
|
782
|
+
const existing = await backend.getByKey('feedback', ledgerEntryKey).catch(() => null);
|
|
783
|
+
if (existing)
|
|
784
|
+
return { success: true, applied: 0, alreadyApplied: true };
|
|
785
|
+
}
|
|
786
|
+
let applied = 0;
|
|
787
|
+
for (const id of (options.entryIds ?? []).slice(0, 100)) {
|
|
788
|
+
if (typeof id !== 'string' || !id)
|
|
789
|
+
continue;
|
|
790
|
+
try {
|
|
791
|
+
const entry = await backend.get(id);
|
|
792
|
+
if (!entry)
|
|
793
|
+
continue;
|
|
794
|
+
const { feedback } = entryWeights(entry.metadata);
|
|
795
|
+
const next = Math.max(0, Math.min(1, feedback + alpha * (score - feedback)));
|
|
796
|
+
await backend.update(id, { metadata: { feedback_weight: next } });
|
|
797
|
+
applied++;
|
|
798
|
+
}
|
|
799
|
+
catch { /* skip unreadable entries */ }
|
|
800
|
+
}
|
|
801
|
+
if (ledgerEntryKey) {
|
|
802
|
+
await bridgeStoreEntry({
|
|
803
|
+
key: ledgerEntryKey,
|
|
804
|
+
value: JSON.stringify({ score, entryIds: options.entryIds.slice(0, 100), appliedAt: Date.now(), applied }),
|
|
805
|
+
namespace: 'feedback',
|
|
806
|
+
generateEmbeddingFlag: false,
|
|
807
|
+
dbPath: options.dbPath,
|
|
808
|
+
upsert: true,
|
|
809
|
+
});
|
|
810
|
+
}
|
|
811
|
+
if (applied)
|
|
812
|
+
await flushBackend(backend);
|
|
813
|
+
return { success: true, applied };
|
|
814
|
+
}
|
|
815
|
+
catch (err) {
|
|
816
|
+
return { success: false, applied: 0, error: String(err?.message ?? err) };
|
|
817
|
+
}
|
|
818
|
+
}
|
|
686
819
|
// ===== Feedback =====
|
|
687
820
|
export async function bridgeRecordFeedback(options) {
|
|
688
821
|
return bridgeStoreEntry({
|
|
@@ -834,28 +967,44 @@ export async function bridgeHierarchicalRecall(params) {
|
|
|
834
967
|
});
|
|
835
968
|
}
|
|
836
969
|
// ===== Consolidation =====
|
|
970
|
+
/** Namespaces GC must never touch: durable knowledge/org/rule state, and the
|
|
971
|
+
* feedback ledger (deleting it would un-idempotent past ratings). */
|
|
972
|
+
const GC_PROTECTED_NS = /^(knowledge:|org:|agent:|kg:|rules$|feedback$)/;
|
|
837
973
|
export async function bridgeConsolidate(params) {
|
|
838
|
-
const backend = await getBackend();
|
|
974
|
+
const backend = await getBackend(params.dbPath);
|
|
839
975
|
if (!backend)
|
|
840
976
|
return { success: false, consolidated: 0 };
|
|
841
977
|
try {
|
|
842
978
|
const minAge = params.minAge ?? 7 * 24 * 3600 * 1000; // default: 7 days
|
|
843
979
|
const cutoff = Date.now() - minAge;
|
|
980
|
+
const ns = params.namespace ?? 'default';
|
|
844
981
|
const entries = await backend.query({
|
|
845
982
|
type: 'exact',
|
|
846
|
-
namespace:
|
|
983
|
+
...(ns === 'all' ? {} : { namespace: ns }),
|
|
847
984
|
limit: params.maxEntries ?? 1000,
|
|
848
985
|
});
|
|
849
986
|
let deleted = 0;
|
|
987
|
+
let kept = 0;
|
|
850
988
|
for (const e of entries) {
|
|
851
|
-
if (
|
|
989
|
+
if (GC_PROTECTED_NS.test(String(e.namespace ?? '')))
|
|
990
|
+
continue;
|
|
991
|
+
if (e.updatedAt >= cutoff)
|
|
992
|
+
continue;
|
|
993
|
+
const { feedback, frequency } = entryWeights(e.metadata);
|
|
994
|
+
// Weight-aware GC (first real consumer of the closed loop): entries the
|
|
995
|
+
// system learned are useful never age out; unused, unrated ones do.
|
|
996
|
+
if (feedback > 0.6 || frequency >= 3) {
|
|
997
|
+
kept++;
|
|
998
|
+
continue;
|
|
999
|
+
}
|
|
1000
|
+
if ((e.accessCount ?? 0) === 0) {
|
|
852
1001
|
await backend.delete(e.id).catch(() => { });
|
|
853
1002
|
deleted++;
|
|
854
1003
|
}
|
|
855
1004
|
}
|
|
856
1005
|
if (deleted)
|
|
857
1006
|
await flushBackend(backend);
|
|
858
|
-
return { success: true, consolidated: deleted };
|
|
1007
|
+
return { success: true, consolidated: deleted, preserved: kept };
|
|
859
1008
|
}
|
|
860
1009
|
catch {
|
|
861
1010
|
return { success: false, consolidated: 0 };
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Knowledge Graph — entities, relations, and rules distilled from
|
|
3
|
+
* agent sessions and org runs (cognee-concept port, Phase 2 of
|
|
4
|
+
* docs/mastermind/2026-07-19-cognee-port-plan.md).
|
|
5
|
+
*
|
|
6
|
+
* Storage rides store A (memory-bridge) rather than a dedicated SQLite DB:
|
|
7
|
+
* nodes live in namespace `kg:nodes`, edges in `kg:edges`, distilled rules
|
|
8
|
+
* additionally in `rules` (so existing knowledge/injection surfaces find them).
|
|
9
|
+
* That buys embeddings, upsert, sql.js fallback, and the Phase 1
|
|
10
|
+
* feedback/frequency weighting for free — KG node ranking improves with use
|
|
11
|
+
* automatically.
|
|
12
|
+
*
|
|
13
|
+
* Identity is deterministic (cognee's DataPoint.id_for): the entry KEY is
|
|
14
|
+
* `n:<type>:<normalized-name>`, so the same entity extracted from any session
|
|
15
|
+
* merges idempotently via upsert. Every write carries `origin_refs` so a bad
|
|
16
|
+
* ingest can be rolled back per run/session.
|
|
17
|
+
*
|
|
18
|
+
* // monolean: graph traversal is in-process over a full kg:edges list —
|
|
19
|
+
* // fine to ~10k edges; upgrade path is a real SQLite edges table with
|
|
20
|
+
* // indexed src/dst columns if orgs outgrow that.
|
|
21
|
+
*
|
|
22
|
+
* @module v1/cli/memory/memory-kg
|
|
23
|
+
*/
|
|
24
|
+
export declare const KG_NODES_NS = "kg:nodes";
|
|
25
|
+
export declare const KG_EDGES_NS = "kg:edges";
|
|
26
|
+
export declare const RULES_NS = "rules";
|
|
27
|
+
export interface KgNodeInput {
|
|
28
|
+
name: string;
|
|
29
|
+
/** Basic type, cognee-style ("Person", "Tool", "Service") — not over-specific. */
|
|
30
|
+
type?: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
nodeSet?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface KgEdgeInput {
|
|
35
|
+
source: string;
|
|
36
|
+
target: string;
|
|
37
|
+
/** snake_case relation name. */
|
|
38
|
+
relation: string;
|
|
39
|
+
/** One-sentence concrete fact using the endpoint names. */
|
|
40
|
+
description?: string;
|
|
41
|
+
sourceType?: string;
|
|
42
|
+
targetType?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface KgIngestResult {
|
|
45
|
+
success: boolean;
|
|
46
|
+
nodesAdded: number;
|
|
47
|
+
nodesMerged: number;
|
|
48
|
+
edgesAdded: number;
|
|
49
|
+
edgesMerged: number;
|
|
50
|
+
error?: string;
|
|
51
|
+
}
|
|
52
|
+
/** cognee DataPoint normalization: lowercase, spaces→_, strip apostrophes. */
|
|
53
|
+
export declare function normalizeName(name: string): string;
|
|
54
|
+
/** Identity is NAME-ONLY (cognee's Entity.identity_fields = ["name"]) — type
|
|
55
|
+
* lives in metadata. Including type in the key forked the same entity when
|
|
56
|
+
* the LLM said "Module" and the heuristic said "entity". */
|
|
57
|
+
export declare function nodeKey(_type: string, name: string): string;
|
|
58
|
+
/** Idempotently merge extracted nodes/edges into the KG. Same-name entities
|
|
59
|
+
* collapse onto one node (deterministic key + upsert); origin_refs accumulate
|
|
60
|
+
* so rollback can undo a single run's contribution. */
|
|
61
|
+
export declare function kgIngest(options: {
|
|
62
|
+
nodes: KgNodeInput[];
|
|
63
|
+
edges?: KgEdgeInput[];
|
|
64
|
+
/** Provenance: run id, session id, or doc hash this extraction came from. */
|
|
65
|
+
originRef: string;
|
|
66
|
+
dbPath?: string;
|
|
67
|
+
}): Promise<KgIngestResult>;
|
|
68
|
+
export interface RuleVerdict {
|
|
69
|
+
rule: string;
|
|
70
|
+
verdict: 'accepted' | 'already_known' | 'invalid';
|
|
71
|
+
similarTo?: string;
|
|
72
|
+
}
|
|
73
|
+
/** Stage-2 of cognee's curator/writer distillation: the CALLER (an LLM agent)
|
|
74
|
+
* proposes candidate rules; this accepts each unless a semantically
|
|
75
|
+
* near-identical rule exists (embedding dedup — deterministic keys can't
|
|
76
|
+
* collapse paraphrases). Accepted rules are stored both as KG nodes
|
|
77
|
+
* (node_set=rules) and as plain `rules`-namespace entries so the existing
|
|
78
|
+
* injection/search surfaces pick them up with zero new plumbing. */
|
|
79
|
+
export declare function kgIngestRules(options: {
|
|
80
|
+
rules: {
|
|
81
|
+
rule: string;
|
|
82
|
+
context?: string;
|
|
83
|
+
}[];
|
|
84
|
+
originRef: string;
|
|
85
|
+
dbPath?: string;
|
|
86
|
+
/** Similarity above which a candidate is already_known (default 0.78 —
|
|
87
|
+
* MiniLM paraphrases of the same rule commonly land 0.78-0.9; cognee's
|
|
88
|
+
* equivalent control is prompt-injected LLM judgment, which we approximate). */
|
|
89
|
+
dedupThreshold?: number;
|
|
90
|
+
}): Promise<{
|
|
91
|
+
success: boolean;
|
|
92
|
+
verdicts: RuleVerdict[];
|
|
93
|
+
accepted: number;
|
|
94
|
+
error?: string;
|
|
95
|
+
}>;
|
|
96
|
+
/** List stored rules (for injection or review). */
|
|
97
|
+
export declare function kgListRules(options?: {
|
|
98
|
+
dbPath?: string;
|
|
99
|
+
limit?: number;
|
|
100
|
+
}): Promise<{
|
|
101
|
+
rule: string;
|
|
102
|
+
key: string;
|
|
103
|
+
}[]>;
|
|
104
|
+
export interface KgSearchResult {
|
|
105
|
+
success: boolean;
|
|
106
|
+
/** Rendered triplet lines, best first. */
|
|
107
|
+
context: string;
|
|
108
|
+
triplets: {
|
|
109
|
+
source: string;
|
|
110
|
+
relation: string;
|
|
111
|
+
target: string;
|
|
112
|
+
fact: string;
|
|
113
|
+
score: number;
|
|
114
|
+
}[];
|
|
115
|
+
seeds: {
|
|
116
|
+
name: string;
|
|
117
|
+
type: string;
|
|
118
|
+
description: string;
|
|
119
|
+
score: number;
|
|
120
|
+
id: string;
|
|
121
|
+
}[];
|
|
122
|
+
error?: string;
|
|
123
|
+
}
|
|
124
|
+
/** Vector-seed → neighborhood → triplet ranking (cognee's brute-force triplet
|
|
125
|
+
* search, scaled down). Seed scores already carry the Phase 1 feedback blend. */
|
|
126
|
+
export declare function kgSearch(options: {
|
|
127
|
+
query: string;
|
|
128
|
+
dbPath?: string;
|
|
129
|
+
limit?: number;
|
|
130
|
+
nodeSet?: string;
|
|
131
|
+
}): Promise<KgSearchResult>;
|
|
132
|
+
export declare function kgGlossary(options?: {
|
|
133
|
+
dbPath?: string;
|
|
134
|
+
limit?: number;
|
|
135
|
+
}): Promise<string[]>;
|
|
136
|
+
/** Delete every node/edge/rule whose ONLY origin is `originRef`. Elements with
|
|
137
|
+
* other origins survive (shared knowledge isn't destroyed by one bad run);
|
|
138
|
+
* their origin lists retain the ref — acceptable residue.
|
|
139
|
+
* // monolean: no origin-list rewrite — needs an update-by-id bridge API */
|
|
140
|
+
export declare function kgRollback(options: {
|
|
141
|
+
originRef: string;
|
|
142
|
+
dbPath?: string;
|
|
143
|
+
}): Promise<{
|
|
144
|
+
success: boolean;
|
|
145
|
+
deleted: number;
|
|
146
|
+
retained: number;
|
|
147
|
+
error?: string;
|
|
148
|
+
}>;
|
|
149
|
+
export interface ConsolidationCandidate {
|
|
150
|
+
name: string;
|
|
151
|
+
type: string;
|
|
152
|
+
description: string;
|
|
153
|
+
edgeCount: number;
|
|
154
|
+
/** Neighborhood facts to merge into one canonical description. */
|
|
155
|
+
neighborhood: string[];
|
|
156
|
+
}
|
|
157
|
+
/** Entities whose descriptions are stale relative to their connectivity —
|
|
158
|
+
* the LLM half runs in the LIVE agent: it rewrites each candidate's
|
|
159
|
+
* description from the neighborhood facts and resubmits via memory_kg_ingest
|
|
160
|
+
* (longer descriptions win on merge). No LLM here (fully local constraint). */
|
|
161
|
+
export declare function kgConsolidateCandidates(options?: {
|
|
162
|
+
dbPath?: string;
|
|
163
|
+
/** Minimum edges for a node to qualify (default 3). */
|
|
164
|
+
minEdges?: number;
|
|
165
|
+
limit?: number;
|
|
166
|
+
}): Promise<ConsolidationCandidate[]>;
|
|
167
|
+
export declare function kgStats(options?: {
|
|
168
|
+
dbPath?: string;
|
|
169
|
+
}): Promise<{
|
|
170
|
+
nodes: number;
|
|
171
|
+
edges: number;
|
|
172
|
+
rules: number;
|
|
173
|
+
}>;
|
|
174
|
+
/** Regex extraction for when no LLM is in the loop (memory-palace lineage):
|
|
175
|
+
* proper-noun phrases and `code identifiers` become entities, sentence
|
|
176
|
+
* co-occurrence becomes relates_to edges. Lower-trust by design — real
|
|
177
|
+
* entity/relation quality comes from the LLM path (memory_kg_ingest called
|
|
178
|
+
* by the live agent, or the org coordinator's org_learn tool). */
|
|
179
|
+
export declare function heuristicExtract(text: string, opts?: {
|
|
180
|
+
sourceName?: string;
|
|
181
|
+
}): {
|
|
182
|
+
nodes: KgNodeInput[];
|
|
183
|
+
edges: KgEdgeInput[];
|
|
184
|
+
};
|
|
185
|
+
//# sourceMappingURL=memory-kg.d.ts.map
|