@rubytech/create-realagent 1.0.406
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/dist/index.js +915 -0
- package/dist/uninstall.js +569 -0
- package/package.json +31 -0
- package/payload/maxy/package.json +9 -0
- package/payload/maxy/public/assets/ChatInput-7sHhJaNJ.js +42 -0
- package/payload/maxy/public/assets/ChatInput-oLFewltq.css +1 -0
- package/payload/maxy/public/assets/admin-k0izNYS1.js +352 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-300-normal-CzPHYadL.woff +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-300-normal-DFUoTmrg.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-400-normal-C8QS47vb.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-400-normal-D3EsxgFc.woff +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-500-normal-B7dJQtg-.woff +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-500-normal-BLlg2W5x.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-ext-300-normal-BXl3lXsi.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-ext-300-normal-DmxSOTe3.woff +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-ext-400-normal-Bgrpe4p1.woff +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-ext-400-normal-BlcaxZtM.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-ext-500-normal-CdQuyvtc.woff +0 -0
- package/payload/maxy/public/assets/cormorant-cyrillic-ext-500-normal-pZw22qtS.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-latin-300-normal-CJ5dfen0.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-latin-300-normal-DQZObO_3.woff +0 -0
- package/payload/maxy/public/assets/cormorant-latin-400-normal-BGH8Vunh.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-latin-400-normal-C3_-2Ua-.woff +0 -0
- package/payload/maxy/public/assets/cormorant-latin-500-normal-Dj3SQ6fR.woff +0 -0
- package/payload/maxy/public/assets/cormorant-latin-500-normal-EBdSCOD3.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-latin-ext-300-normal-CkiUx0UG.woff +0 -0
- package/payload/maxy/public/assets/cormorant-latin-ext-300-normal-De3D72RL.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-latin-ext-400-normal-DuQ88yz3.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-latin-ext-400-normal-DuXFa1Dr.woff +0 -0
- package/payload/maxy/public/assets/cormorant-latin-ext-500-normal-AH9qog1s.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-latin-ext-500-normal-DAuUCO41.woff +0 -0
- package/payload/maxy/public/assets/cormorant-vietnamese-300-normal-BVqIp_mg.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-vietnamese-300-normal-CEMS9Pw-.woff +0 -0
- package/payload/maxy/public/assets/cormorant-vietnamese-400-normal-C-RiYxEf.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-vietnamese-400-normal-DmUuA7Y2.woff +0 -0
- package/payload/maxy/public/assets/cormorant-vietnamese-500-normal-DsPuwQHi.woff2 +0 -0
- package/payload/maxy/public/assets/cormorant-vietnamese-500-normal-tGBW_mI7.woff +0 -0
- package/payload/maxy/public/assets/dm-sans-latin-400-normal-BwCSEQnW.woff +0 -0
- package/payload/maxy/public/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2 +0 -0
- package/payload/maxy/public/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2 +0 -0
- package/payload/maxy/public/assets/dm-sans-latin-500-normal-Dr3UlScf.woff +0 -0
- package/payload/maxy/public/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff +0 -0
- package/payload/maxy/public/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2 +0 -0
- package/payload/maxy/public/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2 +0 -0
- package/payload/maxy/public/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff +0 -0
- package/payload/maxy/public/assets/public-3Y1Xk7cO.js +5 -0
- package/payload/maxy/public/brand/claude.png +0 -0
- package/payload/maxy/public/brand/maxy-black.png +0 -0
- package/payload/maxy/public/brand/maxy-monochrome.png +0 -0
- package/payload/maxy/public/brand/maxy.png +0 -0
- package/payload/maxy/public/brand-constants.json +8 -0
- package/payload/maxy/public/brand-defaults.css +12 -0
- package/payload/maxy/public/favicon.ico +0 -0
- package/payload/maxy/public/index.html +16 -0
- package/payload/maxy/public/public.html +16 -0
- package/payload/maxy/public/robots.txt +5 -0
- package/payload/maxy/public/vnc-popout.html +59 -0
- package/payload/maxy/server-init.cjs +115 -0
- package/payload/maxy/server.js +9876 -0
- package/payload/platform/config/brand.json +42 -0
- package/payload/platform/config/cloudflared.yml +17 -0
- package/payload/platform/knowledge/maxy.md +772 -0
- package/payload/platform/neo4j/migrations/001-backfill-scope.cypher +30 -0
- package/payload/platform/neo4j/schema.cypher +557 -0
- package/payload/platform/package-lock.json +2534 -0
- package/payload/platform/package.json +20 -0
- package/payload/platform/plugins/admin/PLUGIN.md +47 -0
- package/payload/platform/plugins/admin/hooks/agent-creation-approval.sh +153 -0
- package/payload/platform/plugins/admin/hooks/agent-creation-gate.sh +309 -0
- package/payload/platform/plugins/admin/hooks/agent-creation-post.sh +157 -0
- package/payload/platform/plugins/admin/hooks/pre-tool-use.sh +49 -0
- package/payload/platform/plugins/admin/hooks/session-start.sh +88 -0
- package/payload/platform/plugins/admin/hooks/test-agent-creation-gate.sh +878 -0
- package/payload/platform/plugins/admin/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/admin/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/index.js +616 -0
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js +34 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts +23 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js +160 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.test.d.ts +2 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.test.d.ts.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.test.js +224 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.test.js.map +1 -0
- package/payload/platform/plugins/admin/mcp/package.json +21 -0
- package/payload/platform/plugins/admin/references/chat-ui-guide.md +31 -0
- package/payload/platform/plugins/admin/references/contextual-ui.md +107 -0
- package/payload/platform/plugins/admin/skills/access-manager/SKILL.md +28 -0
- package/payload/platform/plugins/admin/skills/access-manager/references/operations.md +197 -0
- package/payload/platform/plugins/admin/skills/business-profile/SKILL.md +42 -0
- package/payload/platform/plugins/admin/skills/datetime/SKILL.md +91 -0
- package/payload/platform/plugins/admin/skills/onboarding/skill.md +136 -0
- package/payload/platform/plugins/admin/skills/plugin-management/skill.md +76 -0
- package/payload/platform/plugins/admin/skills/public-agent-manager/skill.md +212 -0
- package/payload/platform/plugins/admin/skills/qr-code/SKILL.md +35 -0
- package/payload/platform/plugins/admin/skills/qr-code/references/data-formats.md +113 -0
- package/payload/platform/plugins/admin/skills/skill-builder/SKILL.md +112 -0
- package/payload/platform/plugins/admin/skills/skill-builder/references/lean-pattern.md +110 -0
- package/payload/platform/plugins/admin/skills/specialist-management/skill.md +44 -0
- package/payload/platform/plugins/admin/skills/stream-log-review/SKILL.md +40 -0
- package/payload/platform/plugins/admin/skills/stream-log-review/references/analysis-patterns.md +161 -0
- package/payload/platform/plugins/admin/skills/update-knowledge/skill.md +47 -0
- package/payload/platform/plugins/anthropic/PLUGIN.md +38 -0
- package/payload/platform/plugins/anthropic/references/setup-guide.md +114 -0
- package/payload/platform/plugins/anthropic/skills/get-api-key.md +57 -0
- package/payload/platform/plugins/business-assistant/PLUGIN.md +59 -0
- package/payload/platform/plugins/business-assistant/references/crm.md +112 -0
- package/payload/platform/plugins/business-assistant/references/document-management.md +96 -0
- package/payload/platform/plugins/business-assistant/references/escalation.md +126 -0
- package/payload/platform/plugins/business-assistant/references/invoicing.md +163 -0
- package/payload/platform/plugins/business-assistant/references/profiling.md +50 -0
- package/payload/platform/plugins/business-assistant/references/quoting.md +56 -0
- package/payload/platform/plugins/business-assistant/references/scheduling.md +127 -0
- package/payload/platform/plugins/business-assistant/references/task-management.md +155 -0
- package/payload/platform/plugins/cloudflare/PLUGIN.md +48 -0
- package/payload/platform/plugins/cloudflare/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/cloudflare/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/cloudflare/mcp/dist/index.js +698 -0
- package/payload/platform/plugins/cloudflare/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +101 -0
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts.map +1 -0
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +525 -0
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +1 -0
- package/payload/platform/plugins/cloudflare/mcp/package.json +19 -0
- package/payload/platform/plugins/cloudflare/references/setup-guide.md +126 -0
- package/payload/platform/plugins/cloudflare/skills/setup-tunnel.md +217 -0
- package/payload/platform/plugins/contacts/PLUGIN.md +20 -0
- package/payload/platform/plugins/contacts/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/contacts/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/index.js +210 -0
- package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js +34 -0
- package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts +19 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +68 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.d.ts +12 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.d.ts.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.js +35 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.js.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.d.ts +22 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.d.ts.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.js +47 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.js.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts +20 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js +57 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.d.ts +13 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.d.ts.map +1 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.js +54 -0
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.js.map +1 -0
- package/payload/platform/plugins/contacts/mcp/package.json +19 -0
- package/payload/platform/plugins/deep-research/PLUGIN.md +14 -0
- package/payload/platform/plugins/deep-research/skills/deep-research/SKILL.md +46 -0
- package/payload/platform/plugins/deep-research/skills/deep-research/references/citation-styles.md +52 -0
- package/payload/platform/plugins/deep-research/skills/deep-research/references/research-modes.md +22 -0
- package/payload/platform/plugins/deep-research/skills/deep-research/references/search-strategy.md +24 -0
- package/payload/platform/plugins/docs/PLUGIN.md +44 -0
- package/payload/platform/plugins/docs/references/access-control.md +51 -0
- package/payload/platform/plugins/docs/references/contacts-guide.md +59 -0
- package/payload/platform/plugins/docs/references/deployment.md +71 -0
- package/payload/platform/plugins/docs/references/getting-started.md +45 -0
- package/payload/platform/plugins/docs/references/memory-guide.md +87 -0
- package/payload/platform/plugins/docs/references/platform.md +64 -0
- package/payload/platform/plugins/docs/references/plugins-guide.md +83 -0
- package/payload/platform/plugins/docs/references/settings.md +89 -0
- package/payload/platform/plugins/docs/references/telegram-guide.md +58 -0
- package/payload/platform/plugins/docs/references/troubleshooting.md +88 -0
- package/payload/platform/plugins/documents/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/documents/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/documents/mcp/dist/index.js +98 -0
- package/payload/platform/plugins/documents/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/email/PLUGIN.md +222 -0
- package/payload/platform/plugins/email/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/index.js +288 -0
- package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +111 -0
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +357 -0
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/embedding.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/lib/embedding.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/embedding.js +24 -0
- package/payload/platform/plugins/email/mcp/dist/lib/embedding.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts +87 -0
- package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/graph.js +324 -0
- package/payload/platform/plugins/email/mcp/dist/lib/graph.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +215 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js +735 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/email/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js +34 -0
- package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts +25 -0
- package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/providers.js +116 -0
- package/payload/platform/plugins/email/mcp/dist/lib/providers.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +29 -0
- package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/screening.js +101 -0
- package/payload/platform/plugins/email/mcp/dist/lib/screening.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts +21 -0
- package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/smtp.js +77 -0
- package/payload/platform/plugins/email/mcp/dist/lib/smtp.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts +38 -0
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +844 -0
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +25 -0
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +214 -0
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts +19 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js +151 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts +22 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js +188 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts +15 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js +142 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts +14 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.js +75 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts +10 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +83 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts +15 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.js +63 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts +10 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.js +25 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts +22 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +183 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +6 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +43 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -0
- package/payload/platform/plugins/email/mcp/package.json +23 -0
- package/payload/platform/plugins/memory/PLUGIN.md +52 -0
- package/payload/platform/plugins/memory/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/index.js +899 -0
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/attachments.d.ts +37 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/attachments.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/attachments.js +68 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/attachments.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.d.ts +31 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js +62 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts +3 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js +29 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js +34 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.d.ts +61 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.js +266 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.test.js +233 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts +19 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +98 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts +17 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js +92 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts +40 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js +116 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts +20 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js +108 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +35 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +233 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.d.ts +17 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js +86 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.d.ts +12 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.js +100 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts +8 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js +71 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts +13 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js +63 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts +34 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +380 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts +13 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +62 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts +21 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +60 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts +13 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js +18 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts +41 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +192 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +21 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +235 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/package.json +19 -0
- package/payload/platform/plugins/memory/references/schema-base.md +102 -0
- package/payload/platform/plugins/memory/references/schema-creator.md +35 -0
- package/payload/platform/plugins/memory/references/schema-estate-agent.md +35 -0
- package/payload/platform/plugins/memory/references/schema-food-beverage.md +32 -0
- package/payload/platform/plugins/memory/references/schema-hospitality.md +31 -0
- package/payload/platform/plugins/memory/references/schema-logistics.md +30 -0
- package/payload/platform/plugins/memory/references/schema-professional-services.md +33 -0
- package/payload/platform/plugins/memory/references/schema-retail.md +33 -0
- package/payload/platform/plugins/memory/references/schema-trades.md +36 -0
- package/payload/platform/plugins/memory/skills/conversational-memory.md +99 -0
- package/payload/platform/plugins/projects/PLUGIN.md +87 -0
- package/payload/platform/plugins/projects/references/investigation.md +63 -0
- package/payload/platform/plugins/projects/references/retrospective.md +71 -0
- package/payload/platform/plugins/projects/references/review.md +51 -0
- package/payload/platform/plugins/projects/references/sprint.md +168 -0
- package/payload/platform/plugins/sales/PLUGIN.md +106 -0
- package/payload/platform/plugins/sales/references/close-tracking.md +69 -0
- package/payload/platform/plugins/sales/references/comparisons.md +99 -0
- package/payload/platform/plugins/sales/references/competitive-positioning.md +51 -0
- package/payload/platform/plugins/sales/references/faq.md +62 -0
- package/payload/platform/plugins/sales/references/objection-handling.md +157 -0
- package/payload/platform/plugins/sales/references/pricing.md +71 -0
- package/payload/platform/plugins/scheduling/PLUGIN.md +79 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +201 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.js +19 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js +34 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +20 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +475 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts +7 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js +23 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +23 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +107 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +25 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +53 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +20 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +58 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +18 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +167 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/package.json +21 -0
- package/payload/platform/plugins/tasks/.claude-plugin/plugin.json +18 -0
- package/payload/platform/plugins/tasks/.mcp.json +13 -0
- package/payload/platform/plugins/tasks/PLUGIN.md +56 -0
- package/payload/platform/plugins/tasks/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/tasks/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/index.js +287 -0
- package/payload/platform/plugins/tasks/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/lib/embeddings.d.ts +7 -0
- package/payload/platform/plugins/tasks/mcp/dist/lib/embeddings.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/lib/embeddings.js +24 -0
- package/payload/platform/plugins/tasks/mcp/dist/lib/embeddings.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.js +34 -0
- package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-list.d.ts +20 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-list.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-list.js +37 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-list.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.d.ts +6 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.js +13 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-complete.d.ts +16 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-complete.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-complete.js +33 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-complete.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.d.ts +18 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.js +55 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-get.d.ts +19 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-get.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-get.js +51 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-get.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-list.d.ts +18 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-list.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-list.js +66 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-list.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-ready.d.ts +21 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-ready.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-ready.js +54 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-ready.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-relate.d.ts +12 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-relate.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-relate.js +31 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-relate.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.d.ts +11 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.d.ts.map +1 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.js +62 -0
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.js.map +1 -0
- package/payload/platform/plugins/tasks/mcp/package.json +20 -0
- package/payload/platform/plugins/waitlist/PLUGIN.md +63 -0
- package/payload/platform/plugins/waitlist/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/waitlist/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/index.js +276 -0
- package/payload/platform/plugins/waitlist/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/anthropic.d.ts +23 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/anthropic.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/anthropic.js +115 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/anthropic.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.d.ts +3 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.js +48 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js +34 -0
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts +12 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js +197 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.d.ts +22 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.js +57 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts +60 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js +342 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.d.ts +18 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.js +80 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.d.ts +27 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.js +40 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.d.ts +31 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.d.ts.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js +336 -0
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js.map +1 -0
- package/payload/platform/plugins/waitlist/mcp/package.json +21 -0
- package/payload/platform/plugins/workflows/.claude-plugin/plugin.json +17 -0
- package/payload/platform/plugins/workflows/.mcp.json +12 -0
- package/payload/platform/plugins/workflows/PLUGIN.md +187 -0
- package/payload/platform/plugins/workflows/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/workflows/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/index.js +408 -0
- package/payload/platform/plugins/workflows/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.d.ts +2 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.js +19 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +48 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js +281 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js +34 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts +71 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js +183 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts +24 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js +60 -0
- package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts +35 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +124 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.d.ts +6 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.js +25 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts +50 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +383 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts +27 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js +49 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.d.ts +16 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.js +43 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.d.ts +27 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.js +64 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts +11 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js +162 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.d.ts +13 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.d.ts.map +1 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js +53 -0
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js.map +1 -0
- package/payload/platform/plugins/workflows/mcp/package.json +20 -0
- package/payload/platform/plugins/workflows/mcp/test-runner.mjs +710 -0
- package/payload/platform/plugins/workflows/mcp/test-workflows.sh +73 -0
- package/payload/platform/plugins/workflows/skills/workflow-manager/skill.md +88 -0
- package/payload/platform/scripts/hooks/pre-commit +111 -0
- package/payload/platform/scripts/resume-tunnel.sh +86 -0
- package/payload/platform/scripts/seed-neo4j.sh +273 -0
- package/payload/platform/scripts/setup.sh +177 -0
- package/payload/platform/scripts/vnc.sh +127 -0
- package/payload/platform/templates/account.json +13 -0
- package/payload/platform/templates/agents/admin/AGENTS.md +10 -0
- package/payload/platform/templates/agents/admin/IDENTITY.md +124 -0
- package/payload/platform/templates/agents/admin/LEARNINGS.md +21 -0
- package/payload/platform/templates/agents/admin/SOUL.md +1 -0
- package/payload/platform/templates/agents/public/IDENTITY.md +18 -0
- package/payload/platform/templates/agents/public/SOUL.md +7 -0
- package/payload/platform/templates/agents/public/config.json +9 -0
- package/payload/platform/templates/specialists/.claude-plugin/plugin.json +4 -0
- package/payload/platform/templates/specialists/agents/admin-specialist.md +13 -0
- package/payload/platform/templates/specialists/agents/browser-specialist.md +35 -0
- package/payload/platform/templates/specialists/agents/document-specialist.md +70 -0
- package/payload/platform/templates/specialists/agents/memory-specialist.md +13 -0
- package/payload/platform/templates/specialists/agents/researcher.md +52 -0
- package/payload/platform/templates/specialists/agents/scheduler.md +11 -0
- package/payload/platform/tsconfig.base.json +18 -0
- package/payload/premium-plugins/real-agency/PLUGIN.md +101 -0
- package/payload/premium-plugins/real-agency/references/agent-performance-atomic-habits.md +52 -0
- package/payload/premium-plugins/real-agency/references/agent-performance-daily-routine-scorecard.md +104 -0
- package/payload/premium-plugins/real-agency/references/agent-performance-hp6-model.md +63 -0
- package/payload/premium-plugins/real-agency/references/agent-performance-twelve-week-year.md +71 -0
- package/payload/premium-plugins/real-agency/references/bespoke-coaching-coaching-boundaries.md +56 -0
- package/payload/premium-plugins/real-agency/references/bespoke-coaching-feedback-framework.md +61 -0
- package/payload/premium-plugins/real-agency/references/bespoke-coaching-performance-framework.md +109 -0
- package/payload/premium-plugins/real-agency/references/bootstrap-onboarding-flow.md +63 -0
- package/payload/premium-plugins/real-agency/references/business-growth-buy-back-your-time.md +37 -0
- package/payload/premium-plugins/real-agency/references/business-growth-firewave-gost-scorecards.md +14 -0
- package/payload/premium-plugins/real-agency/references/business-growth-keller-org-model.md +17 -0
- package/payload/premium-plugins/real-agency/references/business-growth-lencioni-team-models.md +22 -0
- package/payload/premium-plugins/real-agency/references/business-growth-listing-management-system.md +11 -0
- package/payload/premium-plugins/real-agency/references/business-growth-net-figure-form.md +11 -0
- package/payload/premium-plugins/real-agency/references/business-growth-serhant-bizinbox-notes.md +13 -0
- package/payload/premium-plugins/real-agency/references/business-growth-team-roles-commission.md +14 -0
- package/payload/premium-plugins/real-agency/references/business-growth-va-2026-ops.md +43 -0
- package/payload/premium-plugins/real-agency/references/business-growth-wingman-structure.md +13 -0
- package/payload/premium-plugins/real-agency/references/business-operations-crm-systems.md +57 -0
- package/payload/premium-plugins/real-agency/references/business-operations-hiring-guide.md +59 -0
- package/payload/premium-plugins/real-agency/references/business-operations-impact-framework.md +47 -0
- package/payload/premium-plugins/real-agency/references/business-operations-minutes-equal-money.md +55 -0
- package/payload/premium-plugins/real-agency/references/business-operations-team-management.md +48 -0
- package/payload/premium-plugins/real-agency/references/buyer-management-buyer-qualification-questions.md +16 -0
- package/payload/premium-plugins/real-agency/references/buyer-management-buyer-qualification.md +59 -0
- package/payload/premium-plugins/real-agency/references/buyer-management-buyer-scripts.md +63 -0
- package/payload/premium-plugins/real-agency/references/buyer-management-buyer-working-scripts.md +54 -0
- package/payload/premium-plugins/real-agency/references/buyer-management-feedback-collection.md +42 -0
- package/payload/premium-plugins/real-agency/references/buyer-management-offer-capture.md +38 -0
- package/payload/premium-plugins/real-agency/references/buyer-management-viewing-booking.md +32 -0
- package/payload/premium-plugins/real-agency/references/buyer-management-viewing-management.md +52 -0
- package/payload/premium-plugins/real-agency/references/buyer-seller-guides-care-fees-guide.md +68 -0
- package/payload/premium-plugins/real-agency/references/buyer-seller-guides-divorce-sales-guide.md +61 -0
- package/payload/premium-plugins/real-agency/references/buyer-seller-guides-downsizing-guide.md +45 -0
- package/payload/premium-plugins/real-agency/references/buyer-seller-guides-first-time-buyers.md +92 -0
- package/payload/premium-plugins/real-agency/references/buyer-seller-guides-first-time-sellers.md +78 -0
- package/payload/premium-plugins/real-agency/references/buyer-seller-guides-probate-guide.md +53 -0
- package/payload/premium-plugins/real-agency/references/buyer-seller-guides-upsizing-guide.md +41 -0
- package/payload/premium-plugins/real-agency/references/coaching-toolkit-coaching-exercises.md +86 -0
- package/payload/premium-plugins/real-agency/references/coaching-toolkit-goal-setting.md +78 -0
- package/payload/premium-plugins/real-agency/references/coaching-toolkit-one-to-one-framework.md +92 -0
- package/payload/premium-plugins/real-agency/references/coaching-toolkit-soi-workbook.md +103 -0
- package/payload/premium-plugins/real-agency/references/content-directory-module-delivery.md +65 -0
- package/payload/premium-plugins/real-agency/references/content-directory-progress-tracking.md +47 -0
- package/payload/premium-plugins/real-agency/references/exp-partnership-12-reasons.md +39 -0
- package/payload/premium-plugins/real-agency/references/exp-partnership-95-5-system.md +66 -0
- package/payload/premium-plugins/real-agency/references/exp-partnership-agent-attraction-scripts.md +90 -0
- package/payload/premium-plugins/real-agency/references/exp-partnership-business-partnership.md +92 -0
- package/payload/premium-plugins/real-agency/references/exp-partnership-exp-model-overview.md +66 -0
- package/payload/premium-plugins/real-agency/references/exp-partnership-model-comparison.md +66 -0
- package/payload/premium-plugins/real-agency/references/exp-partnership-revenue-share-explained.md +57 -0
- package/payload/premium-plugins/real-agency/references/home-preparation-kerb-appeal.md +38 -0
- package/payload/premium-plugins/real-agency/references/home-preparation-photo-day.md +59 -0
- package/payload/premium-plugins/real-agency/references/home-preparation-situational-tips.md +50 -0
- package/payload/premium-plugins/real-agency/references/home-preparation-staging-guide.md +52 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-buyer-search-letter.md +28 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-buyer-search-letters.md +37 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-database-reactivation.md +30 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-email-nurture-sequences.md +45 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-facebook-referrals.md +30 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-firewave-email-nurture-sequences.md +41 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-keller-33-touch.md +34 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-neighbour-letters.md +31 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-neighbour-notification-letter.md +20 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-ofi-follow-up-dialogue.md +22 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-ofi-follow-up.md +26 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-serhant-three-fs-plus.md +21 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-sharran-10x10x10.md +18 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-sms-templates.md +40 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-sphere-of-influence-notes.md +34 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-sphere-of-influence.md +60 -0
- package/payload/premium-plugins/real-agency/references/lead-nurturing-tom-panos-sms-templates.md +59 -0
- package/payload/premium-plugins/real-agency/references/listing-presentation-booking-script.md +51 -0
- package/payload/premium-plugins/real-agency/references/listing-presentation-objection-scripts.md +193 -0
- package/payload/premium-plugins/real-agency/references/listing-presentation-penhaul-presentation.md +123 -0
- package/payload/premium-plugins/real-agency/references/listing-presentation-pre-listing-kit.md +139 -0
- package/payload/premium-plugins/real-agency/references/listing-presentation-set-to-sell.md +55 -0
- package/payload/premium-plugins/real-agency/references/listing-presentation-sharran-frameworks.md +107 -0
- package/payload/premium-plugins/real-agency/references/negotiation-deal-saving.md +47 -0
- package/payload/premium-plugins/real-agency/references/negotiation-negotiation-deep-guide.md +64 -0
- package/payload/premium-plugins/real-agency/references/negotiation-negotiation-prep-principles.md +29 -0
- package/payload/premium-plugins/real-agency/references/negotiation-negotiation-techniques.md +42 -0
- package/payload/premium-plugins/real-agency/references/negotiation-offer-presentation.md +43 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-attraction-agent-notes.md +31 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-attraction-agent.md +58 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-authenticity-boundaries.md +28 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-become-a-brand-leader-notes.md +19 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-blast-formula.md +42 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-brand-leader.md +48 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-brand-strategy-system.md +59 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-content-engine.md +49 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-firewave-blast-and-blogging.md +23 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-gary-v-content.md +52 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-gary-v-principles.md +20 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-oversubscribed-positioning.md +18 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-platforms.md +41 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-priestley-oversubscribed.md +54 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-storeys-style-examples.md +25 -0
- package/payload/premium-plugins/real-agency/references/personal-branding-visual-identity.md +27 -0
- package/payload/premium-plugins/real-agency/references/property-marketing-auction-report-template.md +41 -0
- package/payload/premium-plugins/real-agency/references/property-marketing-coming-soon-campaign.md +43 -0
- package/payload/premium-plugins/real-agency/references/property-marketing-direct-mail-templates.md +121 -0
- package/payload/premium-plugins/real-agency/references/property-marketing-eoi-form-template.md +62 -0
- package/payload/premium-plugins/real-agency/references/property-marketing-monthly-scorecard.md +63 -0
- package/payload/premium-plugins/real-agency/references/prospecting-database-matching.md +30 -0
- package/payload/premium-plugins/real-agency/references/prospecting-database-value.md +53 -0
- package/payload/premium-plugins/real-agency/references/prospecting-prospecting-dialogues.md +24 -0
- package/payload/premium-plugins/real-agency/references/prospecting-reactivation.md +34 -0
- package/payload/premium-plugins/real-agency/references/sales-closer-serhant-emotion-stages.md +36 -0
- package/payload/premium-plugins/real-agency/references/sales-discovery-chris-voss-discovery.md +88 -0
- package/payload/premium-plugins/real-agency/references/sales-discovery-firewave-gost-journey.md +68 -0
- package/payload/premium-plugins/real-agency/references/sales-discovery-phil-jones-openers.md +78 -0
- package/payload/premium-plugins/real-agency/references/sales-discovery-pre-listing-checklist.md +77 -0
- package/payload/premium-plugins/real-agency/references/sales-discovery-serhant-improv.md +22 -0
- package/payload/premium-plugins/real-agency/references/sales-discovery-tom-ferry-discovery.md +103 -0
- package/payload/premium-plugins/real-agency/references/sales-discovery-vendor-motivation-competitor.md +52 -0
- package/payload/premium-plugins/real-agency/references/sales-negotiation-chris-voss-negotiation.md +138 -0
- package/payload/premium-plugins/real-agency/references/sales-negotiation-phil-jones-price-words.md +68 -0
- package/payload/premium-plugins/real-agency/references/sales-negotiation-serhant-negotiation-plus.md +55 -0
- package/payload/premium-plugins/real-agency/references/sales-negotiation-tom-panos-commission-pricing.md +102 -0
- package/payload/premium-plugins/real-agency/references/sales-negotiation-tony-morris-questioning.md +71 -0
- package/payload/premium-plugins/real-agency/references/sales-progression-conveyancing-guide.md +54 -0
- package/payload/premium-plugins/real-agency/references/sales-progression-transaction-tracking.md +66 -0
- package/payload/premium-plugins/real-agency/references/serhant-training-agent-training-guide.md +70 -0
- package/payload/premium-plugins/real-agency/references/serhant-training-business-in-a-box.md +72 -0
- package/payload/premium-plugins/real-agency/references/serhant-training-buyers-guide.md +53 -0
- package/payload/premium-plugins/real-agency/references/serhant-training-codo-method.md +72 -0
- package/payload/premium-plugins/real-agency/references/serhant-training-website-planning-guide.md +79 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-fee-protection-and-agenda.md +28 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-listing-scripts.md +44 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-negotiation-deep-guide.md +70 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-price-alignment-scripts.md +33 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-price-alignment.md +34 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-scenario-scripts.md +38 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-seller-engagement.md +51 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-valuation-booking.md +76 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-vendor-scripts.md +63 -0
- package/payload/premium-plugins/real-agency/references/vendor-communication-vendor-updates.md +41 -0
- package/payload/premium-plugins/real-agency/skills/agent-performance.md +367 -0
- package/payload/premium-plugins/real-agency/skills/bespoke-coaching.md +28 -0
- package/payload/premium-plugins/real-agency/skills/bootstrap.md +26 -0
- package/payload/premium-plugins/real-agency/skills/business-growth.md +138 -0
- package/payload/premium-plugins/real-agency/skills/business-operations.md +32 -0
- package/payload/premium-plugins/real-agency/skills/buyer-feedback.md +109 -0
- package/payload/premium-plugins/real-agency/skills/buyer-management.md +41 -0
- package/payload/premium-plugins/real-agency/skills/buyer-seller-guides.md +407 -0
- package/payload/premium-plugins/real-agency/skills/coaching-toolkit.md +419 -0
- package/payload/premium-plugins/real-agency/skills/content-directory.md +39 -0
- package/payload/premium-plugins/real-agency/skills/exp-partnership.md +52 -0
- package/payload/premium-plugins/real-agency/skills/home-preparation.md +28 -0
- package/payload/premium-plugins/real-agency/skills/lead-nurturing.md +143 -0
- package/payload/premium-plugins/real-agency/skills/listing-presentation.md +286 -0
- package/payload/premium-plugins/real-agency/skills/negotiation.md +34 -0
- package/payload/premium-plugins/real-agency/skills/personal-branding.md +117 -0
- package/payload/premium-plugins/real-agency/skills/property-enquiry.md +126 -0
- package/payload/premium-plugins/real-agency/skills/property-marketing.md +337 -0
- package/payload/premium-plugins/real-agency/skills/prospecting.md +33 -0
- package/payload/premium-plugins/real-agency/skills/sales-closer.md +27 -0
- package/payload/premium-plugins/real-agency/skills/sales-discovery.md +34 -0
- package/payload/premium-plugins/real-agency/skills/sales-negotiation.md +31 -0
- package/payload/premium-plugins/real-agency/skills/sales-progression.md +27 -0
- package/payload/premium-plugins/real-agency/skills/serhant-training.md +410 -0
- package/payload/premium-plugins/real-agency/skills/valuation-booking.md +182 -0
- package/payload/premium-plugins/real-agency/skills/vendor-communication.md +42 -0
- package/payload/premium-plugins/real-agency/skills/vendor-updates.md +153 -0
- package/payload/premium-plugins/real-agency/skills/viewing-management.md +111 -0
- package/payload/premium-plugins/teaching/PLUGIN.md +58 -0
- package/payload/premium-plugins/teaching/references/assessment.md +70 -0
- package/payload/premium-plugins/teaching/references/classroom-conduct.md +43 -0
- package/payload/premium-plugins/teaching/references/context-gathering.md +41 -0
- package/payload/premium-plugins/teaching/references/disaggregation.md +49 -0
- package/payload/premium-plugins/teaching/references/materials.md +116 -0
- package/payload/premium-plugins/teaching/references/plan-structure.md +94 -0
- package/payload/premium-plugins/teaching/references/teaching-modes.md +83 -0
- package/payload/premium-plugins/teaching/skills/interactive-tutor.md +59 -0
- package/payload/premium-plugins/teaching/skills/lesson-planner.md +48 -0
- package/payload/premium-plugins/teaching/skills/study-pack-builder.md +52 -0
- package/payload/premium-plugins/writer-craft/PLUGIN.md +88 -0
- package/payload/premium-plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +92 -0
- package/payload/premium-plugins/writer-craft/references/audience-analysis.md +73 -0
- package/payload/premium-plugins/writer-craft/references/blueprinting-and-scene-cards.md +118 -0
- package/payload/premium-plugins/writer-craft/references/blueprinting-exercises.md +118 -0
- package/payload/premium-plugins/writer-craft/references/blueprinting-process.md +128 -0
- package/payload/premium-plugins/writer-craft/references/book-and-chapter-models.md +77 -0
- package/payload/premium-plugins/writer-craft/references/cause-effect-setup-payoff.md +79 -0
- package/payload/premium-plugins/writer-craft/references/citation-rules.md +103 -0
- package/payload/premium-plugins/writer-craft/references/conflict-escalation.md +81 -0
- package/payload/premium-plugins/writer-craft/references/copyediting.md +73 -0
- package/payload/premium-plugins/writer-craft/references/crafting-persuasive-story.md +76 -0
- package/payload/premium-plugins/writer-craft/references/developmental-editing.md +85 -0
- package/payload/premium-plugins/writer-craft/references/genre-specific-editing.md +78 -0
- package/payload/premium-plugins/writer-craft/references/hooking-readers.md +67 -0
- package/payload/premium-plugins/writer-craft/references/indirect-narration.md +72 -0
- package/payload/premium-plugins/writer-craft/references/inner-issue-and-protagonist-goal.md +66 -0
- package/payload/premium-plugins/writer-craft/references/journal-article-models.md +74 -0
- package/payload/premium-plugins/writer-craft/references/line-editing.md +55 -0
- package/payload/premium-plugins/writer-craft/references/misbelief-desire-worldview.md +87 -0
- package/payload/premium-plugins/writer-craft/references/neurochemistry-of-engagement.md +94 -0
- package/payload/premium-plugins/writer-craft/references/origin-scenes-and-escalation.md +82 -0
- package/payload/premium-plugins/writer-craft/references/other-source-models.md +146 -0
- package/payload/premium-plugins/writer-craft/references/persuasion-case-studies.md +67 -0
- package/payload/premium-plugins/writer-craft/references/pov-types-and-voice.md +91 -0
- package/payload/premium-plugins/writer-craft/references/prose-review-checklist.md +112 -0
- package/payload/premium-plugins/writer-craft/references/protagonist-filter.md +71 -0
- package/payload/premium-plugins/writer-craft/references/punctuation-and-grammar.md +72 -0
- package/payload/premium-plugins/writer-craft/references/reference-list-rules.md +70 -0
- package/payload/premium-plugins/writer-craft/references/repetition.md +71 -0
- package/payload/premium-plugins/writer-craft/references/review-manuscript-checklist.md +119 -0
- package/payload/premium-plugins/writer-craft/references/scene-analysis-framework.md +95 -0
- package/payload/premium-plugins/writer-craft/references/self-editing.md +89 -0
- package/payload/premium-plugins/writer-craft/references/sound-and-rhythm.md +64 -0
- package/payload/premium-plugins/writer-craft/references/tense-and-person.md +85 -0
- package/payload/premium-plugins/writer-craft/references/transformation-framework.md +86 -0
- package/payload/premium-plugins/writer-craft/references/word-economy.md +93 -0
- package/payload/premium-plugins/writer-craft/skills/citation-style.md +94 -0
- package/payload/premium-plugins/writer-craft/skills/editorial-practice.md +108 -0
- package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling.md +114 -0
- package/payload/premium-plugins/writer-craft/skills/point-of-view.md +97 -0
- package/payload/premium-plugins/writer-craft/skills/prose-craft.md +100 -0
- package/payload/premium-plugins/writer-craft/skills/reader-engagement.md +100 -0
- package/payload/premium-plugins/writer-craft/skills/review-manuscript.md +111 -0
- package/payload/premium-plugins/writer-craft/skills/review-prose.md +99 -0
- package/payload/premium-plugins/writer-craft/skills/review-scene.md +99 -0
- package/payload/premium-plugins/writer-craft/skills/story-architecture.md +106 -0
- package/payload/premium-plugins/writer-craft/skills/story-blueprint.md +133 -0
|
@@ -0,0 +1,899 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { int } from "neo4j-driver";
|
|
5
|
+
import { memorySearch } from "./tools/memory-search.js";
|
|
6
|
+
import { memoryWrite } from "./tools/memory-write.js";
|
|
7
|
+
import { memoryReindex } from "./tools/memory-reindex.js";
|
|
8
|
+
import { memoryIngestExtract } from "./tools/memory-ingest-extract.js";
|
|
9
|
+
import { memoryIngest } from "./tools/memory-ingest.js";
|
|
10
|
+
import { memoryIngestWeb } from "./tools/memory-ingest-web.js";
|
|
11
|
+
import { memoryUpdate } from "./tools/memory-update.js";
|
|
12
|
+
import { memoryDelete } from "./tools/memory-delete.js";
|
|
13
|
+
import { memoryListAttachments } from "./tools/memory-list-attachments.js";
|
|
14
|
+
import { memoryReadAttachment } from "./tools/memory-read-attachment.js";
|
|
15
|
+
import { memoryEditAttachment } from "./tools/memory-edit-attachment.js";
|
|
16
|
+
import { memoryRenameAttachment } from "./tools/memory-rename-attachment.js";
|
|
17
|
+
import { profileRead } from "./tools/profile-read.js";
|
|
18
|
+
import { profileUpdate } from "./tools/profile-update.js";
|
|
19
|
+
import { profileDelete } from "./tools/profile-delete.js";
|
|
20
|
+
import { getSession, closeDriver } from "./lib/neo4j.js";
|
|
21
|
+
import { embed } from "./lib/embeddings.js";
|
|
22
|
+
const server = new McpServer({
|
|
23
|
+
name: "maxy-memory",
|
|
24
|
+
version: "0.1.0",
|
|
25
|
+
});
|
|
26
|
+
const readOnly = process.env.READ_ONLY === "true";
|
|
27
|
+
const accountId = process.env.ACCOUNT_ID;
|
|
28
|
+
if (!accountId) {
|
|
29
|
+
throw new Error("ACCOUNT_ID environment variable is required");
|
|
30
|
+
}
|
|
31
|
+
// Scope filtering: comma-separated list of allowed scopes (e.g. "public,shared").
|
|
32
|
+
// When set, memory-search only returns nodes whose scope is in this list.
|
|
33
|
+
// When absent (admin), no scope filtering is applied.
|
|
34
|
+
const allowedScopes = process.env.ALLOWED_SCOPES
|
|
35
|
+
? process.env.ALLOWED_SCOPES.split(",").map((s) => s.trim()).filter(Boolean)
|
|
36
|
+
: undefined;
|
|
37
|
+
// Session scoping for conversation-search: limits results to this conversation.
|
|
38
|
+
// When absent (admin), conversation-search returns results across all conversations.
|
|
39
|
+
const sessionId = process.env.SESSION_ID || undefined;
|
|
40
|
+
// Per-agent knowledge scoping: when set, memory-search only returns nodes whose
|
|
41
|
+
// `agents` array contains this slug. For public agents, set via env var (server-level
|
|
42
|
+
// enforcement). For admin queries, passed as an optional tool param.
|
|
43
|
+
const envAgentSlug = process.env.AGENT_SLUG || undefined;
|
|
44
|
+
// Keyword subscriptions: comma-separated list of keywords for BM25-based reactive
|
|
45
|
+
// knowledge inclusion. When set, memory-search runs a BM25 query per keyword and
|
|
46
|
+
// unions results with directly-tagged nodes. Capped at 5 for Pi performance.
|
|
47
|
+
const MAX_KEYWORD_SUBSCRIPTIONS = 5;
|
|
48
|
+
const envKeywordSubscriptions = process.env.KNOWLEDGE_KEYWORDS
|
|
49
|
+
? process.env.KNOWLEDGE_KEYWORDS.split(",").map((s) => s.trim().toLowerCase()).filter(Boolean).slice(0, MAX_KEYWORD_SUBSCRIPTIONS)
|
|
50
|
+
: undefined;
|
|
51
|
+
server.tool("memory-search", "Search the knowledge graph using semantic vector search with graph traversal. Returns relevant nodes and their relationships.", {
|
|
52
|
+
query: z.string().describe("Natural language search query"),
|
|
53
|
+
labels: z
|
|
54
|
+
.array(z.string())
|
|
55
|
+
.optional()
|
|
56
|
+
.describe("Filter by node labels (e.g. Question, Service, DefinedTerm, Review, Person)"),
|
|
57
|
+
limit: z
|
|
58
|
+
.number()
|
|
59
|
+
.optional()
|
|
60
|
+
.describe("Maximum number of results (default 10)"),
|
|
61
|
+
expandHops: z
|
|
62
|
+
.number()
|
|
63
|
+
.optional()
|
|
64
|
+
.describe("Graph traversal depth for related nodes (default 1)"),
|
|
65
|
+
keywords: z
|
|
66
|
+
.array(z.string())
|
|
67
|
+
.optional()
|
|
68
|
+
.describe("Filter KnowledgeDocument results to those containing these topic keywords"),
|
|
69
|
+
keywordMatch: z
|
|
70
|
+
.enum(["any", "all"])
|
|
71
|
+
.optional()
|
|
72
|
+
.describe("Keyword match mode: 'any' (default, OR — matches docs with any listed keyword) or 'all' (AND — must have every keyword)"),
|
|
73
|
+
agentSlug: z
|
|
74
|
+
.string()
|
|
75
|
+
.optional()
|
|
76
|
+
.describe("Filter to nodes tagged for this agent slug (nodes where slug is in the agents array). For admin use — public agents use server-level env var."),
|
|
77
|
+
}, async ({ query, labels, limit, expandHops, keywords, keywordMatch, agentSlug: toolAgentSlug }) => {
|
|
78
|
+
// Env var takes precedence over tool param (security: public agent server-level enforcement)
|
|
79
|
+
const effectiveAgentSlug = envAgentSlug ?? toolAgentSlug;
|
|
80
|
+
try {
|
|
81
|
+
const results = await memorySearch({
|
|
82
|
+
query,
|
|
83
|
+
labels,
|
|
84
|
+
accountId,
|
|
85
|
+
limit,
|
|
86
|
+
expandHops,
|
|
87
|
+
allowedScopes,
|
|
88
|
+
keywords,
|
|
89
|
+
keywordMatch,
|
|
90
|
+
agentSlug: effectiveAgentSlug,
|
|
91
|
+
keywordSubscriptions: envKeywordSubscriptions,
|
|
92
|
+
});
|
|
93
|
+
if (results.length === 0) {
|
|
94
|
+
return {
|
|
95
|
+
content: [
|
|
96
|
+
{
|
|
97
|
+
type: "text",
|
|
98
|
+
text: "No results found for this query.",
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
const formatted = results.map((r) => {
|
|
104
|
+
let text = `[${r.labels.join(", ")}] (id: ${r.nodeId}) (score: ${r.score.toFixed(3)})\n`;
|
|
105
|
+
for (const [k, v] of Object.entries(r.properties)) {
|
|
106
|
+
text += ` ${k}: ${String(v)}\n`;
|
|
107
|
+
}
|
|
108
|
+
if (r.related.length > 0) {
|
|
109
|
+
text += " Related:\n";
|
|
110
|
+
for (const rel of r.related) {
|
|
111
|
+
const arrow = rel.direction === "outgoing" ? `--[${rel.relationship}]-->` : `<--[${rel.relationship}]--`;
|
|
112
|
+
text += ` ${arrow} [${rel.labels.join(", ")}]`;
|
|
113
|
+
const relProps = Object.entries(rel.properties)
|
|
114
|
+
.filter(([k]) => k !== "embedding" && k !== "accountId")
|
|
115
|
+
.map(([k, v]) => `${k}: ${String(v)}`)
|
|
116
|
+
.join(", ");
|
|
117
|
+
if (relProps)
|
|
118
|
+
text += ` {${relProps}}`;
|
|
119
|
+
text += "\n";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return text;
|
|
123
|
+
});
|
|
124
|
+
return {
|
|
125
|
+
content: [{ type: "text", text: formatted.join("\n---\n") }],
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
return {
|
|
130
|
+
content: [
|
|
131
|
+
{
|
|
132
|
+
type: "text",
|
|
133
|
+
text: `Search failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
isError: true,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
if (!readOnly) {
|
|
141
|
+
server.tool("memory-write", "Create a new node in the knowledge graph with automatic embedding computation.", {
|
|
142
|
+
labels: z
|
|
143
|
+
.array(z.string())
|
|
144
|
+
.describe("Node labels (e.g. ['Person'], ['Question'], ['DefinedTerm'])"),
|
|
145
|
+
properties: z
|
|
146
|
+
.record(z.string(), z.unknown())
|
|
147
|
+
.describe("Node properties as key-value pairs"),
|
|
148
|
+
scope: z
|
|
149
|
+
.string()
|
|
150
|
+
.describe("Visibility scope — required. Valid values: 'public', 'shared', 'admin', or 'user:{identifier}'."),
|
|
151
|
+
relationships: z
|
|
152
|
+
.array(z.object({
|
|
153
|
+
type: z.string().describe("Relationship type (e.g. HAS_PRICING, OFFERS)"),
|
|
154
|
+
direction: z.enum(["outgoing", "incoming"]),
|
|
155
|
+
targetNodeId: z.string().describe("Element ID of the target node"),
|
|
156
|
+
}))
|
|
157
|
+
.optional()
|
|
158
|
+
.describe("Relationships to create with existing nodes"),
|
|
159
|
+
}, async ({ labels, properties, scope, relationships }) => {
|
|
160
|
+
try {
|
|
161
|
+
const result = await memoryWrite({
|
|
162
|
+
labels,
|
|
163
|
+
properties: properties,
|
|
164
|
+
accountId,
|
|
165
|
+
scope,
|
|
166
|
+
relationships,
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
content: [
|
|
170
|
+
{
|
|
171
|
+
type: "text",
|
|
172
|
+
text: `Node created: [${result.labels.join(", ")}] (ID: ${result.nodeId})`,
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
return {
|
|
179
|
+
content: [
|
|
180
|
+
{
|
|
181
|
+
type: "text",
|
|
182
|
+
text: `Write failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
183
|
+
},
|
|
184
|
+
],
|
|
185
|
+
isError: true,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
server.tool("memory-update", "Update properties on an existing node in the knowledge graph. Finds the node by element ID, verifies account ownership, sets the provided properties, and recomputes the embedding.", {
|
|
190
|
+
nodeId: z.string().describe("Element ID of the node to update (from memory-search results)"),
|
|
191
|
+
properties: z
|
|
192
|
+
.record(z.string(), z.unknown())
|
|
193
|
+
.describe("Properties to set or overwrite. Restricted keys (embedding, accountId, createdAt) are ignored."),
|
|
194
|
+
}, async ({ nodeId, properties }) => {
|
|
195
|
+
try {
|
|
196
|
+
const result = await memoryUpdate({
|
|
197
|
+
nodeId,
|
|
198
|
+
properties: properties,
|
|
199
|
+
accountId,
|
|
200
|
+
});
|
|
201
|
+
return {
|
|
202
|
+
content: [
|
|
203
|
+
{
|
|
204
|
+
type: "text",
|
|
205
|
+
text: `Node updated: [${result.labels.join(", ")}] (ID: ${result.nodeId})`,
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
return {
|
|
212
|
+
content: [
|
|
213
|
+
{
|
|
214
|
+
type: "text",
|
|
215
|
+
text: `Update failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
216
|
+
},
|
|
217
|
+
],
|
|
218
|
+
isError: true,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
server.tool("session-compact-status", "Check whether a session compaction summary exists in the graph. Returns the most recent summary title, date, and briefing text. Use this at session start to determine whether a prior session was compacted and its context should be restored.", {}, async () => {
|
|
223
|
+
const session = getSession();
|
|
224
|
+
try {
|
|
225
|
+
const result = await session.run(`MATCH (n:CreativeWork {accountId: $accountId})
|
|
226
|
+
WHERE n.title STARTS WITH 'Session Summary'
|
|
227
|
+
RETURN n.title AS title, n.createdAt AS createdAt, n.abstract AS abstract
|
|
228
|
+
ORDER BY n.createdAt DESC LIMIT 1`, { accountId });
|
|
229
|
+
if (result.records.length === 0) {
|
|
230
|
+
return { content: [{ type: "text", text: "No session summaries found." }] };
|
|
231
|
+
}
|
|
232
|
+
const r = result.records[0];
|
|
233
|
+
const text = `Title: ${r.get("title")}\nDate: ${r.get("createdAt")}\n\n${r.get("abstract")}`;
|
|
234
|
+
return { content: [{ type: "text", text }] };
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
return {
|
|
238
|
+
content: [{ type: "text", text: `session-compact-status failed: ${err instanceof Error ? err.message : String(err)}` }],
|
|
239
|
+
isError: true,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
finally {
|
|
243
|
+
await session.close();
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
server.tool("session-compact", "Write a session summary to the knowledge graph. Call this when compacting context — provide the full briefing and the tool handles labelling, structure, and embedding.", {
|
|
247
|
+
content: z.string().describe("The session briefing — what was discussed, decisions made, work in progress, open questions, and anything learned about the user or their business"),
|
|
248
|
+
}, async ({ content }) => {
|
|
249
|
+
try {
|
|
250
|
+
const title = `Session Summary ${new Date().toISOString().slice(0, 10)}`;
|
|
251
|
+
const result = await memoryWrite({
|
|
252
|
+
labels: ["CreativeWork"],
|
|
253
|
+
properties: { title, abstract: content },
|
|
254
|
+
accountId,
|
|
255
|
+
scope: "admin",
|
|
256
|
+
});
|
|
257
|
+
return {
|
|
258
|
+
content: [{ type: "text", text: `Session summary saved (ID: ${result.nodeId})` }],
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
return {
|
|
263
|
+
content: [{ type: "text", text: `session-compact failed: ${err instanceof Error ? err.message : String(err)}` }],
|
|
264
|
+
isError: true,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
server.tool("memory-reindex", "Rebuild vector embeddings for all nodes missing embeddings. Run after seeding or bulk updates.", {}, async () => {
|
|
269
|
+
try {
|
|
270
|
+
const result = await memoryReindex(accountId);
|
|
271
|
+
return {
|
|
272
|
+
content: [
|
|
273
|
+
{
|
|
274
|
+
type: "text",
|
|
275
|
+
text: `Reindex complete: ${result.nodesProcessed} processed, ${result.nodesSkipped} skipped.${result.errors.length > 0 ? `\nErrors: ${result.errors.join("; ")}` : ""}`,
|
|
276
|
+
},
|
|
277
|
+
],
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
catch (err) {
|
|
281
|
+
return {
|
|
282
|
+
content: [
|
|
283
|
+
{
|
|
284
|
+
type: "text",
|
|
285
|
+
text: `Reindex failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
286
|
+
},
|
|
287
|
+
],
|
|
288
|
+
isError: true,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
server.tool("memory-ingest-extract", "Extract text from an uploaded file and chunk it server-side. Supports PDF (via pdftotext), plain text, and markdown. " +
|
|
293
|
+
"Rejects CSV (structured data — use memory-write instead) and images (metadata-only). " +
|
|
294
|
+
"Returns section titles and chunk previews. Full chunk content is cached server-side — " +
|
|
295
|
+
"the calling agent generates summaries from the previews, then calls memory-ingest with only summaries (no raw content needed).", {
|
|
296
|
+
storagePath: z.string().describe("Absolute path to the stored file on disk"),
|
|
297
|
+
filename: z.string().describe("Original filename as uploaded"),
|
|
298
|
+
mimeType: z.string().describe("MIME type of the file"),
|
|
299
|
+
attachmentId: z.string().describe("UUID of the file attachment — used as cache key for memory-ingest"),
|
|
300
|
+
}, async ({ storagePath, filename, mimeType, attachmentId }) => {
|
|
301
|
+
try {
|
|
302
|
+
const result = await memoryIngestExtract({ storagePath, filename, mimeType, attachmentId });
|
|
303
|
+
return {
|
|
304
|
+
content: [{
|
|
305
|
+
type: "text",
|
|
306
|
+
text: JSON.stringify(result),
|
|
307
|
+
}],
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
catch (err) {
|
|
311
|
+
return {
|
|
312
|
+
content: [{
|
|
313
|
+
type: "text",
|
|
314
|
+
text: `memory-ingest-extract failed for "${filename}": ${err instanceof Error ? err.message : String(err)}`,
|
|
315
|
+
}],
|
|
316
|
+
isError: true,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
server.tool("memory-ingest", "Ingest a knowledge document into the graph as a three-level hierarchy: KnowledgeDocument → Section → Chunk. " +
|
|
321
|
+
"Requires a prior call to memory-ingest-extract (which caches the raw chunk content server-side). " +
|
|
322
|
+
"The calling agent provides only summaries — no raw content needed. The tool retrieves cached content, " +
|
|
323
|
+
"pairs it with summaries, embeds everything, and writes to the graph. " +
|
|
324
|
+
"Re-ingesting with the same attachmentId replaces the existing hierarchy — safe to call on already-ingested documents.", {
|
|
325
|
+
attachmentId: z.string().describe("UUID of the file attachment — must match a prior memory-ingest-extract call"),
|
|
326
|
+
documentSummary: z.string().describe("LLM-generated summary of the entire document (1-3 sentences)"),
|
|
327
|
+
sections: z.array(z.object({
|
|
328
|
+
title: z.string().describe("Section title (must match the title from memory-ingest-extract)"),
|
|
329
|
+
summary: z.string().describe("LLM-generated summary of this section (1 sentence)"),
|
|
330
|
+
chunkSummaries: z.array(z.string().describe("LLM-generated summary of one chunk (1 sentence)"))
|
|
331
|
+
.describe("One summary per chunk in this section, in order"),
|
|
332
|
+
})).describe("One entry per section from memory-ingest-extract, in order"),
|
|
333
|
+
scope: z.string().describe("Visibility scope for all created nodes — required. Valid values: 'public', 'shared', 'admin', or 'user:{identifier}'."),
|
|
334
|
+
entities: z.array(z.object({
|
|
335
|
+
name: z.string().describe("Entity name (for logging)"),
|
|
336
|
+
nodeId: z.string().describe("Neo4j element ID of the entity node"),
|
|
337
|
+
})).optional().describe("Entities referenced in the document to link via REFERENCES relationships"),
|
|
338
|
+
sourceUrl: z.string().optional().describe("Original URL for web-sourced documents. Omit for file uploads."),
|
|
339
|
+
sourceType: z.string().optional().describe("Provenance: 'upload' or 'web'. Omit for file uploads (defaults to no sourceType)."),
|
|
340
|
+
keywords: z.array(z.string()).optional().describe("LLM-extracted topic keywords for the document. Normalized (lowercase, trimmed, deduplicated) before storage."),
|
|
341
|
+
userKeywords: z.array(z.string()).optional().describe("Keywords explicitly provided by the user. Always included verbatim (after normalization). " +
|
|
342
|
+
"Use for user-defined collections and classification (e.g. 'file this under quarterly reports')."),
|
|
343
|
+
}, async ({ attachmentId, documentSummary, sections, scope, entities, sourceUrl, sourceType, keywords, userKeywords }) => {
|
|
344
|
+
try {
|
|
345
|
+
const result = await memoryIngest({
|
|
346
|
+
accountId,
|
|
347
|
+
attachmentId,
|
|
348
|
+
documentSummary,
|
|
349
|
+
sections,
|
|
350
|
+
scope,
|
|
351
|
+
entities,
|
|
352
|
+
sourceUrl,
|
|
353
|
+
sourceType,
|
|
354
|
+
keywords,
|
|
355
|
+
userKeywords,
|
|
356
|
+
});
|
|
357
|
+
return {
|
|
358
|
+
content: [{
|
|
359
|
+
type: "text",
|
|
360
|
+
text: JSON.stringify({
|
|
361
|
+
documentNodeId: result.documentNodeId,
|
|
362
|
+
sectionCount: result.sectionCount,
|
|
363
|
+
chunkCount: result.chunkCount,
|
|
364
|
+
entityLinks: result.entityLinks,
|
|
365
|
+
documentSummary: result.documentSummary,
|
|
366
|
+
keywords: result.keywords,
|
|
367
|
+
}),
|
|
368
|
+
}],
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
return {
|
|
373
|
+
content: [{
|
|
374
|
+
type: "text",
|
|
375
|
+
text: `memory-ingest failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
376
|
+
}],
|
|
377
|
+
isError: true,
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
server.tool("memory-ingest-web", "Ingest web content into the knowledge graph. Accepts a URL and its pre-fetched readable content " +
|
|
382
|
+
"(the agent calls WebFetch first, then passes the text here). " +
|
|
383
|
+
"Extracts a title, writes content to a temp file, and delegates to the existing extraction + chunking pipeline. " +
|
|
384
|
+
"Returns section/chunk previews for the agent to generate summaries, then call memory-ingest with sourceUrl and sourceType. " +
|
|
385
|
+
"If the URL was previously ingested, returns the existing document info so the agent can inform the user.", {
|
|
386
|
+
url: z.string().describe("The web page URL being ingested"),
|
|
387
|
+
content: z.string().describe("The readable text content of the web page (pre-fetched by the agent via WebFetch)"),
|
|
388
|
+
scope: z.string().optional().describe("Intended visibility scope (for logging). The actual scope is set when the agent subsequently calls memory-ingest."),
|
|
389
|
+
}, async ({ url, content, scope }) => {
|
|
390
|
+
try {
|
|
391
|
+
const result = await memoryIngestWeb({
|
|
392
|
+
accountId,
|
|
393
|
+
url,
|
|
394
|
+
content,
|
|
395
|
+
scope,
|
|
396
|
+
});
|
|
397
|
+
const response = {
|
|
398
|
+
attachmentId: result.attachmentId,
|
|
399
|
+
title: result.title,
|
|
400
|
+
sourceUrl: url,
|
|
401
|
+
sourceType: "web",
|
|
402
|
+
...result.extract,
|
|
403
|
+
};
|
|
404
|
+
if (result.existingDocument) {
|
|
405
|
+
response.existingDocument = result.existingDocument;
|
|
406
|
+
}
|
|
407
|
+
return {
|
|
408
|
+
content: [{
|
|
409
|
+
type: "text",
|
|
410
|
+
text: JSON.stringify(response),
|
|
411
|
+
}],
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
catch (err) {
|
|
415
|
+
return {
|
|
416
|
+
content: [{
|
|
417
|
+
type: "text",
|
|
418
|
+
text: `memory-ingest-web failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
419
|
+
}],
|
|
420
|
+
isError: true,
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
server.tool("memory-delete", "Delete a knowledge document from the graph. Default: soft delete (sets a deletedAt timestamp, " +
|
|
425
|
+
"excludes from search, preservable for 7 days). With force=true: permanently deletes the " +
|
|
426
|
+
"KnowledgeDocument and its entire hierarchy (Sections, Chunks, REFERENCES edges) from the graph, " +
|
|
427
|
+
"plus removes the attachment directory from disk.", {
|
|
428
|
+
attachmentId: z.string().describe("UUID of the document to delete (the attachmentId from memory-search or memory-list-attachments)"),
|
|
429
|
+
force: z.boolean().optional().describe("When true, permanently delete (hard delete). Default false = soft delete with 7-day grace period."),
|
|
430
|
+
}, async ({ attachmentId, force }) => {
|
|
431
|
+
try {
|
|
432
|
+
const result = await memoryDelete({ accountId, attachmentId, force });
|
|
433
|
+
const modeLabel = result.mode === "soft" ? "Soft-deleted" : "Permanently deleted";
|
|
434
|
+
let text = `${modeLabel}: ${result.attachmentId.slice(0, 8)}…`;
|
|
435
|
+
if (result.mode === "soft") {
|
|
436
|
+
text += `\nDocument and ${result.sections} sections, ${result.chunks} chunks excluded from search.`;
|
|
437
|
+
text += `\nGrace period: 7 days. Use force=true to permanently delete.`;
|
|
438
|
+
if (result.deletedAt)
|
|
439
|
+
text += `\nDeleted at: ${result.deletedAt}`;
|
|
440
|
+
if (result.purgeAfter)
|
|
441
|
+
text += `\nPurge after: ${result.purgeAfter}`;
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
text += `\nRemoved: 1 document, ${result.sections} sections, ${result.chunks} chunks, ${result.references} references.`;
|
|
445
|
+
text += result.diskRemoved ? `\nDisk files removed.` : `\nNo files on disk (web-ingested document).`;
|
|
446
|
+
}
|
|
447
|
+
return { content: [{ type: "text", text }] };
|
|
448
|
+
}
|
|
449
|
+
catch (err) {
|
|
450
|
+
return {
|
|
451
|
+
content: [{ type: "text", text: `memory-delete failed: ${err instanceof Error ? err.message : String(err)}` }],
|
|
452
|
+
isError: true,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
server.tool("memory-list-attachments", "List stored file attachments for this account with their ingestion status. " +
|
|
457
|
+
"Returns original filenames, sizes, upload dates, and whether each file has been ingested " +
|
|
458
|
+
"into the knowledge graph. Does not include web-ingested documents (those have no file on disk).", {}, async () => {
|
|
459
|
+
try {
|
|
460
|
+
const result = await memoryListAttachments(accountId);
|
|
461
|
+
if (result.entries.length === 0) {
|
|
462
|
+
return { content: [{ type: "text", text: "No stored attachments found." }] };
|
|
463
|
+
}
|
|
464
|
+
const lines = result.entries.map((e) => {
|
|
465
|
+
const status = e.softDeleted
|
|
466
|
+
? "deleted (pending purge)"
|
|
467
|
+
: e.ingested
|
|
468
|
+
? "ingested"
|
|
469
|
+
: "not ingested";
|
|
470
|
+
const size = e.sizeBytes < 1024
|
|
471
|
+
? `${e.sizeBytes} B`
|
|
472
|
+
: e.sizeBytes < 1024 * 1024
|
|
473
|
+
? `${(e.sizeBytes / 1024).toFixed(1)} KB`
|
|
474
|
+
: `${(e.sizeBytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
475
|
+
return `${e.filename} (${e.mimeType}, ${size}) [${status}]\n ID: ${e.attachmentId} Stored: ${e.storedAt}`;
|
|
476
|
+
});
|
|
477
|
+
const summary = `${result.totalFiles} files (${result.ingestedCount} ingested${result.skippedCount > 0 ? `, ${result.skippedCount} skipped` : ""})`;
|
|
478
|
+
return {
|
|
479
|
+
content: [{ type: "text", text: `${summary}\n\n${lines.join("\n\n")}` }],
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
catch (err) {
|
|
483
|
+
return {
|
|
484
|
+
content: [{ type: "text", text: `memory-list-attachments failed: ${err instanceof Error ? err.message : String(err)}` }],
|
|
485
|
+
isError: true,
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
});
|
|
489
|
+
server.tool("memory-read-attachment", "Read the content of a stored attachment from disk. Returns the full text for text/markdown files, " +
|
|
490
|
+
"extracted text for PDFs (via pdftotext), and metadata + HTTP URL for images. " +
|
|
491
|
+
"Use this to show the user what's in a file or to prepare content for editing.", {
|
|
492
|
+
attachmentId: z.string().describe("UUID of the attachment to read"),
|
|
493
|
+
}, async ({ attachmentId }) => {
|
|
494
|
+
try {
|
|
495
|
+
const result = await memoryReadAttachment(accountId, attachmentId);
|
|
496
|
+
let text = `**${result.filename}** (${result.mimeType}, ${result.sizeBytes} bytes)\nStored: ${result.storedAt}\n`;
|
|
497
|
+
if (result.contentNote)
|
|
498
|
+
text += `\n_${result.contentNote}_\n`;
|
|
499
|
+
if (result.httpUrl)
|
|
500
|
+
text += `\nURL: ${result.httpUrl}\n`;
|
|
501
|
+
if (result.content)
|
|
502
|
+
text += `\n---\n\n${result.content}`;
|
|
503
|
+
return { content: [{ type: "text", text }] };
|
|
504
|
+
}
|
|
505
|
+
catch (err) {
|
|
506
|
+
return {
|
|
507
|
+
content: [{ type: "text", text: `memory-read-attachment failed: ${err instanceof Error ? err.message : String(err)}` }],
|
|
508
|
+
isError: true,
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
server.tool("memory-edit-attachment", "Edit a stored text/markdown attachment in place. Replaces the file content on disk, updates the " +
|
|
513
|
+
"metadata timestamp, and re-extracts the file for chunking (populating the extract cache). " +
|
|
514
|
+
"After this call, use memory-ingest with updated summaries to sync the knowledge graph. " +
|
|
515
|
+
"Only text/plain and text/markdown files are editable — PDFs and images are rejected.", {
|
|
516
|
+
attachmentId: z.string().describe("UUID of the attachment to edit"),
|
|
517
|
+
content: z.string().describe("The full replacement text content"),
|
|
518
|
+
}, async ({ attachmentId, content }) => {
|
|
519
|
+
try {
|
|
520
|
+
const result = await memoryEditAttachment({ accountId, attachmentId, content });
|
|
521
|
+
let text = `Edited: ${result.filename} (${result.oldSizeBytes} → ${result.newSizeBytes} bytes)`;
|
|
522
|
+
if (result.cachePopulated) {
|
|
523
|
+
text += `\nExtract cache populated: ${result.extractSections} sections, ${result.extractChunks} chunks.`;
|
|
524
|
+
text += `\nCall memory-ingest with updated summaries to sync the knowledge graph.`;
|
|
525
|
+
}
|
|
526
|
+
else {
|
|
527
|
+
text += `\nWARNING: File updated on disk but extract cache could not be populated.`;
|
|
528
|
+
text += `\nCall memory-ingest-extract manually, then memory-ingest.`;
|
|
529
|
+
}
|
|
530
|
+
return { content: [{ type: "text", text }] };
|
|
531
|
+
}
|
|
532
|
+
catch (err) {
|
|
533
|
+
return {
|
|
534
|
+
content: [{ type: "text", text: `memory-edit-attachment failed: ${err instanceof Error ? err.message : String(err)}` }],
|
|
535
|
+
isError: true,
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
server.tool("memory-rename-attachment", "Rename a stored attachment. Updates the filename in the .meta.json sidecar and the " +
|
|
540
|
+
"KnowledgeDocument name in Neo4j (if the file has been ingested). The file on disk " +
|
|
541
|
+
"is not renamed — it uses UUID-based naming. Only the human-readable metadata changes.", {
|
|
542
|
+
attachmentId: z.string().describe("UUID of the attachment to rename"),
|
|
543
|
+
newFilename: z.string().describe("The new filename (e.g. 'quarterly-report-q1.pdf')"),
|
|
544
|
+
}, async ({ attachmentId, newFilename }) => {
|
|
545
|
+
try {
|
|
546
|
+
const result = await memoryRenameAttachment({ accountId, attachmentId, newFilename });
|
|
547
|
+
if (result.oldFilename === result.newFilename) {
|
|
548
|
+
return { content: [{ type: "text", text: `Filename unchanged: "${result.newFilename}"` }] };
|
|
549
|
+
}
|
|
550
|
+
let text = `Renamed: "${result.oldFilename}" → "${result.newFilename}"`;
|
|
551
|
+
text += result.graphUpdated
|
|
552
|
+
? `\nKnowledge graph updated.`
|
|
553
|
+
: `\nNo KnowledgeDocument in graph (file not yet ingested — metadata only).`;
|
|
554
|
+
return { content: [{ type: "text", text }] };
|
|
555
|
+
}
|
|
556
|
+
catch (err) {
|
|
557
|
+
return {
|
|
558
|
+
content: [{ type: "text", text: `memory-rename-attachment failed: ${err instanceof Error ? err.message : String(err)}` }],
|
|
559
|
+
isError: true,
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
});
|
|
563
|
+
server.tool("conversation-list", "List conversations or retrieve messages from a specific conversation. " +
|
|
564
|
+
"Without conversationId: lists all conversations with message counts, ordered by most recent. " +
|
|
565
|
+
"With conversationId: returns all messages in that conversation chronologically (independent of embeddings). " +
|
|
566
|
+
"With includeMessages: returns conversations with their messages inline (useful for batch review workflows).", {
|
|
567
|
+
conversationId: z
|
|
568
|
+
.string()
|
|
569
|
+
.optional()
|
|
570
|
+
.describe("If provided, returns messages for this conversation. If omitted, lists all conversations."),
|
|
571
|
+
agentType: z
|
|
572
|
+
.string()
|
|
573
|
+
.optional()
|
|
574
|
+
.describe("Filter conversations by agent type ('admin' or 'public'). Only applies when listing conversations."),
|
|
575
|
+
agentSlug: z
|
|
576
|
+
.string()
|
|
577
|
+
.optional()
|
|
578
|
+
.describe("Filter conversations by public agent slug (e.g. 'maxy-assistant'). Only applies when listing conversations."),
|
|
579
|
+
since: z
|
|
580
|
+
.string()
|
|
581
|
+
.optional()
|
|
582
|
+
.describe("ISO 8601 timestamp. Only return conversations created at or after this time. Only applies when listing conversations."),
|
|
583
|
+
includeMessages: z
|
|
584
|
+
.boolean()
|
|
585
|
+
.optional()
|
|
586
|
+
.describe("When true, include message content inline with each conversation (max 50 messages per conversation). Only applies when listing conversations."),
|
|
587
|
+
limit: z
|
|
588
|
+
.number()
|
|
589
|
+
.optional()
|
|
590
|
+
.describe("Maximum results (default 50 for conversations, 200 for messages)"),
|
|
591
|
+
}, async ({ conversationId, agentType, agentSlug, since, includeMessages, limit }) => {
|
|
592
|
+
const dbSession = getSession();
|
|
593
|
+
try {
|
|
594
|
+
if (conversationId) {
|
|
595
|
+
// Messages mode — chronological listing for a specific conversation
|
|
596
|
+
const messageLimit = limit ?? 200;
|
|
597
|
+
const result = await dbSession.run(`MATCH (m:Message)-[:PART_OF]->(c:Conversation {conversationId: $conversationId, accountId: $accountId})
|
|
598
|
+
RETURN m.role AS role, m.content AS content, m.createdAt AS createdAt
|
|
599
|
+
ORDER BY m.createdAt ASC
|
|
600
|
+
LIMIT $limit`, { conversationId, accountId, limit: int(messageLimit) });
|
|
601
|
+
if (result.records.length === 0) {
|
|
602
|
+
return {
|
|
603
|
+
content: [{ type: "text", text: "No messages found for this conversation." }],
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
const formatted = result.records.map((r) => {
|
|
607
|
+
const role = String(r.get("role") ?? "unknown");
|
|
608
|
+
const content = String(r.get("content") ?? "");
|
|
609
|
+
const createdAt = String(r.get("createdAt") ?? "");
|
|
610
|
+
return `[${role}] (${createdAt})\n ${content}`;
|
|
611
|
+
});
|
|
612
|
+
return {
|
|
613
|
+
content: [{ type: "text", text: formatted.join("\n---\n") }],
|
|
614
|
+
};
|
|
615
|
+
}
|
|
616
|
+
// List mode — all conversations with message counts (or inline messages)
|
|
617
|
+
const convLimit = limit ?? (includeMessages ? 20 : 50);
|
|
618
|
+
const whereClauses = [];
|
|
619
|
+
if (agentType)
|
|
620
|
+
whereClauses.push("c.agentType = $agentType");
|
|
621
|
+
if (agentSlug)
|
|
622
|
+
whereClauses.push("c.agentSlug = $agentSlug");
|
|
623
|
+
if (since)
|
|
624
|
+
whereClauses.push("c.createdAt >= datetime($since)");
|
|
625
|
+
const whereStr = whereClauses.length > 0 ? `WHERE ${whereClauses.join(" AND ")}` : "";
|
|
626
|
+
const params = {
|
|
627
|
+
accountId,
|
|
628
|
+
limit: int(convLimit),
|
|
629
|
+
...(agentType ? { agentType } : {}),
|
|
630
|
+
...(agentSlug ? { agentSlug } : {}),
|
|
631
|
+
...(since ? { since } : {}),
|
|
632
|
+
};
|
|
633
|
+
if (includeMessages) {
|
|
634
|
+
// Inline messages mode — conversations with message content
|
|
635
|
+
const msgLimit = 50;
|
|
636
|
+
const result = await dbSession.run(`MATCH (c:Conversation {accountId: $accountId})
|
|
637
|
+
${whereStr}
|
|
638
|
+
WITH c ORDER BY c.createdAt DESC LIMIT $limit
|
|
639
|
+
OPTIONAL MATCH (m:Message)-[:PART_OF]->(c)
|
|
640
|
+
WITH c, m ORDER BY m.createdAt ASC
|
|
641
|
+
WITH c, collect({role: m.role, content: m.content, createdAt: m.createdAt})[0..${msgLimit}] AS messages
|
|
642
|
+
RETURN c.conversationId AS conversationId,
|
|
643
|
+
c.agentType AS agentType,
|
|
644
|
+
c.agentSlug AS agentSlug,
|
|
645
|
+
c.name AS name,
|
|
646
|
+
c.createdAt AS createdAt,
|
|
647
|
+
size(messages) AS messageCount,
|
|
648
|
+
messages`, params);
|
|
649
|
+
if (result.records.length === 0) {
|
|
650
|
+
return {
|
|
651
|
+
content: [{ type: "text", text: "No conversations found." }],
|
|
652
|
+
};
|
|
653
|
+
}
|
|
654
|
+
const formatted = result.records.map((r) => {
|
|
655
|
+
const id = String(r.get("conversationId") ?? "");
|
|
656
|
+
const type = String(r.get("agentType") ?? "");
|
|
657
|
+
const slug = r.get("agentSlug");
|
|
658
|
+
const name = r.get("name");
|
|
659
|
+
const createdAt = String(r.get("createdAt") ?? "");
|
|
660
|
+
const label = name ? `"${name}"` : id.slice(0, 8) + "…";
|
|
661
|
+
const messages = r.get("messages");
|
|
662
|
+
const agentInfo = slug ? `${type}/${slug}` : type;
|
|
663
|
+
const header = `### ${label} [${agentInfo}] (${createdAt})`;
|
|
664
|
+
const validMessages = (messages || []).filter((m) => m.role != null);
|
|
665
|
+
if (validMessages.length === 0) {
|
|
666
|
+
return `${header}\n (no messages)`;
|
|
667
|
+
}
|
|
668
|
+
const msgLines = validMessages.map((m) => {
|
|
669
|
+
const role = String(m.role);
|
|
670
|
+
const content = String(m.content ?? "");
|
|
671
|
+
return `[${role}] ${content}`;
|
|
672
|
+
});
|
|
673
|
+
return `${header}\n${msgLines.join("\n")}`;
|
|
674
|
+
});
|
|
675
|
+
return {
|
|
676
|
+
content: [{ type: "text", text: formatted.join("\n\n") }],
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
// Metadata mode — conversations with message counts only
|
|
680
|
+
const result = await dbSession.run(`MATCH (c:Conversation {accountId: $accountId})
|
|
681
|
+
${whereStr}
|
|
682
|
+
OPTIONAL MATCH (m:Message)-[:PART_OF]->(c)
|
|
683
|
+
RETURN c.conversationId AS conversationId,
|
|
684
|
+
c.agentType AS agentType,
|
|
685
|
+
c.agentSlug AS agentSlug,
|
|
686
|
+
c.name AS name,
|
|
687
|
+
c.createdAt AS createdAt,
|
|
688
|
+
count(m) AS messageCount
|
|
689
|
+
ORDER BY c.createdAt DESC
|
|
690
|
+
LIMIT $limit`, params);
|
|
691
|
+
if (result.records.length === 0) {
|
|
692
|
+
return {
|
|
693
|
+
content: [{ type: "text", text: "No conversations found." }],
|
|
694
|
+
};
|
|
695
|
+
}
|
|
696
|
+
const formatted = result.records.map((r) => {
|
|
697
|
+
const id = String(r.get("conversationId") ?? "");
|
|
698
|
+
const type = String(r.get("agentType") ?? "");
|
|
699
|
+
const slug = r.get("agentSlug");
|
|
700
|
+
const name = r.get("name");
|
|
701
|
+
const createdAt = String(r.get("createdAt") ?? "");
|
|
702
|
+
const msgCount = typeof r.get("messageCount") === "number"
|
|
703
|
+
? r.get("messageCount")
|
|
704
|
+
: Number(r.get("messageCount"));
|
|
705
|
+
const label = name ? `"${name}"` : id.slice(0, 8) + "…";
|
|
706
|
+
const agentInfo = slug ? `${type}/${slug}` : type;
|
|
707
|
+
return `${label} [${agentInfo}] (${createdAt}) — ${msgCount} messages`;
|
|
708
|
+
});
|
|
709
|
+
return {
|
|
710
|
+
content: [{ type: "text", text: formatted.join("\n") }],
|
|
711
|
+
};
|
|
712
|
+
}
|
|
713
|
+
catch (err) {
|
|
714
|
+
return {
|
|
715
|
+
content: [
|
|
716
|
+
{
|
|
717
|
+
type: "text",
|
|
718
|
+
text: `conversation-list failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
719
|
+
},
|
|
720
|
+
],
|
|
721
|
+
isError: true,
|
|
722
|
+
};
|
|
723
|
+
}
|
|
724
|
+
finally {
|
|
725
|
+
await dbSession.close();
|
|
726
|
+
}
|
|
727
|
+
});
|
|
728
|
+
server.tool("profile-update", "Create, update, or reinforce a user preference. Supports modes: reinforce (re-observed, boost confidence), update (value changed), contradict (value contradicts prior), merge (combine overlapping preferences).", {
|
|
729
|
+
category: z.enum(["communication", "scheduling", "decision", "workflow", "content", "interaction"])
|
|
730
|
+
.describe("Preference category"),
|
|
731
|
+
key: z.string().describe("Preference identifier (e.g. 'response_length', 'meeting_time')"),
|
|
732
|
+
value: z.string().describe("The preference value (e.g. 'terse', 'never before 10am')"),
|
|
733
|
+
source: z.enum(["explicit", "behavioural"]).optional()
|
|
734
|
+
.describe("How the preference was observed. Defaults to 'behavioural'."),
|
|
735
|
+
mode: z.enum(["reinforce", "update", "contradict", "merge"]).optional()
|
|
736
|
+
.describe("Update mode. Defaults to 'reinforce'."),
|
|
737
|
+
conversationId: z.string().optional()
|
|
738
|
+
.describe("Conversation ID for evidence linking"),
|
|
739
|
+
profileFields: z.record(z.string(), z.unknown()).optional()
|
|
740
|
+
.describe("Top-level UserProfile fields to update (e.g. timezone, locale, role)"),
|
|
741
|
+
mergeSourceIds: z.array(z.string()).optional()
|
|
742
|
+
.describe("For mode 'merge': preferenceIds of sources to combine into this preference"),
|
|
743
|
+
}, async ({ category, key, value, source, mode, conversationId, profileFields, mergeSourceIds }) => {
|
|
744
|
+
try {
|
|
745
|
+
const result = await profileUpdate({
|
|
746
|
+
accountId,
|
|
747
|
+
category,
|
|
748
|
+
key,
|
|
749
|
+
value,
|
|
750
|
+
source,
|
|
751
|
+
mode,
|
|
752
|
+
conversationId,
|
|
753
|
+
profileFields: profileFields,
|
|
754
|
+
mergeSourceIds,
|
|
755
|
+
});
|
|
756
|
+
return {
|
|
757
|
+
content: [{
|
|
758
|
+
type: "text",
|
|
759
|
+
text: `Preference ${result.action}: ${category}/${key} (confidence: ${result.confidence.toFixed(2)}${result.mergedCount ? `, merged ${result.mergedCount} sources` : ""})`,
|
|
760
|
+
}],
|
|
761
|
+
};
|
|
762
|
+
}
|
|
763
|
+
catch (err) {
|
|
764
|
+
return {
|
|
765
|
+
content: [{
|
|
766
|
+
type: "text",
|
|
767
|
+
text: `profile-update failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
768
|
+
}],
|
|
769
|
+
isError: true,
|
|
770
|
+
};
|
|
771
|
+
}
|
|
772
|
+
});
|
|
773
|
+
server.tool("profile-delete", "Delete a specific user preference. Use when the owner says 'forget that' or 'don't remember X'. Idempotent — succeeds even if the preference doesn't exist.", {
|
|
774
|
+
category: z.enum(["communication", "scheduling", "decision", "workflow", "content", "interaction"])
|
|
775
|
+
.describe("Preference category"),
|
|
776
|
+
key: z.string().describe("Preference key to delete"),
|
|
777
|
+
}, async ({ category, key }) => {
|
|
778
|
+
try {
|
|
779
|
+
const result = await profileDelete({ accountId, category, key });
|
|
780
|
+
return {
|
|
781
|
+
content: [{
|
|
782
|
+
type: "text",
|
|
783
|
+
text: result.deleted
|
|
784
|
+
? `Deleted preference: ${category}/${key}`
|
|
785
|
+
: `No preference found for ${category}/${key} — nothing to delete.`,
|
|
786
|
+
}],
|
|
787
|
+
};
|
|
788
|
+
}
|
|
789
|
+
catch (err) {
|
|
790
|
+
return {
|
|
791
|
+
content: [{
|
|
792
|
+
type: "text",
|
|
793
|
+
text: `profile-delete failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
794
|
+
}],
|
|
795
|
+
isError: true,
|
|
796
|
+
};
|
|
797
|
+
}
|
|
798
|
+
});
|
|
799
|
+
// profile-read contains owner PII (name, role, timezone, preferences) —
|
|
800
|
+
// admin-only, not exposed to the public agent.
|
|
801
|
+
server.tool("profile-read", "Read the business owner's profile and preferences. Returns preferences grouped by category (communication, scheduling, decisions, workflow, content, interaction). " +
|
|
802
|
+
"With detail=true: includes per-preference confidence scores, evidence trail (which conversations the preference was observed in), source (explicit vs behavioural), and summary statistics. " +
|
|
803
|
+
"Use detail=true when the owner asks 'what do you know about me?' or when reviewing memory accuracy.", {
|
|
804
|
+
detail: z.boolean().optional().describe("When true, returns per-preference confidence, source, evidence trail, and memory statistics. " +
|
|
805
|
+
"Default false returns a compact summary for system prompt injection."),
|
|
806
|
+
}, async ({ detail }) => {
|
|
807
|
+
try {
|
|
808
|
+
const result = await profileRead({ accountId, detail: detail ?? false });
|
|
809
|
+
return {
|
|
810
|
+
content: [{ type: "text", text: result.summary }],
|
|
811
|
+
};
|
|
812
|
+
}
|
|
813
|
+
catch (err) {
|
|
814
|
+
return {
|
|
815
|
+
content: [
|
|
816
|
+
{
|
|
817
|
+
type: "text",
|
|
818
|
+
text: `profile-read failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
819
|
+
},
|
|
820
|
+
],
|
|
821
|
+
isError: true,
|
|
822
|
+
};
|
|
823
|
+
}
|
|
824
|
+
});
|
|
825
|
+
}
|
|
826
|
+
// conversation-search is read-only — available regardless of readOnly mode.
|
|
827
|
+
// When SESSION_ID is set (public agent), results are scoped to that conversation only.
|
|
828
|
+
server.tool("conversation-search", "Search conversation history using semantic vector search. Returns relevant past messages, ordered by relevance. Use this to recall specific past interactions.", {
|
|
829
|
+
query: z.string().describe("Natural language search query"),
|
|
830
|
+
limit: z
|
|
831
|
+
.number()
|
|
832
|
+
.optional()
|
|
833
|
+
.describe("Maximum number of results (default 10)"),
|
|
834
|
+
}, async ({ query, limit: maxResults }) => {
|
|
835
|
+
try {
|
|
836
|
+
const queryEmbedding = await embed(query);
|
|
837
|
+
const resultLimit = maxResults ?? 10;
|
|
838
|
+
const dbSession = getSession();
|
|
839
|
+
try {
|
|
840
|
+
const sessionClause = sessionId
|
|
841
|
+
? "AND node.conversationId = $sessionId"
|
|
842
|
+
: "";
|
|
843
|
+
const result = await dbSession.run(`CALL db.index.vector.queryNodes('message_embedding', $limit, $embedding)
|
|
844
|
+
YIELD node, score
|
|
845
|
+
WHERE node.accountId = $accountId
|
|
846
|
+
${sessionClause}
|
|
847
|
+
RETURN node.messageId AS messageId,
|
|
848
|
+
node.role AS role,
|
|
849
|
+
node.content AS content,
|
|
850
|
+
node.conversationId AS conversationId,
|
|
851
|
+
node.createdAt AS createdAt,
|
|
852
|
+
score
|
|
853
|
+
ORDER BY score DESC
|
|
854
|
+
LIMIT $limit`, {
|
|
855
|
+
embedding: queryEmbedding,
|
|
856
|
+
limit: int(resultLimit),
|
|
857
|
+
accountId,
|
|
858
|
+
...(sessionId ? { sessionId } : {}),
|
|
859
|
+
});
|
|
860
|
+
if (result.records.length === 0) {
|
|
861
|
+
return {
|
|
862
|
+
content: [{ type: "text", text: "No conversation history found for this query." }],
|
|
863
|
+
};
|
|
864
|
+
}
|
|
865
|
+
const formatted = result.records.map((r) => {
|
|
866
|
+
const role = r.get("role");
|
|
867
|
+
const content = r.get("content");
|
|
868
|
+
const score = typeof r.get("score") === "number" ? r.get("score") : Number(r.get("score"));
|
|
869
|
+
const createdAt = String(r.get("createdAt"));
|
|
870
|
+
return `[${role}] (score: ${score.toFixed(3)}, ${createdAt})\n ${content}`;
|
|
871
|
+
});
|
|
872
|
+
return {
|
|
873
|
+
content: [{ type: "text", text: formatted.join("\n---\n") }],
|
|
874
|
+
};
|
|
875
|
+
}
|
|
876
|
+
finally {
|
|
877
|
+
await dbSession.close();
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
catch (err) {
|
|
881
|
+
return {
|
|
882
|
+
content: [
|
|
883
|
+
{
|
|
884
|
+
type: "text",
|
|
885
|
+
text: `Conversation search failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
886
|
+
},
|
|
887
|
+
],
|
|
888
|
+
isError: true,
|
|
889
|
+
};
|
|
890
|
+
}
|
|
891
|
+
});
|
|
892
|
+
// Cleanup on exit
|
|
893
|
+
process.on("SIGINT", async () => {
|
|
894
|
+
await closeDriver();
|
|
895
|
+
process.exit(0);
|
|
896
|
+
});
|
|
897
|
+
const transport = new StdioServerTransport();
|
|
898
|
+
await server.connect(transport);
|
|
899
|
+
//# sourceMappingURL=index.js.map
|