@rubytech/create-realagent-code 0.1.607 → 0.1.609
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payload/platform/lib/admins-write/vitest.config.ts +1 -0
- package/payload/platform/lib/agent-dispatch-rule/vitest.config.ts +1 -0
- package/payload/platform/lib/brand-templating/vitest.config.ts +1 -0
- package/payload/platform/lib/canonical-instant/vitest.config.ts +1 -0
- package/payload/platform/lib/dispatch-read/vitest.config.ts +1 -0
- package/payload/platform/lib/graph-search/vitest.config.ts +1 -0
- package/payload/platform/lib/graph-style/vitest.config.ts +1 -0
- package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.js +86 -0
- package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.js.map +1 -1
- package/payload/platform/lib/graph-write/dist/index.d.ts +30 -9
- package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/graph-write/dist/index.js +22 -2
- package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-write/src/__tests__/account-id-gate.test.ts +99 -1
- package/payload/platform/lib/graph-write/src/index.ts +47 -12
- package/payload/platform/lib/mcp-lifeline/vitest.config.ts +1 -0
- package/payload/platform/lib/routine-templates/vitest.config.ts +1 -0
- package/payload/platform/lib/task-secrets/vitest.config.ts +1 -0
- package/payload/platform/lib/telegram-button-labels/vitest.config.ts +1 -0
- package/payload/platform/lib/telegram-managed-bot/vitest.config.ts +1 -0
- package/payload/platform/lib/telegram-media/vitest.config.ts +1 -0
- package/payload/platform/lib/telegram-reach/vitest.config.ts +1 -0
- package/payload/platform/lib/telegram-store-read/vitest.config.ts +1 -0
- package/payload/platform/plugins/admin/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +83 -2
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +14 -0
- package/payload/platform/plugins/aeo/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/cloudflare/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/connector/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/contacts/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/docs/references/telegram-guide.md +82 -1
- package/payload/platform/plugins/email/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/filesystem/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/graph-viewer/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/memory/mcp/dist/index.js +65 -0
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/xacct-counters.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/xacct-counters.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/xacct-counters.test.js +169 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/xacct-counters.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/xacct-counters.d.ts +63 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/xacct-counters.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/xacct-counters.js +114 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/xacct-counters.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-cross-account.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-cross-account.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-cross-account.test.js +123 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-cross-account.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/xacct-write-gate.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/xacct-write-gate.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/xacct-write-gate.test.js +110 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/xacct-write-gate.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +7 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/vitest.config.ts +3 -0
- package/payload/platform/plugins/scheduling/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/storage-broker/mcp/vitest.config.ts +6 -1
- package/payload/platform/plugins/url-get/mcp/vitest.config.ts +1 -0
- package/payload/platform/plugins/whatsapp/mcp/vitest.config.ts +1 -0
- package/payload/platform/scripts/repair-misfiled-card-rows.sh +276 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/claude-trust-preflight.d.ts +43 -0
- package/payload/platform/services/claude-session-manager/dist/claude-trust-preflight.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/claude-trust-preflight.js +88 -0
- package/payload/platform/services/claude-session-manager/dist/claude-trust-preflight.js.map +1 -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 +125 -4
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +26 -1
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +26 -0
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/recover-account.d.ts +54 -0
- package/payload/platform/services/claude-session-manager/dist/recover-account.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/recover-account.js +141 -0
- package/payload/platform/services/claude-session-manager/dist/recover-account.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/session-account-census.d.ts +30 -0
- package/payload/platform/services/claude-session-manager/dist/session-account-census.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/session-account-census.js +96 -0
- package/payload/platform/services/claude-session-manager/dist/session-account-census.js.map +1 -0
- package/payload/platform/services/claude-session-manager/vitest.config.ts +1 -1
- package/payload/platform/services/telegram-channel/dist/instructions.d.ts +10 -0
- package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
- package/payload/platform/services/telegram-channel/dist/instructions.js +38 -0
- package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
- package/payload/platform/services/telegram-channel/dist/notification.d.ts +24 -7
- package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/telegram-channel/dist/notification.js +31 -1
- package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
- package/payload/platform/test/tmpdir-setup.ts +54 -0
- package/payload/server/{chunk-GI5AVCRG.js → chunk-DRDU74ZM.js} +1 -1
- package/payload/server/{chunk-MNN2RWJR.js → chunk-IOPUA7QV.js} +1 -1
- package/payload/server/{chunk-6AQYMT6C.js → chunk-T6NXRWMG.js} +43 -8
- package/payload/server/{manager-VDHT3YYI.js → manager-O5L2SKW7.js} +2 -2
- package/payload/server/maxy-edge.js +2 -2
- package/payload/server/public/activity.html +6 -6
- package/payload/server/public/agents.html +5 -5
- package/payload/server/public/assets/{AdminLoginScreens-DuQ3ax5U.js → AdminLoginScreens-BBKEIEjY.js} +1 -1
- package/payload/server/public/assets/AdminLoginScreens-BBKEIEjY.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-BBKEIEjY.js.gz +0 -0
- package/payload/server/public/assets/{AdminShell-1HyATV_t.js → AdminShell-CrCdEMNW.js} +1 -1
- package/payload/server/public/assets/AdminShell-CrCdEMNW.js.br +0 -0
- package/payload/server/public/assets/AdminShell-CrCdEMNW.js.gz +0 -0
- package/payload/server/public/assets/{activity-C2qWlcJ5.js → activity-CbR3vaq1.js} +1 -1
- package/payload/server/public/assets/activity-CbR3vaq1.js.br +0 -0
- package/payload/server/public/assets/activity-CbR3vaq1.js.gz +0 -0
- package/payload/server/public/assets/{admin-DqpfY8-t.js → admin-D8qKnmhE.js} +1 -1
- package/payload/server/public/assets/admin-D8qKnmhE.js.br +0 -0
- package/payload/server/public/assets/admin-D8qKnmhE.js.gz +0 -0
- package/payload/server/public/assets/{agents-DoGVAjIT.js → agents-8gAQjRqI.js} +1 -1
- package/payload/server/public/assets/agents-8gAQjRqI.js.br +0 -0
- package/payload/server/public/assets/agents-8gAQjRqI.js.gz +0 -0
- package/payload/server/public/assets/{browser-DjqS897k.js → browser-jAje5ILy.js} +1 -1
- package/payload/server/public/assets/browser-jAje5ILy.js.br +0 -0
- package/payload/server/public/assets/browser-jAje5ILy.js.gz +0 -0
- package/payload/server/public/assets/{calendar-DJeOm0WS.js → calendar-xEmCJif9.js} +1 -1
- package/payload/server/public/assets/calendar-xEmCJif9.js.br +0 -0
- package/payload/server/public/assets/calendar-xEmCJif9.js.gz +0 -0
- package/payload/server/public/assets/chat-Ct5RDmv6.js +1 -0
- package/payload/server/public/assets/chat-Ct5RDmv6.js.br +0 -0
- package/payload/server/public/assets/chat-Ct5RDmv6.js.gz +0 -0
- package/payload/server/public/assets/{chevron-left-D9z1aK3p.js → chevron-left-DV8gIVC9.js} +1 -1
- package/payload/server/public/assets/chevron-left-DV8gIVC9.js.br +0 -0
- package/payload/server/public/assets/clock-PnR4Tlg9.js +1 -0
- package/payload/server/public/assets/clock-PnR4Tlg9.js.br +0 -0
- package/payload/server/public/assets/{copy-p9ZM9fnn.js → copy-b6MpzRz9.js} +1 -1
- package/payload/server/public/assets/copy-b6MpzRz9.js.br +0 -0
- package/payload/server/public/assets/copy-b6MpzRz9.js.gz +0 -0
- package/payload/server/public/assets/data-BxFc9wPl.js +1 -0
- package/payload/server/public/assets/data-BxFc9wPl.js.br +2 -0
- package/payload/server/public/assets/data-BxFc9wPl.js.gz +0 -0
- package/payload/server/public/assets/{field-WRk67lvr.js → field-CiIsn-47.js} +1 -1
- package/payload/server/public/assets/field-CiIsn-47.js.br +0 -0
- package/payload/server/public/assets/field-CiIsn-47.js.gz +0 -0
- package/payload/server/public/assets/{file-text-BJDCb334.js → file-text-Cy-IjCf8.js} +1 -1
- package/payload/server/public/assets/file-text-Cy-IjCf8.js.br +0 -0
- package/payload/server/public/assets/file-text-Cy-IjCf8.js.gz +0 -0
- package/payload/server/public/assets/{graph-CAU2xh2Z.js → graph-BdC2IGOT.js} +1 -1
- package/payload/server/public/assets/graph-BdC2IGOT.js.br +0 -0
- package/payload/server/public/assets/graph-BdC2IGOT.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-CEDmX7qW.js → graph-labels-3bstML8n.js} +1 -1
- package/payload/server/public/assets/graph-labels-3bstML8n.js.br +0 -0
- package/payload/server/public/assets/graph-labels-3bstML8n.js.gz +0 -0
- package/payload/server/public/assets/{jsx-runtime-hPFGo4rC.css → jsx-runtime-JxxB_2S6.css} +1 -1
- package/payload/server/public/assets/jsx-runtime-JxxB_2S6.css.br +0 -0
- package/payload/server/public/assets/{jsx-runtime-hPFGo4rC.css.gz → jsx-runtime-JxxB_2S6.css.gz} +0 -0
- package/payload/server/public/assets/{operator-1WFztEQA.js → operator-D7L2SA16.js} +1 -1
- package/payload/server/public/assets/operator-D7L2SA16.js.br +0 -0
- package/payload/server/public/assets/operator-D7L2SA16.js.gz +0 -0
- package/payload/server/public/assets/{page-B72XigcU.js → page-DspGbDgK.js} +1 -1
- package/payload/server/public/assets/page-DspGbDgK.js.br +0 -0
- package/payload/server/public/assets/page-DspGbDgK.js.gz +0 -0
- package/payload/server/public/assets/{page-nT8l_cX1.js → page-ObXxk8ol.js} +1 -1
- package/payload/server/public/assets/page-ObXxk8ol.js.br +0 -0
- package/payload/server/public/assets/page-ObXxk8ol.js.gz +0 -0
- package/payload/server/public/assets/play-BL4ztD3m.js +1 -0
- package/payload/server/public/assets/play-BL4ztD3m.js.br +0 -0
- package/payload/server/public/assets/play-BL4ztD3m.js.gz +0 -0
- package/payload/server/public/assets/{public-DAea6w7w.js → public-CEXKl8wg.js} +1 -1
- package/payload/server/public/assets/public-CEXKl8wg.js.br +0 -0
- package/payload/server/public/assets/public-CEXKl8wg.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-CqlRlGsY.js → rotate-ccw-ckXDebK2.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-ckXDebK2.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-ckXDebK2.js.gz +0 -0
- package/payload/server/public/assets/{routines-vy5xsyqx.js → routines-Dwc2meN2.js} +1 -1
- package/payload/server/public/assets/routines-Dwc2meN2.js.br +0 -0
- package/payload/server/public/assets/routines-Dwc2meN2.js.gz +0 -0
- package/payload/server/public/assets/{skills-X7FTilVy.js → skills-DdHKHl4Z.js} +1 -1
- package/payload/server/public/assets/skills-DdHKHl4Z.js.br +0 -0
- package/payload/server/public/assets/skills-DdHKHl4Z.js.gz +0 -0
- package/payload/server/public/assets/{tasks-BXx_jk_p.js → tasks-C_yWRvOG.js} +1 -1
- package/payload/server/public/assets/tasks-C_yWRvOG.js.br +0 -0
- package/payload/server/public/assets/tasks-C_yWRvOG.js.gz +0 -0
- package/payload/server/public/assets/{triangle-alert-CuWcGaRo.js → triangle-alert-C-7A00P0.js} +1 -1
- package/payload/server/public/assets/triangle-alert-C-7A00P0.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-C-7A00P0.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-DLSKs6r2.js → useCopyFeedback-CWvSi-Qe.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-CWvSi-Qe.js.br +2 -0
- package/payload/server/public/assets/useCopyFeedback-CWvSi-Qe.js.gz +0 -0
- package/payload/server/public/assets/{useMediaQuery-C_1CV_iW.js → useMediaQuery-CLVRXJMp.js} +1 -1
- package/payload/server/public/assets/useMediaQuery-CLVRXJMp.js.br +0 -0
- package/payload/server/public/assets/useMediaQuery-CLVRXJMp.js.gz +0 -0
- package/payload/server/public/assets/{useVoiceRecorder-DBzM_HIx.js → useVoiceRecorder-BbJad9CQ.js} +1 -1
- package/payload/server/public/assets/useVoiceRecorder-BbJad9CQ.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-BbJad9CQ.js.gz +0 -0
- package/payload/server/public/assets/{wrench-nDMQ6x-6.js → wrench-Cl6TUm2T.js} +1 -1
- package/payload/server/public/assets/wrench-Cl6TUm2T.js.br +0 -0
- package/payload/server/public/assets/wrench-Cl6TUm2T.js.gz +0 -0
- package/payload/server/public/browser.html +5 -5
- package/payload/server/public/calendar.html +8 -8
- package/payload/server/public/chat.html +14 -14
- package/payload/server/public/data.html +12 -12
- package/payload/server/public/field.html +3 -3
- package/payload/server/public/graph.html +10 -10
- package/payload/server/public/index.html +14 -14
- package/payload/server/public/operator.html +15 -15
- package/payload/server/public/public.html +14 -14
- package/payload/server/public/routines.html +8 -8
- package/payload/server/public/skills.html +6 -6
- package/payload/server/public/tasks.html +7 -7
- package/payload/server/server.js +1820 -1195
- package/payload/server/public/assets/AdminLoginScreens-DuQ3ax5U.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-DuQ3ax5U.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-1HyATV_t.js.br +0 -0
- package/payload/server/public/assets/AdminShell-1HyATV_t.js.gz +0 -0
- package/payload/server/public/assets/activity-C2qWlcJ5.js.br +0 -0
- package/payload/server/public/assets/activity-C2qWlcJ5.js.gz +0 -0
- package/payload/server/public/assets/admin-DqpfY8-t.js.br +0 -0
- package/payload/server/public/assets/admin-DqpfY8-t.js.gz +0 -0
- package/payload/server/public/assets/agents-DoGVAjIT.js.br +0 -0
- package/payload/server/public/assets/agents-DoGVAjIT.js.gz +0 -0
- package/payload/server/public/assets/browser-DjqS897k.js.br +0 -0
- package/payload/server/public/assets/browser-DjqS897k.js.gz +0 -0
- package/payload/server/public/assets/calendar-DJeOm0WS.js.br +0 -0
- package/payload/server/public/assets/calendar-DJeOm0WS.js.gz +0 -0
- package/payload/server/public/assets/chat-BrRE0Dck.js +0 -1
- package/payload/server/public/assets/chat-BrRE0Dck.js.br +0 -0
- package/payload/server/public/assets/chat-BrRE0Dck.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-D9z1aK3p.js.br +0 -0
- package/payload/server/public/assets/clock-BqHWMICF.js +0 -1
- package/payload/server/public/assets/clock-BqHWMICF.js.br +0 -0
- package/payload/server/public/assets/clock-BqHWMICF.js.gz +0 -0
- package/payload/server/public/assets/copy-p9ZM9fnn.js.br +0 -0
- package/payload/server/public/assets/copy-p9ZM9fnn.js.gz +0 -0
- package/payload/server/public/assets/data-CPsqW0qW.js +0 -1
- package/payload/server/public/assets/data-CPsqW0qW.js.br +0 -0
- package/payload/server/public/assets/data-CPsqW0qW.js.gz +0 -0
- package/payload/server/public/assets/field-WRk67lvr.js.br +0 -0
- package/payload/server/public/assets/field-WRk67lvr.js.gz +0 -0
- package/payload/server/public/assets/file-text-BJDCb334.js.br +0 -0
- package/payload/server/public/assets/file-text-BJDCb334.js.gz +0 -0
- package/payload/server/public/assets/graph-CAU2xh2Z.js.br +0 -0
- package/payload/server/public/assets/graph-CAU2xh2Z.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-CEDmX7qW.js.br +0 -0
- package/payload/server/public/assets/graph-labels-CEDmX7qW.js.gz +0 -0
- package/payload/server/public/assets/jsx-runtime-hPFGo4rC.css.br +0 -0
- package/payload/server/public/assets/operator-1WFztEQA.js.br +0 -0
- package/payload/server/public/assets/operator-1WFztEQA.js.gz +0 -0
- package/payload/server/public/assets/page-B72XigcU.js.br +0 -0
- package/payload/server/public/assets/page-B72XigcU.js.gz +0 -0
- package/payload/server/public/assets/page-nT8l_cX1.js.br +0 -0
- package/payload/server/public/assets/page-nT8l_cX1.js.gz +0 -0
- package/payload/server/public/assets/play-CYqOCqm6.js +0 -1
- package/payload/server/public/assets/play-CYqOCqm6.js.br +0 -0
- package/payload/server/public/assets/play-CYqOCqm6.js.gz +0 -0
- package/payload/server/public/assets/public-DAea6w7w.js.br +0 -0
- package/payload/server/public/assets/public-DAea6w7w.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-CqlRlGsY.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-CqlRlGsY.js.gz +0 -0
- package/payload/server/public/assets/routines-vy5xsyqx.js.br +0 -0
- package/payload/server/public/assets/routines-vy5xsyqx.js.gz +0 -0
- package/payload/server/public/assets/skills-X7FTilVy.js.br +0 -0
- package/payload/server/public/assets/skills-X7FTilVy.js.gz +0 -0
- package/payload/server/public/assets/tasks-BXx_jk_p.js.br +0 -0
- package/payload/server/public/assets/tasks-BXx_jk_p.js.gz +0 -0
- package/payload/server/public/assets/triangle-alert-CuWcGaRo.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-CuWcGaRo.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-DLSKs6r2.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-DLSKs6r2.js.gz +0 -0
- package/payload/server/public/assets/useMediaQuery-C_1CV_iW.js.br +0 -0
- package/payload/server/public/assets/useMediaQuery-C_1CV_iW.js.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-DBzM_HIx.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-DBzM_HIx.js.gz +0 -0
- package/payload/server/public/assets/wrench-nDMQ6x-6.js.br +0 -0
- package/payload/server/public/assets/wrench-nDMQ6x-6.js.gz +0 -0
- /package/payload/server/public/assets/{jsx-runtime-CvVXOszc.js → jsx-runtime-BCAZhYqz.js} +0 -0
- /package/payload/server/public/assets/{jsx-runtime-CvVXOszc.js.br → jsx-runtime-BCAZhYqz.js.br} +0 -0
- /package/payload/server/public/assets/{jsx-runtime-CvVXOszc.js.gz → jsx-runtime-BCAZhYqz.js.gz} +0 -0
|
@@ -60,6 +60,7 @@ import { computeMetering } from './session-metering.js';
|
|
|
60
60
|
import { collectActivity } from './activity-rows.js';
|
|
61
61
|
import { parseDayRange } from './activity-range.js';
|
|
62
62
|
import { claudeStateRoot, projectSlugForCwd, jsonlPathForSessionId, sidecarPathForSessionId, permissionModeLogPathForSessionId, mcpDebugLogPathForSessionId, printStreamPathForSessionId, findExistingJsonlForSessionId, slugForExistingJsonl, jsonlPathForSlug, sidecarPathForSlug, projectsDirForCwd, detectRemoteControlSlug, classifyBindBlocker, classifyChildAuth, } from './jsonl-path.js';
|
|
63
|
+
import { resolveRecoverAccount, formatRecoverAccountLine } from './recover-account.js';
|
|
63
64
|
import { basename, dirname, join } from 'node:path';
|
|
64
65
|
import { validateUserTitle } from './user-title-store.js';
|
|
65
66
|
import { credentialsPathForConfigDir, snapshotAuthForFailureReason } from './auth-snapshot.js';
|
|
@@ -2995,7 +2996,38 @@ export function buildHttpApp(deps) {
|
|
|
2995
2996
|
timed(deps.logger, 'POST', '/rc-spawn', 400, Date.now() - start);
|
|
2996
2997
|
return c.json({ error: 'targetAccountId not in this install registry' }, 400);
|
|
2997
2998
|
}
|
|
2998
|
-
|
|
2999
|
+
// Task 2728 — a `recover: true` request carries no `targetAccountId`: the
|
|
3000
|
+
// recovery caller's body literal (`managerRcRecover`) has no such field, and
|
|
3001
|
+
// its docstring records that omitting it lets the manager default apply. The
|
|
3002
|
+
// default below then handed every wedged SUB-ACCOUNT session to the boot
|
|
3003
|
+
// house account — same conversation id, second account's projects dir, and
|
|
3004
|
+
// nothing logged. It is the same silent-default hazard the reject above
|
|
3005
|
+
// names for an UNKNOWN account, arriving through the ABSENT case instead.
|
|
3006
|
+
//
|
|
3007
|
+
// The account of record is the one whose directory holds this session's
|
|
3008
|
+
// sidecar. Resolving it here, above `effectiveAccountDir`, means the wedge
|
|
3009
|
+
// classifier reads the transcript's freshness from the session's own account
|
|
3010
|
+
// rather than from a house directory that never held it, so the kill decision
|
|
3011
|
+
// and the respawn key off one account.
|
|
3012
|
+
//
|
|
3013
|
+
// Unchanged: every non-recover caller keeps `?? deps.accountId`, and a
|
|
3014
|
+
// recover that names an account explicitly still gets that account.
|
|
3015
|
+
const recoverResolution = recover && sessionId !== null && requestedAccountId === undefined
|
|
3016
|
+
? resolveRecoverAccount({ accountsRoot, sessionId })
|
|
3017
|
+
: null;
|
|
3018
|
+
const effectiveAccountId = recoverResolution?.outcome === 'ok' ? recoverResolution.accountId : (requestedAccountId ?? deps.accountId);
|
|
3019
|
+
// The line and the refusal both live in the recover branch below, AFTER the
|
|
3020
|
+
// not-live guard: a recover against a session this manager holds no PTY for
|
|
3021
|
+
// is the cold-start class (Tasks 782/813), which that guard reports as a
|
|
3022
|
+
// benign 200 no-op by design. Refusing it here instead would turn every
|
|
3023
|
+
// cold-start sweep into an error the gateway logs as a failure.
|
|
3024
|
+
const recoverAccountLine = () => formatRecoverAccountLine({
|
|
3025
|
+
sessionId,
|
|
3026
|
+
resolved: recoverResolution?.outcome === 'refused-no-sidecar' ? null : effectiveAccountId,
|
|
3027
|
+
source: recoverResolution ? 'sidecar' : requestedAccountId !== undefined ? 'body' : 'default',
|
|
3028
|
+
outcome: recoverResolution?.outcome === 'refused-no-sidecar' ? 'refused-no-sidecar' : 'ok',
|
|
3029
|
+
candidates: recoverResolution?.candidates ?? 0,
|
|
3030
|
+
});
|
|
2999
3031
|
// Task 1315 — the per-request resolved account's directory. Every
|
|
3000
3032
|
// filesystem lookup and the PTY launch itself must key off this, not
|
|
3001
3033
|
// the boot-time spawn cwd fixed to the house account for the manager's
|
|
@@ -3075,6 +3107,16 @@ export function buildHttpApp(deps) {
|
|
|
3075
3107
|
timed(deps.logger, 'POST', '/rc-spawn', 200, Date.now() - start);
|
|
3076
3108
|
return c.json({ live: false, sessionId, recovered: false }, 200);
|
|
3077
3109
|
}
|
|
3110
|
+
// Task 2728 — the recovery is real from here: a live child this manager
|
|
3111
|
+
// owns. Name the account it resolved to before anything acts on it.
|
|
3112
|
+
deps.logger(recoverAccountLine());
|
|
3113
|
+
// No account holds a record of this session, so there is nothing to
|
|
3114
|
+
// recover under any account and the house account is never the right
|
|
3115
|
+
// answer. Refuse before the classifier can kill the child.
|
|
3116
|
+
if (recoverResolution?.outcome === 'refused-no-sidecar') {
|
|
3117
|
+
timed(deps.logger, 'POST', '/rc-spawn', 400, Date.now() - start);
|
|
3118
|
+
return c.json({ error: 'recover: no sidecar record for this sessionId' }, 400);
|
|
3119
|
+
}
|
|
3078
3120
|
const liveRow = deps.watcher.getBySessionId(sessionId);
|
|
3079
3121
|
const jp = jsonlPathForSessionId(effectiveAccountDir, sessionId);
|
|
3080
3122
|
let jsonlMtimeMs = null;
|
|
@@ -3974,7 +4016,11 @@ export function buildHttpApp(deps) {
|
|
|
3974
4016
|
// grep on one sessionId shows where the spawn landed. requested==resolved
|
|
3975
4017
|
// (or default=true when none requested) is success; the reject path above
|
|
3976
4018
|
// logs op=account-reject and never reaches here.
|
|
3977
|
-
|
|
4019
|
+
// Task 2728 — `default` means the boot-account fallback was APPLIED, which is
|
|
4020
|
+
// no longer the same as "the body named no account": a recover that named
|
|
4021
|
+
// none is resolved from its sidecar instead. Reporting that spawn as
|
|
4022
|
+
// default=true would say the house account was used when it was not.
|
|
4023
|
+
deps.logger(`[spawn] op=account-resolved sessionId=${sessionId ? sessionId.slice(0, 8) : 'new'} requested=${requestedAccountId ?? ''} resolved=${effectiveAccountId} dir=${env.ACCOUNT_DIR} default=${requestedAccountId === undefined && recoverResolution === null}`);
|
|
3978
4024
|
// Task 606 — standing startup signal: confirms per-spawn whether the
|
|
3979
4025
|
// child env carries a session id. `mode=new` when none was requested
|
|
3980
4026
|
// (CLI fresh-spawn), else the resolved fresh/resume.
|
|
@@ -4582,6 +4628,43 @@ export function buildHttpApp(deps) {
|
|
|
4582
4628
|
// `pid-bind-timeout` sent every reader to the wrong mechanism. Nor does
|
|
4583
4629
|
// `spawn-not-ready` claim an exit — a blocked-but-alive child never exits.
|
|
4584
4630
|
const reason = outcome === 'bound' ? null : outcome === 'unbound' ? 'bridge-unregistered' : 'spawn-not-ready';
|
|
4631
|
+
// Task 2729 — the status the caller branches on. Until this task every
|
|
4632
|
+
// spawn answered 200, so no caller could separate a working spawn from one
|
|
4633
|
+
// whose child never bound: the 2026-08-15 laptop spawn halted on the
|
|
4634
|
+
// folder-trust dialog, answered 200, and the admin shell then polled
|
|
4635
|
+
// /<id>/meta for a session that did not exist.
|
|
4636
|
+
//
|
|
4637
|
+
// Three conditions, all of them required, because each rules out a
|
|
4638
|
+
// different way the spawn could in fact have worked:
|
|
4639
|
+
// bridgeSessionId === null — no slug on either bind signal.
|
|
4640
|
+
// !pidFileSeen — `waitForPid` did not resolve.
|
|
4641
|
+
// servingRow === undefined — and the watcher has no row for this pid
|
|
4642
|
+
// from ANY source, pid file or jsonl.
|
|
4643
|
+
//
|
|
4644
|
+
// The third is not implied by the second. `pidFileSeen` is decided by
|
|
4645
|
+
// `deps.pidFileTimeoutMs`, a SHORTER bound than the bind wait (device
|
|
4646
|
+
// evidence 2026-08-15: `op=wait-pid-failed … ms=30000` inside a 60 s
|
|
4647
|
+
// wait), so it can be a stale `false` by the time the verdict is taken.
|
|
4648
|
+
// A child that registered in that gap is the Task 1716 shape — live,
|
|
4649
|
+
// serving, simply not navigable — and must keep its 200. Reading only the
|
|
4650
|
+
// first two conditions would answer a hard failure for a healthy session,
|
|
4651
|
+
// which is the 1716 false verdict with the sign flipped.
|
|
4652
|
+
//
|
|
4653
|
+
// A child that DID write a pid file and then died stays 200 as well: it
|
|
4654
|
+
// became a registered session and then ended, which is a different event
|
|
4655
|
+
// from a spawn that produced nothing at all.
|
|
4656
|
+
//
|
|
4657
|
+
// `getByPid` resolves through `sessionIdByPid`, which a pid-file delete
|
|
4658
|
+
// unindexes. A pid file that outlived its process AND whose pid the OS then
|
|
4659
|
+
// recycled onto this child would read as a serving row that is not ours.
|
|
4660
|
+
// That miss fails toward the pre-2729 answer — it can suppress a 503, never
|
|
4661
|
+
// manufacture one — so it costs a missed report, not a false failure.
|
|
4662
|
+
const servingRow = deps.watcher.getByPid(pty.pid);
|
|
4663
|
+
const bindFailed = bridgeSessionId === null && !pidFileSeen && servingRow === undefined;
|
|
4664
|
+
const status = bindFailed ? 503 : 200;
|
|
4665
|
+
// Classified once, so the three places that report it — op=bind-signal-absent,
|
|
4666
|
+
// op=bind-outcome, and the response body — can never disagree.
|
|
4667
|
+
const blocker = bridgeSessionId ? 'none' : classifyBindBlocker(bindBuf);
|
|
4585
4668
|
// Task 1406 — derive the child's first-turn auth verdict. A bound child
|
|
4586
4669
|
// authenticated; an unbound child that printed `Not logged in` is the
|
|
4587
4670
|
// file-healthy-but-child-unauthenticated signature this task closes. Emitted
|
|
@@ -4609,10 +4692,25 @@ export function buildHttpApp(deps) {
|
|
|
4609
4692
|
// stdout tail; in a failed bind no slug was found so it was never released
|
|
4610
4693
|
// and carries the (sub-8 KB) blocking screen — e.g. the CC >= 2.1.167
|
|
4611
4694
|
// "Settings Warning" the redundant allow:["*"] used to trigger.
|
|
4612
|
-
deps.logger(`[rc-spawn] op=bind-signal-absent unitToken=${unitToken} pid=${pty.pid} expected=stdout-url cliVersion=${detectCliVersion(deps.claudeBin)} stdoutBytes=${stdoutBytes} pidFileSeen=${pidFileSeen} blocker=${
|
|
4695
|
+
deps.logger(`[rc-spawn] op=bind-signal-absent unitToken=${unitToken} pid=${pty.pid} expected=stdout-url cliVersion=${detectCliVersion(deps.claudeBin)} stdoutBytes=${stdoutBytes} pidFileSeen=${pidFileSeen} blocker=${blocker}`);
|
|
4613
4696
|
deps.logger(`[rc-spawn] op=resume-timeout sessionId=${sessionId ?? 'none'} waitedMs=${RC_SPAWN_URL_WAIT_MS} slug=none`);
|
|
4614
4697
|
}
|
|
4615
4698
|
deps.logger(`[rc-spawn] op=resume-response sessionId=${sessionId ?? 'none'} slug=${bridgeSessionId ?? 'none'} outcome=${outcome} reason=${reason ?? 'none'}`);
|
|
4699
|
+
// Task 2729 — the verdict and the answer on ONE line. Both halves were
|
|
4700
|
+
// already logged before this task, on two lines nothing reconciled: an
|
|
4701
|
+
// `op=bind-signal-absent` and, on the same millisecond, an `outcome=200`.
|
|
4702
|
+
// Reading them apart is what let a failed spawn look like a working one.
|
|
4703
|
+
//
|
|
4704
|
+
// `serving=` is the field this line adds beyond the two the task named. It
|
|
4705
|
+
// is the third condition, and without it the rule is not checkable from one
|
|
4706
|
+
// line: `bound=false pidFileSeen=false status=200` is a healthy Task 1716
|
|
4707
|
+
// session, not a defect, and only `serving=true` says which it was.
|
|
4708
|
+
//
|
|
4709
|
+
// Standing signal: a non-2xx `status` appears exactly when all three of
|
|
4710
|
+
// `bound=false pidFileSeen=false serving=false` hold. Any other pairing —
|
|
4711
|
+
// a 2xx on all three false, or a non-2xx with any of them true — is this
|
|
4712
|
+
// defect, or its inverse, recurring.
|
|
4713
|
+
deps.logger(`[rc-spawn] op=bind-outcome unitToken=${unitToken} bound=${bridgeSessionId !== null} pidFileSeen=${pidFileSeen} serving=${servingRow !== undefined} status=${status} blocker=${blocker}`);
|
|
4616
4714
|
// Every rc-spawn child runs inside a `systemd-run --user --scope`
|
|
4617
4715
|
// unit driven by node-pty; the operator-visible spawnMethod marker
|
|
4618
4716
|
// is kept stable so server.log greps survive the Task 573 cleanup.
|
|
@@ -4653,7 +4751,30 @@ export function buildHttpApp(deps) {
|
|
|
4653
4751
|
writeReseatMarker(sessionsDir, forkFromSessionId, sessionId, Date.now(), deps.logger);
|
|
4654
4752
|
deps.logger(`[webchat:reseat] op=reseat-retire from=${forkFromSessionId} fork=${sessionId} outcome=marked`);
|
|
4655
4753
|
}
|
|
4656
|
-
timed(deps.logger, 'POST', '/rc-spawn',
|
|
4754
|
+
timed(deps.logger, 'POST', '/rc-spawn', status, Date.now() - start);
|
|
4755
|
+
// Task 2729 — the spawn produced nothing a caller can use. `503` with
|
|
4756
|
+
// `{error:'spawn-failed', reason}` is the shape this door already returns
|
|
4757
|
+
// for its pre-spawn refusals, and both clients (`managerRcSpawn`,
|
|
4758
|
+
// `managerRcRecover`) already branch on a non-2xx, as does the admin proxy
|
|
4759
|
+
// (`session-rc-spawn.ts`, which forwards the status and this body).
|
|
4760
|
+
//
|
|
4761
|
+
// The body carries the bind outcome alongside the status, and keeps every
|
|
4762
|
+
// field a 200 carried, so a caller reading the failure still knows which
|
|
4763
|
+
// child and which session it was, and `blocker` names the screen that
|
|
4764
|
+
// stopped it. `bridgeSessionId` and `slug` are null here by construction.
|
|
4765
|
+
if (bindFailed) {
|
|
4766
|
+
return c.json({
|
|
4767
|
+
error: 'spawn-failed',
|
|
4768
|
+
reason,
|
|
4769
|
+
outcome,
|
|
4770
|
+
blocker,
|
|
4771
|
+
spawnedPid: pty.pid,
|
|
4772
|
+
sessionId: sessionId ?? null,
|
|
4773
|
+
bridgeSessionId,
|
|
4774
|
+
slug: bridgeSessionId,
|
|
4775
|
+
...(recoverOutcome ? { live: true, classification: recoverOutcome.classification, recovered: false } : {}),
|
|
4776
|
+
}, 503);
|
|
4777
|
+
}
|
|
4657
4778
|
// `slug` is the Task 648 canonical field the client navigates by;
|
|
4658
4779
|
// `bridgeSessionId` is the same value, retained so pre-648 consumers and
|
|
4659
4780
|
// tests keep resolving. They never diverge — `slug` IS `bridgeSessionId`.
|