monomind 2.5.0 → 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 +169 -18
- 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 +211 -13
- package/packages/@monomind/cli/package.json +6 -4
- /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
|
}
|
|
@@ -260,7 +291,9 @@ export async function bridgeStoreEntry(options) {
|
|
|
260
291
|
? options.value.slice(0, BRIDGE_MAX_VALUE_LEN) : options.value;
|
|
261
292
|
const namespace = options.namespace ?? 'default';
|
|
262
293
|
const tags = Array.isArray(options.tags)
|
|
263
|
-
|
|
294
|
+
// src: tags carry the ingest source path for excerpt provenance — paths
|
|
295
|
+
// routinely exceed the general 64-char tag cap, so they get 512.
|
|
296
|
+
? options.tags.filter(t => typeof t === 'string' && t.length > 0 && t.length <= (t.startsWith('src:') ? 512 : MAX_TAG_LEN)).slice(0, MAX_TAGS)
|
|
264
297
|
: [];
|
|
265
298
|
const now = Date.now();
|
|
266
299
|
const id = generateId('entry');
|
|
@@ -283,6 +316,7 @@ export async function bridgeStoreEntry(options) {
|
|
|
283
316
|
content: value,
|
|
284
317
|
namespace,
|
|
285
318
|
tags,
|
|
319
|
+
metadata: options.metadata,
|
|
286
320
|
expiresAt: options.ttl ? now + options.ttl * 1000 : undefined,
|
|
287
321
|
});
|
|
288
322
|
// Override id and set embedding
|
|
@@ -310,6 +344,9 @@ export async function bridgeStoreEntry(options) {
|
|
|
310
344
|
filters: { type: 'exact', namespace },
|
|
311
345
|
});
|
|
312
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(() => { });
|
|
313
350
|
return { success: true, id: similar[0].entry.id, duplicate: true };
|
|
314
351
|
}
|
|
315
352
|
}
|
|
@@ -351,16 +388,22 @@ export async function bridgeSearchEntries(options) {
|
|
|
351
388
|
threshold,
|
|
352
389
|
filters: namespace ? { type: 'exact', namespace } : undefined,
|
|
353
390
|
});
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
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);
|
|
364
407
|
searchMethod = 'semantic';
|
|
365
408
|
}
|
|
366
409
|
catch { /* fall through to keyword search */ }
|
|
@@ -409,11 +452,14 @@ export async function bridgeSearchEntries(options) {
|
|
|
409
452
|
// forever) — keying it on the query's namespace filter meant an
|
|
410
453
|
// all-namespace search silently dropped knowledge:* results past the
|
|
411
454
|
// stale cutoff.
|
|
412
|
-
|
|
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;
|
|
413
459
|
if (!isKnowledgeNs) {
|
|
414
460
|
const { staleDays } = getAutomemConfig();
|
|
415
461
|
const staleCutoff = Date.now() - staleDays * 86400000;
|
|
416
|
-
results = results.filter((r) => String(r.namespace ?? '')
|
|
462
|
+
results = results.filter((r) => durableNs(String(r.namespace ?? ''))
|
|
417
463
|
|| !r._createdAt || r._createdAt > staleCutoff);
|
|
418
464
|
}
|
|
419
465
|
results.forEach((r) => delete r._createdAt);
|
|
@@ -451,6 +497,7 @@ export async function bridgeListEntries(options) {
|
|
|
451
497
|
updatedAt: new Date(e.updatedAt).toISOString(),
|
|
452
498
|
hasEmbedding: !!(e.embedding && e.embedding.length > 0),
|
|
453
499
|
tags: e.tags ?? [],
|
|
500
|
+
metadata: e.metadata ?? {},
|
|
454
501
|
})),
|
|
455
502
|
total: entries.length,
|
|
456
503
|
};
|
|
@@ -481,6 +528,7 @@ export async function bridgeGetEntry(options) {
|
|
|
481
528
|
updatedAt: new Date(entry.updatedAt).toISOString(),
|
|
482
529
|
hasEmbedding: !!(entry.embedding && entry.embedding.length > 0),
|
|
483
530
|
tags: entry.tags ?? [],
|
|
531
|
+
metadata: entry.metadata ?? {},
|
|
484
532
|
},
|
|
485
533
|
};
|
|
486
534
|
}
|
|
@@ -681,6 +729,93 @@ export async function bridgeSearchPatterns(options) {
|
|
|
681
729
|
}),
|
|
682
730
|
};
|
|
683
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
|
+
}
|
|
684
819
|
// ===== Feedback =====
|
|
685
820
|
export async function bridgeRecordFeedback(options) {
|
|
686
821
|
return bridgeStoreEntry({
|
|
@@ -832,28 +967,44 @@ export async function bridgeHierarchicalRecall(params) {
|
|
|
832
967
|
});
|
|
833
968
|
}
|
|
834
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$)/;
|
|
835
973
|
export async function bridgeConsolidate(params) {
|
|
836
|
-
const backend = await getBackend();
|
|
974
|
+
const backend = await getBackend(params.dbPath);
|
|
837
975
|
if (!backend)
|
|
838
976
|
return { success: false, consolidated: 0 };
|
|
839
977
|
try {
|
|
840
978
|
const minAge = params.minAge ?? 7 * 24 * 3600 * 1000; // default: 7 days
|
|
841
979
|
const cutoff = Date.now() - minAge;
|
|
980
|
+
const ns = params.namespace ?? 'default';
|
|
842
981
|
const entries = await backend.query({
|
|
843
982
|
type: 'exact',
|
|
844
|
-
namespace:
|
|
983
|
+
...(ns === 'all' ? {} : { namespace: ns }),
|
|
845
984
|
limit: params.maxEntries ?? 1000,
|
|
846
985
|
});
|
|
847
986
|
let deleted = 0;
|
|
987
|
+
let kept = 0;
|
|
848
988
|
for (const e of entries) {
|
|
849
|
-
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) {
|
|
850
1001
|
await backend.delete(e.id).catch(() => { });
|
|
851
1002
|
deleted++;
|
|
852
1003
|
}
|
|
853
1004
|
}
|
|
854
1005
|
if (deleted)
|
|
855
1006
|
await flushBackend(backend);
|
|
856
|
-
return { success: true, consolidated: deleted };
|
|
1007
|
+
return { success: true, consolidated: deleted, preserved: kept };
|
|
857
1008
|
}
|
|
858
1009
|
catch {
|
|
859
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
|