@rubytech/create-maxy-code 0.1.279 → 0.1.281
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/mcp-spawn-tee/dist/index.d.ts +31 -43
- package/payload/platform/lib/mcp-spawn-tee/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/mcp-spawn-tee/dist/index.js +112 -85
- package/payload/platform/lib/mcp-spawn-tee/dist/index.js.map +1 -1
- package/payload/platform/lib/mcp-spawn-tee/src/__tests__/spawn-tee.test.ts +111 -0
- package/payload/platform/lib/mcp-spawn-tee/src/index.ts +113 -84
- package/payload/platform/lib/mcp-spawn-tee/tsconfig.json +2 -1
- package/payload/platform/plugins/admin/PLUGIN.md +1 -0
- package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-directive.test.sh +42 -0
- package/payload/platform/plugins/admin/hooks/prompt-optimiser-directive.sh +60 -15
- package/payload/platform/plugins/admin/mcp/dist/__tests__/e-sign-discoverable.test.d.ts +2 -0
- package/payload/platform/plugins/admin/mcp/dist/__tests__/e-sign-discoverable.test.d.ts.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/__tests__/e-sign-discoverable.test.js +54 -0
- package/payload/platform/plugins/admin/mcp/dist/__tests__/e-sign-discoverable.test.js.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/content-producer-authoring-skills.d.ts +2 -0
- package/payload/platform/plugins/admin/mcp/dist/content-producer-authoring-skills.d.ts.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/content-producer-authoring-skills.js +19 -0
- package/payload/platform/plugins/admin/mcp/dist/content-producer-authoring-skills.js.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js +2 -5
- package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js.map +1 -1
- package/payload/platform/plugins/admin/skills/a4-print-documents/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/access-manager/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/admin-user-management/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/business-profile/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/capabilities-here/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/datetime/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/deck-pages/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/file-presentation/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/investigate/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/plainly/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +5 -1
- package/payload/platform/plugins/admin/skills/plugin-management/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/professional-document/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/qr-code/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/session-management/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/skill-builder/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/specialist-management/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/stream-log-review/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/superpowers-sprint/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/task/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/update-knowledge/SKILL.md +2 -0
- package/payload/platform/plugins/admin/skills/upgrade/SKILL.md +2 -0
- package/payload/platform/plugins/aeo/skills/structured-answer/SKILL.md +2 -0
- package/payload/platform/plugins/business-assistant/PLUGIN.md +2 -1
- package/payload/platform/plugins/business-assistant/{references/e-sign.md → skills/e-sign/SKILL.md} +9 -2
- package/payload/platform/plugins/cloudflare/skills/cloudflare/SKILL.md +2 -0
- package/payload/platform/plugins/deep-research/skills/academic-verify/SKILL.md +2 -0
- package/payload/platform/plugins/deep-research/skills/book-mirror/SKILL.md +2 -0
- package/payload/platform/plugins/deep-research/skills/data-research/SKILL.md +2 -0
- package/payload/platform/plugins/deep-research/skills/deep-research/SKILL.md +2 -0
- package/payload/platform/plugins/deep-research/skills/strategic-reading/SKILL.md +2 -0
- package/payload/platform/plugins/docs/references/platform.md +2 -0
- package/payload/platform/plugins/email/PLUGIN.md +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.js +68 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.js +55 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/providers.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/providers.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/providers.test.js +110 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/providers.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/recipient-filter.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/recipient-filter.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/recipient-filter.test.js +57 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/recipient-filter.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/index.js +8 -1
- package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts +5 -0
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js +35 -5
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +50 -14
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js +143 -66
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts +8 -0
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts +16 -5
- package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/providers.js +120 -13
- package/payload/platform/plugins/email/mcp/dist/lib/providers.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js +3 -3
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js +4 -2
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.js +18 -8
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +5 -3
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.js +18 -8
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.js +6 -3
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +22 -4
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -1
- package/payload/platform/plugins/email/mcp/package.json +4 -2
- package/payload/platform/plugins/email/mcp/vitest.config.ts +9 -0
- package/payload/platform/plugins/email/references/email-reference.md +22 -5
- package/payload/platform/plugins/email/skills/email-composition/SKILL.md +3 -1
- package/payload/platform/plugins/email/skills/email-ingest/SKILL.md +2 -0
- package/payload/platform/plugins/graph/PLUGIN.md +2 -0
- package/payload/platform/plugins/graph-viewer/skills/render-graph/SKILL.md +2 -0
- package/payload/platform/plugins/linkedin-extension/skills/linkedin-extension/SKILL.md +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/kd-classify-account-dir.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/kd-classify-account-dir.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/kd-classify-account-dir.test.js +31 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/kd-classify-account-dir.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.d.ts +5 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.js +21 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.js.map +1 -1
- package/payload/platform/plugins/memory/skills/archive-crawler/SKILL.md +2 -0
- package/payload/platform/plugins/memory/skills/challenge/SKILL.md +2 -0
- package/payload/platform/plugins/memory/skills/concept-synthesis/SKILL.md +2 -0
- package/payload/platform/plugins/memory/skills/connect/SKILL.md +2 -0
- package/payload/platform/plugins/memory/skills/conversational-memory/SKILL.md +2 -0
- package/payload/platform/plugins/memory/skills/emerge/SKILL.md +2 -0
- package/payload/platform/plugins/outlook/skills/outlook/SKILL.md +2 -0
- package/payload/platform/plugins/prompt-optimiser/skills/prompt-optimiser/SKILL.md +3 -1
- package/payload/platform/plugins/prompt-optimiser/skills/prompt-optimiser/__tests__/restatement-ladder.test.sh +21 -0
- package/payload/platform/plugins/scheduling/skills/briefing/SKILL.md +2 -0
- package/payload/platform/plugins/scheduling/skills/daily-prep/SKILL.md +2 -0
- package/payload/platform/plugins/slides/skills/deck-system/SKILL.md +2 -0
- package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js +5 -5
- package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js.map +1 -1
- package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +2 -0
- package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +2 -0
- package/payload/platform/plugins/work/skills/execute-task/SKILL.md +2 -0
- package/payload/platform/plugins/workflows/skills/workflow-manager/SKILL.md +2 -0
- package/payload/platform/scripts/lib/__tests__/admin-skills-bootstrap.test.sh +64 -0
- package/payload/platform/scripts/lib/admin-skills-bootstrap.sh +109 -0
- package/payload/platform/scripts/setup-account.sh +8 -0
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.js +43 -11
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +74 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +48 -2
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/liveness-divergence.d.ts +19 -0
- package/payload/platform/services/claude-session-manager/dist/liveness-divergence.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/liveness-divergence.js +38 -0
- package/payload/platform/services/claude-session-manager/dist/liveness-divergence.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +8 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +19 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/scope-record.d.ts +11 -0
- package/payload/platform/services/claude-session-manager/dist/scope-record.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/scope-record.js +81 -0
- package/payload/platform/services/claude-session-manager/dist/scope-record.js.map +1 -0
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +10 -7
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/notification.js +14 -14
- package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +2 -6
- package/payload/server/public/assets/AdminShell-FO766lOW.js +1 -0
- package/payload/server/public/assets/{Checkbox-2reCESkb.js → Checkbox-syHoU9nY.js} +1 -1
- package/payload/server/public/assets/{admin-xRCXEFNW.js → admin-0_VxffD5.js} +1 -1
- package/payload/server/public/assets/{arc-BgelqC_3.js → arc-BW1WhwmV.js} +1 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-xHbVjatf.js +1 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-BabnAZJm.js → architectureDiagram-Q4EWVU46-DsionCio.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BJzZqNsy.js → blockDiagram-DXYQGD6D-NOG5yVZk.js} +1 -1
- package/payload/server/public/assets/{browser-DT2XfRpL.js → browser-Cxjkhtsk.js} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-By-xuh9F.js → c4Diagram-AHTNJAMY-DwFV1k9I.js} +1 -1
- package/payload/server/public/assets/channel-D8Go_zJk.js +1 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-Gj2dSpBl.js → chunk-2KRD3SAO-CKn-bEkI.js} +1 -1
- package/payload/server/public/assets/{chunk-336JU56O-2PXVPCUA.js → chunk-336JU56O-iJ4ISPCi.js} +2 -2
- package/payload/server/public/assets/chunk-426QAEUC-sWe0Iexz.js +1 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-9XIBlnC2.js → chunk-4BX2VUAB-B2mSmC97.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-Cr3mXPnI.js → chunk-4TB4RGXK-kKNYi2_i.js} +1 -1
- package/payload/server/public/assets/{chunk-55IACEB6-Ccg46J3A.js → chunk-55IACEB6-JLT9m7Hd.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-Cz9MvPKc.js → chunk-5FUZZQ4R-Car3r0he.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-BleOdlgO.js → chunk-5PVQY5BW-DR9EfLvj.js} +1 -1
- package/payload/server/public/assets/{chunk-67CJDMHE-CyCYCQWy.js → chunk-67CJDMHE-CCdP3Pdx.js} +1 -1
- package/payload/server/public/assets/{chunk-7N4EOEYR-KpT3uHzH.js → chunk-7N4EOEYR-bXgVzdM9.js} +1 -1
- package/payload/server/public/assets/{chunk-AA7GKIK3-BfOzbuxq.js → chunk-AA7GKIK3-CYeDvY8B.js} +1 -1
- package/payload/server/public/assets/{chunk-BSJP7CBP-Bq0M3wlv.js → chunk-BSJP7CBP-U0Fi-Ers.js} +1 -1
- package/payload/server/public/assets/{chunk-CIAEETIT-CR-2dNaL.js → chunk-CIAEETIT-C8QrV6Gg.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-egUGMTOS.js → chunk-EDXVE4YY-DLUWVRZV.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-CQohBEFw.js → chunk-ENJZ2VHE-B4bNJo6C.js} +1 -1
- package/payload/server/public/assets/{chunk-FMBD7UC4-DIxBUbLP.js → chunk-FMBD7UC4-DxAQS3UB.js} +1 -1
- package/payload/server/public/assets/{chunk-FOC6F5B3-C2694Zoq.js → chunk-FOC6F5B3-CyIK3zeY.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-DpXZKHyn.js → chunk-ICPOFSXX-Qzl8Ki0l.js} +2 -2
- package/payload/server/public/assets/{chunk-K5T4RW27-CUicG0Rp.js → chunk-K5T4RW27-7GcDzjyJ.js} +1 -1
- package/payload/server/public/assets/{chunk-KGLVRYIC-B5mPJhOr.js → chunk-KGLVRYIC-B7pAr9hf.js} +1 -1
- package/payload/server/public/assets/{chunk-LIHQZDEY-q81QhuMs.js → chunk-LIHQZDEY-DEoU2jrz.js} +1 -1
- package/payload/server/public/assets/{chunk-ORNJ4GCN-DgurdFZs.js → chunk-ORNJ4GCN-BwMFuN24.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-CxqMRu2d.js → chunk-OYMX7WX6-BenBO6O_.js} +1 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-CHE_iZO7.js +1 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-BSLctJC9.js → chunk-U2HBQHQK-DewM8R0D.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP--0AUeeFl.js → chunk-X2U36JSP-C22Q6Ea4.js} +1 -1
- package/payload/server/public/assets/{chunk-XPW4576I-D-hf9Bcn.js → chunk-XPW4576I-BA0a8Ygs.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-PvOhSwI9.js → chunk-YZCP3GAM-DfUUNTnA.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-1zPUlNWz.js → chunk-ZZ45TVLE-CUT6zma2.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BLb1mzrT.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Ctj5qYTS.js +1 -0
- package/payload/server/public/assets/clone-DGZ2vydA.js +1 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-Cvo-gkBd.js → cose-bilkent-S5V4N54A-Df_JmB8E.js} +1 -1
- package/payload/server/public/assets/{dagre-CMHsNfjP.js → dagre-CYXRIdv0.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-CM1DSx4E.js → dagre-KV5264BT-D4EGb60h.js} +1 -1
- package/payload/server/public/assets/{data-Dr7XUvAx.js → data-BOgwOWnw.js} +1 -1
- package/payload/server/public/assets/{diagram-5BDNPKRD-VDHiHwEI.js → diagram-5BDNPKRD-BzieCEfT.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-OKdufoeW.js → diagram-G4DWMVQ6-DDbO71XD.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-Yg6QdCA1.js → diagram-MMDJMWI5-DqQ_UXDA.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-CpEMZQDu.js → diagram-TYMM5635-CFyxA1aZ.js} +1 -1
- package/payload/server/public/assets/{dist-811BIK0R.js → dist-BmvZ8OaX.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-Dw5gAkFM.js → erDiagram-SMLLAGMA-BMaEBbOK.js} +1 -1
- package/payload/server/public/assets/{flatten-BsWEYbBB.js → flatten-Bo6YRmWl.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-Cy_R1XHz.js → flowDiagram-DWJPFMVM-De5ChZQP.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BYARP_eH.js → ganttDiagram-T4ZO3ILL-CXEMPVaK.js} +1 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-CmHdoS27.js +1 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-BGOe0unY.js → gitGraphDiagram-UUTBAWPF-OZedr_6y.js} +1 -1
- package/payload/server/public/assets/{graph-DOEjjQHD.js → graph-BqD2GjQd.js} +2 -2
- package/payload/server/public/assets/{graph-labels-eOrWYy0R.js → graph-labels-DSDTSBfM.js} +1 -1
- package/payload/server/public/assets/{graphlib-DaefxCga.js → graphlib-CN4nhD2U.js} +1 -1
- package/payload/server/public/assets/info-OMHHGYJF-DTA9msO-.js +1 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CSqg4nRL.js +2 -0
- package/payload/server/public/assets/{isEmpty-BWl67LAZ.js → isEmpty-D6Kr-M1M.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-YrGuzpiI.js → ishikawaDiagram-UXIWVN3A-ChlzrZyx.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-EIykOcqg.js → journeyDiagram-VCZTEJTY-DsrK55ZO.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-BR0TC6Je.js → kanban-definition-6JOO6SKY-DYF-_Rym.js} +1 -1
- package/payload/server/public/assets/{line-DPGcT5IM.js → line-3zmwI8XK.js} +1 -1
- package/payload/server/public/assets/{linear-CPN03uSh.js → linear-COm19-p7.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-D7Iu4c9M.js → mermaid-parser.core-BrcX8-cl.js} +2 -2
- package/payload/server/public/assets/{mermaid.core-krXRpXn9.js → mermaid.core-CBdz3b1N.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-HwiCtPzN.js → mindmap-definition-QFDTVHPH-BqCqlYZb.js} +1 -1
- package/payload/server/public/assets/{ordinal-krseTxxN.js → ordinal-BDi6f4xk.js} +1 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-6GjqIKgu.js +1 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-T72DJ5JR.js +1 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-xodxyWLe.js → pieDiagram-DEJITSTG-D5LiILuM.js} +1 -1
- package/payload/server/public/assets/{public-xVaPcg6i.js → public-udi_Z7la.js} +3 -3
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-DuYYY4ZZ.js → quadrantDiagram-34T5L4WZ-C3iuI5l_.js} +1 -1
- package/payload/server/public/assets/radar-PYXPWWZC-x-6xW1dE.js +1 -0
- package/payload/server/public/assets/{reduce-tk-xY6Fv.js → reduce-CGi9ik8i.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-D0ta3kru.js → requirementDiagram-MS252O5E-CTPOw5qQ.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-KdHdlzvT.js → sankeyDiagram-XADWPNL6-D_5aVlYp.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DoSFUTQZ.js → sequenceDiagram-FGHM5R23-D7h5vocM.js} +1 -1
- package/payload/server/public/assets/{src-Cpl1JzME.js → src-DLEIsjER.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BLW0KiSA.js → stateDiagram-FHFEXIEX-DyZjuwPj.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BiW9pGXy.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-8QAzhYz1.js → timeline-definition-GMOUNBTQ-BqpVYJz_.js} +1 -1
- package/payload/server/public/assets/treeView-SZITEDCU-5-6wEryJ.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-DF48Cc86.js +1 -0
- package/payload/server/public/assets/{useSelectionMode-DlJsX-_X.js → useSelectionMode-BPzPjKP_.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-BKvfScOi.js → vennDiagram-DHZGUBPP-Czflml0e.js} +1 -1
- package/payload/server/public/assets/wardley-RL74JXVD-duKIa6Hq.js +1 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-DaMfDpJ3.js → wardleyDiagram-NUSXRM2D-Cqz3pSTK.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-BIkNQlLa.js → xychartDiagram-5P7HB3ND-CS5dEuUO.js} +1 -1
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/data.html +5 -5
- package/payload/server/public/graph.html +6 -6
- package/payload/server/public/index.html +5 -5
- package/payload/server/public/public.html +4 -4
- package/payload/server/server.js +339 -482
- package/payload/server/public/assets/AdminShell-DnH3kou-.js +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-YM-TtgPY.js +0 -1
- package/payload/server/public/assets/channel-BRPH0atd.js +0 -1
- package/payload/server/public/assets/chunk-426QAEUC-QhauxjvK.js +0 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-BDAQvtxz.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BJv89PB6.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DNUszH5M.js +0 -1
- package/payload/server/public/assets/clone-CREg9jLM.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-CtOPqykB.js +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-Jba5enA8.js +0 -1
- package/payload/server/public/assets/infoDiagram-42DDH7IO-Df9BlkPA.js +0 -2
- package/payload/server/public/assets/packet-4T2RLAQJ-D_eWzeAP.js +0 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-BDiy1Ob2.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-C5mlfmtg.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C5zlCV4X.js +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-CM-9m-cS.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-DDHPB-Xh.js +0 -1
- package/payload/server/public/assets/wardley-RL74JXVD-CUb3Br4q.js +0 -1
- package/payload/server/public/assets/whatsapp-cDxgZkbM.js +0 -1
- package/payload/server/public/whatsapp.html +0 -18
- /package/payload/server/public/assets/{_baseFor-BHtDrjIo.js → _baseFor-Cam2PbSt.js} +0 -0
- /package/payload/server/public/assets/{array-DetWRiSa.js → array-DYRGGQae.js} +0 -0
- /package/payload/server/public/assets/{chunk-CWOGyPgy.js → chunk-CnGqDkHZ.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-C9yNhe1u.js → cytoscape.esm-nWsJMTNI.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-_WRwicXn.js → defaultLocale-Du1XY3Dp.js} +0 -0
- /package/payload/server/public/assets/{init-sTEcj9YX.js → init-B5BXBRcm.js} +0 -0
- /package/payload/server/public/assets/{katex-s61Rgv6l.js → katex-HOUACuRw.js} +0 -0
- /package/payload/server/public/assets/{path-B0Ik7Tu9.js → path-CNO468J-.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-DKRO8IF-.js → rough.esm-DRO6hWPh.js} +0 -0
|
@@ -1,53 +1,41 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* MCP spawn-tee — parent-side stderr capture
|
|
3
|
+
* MCP spawn-tee — parent-side stderr capture + lifecycle observability.
|
|
4
4
|
*
|
|
5
|
-
* Claude Code
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* flushes, so the per-server log file is empty and the platform's
|
|
12
|
-
* `[mcp-init-error] tail="(no stderr file)"` probe is operationally useless.
|
|
13
|
-
* That class shipped as the chronic memory-MCP silent-fail loop fixed by
|
|
14
|
-
* (and hit graph — solved there with per-plugin
|
|
15
|
-
* `appendFileSync` discipline that this wrapper now generalises).
|
|
5
|
+
* Claude Code spawns each MCP server itself; the platform never holds a
|
|
6
|
+
* ChildProcess handle. This wrapper sits between Claude Code and the real
|
|
7
|
+
* MCP server: Claude Code runs `node <this> <real-entry>`, and the wrapper
|
|
8
|
+
* spawns the real entry with `stdio:['inherit','inherit','pipe']` so stdin
|
|
9
|
+
* and stdout (the JSON-RPC channel) pass through byte-identical. Only stderr
|
|
10
|
+
* is intercepted, and only for logging.
|
|
16
11
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* `${LOG_DIR}/mcp-${name}-stderr-<date>.log`. Synchronous writes survive
|
|
21
|
-
* `process.exit` because the kernel queues the syscall before the call
|
|
22
|
-
* returns. The chunk is also written to the wrapper's own stderr so
|
|
23
|
-
* Claude Code's existing stderr consumer is unchanged — the mechanism is
|
|
24
|
-
* additive, not interceptive.
|
|
12
|
+
* Because the wrapper IS the helper's parent, it observes the helper's true
|
|
13
|
+
* exit code, signal, and lifetime for every death mode — including a SIGKILL
|
|
14
|
+
* or a transport-layer crash that an in-process handler would miss.
|
|
25
15
|
*
|
|
26
|
-
* Claude Code CLI
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* wrapper (this file) — argv[2] = real entry, env.MCP_SPAWN_TEE_NAME = name
|
|
30
|
-
* │ spawns child with stdio:['inherit','inherit','pipe']
|
|
31
|
-
* ▼
|
|
32
|
-
* child = node <real-entry>
|
|
33
|
-
* │
|
|
34
|
-
* ├──▶ stdin/stdout: inherited from wrapper (Claude Code pipe)
|
|
35
|
-
* └──▶ stderr → wrapper.on('data', chunk =>)
|
|
36
|
-
* ├──▶ appendFileSync(${LOG_DIR}/mcp-${name}-stderr-<date>.log)
|
|
37
|
-
* └──▶ process.stderr.write(chunk) → Claude Code consumer
|
|
16
|
+
* Claude Code CLI → wrapper (this file) → child = node <real-entry>
|
|
17
|
+
* child stdin/stdout : inherited (Claude Code pipe, untouched)
|
|
18
|
+
* child stderr : piped → per-date log + per-session log + passthrough
|
|
38
19
|
*
|
|
39
|
-
*
|
|
40
|
-
* -
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
20
|
+
* Destinations (Task 706):
|
|
21
|
+
* - `${LOG_DIR}/mcp-<name>-stderr-<date>.log` — per-date raw (back-compat;
|
|
22
|
+
* the in-process mcp-stderr-tee and the [mcp-init-error] probe read it).
|
|
23
|
+
* - `${LOG_DIR}/mcp-<name>-<SESSION_ID>.log` — per-session raw + lifecycle
|
|
24
|
+
* lines; wrapper-only, so it never mixes the enumeration copy with the
|
|
25
|
+
* live copy. Authoritative sink. Absent when SESSION_ID is unset
|
|
26
|
+
* (enumeration spawn) — then the per-date file is the fallback.
|
|
27
|
+
* - `server.log` via the loopback log-ingest route — best-effort mirror of
|
|
28
|
+
* the [mcp-helper] lifecycle lines. A dropped POST loses nothing because
|
|
29
|
+
* the per-session file already holds the line (written synchronously).
|
|
47
30
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
31
|
+
* Lifecycle lines, correlation key `session=<id8> server=<name>`:
|
|
32
|
+
* [mcp-helper] op=spawn ... pid= entry=
|
|
33
|
+
* [mcp-helper] op=boot ... head=<first stderr bytes>
|
|
34
|
+
* [mcp-helper] op=exit ... code= signal= lifetimeMs= stderr-tail= (always)
|
|
35
|
+
*
|
|
36
|
+
* The wrapper never writes to fd 1 (stdout) — that is the JSON-RPC channel.
|
|
37
|
+
* SIGTERM/SIGINT are forwarded to the child so a Claude Code shutdown does
|
|
38
|
+
* not orphan it; the child exit code/signal is propagated verbatim.
|
|
51
39
|
*/
|
|
52
40
|
|
|
53
41
|
import { spawn } from "node:child_process";
|
|
@@ -56,31 +44,71 @@ import { resolve } from "node:path";
|
|
|
56
44
|
|
|
57
45
|
const SERVER_NAME = process.env.MCP_SPAWN_TEE_NAME ?? "unknown";
|
|
58
46
|
const LOG_DIR = process.env.LOG_DIR;
|
|
47
|
+
const SESSION_ID = process.env.SESSION_ID;
|
|
48
|
+
const PLATFORM_PORT = process.env.PLATFORM_PORT;
|
|
59
49
|
const ENTRY = process.argv[2];
|
|
60
50
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
51
|
+
const SESSION_ID8 = SESSION_ID ? SESSION_ID.slice(0, 8) : "—";
|
|
52
|
+
const spawnStamp = Date.now();
|
|
53
|
+
|
|
54
|
+
// Per-session raw + lifecycle log (Task 706). Wrapper-only. Empty SESSION_ID
|
|
55
|
+
// (enumeration spawn) → undefined, and the per-date file is the fallback.
|
|
56
|
+
const perSessionPath = LOG_DIR && SESSION_ID
|
|
57
|
+
? resolve(LOG_DIR, `mcp-${SERVER_NAME}-${SESSION_ID}.log`)
|
|
58
|
+
: undefined;
|
|
59
|
+
const perDatePath = LOG_DIR
|
|
60
|
+
? resolve(LOG_DIR, `mcp-${SERVER_NAME}-stderr-${new Date(spawnStamp).toISOString().slice(0, 10)}.log`)
|
|
61
|
+
: undefined;
|
|
62
|
+
|
|
63
|
+
// Rolling tail of child stderr for op=exit. Capped so a chatty child cannot
|
|
64
|
+
// grow the buffer without bound.
|
|
65
|
+
const TAIL_CAP = 2048;
|
|
66
|
+
let stderrTail = "";
|
|
67
|
+
let bootEmitted = false;
|
|
68
|
+
|
|
69
|
+
function appendSafe(path: string | undefined, data: string | Uint8Array): void {
|
|
70
|
+
if (!path || !LOG_DIR) return;
|
|
71
|
+
try {
|
|
72
|
+
mkdirSync(LOG_DIR, { recursive: true });
|
|
73
|
+
appendFileSync(path, data);
|
|
74
|
+
} catch {
|
|
75
|
+
/* unwritable destination — never mask primary output */
|
|
74
76
|
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Best-effort mirror of a lifecycle line to server.log via the loopback
|
|
80
|
+
// log-ingest route. Fire-and-forget: the per-session file is authoritative,
|
|
81
|
+
// so a dropped POST (unreachable port, process exiting) loses nothing.
|
|
82
|
+
function postToServerLog(suffix: string, level: "info" | "error"): void {
|
|
83
|
+
if (!PLATFORM_PORT) return;
|
|
75
84
|
try {
|
|
76
|
-
|
|
85
|
+
const ctrl = new AbortController();
|
|
86
|
+
const t = setTimeout(() => ctrl.abort(), 500);
|
|
87
|
+
t.unref?.(); // never let the abort timer keep the wrapper's event loop alive
|
|
88
|
+
void fetch(`http://127.0.0.1:${PLATFORM_PORT}/api/admin/log-ingest`, {
|
|
89
|
+
method: "POST",
|
|
90
|
+
headers: { "content-type": "application/json" },
|
|
91
|
+
body: JSON.stringify({ tag: "mcp-helper", level, line: suffix }),
|
|
92
|
+
signal: ctrl.signal,
|
|
93
|
+
}).then(() => clearTimeout(t)).catch(() => clearTimeout(t));
|
|
77
94
|
} catch {
|
|
78
|
-
/*
|
|
95
|
+
/* fetch threw synchronously — best-effort only */
|
|
79
96
|
}
|
|
80
97
|
}
|
|
81
98
|
|
|
99
|
+
// Emit one [mcp-helper] lifecycle line: authoritative per-session file (sync,
|
|
100
|
+
// survives process.exit), the wrapper's own stderr (journald / Claude Code
|
|
101
|
+
// visibility), and a best-effort server.log mirror. `suffix` is the line body
|
|
102
|
+
// after the tag and carries no newline (the log-ingest route rejects newlines).
|
|
103
|
+
function emitLifecycle(suffix: string, level: "info" | "error"): void {
|
|
104
|
+
const line = `[mcp-helper] ${suffix}\n`;
|
|
105
|
+
appendSafe(perSessionPath, line);
|
|
106
|
+
try { process.stderr.write(line); } catch { /* stderr closed */ }
|
|
107
|
+
postToServerLog(suffix, level);
|
|
108
|
+
}
|
|
109
|
+
|
|
82
110
|
if (!ENTRY) {
|
|
83
|
-
|
|
111
|
+
emitLifecycle(`op=error session=${SESSION_ID8} server=${SERVER_NAME} reason="no entry given (argv[2] missing)"`, "error");
|
|
84
112
|
process.exit(2);
|
|
85
113
|
}
|
|
86
114
|
|
|
@@ -89,46 +117,47 @@ const child = spawn(process.execPath, [ENTRY], {
|
|
|
89
117
|
env: process.env,
|
|
90
118
|
});
|
|
91
119
|
|
|
92
|
-
|
|
120
|
+
emitLifecycle(`op=spawn session=${SESSION_ID8} server=${SERVER_NAME} pid=${child.pid ?? -1} entry=${ENTRY}`, "info");
|
|
93
121
|
|
|
94
122
|
child.on("error", (err) => {
|
|
95
123
|
const msg = err instanceof Error ? err.message : String(err);
|
|
96
|
-
|
|
124
|
+
emitLifecycle(`op=error session=${SESSION_ID8} server=${SERVER_NAME} reason=${JSON.stringify(`spawn error: ${msg}`)}`, "error");
|
|
97
125
|
process.exit(127);
|
|
98
126
|
});
|
|
99
127
|
|
|
100
128
|
if (child.stderr) {
|
|
101
129
|
child.stderr.on("data", (chunk: Buffer) => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
try {
|
|
111
|
-
process.stderr.write(chunk);
|
|
112
|
-
} catch {
|
|
113
|
-
/* stderr closed — nothing else to do */
|
|
130
|
+
appendSafe(perDatePath, chunk); // per-date raw (back-compat)
|
|
131
|
+
appendSafe(perSessionPath, chunk); // per-session raw (Task 706)
|
|
132
|
+
try { process.stderr.write(chunk); } catch { /* stderr closed */ } // passthrough
|
|
133
|
+
stderrTail = (stderrTail + chunk.toString("utf8")).slice(-TAIL_CAP);
|
|
134
|
+
if (!bootEmitted) {
|
|
135
|
+
bootEmitted = true;
|
|
136
|
+
const head = chunk.toString("utf8").split("\n")[0].slice(0, 200);
|
|
137
|
+
emitLifecycle(`op=boot session=${SESSION_ID8} server=${SERVER_NAME} head=${JSON.stringify(head)}`, "info");
|
|
114
138
|
}
|
|
115
139
|
});
|
|
116
140
|
}
|
|
117
141
|
|
|
118
|
-
|
|
119
|
-
const forward = (signal: NodeJS.Signals) => {
|
|
120
|
-
if (!child.killed) child.kill(signal);
|
|
121
|
-
};
|
|
142
|
+
const forward = (signal: NodeJS.Signals) => { if (!child.killed) child.kill(signal); };
|
|
122
143
|
process.on("SIGTERM", () => forward("SIGTERM"));
|
|
123
144
|
process.on("SIGINT", () => forward("SIGINT"));
|
|
124
145
|
|
|
146
|
+
// Signal → number, so a signal-killed child propagates as 128+signum (the
|
|
147
|
+
// shell convention). `code` is null on a signal exit, so `128 + (code ?? 0)`
|
|
148
|
+
// would collapse every signal to 128 and lose the signal identity in the
|
|
149
|
+
// wrapper's own exit status.
|
|
150
|
+
const SIGNUM: Record<string, number> = { SIGHUP: 1, SIGINT: 2, SIGQUIT: 3, SIGKILL: 9, SIGTERM: 15 };
|
|
151
|
+
|
|
125
152
|
child.on("exit", (code, signal) => {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
153
|
+
const lifetimeMs = Date.now() - spawnStamp;
|
|
154
|
+
const tail = stderrTail.slice(-200);
|
|
155
|
+
const level: "info" | "error" = signal || (code ?? 0) !== 0 ? "error" : "info";
|
|
156
|
+
emitLifecycle(
|
|
157
|
+
`op=exit session=${SESSION_ID8} server=${SERVER_NAME} pid=${child.pid ?? -1} ` +
|
|
158
|
+
`code=${code ?? "—"} signal=${signal ?? "—"} lifetimeMs=${lifetimeMs} stderr-tail=${JSON.stringify(tail)}`,
|
|
159
|
+
level,
|
|
160
|
+
);
|
|
161
|
+
if (signal) process.exit(128 + (SIGNUM[signal] ?? 0));
|
|
133
162
|
process.exit(code ?? 0);
|
|
134
163
|
});
|
|
@@ -147,6 +147,7 @@ Tools are available via the `admin` MCP server.
|
|
|
147
147
|
- `hooks/mcp-tool-missing.sh` — **PostToolUse hook on `mcp__.*` (Task 502, directive 3).** Defence-in-depth for the `No such tool available: mcp__…` failure class that the Task 502 name-binding is built to eliminate. Fires on any MCP tool call; no-op unless the `tool_response` carries `No such tool available` AND the qualified name resolves to a maxy plugin (read from the generated `hooks/lib/maxy-mcp-plugins.txt`). On a maxy match it logs one deterministic `[mcp-tool-missing] server=<server> tool=<tool>` line and exits 2 with a fixed envelope on stderr, so the agent relays a named server-unavailable failure instead of narrating "warming up" or blind-retrying. A missing non-maxy bridge tool (Playwright etc., upstream-owned) passes through (exit 0). The maxy-plugin list is regenerated and gate-diffed by `platform/scripts/check-canonical-tool-names.mjs`.
|
|
148
148
|
- `hooks/post-tool-use-agent.sh` — **PostToolUse hook on `Agent` (Task 560).** Drains any subagent hook-decision buffers under `~/.maxy-code/logs/hook-decisions/` modified since this parent's previous PostToolUse-Agent fire (cursor file keyed by parent session id), prints one `[hook-propagate]` line per record to stdout — Claude Code attaches the stdout as a `hook_success` attachment on the parent JSONL, making the records grep-queryable from the parent session alone (Task 559 motivating case). Rotates consumed buffers to `consumed/`. Emits one `[hook-propagate-census] parentSession=<…> subagentHooksObserved=<N> attachmentsEmitted=<M>` line per fire to stdout and server.log; `N != M` is the propagation regression signal. The companion emitter library `hooks/lib/hook-emit.sh` is sourced by `post-tool-use-agent.sh` and any other hook that records a block decision (4 KB stderr truncation, `truncated=true` set on the record).
|
|
149
149
|
- `hooks/admin-authoring-observer.sh` — **PostToolUse hook on Write and Edit (Task 486).** Observation only — never blocks; exits 0 on every path. Fires when the admin agent (not a specialist subagent — gated by `MAXY_SPECIALIST` env) writes or edits a file under `<accountDir>/output/`. Walks the session transcript from the latest real-user turn forward to detect any prior `Task` `tool_use` whose `subagent_type` starts with `specialists:`. Emits one stderr line `[admin-authoring] inline-write path=<rel> priorSpecialistSpawnInTurn=<true|false|unknown>`. A `false` value on a long-form prose file is the regression signal Task 486 was designed to make visible — the BioSymm proposal session (admin authored a customer-facing proposal inline despite content-producer being installed) is the failure mode this surfaces mechanically. Mechanical enforcement (refuse the write, force a re-spawn) is deferred per the task spec.
|
|
150
|
+
- `hooks/prompt-optimiser-directive.sh` — **UserPromptSubmit hook (Task 698).** Injects the standing prompt-optimiser restatement directive plus the per-turn three-tier routing ladder as `additionalContext`: **(1)** delegate to the specialist that owns the deliverable via the Agent tool — the brief states the outcome plus binding constraints, never lines/anchors/literal text; **(2)** only if none fits, load an admin-usable skill with `skill-load`; **(3)** only if neither fits, author inline — freestyle is the named last resort. Re-emits the full agent roster (`agents/admin/AGENTS.md`) and the full admin-usable skills list (`agents/admin/ADMIN-SKILLS.md`) every turn by reading the two generated files from the account dir (the hook fires with the account dir as cwd); it never walks the plugins tree per turn. Fail-open is **visible**: a missing list logs `[prompt-optimiser] missing=<AGENTS.md\|ADMIN-SKILLS.md> emitting-partial` to stderr and the ladder still injects. The trivial-turn skip (one-word confirmation, slash-command, direct continuation) is unchanged. **Staleness:** `ADMIN-SKILLS.md` is regenerated only by `setup-account.sh`; a plugin add/remove since the last setup leaves the list stale — compare `ADMIN-SKILLS.md` mtime against the newest `SKILL.md` mtime and re-run setup to refresh. The list generator is `platform/scripts/lib/admin-skills-bootstrap.sh`; it logs `[admin-skills] scanned=<N> admin-usable=<M> no-declaration=<K>` (failure signature: `admin-usable=0` while `scanned>0`, or any `missing-declaration` line).
|
|
150
151
|
- **Turn recorder — removed entirely (Task 626).** The `turn-completed-graph-write.sh` Stop hook, the `/api/admin/claude-sessions` loopback bypass it relied on, the `[turn-recorder]` emitters, the envelope walker, and the recorder-auto-archive subscriber are deleted. It had been dormant since Task 214 (never re-registered in settings.json); the admin now writes to the graph by delegating to `database-operator` via the Task tool inside the live session, and the on-demand `/insight` pass (`skills/insight/SKILL.md`, a registered admin skill — Task 641) is the per-session review. There is no per-turn spawn.
|
|
151
152
|
|
|
152
153
|
## Session identifiers (Task 135)
|
|
@@ -65,6 +65,48 @@ else
|
|
|
65
65
|
fi
|
|
66
66
|
rm -rf "$FAKEBIN"
|
|
67
67
|
|
|
68
|
+
# Case 4 — both generated lists present: the ladder carries all three tiers, both
|
|
69
|
+
# full lists, and the relocated outcome-only-brief contract. The hook reads the
|
|
70
|
+
# lists from $PWD/agents/admin, so run it from a temp account dir.
|
|
71
|
+
WD=$(mktemp -d); mkdir -p "$WD/agents/admin"
|
|
72
|
+
printf -- '- **specialists:content-producer**: makes documents and published pages\n' > "$WD/agents/admin/AGENTS.md"
|
|
73
|
+
printf -- '- session-management: reset and list past sessions\n' > "$WD/agents/admin/ADMIN-SKILLS.md"
|
|
74
|
+
both=$(cd "$WD" && printf '%s' '{"prompt":"x"}' | bash "$HOOK" 2>/dev/null)
|
|
75
|
+
ctx=$(printf '%s' "$both" | python3 -c 'import json,sys; print(json.load(sys.stdin)["hookSpecificOutput"]["additionalContext"])' 2>/dev/null)
|
|
76
|
+
if printf '%s' "$ctx" | grep -q "specialists:content-producer" \
|
|
77
|
+
&& printf '%s' "$ctx" | grep -q "session-management: reset and list past sessions" \
|
|
78
|
+
&& printf '%s' "$ctx" | grep -qE '(^|[^0-9])1\)' \
|
|
79
|
+
&& printf '%s' "$ctx" | grep -qE '(^|[^0-9])2\)' \
|
|
80
|
+
&& printf '%s' "$ctx" | grep -qE '(^|[^0-9])3\)' \
|
|
81
|
+
&& printf '%s' "$ctx" | grep -qiE "freestyle|last resort"; then
|
|
82
|
+
echo "PASS: both lists injected in three-tier ladder"; PASS=$((PASS+1))
|
|
83
|
+
else
|
|
84
|
+
echo "FAIL: ladder/lists missing from additionalContext: $ctx" >&2; FAIL=$((FAIL+1))
|
|
85
|
+
fi
|
|
86
|
+
# Relocated outcome-only-brief contract.
|
|
87
|
+
if printf '%s' "$ctx" | grep -qi "outcome" \
|
|
88
|
+
&& printf '%s' "$ctx" | grep -qi "binding constraints" \
|
|
89
|
+
&& printf '%s' "$ctx" | grep -qi "Wrong shape" \
|
|
90
|
+
&& printf '%s' "$ctx" | grep -qi "Right shape"; then
|
|
91
|
+
echo "PASS: outcome-only-brief contract present in ladder"; PASS=$((PASS+1))
|
|
92
|
+
else
|
|
93
|
+
echo "FAIL: outcome-only-brief contract missing from ladder" >&2; FAIL=$((FAIL+1))
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
# Case 5 — ADMIN-SKILLS.md absent: fail-open. exit 0, ladder still injected,
|
|
97
|
+
# and the missing= breadcrumb on stderr (fail-open must be visible).
|
|
98
|
+
rm -f "$WD/agents/admin/ADMIN-SKILLS.md"
|
|
99
|
+
miss_err=$(cd "$WD" && printf '%s' '{"prompt":"x"}' | bash "$HOOK" 2>&1 >/dev/null)
|
|
100
|
+
miss_out=$(cd "$WD" && printf '%s' '{"prompt":"x"}' | bash "$HOOK" 2>/dev/null); miss_exit=$?
|
|
101
|
+
if [[ "$miss_exit" -eq 0 ]] \
|
|
102
|
+
&& printf '%s' "$miss_err" | grep -q "missing=ADMIN-SKILLS.md" \
|
|
103
|
+
&& printf '%s' "$miss_out" | grep -q "hookSpecificOutput"; then
|
|
104
|
+
echo "PASS: missing list -> exit 0 + ladder + visible missing= breadcrumb"; PASS=$((PASS+1))
|
|
105
|
+
else
|
|
106
|
+
echo "FAIL: fail-open visibility wrong (exit=$miss_exit err=$miss_err)" >&2; FAIL=$((FAIL+1))
|
|
107
|
+
fi
|
|
108
|
+
rm -rf "$WD"
|
|
109
|
+
|
|
68
110
|
echo "----"
|
|
69
111
|
echo "PASS=$PASS FAIL=$FAIL"
|
|
70
112
|
[[ "$FAIL" -eq 0 ]]
|
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# UserPromptSubmit hook: inject the standing prompt-optimiser directive
|
|
3
|
-
# additionalContext on every turn, so the
|
|
4
|
-
#
|
|
5
|
-
# doctrine.sh: emit hookSpecificOutput.additionalContext via python3,
|
|
6
|
-
#
|
|
2
|
+
# UserPromptSubmit hook: inject the standing prompt-optimiser directive plus the
|
|
3
|
+
# per-turn three-tier routing ladder as additionalContext on every turn, so the
|
|
4
|
+
# agent restates each non-trivial prompt and routes it before acting. Mirrors
|
|
5
|
+
# doctrine.sh: emit hookSpecificOutput.additionalContext via python3, fail-open
|
|
6
|
+
# with exit 0.
|
|
7
7
|
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
8
|
+
# The ladder ranks, in order: (1) delegate to a specialist that owns the
|
|
9
|
+
# deliverable via the Agent tool; (2) only if none fits, load an admin-usable
|
|
10
|
+
# skill; (3) only if neither fits, author inline — freestyle is the named last
|
|
11
|
+
# resort. The full agent roster and admin-usable skills list are re-emitted every
|
|
12
|
+
# turn by reading two generated files from the account dir; the hook never walks
|
|
13
|
+
# the plugins tree per turn (Task 698).
|
|
14
|
+
#
|
|
15
|
+
# Compliance is behavioural, not deterministic. A hook cannot force a skill call
|
|
16
|
+
# or a dispatch; the directive steers the agent, it does not gate the turn. The
|
|
17
|
+
# raw prompt always still reaches the model (UserPromptSubmit output is ADDED to
|
|
18
|
+
# the prompt, never substituted).
|
|
13
19
|
#
|
|
14
20
|
# Input (stdin, UserPromptSubmit contract): { "prompt": "...", ... } — drained
|
|
15
21
|
# and ignored; the directive is standing and prompt-independent.
|
|
16
22
|
# Output (stdout JSON):
|
|
17
23
|
# { "hookSpecificOutput": { "hookEventName": "UserPromptSubmit",
|
|
18
|
-
# "additionalContext": "<directive>" } }
|
|
24
|
+
# "additionalContext": "<directive+ladder>" } }
|
|
19
25
|
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
26
|
+
# The two lists are read from <cwd>/agents/admin/ — the hook fires with the
|
|
27
|
+
# account dir as cwd (the same resolution admin-authoring-observer.sh relies on).
|
|
28
|
+
# Fail-open is VISIBLE: a missing list logs `[prompt-optimiser] missing=<file>
|
|
29
|
+
# emitting-partial` to stderr and the ladder still injects with whatever resolves.
|
|
30
|
+
# If python3 is unavailable or JSON encoding fails, exit 0 with no stdout. The
|
|
31
|
+
# hook must never block or corrupt a turn.
|
|
22
32
|
|
|
23
33
|
set -uo pipefail
|
|
24
34
|
|
|
@@ -28,12 +38,47 @@ cat >/dev/null 2>&1 || true
|
|
|
28
38
|
# Fail-open if the JSON encoder is unavailable.
|
|
29
39
|
command -v python3 >/dev/null 2>&1 || exit 0
|
|
30
40
|
|
|
31
|
-
|
|
41
|
+
# Read a generated list from the account dir (cwd). On a missing file, emit a
|
|
42
|
+
# visible breadcrumb to stderr and echo a one-line placeholder so the ladder
|
|
43
|
+
# still names the tier.
|
|
44
|
+
ADMIN_DIR="$PWD/agents/admin"
|
|
45
|
+
read_list() { # $1 = filename under agents/admin/
|
|
46
|
+
if [ -f "$ADMIN_DIR/$1" ]; then
|
|
47
|
+
cat "$ADMIN_DIR/$1"
|
|
48
|
+
else
|
|
49
|
+
echo "[prompt-optimiser] missing=$1 emitting-partial" >&2
|
|
50
|
+
echo "($1 unavailable this turn)"
|
|
51
|
+
fi
|
|
52
|
+
}
|
|
53
|
+
ROSTER=$(read_list AGENTS.md)
|
|
54
|
+
ADMIN_SKILLS=$(read_list ADMIN-SKILLS.md)
|
|
55
|
+
|
|
56
|
+
# Build the directive from LITERAL (quoted-heredoc) static parts joined with the
|
|
57
|
+
# generated lists via printf. The parts are captured with `read -r -d ''` rather
|
|
58
|
+
# than `$(cat <<'EOF')` because bash 3.2's command-substitution parser miscounts
|
|
59
|
+
# the parentheses inside the ladder prose; `read` has no such limitation. The
|
|
60
|
+
# quoted delimiter keeps backticks and parens literal, and the lists are spliced
|
|
61
|
+
# in as printf data, never evaluated. `read -d ''` returns non-zero at EOF (no
|
|
62
|
+
# NUL terminator) but populates the variable; the `|| true` keeps that benign.
|
|
63
|
+
IFS= read -r -d '' DIRECTIVE_HEAD <<'DIRECTIVE_EOF' || true
|
|
32
64
|
PROMPT-OPTIMISER DIRECTIVE (standing)
|
|
33
65
|
Before acting on this turn's request, run the prompt-optimiser skill on the user's raw prompt in its in-session restatement mode, then treat the restated task as the authoritative statement of what was asked and proceed from it. Set aside your own first reading of the raw wording; the restatement governs. The raw prompt stays in context for reference only.
|
|
34
66
|
Skip the restatement when the prompt is a one-word confirmation, a slash-command invocation, or a direct continuation of the immediately preceding turn; restatement adds nothing in those cases.
|
|
67
|
+
|
|
68
|
+
ROUTING LADDER (apply to the restated task, in this order):
|
|
69
|
+
1) Delegate to a specialist. If an installed specialist owns this deliverable's type, dispatch it with the Agent tool and the matching subagent_type. Ownership covers origination, not just the final render: you may not author the substance here and hand the specialist only the formatting, the voice pass, or the PDF step. The brief states the outcome (what is true when the specialist returns) plus the binding constraints (account, file scope, deadline, acceptance check). It never names lines, anchors, or literal text to insert; deriving those is the specialist's job. Wrong shape: naming the file, the line range, and the exact text to drop in. Right shape: "on the realagent-code site, the footer respects iOS safe-area-inset-bottom on mobile; the site's CSS is the only file in scope." Installed specialists:
|
|
70
|
+
DIRECTIVE_EOF
|
|
71
|
+
|
|
72
|
+
IFS= read -r -d '' DIRECTIVE_MID <<'DIRECTIVE_EOF' || true
|
|
73
|
+
2) Only if no specialist owns it, use an admin skill. Load one from the admin-usable list with skill-load and do the work from this seat. Admin-usable skills:
|
|
74
|
+
DIRECTIVE_EOF
|
|
75
|
+
|
|
76
|
+
IFS= read -r -d '' DIRECTIVE_TAIL <<'DIRECTIVE_EOF' || true
|
|
77
|
+
3) Only if neither a specialist nor an admin skill fits, author it directly. Freestyle inline authoring is the last resort, not a peer of the two routes above.
|
|
35
78
|
DIRECTIVE_EOF
|
|
36
|
-
|
|
79
|
+
|
|
80
|
+
DIRECTIVE=$(printf '%s\n%s\n%s\n%s\n%s' \
|
|
81
|
+
"$DIRECTIVE_HEAD" "$ROSTER" "$DIRECTIVE_MID" "$ADMIN_SKILLS" "$DIRECTIVE_TAIL")
|
|
37
82
|
|
|
38
83
|
OUT=$(printf '%s' "$DIRECTIVE" | python3 -c '
|
|
39
84
|
import json, sys
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e-sign-discoverable.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/e-sign-discoverable.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Task 701 — e-sign promoted from a reference to a skill must be discoverable.
|
|
2
|
+
//
|
|
3
|
+
// Ephemeral, fixture-based: mirrors skill-search.test.ts. Seeds the exact
|
|
4
|
+
// frontmatter shipped on skills/e-sign/SKILL.md and asserts the discovery
|
|
5
|
+
// surface finds it for the queries the task's verification names. The test is
|
|
6
|
+
// GREEN by construction (it seeds its own skill); its value is locking the
|
|
7
|
+
// description contract — if a later edit strips the sign/signature tokens from
|
|
8
|
+
// the shipped description, these fail. The real-tree RED→GREEN transition is
|
|
9
|
+
// observed manually (before/after the git mv), not here.
|
|
10
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
11
|
+
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from "node:fs";
|
|
12
|
+
import { tmpdir } from "node:os";
|
|
13
|
+
import { join } from "node:path";
|
|
14
|
+
import { searchSkills, findSkillOwners } from "../skill-resolution.js";
|
|
15
|
+
let root;
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
root = mkdtempSync(join(tmpdir(), "e-sign-"));
|
|
18
|
+
});
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
rmSync(root, { recursive: true, force: false });
|
|
21
|
+
});
|
|
22
|
+
function seedSkill(plugin, skill, body) {
|
|
23
|
+
const dir = join(root, "plugins", plugin, "skills", skill);
|
|
24
|
+
mkdirSync(dir, { recursive: true });
|
|
25
|
+
writeFileSync(join(dir, "SKILL.md"), body);
|
|
26
|
+
}
|
|
27
|
+
// The frontmatter shipped on the real skill (description kept in sync with
|
|
28
|
+
// platform/plugins/business-assistant/skills/e-sign/SKILL.md).
|
|
29
|
+
const ESIGN_FM = `---\nname: e-sign\ndescription: "Put a legally-recordable signature on any hosted document — a quote, contract, proposal, or set of terms — without DocuSign. A Cloudflare Pages signing form captures the acceptance to D1; the agent then sweeps the row, renders the signed content to PDF, and emails both parties. Triggers: 'sign this proposal', 'get this contract signed', 'put a signature on this', 'e-signature', 'send for signature', 'accept a proposal online', 'signature on a document'."\n---\n\n# E-signatures\n`;
|
|
30
|
+
describe("e-sign discoverability (Task 701)", () => {
|
|
31
|
+
beforeEach(() => {
|
|
32
|
+
seedSkill("business-assistant", "e-sign", ESIGN_FM);
|
|
33
|
+
// noise skills so IDF is exercised rather than a one-document corpus
|
|
34
|
+
seedSkill("admin", "qr-code", `---\nname: qr-code\ndescription: "Generate QR codes."\n---\n# qr\n`);
|
|
35
|
+
seedSkill("scheduling", "briefing", `---\nname: briefing\ndescription: "Compose a daily briefing of tasks and calendar."\n---\n# briefing\n`);
|
|
36
|
+
});
|
|
37
|
+
it("findSkillOwners resolves the e-sign slug to business-assistant", () => {
|
|
38
|
+
const r = findSkillOwners(root, "e-sign");
|
|
39
|
+
expect(r.status).toBe("unique");
|
|
40
|
+
if (r.status !== "unique")
|
|
41
|
+
throw new Error("expected unique");
|
|
42
|
+
expect(r.candidates[0].pluginName).toBe("business-assistant");
|
|
43
|
+
expect(r.candidates[0].file).toBe("skills/e-sign/SKILL.md");
|
|
44
|
+
});
|
|
45
|
+
it("searchSkills surfaces e-sign for 'sign a document'", () => {
|
|
46
|
+
const hits = searchSkills(root, "sign a document");
|
|
47
|
+
expect(hits.some(h => h.skillName === "e-sign")).toBe(true);
|
|
48
|
+
});
|
|
49
|
+
it("searchSkills surfaces e-sign for 'e-signature acceptance'", () => {
|
|
50
|
+
const hits = searchSkills(root, "e-signature acceptance");
|
|
51
|
+
expect(hits.some(h => h.skillName === "e-sign")).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=e-sign-discoverable.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e-sign-discoverable.test.js","sourceRoot":"","sources":["../../src/__tests__/e-sign-discoverable.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-producer-authoring-skills.d.ts","sourceRoot":"","sources":["../src/content-producer-authoring-skills.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,sCAAsC,0EAIzC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Canonical content-producer authoring/render/publish owned-set — the single
|
|
2
|
+
// source of truth shared by the Task 516 runtime gate (skill-resolution.ts) and
|
|
3
|
+
// the setup-time ADMIN-SKILLS generator (admin-skills-bootstrap.sh). The shell
|
|
4
|
+
// generator parses the quoted slugs between the array brackets; keep one slug
|
|
5
|
+
// per line and do not reformat to multi-slug lines without updating that parser
|
|
6
|
+
// (platform/scripts/lib/admin-skills-bootstrap.sh).
|
|
7
|
+
//
|
|
8
|
+
// These three skills are content-producer-owned: the admin seat must dispatch
|
|
9
|
+
// content-producer (Agent tool, subagent_type content-producer) rather than
|
|
10
|
+
// load or author them from its own seat. Each carries the same membership in
|
|
11
|
+
// its SKILL.md "Invoked from specialists:content-producer" declaration, so the
|
|
12
|
+
// generator's declaration scan already excludes them; this list is the gate's
|
|
13
|
+
// compiled-in guard against a declaration regression.
|
|
14
|
+
export const CONTENT_PRODUCER_AUTHORING_SKILL_SLUGS = [
|
|
15
|
+
"professional-document",
|
|
16
|
+
"a4-print-documents",
|
|
17
|
+
"publish-site",
|
|
18
|
+
];
|
|
19
|
+
//# sourceMappingURL=content-producer-authoring-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-producer-authoring-skills.js","sourceRoot":"","sources":["../src/content-producer-authoring-skills.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,sDAAsD;AACtD,MAAM,CAAC,MAAM,sCAAsC,GAAG;IACpD,uBAAuB;IACvB,oBAAoB;IACpB,cAAc;CACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-resolution.d.ts","sourceRoot":"","sources":["../src/skill-resolution.ts"],"names":[],"mappings":"
|
|
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;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CA4BxF;AAcD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,cAAc,GAAG,IAAI,CASvB;AAgBD,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,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,cAAc,EAAE,CAoH7F;AAED,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAY3B"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
13
13
|
import { readFile } from "node:fs/promises";
|
|
14
14
|
import { resolve } from "node:path";
|
|
15
|
+
import { CONTENT_PRODUCER_AUTHORING_SKILL_SLUGS } from "./content-producer-authoring-skills.js";
|
|
15
16
|
const SKILL_FILE_PATH = /^skills\/([a-z0-9][a-z0-9-]*)\//;
|
|
16
17
|
// the symmetric misuse: skill slug buried inside `pluginName`
|
|
17
18
|
// (e.g. `admin/skills/plainly`, `contacts/skills/plainly`) rather than the
|
|
@@ -32,11 +33,7 @@ const SKILL_IN_PLUGIN_NAME = /(?:^|\/)skills\/([a-z0-9][a-z0-9-]*)(?:\/|$)/;
|
|
|
32
33
|
// - unzip-attachment — SKILL.md: "Invoked by the admin agent directly.
|
|
33
34
|
// Admin owns all unzipping" (admin extracts, then routes to a specialist).
|
|
34
35
|
// - deck-pages — admin-owned, a content-producer refusal target.
|
|
35
|
-
export const CONTENT_PRODUCER_AUTHORING_SKILLS = new Set(
|
|
36
|
-
"professional-document",
|
|
37
|
-
"a4-print-documents",
|
|
38
|
-
"publish-site",
|
|
39
|
-
]);
|
|
36
|
+
export const CONTENT_PRODUCER_AUTHORING_SKILLS = new Set(CONTENT_PRODUCER_AUTHORING_SKILL_SLUGS);
|
|
40
37
|
// The verbatim refusal text the skill-load / plugin-read handlers relay when
|
|
41
38
|
// the admin seat reaches for a content-producer-owned authoring skill. It
|
|
42
39
|
// names the route so the agent's next action is the dispatch, not a dead end.
|
|
@@ -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":"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"}
|