@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsonl-observer.js","sourceRoot":"","sources":["../src/jsonl-observer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import type { Logger } from './types.js';
|
|
2
|
-
import type { SystemdScopeHandle } from './systemd-spawn.js';
|
|
3
|
-
export type RcSpawnMode = 'new' | 'resume';
|
|
4
|
-
export interface RcScriptSpawnDeps {
|
|
5
|
-
claudeBin: string;
|
|
6
|
-
spawnCwd: string;
|
|
7
|
-
accountId: string;
|
|
8
|
-
platformRoot: string;
|
|
9
|
-
claudeConfigDir: string;
|
|
10
|
-
brandedNeo4jUri: string;
|
|
11
|
-
brandedNeo4jPassword: string;
|
|
12
|
-
uiPort: string;
|
|
13
|
-
pidFileTimeoutMs: number;
|
|
14
|
-
logger: Logger;
|
|
15
|
-
systemdSpawn: (params: {
|
|
16
|
-
claudeBin: string;
|
|
17
|
-
claudeArgs: readonly string[];
|
|
18
|
-
env: Readonly<Record<string, string>>;
|
|
19
|
-
cwd: string;
|
|
20
|
-
unitToken: string;
|
|
21
|
-
captureFilePath: string;
|
|
22
|
-
}) => Promise<SystemdScopeHandle>;
|
|
23
|
-
/** waitForPid binding from the fs watcher (resolves once claude writes
|
|
24
|
-
* its pid file under sessions/<pid>.json). Injectable for tests. */
|
|
25
|
-
waitForPid: (pid: number, timeoutMs: number) => Promise<{
|
|
26
|
-
pidFilePath: string | null;
|
|
27
|
-
bridgeSessionId: string | null;
|
|
28
|
-
}>;
|
|
29
|
-
/** Injectable clock for tests. Defaults to Date.now. */
|
|
30
|
-
now?: () => number;
|
|
31
|
-
/** Liveness poll interval. Default 15_000 ms. Brief permits up to 30 s. */
|
|
32
|
-
livenessPollIntervalMs?: number;
|
|
33
|
-
}
|
|
34
|
-
export interface RcScriptSpawnRequest {
|
|
35
|
-
sessionId: string | null;
|
|
36
|
-
name: string | null;
|
|
37
|
-
}
|
|
38
|
-
export interface RcScriptSpawnResult {
|
|
39
|
-
spawnedPid: number;
|
|
40
|
-
sessionId: string | null;
|
|
41
|
-
unitToken: string;
|
|
42
|
-
mode: RcSpawnMode;
|
|
43
|
-
}
|
|
44
|
-
export interface RcScriptSpawnEntry {
|
|
45
|
-
unitToken: string;
|
|
46
|
-
pid: number;
|
|
47
|
-
sessionId: string | null;
|
|
48
|
-
mode: RcSpawnMode;
|
|
49
|
-
spawnedAt: number;
|
|
50
|
-
captureFilePath: string;
|
|
51
|
-
handle: SystemdScopeHandle;
|
|
52
|
-
pidFileSeen: boolean;
|
|
53
|
-
remoteBound: boolean;
|
|
54
|
-
exited: boolean;
|
|
55
|
-
}
|
|
56
|
-
/** For tests + the census sweep. Read-only iteration. */
|
|
57
|
-
export declare function forEachLiveScriptScopeRcSpawn(cb: (entry: RcScriptSpawnEntry) => void): void;
|
|
58
|
-
export declare function liveScriptScopeRcSpawnCount(): number;
|
|
59
|
-
/** Clear the tracker map. Test-only seam — production never calls. */
|
|
60
|
-
export declare function __resetScriptScopeRcSpawnsForTests(): void;
|
|
61
|
-
/** Schema-tagged line emitter. Every consumer of the cross-arm `[rc-life]`
|
|
62
|
-
* surface must use this so the field order + null-handling stays
|
|
63
|
-
* identical between rc-spawn and rc-daemon. */
|
|
64
|
-
export declare function emitRcLife(logger: Logger, op: string, source: 'rc-spawn' | 'rc-daemon', path: 'script-scope' | 'node-pty', mode: RcSpawnMode | 'daemon', unitToken: string, fields?: Record<string, string | number | boolean | null>): void;
|
|
65
|
-
/** Run the script-scope rc-spawn. Returns once `systemdSpawn` resolves
|
|
66
|
-
* (scope is active, cgroup pid captured). Liveness polling, pid-file
|
|
67
|
-
* binding, and exit observation run in the background — the route
|
|
68
|
-
* responds immediately with `spawnedPid` like the node-pty arm does. */
|
|
69
|
-
export declare function handleRcSpawnScriptScope(deps: RcScriptSpawnDeps, req: RcScriptSpawnRequest): Promise<RcScriptSpawnResult>;
|
|
70
|
-
/** Census sweep — reconciles expected (dashboard-initiated sessions) vs
|
|
71
|
-
* actual (live tracked entries). Detects a leaked entry whose pid is
|
|
72
|
-
* gone but the tracker still holds it, or a tracker whose handle's
|
|
73
|
-
* scope vanished without an exit event. Traffic-independent — runs on
|
|
74
|
-
* a timer in index.ts so a quiet failure surfaces within one interval.
|
|
75
|
-
*
|
|
76
|
-
* The daemon's live handle is supplied via `daemonAlive`; the daemon
|
|
77
|
-
* itself owns the canonical accounting (a single handle reference),
|
|
78
|
-
* but exposing it here keeps the schema unified. */
|
|
79
|
-
export declare function runRcLifeCensus(logger: Logger, daemonAlive: number): void;
|
|
80
|
-
//# sourceMappingURL=rc-script-spawn.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rc-script-spawn.d.ts","sourceRoot":"","sources":["../src/rc-script-spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
// Task 562 — isolated rc-spawn path via `systemdSpawn` + `script(1)`.
|
|
2
|
-
//
|
|
3
|
-
// Mirrors the rc-daemon's spawn mechanism (rc-daemon.ts:312) so the
|
|
4
|
-
// manager holds ZERO file descriptors per spawn: stdio:'ignore' on the
|
|
5
|
-
// outer systemd-run child, real TTY allocated by `script -q -f -c` inside
|
|
6
|
-
// the scope, child's stdout/stderr captured to a retained typescript file
|
|
7
|
-
// at `~/.<brand>/logs/spawn-rc-resume-<unitToken>.log`.
|
|
8
|
-
//
|
|
9
|
-
// Shares no mutable state with the legacy node-pty rc-spawn path:
|
|
10
|
-
// - No `spawnPty`, `registerRcSpawnPty`, or `livePtys` interaction.
|
|
11
|
-
// - No master fd in the manager → no `releasePtyMasterFd` lifecycle.
|
|
12
|
-
// - Own `liveScriptScopeRcSpawns` Map keyed on unitToken for census +
|
|
13
|
-
// liveness observability.
|
|
14
|
-
//
|
|
15
|
-
// Observability follows the cross-arm `[rc-life]` schema (see Task 562
|
|
16
|
-
// brief). Every line carries `source=rc-spawn path=script-scope
|
|
17
|
-
// mode=<new|resume> unitToken=<token>` so a `grep source=rc-spawn`
|
|
18
|
-
// directly compares with `grep source=rc-daemon` lines emitted from
|
|
19
|
-
// rc-daemon.ts under the same schema. The capture file is never
|
|
20
|
-
// unlinked by this module — post-mortem is always possible.
|
|
21
|
-
import { dirname, join } from 'node:path';
|
|
22
|
-
import { existsSync } from 'node:fs';
|
|
23
|
-
import { randomUUID } from 'node:crypto';
|
|
24
|
-
import { findExistingJsonlForSessionId } from './jsonl-path.js';
|
|
25
|
-
import { buildRcChildEnv } from './rc-daemon.js';
|
|
26
|
-
const liveScriptScopeRcSpawns = new Map();
|
|
27
|
-
/** For tests + the census sweep. Read-only iteration. */
|
|
28
|
-
export function forEachLiveScriptScopeRcSpawn(cb) {
|
|
29
|
-
for (const e of liveScriptScopeRcSpawns.values())
|
|
30
|
-
cb(e);
|
|
31
|
-
}
|
|
32
|
-
export function liveScriptScopeRcSpawnCount() {
|
|
33
|
-
return liveScriptScopeRcSpawns.size;
|
|
34
|
-
}
|
|
35
|
-
/** Clear the tracker map. Test-only seam — production never calls. */
|
|
36
|
-
export function __resetScriptScopeRcSpawnsForTests() {
|
|
37
|
-
liveScriptScopeRcSpawns.clear();
|
|
38
|
-
}
|
|
39
|
-
/** Schema-tagged line emitter. Every consumer of the cross-arm `[rc-life]`
|
|
40
|
-
* surface must use this so the field order + null-handling stays
|
|
41
|
-
* identical between rc-spawn and rc-daemon. */
|
|
42
|
-
export function emitRcLife(logger, op, source, path, mode, unitToken, fields = {}) {
|
|
43
|
-
const base = `[rc-life] op=${op} source=${source} path=${path} mode=${mode} unitToken=${unitToken}`;
|
|
44
|
-
const extras = Object.entries(fields)
|
|
45
|
-
.map(([k, v]) => `${k}=${v === null ? 'null' : typeof v === 'string' && v.includes(' ') ? JSON.stringify(v) : v}`)
|
|
46
|
-
.join(' ');
|
|
47
|
-
logger(extras ? `${base} ${extras}` : base);
|
|
48
|
-
}
|
|
49
|
-
/** Run the script-scope rc-spawn. Returns once `systemdSpawn` resolves
|
|
50
|
-
* (scope is active, cgroup pid captured). Liveness polling, pid-file
|
|
51
|
-
* binding, and exit observation run in the background — the route
|
|
52
|
-
* responds immediately with `spawnedPid` like the node-pty arm does. */
|
|
53
|
-
export async function handleRcSpawnScriptScope(deps, req) {
|
|
54
|
-
const now = deps.now ?? (() => Date.now());
|
|
55
|
-
const livenessIntervalMs = deps.livenessPollIntervalMs ?? 15_000;
|
|
56
|
-
const start = now();
|
|
57
|
-
const unitToken = `rc-resume-${randomUUID()}`;
|
|
58
|
-
const existingJsonl = req.sessionId
|
|
59
|
-
? findExistingJsonlForSessionId(deps.claudeConfigDir, req.sessionId)
|
|
60
|
-
: null;
|
|
61
|
-
const mode = existingJsonl ? 'resume' : 'new';
|
|
62
|
-
const argv = ['--remote-control'];
|
|
63
|
-
if (req.name)
|
|
64
|
-
argv.push(req.name);
|
|
65
|
-
if (req.sessionId)
|
|
66
|
-
argv.push(mode === 'resume' ? '--resume' : '--session-id', req.sessionId);
|
|
67
|
-
const env = buildRcChildEnv({
|
|
68
|
-
accountId: deps.accountId,
|
|
69
|
-
uiPort: deps.uiPort,
|
|
70
|
-
platformRoot: deps.platformRoot,
|
|
71
|
-
claudeConfigDir: deps.claudeConfigDir,
|
|
72
|
-
brandedNeo4jUri: deps.brandedNeo4jUri,
|
|
73
|
-
brandedNeo4jPassword: deps.brandedNeo4jPassword,
|
|
74
|
-
});
|
|
75
|
-
const cleanEnv = {};
|
|
76
|
-
for (const [k, v] of Object.entries(env)) {
|
|
77
|
-
if (typeof v === 'string')
|
|
78
|
-
cleanEnv[k] = v;
|
|
79
|
-
}
|
|
80
|
-
// Mirror rc-daemon.ts:323 — capture file under <accountDir>/logs/.
|
|
81
|
-
// dirname(claudeConfigDir) is the accountDir (e.g. /home/<user>/.maxy-code/).
|
|
82
|
-
const captureFilePath = join(dirname(deps.claudeConfigDir), 'logs', `spawn-${unitToken}.log`);
|
|
83
|
-
emitRcLife(deps.logger, 'request', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
84
|
-
sessionId: req.sessionId ?? 'new',
|
|
85
|
-
name: req.name ?? 'none',
|
|
86
|
-
existingJsonl: existingJsonl ?? 'none',
|
|
87
|
-
});
|
|
88
|
-
emitRcLife(deps.logger, 'argv', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
89
|
-
cwd: deps.spawnCwd,
|
|
90
|
-
captureFile: captureFilePath,
|
|
91
|
-
argv: JSON.stringify([deps.claudeBin, ...argv]),
|
|
92
|
-
});
|
|
93
|
-
let handle;
|
|
94
|
-
try {
|
|
95
|
-
handle = await deps.systemdSpawn({
|
|
96
|
-
claudeBin: deps.claudeBin,
|
|
97
|
-
claudeArgs: argv,
|
|
98
|
-
env: cleanEnv,
|
|
99
|
-
cwd: deps.spawnCwd,
|
|
100
|
-
unitToken,
|
|
101
|
-
captureFilePath,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
106
|
-
emitRcLife(deps.logger, 'spawn-failed', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
107
|
-
err: JSON.stringify(msg),
|
|
108
|
-
});
|
|
109
|
-
throw err;
|
|
110
|
-
}
|
|
111
|
-
emitRcLife(deps.logger, 'spawned', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
112
|
-
pid: handle.pid,
|
|
113
|
-
scopeUnit: `claude-session-${unitToken}.scope`,
|
|
114
|
-
captureFile: captureFilePath,
|
|
115
|
-
// Manager holds no fd for this child — this is the isolation invariant.
|
|
116
|
-
// A rising value across script-scope spawns is the leak signature.
|
|
117
|
-
managerOpenFds: 'unchanged',
|
|
118
|
-
});
|
|
119
|
-
const entry = {
|
|
120
|
-
unitToken,
|
|
121
|
-
pid: handle.pid,
|
|
122
|
-
sessionId: req.sessionId,
|
|
123
|
-
mode,
|
|
124
|
-
spawnedAt: start,
|
|
125
|
-
captureFilePath,
|
|
126
|
-
handle,
|
|
127
|
-
pidFileSeen: false,
|
|
128
|
-
remoteBound: false,
|
|
129
|
-
exited: false,
|
|
130
|
-
};
|
|
131
|
-
liveScriptScopeRcSpawns.set(unitToken, entry);
|
|
132
|
-
// Capture-file head emit — first ≤1 KB of the script(1) typescript,
|
|
133
|
-
// settled by either reaching 1 KB or by a short post-spawn delay. The
|
|
134
|
-
// child's own words are the signal whose absence cost 5 occasions
|
|
135
|
-
// (Task 562 brief). Read once and forget; subsequent failures land in
|
|
136
|
-
// op=early-exit's captureTail.
|
|
137
|
-
void readCaptureHead(handle, 500, 1_024).then((head) => {
|
|
138
|
-
emitRcLife(deps.logger, 'child-output', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
139
|
-
pid: handle.pid,
|
|
140
|
-
head: JSON.stringify(head),
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
// pid-file binding — claude writes <sessions>/<pid>.json once Remote
|
|
144
|
-
// Control registration finishes. This is the `ready` signal: pid file
|
|
145
|
-
// present means claude is alive and reachable from claude.ai/code.
|
|
146
|
-
void deps.waitForPid(handle.pid, deps.pidFileTimeoutMs)
|
|
147
|
-
.then((row) => {
|
|
148
|
-
entry.pidFileSeen = true;
|
|
149
|
-
entry.remoteBound = Boolean(row.bridgeSessionId);
|
|
150
|
-
emitRcLife(deps.logger, 'alive', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
151
|
-
pid: handle.pid,
|
|
152
|
-
ranMs: now() - start,
|
|
153
|
-
});
|
|
154
|
-
emitRcLife(deps.logger, 'ready', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
155
|
-
pid: handle.pid,
|
|
156
|
-
pidFile: row.pidFilePath ?? 'unknown',
|
|
157
|
-
bridgeId: row.bridgeSessionId ?? 'unknown',
|
|
158
|
-
remoteSession: row.bridgeSessionId ?? 'unknown',
|
|
159
|
-
});
|
|
160
|
-
})
|
|
161
|
-
.catch((err) => {
|
|
162
|
-
emitRcLife(deps.logger, 'wait-pid-failed', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
163
|
-
pid: handle.pid,
|
|
164
|
-
err: JSON.stringify(err instanceof Error ? err.message : String(err)),
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
// Liveness poll — runs for the session's whole intended life. Catches
|
|
168
|
-
// a session that dies quietly between events without a reproduction.
|
|
169
|
-
// Both arms emit this so endurance is directly comparable.
|
|
170
|
-
const livenessTimer = setInterval(() => {
|
|
171
|
-
if (entry.exited) {
|
|
172
|
-
clearInterval(livenessTimer);
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
const pidAlive = pidIsAlive(entry.pid);
|
|
176
|
-
emitRcLife(deps.logger, 'liveness', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
177
|
-
ageMs: now() - start,
|
|
178
|
-
pidAlive,
|
|
179
|
-
// scopeActive is captured from handle.waitForExit's terminal — true
|
|
180
|
-
// means we have not yet observed the scope leave the active set.
|
|
181
|
-
// A pidAlive=false here while exited=false is an early death the
|
|
182
|
-
// event flow missed.
|
|
183
|
-
scopeActive: !entry.exited,
|
|
184
|
-
remoteBound: entry.remoteBound,
|
|
185
|
-
});
|
|
186
|
-
}, livenessIntervalMs);
|
|
187
|
-
// Don't block process exit on the liveness timer.
|
|
188
|
-
livenessTimer.unref?.();
|
|
189
|
-
// Exit observation — `handle.waitForExit` polls systemctl. On exit,
|
|
190
|
-
// tag the lifetime, attach captureTail bytes, and remove from the
|
|
191
|
-
// live tracker.
|
|
192
|
-
void handle.waitForExit()
|
|
193
|
-
.then(async (exit) => {
|
|
194
|
-
entry.exited = true;
|
|
195
|
-
clearInterval(livenessTimer);
|
|
196
|
-
const lifetimeMs = now() - start;
|
|
197
|
-
let tail = '';
|
|
198
|
-
try {
|
|
199
|
-
tail = await handle.readCaptureTail(2_048);
|
|
200
|
-
}
|
|
201
|
-
catch {
|
|
202
|
-
tail = '';
|
|
203
|
-
}
|
|
204
|
-
if (!entry.pidFileSeen && lifetimeMs < 2_000) {
|
|
205
|
-
emitRcLife(deps.logger, 'early-exit', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
206
|
-
pid: handle.pid,
|
|
207
|
-
ranMs: lifetimeMs,
|
|
208
|
-
exitCode: exit.exitCode ?? 'null',
|
|
209
|
-
signal: exit.code ?? 'null',
|
|
210
|
-
captureTail: JSON.stringify(tail),
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
const reason = inferExitReason(exit.result, lifetimeMs, entry.pidFileSeen);
|
|
214
|
-
emitRcLife(deps.logger, 'exit', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
215
|
-
pid: handle.pid,
|
|
216
|
-
lifetimeMs,
|
|
217
|
-
reason,
|
|
218
|
-
result: exit.result,
|
|
219
|
-
captureTail: JSON.stringify(tail.slice(-512)),
|
|
220
|
-
});
|
|
221
|
-
liveScriptScopeRcSpawns.delete(unitToken);
|
|
222
|
-
})
|
|
223
|
-
.catch((err) => {
|
|
224
|
-
entry.exited = true;
|
|
225
|
-
clearInterval(livenessTimer);
|
|
226
|
-
emitRcLife(deps.logger, 'wait-exit-failed', 'rc-spawn', 'script-scope', mode, unitToken, {
|
|
227
|
-
pid: handle.pid,
|
|
228
|
-
err: JSON.stringify(err instanceof Error ? err.message : String(err)),
|
|
229
|
-
});
|
|
230
|
-
liveScriptScopeRcSpawns.delete(unitToken);
|
|
231
|
-
});
|
|
232
|
-
return {
|
|
233
|
-
spawnedPid: handle.pid,
|
|
234
|
-
sessionId: req.sessionId,
|
|
235
|
-
unitToken,
|
|
236
|
-
mode,
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
function inferExitReason(result, lifetimeMs, pidFileSeen) {
|
|
240
|
-
if (result === 'success' && pidFileSeen && lifetimeMs >= 2_000)
|
|
241
|
-
return 'archive';
|
|
242
|
-
if (result !== 'success')
|
|
243
|
-
return 'crash';
|
|
244
|
-
if (!pidFileSeen && lifetimeMs < 2_000)
|
|
245
|
-
return 'crash';
|
|
246
|
-
return 'unknown';
|
|
247
|
-
}
|
|
248
|
-
function pidIsAlive(pid) {
|
|
249
|
-
try {
|
|
250
|
-
process.kill(pid, 0);
|
|
251
|
-
return true;
|
|
252
|
-
}
|
|
253
|
-
catch {
|
|
254
|
-
return false;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
/** Reads the head of the script(1) typescript. Returns at most `maxBytes`
|
|
258
|
-
* from the start of the file; waits up to `settleMs` for the file to
|
|
259
|
-
* appear, since systemd-run + script open the typescript asynchronously
|
|
260
|
-
* after the scope is active. */
|
|
261
|
-
async function readCaptureHead(handle, settleMs, maxBytes) {
|
|
262
|
-
const deadline = Date.now() + settleMs;
|
|
263
|
-
while (Date.now() < deadline) {
|
|
264
|
-
if (existsSync(handle.captureFilePath))
|
|
265
|
-
break;
|
|
266
|
-
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
267
|
-
}
|
|
268
|
-
// readCaptureTail returns the last `maxBytes` bytes; for a small early
|
|
269
|
-
// file (< maxBytes) tail == head. The boot sequence is well under 1 KB.
|
|
270
|
-
try {
|
|
271
|
-
return await handle.readCaptureTail(maxBytes);
|
|
272
|
-
}
|
|
273
|
-
catch {
|
|
274
|
-
return '';
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
/** Census sweep — reconciles expected (dashboard-initiated sessions) vs
|
|
278
|
-
* actual (live tracked entries). Detects a leaked entry whose pid is
|
|
279
|
-
* gone but the tracker still holds it, or a tracker whose handle's
|
|
280
|
-
* scope vanished without an exit event. Traffic-independent — runs on
|
|
281
|
-
* a timer in index.ts so a quiet failure surfaces within one interval.
|
|
282
|
-
*
|
|
283
|
-
* The daemon's live handle is supplied via `daemonAlive`; the daemon
|
|
284
|
-
* itself owns the canonical accounting (a single handle reference),
|
|
285
|
-
* but exposing it here keeps the schema unified. */
|
|
286
|
-
export function runRcLifeCensus(logger, daemonAlive) {
|
|
287
|
-
let pidAlive = 0;
|
|
288
|
-
let pidDeadButTracked = 0;
|
|
289
|
-
for (const entry of liveScriptScopeRcSpawns.values()) {
|
|
290
|
-
if (pidIsAlive(entry.pid)) {
|
|
291
|
-
pidAlive += 1;
|
|
292
|
-
}
|
|
293
|
-
else {
|
|
294
|
-
pidDeadButTracked += 1;
|
|
295
|
-
// Independent reconciliation defect — entry exists with a dead pid.
|
|
296
|
-
emitRcLife(logger, 'orphan', 'rc-spawn', 'script-scope', entry.mode, entry.unitToken, {
|
|
297
|
-
pid: entry.pid,
|
|
298
|
-
kind: 'pid-dead-but-tracked',
|
|
299
|
-
ageMs: Date.now() - entry.spawnedAt,
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
logger(`[rc-census] source-breakdown=rc-spawn:${liveScriptScopeRcSpawns.size},rc-daemon:${daemonAlive}` +
|
|
304
|
-
` rcSpawnPidAlive=${pidAlive} rcSpawnPidDead=${pidDeadButTracked}`);
|
|
305
|
-
}
|
|
306
|
-
//# sourceMappingURL=rc-script-spawn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rc-script-spawn.js","sourceRoot":"","sources":["../src/rc-script-spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { PtyHandle, Role, Channel } from './types.js';
|
|
2
|
-
export interface StoredSession {
|
|
3
|
-
/** Intrinsic Claude session id (UUID). Stable for the row's lifetime.
|
|
4
|
-
* For `/resume` spawns this is the prior canonical id the operator
|
|
5
|
-
* pressed Resume on. After Task 258's archive-restore at /resume,
|
|
6
|
-
* claude --resume appends to the same canonical jsonl, so the
|
|
7
|
-
* StoredSession.sessionId and the on-disk jsonl basename match by
|
|
8
|
-
* construction. */
|
|
9
|
-
sessionId: string;
|
|
10
|
-
/** "session_<suffix>" form from the PID file. Stable, never null after
|
|
11
|
-
* /spawn returns (the spawn promise resolves on PID-file event). */
|
|
12
|
-
bridgeSessionId: string;
|
|
13
|
-
/** Suffix-only convenience field (no "session_" prefix). */
|
|
14
|
-
bridgeSuffix: string;
|
|
15
|
-
pid: number;
|
|
16
|
-
/** URL from the `/remote-control` banner. Null until url-capture fires;
|
|
17
|
-
* may stay null forever if the banner never lands. The UI tolerates
|
|
18
|
-
* null. */
|
|
19
|
-
url: string | null;
|
|
20
|
-
startedAt: string;
|
|
21
|
-
senderId: string;
|
|
22
|
-
role: Role;
|
|
23
|
-
channel: Channel;
|
|
24
|
-
pty: PtyHandle;
|
|
25
|
-
exited: boolean;
|
|
26
|
-
/** Task 176 — flipped true when `releasePtyMasterFd` returns
|
|
27
|
-
* `master-fd=closed` for this session. Both exit branches set this so
|
|
28
|
-
* the second branch (whichever loses the race) can skip a redundant
|
|
29
|
-
* `pty.destroy()` that would otherwise throw "socket already
|
|
30
|
-
* destroyed" on real node-pty and turn the operator-request log
|
|
31
|
-
* line's `master-fd=closed` into a false `master-fd=close-failed`.
|
|
32
|
-
* When the first branch's destroy throws (rescued), this stays false
|
|
33
|
-
* so the second branch retries — defense in depth. */
|
|
34
|
-
fdReleased: boolean;
|
|
35
|
-
hidden: boolean;
|
|
36
|
-
specialist: string | null;
|
|
37
|
-
}
|
|
38
|
-
export declare class SessionStore {
|
|
39
|
-
private readonly bySessionId;
|
|
40
|
-
add(s: StoredSession): void;
|
|
41
|
-
get(sessionId: string): StoredSession | undefined;
|
|
42
|
-
remove(sessionId: string): StoredSession | undefined;
|
|
43
|
-
listBySender(senderId: string, opts?: {
|
|
44
|
-
includeHidden?: boolean;
|
|
45
|
-
}): StoredSession[];
|
|
46
|
-
all(): StoredSession[];
|
|
47
|
-
size(): number;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE1D,MAAM,WAAW,aAAa;IAC5B;;;;;wBAKoB;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB;yEACqE;IACrE,eAAe,EAAE,MAAM,CAAA;IACvB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX;;gBAEY;IACZ,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,SAAS,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf;;;;;;;2DAOuD;IACvD,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAE/D,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAI3B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIjD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAOpD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,aAAa,EAAE;IAWvF,GAAG,IAAI,aAAa,EAAE;IAItB,IAAI,IAAI,MAAM;CAGf"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
// In-memory PTY-handle store. The canonical row index lives in the
|
|
2
|
-
// fs-watcher; row state is derived from disk on demand (Task 258). This
|
|
3
|
-
// store only tracks the live PTY handles the manager itself spawned —
|
|
4
|
-
// they aren't on disk. Lookups by alternative identifiers (bridgeSuffix,
|
|
5
|
-
// pid, bridgeSessionId) go through the watcher first to resolve to the
|
|
6
|
-
// canonical sessionId; the store is then keyed solely on sessionId.
|
|
7
|
-
//
|
|
8
|
-
// Lifecycle:
|
|
9
|
-
// - pty-spawner awaits the PID-file CREATE event from the watcher
|
|
10
|
-
// before returning a /spawn response. The store row is registered at
|
|
11
|
-
// that point with sessionId known and bridgeSessionId carried from
|
|
12
|
-
// the PID file. By the time /spawn returns, sessionId is final.
|
|
13
|
-
// - URL capture continues in parallel; the row's `url` field is
|
|
14
|
-
// mutated in place when the URL banner fires (may arrive before or
|
|
15
|
-
// after the PID-file event; both orderings are safe).
|
|
16
|
-
// - The jsonl path is derived from sessionId + spawnCwd at every read
|
|
17
|
-
// site — never stored. Task 258 deleted the stored field.
|
|
18
|
-
export class SessionStore {
|
|
19
|
-
bySessionId = new Map();
|
|
20
|
-
add(s) {
|
|
21
|
-
this.bySessionId.set(s.sessionId, s);
|
|
22
|
-
}
|
|
23
|
-
get(sessionId) {
|
|
24
|
-
return this.bySessionId.get(sessionId);
|
|
25
|
-
}
|
|
26
|
-
remove(sessionId) {
|
|
27
|
-
const s = this.bySessionId.get(sessionId);
|
|
28
|
-
if (!s)
|
|
29
|
-
return undefined;
|
|
30
|
-
this.bySessionId.delete(sessionId);
|
|
31
|
-
return s;
|
|
32
|
-
}
|
|
33
|
-
listBySender(senderId, opts = {}) {
|
|
34
|
-
const includeHidden = opts.includeHidden === true;
|
|
35
|
-
const out = [];
|
|
36
|
-
for (const s of this.bySessionId.values()) {
|
|
37
|
-
if (s.senderId !== senderId)
|
|
38
|
-
continue;
|
|
39
|
-
if (!includeHidden && s.hidden)
|
|
40
|
-
continue;
|
|
41
|
-
out.push(s);
|
|
42
|
-
}
|
|
43
|
-
return out;
|
|
44
|
-
}
|
|
45
|
-
all() {
|
|
46
|
-
return [...this.bySessionId.values()];
|
|
47
|
-
}
|
|
48
|
-
size() {
|
|
49
|
-
return this.bySessionId.size;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=session-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,wEAAwE;AACxE,sEAAsE;AACtE,yEAAyE;AACzE,uEAAuE;AACvE,oEAAoE;AACpE,EAAE;AACF,aAAa;AACb,oEAAoE;AACpE,yEAAyE;AACzE,uEAAuE;AACvE,oEAAoE;AACpE,kEAAkE;AAClE,uEAAuE;AACvE,0DAA0D;AAC1D,wEAAwE;AACxE,8DAA8D;AAyC9D,MAAM,OAAO,YAAY;IACN,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAA;IAE/D,GAAG,CAAC,CAAgB;QAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAA;QACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAClC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,OAAoC,EAAE;QACnE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAA;QACjD,MAAM,GAAG,GAAoB,EAAE,CAAA;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBAAE,SAAQ;YACrC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM;gBAAE,SAAQ;YACxC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,GAAG;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;CACF"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { type SystemctlRunner } from './systemd-scope.js';
|
|
2
|
-
export interface SystemdSpawnParams {
|
|
3
|
-
claudeBin: string;
|
|
4
|
-
claudeArgs: readonly string[];
|
|
5
|
-
/** Env stamped onto the scope via `--setenv=KEY=VAL` flags. Manager-side
|
|
6
|
-
* vars (XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS) needed to reach user
|
|
7
|
-
* systemd are read from process.env separately. */
|
|
8
|
-
env: Readonly<Record<string, string>>;
|
|
9
|
-
cwd: string;
|
|
10
|
-
unitToken: string;
|
|
11
|
-
/** Path the scope's inner `script(1)` writes its typescript to —
|
|
12
|
-
* retrievable after the scope is reaped. The parent directory is
|
|
13
|
-
* created (mkdir -p) before systemd-run is spawned so script(1) can
|
|
14
|
-
* open the file without ENOENT. */
|
|
15
|
-
captureFilePath: string;
|
|
16
|
-
/** systemctl runner — production uses spawnSync; tests inject a stub. */
|
|
17
|
-
runSystemctl?: SystemctlRunner;
|
|
18
|
-
/** Reads `cgroup.procs` at /sys/fs/cgroup<ControlGroup>. Returns the
|
|
19
|
-
* list of pids in the cgroup, or empty when the file does not exist
|
|
20
|
-
* or contains no pids. Tests inject a stub. */
|
|
21
|
-
readCgroupProcs?: (controlGroup: string) => number[];
|
|
22
|
-
/** Reads the tail of the script(1) typescript file for inclusion in
|
|
23
|
-
* activation-gate failure messages. Tests inject a stub; production
|
|
24
|
-
* uses the module's own `readCaptureFile`. */
|
|
25
|
-
readCaptureTail?: (captureFilePath: string, maxBytes: number) => Promise<string>;
|
|
26
|
-
/** Injected child-process spawner for tests. Production uses node:child_process spawn. */
|
|
27
|
-
spawnChild?: (cmd: string, args: readonly string[], opts: SpawnOpts) => SpawnedChild;
|
|
28
|
-
/** Maximum wait for the scope to activate with at least one pid in its
|
|
29
|
-
* cgroup. Default 5000 ms. */
|
|
30
|
-
activationTimeoutMs?: number;
|
|
31
|
-
/** Inter-poll interval. Default 50 ms. */
|
|
32
|
-
activationPollIntervalMs?: number;
|
|
33
|
-
}
|
|
34
|
-
export interface SpawnOpts {
|
|
35
|
-
cwd: string;
|
|
36
|
-
env: NodeJS.ProcessEnv;
|
|
37
|
-
stdio: 'ignore';
|
|
38
|
-
detached: boolean;
|
|
39
|
-
}
|
|
40
|
-
export interface SpawnedChild {
|
|
41
|
-
pid: number | undefined;
|
|
42
|
-
unref(): void;
|
|
43
|
-
on(event: 'error', cb: (err: Error) => void): void;
|
|
44
|
-
}
|
|
45
|
-
export interface ScopeExit {
|
|
46
|
-
/** systemd's Result string: "success", "exit-code", "signal", "timeout", "core-dump", "watchdog", "start-limit-hit", "resources". */
|
|
47
|
-
result: string;
|
|
48
|
-
/** ExecMainStatus — process exit code or signal number depending on `result`. */
|
|
49
|
-
exitCode: number | null;
|
|
50
|
-
/** ExecMainCode — "exited" / "killed" / "dumped", from systemd's process-exit classification. */
|
|
51
|
-
code: string | null;
|
|
52
|
-
}
|
|
53
|
-
export interface WaitForExitOpts {
|
|
54
|
-
pollIntervalMs?: number;
|
|
55
|
-
}
|
|
56
|
-
export interface SystemdScopeHandle {
|
|
57
|
-
pid: number;
|
|
58
|
-
unitToken: string;
|
|
59
|
-
/** The script(1) typescript file written by the scope's inner wrapper.
|
|
60
|
-
* Holds the child's stdout/stderr; remains on disk after the scope is
|
|
61
|
-
* reaped so a post-mortem investigator can read claude's real exit
|
|
62
|
-
* message without re-running anything. */
|
|
63
|
-
captureFilePath: string;
|
|
64
|
-
/** Resolves once the scope unit's `ActiveState` is no longer in the
|
|
65
|
-
* set { 'active', 'activating', 'reloading' }. Reads the unit's
|
|
66
|
-
* `Result`, `ExecMainStatus`, and `ExecMainCode` to populate
|
|
67
|
-
* the returned `ScopeExit`. */
|
|
68
|
-
waitForExit(opts?: WaitForExitOpts): Promise<ScopeExit>;
|
|
69
|
-
/** Read the tail of the per-spawn capture file (the script(1)
|
|
70
|
-
* typescript). Trimmed to `maxBytes` from the end so the line
|
|
71
|
-
* preceding exit wins. */
|
|
72
|
-
readCaptureTail(maxBytes: number): Promise<string>;
|
|
73
|
-
/** Stop the scope via `systemctl --user stop --no-block` (delegates to
|
|
74
|
-
* systemd-scope.stopScopeUnit so the existing escalation path applies). */
|
|
75
|
-
stop(): Promise<void>;
|
|
76
|
-
}
|
|
77
|
-
/** Spawn `systemd-run --user --scope ... <claudeBin> <claudeArgs>` so the
|
|
78
|
-
* manager holds no file descriptors for the resulting claude process.
|
|
79
|
-
* Returns once cgroup.procs is non-empty AND ActiveState is `active`.
|
|
80
|
-
* On terminal failure, stops the partially-registered scope and rejects
|
|
81
|
-
* with one of three distinct error tokens. */
|
|
82
|
-
export declare function systemdSpawn(p: SystemdSpawnParams): Promise<SystemdScopeHandle>;
|
|
83
|
-
//# sourceMappingURL=systemd-spawn.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"systemd-spawn.d.ts","sourceRoot":"","sources":["../src/systemd-spawn.ts"],"names":[],"mappings":"AA8DA,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B;;wDAEoD;IACpD,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB;;;wCAGoC;IACpC,eAAe,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B;;oDAEgD;IAChD,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,EAAE,CAAA;IACpD;;mDAE+C;IAC/C,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAChF,0FAA0F;IAC1F,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,KAAK,YAAY,CAAA;IACpF;mCAC+B;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,0CAA0C;IAC1C,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,KAAK,EAAE,QAAQ,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,KAAK,IAAI,IAAI,CAAA;IACb,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;CACnD;AAED,MAAM,WAAW,SAAS;IACxB,qIAAqI;IACrI,MAAM,EAAE,MAAM,CAAA;IACd,iFAAiF;IACjF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,iGAAiG;IACjG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB;;;+CAG2C;IAC3C,eAAe,EAAE,MAAM,CAAA;IACvB;;;oCAGgC;IAChC,WAAW,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACvD;;+BAE2B;IAC3B,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClD;gFAC4E;IAC5E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAID;;;;+CAI+C;AAC/C,wBAAsB,YAAY,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgJrF"}
|