@rubytech/create-maxy-code 0.1.592 → 0.1.594
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/payload/platform/package.json +1 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +11 -5
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +11 -0
- package/payload/platform/plugins/cloudflare/PLUGIN.md +2 -0
- package/payload/platform/plugins/docs/references/internals.md +5 -3
- package/payload/platform/plugins/docs/references/telegram-guide.md +5 -1
- package/payload/platform/plugins/scheduling/PLUGIN.md +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +15 -2
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +7 -2
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js +125 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts +28 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js +72 -12
- package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js.map +1 -1
- package/payload/platform/plugins/telegram/PLUGIN.md +12 -5
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.js +31 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js +30 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-fetch-tool.test.js +24 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-fetch-tool.test.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-send-tool.test.js +31 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-send-tool.test.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.js +55 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.js +89 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/index.js +13 -42
- package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.d.ts +80 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.js +96 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/ask.d.ts +5 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/ask.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/ask.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts +5 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.d.ts +5 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.d.ts +5 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/thread.d.ts +5 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/thread.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/thread.js.map +1 -1
- package/payload/platform/scripts/__tests__/agent-identity-reconcile.test.sh +110 -0
- package/payload/platform/scripts/__tests__/check-orphan-dist.test.sh +87 -0
- package/payload/platform/scripts/check-orphan-dist.mjs +143 -0
- package/payload/platform/scripts/lib/agent-identity-reconcile.sh +122 -0
- package/payload/platform/scripts/lib/provision-account-dir.sh +8 -26
- package/payload/platform/scripts/setup-account.sh +15 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +37 -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 +178 -13
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +5 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts +5 -0
- package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js +42 -1
- package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.d.ts +13 -5
- package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.js +23 -9
- package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.d.ts +7 -4
- package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.js +5 -3
- package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/telegram-channel-store.d.ts +15 -1
- package/payload/platform/services/claude-session-manager/dist/telegram-channel-store.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/telegram-channel-store.js +16 -7
- package/payload/platform/services/claude-session-manager/dist/telegram-channel-store.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/telegram-plugin-mcp.d.ts +28 -0
- package/payload/platform/services/claude-session-manager/dist/telegram-plugin-mcp.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/telegram-plugin-mcp.js +53 -0
- package/payload/platform/services/claude-session-manager/dist/telegram-plugin-mcp.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts +9 -5
- package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js +12 -6
- package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.d.ts +7 -3
- package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js +5 -1
- package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js.map +1 -1
- package/payload/platform/services/telegram-channel/dist/instructions.d.ts +14 -2
- package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
- package/payload/platform/services/telegram-channel/dist/instructions.js +34 -3
- package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
- package/payload/platform/templates/agents/public/IDENTITY.md +3 -3
- package/payload/server/server.js +74 -9
- package/payload/platform/lib/anthropic-key/dist/index.d.ts +0 -22
- package/payload/platform/lib/anthropic-key/dist/index.d.ts.map +0 -1
- package/payload/platform/lib/anthropic-key/dist/index.js +0 -232
- package/payload/platform/lib/anthropic-key/dist/index.js.map +0 -1
- package/payload/platform/lib/graph-search/dist/query-expansion.d.ts +0 -37
- package/payload/platform/lib/graph-search/dist/query-expansion.d.ts.map +0 -1
- package/payload/platform/lib/graph-search/dist/query-expansion.js +0 -101
- package/payload/platform/lib/graph-search/dist/query-expansion.js.map +0 -1
- package/payload/platform/lib/oauth-llm/dist/index.d.ts +0 -116
- package/payload/platform/lib/oauth-llm/dist/index.d.ts.map +0 -1
- package/payload/platform/lib/oauth-llm/dist/index.js +0 -386
- package/payload/platform/lib/oauth-llm/dist/index.js.map +0 -1
- package/payload/platform/lib/screening-patterns/dist/index.d.ts +0 -29
- package/payload/platform/lib/screening-patterns/dist/index.d.ts.map +0 -1
- package/payload/platform/lib/screening-patterns/dist/index.js +0 -48
- package/payload/platform/lib/screening-patterns/dist/index.js.map +0 -1
- package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts +0 -2
- package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts.map +0 -1
- package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js +0 -34
- package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js.map +0 -1
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts +0 -39
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts.map +0 -1
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js +0 -249
- package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js.map +0 -1
- package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts +0 -6
- package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts.map +0 -1
- package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js +0 -32
- package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js.map +0 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +0 -283
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts.map +0 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +0 -1155
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +0 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts +0 -90
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts.map +0 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js +0 -551
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts +0 -17
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +0 -186
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +0 -29
- package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/lib/screening.js +0 -105
- package/payload/platform/plugins/email/mcp/dist/lib/screening.js.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts +0 -38
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +0 -817
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +0 -30
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +0 -215
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts +0 -19
- package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js +0 -151
- package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts +0 -6
- package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts.map +0 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js +0 -89
- package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js +0 -90
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +0 -226
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts +0 -60
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js +0 -169
- package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +0 -248
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +0 -824
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts +0 -63
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +0 -210
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +0 -35
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js +0 -28
- package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js +0 -68
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js +0 -88
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js +0 -58
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +0 -64
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js +0 -70
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js +0 -48
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +0 -74
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js +0 -47
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js +0 -65
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js +0 -43
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js +0 -65
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js +0 -49
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +0 -79
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js +0 -329
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts +0 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +0 -81
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts +0 -34
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +0 -62
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts +0 -61
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js +0 -102
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts +0 -35
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js +0 -73
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +0 -29
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +0 -22
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts +0 -30
- package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts.map +0 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js +0 -130
- package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js.map +0 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts +0 -65
- package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts.map +0 -1
- package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js +0 -262
- package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts +0 -2
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js +0 -100
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts +0 -2
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js +0 -22
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts +0 -11
- package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts.map +0 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js +0 -19
- package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js.map +0 -1
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.d.ts +0 -2
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.d.ts.map +0 -1
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.js +0 -196
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.js.map +0 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.d.ts +0 -70
- package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.d.ts.map +0 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js +0 -247
- package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js.map +0 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts +0 -21
- package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts.map +0 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/message.js +0 -40
- package/payload/platform/plugins/telegram/mcp/dist/tools/message.js.map +0 -1
- package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts +0 -8
- package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts.map +0 -1
- package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js +0 -83
- package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js.map +0 -1
- package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +0 -151
- package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts.map +0 -1
- package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js +0 -299
- package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts +0 -39
- package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/account-admin-census.js +0 -122
- package/payload/platform/services/claude-session-manager/dist/account-admin-census.js.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts +0 -39
- package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js +0 -133
- package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts +0 -22
- package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/input-postcondition.js +0 -50
- package/payload/platform/services/claude-session-manager/dist/input-postcondition.js.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts +0 -30
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js +0 -204
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts +0 -80
- package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js +0 -306
- package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +0 -49
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.js +0 -52
- package/payload/platform/services/claude-session-manager/dist/session-store.js.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts +0 -83
- package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts.map +0 -1
- package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js +0 -345
- package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js.map +0 -1
- package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts +0 -104
- package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts.map +0 -1
- package/payload/platform/services/telegram-channel/dist/turn-follow.js +0 -408
- package/payload/platform/services/telegram-channel/dist/turn-follow.js.map +0 -1
- package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts +0 -104
- package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts.map +0 -1
- package/payload/platform/services/whatsapp-channel/dist/turn-follow.js +0 -393
- package/payload/platform/services/whatsapp-channel/dist/turn-follow.js.map +0 -1
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
// Turn-end detector for the telegram native channel. A faithful mirror of
|
|
2
|
-
// whatsapp-channel/turn-follow.ts — `reduceTurnFromLines` folds one turn's JSONL
|
|
3
|
-
// lines into the delivery decision and `followTurnEnds` tails the session JSONL
|
|
4
|
-
// from a byte offset and reports every assistant end_turn (not just the first),
|
|
5
|
-
// so a follow-on turn produced from a mid-turn-queued message is covered too.
|
|
6
|
-
// Pure of the MCP SDK so it unit-tests in isolation.
|
|
7
|
-
//
|
|
8
|
-
// The divergence from the WhatsApp twin: this channel has no fallback delivery
|
|
9
|
-
// and no reply-document tool. The follower exists ONLY to detect the
|
|
10
|
-
// turn-undelivered anomaly — a channel turn that ends with substantive assistant
|
|
11
|
-
// text but never called the reply tool, so the operator (who sees only
|
|
12
|
-
// reply-tool text in the reader) receives nothing. The reply text itself is
|
|
13
|
-
// never delivered or re-sent here; the gateway logs the anomaly.
|
|
14
|
-
import { closeSync, existsSync, openSync, readdirSync, readSync, statSync, watch } from 'node:fs';
|
|
15
|
-
import { homedir } from 'node:os';
|
|
16
|
-
import { join } from 'node:path';
|
|
17
|
-
// The reply tool the agent uses to deliver to the telegram chat. Its presence in
|
|
18
|
-
// a turn means the operator received something this turn. Mirrors the registered
|
|
19
|
-
// server name ('telegram-channel') in claude-session-manager's spawn; kept as a
|
|
20
|
-
// literal here to avoid a cross-package import. This channel exposes no
|
|
21
|
-
// reply-document tool, so this set has one named member plus the generic alias.
|
|
22
|
-
const REPLY_TOOL_NAMES = new Set(['mcp__telegram-channel__reply', 'mcp__channel__reply']);
|
|
23
|
-
// Task 2456 — the `<channel source="…">` envelope Claude Code wraps a channel
|
|
24
|
-
// notification in. Platform channels also stamp the row `isMeta: true` +
|
|
25
|
-
// `origin.kind === 'channel'`; a native Claude Code channel emits the wrapper
|
|
26
|
-
// with no stamp, so stamp-or-wrapper is accepted on both branches. Ported
|
|
27
|
-
// verbatim from whatsapp-channel/turn-follow.ts, where Task 2111 measured the
|
|
28
|
-
// two discriminators never disagreeing across 86 channel prompts.
|
|
29
|
-
const CHANNEL_WRAPPER_PREFIX = /^<channel\b[^>]*>/;
|
|
30
|
-
function isChannelStamped(v) {
|
|
31
|
-
return (v?.isMeta === true &&
|
|
32
|
-
typeof v.origin === 'object' &&
|
|
33
|
-
v.origin !== null &&
|
|
34
|
-
v.origin.kind === 'channel');
|
|
35
|
-
}
|
|
36
|
-
/** True iff this JSONL row is one channel inbound the turn answered. */
|
|
37
|
-
function isConsumedInbound(ev) {
|
|
38
|
-
if (ev.type === 'user') {
|
|
39
|
-
const content = ev.message?.content;
|
|
40
|
-
// Array content is a tool_result carrier, never an inbound.
|
|
41
|
-
if (typeof content !== 'string')
|
|
42
|
-
return false;
|
|
43
|
-
return isChannelStamped(ev) || CHANNEL_WRAPPER_PREFIX.test(content);
|
|
44
|
-
}
|
|
45
|
-
if (ev.type === 'attachment') {
|
|
46
|
-
const att = ev.attachment;
|
|
47
|
-
if (att?.type !== 'queued_command' || typeof att.prompt !== 'string')
|
|
48
|
-
return false;
|
|
49
|
-
return isChannelStamped(att) || CHANNEL_WRAPPER_PREFIX.test(att.prompt);
|
|
50
|
-
}
|
|
51
|
-
// `queue-operation` rows carry the same prompt text on enqueue/remove, so
|
|
52
|
-
// counting them would multiply each inbound. They are never counted.
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
/** A usage figure the row actually reported, or -1. */
|
|
56
|
-
function usageNum(v) {
|
|
57
|
-
return typeof v === 'number' && Number.isFinite(v) ? v : -1;
|
|
58
|
-
}
|
|
59
|
-
/** Fold one turn's JSONL line strings into the delivery decision. Pure. */
|
|
60
|
-
export function reduceTurnFromLines(lines) {
|
|
61
|
-
let replied = false;
|
|
62
|
-
let finalText = '';
|
|
63
|
-
let reachedEndTurn = false;
|
|
64
|
-
let cacheReadTokens = -1;
|
|
65
|
-
let inputTokens = -1;
|
|
66
|
-
let outputTokens = -1;
|
|
67
|
-
let thinkingBlocks = 0;
|
|
68
|
-
let thinkingChars = 0;
|
|
69
|
-
let messageId = '';
|
|
70
|
-
let toolUseBlocks = 0;
|
|
71
|
-
let consumedInbounds = 0;
|
|
72
|
-
for (const line of lines) {
|
|
73
|
-
if (!line)
|
|
74
|
-
continue;
|
|
75
|
-
let ev;
|
|
76
|
-
try {
|
|
77
|
-
ev = JSON.parse(line);
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
if (ev.type !== 'assistant') {
|
|
83
|
-
if (isConsumedInbound(ev))
|
|
84
|
-
consumedInbounds++;
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
const msg = ev.message;
|
|
88
|
-
const isEnd = msg?.stop_reason === 'end_turn';
|
|
89
|
-
// Task 2364 — counted ahead of the content-shape guard below so every
|
|
90
|
-
// assistant row in the turn contributes, not only the end_turn row.
|
|
91
|
-
if (msg && Array.isArray(msg.content)) {
|
|
92
|
-
for (const block of msg.content) {
|
|
93
|
-
// Task 2451 — counted here, in the same unguarded pass as thinking, so
|
|
94
|
-
// a row whose content is present but whose shape fails the later guard
|
|
95
|
-
// still contributes its tool calls.
|
|
96
|
-
if (block?.type === 'tool_use')
|
|
97
|
-
toolUseBlocks++;
|
|
98
|
-
if (block?.type !== 'thinking')
|
|
99
|
-
continue;
|
|
100
|
-
thinkingBlocks++;
|
|
101
|
-
if (typeof block.thinking === 'string')
|
|
102
|
-
thinkingChars += block.thinking.length;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// Task 2451 — a segment normally holds exactly one end_turn row, but a MERGED
|
|
106
|
-
// segment holds every end_turn row of one split assistant message. Those rows
|
|
107
|
-
// carry identical `id` and `usage` (measured on msg_011Cdk9NsrGoTd4dEsi25uvq),
|
|
108
|
-
// so re-assigning per row is last-wins over equal values.
|
|
109
|
-
if (isEnd) {
|
|
110
|
-
messageId = typeof msg?.id === 'string' ? msg.id : '';
|
|
111
|
-
cacheReadTokens = usageNum(msg?.usage?.cache_read_input_tokens);
|
|
112
|
-
inputTokens = usageNum(msg?.usage?.input_tokens);
|
|
113
|
-
outputTokens = usageNum(msg?.usage?.output_tokens);
|
|
114
|
-
}
|
|
115
|
-
if (!msg || !Array.isArray(msg.content)) {
|
|
116
|
-
// Task 2451 — `finalText` is NOT cleared here. It is '' unless an earlier
|
|
117
|
-
// end_turn row of the same merged message already contributed text, and
|
|
118
|
-
// erasing that would drop an answer this segment holds.
|
|
119
|
-
if (isEnd)
|
|
120
|
-
reachedEndTurn = true;
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
let endText = '';
|
|
124
|
-
for (const block of msg.content) {
|
|
125
|
-
if (block?.type === 'tool_use' && typeof block.name === 'string' && REPLY_TOOL_NAMES.has(block.name)) {
|
|
126
|
-
replied = true;
|
|
127
|
-
}
|
|
128
|
-
else if (block?.type === 'text' && typeof block.text === 'string' && isEnd) {
|
|
129
|
-
endText += block.text;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (isEnd) {
|
|
133
|
-
reachedEndTurn = true;
|
|
134
|
-
// Task 2451 — accumulate rather than assign: a split message is ONE answer,
|
|
135
|
-
// so its text is the concatenation of its rows. Identical to assignment on
|
|
136
|
-
// an ordinary segment, which holds a single end_turn row.
|
|
137
|
-
finalText += endText;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return {
|
|
141
|
-
replied,
|
|
142
|
-
finalText,
|
|
143
|
-
reachedEndTurn,
|
|
144
|
-
segmentStart: -1,
|
|
145
|
-
segmentEnd: -1,
|
|
146
|
-
messageId,
|
|
147
|
-
toolUseBlocks,
|
|
148
|
-
consumedInbounds,
|
|
149
|
-
context: { cacheReadTokens, inputTokens, outputTokens, thinkingBlocks, thinkingChars },
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
/** True iff `line` is an assistant message with stop_reason 'end_turn'. */
|
|
153
|
-
function isAssistantEndTurn(line) {
|
|
154
|
-
if (!line)
|
|
155
|
-
return false;
|
|
156
|
-
let ev;
|
|
157
|
-
try {
|
|
158
|
-
ev = JSON.parse(line);
|
|
159
|
-
}
|
|
160
|
-
catch {
|
|
161
|
-
return false;
|
|
162
|
-
}
|
|
163
|
-
return ev.type === 'assistant' && ev.message?.stop_reason === 'end_turn';
|
|
164
|
-
}
|
|
165
|
-
function claudeConfigRoot(env) {
|
|
166
|
-
return env.CLAUDE_CONFIG_DIR ?? join(homedir(), '.claude');
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Walk `${CLAUDE_CONFIG_DIR}/projects/<slug>/` for `${sessionId}.jsonl` (live
|
|
170
|
-
* and archived). Returns the first match or null. Inlined from
|
|
171
|
-
* whatsapp-channel/jsonl-watch.ts (itself inlined from
|
|
172
|
-
* claude-session-manager/src/jsonl-path.ts) to avoid a cross-package dep.
|
|
173
|
-
*/
|
|
174
|
-
export function findJsonlForSessionId(sessionId, env = process.env) {
|
|
175
|
-
const projectsRoot = join(claudeConfigRoot(env), 'projects');
|
|
176
|
-
if (!existsSync(projectsRoot))
|
|
177
|
-
return null;
|
|
178
|
-
let slugs;
|
|
179
|
-
try {
|
|
180
|
-
slugs = readdirSync(projectsRoot, { withFileTypes: true })
|
|
181
|
-
.filter((d) => d.isDirectory())
|
|
182
|
-
.map((d) => d.name);
|
|
183
|
-
}
|
|
184
|
-
catch {
|
|
185
|
-
return null;
|
|
186
|
-
}
|
|
187
|
-
const basename = `${sessionId}.jsonl`;
|
|
188
|
-
for (const slug of slugs) {
|
|
189
|
-
const live = join(projectsRoot, slug, basename);
|
|
190
|
-
if (existsSync(live))
|
|
191
|
-
return live;
|
|
192
|
-
const archived = join(projectsRoot, slug, 'archive', basename);
|
|
193
|
-
if (existsSync(archived))
|
|
194
|
-
return archived;
|
|
195
|
-
}
|
|
196
|
-
return null;
|
|
197
|
-
}
|
|
198
|
-
/** The `message.id` of an assistant row, or '' for any other row shape. */
|
|
199
|
-
function rowMessageId(line) {
|
|
200
|
-
if (!line)
|
|
201
|
-
return '';
|
|
202
|
-
let ev;
|
|
203
|
-
try {
|
|
204
|
-
ev = JSON.parse(line);
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
return '';
|
|
208
|
-
}
|
|
209
|
-
if (ev.type !== 'assistant')
|
|
210
|
-
return '';
|
|
211
|
-
return typeof ev.message?.id === 'string' ? ev.message.id : '';
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Task 2451 — a close reducing to no text, no tool use and at least one thinking
|
|
215
|
-
* block is not a finished turn. Claude Code 2.1.222 persists one assistant
|
|
216
|
-
* message as one row per content block, each stamped end_turn, so the thinking
|
|
217
|
-
* row closes the turn before the text row exists. Measured on account 5bc2c0e2:
|
|
218
|
-
* 89 of 481 end_turn rows are thinking-only and 89 of 89 are followed by a text
|
|
219
|
-
* end_turn row of the same message.
|
|
220
|
-
*/
|
|
221
|
-
function isIncompleteClose(o) {
|
|
222
|
-
// A close with no `message.id` is never held. The hold is released by the
|
|
223
|
-
// first row whose id differs, and `rowMessageId` reports '' for EVERY
|
|
224
|
-
// non-assistant row, so a hold keyed on '' matches the next user row instead
|
|
225
|
-
// of releasing on it: that row joins the held segment, the empty turn takes
|
|
226
|
-
// its inbound, and the real answer arrives with nothing left to consume and is
|
|
227
|
-
// discarded at the server's credit guard. That is precisely the loss this
|
|
228
|
-
// hold exists to prevent, reintroduced by the identity test degenerating.
|
|
229
|
-
if (o.messageId === '')
|
|
230
|
-
return false;
|
|
231
|
-
return o.finalText === '' && o.toolUseBlocks === 0 && o.context.thinkingBlocks >= 1;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Tail `jsonlPath` from `startOffset` for the life of the session, invoking
|
|
235
|
-
* `onTurnEnd` once per TURN. Task 2451: that is once per assistant end_turn
|
|
236
|
-
* EXCEPT where one message was split across several end_turn rows, which are
|
|
237
|
-
* merged into a single call. It
|
|
238
|
-
* segments the JSONL at each end_turn so a follow-on turn produced from a
|
|
239
|
-
* mid-turn-queued message is reported too. The process dies with the session,
|
|
240
|
-
* so there is no per-turn timeout; the promise resolves only when the file
|
|
241
|
-
* becomes unreadable. Never rejects. (Mirror of the WhatsApp twin.)
|
|
242
|
-
*/
|
|
243
|
-
export async function followTurnEnds(jsonlPath, startOffset, onTurnEnd, opts = {}) {
|
|
244
|
-
let baseSize;
|
|
245
|
-
try {
|
|
246
|
-
baseSize = statSync(jsonlPath).size;
|
|
247
|
-
}
|
|
248
|
-
catch {
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
return new Promise((resolve) => {
|
|
252
|
-
let offset = Math.min(startOffset, baseSize);
|
|
253
|
-
let carry = '';
|
|
254
|
-
// Task 2078 — byte position of the first line of the segment being built,
|
|
255
|
-
// and of the end of the last line consumed. Both advance only on a
|
|
256
|
-
// fully-delimited line, so a partial trailing line in `carry` never moves
|
|
257
|
-
// them, and a multi-byte character split across two reads cannot
|
|
258
|
-
// desynchronise them: each line's own utf8 length is measured after the
|
|
259
|
-
// line is complete.
|
|
260
|
-
let segStart = Math.min(startOffset, baseSize);
|
|
261
|
-
let segEnd = segStart;
|
|
262
|
-
let segment = [];
|
|
263
|
-
const state = opts.state;
|
|
264
|
-
const now = opts.now ?? (() => Date.now());
|
|
265
|
-
// Task 2451 — the held segment's lines and its byte start. `heldId` is the
|
|
266
|
-
// message identity a later row must match to extend it. Null when not holding.
|
|
267
|
-
let heldSegment = null;
|
|
268
|
-
let heldId = '';
|
|
269
|
-
let heldStart = 0;
|
|
270
|
-
/** Emit an outcome over the given lines and record it on the shared state. */
|
|
271
|
-
const emit = (lines, start, end) => {
|
|
272
|
-
const outcome = reduceTurnFromLines(lines);
|
|
273
|
-
outcome.segmentStart = start;
|
|
274
|
-
outcome.segmentEnd = end;
|
|
275
|
-
if (state)
|
|
276
|
-
state.lastMessageId = outcome.messageId;
|
|
277
|
-
onTurnEnd(outcome);
|
|
278
|
-
};
|
|
279
|
-
/** Release a held segment as its own (empty-answer) turn. */
|
|
280
|
-
const clearHold = () => {
|
|
281
|
-
heldSegment = null;
|
|
282
|
-
heldId = '';
|
|
283
|
-
if (state) {
|
|
284
|
-
state.held = false;
|
|
285
|
-
state.heldMessageId = '';
|
|
286
|
-
state.heldSinceMs = -1;
|
|
287
|
-
}
|
|
288
|
-
};
|
|
289
|
-
// Declared ahead of `settle`, which calls it: both are const arrow functions
|
|
290
|
-
// in one scope, so the reverse order throws a TDZ ReferenceError on the
|
|
291
|
-
// watcher-error path, which TypeScript does not report.
|
|
292
|
-
const flushHeld = (end) => {
|
|
293
|
-
if (!heldSegment)
|
|
294
|
-
return;
|
|
295
|
-
const lines = heldSegment;
|
|
296
|
-
const start = heldStart;
|
|
297
|
-
clearHold();
|
|
298
|
-
emit(lines, start, end);
|
|
299
|
-
};
|
|
300
|
-
let settled = false;
|
|
301
|
-
const settle = () => {
|
|
302
|
-
if (settled)
|
|
303
|
-
return;
|
|
304
|
-
settled = true;
|
|
305
|
-
watcher.close();
|
|
306
|
-
clearInterval(poll);
|
|
307
|
-
// Task 2451 — a hold outstanding when the session ends is that answer's
|
|
308
|
-
// last chance to be reported. Flush before the promise resolves and the
|
|
309
|
-
// owning server clears its counters.
|
|
310
|
-
flushHeld(segEnd);
|
|
311
|
-
resolve();
|
|
312
|
-
};
|
|
313
|
-
// Poll as well as watch: fs.watch misses appends on some platforms (notably
|
|
314
|
-
// macOS), so a light poll guarantees growth is seen within the interval.
|
|
315
|
-
const poll = setInterval(() => drain(), 200);
|
|
316
|
-
const drain = () => {
|
|
317
|
-
let end;
|
|
318
|
-
try {
|
|
319
|
-
end = statSync(jsonlPath).size;
|
|
320
|
-
}
|
|
321
|
-
catch {
|
|
322
|
-
settle();
|
|
323
|
-
return;
|
|
324
|
-
}
|
|
325
|
-
if (end <= offset)
|
|
326
|
-
return;
|
|
327
|
-
let buf;
|
|
328
|
-
try {
|
|
329
|
-
const fd = openSync(jsonlPath, 'r');
|
|
330
|
-
try {
|
|
331
|
-
buf = Buffer.alloc(end - offset);
|
|
332
|
-
readSync(fd, buf, 0, buf.length, offset);
|
|
333
|
-
}
|
|
334
|
-
finally {
|
|
335
|
-
closeSync(fd);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
catch {
|
|
339
|
-
settle();
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
offset = end;
|
|
343
|
-
carry += buf.toString('utf8');
|
|
344
|
-
let nl = carry.indexOf('\n');
|
|
345
|
-
while (nl !== -1) {
|
|
346
|
-
const line = carry.slice(0, nl);
|
|
347
|
-
carry = carry.slice(nl + 1);
|
|
348
|
-
nl = carry.indexOf('\n');
|
|
349
|
-
// Task 2451 — a row belonging to a different message ends the held one.
|
|
350
|
-
// Releasing here rather than at the next end_turn keeps the hold as short
|
|
351
|
-
// as the transcript allows: a following user or tool row frees it at once.
|
|
352
|
-
// `segEnd` has not yet advanced past this line, so the flushed segment's
|
|
353
|
-
// end offset correctly excludes the releasing row, and `segStart` must
|
|
354
|
-
// move to that same boundary or the next outcome's byte range re-covers
|
|
355
|
-
// the flushed turn (webchat ships those offsets to the gateway).
|
|
356
|
-
if (heldSegment && rowMessageId(line) !== heldId) {
|
|
357
|
-
flushHeld(segEnd);
|
|
358
|
-
segStart = segEnd;
|
|
359
|
-
}
|
|
360
|
-
if (heldSegment) {
|
|
361
|
-
heldSegment.push(line);
|
|
362
|
-
}
|
|
363
|
-
else {
|
|
364
|
-
segment.push(line);
|
|
365
|
-
}
|
|
366
|
-
segEnd += Buffer.byteLength(line, 'utf8') + 1;
|
|
367
|
-
if (!isAssistantEndTurn(line))
|
|
368
|
-
continue;
|
|
369
|
-
if (heldSegment) {
|
|
370
|
-
// Same message.id and it closes again: the rest of the split message
|
|
371
|
-
// has arrived. Emit the merged segment, empty text included — a merge
|
|
372
|
-
// that is still empty is an honest empty-answer turn.
|
|
373
|
-
const lines = heldSegment;
|
|
374
|
-
const start = heldStart;
|
|
375
|
-
clearHold();
|
|
376
|
-
emit(lines, start, segEnd);
|
|
377
|
-
segStart = segEnd;
|
|
378
|
-
continue;
|
|
379
|
-
}
|
|
380
|
-
const outcome = reduceTurnFromLines(segment);
|
|
381
|
-
if (isIncompleteClose(outcome)) {
|
|
382
|
-
heldSegment = segment;
|
|
383
|
-
heldId = outcome.messageId;
|
|
384
|
-
heldStart = segStart;
|
|
385
|
-
if (state) {
|
|
386
|
-
state.held = true;
|
|
387
|
-
state.heldMessageId = outcome.messageId;
|
|
388
|
-
state.heldSinceMs = now();
|
|
389
|
-
}
|
|
390
|
-
segment = [];
|
|
391
|
-
segStart = segEnd;
|
|
392
|
-
continue;
|
|
393
|
-
}
|
|
394
|
-
outcome.segmentStart = segStart;
|
|
395
|
-
outcome.segmentEnd = segEnd;
|
|
396
|
-
if (state)
|
|
397
|
-
state.lastMessageId = outcome.messageId;
|
|
398
|
-
onTurnEnd(outcome);
|
|
399
|
-
segment = [];
|
|
400
|
-
segStart = segEnd;
|
|
401
|
-
}
|
|
402
|
-
};
|
|
403
|
-
const watcher = watch(jsonlPath, { persistent: false }, () => drain());
|
|
404
|
-
watcher.on('error', () => settle());
|
|
405
|
-
drain(); // catch lines already present between startOffset and now
|
|
406
|
-
});
|
|
407
|
-
}
|
|
408
|
-
//# sourceMappingURL=turn-follow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"turn-follow.js","sourceRoot":"","sources":["../src/turn-follow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
export interface TurnOutcome {
|
|
2
|
-
/** A reply/reply-document tool_use appeared in the turn. */
|
|
3
|
-
replied: boolean;
|
|
4
|
-
/** Text of the end_turn assistant message ('' when none / not yet reached). */
|
|
5
|
-
finalText: string;
|
|
6
|
-
/** The turn reached an assistant end_turn. */
|
|
7
|
-
reachedEndTurn: boolean;
|
|
8
|
-
/** Task 2078 — the byte range of this turn's lines in the JSONL, so a reader
|
|
9
|
-
* in another process can parse exactly this turn without being handed its
|
|
10
|
-
* text. -1/-1 from `reduceTurnFromLines`, which is given lines and not
|
|
11
|
-
* offsets; `followTurnEnds` overwrites both before calling back. */
|
|
12
|
-
segmentStart: number;
|
|
13
|
-
segmentEnd: number;
|
|
14
|
-
/**
|
|
15
|
-
* Task 2111 — how many channel inbounds this turn answered. The harness answers
|
|
16
|
-
* every inbound queued while it was busy in ONE turn, so turn count and inbound
|
|
17
|
-
* count differ and a per-turn counter cannot stay in bijection with the pushes.
|
|
18
|
-
* An inbound arriving at idle is journalled as a `type:'user'` row; one arriving
|
|
19
|
-
* mid-turn is injected into the running turn as a `queued_command` attachment
|
|
20
|
-
* row. (parse-transcript.ts records that the mid-turn twin can also appear as a
|
|
21
|
-
* plain `type:'user'` channel row depending on runtime version; both shapes
|
|
22
|
-
* count once here, so the count is version-independent.) Both are counted, so a
|
|
23
|
-
* turn-end consumes its own inbounds and no others. Measured on session
|
|
24
|
-
* e59ed04e: 75 user rows + 11 queued_command rows against 85 logged inbounds;
|
|
25
|
-
* user rows alone give 75 and leave the drift open. Zero is a real answer —
|
|
26
|
-
* 26 of that session's 100 turn segments hold no channel row at all — and the
|
|
27
|
-
* caller must consume nothing on those rather than flooring to one.
|
|
28
|
-
*/
|
|
29
|
-
consumedInbounds: number;
|
|
30
|
-
/** Task 2451 — `message.id` of the closing end_turn row; '' when the row
|
|
31
|
-
* carries none. Claude Code 2.1.222 can persist ONE assistant message as
|
|
32
|
-
* several rows, each stamped end_turn, so this is the identity
|
|
33
|
-
* `followTurnEnds` merges a split message on. */
|
|
34
|
-
messageId: string;
|
|
35
|
-
/** Task 2451 — `type:'tool_use'` blocks across EVERY assistant row in the
|
|
36
|
-
* segment. `replied` cannot serve here: it matches only the retired reply
|
|
37
|
-
* tool names, so a turn that called Read or Bash reports replied=false
|
|
38
|
-
* with tool_use present. The hold rule needs "this turn called no tool
|
|
39
|
-
* at all". */
|
|
40
|
-
toolUseBlocks: number;
|
|
41
|
-
/** Task 2364 — the turn's token and thinking counts, for the gateway's
|
|
42
|
-
* op=turn-context line. */
|
|
43
|
-
context: TurnContextCounts;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Task 2364 — the per-turn evidence a refusal has to be diagnosed from. Every
|
|
47
|
-
* field is `-1` when no figure was available and `>= 0` when measured; a real 0
|
|
48
|
-
* (nothing cached this turn, no thinking done) is a finding and must never read
|
|
49
|
-
* as "not reported".
|
|
50
|
-
*/
|
|
51
|
-
export interface TurnContextCounts {
|
|
52
|
-
/** `message.usage.cache_read_input_tokens` on the turn's end_turn row. It
|
|
53
|
-
* separates "the turn was outside the model's context" from "the model had it
|
|
54
|
-
* and did not use it". -1 when that row carries no usage object. */
|
|
55
|
-
cacheReadTokens: number;
|
|
56
|
-
/** `message.usage.input_tokens` on the end_turn row; -1 when absent. */
|
|
57
|
-
inputTokens: number;
|
|
58
|
-
/** `message.usage.output_tokens` on the end_turn row; -1 when absent. */
|
|
59
|
-
outputTokens: number;
|
|
60
|
-
/** `type:'thinking'` blocks across EVERY assistant row in the turn. The
|
|
61
|
-
* reasoning sits on the rows before the final one; the end_turn row usually
|
|
62
|
-
* carries only text, so an end-row-only count reads 0 on a turn that
|
|
63
|
-
* reasoned at length. Never -1 from a live producer. */
|
|
64
|
-
thinkingBlocks: number;
|
|
65
|
-
/** Summed length of those blocks' `thinking` strings. 0 across a non-zero
|
|
66
|
-
* `thinkingBlocks` is the finding this exists for: the reasoning behind the
|
|
67
|
-
* turn is unrecoverable. Never -1 from a live producer. */
|
|
68
|
-
thinkingChars: number;
|
|
69
|
-
}
|
|
70
|
-
/** Fold one turn's JSONL line strings into the delivery decision. Pure. */
|
|
71
|
-
export declare function reduceTurnFromLines(lines: string[]): TurnOutcome;
|
|
72
|
-
export type OnTurnEnd = (outcome: TurnOutcome) => void;
|
|
73
|
-
/**
|
|
74
|
-
* Task 2451 — the follower's live hold state, mutated in place so the owning
|
|
75
|
-
* channel server can log a standing census without the follower importing a
|
|
76
|
-
* logger. A held segment that never resolves emits no event of its own; the
|
|
77
|
-
* census is the only surface that shows it.
|
|
78
|
-
*/
|
|
79
|
-
export interface FollowerState {
|
|
80
|
-
/** True while a thinking-only close is held awaiting the rest of its message. */
|
|
81
|
-
held: boolean;
|
|
82
|
-
/** `message.id` of the held segment; '' when not holding. */
|
|
83
|
-
heldMessageId: string;
|
|
84
|
-
/** Clock value when the hold began; -1 when not holding. */
|
|
85
|
-
heldSinceMs: number;
|
|
86
|
-
/** `message.id` of the last outcome emitted; '' before the first. */
|
|
87
|
-
lastMessageId: string;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Tail `jsonlPath` from `startOffset` for the life of the session, invoking
|
|
91
|
-
* `onTurnEnd` once per TURN. Task 2451: that is once per assistant end_turn
|
|
92
|
-
* EXCEPT where one message was split across several end_turn rows, which are
|
|
93
|
-
* merged into a single call. Each call carries that turn's outcome
|
|
94
|
-
* (Task 839). Unlike a one-shot follow it does not stop at the first end_turn:
|
|
95
|
-
* it segments the JSONL at each end_turn so a follow-on turn produced from a
|
|
96
|
-
* mid-turn-queued message is reported too. The process dies with the session,
|
|
97
|
-
* so there is no per-turn timeout; the promise resolves only when the file
|
|
98
|
-
* becomes unreadable (mirrors watchForGrowth's stat-failure bail). Never rejects.
|
|
99
|
-
*/
|
|
100
|
-
export declare function followTurnEnds(jsonlPath: string, startOffset: number, onTurnEnd: OnTurnEnd, opts?: {
|
|
101
|
-
state?: FollowerState;
|
|
102
|
-
now?: () => number;
|
|
103
|
-
}): Promise<void>;
|
|
104
|
-
//# sourceMappingURL=turn-follow.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"turn-follow.d.ts","sourceRoot":"","sources":["../src/turn-follow.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,OAAO,EAAE,OAAO,CAAA;IAChB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,cAAc,EAAE,OAAO,CAAA;IACvB;;;yEAGqE;IACrE,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;sDAGkD;IAClD,SAAS,EAAE,MAAM,CAAA;IACjB;;;;mBAIe;IACf,aAAa,EAAE,MAAM,CAAA;IACrB;gCAC4B;IAC5B,OAAO,EAAE,iBAAiB,CAAA;CAC3B;AAoDD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC;;yEAEqE;IACrE,eAAe,EAAE,MAAM,CAAA;IACvB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAA;IACpB;;;6DAGyD;IACzD,cAAc,EAAE,MAAM,CAAA;IACtB;;gEAE4D;IAC5D,aAAa,EAAE,MAAM,CAAA;CACtB;AAOD,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAmFhE;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;AActD;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,iFAAiF;IACjF,IAAI,EAAE,OAAO,CAAA;IACb,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAA;CACtB;AAmCD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GACvD,OAAO,CAAC,IAAI,CAAC,CAwKf"}
|