@rubytech/create-sitedesk-code 0.1.522 → 0.1.524
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/agent-dispatch-rule/dist/index.d.ts +99 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.js +228 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -0
- package/payload/platform/lib/agent-dispatch-rule/package.json +6 -0
- package/payload/platform/lib/agent-dispatch-rule/src/__tests__/rule.test.ts +384 -0
- package/payload/platform/lib/agent-dispatch-rule/src/index.ts +269 -0
- package/payload/platform/lib/agent-dispatch-rule/tsconfig.json +9 -0
- package/payload/platform/lib/agent-dispatch-rule/vitest.config.ts +9 -0
- package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/graph-style/dist/index.js +28 -0
- package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-style/src/__tests__/caption-coverage.test.ts +7 -0
- package/payload/platform/lib/graph-style/src/index.ts +24 -0
- package/payload/platform/lib/graph-write/dist/__tests__/merge-on.test.d.ts.map +1 -0
- package/payload/platform/lib/graph-write/dist/__tests__/merge-on.test.js.map +1 -0
- package/payload/platform/lib/graph-write/dist/index.d.ts +16 -0
- package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/graph-write/dist/index.js +83 -6
- package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-write/src/index.ts +117 -10
- package/payload/platform/lib/routine-templates/dist/index.d.ts +151 -0
- package/payload/platform/lib/routine-templates/dist/index.d.ts.map +1 -0
- package/payload/platform/lib/routine-templates/dist/index.js +207 -0
- package/payload/platform/lib/routine-templates/dist/index.js.map +1 -0
- package/payload/platform/lib/routine-templates/dist/roster.d.ts +57 -0
- package/payload/platform/lib/routine-templates/dist/roster.d.ts.map +1 -0
- package/payload/platform/lib/routine-templates/dist/roster.js +182 -0
- package/payload/platform/lib/routine-templates/dist/roster.js.map +1 -0
- package/payload/platform/lib/routine-templates/dist/seed-cli.d.ts +2 -0
- package/payload/platform/lib/routine-templates/dist/seed-cli.d.ts.map +1 -0
- package/payload/platform/lib/routine-templates/dist/seed-cli.js +64 -0
- package/payload/platform/lib/routine-templates/dist/seed-cli.js.map +1 -0
- package/payload/platform/lib/routine-templates/package.json +6 -0
- package/payload/platform/lib/routine-templates/src/__tests__/roster.test.ts +170 -0
- package/payload/platform/lib/routine-templates/src/__tests__/seed.test.ts +298 -0
- package/payload/platform/lib/routine-templates/src/index.ts +299 -0
- package/payload/platform/lib/routine-templates/src/roster.ts +206 -0
- package/payload/platform/lib/routine-templates/src/seed-cli.ts +65 -0
- package/payload/platform/lib/routine-templates/tsconfig.json +9 -0
- package/payload/platform/lib/routine-templates/vitest.config.ts +9 -0
- package/payload/platform/neo4j/edge-annotations.json +2 -2
- package/payload/platform/neo4j/schema.cypher +25 -1
- package/payload/platform/package.json +3 -2
- package/payload/platform/plugins/admin/PLUGIN.md +3 -2
- package/payload/platform/plugins/admin/hooks/__tests__/mailbox-inject.test.sh +501 -0
- package/payload/platform/plugins/admin/hooks/mailbox-inject.sh +299 -0
- package/payload/platform/plugins/admin/mcp/dist/index.js +39 -1
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +317 -68
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +301 -64
- package/payload/platform/plugins/docs/references/memory-guide.md +11 -1
- package/payload/platform/plugins/docs/references/workflows.md +4 -2
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js +72 -1
- 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 +4 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +4 -2
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +0 -6
- 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 +24 -2
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -1
- package/payload/platform/plugins/email/references/email-reference.md +1 -1
- package/payload/platform/plugins/graph/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/graph/PLUGIN.md +1 -1
- package/payload/platform/plugins/memory/PLUGIN.md +1 -1
- package/payload/platform/plugins/memory/mcp/dist/index.js +12 -5
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.js +197 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-estate-census.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js +55 -9
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +96 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts +7 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.d.ts +29 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.js +126 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-estate-census.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/scripts/dream-cycle-sweep.js +7 -4
- package/payload/platform/plugins/memory/mcp/dist/scripts/dream-cycle-sweep.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js +18 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts +7 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +4 -3
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -0
- package/payload/platform/plugins/memory/references/schema-estate-agent.md +2 -2
- package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +4 -4
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts +2 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js +322 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js +21 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts +13 -0
- package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js +16 -0
- package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/index.js +5 -5
- package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +6 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts +7 -0
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js +122 -8
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js.map +1 -1
- package/payload/platform/plugins/quickbooks/PLUGIN.md +10 -10
- package/payload/platform/plugins/scheduling/PLUGIN.md +69 -2
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +54 -4
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js +8 -36
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.js +78 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/notes-cap.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js +457 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +10 -65
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +29 -122
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.d.ts +35 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.js +39 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/notes-cap.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts +175 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js +533 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +123 -9
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js +189 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.js +95 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/suspension-census.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.js +114 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/sweep-excludes-suspended.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +109 -2
- 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 +340 -9
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +9 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +210 -45
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +43 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.js +55 -7
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.js +45 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.js +96 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-runs.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js +305 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js +2 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +5 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +13 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +4 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +24 -3
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.d.ts +33 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.js +51 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-runs.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +46 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +184 -6
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
- package/payload/platform/plugins/scheduling/skills/routine-control/SKILL.md +48 -0
- package/payload/platform/plugins/sweep/skills/email-graph-sweep/SKILL.md +21 -7
- package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +30 -2
- package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +1 -1
- package/payload/platform/scripts/__tests__/mailbox-inject-registered.test.sh +80 -0
- package/payload/platform/scripts/check-specialist-tool-surface.mjs +92 -16
- package/payload/platform/scripts/lib/__tests__/account-settings-mailbox-inject.test.sh +166 -0
- package/payload/platform/scripts/lib/account-settings-mailbox-inject.sh +91 -0
- package/payload/platform/scripts/lib/provision-account-dir.sh +1 -0
- package/payload/platform/scripts/seed-neo4j.sh +41 -0
- package/payload/platform/scripts/setup-account.sh +15 -0
- package/payload/platform/scripts/verify-skill-tool-surface.sh +91 -2
- 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 +1 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/templates/specialists/agents/librarian.md +1 -1
- package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
- package/payload/server/{chunk-K7CJGZPU.js → chunk-VUXKXOJU.js} +342 -152
- package/payload/server/{chunk-UX2FRNO7.js → chunk-WT2PFGY4.js} +37 -265
- package/payload/server/{chunk-PXNY2TAP.js → chunk-XCR5D2G3.js} +239 -10
- package/payload/server/{manager-RKL7JZ4Y.js → manager-4TJK3YOY.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-zc2_qqh-.js → AdminLoginScreens-BgDjueVe.js} +1 -1
- package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-YctTrR-D.js +2 -0
- package/payload/server/public/assets/AdminShell-YctTrR-D.js.br +0 -0
- package/payload/server/public/assets/AdminShell-YctTrR-D.js.gz +0 -0
- package/payload/server/public/assets/{activity-DVgO8YuM.js → activity-DGQt5ys_.js} +1 -1
- package/payload/server/public/assets/activity-DGQt5ys_.js.br +0 -0
- package/payload/server/public/assets/activity-DGQt5ys_.js.gz +0 -0
- package/payload/server/public/assets/admin-DnUxbB3P.js +1 -0
- package/payload/server/public/assets/admin-DnUxbB3P.js.br +0 -0
- package/payload/server/public/assets/admin-DnUxbB3P.js.gz +0 -0
- package/payload/server/public/assets/agents-Bc2LZjwC.js +1 -0
- package/payload/server/public/assets/agents-Bc2LZjwC.js.br +0 -0
- package/payload/server/public/assets/agents-Bc2LZjwC.js.gz +0 -0
- package/payload/server/public/assets/{arc-DaI5MLTq.js → arc-DaudCnXg.js} +1 -1
- 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 +1 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js.br +0 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-CBGVUEN9.js → architectureDiagram-Q4EWVU46-BEEC3s7i.js} +1 -1
- 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-DS6dS4GZ.js → blockDiagram-DXYQGD6D-BIWyfb18.js} +1 -1
- 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-Mw7DY3ft.js → browser-BtF7SzvG.js} +1 -1
- package/payload/server/public/assets/browser-BtF7SzvG.js.br +0 -0
- package/payload/server/public/assets/browser-BtF7SzvG.js.gz +0 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js → c4Diagram-AHTNJAMY--h6oE2cv.js} +1 -1
- package/payload/server/public/assets/c4Diagram-AHTNJAMY--h6oE2cv.js.br +0 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js.gz → c4Diagram-AHTNJAMY--h6oE2cv.js.gz} +0 -0
- package/payload/server/public/assets/{calendar-B9gvL_1_.js → calendar-D25EhXbD.js} +1 -1
- package/payload/server/public/assets/calendar-D25EhXbD.js.br +0 -0
- package/payload/server/public/assets/calendar-D25EhXbD.js.gz +0 -0
- package/payload/server/public/assets/channel-TwxCDSpK.js +1 -0
- package/payload/server/public/assets/channel-TwxCDSpK.js.br +0 -0
- package/payload/server/public/assets/chat-z4jsHFXg.js +1 -0
- package/payload/server/public/assets/chat-z4jsHFXg.js.br +0 -0
- package/payload/server/public/assets/chat-z4jsHFXg.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-BD09SN6R.js +1 -0
- package/payload/server/public/assets/chevron-right-ChmWeo7T.js +1 -0
- package/payload/server/public/assets/chevron-right-ChmWeo7T.js.br +0 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-B6koUoB7.js → chunk-2KRD3SAO-BwEVlnxo.js} +1 -1
- 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-BF6BRh8u.js → chunk-336JU56O-DQddTATH.js} +2 -2
- 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 +1 -0
- 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-7sO95xR2.js → chunk-4BX2VUAB-C5p3xTC6.js} +1 -1
- 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-GCTndJYx.js → chunk-4TB4RGXK-gClfNc1w.js} +1 -1
- 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-ggIJf_TC.js → chunk-55IACEB6-DDU_m1ra.js} +1 -1
- 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-DeGmkimt.js → chunk-5FUZZQ4R-CZ2jQWNR.js} +1 -1
- 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-aFIQKk_U.js → chunk-5PVQY5BW-kcZ5kfTg.js} +1 -1
- 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-LS8rUbii.js → chunk-67CJDMHE-9W0Qv0jm.js} +1 -1
- 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-JKOVngS0.js → chunk-7N4EOEYR-B3gqydR3.js} +1 -1
- 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-CoXnTVK6.js → chunk-AA7GKIK3-DW8a-2NK.js} +1 -1
- package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.br +4 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.gz +0 -0
- package/payload/server/public/assets/{chunk-BSJP7CBP-CcsqObFg.js → chunk-BSJP7CBP-DqXIO_5R.js} +1 -1
- 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-CpsybR7q.js → chunk-CIAEETIT-BMJfgj2u.js} +1 -1
- 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-BZ2I9PSq.js → chunk-EDXVE4YY-BxdLPk0b.js} +1 -1
- 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-DbTwt6OZ.js → chunk-ENJZ2VHE-Cfe2DCjQ.js} +1 -1
- 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-D27VnSCa.js → chunk-FMBD7UC4-CdPjwbtf.js} +1 -1
- 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-C0tU2UFl.js → chunk-FOC6F5B3-Dl6l1KAh.js} +1 -1
- 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-UPPu2OIq.js → chunk-ICPOFSXX-PnsGrqtx.js} +2 -2
- 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-DIKxqyYw.js → chunk-K5T4RW27--g29_wjW.js} +1 -1
- 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-CiL4YVLo.js → chunk-KGLVRYIC-CI77ENeO.js} +1 -1
- package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.br +3 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.gz +0 -0
- package/payload/server/public/assets/{chunk-LIHQZDEY-ejKezVlD.js → chunk-LIHQZDEY-CE-XByg6.js} +1 -1
- 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-Cc0vqc-D.js → chunk-ORNJ4GCN-DkjJQQSm.js} +1 -1
- 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-Drxn1qG0.js → chunk-OYMX7WX6-DhogFeD7.js} +1 -1
- 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 +1 -0
- 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-DnbQIkRP.js → chunk-U2HBQHQK-CeaRXuiO.js} +1 -1
- 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-CauTSVWg.js → chunk-X2U36JSP-BqxXeOqf.js} +1 -1
- 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-DZqqB9Zi.js → chunk-XPW4576I-DtqJwn2x.js} +1 -1
- 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-BGHo4Li-.js → chunk-YZCP3GAM-COBlEwQw.js} +1 -1
- 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-DWGJKPd7.js → chunk-ZZ45TVLE-CcL088y6.js} +1 -1
- 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 +1 -0
- 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 +1 -0
- 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-Yqf7Ke7I.js +1 -0
- package/payload/server/public/assets/clock-Yqf7Ke7I.js.br +0 -0
- package/payload/server/public/assets/clock-Yqf7Ke7I.js.gz +0 -0
- package/payload/server/public/assets/clone-B3vq32j7.js +1 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-D-95BzXL.js → cose-bilkent-S5V4N54A-kEHVkDNn.js} +1 -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-BZYNBHvT.js → dagre-D2wUw1zC.js} +1 -1
- 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-DyU4HQLQ.js → dagre-KV5264BT-BWfTDwEs.js} +1 -1
- 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-RmnKj5nC.js +1 -0
- package/payload/server/public/assets/data-RmnKj5nC.js.br +2 -0
- package/payload/server/public/assets/data-RmnKj5nC.js.gz +0 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-CCttJ9XA.js → diagram-5BDNPKRD-Tl9dS8w0.js} +1 -1
- 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-DvkpgSLO.js → diagram-G4DWMVQ6-CeSe6TMu.js} +1 -1
- 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-DHmW5Y9k.js → diagram-MMDJMWI5-DYBNJCmk.js} +1 -1
- 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-C6T4hwzO.js → diagram-TYMM5635-BmpUGltx.js} +1 -1
- 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-5v_o7s3T.js → erDiagram-SMLLAGMA-DuwuNGqx.js} +1 -1
- 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-CiGklOfA.js +1 -0
- package/payload/server/public/assets/file-download-CiGklOfA.js.br +0 -0
- package/payload/server/public/assets/file-download-CiGklOfA.js.gz +0 -0
- package/payload/server/public/assets/{file-text-dYBnXNEX.js → file-text-XjJPULAZ.js} +1 -1
- package/payload/server/public/assets/file-text-XjJPULAZ.js.br +0 -0
- package/payload/server/public/assets/file-text-XjJPULAZ.js.gz +0 -0
- package/payload/server/public/assets/{flatten-BtIc9jX7.js → flatten-Bu-b1uTY.js} +1 -1
- 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-3UhCDsjt.js → flowDiagram-DWJPFMVM-Bpp8P6Ba.js} +1 -1
- 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-F2zgHIIQ.js → ganttDiagram-T4ZO3ILL-CE6ppjB4.js} +1 -1
- 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 +1 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js.br +0 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-oQc1N3dT.js → gitGraphDiagram-UUTBAWPF-BdK1GjPr.js} +1 -1
- 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-CDyzd1Et.js → graph-BjHJ0z_6.js} +3 -3
- package/payload/server/public/assets/graph-BjHJ0z_6.js.br +0 -0
- package/payload/server/public/assets/graph-BjHJ0z_6.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-D-0u37KA.js +1 -0
- package/payload/server/public/assets/graph-labels-D-0u37KA.js.br +0 -0
- package/payload/server/public/assets/graph-labels-D-0u37KA.js.gz +0 -0
- package/payload/server/public/assets/{graphlib-DY4-AT2Q.js → graphlib-CHEXylyU.js} +1 -1
- 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 +1 -0
- package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js +2 -0
- 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-Bu4fZ8Kf.js → isEmpty-CjH0UASp.js} +1 -1
- 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-wJhSOkuw.js → ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js} +1 -1
- 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-DgadC6Pz.js → journeyDiagram-VCZTEJTY-ByUPv8q6.js} +1 -1
- 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-Bs4nQqXI.js → kanban-definition-6JOO6SKY-CFinqhpu.js} +1 -1
- 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-Bnmxy1hO.js → line-Y4ns5Ghi.js} +1 -1
- 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-RvwZxFzh.js → linear-l39GooQ5.js} +1 -1
- 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-M-iSaznd.js → maximize-2-BJ9S-nfS.js} +1 -1
- package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.br +0 -0
- package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.gz +0 -0
- package/payload/server/public/assets/{mermaid-parser.core-DeNV8RtA.js → mermaid-parser.core-5w0T1dRj.js} +2 -2
- 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-BU9IiSCP.js → mermaid.core-DBADY5VW.js} +3 -3
- 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-D1PMUxxm.js → mindmap-definition-QFDTVHPH-rHz37loq.js} +1 -1
- 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-Cay4rOOK.js +1 -0
- package/payload/server/public/assets/operator-Cay4rOOK.js.br +0 -0
- package/payload/server/public/assets/operator-Cay4rOOK.js.gz +0 -0
- package/payload/server/public/assets/{ordinal-C2TEWKNu.js → ordinal-D6D6WcTC.js} +1 -1
- 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 +1 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js.br +0 -0
- package/payload/server/public/assets/{page-CZ-73FAk.js → page-Cci_j_y7.js} +4 -4
- package/payload/server/public/assets/page-Cci_j_y7.js.br +0 -0
- package/payload/server/public/assets/page-Cci_j_y7.js.gz +0 -0
- package/payload/server/public/assets/page-shuh4ES9.js +1 -0
- package/payload/server/public/assets/page-shuh4ES9.js.br +0 -0
- package/payload/server/public/assets/page-shuh4ES9.js.gz +0 -0
- package/payload/server/public/assets/{pdf-render-C257cidb.js → pdf-render-BSgBp8Fr.js} +1 -1
- 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 +1 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js.br +0 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-BzdNzoKA.js → pieDiagram-DEJITSTG-as0e_DSH.js} +1 -1
- 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-CN-ltC8x.js → public-BbJcQGsO.js} +1 -1
- package/payload/server/public/assets/public-BbJcQGsO.js.br +0 -0
- package/payload/server/public/assets/public-BbJcQGsO.js.gz +0 -0
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-oFr1MJRO.js → quadrantDiagram-34T5L4WZ-B4t8HO9J.js} +1 -1
- 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 +1 -0
- package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js.br +0 -0
- package/payload/server/public/assets/{reduce-BGpN5lgn.js → reduce-BtXXK8Ma.js} +1 -1
- 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-C9QBQxDh.js → requirementDiagram-MS252O5E-yxh30zHX.js} +1 -1
- 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-Buopsc22.js → rotate-ccw-jeSVwUAv.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.gz +0 -0
- package/payload/server/public/assets/routines-D3M1Wh3a.js +1 -0
- package/payload/server/public/assets/routines-D3M1Wh3a.js.br +0 -0
- package/payload/server/public/assets/routines-D3M1Wh3a.js.gz +0 -0
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-c_y3bvVv.js → sankeyDiagram-XADWPNL6-j-k9Wfty.js} +1 -1
- 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-YwlCBPHE.js → sequenceDiagram-FGHM5R23-DGLgcLhC.js} +1 -1
- 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-DiiuVzDK.js → skills-Bhej2ub1.js} +1 -1
- package/payload/server/public/assets/skills-Bhej2ub1.js.br +0 -0
- package/payload/server/public/assets/skills-Bhej2ub1.js.gz +0 -0
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BFE3e-FM.js → stateDiagram-FHFEXIEX-C9p1OUMI.js} +1 -1
- 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 +1 -0
- 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-qY-dtOI2.js +1 -0
- package/payload/server/public/assets/tasks-qY-dtOI2.js.br +0 -0
- package/payload/server/public/assets/tasks-qY-dtOI2.js.gz +0 -0
- package/payload/server/public/assets/{time-entry-format-BBokCF-D.js → time-entry-format-r5UY9rjG.js} +1 -1
- package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.gz +0 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-azqhmRwZ.js → timeline-definition-GMOUNBTQ-B1g7pgkH.js} +1 -1
- 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 +1 -0
- package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js.br +0 -0
- package/payload/server/public/assets/{triangle-alert-C_AcpTW5.js → triangle-alert--PCKaewD.js} +1 -1
- package/payload/server/public/assets/triangle-alert--PCKaewD.js.br +2 -0
- package/payload/server/public/assets/triangle-alert--PCKaewD.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-TdimmPVR.js → useCopyFeedback-Dg5lNgqH.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css +1 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-CnpeWIYq.js +14 -0
- package/payload/server/public/assets/useSubAccountSwitcher-CnpeWIYq.js.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-CnpeWIYq.js.gz +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-BT2738ZS.js → useVoiceRecorder-BY6ZsGMH.js} +2 -2
- package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.gz +0 -0
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-Da2RfFs8.js → vennDiagram-DHZGUBPP-D2ZjFfh4.js} +1 -1
- 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 +1 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js.br +0 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-HdrdBYES.js → wardleyDiagram-NUSXRM2D-BFAhfkD8.js} +1 -1
- 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-B51s5kGA.js → wrench-Bw1FMolk.js} +1 -1
- package/payload/server/public/assets/wrench-Bw1FMolk.js.br +0 -0
- package/payload/server/public/assets/wrench-Bw1FMolk.js.gz +0 -0
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DMk6rTcQ.js → xychartDiagram-5P7HB3ND-Dt94h2RQ.js} +1 -1
- 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/brand-defaults.css +1 -0
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +7 -7
- package/payload/server/public/chat.html +14 -14
- package/payload/server/public/data.html +13 -12
- package/payload/server/public/graph.html +9 -9
- package/payload/server/public/index.html +16 -15
- package/payload/server/public/operator.html +15 -15
- package/payload/server/public/public.html +14 -14
- package/payload/server/public/routines.html +7 -6
- package/payload/server/public/skills.html +5 -5
- package/payload/server/public/tasks.html +6 -6
- package/payload/server/server.js +6623 -5763
- package/payload/server/public/assets/AdminLoginScreens-zc2_qqh-.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-zc2_qqh-.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-IGUdTx5q.js +0 -2
- package/payload/server/public/assets/AdminShell-IGUdTx5q.js.br +0 -0
- package/payload/server/public/assets/AdminShell-IGUdTx5q.js.gz +0 -0
- package/payload/server/public/assets/activity-DVgO8YuM.js.br +0 -0
- package/payload/server/public/assets/activity-DVgO8YuM.js.gz +0 -0
- package/payload/server/public/assets/admin-xtpM7fgl.js +0 -1
- package/payload/server/public/assets/admin-xtpM7fgl.js.br +0 -0
- package/payload/server/public/assets/admin-xtpM7fgl.js.gz +0 -0
- package/payload/server/public/assets/agents-P0nTIxo-.js +0 -1
- package/payload/server/public/assets/agents-P0nTIxo-.js.br +0 -0
- package/payload/server/public/assets/agents-P0nTIxo-.js.gz +0 -0
- package/payload/server/public/assets/arc-DaI5MLTq.js.br +0 -0
- package/payload/server/public/assets/arc-DaI5MLTq.js.gz +0 -0
- package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.br +0 -0
- package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.gz +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.br +0 -0
- package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.gz +0 -0
- package/payload/server/public/assets/browser-Mw7DY3ft.js.br +0 -0
- package/payload/server/public/assets/browser-Mw7DY3ft.js.gz +0 -0
- package/payload/server/public/assets/c4Diagram-AHTNJAMY-hBSBUZPt.js.br +0 -0
- package/payload/server/public/assets/calendar-B9gvL_1_.js.br +0 -0
- package/payload/server/public/assets/calendar-B9gvL_1_.js.gz +0 -0
- package/payload/server/public/assets/channel-BEokjAeE.js +0 -1
- package/payload/server/public/assets/channel-BEokjAeE.js.br +0 -0
- package/payload/server/public/assets/chat-DBGqh4wg.js +0 -1
- package/payload/server/public/assets/chat-DBGqh4wg.js.br +0 -2
- package/payload/server/public/assets/chat-DBGqh4wg.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-Bl4vpOM0.js +0 -1
- package/payload/server/public/assets/chevron-left-Bl4vpOM0.js.br +0 -0
- package/payload/server/public/assets/chevron-right-BExigCnp.js +0 -1
- package/payload/server/public/assets/chevron-right-BExigCnp.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.br +0 -0
- package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.gz +0 -0
- package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.br +0 -0
- package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.gz +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js +0 -1
- package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.br +0 -0
- package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.gz +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.br +0 -0
- package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.gz +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.br +0 -0
- package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.gz +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.br +0 -0
- package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.gz +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.br +0 -0
- package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.gz +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.br +0 -0
- package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.gz +0 -0
- package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.br +0 -2
- package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.gz +0 -0
- package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.br +0 -2
- package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.gz +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.br +0 -0
- package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.gz +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.br +0 -0
- package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.gz +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.br +0 -0
- package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.gz +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.br +0 -0
- package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.gz +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.br +0 -0
- package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.gz +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.br +0 -0
- package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.gz +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.br +0 -0
- package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.gz +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.br +0 -0
- package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.gz +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.br +0 -0
- package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.gz +0 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.br +0 -0
- package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.gz +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.br +0 -0
- package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.gz +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.br +0 -0
- package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.gz +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.br +0 -0
- package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.gz +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js +0 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.br +0 -0
- package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.gz +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.br +0 -0
- package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.gz +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.br +0 -0
- package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.gz +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.br +0 -0
- package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.gz +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.br +0 -0
- package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.gz +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.br +0 -0
- package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.br +0 -0
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.gz +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.br +0 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.gz +0 -0
- package/payload/server/public/assets/clock-D8TJvgJC.js +0 -1
- package/payload/server/public/assets/clock-D8TJvgJC.js.br +0 -0
- package/payload/server/public/assets/clone-Bn7XXVhr.js +0 -1
- package/payload/server/public/assets/clone-Bn7XXVhr.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.br +0 -0
- package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.gz +0 -0
- package/payload/server/public/assets/dagre-BZYNBHvT.js.br +0 -0
- package/payload/server/public/assets/dagre-BZYNBHvT.js.gz +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.br +0 -0
- package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.gz +0 -0
- package/payload/server/public/assets/data-HfFSxaC2.js +0 -1
- package/payload/server/public/assets/data-HfFSxaC2.js.br +0 -0
- package/payload/server/public/assets/data-HfFSxaC2.js.gz +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.br +0 -0
- package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.gz +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.br +0 -0
- package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.gz +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.br +0 -0
- package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.gz +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.br +0 -0
- package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.gz +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.br +0 -0
- package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.gz +0 -0
- package/payload/server/public/assets/file-text-dYBnXNEX.js.br +0 -0
- package/payload/server/public/assets/file-text-dYBnXNEX.js.gz +0 -0
- package/payload/server/public/assets/flatten-BtIc9jX7.js.br +0 -0
- package/payload/server/public/assets/flatten-BtIc9jX7.js.gz +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.br +0 -0
- package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.gz +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.br +0 -0
- package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.gz +0 -0
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.br +0 -0
- package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.gz +0 -0
- package/payload/server/public/assets/graph-CDyzd1Et.js.br +0 -0
- package/payload/server/public/assets/graph-CDyzd1Et.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-D1LkKiJr.js +0 -1
- package/payload/server/public/assets/graph-labels-D1LkKiJr.js.br +0 -0
- package/payload/server/public/assets/graph-labels-D1LkKiJr.js.gz +0 -0
- package/payload/server/public/assets/graphlib-DY4-AT2Q.js.br +0 -0
- package/payload/server/public/assets/graphlib-DY4-AT2Q.js.gz +0 -0
- package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js +0 -2
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.br +0 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.gz +0 -0
- package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.br +0 -0
- package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.gz +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.br +0 -0
- package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.gz +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.br +0 -0
- package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.gz +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.br +0 -0
- package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.gz +0 -0
- package/payload/server/public/assets/line-Bnmxy1hO.js.br +0 -0
- package/payload/server/public/assets/line-Bnmxy1hO.js.gz +0 -0
- package/payload/server/public/assets/linear-RvwZxFzh.js.br +0 -0
- package/payload/server/public/assets/linear-RvwZxFzh.js.gz +0 -0
- package/payload/server/public/assets/maximize-2-M-iSaznd.js.br +0 -0
- package/payload/server/public/assets/maximize-2-M-iSaznd.js.gz +0 -0
- package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.br +0 -0
- package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.gz +0 -0
- package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.br +0 -0
- package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.gz +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.br +0 -0
- package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.gz +0 -0
- package/payload/server/public/assets/operator-9jfCv1Fg.js +0 -1
- package/payload/server/public/assets/operator-9jfCv1Fg.js.br +0 -0
- package/payload/server/public/assets/operator-9jfCv1Fg.js.gz +0 -0
- package/payload/server/public/assets/ordinal-C2TEWKNu.js.br +0 -0
- package/payload/server/public/assets/ordinal-C2TEWKNu.js.gz +0 -0
- package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js +0 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js.br +0 -0
- package/payload/server/public/assets/page-CZ-73FAk.js.br +0 -0
- package/payload/server/public/assets/page-CZ-73FAk.js.gz +0 -0
- package/payload/server/public/assets/page-CjwSt7kx.js +0 -1
- package/payload/server/public/assets/page-CjwSt7kx.js.br +0 -0
- package/payload/server/public/assets/page-CjwSt7kx.js.gz +0 -0
- package/payload/server/public/assets/pdf-render-C257cidb.js.br +0 -0
- package/payload/server/public/assets/pdf-render-C257cidb.js.gz +0 -0
- package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js +0 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.br +0 -0
- package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.gz +0 -0
- package/payload/server/public/assets/public-CN-ltC8x.js.br +0 -0
- package/payload/server/public/assets/public-CN-ltC8x.js.gz +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.br +0 -0
- package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.gz +0 -0
- package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js.br +0 -0
- package/payload/server/public/assets/reduce-BGpN5lgn.js.br +0 -0
- package/payload/server/public/assets/reduce-BGpN5lgn.js.gz +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.br +0 -0
- package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-Buopsc22.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-Buopsc22.js.gz +0 -0
- package/payload/server/public/assets/routines-C-yr8ddT.js +0 -1
- package/payload/server/public/assets/routines-C-yr8ddT.js.br +0 -0
- package/payload/server/public/assets/routines-C-yr8ddT.js.gz +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.br +0 -0
- package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.gz +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.br +0 -0
- package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.gz +0 -0
- package/payload/server/public/assets/skills-DiiuVzDK.js.br +0 -0
- package/payload/server/public/assets/skills-DiiuVzDK.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.br +0 -0
- package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.gz +0 -0
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.br +0 -4
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.gz +0 -0
- package/payload/server/public/assets/tasks-CnHIfn2_.js +0 -1
- package/payload/server/public/assets/tasks-CnHIfn2_.js.br +0 -0
- package/payload/server/public/assets/tasks-CnHIfn2_.js.gz +0 -0
- package/payload/server/public/assets/time-entry-format-BBokCF-D.js.br +0 -0
- package/payload/server/public/assets/time-entry-format-BBokCF-D.js.gz +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.br +0 -0
- package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.gz +0 -0
- package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js.br +0 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-C_AcpTW5.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-C_AcpTW5.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-TdimmPVR.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-TdimmPVR.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BwHqV55p.js +0 -14
- package/payload/server/public/assets/useSubAccountSwitcher-BwHqV55p.js.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-BwHqV55p.js.gz +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-CsrPYqtm.css +0 -1
- package/payload/server/public/assets/useSubAccountSwitcher-CsrPYqtm.css.br +0 -0
- package/payload/server/public/assets/useSubAccountSwitcher-CsrPYqtm.css.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BT2738ZS.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BT2738ZS.js.gz +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.br +0 -0
- package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.gz +0 -0
- package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js +0 -1
- package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.br +0 -0
- package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.gz +0 -0
- package/payload/server/public/assets/wrench-B51s5kGA.js.br +0 -0
- package/payload/server/public/assets/wrench-B51s5kGA.js.gz +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.br +0 -0
- package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.gz +0 -0
- /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js → _baseFor-B12He5Rp.js} +0 -0
- /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.br → _baseFor-B12He5Rp.js.br} +0 -0
- /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.gz → _baseFor-B12He5Rp.js.gz} +0 -0
- /package/payload/server/public/assets/{array-X0JlPOfd.js → array-DO1uCttT.js} +0 -0
- /package/payload/server/public/assets/{array-X0JlPOfd.js.br → array-DO1uCttT.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js → cytoscape.esm-DFn2foqy.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.br → cytoscape.esm-DFn2foqy.js.br} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.gz → cytoscape.esm-DFn2foqy.js.gz} +0 -0
- /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js → defaultLocale-ieI3yFoA.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.br → defaultLocale-ieI3yFoA.js.br} +0 -0
- /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.gz → defaultLocale-ieI3yFoA.js.gz} +0 -0
- /package/payload/server/public/assets/{dist-QvbmK1IP.js → dist-DlU7AEeD.js} +0 -0
- /package/payload/server/public/assets/{dist-QvbmK1IP.js.br → dist-DlU7AEeD.js.br} +0 -0
- /package/payload/server/public/assets/{dist-QvbmK1IP.js.gz → dist-DlU7AEeD.js.gz} +0 -0
- /package/payload/server/public/assets/{init-BmUWJJHz.js → init-BCRlEgNP.js} +0 -0
- /package/payload/server/public/assets/{init-BmUWJJHz.js.br → init-BCRlEgNP.js.br} +0 -0
- /package/payload/server/public/assets/{init-BmUWJJHz.js.gz → init-BCRlEgNP.js.gz} +0 -0
- /package/payload/server/public/assets/{katex-BjZuzSQn.js → katex-gkTaZgi6.js} +0 -0
- /package/payload/server/public/assets/{katex-BjZuzSQn.js.br → katex-gkTaZgi6.js.br} +0 -0
- /package/payload/server/public/assets/{katex-BjZuzSQn.js.gz → katex-gkTaZgi6.js.gz} +0 -0
- /package/payload/server/public/assets/{path-CoPyR7c2.js → path-DTmzQFjQ.js} +0 -0
- /package/payload/server/public/assets/{path-CoPyR7c2.js.br → path-DTmzQFjQ.js.br} +0 -0
- /package/payload/server/public/assets/{path-CoPyR7c2.js.gz → path-DTmzQFjQ.js.gz} +0 -0
- /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js → preload-helper-eAV8hweq.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.br → preload-helper-eAV8hweq.js.br} +0 -0
- /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.gz → preload-helper-eAV8hweq.js.gz} +0 -0
- /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js → rough.esm-BFJ-MgcB.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.br → rough.esm-BFJ-MgcB.js.br} +0 -0
- /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.gz → rough.esm-BFJ-MgcB.js.gz} +0 -0
- /package/payload/server/public/assets/{src-C2WwTWSY.js → src-9CNk4JU0.js} +0 -0
- /package/payload/server/public/assets/{src-C2WwTWSY.js.br → src-9CNk4JU0.js.br} +0 -0
- /package/payload/server/public/assets/{src-C2WwTWSY.js.gz → src-9CNk4JU0.js.gz} +0 -0
|
@@ -67,25 +67,39 @@ function qualifyShortToolName(plugin, tool) {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
// Frontmatter walker for PLUGIN.md tools: + hidden: blocks. Returns
|
|
70
|
-
// {tools
|
|
71
|
-
//
|
|
72
|
-
//
|
|
70
|
+
// {tools, hidden, hasTools, specialistOnly}. The drift check needs names
|
|
71
|
+
// only — every declared tool contributes to the `all` surface regardless of
|
|
72
|
+
// allowlist. `specialistOnly` (Task 2132) additionally carries the names
|
|
73
|
+
// declared unreachable from both the admin and public surfaces, which the
|
|
74
|
+
// reachability check below resolves against the specialist grants.
|
|
73
75
|
function parsePluginManifest(rawManifest) {
|
|
74
76
|
const fmMatch = rawManifest.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
75
|
-
if (!fmMatch) return { tools: [], hidden: [], hasTools: false };
|
|
77
|
+
if (!fmMatch) return { tools: [], hidden: [], hasTools: false, specialistOnly: [], manifestName: null };
|
|
76
78
|
const lines = fmMatch[1].split(/\r?\n/);
|
|
79
|
+
// The MCP server namespace is the manifest's own `name:`, which for a nested
|
|
80
|
+
// premium sub-plugin differs from its directory: premium-plugins/real-agent/
|
|
81
|
+
// plugins/loop/PLUGIN.md declares `name: real-agent-loop`, and the agents
|
|
82
|
+
// that hold its tools name them `mcp__plugin_real-agent-loop_real-agent-loop__*`.
|
|
83
|
+
// Used for the reachability set only, so the drift classifier's directory-keyed
|
|
84
|
+
// `all` set keeps its existing behaviour (Task 2132).
|
|
85
|
+
const nameMatch = fmMatch[1].match(/^name:\s*(\S+)\s*$/m);
|
|
86
|
+
const manifestName = nameMatch ? nameMatch[1] : null;
|
|
77
87
|
const tools = [];
|
|
78
88
|
const hidden = [];
|
|
89
|
+
const flags = {};
|
|
79
90
|
let mode = null; // 'tools' | 'hidden' | null
|
|
91
|
+
let cur = null;
|
|
80
92
|
let hasTools = false;
|
|
81
93
|
for (const line of lines) {
|
|
82
|
-
if (/^tools:\s*\[\s*\]\s*$/.test(line)) { mode = null; continue; }
|
|
83
|
-
if (/^tools:\s*$/.test(line)) { mode = 'tools'; hasTools = true; continue; }
|
|
84
|
-
if (/^hidden:\s*$/.test(line)) { mode = 'hidden'; continue; }
|
|
85
|
-
if (/^[A-Za-z_]/.test(line)) { mode = null; continue; }
|
|
94
|
+
if (/^tools:\s*\[\s*\]\s*$/.test(line)) { mode = null; cur = null; continue; }
|
|
95
|
+
if (/^tools:\s*$/.test(line)) { mode = 'tools'; hasTools = true; cur = null; continue; }
|
|
96
|
+
if (/^hidden:\s*$/.test(line)) { mode = 'hidden'; cur = null; continue; }
|
|
97
|
+
if (/^[A-Za-z_]/.test(line)) { mode = null; cur = null; continue; }
|
|
86
98
|
if (mode === 'tools') {
|
|
87
99
|
const nameLine = line.match(/^\s+-\s+name:\s*(.+?)\s*$/);
|
|
88
|
-
if (nameLine) { tools.push(
|
|
100
|
+
if (nameLine) { cur = nameLine[1]; tools.push(cur); flags[cur] = {}; continue; }
|
|
101
|
+
const flagLine = line.match(/^\s+(adminAllowlist|publicAllowlist):\s*(true|false)\s*$/);
|
|
102
|
+
if (flagLine && cur) { flags[cur][flagLine[1]] = flagLine[2] === 'true'; continue; }
|
|
89
103
|
}
|
|
90
104
|
if (mode === 'hidden') {
|
|
91
105
|
// Task 1998 — hidden entries carry the same `- name:` + `riskClass:`
|
|
@@ -95,7 +109,10 @@ function parsePluginManifest(rawManifest) {
|
|
|
95
109
|
if (nameLine) hidden.push(nameLine[1]);
|
|
96
110
|
}
|
|
97
111
|
}
|
|
98
|
-
|
|
112
|
+
const specialistOnly = tools.filter(
|
|
113
|
+
(t) => flags[t]?.adminAllowlist === false && flags[t]?.publicAllowlist === false,
|
|
114
|
+
);
|
|
115
|
+
return { tools, hidden, hasTools, specialistOnly, manifestName };
|
|
99
116
|
}
|
|
100
117
|
|
|
101
118
|
// Per-brand tool surface: walk platform/plugins (minus excludedPlugins) +
|
|
@@ -109,15 +126,17 @@ export function loadBrandToolSurface(maxyCodeRoot, excludedPlugins, shippedPremi
|
|
|
109
126
|
const { PLATFORM_PLUGINS, PREMIUM_ROOT } = rootsFor(maxyCodeRoot);
|
|
110
127
|
const all = new Set();
|
|
111
128
|
const maxyPluginSet = new Set();
|
|
129
|
+
const specialistOnlyAll = new Set();
|
|
112
130
|
const visit = (root, name) => {
|
|
113
131
|
if (excludedPlugins.has(name)) return;
|
|
114
132
|
const manifestPath = join(root, name, 'PLUGIN.md');
|
|
115
133
|
if (!existsSync(manifestPath)) return;
|
|
116
|
-
const { tools, hidden, hasTools } = parsePluginManifest(readFileSync(manifestPath, 'utf-8'));
|
|
134
|
+
const { tools, hidden, hasTools, specialistOnly, manifestName } = parsePluginManifest(readFileSync(manifestPath, 'utf-8'));
|
|
117
135
|
if (!hasTools && hidden.length === 0) return;
|
|
118
136
|
maxyPluginSet.add(name);
|
|
119
137
|
for (const t of tools) all.add(canonicalToolName(name, t));
|
|
120
138
|
for (const h of hidden) all.add(canonicalToolName(name, h));
|
|
139
|
+
for (const s of specialistOnly) specialistOnlyAll.add(canonicalToolName(manifestName ?? name, s));
|
|
121
140
|
};
|
|
122
141
|
if (existsSync(PLATFORM_PLUGINS)) {
|
|
123
142
|
for (const name of readdirSync(PLATFORM_PLUGINS).sort()) {
|
|
@@ -138,7 +157,53 @@ export function loadBrandToolSurface(maxyCodeRoot, excludedPlugins, shippedPremi
|
|
|
138
157
|
}
|
|
139
158
|
}
|
|
140
159
|
}
|
|
141
|
-
return { all, maxyPluginSet };
|
|
160
|
+
return { all, maxyPluginSet, specialistOnlyAll };
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Task 2132 — the inverse of the drift check. A tool declared
|
|
164
|
+
// `adminAllowlist: false` + `publicAllowlist: false` is reachable only
|
|
165
|
+
// through a specialist's frontmatter `tools:` list. When no agent names it,
|
|
166
|
+
// the tool can never be called: no error, no log line, no failed run. That is
|
|
167
|
+
// a no-event failure, so it needs a standing check rather than an event.
|
|
168
|
+
// `maxy-graph-write_neo4j_cypher` sat unreachable from Task 081 until 2132,
|
|
169
|
+
// taking conversation-archive-enrich's wire step down with it.
|
|
170
|
+
export function collectGrantedTools(agentDirs) {
|
|
171
|
+
const granted = new Set();
|
|
172
|
+
for (const dir of agentDirs) {
|
|
173
|
+
let entries;
|
|
174
|
+
try { entries = readdirSync(dir); } catch { continue; }
|
|
175
|
+
for (const entry of entries) {
|
|
176
|
+
if (!entry.endsWith('.md')) continue;
|
|
177
|
+
if (SKIP_AGENT_BASENAMES.has(basename(entry, '.md').toUpperCase())) continue;
|
|
178
|
+
const fm = readFileSync(join(dir, entry), 'utf-8').match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
179
|
+
if (!fm) continue;
|
|
180
|
+
const toolsLine = parseSpecialistToolsLine(fm[1]);
|
|
181
|
+
if (!toolsLine) continue;
|
|
182
|
+
for (const t of splitToolList(toolsLine)) granted.add(t);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return granted;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Tools deliberately reachable by no agent, each with the reason it is not a
|
|
189
|
+
// mistake. Empty by construction: every tool that would have sat here was
|
|
190
|
+
// fixed in Task 2132 — fourteen admin-called ones moved onto the admin
|
|
191
|
+
// surface, the graph write tool onto the librarian. An entry added later must
|
|
192
|
+
// name why the tool is deliberately callable by nobody, and an entry whose
|
|
193
|
+
// tool has since been granted is itself reported, because a suppression that
|
|
194
|
+
// outlives its cause re-creates the blind spot.
|
|
195
|
+
const REACHABILITY_EXCEPTIONS = new Map([]);
|
|
196
|
+
|
|
197
|
+
export function findUnreachableTools(specialistOnlyAll, granted) {
|
|
198
|
+
const unreachable = [];
|
|
199
|
+
const staleExceptions = [];
|
|
200
|
+
for (const tool of [...specialistOnlyAll].sort()) {
|
|
201
|
+
const isGranted = granted.has(tool);
|
|
202
|
+
const excepted = REACHABILITY_EXCEPTIONS.has(tool);
|
|
203
|
+
if (!isGranted && !excepted) unreachable.push(tool);
|
|
204
|
+
if (isGranted && excepted) staleExceptions.push(tool);
|
|
205
|
+
}
|
|
206
|
+
return { unreachable, staleExceptions };
|
|
142
207
|
}
|
|
143
208
|
|
|
144
209
|
// Per-brand specialist-agent dirs: platform templates ship with every brand;
|
|
@@ -277,12 +342,16 @@ export function runForBrand(maxyCodeRoot, brandName) {
|
|
|
277
342
|
throw err;
|
|
278
343
|
}
|
|
279
344
|
const shippedSet = new Set(shipped);
|
|
280
|
-
const { all, maxyPluginSet } = loadBrandToolSurface(maxyCodeRoot, excludedPlugins, shippedSet);
|
|
345
|
+
const { all, maxyPluginSet, specialistOnlyAll } = loadBrandToolSurface(maxyCodeRoot, excludedPlugins, shippedSet);
|
|
281
346
|
const agentDirs = collectSpecialistDirs(maxyCodeRoot, shippedSet);
|
|
282
347
|
const { defects, inspected } = assertSpecialistDrift(agentDirs, all, maxyPluginSet, excludedPlugins);
|
|
283
348
|
const blocking = defects.filter(d => d.reason !== 'brand-excluded-plugin');
|
|
284
349
|
const stripList = defects.filter(d => d.reason === 'brand-excluded-plugin');
|
|
285
|
-
|
|
350
|
+
const { unreachable, staleExceptions } = findUnreachableTools(
|
|
351
|
+
specialistOnlyAll,
|
|
352
|
+
collectGrantedTools(agentDirs),
|
|
353
|
+
);
|
|
354
|
+
return { blocking, stripList, inspected, unreachable, staleExceptions };
|
|
286
355
|
}
|
|
287
356
|
|
|
288
357
|
function main(maxyCodeRoot) {
|
|
@@ -306,14 +375,21 @@ function main(maxyCodeRoot) {
|
|
|
306
375
|
: d.specialistPath;
|
|
307
376
|
console.error(`[specialist-tool-surface] specialist=${rel} tool=${d.tool} reason=${d.reason} brand=${brandName}`);
|
|
308
377
|
}
|
|
309
|
-
|
|
310
|
-
|
|
378
|
+
for (const tool of result.unreachable) {
|
|
379
|
+
console.error(`[specialist-tool-surface] unreachable-tool=${tool} reason=granted-by-no-agent brand=${brandName}`);
|
|
380
|
+
}
|
|
381
|
+
for (const tool of result.staleExceptions) {
|
|
382
|
+
console.error(`[specialist-tool-surface] stale-reachability-exception=${tool} reason=now-granted brand=${brandName}`);
|
|
383
|
+
}
|
|
384
|
+
totalBlocking += result.blocking.length + result.unreachable.length + result.staleExceptions.length;
|
|
385
|
+
if (result.blocking.length === 0 && result.unreachable.length === 0 && result.staleExceptions.length === 0) {
|
|
311
386
|
console.log(`[specialist-tool-surface] ok brand=${brandName} inspected=${result.inspected}`);
|
|
312
387
|
}
|
|
313
388
|
}
|
|
314
389
|
if (totalBlocking > 0) {
|
|
315
390
|
console.error(`[specialist-tool-surface] FAIL: ${totalBlocking} defect(s) across ${brands.length} brand(s).`);
|
|
316
391
|
console.error(` Rename the tool in the listed file to a registered namespace, or move the plugin off the brand's plugins.excluded list.`);
|
|
392
|
+
console.error(` An unreachable-tool is declared adminAllowlist:false + publicAllowlist:false and named by no agent: grant it to the specialist that needs it, put it on the admin surface, or remove the declaration.`);
|
|
317
393
|
process.exit(1);
|
|
318
394
|
}
|
|
319
395
|
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Regression test for account-settings-mailbox-inject.sh (Task 2157).
|
|
3
|
+
#
|
|
4
|
+
# The lib retrofits the per-turn <mailboxes> injection hook onto existing
|
|
5
|
+
# accounts' .claude/settings.json on every install. provision-account-dir.sh
|
|
6
|
+
# writes the UserPromptSubmit array at provision time only, and setup-account.sh
|
|
7
|
+
# re-provisions the HOUSE account only, so a client sub-account created by the
|
|
8
|
+
# admin-core account-lifecycle tool never gets the hook without this reconcile.
|
|
9
|
+
#
|
|
10
|
+
# Covers:
|
|
11
|
+
# 1. Array with a sibling hook -> updated, command appended, sibling preserved
|
|
12
|
+
# 2. Re-run on the same file -> already-set, file byte-identical
|
|
13
|
+
# 3. Empty UserPromptSubmit array-> updated, whole entry created
|
|
14
|
+
# 4. Command already present -> already-set, no duplicate
|
|
15
|
+
# 5. No .hooks.UserPromptSubmit -> no-hooks, file untouched
|
|
16
|
+
# 6. File absent -> absent
|
|
17
|
+
# 7. Malformed JSON -> rewrite-failed, file untouched
|
|
18
|
+
# 8. settings.json is an array -> rewrite-failed or no-hooks, file untouched
|
|
19
|
+
# 9. reconcile_all_accounts_* -> patches every account.json dir, skips others
|
|
20
|
+
# 10. No temp file is ever left behind, on any path
|
|
21
|
+
#
|
|
22
|
+
# All cases assert the [backfill-2157] status token and the post-state of the file.
|
|
23
|
+
|
|
24
|
+
set -u
|
|
25
|
+
|
|
26
|
+
LIB="$(cd "$(dirname "$0")/.." && pwd)/account-settings-mailbox-inject.sh"
|
|
27
|
+
if [ ! -f "$LIB" ]; then
|
|
28
|
+
echo "FAIL: $LIB not found" >&2
|
|
29
|
+
exit 1
|
|
30
|
+
fi
|
|
31
|
+
# shellcheck source=/dev/null
|
|
32
|
+
. "$LIB"
|
|
33
|
+
|
|
34
|
+
CMD='bash $PLATFORM_ROOT/plugins/admin/hooks/mailbox-inject.sh'
|
|
35
|
+
SIB='bash $PLATFORM_ROOT/plugins/admin/hooks/datetime-inject.sh'
|
|
36
|
+
|
|
37
|
+
PASS=0
|
|
38
|
+
FAIL=0
|
|
39
|
+
TMP="$(mktemp -d)"
|
|
40
|
+
trap 'rm -rf "$TMP"' EXIT
|
|
41
|
+
|
|
42
|
+
ok() { echo "PASS: $1"; PASS=$((PASS+1)); }
|
|
43
|
+
bad() { echo "FAIL: $1" >&2; FAIL=$((FAIL+1)); }
|
|
44
|
+
|
|
45
|
+
# cmds <file> -> every command string in the UserPromptSubmit array, one per line
|
|
46
|
+
cmds() { jq -r '[.hooks.UserPromptSubmit[]?.hooks[]?.command] | .[]' "$1" 2>/dev/null; }
|
|
47
|
+
status_of() { printf '%s' "$1" | /usr/bin/sed 's/.*status=//'; }
|
|
48
|
+
|
|
49
|
+
# --- 1. array with a sibling hook -> updated, sibling preserved -------------
|
|
50
|
+
F="$TMP/a.json"
|
|
51
|
+
printf '%s' "{\"hooks\":{\"UserPromptSubmit\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"$SIB\"}]}]}}" > "$F"
|
|
52
|
+
OUT=$(ensure_mailbox_inject_hook "$F")
|
|
53
|
+
if [ "$(status_of "$OUT")" = "updated" ] \
|
|
54
|
+
&& [ "$(cmds "$F" | /usr/bin/grep -cF "$CMD")" -eq 1 ] \
|
|
55
|
+
&& [ "$(cmds "$F" | /usr/bin/grep -cF "$SIB")" -eq 1 ]; then
|
|
56
|
+
ok "existing array -> updated, sibling hook preserved"
|
|
57
|
+
else
|
|
58
|
+
bad "case 1 (out=$OUT cmds=$(cmds "$F" | tr '\n' ' '))"
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# --- 2. re-run -> already-set, byte-identical -------------------------------
|
|
62
|
+
B=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
|
|
63
|
+
OUT=$(ensure_mailbox_inject_hook "$F")
|
|
64
|
+
A=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
|
|
65
|
+
if [ "$(status_of "$OUT")" = "already-set" ] && [ "$B" = "$A" ] \
|
|
66
|
+
&& [ "$(cmds "$F" | /usr/bin/grep -cF "$CMD")" -eq 1 ]; then
|
|
67
|
+
ok "re-run -> already-set, file byte-identical, no duplicate"
|
|
68
|
+
else
|
|
69
|
+
bad "case 2 (out=$OUT before=$B after=$A)"
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
# --- 3. empty array -> updated, whole entry created -------------------------
|
|
73
|
+
F="$TMP/b.json"; printf '%s' '{"hooks":{"UserPromptSubmit":[]}}' > "$F"
|
|
74
|
+
OUT=$(ensure_mailbox_inject_hook "$F")
|
|
75
|
+
if [ "$(status_of "$OUT")" = "updated" ] && [ "$(cmds "$F" | /usr/bin/grep -cF "$CMD")" -eq 1 ]; then
|
|
76
|
+
ok "empty array -> updated, entry created"
|
|
77
|
+
else
|
|
78
|
+
bad "case 3 (out=$OUT cmds=$(cmds "$F" | tr '\n' ' '))"
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
# --- 4. command already present in a later entry -> already-set, no dupe ----
|
|
82
|
+
F="$TMP/c.json"
|
|
83
|
+
printf '%s' "{\"hooks\":{\"UserPromptSubmit\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"$SIB\"}]},{\"hooks\":[{\"type\":\"command\",\"command\":\"$CMD\"}]}]}}" > "$F"
|
|
84
|
+
OUT=$(ensure_mailbox_inject_hook "$F")
|
|
85
|
+
if [ "$(status_of "$OUT")" = "already-set" ] && [ "$(cmds "$F" | /usr/bin/grep -cF "$CMD")" -eq 1 ]; then
|
|
86
|
+
ok "command present in a later entry -> already-set, not duplicated"
|
|
87
|
+
else
|
|
88
|
+
bad "case 4 (out=$OUT cmds=$(cmds "$F" | tr '\n' ' '))"
|
|
89
|
+
fi
|
|
90
|
+
|
|
91
|
+
# --- 5. no UserPromptSubmit -> no-hooks, untouched --------------------------
|
|
92
|
+
F="$TMP/d.json"; printf '%s' '{"permissions":{}}' > "$F"
|
|
93
|
+
B=$(shasum "$F" | /usr/bin/cut -d' ' -f1); OUT=$(ensure_mailbox_inject_hook "$F"); A=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
|
|
94
|
+
if [ "$(status_of "$OUT")" = "no-hooks" ] && [ "$B" = "$A" ]; then
|
|
95
|
+
ok "no UserPromptSubmit array -> no-hooks, file untouched"
|
|
96
|
+
else
|
|
97
|
+
bad "case 5 (out=$OUT)"
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
# --- 6. file absent -> absent ----------------------------------------------
|
|
101
|
+
OUT=$(ensure_mailbox_inject_hook "$TMP/does-not-exist.json")
|
|
102
|
+
if [ "$(status_of "$OUT")" = "absent" ]; then
|
|
103
|
+
ok "file absent -> absent"
|
|
104
|
+
else
|
|
105
|
+
bad "case 6 (out=$OUT)"
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
# --- 7. malformed JSON -> rewrite-failed, untouched -------------------------
|
|
109
|
+
F="$TMP/e.json"; printf 'not json at all' > "$F"
|
|
110
|
+
B=$(shasum "$F" | /usr/bin/cut -d' ' -f1); OUT=$(ensure_mailbox_inject_hook "$F"); A=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
|
|
111
|
+
if [ "$(status_of "$OUT")" = "rewrite-failed" ] && [ "$B" = "$A" ]; then
|
|
112
|
+
ok "malformed JSON -> rewrite-failed, file untouched"
|
|
113
|
+
else
|
|
114
|
+
bad "case 7 (out=$OUT)"
|
|
115
|
+
fi
|
|
116
|
+
|
|
117
|
+
# --- 8. settings.json is a JSON array -> not patched, untouched -------------
|
|
118
|
+
F="$TMP/f.json"; printf '%s' '[]' > "$F"
|
|
119
|
+
B=$(shasum "$F" | /usr/bin/cut -d' ' -f1); OUT=$(ensure_mailbox_inject_hook "$F"); A=$(shasum "$F" | /usr/bin/cut -d' ' -f1)
|
|
120
|
+
S=$(status_of "$OUT")
|
|
121
|
+
if { [ "$S" = "no-hooks" ] || [ "$S" = "rewrite-failed" ]; } && [ "$B" = "$A" ]; then
|
|
122
|
+
ok "settings.json that is an array -> not patched, file untouched"
|
|
123
|
+
else
|
|
124
|
+
bad "case 8 (out=$OUT before=$B after=$A)"
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
# --- 9. reconcile walks account dirs only ----------------------------------
|
|
128
|
+
R="$TMP/accts"; mkdir -p "$R/one/.claude" "$R/two/.claude" "$R/notanaccount/.claude"
|
|
129
|
+
printf '%s' '{}' > "$R/one/account.json"; printf '%s' '{}' > "$R/two/account.json"
|
|
130
|
+
for d in one two notanaccount; do
|
|
131
|
+
printf '%s' "{\"hooks\":{\"UserPromptSubmit\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"$SIB\"}]}]}}" > "$R/$d/.claude/settings.json"
|
|
132
|
+
done
|
|
133
|
+
OUT=$(reconcile_all_accounts_mailbox_inject "$R")
|
|
134
|
+
if [ "$(printf '%s' "$OUT" | /usr/bin/grep -c 'status=updated')" -eq 2 ] \
|
|
135
|
+
&& [ "$(cmds "$R/one/.claude/settings.json" | /usr/bin/grep -cF "$CMD")" -eq 1 ] \
|
|
136
|
+
&& [ "$(cmds "$R/two/.claude/settings.json" | /usr/bin/grep -cF "$CMD")" -eq 1 ] \
|
|
137
|
+
&& [ "$(cmds "$R/notanaccount/.claude/settings.json" | /usr/bin/grep -cF "$CMD")" -eq 0 ]; then
|
|
138
|
+
ok "reconcile patches account.json dirs only"
|
|
139
|
+
else
|
|
140
|
+
bad "case 9 (out=$OUT)"
|
|
141
|
+
fi
|
|
142
|
+
|
|
143
|
+
# --- 10. no temp file left behind on any path ------------------------------
|
|
144
|
+
if [ "$(find "$TMP" -name '*.2157.tmp' | /usr/bin/wc -l | tr -d ' ')" -eq 0 ]; then
|
|
145
|
+
ok "no .2157.tmp file left behind on any path"
|
|
146
|
+
else
|
|
147
|
+
bad "case 10 (strays: $(find "$TMP" -name '*.2157.tmp'))"
|
|
148
|
+
fi
|
|
149
|
+
|
|
150
|
+
# --- 11. never returns non-zero, even on the failure paths -----------------
|
|
151
|
+
ensure_mailbox_inject_hook "$TMP/e.json" >/dev/null; r1=$?
|
|
152
|
+
ensure_mailbox_inject_hook "$TMP/nope.json" >/dev/null; r2=$?
|
|
153
|
+
reconcile_all_accounts_mailbox_inject "$TMP/no-such-dir" >/dev/null; r3=$?
|
|
154
|
+
if [ "$r1" -eq 0 ] && [ "$r2" -eq 0 ] && [ "$r3" -eq 0 ]; then
|
|
155
|
+
ok "every path returns 0, so a caller running set -e is never aborted"
|
|
156
|
+
else
|
|
157
|
+
bad "case 11 (malformed=$r1 absent=$r2 nodir=$r3)"
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
echo "----"
|
|
161
|
+
echo "PASS=$PASS FAIL=$FAIL"
|
|
162
|
+
if [ $((PASS+FAIL)) -ne 11 ]; then
|
|
163
|
+
echo "FAIL: expected 11 cases, ran $((PASS+FAIL))" >&2
|
|
164
|
+
exit 1
|
|
165
|
+
fi
|
|
166
|
+
[ "$FAIL" -eq 0 ]
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# account-settings-mailbox-inject.sh — retrofit the per-turn <mailboxes>
|
|
2
|
+
# injection hook onto existing accounts' .claude/settings.json. Task 2157.
|
|
3
|
+
#
|
|
4
|
+
# provision-account-dir.sh writes the UserPromptSubmit array only at provision
|
|
5
|
+
# time, and setup-account.sh re-provisions the HOUSE account only: a client
|
|
6
|
+
# sub-account's settings.json is written once, at creation, by the admin-core
|
|
7
|
+
# account-lifecycle tool, and no install ever rewrites it. Without this lib the
|
|
8
|
+
# hook reaches house accounts only, and no device gate would notice, because the
|
|
9
|
+
# verification account on a single-account install IS that install's house
|
|
10
|
+
# account. Same shape as account-settings-askgate.sh (Task 1683) and
|
|
11
|
+
# account-settings-pdf-conformance.sh (Task 1929).
|
|
12
|
+
#
|
|
13
|
+
# Requires jq. Idempotent. Never echoes file contents. Fail-open (nudge, not
|
|
14
|
+
# brick): any unusable file logs a status and is left untouched.
|
|
15
|
+
#
|
|
16
|
+
# Sourced by setup-account.sh; also runnable standalone for a manual repair.
|
|
17
|
+
|
|
18
|
+
# The exact command string provision-account-dir.sh writes. $PLATFORM_ROOT is a
|
|
19
|
+
# literal in the settings file, resolved by Claude Code at hook-run time.
|
|
20
|
+
_MBXINJECT_CMD='bash $PLATFORM_ROOT/plugins/admin/hooks/mailbox-inject.sh'
|
|
21
|
+
|
|
22
|
+
# ensure_mailbox_inject_hook <settings_file>
|
|
23
|
+
# Guarantees the UserPromptSubmit array carries the mailbox-inject command:
|
|
24
|
+
# appends it to the first entry when the array exists without it, or adds a whole
|
|
25
|
+
# entry when the array is empty. Logs exactly one
|
|
26
|
+
# `[backfill-2157] file=<f> status=<absent|no-hooks|already-set|updated|rewrite-failed>`
|
|
27
|
+
# to stdout. Always returns 0.
|
|
28
|
+
ensure_mailbox_inject_hook() {
|
|
29
|
+
local f="$1"
|
|
30
|
+
if [ ! -f "$f" ]; then
|
|
31
|
+
echo "[backfill-2157] file=$f status=absent"
|
|
32
|
+
return 0
|
|
33
|
+
fi
|
|
34
|
+
# Patchable only when the file is valid JSON with a UserPromptSubmit array.
|
|
35
|
+
if ! jq -e '.hooks.UserPromptSubmit | type == "array"' "$f" >/dev/null 2>&1; then
|
|
36
|
+
if jq -e . "$f" >/dev/null 2>&1; then
|
|
37
|
+
echo "[backfill-2157] file=$f status=no-hooks"
|
|
38
|
+
else
|
|
39
|
+
echo "[backfill-2157] file=$f status=rewrite-failed"
|
|
40
|
+
fi
|
|
41
|
+
return 0
|
|
42
|
+
fi
|
|
43
|
+
local tmp="$f.2157.tmp"
|
|
44
|
+
if ! jq --arg cmd "$_MBXINJECT_CMD" '
|
|
45
|
+
.hooks.UserPromptSubmit |= (
|
|
46
|
+
if length == 0
|
|
47
|
+
then [{hooks: [{type: "command", command: $cmd}]}]
|
|
48
|
+
else
|
|
49
|
+
if any(.[]; (.hooks // []) | any(.[]; .command == $cmd))
|
|
50
|
+
then .
|
|
51
|
+
else (.[0].hooks = ((.[0].hooks // []) + [{type: "command", command: $cmd}]))
|
|
52
|
+
end
|
|
53
|
+
end)
|
|
54
|
+
' "$f" > "$tmp" 2>/dev/null; then
|
|
55
|
+
rm -f "$tmp"
|
|
56
|
+
echo "[backfill-2157] file=$f status=rewrite-failed"
|
|
57
|
+
return 0
|
|
58
|
+
fi
|
|
59
|
+
# Semantic no-op? Compare canonical forms; leave the file byte-identical if so.
|
|
60
|
+
# `|| true` keeps a jq failure here (e.g. $f truncated by a concurrent writer
|
|
61
|
+
# between the type-check above and this read) from tripping a caller's `set -e`
|
|
62
|
+
# and aborting the whole install — this lib is fail-open by contract.
|
|
63
|
+
local before after
|
|
64
|
+
before="$(jq -S . "$f" 2>/dev/null || true)"
|
|
65
|
+
after="$(jq -S . "$tmp" 2>/dev/null || true)"
|
|
66
|
+
if [ "$before" = "$after" ]; then
|
|
67
|
+
rm -f "$tmp"
|
|
68
|
+
echo "[backfill-2157] file=$f status=already-set"
|
|
69
|
+
return 0
|
|
70
|
+
fi
|
|
71
|
+
if mv "$tmp" "$f"; then
|
|
72
|
+
echo "[backfill-2157] file=$f status=updated"
|
|
73
|
+
else
|
|
74
|
+
rm -f "$tmp"
|
|
75
|
+
echo "[backfill-2157] file=$f status=rewrite-failed"
|
|
76
|
+
fi
|
|
77
|
+
return 0
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
# reconcile_all_accounts_mailbox_inject <accounts_dir>
|
|
81
|
+
# Standing check + backfill: every account dir with an account.json gets the
|
|
82
|
+
# mailbox-inject hook ensured. Mirrors reconcile_all_accounts_askgate.
|
|
83
|
+
reconcile_all_accounts_mailbox_inject() {
|
|
84
|
+
local accts="$1"
|
|
85
|
+
[ -d "$accts" ] || return 0
|
|
86
|
+
local acct
|
|
87
|
+
for acct in "$accts"/*/; do
|
|
88
|
+
[ -f "$acct/account.json" ] || continue
|
|
89
|
+
ensure_mailbox_inject_hook "$acct/.claude/settings.json"
|
|
90
|
+
done
|
|
91
|
+
}
|
|
@@ -186,6 +186,7 @@ provision_account_dir() {
|
|
|
186
186
|
{ "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" },
|
|
187
187
|
{ "type": "command", "command": "bash $HOOKS_PATH/prompt-optimiser-directive.sh" },
|
|
188
188
|
{ "type": "command", "command": "bash $HOOKS_PATH/datetime-inject.sh" },
|
|
189
|
+
{ "type": "command", "command": "bash $HOOKS_PATH/mailbox-inject.sh" },
|
|
189
190
|
{ "type": "command", "command": "bash $HOOKS_PATH/preference-consult-directive.sh" }
|
|
190
191
|
]
|
|
191
192
|
}
|
|
@@ -369,4 +369,45 @@ IDENT_DROPPED=$("$CYPHER_SHELL" -u "$NEO4J_USER" -p "$NEO4J_PASSWORD" -a "$NEO4J
|
|
|
369
369
|
"MATCH (au:AdminUser) WHERE au.name IS NOT NULL REMOVE au.name RETURN count(au)" 2>/dev/null | tail -1 | tr -d ' \r')
|
|
370
370
|
echo " [identity-reconcile] namedExisting=${IDENT_NAMED:-0} createdOwned=${IDENT_CREATED:-0} droppedAuName=${IDENT_DROPPED:-0}"
|
|
371
371
|
|
|
372
|
+
# ------------------------------------------------------------------
|
|
373
|
+
# 8. Routine roster (Task 2130)
|
|
374
|
+
# ------------------------------------------------------------------
|
|
375
|
+
# Ten generic routines, seeded eventStatus='suspended' with nextRun NULL and no
|
|
376
|
+
# channel or destination, so a fresh install has a catalogue to enable instead
|
|
377
|
+
# of a blank /routines page. Running here rather than only at account creation
|
|
378
|
+
# is what carries the roster to the EXISTING fleet: this script runs on every
|
|
379
|
+
# upgrade, not just the first install.
|
|
380
|
+
#
|
|
381
|
+
# The roster, the MERGE and the whole [routine-seed] lifecycle live in
|
|
382
|
+
# platform/lib/routine-templates so the sub-account path in the admin plugin
|
|
383
|
+
# shares them verbatim. This script only supplies the process boundary; it logs
|
|
384
|
+
# nothing itself.
|
|
385
|
+
#
|
|
386
|
+
# Never install-blocking, matching sections 5-7 above. An account with no
|
|
387
|
+
# routines is degraded, not broken: the graph, the agent and every channel work,
|
|
388
|
+
# and only /routines is empty. Aborting here would take down an install or a
|
|
389
|
+
# whole-fleet upgrade over a transient Neo4j hiccup, after the schema, the root
|
|
390
|
+
# :LocalBusiness and the owner :AdminUser had all already succeeded — and the
|
|
391
|
+
# installer's shell() throws on any non-zero exit, so a failure here is not
|
|
392
|
+
# recoverable further up.
|
|
393
|
+
#
|
|
394
|
+
# What makes that safe is that this change also ships the control: the
|
|
395
|
+
# heartbeat's [schedule-audit] op=roster reconciles the expected roster against
|
|
396
|
+
# what each account actually holds, every tick, naming the missing keys. A short
|
|
397
|
+
# seed is loud whether or not it aborts the install, so blocking buys nothing
|
|
398
|
+
# and costs a bricked upgrade.
|
|
399
|
+
ROUTINE_SEED_CLI="$PROJECT_DIR/lib/routine-templates/dist/seed-cli.js"
|
|
400
|
+
if [ ! -f "$ROUTINE_SEED_CLI" ]; then
|
|
401
|
+
echo " [routine-seed] op=skipped reason=cli-missing path=$ROUTINE_SEED_CLI — platform/lib/routine-templates was not built before the payload was bundled; run 'npm run build:lib' in platform/ and re-bundle. /routines will be empty and [schedule-audit] op=roster will report every key missing." >&2
|
|
402
|
+
elif ! command -v node &> /dev/null; then
|
|
403
|
+
echo " [routine-seed] op=skipped reason=no-node — node is required by the routine-roster seed. /routines will be empty and [schedule-audit] op=roster will report every key missing." >&2
|
|
404
|
+
else
|
|
405
|
+
NEO4J_URI="$NEO4J_URI" \
|
|
406
|
+
NEO4J_USER="$NEO4J_USER" \
|
|
407
|
+
NEO4J_PASSWORD="$NEO4J_PASSWORD" \
|
|
408
|
+
ROUTINE_SEED_ACCOUNT_ID="$ACCOUNT_ID" \
|
|
409
|
+
node "$ROUTINE_SEED_CLI" \
|
|
410
|
+
|| echo " [routine-seed] op=skipped reason=seed-failed — the routine roster did not seed; the account is otherwise fully provisioned. [schedule-audit] op=roster names the missing keys every tick, and the next upgrade re-seeds." >&2
|
|
411
|
+
fi
|
|
412
|
+
|
|
372
413
|
echo " Done."
|
|
@@ -38,6 +38,8 @@ ACCOUNTS_DIR="$INSTALL_DIR/data/accounts"
|
|
|
38
38
|
. "$SCRIPT_DIR/lib/account-settings-askgate.sh"
|
|
39
39
|
# shellcheck source=lib/account-settings-pdf-conformance.sh
|
|
40
40
|
. "$SCRIPT_DIR/lib/account-settings-pdf-conformance.sh"
|
|
41
|
+
# shellcheck source=lib/account-settings-mailbox-inject.sh
|
|
42
|
+
. "$SCRIPT_DIR/lib/account-settings-mailbox-inject.sh"
|
|
41
43
|
# shellcheck source=lib/read-brand-json.sh
|
|
42
44
|
. "$SCRIPT_DIR/lib/read-brand-json.sh"
|
|
43
45
|
# Resolve brand-aware persistent users.json path before the resolver runs.
|
|
@@ -90,3 +92,16 @@ reconcile_all_accounts_askgate "$ACCOUNTS_DIR"
|
|
|
90
92
|
# never runs the PDF gate. Reconcile every account on every install so the gate
|
|
91
93
|
# reaches pre-1922 accounts. Idempotent; logs one [backfill-1929] line per account.
|
|
92
94
|
reconcile_all_accounts_pdf_conformance "$ACCOUNTS_DIR"
|
|
95
|
+
|
|
96
|
+
# ------------------------------------------------------------------
|
|
97
|
+
# 6. Retrofit the per-turn <mailboxes> injection hook onto every account
|
|
98
|
+
# ------------------------------------------------------------------
|
|
99
|
+
# Standing check + durable backfill (Task 2157): provision_account_dir writes the
|
|
100
|
+
# UserPromptSubmit array only at provision time, and this script re-provisions
|
|
101
|
+
# only the house account. A client sub-account created by the account-lifecycle
|
|
102
|
+
# tool keeps a settings.json without mailbox-inject.sh and never gets the
|
|
103
|
+
# standing mailbox list, so its sessions go on learning attachment state by
|
|
104
|
+
# polling one mail plugin and reading that plugin's miss as an account-wide fact.
|
|
105
|
+
# Reconcile every account on every install. Idempotent; logs one [backfill-2157]
|
|
106
|
+
# line per account.
|
|
107
|
+
reconcile_all_accounts_mailbox_inject "$ACCOUNTS_DIR"
|
|
@@ -58,6 +58,20 @@ EXPLICIT_OWNERSHIP = {
|
|
|
58
58
|
"memory/document-ingest": "librarian",
|
|
59
59
|
"memory/conversation-archive": "librarian",
|
|
60
60
|
"memory/conversation-archive-enrich": "librarian",
|
|
61
|
+
# publish-site/SKILL.md:10 — "Invoked from `specialists:content-producer`".
|
|
62
|
+
# The admin plugin declares no `specialist:` field, so without this entry
|
|
63
|
+
# the skill defaults to admin-owned and its two tools resolve against the
|
|
64
|
+
# wrong surface (Task 2132).
|
|
65
|
+
"admin/publish-site": "content-producer",
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
# Generated catalogue skills. platform-architecture is assembled from the docs
|
|
69
|
+
# mirror by scripts/assemble-architecture-skill.mjs and describes the whole
|
|
70
|
+
# platform, so it names tools it never calls — a token there is documentation,
|
|
71
|
+
# not a prescription. Token resolution does not apply; the forbidden-token rule
|
|
72
|
+
# still does (Task 2132).
|
|
73
|
+
CATALOGUE_SKILLS = {
|
|
74
|
+
"admin/platform-architecture",
|
|
61
75
|
}
|
|
62
76
|
|
|
63
77
|
# Skills that are explicitly admin-owned (loaded via plugin-read by the admin
|
|
@@ -138,6 +152,49 @@ def specialist_tools(specialist: str) -> set[str] | None:
|
|
|
138
152
|
return {t for t in items if t}
|
|
139
153
|
|
|
140
154
|
|
|
155
|
+
def scan_manifest_allowlists() -> tuple[set[str], set[str]]:
|
|
156
|
+
"""Long-prefix names of (every declared tool, those declared
|
|
157
|
+
`adminAllowlist: true`).
|
|
158
|
+
|
|
159
|
+
The admin agent's surface is NOT the union of all enabled plugins: a tool
|
|
160
|
+
declared `adminAllowlist: false` is excluded from the admin spawn by
|
|
161
|
+
tool-surface.ts, so an admin-owned skill naming one prescribes a call its
|
|
162
|
+
own agent cannot make. That premise left fourteen tools unreachable and
|
|
163
|
+
invisible to this gate until Task 2132 — capabilities-here/SKILL.md names
|
|
164
|
+
its tool in the required backtick form and still passed.
|
|
165
|
+
"""
|
|
166
|
+
declared: set[str] = set()
|
|
167
|
+
admin: set[str] = set()
|
|
168
|
+
for plugin in sorted(os.listdir(PLUGINS_DIR)):
|
|
169
|
+
manifest = os.path.join(PLUGINS_DIR, plugin, "PLUGIN.md")
|
|
170
|
+
if not os.path.exists(manifest):
|
|
171
|
+
continue
|
|
172
|
+
m = re.match(r"^---\n(.*?)\n---", open(manifest, encoding="utf-8").read(), re.S)
|
|
173
|
+
if not m:
|
|
174
|
+
continue
|
|
175
|
+
cur = None
|
|
176
|
+
in_tools = False
|
|
177
|
+
for line in m.group(1).split("\n"):
|
|
178
|
+
if re.match(r"^tools:\s*$", line):
|
|
179
|
+
in_tools = True
|
|
180
|
+
continue
|
|
181
|
+
if re.match(r"^[A-Za-z_]", line):
|
|
182
|
+
in_tools = False
|
|
183
|
+
cur = None
|
|
184
|
+
continue
|
|
185
|
+
if not in_tools:
|
|
186
|
+
continue
|
|
187
|
+
nm = re.match(r"^\s+-\s+name:\s*(.+?)\s*$", line)
|
|
188
|
+
if nm:
|
|
189
|
+
cur = nm.group(1)
|
|
190
|
+
declared.add(f"mcp__plugin_{plugin}_{plugin}__{cur}")
|
|
191
|
+
continue
|
|
192
|
+
aa = re.match(r"^\s+adminAllowlist:\s*(true|false)\s*$", line)
|
|
193
|
+
if aa and cur and aa.group(1) == "true":
|
|
194
|
+
admin.add(f"mcp__plugin_{plugin}_{plugin}__{cur}")
|
|
195
|
+
return declared, admin
|
|
196
|
+
|
|
197
|
+
|
|
141
198
|
def extract_prescribed_tokens(text: str) -> set[str]:
|
|
142
199
|
return set(TOKEN_RE.findall(text))
|
|
143
200
|
|
|
@@ -255,6 +312,7 @@ def main() -> int:
|
|
|
255
312
|
summary: list[str] = []
|
|
256
313
|
errors: list[str] = []
|
|
257
314
|
pairs_checked = 0
|
|
315
|
+
all_declared_tools, admin_surface = scan_manifest_allowlists()
|
|
258
316
|
|
|
259
317
|
for plugin in sorted(os.listdir(PLUGINS_DIR)):
|
|
260
318
|
pdir = os.path.join(PLUGINS_DIR, plugin)
|
|
@@ -288,7 +346,24 @@ def main() -> int:
|
|
|
288
346
|
)
|
|
289
347
|
|
|
290
348
|
if specialist is None:
|
|
291
|
-
# Admin-owned:
|
|
349
|
+
# Admin-owned: forbidden-token rule, plus the admin surface.
|
|
350
|
+
# A prescribed tool that some manifest declares must also be
|
|
351
|
+
# `adminAllowlist: true`, or the admin cannot call it. Tokens
|
|
352
|
+
# no manifest declares are upstream bridges (Playwright and
|
|
353
|
+
# friends) and are left to the drift gate (Task 2132).
|
|
354
|
+
unresolved_admin = (
|
|
355
|
+
[]
|
|
356
|
+
if ownership_key in CATALOGUE_SKILLS
|
|
357
|
+
else sorted(
|
|
358
|
+
t for t in prescribed
|
|
359
|
+
if t in all_declared_tools and t not in admin_surface
|
|
360
|
+
)
|
|
361
|
+
)
|
|
362
|
+
for tok in unresolved_admin:
|
|
363
|
+
errors.append(
|
|
364
|
+
f"[verify] skill={ownership_key} specialist=admin "
|
|
365
|
+
f"unresolved={tok} reason=not-admin-allowlisted"
|
|
366
|
+
)
|
|
292
367
|
for tok, ctx in forbidden:
|
|
293
368
|
errors.append(
|
|
294
369
|
f"[verify] skill={ownership_key} specialist=admin "
|
|
@@ -296,7 +371,8 @@ def main() -> int:
|
|
|
296
371
|
)
|
|
297
372
|
summary.append(
|
|
298
373
|
f"[verify] skill={ownership_key} specialist=admin (admin-owned) "
|
|
299
|
-
f"tokens={len(prescribed)}
|
|
374
|
+
f"tokens={len(prescribed)} unresolved={len(unresolved_admin)} "
|
|
375
|
+
f"forbidden={len(forbidden)}"
|
|
300
376
|
)
|
|
301
377
|
continue
|
|
302
378
|
|
|
@@ -314,6 +390,19 @@ def main() -> int:
|
|
|
314
390
|
f"[verify] skill={ownership_key} specialist={specialist} "
|
|
315
391
|
f"unresolved={tok}"
|
|
316
392
|
)
|
|
393
|
+
# A skill that instructs execution of a tool-emitted `mergeCypher`
|
|
394
|
+
# must name the tool that executes it. The token rule above is
|
|
395
|
+
# name-based, so prose like "Run the `mergeCypher`" resolves
|
|
396
|
+
# nothing and passes — the blind spot that left
|
|
397
|
+
# conversation-archive-enrich's wire step unexecutable while this
|
|
398
|
+
# gate reported resolved=5/5 (Task 2132).
|
|
399
|
+
if "mergeCypher" in text and not any(
|
|
400
|
+
tok.endswith("write_neo4j_cypher") for tok in prescribed
|
|
401
|
+
):
|
|
402
|
+
errors.append(
|
|
403
|
+
f"[verify] skill={ownership_key} specialist={specialist} "
|
|
404
|
+
f"mergecypher-unexecutable=no-write-cypher-tool-prescribed"
|
|
405
|
+
)
|
|
317
406
|
for tok, ctx in forbidden:
|
|
318
407
|
errors.append(
|
|
319
408
|
f"[verify] skill={ownership_key} specialist={specialist} "
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAyB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAyB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAoUtD,CAAA"}
|