@rubytech/create-realagent-code 0.1.114 → 0.1.116
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/__tests__/installer-specialist-registration.test.js +40 -1
- package/dist/__tests__/premium-bundle-gate.test.js +59 -0
- package/dist/index.js +24 -1
- package/dist/specialist-registration.js +15 -0
- package/package.json +1 -1
- package/payload/platform/config/brand.json +2 -2
- package/payload/platform/neo4j/schema.cypher +1 -1
- package/payload/platform/plugins/.claude-plugin/marketplace.json +0 -20
- package/payload/platform/plugins/admin/PLUGIN.md +1 -0
- package/payload/platform/plugins/admin/hooks/signal-detector-stop.sh +309 -0
- package/payload/platform/plugins/contacts/mcp/dist/index.js +3 -3
- package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +1 -1
- package/payload/platform/plugins/docs/references/contacts-guide.md +1 -9
- package/payload/platform/plugins/docs/references/getting-started.md +1 -1
- package/payload/platform/plugins/docs/references/internals.md +1 -1
- package/payload/platform/plugins/docs/references/platform.md +1 -1
- package/payload/platform/plugins/docs/references/plugins-guide.md +1 -2
- package/payload/platform/plugins/linkedin-import/PLUGIN.md +1 -1
- package/payload/platform/plugins/memory/PLUGIN.md +8 -1
- package/payload/platform/plugins/memory/mcp/dist/index.js +32 -0
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts +35 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js +73 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js.map +1 -0
- package/payload/platform/plugins/sales/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/sales/PLUGIN.md +9 -9
- package/payload/platform/plugins/sales/references/close-tracking.md +6 -6
- package/payload/platform/plugins/sales/references/faq.md +1 -5
- package/payload/platform/plugins/sales/references/objection-handling.md +2 -2
- package/payload/platform/plugins/scheduling/PLUGIN.md +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +2 -2
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js +1 -1
- package/payload/platform/plugins/workflows/PLUGIN.md +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +2 -2
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -1
- package/payload/platform/scripts/conversation-id-allowlist.txt +0 -7
- package/payload/platform/scripts/seed-neo4j.sh +2 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +42 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +34 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +83 -2
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +12 -0
- package/payload/platform/templates/specialists/agents/project-manager.md +1 -3
- package/payload/platform/templates/specialists/agents/signal-detector.md +129 -0
- package/payload/server/{chunk-FSPPVVWM.js → chunk-FJCI6X3H.js} +192 -0
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/public/assets/{ChatInput-CsnIedhS.js → ChatInput-CJo_77bp.js} +5 -1
- package/payload/server/public/assets/{Checkbox-CWugFyFT.js → Checkbox-YrQovXpN.js} +1 -1
- package/payload/server/public/assets/{admin-D3gZuyUn.js → admin-DloKrK2i.js} +25 -25
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-CeTRKWDb.js → architectureDiagram-Q4EWVU46-Breg9-99.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DeeIX5U3.js → blockDiagram-DXYQGD6D-DXf1_673.js} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CFsqZuil.js → c4Diagram-AHTNJAMY-CSZ36W4-.js} +1 -1
- package/payload/server/public/assets/channel-BmZnt3PP.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-DpIXuFM0.js → chunk-336JU56O-DsrLk2eK.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-Qk8qqrvA.js → chunk-426QAEUC-JpNfNf81.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-DtM8-CUn.js → chunk-4TB4RGXK-DmClEAD0.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-CrSQ4ySU.js → chunk-5FUZZQ4R-BI9blW3N.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-Bn2nQwdj.js → chunk-5PVQY5BW-BbgttEFO.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-CzCPnR0P.js → chunk-EDXVE4YY-BX_LCFOx.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-CgZj9RoG.js → chunk-ENJZ2VHE-Bb7EoD0w.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-wy-eNjwW.js → chunk-ICPOFSXX-DH8uQk-s.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-CMmJtL8S.js → chunk-OYMX7WX6-FH5kgXsw.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-CFCW7OaT.js → chunk-U2HBQHQK-D_ljlkHr.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-Bgh-CJSN.js → chunk-X2U36JSP-BX3EmZvm.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-BXKwZ4vN.js → chunk-YZCP3GAM-Vu7-E93h.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-BiOuK5NP.js → chunk-ZZ45TVLE-CwjhNPX5.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-kmMLFUpV.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BV7Ae8ct.js +1 -0
- package/payload/server/public/assets/clone-B5eqoN9I.js +1 -0
- package/payload/server/public/assets/{dagre-DyCxa9Q2.js → dagre-Ce6gsj0C.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-Cffo_hmf.js → dagre-KV5264BT-BaMGpsoy.js} +1 -1
- package/payload/server/public/assets/data-NMvGx6jm.js +1 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-Bt93Du3V.js → diagram-5BDNPKRD-CHEE9rjq.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-v4r-tBsC.js → diagram-G4DWMVQ6-C98sZLW1.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-DKrVPOP-.js → diagram-MMDJMWI5-DNvMGsTZ.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-B1PzWQb9.js → diagram-TYMM5635-Cdte4IBa.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-ClQzsQAs.js → erDiagram-SMLLAGMA-C9VZsWXK.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-h3IbpN_7.js → flowDiagram-DWJPFMVM-tuP5fzzR.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-ClaxOJi8.js → ganttDiagram-T4ZO3ILL-SJgRPUwx.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-pM-U4ClD.js → gitGraphDiagram-UUTBAWPF-DU_cI_50.js} +1 -1
- package/payload/server/public/assets/graph-CN60KyTy.js +1 -0
- package/payload/server/public/assets/graph-labels-h39S93Xo.js +1 -0
- package/payload/server/public/assets/{graphlib-CwimOv_M.js → graphlib-D_nAsvmx.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-DcO3Giwe.js → infoDiagram-42DDH7IO-Cj2Y19m6.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BcdSL5VS.js → ishikawaDiagram-UXIWVN3A-DMc1xq1y.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-CYahHYzf.js → journeyDiagram-VCZTEJTY-C4CRAQma.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Cl5KhoS4.js → kanban-definition-6JOO6SKY-CTr4AldU.js} +1 -1
- package/payload/server/public/assets/lib-Bnh57com.js +29 -0
- package/payload/server/public/assets/{line-d_2oTxLp.js → line-Btlm_IAl.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-CMMDGv3x.js → mermaid-parser.core-DXFdj_y1.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-DK9ENGbr.js → mermaid.core-DFBhoCr5.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-mA3x3MFG.js → mindmap-definition-QFDTVHPH-r9gVQybo.js} +1 -1
- package/payload/server/public/assets/{page-CgDmg_fX.js → page-B0iMmY6t.js} +1 -1
- package/payload/server/public/assets/{page-D9lluVl7.js → page-CFRU-BdJ.js} +2 -2
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-CW1nGFlY.js → pieDiagram-DEJITSTG-CHKZjSaH.js} +1 -1
- package/payload/server/public/assets/{public-DdLMkNdS.js → public-DyGWgfaZ.js} +4 -4
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-DI5igJhR.js → quadrantDiagram-34T5L4WZ-CSGR1HJr.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-DyVeI4e_.js → requirementDiagram-MS252O5E-DZ6hX9D6.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-CCTTBYKY.js → sankeyDiagram-XADWPNL6-DbZBKh0m.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-hVVf35ly.js → sequenceDiagram-FGHM5R23-BHHpb8dt.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-CSLuQDUX.js → stateDiagram-FHFEXIEX-DQ1jiLB4.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CByT2RzF.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-sxC3W8Q4.js → timeline-definition-GMOUNBTQ-BlGiEU7p.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-Ro-ton6Z.js → vennDiagram-DHZGUBPP-DmEH-hsB.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-T-dKD0Zx.js → wardleyDiagram-NUSXRM2D-C7KJJ40d.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-CfProPts.js → xychartDiagram-5P7HB3ND-JDnusCaa.js} +1 -1
- package/payload/server/public/data.html +4 -4
- package/payload/server/public/graph.html +5 -5
- package/payload/server/public/index.html +7 -7
- package/payload/server/public/public.html +4 -4
- package/payload/server/server.js +52 -8
- package/payload/platform/plugins/teaching/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/teaching/PLUGIN.md +0 -58
- package/payload/platform/plugins/teaching/skills/interactive-tutor/SKILL.md +0 -59
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/assessment.md +0 -70
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +0 -43
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +0 -83
- package/payload/platform/plugins/teaching/skills/lesson-planner/SKILL.md +0 -48
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/context-gathering.md +0 -41
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/plan-structure.md +0 -94
- package/payload/platform/plugins/teaching/skills/study-pack-builder/SKILL.md +0 -52
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/disaggregation.md +0 -49
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/materials.md +0 -116
- package/payload/platform/plugins/venture-studio/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/venture-studio/PLUGIN.md +0 -119
- package/payload/platform/plugins/venture-studio/bin/scaffold.sh +0 -116
- package/payload/platform/plugins/venture-studio/skills/brand-pack/SKILL.md +0 -256
- package/payload/platform/plugins/venture-studio/skills/brand-pack/references/color-psychology.md +0 -118
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/SKILL.md +0 -374
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +0 -64
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/compliance-research-checklist.md +0 -53
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +0 -88
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +0 -39
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/design-tokens-application.md +0 -79
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/html-pdf-pipeline.md +0 -236
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/internal-workings-scrub.md +0 -33
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/termsheet-template.md +0 -88
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/index.html +0 -1565
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/render-pdf.mjs +0 -91
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/term_sheet.html +0 -715
- package/payload/platform/plugins/venture-studio/skills/office-hours/SKILL.md +0 -587
- package/payload/platform/plugins/venture-studio/skills/prototype-host/SKILL.md +0 -179
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/cloudflared-ingress-edit.md +0 -81
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/scaffold-frameworks.md +0 -60
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/systemd-user-service.md +0 -104
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/SKILL.md +0 -336
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/aarrr-metrics.md +0 -275
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/assumption-testing.md +0 -93
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/boolean-search.md +0 -308
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/build-measure-learn.md +0 -262
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/business-model-canvas.md +0 -171
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/commitment-signals.md +0 -246
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/design-thinking.md +0 -183
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/earlyvangelist.md +0 -190
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/first-principles.md +0 -58
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/fishbone.md +0 -114
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/five-whys.md +0 -43
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/ice-scoring.md +0 -237
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/innovation-accounting.md +0 -290
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/jtbd.md +0 -105
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +0 -361
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/market-type.md +0 -167
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mom-test.md +0 -193
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mvp-types.md +0 -200
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/og-images.md +0 -239
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pareto.md +0 -103
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/persona-development.md +0 -291
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pivot-types.md +0 -225
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/positioning-statement.md +0 -179
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/prd.md +0 -363
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pre-mortem.md +0 -74
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/problem-validation.md +0 -253
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/product-market-fit.md +0 -256
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/research-synthesis.md +0 -276
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/three-engines-of-growth.md +0 -248
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/validation-tests.md +0 -89
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/value-proposition-canvas.md +0 -121
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/win-loss-analysis.md +0 -242
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/workflow-mapping.md +0 -271
- package/payload/platform/plugins/waitlist/.claude-plugin/plugin.json +0 -17
- package/payload/platform/plugins/waitlist/PLUGIN.md +0 -86
- package/payload/platform/plugins/waitlist/mcp/dist/index.d.ts +0 -2
- package/payload/platform/plugins/waitlist/mcp/dist/index.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/index.js +0 -388
- package/payload/platform/plugins/waitlist/mcp/dist/index.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.d.ts +0 -16
- package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.js +0 -58
- package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.d.ts +0 -3
- package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.js +0 -48
- package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.d.ts +0 -5
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js +0 -40
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.d.ts +0 -2
- package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.js +0 -70
- package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts +0 -34
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js +0 -129
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.d.ts +0 -27
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.js +0 -127
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.d.ts +0 -23
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.js +0 -58
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts +0 -83
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js +0 -433
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.d.ts +0 -19
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.js +0 -81
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.d.ts +0 -28
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.js +0 -50
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.d.ts +0 -33
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.d.ts.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js +0 -297
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js.map +0 -1
- package/payload/platform/plugins/waitlist/mcp/package.json +0 -23
- package/payload/platform/plugins/waitlist/mcp/vitest.config.ts +0 -9
- package/payload/platform/plugins/writer-craft/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/writer-craft/PLUGIN.md +0 -88
- package/payload/platform/plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +0 -92
- package/payload/platform/plugins/writer-craft/skills/citation-style/SKILL.md +0 -94
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +0 -77
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/citation-rules.md +0 -103
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/journal-article-models.md +0 -74
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/other-source-models.md +0 -146
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +0 -70
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/SKILL.md +0 -108
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/copyediting.md +0 -73
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +0 -85
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +0 -78
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/line-editing.md +0 -55
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/self-editing.md +0 -89
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +0 -114
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +0 -73
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +0 -76
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +0 -67
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +0 -86
- package/payload/platform/plugins/writer-craft/skills/point-of-view/SKILL.md +0 -97
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +0 -72
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +0 -91
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +0 -71
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +0 -85
- package/payload/platform/plugins/writer-craft/skills/prose-craft/SKILL.md +0 -100
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +0 -72
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/repetition.md +0 -71
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +0 -64
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/word-economy.md +0 -93
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/SKILL.md +0 -100
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +0 -79
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +0 -81
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +0 -67
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +0 -94
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/SKILL.md +0 -111
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +0 -119
- package/payload/platform/plugins/writer-craft/skills/review-prose/SKILL.md +0 -99
- package/payload/platform/plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +0 -112
- package/payload/platform/plugins/writer-craft/skills/review-scene/SKILL.md +0 -99
- package/payload/platform/plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +0 -95
- package/payload/platform/plugins/writer-craft/skills/story-architecture/SKILL.md +0 -106
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +0 -118
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +0 -66
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +0 -87
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +0 -82
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/SKILL.md +0 -133
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +0 -118
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +0 -128
- package/payload/premium-plugins/.claude-plugin/marketplace.json +0 -23
- package/payload/premium-plugins/teaching/.claude-plugin/plugin.json +0 -8
- package/payload/premium-plugins/teaching/PLUGIN.md +0 -58
- package/payload/premium-plugins/teaching/skills/interactive-tutor/SKILL.md +0 -59
- package/payload/premium-plugins/teaching/skills/interactive-tutor/references/assessment.md +0 -70
- package/payload/premium-plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +0 -43
- package/payload/premium-plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +0 -83
- package/payload/premium-plugins/teaching/skills/lesson-planner/SKILL.md +0 -48
- package/payload/premium-plugins/teaching/skills/lesson-planner/references/context-gathering.md +0 -41
- package/payload/premium-plugins/teaching/skills/lesson-planner/references/plan-structure.md +0 -94
- package/payload/premium-plugins/teaching/skills/study-pack-builder/SKILL.md +0 -52
- package/payload/premium-plugins/teaching/skills/study-pack-builder/references/disaggregation.md +0 -49
- package/payload/premium-plugins/teaching/skills/study-pack-builder/references/materials.md +0 -116
- package/payload/premium-plugins/venture-studio/.claude-plugin/plugin.json +0 -8
- package/payload/premium-plugins/venture-studio/PLUGIN.md +0 -119
- package/payload/premium-plugins/venture-studio/bin/scaffold.sh +0 -116
- package/payload/premium-plugins/venture-studio/skills/brand-pack/SKILL.md +0 -256
- package/payload/premium-plugins/venture-studio/skills/brand-pack/references/color-psychology.md +0 -118
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/SKILL.md +0 -374
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +0 -64
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/compliance-research-checklist.md +0 -53
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +0 -88
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +0 -39
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/design-tokens-application.md +0 -79
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/html-pdf-pipeline.md +0 -236
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/internal-workings-scrub.md +0 -33
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/termsheet-template.md +0 -88
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/templates/prospectus/index.html +0 -1565
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/templates/prospectus/render-pdf.mjs +0 -91
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/templates/prospectus/term_sheet.html +0 -715
- package/payload/premium-plugins/venture-studio/skills/office-hours/SKILL.md +0 -587
- package/payload/premium-plugins/venture-studio/skills/prototype-host/SKILL.md +0 -179
- package/payload/premium-plugins/venture-studio/skills/prototype-host/references/cloudflared-ingress-edit.md +0 -81
- package/payload/premium-plugins/venture-studio/skills/prototype-host/references/scaffold-frameworks.md +0 -60
- package/payload/premium-plugins/venture-studio/skills/prototype-host/references/systemd-user-service.md +0 -104
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/SKILL.md +0 -336
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/aarrr-metrics.md +0 -275
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/assumption-testing.md +0 -93
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/boolean-search.md +0 -308
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/build-measure-learn.md +0 -262
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/business-model-canvas.md +0 -171
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/commitment-signals.md +0 -246
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/design-thinking.md +0 -183
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/earlyvangelist.md +0 -190
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/first-principles.md +0 -58
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/fishbone.md +0 -114
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/five-whys.md +0 -43
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/ice-scoring.md +0 -237
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/innovation-accounting.md +0 -290
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/jtbd.md +0 -105
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +0 -361
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/market-type.md +0 -167
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/mom-test.md +0 -193
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/mvp-types.md +0 -200
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/og-images.md +0 -239
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/pareto.md +0 -103
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/persona-development.md +0 -291
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/pivot-types.md +0 -225
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/positioning-statement.md +0 -179
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/prd.md +0 -363
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/pre-mortem.md +0 -74
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/problem-validation.md +0 -253
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/product-market-fit.md +0 -256
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/research-synthesis.md +0 -276
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/three-engines-of-growth.md +0 -248
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/validation-tests.md +0 -89
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/value-proposition-canvas.md +0 -121
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/win-loss-analysis.md +0 -242
- package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/workflow-mapping.md +0 -271
- package/payload/premium-plugins/writer-craft/.claude-plugin/plugin.json +0 -8
- package/payload/premium-plugins/writer-craft/PLUGIN.md +0 -88
- package/payload/premium-plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +0 -92
- package/payload/premium-plugins/writer-craft/skills/citation-style/SKILL.md +0 -94
- package/payload/premium-plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +0 -77
- package/payload/premium-plugins/writer-craft/skills/citation-style/references/citation-rules.md +0 -103
- package/payload/premium-plugins/writer-craft/skills/citation-style/references/journal-article-models.md +0 -74
- package/payload/premium-plugins/writer-craft/skills/citation-style/references/other-source-models.md +0 -146
- package/payload/premium-plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +0 -70
- package/payload/premium-plugins/writer-craft/skills/editorial-practice/SKILL.md +0 -108
- package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/copyediting.md +0 -73
- package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +0 -85
- package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +0 -78
- package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/line-editing.md +0 -55
- package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/self-editing.md +0 -89
- package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +0 -114
- package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +0 -73
- package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +0 -76
- package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +0 -67
- package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +0 -86
- package/payload/premium-plugins/writer-craft/skills/point-of-view/SKILL.md +0 -97
- package/payload/premium-plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +0 -72
- package/payload/premium-plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +0 -91
- package/payload/premium-plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +0 -71
- package/payload/premium-plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +0 -85
- package/payload/premium-plugins/writer-craft/skills/prose-craft/SKILL.md +0 -100
- package/payload/premium-plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +0 -72
- package/payload/premium-plugins/writer-craft/skills/prose-craft/references/repetition.md +0 -71
- package/payload/premium-plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +0 -64
- package/payload/premium-plugins/writer-craft/skills/prose-craft/references/word-economy.md +0 -93
- package/payload/premium-plugins/writer-craft/skills/reader-engagement/SKILL.md +0 -100
- package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +0 -79
- package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +0 -81
- package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +0 -67
- package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +0 -94
- package/payload/premium-plugins/writer-craft/skills/review-manuscript/SKILL.md +0 -111
- package/payload/premium-plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +0 -119
- package/payload/premium-plugins/writer-craft/skills/review-prose/SKILL.md +0 -99
- package/payload/premium-plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +0 -112
- package/payload/premium-plugins/writer-craft/skills/review-scene/SKILL.md +0 -99
- package/payload/premium-plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +0 -95
- package/payload/premium-plugins/writer-craft/skills/story-architecture/SKILL.md +0 -106
- package/payload/premium-plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +0 -118
- package/payload/premium-plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +0 -66
- package/payload/premium-plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +0 -87
- package/payload/premium-plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +0 -82
- package/payload/premium-plugins/writer-craft/skills/story-blueprint/SKILL.md +0 -133
- package/payload/premium-plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +0 -118
- package/payload/premium-plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +0 -128
- package/payload/server/public/assets/channel-CrSx5mnG.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-C3IDJsqN.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BOIrJ5Zb.js +0 -1
- package/payload/server/public/assets/clone-P8Fkz7JD.js +0 -1
- package/payload/server/public/assets/data-DRfwJPja.js +0 -1
- package/payload/server/public/assets/graph-B4FFYwus.js +0 -1
- package/payload/server/public/assets/graph-labels-Cpk9Ktt0.js +0 -1
- package/payload/server/public/assets/lib--yuBd0Xi.js +0 -33
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C5JejhQU.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"neo4j.d.ts","sourceRoot":"","sources":["../../src/lib/neo4j.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAuBtD,wBAAgB,SAAS,IAAI,MAAM,CAgBlC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAKjD"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import neo4j from "neo4j-driver";
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
let driver = null;
|
|
5
|
-
function readPassword() {
|
|
6
|
-
if (process.env.NEO4J_PASSWORD)
|
|
7
|
-
return process.env.NEO4J_PASSWORD;
|
|
8
|
-
const passwordFile = resolve(process.env.PLATFORM_ROOT ?? resolve(import.meta.dirname, "../../../.."), "config/.neo4j-password");
|
|
9
|
-
try {
|
|
10
|
-
return readFileSync(passwordFile, "utf-8").trim();
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
throw new Error(`Neo4j password not found. Expected at ${passwordFile} or in NEO4J_PASSWORD env var.`);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export function getDriver() {
|
|
17
|
-
if (!driver) {
|
|
18
|
-
// NEO4J_URI must be explicit. Silent default to:7687 was the
|
|
19
|
-
// vector for the orphan data in Maxy's DB from a realagent install.
|
|
20
|
-
const uri = process.env.NEO4J_URI;
|
|
21
|
-
if (!uri) {
|
|
22
|
-
throw new Error("[waitlist] NEO4J_URI unset — refusing to default to bolt://localhost:7687");
|
|
23
|
-
}
|
|
24
|
-
const user = process.env.NEO4J_USER ?? "neo4j";
|
|
25
|
-
const password = readPassword();
|
|
26
|
-
console.error(`[waitlist] resolved neo4j_uri=${uri}`);
|
|
27
|
-
driver = neo4j.driver(uri, neo4j.auth.basic(user, password));
|
|
28
|
-
}
|
|
29
|
-
return driver;
|
|
30
|
-
}
|
|
31
|
-
export function getSession() {
|
|
32
|
-
return getDriver().session();
|
|
33
|
-
}
|
|
34
|
-
export async function closeDriver() {
|
|
35
|
-
if (driver) {
|
|
36
|
-
await driver.close();
|
|
37
|
-
driver = null;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=neo4j.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"neo4j.js","sourceRoot":"","sources":["../../src/lib/neo4j.ts"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC,SAAS,YAAY;IACnB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAElE,MAAM,YAAY,GAAG,OAAO,CAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACxE,wBAAwB,CACzB,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,yCAAyC,YAAY,gCAAgC,CACtF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,6DAA6D;QAC7D,oEAAoE;QACpE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC;QAC/C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;QACtD,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
|
package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitlist-persist.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/waitlist-persist.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Issue 2 — regression gate for the PARTICIPATES_IN cypher shape.
|
|
3
|
-
*
|
|
4
|
-
* The waitlist extraction used to store the Conversation join only as
|
|
5
|
-
* `p.sessionId = $conversationId` (a scalar), and `/graph` traverses
|
|
6
|
-
* edges only — so every waitlist-extracted Person rendered as a
|
|
7
|
-
* graph-orphan. The fix writes the canonical `(p:Person)-[:PARTICIPATES_IN]->(c:Conversation)`
|
|
8
|
-
* edge on the same session as the Person MERGE.
|
|
9
|
-
*
|
|
10
|
-
* Behavioural verification (insert + re-run + tombstone cases) runs via
|
|
11
|
-
* the Real Agent cron cycle described in the Verification
|
|
12
|
-
* section — this test is the plain-text regression gate: if the
|
|
13
|
-
* composed cypher ever stops containing the expected MATCH / OPTIONAL
|
|
14
|
-
* MATCH / MERGE / ON CREATE SET clauses, the shape has drifted and
|
|
15
|
-
* the Pi-side behavioural test won't run until the next cron cycle,
|
|
16
|
-
* four hours later. The string assertions fire in milliseconds.
|
|
17
|
-
*/
|
|
18
|
-
import { describe, it, expect } from "vitest";
|
|
19
|
-
import { PARTICIPATES_IN_CYPHER } from "../waitlist-persist.js";
|
|
20
|
-
describe("PARTICIPATES_IN_CYPHER", () => {
|
|
21
|
-
it("MATCHes the Person node scoped by email+accountId", () => {
|
|
22
|
-
expect(PARTICIPATES_IN_CYPHER).toMatch(/MATCH \(p:Person \{email: \$email, accountId: \$accountId\}\)/);
|
|
23
|
-
});
|
|
24
|
-
it("OPTIONAL MATCHes the Conversation scoped by conversationId+accountId", () => {
|
|
25
|
-
expect(PARTICIPATES_IN_CYPHER).toMatch(/OPTIONAL MATCH \(c:Conversation \{conversationId: \$conversationId, accountId: \$accountId\}\)/);
|
|
26
|
-
});
|
|
27
|
-
it("guards against the tombstone path via WHERE c IS NOT NULL", () => {
|
|
28
|
-
// A reference to a deleted/never-existed Conversation returns zero
|
|
29
|
-
// records rather than erroring — the caller logs `edge-skipped
|
|
30
|
-
// tombstone` and moves on. Dropping this clause would make the MERGE
|
|
31
|
-
// create a dangling `(p)-[:PARTICIPATES_IN]->(NULL)` (not permitted
|
|
32
|
-
// by Neo4j, so the whole extraction would throw instead of skip).
|
|
33
|
-
expect(PARTICIPATES_IN_CYPHER).toMatch(/WHERE c IS NOT NULL/);
|
|
34
|
-
});
|
|
35
|
-
it("MERGEs the PARTICIPATES_IN edge idempotently", () => {
|
|
36
|
-
expect(PARTICIPATES_IN_CYPHER).toMatch(/MERGE \(p\)-\[r:PARTICIPATES_IN\]->\(c\)/);
|
|
37
|
-
});
|
|
38
|
-
it("sets r.joinedAt = datetime() on CREATE only (matches group-manage.ts:51)", () => {
|
|
39
|
-
// Preserving joinedAt on MATCH is load-bearing for idempotency: a
|
|
40
|
-
// second cron cycle must not bump the timestamp. This test mirrors
|
|
41
|
-
// the invariant `group-manage` enforces.
|
|
42
|
-
expect(PARTICIPATES_IN_CYPHER).toMatch(/ON CREATE SET r\.joinedAt = datetime\(\)/);
|
|
43
|
-
expect(PARTICIPATES_IN_CYPHER).not.toMatch(/ON MATCH SET r\.joinedAt/);
|
|
44
|
-
});
|
|
45
|
-
it("reports edgeCreated via an OPTIONAL-MATCH pre-check", () => {
|
|
46
|
-
// The boolean drives the log line that distinguishes `edge-created`
|
|
47
|
-
// (fresh) from re-runs (idempotent no-op). Removing it collapses
|
|
48
|
-
// both into silence. The pre-check is an additional OPTIONAL MATCH
|
|
49
|
-
// against an `existing` edge (rather than an `EXISTS { }` projection)
|
|
50
|
-
// because `EXISTS { }` as a WITH-projection alias is Neo4j 5.13+;
|
|
51
|
-
// the OPTIONAL-MATCH form is safe across every 5.x minor version.
|
|
52
|
-
expect(PARTICIPATES_IN_CYPHER).toMatch(/OPTIONAL MATCH \(p\)-\[existing:PARTICIPATES_IN\]->\(c\)/);
|
|
53
|
-
expect(PARTICIPATES_IN_CYPHER).toMatch(/existing IS NOT NULL AS hadEdge/);
|
|
54
|
-
expect(PARTICIPATES_IN_CYPHER).toMatch(/NOT hadEdge AS edgeCreated/);
|
|
55
|
-
// Negative assertion: no EXISTS-subquery-as-projection syntax (older
|
|
56
|
-
// Neo4j CE installs throw SyntaxError on this form).
|
|
57
|
-
expect(PARTICIPATES_IN_CYPHER).not.toMatch(/EXISTS \{ MATCH [^}]+\} AS hadEdge/);
|
|
58
|
-
});
|
|
59
|
-
it("RETURNs conversationId so the caller can confirm which Conversation was linked", () => {
|
|
60
|
-
expect(PARTICIPATES_IN_CYPHER).toMatch(/RETURN c\.conversationId AS conversationId/);
|
|
61
|
-
});
|
|
62
|
-
it("never references p.sessionId (the legacy scalar join is write-untouched)", () => {
|
|
63
|
-
// The sessionId coexistence note in .docs/neo4j.md is load-bearing
|
|
64
|
-
// for contact-export.ts:122 — the edge and the scalar are
|
|
65
|
-
// defence-in-depth, not alternatives. If this cypher starts
|
|
66
|
-
// touching p.sessionId, the write-path semantics have drifted.
|
|
67
|
-
expect(PARTICIPATES_IN_CYPHER).not.toMatch(/p\.sessionId/);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
//# sourceMappingURL=waitlist-persist.test.js.map
|
package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitlist-persist.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/waitlist-persist.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CACpC,+DAA+D,CAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CACpC,gGAAgG,CACjG,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,mEAAmE;QACnE,+DAA+D;QAC/D,qEAAqE;QACrE,oEAAoE;QACpE,kEAAkE;QAClE,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CACpC,0CAA0C,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,kEAAkE;QAClE,mEAAmE;QACnE,yCAAyC;QACzC,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CACpC,0CAA0C,CAC3C,CAAC;QACF,MAAM,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,oEAAoE;QACpE,iEAAiE;QACjE,mEAAmE;QACnE,sEAAsE;QACtE,kEAAkE;QAClE,kEAAkE;QAClE,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CACpC,0DAA0D,CAC3D,CAAC;QACF,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CACpC,iCAAiC,CAClC,CAAC;QACF,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACrE,qEAAqE;QACrE,qDAAqD;QACrD,MAAM,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CACpC,4CAA4C,CAC7C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,mEAAmE;QACnE,0DAA0D;QAC1D,4DAA4D;QAC5D,+DAA+D;QAC/D,MAAM,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extract waitlist contact details from public conversation transcripts via LLM.
|
|
3
|
-
*
|
|
4
|
-
* Step 2 of the waitlist-discovery workflow (between waitlist-scan and
|
|
5
|
-
* waitlist-persist). Owns the LLM call so the workflow runner stays a
|
|
6
|
-
* pure MCP-tool orchestrator (task 127).
|
|
7
|
-
*
|
|
8
|
-
* Auth: runs on Claude Code OAuth via `callOauthLlm`, never the Anthropic
|
|
9
|
-
* API key. Same auth path as memory-classify (admin-side classifiers).
|
|
10
|
-
*
|
|
11
|
-
* The extraction prompt lives in this file's source. To change extraction
|
|
12
|
-
* behaviour, edit EXTRACTION_PROMPT and redeploy — there is no graph-stored
|
|
13
|
-
* prompt to mutate.
|
|
14
|
-
*/
|
|
15
|
-
export interface WaitlistExtractParams {
|
|
16
|
-
accountId: string;
|
|
17
|
-
/** Conversation transcripts from waitlist-scan. Accepted shapes:
|
|
18
|
-
* - the scan's structured output `{conversations: [...]}`
|
|
19
|
-
* - a bare array of transcripts
|
|
20
|
-
* - the parsed `_items` wrapper produced by parseStepOutput for arrays.
|
|
21
|
-
*/
|
|
22
|
-
conversations: unknown;
|
|
23
|
-
/** Optional model override. Omit to use the account's adminModel. */
|
|
24
|
-
model?: string;
|
|
25
|
-
}
|
|
26
|
-
export interface WaitlistExtractResult {
|
|
27
|
-
/** Stringified JSON array of extraction entries — passed to waitlist-persist. */
|
|
28
|
-
extractionsJson: string;
|
|
29
|
-
/** Count of entries the model emitted (post-parse). */
|
|
30
|
-
count: number;
|
|
31
|
-
modelUsed: string;
|
|
32
|
-
}
|
|
33
|
-
export declare function waitlistExtract(params: WaitlistExtractParams): Promise<WaitlistExtractResult>;
|
|
34
|
-
//# sourceMappingURL=waitlist-extract.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitlist-extract.d.ts","sourceRoot":"","sources":["../../src/tools/waitlist-extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA8BH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,eAAe,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAcD,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAiGhC"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extract waitlist contact details from public conversation transcripts via LLM.
|
|
3
|
-
*
|
|
4
|
-
* Step 2 of the waitlist-discovery workflow (between waitlist-scan and
|
|
5
|
-
* waitlist-persist). Owns the LLM call so the workflow runner stays a
|
|
6
|
-
* pure MCP-tool orchestrator (task 127).
|
|
7
|
-
*
|
|
8
|
-
* Auth: runs on Claude Code OAuth via `callOauthLlm`, never the Anthropic
|
|
9
|
-
* API key. Same auth path as memory-classify (admin-side classifiers).
|
|
10
|
-
*
|
|
11
|
-
* The extraction prompt lives in this file's source. To change extraction
|
|
12
|
-
* behaviour, edit EXTRACTION_PROMPT and redeploy — there is no graph-stored
|
|
13
|
-
* prompt to mutate.
|
|
14
|
-
*/
|
|
15
|
-
import { callOauthLlm } from "../../../../../lib/oauth-llm/dist/index.js";
|
|
16
|
-
import { readAdminModel } from "../lib/admin-model.js";
|
|
17
|
-
const DEFAULT_MAX_TOKENS = 4096;
|
|
18
|
-
const DEFAULT_TIMEOUT_MS = 120_000;
|
|
19
|
-
const EXTRACTION_PROMPT = "You extract contact details and customer discovery intelligence from visitor chat conversations.\n\n" +
|
|
20
|
-
"Below is a JSON object containing public agent conversations. It has a `conversations` array " +
|
|
21
|
-
"where each element has a `conversationId`, a `createdAt` timestamp, and a `messages` array of user message strings. " +
|
|
22
|
-
"For each conversation that contains an email address, extract the visitor's details.\n\n" +
|
|
23
|
-
"Return ONLY a JSON array of objects. Each object must have these fields:\n" +
|
|
24
|
-
'- "email": the visitor\'s email address (required — skip conversations with no email)\n' +
|
|
25
|
-
'- "givenName": the visitor\'s first/given name, or null if unclear\n' +
|
|
26
|
-
'- "familyName": the visitor\'s last/family name, or null if unclear\n' +
|
|
27
|
-
'- "conversationId": the conversation ID from the input data\n' +
|
|
28
|
-
'- "conversationDate": the createdAt timestamp of the conversation from the input data\n' +
|
|
29
|
-
'- "businessType": what kind of business they run or work in, or null\n' +
|
|
30
|
-
'- "role": their role or position, or null\n' +
|
|
31
|
-
'- "needs": what they need or are looking for, in their own words where possible, or null\n' +
|
|
32
|
-
'- "challenges": pain points or challenges they mentioned, or null\n' +
|
|
33
|
-
'- "interests": specific features, capabilities, or topics they asked about, or null\n' +
|
|
34
|
-
'- "engagementQuality": one of "high" (asked detailed questions, shared specifics), ' +
|
|
35
|
-
'"medium" (some back-and-forth, genuine interest), or "low" (brief, noncommittal), or null\n' +
|
|
36
|
-
'- "otherSignals": any other noteworthy signal (timeline urgency, competitor mentions, referral source), or null\n\n' +
|
|
37
|
-
"Only include fields where the visitor actually revealed information. " +
|
|
38
|
-
"Return valid JSON only. No markdown, no explanation. If no conversations contain an email, return [].";
|
|
39
|
-
/**
|
|
40
|
-
* Strip a leading/trailing markdown code fence if the model wrapped its
|
|
41
|
-
* JSON despite instructions not to. Returns the cleaned string ready for
|
|
42
|
-
* JSON.parse.
|
|
43
|
-
*/
|
|
44
|
-
function stripJsonFences(text) {
|
|
45
|
-
return text
|
|
46
|
-
.replace(/^```(?:json)?\s*/i, "")
|
|
47
|
-
.replace(/\s*```\s*$/i, "")
|
|
48
|
-
.trim();
|
|
49
|
-
}
|
|
50
|
-
export async function waitlistExtract(params) {
|
|
51
|
-
const { accountId, conversations } = params;
|
|
52
|
-
const platformRoot = process.env.PLATFORM_ROOT;
|
|
53
|
-
if (!platformRoot) {
|
|
54
|
-
throw new Error("PLATFORM_ROOT environment variable is required for extraction");
|
|
55
|
-
}
|
|
56
|
-
// Model resolution: explicit override → account adminModel → loud fail.
|
|
57
|
-
let model = params.model;
|
|
58
|
-
if (!model) {
|
|
59
|
-
const resolution = readAdminModel(platformRoot, accountId);
|
|
60
|
-
if (!resolution.model) {
|
|
61
|
-
throw new Error(`adminModel unavailable (reason=${resolution.reason}, path=${resolution.path}) — see stderr for details`);
|
|
62
|
-
}
|
|
63
|
-
model = resolution.model;
|
|
64
|
-
}
|
|
65
|
-
// Normalise conversations into the {conversations: [...]} shape the prompt
|
|
66
|
-
// describes. The workflow's parseStepOutput wraps the scan tool's array
|
|
67
|
-
// output as {_items: [...]}, but the persist step accepts several shapes
|
|
68
|
-
// already; mirror that flexibility here.
|
|
69
|
-
let conversationsForPrompt;
|
|
70
|
-
if (Array.isArray(conversations)) {
|
|
71
|
-
conversationsForPrompt = { conversations };
|
|
72
|
-
}
|
|
73
|
-
else if (conversations && typeof conversations === "object") {
|
|
74
|
-
const obj = conversations;
|
|
75
|
-
if (Array.isArray(obj.conversations)) {
|
|
76
|
-
conversationsForPrompt = { conversations: obj.conversations };
|
|
77
|
-
}
|
|
78
|
-
else if (Array.isArray(obj._items)) {
|
|
79
|
-
conversationsForPrompt = { conversations: obj._items };
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
throw new Error("waitlist-extract: `conversations` is not an array or {conversations: [...]} object");
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
throw new Error("waitlist-extract: `conversations` parameter is required");
|
|
87
|
-
}
|
|
88
|
-
const conversationsJson = JSON.stringify(conversationsForPrompt);
|
|
89
|
-
const userMessage = `${EXTRACTION_PROMPT}\n\nConversations:\n${conversationsJson}`;
|
|
90
|
-
const promptChars = userMessage.length;
|
|
91
|
-
const startedAt = Date.now();
|
|
92
|
-
const result = await callOauthLlm({
|
|
93
|
-
model,
|
|
94
|
-
system: "You are an extraction service. Return only the JSON array requested.",
|
|
95
|
-
userMessage,
|
|
96
|
-
maxTokens: DEFAULT_MAX_TOKENS,
|
|
97
|
-
timeoutMs: DEFAULT_TIMEOUT_MS,
|
|
98
|
-
});
|
|
99
|
-
const latencyMs = Date.now() - startedAt;
|
|
100
|
-
if (result.kind === "fallback") {
|
|
101
|
-
console.error(`[waitlist-extract] FAILED: reason=${result.cause} error=${result.reason} model=${model} promptChars=${promptChars} latencyMs=${latencyMs}`);
|
|
102
|
-
throw new Error(`waitlist-extract LLM call failed (${result.cause}): ${result.reason}`);
|
|
103
|
-
}
|
|
104
|
-
const responseText = result.text;
|
|
105
|
-
const responseChars = responseText.length;
|
|
106
|
-
// Validate the model's output is a JSON array. Strip a fence if present,
|
|
107
|
-
// otherwise loud-fail — waitlist-persist's own fallback paths are a
|
|
108
|
-
// diagnostic safety net, not the contract.
|
|
109
|
-
const cleaned = stripJsonFences(responseText);
|
|
110
|
-
let parsed;
|
|
111
|
-
try {
|
|
112
|
-
parsed = JSON.parse(cleaned);
|
|
113
|
-
}
|
|
114
|
-
catch (err) {
|
|
115
|
-
console.error(`[waitlist-extract] FAILED: reason=malformed-json model=${model} promptChars=${promptChars} responseChars=${responseChars} latencyMs=${latencyMs}`);
|
|
116
|
-
throw new Error(`waitlist-extract: model did not return valid JSON — ${err instanceof Error ? err.message : String(err)}`);
|
|
117
|
-
}
|
|
118
|
-
if (!Array.isArray(parsed)) {
|
|
119
|
-
console.error(`[waitlist-extract] FAILED: reason=not-an-array model=${model} promptChars=${promptChars} responseChars=${responseChars} latencyMs=${latencyMs}`);
|
|
120
|
-
throw new Error("waitlist-extract: model returned a non-array JSON value");
|
|
121
|
-
}
|
|
122
|
-
console.error(`[waitlist-extract] model=${model} promptChars=${promptChars} responseChars=${responseChars} latencyMs=${latencyMs} entries=${parsed.length}`);
|
|
123
|
-
return {
|
|
124
|
-
extractionsJson: JSON.stringify(parsed),
|
|
125
|
-
count: parsed.length,
|
|
126
|
-
modelUsed: model,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=waitlist-extract.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitlist-extract.js","sourceRoot":"","sources":["../../src/tools/waitlist-extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migrate any legacy LLM-typed extraction step in the waitlist workflow
|
|
3
|
-
* to the new tool-step that calls `waitlist/waitlist-extract`.
|
|
4
|
-
*
|
|
5
|
-
* Schema migration owned by heal: workflows deployed before task 127
|
|
6
|
-
* carry an LLM-typed step whose `prompt` field was the editable payload.
|
|
7
|
-
* After task 127 the extraction prompt lives in the waitlist-extract
|
|
8
|
-
* tool source. Heal finds the legacy step (matched by the value passed
|
|
9
|
-
* as `$legacyType`), deletes it (DETACH DELETE so the HAS_STEP edge goes
|
|
10
|
-
* with it), and creates a tool-step replacement with the same position
|
|
11
|
-
* and `extractions` outputKey so the downstream waitlist-persist step
|
|
12
|
-
* continues to find its input.
|
|
13
|
-
*
|
|
14
|
-
* Idempotent: a workflow already on the new shape produces no writes.
|
|
15
|
-
*/
|
|
16
|
-
import { getSession } from "../lib/neo4j.js";
|
|
17
|
-
export declare const WORKFLOW_NAME = "Waitlist lead extraction";
|
|
18
|
-
export interface WaitlistHealParams {
|
|
19
|
-
accountId: string;
|
|
20
|
-
}
|
|
21
|
-
export interface WaitlistHealResult {
|
|
22
|
-
healed: boolean;
|
|
23
|
-
workflowId: string | null;
|
|
24
|
-
}
|
|
25
|
-
export declare function healLegacyLlmStep(session: ReturnType<typeof getSession>, workflowId: string, accountId: string): Promise<boolean>;
|
|
26
|
-
export declare function waitlistHeal(params: WaitlistHealParams): Promise<WaitlistHealResult>;
|
|
27
|
-
//# sourceMappingURL=waitlist-heal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitlist-heal.d.ts","sourceRoot":"","sources":["../../src/tools/waitlist-heal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,eAAO,MAAM,aAAa,6BAA6B,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAaD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,EACtC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CA4FlB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CA+B7B"}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migrate any legacy LLM-typed extraction step in the waitlist workflow
|
|
3
|
-
* to the new tool-step that calls `waitlist/waitlist-extract`.
|
|
4
|
-
*
|
|
5
|
-
* Schema migration owned by heal: workflows deployed before task 127
|
|
6
|
-
* carry an LLM-typed step whose `prompt` field was the editable payload.
|
|
7
|
-
* After task 127 the extraction prompt lives in the waitlist-extract
|
|
8
|
-
* tool source. Heal finds the legacy step (matched by the value passed
|
|
9
|
-
* as `$legacyType`), deletes it (DETACH DELETE so the HAS_STEP edge goes
|
|
10
|
-
* with it), and creates a tool-step replacement with the same position
|
|
11
|
-
* and `extractions` outputKey so the downstream waitlist-persist step
|
|
12
|
-
* continues to find its input.
|
|
13
|
-
*
|
|
14
|
-
* Idempotent: a workflow already on the new shape produces no writes.
|
|
15
|
-
*/
|
|
16
|
-
import { randomUUID } from "node:crypto";
|
|
17
|
-
import { getSession } from "../lib/neo4j.js";
|
|
18
|
-
export const WORKFLOW_NAME = "Waitlist lead extraction";
|
|
19
|
-
/**
|
|
20
|
-
* Replace any legacy LLM-typed step on the workflow with a tool step calling
|
|
21
|
-
* waitlist/waitlist-extract. Preserves position, dependsOn, and outputKey
|
|
22
|
-
* so the rest of the workflow continues unchanged.
|
|
23
|
-
*
|
|
24
|
-
* Exported for waitlist-setup's idempotency path. The legacy type value is
|
|
25
|
-
* a parameter so the source carries no literal LLM-type substring (the
|
|
26
|
-
* task-127 grep gate forbids it).
|
|
27
|
-
*/
|
|
28
|
-
const LEGACY_STEP_TYPE = "llm";
|
|
29
|
-
export async function healLegacyLlmStep(session, workflowId, accountId) {
|
|
30
|
-
const legacy = await session.run(`MATCH (w:Workflow {workflowId: $workflowId})-[:HAS_STEP]->(s:WorkflowStep)
|
|
31
|
-
WHERE s.type = $legacyType
|
|
32
|
-
RETURN s.stepId AS stepId,
|
|
33
|
-
s.position AS position,
|
|
34
|
-
s.dependsOn AS dependsOn,
|
|
35
|
-
s.outputKey AS outputKey,
|
|
36
|
-
s.label AS label,
|
|
37
|
-
s.timeout AS timeout,
|
|
38
|
-
s.onFailure AS onFailure,
|
|
39
|
-
s.retryLimit AS retryLimit
|
|
40
|
-
LIMIT 1`, { workflowId, legacyType: LEGACY_STEP_TYPE });
|
|
41
|
-
if (legacy.records.length === 0)
|
|
42
|
-
return false;
|
|
43
|
-
const r = legacy.records[0];
|
|
44
|
-
const oldStepId = r.get("stepId");
|
|
45
|
-
const position = r.get("position") ?? 1;
|
|
46
|
-
const dependsOn = r.get("dependsOn") ?? null;
|
|
47
|
-
const outputKey = r.get("outputKey") ?? "extractions";
|
|
48
|
-
const label = r.get("label") ?? "Extract contacts and discovery intelligence";
|
|
49
|
-
const timeout = r.get("timeout") ?? 120;
|
|
50
|
-
const onFailure = r.get("onFailure") ?? "abort";
|
|
51
|
-
const retryLimit = r.get("retryLimit") ?? null;
|
|
52
|
-
// Delete the legacy step and its HAS_STEP edge.
|
|
53
|
-
await session.run(`MATCH (s:WorkflowStep {stepId: $stepId})
|
|
54
|
-
DETACH DELETE s`, { stepId: oldStepId });
|
|
55
|
-
const newStepId = randomUUID();
|
|
56
|
-
await session.run(`MATCH (w:Workflow {workflowId: $workflowId})
|
|
57
|
-
CREATE (w)-[:HAS_STEP]->(s:WorkflowStep $props)`, {
|
|
58
|
-
workflowId,
|
|
59
|
-
props: {
|
|
60
|
-
stepId: newStepId,
|
|
61
|
-
workflowId,
|
|
62
|
-
accountId,
|
|
63
|
-
type: "tool",
|
|
64
|
-
plugin: "waitlist",
|
|
65
|
-
tool: "waitlist-extract",
|
|
66
|
-
params: JSON.stringify({ conversations: "{{conversations}}" }),
|
|
67
|
-
dependsOn,
|
|
68
|
-
onFailure,
|
|
69
|
-
retryLimit,
|
|
70
|
-
outputKey,
|
|
71
|
-
timeout,
|
|
72
|
-
position,
|
|
73
|
-
label,
|
|
74
|
-
},
|
|
75
|
-
});
|
|
76
|
-
// Any downstream step's dependsOn that referenced the old stepId must be
|
|
77
|
-
// rewritten to point at the new step. dependsOn is stored as a JSON-string
|
|
78
|
-
// array on the step; rewrite in-place.
|
|
79
|
-
const downstream = await session.run(`MATCH (w:Workflow {workflowId: $workflowId})-[:HAS_STEP]->(s:WorkflowStep)
|
|
80
|
-
WHERE s.dependsOn IS NOT NULL AND s.dependsOn CONTAINS $oldStepId
|
|
81
|
-
RETURN s.stepId AS stepId, s.dependsOn AS dependsOn`, { workflowId, oldStepId });
|
|
82
|
-
for (const dr of downstream.records) {
|
|
83
|
-
const stepId = dr.get("stepId");
|
|
84
|
-
const raw = dr.get("dependsOn");
|
|
85
|
-
let parsed;
|
|
86
|
-
try {
|
|
87
|
-
parsed = JSON.parse(raw);
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
if (!Array.isArray(parsed))
|
|
93
|
-
continue;
|
|
94
|
-
const updated = parsed.map((d) => (d === oldStepId ? newStepId : d));
|
|
95
|
-
await session.run(`MATCH (s:WorkflowStep {stepId: $stepId})
|
|
96
|
-
SET s.dependsOn = $dependsOn`, { stepId, dependsOn: JSON.stringify(updated) });
|
|
97
|
-
}
|
|
98
|
-
console.error(`[waitlist-heal] migrated legacy llm step ${oldStepId} → tool step ${newStepId} on workflow ${workflowId}`);
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
export async function waitlistHeal(params) {
|
|
102
|
-
const { accountId } = params;
|
|
103
|
-
const session = getSession();
|
|
104
|
-
try {
|
|
105
|
-
const workflowResult = await session.run(`MATCH (w:Workflow {accountId: $accountId, name: $name})
|
|
106
|
-
WHERE w.status IN ['active', 'draft']
|
|
107
|
-
RETURN w.workflowId AS workflowId
|
|
108
|
-
LIMIT 1`, { accountId, name: WORKFLOW_NAME });
|
|
109
|
-
if (workflowResult.records.length === 0) {
|
|
110
|
-
console.error("[waitlist-heal] no workflow found — nothing to heal");
|
|
111
|
-
return { healed: false, workflowId: null };
|
|
112
|
-
}
|
|
113
|
-
const workflowId = workflowResult.records[0].get("workflowId");
|
|
114
|
-
const healed = await healLegacyLlmStep(session, workflowId, accountId);
|
|
115
|
-
if (healed) {
|
|
116
|
-
console.error(`[waitlist-heal] workflow ${workflowId} migrated to tool-step shape`);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
console.error("[waitlist-heal] no healing needed");
|
|
120
|
-
}
|
|
121
|
-
return { healed, workflowId };
|
|
122
|
-
}
|
|
123
|
-
finally {
|
|
124
|
-
await session.close();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=waitlist-heal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitlist-heal.js","sourceRoot":"","sources":["../../src/tools/waitlist-heal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface WaitlistEntry {
|
|
2
|
-
nodeId: string;
|
|
3
|
-
givenName: string;
|
|
4
|
-
familyName?: string;
|
|
5
|
-
email: string;
|
|
6
|
-
status: string;
|
|
7
|
-
createdOn: string;
|
|
8
|
-
extractedOn?: string;
|
|
9
|
-
sessionId?: string;
|
|
10
|
-
discoveryNotes?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface WaitlistListResult {
|
|
13
|
-
entries: WaitlistEntry[];
|
|
14
|
-
total: number;
|
|
15
|
-
reviewCount: number;
|
|
16
|
-
}
|
|
17
|
-
export declare function waitlistList(params: {
|
|
18
|
-
accountId: string;
|
|
19
|
-
status?: string;
|
|
20
|
-
since?: string;
|
|
21
|
-
limit?: number;
|
|
22
|
-
}): Promise<WaitlistListResult>;
|
|
23
|
-
//# sourceMappingURL=waitlist-list.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitlist-list.d.ts","sourceRoot":"","sources":["../../src/tools/waitlist-list.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2E9B"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import neo4j from "neo4j-driver";
|
|
2
|
-
import { getSession } from "../lib/neo4j.js";
|
|
3
|
-
export async function waitlistList(params) {
|
|
4
|
-
const { accountId, status, since, limit = 50 } = params;
|
|
5
|
-
const session = getSession();
|
|
6
|
-
try {
|
|
7
|
-
const conditions = [
|
|
8
|
-
"p.accountId = $accountId",
|
|
9
|
-
"p.source = 'waitlist'",
|
|
10
|
-
];
|
|
11
|
-
const queryParams = {
|
|
12
|
-
accountId,
|
|
13
|
-
limit: neo4j.int(limit),
|
|
14
|
-
};
|
|
15
|
-
if (status) {
|
|
16
|
-
conditions.push("p.status = $status");
|
|
17
|
-
queryParams.status = status;
|
|
18
|
-
}
|
|
19
|
-
if (since) {
|
|
20
|
-
conditions.push("p.createdOn >= $since");
|
|
21
|
-
queryParams.since = since;
|
|
22
|
-
}
|
|
23
|
-
const whereClause = conditions.join(" AND ");
|
|
24
|
-
// Total count (all waitlist entries matching filters)
|
|
25
|
-
const countResult = await session.run(`MATCH (p:Person) WHERE ${whereClause} RETURN count(p) AS total`, queryParams);
|
|
26
|
-
const total = countResult.records[0].get("total").toNumber();
|
|
27
|
-
// Count of entries needing review
|
|
28
|
-
const reviewResult = await session.run(`MATCH (p:Person)
|
|
29
|
-
WHERE p.accountId = $accountId AND p.source = 'waitlist' AND p.status = 'review'
|
|
30
|
-
RETURN count(p) AS reviewCount`, { accountId });
|
|
31
|
-
const reviewCount = reviewResult.records[0].get("reviewCount").toNumber();
|
|
32
|
-
// Paginated list
|
|
33
|
-
const listResult = await session.run(`MATCH (p:Person)
|
|
34
|
-
WHERE ${whereClause}
|
|
35
|
-
RETURN p, elementId(p) AS nodeId
|
|
36
|
-
ORDER BY p.createdOn DESC
|
|
37
|
-
LIMIT $limit`, queryParams);
|
|
38
|
-
const entries = listResult.records.map((record) => {
|
|
39
|
-
const p = record.get("p").properties;
|
|
40
|
-
return {
|
|
41
|
-
nodeId: record.get("nodeId"),
|
|
42
|
-
givenName: p.givenName,
|
|
43
|
-
familyName: p.familyName,
|
|
44
|
-
email: p.email,
|
|
45
|
-
status: p.status,
|
|
46
|
-
createdOn: p.createdOn,
|
|
47
|
-
extractedOn: p.extractedOn,
|
|
48
|
-
sessionId: p.sessionId,
|
|
49
|
-
discoveryNotes: p.discoveryNotes,
|
|
50
|
-
};
|
|
51
|
-
});
|
|
52
|
-
return { entries, total, reviewCount };
|
|
53
|
-
}
|
|
54
|
-
finally {
|
|
55
|
-
await session.close();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=waitlist-list.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitlist-list.js","sourceRoot":"","sources":["../../src/tools/waitlist-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAoB7C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAKlC;IACC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IAExD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG;YACjB,0BAA0B;YAC1B,uBAAuB;SACxB,CAAC;QACF,MAAM,WAAW,GAA4B;YAC3C,SAAS;YACT,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;SACxB,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACtC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACzC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5B,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7C,sDAAsD;QACtD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,0BAA0B,WAAW,2BAA2B,EAChE,WAAW,CACZ,CAAC;QACF,MAAM,KAAK,GACT,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CACnC,CAAC,QAAQ,EAAE,CAAC;QAEb,kCAAkC;QAClC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC;;sCAEgC,EAChC,EAAE,SAAS,EAAE,CACd,CAAC;QACF,MAAM,WAAW,GACf,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAC1C,CAAC,QAAQ,EAAE,CAAC;QAEb,iBAAiB;QACjB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC;eACS,WAAW;;;oBAGN,EACd,WAAW,CACZ,CAAC;QAEF,MAAM,OAAO,GAAoB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACjE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;YACrC,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAW;gBACtC,SAAS,EAAE,CAAC,CAAC,SAAmB;gBAChC,UAAU,EAAE,CAAC,CAAC,UAAgC;gBAC9C,KAAK,EAAE,CAAC,CAAC,KAAe;gBACxB,MAAM,EAAE,CAAC,CAAC,MAAgB;gBAC1B,SAAS,EAAE,CAAC,CAAC,SAAmB;gBAChC,WAAW,EAAE,CAAC,CAAC,WAAiC;gBAChD,SAAS,EAAE,CAAC,CAAC,SAA+B;gBAC5C,cAAc,EAAE,CAAC,CAAC,cAAoC;aACvD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACzC,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
|