@rubytech/create-sitedesk-code 0.1.527 → 0.1.529
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/account-ingest-token/dist/index.d.ts +21 -0
- package/payload/platform/lib/account-ingest-token/dist/index.d.ts.map +1 -0
- package/payload/platform/lib/account-ingest-token/dist/index.js +128 -0
- package/payload/platform/lib/account-ingest-token/dist/index.js.map +1 -0
- package/payload/platform/lib/account-ingest-token/src/index.ts +137 -0
- package/payload/platform/lib/account-ingest-token/tsconfig.json +8 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts +5 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -1
- package/payload/platform/lib/agent-dispatch-rule/src/index.ts +5 -0
- package/payload/platform/package.json +2 -2
- package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/admin/PLUGIN.md +5 -1
- package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard.test.sh +82 -1
- package/payload/platform/plugins/admin/hooks/fs-schema-guard.sh +45 -13
- package/payload/platform/plugins/admin/mcp/dist/index.js +55 -4
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/tools/linkedin-ingest-token.d.ts +10 -0
- package/payload/platform/plugins/admin/mcp/dist/tools/linkedin-ingest-token.d.ts.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/tools/linkedin-ingest-token.js +22 -0
- package/payload/platform/plugins/admin/mcp/dist/tools/linkedin-ingest-token.js.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/tools/logs-read-mcp.d.ts +16 -0
- package/payload/platform/plugins/admin/mcp/dist/tools/logs-read-mcp.d.ts.map +1 -0
- package/payload/platform/plugins/admin/mcp/dist/tools/logs-read-mcp.js +69 -0
- package/payload/platform/plugins/admin/mcp/dist/tools/logs-read-mcp.js.map +1 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +86 -7
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +13 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +80 -2
- package/payload/platform/plugins/docs/references/deployment.md +1 -1
- package/payload/platform/plugins/docs/references/linkedin-extension.md +2 -2
- package/payload/platform/plugins/docs/references/plugins-guide.md +2 -1
- package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/email/PLUGIN.md +8 -3
- package/payload/platform/plugins/email/mcp/dist/__tests__/compose-signature.test.js +61 -4
- package/payload/platform/plugins/email/mcp/dist/__tests__/compose-signature.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js +41 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js +47 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-sending-identity-set.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-sending-identity-set.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-sending-identity-set.test.js +184 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-sending-identity-set.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-signature-set.test.js +8 -5
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-signature-set.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js +64 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js +132 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/signature.test.js +93 -11
- package/payload/platform/plugins/email/mcp/dist/__tests__/signature.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/index.js +34 -3
- package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts +2 -1
- package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/compose.js +13 -2
- package/payload/platform/plugins/email/mcp/dist/lib/compose.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +47 -2
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +92 -5
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/signature.d.ts +55 -7
- package/payload/platform/plugins/email/mcp/dist/lib/signature.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/signature.js +72 -9
- package/payload/platform/plugins/email/mcp/dist/lib/signature.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js +5 -2
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js +6 -3
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-sending-identity-set.d.ts +20 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-sending-identity-set.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-sending-identity-set.js +32 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-sending-identity-set.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +22 -2
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -1
- package/payload/platform/plugins/email/references/email-reference.md +11 -3
- package/payload/platform/plugins/email/skills/email-composition/SKILL.md +3 -0
- package/payload/platform/plugins/email/skills/email-signature/SKILL.md +27 -9
- package/payload/platform/plugins/linkedin-extension/extension/README.md +3 -3
- package/payload/platform/plugins/linkedin-extension/extension/background/sw.js +12 -7
- package/payload/platform/plugins/linkedin-extension/extension/content/profile.js +4 -1
- package/payload/platform/plugins/linkedin-extension/extension/content/thread.js +4 -1
- package/payload/platform/plugins/linkedin-extension/extension/options/options.html +3 -3
- package/payload/platform/plugins/linkedin-extension/extension/options/options.js +24 -16
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.js +45 -2
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +15 -2
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
- package/payload/platform/scripts/__tests__/vnc-cdp-liveness.test.sh +25 -2
- package/payload/platform/scripts/vnc.sh +34 -26
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts +24 -1
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js +84 -3
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +2 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
- package/payload/server/{chunk-XCR5D2G3.js → chunk-BP7LH7MC.js} +0 -1
- package/payload/server/{chunk-KY3BBT67.js → chunk-DLG7XSLA.js} +1 -1
- package/payload/server/{chunk-7MGR5M6G.js → chunk-UTIHI6KV.js} +1 -1
- package/payload/server/{manager-6XOWHREK.js → manager-B4LRDZKC.js} +2 -2
- package/payload/server/maxy-edge.js +2 -2
- package/payload/server/public/activity.html +5 -5
- package/payload/server/public/agents.html +4 -4
- package/payload/server/public/assets/AdminLoginScreens-zfexKfbT.js +1 -0
- package/payload/server/public/assets/AdminLoginScreens-zfexKfbT.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-zfexKfbT.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-Cbk0TL1B.js +2 -0
- package/payload/server/public/assets/AdminShell-Cbk0TL1B.js.br +0 -0
- package/payload/server/public/assets/AdminShell-Cbk0TL1B.js.gz +0 -0
- package/payload/server/public/assets/CdpScreencastSurface-CLSQHh4e.js +1 -0
- package/payload/server/public/assets/CdpScreencastSurface-CLSQHh4e.js.br +0 -0
- package/payload/server/public/assets/CdpScreencastSurface-CLSQHh4e.js.gz +0 -0
- package/payload/server/public/assets/{activity-aVvbaVd4.js → activity-u275Oc-u.js} +1 -1
- package/payload/server/public/assets/activity-u275Oc-u.js.br +0 -0
- package/payload/server/public/assets/activity-u275Oc-u.js.gz +0 -0
- package/payload/server/public/assets/admin-Du1nR_hP.js +1 -0
- package/payload/server/public/assets/admin-Du1nR_hP.js.br +0 -0
- package/payload/server/public/assets/admin-Du1nR_hP.js.gz +0 -0
- package/payload/server/public/assets/{agents-CrpVTPRG.js → agents-DJTxRLLU.js} +1 -1
- package/payload/server/public/assets/agents-DJTxRLLU.js.br +0 -0
- package/payload/server/public/assets/agents-DJTxRLLU.js.gz +0 -0
- package/payload/server/public/assets/{arc-DaudCnXg.js → arc-CHoXZR2f.js} +1 -1
- package/payload/server/public/assets/arc-CHoXZR2f.js.br +0 -0
- package/payload/server/public/assets/arc-CHoXZR2f.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-CQyo9W6E.js +1 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-CQyo9W6E.js.br +0 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-BEEC3s7i.js → architectureDiagram-Q4EWVU46-B8SCI0AR.js} +1 -1
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-B8SCI0AR.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-B8SCI0AR.js.gz +0 -0
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BIWyfb18.js → blockDiagram-DXYQGD6D-CsJmhz5D.js} +1 -1
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-CsJmhz5D.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-CsJmhz5D.js.gz +0 -0
- package/payload/server/public/assets/browser-Bft6zVkX.js +1 -0
- package/payload/server/public/assets/browser-Bft6zVkX.js.br +0 -0
- package/payload/server/public/assets/browser-Bft6zVkX.js.gz +0 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY--h6oE2cv.js → c4Diagram-AHTNJAMY-CzaSNqcs.js} +1 -1
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-CzaSNqcs.js.br +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-CzaSNqcs.js.gz +0 -0
- package/payload/server/public/assets/{calendar-4IWQpwYv.js → calendar-Ct-DCCqY.js} +1 -1
- package/payload/server/public/assets/calendar-Ct-DCCqY.js.br +0 -0
- package/payload/server/public/assets/calendar-Ct-DCCqY.js.gz +0 -0
- package/payload/server/public/assets/channel-Dg_Rah6O.js +1 -0
- package/payload/server/public/assets/channel-Dg_Rah6O.js.br +0 -0
- package/payload/server/public/assets/chat-pqasbAg8.js +1 -0
- package/payload/server/public/assets/chat-pqasbAg8.js.br +0 -0
- package/payload/server/public/assets/chat-pqasbAg8.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-C8LTc7lb.js +1 -0
- package/payload/server/public/assets/chevron-right-Lz9t7Hed.js +1 -0
- package/payload/server/public/assets/chevron-right-Lz9t7Hed.js.br +0 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-BwEVlnxo.js → chunk-2KRD3SAO-DAN3KCZc.js} +1 -1
- package/payload/server/public/assets/chunk-2KRD3SAO-DAN3KCZc.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-DAN3KCZc.js.gz +0 -0
- package/payload/server/public/assets/{chunk-336JU56O-DQddTATH.js → chunk-336JU56O-Dm-0_lIT.js} +2 -2
- package/payload/server/public/assets/chunk-336JU56O-Dm-0_lIT.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-Dm-0_lIT.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-Rh8qTRZB.js +1 -0
- package/payload/server/public/assets/chunk-426QAEUC-Rh8qTRZB.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-Rh8qTRZB.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-C5p3xTC6.js → chunk-4BX2VUAB-C2l9bAlo.js} +1 -1
- package/payload/server/public/assets/chunk-4BX2VUAB-C2l9bAlo.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-C2l9bAlo.js.gz +0 -0
- package/payload/server/public/assets/{chunk-4TB4RGXK-gClfNc1w.js → chunk-4TB4RGXK-BMXDzU09.js} +1 -1
- package/payload/server/public/assets/chunk-4TB4RGXK-BMXDzU09.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-BMXDzU09.js.gz +0 -0
- package/payload/server/public/assets/{chunk-55IACEB6-DDU_m1ra.js → chunk-55IACEB6-CbMYAZon.js} +1 -1
- package/payload/server/public/assets/chunk-55IACEB6-CbMYAZon.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-CbMYAZon.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5FUZZQ4R-CZ2jQWNR.js → chunk-5FUZZQ4R-DjdsuxLA.js} +1 -1
- package/payload/server/public/assets/chunk-5FUZZQ4R-DjdsuxLA.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-DjdsuxLA.js.gz +0 -0
- package/payload/server/public/assets/{chunk-5PVQY5BW-kcZ5kfTg.js → chunk-5PVQY5BW-CGSBzsF6.js} +1 -1
- package/payload/server/public/assets/chunk-5PVQY5BW-CGSBzsF6.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-CGSBzsF6.js.gz +0 -0
- package/payload/server/public/assets/{chunk-67CJDMHE-9W0Qv0jm.js → chunk-67CJDMHE-ClOLWser.js} +1 -1
- package/payload/server/public/assets/chunk-67CJDMHE-ClOLWser.js.br +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-ClOLWser.js.gz +0 -0
- package/payload/server/public/assets/{chunk-7N4EOEYR-B3gqydR3.js → chunk-7N4EOEYR-BzC1dzY0.js} +1 -1
- package/payload/server/public/assets/chunk-7N4EOEYR-BzC1dzY0.js.br +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-BzC1dzY0.js.gz +0 -0
- package/payload/server/public/assets/{chunk-AA7GKIK3-DW8a-2NK.js → chunk-AA7GKIK3-R_pjI1kw.js} +1 -1
- package/payload/server/public/assets/chunk-AA7GKIK3-R_pjI1kw.js.br +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-R_pjI1kw.js.gz +0 -0
- package/payload/server/public/assets/{chunk-BSJP7CBP-DqXIO_5R.js → chunk-BSJP7CBP-D2KRAq3U.js} +1 -1
- package/payload/server/public/assets/chunk-BSJP7CBP-D2KRAq3U.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-D2KRAq3U.js.gz +0 -0
- package/payload/server/public/assets/{chunk-CIAEETIT-BMJfgj2u.js → chunk-CIAEETIT-BPGWtrKR.js} +1 -1
- package/payload/server/public/assets/chunk-CIAEETIT-BPGWtrKR.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-BPGWtrKR.js.gz +0 -0
- package/payload/server/public/assets/{chunk-EDXVE4YY-BxdLPk0b.js → chunk-EDXVE4YY-tqt7wueu.js} +1 -1
- package/payload/server/public/assets/chunk-EDXVE4YY-tqt7wueu.js.br +3 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-tqt7wueu.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ENJZ2VHE-Cfe2DCjQ.js → chunk-ENJZ2VHE-DJG3cA6E.js} +1 -1
- package/payload/server/public/assets/chunk-ENJZ2VHE-DJG3cA6E.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-DJG3cA6E.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FMBD7UC4-CdPjwbtf.js → chunk-FMBD7UC4-DO1xgCDf.js} +1 -1
- package/payload/server/public/assets/chunk-FMBD7UC4-DO1xgCDf.js.br +2 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-DO1xgCDf.js.gz +0 -0
- package/payload/server/public/assets/{chunk-FOC6F5B3-Dl6l1KAh.js → chunk-FOC6F5B3-BhWAbCUG.js} +1 -1
- package/payload/server/public/assets/chunk-FOC6F5B3-BhWAbCUG.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-BhWAbCUG.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ICPOFSXX-PnsGrqtx.js → chunk-ICPOFSXX-BhUzt35c.js} +2 -2
- package/payload/server/public/assets/chunk-ICPOFSXX-BhUzt35c.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-BhUzt35c.js.gz +0 -0
- package/payload/server/public/assets/{chunk-K5T4RW27--g29_wjW.js → chunk-K5T4RW27-Boj-qHrX.js} +1 -1
- package/payload/server/public/assets/chunk-K5T4RW27-Boj-qHrX.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-Boj-qHrX.js.gz +0 -0
- package/payload/server/public/assets/{chunk-KGLVRYIC-CI77ENeO.js → chunk-KGLVRYIC-3cBRDk1b.js} +1 -1
- package/payload/server/public/assets/chunk-KGLVRYIC-3cBRDk1b.js.br +2 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-3cBRDk1b.js.gz +0 -0
- package/payload/server/public/assets/{chunk-LIHQZDEY-CE-XByg6.js → chunk-LIHQZDEY-CgkLKaII.js} +1 -1
- package/payload/server/public/assets/chunk-LIHQZDEY-CgkLKaII.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-CgkLKaII.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ORNJ4GCN-DkjJQQSm.js → chunk-ORNJ4GCN-Dl449r_k.js} +1 -1
- package/payload/server/public/assets/chunk-ORNJ4GCN-Dl449r_k.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-Dl449r_k.js.gz +0 -0
- package/payload/server/public/assets/{chunk-OYMX7WX6-DhogFeD7.js → chunk-OYMX7WX6-Dzkj67n6.js} +1 -1
- package/payload/server/public/assets/chunk-OYMX7WX6-Dzkj67n6.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-Dzkj67n6.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-BDoCtU0N.js +1 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-BDoCtU0N.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-BDoCtU0N.js.gz +0 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-CeaRXuiO.js → chunk-U2HBQHQK-Dyz9Kbir.js} +1 -1
- package/payload/server/public/assets/chunk-U2HBQHQK-Dyz9Kbir.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-Dyz9Kbir.js.gz +0 -0
- package/payload/server/public/assets/{chunk-X2U36JSP-BqxXeOqf.js → chunk-X2U36JSP-ag0VVCw6.js} +1 -1
- package/payload/server/public/assets/chunk-X2U36JSP-ag0VVCw6.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-ag0VVCw6.js.gz +0 -0
- package/payload/server/public/assets/{chunk-XPW4576I-DtqJwn2x.js → chunk-XPW4576I-B-vhDYPE.js} +1 -1
- package/payload/server/public/assets/chunk-XPW4576I-B-vhDYPE.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-B-vhDYPE.js.gz +0 -0
- package/payload/server/public/assets/{chunk-YZCP3GAM-COBlEwQw.js → chunk-YZCP3GAM-C4COviPb.js} +1 -1
- package/payload/server/public/assets/chunk-YZCP3GAM-C4COviPb.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-C4COviPb.js.gz +0 -0
- package/payload/server/public/assets/{chunk-ZZ45TVLE-CcL088y6.js → chunk-ZZ45TVLE-8dGsCp5b.js} +1 -1
- package/payload/server/public/assets/chunk-ZZ45TVLE-8dGsCp5b.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-8dGsCp5b.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-qevfwy5C.js +1 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-qevfwy5C.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-qevfwy5C.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CxOR3aao.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CxOR3aao.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CxOR3aao.js.gz +0 -0
- package/payload/server/public/assets/clock-D6QQFHwJ.js +1 -0
- package/payload/server/public/assets/clock-D6QQFHwJ.js.br +0 -0
- package/payload/server/public/assets/clock-D6QQFHwJ.js.gz +0 -0
- package/payload/server/public/assets/clone-CJmzeWWZ.js +1 -0
- package/payload/server/public/assets/clone-CJmzeWWZ.js.br +0 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-kEHVkDNn.js → cose-bilkent-S5V4N54A-qM4Q4TuE.js} +1 -1
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-qM4Q4TuE.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-qM4Q4TuE.js.gz +0 -0
- package/payload/server/public/assets/{dagre-D2wUw1zC.js → dagre-DRvHdusQ.js} +1 -1
- package/payload/server/public/assets/dagre-DRvHdusQ.js.br +0 -0
- package/payload/server/public/assets/dagre-DRvHdusQ.js.gz +0 -0
- package/payload/server/public/assets/{dagre-KV5264BT-BWfTDwEs.js → dagre-KV5264BT-CGqSVVTn.js} +1 -1
- package/payload/server/public/assets/dagre-KV5264BT-CGqSVVTn.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-CGqSVVTn.js.gz +0 -0
- package/payload/server/public/assets/data-B1JJ3Y1T.js +1 -0
- package/payload/server/public/assets/data-B1JJ3Y1T.js.br +0 -0
- package/payload/server/public/assets/data-B1JJ3Y1T.js.gz +0 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-Tl9dS8w0.js → diagram-5BDNPKRD-DfFgeApz.js} +1 -1
- package/payload/server/public/assets/diagram-5BDNPKRD-DfFgeApz.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-DfFgeApz.js.gz +0 -0
- package/payload/server/public/assets/{diagram-G4DWMVQ6-CeSe6TMu.js → diagram-G4DWMVQ6-DPXc3Q8e.js} +1 -1
- package/payload/server/public/assets/diagram-G4DWMVQ6-DPXc3Q8e.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DPXc3Q8e.js.gz +0 -0
- package/payload/server/public/assets/{diagram-MMDJMWI5-DYBNJCmk.js → diagram-MMDJMWI5-V8RCddvy.js} +1 -1
- package/payload/server/public/assets/diagram-MMDJMWI5-V8RCddvy.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-V8RCddvy.js.gz +0 -0
- package/payload/server/public/assets/{diagram-TYMM5635-BmpUGltx.js → diagram-TYMM5635-CrvfIf-m.js} +1 -1
- package/payload/server/public/assets/diagram-TYMM5635-CrvfIf-m.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-CrvfIf-m.js.gz +0 -0
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-DuwuNGqx.js → erDiagram-SMLLAGMA-DClMgmBB.js} +1 -1
- package/payload/server/public/assets/erDiagram-SMLLAGMA-DClMgmBB.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-DClMgmBB.js.gz +0 -0
- package/payload/server/public/assets/{file-download-DayBHhKS.js → file-download-C_fSe4dm.js} +1 -1
- package/payload/server/public/assets/file-download-C_fSe4dm.js.br +0 -0
- package/payload/server/public/assets/file-download-C_fSe4dm.js.gz +0 -0
- package/payload/server/public/assets/{file-text-BSyhVH0m.js → file-text-D7GbEcqj.js} +1 -1
- package/payload/server/public/assets/file-text-D7GbEcqj.js.br +0 -0
- package/payload/server/public/assets/file-text-D7GbEcqj.js.gz +0 -0
- package/payload/server/public/assets/{flatten-Bu-b1uTY.js → flatten-UdUTbm8v.js} +1 -1
- package/payload/server/public/assets/flatten-UdUTbm8v.js.br +0 -0
- package/payload/server/public/assets/flatten-UdUTbm8v.js.gz +0 -0
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-Bpp8P6Ba.js → flowDiagram-DWJPFMVM-D29Ou09P.js} +1 -1
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-D29Ou09P.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-D29Ou09P.js.gz +0 -0
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-CE6ppjB4.js → ganttDiagram-T4ZO3ILL-CoAK7W_V.js} +1 -1
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CoAK7W_V.js.br +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CoAK7W_V.js.gz +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL--JSoLMoH.js +1 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL--JSoLMoH.js.br +0 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-BdK1GjPr.js → gitGraphDiagram-UUTBAWPF-DMEc_1aX.js} +1 -1
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DMEc_1aX.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DMEc_1aX.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-DegLKGdx.js → graph-labels-Dlcb6cW7.js} +1 -1
- package/payload/server/public/assets/graph-labels-Dlcb6cW7.js.br +0 -0
- package/payload/server/public/assets/graph-labels-Dlcb6cW7.js.gz +0 -0
- package/payload/server/public/assets/{graph-Bjv3Tc3B.js → graph-yl5qU1kO.js} +3 -3
- package/payload/server/public/assets/graph-yl5qU1kO.js.br +0 -0
- package/payload/server/public/assets/graph-yl5qU1kO.js.gz +0 -0
- package/payload/server/public/assets/{graphlib-CHEXylyU.js → graphlib-ihSLgqUG.js} +1 -1
- package/payload/server/public/assets/graphlib-ihSLgqUG.js.br +0 -0
- package/payload/server/public/assets/graphlib-ihSLgqUG.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-CY4gsXn4.js +1 -0
- package/payload/server/public/assets/info-OMHHGYJF-CY4gsXn4.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CpWSNS3C.js +2 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CpWSNS3C.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CpWSNS3C.js.gz +0 -0
- package/payload/server/public/assets/{isEmpty-CjH0UASp.js → isEmpty-DY_Xp9Na.js} +1 -1
- package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.br +0 -0
- package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.gz +0 -0
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js → ishikawaDiagram-UXIWVN3A-w8fVIbxy.js} +1 -1
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-w8fVIbxy.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-w8fVIbxy.js.gz +0 -0
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-ByUPv8q6.js → journeyDiagram-VCZTEJTY-BRTPKDT5.js} +1 -1
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-BRTPKDT5.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-BRTPKDT5.js.gz +0 -0
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-CFinqhpu.js → kanban-definition-6JOO6SKY-Ls3VaFZ_.js} +1 -1
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-Ls3VaFZ_.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-Ls3VaFZ_.js.gz +0 -0
- package/payload/server/public/assets/{line-Y4ns5Ghi.js → line-BwhAIh8u.js} +1 -1
- package/payload/server/public/assets/line-BwhAIh8u.js.br +0 -0
- package/payload/server/public/assets/line-BwhAIh8u.js.gz +0 -0
- package/payload/server/public/assets/{linear-l39GooQ5.js → linear-USiZPFN4.js} +1 -1
- package/payload/server/public/assets/linear-USiZPFN4.js.br +0 -0
- package/payload/server/public/assets/linear-USiZPFN4.js.gz +0 -0
- package/payload/server/public/assets/{maximize-2-DJFG2EXJ.js → maximize-2-BS689r4W.js} +1 -1
- package/payload/server/public/assets/maximize-2-BS689r4W.js.br +0 -0
- package/payload/server/public/assets/maximize-2-BS689r4W.js.gz +0 -0
- package/payload/server/public/assets/{mermaid-parser.core-5w0T1dRj.js → mermaid-parser.core-Bq--iC2w.js} +2 -2
- package/payload/server/public/assets/mermaid-parser.core-Bq--iC2w.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-Bq--iC2w.js.gz +0 -0
- package/payload/server/public/assets/{mermaid.core-DBADY5VW.js → mermaid.core-oYX-FxVa.js} +3 -3
- package/payload/server/public/assets/mermaid.core-oYX-FxVa.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-oYX-FxVa.js.gz +0 -0
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-rHz37loq.js → mindmap-definition-QFDTVHPH-ByZjL4Bs.js} +1 -1
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-ByZjL4Bs.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-ByZjL4Bs.js.gz +0 -0
- package/payload/server/public/assets/operator-CvapnpIW.js +1 -0
- package/payload/server/public/assets/operator-CvapnpIW.js.br +0 -0
- package/payload/server/public/assets/operator-CvapnpIW.js.gz +0 -0
- package/payload/server/public/assets/{ordinal-D6D6WcTC.js → ordinal-gnpqfIHn.js} +1 -1
- package/payload/server/public/assets/ordinal-gnpqfIHn.js.br +0 -0
- package/payload/server/public/assets/ordinal-gnpqfIHn.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-DczCn3uj.js +1 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-DczCn3uj.js.br +0 -0
- package/payload/server/public/assets/page-987y4JbQ.js +32 -0
- package/payload/server/public/assets/page-987y4JbQ.js.br +0 -0
- package/payload/server/public/assets/page-987y4JbQ.js.gz +0 -0
- package/payload/server/public/assets/page-DWkUH4Z_.js +1 -0
- package/payload/server/public/assets/page-DWkUH4Z_.js.br +0 -0
- package/payload/server/public/assets/page-DWkUH4Z_.js.gz +0 -0
- package/payload/server/public/assets/{pdf-render-BSgBp8Fr.js → pdf-render-gEryZmeC.js} +1 -1
- package/payload/server/public/assets/pdf-render-gEryZmeC.js.br +0 -0
- package/payload/server/public/assets/pdf-render-gEryZmeC.js.gz +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-CbvZUaof.js +1 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-CbvZUaof.js.br +0 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-as0e_DSH.js → pieDiagram-DEJITSTG-BGFms5bU.js} +1 -1
- package/payload/server/public/assets/pieDiagram-DEJITSTG-BGFms5bU.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-BGFms5bU.js.gz +0 -0
- package/payload/server/public/assets/{public-CNVEM-Bx.js → public-D5pi-VFn.js} +1 -1
- package/payload/server/public/assets/public-D5pi-VFn.js.br +0 -0
- package/payload/server/public/assets/public-D5pi-VFn.js.gz +0 -0
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-B4t8HO9J.js → quadrantDiagram-34T5L4WZ-_ymoz8bQ.js} +1 -1
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-_ymoz8bQ.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-_ymoz8bQ.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-XmuabQlO.js +1 -0
- package/payload/server/public/assets/radar-PYXPWWZC-XmuabQlO.js.br +0 -0
- package/payload/server/public/assets/{reduce-BtXXK8Ma.js → reduce-BvezuHIe.js} +1 -1
- package/payload/server/public/assets/reduce-BvezuHIe.js.br +0 -0
- package/payload/server/public/assets/reduce-BvezuHIe.js.gz +0 -0
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-yxh30zHX.js → requirementDiagram-MS252O5E-lrOmOxIA.js} +1 -1
- package/payload/server/public/assets/requirementDiagram-MS252O5E-lrOmOxIA.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-lrOmOxIA.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-DQCaky8_.js → rotate-ccw-zNxnK36R.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-zNxnK36R.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-zNxnK36R.js.gz +0 -0
- package/payload/server/public/assets/routines-mZzrGA5y.js +2 -0
- package/payload/server/public/assets/routines-mZzrGA5y.js.br +0 -0
- package/payload/server/public/assets/routines-mZzrGA5y.js.gz +0 -0
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-j-k9Wfty.js → sankeyDiagram-XADWPNL6-CdUQThXU.js} +1 -1
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-CdUQThXU.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-CdUQThXU.js.gz +0 -0
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DGLgcLhC.js → sequenceDiagram-FGHM5R23-DqnEEldq.js} +1 -1
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DqnEEldq.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DqnEEldq.js.gz +0 -0
- package/payload/server/public/assets/{skills-CosN3uA4.js → skills-5A8PockT.js} +1 -1
- package/payload/server/public/assets/skills-5A8PockT.js.br +0 -0
- package/payload/server/public/assets/skills-5A8PockT.js.gz +0 -0
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-C9p1OUMI.js → stateDiagram-FHFEXIEX-KEdtxqdq.js} +1 -1
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-KEdtxqdq.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-KEdtxqdq.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Cs85Ewtt.js +1 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Cs85Ewtt.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Cs85Ewtt.js.gz +0 -0
- package/payload/server/public/assets/{tasks-f0QikHmw.js → tasks-B1_2wc6L.js} +2 -2
- package/payload/server/public/assets/tasks-B1_2wc6L.js.br +0 -0
- package/payload/server/public/assets/tasks-B1_2wc6L.js.gz +0 -0
- package/payload/server/public/assets/{time-entry-format-DLTdS35_.js → time-entry-format-CJ2FSSQt.js} +1 -1
- package/payload/server/public/assets/time-entry-format-CJ2FSSQt.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-CJ2FSSQt.js.gz +0 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-B1g7pgkH.js → timeline-definition-GMOUNBTQ-BRXdCMau.js} +1 -1
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-BRXdCMau.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-BRXdCMau.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-B-SYhqwK.js +1 -0
- package/payload/server/public/assets/treeView-SZITEDCU-B-SYhqwK.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-DpZmFNM9.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-DpZmFNM9.js.br +0 -0
- package/payload/server/public/assets/{triangle-alert-CpwrbdYq.js → triangle-alert-CedsrgME.js} +1 -1
- package/payload/server/public/assets/triangle-alert-CedsrgME.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CedsrgME.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-D01gSp36.js → useCopyFeedback-zjZZUC2-.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-zjZZUC2-.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-zjZZUC2-.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-72THldvm.css +1 -0
- package/payload/server/public/assets/useSubAccountSwitcher-72THldvm.css.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-72THldvm.css.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-HjQZjJBr.js +14 -0
- package/payload/server/public/assets/useSubAccountSwitcher-HjQZjJBr.js.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-HjQZjJBr.js.gz +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-DiPgyDUy.js → useVoiceRecorder-CJecnefX.js} +2 -2
- package/payload/server/public/assets/useVoiceRecorder-CJecnefX.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-CJecnefX.js.gz +0 -0
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-D2ZjFfh4.js → vennDiagram-DHZGUBPP-8nc7NUVQ.js} +1 -1
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-8nc7NUVQ.js.br +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-8nc7NUVQ.js.gz +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-D2FCCV4-.js +1 -0
- package/payload/server/public/assets/wardley-RL74JXVD-D2FCCV4-.js.br +0 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BFAhfkD8.js → wardleyDiagram-NUSXRM2D-Cjjiap8M.js} +1 -1
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-Cjjiap8M.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-Cjjiap8M.js.gz +0 -0
- package/payload/server/public/assets/{wrench-C5SJreEu.js → wrench-D8BH20W8.js} +1 -1
- package/payload/server/public/assets/wrench-D8BH20W8.js.br +0 -0
- package/payload/server/public/assets/wrench-D8BH20W8.js.gz +0 -0
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-Dt94h2RQ.js → xychartDiagram-5P7HB3ND-DEzDNw_i.js} +1 -1
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DEzDNw_i.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DEzDNw_i.js.gz +0 -0
- package/payload/server/public/browser.html +5 -4
- package/payload/server/public/calendar.html +7 -7
- package/payload/server/public/chat.html +14 -14
- package/payload/server/public/data.html +13 -13
- package/payload/server/public/graph.html +9 -9
- package/payload/server/public/index.html +17 -16
- package/payload/server/public/operator.html +16 -15
- package/payload/server/public/public.html +14 -14
- package/payload/server/public/routines.html +7 -7
- package/payload/server/public/skills.html +5 -5
- package/payload/server/public/tasks.html +6 -6
- package/payload/server/server.js +403 -277
- package/payload/server/public/assets/AdminLoginScreens-DSt9DYZZ.js +0 -1
- package/payload/server/public/assets/AdminLoginScreens-DSt9DYZZ.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-DSt9DYZZ.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-MM3_yp3N.js +0 -2
- package/payload/server/public/assets/AdminShell-MM3_yp3N.js.br +0 -0
- package/payload/server/public/assets/AdminShell-MM3_yp3N.js.gz +0 -0
- package/payload/server/public/assets/activity-aVvbaVd4.js.br +0 -0
- package/payload/server/public/assets/activity-aVvbaVd4.js.gz +0 -0
- package/payload/server/public/assets/admin-B0lQnkH-.js +0 -1
- package/payload/server/public/assets/admin-B0lQnkH-.js.br +0 -0
- package/payload/server/public/assets/admin-B0lQnkH-.js.gz +0 -0
- package/payload/server/public/assets/agents-CrpVTPRG.js.br +0 -0
- package/payload/server/public/assets/agents-CrpVTPRG.js.gz +0 -0
- package/payload/server/public/assets/arc-DaudCnXg.js.br +0 -0
- package/payload/server/public/assets/arc-DaudCnXg.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.gz +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.gz +0 -0
- package/payload/server/public/assets/browser-CYHUzTop.js +0 -1
- package/payload/server/public/assets/browser-CYHUzTop.js.br +0 -0
- package/payload/server/public/assets/browser-CYHUzTop.js.gz +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY--h6oE2cv.js.br +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY--h6oE2cv.js.gz +0 -0
- package/payload/server/public/assets/calendar-4IWQpwYv.js.br +0 -0
- package/payload/server/public/assets/calendar-4IWQpwYv.js.gz +0 -0
- package/payload/server/public/assets/channel-TwxCDSpK.js +0 -1
- package/payload/server/public/assets/channel-TwxCDSpK.js.br +0 -0
- package/payload/server/public/assets/chat-DmjZTqnV.js +0 -1
- package/payload/server/public/assets/chat-DmjZTqnV.js.br +0 -0
- package/payload/server/public/assets/chat-DmjZTqnV.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-CIl-s3LZ.js +0 -1
- package/payload/server/public/assets/chevron-left-CIl-s3LZ.js.br +0 -0
- package/payload/server/public/assets/chevron-right-DpAi2BsF.js +0 -1
- package/payload/server/public/assets/chevron-right-DpAi2BsF.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.gz +0 -0
- package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js +0 -1
- package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.gz +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.gz +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.gz +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.gz +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.gz +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.gz +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.br +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.gz +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.br +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.gz +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.br +0 -4
- package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.gz +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.gz +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.gz +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.br +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.gz +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.gz +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.br +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.gz +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.gz +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.gz +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.gz +0 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.br +0 -3
- package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.gz +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.gz +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.gz +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js +0 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.gz +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.gz +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.gz +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.gz +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.gz +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.gz +0 -0
- package/payload/server/public/assets/clock-CGuM9VRx.js +0 -1
- package/payload/server/public/assets/clock-CGuM9VRx.js.br +0 -0
- package/payload/server/public/assets/clone-B3vq32j7.js +0 -1
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.gz +0 -0
- package/payload/server/public/assets/dagre-D2wUw1zC.js.br +0 -0
- package/payload/server/public/assets/dagre-D2wUw1zC.js.gz +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.gz +0 -0
- package/payload/server/public/assets/data-BpdFiZKH.js +0 -1
- package/payload/server/public/assets/data-BpdFiZKH.js.br +0 -2
- package/payload/server/public/assets/data-BpdFiZKH.js.gz +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.gz +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.gz +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.gz +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.gz +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.gz +0 -0
- package/payload/server/public/assets/file-download-DayBHhKS.js.br +0 -0
- package/payload/server/public/assets/file-download-DayBHhKS.js.gz +0 -0
- package/payload/server/public/assets/file-text-BSyhVH0m.js.br +0 -0
- package/payload/server/public/assets/file-text-BSyhVH0m.js.gz +0 -0
- package/payload/server/public/assets/flatten-Bu-b1uTY.js.br +0 -0
- package/payload/server/public/assets/flatten-Bu-b1uTY.js.gz +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.gz +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.br +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.gz +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.gz +0 -0
- package/payload/server/public/assets/graph-Bjv3Tc3B.js.br +0 -0
- package/payload/server/public/assets/graph-Bjv3Tc3B.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-DegLKGdx.js.br +0 -0
- package/payload/server/public/assets/graph-labels-DegLKGdx.js.gz +0 -0
- package/payload/server/public/assets/graphlib-CHEXylyU.js.br +0 -0
- package/payload/server/public/assets/graphlib-CHEXylyU.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js +0 -2
- package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.gz +0 -0
- package/payload/server/public/assets/isEmpty-CjH0UASp.js.br +0 -0
- package/payload/server/public/assets/isEmpty-CjH0UASp.js.gz +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.gz +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.gz +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.gz +0 -0
- package/payload/server/public/assets/line-Y4ns5Ghi.js.br +0 -0
- package/payload/server/public/assets/line-Y4ns5Ghi.js.gz +0 -0
- package/payload/server/public/assets/linear-l39GooQ5.js.br +0 -0
- package/payload/server/public/assets/linear-l39GooQ5.js.gz +0 -0
- package/payload/server/public/assets/maximize-2-DJFG2EXJ.js.br +0 -0
- package/payload/server/public/assets/maximize-2-DJFG2EXJ.js.gz +0 -0
- package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.gz +0 -0
- package/payload/server/public/assets/mermaid.core-DBADY5VW.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-DBADY5VW.js.gz +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.gz +0 -0
- package/payload/server/public/assets/operator-Du9Ve_PR.js +0 -1
- package/payload/server/public/assets/operator-Du9Ve_PR.js.br +0 -0
- package/payload/server/public/assets/operator-Du9Ve_PR.js.gz +0 -0
- package/payload/server/public/assets/ordinal-D6D6WcTC.js.br +0 -0
- package/payload/server/public/assets/ordinal-D6D6WcTC.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js +0 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js.br +0 -0
- package/payload/server/public/assets/page-DgHYxG3M.js +0 -1
- package/payload/server/public/assets/page-DgHYxG3M.js.br +0 -0
- package/payload/server/public/assets/page-DgHYxG3M.js.gz +0 -0
- package/payload/server/public/assets/page-qV1ypb6i.js +0 -32
- package/payload/server/public/assets/page-qV1ypb6i.js.br +0 -0
- package/payload/server/public/assets/page-qV1ypb6i.js.gz +0 -0
- package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.br +0 -0
- package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.gz +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js +0 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.gz +0 -0
- package/payload/server/public/assets/public-CNVEM-Bx.js.br +0 -0
- package/payload/server/public/assets/public-CNVEM-Bx.js.gz +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js.br +0 -0
- package/payload/server/public/assets/reduce-BtXXK8Ma.js.br +0 -0
- package/payload/server/public/assets/reduce-BtXXK8Ma.js.gz +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-DQCaky8_.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-DQCaky8_.js.gz +0 -0
- package/payload/server/public/assets/routines-DwK5FeLm.js +0 -1
- package/payload/server/public/assets/routines-DwK5FeLm.js.br +0 -0
- package/payload/server/public/assets/routines-DwK5FeLm.js.gz +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.gz +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.gz +0 -0
- package/payload/server/public/assets/skills-CosN3uA4.js.br +0 -0
- package/payload/server/public/assets/skills-CosN3uA4.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.gz +0 -0
- package/payload/server/public/assets/tasks-f0QikHmw.js.br +0 -0
- package/payload/server/public/assets/tasks-f0QikHmw.js.gz +0 -0
- package/payload/server/public/assets/time-entry-format-DLTdS35_.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-DLTdS35_.js.gz +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CpwrbdYq.js.br +0 -3
- package/payload/server/public/assets/triangle-alert-CpwrbdYq.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-D01gSp36.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-D01gSp36.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BRHYXwGO.js +0 -14
- package/payload/server/public/assets/useSubAccountSwitcher-BRHYXwGO.js.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BRHYXwGO.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-CJzJ9xV3.css +0 -1
- package/payload/server/public/assets/useSubAccountSwitcher-CJzJ9xV3.css.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-CJzJ9xV3.css.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-DiPgyDUy.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-DiPgyDUy.js.gz +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.br +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.gz +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js +0 -1
- package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.gz +0 -0
- package/payload/server/public/assets/wrench-C5SJreEu.js.br +0 -1
- package/payload/server/public/assets/wrench-C5SJreEu.js.gz +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.gz +0 -0
- /package/payload/server/public/assets/{_baseFor-B12He5Rp.js → _baseFor-BApe6Tla.js} +0 -0
- /package/payload/server/public/assets/{_baseFor-B12He5Rp.js.br → _baseFor-BApe6Tla.js.br} +0 -0
- /package/payload/server/public/assets/{_baseFor-B12He5Rp.js.gz → _baseFor-BApe6Tla.js.gz} +0 -0
- /package/payload/server/public/assets/{array-DO1uCttT.js → array-eiH4WfvY.js} +0 -0
- /package/payload/server/public/assets/{array-DO1uCttT.js.br → array-eiH4WfvY.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-DFn2foqy.js → cytoscape.esm-BZ6NYo0w.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-DFn2foqy.js.br → cytoscape.esm-BZ6NYo0w.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-DFn2foqy.js.gz → cytoscape.esm-BZ6NYo0w.js.gz} +0 -0
- /package/payload/server/public/assets/{defaultLocale-ieI3yFoA.js → defaultLocale-DWHqsa6O.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-ieI3yFoA.js.br → defaultLocale-DWHqsa6O.js.br} +0 -0
- /package/payload/server/public/assets/{defaultLocale-ieI3yFoA.js.gz → defaultLocale-DWHqsa6O.js.gz} +0 -0
- /package/payload/server/public/assets/{dist-DlU7AEeD.js → dist-IoQuidkp.js} +0 -0
- /package/payload/server/public/assets/{dist-DlU7AEeD.js.br → dist-IoQuidkp.js.br} +0 -0
- /package/payload/server/public/assets/{dist-DlU7AEeD.js.gz → dist-IoQuidkp.js.gz} +0 -0
- /package/payload/server/public/assets/{init-BCRlEgNP.js → init-BdkYWjJJ.js} +0 -0
- /package/payload/server/public/assets/{init-BCRlEgNP.js.br → init-BdkYWjJJ.js.br} +0 -0
- /package/payload/server/public/assets/{init-BCRlEgNP.js.gz → init-BdkYWjJJ.js.gz} +0 -0
- /package/payload/server/public/assets/{katex-gkTaZgi6.js → katex-BCzoGtFh.js} +0 -0
- /package/payload/server/public/assets/{katex-gkTaZgi6.js.br → katex-BCzoGtFh.js.br} +0 -0
- /package/payload/server/public/assets/{katex-gkTaZgi6.js.gz → katex-BCzoGtFh.js.gz} +0 -0
- /package/payload/server/public/assets/{path-DTmzQFjQ.js → path-DY2qBuPM.js} +0 -0
- /package/payload/server/public/assets/{path-DTmzQFjQ.js.br → path-DY2qBuPM.js.br} +0 -0
- /package/payload/server/public/assets/{path-DTmzQFjQ.js.gz → path-DY2qBuPM.js.gz} +0 -0
- /package/payload/server/public/assets/{preload-helper-eAV8hweq.js → preload-helper-3YNEDsJZ.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-eAV8hweq.js.br → preload-helper-3YNEDsJZ.js.br} +0 -0
- /package/payload/server/public/assets/{preload-helper-eAV8hweq.js.gz → preload-helper-3YNEDsJZ.js.gz} +0 -0
- /package/payload/server/public/assets/{rough.esm-BFJ-MgcB.js → rough.esm-ec8xsRC7.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-BFJ-MgcB.js.br → rough.esm-ec8xsRC7.js.br} +0 -0
- /package/payload/server/public/assets/{rough.esm-BFJ-MgcB.js.gz → rough.esm-ec8xsRC7.js.gz} +0 -0
- /package/payload/server/public/assets/{src-9CNk4JU0.js → src-C-STKunZ.js} +0 -0
- /package/payload/server/public/assets/{src-9CNk4JU0.js.br → src-C-STKunZ.js.br} +0 -0
- /package/payload/server/public/assets/{src-9CNk4JU0.js.gz → src-C-STKunZ.js.gz} +0 -0
|
@@ -90,31 +90,94 @@ export function saveSignature(accountDir, parts) {
|
|
|
90
90
|
}
|
|
91
91
|
return { written, removed };
|
|
92
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Task 2193 — render a plain-text body as HTML, so a stored HTML signature has a
|
|
95
|
+
* body to be appended to. Deterministic, with no model judgement in the path.
|
|
96
|
+
*
|
|
97
|
+
* A plain body inserted into HTML raw collapses every newline — the defect Task
|
|
98
|
+
* 2166 records against Graph's createReply — so a blank line starts a paragraph
|
|
99
|
+
* and a single newline is a line break. Only the three characters that are
|
|
100
|
+
* markup in HTML *text content* are escaped; the result is never used as an
|
|
101
|
+
* attribute value, where quotes would matter too. The ampersand is escaped
|
|
102
|
+
* first, or the escapes this function emits would themselves be escaped.
|
|
103
|
+
*/
|
|
104
|
+
export function htmlFromPlainText(text) {
|
|
105
|
+
const escaped = text
|
|
106
|
+
.replace(/\r\n?/g, "\n")
|
|
107
|
+
.replace(/&/g, "&")
|
|
108
|
+
.replace(/</g, "<")
|
|
109
|
+
.replace(/>/g, ">");
|
|
110
|
+
return escaped
|
|
111
|
+
.split(/\n{2,}/)
|
|
112
|
+
.map((paragraph) => `<p>${paragraph.replace(/\n/g, "<br>")}</p>`)
|
|
113
|
+
.join("");
|
|
114
|
+
}
|
|
93
115
|
/**
|
|
94
116
|
* Append the signature to a draft's body/html deterministically, with no model
|
|
95
|
-
* judgement. The plain-text signature is appended to body whenever present.
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
117
|
+
* judgement. The plain-text signature is appended to body whenever present.
|
|
118
|
+
*
|
|
119
|
+
* Task 2193 — when an HTML signature is stored and the caller supplied no HTML
|
|
120
|
+
* body, one is derived from the caller's body, because no sanctioned drafting
|
|
121
|
+
* flow passes `html` and a stored `email-signature.html` was otherwise
|
|
122
|
+
* unreachable. The derivation reads the caller's body, not the text-signed one:
|
|
123
|
+
* the two MIME parts are alternatives of the same message, so each carries
|
|
124
|
+
* exactly one sign-off. A `sig.html` of null derives nothing and the draft stays
|
|
125
|
+
* text/plain, so the wire shape changes only for an account that installed an
|
|
126
|
+
* HTML signature on purpose.
|
|
127
|
+
*
|
|
128
|
+
* The font wrap is HTML-only, has no plain-text analogue, and sets none of the
|
|
129
|
+
* three flags.
|
|
100
130
|
*/
|
|
101
131
|
export function applySignature(input, sig) {
|
|
102
132
|
let body = input.body;
|
|
103
133
|
let html = input.html;
|
|
104
|
-
let
|
|
134
|
+
let textApplied = false;
|
|
135
|
+
let htmlApplied = false;
|
|
136
|
+
let derivedHtml = false;
|
|
105
137
|
if (sig.text !== null) {
|
|
106
138
|
body = `${body}\n\n${sig.text}`;
|
|
107
|
-
|
|
139
|
+
textApplied = true;
|
|
140
|
+
}
|
|
141
|
+
if (html === undefined && sig.html !== null) {
|
|
142
|
+
html = htmlFromPlainText(input.body);
|
|
143
|
+
derivedHtml = true;
|
|
108
144
|
}
|
|
109
145
|
if (html !== undefined) {
|
|
110
146
|
if (sig.html !== null) {
|
|
111
147
|
html = `${html}${sig.html}`;
|
|
112
|
-
|
|
148
|
+
htmlApplied = true;
|
|
113
149
|
}
|
|
114
150
|
if (sig.font !== null) {
|
|
115
151
|
html = `<div style="font-family: ${sig.font}">${html}</div>`;
|
|
116
152
|
}
|
|
117
153
|
}
|
|
118
|
-
return { body, html,
|
|
154
|
+
return { body, html, textApplied, htmlApplied, derivedHtml };
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Task 2193 — the signature sentence both draft tools append to their result.
|
|
158
|
+
*
|
|
159
|
+
* The proof of what landed belongs in the reply the drafting agent already
|
|
160
|
+
* reads. The MCP log is unreachable from the tools a specialist holds (Task
|
|
161
|
+
* 2168), `email-draft-list` returns headers only and `email-fetch-body` reads
|
|
162
|
+
* inbox and sent, so nothing in the drafting agent's hands could see the body —
|
|
163
|
+
* which is how a plain-text draft was reported as carrying a branded signature.
|
|
164
|
+
*
|
|
165
|
+
* Shared by email-draft and email-draft-edit so the two cannot drift. Unlike
|
|
166
|
+
* formatCopyNote and formatAttachNote it is never empty: "no signature stored"
|
|
167
|
+
* is the case that most needs saying.
|
|
168
|
+
*/
|
|
169
|
+
export function formatSignatureNote(flags) {
|
|
170
|
+
if (!flags.textApplied && !flags.htmlApplied) {
|
|
171
|
+
return " Signature: none stored for this account.";
|
|
172
|
+
}
|
|
173
|
+
const htmlPart = flags.derivedHtml ? "HTML (body derived from the plain text)" : "HTML";
|
|
174
|
+
const named = (parts) => parts.filter((part) => part !== null).join(" and ");
|
|
175
|
+
const landed = named([flags.textApplied ? "plain text" : null, flags.htmlApplied ? htmlPart : null]);
|
|
176
|
+
const missing = named([
|
|
177
|
+
flags.textApplied ? null : "plain text",
|
|
178
|
+
flags.htmlApplied ? null : "HTML",
|
|
179
|
+
]);
|
|
180
|
+
const gap = missing ? ` No ${missing} signature is stored.` : "";
|
|
181
|
+
return ` Signature: ${landed} applied.${gap}`;
|
|
119
182
|
}
|
|
120
183
|
//# sourceMappingURL=signature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/lib/signature.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/lib/signature.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft-edit.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-draft-edit.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI1E,UAAU,UAAW,SAAQ,kBAAkB;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCxE"}
|
|
@@ -3,6 +3,7 @@ import { formatCopyNote } from "../lib/smtp.js";
|
|
|
3
3
|
import { replaceDraft } from "../lib/imap.js";
|
|
4
4
|
import { composeDraft } from "../lib/compose.js";
|
|
5
5
|
import { formatAttachNote } from "../lib/attachment-resolve.js";
|
|
6
|
+
import { formatSignatureNote } from "../lib/signature.js";
|
|
6
7
|
export async function emailDraftEdit(params) {
|
|
7
8
|
const result = await loadCredentials(params.accountId, params.mailbox);
|
|
8
9
|
if ("error" in result)
|
|
@@ -11,7 +12,7 @@ export async function emailDraftEdit(params) {
|
|
|
11
12
|
// Compose the replacement first (resolves attachments + threading). A failure
|
|
12
13
|
// here — e.g. an unresolvable parent — throws before any IMAP write, so the
|
|
13
14
|
// stored draft is never touched.
|
|
14
|
-
const { raw, threadedParentId, draftMessageId, attachments } = await composeDraft(config, password, params.accountId, params);
|
|
15
|
+
const { raw, threadedParentId, draftMessageId, attachments, textApplied, htmlApplied, derivedHtml, } = await composeDraft(config, password, params.accountId, params);
|
|
15
16
|
const { folder, oldUid, newUid, expunged, created } = await replaceDraft(config, password, params.targetUid, raw, params.draftMessageId ?? null);
|
|
16
17
|
const uidNote = newUid !== null ? `new UID: ${newUid}` : "new UID not reported by server";
|
|
17
18
|
// created: the prior draft was genuinely gone (UID and Message-ID both
|
|
@@ -22,6 +23,8 @@ export async function emailDraftEdit(params) {
|
|
|
22
23
|
? `replaced UID ${oldUid}`
|
|
23
24
|
: `appended replacement; old UID ${oldUid} not confirmed expunged`;
|
|
24
25
|
const threadNote = threadedParentId ? ` (threaded reply to ${threadedParentId})` : "";
|
|
25
|
-
|
|
26
|
+
// A revision recomposes from scratch, so it re-applies the signature — the note
|
|
27
|
+
// is the same proof email-draft carries, for the same account state (Task 2193).
|
|
28
|
+
return `Draft revised in ${folder}: ${outcomeNote}, ${uidNote}, draft id: ${draftMessageId}, for ${params.to}${formatCopyNote(params.cc, params.bcc)}${formatAttachNote(attachments)}${threadNote} — still unsent.${formatSignatureNote({ textApplied, htmlApplied, derivedHtml })} Review and send it from the Drafts folder.`;
|
|
26
29
|
}
|
|
27
30
|
//# sourceMappingURL=email-draft-edit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft-edit.js","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"email-draft-edit.js","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAgB1D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAkB;IACrD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,8EAA8E;IAC9E,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,EACJ,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,GACZ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEnE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CACtE,MAAM,EACN,QAAQ,EACR,MAAM,CAAC,SAAS,EAChB,GAAG,EACH,MAAM,CAAC,cAAc,IAAI,IAAI,CAC9B,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC;IAC1F,uEAAuE;IACvE,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,uDAAuD;QACzD,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,gBAAgB,MAAM,EAAE;YAC1B,CAAC,CAAC,iCAAiC,MAAM,yBAAyB,CAAC;IACvE,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,gFAAgF;IAChF,iFAAiF;IACjF,OAAO,oBAAoB,MAAM,KAAK,WAAW,KAAK,OAAO,eAAe,cAAc,SAAS,MAAM,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,UAAU,mBAAmB,mBAAmB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,6CAA6C,CAAC;AAClU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-draft.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI1E,UAAU,WAAY,SAAQ,kBAAkB;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBrE"}
|
|
@@ -3,17 +3,20 @@ import { formatCopyNote } from "../lib/smtp.js";
|
|
|
3
3
|
import { appendDraft } from "../lib/imap.js";
|
|
4
4
|
import { composeDraft } from "../lib/compose.js";
|
|
5
5
|
import { formatAttachNote } from "../lib/attachment-resolve.js";
|
|
6
|
+
import { formatSignatureNote } from "../lib/signature.js";
|
|
6
7
|
export async function emailDraft(params) {
|
|
7
8
|
const result = await loadCredentials(params.accountId, params.mailbox);
|
|
8
9
|
if ("error" in result)
|
|
9
10
|
throw new Error(result.error);
|
|
10
11
|
const { config, password } = result.credentials;
|
|
11
|
-
const { raw, threadedParentId, draftMessageId, attachments } = await composeDraft(config, password, params.accountId, params);
|
|
12
|
+
const { raw, threadedParentId, draftMessageId, attachments, textApplied, htmlApplied, derivedHtml, } = await composeDraft(config, password, params.accountId, params);
|
|
12
13
|
const { folder, uid } = await appendDraft(config, password, raw);
|
|
13
14
|
const uidNote = uid !== null ? `UID: ${uid}` : "UID not reported by server";
|
|
14
15
|
const threadNote = threadedParentId ? ` (threaded reply to ${threadedParentId})` : "";
|
|
15
16
|
// The draft id is the stable handle for a later edit — pass it back to
|
|
16
|
-
// email-draft-edit if Gmail has renumbered the UID by then.
|
|
17
|
-
|
|
17
|
+
// email-draft-edit if Gmail has renumbered the UID by then. The signature note
|
|
18
|
+
// is the proof of what the draft actually carries (Task 2193): the MCP log the
|
|
19
|
+
// skill used to cite is unreachable from the tools a drafting agent holds.
|
|
20
|
+
return `Email draft saved to ${folder} for ${params.to}${formatCopyNote(params.cc, params.bcc)}${formatAttachNote(attachments)}${threadNote} — not sent (${uidNote}, draft id: ${draftMessageId}).${formatSignatureNote({ textApplied, htmlApplied, derivedHtml })} Review and send it from the mailbox's Drafts folder.`;
|
|
18
21
|
}
|
|
19
22
|
//# sourceMappingURL=email-draft.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft.js","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"email-draft.js","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAO1D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAmB;IAClD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,MAAM,EACJ,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,GACZ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEnE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC;IAC5E,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,uEAAuE;IACvE,+EAA+E;IAC/E,+EAA+E;IAC/E,2EAA2E;IAC3E,OAAO,wBAAwB,MAAM,QAAQ,MAAM,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,UAAU,gBAAgB,OAAO,eAAe,cAAc,KAAK,mBAAmB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,uDAAuD,CAAC;AAC5T,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
interface SendingIdentitySetParams {
|
|
2
|
+
accountId: string;
|
|
3
|
+
mailbox: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Task 2194 — designate the account's own outbound address.
|
|
7
|
+
*
|
|
8
|
+
* A dedicated writer rather than an `email-setup` parameter, following the
|
|
9
|
+
* `email-signature-set` precedent from Task 2097: designation has to be
|
|
10
|
+
* changeable on an account whose mailboxes already exist, and the account this
|
|
11
|
+
* was filed from holds three.
|
|
12
|
+
*
|
|
13
|
+
* The mailbox is resolved through `resolveConfig` before anything is written,
|
|
14
|
+
* so an address the account does not hold is refused naming the stored
|
|
15
|
+
* identities and nothing is touched. Uniqueness is enforced by the write, not
|
|
16
|
+
* by a check afterwards — see `writeSendingIdentity`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function emailSendingIdentitySet(params: SendingIdentitySetParams): Promise<string>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=email-sending-identity-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-sending-identity-set.d.ts","sourceRoot":"","sources":["../../src/tools/email-sending-identity-set.ts"],"names":[],"mappings":"AAEA,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { resolveConfig, writeSendingIdentity } from "../lib/credentials.js";
|
|
2
|
+
/**
|
|
3
|
+
* Task 2194 — designate the account's own outbound address.
|
|
4
|
+
*
|
|
5
|
+
* A dedicated writer rather than an `email-setup` parameter, following the
|
|
6
|
+
* `email-signature-set` precedent from Task 2097: designation has to be
|
|
7
|
+
* changeable on an account whose mailboxes already exist, and the account this
|
|
8
|
+
* was filed from holds three.
|
|
9
|
+
*
|
|
10
|
+
* The mailbox is resolved through `resolveConfig` before anything is written,
|
|
11
|
+
* so an address the account does not hold is refused naming the stored
|
|
12
|
+
* identities and nothing is touched. Uniqueness is enforced by the write, not
|
|
13
|
+
* by a check afterwards — see `writeSendingIdentity`.
|
|
14
|
+
*/
|
|
15
|
+
export async function emailSendingIdentitySet(params) {
|
|
16
|
+
const { accountId, mailbox } = params;
|
|
17
|
+
const resolved = await resolveConfig(accountId, mailbox);
|
|
18
|
+
if ("error" in resolved)
|
|
19
|
+
throw new Error(resolved.error);
|
|
20
|
+
const { config } = resolved;
|
|
21
|
+
const cleared = await writeSendingIdentity(accountId, config.email);
|
|
22
|
+
console.error(`[email-sending-identity-set] op=write accountId=${accountId.slice(0, 8)} mailbox=${config.email} cleared=${cleared}`);
|
|
23
|
+
return [
|
|
24
|
+
`${config.email} is now this account's sending identity. `,
|
|
25
|
+
`An email-draft, email-send or email-reply that names no mailbox composes from it, `,
|
|
26
|
+
`so the sending address is read from the account rather than chosen by whoever is drafting.`,
|
|
27
|
+
cleared
|
|
28
|
+
? `\n\nCleared the designation from ${cleared} other mailbox${cleared === 1 ? "" : "es"}. Exactly one mailbox carries it at a time.`
|
|
29
|
+
: `\n\nNo other mailbox carried the designation.`,
|
|
30
|
+
].join("");
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=email-sending-identity-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-sending-identity-set.js","sourceRoot":"","sources":["../../src/tools/email-sending-identity-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAO5E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAgC;IAEhC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEtC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,OAAO,IAAI,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpE,OAAO,CAAC,KAAK,CACX,mDAAmD,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,YAAY,OAAO,EAAE,CACtH,CAAC;IAEF,OAAO;QACL,GAAG,MAAM,CAAC,KAAK,2CAA2C;QAC1D,oFAAoF;QACpF,4FAA4F;QAC5F,OAAO;YACL,CAAC,CAAC,oCAAoC,OAAO,iBAAiB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,6CAA6C;YACpI,CAAC,CAAC,+CAA+C;KACpD,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-status.d.ts","sourceRoot":"","sources":["../../src/tools/email-status.ts"],"names":[],"mappings":"AAQA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"email-status.d.ts","sourceRoot":"","sources":["../../src/tools/email-status.ts"],"names":[],"mappings":"AAQA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA0GD,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAwCvE"}
|
|
@@ -3,9 +3,20 @@ import * as imap from "../lib/imap.js";
|
|
|
3
3
|
import * as smtp from "../lib/smtp.js";
|
|
4
4
|
/** Probe one mailbox's IMAP + SMTP and render its health block. */
|
|
5
5
|
async function probeOne(accountId, config) {
|
|
6
|
+
// Task 2194. The account's own outbound address is a stored fact about this
|
|
7
|
+
// mailbox, so it is reported on a single-mailbox account as well as a
|
|
8
|
+
// multi-mailbox one, and above the credential check rather than below it: a
|
|
9
|
+
// broken credential changes the mailbox's health, not which address the
|
|
10
|
+
// account sends from, and a failing mailbox is exactly when someone is
|
|
11
|
+
// reading this looking for it.
|
|
12
|
+
const identityLine = config.sendingIdentity === true
|
|
13
|
+
? "Sending identity: yes — a draft, send or reply that names no mailbox composes from this address"
|
|
14
|
+
: "";
|
|
6
15
|
const credResult = await loadCredentials(accountId, config.email);
|
|
7
16
|
if ("error" in credResult) {
|
|
8
|
-
return `Email: ${config.email} — ${credResult.error}
|
|
17
|
+
return [`Email: ${config.email} — ${credResult.error}`, identityLine]
|
|
18
|
+
.filter(Boolean)
|
|
19
|
+
.join("\n");
|
|
9
20
|
}
|
|
10
21
|
const { password } = credResult.credentials;
|
|
11
22
|
// Test IMAP
|
|
@@ -56,6 +67,7 @@ async function probeOne(accountId, config) {
|
|
|
56
67
|
`IMAP: ${config.imapHost}:${config.imapPort} (${config.imapSecurity}) — ${imapStatus}`,
|
|
57
68
|
`SMTP: ${config.smtpHost}:${config.smtpPort} (${config.smtpSecurity}) — ${smtpStatus}`,
|
|
58
69
|
lastConnectLine,
|
|
70
|
+
identityLine,
|
|
59
71
|
inboxInfo,
|
|
60
72
|
]
|
|
61
73
|
.filter(Boolean)
|
|
@@ -112,7 +124,15 @@ export async function emailStatus(params) {
|
|
|
112
124
|
blocks.push(multi ? `Mailbox: ${config.email}\n${body}` : body);
|
|
113
125
|
}
|
|
114
126
|
const header = multi ? `${configs.length} mailboxes attached.\n\n` : "";
|
|
127
|
+
// Task 2194. Computed from `configs`, the whole account, and not from
|
|
128
|
+
// `targets` — a mailbox-narrowed report must not hide the account's gap.
|
|
129
|
+
// Only multi-mailbox accounts have a gap: resolveConfig returns the sole
|
|
130
|
+
// mailbox on a single-mailbox account without any designation.
|
|
131
|
+
const noneDesignated = multi && !configs.some((c) => c.sendingIdentity === true);
|
|
132
|
+
const identityGap = noneDesignated
|
|
133
|
+
? `\n\nNo mailbox is designated as this account's sending identity, so a draft, send or reply that names no mailbox is refused rather than resolved. Ask the operator which address this account sends from, then run email-sending-identity-set with it.`
|
|
134
|
+
: "";
|
|
115
135
|
logOutcome("ok");
|
|
116
|
-
return header + blocks.join("\n\n");
|
|
136
|
+
return header + blocks.join("\n\n") + identityGap;
|
|
117
137
|
}
|
|
118
138
|
//# sourceMappingURL=email-status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-status.js","sourceRoot":"","sources":["../../src/tools/email-status.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAAE,eAAe,EAAE,mBAAmB,EACjD,uBAAuB,EAAE,yBAAyB,GAEnD,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAOvC,mEAAmE;AACnE,KAAK,UAAU,QAAQ,CAAC,SAAiB,EAAE,MAAmB;IAC5D,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;QAC1B,OAAO,UAAU,MAAM,CAAC,KAAK,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"email-status.js","sourceRoot":"","sources":["../../src/tools/email-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,12 +54,18 @@ Every operational tool (`email-read`, `email-search`, `email-fetch-body`, `email
|
|
|
54
54
|
- `mailbox` given and configured: act on that mailbox.
|
|
55
55
|
- `mailbox` given but not configured: refused with `No mailbox <addr> is configured. Stored mailbox identities: [...]. Run email-setup for <addr>. This lists IMAP mailboxes only; if <addr> is a Microsoft 365 address, call outlook-mailbox-list.`
|
|
56
56
|
- `mailbox` omitted, exactly one mailbox configured: act on it (single-mailbox installs pass nothing).
|
|
57
|
-
- `mailbox` omitted, two or more configured
|
|
57
|
+
- `mailbox` omitted, two or more configured, one designated as the account's sending identity: act on the designated mailbox.
|
|
58
|
+
- `mailbox` omitted, two or more configured, none designated: refused with `Multiple mailboxes are configured and none is designated as this account's sending identity. Stored mailbox identities: [...]. Pass mailbox to choose one for this call, or run email-sending-identity-set to designate the address this account sends from, so calls that name no mailbox resolve it without guessing.`
|
|
59
|
+
- `mailbox` omitted, two or more designated: refused naming the designated addresses. The setter clears every sibling in one statement, so this state was written outside the plugin; electing one of them would be the silent pick the designation exists to remove.
|
|
58
60
|
|
|
59
61
|
Read the attached mailboxes with `email-status`, which lists every one, before naming a selector. To act on a message in a second inbox, pass that inbox's address as `mailbox` on the operating tool; there is no setup swap. The poll high-water mark (`lastFetchedUid`) and the pending `email-fetch` / `email-ingest` batch are per-mailbox, so triaging two inboxes never crosses their state.
|
|
60
62
|
|
|
61
63
|
`email-graph-query` is account-scoped (it reads stored archives, not a live mailbox) and takes no `mailbox` argument. Every credential load logs `[email] cred-resolve ... email=<addr> source=store`, naming the resolved mailbox, so a per-call selection is visible in the logs.
|
|
62
64
|
|
|
65
|
+
**Designating the sender: `email-sending-identity-set`.** An account holding two or more mailboxes has no default until one is designated. The setter takes one `mailbox`, resolves it through the same `resolveConfig` every operational tool uses (an address the account does not hold is refused naming the stored identities, and nothing is written), then designates it and removes the flag from every sibling in one statement — uniqueness is a property of the write, not of a check afterwards. It logs `[email-sending-identity-set] op=write accountId=<id8> mailbox=<addr> cleared=<n>`; `cleared=` is what makes that uniqueness claim auditable. Re-running `email-setup` on a designated mailbox preserves the designation, because `writeConfig` names the property in neither its `SET` nor its `REMOVE` list. The address must come from the operator: a routing rule, a signature or an inbound reconcile trigger each name an address for a different purpose, and reading one of those as the sending address is exactly the inference this tool exists to remove.
|
|
66
|
+
|
|
67
|
+
Every resolution that picks a mailbox logs `[email] op=identity-resolve accountId=<id8> mailbox=<addr> source=<explicit|sendingIdentity|sole>`, so a wrong-mailbox send is diagnosed from one line naming both the address and the route that chose it. Refusals log nothing here — they pick no mailbox, and each returns a typed error naming the stored identities. `email-status` is the standing check for the account that has never drafted: it marks the designated mailbox and states plainly when a multi-mailbox account has none.
|
|
68
|
+
|
|
63
69
|
## Reading and Searching
|
|
64
70
|
|
|
65
71
|
`email-read` and `email-search` return message metadata plus a short body preview (capped at 500 characters): UID, sender, subject, date, and the opening of the body. They are screening tools — use them to find a message, not to read it in full.
|
|
@@ -191,9 +197,11 @@ If neither the UID nor the Message-ID resolves a live draft, the prior draft is
|
|
|
191
197
|
- `email-signature.html` is the HTML signature block, appended to the message html.
|
|
192
198
|
- `email-signature.font` is an optional single-line CSS font-family; when present the html part is wrapped in one `font-family` div.
|
|
193
199
|
|
|
194
|
-
The plain-text signature is appended whenever it exists. The html signature
|
|
200
|
+
The plain-text signature is appended whenever it exists. The html signature is appended whenever it exists too: when the caller passed no html body, one is derived from the plain body — escaped, blank line to paragraph, single newline to line break — so the stored html signature has somewhere to land and the draft becomes `multipart/alternative`. The derivation reads the caller's body, not the text-signed one, so each MIME alternative carries exactly one sign-off. An account with no stored `.html` derives nothing and its drafts stay `text/plain`. The font wrap applies to whichever html body exists, derived or supplied, and has no plain-text analogue.
|
|
201
|
+
|
|
202
|
+
Each draft compose logs `[email-draft] op=signature accountId=<id8> text=<bool> html=<bool> derivedHtml=<bool> asset=<path>`, and each draft tool's own result names the parts that landed and the part the account has not stored. The result sentence is the proof: the log is unreachable from the tools a drafting agent holds. A part reported false means no file of that kind is stored, not that the append failed.
|
|
195
203
|
|
|
196
|
-
**Writing the files: `email-signature-set`.** Those three files are installed only by `email-signature-set`, which writes to the same directory the draft path reads, so a signature stored through it cannot land somewhere a draft would miss. Text and html are stored byte-for-byte; font is stored trimmed. **Omitting a parameter removes its file**, so a text-only call clears a stale `.html` rather than leaving it to keep being appended — pass every part that should survive on each call. Omitting is the only way to remove: an empty string is a value, so `text: ""` stores an empty signature and makes the draft
|
|
204
|
+
**Writing the files: `email-signature-set`.** Those three files are installed only by `email-signature-set`, which writes to the same directory the draft path reads, so a signature stored through it cannot land somewhere a draft would miss. Text and html are stored byte-for-byte; font is stored trimmed. **Omitting a parameter removes its file**, so a text-only call clears a stale `.html` rather than leaving it to keep being appended — pass every part that should survive on each call. Omitting is the only way to remove: an empty string is a value, so `text: ""` stores an empty signature and makes the draft report `plain text applied` while the recipient sees nothing. A call with no parameters at all is refused rather than treated as "erase everything", and an unresolvable account directory is refused before anything is touched. The write logs `[email-signature-set] op=write accountId=<id8> files=<written> removed=<removed>`. Until this tool shipped the loader had no writer at all, which is why accounts had no signature at all and agents hand-built them into draft bodies; see `skills/email-signature/SKILL.md` for the standing rules.
|
|
197
205
|
|
|
198
206
|
### Transient connection drops
|
|
199
207
|
|
|
@@ -131,6 +131,8 @@ Same as the reply flow with two differences:
|
|
|
131
131
|
|
|
132
132
|
Multi-recipient drafting: if the operator names a single person, use that address. If the operator names a group ("email the team", "everyone from yesterday's viewings"), ask which addresses to include — list candidates if you can resolve them from the graph, otherwise ask the operator to enumerate. Do not invent recipients.
|
|
133
133
|
|
|
134
|
+
**The sending mailbox is the account's, not yours to choose.** When the operator has not named a mailbox to send from, pass no `mailbox` and let the tool resolve the account's sending identity. Do not pick one, and do not write one into a brief for another agent. If the call is refused because the account has no designated sending identity, that refusal is the correct outcome: ask the operator which address they send from, then run `email-sending-identity-set` with their answer. An address that appears in a routing rule, a signature, a domain or an inbound trigger is named there for a different purpose and is not evidence of what the account sends from.
|
|
135
|
+
|
|
134
136
|
## Flow — save to Drafts instead of sending
|
|
135
137
|
|
|
136
138
|
When the operator's stated outcome is a reviewable, unsent email — signalled by intent like "draft it", "leave it in drafts", "don't send yet", "the same as last time but leave it in the draft box", "let me review before sending" — the approval step changes target: the approved draft goes to `email-draft`, not `email-send`/`email-reply`. Everything upstream (thread identification, voice conditioning, the present-and-edit loop) is identical.
|
|
@@ -183,6 +185,7 @@ Delete is move-to-Trash only. There is no permanent/hard delete, no delete-by-cr
|
|
|
183
185
|
| Situation | Behaviour |
|
|
184
186
|
|-----------|-----------|
|
|
185
187
|
| Multiple threads match the operator's description | Surface 3-5 candidates and ask. Never guess. |
|
|
188
|
+
| Account has two or more mailboxes and the operator named none | Pass no `mailbox`; the account's designated sending identity resolves it. If the call is refused because none is designated, ask the operator which address they send from and run `email-sending-identity-set`. Never infer the address. |
|
|
186
189
|
| CC / BCC in the original thread | Reply to sender only by default. Ask explicitly before copying others. |
|
|
187
190
|
| Recipient's contact record carries an always-CC or alternate address | Apply it to To/Cc in the draft and show it for approval. Explicit operator instruction on this send overrides it. |
|
|
188
191
|
| `replyAll` requested | Pass `replyAll: true` to `email-reply`. Otherwise omit (defaults false). |
|
|
@@ -10,9 +10,20 @@ Invoked from `specialists:personal-assistant`, or by the admin session directly.
|
|
|
10
10
|
## What success looks like
|
|
11
11
|
|
|
12
12
|
The operator's real signature is stored in the account, and every draft from then on carries it
|
|
13
|
-
byte-for-byte with no signature text the model wrote.
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
byte-for-byte with no signature text the model wrote.
|
|
14
|
+
|
|
15
|
+
**The proof is the draft tool's own result.** `email-draft` and `email-draft-edit` each end with one
|
|
16
|
+
of four sentences, naming what that draft actually carried:
|
|
17
|
+
|
|
18
|
+
- `Signature: plain text and HTML (body derived from the plain text) applied.`
|
|
19
|
+
- `Signature: plain text and HTML applied.`
|
|
20
|
+
- `Signature: plain text applied. No HTML signature is stored.`
|
|
21
|
+
- `Signature: none stored for this account.`
|
|
22
|
+
|
|
23
|
+
`email-draft` also logs `[email-draft] op=signature text=<bool> html=<bool> derivedHtml=<bool>
|
|
24
|
+
asset=<path>`, which says the same thing from the other side. It is corroboration, not the proof: that
|
|
25
|
+
log is unreachable from the tools a drafting agent holds. A claim that the signature is set, without
|
|
26
|
+
the result sentence, is not evidence.
|
|
16
27
|
|
|
17
28
|
## The convention
|
|
18
29
|
|
|
@@ -22,7 +33,7 @@ judgement in the path. It reads three files at the account root:
|
|
|
22
33
|
| File | Content | How it is applied |
|
|
23
34
|
|---|---|---|
|
|
24
35
|
| `email-signature.txt` | Plain-text signature | Appended to the plain-text body after a blank line, byte-for-byte |
|
|
25
|
-
| `email-signature.html` | HTML signature | Appended to the HTML body, byte-for-byte |
|
|
36
|
+
| `email-signature.html` | HTML signature | Appended to the HTML body, byte-for-byte. A draft composed with no HTML body gets one derived from its plain text, so a stored HTML signature always lands |
|
|
26
37
|
| `email-signature.font` | One CSS font-family value, e.g. `Georgia, serif` | Wraps the whole HTML body in a `font-family` div. HTML-only, no plain-text effect |
|
|
27
38
|
|
|
28
39
|
`email-signature-set` is the only sanctioned way to write them. It writes to the exact directory the
|
|
@@ -46,9 +57,9 @@ that should survive; a part left out has its file deleted, which is how a stale
|
|
|
46
57
|
cleared. A call with no parts at all is refused rather than treated as "erase everything".
|
|
47
58
|
|
|
48
59
|
**Omitting a key is the only way to remove a part.** An empty string is a value, so `text: ""` stores an
|
|
49
|
-
empty signature rather than clearing it: the file exists, the draft
|
|
60
|
+
empty signature rather than clearing it: the file exists, the draft reports `plain text applied`, and the
|
|
50
61
|
recipient sees a blank line where the sign-off should be. That is the one way to manufacture a false
|
|
51
|
-
`applied
|
|
62
|
+
`applied`, so never pass `""` to clear something — leave the key out.
|
|
52
63
|
|
|
53
64
|
**One signature per account.** There is no per-mailbox signature: the loader reads one account root.
|
|
54
65
|
An account whose mailboxes need different sign-offs is a gap to report, not something to work around
|
|
@@ -56,6 +67,13 @@ by putting the difference in a draft body.
|
|
|
56
67
|
|
|
57
68
|
## When a draft came out wrong
|
|
58
69
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
70
|
+
Read the draft's own result sentence. Each half names a stored file, not a failure:
|
|
71
|
+
|
|
72
|
+
- **`No plain text signature is stored`** — the account has no `email-signature.txt`.
|
|
73
|
+
- **`No HTML signature is stored`** — the account has no `email-signature.html`. This is why a draft
|
|
74
|
+
arrives without the logo or letterhead while still carrying the sign-off.
|
|
75
|
+
- **`Signature: none stored for this account`** — neither file is there.
|
|
76
|
+
|
|
77
|
+
In every case the fix is to install the missing part with `email-signature-set`, never to compensate
|
|
78
|
+
in the draft body. If a part is reported applied but its content is wrong, the stored file is wrong:
|
|
79
|
+
re-read the source of truth and set it again.
|
|
@@ -8,7 +8,7 @@ Unpacked-extension dev build. No Chrome Web Store publication.
|
|
|
8
8
|
2. Enable **Developer mode** (top right).
|
|
9
9
|
3. **Load unpacked** → select this `extension/` directory.
|
|
10
10
|
4. Click the new puzzle icon → open **SiteDesk LinkedIn Ingest** options.
|
|
11
|
-
5. Paste your admin host (e.g. `https://your-tunnel.example.com`) and your
|
|
11
|
+
5. Paste your admin host (e.g. `https://your-tunnel.example.com`) and your **ingest token**. Ask your SiteDesk agent for the ingest token; it mints one on request and gives it to you in the chat. The token is stable, so this is a one-time paste unless someone rotates it. Save.
|
|
12
12
|
6. Chrome asks you to allow the extension to talk to that host. **Allow it.** The pill cannot post without it, so declining saves nothing.
|
|
13
13
|
|
|
14
14
|
## Use
|
|
@@ -21,7 +21,7 @@ The pill tells you which thing is wrong:
|
|
|
21
21
|
|
|
22
22
|
| Pill | Meaning | Fix |
|
|
23
23
|
|---|---|---|
|
|
24
|
-
| **
|
|
24
|
+
| **Paste SiteDesk token** (amber) | the ingest token is missing or was refused | ask the agent for the ingest token, paste it in options |
|
|
25
25
|
| **Grant access** (amber) | the admin host was never allowed, so the post never left the browser | open options, Save, allow the prompt |
|
|
26
26
|
| **SiteDesk unreachable** (red) | the host was allowed but did not answer | check the tunnel and the admin server |
|
|
27
27
|
| **Capture failed** (red) | the admin rejected the payload, or the extension's own service worker did not answer | read the service-worker console: `reason=extract` is a rejected payload, `reason=worker-unreachable` is the worker |
|
|
@@ -35,7 +35,7 @@ The pill tells you which thing is wrong:
|
|
|
35
35
|
| `content/profile.js` | Profile pill + click handler. |
|
|
36
36
|
| `content/thread.js` | Thread pill + click handler. |
|
|
37
37
|
| `background/sw.js` | Service worker. Checks the admin-host grant, then POSTs envelopes to the admin route. |
|
|
38
|
-
| `options/options.html` + `options/options.js` | Admin host +
|
|
38
|
+
| `options/options.html` + `options/options.js` | Admin host + ingest-token entry. |
|
|
39
39
|
| `assets/pill.css` | Pill styling. |
|
|
40
40
|
| `__tests__/` | jsdom unit tests for the extractors, run via vitest from `platform/ui`. |
|
|
41
41
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Service worker. Receives envelopes from content scripts, POSTs them
|
|
2
|
-
// to the admin host with the
|
|
2
|
+
// to the admin host with the ingest token stored in extension options.
|
|
3
3
|
//
|
|
4
4
|
// Task 2185 — the manifest's static host_permissions cover linkedin.com only,
|
|
5
5
|
// so the admin host has to be granted at runtime from the options page before
|
|
@@ -14,11 +14,16 @@
|
|
|
14
14
|
|
|
15
15
|
const TAG = '[linkedin-ext-post]'
|
|
16
16
|
|
|
17
|
+
// Task 2208 — the credential is the account's durable ingest token, minted by
|
|
18
|
+
// the linkedin-ingest-token admin tool and pasted in on the options page. The
|
|
19
|
+
// admin browser's session_key it replaced could neither be obtained as
|
|
20
|
+
// documented nor stay valid: in-memory, 24h TTL, wiped by restart, rotated on
|
|
21
|
+
// every new chat session.
|
|
17
22
|
async function getConfig() {
|
|
18
|
-
const stored = await chrome.storage.local.get(['adminHost', '
|
|
23
|
+
const stored = await chrome.storage.local.get(['adminHost', 'ingestToken'])
|
|
19
24
|
return {
|
|
20
25
|
adminHost: typeof stored.adminHost === 'string' ? stored.adminHost.replace(/\/+$/, '') : '',
|
|
21
|
-
|
|
26
|
+
ingestToken: typeof stored.ingestToken === 'string' ? stored.ingestToken : '',
|
|
22
27
|
}
|
|
23
28
|
}
|
|
24
29
|
|
|
@@ -28,9 +33,9 @@ function originPattern(adminHost) {
|
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
async function postEnvelope(envelope) {
|
|
31
|
-
const { adminHost,
|
|
36
|
+
const { adminHost, ingestToken } = await getConfig()
|
|
32
37
|
if (!adminHost) return { ok: false, reason: 'auth', detail: 'admin-host-missing' }
|
|
33
|
-
if (!
|
|
38
|
+
if (!ingestToken) return { ok: false, reason: 'auth', detail: 'ingest-token-missing' }
|
|
34
39
|
|
|
35
40
|
let origin
|
|
36
41
|
try {
|
|
@@ -53,7 +58,7 @@ async function postEnvelope(envelope) {
|
|
|
53
58
|
res = await fetch(url, {
|
|
54
59
|
method: 'POST',
|
|
55
60
|
headers: { 'content-type': 'application/json' },
|
|
56
|
-
body: JSON.stringify({ ...envelope,
|
|
61
|
+
body: JSON.stringify({ ...envelope, ingest_token: ingestToken }),
|
|
57
62
|
})
|
|
58
63
|
} catch (err) {
|
|
59
64
|
console.error(
|
|
@@ -66,7 +71,7 @@ async function postEnvelope(envelope) {
|
|
|
66
71
|
const ms = Date.now() - started
|
|
67
72
|
console.log(TAG + ' op=fetch dispatchId=' + envelope.dispatchId + ' status=' + res.status + ' ms=' + ms)
|
|
68
73
|
|
|
69
|
-
if (res.status === 401) return { ok: false, reason: 'auth', detail: '
|
|
74
|
+
if (res.status === 401) return { ok: false, reason: 'auth', detail: 'token-rejected' }
|
|
70
75
|
if (res.status >= 500) return { ok: false, reason: 'server', detail: 'http-' + res.status }
|
|
71
76
|
if (!res.ok) {
|
|
72
77
|
let body = ''
|
|
@@ -51,8 +51,11 @@
|
|
|
51
51
|
const reason = (reply && reply.reason) || 'worker-unreachable'
|
|
52
52
|
const detail = (reply && reply.detail) || ''
|
|
53
53
|
console.error(TAG_ERROR + ' reason=' + reason + ' detail=' + detail)
|
|
54
|
+
// Task 2208 — the ingest token is missing or was refused. There is no
|
|
55
|
+
// sign-in to perform: the operator asks the SiteDesk agent for the token and
|
|
56
|
+
// pastes it on the options page.
|
|
54
57
|
if (reason === 'auth') {
|
|
55
|
-
setState(pill, 'auth', '
|
|
58
|
+
setState(pill, 'auth', 'Paste SiteDesk token')
|
|
56
59
|
pill.onclick = function () { chrome.runtime.openOptionsPage() }
|
|
57
60
|
return
|
|
58
61
|
}
|
|
@@ -53,8 +53,11 @@
|
|
|
53
53
|
const reason = (reply && reply.reason) || 'worker-unreachable'
|
|
54
54
|
const detail = (reply && reply.detail) || ''
|
|
55
55
|
console.error(TAG_ERROR + ' reason=' + reason + ' detail=' + detail)
|
|
56
|
+
// Task 2208 — the ingest token is missing or was refused. There is no
|
|
57
|
+
// sign-in to perform: the operator asks the SiteDesk agent for the token and
|
|
58
|
+
// pastes it on the options page.
|
|
56
59
|
if (reason === 'auth') {
|
|
57
|
-
setState(pill, 'auth', '
|
|
60
|
+
setState(pill, 'auth', 'Paste SiteDesk token')
|
|
58
61
|
pill.onclick = function () { chrome.runtime.openOptionsPage() }
|
|
59
62
|
return
|
|
60
63
|
}
|