@rubytech/create-maxy-code 0.1.157 → 0.1.159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payload/platform/lib/admin-conversation-purge/dist/index.d.ts +1 -1
- package/payload/platform/lib/admin-conversation-purge/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/admin-conversation-purge/dist/index.js +4 -4
- package/payload/platform/lib/admin-conversation-purge/dist/index.js.map +1 -1
- package/payload/platform/lib/admin-conversation-purge/src/index.ts +5 -5
- package/payload/platform/lib/graph-style/dist/index.js +2 -2
- package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-style/src/__tests__/parity.test.ts +1 -1
- package/payload/platform/lib/graph-style/src/index.ts +2 -2
- package/payload/platform/lib/graph-trash/dist/index.js +1 -1
- package/payload/platform/lib/graph-trash/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-trash/src/index.ts +1 -1
- package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js +1 -1
- package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js.map +1 -1
- package/payload/platform/lib/graph-write/dist/conversation-provenance.d.ts +3 -3
- package/payload/platform/lib/graph-write/dist/conversation-provenance.js +5 -5
- package/payload/platform/lib/graph-write/dist/conversation-provenance.js.map +1 -1
- package/payload/platform/lib/graph-write/dist/index.js +1 -1
- package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-write/src/__tests__/action-provenance-gate.test.ts +1 -1
- package/payload/platform/lib/graph-write/src/conversation-provenance.ts +8 -8
- package/payload/platform/lib/graph-write/src/index.ts +1 -1
- package/payload/platform/neo4j/schema.cypher +33 -15
- package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/admin/PLUGIN.md +8 -4
- package/payload/platform/plugins/admin/hooks/__tests__/archive-ingest-surface-gate.test.sh +1 -1
- package/payload/platform/plugins/admin/hooks/__tests__/per-turn-graph-pass-gate.test.sh +361 -0
- package/payload/platform/plugins/admin/hooks/__tests__/pre-turn-graph-pass.test.sh +13 -13
- package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +1 -1
- package/payload/platform/plugins/admin/hooks/lib/admin-graph-pass-common.sh +242 -0
- package/payload/platform/plugins/admin/hooks/per-turn-graph-pass-gate.sh +106 -0
- package/payload/platform/plugins/admin/hooks/pre-turn-graph-pass.sh +47 -91
- package/payload/platform/plugins/admin/hooks/session-end-retrospective.sh +32 -91
- package/payload/platform/plugins/admin/hooks/turn-completed-graph-write.sh +4 -4
- package/payload/platform/plugins/admin/mcp/dist/index.js +65 -24
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/skills/session-management/SKILL.md +2 -2
- package/payload/platform/plugins/admin/skills/stream-log-review/SKILL.md +5 -5
- package/payload/platform/plugins/admin/skills/stream-log-review/references/analysis-patterns.md +6 -6
- package/payload/platform/plugins/business-assistant/references/profiling.md +1 -1
- package/payload/platform/plugins/contacts/PLUGIN.md +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +2 -2
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js +3 -3
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js +2 -2
- package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.d.ts +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.d.ts.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js +4 -4
- package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.js +10 -10
- package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.js.map +1 -1
- package/payload/platform/plugins/docs/references/admin-session.md +6 -6
- package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
- package/payload/platform/plugins/docs/references/deployment.md +3 -1
- package/payload/platform/plugins/docs/references/internals.md +5 -5
- package/payload/platform/plugins/docs/references/plugins-guide.md +3 -3
- package/payload/platform/plugins/docs/references/troubleshooting.md +1 -1
- package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/email/PLUGIN.md +15 -2
- package/payload/platform/plugins/email/mcp/dist/index.js +53 -0
- package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/embedding.js +2 -2
- package/payload/platform/plugins/email/mcp/dist/lib/embedding.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/graph.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/graph.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts +23 -0
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js +15 -0
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts +15 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js +49 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts +20 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js +86 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +32 -52
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -1
- package/payload/platform/plugins/email/references/email-reference.md +19 -83
- package/payload/platform/plugins/email/skills/email-ingest/SKILL.md +87 -0
- package/payload/platform/plugins/memory/PLUGIN.md +4 -4
- package/payload/platform/plugins/memory/mcp/dist/index.js +40 -41
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts +3 -3
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js +6 -6
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js +3 -3
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.js +8 -8
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.d.ts +35 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.js +80 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js +8 -8
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +11 -11
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/scripts/backfill-typed-edges.ts +1 -1
- package/payload/platform/plugins/memory/mcp/scripts/graph/fixture.cypher +1 -1
- package/payload/platform/plugins/memory/references/graph-primitives.md +1 -1
- package/payload/platform/plugins/memory/references/schema-base.md +4 -4
- package/payload/platform/plugins/memory/skills/conversational-memory/SKILL.md +1 -1
- package/payload/platform/plugins/whatsapp/PLUGIN.md +1 -1
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js +2 -2
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/work/mcp/dist/index.js +2 -2
- package/payload/platform/plugins/work/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/work/mcp/dist/tools/project-create.js +6 -6
- package/payload/platform/plugins/work/mcp/dist/tools/project-create.js.map +1 -1
- package/payload/platform/plugins/work/mcp/dist/tools/session-list.d.ts +1 -1
- package/payload/platform/plugins/work/mcp/dist/tools/session-list.d.ts.map +1 -1
- package/payload/platform/plugins/work/mcp/dist/tools/session-list.js +1 -1
- package/payload/platform/plugins/work/mcp/dist/tools/session-list.js.map +1 -1
- package/payload/platform/plugins/x-import/references/archive-shape.md +2 -2
- package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +3 -3
- package/payload/platform/scripts/admin-persist-audit.ts +18 -18
- package/payload/platform/scripts/identity-forbidden-token-check.mjs +2 -0
- package/payload/platform/scripts/seed-neo4j.sh +1 -0
- package/payload/platform/scripts/smoke-boot-services.sh +191 -41
- package/payload/platform/services/claude-session-manager/dist/http-server.js +3 -3
- 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 +3 -3
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +4 -4
- 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.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js +2 -0
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
- package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
- package/payload/server/{chunk-AXOL2PPG.js → chunk-3TRIXQSJ.js} +101 -101
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/public/assets/{admin-DJW5VnQ1.js → admin-Dal5FWaD.js} +24 -24
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Breg9-99.js → architectureDiagram-Q4EWVU46-Do2zYONG.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DXf1_673.js → blockDiagram-DXYQGD6D-DpIX_bRu.js} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CSZ36W4-.js → c4Diagram-AHTNJAMY-Cz335ZSY.js} +1 -1
- package/payload/server/public/assets/channel-PC4_IjI1.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-DsrLk2eK.js → chunk-336JU56O-Dmknn3Wo.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-JpNfNf81.js → chunk-426QAEUC-ClfGjizN.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-DmClEAD0.js → chunk-4TB4RGXK-BPKctJ5c.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-BI9blW3N.js → chunk-5FUZZQ4R-BWDCO9zw.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-BbgttEFO.js → chunk-5PVQY5BW-BE34_Db0.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-BX_LCFOx.js → chunk-EDXVE4YY-BysA-_6v.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-Bb7EoD0w.js → chunk-ENJZ2VHE-BMVyMsqA.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-DH8uQk-s.js → chunk-ICPOFSXX-C5KRdLV4.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-FH5kgXsw.js → chunk-OYMX7WX6-DVZD-AVc.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-D_ljlkHr.js → chunk-U2HBQHQK-DYmQdx8x.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-BX3EmZvm.js → chunk-X2U36JSP-DrZenIl3.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-Vu7-E93h.js → chunk-YZCP3GAM-CDuGbvMq.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-CwjhNPX5.js → chunk-ZZ45TVLE-COztbiu5.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-B_pMa-SX.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BdBAgF20.js +1 -0
- package/payload/server/public/assets/clone-CkNt9L9r.js +1 -0
- package/payload/server/public/assets/{dagre-Ce6gsj0C.js → dagre-Cv9Ib2OM.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-BaMGpsoy.js → dagre-KV5264BT-CoEd61KZ.js} +1 -1
- package/payload/server/public/assets/{data-BHASh0_Y.js → data-DbSORCl4.js} +1 -1
- package/payload/server/public/assets/{diagram-5BDNPKRD-CHEE9rjq.js → diagram-5BDNPKRD-WXNzw3uW.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-C98sZLW1.js → diagram-G4DWMVQ6-C6IuQ2VV.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-DNvMGsTZ.js → diagram-MMDJMWI5-CdJdir5A.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-Cdte4IBa.js → diagram-TYMM5635-DxWKQH5T.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-C9VZsWXK.js → erDiagram-SMLLAGMA-C9fvs33K.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-tuP5fzzR.js → flowDiagram-DWJPFMVM-BO7Yrbqv.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-SJgRPUwx.js → ganttDiagram-T4ZO3ILL-CQJyWBZq.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DU_cI_50.js → gitGraphDiagram-UUTBAWPF-DZfQHrYw.js} +1 -1
- package/payload/server/public/assets/{graph-labels-DXlmm1og.js → graph-labels-BBB5jsZk.js} +1 -1
- package/payload/server/public/assets/{graph-BhEI09tF.js → graph-ys_joP2o.js} +1 -1
- package/payload/server/public/assets/{graphlib-D_nAsvmx.js → graphlib-C40H-Q5E.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-Cj2Y19m6.js → infoDiagram-42DDH7IO-CakfV5f9.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DMc1xq1y.js → ishikawaDiagram-UXIWVN3A-CPuBPyfa.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-C4CRAQma.js → journeyDiagram-VCZTEJTY-zpZm2Mmo.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-CTr4AldU.js → kanban-definition-6JOO6SKY-DfJduQCo.js} +1 -1
- package/payload/server/public/assets/{line-Btlm_IAl.js → line-BpYQqO5R.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-DXFdj_y1.js → mermaid-parser.core-C5Mwi14D.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-DFBhoCr5.js → mermaid.core-D8qBtvvT.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-r9gVQybo.js → mindmap-definition-QFDTVHPH-Bli9JhIN.js} +1 -1
- package/payload/server/public/assets/{page-CDWu1Aft.js → page--bl5Y7ZI.js} +2 -2
- package/payload/server/public/assets/page-CwmZ76U7.js +1 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-CHKZjSaH.js → pieDiagram-DEJITSTG-MsLXTSLg.js} +1 -1
- package/payload/server/public/assets/{public-DyGWgfaZ.js → public-DltgEfA9.js} +2 -2
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CSGR1HJr.js → quadrantDiagram-34T5L4WZ-De1sh2K0.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-DZ6hX9D6.js → requirementDiagram-MS252O5E-D5Sfg1t_.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DbZBKh0m.js → sankeyDiagram-XADWPNL6-DHA3LIbv.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BHHpb8dt.js → sequenceDiagram-FGHM5R23-BE_QlG1B.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-DQ1jiLB4.js → stateDiagram-FHFEXIEX-NIwp3F4u.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-pfk2F6st.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-BlGiEU7p.js → timeline-definition-GMOUNBTQ-CPE9jyDF.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-DmEH-hsB.js → vennDiagram-DHZGUBPP-CKfoyYmH.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-C7KJJ40d.js → wardleyDiagram-NUSXRM2D-B9yJek-o.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-JDnusCaa.js → xychartDiagram-5P7HB3ND-DuCcSLqX.js} +1 -1
- package/payload/server/public/data.html +3 -3
- package/payload/server/public/graph.html +3 -3
- package/payload/server/public/index.html +4 -4
- package/payload/server/public/public.html +1 -1
- package/payload/server/server.js +133 -133
- package/payload/server/public/assets/channel-BmZnt3PP.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-kmMLFUpV.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BV7Ae8ct.js +0 -1
- package/payload/server/public/assets/clone-B5eqoN9I.js +0 -1
- package/payload/server/public/assets/page-cyvshX4Z.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CByT2RzF.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-create.js","sourceRoot":"","sources":["../../src/tools/project-create.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project-create.js","sourceRoot":"","sources":["../../src/tools/project-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-list.d.ts","sourceRoot":"","sources":["../../src/tools/session-list.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"session-list.d.ts","sourceRoot":"","sources":["../../src/tools/session-list.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClF;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAoCtF"}
|
|
@@ -19,7 +19,7 @@ export async function sessionList(params) {
|
|
|
19
19
|
const rawTasks = rec.get("tasks");
|
|
20
20
|
const summary = {
|
|
21
21
|
sessionKey: c.sessionKey,
|
|
22
|
-
|
|
22
|
+
sessionId: c.sessionId,
|
|
23
23
|
agentType: c.agentType,
|
|
24
24
|
createdAt: c.createdAt,
|
|
25
25
|
updatedAt: c.updatedAt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-list.js","sourceRoot":"","sources":["../../src/tools/session-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiB7C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAyB;IACzD,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IAEzC,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CACnC;;;;;;;;;oBASc,EACd,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CACjC,CAAC;QAEF,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;YAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAqF,CAAC;YACtH,MAAM,OAAO,GAAmB;gBAC9B,UAAU,EAAE,CAAC,CAAC,UAAoB;gBAClC,
|
|
1
|
+
{"version":3,"file":"session-list.js","sourceRoot":"","sources":["../../src/tools/session-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiB7C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAyB;IACzD,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IAEzC,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CACnC;;;;;;;;;oBASc,EACd,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CACjC,CAAC;QAEF,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;YAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAqF,CAAC;YACtH,MAAM,OAAO,GAAmB;gBAC9B,UAAU,EAAE,CAAC,CAAC,UAAoB;gBAClC,SAAS,EAAE,CAAC,CAAC,SAAmB;gBAChC,SAAS,EAAE,CAAC,CAAC,SAAmB;gBAChC,SAAS,EAAE,CAAC,CAAC,SAAmB;gBAChC,SAAS,EAAE,CAAC,CAAC,SAAmB;gBAChC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAA4B;aACnE,CAAC;YACF,IAAI,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAc,CAAC;YAC5C,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -99,7 +99,7 @@ Used for deletion detection: any `tweet.tweet_id` in `tweet-headers.js` with no
|
|
|
99
99
|
```json
|
|
100
100
|
[
|
|
101
101
|
{ "dmConversation": {
|
|
102
|
-
"
|
|
102
|
+
"sessionId": "1234567890-9876543210",
|
|
103
103
|
"messages": [
|
|
104
104
|
{ "messageCreate": {
|
|
105
105
|
"id": "170...",
|
|
@@ -115,7 +115,7 @@ Used for deletion detection: any `tweet.tweet_id` in `tweet-headers.js` with no
|
|
|
115
115
|
]
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
For 1:1 DMs the `
|
|
118
|
+
For 1:1 DMs the `sessionId` is `<id1>-<id2>` (numeric senderIds joined with `-`, lexicographic order). For group DMs the sessionId is opaque. Only `messageCreate` envelopes are message turns; `reactionCreate`, `joinConversation`, `leaveConversation` are skipped at the normaliser (counted under `systemSkipped`).
|
|
119
119
|
|
|
120
120
|
## What this skill ignores
|
|
121
121
|
|
|
@@ -68,7 +68,7 @@ After document-ingest returns, write the inverse `REPLIED_TO` edges from each in
|
|
|
68
68
|
|
|
69
69
|
For each `dmConversation` in `data/direct-messages.js` (and `data/direct-messages-group.js` when present):
|
|
70
70
|
|
|
71
|
-
1. **Split.** Write a per-conversation slice file at `{accountDir}/archive/x/<importId>/dm-<
|
|
71
|
+
1. **Split.** Write a per-conversation slice file at `{accountDir}/archive/x/<importId>/dm-<sessionId>.json` — a wrapper-stripped JSON array of length 1 whose single element is the dmConversation envelope. This is the file the x-dm normaliser reads.
|
|
72
72
|
|
|
73
73
|
2. **Resolve participants.** Take the `senderIdToElementId` map from Phase 0; the participant set for this conversation is the distinct senderIds in the slice. The owner is the operator's confirmed `:AdminUser` elementId.
|
|
74
74
|
|
|
@@ -76,11 +76,11 @@ For each `dmConversation` in `data/direct-messages.js` (and `data/direct-message
|
|
|
76
76
|
|
|
77
77
|
```bash
|
|
78
78
|
bash platform/plugins/memory/bin/conversation-archive-ingest.sh \
|
|
79
|
-
{accountDir}/archive/x/<importId>/dm-<
|
|
79
|
+
{accountDir}/archive/x/<importId>/dm-<sessionId>.json \
|
|
80
80
|
--source x-dm \
|
|
81
81
|
--participant-person-ids <ownerEid>,<otherEid>,... \
|
|
82
82
|
--scope admin \
|
|
83
|
-
--session-id x-import-<importId>-dm-<
|
|
83
|
+
--session-id x-import-<importId>-dm-<sessionId>
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
4. **Surface the three operator messages** (parse → classify → write) from each invocation per the existing conversation-archive contract.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* admin persist audit harness.
|
|
4
4
|
*
|
|
5
5
|
* Compares JSONL canonical state against Neo4j projection for a given
|
|
6
|
-
*
|
|
6
|
+
* sessionId. Prints one [admin-persist-audit] divergence line per
|
|
7
7
|
* (sdkTurnUuid, expected) gap; non-zero exit on any mismatch. Designed to
|
|
8
8
|
* run against an operator-supplied stream log fixture WITHOUT re-executing
|
|
9
9
|
* the live session — JSONL is the only ground truth this script consults.
|
|
@@ -43,7 +43,7 @@ import { PERSISTENT_COMPONENTS } from "../lib/persistent-components/src/index";
|
|
|
43
43
|
// verifying the divergence-line shape and non-zero exit code without
|
|
44
44
|
// re-executing the live session or requiring a real graph connection.
|
|
45
45
|
export interface AuditArgs {
|
|
46
|
-
|
|
46
|
+
sessionId: string;
|
|
47
47
|
accountId: string;
|
|
48
48
|
jsonlPath: string;
|
|
49
49
|
}
|
|
@@ -56,12 +56,12 @@ function parseArgs(argv: string[]): AuditArgs | { error: string } {
|
|
|
56
56
|
const m = a.match(/^--([a-z-]+)=(.+)$/);
|
|
57
57
|
if (!m) continue;
|
|
58
58
|
const [, key, val] = m;
|
|
59
|
-
if (key === "conversation-id") out.
|
|
59
|
+
if (key === "conversation-id") out.sessionId = val;
|
|
60
60
|
else if (key === "account-id") out.accountId = val;
|
|
61
61
|
else if (key === "session-id") sessionId = val;
|
|
62
62
|
else if (key === "jsonl") jsonlOverride = val;
|
|
63
63
|
}
|
|
64
|
-
if (!out.
|
|
64
|
+
if (!out.sessionId) return { error: "--conversation-id required" };
|
|
65
65
|
if (!out.accountId) return { error: "--account-id required" };
|
|
66
66
|
if (jsonlOverride) {
|
|
67
67
|
out.jsonlPath = resolve(jsonlOverride);
|
|
@@ -75,10 +75,10 @@ function parseArgs(argv: string[]): AuditArgs | { error: string } {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
export async function runAudit(args: AuditArgs): Promise<number> {
|
|
78
|
-
const {
|
|
78
|
+
const { sessionId, jsonlPath } = args;
|
|
79
79
|
|
|
80
80
|
if (!existsSync(jsonlPath)) {
|
|
81
|
-
console.error(`[admin-persist-audit] jsonl absent path=${jsonlPath} convId=${
|
|
81
|
+
console.error(`[admin-persist-audit] jsonl absent path=${jsonlPath} convId=${sessionId.slice(0, 8)}`);
|
|
82
82
|
return 2;
|
|
83
83
|
}
|
|
84
84
|
|
|
@@ -86,15 +86,15 @@ export async function runAudit(args: AuditArgs): Promise<number> {
|
|
|
86
86
|
// component side-effects.
|
|
87
87
|
const replay = replayJsonl(jsonlPath);
|
|
88
88
|
if (replay.malformedLines > 0) {
|
|
89
|
-
console.error(`[admin-persist-audit] jsonl-malformed-lines convId=${
|
|
89
|
+
console.error(`[admin-persist-audit] jsonl-malformed-lines convId=${sessionId.slice(0, 8)} count=${replay.malformedLines}`);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
// Neo4j projection — what the resume route would have rendered pre-940.
|
|
93
93
|
let neo4j: Awaited<ReturnType<typeof getRecentMessages>>;
|
|
94
94
|
try {
|
|
95
|
-
neo4j = await getRecentMessages(
|
|
95
|
+
neo4j = await getRecentMessages(sessionId, 1000);
|
|
96
96
|
} catch (err) {
|
|
97
|
-
console.error(`[admin-persist-audit] neo4j-read-failed convId=${
|
|
97
|
+
console.error(`[admin-persist-audit] neo4j-read-failed convId=${sessionId.slice(0, 8)} reason=${err instanceof Error ? err.message : String(err)}`);
|
|
98
98
|
return 2;
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -109,12 +109,12 @@ export async function runAudit(args: AuditArgs): Promise<number> {
|
|
|
109
109
|
const match = neo4jByKey.get(key);
|
|
110
110
|
if (!match) {
|
|
111
111
|
// Whole message absent from Neo4j.
|
|
112
|
-
console.log(`[admin-persist-audit] convId=${
|
|
112
|
+
console.log(`[admin-persist-audit] convId=${sessionId.slice(0, 8)} sdkTurnUuid=${j.messageId.slice(0, 8)} expected=message missing reason=neo4j-row-absent`);
|
|
113
113
|
divergences += 1;
|
|
114
114
|
// Each missing message implies its components are also missing — emit
|
|
115
115
|
// one divergence line per absent component for forensic completeness.
|
|
116
116
|
for (const c of j.components) {
|
|
117
|
-
console.log(`[admin-persist-audit] convId=${
|
|
117
|
+
console.log(`[admin-persist-audit] convId=${sessionId.slice(0, 8)} sdkTurnUuid=${j.messageId.slice(0, 8)} expected=component component_name=${c.name} ordinal=${c.ordinal} missing reason=neo4j-row-absent`);
|
|
118
118
|
divergences += 1;
|
|
119
119
|
}
|
|
120
120
|
continue;
|
|
@@ -125,7 +125,7 @@ export async function runAudit(args: AuditArgs): Promise<number> {
|
|
|
125
125
|
if (neoComps.length < j.components.length) {
|
|
126
126
|
for (let i = neoComps.length; i < j.components.length; i++) {
|
|
127
127
|
const c = j.components[i];
|
|
128
|
-
console.log(`[admin-persist-audit] convId=${
|
|
128
|
+
console.log(`[admin-persist-audit] convId=${sessionId.slice(0, 8)} sdkTurnUuid=${j.messageId.slice(0, 8)} expected=component component_name=${c.name} ordinal=${c.ordinal} missing reason=neo4j-row-absent`);
|
|
129
129
|
divergences += 1;
|
|
130
130
|
}
|
|
131
131
|
}
|
|
@@ -138,7 +138,7 @@ export async function runAudit(args: AuditArgs): Promise<number> {
|
|
|
138
138
|
const projectionSession = getSession();
|
|
139
139
|
try {
|
|
140
140
|
const componentRowsResult = await projectionSession.run(
|
|
141
|
-
`MATCH (m:Message {
|
|
141
|
+
`MATCH (m:Message {sessionId: $sessionId})-[:HAS_COMPONENT]->(c:Component)
|
|
142
142
|
WHERE c.name IN $names
|
|
143
143
|
OPTIONAL MATCH (k:KnowledgeDocument {accountId: c.accountId, attachmentId: c.attachmentId})
|
|
144
144
|
WHERE c.attachmentId IS NOT NULL
|
|
@@ -147,7 +147,7 @@ export async function runAudit(args: AuditArgs): Promise<number> {
|
|
|
147
147
|
c.accountId AS accountId,
|
|
148
148
|
c.attachmentId AS attachmentId,
|
|
149
149
|
k IS NOT NULL AS hasProjection`,
|
|
150
|
-
{
|
|
150
|
+
{ sessionId, names: Array.from(PERSISTENT_COMPONENTS) },
|
|
151
151
|
);
|
|
152
152
|
|
|
153
153
|
for (const record of componentRowsResult.records) {
|
|
@@ -156,12 +156,12 @@ export async function runAudit(args: AuditArgs): Promise<number> {
|
|
|
156
156
|
const attachmentId = record.get("attachmentId") as string | null;
|
|
157
157
|
const hasProjection = record.get("hasProjection") === true;
|
|
158
158
|
if (!attachmentId) {
|
|
159
|
-
console.log(`[admin-persist-audit] convId=${
|
|
159
|
+
console.log(`[admin-persist-audit] convId=${sessionId.slice(0, 8)} componentId=${componentId.slice(0, 8)} expected=knowledgedoc component_name=${componentName} missing reason=empty-attachment-id`);
|
|
160
160
|
divergences += 1;
|
|
161
161
|
continue;
|
|
162
162
|
}
|
|
163
163
|
if (!hasProjection) {
|
|
164
|
-
console.log(`[admin-persist-audit] convId=${
|
|
164
|
+
console.log(`[admin-persist-audit] convId=${sessionId.slice(0, 8)} componentId=${componentId.slice(0, 8)} expected=knowledgedoc component_name=${componentName} missing reason=kd-row-absent attachmentId=${attachmentId.slice(0, 8)}`);
|
|
165
165
|
divergences += 1;
|
|
166
166
|
}
|
|
167
167
|
}
|
|
@@ -170,10 +170,10 @@ export async function runAudit(args: AuditArgs): Promise<number> {
|
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
if (divergences === 0) {
|
|
173
|
-
console.log(`[admin-persist-audit] convId=${
|
|
173
|
+
console.log(`[admin-persist-audit] convId=${sessionId.slice(0, 8)} jsonlMessages=${replay.messages.length} neo4jMessages=${neo4j.length} divergences=0 status=ok`);
|
|
174
174
|
return 0;
|
|
175
175
|
}
|
|
176
|
-
console.log(`[admin-persist-audit] convId=${
|
|
176
|
+
console.log(`[admin-persist-audit] convId=${sessionId.slice(0, 8)} jsonlMessages=${replay.messages.length} neo4jMessages=${neo4j.length} divergences=${divergences} status=mismatch`);
|
|
177
177
|
return 1;
|
|
178
178
|
}
|
|
179
179
|
|
|
@@ -237,6 +237,7 @@ cat > "$ACCOUNT_SETTINGS" << SETTINGS_EOF
|
|
|
237
237
|
"Stop": [
|
|
238
238
|
{
|
|
239
239
|
"hooks": [
|
|
240
|
+
{ "type": "command", "command": "bash $HOOKS_PATH/per-turn-graph-pass-gate.sh" },
|
|
240
241
|
{ "type": "command", "command": "bash $HOOKS_PATH/session-end-retrospective.sh" }
|
|
241
242
|
]
|
|
242
243
|
}
|
|
@@ -1,16 +1,40 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
#
|
|
3
3
|
# smoke-boot-services.sh — boot every compiled service against a synthetic
|
|
4
|
-
# install fixture,
|
|
5
|
-
#
|
|
4
|
+
# install fixture, run the cypher schema against a live Neo4j, and assert
|
|
5
|
+
# every startup-self-test the production boot would log fires here.
|
|
6
6
|
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
7
|
+
# Failure modes caught (Task 438):
|
|
8
|
+
# - specialist-tool-drift: a specialist template (or per-account override)
|
|
9
|
+
# names a tool the plugin does not export.
|
|
10
|
+
# - system-prompt-sentinels: the composer drops a `<name>` the
|
|
11
|
+
# IDENTITY.md prose references.
|
|
12
|
+
# - identity-drift: IDENTITY.md mentions a `<name>` the composer does not
|
|
13
|
+
# emit.
|
|
14
|
+
# - cypher-schema: schema.cypher contains syntax the live Neo4j rejects
|
|
15
|
+
# (e.g. Neo4j 4 `DROP FULLTEXT INDEX` against a Neo4j 5 parser).
|
|
16
|
+
# - module-load: the original Task 099 motivation — `require()` in ESM,
|
|
17
|
+
# missing externals, stray top-level throws.
|
|
18
|
+
#
|
|
19
|
+
# Fixture shape: the temp install dir mirrors what the installer writes on
|
|
20
|
+
# first boot. Real templates are copied (not stubs) so the drift gates run
|
|
21
|
+
# against the same content production would see:
|
|
22
|
+
# $INSTALL_DIR/platform/config/brand.json
|
|
23
|
+
# $INSTALL_DIR/platform/plugins/<name>/PLUGIN.md (real manifests)
|
|
24
|
+
# $INSTALL_DIR/platform/templates/agents/admin/*.md (real templates)
|
|
25
|
+
# $INSTALL_DIR/platform/templates/specialists/agents/*.md (real templates)
|
|
26
|
+
# $INSTALL_DIR/data/accounts/<uuid>/account.json
|
|
27
|
+
# $INSTALL_DIR/data/accounts/<uuid>/agents/admin/{IDENTITY,SOUL,AGENTS}.md
|
|
28
|
+
# $INSTALL_DIR/data/accounts/<uuid>/specialists/agents/*.md (per-account)
|
|
29
|
+
# $INSTALL_DIR/.claude/ (CLAUDE_CONFIG_DIR)
|
|
30
|
+
#
|
|
31
|
+
# Cypher gate: apply schema.cypher to the dev's local Neo4j via cypher-shell.
|
|
32
|
+
# NEO4J_URI / NEO4J_USER / NEO4J_PASSWORD must be set (same shape as
|
|
33
|
+
# seed-neo4j.sh — the maintainer's existing local install). The gate is a
|
|
34
|
+
# real apply, not parse-only: schema commands use `IF NOT EXISTS` / `IF
|
|
35
|
+
# EXISTS` and the dev's Neo4j is the test surface — pollution is the point.
|
|
36
|
+
# If cypher-shell is absent or NEO4J_URI is unset, the gate exits non-zero
|
|
37
|
+
# so the publish blocker maps to the same code path a real install hits.
|
|
14
38
|
#
|
|
15
39
|
# Service list: extend SERVICES below as additional services adopt the
|
|
16
40
|
# smoke gate. Each entry needs a fixture function that creates the temp
|
|
@@ -42,28 +66,28 @@ cleanup() {
|
|
|
42
66
|
}
|
|
43
67
|
trap cleanup EXIT
|
|
44
68
|
|
|
45
|
-
# Build the synthetic install dir for claude-session-manager.
|
|
46
|
-
#
|
|
47
|
-
#
|
|
48
|
-
# $INSTALL_DIR/platform/plugins/<name>/PLUGIN.md (real manifests — tool surface)
|
|
49
|
-
# $INSTALL_DIR/platform/templates/specialists/agents/*.md (real shipped set)
|
|
50
|
-
# $INSTALL_DIR/data/accounts/<uuid>/account.json
|
|
51
|
-
# $INSTALL_DIR/data/accounts/<uuid>/agents/admin/{IDENTITY,SOUL}.md
|
|
69
|
+
# Build the synthetic install dir for claude-session-manager. Layout mirrors
|
|
70
|
+
# what the installer writes on first boot, with REAL template content (not
|
|
71
|
+
# stubs) so the drift gates fire against the same files production sees.
|
|
52
72
|
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
# MCP binaries are not needed — the drift check parses frontmatter only.
|
|
73
|
+
# Why real-templates: a 0-specialist or empty-IDENTITY fixture lets every
|
|
74
|
+
# drift gate fall through trivially (Task 438). The 0.1.155 install regressed
|
|
75
|
+
# because the librarian per-account override referenced an MCP tool the
|
|
76
|
+
# memory plugin no longer exports — a defect the smoke fixture missed because
|
|
77
|
+
# the fixture's per-account specialists dir was empty.
|
|
59
78
|
fixture_claude_session_manager() {
|
|
60
79
|
local install_dir="$1"
|
|
61
80
|
local platform_root="$install_dir/platform"
|
|
81
|
+
local templates_src="$REPO_ROOT/platform/templates"
|
|
62
82
|
local account_id="00000000-0000-4000-8000-000000000000"
|
|
63
83
|
local account_dir="$install_dir/data/accounts/$account_id"
|
|
64
84
|
|
|
65
85
|
mkdir -p "$platform_root/config"
|
|
66
86
|
mkdir -p "$account_dir/agents/admin"
|
|
87
|
+
mkdir -p "$account_dir/agents/public"
|
|
88
|
+
mkdir -p "$account_dir/specialists/agents"
|
|
89
|
+
mkdir -p "$account_dir/.claude"
|
|
90
|
+
mkdir -p "$install_dir/.claude"
|
|
67
91
|
|
|
68
92
|
cat > "$platform_root/config/brand.json" <<'BRAND'
|
|
69
93
|
{
|
|
@@ -72,20 +96,39 @@ fixture_claude_session_manager() {
|
|
|
72
96
|
}
|
|
73
97
|
BRAND
|
|
74
98
|
|
|
75
|
-
|
|
76
|
-
#
|
|
77
|
-
#
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
99
|
+
# account.json field set mirrors the live template's required fields
|
|
100
|
+
# (resolveAccount throws on missing adminModel/publicModel). Values just
|
|
101
|
+
# need to satisfy the field check — boot never hits Anthropic.
|
|
102
|
+
cat > "$account_dir/account.json" <<JSON
|
|
103
|
+
{
|
|
104
|
+
"accountId": "$account_id",
|
|
105
|
+
"tier": "smoke-test",
|
|
106
|
+
"adminModel": "claude-sonnet-4-6",
|
|
107
|
+
"publicModel": "claude-haiku-4-5"
|
|
108
|
+
}
|
|
109
|
+
JSON
|
|
110
|
+
|
|
111
|
+
# Real admin templates — the drift gate reads the per-account IDENTITY.md;
|
|
112
|
+
# SOUL/AGENTS are not boot-gated but presence is convention.
|
|
113
|
+
cp "$templates_src/agents/admin/IDENTITY.md" "$account_dir/agents/admin/IDENTITY.md"
|
|
114
|
+
cp "$templates_src/agents/admin/SOUL.md" "$account_dir/agents/admin/SOUL.md"
|
|
115
|
+
[ -f "$templates_src/agents/admin/AGENTS.md" ] && cp "$templates_src/agents/admin/AGENTS.md" "$account_dir/agents/admin/AGENTS.md"
|
|
116
|
+
[ -f "$templates_src/agents/public/IDENTITY.md" ] && cp "$templates_src/agents/public/IDENTITY.md" "$account_dir/agents/public/IDENTITY.md"
|
|
117
|
+
|
|
118
|
+
# Real per-account specialist overrides — the drift gate walks
|
|
119
|
+
# $accountDir/specialists/agents/ alongside the template path. 0.1.155
|
|
120
|
+
# regressed because this dir was empty in the smoke fixture; a per-account
|
|
121
|
+
# override referencing a withdrawn tool slipped through to a real install.
|
|
122
|
+
for specialist in "$templates_src/specialists/agents/"*.md; do
|
|
123
|
+
[ -f "$specialist" ] && cp "$specialist" "$account_dir/specialists/agents/$(basename "$specialist")"
|
|
124
|
+
done
|
|
125
|
+
|
|
126
|
+
# Real templates copied into $PLATFORM_ROOT/templates so the drift gate's
|
|
127
|
+
# template-path walk sees the same content as production.
|
|
128
|
+
mkdir -p "$platform_root/templates/agents/admin"
|
|
129
|
+
mkdir -p "$platform_root/templates/specialists/agents"
|
|
130
|
+
cp "$templates_src/agents/admin/"*.md "$platform_root/templates/agents/admin/" 2>/dev/null || true
|
|
131
|
+
cp "$templates_src/specialists/agents/"*.md "$platform_root/templates/specialists/agents/"
|
|
89
132
|
|
|
90
133
|
# Real plugin manifests — loadToolSurface walks platform/plugins/*/PLUGIN.md
|
|
91
134
|
# to build the tool surface. An empty plugins dir gives an empty `all` set,
|
|
@@ -129,21 +172,34 @@ run_one() {
|
|
|
129
172
|
|
|
130
173
|
# Spawn the service. PLATFORM_ROOT is the synthetic platform dir; loadConfig
|
|
131
174
|
# walks $(dirname PLATFORM_ROOT)/data/accounts for the account dir.
|
|
175
|
+
# CLAUDE_CONFIG_DIR + NEO4J_URI + NEO4J_PASSWORD are stamped to satisfy the
|
|
176
|
+
# manager's env-presence checks at boot. NEO4J values are dummies — the
|
|
177
|
+
# manager only asserts non-empty here, it does not connect. The cypher-
|
|
178
|
+
# schema gate runs separately against the dev's real Neo4j.
|
|
132
179
|
PLATFORM_ROOT="$install_dir/platform" \
|
|
133
180
|
CLAUDE_SESSION_MANAGER_PORT="$port" \
|
|
134
181
|
CLAUDE_SESSION_MANAGER_PERSIST_DIR="$install_dir/persist" \
|
|
182
|
+
CLAUDE_CONFIG_DIR="$install_dir/.claude" \
|
|
183
|
+
NEO4J_URI="bolt://127.0.0.1:65535" \
|
|
184
|
+
NEO4J_PASSWORD="smoke" \
|
|
135
185
|
node "$dist_path" >"$log_file" 2>&1 &
|
|
136
186
|
local pid=$!
|
|
137
187
|
|
|
138
|
-
# Poll up to
|
|
188
|
+
# Poll up to 10s for the final readiness signal (identity-drift line — last
|
|
189
|
+
# startup-self-test logged) or any fast-fail line. The boot port= line fires
|
|
190
|
+
# before self-tests; using it as the kill trigger lost the drift gates'
|
|
191
|
+
# output (Task 438). identity-drift=ok|fail is the last log line on the
|
|
192
|
+
# self-test path; boot-failed reason= is the fast-fail surface.
|
|
139
193
|
local boot_line=""
|
|
140
194
|
local fatal_line=""
|
|
195
|
+
local readiness_line=""
|
|
141
196
|
local waited_ms=0
|
|
142
|
-
while [ "$waited_ms" -lt
|
|
197
|
+
while [ "$waited_ms" -lt 10000 ]; do
|
|
143
198
|
if [ -s "$log_file" ]; then
|
|
199
|
+
readiness_line="$(grep -m1 -E 'startup-self-test identity-drift=' "$log_file" || true)"
|
|
144
200
|
boot_line="$(grep -m1 -E '^\[claude-session-manager\] boot port=' "$log_file" || true)"
|
|
145
|
-
fatal_line="$(grep -m1 -E '^\[.*\] fatal ' "$log_file" || true)"
|
|
146
|
-
if [ -n "$
|
|
201
|
+
fatal_line="$(grep -m1 -E '^\[.*\] fatal |boot-failed reason=' "$log_file" || true)"
|
|
202
|
+
if [ -n "$readiness_line" ] || [ -n "$fatal_line" ]; then break; fi
|
|
147
203
|
fi
|
|
148
204
|
if ! kill -0 "$pid" 2>/dev/null; then break; fi
|
|
149
205
|
sleep 0.1
|
|
@@ -182,6 +238,17 @@ run_one() {
|
|
|
182
238
|
cat "$log_file" >&2
|
|
183
239
|
return 1
|
|
184
240
|
fi
|
|
241
|
+
# boot-failed lines mean the manager rejected a startup-self-test before
|
|
242
|
+
# printing the boot line. Surface the gate-specific reason verbatim — same
|
|
243
|
+
# signal a real device would print to journald.
|
|
244
|
+
local boot_failed_line
|
|
245
|
+
boot_failed_line="$(grep -m1 -E 'boot-failed reason=' "$log_file" || true)"
|
|
246
|
+
if [ -n "$boot_failed_line" ]; then
|
|
247
|
+
echo "[smoke] service=$name reason=boot-failed matched=$boot_failed_line" >&2
|
|
248
|
+
echo "--- log ($log_file) ---" >&2
|
|
249
|
+
cat "$log_file" >&2
|
|
250
|
+
return 1
|
|
251
|
+
fi
|
|
185
252
|
if [ -z "$boot_line" ]; then
|
|
186
253
|
echo "[smoke] service=$name reason=no-boot-line matched=" >&2
|
|
187
254
|
echo "--- log ($log_file) ---" >&2
|
|
@@ -197,7 +264,86 @@ run_one() {
|
|
|
197
264
|
return 1
|
|
198
265
|
fi
|
|
199
266
|
|
|
200
|
-
|
|
267
|
+
# Assert every startup-self-test the manager would log on a real boot fired
|
|
268
|
+
# here. The fixture-from-real-templates change above is what makes these
|
|
269
|
+
# gates non-trivial — without the per-account specialists/IDENTITY copies,
|
|
270
|
+
# the drift gates would log =ok against an empty surface.
|
|
271
|
+
local required_tests=(
|
|
272
|
+
"startup-self-test specialist-tool-drift=ok"
|
|
273
|
+
"startup-self-test system-prompt-sentinels=ok"
|
|
274
|
+
"startup-self-test identity-drift=ok"
|
|
275
|
+
)
|
|
276
|
+
for test_line in "${required_tests[@]}"; do
|
|
277
|
+
if ! grep -qF "$test_line" "$log_file"; then
|
|
278
|
+
echo "[smoke] service=$name reason=startup-self-test-missing expected=\"$test_line\"" >&2
|
|
279
|
+
echo "--- log ($log_file) ---" >&2
|
|
280
|
+
cat "$log_file" >&2
|
|
281
|
+
return 1
|
|
282
|
+
fi
|
|
283
|
+
done
|
|
284
|
+
|
|
285
|
+
echo "[smoke-boot] service=$name specialist-tool-drift=ok system-prompt-sentinels=ok identity-drift=ok boot=ok elapsed-ms=$elapsed_ms"
|
|
286
|
+
return 0
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
# Apply schema.cypher to the dev's local Neo4j via cypher-shell. Catches
|
|
290
|
+
# Neo4j 4/5 syntax drift (e.g. 0.1.151's `DROP FULLTEXT INDEX`) the same way
|
|
291
|
+
# a real `seed-neo4j.sh` apply would. The dev's database is the test surface;
|
|
292
|
+
# schema commands use IF NOT EXISTS / IF EXISTS so re-runs are idempotent.
|
|
293
|
+
#
|
|
294
|
+
# Hard prerequisite: NEO4J_URI (and a password source) must be set, and
|
|
295
|
+
# cypher-shell must be on PATH. Absence = publish refusal — the maintainer
|
|
296
|
+
# already runs Neo4j locally for their own brand install.
|
|
297
|
+
run_cypher_schema() {
|
|
298
|
+
local schema_path="$REPO_ROOT/platform/neo4j/schema.cypher"
|
|
299
|
+
if [ ! -f "$schema_path" ]; then
|
|
300
|
+
echo "[smoke-boot] cypher-schema=fail err=schema-missing path=$schema_path" >&2
|
|
301
|
+
return 1
|
|
302
|
+
fi
|
|
303
|
+
|
|
304
|
+
if ! command -v cypher-shell >/dev/null 2>&1; then
|
|
305
|
+
echo "[smoke-boot] cypher-schema=fail err=cypher-shell-not-on-path" >&2
|
|
306
|
+
echo "[smoke-boot] cypher-schema requires a local Neo4j (cypher-shell on PATH) — same toolchain seed-neo4j.sh uses." >&2
|
|
307
|
+
return 1
|
|
308
|
+
fi
|
|
309
|
+
|
|
310
|
+
if [ -z "${NEO4J_URI:-}" ]; then
|
|
311
|
+
echo "[smoke-boot] cypher-schema=fail err=neo4j-uri-unset env=NEO4J_URI" >&2
|
|
312
|
+
return 1
|
|
313
|
+
fi
|
|
314
|
+
|
|
315
|
+
local neo4j_user="${NEO4J_USER:-neo4j}"
|
|
316
|
+
local neo4j_password="${NEO4J_PASSWORD:-}"
|
|
317
|
+
if [ -z "$neo4j_password" ]; then
|
|
318
|
+
# Fall back to the same password-file convention seed-neo4j.sh uses.
|
|
319
|
+
local pw_file="$REPO_ROOT/platform/config/.neo4j-password"
|
|
320
|
+
if [ -f "$pw_file" ]; then
|
|
321
|
+
neo4j_password="$(cat "$pw_file")"
|
|
322
|
+
fi
|
|
323
|
+
fi
|
|
324
|
+
if [ -z "$neo4j_password" ]; then
|
|
325
|
+
echo "[smoke-boot] cypher-schema=fail err=neo4j-password-unset env=NEO4J_PASSWORD" >&2
|
|
326
|
+
return 1
|
|
327
|
+
fi
|
|
328
|
+
|
|
329
|
+
local log_file="$TMP_ROOT/cypher-schema.log"
|
|
330
|
+
local statement_count
|
|
331
|
+
# Count CREATE/DROP/CALL statement-starts. Approximate but stable signal
|
|
332
|
+
# for the log line; the real authority is cypher-shell's exit code.
|
|
333
|
+
statement_count="$(grep -cE '^(CREATE|DROP|CALL)\b' "$schema_path" || true)"
|
|
334
|
+
|
|
335
|
+
if ! cypher-shell -u "$neo4j_user" -p "$neo4j_password" -a "$NEO4J_URI" \
|
|
336
|
+
--non-interactive --fail-fast --format plain < "$schema_path" \
|
|
337
|
+
> "$log_file" 2>&1; then
|
|
338
|
+
local first_err
|
|
339
|
+
first_err="$(grep -m1 -E '^(Invalid|Error|Neo\.)' "$log_file" || head -1 "$log_file" || true)"
|
|
340
|
+
echo "[smoke-boot] cypher-schema=fail err=${first_err:-unknown}" >&2
|
|
341
|
+
echo "--- log ($log_file) ---" >&2
|
|
342
|
+
cat "$log_file" >&2
|
|
343
|
+
return 1
|
|
344
|
+
fi
|
|
345
|
+
|
|
346
|
+
echo "[smoke-boot] cypher-schema=ok statements=$statement_count uri=$NEO4J_URI"
|
|
201
347
|
return 0
|
|
202
348
|
}
|
|
203
349
|
|
|
@@ -259,4 +405,8 @@ for entry in "${MCP_PLUGINS[@]}"; do
|
|
|
259
405
|
fi
|
|
260
406
|
done
|
|
261
407
|
|
|
408
|
+
if ! run_cypher_schema; then
|
|
409
|
+
rc=1
|
|
410
|
+
fi
|
|
411
|
+
|
|
262
412
|
exit "$rc"
|
|
@@ -33,7 +33,7 @@ import { validateUserTitle } from './user-title-store.js';
|
|
|
33
33
|
const ROLES = ['admin', 'public'];
|
|
34
34
|
const CHANNELS = ['browser', 'whatsapp', 'telegram', 'webchat', 'email'];
|
|
35
35
|
// Task 382 — body.conversationNodeId shape gate. The value is the
|
|
36
|
-
//
|
|
36
|
+
// sessionId UUID (v4) minted by createNewAdminConversation in
|
|
37
37
|
// platform/ui/app/lib/neo4j-store.ts.
|
|
38
38
|
const UUID_PATTERN = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
|
|
39
39
|
// Task 179 — resume idempotency. Two POSTs 9ms apart with the same
|
|
@@ -491,7 +491,7 @@ export function buildHttpApp(deps) {
|
|
|
491
491
|
const agentSlug = typeof body.agentSlug === 'string' && /^[A-Za-z0-9_-]{1,64}$/.test(body.agentSlug)
|
|
492
492
|
? body.agentSlug
|
|
493
493
|
: undefined;
|
|
494
|
-
// Task 382 —
|
|
494
|
+
// Task 382 — sessionId UUID of the active :AdminConversation (or
|
|
495
495
|
// :PublicConversation). Shape-validated as a v4 UUID; anything else is
|
|
496
496
|
// discarded so a body-controlled value cannot reach the env-stamp.
|
|
497
497
|
const conversationNodeId = typeof body.conversationNodeId === 'string' && UUID_PATTERN.test(body.conversationNodeId)
|
|
@@ -970,7 +970,7 @@ export function buildHttpApp(deps) {
|
|
|
970
970
|
: undefined;
|
|
971
971
|
const sourceRow = resolveRow(deps.watcher, sessionId);
|
|
972
972
|
const specialist = bodySpecialist ?? sourceRow?.agent ?? undefined;
|
|
973
|
-
// Task 382 —
|
|
973
|
+
// Task 382 — sessionId UUID gate. Same shape gate as /spawn.
|
|
974
974
|
const conversationNodeId = typeof body.conversationNodeId === 'string' && UUID_PATTERN.test(body.conversationNodeId)
|
|
975
975
|
? body.conversationNodeId
|
|
976
976
|
: undefined;
|