hammoc 1.8.3 → 1.9.0
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/README.md +9 -6
- package/package.json +1 -1
- package/packages/client/dist/assets/MermaidViewer-B-LwclIl.js +7 -0
- package/packages/client/dist/assets/PdfViewer-C3Nymwn3.js +12 -0
- package/packages/client/dist/assets/PdfViewer-QCQEGvBO.css +1 -0
- package/packages/client/dist/assets/abnfDiagram-VRR7QNED-GfhY_hnV.js +1 -0
- package/packages/client/dist/assets/{agentExampleHighlight-B0EHAvjx.js → agentExampleHighlight-CyhVLy0_.js} +1 -1
- package/packages/client/dist/assets/arc-8nyjXGC3.js +1 -0
- package/packages/client/dist/assets/architectureDiagram-ZJ3FMSHR-B4onXLm4.js +36 -0
- package/packages/client/dist/assets/blockDiagram-677ZJIJ3-D0D6ncaN.js +132 -0
- package/packages/client/dist/assets/c4Diagram-LMCZKHZV-CE7Tip-_.js +10 -0
- package/packages/client/dist/assets/channel-CPjlbdOo.js +1 -0
- package/packages/client/dist/assets/chunk-2Q5K7J3B-4rW1da1Z.js +1 -0
- package/packages/client/dist/assets/chunk-32BRIVSS-JuzxS4QA.js +1 -0
- package/packages/client/dist/assets/chunk-5VM5RSS4-WRNf-xsi.js +15 -0
- package/packages/client/dist/assets/chunk-EX3LRPZG-BDWPlBKO.js +231 -0
- package/packages/client/dist/assets/chunk-JWPE2WC7-B8nCyQAc.js +1 -0
- package/packages/client/dist/assets/chunk-MOJQB5TN-7c-yriHe.js +88 -0
- package/packages/client/dist/assets/chunk-RYQCIY6F-LTDywRs7.js +1 -0
- package/packages/client/dist/assets/chunk-V7JOEXUC-DjVgQpjl.js +206 -0
- package/packages/client/dist/assets/chunk-VR4S4FIN-7jDdkUpx.js +1 -0
- package/packages/client/dist/assets/chunk-XXDRQBXY-ENKV2O8a.js +1 -0
- package/packages/client/dist/assets/classDiagram-OUVF2IWQ-C0PbC7Pi.js +1 -0
- package/packages/client/dist/assets/classDiagram-v2-EOCWNBFH-C0PbC7Pi.js +1 -0
- package/packages/client/dist/assets/{commandTokenHighlight-BFQeQmwm.js → commandTokenHighlight-DGP0RKx0.js} +1 -1
- package/packages/client/dist/assets/cose-bilkent-JH36ORCC-CQTNdQ-g.js +1 -0
- package/packages/client/dist/assets/cynefin-VYW2F7L2-BYlAJRcO.js +178 -0
- package/packages/client/dist/assets/cynefinDiagram-TSTJHNR4-7zyUTflT.js +62 -0
- package/packages/client/dist/assets/cytoscape.esm-DTSO7Bv0.js +331 -0
- package/packages/client/dist/assets/dagre-VKFMJZFB-DyZir42W.js +4 -0
- package/packages/client/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/packages/client/dist/assets/diagram-FQU43EPY-CmNAU8Nw.js +3 -0
- package/packages/client/dist/assets/diagram-G47NLZAW-B0EIk03o.js +24 -0
- package/packages/client/dist/assets/diagram-NH7WQ7WH-Dulv0f1N.js +24 -0
- package/packages/client/dist/assets/diagram-OA4YK3LP-DEEcMLgi.js +30 -0
- package/packages/client/dist/assets/diagram-WEI45ONY-ZYebAZ93.js +41 -0
- package/packages/client/dist/assets/ebnfDiagram-CCIWWBDH-DCHpt3qn.js +1 -0
- package/packages/client/dist/assets/erDiagram-Q63AITRT-B6T87-48.js +85 -0
- package/packages/client/dist/assets/flowDiagram-23GEKE2U-DAcW6mKJ.js +156 -0
- package/packages/client/dist/assets/ganttDiagram-NO4QXBWP-Ct_eFFcM.js +292 -0
- package/packages/client/dist/assets/gitGraphDiagram-IHSO6WYX-BGi8Fdm2.js +106 -0
- package/packages/client/dist/assets/graph-C9eacEi8.js +1 -0
- package/packages/client/dist/assets/index-CtMiUbMJ.js +1671 -0
- package/packages/client/dist/assets/index-hTu6ZG2N.js +2 -0
- package/packages/client/dist/assets/index-oBa2uNlv.css +32 -0
- package/packages/client/dist/assets/infoDiagram-FWYZ7A6U-CqvwbXJn.js +2 -0
- package/packages/client/dist/assets/init-Gi6I4Gst.js +1 -0
- package/packages/client/dist/assets/ishikawaDiagram-FXEZZL3T-CHhr5ioQ.js +70 -0
- package/packages/client/dist/assets/journeyDiagram-5HDEW3XC-d20NzZAd.js +139 -0
- package/packages/client/dist/assets/kanban-definition-HUTT4EX6-CHx3wOer.js +89 -0
- package/packages/client/dist/assets/katex-C5jXJg4s.js +257 -0
- package/packages/client/dist/assets/layout-DEXfKzaS.js +1 -0
- package/packages/client/dist/assets/linear-Cnp1E9M4.js +1 -0
- package/packages/client/dist/assets/map-Czzmt4hB.js +1 -0
- package/packages/client/dist/assets/mermaid.core-jAhLhPYr.js +314 -0
- package/packages/client/dist/assets/mindmap-definition-LN4V7U3C-zi30RPoJ.js +96 -0
- package/packages/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/packages/client/dist/assets/pdf.worker.min-qwK7q_zL.mjs +28 -0
- package/packages/client/dist/assets/pegDiagram-2B236MQR-4gKLzTqu.js +1 -0
- package/packages/client/dist/assets/pieDiagram-ENE6RG2P-DRDhpjxP.js +39 -0
- package/packages/client/dist/assets/quadrantDiagram-ABIIQ3AL-FmTxRIlW.js +7 -0
- package/packages/client/dist/assets/railroadDiagram-RFXS5EU6-Bc-Q7iPs.js +1 -0
- package/packages/client/dist/assets/requirementDiagram-TGXJPOKE-D209tlqv.js +84 -0
- package/packages/client/dist/assets/sankeyDiagram-HTMAVEWB--I_lSbCV.js +40 -0
- package/packages/client/dist/assets/sequenceDiagram-DBY2YBRQ-Da5YJcDJ.js +162 -0
- package/packages/client/dist/assets/sizeCapture-X5ZJPWSS-DYuc-rzB.js +1 -0
- package/packages/client/dist/assets/{snippetTokenHighlight-DVju7SBc.js → snippetTokenHighlight-qXHxvlCE.js} +1 -1
- package/packages/client/dist/assets/stateDiagram-2N3HPSRC-DoOeZoRP.js +1 -0
- package/packages/client/dist/assets/stateDiagram-v2-6OUMAXLB-DLkUyWs6.js +1 -0
- package/packages/client/dist/assets/swimlanes-5IMT3BWC-BcR7uCTf.js +2 -0
- package/packages/client/dist/assets/swimlanesDiagram-G3AALYLV-C0FDo-hf.js +8 -0
- package/packages/client/dist/assets/timeline-definition-FHXFAJF6-CLzKR6_i.js +120 -0
- package/packages/client/dist/assets/vennDiagram-L72KCM5P-TajEacPR.js +34 -0
- package/packages/client/dist/assets/wardleyDiagram-EHGQE667-DKvVEb3V.js +78 -0
- package/packages/client/dist/assets/xychartDiagram-FW5EYKEG-CaJG8r0j.js +7 -0
- package/packages/client/dist/index.html +2 -2
- package/packages/client/dist/sw.js +2 -2
- package/packages/server/dist/controllers/accountController.d.ts.map +1 -1
- package/packages/server/dist/controllers/accountController.js +31 -11
- package/packages/server/dist/controllers/accountController.js.map +1 -1
- package/packages/server/dist/controllers/fileSystemController.d.ts +6 -0
- package/packages/server/dist/controllers/fileSystemController.d.ts.map +1 -1
- package/packages/server/dist/controllers/fileSystemController.js +34 -0
- package/packages/server/dist/controllers/fileSystemController.js.map +1 -1
- package/packages/server/dist/controllers/projectController.d.ts.map +1 -1
- package/packages/server/dist/controllers/projectController.js +4 -2
- package/packages/server/dist/controllers/projectController.js.map +1 -1
- package/packages/server/dist/controllers/sessionController.d.ts +5 -0
- package/packages/server/dist/controllers/sessionController.d.ts.map +1 -1
- package/packages/server/dist/controllers/sessionController.js +95 -3
- package/packages/server/dist/controllers/sessionController.js.map +1 -1
- package/packages/server/dist/handlers/hookBridge.d.ts +131 -0
- package/packages/server/dist/handlers/hookBridge.d.ts.map +1 -0
- package/packages/server/dist/handlers/hookBridge.js +178 -0
- package/packages/server/dist/handlers/hookBridge.js.map +1 -0
- package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
- package/packages/server/dist/handlers/streamCallbacks.js +30 -4
- package/packages/server/dist/handlers/streamCallbacks.js.map +1 -1
- package/packages/server/dist/handlers/websocket.d.ts +44 -2
- package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
- package/packages/server/dist/handlers/websocket.js +666 -64
- package/packages/server/dist/handlers/websocket.js.map +1 -1
- package/packages/server/dist/index.js +4 -1
- package/packages/server/dist/index.js.map +1 -1
- package/packages/server/dist/locales/en/server.json +9 -3
- package/packages/server/dist/locales/es/server.json +9 -3
- package/packages/server/dist/locales/ja/server.json +9 -3
- package/packages/server/dist/locales/ko/server.json +9 -3
- package/packages/server/dist/locales/pt/server.json +9 -3
- package/packages/server/dist/locales/zh-CN/server.json +9 -3
- package/packages/server/dist/routes/account.d.ts.map +1 -1
- package/packages/server/dist/routes/account.js +4 -2
- package/packages/server/dist/routes/account.js.map +1 -1
- package/packages/server/dist/routes/fileSystem.d.ts.map +1 -1
- package/packages/server/dist/routes/fileSystem.js +2 -0
- package/packages/server/dist/routes/fileSystem.js.map +1 -1
- package/packages/server/dist/routes/sessions.d.ts.map +1 -1
- package/packages/server/dist/routes/sessions.js +2 -0
- package/packages/server/dist/routes/sessions.js.map +1 -1
- package/packages/server/dist/services/accountInfoService.d.ts +36 -1
- package/packages/server/dist/services/accountInfoService.d.ts.map +1 -1
- package/packages/server/dist/services/accountInfoService.js +90 -4
- package/packages/server/dist/services/accountInfoService.js.map +1 -1
- package/packages/server/dist/services/accountStorageService.d.ts +55 -9
- package/packages/server/dist/services/accountStorageService.d.ts.map +1 -1
- package/packages/server/dist/services/accountStorageService.js +244 -12
- package/packages/server/dist/services/accountStorageService.js.map +1 -1
- package/packages/server/dist/services/chatEngine.d.ts +59 -3
- package/packages/server/dist/services/chatEngine.d.ts.map +1 -1
- package/packages/server/dist/services/chatService.d.ts +112 -3
- package/packages/server/dist/services/chatService.d.ts.map +1 -1
- package/packages/server/dist/services/chatService.js +353 -98
- package/packages/server/dist/services/chatService.js.map +1 -1
- package/packages/server/dist/services/claudeLoginService.d.ts +14 -3
- package/packages/server/dist/services/claudeLoginService.d.ts.map +1 -1
- package/packages/server/dist/services/claudeLoginService.js +18 -4
- package/packages/server/dist/services/claudeLoginService.js.map +1 -1
- package/packages/server/dist/services/cliChatEngine.d.ts.map +1 -1
- package/packages/server/dist/services/cliChatEngine.js +124 -22
- package/packages/server/dist/services/cliChatEngine.js.map +1 -1
- package/packages/server/dist/services/cliModalDetect.d.ts +14 -0
- package/packages/server/dist/services/cliModalDetect.d.ts.map +1 -1
- package/packages/server/dist/services/cliModalDetect.js +12 -3
- package/packages/server/dist/services/cliModalDetect.js.map +1 -1
- package/packages/server/dist/services/cliSessionPool.js +1 -1
- package/packages/server/dist/services/cliSessionPool.js.map +1 -1
- package/packages/server/dist/services/commandService.d.ts.map +1 -1
- package/packages/server/dist/services/commandService.js +19 -9
- package/packages/server/dist/services/commandService.js.map +1 -1
- package/packages/server/dist/services/engineResidencyRegistry.d.ts +112 -0
- package/packages/server/dist/services/engineResidencyRegistry.d.ts.map +1 -0
- package/packages/server/dist/services/engineResidencyRegistry.js +195 -0
- package/packages/server/dist/services/engineResidencyRegistry.js.map +1 -0
- package/packages/server/dist/services/harnessAgentService.d.ts.map +1 -1
- package/packages/server/dist/services/harnessAgentService.js +12 -2
- package/packages/server/dist/services/harnessAgentService.js.map +1 -1
- package/packages/server/dist/services/harnessLintService.d.ts.map +1 -1
- package/packages/server/dist/services/harnessLintService.js +25 -114
- package/packages/server/dist/services/harnessLintService.js.map +1 -1
- package/packages/server/dist/services/historyParser.d.ts.map +1 -1
- package/packages/server/dist/services/historyParser.js +23 -6
- package/packages/server/dist/services/historyParser.js.map +1 -1
- package/packages/server/dist/services/imageStorageService.d.ts.map +1 -1
- package/packages/server/dist/services/imageStorageService.js +7 -0
- package/packages/server/dist/services/imageStorageService.js.map +1 -1
- package/packages/server/dist/services/projectService.d.ts +4 -1
- package/packages/server/dist/services/projectService.d.ts.map +1 -1
- package/packages/server/dist/services/projectService.js +14 -1
- package/packages/server/dist/services/projectService.js.map +1 -1
- package/packages/server/dist/services/promptQueue.d.ts +34 -0
- package/packages/server/dist/services/promptQueue.d.ts.map +1 -0
- package/packages/server/dist/services/promptQueue.js +80 -0
- package/packages/server/dist/services/promptQueue.js.map +1 -0
- package/packages/server/dist/services/ptyService.d.ts.map +1 -1
- package/packages/server/dist/services/ptyService.js +4 -1
- package/packages/server/dist/services/ptyService.js.map +1 -1
- package/packages/server/dist/services/queueService.d.ts.map +1 -1
- package/packages/server/dist/services/queueService.js +62 -4
- package/packages/server/dist/services/queueService.js.map +1 -1
- package/packages/server/dist/services/rateLimitProbeService.d.ts +73 -3
- package/packages/server/dist/services/rateLimitProbeService.d.ts.map +1 -1
- package/packages/server/dist/services/rateLimitProbeService.js +397 -30
- package/packages/server/dist/services/rateLimitProbeService.js.map +1 -1
- package/packages/server/dist/services/sessionBufferManager.d.ts.map +1 -1
- package/packages/server/dist/services/sessionBufferManager.js +22 -4
- package/packages/server/dist/services/sessionBufferManager.js.map +1 -1
- package/packages/server/dist/services/sessionExportService.d.ts +34 -0
- package/packages/server/dist/services/sessionExportService.d.ts.map +1 -0
- package/packages/server/dist/services/sessionExportService.js +269 -0
- package/packages/server/dist/services/sessionExportService.js.map +1 -0
- package/packages/server/dist/services/sessionService.d.ts +6 -0
- package/packages/server/dist/services/sessionService.d.ts.map +1 -1
- package/packages/server/dist/services/sessionService.js +30 -9
- package/packages/server/dist/services/sessionService.js.map +1 -1
- package/packages/server/dist/services/streamHandler.d.ts +177 -1
- package/packages/server/dist/services/streamHandler.d.ts.map +1 -1
- package/packages/server/dist/services/streamHandler.js +425 -39
- package/packages/server/dist/services/streamHandler.js.map +1 -1
- package/packages/server/dist/services/workspaceContext.d.ts.map +1 -1
- package/packages/server/dist/services/workspaceContext.js +6 -0
- package/packages/server/dist/services/workspaceContext.js.map +1 -1
- package/packages/server/dist/snippets/fix-lint-command-not-on-path +13 -0
- package/packages/server/dist/snippets/fix-lint-duplicate-name +12 -0
- package/packages/server/dist/snippets/fix-lint-env-var-undefined +13 -0
- package/packages/server/dist/snippets/fix-lint-regex-invalid +14 -0
- package/packages/server/dist/snippets/fix-lint-tools-non-standard +14 -0
- package/packages/server/dist/snippets/fix-lint-url-invalid +13 -0
- package/packages/server/dist/snippets/fix-lint-yaml-parse-error +14 -0
- package/packages/server/dist/snippets/fix-malformed-skill +17 -0
- package/packages/server/dist/utils/backgroundHookSettings.d.ts +31 -0
- package/packages/server/dist/utils/backgroundHookSettings.d.ts.map +1 -0
- package/packages/server/dist/utils/backgroundHookSettings.js +41 -0
- package/packages/server/dist/utils/backgroundHookSettings.js.map +1 -0
- package/packages/server/dist/utils/backgroundTaskPoller.d.ts +69 -0
- package/packages/server/dist/utils/backgroundTaskPoller.d.ts.map +1 -0
- package/packages/server/dist/utils/backgroundTaskPoller.js +356 -0
- package/packages/server/dist/utils/backgroundTaskPoller.js.map +1 -0
- package/packages/server/dist/utils/backgroundTaskTracker.d.ts +51 -3
- package/packages/server/dist/utils/backgroundTaskTracker.d.ts.map +1 -1
- package/packages/server/dist/utils/backgroundTaskTracker.js +117 -9
- package/packages/server/dist/utils/backgroundTaskTracker.js.map +1 -1
- package/packages/server/dist/utils/backgroundToolGuard.d.ts +26 -0
- package/packages/server/dist/utils/backgroundToolGuard.d.ts.map +1 -0
- package/packages/server/dist/utils/backgroundToolGuard.js +40 -0
- package/packages/server/dist/utils/backgroundToolGuard.js.map +1 -0
- package/packages/server/dist/utils/boundedRing.d.ts +44 -0
- package/packages/server/dist/utils/boundedRing.d.ts.map +1 -0
- package/packages/server/dist/utils/boundedRing.js +77 -0
- package/packages/server/dist/utils/boundedRing.js.map +1 -0
- package/packages/server/dist/utils/effortUtils.d.ts +7 -6
- package/packages/server/dist/utils/effortUtils.d.ts.map +1 -1
- package/packages/server/dist/utils/effortUtils.js +10 -9
- package/packages/server/dist/utils/effortUtils.js.map +1 -1
- package/packages/server/dist/utils/messageTree.d.ts +25 -0
- package/packages/server/dist/utils/messageTree.d.ts.map +1 -1
- package/packages/server/dist/utils/messageTree.js +167 -3
- package/packages/server/dist/utils/messageTree.js.map +1 -1
- package/packages/server/dist/utils/pathUtils.d.ts.map +1 -1
- package/packages/server/dist/utils/pathUtils.js +1 -0
- package/packages/server/dist/utils/pathUtils.js.map +1 -1
- package/packages/server/dist/utils/residencyActivation.d.ts +61 -0
- package/packages/server/dist/utils/residencyActivation.d.ts.map +1 -0
- package/packages/server/dist/utils/residencyActivation.js +60 -0
- package/packages/server/dist/utils/residencyActivation.js.map +1 -0
- package/packages/server/dist/utils/residencyPolicy.d.ts +62 -0
- package/packages/server/dist/utils/residencyPolicy.d.ts.map +1 -0
- package/packages/server/dist/utils/residencyPolicy.js +82 -0
- package/packages/server/dist/utils/residencyPolicy.js.map +1 -0
- package/packages/server/dist/utils/runtimeParamStrategy.d.ts +51 -0
- package/packages/server/dist/utils/runtimeParamStrategy.d.ts.map +1 -0
- package/packages/server/dist/utils/runtimeParamStrategy.js +60 -0
- package/packages/server/dist/utils/runtimeParamStrategy.js.map +1 -0
- package/packages/server/dist/utils/stopStrategy.d.ts +62 -0
- package/packages/server/dist/utils/stopStrategy.d.ts.map +1 -0
- package/packages/server/dist/utils/stopStrategy.js +65 -0
- package/packages/server/dist/utils/stopStrategy.js.map +1 -0
- package/packages/server/resources/internals/INDEX.md +1 -1
- package/packages/server/resources/internals/image-storage.md +14 -2
- package/packages/server/resources/manual/02-chat.md +30 -13
- package/packages/server/resources/manual/03-sessions.md +22 -1
- package/packages/server/resources/manual/04-slash-commands-favorites.md +2 -1
- package/packages/server/resources/manual/05-projects.md +1 -0
- package/packages/server/resources/manual/06-file-explorer-editor.md +21 -2
- package/packages/server/resources/manual/07-git.md +1 -1
- package/packages/server/resources/manual/08-terminal.md +1 -1
- package/packages/server/resources/manual/12-harness-workbench.md +21 -16
- package/packages/server/resources/manual/13-settings.md +22 -6
- package/packages/server/resources/manual/14-keyboard-shortcuts.md +8 -1
- package/packages/shared/dist/constants/messageTree.d.ts +2 -0
- package/packages/shared/dist/constants/messageTree.d.ts.map +1 -1
- package/packages/shared/dist/constants/messageTree.js +6 -0
- package/packages/shared/dist/constants/messageTree.js.map +1 -1
- package/packages/shared/dist/index.d.ts +1 -1
- package/packages/shared/dist/index.d.ts.map +1 -1
- package/packages/shared/dist/index.js.map +1 -1
- package/packages/shared/dist/types/accounts.d.ts +13 -0
- package/packages/shared/dist/types/accounts.d.ts.map +1 -1
- package/packages/shared/dist/types/history.d.ts +14 -1
- package/packages/shared/dist/types/history.d.ts.map +1 -1
- package/packages/shared/dist/types/message.d.ts +26 -3
- package/packages/shared/dist/types/message.d.ts.map +1 -1
- package/packages/shared/dist/types/message.js +21 -1
- package/packages/shared/dist/types/message.js.map +1 -1
- package/packages/shared/dist/types/preferences.d.ts +5 -1
- package/packages/shared/dist/types/preferences.d.ts.map +1 -1
- package/packages/shared/dist/types/preferences.js +3 -0
- package/packages/shared/dist/types/preferences.js.map +1 -1
- package/packages/shared/dist/types/sdk.d.ts +68 -10
- package/packages/shared/dist/types/sdk.d.ts.map +1 -1
- package/packages/shared/dist/types/sdk.js +56 -16
- package/packages/shared/dist/types/sdk.js.map +1 -1
- package/packages/shared/dist/types/session.d.ts +6 -0
- package/packages/shared/dist/types/session.d.ts.map +1 -1
- package/packages/shared/dist/types/session.js +6 -0
- package/packages/shared/dist/types/session.js.map +1 -1
- package/packages/shared/dist/types/streaming.d.ts +32 -2
- package/packages/shared/dist/types/streaming.d.ts.map +1 -1
- package/packages/shared/dist/types/streaming.js.map +1 -1
- package/packages/shared/dist/types/websocket.d.ts +4 -0
- package/packages/shared/dist/types/websocket.d.ts.map +1 -1
- package/scripts/probe-persistent-hooks.mjs +795 -0
- package/packages/client/dist/assets/index-BX7y_Qt3.css +0 -32
- package/packages/client/dist/assets/index-Bav7AMMy.js +0 -2
- package/packages/client/dist/assets/index-DgRQoBIg.js +0 -1657
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
"invalidPath": "Invalid path detected.",
|
|
105
105
|
"parseError": "Error parsing session data.",
|
|
106
106
|
"deleteError": "Error deleting session.",
|
|
107
|
+
"streamingDelete": "Cannot delete a session that is currently streaming.",
|
|
107
108
|
"nameError": "Error updating session name."
|
|
108
109
|
}
|
|
109
110
|
},
|
|
@@ -303,9 +304,12 @@
|
|
|
303
304
|
"error": {
|
|
304
305
|
"queueSessionLocked": "Cannot send messages to a session where a queue is running.",
|
|
305
306
|
"queueAlreadyRunning": "Queue is already running for this project",
|
|
306
|
-
"maxImages": "You can attach up to {{value}}
|
|
307
|
-
"unsupportedImageFormat": "Unsupported
|
|
307
|
+
"maxImages": "You can attach up to {{value}} files.",
|
|
308
|
+
"unsupportedImageFormat": "Unsupported attachment format: {{value}} (supported: PNG, JPEG, GIF, WebP, PDF)",
|
|
308
309
|
"imageSizeExceeded": "Image size exceeds 10MB: {{value}}",
|
|
310
|
+
"pdfSizeExceeded": "PDF size exceeds 20MB: {{value}}",
|
|
311
|
+
"attachmentsSizeExceeded": "Total attachment size exceeds 20MB.",
|
|
312
|
+
"pdfRequiresSdkEngine": "PDF attachments are only supported on the SDK engine. This session is running on the CLI engine.",
|
|
309
313
|
"projectPathNotFound": "The specified project path does not exist.",
|
|
310
314
|
"sessionNotFound": "Session not found. Please start a new session.",
|
|
311
315
|
"timeout": "Response timed out. Please try again.",
|
|
@@ -321,7 +325,9 @@
|
|
|
321
325
|
"rewindFailed": "Failed to rewind files: {{error}}",
|
|
322
326
|
"snippetNotFound": "Snippet file not found: {{name}}",
|
|
323
327
|
"snippetParseError": "Snippet parse error: {{message}}",
|
|
324
|
-
"snippetSizeExceeded": "Snippet file exceeds 100KB limit: {{name}}"
|
|
328
|
+
"snippetSizeExceeded": "Snippet file exceeds 100KB limit: {{name}}",
|
|
329
|
+
"engineTerminated": "The engine process ended unexpectedly before completing the response. The session is preserved - sending another message will resume it.",
|
|
330
|
+
"rewindWhileStreaming": "Cannot rewind files while a response is streaming. Stop the current response first."
|
|
325
331
|
}
|
|
326
332
|
},
|
|
327
333
|
"pathGuard": {
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
"invalidPath": "Se detectó una ruta inválida.",
|
|
105
105
|
"parseError": "Error al analizar datos de sesión.",
|
|
106
106
|
"deleteError": "Error al eliminar sesión.",
|
|
107
|
+
"streamingDelete": "No se puede eliminar una sesión en transmisión.",
|
|
107
108
|
"nameError": "Error al actualizar nombre de sesión."
|
|
108
109
|
}
|
|
109
110
|
},
|
|
@@ -255,9 +256,12 @@
|
|
|
255
256
|
"error": {
|
|
256
257
|
"queueSessionLocked": "No se pueden enviar mensajes a una sesión donde hay una cola en ejecución.",
|
|
257
258
|
"queueAlreadyRunning": "La cola ya está en ejecución para este proyecto",
|
|
258
|
-
"maxImages": "Puede adjuntar hasta {{value}}
|
|
259
|
-
"unsupportedImageFormat": "Formato de
|
|
259
|
+
"maxImages": "Puede adjuntar hasta {{value}} archivos.",
|
|
260
|
+
"unsupportedImageFormat": "Formato de adjunto no soportado: {{value}} (soportados: PNG, JPEG, GIF, WebP, PDF)",
|
|
260
261
|
"imageSizeExceeded": "El tamaño de la imagen excede 10MB: {{value}}",
|
|
262
|
+
"pdfSizeExceeded": "El tamaño del PDF excede 20MB: {{value}}",
|
|
263
|
+
"attachmentsSizeExceeded": "El tamaño total de los adjuntos excede 20MB.",
|
|
264
|
+
"pdfRequiresSdkEngine": "Los adjuntos PDF solo son compatibles con el motor SDK. Esta sesión se está ejecutando en el motor CLI.",
|
|
261
265
|
"projectPathNotFound": "La ruta del proyecto especificada no existe.",
|
|
262
266
|
"sessionNotFound": "Sesión no encontrada. Inicie una nueva sesión.",
|
|
263
267
|
"timeout": "Tiempo de respuesta agotado. Inténtelo de nuevo.",
|
|
@@ -273,7 +277,9 @@
|
|
|
273
277
|
"rewindFailed": "Failed to rewind files: {{error}}",
|
|
274
278
|
"snippetNotFound": "Archivo de snippet no encontrado: {{name}}",
|
|
275
279
|
"snippetParseError": "Error al analizar snippet: {{message}}",
|
|
276
|
-
"snippetSizeExceeded": "El archivo de snippet excede el límite de 100KB: {{name}}"
|
|
280
|
+
"snippetSizeExceeded": "El archivo de snippet excede el límite de 100KB: {{name}}",
|
|
281
|
+
"engineTerminated": "El proceso del motor terminó inesperadamente antes de completar la respuesta. La sesión se conserva: envía otro mensaje para reanudarla.",
|
|
282
|
+
"rewindWhileStreaming": "No se pueden revertir archivos mientras se transmite una respuesta. Detén primero la respuesta actual."
|
|
277
283
|
}
|
|
278
284
|
},
|
|
279
285
|
"pathGuard": {
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
"invalidPath": "無効なパスが検出されました。",
|
|
105
105
|
"parseError": "セッションデータの解析でエラーが発生しました。",
|
|
106
106
|
"deleteError": "セッションの削除でエラーが発生しました。",
|
|
107
|
+
"streamingDelete": "ストリーミング中のセッションは削除できません。",
|
|
107
108
|
"nameError": "セッション名の更新でエラーが発生しました。"
|
|
108
109
|
}
|
|
109
110
|
},
|
|
@@ -255,9 +256,12 @@
|
|
|
255
256
|
"error": {
|
|
256
257
|
"queueSessionLocked": "キュー実行中のセッションにはメッセージを送信できません。",
|
|
257
258
|
"queueAlreadyRunning": "このプロジェクトのキューは既に実行中です",
|
|
258
|
-
"maxImages": "
|
|
259
|
-
"unsupportedImageFormat": "
|
|
259
|
+
"maxImages": "ファイルは最大{{value}}個まで添付できます。",
|
|
260
|
+
"unsupportedImageFormat": "サポートされていない添付形式: {{value}}(対応: PNG、JPEG、GIF、WebP、PDF)",
|
|
260
261
|
"imageSizeExceeded": "画像サイズが10MBを超えています: {{value}}",
|
|
262
|
+
"pdfSizeExceeded": "PDFサイズが20MBを超えています: {{value}}",
|
|
263
|
+
"attachmentsSizeExceeded": "添付ファイルの合計サイズが20MBを超えています。",
|
|
264
|
+
"pdfRequiresSdkEngine": "PDF添付はSDKエンジンでのみサポートされています。このセッションはCLIエンジンで実行されています。",
|
|
261
265
|
"projectPathNotFound": "指定されたプロジェクトパスが存在しません。",
|
|
262
266
|
"sessionNotFound": "セッションが見つかりません。新しいセッションを開始してください。",
|
|
263
267
|
"timeout": "応答がタイムアウトしました。もう一度お試しください。",
|
|
@@ -273,7 +277,9 @@
|
|
|
273
277
|
"rewindFailed": "Failed to rewind files: {{error}}",
|
|
274
278
|
"snippetNotFound": "スニペットファイルが見つかりません: {{name}}",
|
|
275
279
|
"snippetParseError": "スニペット解析エラー: {{message}}",
|
|
276
|
-
"snippetSizeExceeded": "スニペットファイルが100KB制限を超えています: {{name}}"
|
|
280
|
+
"snippetSizeExceeded": "スニペットファイルが100KB制限を超えています: {{name}}",
|
|
281
|
+
"engineTerminated": "エンジンプロセスが応答を完了する前に予期せず終了しました。セッションは保持されています。もう一度送信すると再開されます。",
|
|
282
|
+
"rewindWhileStreaming": "応答のストリーミング中はファイルを巻き戻せません。先に現在の応答を停止してください。"
|
|
277
283
|
}
|
|
278
284
|
},
|
|
279
285
|
"pathGuard": {
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
"invalidPath": "유효하지 않은 경로가 감지되었습니다.",
|
|
105
105
|
"parseError": "세션 데이터 파싱 중 오류가 발생했습니다.",
|
|
106
106
|
"deleteError": "세션 삭제 중 오류가 발생했습니다.",
|
|
107
|
+
"streamingDelete": "스트리밍 중인 세션은 삭제할 수 없습니다.",
|
|
107
108
|
"nameError": "세션 이름 업데이트 중 오류가 발생했습니다."
|
|
108
109
|
}
|
|
109
110
|
},
|
|
@@ -266,9 +267,12 @@
|
|
|
266
267
|
"error": {
|
|
267
268
|
"queueSessionLocked": "큐가 실행 중인 세션에는 메시지를 보낼 수 없습니다.",
|
|
268
269
|
"queueAlreadyRunning": "이 프로젝트에서 이미 큐가 실행 중입니다",
|
|
269
|
-
"maxImages": "
|
|
270
|
-
"unsupportedImageFormat": "지원되지 않는
|
|
270
|
+
"maxImages": "파일은 최대 {{value}}개까지 첨부할 수 있습니다.",
|
|
271
|
+
"unsupportedImageFormat": "지원되지 않는 첨부 형식입니다: {{value}} (지원: PNG, JPEG, GIF, WebP, PDF)",
|
|
271
272
|
"imageSizeExceeded": "이미지 크기가 10MB를 초과합니다: {{value}}",
|
|
273
|
+
"pdfSizeExceeded": "PDF 크기가 20MB를 초과합니다: {{value}}",
|
|
274
|
+
"attachmentsSizeExceeded": "첨부 파일의 총 용량이 20MB를 초과합니다.",
|
|
275
|
+
"pdfRequiresSdkEngine": "PDF 첨부는 SDK 엔진에서만 지원됩니다. 이 세션은 CLI 엔진에서 실행 중입니다.",
|
|
272
276
|
"projectPathNotFound": "지정된 프로젝트 경로가 존재하지 않습니다.",
|
|
273
277
|
"sessionNotFound": "세션을 찾을 수 없습니다. 새 세션을 시작해주세요.",
|
|
274
278
|
"timeout": "응답 시간이 초과되었습니다. 다시 시도해 주세요.",
|
|
@@ -284,7 +288,9 @@
|
|
|
284
288
|
"rewindFailed": "파일 되돌리기 실패: {{error}}",
|
|
285
289
|
"snippetNotFound": "스니펫 파일을 찾을 수 없습니다: {{name}}",
|
|
286
290
|
"snippetParseError": "스니펫 파싱 오류: {{message}}",
|
|
287
|
-
"snippetSizeExceeded": "스니펫 파일이 100KB 제한을 초과합니다: {{name}}"
|
|
291
|
+
"snippetSizeExceeded": "스니펫 파일이 100KB 제한을 초과합니다: {{name}}",
|
|
292
|
+
"engineTerminated": "엔진 프로세스가 응답을 완료하지 못하고 예기치 않게 종료되었습니다. 세션은 보존되어 있으며, 메시지를 다시 보내면 이어서 진행됩니다.",
|
|
293
|
+
"rewindWhileStreaming": "응답이 스트리밍되는 동안에는 파일을 되감을 수 없습니다. 먼저 현재 응답을 중지해주세요."
|
|
288
294
|
}
|
|
289
295
|
},
|
|
290
296
|
"pathGuard": {
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
"invalidPath": "Caminho inválido detectado.",
|
|
105
105
|
"parseError": "Erro ao analisar dados da sessão.",
|
|
106
106
|
"deleteError": "Erro ao excluir sessão.",
|
|
107
|
+
"streamingDelete": "Não é possível excluir uma sessão em streaming.",
|
|
107
108
|
"nameError": "Erro ao atualizar nome da sessão."
|
|
108
109
|
}
|
|
109
110
|
},
|
|
@@ -255,9 +256,12 @@
|
|
|
255
256
|
"error": {
|
|
256
257
|
"queueSessionLocked": "Não é possível enviar mensagens para uma sessão onde uma fila está em execução.",
|
|
257
258
|
"queueAlreadyRunning": "A fila já está em execução para este projeto",
|
|
258
|
-
"maxImages": "Você pode anexar até {{value}}
|
|
259
|
-
"unsupportedImageFormat": "Formato de
|
|
259
|
+
"maxImages": "Você pode anexar até {{value}} arquivos.",
|
|
260
|
+
"unsupportedImageFormat": "Formato de anexo não suportado: {{value}} (suportados: PNG, JPEG, GIF, WebP, PDF)",
|
|
260
261
|
"imageSizeExceeded": "O tamanho da imagem excede 10MB: {{value}}",
|
|
262
|
+
"pdfSizeExceeded": "O tamanho do PDF excede 20MB: {{value}}",
|
|
263
|
+
"attachmentsSizeExceeded": "O tamanho total dos anexos excede 20MB.",
|
|
264
|
+
"pdfRequiresSdkEngine": "Anexos PDF são suportados apenas no mecanismo SDK. Esta sessão está sendo executada no mecanismo CLI.",
|
|
261
265
|
"projectPathNotFound": "O caminho do projeto especificado não existe.",
|
|
262
266
|
"sessionNotFound": "Sessão não encontrada. Inicie uma nova sessão.",
|
|
263
267
|
"timeout": "Tempo de resposta esgotado. Tente novamente.",
|
|
@@ -273,7 +277,9 @@
|
|
|
273
277
|
"rewindFailed": "Failed to rewind files: {{error}}",
|
|
274
278
|
"snippetNotFound": "Arquivo de snippet não encontrado: {{name}}",
|
|
275
279
|
"snippetParseError": "Erro ao analisar snippet: {{message}}",
|
|
276
|
-
"snippetSizeExceeded": "O arquivo de snippet excede o limite de 100KB: {{name}}"
|
|
280
|
+
"snippetSizeExceeded": "O arquivo de snippet excede o limite de 100KB: {{name}}",
|
|
281
|
+
"engineTerminated": "O processo do mecanismo terminou inesperadamente antes de concluir a resposta. A sessão foi preservada - envie outra mensagem para retomá-la.",
|
|
282
|
+
"rewindWhileStreaming": "Não é possível reverter arquivos enquanto uma resposta está sendo transmitida. Pare a resposta atual primeiro."
|
|
277
283
|
}
|
|
278
284
|
},
|
|
279
285
|
"pathGuard": {
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
"invalidPath": "检测到无效路径。",
|
|
105
105
|
"parseError": "解析会话数据时出错。",
|
|
106
106
|
"deleteError": "删除会话时出错。",
|
|
107
|
+
"streamingDelete": "无法删除正在流式传输的会话。",
|
|
107
108
|
"nameError": "更新会话名称时出错。"
|
|
108
109
|
}
|
|
109
110
|
},
|
|
@@ -255,9 +256,12 @@
|
|
|
255
256
|
"error": {
|
|
256
257
|
"queueSessionLocked": "无法向正在运行队列的会话发送消息。",
|
|
257
258
|
"queueAlreadyRunning": "该项目的队列已在运行中",
|
|
258
|
-
"maxImages": "最多可附加{{value}}
|
|
259
|
-
"unsupportedImageFormat": "
|
|
259
|
+
"maxImages": "最多可附加{{value}}个文件。",
|
|
260
|
+
"unsupportedImageFormat": "不支持的附件格式: {{value}}(支持: PNG、JPEG、GIF、WebP、PDF)",
|
|
260
261
|
"imageSizeExceeded": "图片大小超过10MB: {{value}}",
|
|
262
|
+
"pdfSizeExceeded": "PDF 大小超过 20MB: {{value}}",
|
|
263
|
+
"attachmentsSizeExceeded": "附件总大小超过 20MB。",
|
|
264
|
+
"pdfRequiresSdkEngine": "PDF 附件仅在 SDK 引擎上受支持。此会话正在 CLI 引擎上运行。",
|
|
261
265
|
"projectPathNotFound": "指定的项目路径不存在。",
|
|
262
266
|
"sessionNotFound": "未找到会话。请启动新会话。",
|
|
263
267
|
"timeout": "响应超时。请重试。",
|
|
@@ -273,7 +277,9 @@
|
|
|
273
277
|
"rewindFailed": "Failed to rewind files: {{error}}",
|
|
274
278
|
"snippetNotFound": "代码片段文件未找到: {{name}}",
|
|
275
279
|
"snippetParseError": "代码片段解析错误: {{message}}",
|
|
276
|
-
"snippetSizeExceeded": "代码片段文件超过100KB限制: {{name}}"
|
|
280
|
+
"snippetSizeExceeded": "代码片段文件超过100KB限制: {{name}}",
|
|
281
|
+
"engineTerminated": "引擎进程在完成响应前意外终止。会话已保留,再次发送消息即可继续。",
|
|
282
|
+
"rewindWhileStreaming": "响应流式传输期间无法回退文件。请先停止当前响应。"
|
|
277
283
|
}
|
|
278
284
|
},
|
|
279
285
|
"pathGuard": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,QAAA,MAAM,MAAM,4CAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAiCxB,eAAe,MAAM,CAAC"}
|
|
@@ -19,17 +19,19 @@ router.post('/refresh', async (_req, res) => {
|
|
|
19
19
|
});
|
|
20
20
|
// GET /api/account/usage — return subscription rate limit (5h/7d).
|
|
21
21
|
// Falls back to a fresh probe if cache is empty (e.g., WebSocket never connected).
|
|
22
|
+
// `throttledUntil` (epoch ms | null) reports an active usage-API Retry-After window so the
|
|
23
|
+
// client can say "temporarily rate-limited" honestly instead of an indefinite "checking…".
|
|
22
24
|
router.get('/usage', async (_req, res) => {
|
|
23
25
|
let rateLimit = rateLimitProbeService.getCachedResult();
|
|
24
26
|
if (!rateLimit) {
|
|
25
27
|
rateLimit = await rateLimitProbeService.probe();
|
|
26
28
|
}
|
|
27
|
-
res.json({ rateLimit });
|
|
29
|
+
res.json({ rateLimit, throttledUntil: rateLimitProbeService.getThrottledUntil() });
|
|
28
30
|
});
|
|
29
31
|
// POST /api/account/usage/refresh — force a fresh probe regardless of cache.
|
|
30
32
|
router.post('/usage/refresh', async (_req, res) => {
|
|
31
33
|
const rateLimit = await rateLimitProbeService.probe();
|
|
32
|
-
res.json({ rateLimit });
|
|
34
|
+
res.json({ rateLimit, throttledUntil: rateLimitProbeService.getThrottledUntil() });
|
|
33
35
|
});
|
|
34
36
|
export default router;
|
|
35
37
|
//# sourceMappingURL=account.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,8EAA8E;AAC9E,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;IAC/C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;IAC9D,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAgC,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACnD,MAAM,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;IACrD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAgC,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,mEAAmE;AACnE,mFAAmF;AACnF,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IAC1D,IAAI,SAAS,GAAiC,qBAAqB,CAAC,eAAe,EAAE,CAAC;IACtF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,8EAA8E;AAC9E,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;IAC/C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;IAC9D,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAgC,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACnD,MAAM,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;IACrD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAgC,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,mEAAmE;AACnE,mFAAmF;AACnF,2FAA2F;AAC3F,2FAA2F;AAC3F,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IAC1D,IAAI,SAAS,GAAiC,qBAAqB,CAAC,eAAe,EAAE,CAAC;IACtF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACrF,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAC7E,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IACnE,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,CAAC;IACtD,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACrF,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileSystem.d.ts","sourceRoot":"","sources":["../../src/routes/fileSystem.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,QAAA,MAAM,MAAM,4CAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fileSystem.d.ts","sourceRoot":"","sources":["../../src/routes/fileSystem.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,QAAA,MAAM,MAAM,4CAAW,CAAC;AA6DxB,eAAe,MAAM,CAAC"}
|
|
@@ -45,6 +45,8 @@ function handleUpload(req, res, next) {
|
|
|
45
45
|
next();
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
+
// HTML preview echo (returns posted content as text/html with relaxed CSP)
|
|
49
|
+
router.post('/:projectSlug/fs/html-preview', express.urlencoded({ extended: false, limit: '5mb' }), fileSystemController.htmlPreview);
|
|
48
50
|
// Read routes (Story 11.1)
|
|
49
51
|
router.get('/:projectSlug/fs/read', fileSystemController.readFile);
|
|
50
52
|
router.get('/:projectSlug/fs/raw', fileSystemController.readFileRaw);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileSystem.js","sourceRoot":"","sources":["../../src/routes/fileSystem.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,SAAS,CAAC;AAClE,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,2EAA2E;AAC3E,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAEvD,sDAAsD;AACtD,6DAA6D;AAC7D,MAAM,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;CAClD,CAAC,CAAC;AAEH,qDAAqD;AACrD,SAAS,YAAY,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IACnE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAY,EAAE,EAAE;QAC/C,IAAI,GAAG,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YACjD,MAAM,IAAI,GAAI,GAAgC,CAAC,IAAI,CAAC;YACpD,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;YAClD,MAAM,cAAc,GAA2B;gBAC7C,eAAe,EAAE,8BAA8B;gBAC/C,gBAAgB,EAAE,+BAA+B;gBACjD,qBAAqB,EAAE,oCAAoC;aAC5D,CAAC;YACF,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE;iBAClE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;YAClD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAAE;aACpE,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2BAA2B;AAC3B,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACnE,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACrE,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;AACxE,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC5E,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAExE,4BAA4B;AAC5B,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,eAAe,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACtF,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,eAAe,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAC3E,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAE1E,yBAAyB;AACzB,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACrE,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,YAAY,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAEvF,eAAe,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"fileSystem.js","sourceRoot":"","sources":["../../src/routes/fileSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,QAAA,MAAM,MAAM,4CAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,QAAA,MAAM,MAAM,4CAAW,CAAC;AA6CxB,eAAe,MAAM,CAAC"}
|
|
@@ -15,6 +15,8 @@ router.post('/:projectSlug/sessions/delete-batch', sessionController.deleteBatch
|
|
|
15
15
|
router.post('/:projectSlug/sessions/cleanup-phantom', sessionController.cleanupPhantom);
|
|
16
16
|
// DELETE /api/projects/:projectSlug/sessions/:sessionId - Delete a session
|
|
17
17
|
router.delete('/:projectSlug/sessions/:sessionId', sessionController.delete);
|
|
18
|
+
// GET /api/projects/:projectSlug/sessions/:sessionId/export - Export full session (all branches) as Markdown
|
|
19
|
+
router.get('/:projectSlug/sessions/:sessionId/export', sessionController.export);
|
|
18
20
|
// PATCH /api/projects/:projectSlug/sessions/:sessionId/name - Update session name
|
|
19
21
|
router.patch('/:projectSlug/sessions/:sessionId/name', sessionController.updateName);
|
|
20
22
|
// GET /api/projects/:projectSlug/sessions/:sessionId/prompt-history
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,wEAAwE;AACxE,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAE7D,gFAAgF;AAChF,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAElF,qFAAqF;AACrF,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAExF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,CAAC,mCAAmC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE7E,kFAAkF;AAClF,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAErF,oEAAoE;AACpE,MAAM,CAAC,GAAG,CAAC,kDAAkD,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACnG,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,+BAA+B,EAAE,EAAE,CAAC,CAAC;IACnH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,CAAC,GAAG,CAAC,kDAAkD,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACnG,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACtG,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,gCAAgC,EAAE,EAAE,CAAC,CAAC;IACrH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,wEAAwE;AACxE,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAE7D,gFAAgF;AAChF,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAElF,qFAAqF;AACrF,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAExF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,CAAC,mCAAmC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE7E,6GAA6G;AAC7G,MAAM,CAAC,GAAG,CAAC,0CAA0C,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAEjF,kFAAkF;AAClF,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAErF,oEAAoE;AACpE,MAAM,CAAC,GAAG,CAAC,kDAAkD,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACnG,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,+BAA+B,EAAE,EAAE,CAAC,CAAC;IACnH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,CAAC,GAAG,CAAC,kDAAkD,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACnG,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACtG,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,gCAAgC,EAAE,EAAE,CAAC,CAAC;IACrH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
|
@@ -15,18 +15,53 @@ import type { AccountInfo } from '@hammoc/shared';
|
|
|
15
15
|
declare class AccountInfoService {
|
|
16
16
|
private memory;
|
|
17
17
|
private inflight;
|
|
18
|
+
private generation;
|
|
18
19
|
getCached(): {
|
|
19
20
|
account: AccountInfo | null;
|
|
20
21
|
fetchedAt: number | null;
|
|
21
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Clear the cached account to a definitive logged-out state. Used on logout: the credentials
|
|
25
|
+
* file was just deleted, so we must NOT re-run a bootstrap query (the SDK returns a non-null
|
|
26
|
+
* `{ tokenSource: 'none' }` stub for a logged-out user, which would re-cache a phantom account
|
|
27
|
+
* and make the UI show an empty card instead of the login flow).
|
|
28
|
+
*/
|
|
29
|
+
clear(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Directly set the cached account from known data, bypassing the SDK bootstrap. The CLI
|
|
32
|
+
* reports the logged-in identity from its on-disk cache (`oauthAccount` in `~/.claude.json`),
|
|
33
|
+
* which accountStorageService swaps together with the credential on a switch — but the CLI
|
|
34
|
+
* may need one launch to regenerate it when no captured identity existed. Setting the cache
|
|
35
|
+
* from the stored account's email/tier makes the display correct immediately, without
|
|
36
|
+
* waiting for any bootstrap.
|
|
37
|
+
*/
|
|
38
|
+
setActiveAccount(account: AccountInfo): void;
|
|
22
39
|
/**
|
|
23
40
|
* Run a bootstrap query on server startup (fire-and-forget, never throws).
|
|
24
41
|
*/
|
|
25
42
|
initOnStartup(): Promise<void>;
|
|
26
43
|
/**
|
|
27
|
-
* Force-refresh via a short bootstrap query
|
|
44
|
+
* Force-refresh via a short bootstrap query, reconciled against the multi-account store.
|
|
45
|
+
* Dedupes concurrent callers.
|
|
28
46
|
*/
|
|
29
47
|
refresh(): Promise<AccountInfo | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Guard the bootstrap result against the CLI's stale on-disk identity cache. The CLI answers
|
|
50
|
+
* "who is logged in" from `oauthAccount` in `~/.claude.json`, written at login time — a config
|
|
51
|
+
* flush from a CLI child that outlived an account switch can resurrect the pre-switch identity
|
|
52
|
+
* over the one accountStorageService wrote. Two verified stale signatures are overridden with
|
|
53
|
+
* the active store account's identity (and the on-disk cache is re-asserted, self-healing):
|
|
54
|
+
*
|
|
55
|
+
* (a) the bootstrap email belongs to a DIFFERENT stored account than the active one — the
|
|
56
|
+
* classic post-switch staleness;
|
|
57
|
+
* (b) the bootstrap carries NO email while an active credential exists on disk — the cache
|
|
58
|
+
* was dropped (switch fallback) and the CLI hasn't finished regenerating it, or the
|
|
59
|
+
* stored token is expired (still a known, switchable account — not a logged-out state).
|
|
60
|
+
*
|
|
61
|
+
* A bootstrap email that is NOT in the store means an external `claude /login` happened
|
|
62
|
+
* outside Hammoc — the bootstrap is then authoritative and must NOT be overridden.
|
|
63
|
+
*/
|
|
64
|
+
private reconcileWithStore;
|
|
30
65
|
/**
|
|
31
66
|
* Start a streaming-input query with an AsyncIterable that never yields,
|
|
32
67
|
* call initializationResult() to get the account, then abort.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountInfoService.d.ts","sourceRoot":"","sources":["../../src/services/accountInfoService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"accountInfoService.d.ts","sourceRoot":"","sources":["../../src/services/accountInfoService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAQlD,cAAM,kBAAkB;IACtB,OAAO,CAAC,MAAM,CAAmE;IACjF,OAAO,CAAC,QAAQ,CAA4C;IAG5D,OAAO,CAAC,UAAU,CAAK;IAEvB,SAAS,IAAI;QAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAOtE;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;;;OAOG;IACH,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAM5C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAcpC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAiB5C;;;;;;;;;;;;;;;OAeG;YACW,kBAAkB;IA8BhC;;;OAGG;YACW,cAAc;CAwD7B;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -13,18 +13,46 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import os from 'node:os';
|
|
15
15
|
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
16
|
+
import { accountStorageService } from './accountStorageService.js';
|
|
16
17
|
import { createLogger } from '../utils/logger.js';
|
|
17
18
|
const log = createLogger('accountInfoService');
|
|
18
19
|
const FETCH_TIMEOUT_MS = 15 * 1000;
|
|
19
20
|
class AccountInfoService {
|
|
20
21
|
memory = null;
|
|
21
22
|
inflight = null;
|
|
23
|
+
// Bumped by clear(); an in-flight bootstrap captures the value at start and only writes its
|
|
24
|
+
// result back if the generation still matches — so a logout during a fetch can't be clobbered.
|
|
25
|
+
generation = 0;
|
|
22
26
|
getCached() {
|
|
23
27
|
return {
|
|
24
28
|
account: this.memory?.account ?? null,
|
|
25
29
|
fetchedAt: this.memory?.fetchedAt ?? null,
|
|
26
30
|
};
|
|
27
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Clear the cached account to a definitive logged-out state. Used on logout: the credentials
|
|
34
|
+
* file was just deleted, so we must NOT re-run a bootstrap query (the SDK returns a non-null
|
|
35
|
+
* `{ tokenSource: 'none' }` stub for a logged-out user, which would re-cache a phantom account
|
|
36
|
+
* and make the UI show an empty card instead of the login flow).
|
|
37
|
+
*/
|
|
38
|
+
clear() {
|
|
39
|
+
this.generation++; // invalidate any in-flight bootstrap so its late .then can't re-cache
|
|
40
|
+
this.memory = { account: null, fetchedAt: Date.now() };
|
|
41
|
+
this.inflight = null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Directly set the cached account from known data, bypassing the SDK bootstrap. The CLI
|
|
45
|
+
* reports the logged-in identity from its on-disk cache (`oauthAccount` in `~/.claude.json`),
|
|
46
|
+
* which accountStorageService swaps together with the credential on a switch — but the CLI
|
|
47
|
+
* may need one launch to regenerate it when no captured identity existed. Setting the cache
|
|
48
|
+
* from the stored account's email/tier makes the display correct immediately, without
|
|
49
|
+
* waiting for any bootstrap.
|
|
50
|
+
*/
|
|
51
|
+
setActiveAccount(account) {
|
|
52
|
+
this.generation++;
|
|
53
|
+
this.memory = { account, fetchedAt: Date.now() };
|
|
54
|
+
this.inflight = null;
|
|
55
|
+
}
|
|
28
56
|
/**
|
|
29
57
|
* Run a bootstrap query on server startup (fire-and-forget, never throws).
|
|
30
58
|
*/
|
|
@@ -44,21 +72,70 @@ class AccountInfoService {
|
|
|
44
72
|
}
|
|
45
73
|
}
|
|
46
74
|
/**
|
|
47
|
-
* Force-refresh via a short bootstrap query
|
|
75
|
+
* Force-refresh via a short bootstrap query, reconciled against the multi-account store.
|
|
76
|
+
* Dedupes concurrent callers.
|
|
48
77
|
*/
|
|
49
78
|
async refresh() {
|
|
50
79
|
if (this.inflight)
|
|
51
80
|
return this.inflight;
|
|
81
|
+
const gen = this.generation;
|
|
52
82
|
this.inflight = this.bootstrapFetch()
|
|
83
|
+
.then((account) => this.reconcileWithStore(account))
|
|
53
84
|
.then((account) => {
|
|
54
|
-
|
|
85
|
+
// A clear() (e.g. logout) during the fetch bumps the generation — don't overwrite the
|
|
86
|
+
// now-authoritative logged-out state with this stale result.
|
|
87
|
+
if (gen === this.generation)
|
|
88
|
+
this.memory = { account, fetchedAt: Date.now() };
|
|
55
89
|
return account;
|
|
56
90
|
})
|
|
57
91
|
.finally(() => {
|
|
58
|
-
this.
|
|
92
|
+
if (gen === this.generation)
|
|
93
|
+
this.inflight = null;
|
|
59
94
|
});
|
|
60
95
|
return this.inflight;
|
|
61
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Guard the bootstrap result against the CLI's stale on-disk identity cache. The CLI answers
|
|
99
|
+
* "who is logged in" from `oauthAccount` in `~/.claude.json`, written at login time — a config
|
|
100
|
+
* flush from a CLI child that outlived an account switch can resurrect the pre-switch identity
|
|
101
|
+
* over the one accountStorageService wrote. Two verified stale signatures are overridden with
|
|
102
|
+
* the active store account's identity (and the on-disk cache is re-asserted, self-healing):
|
|
103
|
+
*
|
|
104
|
+
* (a) the bootstrap email belongs to a DIFFERENT stored account than the active one — the
|
|
105
|
+
* classic post-switch staleness;
|
|
106
|
+
* (b) the bootstrap carries NO email while an active credential exists on disk — the cache
|
|
107
|
+
* was dropped (switch fallback) and the CLI hasn't finished regenerating it, or the
|
|
108
|
+
* stored token is expired (still a known, switchable account — not a logged-out state).
|
|
109
|
+
*
|
|
110
|
+
* A bootstrap email that is NOT in the store means an external `claude /login` happened
|
|
111
|
+
* outside Hammoc — the bootstrap is then authoritative and must NOT be overridden.
|
|
112
|
+
*/
|
|
113
|
+
async reconcileWithStore(account) {
|
|
114
|
+
try {
|
|
115
|
+
const summaries = await accountStorageService.listAccounts();
|
|
116
|
+
const active = summaries.find((a) => a.active);
|
|
117
|
+
const activeEmail = active?.email;
|
|
118
|
+
if (!activeEmail || account?.email === activeEmail)
|
|
119
|
+
return account;
|
|
120
|
+
const staleKnownAccount = !!account?.email && summaries.some((a) => !a.active && a.email === account.email);
|
|
121
|
+
const stubWithCredential = !account?.email && (await accountStorageService.hasActiveCredential());
|
|
122
|
+
if (!staleKnownAccount && !stubWithCredential)
|
|
123
|
+
return account;
|
|
124
|
+
log.warn(`bootstrap identity '${account?.email ?? '(none)'}' is stale — using active store account '${activeEmail}'`);
|
|
125
|
+
void accountStorageService.reassertActiveCliIdentity().catch(() => { });
|
|
126
|
+
return {
|
|
127
|
+
email: activeEmail,
|
|
128
|
+
// The bootstrap's subscriptionType is derived from the live credential file (verified:
|
|
129
|
+
// it tracks the switched token even when the identity is stale), so keep it; fall back
|
|
130
|
+
// to the stored tier.
|
|
131
|
+
subscriptionType: account?.subscriptionType ?? active.tier ?? undefined,
|
|
132
|
+
apiProvider: account?.apiProvider ?? 'firstParty',
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return account; // reconciliation is a guard, never a new failure mode
|
|
137
|
+
}
|
|
138
|
+
}
|
|
62
139
|
/**
|
|
63
140
|
* Start a streaming-input query with an AsyncIterable that never yields,
|
|
64
141
|
* call initializationResult() to get the account, then abort.
|
|
@@ -95,7 +172,16 @@ class AccountInfoService {
|
|
|
95
172
|
// timeout (verified on both host and container: iter.next() stalls the full
|
|
96
173
|
// FETCH_TIMEOUT_MS, while initializationResult() alone returns the account in ~1s).
|
|
97
174
|
const initResult = await q.initializationResult();
|
|
98
|
-
|
|
175
|
+
const account = initResult?.account ?? null;
|
|
176
|
+
// Only a fully authenticated account carries an email. The SDK returns non-null stubs for
|
|
177
|
+
// unauthenticated states, and they differ by case (both verified against the bundled SDK with
|
|
178
|
+
// isolated homes): logged-out → `{ tokenSource: 'none', apiProvider }`; EXPIRED token →
|
|
179
|
+
// `{ subscriptionType, apiProvider }` (no tokenSource, no email). Keying off email presence
|
|
180
|
+
// catches every "no usable identity" state, so consumers (top card, switch response, cross-tab
|
|
181
|
+
// sync) show the login flow instead of a half-empty card.
|
|
182
|
+
if (!account || !account.email)
|
|
183
|
+
return null;
|
|
184
|
+
return account;
|
|
99
185
|
}
|
|
100
186
|
catch (err) {
|
|
101
187
|
log.warn(`bootstrap fetch failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountInfoService.js","sourceRoot":"","sources":["../../src/services/accountInfoService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,KAAK,EAAuB,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,GAAG,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAE/C,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,MAAM,kBAAkB;IACd,MAAM,GAA8D,IAAI,CAAC;IACzE,QAAQ,GAAuC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"accountInfoService.js","sourceRoot":"","sources":["../../src/services/accountInfoService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,KAAK,EAAuB,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,GAAG,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAE/C,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,MAAM,kBAAkB;IACd,MAAM,GAA8D,IAAI,CAAC;IACzE,QAAQ,GAAuC,IAAI,CAAC;IAC5D,4FAA4F;IAC5F,+FAA+F;IACvF,UAAU,GAAG,CAAC,CAAC;IAEvB,SAAS;QACP,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI;YACrC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,IAAI;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACH,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,sEAAsE;QACzF,IAAI,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,OAAoB;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,+CAA+C,OAAO,CAAC,gBAAgB,IAAI,SAAS,cAAc,OAAO,CAAC,WAAW,IAAI,SAAS,GAAG,CAAC,CAAC;YAClJ,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;aAClC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;aACnD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,sFAAsF;YACtF,6DAA6D;YAC7D,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC9E,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACpD,CAAC,CAAC,CAAC;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACK,KAAK,CAAC,kBAAkB,CAAC,OAA2B;QAC1D,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE,CAAC;YAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,CAAC;YAClC,IAAI,CAAC,WAAW,IAAI,OAAO,EAAE,KAAK,KAAK,WAAW;gBAAE,OAAO,OAAO,CAAC;YAEnE,MAAM,iBAAiB,GACrB,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;YACpF,MAAM,kBAAkB,GACtB,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,MAAM,qBAAqB,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,iBAAiB,IAAI,CAAC,kBAAkB;gBAAE,OAAO,OAAO,CAAC;YAE9D,GAAG,CAAC,IAAI,CACN,uBAAuB,OAAO,EAAE,KAAK,IAAI,QAAQ,4CAA4C,WAAW,GAAG,CAC5G,CAAC;YACF,KAAK,qBAAqB,CAAC,yBAAyB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAqB,CAAC,CAAC,CAAC;YAC1F,OAAO;gBACL,KAAK,EAAE,WAAW;gBAClB,uFAAuF;gBACvF,uFAAuF;gBACvF,sBAAsB;gBACtB,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS;gBACvE,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,YAAY;aAClD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,CAAC,sDAAsD;QACxE,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,cAAc;QAC1B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,aAAa,GAAkC;YACnD,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpB,OAAO;oBACL,IAAI;wBACF,OAAO,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;4BACtC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gCAC/C,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;4BACzC,CAAC,CAAC,CAAC;wBACL,CAAC,CAAC,CAAC;oBACL,CAAC;iBACF,CAAC;YACJ,CAAC;SACF,CAAC;QAEF,MAAM,CAAC,GAAG,KAAK,CAAC;YACd,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE;gBACjB,eAAe,EAAE,UAAU;gBAC3B,sBAAsB,EAAE,KAAK;aAC9B;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,+EAA+E;YAC/E,+EAA+E;YAC/E,gFAAgF;YAChF,+EAA+E;YAC/E,4EAA4E;YAC5E,oFAAoF;YACpF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC;YAC5C,0FAA0F;YAC1F,8FAA8F;YAC9F,wFAAwF;YACxF,4FAA4F;YAC5F,+FAA+F;YAC/F,0DAA0D;YAC1D,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YAC5C,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|