@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
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export interface SkillOwner {
|
|
2
2
|
pluginName: string;
|
|
3
3
|
file: string;
|
|
4
|
+
/** Absolute plugins dir this owner was found under — the platform
|
|
5
|
+
* `<root>/plugins` dir or an account `<accountDir>/plugins` dir. Callers
|
|
6
|
+
* build the SKILL.md absolute path as `resolve(root, pluginName, file)`. */
|
|
7
|
+
root: string;
|
|
4
8
|
}
|
|
5
9
|
export type SkillFindResult = {
|
|
6
10
|
status: "unique";
|
|
@@ -25,8 +29,8 @@ export interface SeatEnv {
|
|
|
25
29
|
export declare function isAdminSeat(env: SeatEnv): boolean;
|
|
26
30
|
export declare function skillSlugFromReadArgs(pluginName: string, file: string): string | undefined;
|
|
27
31
|
export declare function adminAuthoringSkillBlock(slug: string | undefined, env: SeatEnv): boolean;
|
|
28
|
-
export declare function findSkillOwners(platformRoot: string, skillName: string): SkillFindResult;
|
|
29
|
-
export declare function computePluginReadHint(platformRoot: string, pluginName: string, file: string): PluginReadHint | null;
|
|
32
|
+
export declare function findSkillOwners(platformRoot: string, skillName: string, accountPluginsDir?: string): SkillFindResult;
|
|
33
|
+
export declare function computePluginReadHint(platformRoot: string, pluginName: string, file: string, accountPluginsDir?: string): PluginReadHint | null;
|
|
30
34
|
export type SkillLoadOutcome = {
|
|
31
35
|
status: "unique";
|
|
32
36
|
pluginName: string;
|
|
@@ -51,6 +55,6 @@ export declare function parseSkillFrontmatter(skillBody: string): {
|
|
|
51
55
|
name: string;
|
|
52
56
|
description: string;
|
|
53
57
|
};
|
|
54
|
-
export declare function searchSkills(platformRoot: string, query: string, limit?: number): SkillSearchHit[];
|
|
55
|
-
export declare function loadSkill(platformRoot: string, skillName: string): Promise<SkillLoadOutcome>;
|
|
58
|
+
export declare function searchSkills(platformRoot: string, query: string, limit?: number, accountPluginsDir?: string): SkillSearchHit[];
|
|
59
|
+
export declare function loadSkill(platformRoot: string, skillName: string, accountPluginsDir?: string): Promise<SkillLoadOutcome>;
|
|
56
60
|
//# sourceMappingURL=skill-resolution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-resolution.d.ts","sourceRoot":"","sources":["../src/skill-resolution.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,UAAU,EAAE,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,EAAE,CAAA;CAAE,CAAC;AAU5C,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAeD,eAAO,MAAM,iCAAiC,EAAE,WAAW,CAAC,MAAM,CAEjE,CAAC;AAKF,eAAO,MAAM,uBAAuB,uHACkF,CAAC;AAEvH,MAAM,WAAW,OAAO;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AASD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEjD;AAOD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1F;AAID,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAGxF;
|
|
1
|
+
{"version":3,"file":"skill-resolution.d.ts","sourceRoot":"","sources":["../src/skill-resolution.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb;;iFAE6E;IAC7E,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,UAAU,EAAE,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,EAAE,CAAA;CAAE,CAAC;AAU5C,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAeD,eAAO,MAAM,iCAAiC,EAAE,WAAW,CAAC,MAAM,CAEjE,CAAC;AAKF,eAAO,MAAM,uBAAuB,uHACkF,CAAC;AAEvH,MAAM,WAAW,OAAO;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AASD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEjD;AAOD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1F;AAID,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAGxF;AA8BD,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,GACzB,eAAe,CAQjB;AAcD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GACzB,cAAc,GAAG,IAAI,CASvB;AAeD,MAAM,MAAM,gBAAgB,GACxB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1F;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,UAAU,EAAE,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAwB5B,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,GAAG,SAAS,CAoB7E;AAWD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AASD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAkC9F;AA0BD,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,EACT,iBAAiB,CAAC,EAAE,MAAM,GACzB,cAAc,EAAE,CAwHlB;AAED,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAY3B"}
|
|
@@ -63,18 +63,18 @@ export function adminAuthoringSkillBlock(slug, env) {
|
|
|
63
63
|
return false;
|
|
64
64
|
return isAdminSeat(env) && CONTENT_PRODUCER_AUTHORING_SKILLS.has(slug);
|
|
65
65
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
66
|
+
// Append every plugin under `pluginsDir` that owns `skillName` to `into`,
|
|
67
|
+
// tagging each owner with the `pluginsDir` it was found under. Two-level,
|
|
68
|
+
// non-recursive (plugin dir → skill dir), matching the historical walk shape.
|
|
69
|
+
function collectOwners(pluginsDir, skillName, into) {
|
|
70
|
+
if (!existsSync(pluginsDir))
|
|
71
|
+
return;
|
|
72
72
|
let entries;
|
|
73
73
|
try {
|
|
74
74
|
entries = readdirSync(pluginsDir);
|
|
75
75
|
}
|
|
76
76
|
catch {
|
|
77
|
-
return
|
|
77
|
+
return;
|
|
78
78
|
}
|
|
79
79
|
for (const pluginName of entries) {
|
|
80
80
|
const skillFile = resolve(pluginsDir, pluginName, "skills", skillName, "SKILL.md");
|
|
@@ -87,8 +87,19 @@ export function findSkillOwners(platformRoot, skillName) {
|
|
|
87
87
|
catch {
|
|
88
88
|
continue;
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
into.push({ pluginName, file: `skills/${skillName}/SKILL.md`, root: pluginsDir });
|
|
91
91
|
}
|
|
92
|
+
}
|
|
93
|
+
// Walk `<platformRoot>/plugins` first, then — when `accountPluginsDir` is given
|
|
94
|
+
// (Task 1962) — the account's operator-plugin root. A slug owned across both
|
|
95
|
+
// roots flows through the existing multi-owner ambiguous path. Account plugin
|
|
96
|
+
// names never collide with a shipped plugin name (store-skill refuses that at
|
|
97
|
+
// write time), so a same-name plugin cannot appear under both roots.
|
|
98
|
+
export function findSkillOwners(platformRoot, skillName, accountPluginsDir) {
|
|
99
|
+
const owners = [];
|
|
100
|
+
collectOwners(resolve(platformRoot, "plugins"), skillName, owners);
|
|
101
|
+
if (accountPluginsDir)
|
|
102
|
+
collectOwners(accountPluginsDir, skillName, owners);
|
|
92
103
|
if (owners.length === 0)
|
|
93
104
|
return { status: "not-found", candidates: [] };
|
|
94
105
|
if (owners.length === 1)
|
|
@@ -107,11 +118,11 @@ export function findSkillOwners(platformRoot, skillName) {
|
|
|
107
118
|
//
|
|
108
119
|
// The file argument wins when both shapes match — it carries the more
|
|
109
120
|
// specific intent (the agent named a file directly).
|
|
110
|
-
export function computePluginReadHint(platformRoot, pluginName, file) {
|
|
121
|
+
export function computePluginReadHint(platformRoot, pluginName, file, accountPluginsDir) {
|
|
111
122
|
const skillName = file.match(SKILL_FILE_PATH)?.[1] ?? pluginName.match(SKILL_IN_PLUGIN_NAME)?.[1];
|
|
112
123
|
if (!skillName)
|
|
113
124
|
return null;
|
|
114
|
-
const result = findSkillOwners(platformRoot, skillName);
|
|
125
|
+
const result = findSkillOwners(platformRoot, skillName, accountPluginsDir);
|
|
115
126
|
if (result.status !== "unique")
|
|
116
127
|
return null;
|
|
117
128
|
const owner = result.candidates[0];
|
|
@@ -235,7 +246,7 @@ function stripQuotes(s) {
|
|
|
235
246
|
// skill against every skill that merely shares a common trigger word. Ties
|
|
236
247
|
// break by slug ascending so the order is deterministic. A query that matches
|
|
237
248
|
// nothing returns `[]` (not an error).
|
|
238
|
-
export function searchSkills(platformRoot, query, limit = 5) {
|
|
249
|
+
export function searchSkills(platformRoot, query, limit = 5, accountPluginsDir) {
|
|
239
250
|
const terms = Array.from(new Set(query
|
|
240
251
|
.toLowerCase()
|
|
241
252
|
.split(/[^a-z0-9]+/)
|
|
@@ -252,55 +263,61 @@ export function searchSkills(platformRoot, query, limit = 5) {
|
|
|
252
263
|
// RegExps are stateless under `.test`.
|
|
253
264
|
const termRe = new Map(terms.map(t => [t, new RegExp(`\\b${t}`)]));
|
|
254
265
|
const matches = (hay, term) => termRe.get(term).test(hay);
|
|
255
|
-
const pluginsDir = resolve(platformRoot, "plugins");
|
|
256
|
-
if (!existsSync(pluginsDir))
|
|
257
|
-
return [];
|
|
258
|
-
let plugins;
|
|
259
|
-
try {
|
|
260
|
-
plugins = readdirSync(pluginsDir);
|
|
261
|
-
}
|
|
262
|
-
catch {
|
|
263
|
-
return [];
|
|
264
|
-
}
|
|
265
266
|
const candidates = [];
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
267
|
+
// Enumerate the platform plugins root first, then — Task 1962 — the account's
|
|
268
|
+
// operator-plugin root. Same two-level, non-recursive shape for both.
|
|
269
|
+
const roots = [resolve(platformRoot, "plugins")];
|
|
270
|
+
if (accountPluginsDir)
|
|
271
|
+
roots.push(accountPluginsDir);
|
|
272
|
+
for (const pluginsDir of roots) {
|
|
273
|
+
if (!existsSync(pluginsDir))
|
|
269
274
|
continue;
|
|
270
|
-
let
|
|
275
|
+
let plugins;
|
|
271
276
|
try {
|
|
272
|
-
|
|
277
|
+
plugins = readdirSync(pluginsDir);
|
|
273
278
|
}
|
|
274
279
|
catch {
|
|
275
280
|
continue;
|
|
276
281
|
}
|
|
277
|
-
for (const
|
|
278
|
-
const
|
|
279
|
-
if (!existsSync(
|
|
282
|
+
for (const pluginName of plugins) {
|
|
283
|
+
const skillsDir = resolve(pluginsDir, pluginName, "skills");
|
|
284
|
+
if (!existsSync(skillsDir))
|
|
280
285
|
continue;
|
|
286
|
+
let skills;
|
|
281
287
|
try {
|
|
282
|
-
|
|
283
|
-
continue;
|
|
288
|
+
skills = readdirSync(skillsDir);
|
|
284
289
|
}
|
|
285
290
|
catch {
|
|
286
291
|
continue;
|
|
287
292
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
293
|
+
for (const skillName of skills) {
|
|
294
|
+
const skillFile = resolve(skillsDir, skillName, "SKILL.md");
|
|
295
|
+
if (!existsSync(skillFile))
|
|
296
|
+
continue;
|
|
297
|
+
try {
|
|
298
|
+
if (!statSync(skillFile).isFile())
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
let body;
|
|
305
|
+
try {
|
|
306
|
+
body = readFileSync(skillFile, "utf-8");
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
const { name, description } = parseSkillFrontmatter(body);
|
|
312
|
+
candidates.push({
|
|
313
|
+
pluginName,
|
|
314
|
+
skillName,
|
|
315
|
+
description,
|
|
316
|
+
name,
|
|
317
|
+
nameHay: `${skillName} ${name}`.toLowerCase(),
|
|
318
|
+
descHay: description.toLowerCase(),
|
|
319
|
+
});
|
|
294
320
|
}
|
|
295
|
-
const { name, description } = parseSkillFrontmatter(body);
|
|
296
|
-
candidates.push({
|
|
297
|
-
pluginName,
|
|
298
|
-
skillName,
|
|
299
|
-
description,
|
|
300
|
-
name,
|
|
301
|
-
nameHay: `${skillName} ${name}`.toLowerCase(),
|
|
302
|
-
descHay: description.toLowerCase(),
|
|
303
|
-
});
|
|
304
321
|
}
|
|
305
322
|
}
|
|
306
323
|
if (candidates.length === 0)
|
|
@@ -342,16 +359,16 @@ export function searchSkills(platformRoot, query, limit = 5) {
|
|
|
342
359
|
a.pluginName.localeCompare(b.pluginName));
|
|
343
360
|
return hits.slice(0, limit);
|
|
344
361
|
}
|
|
345
|
-
export async function loadSkill(platformRoot, skillName) {
|
|
346
|
-
const result = findSkillOwners(platformRoot, skillName);
|
|
362
|
+
export async function loadSkill(platformRoot, skillName, accountPluginsDir) {
|
|
363
|
+
const result = findSkillOwners(platformRoot, skillName, accountPluginsDir);
|
|
347
364
|
if (result.status === "ambiguous") {
|
|
348
365
|
return { status: "ambiguous", candidates: result.candidates };
|
|
349
366
|
}
|
|
350
367
|
if (result.status === "not-found") {
|
|
351
368
|
return { status: "not-found" };
|
|
352
369
|
}
|
|
353
|
-
const [{ pluginName, file }] = result.candidates;
|
|
354
|
-
const absolutePath = resolve(
|
|
370
|
+
const [{ pluginName, file, root }] = result.candidates;
|
|
371
|
+
const absolutePath = resolve(root, pluginName, file);
|
|
355
372
|
const body = await readFile(absolutePath, "utf-8");
|
|
356
373
|
return { status: "unique", pluginName, file, absolutePath, body };
|
|
357
374
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-resolution.js","sourceRoot":"","sources":["../src/skill-resolution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-resolution.js","sourceRoot":"","sources":["../src/skill-resolution.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,iFAAiF;AACjF,2EAA2E;AAC3E,oEAAoE;AACpE,sEAAsE;AACtE,oDAAoD;AACpD,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,+CAA+C;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sCAAsC,EAAE,MAAM,wCAAwC,CAAC;AAgBhG,MAAM,eAAe,GAAG,iCAAiC,CAAC;AAC1D,8DAA8D;AAC9D,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,mDAAmD;AACnD,MAAM,oBAAoB,GAAG,8CAA8C,CAAC;AAO5E,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,iDAAiD;AACjD,6EAA6E;AAC7E,+CAA+C;AAC/C,gFAAgF;AAChF,sFAAsF;AACtF,iEAAiE;AACjE,yEAAyE;AACzE,+EAA+E;AAC/E,yEAAyE;AACzE,MAAM,CAAC,MAAM,iCAAiC,GAAwB,IAAI,GAAG,CAC3E,sCAAsC,CACvC,CAAC;AAEF,6EAA6E;AAC7E,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAClC,oHAAoH,CAAC;AAOvH,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,wEAAwE;AACxE,uEAAuE;AACvE,yEAAyE;AACzE,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,GAAG,CAAC,iBAAiB,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,4EAA4E;AAC5E,8DAA8D;AAC9D,MAAM,UAAU,qBAAqB,CAAC,UAAkB,EAAE,IAAY;IACpE,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB,CAAC,IAAwB,EAAE,GAAY;IAC7E,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,iCAAiC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,0EAA0E;AAC1E,0EAA0E;AAC1E,8EAA8E;AAC9E,SAAS,aAAa,CAAC,UAAkB,EAAE,SAAiB,EAAE,IAAkB;IAC9E,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO;IACpC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,SAAS;QACrC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;gBAAE,SAAS;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,SAAS,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAC7B,YAAoB,EACpB,SAAiB,EACjB,iBAA0B;IAE1B,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnE,IAAI,iBAAiB;QAAE,aAAa,CAAC,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACxE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACrD,CAAC;AAED,uEAAuE;AACvE,qEAAqE;AACrE,mEAAmE;AACnE,sEAAsE;AACtE,yBAAyB;AACzB,EAAE;AACF,oCAAoC;AACpC,8EAA8E;AAC9E,mFAAmF;AACnF,EAAE;AACF,sEAAsE;AACtE,qDAAqD;AACrD,MAAM,UAAU,qBAAqB,CACnC,YAAoB,EACpB,UAAkB,EAClB,IAAY,EACZ,iBAA0B;IAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,UAAU,SAAS,WAAW,CAAC;IACrD,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3E,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAC/D,CAAC;AAoBD,gEAAgE;AAChE,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,yEAAyE;AACzE,sEAAsE;AACtE,4EAA4E;AAC5E,eAAe;AACf,EAAE;AACF,wEAAwE;AACxE,oEAAoE;AACpE,6BAA6B;AAC7B,EAAE;AACF,oBAAoB;AACpB,uCAAuC;AACvC,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAC7C,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC;AAmBD,8EAA8E;AAC9E,2EAA2E;AAC3E,mEAAmE;AACnE,qEAAqE;AACrE,0EAA0E;AAC1E,6EAA6E;AAC7E,kDAAkD;AAClD,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACpE,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAElC,MAAM,SAAS,GAAG,CAAC,GAA2B,EAAU,EAAE;QACxD,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,qEAAqE;YACrE,qEAAqE;YACrE,wEAAwE;YACxE,sBAAsB;YACtB,MAAM,aAAa,GAAG,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrE,IAAI,MAAM,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YACD,qDAAqD;YACrD,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,oBAAoB;gBAClE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChC,IAAI,OAAO,KAAK,EAAE;oBAAE,SAAS;gBAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrF,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mEAAmE;AACnE,gFAAgF;AAChF,EAAE;AACF,qEAAqE;AACrE,8EAA8E;AAC9E,sCAAsC;AACtC,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,oEAAoE;AACpE,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,uCAAuC;AACvC,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,KAAa,EACb,KAAK,GAAG,CAAC,EACT,iBAA0B;IAE1B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,GAAG,CACL,KAAK;SACF,WAAW,EAAE;SACb,KAAK,CAAC,YAAY,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAC9B,CACF,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,wEAAwE;IACxE,uCAAuC;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,IAAY,EAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAUpF,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,8EAA8E;IAC9E,sEAAsE;IACtE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IACjD,IAAI,iBAAiB;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrD,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS;QACtC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS;YACrC,IAAI,MAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;gBAC5D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,SAAS;gBACrC,IAAI,CAAC;oBACH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;wBAAE,SAAS;gBAC9C,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,IAAY,CAAC;gBACjB,IAAI,CAAC;oBACH,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC1D,UAAU,CAAC,IAAI,CAAC;oBACd,UAAU;oBACV,SAAS;oBACT,WAAW;oBACX,IAAI;oBACJ,OAAO,EAAE,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC7C,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE;iBACnC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,iEAAiE;IACjE,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC;gBAAE,KAAK,EAAE,CAAC;QACpE,CAAC;QACD,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,GAAqB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;gBAAE,SAAS;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9D,KAAK,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC;gBACR,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,IAAI,EAAE,UAAU,CAAC,CAAC,SAAS,WAAW;gBACtC,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACjB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;QACjB,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CACzC,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,YAAoB,EACpB,SAAiB,EACjB,iBAA0B;IAE1B,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IACD,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;IACvD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type SkillFindResult } from "./skill-resolution.js";
|
|
2
|
+
export interface StoreSkillReference {
|
|
3
|
+
filename: string;
|
|
4
|
+
content: string;
|
|
5
|
+
}
|
|
6
|
+
export interface StoreSkillArgs {
|
|
7
|
+
accountDir: string;
|
|
8
|
+
platformRoot: string;
|
|
9
|
+
pluginName: string;
|
|
10
|
+
skillName: string;
|
|
11
|
+
description: string;
|
|
12
|
+
publicEmbed: boolean;
|
|
13
|
+
body: string;
|
|
14
|
+
references: StoreSkillReference[];
|
|
15
|
+
/** Test seam for the post-write resolve. Defaults to `findSkillOwners`.
|
|
16
|
+
* Injected only by tests to exercise the fail-closed (not-found) branch,
|
|
17
|
+
* which a real write under the walked account root cannot otherwise reach. */
|
|
18
|
+
resolveOwners?: (platformRoot: string, skillName: string, accountPluginsDir: string) => SkillFindResult;
|
|
19
|
+
}
|
|
20
|
+
export type StoreSkillResult = {
|
|
21
|
+
ok: true;
|
|
22
|
+
action: "create" | "overwrite";
|
|
23
|
+
canonicalPluginDir: string;
|
|
24
|
+
refCount: number;
|
|
25
|
+
bodyBytes: number;
|
|
26
|
+
} | {
|
|
27
|
+
ok: false;
|
|
28
|
+
reason: "collision-with-shipped" | "resolve-failed" | "write-error";
|
|
29
|
+
detail: string;
|
|
30
|
+
canonicalPluginDir: string;
|
|
31
|
+
};
|
|
32
|
+
export declare function storeSkillToAccount(args: StoreSkillArgs): Promise<StoreSkillResult>;
|
|
33
|
+
//# sourceMappingURL=store-skill-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-skill-core.d.ts","sourceRoot":"","sources":["../src/store-skill-core.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC;;mFAE+E;IAC/E,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,eAAe,CAAC;CACzG;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7G;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnI,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2GzF"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// Task 1962 — write an operator-authored skill to the per-account plugins
|
|
2
|
+
// root and confirm it resolves. This is the write counterpart to `loadSkill`
|
|
3
|
+
// (skill-resolution.ts). Operator plugins live ONLY under
|
|
4
|
+
// <accountDir>/plugins/<plugin>/ — never the immutable PLATFORM_ROOT/plugins
|
|
5
|
+
// tree (chattr +i), and never a platform mirror. `data/` is excluded from the
|
|
6
|
+
// installer wipe, so the account copy is durable.
|
|
7
|
+
//
|
|
8
|
+
// The canonical write is not evidence the skill loaded: this function resolves
|
|
9
|
+
// the written skill through the same account-root walk the admin resolvers use
|
|
10
|
+
// and fails closed (ok=false) if it does not resolve, so a write that cannot be
|
|
11
|
+
// loaded never reports success.
|
|
12
|
+
//
|
|
13
|
+
// Input validation (kebab-case names, reference filename shape) stays in the
|
|
14
|
+
// MCP handler; this seam owns the filesystem write + post-write resolve so it
|
|
15
|
+
// is unit-testable without the MCP stdio transport.
|
|
16
|
+
import { existsSync, mkdirSync, writeFileSync, rmSync } from "node:fs";
|
|
17
|
+
import { resolve } from "node:path";
|
|
18
|
+
import { findSkillOwners } from "./skill-resolution.js";
|
|
19
|
+
export async function storeSkillToAccount(args) {
|
|
20
|
+
const { accountDir, platformRoot, pluginName, skillName, description, publicEmbed, body, references } = args;
|
|
21
|
+
const resolveOwners = args.resolveOwners ?? findSkillOwners;
|
|
22
|
+
const accountPluginsDir = resolve(accountDir, "plugins");
|
|
23
|
+
const canonicalPluginDir = resolve(accountPluginsDir, pluginName);
|
|
24
|
+
const canonicalPluginMd = resolve(canonicalPluginDir, "PLUGIN.md");
|
|
25
|
+
const shippedPluginMd = resolve(platformRoot, "plugins", pluginName, "PLUGIN.md");
|
|
26
|
+
// Collision: a shipped platform plugin already owns this name. Refuse rather
|
|
27
|
+
// than shadow it (platform wins name clashes across roots).
|
|
28
|
+
if (existsSync(shippedPluginMd) && !existsSync(canonicalPluginMd)) {
|
|
29
|
+
return {
|
|
30
|
+
ok: false,
|
|
31
|
+
reason: "collision-with-shipped",
|
|
32
|
+
detail: `pluginName "${pluginName}" collides with a shipped plugin`,
|
|
33
|
+
canonicalPluginDir,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const skillDir = resolve(canonicalPluginDir, "skills", skillName);
|
|
37
|
+
const action = existsSync(resolve(skillDir, "SKILL.md")) ? "overwrite" : "create";
|
|
38
|
+
let refCount = 0;
|
|
39
|
+
let bodyBytes = 0;
|
|
40
|
+
try {
|
|
41
|
+
mkdirSync(canonicalPluginDir, { recursive: true });
|
|
42
|
+
// Compose PLUGIN.md only on first write.
|
|
43
|
+
if (!existsSync(canonicalPluginMd)) {
|
|
44
|
+
const pluginMd = `---
|
|
45
|
+
name: ${pluginName}
|
|
46
|
+
description: "Operator-authored plugin"
|
|
47
|
+
tools: []
|
|
48
|
+
hidden: []
|
|
49
|
+
requires: []
|
|
50
|
+
metadata: {"platform":{"embed":["admin","public"],"optional":false}}
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
# ${pluginName}
|
|
54
|
+
|
|
55
|
+
Operator-authored plugin. Skills under \`skills/\` were created via the admin skill-builder.
|
|
56
|
+
`;
|
|
57
|
+
writeFileSync(canonicalPluginMd, pluginMd);
|
|
58
|
+
}
|
|
59
|
+
// Reset the skill dir before write so removed reference files don't linger.
|
|
60
|
+
if (existsSync(skillDir)) {
|
|
61
|
+
rmSync(skillDir, { recursive: true, force: true });
|
|
62
|
+
}
|
|
63
|
+
mkdirSync(skillDir, { recursive: true });
|
|
64
|
+
// Normalise description to a single YAML line. The manifest frontmatter
|
|
65
|
+
// reader (`frontmatterField` in spawn-context.ts) matches the value with a
|
|
66
|
+
// single-line, `m`-flag regex; an embedded newline would truncate it.
|
|
67
|
+
const singleLineDescription = description.replace(/[\r\n\t]+/g, " ").trim();
|
|
68
|
+
const escapedDescription = singleLineDescription.replace(/"/g, '\\"');
|
|
69
|
+
const skillMd = `---
|
|
70
|
+
name: ${skillName}
|
|
71
|
+
description: "${escapedDescription}"
|
|
72
|
+
publicEmbed: ${publicEmbed}
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
${body}
|
|
76
|
+
`;
|
|
77
|
+
writeFileSync(resolve(skillDir, "SKILL.md"), skillMd);
|
|
78
|
+
if (references.length > 0) {
|
|
79
|
+
const refsDir = resolve(skillDir, "references");
|
|
80
|
+
mkdirSync(refsDir, { recursive: true });
|
|
81
|
+
for (const ref of references) {
|
|
82
|
+
writeFileSync(resolve(refsDir, ref.filename), ref.content);
|
|
83
|
+
refCount++;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
bodyBytes = Buffer.byteLength(body, "utf-8");
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
return {
|
|
90
|
+
ok: false,
|
|
91
|
+
reason: "write-error",
|
|
92
|
+
detail: err instanceof Error ? err.message : String(err),
|
|
93
|
+
canonicalPluginDir,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// Written bytes are not evidence the skill loaded. Confirm the account's own
|
|
97
|
+
// copy is among the resolver's owners, using the same account-root walk the
|
|
98
|
+
// admin resolvers use. Fault B ("canonical never loaded") surfaces as
|
|
99
|
+
// not-found. A slug also owned by a platform skill resolves as ambiguous — the
|
|
100
|
+
// skill DID load and is reachable (plugin-qualified via plugin-read, or after
|
|
101
|
+
// the agent disambiguates), so ambiguous-with-our-owner is success, not a
|
|
102
|
+
// write failure. Fail closed only when our own owner is absent.
|
|
103
|
+
const owners = resolveOwners(platformRoot, skillName, accountPluginsDir);
|
|
104
|
+
const ourOwnerPresent = owners.status !== "not-found" &&
|
|
105
|
+
owners.candidates.some((c) => c.pluginName === pluginName && c.root === accountPluginsDir);
|
|
106
|
+
if (!ourOwnerPresent) {
|
|
107
|
+
// Remove the just-written skill dir so disk state matches the reported
|
|
108
|
+
// "did not register" outcome (no orphan left behind).
|
|
109
|
+
try {
|
|
110
|
+
rmSync(skillDir, { recursive: true, force: true });
|
|
111
|
+
}
|
|
112
|
+
catch { /* best-effort */ }
|
|
113
|
+
return {
|
|
114
|
+
ok: false,
|
|
115
|
+
reason: "resolve-failed",
|
|
116
|
+
detail: `written skill "${skillName}" did not resolve under the account root (status=${owners.status})`,
|
|
117
|
+
canonicalPluginDir,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return { ok: true, action, canonicalPluginDir, refCount, bodyBytes };
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=store-skill-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-skill-core.js","sourceRoot":"","sources":["../src/store-skill-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,21 @@ Load `references/agent-pattern.md`. It is the canonical shape: the two kinds of
|
|
|
28
28
|
deny-by-default tool rule, model-choice guidance, and the three-part contract body. Use it
|
|
29
29
|
throughout. Do not paraphrase the pattern from memory; the reference is the source.
|
|
30
30
|
|
|
31
|
+
## Step 0: Check for a deliverable catalogue
|
|
32
|
+
|
|
33
|
+
When the operator asks what can be built here, rather than naming a specific agent, first look for
|
|
34
|
+
a shipped suggestion catalogue. A premium bundle can ship a `DELIVERABLES.md` at its root listing
|
|
35
|
+
deliverables it supports beyond the agents it already ships. Get the enabled bundles from
|
|
36
|
+
`capabilities-here`, then for each one read `$PLATFORM_ROOT/../premium-plugins/<bundle>/DELIVERABLES.md`
|
|
37
|
+
if it exists, the bundle root where its `BUNDLE.md` and `agents/` live. Offer the operator the entries you find, grouped by bundle. If
|
|
38
|
+
no enabled bundle ships one, skip this step and go to Step 1.
|
|
39
|
+
|
|
40
|
+
The catalogue is a suggestion list, not a shipped roster. Each entry is authored bespoke for this
|
|
41
|
+
account when the operator picks it, because a generic version carries none of the customer's own
|
|
42
|
+
determinism. On a pick, run Steps 1 through 7 to author the skill and agent into the account's own
|
|
43
|
+
plugins tree, and name the agent for the customer's actual deliverable rather than the catalogue's
|
|
44
|
+
ontology label, exactly as the catalogue instructs. The ontology name is grounding, not a file name.
|
|
45
|
+
|
|
31
46
|
## Step 1: Name the deliverable
|
|
32
47
|
|
|
33
48
|
Ask: **"What is the one thing this agent hands back?"**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: platform-architecture
|
|
3
3
|
description: Use when grounding any documented-surface claim about what Maxy ships — plugins, skills, specialists, install/deploy flows, internals. This is the install catalogue, not evidence of what is enabled on the current account. For install state on this account, call `capabilities-here`; for documented surface, cite the `Source:` URL inline.
|
|
4
|
-
content-hash: sha256:
|
|
4
|
+
content-hash: sha256:70e0125f4ead8ba83c01b87f6a9ccc15f51d9492c5dd55bd4f83106769280a7e
|
|
5
5
|
brand: maxy-code
|
|
6
6
|
product-name: Maxy
|
|
7
7
|
---
|
|
@@ -460,9 +460,9 @@ Ask Maxy: "What plugins do I have?" or "List my plugins."
|
|
|
460
460
|
|
|
461
461
|
Skills you create at runtime through the admin `skill-builder` skill are saved on disk as their own plugin under `data/accounts/{accountId}/plugins/{pluginName}/`. The admin agent calls `mcp__plugin_admin_admin__store-skill`, which composes `PLUGIN.md` (on first call) and `skills/{skillName}/SKILL.md` plus any reference files. The agent supplies `pluginName`, `skillName`, `description`, `publicEmbed`, `body`, and optional references — the path is computed by the tool, never by the agent.
|
|
462
462
|
|
|
463
|
-
These operator-authored plugins survive reinstall because the installer's wipe zone excludes `data/`.
|
|
463
|
+
These operator-authored plugins survive reinstall because the installer's wipe zone excludes `data/`. They are loaded directly from `data/accounts/{accountId}/plugins/*`: the spawn manifest and the admin skill resolvers (`skill-load`, `skill-find`, `skill-search`, `plugin-read`) walk that per-account root alongside the shipped and premium plugin roots, so no copy into the platform plugins tree is made or needed. `store-skill` confirms the written skill resolves through that same walk before reporting success. Operator plugins are always active for their own account; the admin agent sees every operator skill by default, and per-skill `publicEmbed: true|false` controls which skills surface to the public agent.
|
|
464
464
|
|
|
465
|
-
To edit an operator-authored skill later, ask Maxy to update it — the admin agent re-runs `store-skill` for the same `pluginName`/`skillName` and the new content overwrites in place. To remove one, delete the directory under `data/accounts/{accountId}/plugins/{pluginName}/skills/{skillName}/` (or the whole plugin) — the next session
|
|
465
|
+
To edit an operator-authored skill later, ask Maxy to update it — the admin agent re-runs `store-skill` for the same `pluginName`/`skillName` and the new content overwrites in place. To remove one, delete the directory under `data/accounts/{accountId}/plugins/{pluginName}/skills/{skillName}/` (or the whole plugin) — the next session no longer surfaces it, since skills load directly from that path.
|
|
466
466
|
|
|
467
467
|
`pluginName` collisions with shipped plugin names are refused by `store-skill` with a structured error. See [.docs/agents.md](../../../../.docs/agents.md) § "Operator-authored skills as plugin files" for the full contract.
|
|
468
468
|
|
|
@@ -1514,6 +1514,8 @@ Ask naturally:
|
|
|
1514
1514
|
|
|
1515
1515
|
Maxy searches by name, email, phone number, or any detail you provide.
|
|
1516
1516
|
|
|
1517
|
+
When Maxy drafts an email to a contact, it reads that contact's record first. If the record carries routing you have set (for example an address to always copy, or a preferred send-to address), Maxy applies it to the draft and shows it to you for approval before anything is sent.
|
|
1518
|
+
|
|
1517
1519
|
## Updating a Contact
|
|
1518
1520
|
|
|
1519
1521
|
Tell Maxy what changed:
|
|
@@ -2156,6 +2158,10 @@ The `outlook` plugin gives the admin agent access to Microsoft 365 / Outlook.com
|
|
|
2156
2158
|
| `outlook-draft-edit` | Update an existing draft in place (`PATCH /me/messages/{draftId}`) and/or add and remove attachments. Graph drafts are mutable — pass draftId plus the fields to change (to/cc/bcc/subject/body/isHtml/attachments/removeAttachments). `attachments` adds; `removeAttachments` takes files off by name or attachment id; both together replace a file in one call. Sent messages cannot be edited. Needs `Mail.ReadWrite`. |
|
|
2157
2159
|
| `outlook-draft-send` | Send an existing draft by id (`POST /me/messages/{id}/send`). Graph consumes the draft, returns 202. Needs `Mail.Send`. |
|
|
2158
2160
|
|
|
2161
|
+
## Drafting to a Contact
|
|
2162
|
+
|
|
2163
|
+
When the admin agent drafts or sends a message to a known contact, it reads that contact's record first and applies any routing the record carries, for example a preferred send-to address, showing the result for your approval before anything is sent.
|
|
2164
|
+
|
|
2159
2165
|
## Observability
|
|
2160
2166
|
|
|
2161
2167
|
All log lines start with `[outlook-mcp]` and write to `server.log`. They are key=value, account-scoped:
|
|
@@ -3039,6 +3045,37 @@ routines exist for the account is the account-scope-miss signature; the logged
|
|
|
3039
3045
|
`cron=` on `outcome=ok` confirms the persisted expression without opening the
|
|
3040
3046
|
graph.
|
|
3041
3047
|
|
|
3048
|
+
### Skills
|
|
3049
|
+
|
|
3050
|
+
The Skills surface (`/skills`) is the admin view of the account's operator-
|
|
3051
|
+
authored skills — the `SKILL.md` files the store-skill tool writes under
|
|
3052
|
+
`<accountDir>/plugins/<plugin>/skills/<skill>/` (the durable per-account plugin
|
|
3053
|
+
root, never the immutable `PLATFORM_ROOT/plugins` tree). It renders one card per
|
|
3054
|
+
skill (name, owning plugin, frontmatter description, reference count); a card
|
|
3055
|
+
opens a **read-only** detail modal showing the frontmatter, the SKILL.md body,
|
|
3056
|
+
and the reference filenames. The page is read-only by design — skills are
|
|
3057
|
+
authored and edited through the chat interface — with one exception: a **delete**
|
|
3058
|
+
behind an explicit confirm step in the modal. A confirmed delete removes the
|
|
3059
|
+
skill directory, and the whole plugin directory when that was its last skill.
|
|
3060
|
+
|
|
3061
|
+
The route (`server/routes/admin/skills.ts`) walks only the account tree, so
|
|
3062
|
+
shipped platform skills never appear. Plugin and skill path params are kebab-case
|
|
3063
|
+
validated (`/^[a-z0-9][a-z0-9-]*$/`) — the traversal guard; anything else 400s.
|
|
3064
|
+
|
|
3065
|
+
| Route | Behaviour |
|
|
3066
|
+
|-------|-----------|
|
|
3067
|
+
| `GET /api/admin/skills` | Enumerates `plugins/*/skills/*/SKILL.md`, returns `{plugin, skill, description, refCount}` per skill, sorted plugin then skill. A per-entry read error logs `op=list-skip` rather than silently shortening the list. |
|
|
3068
|
+
| `GET /api/admin/skills/:plugin/:skill` | One skill's parsed frontmatter (`name`, `description`, `publicEmbed`), the SKILL.md body, and the reference filenames. Unknown skill 404s. |
|
|
3069
|
+
| `DELETE /api/admin/skills/:plugin/:skill` | Removes the skill dir; removes the plugin dir when its `skills/` empties. Returns `{ok, skillDirGone, pluginDirRemoved}` measured after the rm. |
|
|
3070
|
+
|
|
3071
|
+
Observability rides `[admin:skills]`: `op=list accountId=<8> plugins=<n>
|
|
3072
|
+
skills=<n>` (the surface's own heartbeat — `skills=0` against a populated
|
|
3073
|
+
`plugins/*/skills/` is the broken-walk signature), `op=get plugin=<…> skill=<…>
|
|
3074
|
+
found=<bool>`, and `op=delete plugin=<…> skill=<…> outcome=ok
|
|
3075
|
+
skillDirGone=<bool> pluginDirRemoved=<bool>` (`skillDirGone=false` with
|
|
3076
|
+
`outcome=ok` is a named failure) / `outcome=rejected reason=<invalid-name|
|
|
3077
|
+
not-found|rm-error>`.
|
|
3078
|
+
|
|
3042
3079
|
### Graph
|
|
3043
3080
|
|
|
3044
3081
|
| Mount | Purpose |
|
|
@@ -3050,6 +3087,25 @@ graph.
|
|
|
3050
3087
|
| `/graph-labels-in-graph` | Distinct label list for the filter dropdown. |
|
|
3051
3088
|
| `/graph-default-view` | Account-scoped saved view (zoom, focal id, filters). |
|
|
3052
3089
|
|
|
3090
|
+
**Node visual encoding.** Every node type that can appear on the canvas renders
|
|
3091
|
+
a coloured disc with a white Lucide glyph, sized by incident-edge count, with a
|
|
3092
|
+
matching legend swatch. Colour, shape, and glyph are three per-label registries
|
|
3093
|
+
in `platform/lib/graph-style/src/index.ts`. Coverage is reconciled against the
|
|
3094
|
+
true node-label universe, not the colour registry itself: the standing test
|
|
3095
|
+
`__tests__/icons.test.ts` assembles the universe from the `Neo4j Label` column
|
|
3096
|
+
of every `schema-*.md` node-type table, the `sourceLabel`/`targetLabel` set in
|
|
3097
|
+
`typed-edge-schema.ts`, and the `CODE_EMITTED_NODE_LABELS` list, then fails the
|
|
3098
|
+
build if any member lacks a colour or glyph. Labels that only ever stack on a
|
|
3099
|
+
base node (`ADDITIONAL_BASE_LABELS`) inherit the base node's colour and are
|
|
3100
|
+
excluded. A node type carries a coloured glyph even when its text caption is its
|
|
3101
|
+
bare type: the glyph and the caption are independent channels (caption coverage
|
|
3102
|
+
is the separate `caption-coverage.test.ts` gate). At runtime, a per-session
|
|
3103
|
+
`op=icon-fallback` census (emitted from `app/graph/page.tsx` across the initial
|
|
3104
|
+
render and every live-update poll) names any label that reached the canvas with
|
|
3105
|
+
no glyph; an empty census is the healthy signal, a non-empty one means a
|
|
3106
|
+
code-emitted label that no static source declares and should be added to
|
|
3107
|
+
`CODE_EMITTED_NODE_LABELS`.
|
|
3108
|
+
|
|
3053
3109
|
### Artefacts and files
|
|
3054
3110
|
|
|
3055
3111
|
| Mount | Purpose |
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: summarise
|
|
3
|
+
description: Use when the user types /summarise, or asks for a summary, recap, or "in short" version of what the agent just said or asked. Restates the agent's own immediately preceding turn under the plainly rules: precise, concise, plain English, every claim already evidenced in that turn. When that turn concluded an investigation, the summary carries exactly two things: the diagnosis and the proposed resolution.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# summarise
|
|
7
|
+
|
|
8
|
+
Invoked by the admin agent directly.
|
|
9
|
+
|
|
10
|
+
The subject is the agent's own last turn, not the codebase, not the conversation as a whole, and not the user's message. Whatever was just said or asked gets restated so a reader who skipped the turn ends up with the same working understanding, in a fraction of the words.
|
|
11
|
+
|
|
12
|
+
## What success looks like
|
|
13
|
+
|
|
14
|
+
The summary is precise, concise, plain English, with every claim already evidenced in the turn being summarised. It also satisfies the shipped `plainly` skill (`skills/plainly/SKILL.md`): spoken register, no acronyms, no formulas, no AI tells, no em-dashes. Read `plainly` before writing; do not summarise from memory of what it says.
|
|
15
|
+
|
|
16
|
+
Three sentences is the ceiling for an ordinary turn. If the turn ended in a question, the summary states the question and what turns on the answer, and nothing else.
|
|
17
|
+
|
|
18
|
+
## Investigations
|
|
19
|
+
|
|
20
|
+
When the preceding turn concluded an investigation, the summary has exactly two parts, in this order:
|
|
21
|
+
|
|
22
|
+
1. **Diagnosis.** What is actually wrong, and the evidence that establishes it. Name the cause, not the layer where the symptom surfaced.
|
|
23
|
+
2. **Proposed resolution.** What would fix that cause, and its scope boundary.
|
|
24
|
+
|
|
25
|
+
Both parts are mandatory. A diagnosis with no proposed resolution is an unfinished summary; a proposed resolution with no diagnosis is speculation wearing a summary's clothes. Neither part introduces a finding, a fix, or a caveat that was absent from the turn being summarised. If the investigation reached a diagnosis but no resolution, say that in the resolution slot rather than inventing one.
|
|
26
|
+
|
|
27
|
+
## Constraints
|
|
28
|
+
|
|
29
|
+
- **No new content.** The summary is a compression, never an extension. Anything not in the turn being summarised does not belong here.
|
|
30
|
+
- **Drop the scaffolding, keep the load.** File paths, tool names, and step-by-step narration go unless the reader needs them to act. The outcome stays.
|
|
31
|
+
- **No hedging.** The original turn either established a claim or it did not. Do not soften a confirmed finding into "appears to", and do not harden a speculation into a fact.
|
|
32
|
+
- **No follow-up offers.** End on the summary.
|
|
33
|
+
|
|
34
|
+
## When NOT to use
|
|
35
|
+
|
|
36
|
+
- The user wants the summary of a document, a file, or someone else's text: that is ordinary reading work, and the `plainly` skill fits better.
|
|
37
|
+
- The last turn was already one or two plain sentences: there is nothing to compress, so say so and stop.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "contacts",
|
|
3
|
-
"description": "CRM contacts plugin. Provides contact-create, contact-lookup, contact-update, contact-delete, contact-list, contact-export, contact-erase, group-create, and group-manage tools for managing the customer contact graph and group conversations.",
|
|
3
|
+
"description": "CRM contacts plugin. Provides contact-create, contact-lookup (returns a person's open-by-default properties and any attached preferences so drafting can honour contact-level routing), contact-update, contact-delete, contact-list, contact-export, contact-erase, group-create, and group-manage tools for managing the customer contact graph and group conversations.",
|
|
4
4
|
"version": "0.1.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rubytech LLC"
|