@rubytech/create-maxy-code 0.1.499 → 0.1.501
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/graph-style/dist/index.d.ts +9 -0
- package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/graph-style/dist/index.js +152 -6
- package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-style/src/__tests__/caption-coverage.test.ts +69 -0
- package/payload/platform/lib/graph-style/src/__tests__/coverage-source.ts +73 -0
- package/payload/platform/lib/graph-style/src/__tests__/icons.test.ts +20 -3
- package/payload/platform/lib/graph-style/src/index.ts +166 -5
- package/payload/platform/plugins/admin/PLUGIN.md +2 -1
- package/payload/platform/plugins/admin/hooks/__tests__/admin-authoring-observer.test.sh +135 -0
- package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-directive.test.sh +11 -2
- package/payload/platform/plugins/admin/hooks/prompt-optimiser-directive.sh +6 -3
- package/payload/platform/plugins/admin/mcp/dist/index.js +52 -107
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts +8 -4
- package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js +67 -50
- package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/store-skill-core.d.ts +33 -0
- package/payload/platform/plugins/admin/mcp/dist/store-skill-core.d.ts.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/store-skill-core.js +122 -0
- package/payload/platform/plugins/admin/mcp/dist/store-skill-core.js.map +1 -0
- package/payload/platform/plugins/admin/skills/agent-builder/SKILL.md +15 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +59 -3
- package/payload/platform/plugins/admin/skills/summarise/SKILL.md +37 -0
- package/payload/platform/plugins/contacts/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/contacts/PLUGIN.md +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/index.js +3 -12
- package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/contact-lookup.test.js +105 -2
- package/payload/platform/plugins/contacts/mcp/dist/tools/__tests__/contact-lookup.test.js.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts +11 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js +56 -4
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js.map +1 -1
- package/payload/platform/plugins/docs/references/admin-ui.md +50 -0
- package/payload/platform/plugins/docs/references/contacts-guide.md +2 -0
- package/payload/platform/plugins/docs/references/outlook-guide.md +4 -0
- package/payload/platform/plugins/docs/references/plugins-guide.md +2 -2
- package/payload/platform/plugins/docs/references/summarise-skill.md +7 -0
- package/payload/platform/plugins/email/skills/email-composition/SKILL.md +9 -1
- package/payload/platform/plugins/outlook/skills/outlook/SKILL.md +6 -0
- package/payload/platform/plugins/prompt-optimiser/skills/prompt-optimiser/SKILL.md +1 -1
- package/payload/platform/plugins/prompt-optimiser/skills/prompt-optimiser/__tests__/restatement-ladder.test.sh +2 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +26 -1
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/skill-registration-drift.d.ts +15 -0
- package/payload/platform/services/claude-session-manager/dist/skill-registration-drift.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/skill-registration-drift.js +61 -0
- package/payload/platform/services/claude-session-manager/dist/skill-registration-drift.js.map +1 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
- package/payload/server/public/activity.html +6 -6
- package/payload/server/public/assets/{AdminLoginScreens-Ce5aBBWF.js → AdminLoginScreens-C3LZOPIY.js} +1 -1
- package/payload/server/public/assets/AdminShell-BlbUNAPc.js +2 -0
- package/payload/server/public/assets/{activity-CKUYOLd2.js → activity-CVdVSw5V.js} +1 -1
- package/payload/server/public/assets/admin-If1QLlS3.js +1 -0
- package/payload/server/public/assets/{arc-CpWWSum8.js → arc-CvlzUHOf.js} +1 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-BQc779DH.js +1 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-D2EzaII0.js → architectureDiagram-Q4EWVU46-I1Hs0RJA.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-8kDpaNSZ.js → blockDiagram-DXYQGD6D-Df5jTGtl.js} +1 -1
- package/payload/server/public/assets/{bot-DESMpxSQ.js → bot-8b26IlQY.js} +1 -1
- package/payload/server/public/assets/{browser-CpLq_DIo.js → browser-F40DXfKA.js} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CbwmZpK3.js → c4Diagram-AHTNJAMY-B6WY5IDv.js} +1 -1
- package/payload/server/public/assets/{calendar-ClOwyuz-.js → calendar-DZiHiBwV.js} +1 -1
- package/payload/server/public/assets/channel-AqnC3SHu.js +1 -0
- package/payload/server/public/assets/chat-uD28FVCS.js +1 -0
- package/payload/server/public/assets/chevron-left-lBxD57tD.js +1 -0
- package/payload/server/public/assets/chevron-right-C-lDig9Y.js +1 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-PFheZ9mw.js → chunk-2KRD3SAO-BsIIFDkc.js} +1 -1
- package/payload/server/public/assets/{chunk-336JU56O-CCFOp5VK.js → chunk-336JU56O-j9z1VtyC.js} +2 -2
- package/payload/server/public/assets/chunk-426QAEUC-CO02gU5d.js +1 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-Hz4JWOf2.js → chunk-4BX2VUAB-C9i7prxq.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-4xeV0s85.js → chunk-4TB4RGXK-DH0QVGcv.js} +1 -1
- package/payload/server/public/assets/{chunk-55IACEB6-4QKgBpoh.js → chunk-55IACEB6-Dnd_YCPA.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-ms3K6Z5z.js → chunk-5FUZZQ4R-D5sSz3yN.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-CIC4GIGi.js → chunk-5PVQY5BW-CJrwWjAT.js} +1 -1
- package/payload/server/public/assets/{chunk-67CJDMHE-B-XrWVmV.js → chunk-67CJDMHE-SjP6_hUw.js} +1 -1
- package/payload/server/public/assets/{chunk-7N4EOEYR-C7ECOUYQ.js → chunk-7N4EOEYR-fAuhVJD0.js} +1 -1
- package/payload/server/public/assets/{chunk-AA7GKIK3-DOZ6Fxwk.js → chunk-AA7GKIK3-DZxa7KVg.js} +1 -1
- package/payload/server/public/assets/{chunk-BSJP7CBP-4cJ_b0c6.js → chunk-BSJP7CBP-DjeG3eQ-.js} +1 -1
- package/payload/server/public/assets/{chunk-CIAEETIT--mhZipWM.js → chunk-CIAEETIT-RYQULNJm.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-jZpVwob_.js → chunk-EDXVE4YY-Cahapnon.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-Nn-p-xIA.js → chunk-ENJZ2VHE-1146X1L4.js} +1 -1
- package/payload/server/public/assets/{chunk-FMBD7UC4-DyNpcKOS.js → chunk-FMBD7UC4-BCFumtcP.js} +1 -1
- package/payload/server/public/assets/{chunk-FOC6F5B3-C0P8q1uz.js → chunk-FOC6F5B3-CkrtX8Zt.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-CdXQ5SfI.js → chunk-ICPOFSXX-Ba1y3DaW.js} +2 -2
- package/payload/server/public/assets/{chunk-K5T4RW27-BVZJKKsT.js → chunk-K5T4RW27-CF-PI3uQ.js} +1 -1
- package/payload/server/public/assets/{chunk-KGLVRYIC-QlVWTe0V.js → chunk-KGLVRYIC-SFFC6ZC-.js} +1 -1
- package/payload/server/public/assets/{chunk-LIHQZDEY-CpGVZutP.js → chunk-LIHQZDEY-DbOLEP4R.js} +1 -1
- package/payload/server/public/assets/{chunk-ORNJ4GCN-WVcS6fUC.js → chunk-ORNJ4GCN-VB963bkN.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-B7hiSTed.js → chunk-OYMX7WX6-DWYY1pQa.js} +1 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-BiFMbK8t.js +1 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-DJPnZxGy.js → chunk-U2HBQHQK-DAH1diYP.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-DilBs1Yc.js → chunk-X2U36JSP-Dmw9coXz.js} +1 -1
- package/payload/server/public/assets/{chunk-XPW4576I-B5-uyrJ0.js → chunk-XPW4576I-DaAUON1-.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-BNO4z0Mv.js → chunk-YZCP3GAM-BUcfkEef.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-BzHMQpip.js → chunk-ZZ45TVLE-BLD-vFRO.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BdRqzScB.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-ChPLgHbS.js +1 -0
- package/payload/server/public/assets/clock-DqRNsY40.js +1 -0
- package/payload/server/public/assets/clone-TKtrjWBC.js +1 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-3DWYmn1o.js → cose-bilkent-S5V4N54A-CoZX0uki.js} +1 -1
- package/payload/server/public/assets/{dagre-Cpy31xJW.js → dagre-Bmjs8zJA.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-C8fyxHFd.js → dagre-KV5264BT-BZCP2wnq.js} +1 -1
- package/payload/server/public/assets/data-BsFyBN85.js +1 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-ycyhnLvr.js → diagram-5BDNPKRD-8Nt9a4xX.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-BkeYicIt.js → diagram-G4DWMVQ6-vh5tcYqJ.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-BcGZU-Q3.js → diagram-MMDJMWI5-DGf--jc8.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-DuBDCFb_.js → diagram-TYMM5635-CsO7TIdw.js} +1 -1
- package/payload/server/public/assets/{dist-BYc_arNy.js → dist-cdnE4DqK.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-DmkeOzvp.js → erDiagram-SMLLAGMA-4a78yV8_.js} +1 -1
- package/payload/server/public/assets/file-text-B1HjPFbM.js +1 -0
- package/payload/server/public/assets/{flatten-QjnJ1Gcl.js → flatten-BtIc9jX7.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-CkE-pjuB.js → flowDiagram-DWJPFMVM-BoQBXs6t.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-Cjiy3kvE.js → ganttDiagram-T4ZO3ILL-CvzqwCC8.js} +1 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-DfcaTE9L.js +1 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-CsI4lKZm.js → gitGraphDiagram-UUTBAWPF-D_nBxay_.js} +1 -1
- package/payload/server/public/assets/graph-CIC-mgKR.js +51 -0
- package/payload/server/public/assets/graph-labels-BnpHCHaQ.js +1 -0
- package/payload/server/public/assets/{graphlib-BkXxC6D5.js → graphlib-D0NdsKJI.js} +1 -1
- package/payload/server/public/assets/info-OMHHGYJF-CD-u6gw9.js +1 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-C6gPQCvO.js +2 -0
- package/payload/server/public/assets/{isEmpty-BavJI9Cn.js → isEmpty-Bu4fZ8Kf.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-D8lZtjRc.js → ishikawaDiagram-UXIWVN3A-auW-s0i0.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-kLE7SiR_.js → journeyDiagram-VCZTEJTY-3Q6AWK4A.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-ove6JuD3.js → kanban-definition-6JOO6SKY-B4MPFp98.js} +1 -1
- package/payload/server/public/assets/{line-CZMSoxM6.js → line-26MdeG5Z.js} +1 -1
- package/payload/server/public/assets/{linear-Be8IK9hK.js → linear-Dq9s_bDO.js} +1 -1
- package/payload/server/public/assets/{maximize-2-BbzPm7o8.js → maximize-2-BL7QVTcQ.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-BBADqbnp.js → mermaid-parser.core-vLEpOXgf.js} +2 -2
- package/payload/server/public/assets/{mermaid.core-mH3N7K0I.js → mermaid.core-Durk4m6D.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-BjwwwWil.js → mindmap-definition-QFDTVHPH-DOIg-TyG.js} +1 -1
- package/payload/server/public/assets/{operator-DCNWUKP_.js → operator-B62h_TaC.js} +1 -1
- package/payload/server/public/assets/{ordinal-BHeIKG-K.js → ordinal-C2TEWKNu.js} +1 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-BaLYeIrU.js +1 -0
- package/payload/server/public/assets/page-BUUBseJZ.js +32 -0
- package/payload/server/public/assets/page-Bw-tYjw7.js +1 -0
- package/payload/server/public/assets/{pdf-render-fJz4vym9.js → pdf-render-C257cidb.js} +1 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-CL-XJtk-.js +1 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-D-lXWWta.js → pieDiagram-DEJITSTG-DtgBHZfi.js} +1 -1
- package/payload/server/public/assets/{public-DXJXQPwe.js → public-BI21tOkm.js} +1 -1
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-13QyG_AO.js → quadrantDiagram-34T5L4WZ-BTc5Qn2y.js} +1 -1
- package/payload/server/public/assets/radar-PYXPWWZC-Cn-g6F_h.js +1 -0
- package/payload/server/public/assets/{reduce-Fm685to3.js → reduce-BGpN5lgn.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-Bx45Bgn4.js → requirementDiagram-MS252O5E-BNgOO5YW.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-L42fL8ey.js → rotate-ccw-C_20Bc3E.js} +1 -1
- package/payload/server/public/assets/routines-Ci3N8wqV.js +1 -0
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-Cj-Gq25v.js → sankeyDiagram-XADWPNL6-MyUATmVt.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-B8RDRq93.js → sequenceDiagram-FGHM5R23-CBJrF5Vi.js} +1 -1
- package/payload/server/public/assets/skills-CiflzOko.js +1 -0
- package/payload/server/public/assets/{src-D3VYuW_Z.js → src-DekKlUCp.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-DoyFF1Kl.js → stateDiagram-FHFEXIEX-6wbUjn1Q.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BdMdfBeC.js +1 -0
- package/payload/server/public/assets/{tasks-GNtvZL8F.js → tasks-DC2Yf2Ev.js} +1 -1
- package/payload/server/public/assets/{time-entry-format-BreNpFLJ.js → time-entry-format-CNcjs2HV.js} +1 -1
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-Df4RQXm6.js → timeline-definition-GMOUNBTQ-BHjTMCGY.js} +1 -1
- package/payload/server/public/assets/treeView-SZITEDCU-CmZoOGlC.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-H27WFS-y.js +1 -0
- package/payload/server/public/assets/{triangle-alert-DumCWC08.js → triangle-alert-CngnWtjD.js} +1 -1
- package/payload/server/public/assets/{useCopyFeedback-DHCtz8qX.js → useCopyFeedback-DZ9Bw5CI.js} +1 -1
- package/payload/server/public/assets/{useSubAccountSwitcher-Bc7XHr0L.js → useSubAccountSwitcher-CHwQhkaI.js} +1 -1
- package/payload/server/public/assets/{useSubAccountSwitcher-DPHQJO7E.css → useSubAccountSwitcher-yFQqnpQ8.css} +1 -1
- package/payload/server/public/assets/useVoiceRecorder-C3G6aqZr.js +2 -0
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-D2o5og9l.js → vennDiagram-DHZGUBPP-yo3-cf0U.js} +1 -1
- package/payload/server/public/assets/wardley-RL74JXVD-DNpWIvU4.js +1 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BDueObbS.js → wardleyDiagram-NUSXRM2D-DZlyFzrg.js} +1 -1
- package/payload/server/public/assets/{wrench-iWkROE1V.js → wrench-dky2-13x.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-BTYs4Fgh.js → xychartDiagram-5P7HB3ND-B5HV5h80.js} +1 -1
- package/payload/server/public/browser.html +5 -5
- package/payload/server/public/calendar.html +8 -8
- package/payload/server/public/chat.html +16 -15
- package/payload/server/public/data.html +13 -12
- package/payload/server/public/graph.html +10 -10
- package/payload/server/public/index.html +17 -16
- package/payload/server/public/operator.html +17 -16
- package/payload/server/public/public.html +16 -15
- package/payload/server/public/routines.html +7 -7
- package/payload/server/public/skills.html +19 -0
- package/payload/server/public/tasks.html +7 -7
- package/payload/server/server.js +714 -402
- package/payload/server/public/assets/AdminShell-BFVVkWFC.js +0 -2
- package/payload/server/public/assets/admin-BWb8me-E.js +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-D-AX2VuA.js +0 -1
- package/payload/server/public/assets/channel-DZ5sh6YQ.js +0 -1
- package/payload/server/public/assets/chat-MvnxPJZ5.js +0 -1
- package/payload/server/public/assets/chevron-left-BzIg4in6.js +0 -1
- package/payload/server/public/assets/chevron-right-BcFSa9C3.js +0 -1
- package/payload/server/public/assets/chunk-426QAEUC-CcjBLp4a.js +0 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-B2WjDYBE.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-CT3jNrze.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DJRsjAkC.js +0 -1
- package/payload/server/public/assets/clock-Dr3NGtjR.js +0 -1
- package/payload/server/public/assets/clone-FcEDnoMT.js +0 -1
- package/payload/server/public/assets/data-BjqC4hyM.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-D1uhnP9U.js +0 -1
- package/payload/server/public/assets/graph-B7niLM97.js +0 -51
- package/payload/server/public/assets/graph-labels-DykmXYHA.js +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-oNm27GAV.js +0 -1
- package/payload/server/public/assets/infoDiagram-42DDH7IO-LxTftqyS.js +0 -2
- package/payload/server/public/assets/packet-4T2RLAQJ-eQNVGiK3.js +0 -1
- package/payload/server/public/assets/page-C4TrTU6r.js +0 -32
- package/payload/server/public/assets/page-DUgrGrJp.js +0 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-E1u-48rt.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-Cn2cGN90.js +0 -1
- package/payload/server/public/assets/routines-JOV6xdYh.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bml-X4-H.js +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-CimabhXy.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-Cg264rpM.js +0 -1
- package/payload/server/public/assets/useVoiceRecorder-Cu6zvuFx.js +0 -2
- package/payload/server/public/assets/wardley-RL74JXVD-tbgfCg0E.js +0 -1
- /package/payload/server/public/assets/{_baseFor-Bvwvhrz4.js → _baseFor-Be3EKK3K.js} +0 -0
- /package/payload/server/public/assets/{array-D3d-WgFW.js → array-X0JlPOfd.js} +0 -0
- /package/payload/server/public/assets/{chunk-fQC6bEKA.js → chunk-CCr-iYLO.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-Cun-OM6a.js → cytoscape.esm-CI2IWMLB.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-CisKV5Ew.js → defaultLocale-B6RGN4id.js} +0 -0
- /package/payload/server/public/assets/{init-D9ZOVaZ3.js → init-BmUWJJHz.js} +0 -0
- /package/payload/server/public/assets/{katex-C-3ZDK8o.js → katex-BjZuzSQn.js} +0 -0
- /package/payload/server/public/assets/{path-BMOgQSLM.js → path-CoPyR7c2.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-DL2DwvxV.js → preload-helper-BQrMkyGX.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-BrTFrov0.js → rough.esm-jSt7UMyi.js} +0 -0
|
@@ -5,7 +5,7 @@ import { z } from "zod";
|
|
|
5
5
|
import { readFile, writeFile } from "node:fs/promises";
|
|
6
6
|
import { resolve, join } from "node:path";
|
|
7
7
|
import { execFile, execFileSync } from "node:child_process";
|
|
8
|
-
import { appendFileSync, cpSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync,
|
|
8
|
+
import { appendFileSync, cpSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, statSync, writeFileSync } from "node:fs";
|
|
9
9
|
import { writeAdminEntry, removeAdminFromAccount, logUsersAudit, formatAuditRowIds } from "../../../../lib/admins-write/dist/index.js";
|
|
10
10
|
import { setAccessPassword as setAccessPasswordHash, clearAccessPassword as clearAccessPasswordHash, accessPasswordCollides } from "../../../../lib/admin-access-password/dist/index.js";
|
|
11
11
|
import { resolveCredentialTarget } from "./credential-identity.js";
|
|
@@ -20,6 +20,7 @@ import { homedir, hostname as osHostname } from "node:os";
|
|
|
20
20
|
import QRCode from "qrcode";
|
|
21
21
|
import { getSession, closeDriver } from "./lib/neo4j.js";
|
|
22
22
|
import { findSkillOwners, searchSkills, computePluginReadHint, loadSkill, parseRequiredInputs, adminAuthoringSkillBlock, skillSlugFromReadArgs, AUTHORING_DISPATCH_HINT } from "./skill-resolution.js";
|
|
23
|
+
import { storeSkillToAccount } from "./store-skill-core.js";
|
|
23
24
|
import { resolvePublicHostname } from "./lib/public-hostname.js";
|
|
24
25
|
import { resolveAdminHostname } from "./lib/admin-hostname.js";
|
|
25
26
|
import { publishSite } from "./tools/publish-site.js";
|
|
@@ -1808,15 +1809,16 @@ eagerTool(server, "cpu-triage-read", "Read a cpu-triage run started by cpu-triag
|
|
|
1808
1809
|
}
|
|
1809
1810
|
return { content: [{ type: "text", text: JSON.stringify(out, null, 2) }] };
|
|
1810
1811
|
});
|
|
1811
|
-
// operator-authored skills are written
|
|
1812
|
-
//
|
|
1813
|
-
//
|
|
1814
|
-
//
|
|
1815
|
-
//
|
|
1816
|
-
//
|
|
1817
|
-
//
|
|
1818
|
-
//
|
|
1819
|
-
//
|
|
1812
|
+
// Task 1962 — operator-authored skills are written as a plugin under the
|
|
1813
|
+
// per-account root <accountDir>/plugins/<plugin>/ ONLY. That copy survives the
|
|
1814
|
+
// installer wipe (data/ is excluded) and is loaded directly by the spawn
|
|
1815
|
+
// manifest (computeActivePlugins) and the admin skill resolvers, which walk the
|
|
1816
|
+
// account root. Nothing is written to the immutable PLATFORM_ROOT/plugins tree
|
|
1817
|
+
// (chattr +i) and there is no platform mirror. The write+resolve core lives in
|
|
1818
|
+
// store-skill-core.ts and fails closed if the written skill does not resolve,
|
|
1819
|
+
// so success is never reported for a skill that cannot load. The agent supplies
|
|
1820
|
+
// pluginName/skillName/body — the path is computed from ACCOUNT_ID. Symmetric
|
|
1821
|
+
// write counterpart to plugin-read.
|
|
1820
1822
|
eagerTool(server, "store-skill", "Save an operator-authored skill on disk as part of an admin-managed plugin. " +
|
|
1821
1823
|
"The skill becomes immediately discoverable by the admin agent (and the public agent if publicEmbed=true). " +
|
|
1822
1824
|
"Path is computed internally from the active account; the agent supplies content + names only. " +
|
|
@@ -1850,97 +1852,31 @@ eagerTool(server, "store-skill", "Save an operator-authored skill on disk as par
|
|
|
1850
1852
|
}
|
|
1851
1853
|
}
|
|
1852
1854
|
const accountDir = getAccountDir();
|
|
1853
|
-
const
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
}
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
requires: []
|
|
1879
|
-
metadata: {"platform":{"embed":["admin","public"],"optional":false}}
|
|
1880
|
-
---
|
|
1881
|
-
|
|
1882
|
-
# ${pluginName}
|
|
1883
|
-
|
|
1884
|
-
Operator-authored plugin. Skills under \`skills/\` were created via the admin skill-builder.
|
|
1885
|
-
`;
|
|
1886
|
-
writeFileSync(canonicalPluginMd, pluginMd);
|
|
1887
|
-
}
|
|
1888
|
-
// Reset skill dir before write so removed reference files don't linger.
|
|
1889
|
-
if (existsSync(skillDir)) {
|
|
1890
|
-
rmSync(skillDir, { recursive: true, force: true });
|
|
1891
|
-
}
|
|
1892
|
-
mkdirSync(skillDir, { recursive: true });
|
|
1893
|
-
// Normalise description — strip newlines and tabs to keep YAML
|
|
1894
|
-
// frontmatter on a single line. parsePluginFrontmatter uses a
|
|
1895
|
-
// single-line regex; an embedded newline (or `\n---\n`) would
|
|
1896
|
-
// otherwise corrupt the frontmatter parse and silently drop body
|
|
1897
|
-
// content from the agent prompt.
|
|
1898
|
-
const singleLineDescription = description.replace(/[\r\n\t]+/g, " ").trim();
|
|
1899
|
-
const escapedDescription = singleLineDescription.replace(/"/g, '\\"');
|
|
1900
|
-
const skillMd = `---
|
|
1901
|
-
name: ${skillName}
|
|
1902
|
-
description: "${escapedDescription}"
|
|
1903
|
-
publicEmbed: ${publicEmbed}
|
|
1904
|
-
---
|
|
1905
|
-
|
|
1906
|
-
${body}
|
|
1907
|
-
`;
|
|
1908
|
-
writeFileSync(resolve(skillDir, "SKILL.md"), skillMd);
|
|
1909
|
-
let refCount = 0;
|
|
1910
|
-
if (references.length > 0) {
|
|
1911
|
-
const refsDir = resolve(skillDir, "references");
|
|
1912
|
-
mkdirSync(refsDir, { recursive: true });
|
|
1913
|
-
for (const ref of references) {
|
|
1914
|
-
writeFileSync(resolve(refsDir, ref.filename), ref.content);
|
|
1915
|
-
refCount++;
|
|
1916
|
-
}
|
|
1917
|
-
}
|
|
1918
|
-
// Write the `.user-mirror` marker to CANONICAL first — cpSync will
|
|
1919
|
-
// carry it into the platform-side mirror as part of the same recursive
|
|
1920
|
-
// copy. This eliminates the post-cpSync writeFileSync race: if cpSync
|
|
1921
|
-
// succeeds, the marker is already in target; if cpSync fails partway,
|
|
1922
|
-
// canonical's marker is intact and the next autoDeliverUserPlugins
|
|
1923
|
-
// call retries the copy. autoDeliverUserPlugins relies on the marker
|
|
1924
|
-
// arriving with the source tree — never writes its own marker.
|
|
1925
|
-
writeFileSync(resolve(canonicalPluginDir, ".user-mirror"), `pluginName=${pluginName}\nsource=${canonicalPluginDir}\n`);
|
|
1926
|
-
// Mirror to <PLATFORM_ROOT>/plugins/<pluginName>/ so the change is
|
|
1927
|
-
// visible to the loader without a session restart.
|
|
1928
|
-
mkdirSync(mirrorPluginDir, { recursive: true });
|
|
1929
|
-
cpSync(canonicalPluginDir, mirrorPluginDir, { recursive: true, force: true });
|
|
1930
|
-
const bodyBytes = Buffer.byteLength(body, "utf-8");
|
|
1931
|
-
console.log(`[store-skill] write pluginName=${pluginName} skillName=${skillName} publicEmbed=${publicEmbed} path=${canonicalPluginDir} bodyBytes=${bodyBytes} referenceCount=${refCount} action=${action}`);
|
|
1932
|
-
return {
|
|
1933
|
-
content: [{
|
|
1934
|
-
type: "text",
|
|
1935
|
-
text: `Skill "${skillName}" saved to plugin "${pluginName}" (${action}). publicEmbed=${publicEmbed}, references=${refCount}. Active immediately for the admin agent${publicEmbed ? "; surfaces in the public agent on next session start" : ""}.`,
|
|
1936
|
-
}],
|
|
1937
|
-
};
|
|
1938
|
-
}
|
|
1939
|
-
catch (err) {
|
|
1940
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
1941
|
-
console.error(`[store-skill] ERROR pluginName=${pluginName} skillName=${skillName} reason=${msg.slice(0, 120)} path=${canonicalPluginDir}`);
|
|
1942
|
-
return { content: [{ type: "text", text: `Failed to write skill: ${msg}` }], isError: true };
|
|
1943
|
-
}
|
|
1855
|
+
const result = await storeSkillToAccount({
|
|
1856
|
+
accountDir,
|
|
1857
|
+
platformRoot: PLATFORM_ROOT,
|
|
1858
|
+
pluginName,
|
|
1859
|
+
skillName,
|
|
1860
|
+
description,
|
|
1861
|
+
publicEmbed,
|
|
1862
|
+
body,
|
|
1863
|
+
references,
|
|
1864
|
+
});
|
|
1865
|
+
if (!result.ok) {
|
|
1866
|
+
const isCollision = result.reason === "collision-with-shipped";
|
|
1867
|
+
console.error(`[store-skill] op=store-skill root=account path=${result.canonicalPluginDir} resolved=false reason=${result.reason} pluginName=${pluginName} skillName=${skillName} detail=${result.detail.slice(0, 120)}`);
|
|
1868
|
+
const text = isCollision
|
|
1869
|
+
? `pluginName "${pluginName}" collides with a shipped plugin. Choose a different pluginName.`
|
|
1870
|
+
: `Skill "${skillName}" was written to "${pluginName}" but did not register: ${result.detail}. Not activating.`;
|
|
1871
|
+
return { content: [{ type: "text", text }], isError: true };
|
|
1872
|
+
}
|
|
1873
|
+
console.log(`[store-skill] op=store-skill root=account path=${result.canonicalPluginDir} resolved=true pluginName=${pluginName} skillName=${skillName} publicEmbed=${publicEmbed} bodyBytes=${result.bodyBytes} referenceCount=${result.refCount} action=${result.action}`);
|
|
1874
|
+
return {
|
|
1875
|
+
content: [{
|
|
1876
|
+
type: "text",
|
|
1877
|
+
text: `Skill "${skillName}" saved to plugin "${pluginName}" (${result.action}). publicEmbed=${publicEmbed}, references=${result.refCount}. Active immediately for the admin agent${publicEmbed ? "; surfaces in the public agent on next session start" : ""}.`,
|
|
1878
|
+
}],
|
|
1879
|
+
};
|
|
1944
1880
|
});
|
|
1945
1881
|
eagerTool(server, "plugin-read", "Read a plugin definition (PLUGIN.md) or one of its reference files.", {
|
|
1946
1882
|
pluginName: z.string().describe("Name of the plugin directory (e.g. 'sales', 'business-assistant')"),
|
|
@@ -1960,14 +1896,23 @@ eagerTool(server, "plugin-read", "Read a plugin definition (PLUGIN.md) or one of
|
|
|
1960
1896
|
console.log(`[admin-skill-gate] role=admin skill=${authoringSlug} decision=block reason=content-producer-owned`);
|
|
1961
1897
|
return { content: [{ type: "text", text: AUTHORING_DISPATCH_HINT }], isError: true };
|
|
1962
1898
|
}
|
|
1963
|
-
|
|
1899
|
+
// Task 1962 — operator-authored plugins live under the account root, not
|
|
1900
|
+
// the platform tree. Prefer the platform copy; fall back to the account
|
|
1901
|
+
// root so an operator plugin's PLUGIN.md / SKILL.md / references resolve.
|
|
1902
|
+
const accountPluginsDir = resolve(getAccountDir(), "plugins");
|
|
1903
|
+
const platformPath = resolve(PLATFORM_ROOT, "plugins", pluginName, resolvedFile);
|
|
1904
|
+
const accountPath = resolve(accountPluginsDir, pluginName, resolvedFile);
|
|
1905
|
+
const pluginPath = existsSync(platformPath) ? platformPath : accountPath;
|
|
1906
|
+
const pluginRootDir = existsSync(platformPath)
|
|
1907
|
+
? resolve(PLATFORM_ROOT, "plugins", pluginName)
|
|
1908
|
+
: resolve(accountPluginsDir, pluginName);
|
|
1964
1909
|
if (!existsSync(pluginPath)) {
|
|
1965
1910
|
// when the agent's pluginName/file combination misses
|
|
1966
1911
|
// a skill that DOES live under `plugins/*/skills/<slug>/SKILL.md`,
|
|
1967
1912
|
// surface the corrected pluginName AND the canonical file path so
|
|
1968
1913
|
// the next call is deterministic. Both wrong-`file` and wrong-`pluginName`
|
|
1969
1914
|
// shapes feed through `computePluginReadHint`.
|
|
1970
|
-
const hint = computePluginReadHint(PLATFORM_ROOT, pluginName, resolvedFile);
|
|
1915
|
+
const hint = computePluginReadHint(PLATFORM_ROOT, pluginName, resolvedFile, accountPluginsDir);
|
|
1971
1916
|
const hintText = hint ? ` Did you mean pluginName="${hint.pluginName}", file="${hint.file}"?` : "";
|
|
1972
1917
|
console.log(`[plugin-read] ${pluginName}/${resolvedFile} not-found hint=${hint ? hint.pluginName : "none"}`);
|
|
1973
1918
|
return {
|
|
@@ -1984,7 +1929,7 @@ eagerTool(server, "plugin-read", "Read a plugin definition (PLUGIN.md) or one of
|
|
|
1984
1929
|
// Append file inventory on default calls (PLUGIN.md) so agents can discover
|
|
1985
1930
|
// skill and reference paths without guessing
|
|
1986
1931
|
if (resolvedFile === "PLUGIN.md") {
|
|
1987
|
-
const pluginRoot =
|
|
1932
|
+
const pluginRoot = pluginRootDir;
|
|
1988
1933
|
const skills = [];
|
|
1989
1934
|
const references = [];
|
|
1990
1935
|
const scanDir = (base, prefix, target) => {
|
|
@@ -2044,7 +1989,7 @@ lifelineTool(server, "skill-find", "Find which plugin owns a skill by name. Walk
|
|
|
2044
1989
|
if (!ACCOUNT_ID)
|
|
2045
1990
|
return refuseNoAccount("skill-find");
|
|
2046
1991
|
const start = Date.now();
|
|
2047
|
-
const result = findSkillOwners(PLATFORM_ROOT, skillName);
|
|
1992
|
+
const result = findSkillOwners(PLATFORM_ROOT, skillName, resolve(getAccountDir(), "plugins"));
|
|
2048
1993
|
const ms = Date.now() - start;
|
|
2049
1994
|
console.log(`[skill-find] skillName=${skillName} result=${result.status} candidates=${result.candidates.length} ms=${ms}`);
|
|
2050
1995
|
if (result.status === "unique") {
|
|
@@ -2085,7 +2030,7 @@ eagerTool(server, "skill-search", "Find skills by free-text intent when you do n
|
|
|
2085
2030
|
if (!ACCOUNT_ID)
|
|
2086
2031
|
return refuseNoAccount("skill-search");
|
|
2087
2032
|
const start = Date.now();
|
|
2088
|
-
const hits = searchSkills(PLATFORM_ROOT, query);
|
|
2033
|
+
const hits = searchSkills(PLATFORM_ROOT, query, 5, resolve(getAccountDir(), "plugins"));
|
|
2089
2034
|
const ms = Date.now() - start;
|
|
2090
2035
|
const top = hits.length > 0 ? `${hits[0].pluginName}:${hits[0].skillName}` : "none";
|
|
2091
2036
|
console.log(`[skill-search] query=${JSON.stringify(query)} hits=${hits.length} top=${top} ms=${ms}`);
|
|
@@ -2134,7 +2079,7 @@ eagerTool(server, "skill-load", "Load a plugin skill's SKILL.md body by skill na
|
|
|
2134
2079
|
}
|
|
2135
2080
|
const start = Date.now();
|
|
2136
2081
|
try {
|
|
2137
|
-
const outcome = await loadSkill(PLATFORM_ROOT, skillName);
|
|
2082
|
+
const outcome = await loadSkill(PLATFORM_ROOT, skillName, resolve(getAccountDir(), "plugins"));
|
|
2138
2083
|
if (outcome.status === "ambiguous") {
|
|
2139
2084
|
const ms = Date.now() - start;
|
|
2140
2085
|
console.log(`[skill-load] skillName=${skillName} result=ambiguous pluginName=none file=none bodyBytes=0 ms=${ms}`);
|