@rubytech/create-maxy-code 0.1.469 → 0.1.471
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/dist/index.js +40 -0
- package/package.json +1 -1
- package/payload/platform/config/brand.json +2 -1
- package/payload/platform/docs/superpowers/plans/2026-07-18-graph-native-ledger.md +807 -0
- package/payload/platform/docs/superpowers/specs/2026-07-18-graph-native-ledger-design.md +241 -0
- package/payload/platform/lib/ledger-core/dist/ageing.d.ts +14 -0
- package/payload/platform/lib/ledger-core/dist/ageing.d.ts.map +1 -0
- package/payload/platform/lib/ledger-core/dist/ageing.js +38 -0
- package/payload/platform/lib/ledger-core/dist/ageing.js.map +1 -0
- package/payload/platform/lib/ledger-core/dist/balance.d.ts +25 -0
- package/payload/platform/lib/ledger-core/dist/balance.d.ts.map +1 -0
- package/payload/platform/lib/ledger-core/dist/balance.js +38 -0
- package/payload/platform/lib/ledger-core/dist/balance.js.map +1 -0
- package/payload/platform/lib/ledger-core/dist/index.d.ts +5 -0
- package/payload/platform/lib/ledger-core/dist/index.d.ts.map +1 -0
- package/payload/platform/lib/ledger-core/dist/index.js +5 -0
- package/payload/platform/lib/ledger-core/dist/index.js.map +1 -0
- package/payload/platform/lib/ledger-core/dist/money.d.ts +12 -0
- package/payload/platform/lib/ledger-core/dist/money.d.ts.map +1 -0
- package/payload/platform/lib/ledger-core/dist/money.js +16 -0
- package/payload/platform/lib/ledger-core/dist/money.js.map +1 -0
- package/payload/platform/lib/ledger-core/dist/reconcile.d.ts +51 -0
- package/payload/platform/lib/ledger-core/dist/reconcile.d.ts.map +1 -0
- package/payload/platform/lib/ledger-core/dist/reconcile.js +77 -0
- package/payload/platform/lib/ledger-core/dist/reconcile.js.map +1 -0
- package/payload/platform/lib/ledger-core/package.json +16 -0
- package/payload/platform/lib/ledger-core/src/__tests__/ageing.test.ts +42 -0
- package/payload/platform/lib/ledger-core/src/__tests__/balance.test.ts +48 -0
- package/payload/platform/lib/ledger-core/src/__tests__/reconcile.test.ts +87 -0
- package/payload/platform/lib/ledger-core/src/ageing.ts +51 -0
- package/payload/platform/lib/ledger-core/src/balance.ts +52 -0
- package/payload/platform/lib/ledger-core/src/index.ts +4 -0
- package/payload/platform/lib/ledger-core/src/money.ts +17 -0
- package/payload/platform/lib/ledger-core/src/reconcile.ts +109 -0
- package/payload/platform/lib/ledger-core/tsconfig.json +6 -0
- package/payload/platform/neo4j/schema.cypher +16 -0
- package/payload/platform/package.json +2 -2
- package/payload/platform/plugins/.claude-plugin/marketplace.json +10 -0
- package/payload/platform/plugins/admin/hooks/lib/maxy-mcp-plugins.txt +2 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +171 -2
- package/payload/platform/plugins/cloudflare/bin/__tests__/portal-brand-css.test.sh +139 -0
- package/payload/platform/plugins/cloudflare/bin/portal-brand-css.mjs +128 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-enrol.test.ts +1 -1
- package/payload/platform/plugins/cloudflare/mcp/__tests__/skill-contract.test.ts +25 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/template-config.test.ts +55 -3
- package/payload/platform/plugins/cloudflare/skills/data-portal/SKILL.md +38 -3
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/{public/portal.css → portal.css} +13 -2
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/wrangler.toml +1 -1
- package/payload/platform/plugins/docs/references/admin-ui.md +48 -0
- package/payload/platform/plugins/docs/references/google-guide.md +68 -0
- package/payload/platform/plugins/docs/references/internals.md +1 -1
- package/payload/platform/plugins/docs/references/ledger.md +43 -0
- package/payload/platform/plugins/email/PLUGIN.md +4 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/display-truncation.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/display-truncation.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/display-truncation.test.js +196 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/display-truncation.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/source-fetch-efficiency.test.js +10 -8
- package/payload/platform/plugins/email/mcp/dist/__tests__/source-fetch-efficiency.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/truncation-tool-output.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/truncation-tool-output.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/truncation-tool-output.test.js +110 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/truncation-tool-output.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +22 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js +90 -36
- package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.js +6 -2
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.js +6 -2
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.js.map +1 -1
- package/payload/platform/plugins/email/skills/email-ingest/SKILL.md +4 -0
- package/payload/platform/plugins/google/.claude-plugin/plugin.json +21 -0
- package/payload/platform/plugins/google/PLUGIN.md +104 -0
- package/payload/platform/plugins/google/lib/mcp-spawn-tee/index.js +193 -0
- package/payload/platform/plugins/google/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.d.ts +2 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.js +60 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/calendar-tools.test.d.ts +2 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/calendar-tools.test.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/calendar-tools.test.js +48 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/calendar-tools.test.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/google-client.test.d.ts +2 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/google-client.test.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/google-client.test.js +25 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/google-client.test.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/index-registration.test.d.ts +2 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/index-registration.test.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/index-registration.test.js +40 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/index-registration.test.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/pending-store.test.d.ts +2 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/pending-store.test.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/pending-store.test.js +35 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/pending-store.test.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/token-store.test.d.ts +2 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/token-store.test.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/token-store.test.js +85 -0
- package/payload/platform/plugins/google/mcp/dist/__tests__/token-store.test.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/auth/pending-store.d.ts +25 -0
- package/payload/platform/plugins/google/mcp/dist/auth/pending-store.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/auth/pending-store.js +87 -0
- package/payload/platform/plugins/google/mcp/dist/auth/pending-store.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/auth/token-store.d.ts +46 -0
- package/payload/platform/plugins/google/mcp/dist/auth/token-store.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/auth/token-store.js +138 -0
- package/payload/platform/plugins/google/mcp/dist/auth/token-store.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/index.d.ts +25 -0
- package/payload/platform/plugins/google/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/index.js +300 -0
- package/payload/platform/plugins/google/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/lib/google-client.d.ts +28 -0
- package/payload/platform/plugins/google/mcp/dist/lib/google-client.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/lib/google-client.js +102 -0
- package/payload/platform/plugins/google/mcp/dist/lib/google-client.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/lib/log.d.ts +3 -0
- package/payload/platform/plugins/google/mcp/dist/lib/log.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/lib/log.js +16 -0
- package/payload/platform/plugins/google/mcp/dist/lib/log.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-info.d.ts +12 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-info.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-info.js +23 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-info.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-list.d.ts +12 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-list.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-list.js +9 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-list.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-register.d.ts +42 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-register.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-register.js +102 -0
- package/payload/platform/plugins/google/mcp/dist/tools/account-register.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-cancel.d.ts +10 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-cancel.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-cancel.js +9 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-cancel.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-create.d.ts +20 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-create.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-create.js +25 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-create.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-event.d.ts +6 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-event.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-event.js +7 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-event.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-freebusy.d.ts +14 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-freebusy.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-freebusy.js +16 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-freebusy.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-list.d.ts +44 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-list.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-list.js +36 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-list.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-respond.d.ts +16 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-respond.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-respond.js +29 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-respond.js.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-update.d.ts +16 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-update.d.ts.map +1 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-update.js +32 -0
- package/payload/platform/plugins/google/mcp/dist/tools/calendar-update.js.map +1 -0
- package/payload/platform/plugins/google/mcp/package.json +20 -0
- package/payload/platform/plugins/google/references/auth.md +35 -0
- package/payload/platform/plugins/ledger/.claude-plugin/plugin.json +21 -0
- package/payload/platform/plugins/ledger/PLUGIN.md +82 -0
- package/payload/platform/plugins/ledger/lib/mcp-spawn-tee/index.js +193 -0
- package/payload/platform/plugins/ledger/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/ledger/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/ledger/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/index.js +168 -0
- package/payload/platform/plugins/ledger/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/ids.d.ts +4 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/ids.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/ids.js +0 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/ids.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/neo4j.js +40 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/read.d.ts +29 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/read.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/read.js +138 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/read.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/types.d.ts +47 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/types.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/types.js +14 -0
- package/payload/platform/plugins/ledger/mcp/dist/lib/types.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/balance.d.ts +18 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/balance.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/balance.js +23 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/balance.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/cash-record.d.ts +26 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/cash-record.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/cash-record.js +33 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/cash-record.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/invoice-record.d.ts +27 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/invoice-record.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/invoice-record.js +40 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/invoice-record.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/payment-record.d.ts +46 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/payment-record.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/payment-record.js +68 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/payment-record.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/reconcile.d.ts +20 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/reconcile.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/reconcile.js +30 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/reconcile.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/statement.d.ts +26 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/statement.d.ts.map +1 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/statement.js +35 -0
- package/payload/platform/plugins/ledger/mcp/dist/tools/statement.js.map +1 -0
- package/payload/platform/plugins/ledger/mcp/package.json +21 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/ledger-vertical-coverage.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/ledger-vertical-coverage.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/ledger-vertical-coverage.test.js +81 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/ledger-vertical-coverage.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts +9 -7
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js +10 -8
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js.map +1 -1
- package/payload/platform/plugins/memory/references/schema-base.md +22 -0
- package/payload/platform/plugins/memory/references/schema-construction.md +0 -18
- package/payload/platform/plugins/scheduling/PLUGIN.md +20 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/meeting-write.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/meeting-write.js +11 -2
- package/payload/platform/plugins/scheduling/mcp/dist/lib/meeting-write.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +3 -3
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/activity-rows.d.ts +138 -0
- package/payload/platform/services/claude-session-manager/dist/activity-rows.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/activity-rows.js +268 -0
- package/payload/platform/services/claude-session-manager/dist/activity-rows.js.map +1 -0
- 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 +20 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +6 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +42 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +10 -1
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts +80 -6
- package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-census.js +96 -20
- package/payload/platform/services/claude-session-manager/dist/pty-census.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js +5 -1
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js.map +1 -1
- package/payload/platform/templates/specialists/agents/database-operator.md +1 -1
- package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
- package/payload/platform/templates/specialists/agents/project-manager.md +1 -1
- package/payload/server/{chunk-POBXIHOF.js → chunk-BSTIQX52.js} +59 -1
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/public/activity.html +17 -0
- package/payload/server/public/assets/AdminLoginScreens-Rf94VD9w.js +1 -0
- package/payload/server/public/assets/AdminShell-CyGKg7MG.js +2 -0
- package/payload/server/public/assets/Checkbox-B0jmI2y2.js +1 -0
- package/payload/server/public/assets/HeaderMenu-BnTYGNaB.js +9 -0
- package/payload/server/public/assets/{useSubAccountSwitcher-pu0jjLCz.css → HeaderMenu-DtIEBHOU.css} +1 -1
- package/payload/server/public/assets/activity-BOBTWFr-.js +1 -0
- package/payload/server/public/assets/admin-HDLzwbLl.js +1 -0
- package/payload/server/public/assets/{arc-qKfXIt8v.js → arc-CFMJyMm-.js} +1 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-Cypt5qHL.js +1 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-DkVrGn7G.js → architectureDiagram-Q4EWVU46-CmOpXLsH.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DqavswGH.js → blockDiagram-DXYQGD6D-CmS8f9YF.js} +1 -1
- package/payload/server/public/assets/browser-D4_XLSSm.js +1 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-B7fyKiXe.js → c4Diagram-AHTNJAMY-BXIjMl6A.js} +1 -1
- package/payload/server/public/assets/calendar-s5V_gbI7.js +1 -0
- package/payload/server/public/assets/channel-DhrFAm7m.js +1 -0
- package/payload/server/public/assets/chat-40WyKzGb.js +1 -0
- package/payload/server/public/assets/chevron-left-C35qGP5f.js +1 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-DsgMtGkv.js → chunk-2KRD3SAO-D4fktAwW.js} +1 -1
- package/payload/server/public/assets/{chunk-336JU56O-CkdISfNt.js → chunk-336JU56O-C2MKnRTj.js} +2 -2
- package/payload/server/public/assets/chunk-426QAEUC-BhU7-TyS.js +1 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-CYpiF2bl.js → chunk-4BX2VUAB-C13Wz3zS.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-CWyc_F7v.js → chunk-4TB4RGXK-CalYahTR.js} +1 -1
- package/payload/server/public/assets/{chunk-55IACEB6-BbzKMw2Z.js → chunk-55IACEB6-TmOKdy8a.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-u19Nai9e.js → chunk-5FUZZQ4R-C-i0BVag.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-Ba8by6Uy.js → chunk-5PVQY5BW-D6bJMLnf.js} +1 -1
- package/payload/server/public/assets/{chunk-67CJDMHE-BwUuxtyb.js → chunk-67CJDMHE-Cif9Uu5C.js} +1 -1
- package/payload/server/public/assets/{chunk-7N4EOEYR-BRH9iM9L.js → chunk-7N4EOEYR-WjTHCXnd.js} +1 -1
- package/payload/server/public/assets/{chunk-AA7GKIK3-BGoztgLL.js → chunk-AA7GKIK3-CwCfdQmb.js} +1 -1
- package/payload/server/public/assets/{chunk-BSJP7CBP-C5GDAZTl.js → chunk-BSJP7CBP-9A67yXwT.js} +1 -1
- package/payload/server/public/assets/{chunk-CIAEETIT-ChY32VPS.js → chunk-CIAEETIT-DPMiWSBi.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-CPSD3p6p.js → chunk-EDXVE4YY-B9PBdwiT.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-D1oL-iUr.js → chunk-ENJZ2VHE-CM5OqcQ5.js} +1 -1
- package/payload/server/public/assets/{chunk-FMBD7UC4-CPvYEr54.js → chunk-FMBD7UC4-Bmt_ZRlV.js} +1 -1
- package/payload/server/public/assets/{chunk-FOC6F5B3-9Yyj7Vbz.js → chunk-FOC6F5B3-DfGJGxpX.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-BaYgh8FR.js → chunk-ICPOFSXX-D6M89DA0.js} +2 -2
- package/payload/server/public/assets/{chunk-K5T4RW27-5ucpeRvm.js → chunk-K5T4RW27-DMpoaqw2.js} +1 -1
- package/payload/server/public/assets/{chunk-KGLVRYIC-DW-FHk7T.js → chunk-KGLVRYIC-DYUFgri2.js} +1 -1
- package/payload/server/public/assets/{chunk-LIHQZDEY-CGGVfAyG.js → chunk-LIHQZDEY-x3LmeKmx.js} +1 -1
- package/payload/server/public/assets/{chunk-ORNJ4GCN-Bv8EUa5d.js → chunk-ORNJ4GCN-BeuNAWkW.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-C1mXJnyw.js → chunk-OYMX7WX6-Bv6gisQ6.js} +1 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-7_kS3RBy.js +1 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-PwSQz6EP.js → chunk-U2HBQHQK-C2iT9Av2.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP--NPHTBlU.js → chunk-X2U36JSP-Bd6bv87A.js} +1 -1
- package/payload/server/public/assets/{chunk-XPW4576I-Bbc7Da32.js → chunk-XPW4576I-ByFnN4JO.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-D-9v8e--.js → chunk-YZCP3GAM-Bt8I6ZDb.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-CMPg670Q.js → chunk-ZZ45TVLE-DBMPgZ_A.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BrWqm88p.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-D0wzG5Fd.js +1 -0
- package/payload/server/public/assets/clone-DQA-nNrl.js +1 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-NVSb1Bhy.js → cose-bilkent-S5V4N54A-DgLEaApT.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-V2Ai1DFl.js → dagre-KV5264BT-kWVPgmmL.js} +1 -1
- package/payload/server/public/assets/{dagre-QfLcO-1j.js → dagre-mSazqXgG.js} +1 -1
- package/payload/server/public/assets/data-Bq0vU3qJ.js +1 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-Caw21693.js → diagram-5BDNPKRD-BHe_omJD.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-CgwVkT2q.js → diagram-G4DWMVQ6-fUFsmM3x.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-DFUrLZhs.js → diagram-MMDJMWI5-DmujPLlM.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-CEEiEuZJ.js → diagram-TYMM5635-B7Aoas89.js} +1 -1
- package/payload/server/public/assets/{dist-Cvgxm7qv.js → dist-C9D_xz81.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-CG10NrT3.js → erDiagram-SMLLAGMA-6hS1rGiO.js} +1 -1
- package/payload/server/public/assets/{flatten-DAO0sfCM.js → flatten-BXzaHgtL.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BqkV9Okv.js → flowDiagram-DWJPFMVM-Bqhr_r5b.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-DRiCDQF6.js → ganttDiagram-T4ZO3ILL-B8kjyN4o.js} +1 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-C_-XjxLd.js +1 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-BZV2voyy.js → gitGraphDiagram-UUTBAWPF--TTRq4ir.js} +1 -1
- package/payload/server/public/assets/{graph-BZiudUGr.js → graph-C252ZHjp.js} +3 -3
- package/payload/server/public/assets/graph-labels-DzPbbhLc.js +1 -0
- package/payload/server/public/assets/{graphlib-DGPThX8M.js → graphlib-CWkjawc5.js} +1 -1
- package/payload/server/public/assets/info-OMHHGYJF-BH8yDCfL.js +1 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-D8U4M0pK.js +2 -0
- package/payload/server/public/assets/{isEmpty-Cb_U81C6.js → isEmpty-uB1dEu_Z.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BKsAxSvp.js → ishikawaDiagram-UXIWVN3A-CR8B7VzM.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-CmliuOd-.js → journeyDiagram-VCZTEJTY-45lWAvtq.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DAlElMb-.js → kanban-definition-6JOO6SKY-DkrPXLVb.js} +1 -1
- package/payload/server/public/assets/{line-DKZqLKAC.js → line-Db0H446a.js} +1 -1
- package/payload/server/public/assets/{linear-CbSGdh1x.js → linear-X3O7lwK3.js} +1 -1
- package/payload/server/public/assets/maximize-2-CEbXFpQT.js +1 -0
- package/payload/server/public/assets/{mermaid-parser.core-DFvbao9C.js → mermaid-parser.core-CixBHOya.js} +2 -2
- package/payload/server/public/assets/{mermaid.core-C0vEBxDm.js → mermaid.core-BGQq98L7.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-CShASUKd.js → mindmap-definition-QFDTVHPH-v9cJl1mj.js} +1 -1
- package/payload/server/public/assets/operator-zKk4HMdX.js +1 -0
- package/payload/server/public/assets/{ordinal-H0tVmBDP.js → ordinal-CZY9laxg.js} +1 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-Bajcns4r.js +1 -0
- package/payload/server/public/assets/page-BrmN_vzV.js +1 -0
- package/payload/server/public/assets/page-Cts-ESBe.js +32 -0
- package/payload/server/public/assets/{pdf-render-jAQU0nXt.js → pdf-render-7HZBTZ0_.js} +1 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-D7hjM5w1.js +1 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-CBZHpDAJ.js → pieDiagram-DEJITSTG-DQ0b6edX.js} +1 -1
- package/payload/server/public/assets/public-BItzHBc0.js +1 -0
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-n3bB3K91.js → quadrantDiagram-34T5L4WZ-B64mj7Ei.js} +1 -1
- package/payload/server/public/assets/radar-PYXPWWZC-B46d5x7a.js +1 -0
- package/payload/server/public/assets/{reduce-DAvwat-a.js → reduce-BGQzAenn.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-DiDvQK3c.js → requirementDiagram-MS252O5E-CE2JIEWo.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-B0EYGhGx.js +1 -0
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DWDQQZmd.js → sankeyDiagram-XADWPNL6-Cmt5cfCz.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DmAqRlBT.js → sequenceDiagram-FGHM5R23-B5vVn_sw.js} +1 -1
- package/payload/server/public/assets/{src-DV4LKv2E.js → src-BTKk8KAG.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-D4R-n6bZ.js → stateDiagram-FHFEXIEX-DiUEJ-RZ.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DIm3XuAD.js +1 -0
- package/payload/server/public/assets/tasks-ClE8-be8.js +1 -0
- package/payload/server/public/assets/time-entry-format-BwjGLnXu.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CjiHGP4l.js → timeline-definition-GMOUNBTQ-C9jprDVw.js} +1 -1
- package/payload/server/public/assets/treeView-SZITEDCU-3XQh5xQ1.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-DwR-_l5z.js +1 -0
- package/payload/server/public/assets/triangle-alert-DejWYn1x.js +1 -0
- package/payload/server/public/assets/useCopyFeedback-CpSgOavK.js +1 -0
- package/payload/server/public/assets/useSelectionMode-ZQZQUgze.js +1 -0
- package/payload/server/public/assets/useSubAccountSwitcher-DuRLvCfO.js +1 -0
- package/payload/server/public/assets/useVoiceRecorder-BTYYeUJW.js +2 -0
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-CBdDQ7c-.js → vennDiagram-DHZGUBPP-DWqQJ9X0.js} +1 -1
- package/payload/server/public/assets/wardley-RL74JXVD-DZp9oCGv.js +1 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BlIQPKLb.js → wardleyDiagram-NUSXRM2D-Dg6c2Voh.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-CslKgh9B.js → xychartDiagram-5P7HB3ND-EhN-zeDj.js} +1 -1
- package/payload/server/public/browser.html +7 -6
- package/payload/server/public/calendar.html +8 -7
- package/payload/server/public/chat.html +15 -14
- package/payload/server/public/data.html +14 -12
- package/payload/server/public/graph.html +13 -12
- package/payload/server/public/index.html +17 -15
- package/payload/server/public/operator.html +17 -16
- package/payload/server/public/public.html +15 -14
- package/payload/server/public/tasks.html +7 -6
- package/payload/server/server.js +1064 -536
- package/payload/server/public/assets/AdminLoginScreens-Bed8SDxY.js +0 -1
- package/payload/server/public/assets/AdminShell-BLh9O6dn.js +0 -2
- package/payload/server/public/assets/Checkbox-BC_KSbpS.js +0 -1
- package/payload/server/public/assets/admin-DfWgJVI3.js +0 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-FPHT7s-C.js +0 -1
- package/payload/server/public/assets/browser-C0vkv-hH.js +0 -1
- package/payload/server/public/assets/calendar-_pfHw0Hp.js +0 -1
- package/payload/server/public/assets/channel-j70eMvcL.js +0 -1
- package/payload/server/public/assets/chat-DYT5H81o.js +0 -1
- package/payload/server/public/assets/chevron-left-BnpVBu51.js +0 -1
- package/payload/server/public/assets/chunk-426QAEUC-D-NcAlTW.js +0 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-CAwbQBtf.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-Ct6Rn0vt.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-B_2XCIFv.js +0 -1
- package/payload/server/public/assets/clone-DjPWA_NH.js +0 -1
- package/payload/server/public/assets/data-CR-fbPWr.js +0 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-B8Hx7f-D.js +0 -1
- package/payload/server/public/assets/graph-labels-BzmmJwCR.js +0 -1
- package/payload/server/public/assets/info-OMHHGYJF-BicCJTqU.js +0 -1
- package/payload/server/public/assets/infoDiagram-42DDH7IO-tf-8rOez.js +0 -2
- package/payload/server/public/assets/maximize-2-Bhdsv0U-.js +0 -1
- package/payload/server/public/assets/operator-gm2eP4r6.js +0 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-Ckn_5hq0.js +0 -1
- package/payload/server/public/assets/page-8AB3jUa_.js +0 -1
- package/payload/server/public/assets/page-BoPorLg-.js +0 -32
- package/payload/server/public/assets/pie-ZZUOXDRM-DzlGQW3J.js +0 -1
- package/payload/server/public/assets/public-DqJk6qgW.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-BHo2YD8b.js +0 -1
- package/payload/server/public/assets/rotate-ccw-D_5cETGt.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BcFRbGRu.js +0 -1
- package/payload/server/public/assets/tasks-EyKLXINi.js +0 -1
- package/payload/server/public/assets/time-entry-format-DAwmmR3i.js +0 -1
- package/payload/server/public/assets/treeView-SZITEDCU-BtRr5vXp.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-D8p0sbyo.js +0 -1
- package/payload/server/public/assets/useCopyFeedback-rOWd_lzl.js +0 -1
- package/payload/server/public/assets/useSelectionMode-DDmLmPph.js +0 -1
- package/payload/server/public/assets/useSubAccountSwitcher-CU-lOxTd.js +0 -9
- package/payload/server/public/assets/useVoiceRecorder-azG8zSUI.js +0 -2
- package/payload/server/public/assets/wardley-RL74JXVD-DgMn-9ZJ.js +0 -1
- /package/payload/platform/plugins/cloudflare/skills/data-portal/{template/schema.sql → schema.sql} +0 -0
- /package/payload/platform/plugins/cloudflare/skills/data-portal/template/{public/index.html → index.html} +0 -0
- /package/payload/platform/plugins/cloudflare/skills/data-portal/template/{public/portal.js → portal.js} +0 -0
- /package/payload/server/public/assets/{_baseFor-D3BqAOBr.js → _baseFor-CMWvz0uA.js} +0 -0
- /package/payload/server/public/assets/{array-iYP9fzJp.js → array-Cny_NT6T.js} +0 -0
- /package/payload/server/public/assets/{chunk-Ck5AOu5v.js → chunk-TPjIAO9U.js} +0 -0
- /package/payload/server/public/assets/{cytoscape.esm-BQSBzPsB.js → cytoscape.esm-De0CCmB2.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-BrdA1gDi.js → defaultLocale-BahRht8U.js} +0 -0
- /package/payload/server/public/assets/{init-Bx0S6pkp.js → init-DoIvjoJ_.js} +0 -0
- /package/payload/server/public/assets/{katex-BsiH_a6d.js → katex-Bfn1OZEl.js} +0 -0
- /package/payload/server/public/assets/{path-BLSgTy3w.js → path-CTezU8L5.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-ClBMtM1g.js → preload-helper-CT1Z6Pdu.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-BMOtDaaS.js → rough.esm-BJo4pvXu.js} +0 -0
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
/* Data portal styles. Plain CSS, dp- prefixed
|
|
2
|
-
|
|
1
|
+
/* Data portal styles. Plain CSS, dp- prefixed. The :root values below are
|
|
2
|
+
template defaults and are nobody's brand: the assemble step runs
|
|
3
|
+
bin/portal-brand-css.mjs, which rewrites this block from the install's
|
|
4
|
+
consent.palette. They must stay legible on their own, because a brand that
|
|
5
|
+
declares no palette keeps them. --dp-muted is not brand-carried and survives
|
|
6
|
+
on every brand. */
|
|
3
7
|
:root {
|
|
4
8
|
--dp-ink: #14181f;
|
|
5
9
|
--dp-muted: #667085;
|
|
@@ -13,6 +17,13 @@
|
|
|
13
17
|
box-sizing: border-box;
|
|
14
18
|
}
|
|
15
19
|
|
|
20
|
+
/* `hidden` is only display:none in the UA stylesheet, so any author `display`
|
|
21
|
+
beats it — .dp-login's display:flex did exactly that and left the sign-in
|
|
22
|
+
form on screen after sign-in. Keep the attribute authoritative everywhere. */
|
|
23
|
+
[hidden] {
|
|
24
|
+
display: none !important;
|
|
25
|
+
}
|
|
26
|
+
|
|
16
27
|
body {
|
|
17
28
|
margin: 0;
|
|
18
29
|
padding: 2rem 1rem;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# __D1_DATABASE_ID__ the id printed by `wrangler d1 create`
|
|
6
6
|
# __R2_BUCKET_NAME__ the R2 bucket name (<accountId>-<purpose>)
|
|
7
7
|
name = "__PROJECT_NAME__"
|
|
8
|
-
pages_build_output_dir = "
|
|
8
|
+
pages_build_output_dir = "."
|
|
9
9
|
compatibility_date = "2024-01-01"
|
|
10
10
|
compatibility_flags = ["nodejs_compat"]
|
|
11
11
|
|
|
@@ -336,6 +336,54 @@ A 0.000 reading that persists across many polls while `top` shows load
|
|
|
336
336
|
is the delta-cache regression signature (the single-flight promise was
|
|
337
337
|
not released).
|
|
338
338
|
|
|
339
|
+
## Activity view
|
|
340
|
+
|
|
341
|
+
Source:
|
|
342
|
+
[`server/routes/admin/activity.ts`](../../../ui/server/routes/admin/activity.ts)
|
|
343
|
+
(house-gated proxy) and
|
|
344
|
+
[`platform/ui/app/activity/page.tsx`](../../../ui/app/activity/page.tsx)
|
|
345
|
+
(page). CSS lives under `.activity*` in
|
|
346
|
+
[`platform/ui/app/globals.css`](../../../ui/app/globals.css).
|
|
347
|
+
|
|
348
|
+
**What it shows.** `/activity` lists every live session across every account
|
|
349
|
+
in the install, one row per session: account, title, model, status, age, idle,
|
|
350
|
+
turn count, RSS, CPU %, cumulative tokens, and imputed GBP cost. Columns sort
|
|
351
|
+
on click. The sidebar session list is scoped to the caller's own account, so
|
|
352
|
+
this is the only surface that answers "where is the activity" install-wide.
|
|
353
|
+
|
|
354
|
+
**House account only.** The manager binds loopback and gates nothing, so the
|
|
355
|
+
scoping lives on the admin route. The house is resolved by the same three-arm
|
|
356
|
+
predicate the spawn path uses (`resolveAccountDir`): exactly one `role:"house"`
|
|
357
|
+
account, else a sole account declaring no role, else deny — two houses is
|
|
358
|
+
corruption and denies rather than picking one. Both operands are null-checked,
|
|
359
|
+
because `caller === house` alone is true for two nulls. A caller pinned
|
|
360
|
+
elsewhere receives 403 and a logged `op=gate decision=deny` carrying its
|
|
361
|
+
reason. The `HeaderMenu` item is admin-variant only for the same reason.
|
|
362
|
+
|
|
363
|
+
Be precise about what this is. Under the install-wide access model every
|
|
364
|
+
authenticated install admin can re-pin to any account via
|
|
365
|
+
`POST /api/admin/session/switch-account`, so the gate is a scope selector, not
|
|
366
|
+
an authority boundary between privilege levels.
|
|
367
|
+
|
|
368
|
+
**Where the numbers come from.** The manager assembles them at its own
|
|
369
|
+
`GET /activity`, joining the live PTY set, the watcher's per-row `accountId`,
|
|
370
|
+
the JSONL enumerator (turns, model, tokens, last message), the PTY census
|
|
371
|
+
(RSS and CPU), and a bounded metering fan-out. The admin route adds the one
|
|
372
|
+
fact the manager cannot see: the `data/accounts` directory count, taken
|
|
373
|
+
independently of `listValidAccounts()` so a rejected account shows as
|
|
374
|
+
`onDisk > valid` rather than silently shortening the list.
|
|
375
|
+
|
|
376
|
+
**Reading the cells.** A dash means unmeasured, never zero — an unmeasured CPU
|
|
377
|
+
is not an idle session. Cost is the price arm matching the row's own model,
|
|
378
|
+
because the metering core prices one token count under both Opus and Sonnet
|
|
379
|
+
assumptions without knowing which ran; a model in neither family shows a dash.
|
|
380
|
+
Every dashed cost carries its reason as a tooltip, so an unpriced model, a
|
|
381
|
+
failed parse and a session with no transcript are distinguishable rather than
|
|
382
|
+
three readings of the same glyph.
|
|
383
|
+
A session whose sidecar carries no account shows `untagged` rather than being
|
|
384
|
+
folded into the house. The census age is rendered because the snapshot is a 60s
|
|
385
|
+
sample and a dead collector emits nothing.
|
|
386
|
+
|
|
339
387
|
## Sidebar surfaces
|
|
340
388
|
|
|
341
389
|
The sidebar is the entire left column of the admin UI. Its full layout,
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Google Calendar
|
|
2
|
+
|
|
3
|
+
Live Google Calendar for one account: read the user's real events, and create,
|
|
4
|
+
update, cancel, respond to and check availability against them. Eleven tools,
|
|
5
|
+
admin agent only.
|
|
6
|
+
|
|
7
|
+
There is deliberately no Gmail surface here. Mail runs on the `email` plugin's
|
|
8
|
+
IMAP/SMTP path, and Gmail's read/modify scopes are *restricted*, which would
|
|
9
|
+
force Google's annual third-party security assessment. Calendar is only a
|
|
10
|
+
*sensitive* scope, so it needs the lighter brand verification.
|
|
11
|
+
|
|
12
|
+
## Connecting an account
|
|
13
|
+
|
|
14
|
+
`google-account-register` returns a consent URL. Relay it to the user: they open
|
|
15
|
+
it on any device, sign in, and approve. Google redirects to this install's
|
|
16
|
+
public host at `/api/google/oauth/callback`, which exchanges the code and stores
|
|
17
|
+
encrypted tokens. `google-account-register-poll` then reports the outcome.
|
|
18
|
+
|
|
19
|
+
The register tool does not block and does not wait. A second register while one
|
|
20
|
+
is already live is refused rather than overwriting it; that refusal names how
|
|
21
|
+
long the live one has been pending.
|
|
22
|
+
|
|
23
|
+
One account can connect several Google accounts. Every operational tool takes an
|
|
24
|
+
optional `account` (the email address). Omit it when there is one; with two or
|
|
25
|
+
more, omitting it returns a refusal listing them.
|
|
26
|
+
|
|
27
|
+
## Reading and controlling
|
|
28
|
+
|
|
29
|
+
- `google-calendar-list` — events in the next `rangeDays` days (default 7).
|
|
30
|
+
Recurring series are expanded into instances, so this returns what the user
|
|
31
|
+
actually sees in their calendar.
|
|
32
|
+
- `google-calendar-event` — one event by id.
|
|
33
|
+
- `google-calendar-create` — times are RFC3339 (`2026-07-20T09:00:00Z`) unless
|
|
34
|
+
`allDay` is true, in which case they are plain dates (`2026-07-20`).
|
|
35
|
+
- `google-calendar-update` — changes only the fields you name. Omitted fields
|
|
36
|
+
are left alone, so an update never blanks something by accident.
|
|
37
|
+
- `google-calendar-cancel` — deletes the event and notifies attendees.
|
|
38
|
+
- `google-calendar-respond` — accept, decline or tentatively accept an
|
|
39
|
+
invitation. Every other attendee's response is preserved.
|
|
40
|
+
- `google-calendar-freebusy` — busy blocks between two times. Free time is the
|
|
41
|
+
complement, which you work out.
|
|
42
|
+
|
|
43
|
+
## Checking health
|
|
44
|
+
|
|
45
|
+
`google-account-list` answers "is anything connected?" from local stores with no
|
|
46
|
+
network call. Read each entry's `status` — a count alone is not "connected", and
|
|
47
|
+
an unreadable store still counts. `google-account-info` gives one account's auth
|
|
48
|
+
state, including whether its access token is near expiry and which scopes were
|
|
49
|
+
granted.
|
|
50
|
+
|
|
51
|
+
## When something is wrong
|
|
52
|
+
|
|
53
|
+
**"GOOGLE_CLIENT_ID is not configured"** — this brand has no Google vendor app
|
|
54
|
+
yet. Nothing the operator does on the device fixes it; the brand needs its own
|
|
55
|
+
Google Cloud OAuth client. See `platform/plugins/google/references/auth.md`.
|
|
56
|
+
|
|
57
|
+
**A 403 naming insufficient scope** — the connected account approved something
|
|
58
|
+
narrower than the full calendar scope. Re-run `google-account-register` so they
|
|
59
|
+
re-consent.
|
|
60
|
+
|
|
61
|
+
**The user re-consents every week** — the brand's Google app is still in
|
|
62
|
+
Testing, where Google caps refresh tokens at seven days and limits the app to
|
|
63
|
+
100 named test users. Completing brand verification removes both. This is a
|
|
64
|
+
property of the vendor app, not a fault in the connection.
|
|
65
|
+
|
|
66
|
+
**A registration never completes** — the consent URL was opened but not
|
|
67
|
+
approved, or the callback could not be reached. `google-account-register-poll`
|
|
68
|
+
reports `expired` once the pending entry outlives Google's code lifetime.
|
|
@@ -327,7 +327,7 @@ This tool is read-only and available to both public and admin agents.
|
|
|
327
327
|
|
|
328
328
|
### When conversations are created
|
|
329
329
|
|
|
330
|
-
`:Conversation` nodes on webchat (admin login, "New conversation" in the burger, a new public visitor) are created lazily. Opening the chat or logging in does not write anything to the graph — {{productName}} only records the conversation once the user sends a second message. This keeps `conversation-search` and the Conversations modal free of one-turn abandoned threads. WhatsApp and Telegram take the opposite posture: every inbound — DM or group, allowed or activation-off, agent-invoked or gated — MERGEs the `:Conversation` and writes a forensic `:Message:WhatsAppMessage` row before any access-control decision. The graph is the durable record of every message the device received, not just the ones the agent replied to. See `.docs/web-chat.md` "Deferred conversation persistence"
|
|
330
|
+
`:Conversation` nodes on webchat (admin login, "New conversation" in the burger, a new public visitor) are created lazily. Opening the chat or logging in does not write anything to the graph — {{productName}} only records the conversation once the user sends a second message. This keeps `conversation-search` and the Conversations modal free of one-turn abandoned threads. WhatsApp and Telegram take the opposite posture: every inbound — DM or group, allowed or activation-off, agent-invoked or gated — MERGEs the `:Conversation` and writes a forensic `:Message:WhatsAppMessage` row before any access-control decision. The graph is the durable record of every message the device received, not just the ones the agent replied to. That forensic row is addressed by cacheKey (`default:<phone>`) on the socket-owning account and deliberately has no session behind it. A WhatsApp sender therefore carries a **second** `:Conversation`: the anchored row written at spawn on the account the session actually runs under, keyed by the session's own deterministic id, which is the row every `MATCH (c:Conversation {sessionId: $SESSION_ID})` resolves. Two rows, two jobs, not duplicates. See `.docs/web-chat.md` "Deferred conversation persistence", `.docs/whatsapp.md` "Session continuity", and `.docs/session-conversation-identity.md` for the per-channel identity contract.
|
|
331
331
|
|
|
332
332
|
Each row in the Conversations modal exposes a `View logs` row-action that opens a popover with three links — **Stream**, **Errors**, **SSE** — each of which targets `/api/admin/logs?type={stream|error|sse}&sessionId={full-id}` in a new tab. The row's 8-char id chip is click-to-copy; hover reveals the full `sessionId` as a tooltip. See `.docs/web-chat.md` "In-chat retrieval" for the route contract and `console.debug` observability.
|
|
333
333
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Ledger
|
|
2
|
+
|
|
3
|
+
A cash book with receivables and payables. It records what you invoiced, what you were billed, what was paid, and money that moved without an invoice, then tells you what is still outstanding.
|
|
4
|
+
|
|
5
|
+
## What it is not
|
|
6
|
+
|
|
7
|
+
It is not double-entry bookkeeping. There is no chart of accounts, no journals, no trial balance. It computes no VAT and handles a single currency. It does not read bank feeds and it does not talk to QuickBooks.
|
|
8
|
+
|
|
9
|
+
If you need statutory accounts, this is not that. It is the answer to "who owes me what, what do I owe, and where did the money go".
|
|
10
|
+
|
|
11
|
+
## The seven things you can ask for
|
|
12
|
+
|
|
13
|
+
**Record an invoice you raised.** A reference, who owes you, the amount, and when it is due.
|
|
14
|
+
|
|
15
|
+
**Record a bill you received.** The same, in the other direction.
|
|
16
|
+
|
|
17
|
+
**Record a payment.** Against either an invoice or a bill. You give the reference, the amount, the date and how it was paid.
|
|
18
|
+
|
|
19
|
+
**Record a credit.** Against an invoice you raised. It reduces what is owed exactly as a payment does.
|
|
20
|
+
|
|
21
|
+
**Record a cash movement.** Money in or out that belongs to no invoice: bank charges, a cash sale, drawings, a refund.
|
|
22
|
+
|
|
23
|
+
**Ask what is outstanding on one document.** You get the total, what has been paid, what has been credited, and what remains.
|
|
24
|
+
|
|
25
|
+
**Ask for a statement.** Everything owed to you and everything you owe, sorted into 0-30, 31-60, 61-90 and 90+ days overdue, plus net cash.
|
|
26
|
+
|
|
27
|
+
## Three behaviours worth knowing about
|
|
28
|
+
|
|
29
|
+
**What is outstanding is never stored.** It is worked out from the payments each time you ask. This means the figure cannot fall out of step with the payments behind it. If it were stored, a payment recorded by any route that forgot to update it would leave the invoice quietly reporting a wrong number, and nothing would fail.
|
|
30
|
+
|
|
31
|
+
**Paying more than is owed is refused.** If an invoice has 4,400 left and you try to record 5,000, nothing is written and you are told the figure that would settle it. It is not rounded down to 4,400 and it is not recorded anyway. A ledger that quietly accepts an impossible payment is worse than one that says no.
|
|
32
|
+
|
|
33
|
+
**Every payment is read back.** After a payment is written, the invoice is re-read from the graph and the outstanding figure is checked against what was expected. If they disagree you are told to stop recording against that invoice until it is sorted out. Writing something is not the same as it having landed.
|
|
34
|
+
|
|
35
|
+
## The health check
|
|
36
|
+
|
|
37
|
+
Some ways this can go wrong announce themselves. Others do not: a payment that ends up attached to no invoice, a stale balance field reappearing, or the same payment recorded twice under two different ids. None of those produce an error at the time, because nothing goes wrong at the moment they happen.
|
|
38
|
+
|
|
39
|
+
So there is a check that runs by itself every fifteen minutes and writes one line to the log beginning `[ledger-census]`. When it is healthy the counters are all zero. When something is wrong the line ends with `alarm=true` and says which of the four it found.
|
|
40
|
+
|
|
41
|
+
You can also ask for that check on demand at any time, and it reports the same thing in plain words.
|
|
42
|
+
|
|
43
|
+
If you never see the line at all, that is itself the problem: it means the periodic check is not running.
|
|
@@ -106,6 +106,10 @@ Email ingestion is **operator-initiated and human-in-the-loop**. There is no bac
|
|
|
106
106
|
- **Graph history** (`email-graph-query`) — stored email-thread `:ConversationArchive {source:'email'}` rows (with `:Section` chunks) in Neo4j. Use for recall, semantic search, email history questions.
|
|
107
107
|
- **General knowledge** (`memory-search`) — cross-type knowledge graph. Use when the question spans all memory, not just emails.
|
|
108
108
|
|
|
109
|
+
**Naming a mailbox.** When more than one mailbox is configured on the account, `email-read` and `email-search` refuse a call that omits `mailbox`, naming every stored identity. This is deliberate — guessing between them would silently read the wrong mailbox. Call `email-status` to list the configured identities, then pass `mailbox` on every read. A single-mailbox account needs no `mailbox` argument.
|
|
110
|
+
|
|
111
|
+
**Both readers return the newest matches.** When more messages match than `limit` admits, the newest `limit` are returned and the output names the split, e.g. `Showing the newest 20 of 33 matches in the scanned window`. `33` counts matches inside the fetched window, not the whole mailbox. Treat that line as "there is more behind this" and page back with the `next_before_uid` printed alongside it — a truncated result always carries a cursor, and that cursor is the oldest message shown, so the next page lands exactly on what was dropped rather than skipping it. A result with no truncation line showed everything that matched in its window. This is reported separately from the recipient-filter line because the two do not coincide: truncation is only reachable when a recipient filter is active (that is what widens the window past `limit`), but a filter that hides nothing prints no recipient line while still truncating.
|
|
112
|
+
|
|
109
113
|
## Skills
|
|
110
114
|
|
|
111
115
|
| Skill | Purpose |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-truncation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/display-truncation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { formatTruncationLine } from "../lib/imap.js";
|
|
3
|
+
// Task 1777. The display slice is a second way a matching message can vanish
|
|
4
|
+
// from a result, distinct from the recipient filter Task 700 made non-silent.
|
|
5
|
+
// Truncation is only reachable when a recipient filter is active (that is what
|
|
6
|
+
// over-fetches past `limit`), but an active filter that hides nothing emits no
|
|
7
|
+
// recipient line at all — so the two signals do not coincide and truncation is
|
|
8
|
+
// reported on its own.
|
|
9
|
+
describe("formatTruncationLine", () => {
|
|
10
|
+
it("names shown and matched when the display was truncated", () => {
|
|
11
|
+
expect(formatTruncationLine({ shown: 20, matched: 33 })).toBe("Showing the newest 20 of 33 matches in the scanned window; the rest are older \u2014 page back with next_before_uid.");
|
|
12
|
+
});
|
|
13
|
+
it("returns null when nothing was truncated", () => {
|
|
14
|
+
expect(formatTruncationLine({ shown: 13, matched: 13 })).toBeNull();
|
|
15
|
+
});
|
|
16
|
+
it("returns null when no stats were recorded", () => {
|
|
17
|
+
expect(formatTruncationLine(undefined)).toBeNull();
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
let inbox = [];
|
|
21
|
+
function rowFor(uid, fields) {
|
|
22
|
+
const m = inbox.find((x) => x.uid === uid);
|
|
23
|
+
if (!m)
|
|
24
|
+
return null;
|
|
25
|
+
const row = { uid };
|
|
26
|
+
if (fields.envelope) {
|
|
27
|
+
row.envelope = {
|
|
28
|
+
from: [{ address: m.from, name: null }],
|
|
29
|
+
to: [{ address: m.to }],
|
|
30
|
+
cc: [],
|
|
31
|
+
subject: m.subject,
|
|
32
|
+
date: new Date("2026-01-01T00:00:00Z"),
|
|
33
|
+
messageId: `<${m.uid}@x>`,
|
|
34
|
+
inReplyTo: null,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (fields.bodyStructure)
|
|
38
|
+
row.bodyStructure = { type: "text/plain" };
|
|
39
|
+
if (fields.source) {
|
|
40
|
+
row.source = Buffer.from([`From: ${m.from}`, `To: ${m.to}`, `Subject: ${m.subject}`, "", `body-${m.uid}`, ""].join("\r\n"));
|
|
41
|
+
}
|
|
42
|
+
return row;
|
|
43
|
+
}
|
|
44
|
+
const mockClient = {
|
|
45
|
+
connect: vi.fn(async () => { }),
|
|
46
|
+
list: vi.fn(async () => [{ path: "INBOX" }, { path: "Sent", specialUse: "\\Sent" }]),
|
|
47
|
+
getMailboxLock: vi.fn(async () => ({ release: vi.fn() })),
|
|
48
|
+
search: vi.fn(async () => inbox.map((m) => m.uid)),
|
|
49
|
+
fetch: vi.fn(function (range, fields) {
|
|
50
|
+
const uids = range.split(",").map((s) => Number(s.trim()));
|
|
51
|
+
async function* gen() {
|
|
52
|
+
for (const uid of uids) {
|
|
53
|
+
const row = rowFor(uid, fields);
|
|
54
|
+
if (row)
|
|
55
|
+
yield row;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return gen();
|
|
59
|
+
}),
|
|
60
|
+
fetchOne: vi.fn(async (range, fields) => rowFor(Number(range), fields)),
|
|
61
|
+
logout: vi.fn(async () => { }),
|
|
62
|
+
close: vi.fn(() => { }),
|
|
63
|
+
};
|
|
64
|
+
vi.mock("imapflow", () => ({
|
|
65
|
+
ImapFlow: function ImapFlow() {
|
|
66
|
+
return mockClient;
|
|
67
|
+
},
|
|
68
|
+
}));
|
|
69
|
+
import { fetchRecent, searchMessages } from "../lib/imap.js";
|
|
70
|
+
const config = {
|
|
71
|
+
email: "info@rubytech.llc",
|
|
72
|
+
imapHost: "imap.example.com",
|
|
73
|
+
imapPort: 993,
|
|
74
|
+
imapSecurity: "tls",
|
|
75
|
+
};
|
|
76
|
+
function seed(startUid, count) {
|
|
77
|
+
return Array.from({ length: count }, (_, i) => ({
|
|
78
|
+
uid: startUid + i,
|
|
79
|
+
to: "info@rubytech.llc",
|
|
80
|
+
from: `s${i}@x.com`,
|
|
81
|
+
subject: `msg-${startUid + i}`,
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
beforeEach(() => {
|
|
85
|
+
vi.clearAllMocks();
|
|
86
|
+
inbox = [];
|
|
87
|
+
});
|
|
88
|
+
describe("Task 1777 — the newest matches survive the display slice", () => {
|
|
89
|
+
it("fetchRecent returns the newest limit matches, newest first", async () => {
|
|
90
|
+
// 12 seeded; limit 3 with a TO filter over-fetches ×3, so the window is the
|
|
91
|
+
// newest 9 UIDs (103..111). All 9 match, so 3 are shown and 6 are dropped.
|
|
92
|
+
inbox = seed(100, 12);
|
|
93
|
+
mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
|
|
94
|
+
const res = await fetchRecent(config, "pw", { limit: 3, to: ["info@rubytech.llc"] });
|
|
95
|
+
expect(res.messages.map((m) => m.uid)).toEqual([111, 110, 109]);
|
|
96
|
+
expect(res.truncation).toEqual({ shown: 3, matched: 9 });
|
|
97
|
+
});
|
|
98
|
+
it("searchMessages returns the newest limit matches, newest first", async () => {
|
|
99
|
+
// 9 seeded; limit 2 over-fetches ×3, so the window is the newest 6 (203..208).
|
|
100
|
+
inbox = seed(200, 9);
|
|
101
|
+
mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
|
|
102
|
+
const res = await searchMessages(config, "pw", { limit: 2, to: ["info@rubytech.llc"] });
|
|
103
|
+
expect(res.messages.map((m) => m.uid)).toEqual([208, 207]);
|
|
104
|
+
expect(res.truncation).toEqual({ shown: 2, matched: 6 });
|
|
105
|
+
});
|
|
106
|
+
it("reports no truncation when every match is shown", async () => {
|
|
107
|
+
inbox = seed(300, 2);
|
|
108
|
+
mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
|
|
109
|
+
const res = await fetchRecent(config, "pw", { limit: 10, to: ["info@rubytech.llc"] });
|
|
110
|
+
expect(res.messages.map((m) => m.uid)).toEqual([301, 300]);
|
|
111
|
+
expect(res.truncation).toBeUndefined();
|
|
112
|
+
});
|
|
113
|
+
it("replays the reported rubytech.llc case: the newest info@ mail leads", async () => {
|
|
114
|
+
// Envelopes observed live on 2026-07-18 (accountId 20028fb5-…, INBOX).
|
|
115
|
+
// UIDs 4406..4596 are the 20 matches the tool actually returned before the
|
|
116
|
+
// fix; 4730..4839 are the real newest 15, with their real recipients. At
|
|
117
|
+
// the default limit 20 the pre-fix reader returned 4406..4596 and both
|
|
118
|
+
// joshgoff1 messages (4811, 4816) were unreachable.
|
|
119
|
+
const olderMatches = [
|
|
120
|
+
4406, 4407, 4418, 4419, 4420, 4421, 4423, 4440, 4464, 4528,
|
|
121
|
+
4529, 4533, 4534, 4535, 4536, 4542, 4557, 4568, 4573, 4596,
|
|
122
|
+
].map((uid) => ({ uid, to: "info@rubytech.llc", from: "older@x.com", subject: `older-${uid}` }));
|
|
123
|
+
const newest = [
|
|
124
|
+
{ uid: 4730, to: "info@rubytech.llc", from: "Vincenzo.Aliotta@aon.it", subject: "R: RubySDK R&W" },
|
|
125
|
+
{ uid: 4735, to: "info@rubytech.llc", from: "mark@rubysdk.com", subject: "Re: RubySDK R&W" },
|
|
126
|
+
{ uid: 4759, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "expiry" },
|
|
127
|
+
{ uid: 4760, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "order" },
|
|
128
|
+
{ uid: 4761, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "order" },
|
|
129
|
+
{ uid: 4771, to: "kappa@rubytech.llc", from: "tom@flashalpha.com", subject: "SPY digest" },
|
|
130
|
+
{ uid: 4772, to: "realagent@rubytech.llc", from: "ebony@magneticbd.co.uk", subject: "Catch Up" },
|
|
131
|
+
{ uid: 4773, to: "ebony@magneticbd.co.uk", from: "info@rubytech.llc", subject: "Re: Catch Up" },
|
|
132
|
+
{ uid: 4794, to: "namecheap@rubytech.llc", from: "pesupport@namecheap.com", subject: "webmail" },
|
|
133
|
+
{ uid: 4795, to: "kappa@rubytech.llc", from: "tom@flashalpha.com", subject: "SPY digest" },
|
|
134
|
+
{ uid: 4809, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "30% off" },
|
|
135
|
+
{ uid: 4810, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "order" },
|
|
136
|
+
{ uid: 4811, to: "info@rubytech.llc", from: "joshgoff1@hotmail.com", subject: "Re: Maxy Institute Training" },
|
|
137
|
+
{ uid: 4816, to: "info@rubytech.llc", from: "joshgoff1@hotmail.com", subject: "Re: Maxy Institute Training" },
|
|
138
|
+
{ uid: 4839, to: "realagent.smarty@rubytech.llc", from: "no-reply@i.smarty.co.uk", subject: "favour" },
|
|
139
|
+
];
|
|
140
|
+
inbox = [...olderMatches, ...newest];
|
|
141
|
+
mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
|
|
142
|
+
const res = await fetchRecent(config, "pw", {
|
|
143
|
+
limit: 20,
|
|
144
|
+
to: ["info@rubytech.llc", "maxy@rubytech.llc"],
|
|
145
|
+
});
|
|
146
|
+
const uids = res.messages.map((m) => m.uid);
|
|
147
|
+
// Both joshgoff1 messages now lead the result.
|
|
148
|
+
expect(uids[0]).toBe(4816);
|
|
149
|
+
expect(uids[1]).toBe(4811);
|
|
150
|
+
// 24 matched, 20 shown, so the four oldest matches drop off the back.
|
|
151
|
+
expect(res.truncation).toEqual({ shown: 20, matched: 24 });
|
|
152
|
+
expect(uids).not.toContain(4406);
|
|
153
|
+
});
|
|
154
|
+
it("pages back onto the truncated matches instead of skipping them", async () => {
|
|
155
|
+
// The cursor must land on the dropped set, not below it. With the
|
|
156
|
+
// window-floor cursor the dropped matches sit ABOVE beforeUid and are
|
|
157
|
+
// excluded from every subsequent page, so the truncation line would promise
|
|
158
|
+
// a remainder that pagination could never deliver.
|
|
159
|
+
inbox = seed(800, 12);
|
|
160
|
+
mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
|
|
161
|
+
const first = await fetchRecent(config, "pw", { limit: 3, to: ["info@rubytech.llc"] });
|
|
162
|
+
expect(first.messages.map((m) => m.uid)).toEqual([811, 810, 809]);
|
|
163
|
+
// Oldest displayed, NOT the window floor (803).
|
|
164
|
+
expect(first.nextBeforeUid).toBe(809);
|
|
165
|
+
const second = await fetchRecent(config, "pw", {
|
|
166
|
+
limit: 3,
|
|
167
|
+
to: ["info@rubytech.llc"],
|
|
168
|
+
beforeUid: first.nextBeforeUid,
|
|
169
|
+
});
|
|
170
|
+
// The next page continues exactly where the display stopped: no gap, no repeat.
|
|
171
|
+
expect(second.messages.map((m) => m.uid)).toEqual([808, 807, 806]);
|
|
172
|
+
});
|
|
173
|
+
it("sets a cursor whenever the display truncated, even inside one window", async () => {
|
|
174
|
+
// 35 UIDs with fetchLimit 60: the whole match set fits the window, so the
|
|
175
|
+
// window-floor branch reports "exhausted" while matches still exceed limit.
|
|
176
|
+
inbox = seed(900, 35);
|
|
177
|
+
mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
|
|
178
|
+
const res = await fetchRecent(config, "pw", { limit: 20, to: ["info@rubytech.llc"] });
|
|
179
|
+
expect(res.truncation).toEqual({ shown: 20, matched: 35 });
|
|
180
|
+
expect(res.nextBeforeUid).toBe(915);
|
|
181
|
+
});
|
|
182
|
+
it("downloads body source only for the retained (newest) UIDs", async () => {
|
|
183
|
+
// Guards the Task 1180 promise across the retention change: the second-pass
|
|
184
|
+
// source fetch must cover the displayed set, which is now the newest.
|
|
185
|
+
inbox = seed(400, 12);
|
|
186
|
+
mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
|
|
187
|
+
await fetchRecent(config, "pw", { limit: 3, to: ["info@rubytech.llc"] });
|
|
188
|
+
const sourceCall = mockClient.fetch.mock.calls.find((c) => c[1].source);
|
|
189
|
+
const fetched = String(sourceCall?.[0])
|
|
190
|
+
.split(",")
|
|
191
|
+
.map((s) => Number(s.trim()))
|
|
192
|
+
.sort((a, b) => a - b);
|
|
193
|
+
expect(fetched).toEqual([409, 410, 411]);
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
//# sourceMappingURL=display-truncation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-truncation.test.js","sourceRoot":"","sources":["../../src/__tests__/display-truncation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,9 +104,10 @@ describe("Task 1180 — list/search fetch source only for displayed messages", (
|
|
|
104
104
|
];
|
|
105
105
|
mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
|
|
106
106
|
const res = await fetchRecent(config, "pw", { limit: 2, to: "keep@x.com" });
|
|
107
|
-
// Window is the 6 newest UIDs (4..9).
|
|
108
|
-
//
|
|
109
|
-
|
|
107
|
+
// Window is the 6 newest UIDs (4..9). Matches are 5, 7, 9; the display set
|
|
108
|
+
// is the NEWEST two (7, 9), returned newest-first. Before Task 1777 this
|
|
109
|
+
// asserted [7, 5] — the oldest two — which encoded the truncation defect.
|
|
110
|
+
expect(res.messages.map((m) => m.uid)).toEqual([9, 7]);
|
|
110
111
|
expect(res.messages.every((m) => m.bodyPreview.length > 0)).toBe(true);
|
|
111
112
|
const sourceFetches = fetchCalls.filter((c) => c.fields.source);
|
|
112
113
|
expect(sourceFetches.length).toBe(1);
|
|
@@ -114,7 +115,7 @@ describe("Task 1180 — list/search fetch source only for displayed messages", (
|
|
|
114
115
|
.split(",")
|
|
115
116
|
.map((s) => Number(s.trim()))
|
|
116
117
|
.sort((a, b) => a - b);
|
|
117
|
-
expect(fetchedUids).toEqual([
|
|
118
|
+
expect(fetchedUids).toEqual([7, 9]);
|
|
118
119
|
});
|
|
119
120
|
it("searchMessages second-pass source fetch covers only the displayed UID set", async () => {
|
|
120
121
|
inbox = [
|
|
@@ -127,16 +128,17 @@ describe("Task 1180 — list/search fetch source only for displayed messages", (
|
|
|
127
128
|
];
|
|
128
129
|
mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
|
|
129
130
|
const res = await searchMessages(config, "pw", { limit: 2, to: "keep@x.com" });
|
|
130
|
-
// Window is all 6 UIDs (1..6).
|
|
131
|
-
//
|
|
132
|
-
|
|
131
|
+
// Window is all 6 UIDs (1..6). Matches are 1, 3, 5; the display set is the
|
|
132
|
+
// NEWEST two (3, 5), returned newest-first. Before Task 1777 this asserted
|
|
133
|
+
// [3, 1] — the oldest two — which encoded the truncation defect.
|
|
134
|
+
expect(res.messages.map((m) => m.uid)).toEqual([5, 3]);
|
|
133
135
|
const sourceFetches = fetchCalls.filter((c) => c.fields.source);
|
|
134
136
|
expect(sourceFetches.length).toBe(1);
|
|
135
137
|
const fetchedUids = sourceFetches[0].range
|
|
136
138
|
.split(",")
|
|
137
139
|
.map((s) => Number(s.trim()))
|
|
138
140
|
.sort((a, b) => a - b);
|
|
139
|
-
expect(fetchedUids).toEqual([
|
|
141
|
+
expect(fetchedUids).toEqual([3, 5]);
|
|
140
142
|
});
|
|
141
143
|
});
|
|
142
144
|
//# sourceMappingURL=source-fetch-efficiency.test.js.map
|
package/payload/platform/plugins/email/mcp/dist/__tests__/source-fetch-efficiency.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-fetch-efficiency.test.js","sourceRoot":"","sources":["../../src/__tests__/source-fetch-efficiency.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"source-fetch-efficiency.test.js","sourceRoot":"","sources":["../../src/__tests__/source-fetch-efficiency.test.ts"],"names":[],"mappings":"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"}
|
package/payload/platform/plugins/email/mcp/dist/__tests__/truncation-tool-output.test.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncation-tool-output.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/truncation-tool-output.test.ts"],"names":[],"mappings":""}
|