@rubytech/create-realagent-code 0.1.113 → 0.1.115
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 +8 -3
- package/payload/platform/plugins/.claude-plugin/marketplace.json +0 -20
- package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +14 -7
- 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 +10 -26
- 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 +3 -2
- 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/whatsapp/.claude-plugin/plugin.json +9 -0
- package/payload/platform/plugins/whatsapp/PLUGIN.md +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/services/claude-session-manager/dist/brand-foreign-filter.d.ts +30 -0
- package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.js +86 -0
- package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.js.map +1 -0
- 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/index.js +51 -9
- package/payload/platform/services/claude-session-manager/dist/index.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 +118 -6
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +7 -0
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js +7 -0
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
- package/payload/platform/templates/specialists/agents/project-manager.md +1 -3
- package/payload/premium-plugins/real-agent/plugins/buyers/skills/property-recommender/SKILL.md +23 -3
- 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-DOxHsV7g.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-BkwTCV2Y.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-zQ79YCEt.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 +144 -49
- 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
package/payload/server/server.js
CHANGED
|
@@ -60,7 +60,9 @@ import {
|
|
|
60
60
|
requireAdminSession,
|
|
61
61
|
requirePortEnv,
|
|
62
62
|
resolveAccount,
|
|
63
|
+
resolveAgentConfig,
|
|
63
64
|
resolveClientIp,
|
|
65
|
+
resolveDefaultAgentSlug,
|
|
64
66
|
resolveUserAccounts,
|
|
65
67
|
runAdminUserSelfHeal,
|
|
66
68
|
safeJson,
|
|
@@ -80,7 +82,7 @@ import {
|
|
|
80
82
|
vncLog,
|
|
81
83
|
walkPremiumBundles,
|
|
82
84
|
writeAdminUserAndPerson
|
|
83
|
-
} from "./chunk-
|
|
85
|
+
} from "./chunk-FJCI6X3H.js";
|
|
84
86
|
import {
|
|
85
87
|
__commonJS,
|
|
86
88
|
__toESM
|
|
@@ -4415,6 +4417,8 @@ async function managerSpawn(opts) {
|
|
|
4415
4417
|
role: opts.role,
|
|
4416
4418
|
channel: opts.channel,
|
|
4417
4419
|
accountId: opts.accountId,
|
|
4420
|
+
agentSlug: opts.agentSlug,
|
|
4421
|
+
liveMemory: opts.liveMemory,
|
|
4418
4422
|
attachmentDir: opts.attachmentDir,
|
|
4419
4423
|
aboutOwner: opts.aboutOwner,
|
|
4420
4424
|
dormantPlugins: opts.dormantPlugins,
|
|
@@ -4540,12 +4544,12 @@ function publicIdleMs() {
|
|
|
4540
4544
|
return Number(process.env.CHANNEL_PTY_IDLE_MS ?? String(30 * 6e4));
|
|
4541
4545
|
}
|
|
4542
4546
|
var index = /* @__PURE__ */ new Map();
|
|
4543
|
-
function indexKey(accountId, senderId) {
|
|
4544
|
-
return `${accountId}:${senderId}`;
|
|
4547
|
+
function indexKey(accountId, agentSlug, senderId, liveMemory) {
|
|
4548
|
+
return `${accountId}:${agentSlug}:${liveMemory ? "lm1" : "lm0"}:${senderId}`;
|
|
4545
4549
|
}
|
|
4546
4550
|
async function ensureEntry(input) {
|
|
4547
4551
|
startReaper();
|
|
4548
|
-
const key = indexKey(input.accountId, input.senderId);
|
|
4552
|
+
const key = indexKey(input.accountId, input.agentSlug, input.senderId, input.liveMemory);
|
|
4549
4553
|
const existing = index.get(key);
|
|
4550
4554
|
const tag = tagFor(input.channel);
|
|
4551
4555
|
if (existing) {
|
|
@@ -4567,6 +4571,8 @@ async function ensureEntry(input) {
|
|
|
4567
4571
|
role: input.role,
|
|
4568
4572
|
channel: input.channel,
|
|
4569
4573
|
accountId: input.accountId,
|
|
4574
|
+
agentSlug: input.agentSlug,
|
|
4575
|
+
liveMemory: input.liveMemory,
|
|
4570
4576
|
attachmentDir
|
|
4571
4577
|
});
|
|
4572
4578
|
if ("error" in spawned) {
|
|
@@ -4581,12 +4587,14 @@ async function ensureEntry(input) {
|
|
|
4581
4587
|
channel: input.channel,
|
|
4582
4588
|
accountId: input.accountId,
|
|
4583
4589
|
senderId: input.senderId,
|
|
4590
|
+
agentSlug: input.agentSlug,
|
|
4584
4591
|
lastInboundAt: Date.now(),
|
|
4585
4592
|
writeChain: Promise.resolve(),
|
|
4586
4593
|
subscribers: /* @__PURE__ */ new Set(),
|
|
4587
4594
|
pendingTurnText: "",
|
|
4588
4595
|
followerAbort: null,
|
|
4589
|
-
followerRunning: false
|
|
4596
|
+
followerRunning: false,
|
|
4597
|
+
liveMemory: input.liveMemory
|
|
4590
4598
|
};
|
|
4591
4599
|
entry.followerAbort = startFollower({
|
|
4592
4600
|
entry,
|
|
@@ -4613,12 +4621,14 @@ async function writeInput(entry, text) {
|
|
|
4613
4621
|
`${tag} session-resolved senderId=${entry.senderId} action=respawn reason=session-gone-${result.status} sessionId=${entry.sessionId.slice(0, 8)}`
|
|
4614
4622
|
);
|
|
4615
4623
|
if (entry.followerAbort) entry.followerAbort.abort();
|
|
4616
|
-
index.delete(indexKey(entry.accountId, entry.senderId));
|
|
4624
|
+
index.delete(indexKey(entry.accountId, entry.agentSlug, entry.senderId, entry.liveMemory));
|
|
4617
4625
|
const respawned = await ensureEntry({
|
|
4618
4626
|
accountId: entry.accountId,
|
|
4619
4627
|
senderId: entry.senderId,
|
|
4620
4628
|
role: entry.role,
|
|
4621
|
-
channel: entry.channel
|
|
4629
|
+
channel: entry.channel,
|
|
4630
|
+
agentSlug: entry.agentSlug,
|
|
4631
|
+
liveMemory: entry.liveMemory
|
|
4622
4632
|
});
|
|
4623
4633
|
if (!respawned) return false;
|
|
4624
4634
|
for (const cb of entry.subscribers) respawned.subscribers.add(cb);
|
|
@@ -4654,7 +4664,9 @@ async function dispatchOnce(input) {
|
|
|
4654
4664
|
accountId: input.accountId,
|
|
4655
4665
|
senderId: input.senderId,
|
|
4656
4666
|
role: input.role,
|
|
4657
|
-
channel: input.channel
|
|
4667
|
+
channel: input.channel,
|
|
4668
|
+
agentSlug: input.agentSlug,
|
|
4669
|
+
liveMemory: input.liveMemory
|
|
4658
4670
|
});
|
|
4659
4671
|
if (!entry) return { error: "spawn-failed" };
|
|
4660
4672
|
entry.lastInboundAt = Date.now();
|
|
@@ -4860,6 +4872,18 @@ ${lines}]`;
|
|
|
4860
4872
|
if (!account) {
|
|
4861
4873
|
return c.json({ error: "No account configured" }, 500);
|
|
4862
4874
|
}
|
|
4875
|
+
const agentSlug = resolveDefaultAgentSlug(account.accountDir);
|
|
4876
|
+
if (!agentSlug) {
|
|
4877
|
+
return c.json({ error: "No default agent configured" }, 500);
|
|
4878
|
+
}
|
|
4879
|
+
let liveMemory = false;
|
|
4880
|
+
try {
|
|
4881
|
+
liveMemory = resolveAgentConfig(account.accountDir, agentSlug).liveMemory;
|
|
4882
|
+
} catch (err) {
|
|
4883
|
+
const m = err instanceof Error ? err.message : String(err);
|
|
4884
|
+
console.error(`${WEBCHAT_TAG} reject reason=agent-config-failed agentSlug=${agentSlug} message=${m}`);
|
|
4885
|
+
return c.json({ error: "Agent config invalid" }, 500);
|
|
4886
|
+
}
|
|
4863
4887
|
const sk = session_key.slice(0, 8);
|
|
4864
4888
|
console.error(
|
|
4865
4889
|
`${WEBCHAT_TAG} inbound from=${sk} bytes=${Buffer.byteLength(fullMessage, "utf8")} attachments=${attachmentCount} accountId=${account.accountId}`
|
|
@@ -4872,6 +4896,8 @@ ${lines}]`;
|
|
|
4872
4896
|
senderId: session_key,
|
|
4873
4897
|
role: "public",
|
|
4874
4898
|
channel: "webchat",
|
|
4899
|
+
agentSlug,
|
|
4900
|
+
liveMemory,
|
|
4875
4901
|
text: fullMessage,
|
|
4876
4902
|
timeoutMs: webchatTurnTimeoutMs()
|
|
4877
4903
|
});
|
|
@@ -12134,6 +12160,55 @@ app34.get("/:rel{.*}", (c) => {
|
|
|
12134
12160
|
});
|
|
12135
12161
|
var sites_default = app34;
|
|
12136
12162
|
|
|
12163
|
+
// server/routes/listings.ts
|
|
12164
|
+
var SAFE_SLUG_RE = /^[a-z0-9](?:[a-z0-9-]{0,118}[a-z0-9])?$/;
|
|
12165
|
+
var CHAT_SESSION_KEY_RE = /^[A-Za-z0-9][A-Za-z0-9_-]{7,127}$/;
|
|
12166
|
+
var app35 = new Hono();
|
|
12167
|
+
app35.get("/:slug/click", async (c) => {
|
|
12168
|
+
const slug = c.req.param("slug") ?? "";
|
|
12169
|
+
const rawSession = c.req.query("session") ?? "";
|
|
12170
|
+
const sessionKey = CHAT_SESSION_KEY_RE.test(rawSession) ? rawSession : "invalid";
|
|
12171
|
+
if (!SAFE_SLUG_RE.test(slug)) {
|
|
12172
|
+
console.error(`[property-card-click] reject reason=bad-slug-shape slug=${JSON.stringify(slug)} status=400`);
|
|
12173
|
+
return c.text("Bad Request", 400);
|
|
12174
|
+
}
|
|
12175
|
+
const account = resolveAccount();
|
|
12176
|
+
if (!account) {
|
|
12177
|
+
console.error(`[property-card-click] reject reason=no-account slug=${slug} status=404`);
|
|
12178
|
+
return c.text("Not Found", 404);
|
|
12179
|
+
}
|
|
12180
|
+
let pageUrl = null;
|
|
12181
|
+
const session = getSession();
|
|
12182
|
+
try {
|
|
12183
|
+
const result = await session.run(
|
|
12184
|
+
`MATCH (l:Listing {accountId: $accountId, slug: $slug})
|
|
12185
|
+
WHERE l.scope = 'public'
|
|
12186
|
+
RETURN l.pageUrl AS pageUrl
|
|
12187
|
+
LIMIT 1`,
|
|
12188
|
+
{ accountId: account.accountId, slug }
|
|
12189
|
+
);
|
|
12190
|
+
const record = result.records[0];
|
|
12191
|
+
const raw = record?.get("pageUrl");
|
|
12192
|
+
pageUrl = typeof raw === "string" && raw.length > 0 ? raw : null;
|
|
12193
|
+
} catch (err) {
|
|
12194
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
12195
|
+
console.error(`[property-card-click] reject reason=neo4j-error slug=${slug} sessionKey=${sessionKey} err=${JSON.stringify(message)} status=503`);
|
|
12196
|
+
await session.close().catch(() => {
|
|
12197
|
+
});
|
|
12198
|
+
return c.text("Service Unavailable", 503);
|
|
12199
|
+
} finally {
|
|
12200
|
+
await session.close().catch(() => {
|
|
12201
|
+
});
|
|
12202
|
+
}
|
|
12203
|
+
if (!pageUrl) {
|
|
12204
|
+
console.error(`[property-card-click] reject reason=listing-not-found slug=${slug} sessionKey=${sessionKey} accountId=${account.accountId} status=404`);
|
|
12205
|
+
return c.text("Not Found", 404);
|
|
12206
|
+
}
|
|
12207
|
+
console.log(`[property-card-click] sessionKey=${sessionKey} listingSlug=${slug} ts=${(/* @__PURE__ */ new Date()).toISOString()}`);
|
|
12208
|
+
return c.redirect(pageUrl, 302);
|
|
12209
|
+
});
|
|
12210
|
+
var listings_default = app35;
|
|
12211
|
+
|
|
12137
12212
|
// app/lib/graph-health.ts
|
|
12138
12213
|
var HOUR_MS = 60 * 60 * 1e3;
|
|
12139
12214
|
var timer = null;
|
|
@@ -12227,6 +12302,8 @@ async function dispatchToClaude(input) {
|
|
|
12227
12302
|
senderId: input.senderId,
|
|
12228
12303
|
role: input.role,
|
|
12229
12304
|
channel: "whatsapp",
|
|
12305
|
+
agentSlug: input.agentSlug,
|
|
12306
|
+
liveMemory: input.liveMemory,
|
|
12230
12307
|
text: input.text,
|
|
12231
12308
|
timeoutMs: whatsappTurnTimeoutMs()
|
|
12232
12309
|
});
|
|
@@ -12567,9 +12644,9 @@ watchFile(ALIAS_DOMAINS_PATH, { interval: 2e3 }, () => {
|
|
|
12567
12644
|
function isPublicHost(host) {
|
|
12568
12645
|
return host.startsWith("public.") || aliasDomains.has(host);
|
|
12569
12646
|
}
|
|
12570
|
-
var
|
|
12571
|
-
|
|
12572
|
-
|
|
12647
|
+
var app36 = new Hono();
|
|
12648
|
+
app36.use("*", clientIpMiddleware);
|
|
12649
|
+
app36.use("*", async (c, next) => {
|
|
12573
12650
|
await next();
|
|
12574
12651
|
c.header("X-Content-Type-Options", "nosniff");
|
|
12575
12652
|
c.header("Referrer-Policy", "strict-origin-when-cross-origin");
|
|
@@ -12579,7 +12656,7 @@ app35.use("*", async (c, next) => {
|
|
|
12579
12656
|
);
|
|
12580
12657
|
});
|
|
12581
12658
|
var HTTP_LOG_PATHS = /* @__PURE__ */ new Set(["/vnc-viewer.html", "/vnc-popout.html"]);
|
|
12582
|
-
|
|
12659
|
+
app36.use("*", async (c, next) => {
|
|
12583
12660
|
if (!HTTP_LOG_PATHS.has(c.req.path)) {
|
|
12584
12661
|
await next();
|
|
12585
12662
|
return;
|
|
@@ -12612,7 +12689,7 @@ var PUBLIC_ALLOWED_PREFIXES = [
|
|
|
12612
12689
|
"/sites/"
|
|
12613
12690
|
];
|
|
12614
12691
|
var PUBLIC_ALLOWED_EXACT = ["/favicon.ico"];
|
|
12615
|
-
|
|
12692
|
+
app36.use("*", async (c, next) => {
|
|
12616
12693
|
const host = (c.req.header("host") ?? "").split(":")[0];
|
|
12617
12694
|
if (!isPublicHost(host)) {
|
|
12618
12695
|
await next();
|
|
@@ -12652,7 +12729,7 @@ function resolveRemoteAuthOpts() {
|
|
|
12652
12729
|
return brandLoginOpts;
|
|
12653
12730
|
}
|
|
12654
12731
|
var MAX_LOGIN_BODY = 8 * 1024;
|
|
12655
|
-
|
|
12732
|
+
app36.post("/__remote-auth/login", async (c) => {
|
|
12656
12733
|
const client = clientFrom(c);
|
|
12657
12734
|
const clientIp = client.ip || "unknown";
|
|
12658
12735
|
if (!requestIsTlsTerminated(c)) {
|
|
@@ -12697,7 +12774,7 @@ app35.post("/__remote-auth/login", async (c) => {
|
|
|
12697
12774
|
}
|
|
12698
12775
|
});
|
|
12699
12776
|
});
|
|
12700
|
-
|
|
12777
|
+
app36.get("/__remote-auth/logout", (c) => {
|
|
12701
12778
|
const client = clientFrom(c);
|
|
12702
12779
|
const clientIp = client.ip || "unknown";
|
|
12703
12780
|
console.error(`[remote-auth] logout ip=${clientIp}`);
|
|
@@ -12710,7 +12787,7 @@ app35.get("/__remote-auth/logout", (c) => {
|
|
|
12710
12787
|
}
|
|
12711
12788
|
});
|
|
12712
12789
|
});
|
|
12713
|
-
|
|
12790
|
+
app36.post("/__remote-auth/change-password", async (c) => {
|
|
12714
12791
|
const client = clientFrom(c);
|
|
12715
12792
|
const clientIp = client.ip || "unknown";
|
|
12716
12793
|
const rateLimited = checkRateLimit(client);
|
|
@@ -12761,13 +12838,13 @@ app35.post("/__remote-auth/change-password", async (c) => {
|
|
|
12761
12838
|
return c.html(renderLoginPage({ ...resolveRemoteAuthOpts(), mode: "change", changeError: "Failed to save password", redirect }), 200);
|
|
12762
12839
|
}
|
|
12763
12840
|
});
|
|
12764
|
-
|
|
12841
|
+
app36.get("/__remote-auth/setup", (c) => {
|
|
12765
12842
|
if (isRemoteAuthConfigured()) {
|
|
12766
12843
|
return c.redirect("/");
|
|
12767
12844
|
}
|
|
12768
12845
|
return c.html(renderLoginPage({ ...resolveRemoteAuthOpts(), mode: "setup" }), 200);
|
|
12769
12846
|
});
|
|
12770
|
-
|
|
12847
|
+
app36.post("/__remote-auth/set-initial-password", async (c) => {
|
|
12771
12848
|
if (isRemoteAuthConfigured()) {
|
|
12772
12849
|
return c.redirect("/");
|
|
12773
12850
|
}
|
|
@@ -12805,10 +12882,10 @@ app35.post("/__remote-auth/set-initial-password", async (c) => {
|
|
|
12805
12882
|
return c.html(renderLoginPage({ ...resolveRemoteAuthOpts(), mode: "setup", setupError: "Failed to save password. Please try again." }), 200);
|
|
12806
12883
|
}
|
|
12807
12884
|
});
|
|
12808
|
-
|
|
12885
|
+
app36.get("/api/remote-auth/status", (c) => {
|
|
12809
12886
|
return c.json({ configured: isRemoteAuthConfigured() });
|
|
12810
12887
|
});
|
|
12811
|
-
|
|
12888
|
+
app36.post("/api/remote-auth/set-password", async (c) => {
|
|
12812
12889
|
let body;
|
|
12813
12890
|
try {
|
|
12814
12891
|
body = await c.req.json();
|
|
@@ -12839,9 +12916,9 @@ app35.post("/api/remote-auth/set-password", async (c) => {
|
|
|
12839
12916
|
return c.json({ error: "Failed to save password" }, 500);
|
|
12840
12917
|
}
|
|
12841
12918
|
});
|
|
12842
|
-
|
|
12919
|
+
app36.route("/api/_client-error", client_error_default);
|
|
12843
12920
|
console.log("[client-error-route] mounted");
|
|
12844
|
-
|
|
12921
|
+
app36.use("*", async (c, next) => {
|
|
12845
12922
|
const host = (c.req.header("host") ?? "").split(":")[0];
|
|
12846
12923
|
const path2 = c.req.path;
|
|
12847
12924
|
if (path2 === "/favicon.ico" || path2.startsWith("/assets/") || path2.startsWith("/brand/")) {
|
|
@@ -12874,12 +12951,12 @@ app35.use("*", async (c, next) => {
|
|
|
12874
12951
|
console.error(`[remote-auth] login required ip=${clientIp} path=${path2} ${disambig}`);
|
|
12875
12952
|
return c.html(renderLoginPage({ ...resolveRemoteAuthOpts(), redirect: path2 }), 200);
|
|
12876
12953
|
});
|
|
12877
|
-
|
|
12878
|
-
|
|
12879
|
-
|
|
12880
|
-
|
|
12881
|
-
|
|
12882
|
-
var
|
|
12954
|
+
app36.route("/api/health", health_default);
|
|
12955
|
+
app36.route("/api/chat", chat_default);
|
|
12956
|
+
app36.route("/api/whatsapp", whatsapp_default);
|
|
12957
|
+
app36.route("/api/onboarding", onboarding_default);
|
|
12958
|
+
app36.route("/api/admin", admin_default);
|
|
12959
|
+
var SAFE_SLUG_RE2 = /^[a-z][a-z0-9-]{2,49}$/;
|
|
12883
12960
|
var SAFE_FILENAME_RE = /^[a-z0-9_][a-z0-9_.-]{0,99}$/i;
|
|
12884
12961
|
var IMAGE_MIME = {
|
|
12885
12962
|
".png": "image/png",
|
|
@@ -12890,10 +12967,10 @@ var IMAGE_MIME = {
|
|
|
12890
12967
|
".svg": "image/svg+xml",
|
|
12891
12968
|
".ico": "image/x-icon"
|
|
12892
12969
|
};
|
|
12893
|
-
|
|
12970
|
+
app36.get("/agent-assets/:slug/:filename", (c) => {
|
|
12894
12971
|
const slug = c.req.param("slug");
|
|
12895
12972
|
const filename = c.req.param("filename");
|
|
12896
|
-
if (!
|
|
12973
|
+
if (!SAFE_SLUG_RE2.test(slug)) {
|
|
12897
12974
|
console.error(`[agent-assets] invalid-slug slug=${slug}`);
|
|
12898
12975
|
return c.text("Not found", 404);
|
|
12899
12976
|
}
|
|
@@ -12925,7 +13002,7 @@ app35.get("/agent-assets/:slug/:filename", (c) => {
|
|
|
12925
13002
|
"Cache-Control": "public, max-age=3600"
|
|
12926
13003
|
});
|
|
12927
13004
|
});
|
|
12928
|
-
|
|
13005
|
+
app36.get("/generated/:filename", (c) => {
|
|
12929
13006
|
const filename = c.req.param("filename");
|
|
12930
13007
|
if (!SAFE_FILENAME_RE.test(filename) || filename.includes("..")) {
|
|
12931
13008
|
console.error(`[generated] serve file=${filename} status=403`);
|
|
@@ -12955,7 +13032,8 @@ app35.get("/generated/:filename", (c) => {
|
|
|
12955
13032
|
"Cache-Control": "public, max-age=86400"
|
|
12956
13033
|
});
|
|
12957
13034
|
});
|
|
12958
|
-
|
|
13035
|
+
app36.route("/sites", sites_default);
|
|
13036
|
+
app36.route("/listings", listings_default);
|
|
12959
13037
|
var htmlCache = /* @__PURE__ */ new Map();
|
|
12960
13038
|
var brandLogoPath = "/brand/maxy-monochrome.png";
|
|
12961
13039
|
var brandIconPath = "/brand/maxy-monochrome.png";
|
|
@@ -13092,7 +13170,7 @@ function brandedPublicHtml(agentSlug) {
|
|
|
13092
13170
|
function escapeHtml(s) {
|
|
13093
13171
|
return s.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
13094
13172
|
}
|
|
13095
|
-
|
|
13173
|
+
app36.get("/", (c) => {
|
|
13096
13174
|
const host = (c.req.header("host") ?? "").split(":")[0];
|
|
13097
13175
|
if (isPublicHost(host)) {
|
|
13098
13176
|
const defaultSlug = resolveDefaultSlug();
|
|
@@ -13100,12 +13178,12 @@ app35.get("/", (c) => {
|
|
|
13100
13178
|
}
|
|
13101
13179
|
return c.html(cachedHtml("index.html"));
|
|
13102
13180
|
});
|
|
13103
|
-
|
|
13181
|
+
app36.get("/public", (c) => {
|
|
13104
13182
|
const host = (c.req.header("host") ?? "").split(":")[0];
|
|
13105
13183
|
if (isPublicHost(host)) return c.text("Not found", 404);
|
|
13106
13184
|
return c.html(cachedHtml("public.html"));
|
|
13107
13185
|
});
|
|
13108
|
-
|
|
13186
|
+
app36.get("/chat", (c) => {
|
|
13109
13187
|
const host = (c.req.header("host") ?? "").split(":")[0];
|
|
13110
13188
|
if (isPublicHost(host)) return c.text("Not found", 404);
|
|
13111
13189
|
return c.html(cachedHtml("public.html"));
|
|
@@ -13124,9 +13202,9 @@ async function logViewerFetch(c, next) {
|
|
|
13124
13202
|
duration_ms: Date.now() - start
|
|
13125
13203
|
});
|
|
13126
13204
|
}
|
|
13127
|
-
|
|
13128
|
-
|
|
13129
|
-
|
|
13205
|
+
app36.use("/vnc-viewer.html", logViewerFetch);
|
|
13206
|
+
app36.use("/vnc-popout.html", logViewerFetch);
|
|
13207
|
+
app36.get("/vnc-popout.html", (c) => {
|
|
13130
13208
|
let html = htmlCache.get("vnc-popout.html");
|
|
13131
13209
|
if (!html) {
|
|
13132
13210
|
html = readFileSync19(resolve21(process.cwd(), "public", "vnc-popout.html"), "utf-8");
|
|
@@ -13139,7 +13217,7 @@ app35.get("/vnc-popout.html", (c) => {
|
|
|
13139
13217
|
}
|
|
13140
13218
|
return c.html(html);
|
|
13141
13219
|
});
|
|
13142
|
-
|
|
13220
|
+
app36.post("/api/vnc/client-event", async (c) => {
|
|
13143
13221
|
let body;
|
|
13144
13222
|
try {
|
|
13145
13223
|
body = await c.req.json();
|
|
@@ -13160,25 +13238,25 @@ app35.post("/api/vnc/client-event", async (c) => {
|
|
|
13160
13238
|
});
|
|
13161
13239
|
return c.json({ ok: true });
|
|
13162
13240
|
});
|
|
13163
|
-
|
|
13241
|
+
app36.get("/g/:slug", (c) => {
|
|
13164
13242
|
return c.html(brandedPublicHtml());
|
|
13165
13243
|
});
|
|
13166
|
-
|
|
13244
|
+
app36.get("/graph", (c) => {
|
|
13167
13245
|
const host = (c.req.header("host") ?? "").split(":")[0];
|
|
13168
13246
|
if (isPublicHost(host)) return c.text("Not found", 404);
|
|
13169
13247
|
return c.html(cachedHtml("graph.html"));
|
|
13170
13248
|
});
|
|
13171
|
-
|
|
13249
|
+
app36.get("/sessions", (c) => {
|
|
13172
13250
|
const host = (c.req.header("host") ?? "").split(":")[0];
|
|
13173
13251
|
if (isPublicHost(host)) return c.text("Not found", 404);
|
|
13174
13252
|
return c.html(cachedHtml("sessions.html"));
|
|
13175
13253
|
});
|
|
13176
|
-
|
|
13254
|
+
app36.get("/data", (c) => {
|
|
13177
13255
|
const host = (c.req.header("host") ?? "").split(":")[0];
|
|
13178
13256
|
if (isPublicHost(host)) return c.text("Not found", 404);
|
|
13179
13257
|
return c.html(cachedHtml("data.html"));
|
|
13180
13258
|
});
|
|
13181
|
-
|
|
13259
|
+
app36.get("/:slug", async (c, next) => {
|
|
13182
13260
|
const slug = c.req.param("slug");
|
|
13183
13261
|
if (AGENT_SLUG_PATTERN.test(`/${slug}`)) {
|
|
13184
13262
|
const branding = loadBrandingCache(slug);
|
|
@@ -13188,15 +13266,15 @@ app35.get("/:slug", async (c, next) => {
|
|
|
13188
13266
|
await next();
|
|
13189
13267
|
});
|
|
13190
13268
|
if (brandFaviconPath !== "/favicon.ico") {
|
|
13191
|
-
|
|
13269
|
+
app36.get("/favicon.ico", (c) => {
|
|
13192
13270
|
c.header("Cache-Control", "public, max-age=300");
|
|
13193
13271
|
return c.redirect(brandFaviconPath, 302);
|
|
13194
13272
|
});
|
|
13195
13273
|
}
|
|
13196
|
-
|
|
13274
|
+
app36.use("/*", serveStatic({ root: "./public" }));
|
|
13197
13275
|
var port = requirePortEnv("MAXY_UI_INTERNAL_PORT", { tag: "ui-server" });
|
|
13198
13276
|
var hostname = process.env.HOSTNAME ?? "127.0.0.1";
|
|
13199
|
-
var httpServer = serve({ fetch:
|
|
13277
|
+
var httpServer = serve({ fetch: app36.fetch, port, hostname });
|
|
13200
13278
|
console.log(`${BRAND.productName} listening on http://${hostname}:${port}`);
|
|
13201
13279
|
{
|
|
13202
13280
|
const loopHist = monitorEventLoopDelay({ resolution: 50 });
|
|
@@ -13220,7 +13298,8 @@ var SUBAPP_MANIFEST = [
|
|
|
13220
13298
|
{ prefix: "/api/whatsapp", file: "server/routes/whatsapp.ts", subapp: whatsapp_default },
|
|
13221
13299
|
{ prefix: "/api/onboarding", file: "server/routes/onboarding.ts", subapp: onboarding_default },
|
|
13222
13300
|
{ prefix: "/api/admin", file: "server/routes/admin/index.ts", subapp: admin_default },
|
|
13223
|
-
{ prefix: "/api/_client-error", file: "server/routes/client-error.ts", subapp: client_error_default }
|
|
13301
|
+
{ prefix: "/api/_client-error", file: "server/routes/client-error.ts", subapp: client_error_default },
|
|
13302
|
+
{ prefix: "/listings", file: "server/routes/listings.ts", subapp: listings_default }
|
|
13224
13303
|
];
|
|
13225
13304
|
for (const m of SUBAPP_MANIFEST) {
|
|
13226
13305
|
const routeCount = Array.isArray(m.subapp.routes) ? m.subapp.routes.length : 0;
|
|
@@ -13228,7 +13307,7 @@ for (const m of SUBAPP_MANIFEST) {
|
|
|
13228
13307
|
}
|
|
13229
13308
|
try {
|
|
13230
13309
|
const registered = [];
|
|
13231
|
-
for (const r of
|
|
13310
|
+
for (const r of app36.routes ?? []) {
|
|
13232
13311
|
if (typeof r.path !== "string" || r.path.includes(":") || r.path.includes("*")) continue;
|
|
13233
13312
|
if (AGENT_SLUG_PATTERN.test(r.path)) {
|
|
13234
13313
|
registered.push({ method: (r.method ?? "ALL").toUpperCase(), path: r.path });
|
|
@@ -13348,11 +13427,27 @@ init({
|
|
|
13348
13427
|
onMessage: async (msg) => {
|
|
13349
13428
|
if (process.env.WHATSAPP_PTY_BRIDGE_ENABLED === "true" && msg.text && !msg.isOwnerMirror) {
|
|
13350
13429
|
try {
|
|
13430
|
+
let agentSlugForBridge;
|
|
13431
|
+
let liveMemoryForBridge;
|
|
13432
|
+
if (msg.agentType === "admin") {
|
|
13433
|
+
agentSlugForBridge = "admin";
|
|
13434
|
+
liveMemoryForBridge = true;
|
|
13435
|
+
} else {
|
|
13436
|
+
const resolved = bootAccount ? resolvePublicAgent(bootAccount.accountDir, { accountId: msg.accountId, groupJid: msg.groupJid }) : null;
|
|
13437
|
+
if (!resolved) {
|
|
13438
|
+
console.error(`[whatsapp-adaptor] reject reason=no-public-agent senderId=${msg.senderPhone} accountId=${msg.accountId} groupJid=${msg.groupJid ?? "none"}`);
|
|
13439
|
+
return;
|
|
13440
|
+
}
|
|
13441
|
+
agentSlugForBridge = resolved.slug;
|
|
13442
|
+
liveMemoryForBridge = bootAccount ? resolveAgentConfig(bootAccount.accountDir, resolved.slug).liveMemory : false;
|
|
13443
|
+
}
|
|
13351
13444
|
startReaper2();
|
|
13352
13445
|
await dispatchToClaude({
|
|
13353
13446
|
accountId: msg.accountId,
|
|
13354
13447
|
senderId: msg.senderPhone,
|
|
13355
13448
|
role: msg.agentType,
|
|
13449
|
+
agentSlug: agentSlugForBridge,
|
|
13450
|
+
liveMemory: liveMemoryForBridge,
|
|
13356
13451
|
text: msg.text,
|
|
13357
13452
|
reply: msg.reply
|
|
13358
13453
|
});
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "teaching",
|
|
3
|
-
"description": "Interactive tutoring, lesson planning, and study pack generation. Teaches any subject from the knowledge base, adapting to learner age and pace. Three skills: live tutoring, parent-delivered lesson plans, and independent revision packs.",
|
|
4
|
-
"version": "0.1.0",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Rubytech LLC"
|
|
7
|
-
}
|
|
8
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: teaching
|
|
3
|
-
description: "Interactive tutoring, lesson planning, and study pack generation. Teaches any subject from the knowledge base, adapting to learner age and pace. Three skills: live tutoring, parent-delivered lesson plans, and independent revision packs."
|
|
4
|
-
icon: 🎓
|
|
5
|
-
tools: []
|
|
6
|
-
always: false
|
|
7
|
-
metadata: {"platform":{"optional":true,"pluginKey":"teaching","embed":["public","admin"]}}
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Teaching
|
|
11
|
-
|
|
12
|
-
Three skills for knowledge-based teaching and learning. Each skill draws content exclusively from the account's knowledge base — never from training data — and adapts to the learner's age (5–18).
|
|
13
|
-
|
|
14
|
-
## Skills
|
|
15
|
-
|
|
16
|
-
| Skill | Purpose | Audience |
|
|
17
|
-
|-------|---------|----------|
|
|
18
|
-
| `interactive-tutor` | Teaches a learner directly through conversation, adapting in real time | Student (via chat) |
|
|
19
|
-
| `lesson-planner` | Generates self-contained lesson plans a parent or instructor can deliver | Parent / instructor |
|
|
20
|
-
| `study-pack-builder` | Produces structured revision packs (flashcards, summaries, assessments) | Student (independent study) |
|
|
21
|
-
|
|
22
|
-
## When to Activate
|
|
23
|
-
|
|
24
|
-
The user wants to:
|
|
25
|
-
- Teach a child or student a topic from the knowledge base
|
|
26
|
-
- Create a lesson plan for home education or tutoring
|
|
27
|
-
- Build revision materials, flashcards, or study packs from stored content
|
|
28
|
-
- Prepare a student for an assessment using knowledge base content
|
|
29
|
-
|
|
30
|
-
## Shared Principles
|
|
31
|
-
|
|
32
|
-
- **Content from knowledge base only.** Every skill searches memory first. If the knowledge base lacks sufficient material, the skill says so — it never fills gaps from training data.
|
|
33
|
-
- **Conversational context gathering.** Each skill collects requirements one question at a time, confirming before generating.
|
|
34
|
-
- **Age-appropriate adaptation.** Language, examples, and complexity scale to the learner's age (5–18 years).
|
|
35
|
-
- **Self-contained output.** Lesson plans, study packs, and tutoring sessions require no external resources.
|
|
36
|
-
- **Domain-neutral.** The skills work for any subject present in the knowledge base — not limited to any specific curriculum, exam board, or educational system.
|
|
37
|
-
|
|
38
|
-
## Tools Used
|
|
39
|
-
|
|
40
|
-
No MCP server. Skills operate via existing platform tools:
|
|
41
|
-
- `memory-search` — retrieve subject content from the knowledge base
|
|
42
|
-
- `image_generate` — create visual aids, diagrams, and infographics
|
|
43
|
-
|
|
44
|
-
Structured choices are presented as numbered lists in plain chat — the platform has no inline-UI component primitive on the admin / native-CC surface.
|
|
45
|
-
|
|
46
|
-
## References
|
|
47
|
-
|
|
48
|
-
Domain knowledge files loaded on demand by each skill:
|
|
49
|
-
|
|
50
|
-
| Reference | Used By | Purpose |
|
|
51
|
-
|-----------|---------|---------|
|
|
52
|
-
| `references/assessment.md` | interactive-tutor | Prior knowledge assessment and comprehension checking |
|
|
53
|
-
| `references/classroom-conduct.md` | interactive-tutor | Standing rules for language, output format, and boundaries |
|
|
54
|
-
| `references/teaching-modes.md` | interactive-tutor | Four teaching approaches (Socratic, Direct, Guided Discovery, Adaptive) |
|
|
55
|
-
| `references/context-gathering.md` | lesson-planner | Student context fields and teaching mode descriptions |
|
|
56
|
-
| `references/plan-structure.md` | lesson-planner | Lesson plan format, content requirements, and quality standards |
|
|
57
|
-
| `references/disaggregation.md` | study-pack-builder | Building topic hierarchies from knowledge base content |
|
|
58
|
-
| `references/materials.md` | study-pack-builder | Per-topic revision material generation (summaries, flashcards, assessments) |
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: interactive-tutor
|
|
3
|
-
description: "Teach learners interactively through conversation. Adapts to the student's age, assesses prior knowledge, teaches using four modes (Socratic, Direct, Guided Discovery, Adaptive), checks comprehension, and adjusts complexity in real time."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Interactive Tutor
|
|
7
|
-
|
|
8
|
-
You teach learners directly through conversation. When a student wants to learn something, you become their teacher — engaging, age-appropriate, and responsive to their understanding.
|
|
9
|
-
|
|
10
|
-
## Teaching Flow
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
1. Gather basics (age, topic, lesson length, teaching mode)
|
|
14
|
-
2. Assess prior knowledge (warm greeting, 1-2 questions)
|
|
15
|
-
3. Teach with adaptive complexity (main loop)
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Step 1: Gather Basics
|
|
19
|
-
|
|
20
|
-
Collect from the parent or student:
|
|
21
|
-
- **Student's age**
|
|
22
|
-
- **Topic** to learn
|
|
23
|
-
- **Lesson length** (10-20 minutes)
|
|
24
|
-
- **Teaching mode** (Socratic, Direct, Guided Discovery, or Adaptive)
|
|
25
|
-
|
|
26
|
-
If the parent is present, gather from them. If the student is chatting directly, ask in age-appropriate language.
|
|
27
|
-
|
|
28
|
-
## Step 2: Assess Prior Knowledge
|
|
29
|
-
|
|
30
|
-
Greet the student warmly. You are now speaking DIRECTLY to the child, not the parent.
|
|
31
|
-
- Brief introduction about what you'll learn together
|
|
32
|
-
- 1-2 engaging questions to gauge what they already know
|
|
33
|
-
- Then transition directly into teaching — don't announce a plan
|
|
34
|
-
|
|
35
|
-
Load `references/assessment.md` for the full assessment approach.
|
|
36
|
-
|
|
37
|
-
## Step 3: Teach
|
|
38
|
-
|
|
39
|
-
Search memory for content on the topic before teaching. Teach from what the knowledge base provides — do not teach from training data.
|
|
40
|
-
|
|
41
|
-
Use the selected mode. Load `references/teaching-modes.md` for mode-specific strategies.
|
|
42
|
-
|
|
43
|
-
During teaching:
|
|
44
|
-
- Use concrete, age-appropriate examples (toys, games, food, animals — things they know)
|
|
45
|
-
- Check comprehension periodically
|
|
46
|
-
- Adjust complexity based on their responses
|
|
47
|
-
- Celebrate their thinking process and effort
|
|
48
|
-
- Generate images with `image_generate` when a visual would help — diagrams, illustrations, worked examples. Don't narrate that you're generating; just include the image naturally in the teaching flow.
|
|
49
|
-
|
|
50
|
-
Load `references/classroom-conduct.md` for conduct rules that apply at all times.
|
|
51
|
-
|
|
52
|
-
## Critical Rules
|
|
53
|
-
|
|
54
|
-
1. **Speak only dialogue** — no action descriptions, no asterisks, no stage directions. Only words you would say out loud.
|
|
55
|
-
2. **Don't ask permission** — "Would you like me to teach you?" is wrong. Just teach.
|
|
56
|
-
3. **Lead with confidence** — you are the teacher. Ask questions, guide discovery, explain concepts.
|
|
57
|
-
4. **Adapt immediately** — if they struggle once, simplify. If they excel once, increase the challenge. Don't wait for patterns.
|
|
58
|
-
5. **Stay on topic** — if the student goes off-topic, redirect warmly but firmly.
|
|
59
|
-
6. **Content from memory only** — search the knowledge base for topic content. Do not teach from training data.
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# Assessment and Comprehension
|
|
2
|
-
|
|
3
|
-
## Initial Assessment (Prior Knowledge)
|
|
4
|
-
|
|
5
|
-
When transitioning from gathering basics to teaching, assess what the student already knows.
|
|
6
|
-
|
|
7
|
-
**You are speaking DIRECTLY to the student, not the parent.**
|
|
8
|
-
|
|
9
|
-
### Opening
|
|
10
|
-
1. Warm greeting: "Hello! I'm excited to teach you about [topic] today."
|
|
11
|
-
2. Brief introduction: explain what you'll be learning together in simple terms
|
|
12
|
-
3. Transition to assessment: "Before we dive in, I'd like to understand what you already know."
|
|
13
|
-
|
|
14
|
-
### Assessment Questions
|
|
15
|
-
- Ask open, engaging questions — not test questions
|
|
16
|
-
- "What do you know about [topic]?" not "Can you define [topic]?"
|
|
17
|
-
- "Have you ever noticed..." or "What happens when you..."
|
|
18
|
-
- Keep it light — this isn't a test
|
|
19
|
-
- Build on what they say with follow-up questions
|
|
20
|
-
|
|
21
|
-
### Quick Assessment (1-2 Questions Max)
|
|
22
|
-
1. Start with an open question about what they know
|
|
23
|
-
2. Based on their answer, ask one follow-up to gauge depth
|
|
24
|
-
3. Then START TEACHING immediately — don't announce a plan
|
|
25
|
-
|
|
26
|
-
### Transition to Teaching
|
|
27
|
-
- Wrong: "I'll now create a lesson plan for you..."
|
|
28
|
-
- Right: "Let me show you something cool about [topic]..."
|
|
29
|
-
- Wrong: "Would you like me to start teaching?"
|
|
30
|
-
- Right: "Here's an interesting question..."
|
|
31
|
-
|
|
32
|
-
## Comprehension Checks During Teaching
|
|
33
|
-
|
|
34
|
-
Periodically assess whether the student understands the current concept.
|
|
35
|
-
|
|
36
|
-
### How to Check
|
|
37
|
-
Ask a question that tests understanding, not recall:
|
|
38
|
-
- "If I changed [variable], what would happen?"
|
|
39
|
-
- "Can you explain that to me in your own words?"
|
|
40
|
-
- "Why do you think [concept] works that way?"
|
|
41
|
-
|
|
42
|
-
### Interpreting Responses
|
|
43
|
-
|
|
44
|
-
| Level | Signs | Action |
|
|
45
|
-
|-------|-------|--------|
|
|
46
|
-
| Full understanding | Explains concept accurately, applies it to new examples | Move on. Increase complexity. |
|
|
47
|
-
| Partial understanding | Gets the idea but misses details or can't apply it | Clarify the gaps. Try a different example. |
|
|
48
|
-
| Minimal understanding | Vague or partially wrong answers | Simplify. Reteach with a different approach. |
|
|
49
|
-
| No understanding | Confused, silent, or completely wrong | Step back. Start from a more basic concept. |
|
|
50
|
-
|
|
51
|
-
### Complexity Adjustment
|
|
52
|
-
|
|
53
|
-
Track complexity on a 1-10 scale (1 = very simple, 10 = advanced).
|
|
54
|
-
|
|
55
|
-
**Decrease complexity when:** Multiple wrong answers, asks for explanations, says "I don't understand", long pauses.
|
|
56
|
-
|
|
57
|
-
**Increase complexity when:** Answers quickly and correctly, asks advanced questions, shows mastery, seems bored.
|
|
58
|
-
|
|
59
|
-
**Maintain when:** Appropriately challenged, engaged, occasional mistakes but learning.
|
|
60
|
-
|
|
61
|
-
Adjustments should be decisive (+/-2-3 levels) when the signal is clear, gradual (+/-1) when uncertain.
|
|
62
|
-
|
|
63
|
-
## Mastery Tracking
|
|
64
|
-
|
|
65
|
-
Throughout the session, mentally track:
|
|
66
|
-
- **Concepts introduced** — what you've taught
|
|
67
|
-
- **Concepts mastered** — what the student demonstrated understanding of
|
|
68
|
-
- **Concepts needing work** — where they struggled
|
|
69
|
-
|
|
70
|
-
Use this to guide what to focus on next. Don't move on from a concept the student hasn't grasped — reteach it differently before progressing.
|