@rubytech/create-maxy-code 0.1.470 → 0.1.472
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/__tests__/google-client-id-env.test.js +68 -0
- package/dist/index.js +26 -18
- package/dist/port-resolution.js +7 -1
- package/package.json +1 -1
- package/payload/platform/config/brand.json +1 -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 +5 -0
- package/payload/platform/plugins/admin/hooks/lib/maxy-mcp-plugins.txt +1 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +98 -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/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/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 +99 -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 +59 -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 +126 -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/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 +8 -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/project-manager.md +1 -1
- package/payload/server/{chunk-JRIBGO45.js → chunk-BSTIQX52.js} +44 -0
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/public/activity.html +19 -0
- package/payload/server/public/assets/{AdminLoginScreens-Bed8SDxY.js → AdminLoginScreens-BfamGqS7.js} +1 -1
- package/payload/server/public/assets/AdminShell-5nHOAzXO.js +2 -0
- package/payload/server/public/assets/{Checkbox-BC_KSbpS.js → Checkbox-CD6aHwac.js} +1 -1
- package/payload/server/public/assets/activity-Dj2nJzPw.js +1 -0
- package/payload/server/public/assets/{admin-DfWgJVI3.js → admin-Cpcw_YE-.js} +1 -1
- package/payload/server/public/assets/{arc-qKfXIt8v.js → arc-BrHWN2Kr.js} +1 -1
- package/payload/server/public/assets/architecture-YZFGNWBL-CZQzGRSM.js +1 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-DkVrGn7G.js → architectureDiagram-Q4EWVU46-Clt9NOr0.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DqavswGH.js → blockDiagram-DXYQGD6D-BOe_jmXi.js} +1 -1
- package/payload/server/public/assets/{browser-C0vkv-hH.js → browser-0znOwk1W.js} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-B7fyKiXe.js → c4Diagram-AHTNJAMY-B64FaKMV.js} +1 -1
- package/payload/server/public/assets/calendar-CykigHdg.js +1 -0
- package/payload/server/public/assets/channel-zDUAN9Ks.js +1 -0
- package/payload/server/public/assets/chat-DIOJZ411.js +1 -0
- package/payload/server/public/assets/chevron-left-Cq7UvOI0.js +1 -0
- package/payload/server/public/assets/{chunk-2KRD3SAO-DsgMtGkv.js → chunk-2KRD3SAO-BGAUfWvM.js} +1 -1
- package/payload/server/public/assets/{chunk-336JU56O-CkdISfNt.js → chunk-336JU56O-PFi6uQZ0.js} +2 -2
- package/payload/server/public/assets/chunk-426QAEUC-iJnqNRug.js +1 -0
- package/payload/server/public/assets/{chunk-4BX2VUAB-CYpiF2bl.js → chunk-4BX2VUAB-CkxXXCiF.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-CWyc_F7v.js → chunk-4TB4RGXK-B-7tN4IA.js} +1 -1
- package/payload/server/public/assets/{chunk-55IACEB6-BbzKMw2Z.js → chunk-55IACEB6-CBkNmqrt.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-u19Nai9e.js → chunk-5FUZZQ4R-wa9ujn7i.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-Ba8by6Uy.js → chunk-5PVQY5BW-DIk-xBaE.js} +1 -1
- package/payload/server/public/assets/{chunk-67CJDMHE-BwUuxtyb.js → chunk-67CJDMHE-BbMV1lgW.js} +1 -1
- package/payload/server/public/assets/{chunk-7N4EOEYR-BRH9iM9L.js → chunk-7N4EOEYR-C49Mv-nQ.js} +1 -1
- package/payload/server/public/assets/{chunk-AA7GKIK3-BGoztgLL.js → chunk-AA7GKIK3-Dy_pJOp_.js} +1 -1
- package/payload/server/public/assets/{chunk-BSJP7CBP-C5GDAZTl.js → chunk-BSJP7CBP-Ce-OmPqn.js} +1 -1
- package/payload/server/public/assets/{chunk-CIAEETIT-ChY32VPS.js → chunk-CIAEETIT-tnjq-APC.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-CPSD3p6p.js → chunk-EDXVE4YY-Bvv_deZ2.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-D1oL-iUr.js → chunk-ENJZ2VHE-CmxCPKyU.js} +1 -1
- package/payload/server/public/assets/{chunk-FMBD7UC4-CPvYEr54.js → chunk-FMBD7UC4-Top6y08S.js} +1 -1
- package/payload/server/public/assets/{chunk-FOC6F5B3-9Yyj7Vbz.js → chunk-FOC6F5B3-B9LPNCUS.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-BaYgh8FR.js → chunk-ICPOFSXX-Bi-_c351.js} +2 -2
- package/payload/server/public/assets/{chunk-K5T4RW27-5ucpeRvm.js → chunk-K5T4RW27-DAnRM04h.js} +1 -1
- package/payload/server/public/assets/{chunk-KGLVRYIC-DW-FHk7T.js → chunk-KGLVRYIC-C0QYcbLe.js} +1 -1
- package/payload/server/public/assets/{chunk-LIHQZDEY-CGGVfAyG.js → chunk-LIHQZDEY-BjvA5ykt.js} +1 -1
- package/payload/server/public/assets/{chunk-ORNJ4GCN-Bv8EUa5d.js → chunk-ORNJ4GCN-Cs46Gj7z.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-C1mXJnyw.js → chunk-OYMX7WX6-BBpimab5.js} +1 -1
- package/payload/server/public/assets/chunk-QZHKN3VN-Qlc2PFAj.js +1 -0
- package/payload/server/public/assets/{chunk-U2HBQHQK-PwSQz6EP.js → chunk-U2HBQHQK-CQUSBHoK.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP--NPHTBlU.js → chunk-X2U36JSP-Dm8TevG0.js} +1 -1
- package/payload/server/public/assets/{chunk-XPW4576I-Bbc7Da32.js → chunk-XPW4576I-B10QuxYb.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-D-9v8e--.js → chunk-YZCP3GAM-vaGsu4Wk.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-CMPg670Q.js → chunk-ZZ45TVLE-D1Qi22bL.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-CFsKL52p.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BWBUUCiO.js +1 -0
- package/payload/server/public/assets/clone-h5XhkDUL.js +1 -0
- package/payload/server/public/assets/{cose-bilkent-S5V4N54A-NVSb1Bhy.js → cose-bilkent-S5V4N54A-CRDvLRXs.js} +1 -1
- package/payload/server/public/assets/{dagre-QfLcO-1j.js → dagre-CEmqJTt3.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-V2Ai1DFl.js → dagre-KV5264BT-LXMTo7Fp.js} +1 -1
- package/payload/server/public/assets/data-lHgqlhmu.js +1 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-Caw21693.js → diagram-5BDNPKRD-zyis6nPt.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-CgwVkT2q.js → diagram-G4DWMVQ6-BiU0XAAD.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-DFUrLZhs.js → diagram-MMDJMWI5-rGFiz1SX.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-CEEiEuZJ.js → diagram-TYMM5635-B0wak1ZJ.js} +1 -1
- package/payload/server/public/assets/{dist-Cvgxm7qv.js → dist-B2N0v8hZ.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-CG10NrT3.js → erDiagram-SMLLAGMA-D8AUxLyX.js} +1 -1
- package/payload/server/public/assets/{flatten-DAO0sfCM.js → flatten-naJ5PJ4f.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BqkV9Okv.js → flowDiagram-DWJPFMVM-BtdUf68b.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-DRiCDQF6.js → ganttDiagram-T4ZO3ILL-C-lkzDmf.js} +1 -1
- package/payload/server/public/assets/gitGraph-7Q5UKJZL-CBZPQJLj.js +1 -0
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-BZV2voyy.js → gitGraphDiagram-UUTBAWPF-DRUKumq2.js} +1 -1
- package/payload/server/public/assets/{graph-BZiudUGr.js → graph-JV5_xF3V.js} +3 -3
- package/payload/server/public/assets/{graph-labels-BzmmJwCR.js → graph-labels-DPYORjBH.js} +1 -1
- package/payload/server/public/assets/{graphlib-DGPThX8M.js → graphlib-zRsaoFEC.js} +1 -1
- package/payload/server/public/assets/info-OMHHGYJF-1vIoX-kP.js +1 -0
- package/payload/server/public/assets/infoDiagram-42DDH7IO-KHcXRaan.js +2 -0
- package/payload/server/public/assets/{isEmpty-Cb_U81C6.js → isEmpty-Bnpg7b8f.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BKsAxSvp.js → ishikawaDiagram-UXIWVN3A-BguMgoR8.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-CmliuOd-.js → journeyDiagram-VCZTEJTY-CXhyK1n-.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DAlElMb-.js → kanban-definition-6JOO6SKY-C0UCWVx-.js} +1 -1
- package/payload/server/public/assets/{line-DKZqLKAC.js → line--uhS9YDE.js} +1 -1
- package/payload/server/public/assets/{linear-CbSGdh1x.js → linear-CAOWPodQ.js} +1 -1
- package/payload/server/public/assets/{maximize-2-Bhdsv0U-.js → maximize-2-8vKr3h21.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-DFvbao9C.js → mermaid-parser.core-D6kPx7vc.js} +2 -2
- package/payload/server/public/assets/{mermaid.core-C0vEBxDm.js → mermaid.core-CTd4DS6O.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-CShASUKd.js → mindmap-definition-QFDTVHPH-_AyvyG8C.js} +1 -1
- package/payload/server/public/assets/operator-Liul1QEq.js +1 -0
- package/payload/server/public/assets/{ordinal-H0tVmBDP.js → ordinal-Wx4m9zHk.js} +1 -1
- package/payload/server/public/assets/packet-4T2RLAQJ-CTU0gCGb.js +1 -0
- package/payload/server/public/assets/page-CYRA87CB.js +1 -0
- package/payload/server/public/assets/{page-BoPorLg-.js → page-Cg7B1RQx.js} +4 -4
- package/payload/server/public/assets/{pdf-render-jAQU0nXt.js → pdf-render-CeX6d2v7.js} +1 -1
- package/payload/server/public/assets/pie-ZZUOXDRM-D-EEHxhC.js +1 -0
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-CBZHpDAJ.js → pieDiagram-DEJITSTG-6TsUDkkQ.js} +1 -1
- package/payload/server/public/assets/{public-DqJk6qgW.js → public-B4HMtpjt.js} +1 -1
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-n3bB3K91.js → quadrantDiagram-34T5L4WZ-CWw9gOI4.js} +1 -1
- package/payload/server/public/assets/radar-PYXPWWZC-DHXATZGB.js +1 -0
- package/payload/server/public/assets/{reduce-DAvwat-a.js → reduce-BUmc8RDR.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-DiDvQK3c.js → requirementDiagram-MS252O5E-DCOlxNvx.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-D_5cETGt.js → rotate-ccw-sz5IQSnr.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DWDQQZmd.js → sankeyDiagram-XADWPNL6-CW4Xbir3.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DmAqRlBT.js → sequenceDiagram-FGHM5R23-vhb_pBLG.js} +1 -1
- package/payload/server/public/assets/{src-DV4LKv2E.js → src-DHSQDYx-.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-D4R-n6bZ.js → stateDiagram-FHFEXIEX-Cb1WExEX.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CxOIKvXh.js +1 -0
- package/payload/server/public/assets/tasks-D9oYgEzs.js +1 -0
- package/payload/server/public/assets/{time-entry-format-DAwmmR3i.js → time-entry-format-CSuCexpM.js} +1 -1
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CjiHGP4l.js → timeline-definition-GMOUNBTQ-BAHTf_AF.js} +1 -1
- package/payload/server/public/assets/treeView-SZITEDCU-CC7ouMFd.js +1 -0
- package/payload/server/public/assets/treemap-W4RFUUIX-CaCg27im.js +1 -0
- package/payload/server/public/assets/triangle-alert-ClS81-CU.js +1 -0
- package/payload/server/public/assets/{useCopyFeedback-rOWd_lzl.js → useCopyFeedback-Cn6YgeNx.js} +1 -1
- package/payload/server/public/assets/{useSelectionMode-DDmLmPph.js → useSelectionMode-BaD-ZZRk.js} +1 -1
- package/payload/server/public/assets/{useSubAccountSwitcher-pu0jjLCz.css → useSubAccountSwitcher-CNZL3PKn.css} +1 -1
- package/payload/server/public/assets/useSubAccountSwitcher-CvjWJSGv.js +9 -0
- package/payload/server/public/assets/{useVoiceRecorder-azG8zSUI.js → useVoiceRecorder-BOzHrDAU.js} +2 -2
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-CBdDQ7c-.js → vennDiagram-DHZGUBPP-DtEttvW4.js} +1 -1
- package/payload/server/public/assets/wardley-RL74JXVD-bMPsqQZ7.js +1 -0
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BlIQPKLb.js → wardleyDiagram-NUSXRM2D-K06y6CVJ.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-CslKgh9B.js → xychartDiagram-5P7HB3ND-D66c40lp.js} +1 -1
- package/payload/server/public/browser.html +6 -6
- 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 +12 -12
- package/payload/server/public/index.html +16 -15
- package/payload/server/public/operator.html +16 -16
- package/payload/server/public/public.html +14 -14
- package/payload/server/public/tasks.html +6 -6
- package/payload/server/server.js +558 -260
- package/payload/server/public/assets/AdminShell-BLh9O6dn.js +0 -2
- package/payload/server/public/assets/architecture-YZFGNWBL-FPHT7s-C.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/info-OMHHGYJF-BicCJTqU.js +0 -1
- package/payload/server/public/assets/infoDiagram-42DDH7IO-tf-8rOez.js +0 -2
- 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/pie-ZZUOXDRM-DzlGQW3J.js +0 -1
- package/payload/server/public/assets/radar-PYXPWWZC-BHo2YD8b.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/treeView-SZITEDCU-BtRr5vXp.js +0 -1
- package/payload/server/public/assets/treemap-W4RFUUIX-D8p0sbyo.js +0 -1
- package/payload/server/public/assets/useSubAccountSwitcher-CU-lOxTd.js +0 -9
- 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-k8hYPe-U.js} +0 -0
- /package/payload/server/public/assets/{array-iYP9fzJp.js → array-BFDiaBgf.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-Ch0xptA4.js} +0 -0
- /package/payload/server/public/assets/{defaultLocale-BrdA1gDi.js → defaultLocale-ZeknFqNe.js} +0 -0
- /package/payload/server/public/assets/{init-Bx0S6pkp.js → init-0VJVrkRJ.js} +0 -0
- /package/payload/server/public/assets/{katex-BsiH_a6d.js → katex-Br7bH10N.js} +0 -0
- /package/payload/server/public/assets/{path-BLSgTy3w.js → path-INs8XTPH.js} +0 -0
- /package/payload/server/public/assets/{preload-helper-ClBMtM1g.js → preload-helper-D_sPnjeL.js} +0 -0
- /package/payload/server/public/assets/{rough.esm-BMOtDaaS.js → rough.esm-DU9bZLvZ.js} +0 -0
|
@@ -75,8 +75,8 @@ export async function workflowCreate(params) {
|
|
|
75
75
|
// Write doctrine: the Workflow must be created with at least one
|
|
76
76
|
// adjacency in the same transaction. Pre-resolve the admin session's
|
|
77
77
|
// Conversation elementId — that is the Workflow's semantic parent
|
|
78
|
-
// (PART_OF). If no Conversation resolves,
|
|
79
|
-
//
|
|
78
|
+
// (PART_OF). If no Conversation resolves, no :Conversation is anchored on
|
|
79
|
+
// this session id; reject loudly per doctrine.
|
|
80
80
|
const relationships = [];
|
|
81
81
|
if (sessionKey) {
|
|
82
82
|
const r = await session.run(`MATCH (c:Conversation {sessionId: $sessionKey}) RETURN elementId(c) AS id LIMIT 1`, { sessionKey });
|
|
@@ -90,7 +90,7 @@ export async function workflowCreate(params) {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
if (relationships.length === 0) {
|
|
93
|
-
throw new Error(
|
|
93
|
+
throw new Error(`Write doctrine violated: no :Conversation is anchored on this session (sessionId=${sessionKey ?? "absent"}), so the Workflow has nothing to link (PART_OF). This is a platform fault, not something the caller can correct by retrying or by rewording the request.`);
|
|
94
94
|
}
|
|
95
95
|
await writeNodeWithEdges({
|
|
96
96
|
session,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-create.js","sourceRoot":"","sources":["../../src/tools/workflow-create.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflow-create.js","sourceRoot":"","sources":["../../src/tools/workflow-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import type { CensusSession, PtyCensusSnapshot } from './pty-census.js';
|
|
2
|
+
import type { FsWatcher } from './fs-watcher.js';
|
|
3
|
+
import type { Logger } from './pty-census.js';
|
|
4
|
+
/** The watcher-derived half of a row. Narrowed to the three fields the join
|
|
5
|
+
* reads so the pure builder needs no SessionRow fixture. */
|
|
6
|
+
export interface ActivityInputRow {
|
|
7
|
+
/** From SessionRow.accountId (the sidecar). Null means the sidecar carries
|
|
8
|
+
* no account — rendered `untagged`, never folded into the house account. */
|
|
9
|
+
accountId: string | null;
|
|
10
|
+
status: string;
|
|
11
|
+
/** Sidecar `startedAt`, ISO. The session's real start, and the only honest
|
|
12
|
+
* age source: the JSONL mtime is the LAST write, so using it would make
|
|
13
|
+
* every row's age equal its idle. Null when no sidecar exists. */
|
|
14
|
+
startedAt: string | null;
|
|
15
|
+
}
|
|
16
|
+
/** The JSONL-enumerator half of a row. */
|
|
17
|
+
export interface ActivityEnriched {
|
|
18
|
+
title: string | null;
|
|
19
|
+
model: string | null;
|
|
20
|
+
lastMessageAt: string | null;
|
|
21
|
+
turnCount: number;
|
|
22
|
+
/** True when the tail parse was clipped, making turnCount a lower bound. */
|
|
23
|
+
capped: boolean;
|
|
24
|
+
usedTokens: number | null;
|
|
25
|
+
}
|
|
26
|
+
/** The metering half of a row. `costGBP` carries BOTH price assumptions
|
|
27
|
+
* because that is what MeteringSummary produces; the join picks the arm. */
|
|
28
|
+
export interface ActivityMetering {
|
|
29
|
+
costGBP: {
|
|
30
|
+
opus: number;
|
|
31
|
+
sonnet: number;
|
|
32
|
+
} | null;
|
|
33
|
+
error: string | null;
|
|
34
|
+
}
|
|
35
|
+
/** Why a row has no cost. Three distinct facts that would otherwise render as
|
|
36
|
+
* the same dash: the model is not in the metering's price table at all
|
|
37
|
+
* (Haiku and Fable are configured models and neither is priced), the metering
|
|
38
|
+
* parse failed, or the session has no transcript yet. A null with no reason is
|
|
39
|
+
* the unexplained absence this view exists to eliminate. */
|
|
40
|
+
export type CostUnavailable = 'model-not-priced' | 'metering-failed' | 'no-transcript' | null;
|
|
41
|
+
export interface ActivityRow {
|
|
42
|
+
sessionId: string;
|
|
43
|
+
pid: number;
|
|
44
|
+
accountId: string | null;
|
|
45
|
+
title: string | null;
|
|
46
|
+
model: string | null;
|
|
47
|
+
status: string | null;
|
|
48
|
+
/** ms since the sidecar start. Null when no sidecar start exists. */
|
|
49
|
+
ageMs: number | null;
|
|
50
|
+
/** ms since the last turn. Null when the session has taken no turn yet. */
|
|
51
|
+
idleMs: number | null;
|
|
52
|
+
/** Null when the session has no JSONL yet. A lower bound when capped. */
|
|
53
|
+
turnCount: number | null;
|
|
54
|
+
turnCountCapped: boolean;
|
|
55
|
+
/** Scope-subtree memory.current in kB. Null when the census did not
|
|
56
|
+
* attribute this session — unmeasured, not zero-sized. */
|
|
57
|
+
rssKb: number | null;
|
|
58
|
+
/** Null when unmeasured. Never 0 to mean idle. See CensusSession.cpuPct. */
|
|
59
|
+
cpuPct: number | null;
|
|
60
|
+
usedTokens: number | null;
|
|
61
|
+
/** The costGBP arm matching this row's own model, in GBP. Null when the
|
|
62
|
+
* model is unknown, maps to neither priced family, or metering failed. */
|
|
63
|
+
costGbp: number | null;
|
|
64
|
+
/** Why costGbp is null, so the rendered dash carries a reason. Null when a
|
|
65
|
+
* cost is present. */
|
|
66
|
+
costUnavailable: CostUnavailable;
|
|
67
|
+
/** The metering error message for THIS row. Null on success. A failure
|
|
68
|
+
* costs one row its cost cell and nothing else. */
|
|
69
|
+
meteringError: string | null;
|
|
70
|
+
/** Set when the transcript could not be read for this row (a rename or a
|
|
71
|
+
* permissions change racing the enumeration). The row still appears with
|
|
72
|
+
* null metadata, because the session is live regardless. */
|
|
73
|
+
enrichError: string | null;
|
|
74
|
+
}
|
|
75
|
+
/** Pick the price arm matching the session's own model.
|
|
76
|
+
*
|
|
77
|
+
* MeteringSummary prices one token count under TWO assumptions (Opus rates
|
|
78
|
+
* and Sonnet rates) and does not know which model actually ran. Rendering the
|
|
79
|
+
* opus arm beside a sonnet session would be a precise-looking falsehood, so a
|
|
80
|
+
* model in neither family yields null rather than a default.
|
|
81
|
+
*
|
|
82
|
+
* Substring rather than exact match because the id namespace carries suffixes
|
|
83
|
+
* (`claude-sonnet-5[1m]` is the same family and the same price arm). */
|
|
84
|
+
export declare function costForModel(model: string | null, cost: {
|
|
85
|
+
opus: number;
|
|
86
|
+
sonnet: number;
|
|
87
|
+
} | null): number | null;
|
|
88
|
+
/** The pure join. Every source is a Map keyed by sessionId; the live set is
|
|
89
|
+
* the spine and every other source is a left join onto it. */
|
|
90
|
+
export declare function buildActivityRows(input: {
|
|
91
|
+
live: Array<{
|
|
92
|
+
sessionId: string;
|
|
93
|
+
pid: number;
|
|
94
|
+
}>;
|
|
95
|
+
rows: Map<string, ActivityInputRow>;
|
|
96
|
+
census: Map<string, CensusSession>;
|
|
97
|
+
enriched: Map<string, ActivityEnriched>;
|
|
98
|
+
metering: Map<string, ActivityMetering>;
|
|
99
|
+
enrichErrors?: Map<string, string>;
|
|
100
|
+
nowMs: number;
|
|
101
|
+
}): ActivityRow[];
|
|
102
|
+
/** Fixed-size worker pool. Bounds the metering fan-out: computeMetering is a
|
|
103
|
+
* FULL JSONL parse per session, so an unbounded Promise.all over a busy box
|
|
104
|
+
* would read every transcript at once.
|
|
105
|
+
*
|
|
106
|
+
* Rejections propagate. The metering caller catches per item so one bad
|
|
107
|
+
* transcript costs one row; swallowing here would hide a systematic failure
|
|
108
|
+
* behind a page of empty cost cells. */
|
|
109
|
+
export declare function mapWithConcurrency<T, R>(items: T[], limit: number, fn: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
110
|
+
export interface CollectActivityDeps {
|
|
111
|
+
watcher: FsWatcher;
|
|
112
|
+
claudeConfigDir: string;
|
|
113
|
+
jsonlReadMaxBytes: number;
|
|
114
|
+
liveSessions: Array<{
|
|
115
|
+
sessionId: string;
|
|
116
|
+
pid: number;
|
|
117
|
+
}>;
|
|
118
|
+
censusLatest: () => PtyCensusSnapshot | null;
|
|
119
|
+
logger: Logger;
|
|
120
|
+
nowMs?: number;
|
|
121
|
+
/** Bound on concurrent full-JSONL metering parses. */
|
|
122
|
+
meteringConcurrency?: number;
|
|
123
|
+
}
|
|
124
|
+
export interface ActivityResult {
|
|
125
|
+
rows: ActivityRow[];
|
|
126
|
+
census: {
|
|
127
|
+
sampleAtMs: number;
|
|
128
|
+
live: number;
|
|
129
|
+
cpuNull: number;
|
|
130
|
+
} | null;
|
|
131
|
+
}
|
|
132
|
+
/** Test seam — the memo is module state, so a suite asserting parse counts
|
|
133
|
+
* needs to clear it between cases. */
|
|
134
|
+
export declare function __clearMeteringMemo(): void;
|
|
135
|
+
/** The impure half — gathers each source, then delegates the arithmetic to
|
|
136
|
+
* `buildActivityRows`. */
|
|
137
|
+
export declare function collectActivity(deps: CollectActivityDeps): Promise<ActivityResult>;
|
|
138
|
+
//# sourceMappingURL=activity-rows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-rows.d.ts","sourceRoot":"","sources":["../src/activity-rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
// Task 1749 — the install-wide activity join.
|
|
2
|
+
//
|
|
3
|
+
// In a multi-account install the operator has no surface that answers "where
|
|
4
|
+
// is the activity". Every ingredient already exists in this service and none
|
|
5
|
+
// was reachable together: the live PTY set, the watcher's per-row accountId,
|
|
6
|
+
// the JSONL enumerator's turn/model/token figures, the metering cost core, and
|
|
7
|
+
// the standing PTY census's RAM and CPU. This module is the join, and
|
|
8
|
+
// http-server's GET /activity is its only consumer.
|
|
9
|
+
//
|
|
10
|
+
// The join is deliberately split in two. `buildActivityRows` is PURE — every
|
|
11
|
+
// source arrives as a plain Map and the arithmetic is unit-testable off-Pi.
|
|
12
|
+
// `collectActivity` is the impure half that gathers those Maps. Same shape as
|
|
13
|
+
// the census module beside it (pure parsers + pure formatter + impure
|
|
14
|
+
// collector), and for the same reason: the RAM and CPU inputs only exist on a
|
|
15
|
+
// Linux cgroup-v2 host, so the logic has to be provable without one.
|
|
16
|
+
//
|
|
17
|
+
// WHY THE LIVE SET IS THE SPINE. Rows are emitted per entry in the live set,
|
|
18
|
+
// not per watcher row and not per JSONL on disk. A live session that the
|
|
19
|
+
// watcher cannot resolve (no sidecar, cross-slug, pre-first-turn) is still a
|
|
20
|
+
// process holding RAM, and this view exists to bound exactly that. It gets a
|
|
21
|
+
// row with null metadata rather than being dropped — an absent row is
|
|
22
|
+
// indistinguishable from an idle box.
|
|
23
|
+
import { statSync } from 'node:fs';
|
|
24
|
+
import { findExistingJsonlForSessionId } from './jsonl-path.js';
|
|
25
|
+
import { readJsonlSessionAtPath } from './jsonl-enumerator.js';
|
|
26
|
+
import { computeMetering } from './session-metering.js';
|
|
27
|
+
const TAG = '[activity]';
|
|
28
|
+
/** Pick the price arm matching the session's own model.
|
|
29
|
+
*
|
|
30
|
+
* MeteringSummary prices one token count under TWO assumptions (Opus rates
|
|
31
|
+
* and Sonnet rates) and does not know which model actually ran. Rendering the
|
|
32
|
+
* opus arm beside a sonnet session would be a precise-looking falsehood, so a
|
|
33
|
+
* model in neither family yields null rather than a default.
|
|
34
|
+
*
|
|
35
|
+
* Substring rather than exact match because the id namespace carries suffixes
|
|
36
|
+
* (`claude-sonnet-5[1m]` is the same family and the same price arm). */
|
|
37
|
+
export function costForModel(model, cost) {
|
|
38
|
+
if (!cost || !model)
|
|
39
|
+
return null;
|
|
40
|
+
if (model.includes('opus'))
|
|
41
|
+
return cost.opus;
|
|
42
|
+
if (model.includes('sonnet'))
|
|
43
|
+
return cost.sonnet;
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/** ms between an ISO timestamp and `nowMs`. Null when the timestamp is absent
|
|
47
|
+
* or unparseable — an unparseable date must not become a NaN duration that
|
|
48
|
+
* renders as a plausible-looking dash somewhere downstream. */
|
|
49
|
+
function elapsedMs(iso, nowMs) {
|
|
50
|
+
if (!iso)
|
|
51
|
+
return null;
|
|
52
|
+
const t = Date.parse(iso);
|
|
53
|
+
return Number.isFinite(t) ? nowMs - t : null;
|
|
54
|
+
}
|
|
55
|
+
/** The pure join. Every source is a Map keyed by sessionId; the live set is
|
|
56
|
+
* the spine and every other source is a left join onto it. */
|
|
57
|
+
export function buildActivityRows(input) {
|
|
58
|
+
return input.live.map(({ sessionId, pid }) => {
|
|
59
|
+
const row = input.rows.get(sessionId) ?? null;
|
|
60
|
+
const cen = input.census.get(sessionId) ?? null;
|
|
61
|
+
const enr = input.enriched.get(sessionId) ?? null;
|
|
62
|
+
const met = input.metering.get(sessionId) ?? null;
|
|
63
|
+
const costGbp = costForModel(enr?.model ?? null, met?.costGBP ?? null);
|
|
64
|
+
// Distinguish the three ways a cost goes missing, so the page never renders
|
|
65
|
+
// an unexplained dash. Order matters: a metering failure is reported as
|
|
66
|
+
// such even for an unpriced model, because the failure is the actionable
|
|
67
|
+
// fact.
|
|
68
|
+
let costUnavailable = null;
|
|
69
|
+
if (costGbp === null) {
|
|
70
|
+
if (met?.error)
|
|
71
|
+
costUnavailable = 'metering-failed';
|
|
72
|
+
else if (!enr)
|
|
73
|
+
costUnavailable = 'no-transcript';
|
|
74
|
+
else
|
|
75
|
+
costUnavailable = 'model-not-priced';
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
sessionId,
|
|
79
|
+
pid,
|
|
80
|
+
accountId: row?.accountId ?? null,
|
|
81
|
+
title: enr?.title ?? null,
|
|
82
|
+
model: enr?.model ?? null,
|
|
83
|
+
status: row?.status ?? null,
|
|
84
|
+
ageMs: elapsedMs(row?.startedAt ?? null, input.nowMs),
|
|
85
|
+
idleMs: elapsedMs(enr?.lastMessageAt ?? null, input.nowMs),
|
|
86
|
+
turnCount: enr ? enr.turnCount : null,
|
|
87
|
+
turnCountCapped: enr?.capped ?? false,
|
|
88
|
+
rssKb: cen ? cen.memKb : null,
|
|
89
|
+
cpuPct: cen ? cen.cpuPct : null,
|
|
90
|
+
usedTokens: enr?.usedTokens ?? null,
|
|
91
|
+
costGbp,
|
|
92
|
+
costUnavailable,
|
|
93
|
+
meteringError: met?.error ?? null,
|
|
94
|
+
enrichError: input.enrichErrors?.get(sessionId) ?? null,
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/** Fixed-size worker pool. Bounds the metering fan-out: computeMetering is a
|
|
99
|
+
* FULL JSONL parse per session, so an unbounded Promise.all over a busy box
|
|
100
|
+
* would read every transcript at once.
|
|
101
|
+
*
|
|
102
|
+
* Rejections propagate. The metering caller catches per item so one bad
|
|
103
|
+
* transcript costs one row; swallowing here would hide a systematic failure
|
|
104
|
+
* behind a page of empty cost cells. */
|
|
105
|
+
export async function mapWithConcurrency(items, limit, fn) {
|
|
106
|
+
const out = new Array(items.length);
|
|
107
|
+
let next = 0;
|
|
108
|
+
// Math.max(1, ...) is load-bearing: a limit of 0 would spawn no workers, and
|
|
109
|
+
// `out` would come back a hole-filled array whose entries the caller then
|
|
110
|
+
// feeds to `new Map(...)`, throwing on undefined rather than reporting a
|
|
111
|
+
// misconfiguration.
|
|
112
|
+
const width = Math.max(1, Math.min(limit, items.length));
|
|
113
|
+
const workers = Array.from({ length: width }, async () => {
|
|
114
|
+
while (next < items.length) {
|
|
115
|
+
const i = next++;
|
|
116
|
+
out[i] = await fn(items[i], i);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
await Promise.all(workers);
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
122
|
+
/** Metering memo, keyed by transcript identity rather than by session.
|
|
123
|
+
*
|
|
124
|
+
* computeMetering is a full streamed parse of the whole transcript, and the
|
|
125
|
+
* page polls. Without this, every poll re-parses every live transcript — the
|
|
126
|
+
* view would burn CPU on the same box whose CPU it reports, and the cost would
|
|
127
|
+
* grow with both session count and transcript size.
|
|
128
|
+
*
|
|
129
|
+
* The key is (path, mtimeMs, size): a transcript that has not been written
|
|
130
|
+
* cannot have a different cost, so a hit is exact rather than a staleness
|
|
131
|
+
* tradeoff. Bounded to keep a long-lived manager from accumulating entries for
|
|
132
|
+
* transcripts that have since grown. */
|
|
133
|
+
const meteringMemo = new Map();
|
|
134
|
+
const METERING_MEMO_MAX = 256;
|
|
135
|
+
function memoGet(key) {
|
|
136
|
+
return meteringMemo.get(key);
|
|
137
|
+
}
|
|
138
|
+
function memoSet(key, value) {
|
|
139
|
+
// Never memoise a failure: the next poll should retry rather than pin an
|
|
140
|
+
// error for the lifetime of the process.
|
|
141
|
+
if (value.error !== null)
|
|
142
|
+
return;
|
|
143
|
+
if (meteringMemo.size >= METERING_MEMO_MAX) {
|
|
144
|
+
const oldest = meteringMemo.keys().next().value;
|
|
145
|
+
if (oldest !== undefined)
|
|
146
|
+
meteringMemo.delete(oldest);
|
|
147
|
+
}
|
|
148
|
+
meteringMemo.set(key, value);
|
|
149
|
+
}
|
|
150
|
+
/** Test seam — the memo is module state, so a suite asserting parse counts
|
|
151
|
+
* needs to clear it between cases. */
|
|
152
|
+
export function __clearMeteringMemo() {
|
|
153
|
+
meteringMemo.clear();
|
|
154
|
+
}
|
|
155
|
+
/** The impure half — gathers each source, then delegates the arithmetic to
|
|
156
|
+
* `buildActivityRows`. */
|
|
157
|
+
export async function collectActivity(deps) {
|
|
158
|
+
const nowMs = deps.nowMs ?? Date.now();
|
|
159
|
+
const live = deps.liveSessions;
|
|
160
|
+
const snapshot = deps.censusLatest();
|
|
161
|
+
const rows = new Map();
|
|
162
|
+
const enriched = new Map();
|
|
163
|
+
const enrichErrors = new Map();
|
|
164
|
+
// Resolved once here and threaded into the metering fan-out. Resolving twice
|
|
165
|
+
// is not just wasted work: across an archive rename between the two calls the
|
|
166
|
+
// enrichment and the metering would resolve DIFFERENT files for one session.
|
|
167
|
+
const jsonlPaths = new Map();
|
|
168
|
+
for (const { sessionId } of live) {
|
|
169
|
+
const row = deps.watcher.getBySessionId(sessionId);
|
|
170
|
+
if (row) {
|
|
171
|
+
rows.set(sessionId, {
|
|
172
|
+
accountId: row.accountId,
|
|
173
|
+
status: row.status,
|
|
174
|
+
startedAt: row.startedAt,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
// Guarded per session. readJsonlSessionAtPath stats and opens the file
|
|
178
|
+
// after its own existence check, so a rename or a permissions change racing
|
|
179
|
+
// this loop throws — and an unguarded throw here would 500 the whole
|
|
180
|
+
// response, contradicting this module's own rule that a live session gets a
|
|
181
|
+
// row rather than being dropped.
|
|
182
|
+
try {
|
|
183
|
+
// Locate by the all-slug scan, not the boot slug: a client sub-account
|
|
184
|
+
// session's JSONL never sits under the house spawnCwd, and this view is
|
|
185
|
+
// install-wide by definition.
|
|
186
|
+
const jsonlPath = findExistingJsonlForSessionId(deps.claudeConfigDir, sessionId);
|
|
187
|
+
if (!jsonlPath)
|
|
188
|
+
continue;
|
|
189
|
+
jsonlPaths.set(sessionId, jsonlPath);
|
|
190
|
+
const dehydrated = readJsonlSessionAtPath(jsonlPath, sessionId, deps.jsonlReadMaxBytes);
|
|
191
|
+
if (!dehydrated)
|
|
192
|
+
continue;
|
|
193
|
+
enriched.set(sessionId, {
|
|
194
|
+
title: dehydrated.displayName,
|
|
195
|
+
model: dehydrated.model,
|
|
196
|
+
lastMessageAt: dehydrated.lastMessageAt,
|
|
197
|
+
turnCount: dehydrated.turnCount,
|
|
198
|
+
capped: dehydrated.capped,
|
|
199
|
+
usedTokens: dehydrated.usedTokens,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
204
|
+
enrichErrors.set(sessionId, message);
|
|
205
|
+
deps.logger(`${TAG} op=enrich-fail sessionId=${sessionId.slice(0, 8)} err=${message}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const census = new Map((snapshot?.sessions ?? []).map((s) => [s.sessionId, s]));
|
|
209
|
+
// Metering fan-out. Each call is wrapped so a rejection becomes THIS row's
|
|
210
|
+
// meteringError and cost null — never a whole-response failure, and never a
|
|
211
|
+
// silent 0 that would read as a free session. The error body is carried, not
|
|
212
|
+
// discarded: a page of empty cost cells with no reason is the failure this
|
|
213
|
+
// field exists to prevent.
|
|
214
|
+
const meterable = live.filter(({ sessionId }) => enriched.has(sessionId));
|
|
215
|
+
const meteringStart = Date.now();
|
|
216
|
+
let memoHits = 0;
|
|
217
|
+
const results = await mapWithConcurrency(meterable, deps.meteringConcurrency ?? 4, async ({ sessionId }) => {
|
|
218
|
+
const jsonlPath = jsonlPaths.get(sessionId);
|
|
219
|
+
if (!jsonlPath)
|
|
220
|
+
return [sessionId, { costGBP: null, error: 'jsonl-not-found' }];
|
|
221
|
+
try {
|
|
222
|
+
const st = statSync(jsonlPath);
|
|
223
|
+
const key = `${jsonlPath}|${st.mtimeMs}|${st.size}`;
|
|
224
|
+
const hit = memoGet(key);
|
|
225
|
+
if (hit) {
|
|
226
|
+
memoHits++;
|
|
227
|
+
return [sessionId, hit];
|
|
228
|
+
}
|
|
229
|
+
// computeMetering emits five unconditional lines per call plus two per
|
|
230
|
+
// day-row. At one call per live session per poll that buries every
|
|
231
|
+
// other line in the journal, and nothing in this path reads them — the
|
|
232
|
+
// failure case is caught and logged below. Only warnings are relayed.
|
|
233
|
+
const summary = await computeMetering(jsonlPath, {
|
|
234
|
+
logger: (line) => {
|
|
235
|
+
if (line.startsWith('WARN'))
|
|
236
|
+
deps.logger(`[metering] ${line}`);
|
|
237
|
+
},
|
|
238
|
+
});
|
|
239
|
+
const value = { costGBP: summary.totals.costGBP, error: null };
|
|
240
|
+
memoSet(key, value);
|
|
241
|
+
return [sessionId, value];
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
245
|
+
deps.logger(`${TAG} op=metering-fail sessionId=${sessionId.slice(0, 8)} err=${message}`);
|
|
246
|
+
return [sessionId, { costGBP: null, error: message }];
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
const metering = new Map(results);
|
|
250
|
+
const failed = [...metering.values()].filter((m) => m.error !== null).length;
|
|
251
|
+
deps.logger(`${TAG} op=metering requested=${meterable.length} ok=${meterable.length - failed} ` +
|
|
252
|
+
`failed=${failed} memoHits=${memoHits} ms=${Date.now() - meteringStart}`);
|
|
253
|
+
const built = buildActivityRows({ live, rows, census, enriched, metering, enrichErrors, nowMs });
|
|
254
|
+
return {
|
|
255
|
+
rows: built,
|
|
256
|
+
census: snapshot
|
|
257
|
+
? {
|
|
258
|
+
sampleAtMs: snapshot.sampleAtMs,
|
|
259
|
+
live: snapshot.live,
|
|
260
|
+
// cpuNull equal to live across consecutive cycles is the signature of
|
|
261
|
+
// a scope whose cpu.stat is permanently unreadable — a failure that
|
|
262
|
+
// otherwise emits nothing at all, because no error occurs.
|
|
263
|
+
cpuNull: snapshot.sessions.filter((s) => s.cpuPct === null).length,
|
|
264
|
+
}
|
|
265
|
+
: null,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=activity-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-rows.js","sourceRoot":"","sources":["../src/activity-rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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,EAwTtD,CAAA"}
|
package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js
CHANGED
|
@@ -18,6 +18,7 @@ export const MAXY_MCP_PLUGINS = [
|
|
|
18
18
|
"graph",
|
|
19
19
|
"graph-viewer",
|
|
20
20
|
"joblogic",
|
|
21
|
+
"ledger",
|
|
21
22
|
"memory",
|
|
22
23
|
"outlook",
|
|
23
24
|
"quickbooks",
|
|
@@ -188,6 +189,13 @@ export const CANONICAL_MAXY_TOOL_NAMES = [
|
|
|
188
189
|
"mcp__plugin_joblogic_joblogic__joblogic-visit-get",
|
|
189
190
|
"mcp__plugin_joblogic_joblogic__joblogic-visit-search-planner",
|
|
190
191
|
"mcp__plugin_joblogic_joblogic__joblogic-visit-update",
|
|
192
|
+
"mcp__plugin_ledger_ledger__ledger-balance",
|
|
193
|
+
"mcp__plugin_ledger_ledger__ledger-cash-record",
|
|
194
|
+
"mcp__plugin_ledger_ledger__ledger-credit-record",
|
|
195
|
+
"mcp__plugin_ledger_ledger__ledger-invoice-record",
|
|
196
|
+
"mcp__plugin_ledger_ledger__ledger-payment-record",
|
|
197
|
+
"mcp__plugin_ledger_ledger__ledger-reconcile",
|
|
198
|
+
"mcp__plugin_ledger_ledger__ledger-statement",
|
|
191
199
|
"mcp__plugin_memory_memory__conversation-archive-derive-insights",
|
|
192
200
|
"mcp__plugin_memory_memory__conversation-archive-enrich-rejection",
|
|
193
201
|
"mcp__plugin_memory_memory__conversation-archive-list-chunks",
|
package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { type SpawnDeps } from './pty-spawner.js';
|
|
3
|
+
import type { PtyCensusSnapshot } from './pty-census.js';
|
|
3
4
|
import type { FsWatcher } from './fs-watcher.js';
|
|
4
5
|
import type { RateLimiter } from './spawn-rate-limiter.js';
|
|
5
6
|
import type { AuditRegistry } from './public-tool-audit.js';
|
|
@@ -40,6 +41,11 @@ export interface HttpDeps extends Omit<SpawnDeps, 'onSessionReady' | 'watcher'>
|
|
|
40
41
|
* omits this and gets RC_SPAWN_URL_WAIT_DEFAULT_MS (60s); tests inject a
|
|
41
42
|
* short value to exercise the bind-timeout response without a 60s wait. */
|
|
42
43
|
rcSpawnUrlWaitMs?: number;
|
|
44
|
+
/** Task 1749 — accessor for the standing PTY census's most recent snapshot,
|
|
45
|
+
* wired from `createPtyCensus(...).latest`. Optional so the pre-1749 test
|
|
46
|
+
* deps factories keep working; production index.ts always injects it.
|
|
47
|
+
* `GET /census` serves what this returns and never collects inline. */
|
|
48
|
+
censusLatest?: () => PtyCensusSnapshot | null;
|
|
43
49
|
}
|
|
44
50
|
/** Task 1090 Phase 2 + Task 1184 — the `tool_use` ids in the bounded tail with
|
|
45
51
|
* no matching `tool_result` after them: the signature of an interrupt or death
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAgB3B,OAAO,EAkBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,7 @@ import { createRcChildLog } from './rc-child-log.js';
|
|
|
50
50
|
import { extractVoiceSection } from './system-prompt.js';
|
|
51
51
|
import { readJsonlSession, readJsonlSessionAtPath } from './jsonl-enumerator.js';
|
|
52
52
|
import { computeMetering } from './session-metering.js';
|
|
53
|
+
import { collectActivity } from './activity-rows.js';
|
|
53
54
|
import { claudeStateRoot, projectSlugForCwd, jsonlPathForSessionId, sidecarPathForSessionId, permissionModeLogPathForSessionId, mcpDebugLogPathForSessionId, printStreamPathForSessionId, findExistingJsonlForSessionId, slugForExistingJsonl, jsonlPathForSlug, sidecarPathForSlug, detectRemoteControlSlug, classifyBindBlocker, classifyChildAuth, } from './jsonl-path.js';
|
|
54
55
|
import { basename, dirname, join } from 'node:path';
|
|
55
56
|
import { validateUserTitle } from './user-title-store.js';
|
|
@@ -2304,6 +2305,47 @@ export function buildHttpApp(deps) {
|
|
|
2304
2305
|
// reattached survivor scopes (status=detached). The dashboard dot, the
|
|
2305
2306
|
// /rc-spawn reconcile, and the standing reconciler all read this instead of
|
|
2306
2307
|
// scanning disk pid files (stale on newer Claude Code).
|
|
2308
|
+
// Task 1749 — the standing PTY census's most recent snapshot, for the
|
|
2309
|
+
// install-wide activity view's RSS and CPU columns.
|
|
2310
|
+
//
|
|
2311
|
+
// Serves the RETAINED snapshot; never collects inline. cpuPct is a delta
|
|
2312
|
+
// against the previous tick's counter, so an inline collect would hold no
|
|
2313
|
+
// prior sample and report cpuPct=null on every request — a permanently empty
|
|
2314
|
+
// column with nothing erroring to say why.
|
|
2315
|
+
//
|
|
2316
|
+
// 503 before the first tick rather than an empty snapshot: an empty
|
|
2317
|
+
// `sessions` array is indistinguishable from "no live sessions", and those
|
|
2318
|
+
// are different facts.
|
|
2319
|
+
app.get('/census', (c) => {
|
|
2320
|
+
const snap = deps.censusLatest?.() ?? null;
|
|
2321
|
+
if (!snap)
|
|
2322
|
+
return c.json({ error: 'census-not-collected' }, 503);
|
|
2323
|
+
return c.json(snap);
|
|
2324
|
+
});
|
|
2325
|
+
// Task 1749 — the install-wide activity join: one row per live session with
|
|
2326
|
+
// its account, title, model, age, idle, turns, RSS, CPU, tokens and cost.
|
|
2327
|
+
//
|
|
2328
|
+
// Assembled HERE rather than in the admin UI because all five inputs are
|
|
2329
|
+
// already co-located in this service (live set, watcher accountId, JSONL
|
|
2330
|
+
// enumerator, metering, census); the UI holds only the on-disk account list,
|
|
2331
|
+
// which it reconciles against this response. There is no gate on this route:
|
|
2332
|
+
// the manager binds loopback and the house-only gate lives in the UI proxy.
|
|
2333
|
+
app.get('/activity', async (c) => {
|
|
2334
|
+
const start = Date.now();
|
|
2335
|
+
const result = await collectActivity({
|
|
2336
|
+
watcher: deps.watcher,
|
|
2337
|
+
claudeConfigDir: deps.claudeConfigDir,
|
|
2338
|
+
jsonlReadMaxBytes: deps.jsonlReadMaxBytes,
|
|
2339
|
+
liveSessions: liveSessionIds(),
|
|
2340
|
+
censusLatest: () => deps.censusLatest?.() ?? null,
|
|
2341
|
+
logger: deps.logger,
|
|
2342
|
+
});
|
|
2343
|
+
const ageMs = result.census ? Date.now() - result.census.sampleAtMs : null;
|
|
2344
|
+
deps.logger(`[activity] op=assemble rows=${result.rows.length} ` +
|
|
2345
|
+
`censusAgeMs=${ageMs === null ? 'none' : ageMs} ` +
|
|
2346
|
+
`cpuNull=${result.census?.cpuNull ?? 'none'} ms=${Date.now() - start}`);
|
|
2347
|
+
return c.json(result);
|
|
2348
|
+
});
|
|
2307
2349
|
app.get('/live-sessions', (c) => {
|
|
2308
2350
|
const seen = new Map();
|
|
2309
2351
|
for (const { sessionId, pid } of liveSessionIds())
|