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
|
@@ -19,6 +19,7 @@ Claude's responses stream in real-time, character by character. You'll see:
|
|
|
19
19
|
- **Timestamps** — Each message shows a relative timestamp (e.g., "2 hours ago")
|
|
20
20
|
- **Copy button** — Click the copy icon on any message to copy its content to the clipboard
|
|
21
21
|
- **Scroll to bottom** — When scrolled up, a down-arrow button appears to jump back to the latest message
|
|
22
|
+
- **Turn grouping** — When one response arrives as several fragments (text, tool calls, more text), the fragments are grouped tightly together as a single turn instead of rendering as widely-spaced separate messages
|
|
22
23
|
|
|
23
24
|
### 2.3 Markdown & Code Blocks
|
|
24
25
|
|
|
@@ -45,18 +46,25 @@ Messages support full GitHub-flavored markdown:
|
|
|
45
46
|
- Copy button (top-right corner)
|
|
46
47
|
- File reference links that open directly in the editor
|
|
47
48
|
|
|
48
|
-
|
|
49
|
+
**Mermaid diagrams:**
|
|
50
|
+
- Code blocks tagged `mermaid` get a **"View diagram"** button in the block header
|
|
51
|
+
- Clicking it renders the diagram in a fullscreen viewer with zoom controls (25%–400%), a fit-reset button, and `Escape` / X to close
|
|
52
|
+
- The diagram engine loads on demand the first time you open a diagram, so it adds nothing to normal page loads
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
### 2.4 Attachments (Images & PDFs)
|
|
55
|
+
|
|
56
|
+
Attach images or PDF documents to your messages for Claude to analyze:
|
|
51
57
|
|
|
52
58
|
- Click the attachment button (paperclip icon) in the input area
|
|
53
|
-
- Drag and drop
|
|
59
|
+
- Drag and drop files directly onto the input area
|
|
54
60
|
- Paste from clipboard (`Ctrl+V` / `Cmd+V`)
|
|
55
|
-
- Supported formats: PNG, JPEG, GIF, WebP
|
|
56
|
-
-
|
|
57
|
-
-
|
|
61
|
+
- Supported formats: PNG, JPEG, GIF, WebP images and PDF documents
|
|
62
|
+
- Limits: **5 attachments per message** (images and PDFs combined), 10MB per image, 20MB per PDF, and 20MB combined per message
|
|
63
|
+
- Attachments preview in the input area before sending — images as thumbnails, PDFs as a file chip with name and size
|
|
58
64
|
- Sent images display as clickable thumbnails above the message text. Clicking a thumbnail opens the full image viewer with multi-image navigation (see §6.4)
|
|
65
|
+
- Sent PDFs display as a file chip (icon + filename). The chip is informational only — it is not yet clickable
|
|
59
66
|
- Image attachments work with both conversation engines (SDK and CLI). With the CLI engine the image is passed to Claude by file reference instead of being embedded inline, but you attach it exactly the same way — the model still sees it
|
|
67
|
+
- **PDF attachments require the SDK engine.** On the CLI engine, sending a message with a PDF attached is rejected with an error — remove the PDF or switch engines (see §13.17)
|
|
60
68
|
|
|
61
69
|
### 2.5 Tool Call Visualization
|
|
62
70
|
|
|
@@ -125,7 +133,7 @@ Monitor token usage in real-time:
|
|
|
125
133
|
- **Usage donut** — Visual indicator showing used/limit tokens and percentage
|
|
126
134
|
- **Cost display** — Estimated cost for the session
|
|
127
135
|
- **Cache tokens** — Cache creation and read token counts
|
|
128
|
-
- **Rate limit dots** — 5h/7d utilization indicators in the input area
|
|
136
|
+
- **Rate limit dots** — 5h/7d utilization indicators in the input area. When a subscription window is fully used and extra-usage credits are enabled, the indicator alternates every few seconds with your remaining **credit balance** (see §13.14)
|
|
129
137
|
- **Color thresholds** — Green (normal), Yellow (moderate), Red (high usage)
|
|
130
138
|
- **Context compaction** — Click the usage donut to trigger compaction, which summarizes the conversation to free up context space. At critical usage levels, clicking instead creates a new session
|
|
131
139
|
- **Auto-compact on overflow** — When message history hits the context window limit, Hammoc automatically compacts the context and retries the message instead of losing the session. A master switch in Advanced Settings (see §13.18) lets you disable auto-compaction entirely and manage compaction manually instead
|
|
@@ -145,6 +153,7 @@ Navigate through your previous inputs:
|
|
|
145
153
|
- Press `↑` (Up arrow) to recall the previous prompt
|
|
146
154
|
- Press `↓` (Down arrow) to go forward
|
|
147
155
|
- History is per-session
|
|
156
|
+
- **On touch devices** — Swipe up on the empty input field to open the prompt history list above it. Tap an entry to fill the input (it is not sent automatically). Dismiss by tapping the input again, the ✕ button in the list header, tapping outside, or just starting to type
|
|
148
157
|
|
|
149
158
|
### 2.13 Voice Input (Speech Recognition)
|
|
150
159
|
|
|
@@ -170,11 +179,11 @@ When Claude uses extended thinking, the reasoning is shown in a collapsible bloc
|
|
|
170
179
|
|
|
171
180
|
The model selector button is located in the chat input toolbar. It displays the current model family name (e.g., "Opus", "Sonnet", "Haiku") directly on the button. When using the default model, it shows "Default". Click to open a dropdown for choosing a different model and adjusting thinking effort.
|
|
172
181
|
|
|
173
|
-
**1M context window** — For models that support a 1-million-token context window
|
|
182
|
+
**1M context window** — For models that support a 1-million-token context window, a **"1M context"** toggle appears near the top of the dropdown:
|
|
174
183
|
|
|
175
|
-
- **Opus** — Locked on.
|
|
176
|
-
- **Sonnet**
|
|
177
|
-
- **Fable 5** —
|
|
184
|
+
- **Opus 4.8 / Sonnet 5** — Locked on. Their 1M window is included with your Max subscription at no extra cost, so it is always engaged and cannot be switched off (the toggle shows "Included with Max").
|
|
185
|
+
- **Sonnet 4.6** — Off by default. Its 1M window bills to usage credits rather than your subscription, so you opt in explicitly. The toggle shows a "Requires usage credits" hint that turns amber once enabled. Left off, Sonnet 4.6 runs at the standard 200K context window. The bare **Sonnet** alias follows the same opt-in rule, since it may resolve to a version whose 1M window is credit-billed.
|
|
186
|
+
- **Fable 5** — No toggle at all. Mythos-class models always run at 1M; their billing is per-model (usage credits, see §13.3), not per-window, so there is nothing to opt into.
|
|
178
187
|
|
|
179
188
|
The toggle only appears for 1M-capable models; every other model uses its native context window and shows no toggle.
|
|
180
189
|
|
|
@@ -183,8 +192,8 @@ The toggle only appears for 1M-capable models; every other model uses its native
|
|
|
183
192
|
Control how much Claude "thinks" before responding. The intensity bar appears inside the model selector dropdown. The number of bars depends on the selected model:
|
|
184
193
|
|
|
185
194
|
- **Low / Medium / High** — 3 levels, available for all models
|
|
186
|
-
- **Max** — 4th level, added for Opus 4.6 / Sonnet 4.6
|
|
187
|
-
- **XHigh** — 5th level, added for **Opus 4.7
|
|
195
|
+
- **Max** — 4th level, added for Opus 4.6 / Sonnet 4.6 / Sonnet 5
|
|
196
|
+
- **XHigh** — 5th level, added for **Opus 4.7+**, **Sonnet 5**, and **Fable 5** (the default effort for Opus 4.7+ and Fable 5 is XHigh; Sonnet 5 defaults to High)
|
|
188
197
|
|
|
189
198
|
Behavior:
|
|
190
199
|
|
|
@@ -302,3 +311,11 @@ When Claude launches background tasks (e.g., background `Agent` sub-tasks), an a
|
|
|
302
311
|
|
|
303
312
|
The card disappears automatically once all background tasks complete.
|
|
304
313
|
|
|
314
|
+
### 2.26 Input Drafts
|
|
315
|
+
|
|
316
|
+
Text you type in the chat input but haven't sent is kept as a per-session draft:
|
|
317
|
+
|
|
318
|
+
- Switching to another session, navigating to other tabs, or closing the browser does not lose it — the draft is restored when you return to that session
|
|
319
|
+
- The draft is cleared the moment the message is sent
|
|
320
|
+
- Only text is kept; attachments are not part of the draft
|
|
321
|
+
|
|
@@ -15,7 +15,7 @@ Access the session list via the sidebar or quick panel:
|
|
|
15
15
|
- **Pending question indicator** — Cyan pulsing dot with "Awaiting selection" badge when a session has an active `AskUserQuestion` waiting for user input. Appears alongside the session entry so you can spot sessions that need attention without opening each one
|
|
16
16
|
- **Queue badge** — Shown when queue runner is active on the session
|
|
17
17
|
- **Early visibility** — New sessions appear in the list as soon as a message is sent, with no brief delay
|
|
18
|
-
- **Active session promotion** — When a session starts streaming, it jumps to the top of the list
|
|
18
|
+
- **Active session promotion** — When a session starts streaming, it jumps to the top of the list and its relative timestamp stays current for the whole turn (it no longer shows the previous turn's time while streaming). Project cards on the project list follow the same live ordering
|
|
19
19
|
- Empty sessions are hidden by default (toggle with the eye icon)
|
|
20
20
|
|
|
21
21
|
### 3.2 Creating a New Session
|
|
@@ -35,9 +35,11 @@ Two distinct search modes:
|
|
|
35
35
|
### 3.4 Session Operations
|
|
36
36
|
|
|
37
37
|
- **Rename** — Click the edit icon next to the session name
|
|
38
|
+
- **Export** — Download the session as a Markdown file from the row's kebab menu (see §3.6)
|
|
38
39
|
- **Delete** — Remove a session (with confirmation)
|
|
39
40
|
- **Selection mode** — Select multiple sessions for batch delete
|
|
40
41
|
- **Delete empty sessions** — Bulk-delete all empty sessions at once
|
|
42
|
+
- **Streaming guard** — A session that is currently streaming cannot be deleted: its delete action is disabled with a "Cannot delete while streaming" hint, and batch deletion skips streaming sessions
|
|
41
43
|
|
|
42
44
|
### 3.5 Quick Session Panel
|
|
43
45
|
|
|
@@ -47,5 +49,24 @@ Access sessions without leaving the chat:
|
|
|
47
49
|
- Switch between sessions instantly
|
|
48
50
|
- See session previews and status
|
|
49
51
|
- **Side toggle** — Move the panel to the left or right side using the button in the panel header
|
|
52
|
+
- **Open in full tab** — A maximize button in the panel header jumps to the corresponding full project tab. All four quick panels (Sessions, Files, Git, Terminal) share this button
|
|
50
53
|
- **Mobile swipe** — Swipe inward from the screen edge to open, swipe back toward the edge to close
|
|
51
54
|
|
|
55
|
+
### 3.6 Session Export (Markdown)
|
|
56
|
+
|
|
57
|
+
Download an entire conversation as a single Markdown file:
|
|
58
|
+
|
|
59
|
+
- **From the chat header** — Click the download icon (desktop); on mobile it lives in the header's ⋮ overflow menu
|
|
60
|
+
- **From the session list** — Open a session row's kebab menu (⋮) and choose **Export**
|
|
61
|
+
|
|
62
|
+
Export is a one-click browser download with no options dialog. The file is named after the session name (or the session ID if unnamed), with unsafe characters sanitized.
|
|
63
|
+
|
|
64
|
+
**What the file contains:**
|
|
65
|
+
|
|
66
|
+
- A header with the session title, session ID, project, export time, and message count
|
|
67
|
+
- Every user and assistant message, including **all conversation branches** — fork points are marked with `━━━ Branch N/M ━━━` dividers and the latest branch is labeled
|
|
68
|
+
- Thinking blocks and tool results wrapped in collapsible `<details>` sections; tool calls listed with their input parameters
|
|
69
|
+
- Compaction boundaries and background-task notifications as compact markers
|
|
70
|
+
|
|
71
|
+
Image and PDF attachments are noted by count only — binary content is not embedded.
|
|
72
|
+
|
|
@@ -59,7 +59,7 @@ Prompt snippets are reusable prompt templates stored as files. Invoke them with
|
|
|
59
59
|
|
|
60
60
|
1. **Project snippets** — `.hammoc/snippets/` in the project directory
|
|
61
61
|
2. **Global snippets** — `~/.hammoc/snippets/`
|
|
62
|
-
3. **Bundled snippets** — Built-in snippets shipped with Hammoc (~
|
|
62
|
+
3. **Bundled snippets** — Built-in snippets shipped with Hammoc (~30 standard snippets)
|
|
63
63
|
|
|
64
64
|
If the same snippet name exists in multiple tiers, the highest-priority source is used. You can override bundled snippets by placing a file with the same name in your project or global snippets directory.
|
|
65
65
|
|
|
@@ -75,6 +75,7 @@ If the same snippet name exists in multiple tiers, the highest-priority source i
|
|
|
75
75
|
- Architecture: `create-backend-arch`, `create-frontend-arch`, `create-fullstack-arch`, `create-frontend-spec`
|
|
76
76
|
- Stories: `develop-story`, `draft-story`, `brownfield-create-story`, `brownfield-create-epic`
|
|
77
77
|
- QA: `qa-review`, `validate-story`
|
|
78
|
+
- Harness lint fixes: `fix-lint-duplicate-name`, `fix-lint-regex-invalid`, `fix-lint-yaml-parse-error`, `fix-lint-command-not-on-path`, `fix-lint-url-invalid`, `fix-lint-tools-non-standard`, `fix-lint-env-var-undefined`, `fix-malformed-skill` — used by the workbench's inline lint **Fix** buttons (see §12.12)
|
|
78
79
|
|
|
79
80
|
### 4.7 Snippet Autocomplete
|
|
80
81
|
|
|
@@ -12,6 +12,7 @@ Each project card displays:
|
|
|
12
12
|
- **Last modified** — When the project was last active
|
|
13
13
|
- **BMad badge** — Indicates BMAD-METHOD enabled projects
|
|
14
14
|
- **Status indicators** — Active sessions (green dot), pending question count (cyan dot), queue status badge, terminal count (updates in real-time)
|
|
15
|
+
- **Live ordering** — Cards sort by latest activity; a project whose session starts streaming moves to the top and its timestamp stays current during the stream
|
|
15
16
|
|
|
16
17
|
Each card has a **kebab menu** (⋮) with:
|
|
17
18
|
|
|
@@ -44,7 +44,7 @@ Click any text file to open it in the built-in editor:
|
|
|
44
44
|
- **Close** — `Escape` key or the X button
|
|
45
45
|
- **Unsaved changes warning** — Confirmation dialog prevents accidental data loss
|
|
46
46
|
- **File size limit** — Files over 1MB are truncated and read-only
|
|
47
|
-
- **Binary files** — When a binary file is opened (
|
|
47
|
+
- **Binary files** — When a binary file is opened (executables, archives, etc.), the editor body shows the file's human-readable size (e.g., `104 B`, `5.0 MB`) together with a **Download** button for direct download. Images open in the image viewer (§6.4) and PDFs in the PDF viewer (§6.6) instead
|
|
48
48
|
|
|
49
49
|
**External change detection**
|
|
50
50
|
|
|
@@ -55,7 +55,7 @@ The server watches open files and pushes a notification if the file changes on d
|
|
|
55
55
|
- **File deleted on disk** — Red banner with a **Dismiss** button (no reload is possible)
|
|
56
56
|
- **Stale-write conflict** — If you try to save a file that was modified on disk since you opened it, the save is rejected and a red banner offers **Reload** (discard your edits) or **Overwrite** (force-save over the external changes)
|
|
57
57
|
|
|
58
|
-
### 6.3 Markdown Preview
|
|
58
|
+
### 6.3 Markdown & HTML Preview
|
|
59
59
|
|
|
60
60
|
For `.md` files:
|
|
61
61
|
|
|
@@ -63,6 +63,13 @@ For `.md` files:
|
|
|
63
63
|
- Preview renders full markdown with styles
|
|
64
64
|
- Default mode (Edit or Preview) configurable in settings
|
|
65
65
|
|
|
66
|
+
For `.html` / `.htm` files:
|
|
67
|
+
|
|
68
|
+
- The same **Edit / Preview** header toggle is available
|
|
69
|
+
- HTML files always open in **Preview** first (the markdown default-mode setting does not apply to them)
|
|
70
|
+
- The preview runs in a sandboxed frame isolated from the app; external resources (fonts, CDN scripts, images) are allowed so the page renders as intended
|
|
71
|
+
- Links open in a new browser tab instead of navigating inside the preview frame
|
|
72
|
+
|
|
66
73
|
### 6.4 Image Viewer
|
|
67
74
|
|
|
68
75
|
Click any image file to open the viewer in a fullscreen overlay:
|
|
@@ -87,4 +94,16 @@ Access files without leaving the chat:
|
|
|
87
94
|
- **Recently opened** files appear at the top (max 5 per session)
|
|
88
95
|
- Search and navigate the file tree
|
|
89
96
|
- Click to open in the editor overlay
|
|
97
|
+
- **Open in full tab** — The maximize button in the panel header jumps to the full Files tab (see §3.5)
|
|
98
|
+
|
|
99
|
+
### 6.6 PDF Viewer
|
|
100
|
+
|
|
101
|
+
Click any `.pdf` file — in the file explorer, the quick file panel, or search results — to open it in a fullscreen PDF viewer:
|
|
102
|
+
|
|
103
|
+
- **Page navigation** — Previous / Next buttons or the `←` / `→` arrow keys, with the current page and total count shown in the header
|
|
104
|
+
- **Zoom** — In / Out buttons from 25% to 400%; at 100% the page fits the viewer width
|
|
105
|
+
- **Download** — Download the original file
|
|
106
|
+
- **Close** — `Escape` key or the X button
|
|
107
|
+
|
|
108
|
+
PDFs render in-app with no browser plugin. (Previously PDFs fell through to the generic binary-file view with only a size readout and Download button.)
|
|
90
109
|
|
|
@@ -63,7 +63,7 @@ Lightweight Git access from the quick panel side bar:
|
|
|
63
63
|
- **"Stage All & Commit"** — Single green button that automatically stages all unstaged/untracked files and commits in one action
|
|
64
64
|
- **Success message** — Displayed briefly after a successful commit
|
|
65
65
|
- **Recent commits** — Shows only the 3 most recent commits (hash, timestamp, message)
|
|
66
|
-
- **
|
|
66
|
+
- **Open in full tab** — The maximize button in the panel header navigates to the full Git tab for advanced operations (replaces the old "View in Git Tab" footer link)
|
|
67
67
|
- **Git init support** — If the project is not a Git repository, shows an init button
|
|
68
68
|
|
|
69
69
|
### 7.8 Diff Viewer
|
|
@@ -56,7 +56,7 @@ Lightweight terminal access from the quick panel side bar:
|
|
|
56
56
|
|
|
57
57
|
- **Multi-terminal support** — Same tab management as the full Terminal tab (create, switch, close, max 5)
|
|
58
58
|
- **Font size controls** — Minus, size display (click to reset), Plus buttons in the header
|
|
59
|
-
- **
|
|
59
|
+
- **Open in full tab** — The maximize button in the panel header navigates to the full Terminal tab (replaces the old "Open in Tab" link)
|
|
60
60
|
- **Tab keyboard navigation** — ArrowLeft/Right to switch, Delete to close
|
|
61
61
|
- **Security warning** — Same access denied warning when terminal access is restricted
|
|
62
62
|
|
|
@@ -6,7 +6,7 @@ The same Settings tab also hosts four sibling harness-engineering panels next to
|
|
|
6
6
|
|
|
7
7
|
### 12.1 Layout
|
|
8
8
|
|
|
9
|
-
The workbench has two stacked headers above
|
|
9
|
+
The workbench has two stacked headers above a nine-section navigator:
|
|
10
10
|
|
|
11
11
|
- **Mode banner** — Workbench-wide; explains whether the project's `.claude/` is git-tracked or ignored (see §12.2)
|
|
12
12
|
- **Lint preferences button** — Top-right; opens a dialog to toggle the seven static-lint rules (see §12.12)
|
|
@@ -20,7 +20,8 @@ The section navigator is a vertical sidebar on desktop and a horizontally-scroll
|
|
|
20
20
|
5. **Commands** — Slash command files (see §12.8)
|
|
21
21
|
6. **Agents** — Sub-agent definitions (see §12.9)
|
|
22
22
|
7. **CLAUDE.md** — Project and global instruction documents (see §12.10)
|
|
23
|
-
8. **Snippets** — Hammoc `%snippet` library
|
|
23
|
+
8. **Snippets** — Hammoc `%snippet` library (see §12.11)
|
|
24
|
+
9. **Favorites** — Slash-command favorites with scope management (see §12.20)
|
|
24
25
|
|
|
25
26
|
When the workbench loads, every section's data is fetched in parallel and cached, so switching between sections feels instant. Each section's data also stays in sync with disk: any external change (made outside Hammoc) updates the corresponding card without a reload.
|
|
26
27
|
|
|
@@ -39,9 +40,9 @@ The banner is derived from the project root's `.gitignore`. Edit the rules and t
|
|
|
39
40
|
|
|
40
41
|
Every editable card (skill, MCP, hook, command, agent, `CLAUDE.md`, snippet) shows a small **share badge** indicating that specific file's git scope:
|
|
41
42
|
|
|
42
|
-
- **Shared** (blue) — File tracked by git; team will see your edits after a commit
|
|
43
43
|
- **Local** (gray) — File exists but is not tracked
|
|
44
44
|
- **Ignored** (amber) — `.claude/` is fully git-excluded; this file will not be committed
|
|
45
|
+
- Git-tracked files show **no badge** — shared-in-repo is the normal state, so only the exceptions are flagged. (Earlier versions put a blue "Shared" badge on every tracked file; that badge has been retired as noise)
|
|
45
46
|
|
|
46
47
|
The badge is computed per-file so a single project can mix shared and local items.
|
|
47
48
|
|
|
@@ -119,11 +120,9 @@ Each column is a CodeMirror Markdown editor with edit/preview toggle and the sam
|
|
|
119
120
|
|
|
120
121
|
Both files load into every Claude Code session in this project; the project version takes precedence when an instruction is defined in both.
|
|
121
122
|
|
|
122
|
-
### 12.11 Snippets
|
|
123
|
+
### 12.11 Snippets Panel
|
|
123
124
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
**Snippets section** (top):
|
|
125
|
+
Manages Hammoc-native `%name` snippets. (Slash-command favorites moved to their own panel — see §12.20.)
|
|
127
126
|
|
|
128
127
|
- Manages `%name` snippets from `<project-root>/.hammoc/snippets/`, `~/.hammoc/snippets/`, and the bundled set shipped with Hammoc (see §4.6)
|
|
129
128
|
- **Scope filter** — All / Project / Global / Bundled
|
|
@@ -132,20 +131,15 @@ A single panel manages both Hammoc-native snippets and Claude Code slash-command
|
|
|
132
131
|
- **Kebab menu** — Copy to the other scope, delete (with confirmation)
|
|
133
132
|
- **Bundled snippets** are read-only — copy to Project or Global scope first to customize
|
|
134
133
|
|
|
135
|
-
**Command Favorites section** (bottom):
|
|
136
|
-
|
|
137
|
-
- Drag-reorder list of slash command favorites (the same favorites shown in the chat input's favorites bar, see §4.3)
|
|
138
|
-
- Each entry shows the command name, scope, and a star toggle that moves it between regular and star favorites
|
|
139
|
-
- **Invalid chip** marker on favorites whose underlying command no longer exists on disk
|
|
140
|
-
- Up to 20 regular + 10 star favorites per scope
|
|
141
|
-
|
|
142
134
|
### 12.12 Static Lint
|
|
143
135
|
|
|
144
136
|
Every harness panel (skills, MCP, hooks, commands, agents) runs a background static-lint pass against its files. Lint output surfaces in three places:
|
|
145
137
|
|
|
146
138
|
- **Count badges on section nav** — A red dot with the error count and an amber dot with the warning count appear on the section tab when issues exist
|
|
147
139
|
- **Inline marker on cards** — The card header shows a small red or amber pill with the issue count; clicking jumps to the card detail or opens the editor
|
|
148
|
-
- **Issues list at the top of each panel** — Expandable list of every issue with file path, severity, message
|
|
140
|
+
- **Issues list at the top of each panel** — Expandable list of every issue with file path, severity, and message. Each row carries two actions: **Go to file** and **Fix** (see below)
|
|
141
|
+
|
|
142
|
+
**Inline Fix with Claude:** Every lint issue row has a **Fix** button (labeled **Override & Fix** for plugin-provided files, since the fix is applied to an editable copy). Clicking it opens a new chat session pre-loaded with a bundled fix snippet matched to that rule (see §4.6), so Claude repairs the file for you. **Go to file** jumps to the card, or opens the raw file in the editor when no card exists. This also covers **malformed files**: a skill/command/agent whose frontmatter cannot be parsed may not render a card at all, but its lint row still offers both actions — Go to file opens the broken `.md` directly, and Fix launches the repair session with the file's path. Available in all five domains (skills, MCP, hooks, commands, agents).
|
|
149
143
|
|
|
150
144
|
**Rule preferences:** The **Lint preferences** button at the top-right of the workbench opens a dialog listing all seven rules. Each rule has an on/off toggle plus a description, and a **Restore defaults** button reverts the preferences. Preferences are stored globally (not per-project).
|
|
151
145
|
|
|
@@ -153,7 +147,7 @@ Every harness panel (skills, MCP, hooks, commands, agents) runs a background sta
|
|
|
153
147
|
|
|
154
148
|
| Rule | Default | Catches |
|
|
155
149
|
|------|---------|---------|
|
|
156
|
-
| `naming/duplicate-across-sources` | on | The same name
|
|
150
|
+
| `naming/duplicate-across-sources` | on | The same name is declared twice within one scope (e.g. an MCP server in both `.mcp.json` and `.claude/.mcp.json`), so one copy silently wins. Same names across different scopes are normal precedence and are not flagged — the active scope is shown on the card badges |
|
|
157
151
|
| `hook/matcher-regex-invalid` | on | Hook `matcher` regex won't compile |
|
|
158
152
|
| `parse/yaml-json-error` | on | Frontmatter or JSON config can't be parsed |
|
|
159
153
|
| `mcp/command-not-on-path` | off | MCP `stdio` command is not on the server's `PATH` |
|
|
@@ -254,3 +248,14 @@ The **Marketplace** panel lets you discover Claude Code plugins from the marketp
|
|
|
254
248
|
- **Auto-refresh** — After you install or remove a plugin in your CLI session, Hammoc detects the on-disk change and updates both this catalog's **Installed** badges and the Plugins panel cards automatically.
|
|
255
249
|
- **Resilience** — If one marketplace's catalog file can't be read, only that marketplace shows an error badge and the rest still load. If the installed-plugins file is in an unrecognized format, a warning banner notes that installed state may be incomplete.
|
|
256
250
|
|
|
251
|
+
### 12.20 Command Favorites Panel
|
|
252
|
+
|
|
253
|
+
A dedicated workbench section for the slash-command favorites shown in the chat input's favorites bar (see §4.3):
|
|
254
|
+
|
|
255
|
+
- **Scope filter** — All / Project / Global tabs
|
|
256
|
+
- **Scope badges** — Each favorite shows where its command actually lives: **Project** (only in this project) or **Global** (available in every project — user-global, plugin-provided, and built-in commands all count as Global). The scope is derived from the command's real source at render time and cannot be set manually; the old manual scope picker is gone
|
|
257
|
+
- **Add favorite** — A star button opens a dialog listing every available `/slash` command not yet favorited; pick one to add it
|
|
258
|
+
- **Drag-reorder** — Drag the grip handle (arrow buttons on mobile) to rearrange
|
|
259
|
+
- **"Not found" marker** — Favorites whose underlying command no longer exists in the current project are flagged; they can be removed but not used
|
|
260
|
+
- Up to **20 favorites** total
|
|
261
|
+
|
|
@@ -39,8 +39,11 @@ Choose the default Claude model:
|
|
|
39
39
|
- **Opus** — Latest Opus
|
|
40
40
|
- **Haiku** — Latest Haiku
|
|
41
41
|
|
|
42
|
-
**Mythos-class
|
|
43
|
-
- Fable 5 (1M
|
|
42
|
+
**Mythos-class** (hidden unless credit-only models are allowed — see below):
|
|
43
|
+
- Fable 5 (always 1M, bills to usage credits)
|
|
44
|
+
|
|
45
|
+
**Claude 5:**
|
|
46
|
+
- Sonnet 5 (1M context)
|
|
44
47
|
|
|
45
48
|
**Claude 4.x:**
|
|
46
49
|
- Opus 4.8 (most capable, 1M context), 4.7, 4.6, 4.5, 4.1, 4
|
|
@@ -52,7 +55,9 @@ Choose the default Claude model:
|
|
|
52
55
|
- Haiku 3.5
|
|
53
56
|
- Opus 3, Sonnet 3, Haiku 3
|
|
54
57
|
|
|
55
|
-
> **1M context window**: Opus 4.8 always
|
|
58
|
+
> **1M context window**: Opus 4.8 and Sonnet 5 always run with their 1M window (included with Max). Sonnet 4.6's 1M window is **opt-in** and bills to usage credits — enable it per session with the "1M context" toggle in the model selector (see §2.15). Left off, Sonnet 4.6 uses a 200K window. Fable 5 always runs at 1M; its billing is per-model, not per-window.
|
|
59
|
+
|
|
60
|
+
**Allow credit-only models** — A separate checkbox in Global settings, **off by default**. Mythos-class models (e.g., Fable 5) bill to Anthropic usage credits instead of your subscription, so they are hidden from every model picker until you enable this. Once enabled, credit-only models appear in the pickers with an amber **Credit** badge and amber label text; selecting one requires no further confirmation — the badge is the cost signal. Your credit balance is visible under Settings > Claude Account (see §13.14).
|
|
56
61
|
|
|
57
62
|
Can be overridden per-project (see §5.3).
|
|
58
63
|
|
|
@@ -116,8 +121,8 @@ The timeout resets on every activity, and it only guards Claude's own generation
|
|
|
116
121
|
Set the default thinking effort for new sessions:
|
|
117
122
|
|
|
118
123
|
- **SDK Default** / Low / Medium / High / XHigh / Max
|
|
119
|
-
- Max is available on Opus 4.6, Sonnet 4.6, Opus 4.7,
|
|
120
|
-
- XHigh is available on Opus 4.7 and
|
|
124
|
+
- Max is available on Opus 4.6, Sonnet 4.6, Opus 4.7, Opus 4.8, and Sonnet 5
|
|
125
|
+
- XHigh is available on Opus 4.7+, Sonnet 5, and Fable 5 (and is the SDK default for Opus 4.7+ and Fable 5)
|
|
121
126
|
- If the active model does not support the configured level, it falls back to High automatically — the saved preference is kept, only the request to the SDK is clamped
|
|
122
127
|
- The chosen level is preserved while the active model is still resolving (no flicker back to Default during project switches)
|
|
123
128
|
|
|
@@ -192,7 +197,9 @@ Shows the Claude Code account that Hammoc is using, plus live subscription usage
|
|
|
192
197
|
**Active account info:**
|
|
193
198
|
|
|
194
199
|
- **Account info** — Email, Subscription plan, Provider (e.g., Claude API / Claude.ai), Organization (if applicable), and the timestamp of the last fetch
|
|
195
|
-
- **Usage bars** —
|
|
200
|
+
- **Usage bars** — Progress bars showing consumption of the **5-hour window** and **7-day window** quotas, with color thresholds (green / yellow / red at 50% / 80%) and reset times. Plans with per-model weekly quotas show an additional bar per capped model (e.g., "7-day window (Fable)") — these extra bars appear only here, never in the input-area status dots
|
|
201
|
+
- **Extra usage credits** — When the account has usage credits, a credit section (laid out after claude.ai's billing page) appears below the usage bars showing **Spent this month** (as a progress bar when a monthly limit is set), the **Monthly spending limit**, and the **Current balance**. A negative balance (overdraft) is shown in red — it is a valid state, not an error. If extra usage is turned off or exhausted, an amber notice says so
|
|
202
|
+
- **Rate-limit notice** — If usage lookups get throttled by the API (for example after rapid account switching), an amber note replaces the bars and states when checks resume automatically
|
|
196
203
|
- **Refresh** — Manually fetch the latest account info and usage from the API (spinner shown while refreshing). Toast confirms success or failure
|
|
197
204
|
- **Sign out** — Log out of the active Claude account
|
|
198
205
|
- If no data has been fetched yet, a helper line explains that account info fills in automatically after the first chat or after clicking Refresh
|
|
@@ -315,3 +322,12 @@ Displays app information:
|
|
|
315
322
|
- **Server version**
|
|
316
323
|
- **Server time** — Localized timestamp
|
|
317
324
|
|
|
325
|
+
### 13.21 Resident Engine (SDK)
|
|
326
|
+
|
|
327
|
+
With the SDK engine, Hammoc keeps recently used chat sessions "warm" between turns so a follow-up message starts instantly instead of paying an engine cold-start. Two Global settings bound this:
|
|
328
|
+
|
|
329
|
+
- **Resident Engine Limit** — How many sessions stay warm at once: 4 / **8 (default)** / 16 / 32 / 64. Beyond the limit, the least-recently-used session is retired; your next message to it restarts the engine (about 3 seconds) with no loss of history
|
|
330
|
+
- **Resident Engine Idle Timeout** — How long an idle session stays warm before being retired to free resources: 5 / **10 (default)** / 30 / 60 minutes
|
|
331
|
+
|
|
332
|
+
Turns in progress are never affected — retirement only happens between turns. Both settings are ignored by the CLI engine.
|
|
333
|
+
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
| `Shift+Enter` | New line in message |
|
|
9
9
|
| `ESC` | Abort generation / close command palette |
|
|
10
10
|
| `Ctrl+C` | Abort generation (only when no text is selected; otherwise copies) |
|
|
11
|
-
| `↑` / `↓` | Navigate prompt history (when cursor is at start/end of input) |
|
|
11
|
+
| `↑` / `↓` | Navigate prompt history (when cursor is at start/end of input; on touch devices, swipe up on the empty input instead) |
|
|
12
12
|
| `/` | Open slash command palette (auto-triggered when input starts with `/`) |
|
|
13
13
|
| `*` | Open star command palette (auto-triggered when input starts with `*`, requires active agent) |
|
|
14
14
|
| `%` | Open snippet autocomplete palette (auto-triggered when input starts with `%`) |
|
|
@@ -56,6 +56,13 @@ Note: Quick panel shortcuts are disabled when an input or textarea is focused.
|
|
|
56
56
|
| `←` / `→` | Previous / next image (when multiple images form a set) |
|
|
57
57
|
| `ESC` | Close image viewer |
|
|
58
58
|
|
|
59
|
+
### PDF Viewer
|
|
60
|
+
|
|
61
|
+
| Shortcut | Action |
|
|
62
|
+
|----------|--------|
|
|
63
|
+
| `←` / `→` | Previous / next page |
|
|
64
|
+
| `ESC` | Close PDF viewer |
|
|
65
|
+
|
|
59
66
|
### Terminal
|
|
60
67
|
|
|
61
68
|
| Shortcut | Action |
|
|
@@ -3,4 +3,6 @@
|
|
|
3
3
|
* Story 25.4: Server — Branch-aware Message Pagination
|
|
4
4
|
*/
|
|
5
5
|
export declare const ROOT_BRANCH_KEY: "__root__";
|
|
6
|
+
export declare const COMPACT_MESSAGE_PREFIX = "This session is being continued from a previous conversation";
|
|
7
|
+
export declare const COMPACT_COMMAND_ECHO = "/compact";
|
|
6
8
|
//# sourceMappingURL=messageTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageTree.d.ts","sourceRoot":"","sources":["../../src/constants/messageTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,eAAe,EAAG,UAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"messageTree.d.ts","sourceRoot":"","sources":["../../src/constants/messageTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,eAAe,EAAG,UAAmB,CAAC;AAKnD,eAAO,MAAM,sBAAsB,iEAAiE,CAAC;AAGrG,eAAO,MAAM,oBAAoB,aAAa,CAAC"}
|
|
@@ -4,4 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
// Special key for root-level branch selection (multi-root from compact_boundary)
|
|
6
6
|
export const ROOT_BRANCH_KEY = '__root__';
|
|
7
|
+
// Prefix of the SDK-generated compact summary echo user message. The chat view
|
|
8
|
+
// hides messages starting with this prefix (the compact_boundary divider already
|
|
9
|
+
// conveys the compaction), so they cannot carry branch pagination.
|
|
10
|
+
export const COMPACT_MESSAGE_PREFIX = 'This session is being continued from a previous conversation';
|
|
11
|
+
// Command echo left in the compact epoch by a manual /compact — also hidden.
|
|
12
|
+
export const COMPACT_COMMAND_ECHO = '/compact';
|
|
7
13
|
//# sourceMappingURL=messageTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageTree.js","sourceRoot":"","sources":["../../src/constants/messageTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAG,UAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"messageTree.js","sourceRoot":"","sources":["../../src/constants/messageTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAG,UAAmB,CAAC;AAEnD,+EAA+E;AAC/E,iFAAiF;AACjF,mEAAmE;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,8DAA8D,CAAC;AAErG,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC"}
|
|
@@ -13,7 +13,7 @@ export type { ChangePasswordRequest, ChangePasswordResponse } from './types/auth
|
|
|
13
13
|
export { ProjectInfo, ProjectListResponse, PROJECT_ERRORS, CreateProjectRequest, CreateProjectResponse, DeleteProjectResponse, ValidatePathRequest, ValidatePathResponse, BmadVersionsResponse, ProjectSettings, UpdateProjectSettingsRequest, ProjectSettingsApiResponse, SetupBmadRequest, SetupBmadResponse, } from './types/project.js';
|
|
14
14
|
export { SlashCommand, StarCommand, CommandsResponse, SnippetItem } from './types/command.js';
|
|
15
15
|
export { CommandFavoriteEntry, UserPreferences, PromptHistoryData, DEFAULT_PREFERENCES, PreferencesApiResponse, TelegramSettings, TelegramSettingsApiResponse, UpdateTelegramSettingsRequest, WebPushSettings, WebPushSettingsApiResponse, WebPushSubscribeRequest, SupportedLanguage, SUPPORTED_LANGUAGES, PermissionSyncPolicy, SystemPromptSectionsResponse, ProjectSystemPromptResponse, } from './types/preferences.js';
|
|
16
|
-
export { RawJSONLMessage, HistoryMessage, PaginationInfo, HistoryMessagesResponse, PaginationOptions, ContentBlock, TextContentBlock, ThinkingContentBlock, ToolUseContentBlock, ToolResultContentBlock, ImageContentBlock, } from './types/history.js';
|
|
16
|
+
export { RawJSONLMessage, HistoryMessage, PaginationInfo, HistoryMessagesResponse, PaginationOptions, ContentBlock, TextContentBlock, ThinkingContentBlock, ToolUseContentBlock, ToolResultContentBlock, ImageContentBlock, DocumentContentBlock, } from './types/history.js';
|
|
17
17
|
export * from './types/fileSystem.js';
|
|
18
18
|
export * from './types/systemBrowse.js';
|
|
19
19
|
export * from './types/bmadStatus.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAIrC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,UAAU,EACV,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIrF,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,EAC5B,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG9F,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,EAC3B,6BAA6B,EAC7B,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAIrC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,UAAU,EACV,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIrF,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,EAC5B,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG9F,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,EAC3B,6BAA6B,EAC7B,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG/E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAG/F,cAAc,gBAAgB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG5D,cAAc,oBAAoB,CAAC;AAGnC,cAAc,0BAA0B,CAAC;AAGzC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG3F,cAAc,0BAA0B,CAAC;AAGzC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,2BAA2B,CAAC;AAG1C,cAAc,wBAAwB,CAAC;AAGvC,cAAc,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,cAAc,gBAAgB,CAAC;AAE/B,+CAA+C;AAC/C,cAAc,sBAAsB,CAAC;AAErC,2CAA2C;AAC3C,cAAc,sBAAsB,CAAC;AAErC,4DAA4D;AAC5D,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC,kDAAkD;AAClD,2FAA2F;AAC3F,cAAc,oBAAoB,CAAC;AAEnC,iDAAiD;AACjD,cAAc,gBAAgB,CAAC;AAE/B,mDAAmD;AACnD,OAAO,EAGL,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,yBAAyB;AACzB,OAAO,EAKL,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,0CAA0C;AAC1C,OAAO,EAGL,gBAAgB,GAGjB,MAAM,iBAAiB,CAAC;AAEzB,iCAAiC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKtD,gDAAgD;AAChD,kDAAkD;AAClD,OAAO,EAGL,cAAc,GAYf,MAAM,oBAAoB,CAAC;AAM5B,gDAAgD;AAChD,OAAO,EAIL,mBAAmB,EASnB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,cAAc,gBAAgB,CAAC;AAE/B,+CAA+C;AAC/C,cAAc,sBAAsB,CAAC;AAErC,2CAA2C;AAC3C,cAAc,sBAAsB,CAAC;AAErC,4DAA4D;AAC5D,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC,kDAAkD;AAClD,2FAA2F;AAC3F,cAAc,oBAAoB,CAAC;AAEnC,iDAAiD;AACjD,cAAc,gBAAgB,CAAC;AAE/B,mDAAmD;AACnD,OAAO,EAGL,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,yBAAyB;AACzB,OAAO,EAKL,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,0CAA0C;AAC1C,OAAO,EAGL,gBAAgB,GAGjB,MAAM,iBAAiB,CAAC;AAEzB,iCAAiC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKtD,gDAAgD;AAChD,kDAAkD;AAClD,OAAO,EAGL,cAAc,GAYf,MAAM,oBAAoB,CAAC;AAM5B,gDAAgD;AAChD,OAAO,EAIL,mBAAmB,EASnB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAkBhC,qEAAqE;AACrE,cAAc,uBAAuB,CAAC;AAEtC,iFAAiF;AACjF,cAAc,yBAAyB,CAAC;AAExC,uDAAuD;AACvD,cAAc,uBAAuB,CAAC;AAEtC,iCAAiC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,kCAAkC;AAClC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE/E,uCAAuC;AACvC,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/F,kCAAkC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,2CAA2C;AAC3C,cAAc,qBAAqB,CAAC;AAEpC,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,oCAAoC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,kDAAkD;AAClD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5D,sEAAsE;AACtE,cAAc,oBAAoB,CAAC;AAEnC,yEAAyE;AACzE,cAAc,0BAA0B,CAAC;AAEzC,2EAA2E;AAC3E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AAErC,8EAA8E;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,kFAAkF;AAClF,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAE3F,gDAAgD;AAChD,cAAc,0BAA0B,CAAC;AAEzC,0DAA0D;AAC1D,cAAc,2BAA2B,CAAC;AAE1C,0DAA0D;AAC1D,cAAc,2BAA2B,CAAC;AAE1C,wDAAwD;AACxD,cAAc,wBAAwB,CAAC;AAEvC,wEAAwE;AACxE,cAAc,qBAAqB,CAAC"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* server-side {@link StoredAccount.credential} block. It is never serialized into an
|
|
11
11
|
* API response or a WebSocket payload — those carry the token-free {@link AccountSummary}.
|
|
12
12
|
*/
|
|
13
|
+
import type { AccountInfoResponse } from './sdk.js';
|
|
13
14
|
/**
|
|
14
15
|
* The `claudeAiOauth` block from `~/.claude/.credentials.json`, captured verbatim.
|
|
15
16
|
* Shape verified against the live file (BS-8 Dev Notes › Credential File Structure):
|
|
@@ -45,6 +46,16 @@ export interface StoredAccount {
|
|
|
45
46
|
lastUsedAt: number;
|
|
46
47
|
/** True when keyed by the `account:<hash>` fallback and the email needs back-fill (AC1a). */
|
|
47
48
|
needsEmailBackfill?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* The CLI's cached identity block (`oauthAccount` from `~/.claude.json`), captured verbatim
|
|
51
|
+
* when it verifiably belongs to this account (its `emailAddress` matches {@link email}).
|
|
52
|
+
* The CLI reports "who is logged in" from that on-disk cache — NOT from the credential
|
|
53
|
+
* file — so a switch must write this back alongside the credential, or every identity
|
|
54
|
+
* readout keeps showing the previously logged-in account. Server-side only, like
|
|
55
|
+
* {@link credential}. Absent for accounts captured before this field existed; the switch
|
|
56
|
+
* then drops the stale cache and the CLI re-derives it from the live token.
|
|
57
|
+
*/
|
|
58
|
+
identity?: Record<string, unknown>;
|
|
48
59
|
}
|
|
49
60
|
/**
|
|
50
61
|
* On-disk shape of `~/.hammoc/accounts.json`.
|
|
@@ -90,6 +101,8 @@ export interface AccountSwitchResponse {
|
|
|
90
101
|
*/
|
|
91
102
|
reauthRequired: boolean;
|
|
92
103
|
accounts: AccountSummary[];
|
|
104
|
+
/** Refreshed account info for the now-active credential (null when the bootstrap fetch fails). */
|
|
105
|
+
accountInfo?: AccountInfoResponse | null;
|
|
93
106
|
}
|
|
94
107
|
/** WebSocket `account:switched` payload — token-free (AC15). */
|
|
95
108
|
export interface AccountSwitchedEvent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/types/accounts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mEAAmE;QACnE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,qFAAqF;QACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,2EAA2E;IAC3E,UAAU,EAAE,qBAAqB,CAAC;IAClC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/types/accounts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mEAAmE;QACnE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,qFAAqF;QACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,2EAA2E;IAC3E,UAAU,EAAE,qBAAqB,CAAC;IAClC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,sDAAsD;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,kGAAkG;IAClG,WAAW,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC1C;AAED,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;CACb"}
|
|
@@ -34,7 +34,20 @@ export interface ImageContentBlock {
|
|
|
34
34
|
data: string;
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
/**
|
|
38
|
+
* PDF document block (Story BS-11). Local interface mirroring the SDK's
|
|
39
|
+
* DocumentBlockParam shape — shared must not depend on @anthropic-ai/sdk.
|
|
40
|
+
*/
|
|
41
|
+
export interface DocumentContentBlock {
|
|
42
|
+
type: 'document';
|
|
43
|
+
source: {
|
|
44
|
+
type: 'base64';
|
|
45
|
+
media_type: string;
|
|
46
|
+
data: string;
|
|
47
|
+
};
|
|
48
|
+
title?: string | null;
|
|
49
|
+
}
|
|
50
|
+
export type ContentBlock = TextContentBlock | ThinkingContentBlock | ToolUseContentBlock | ToolResultContentBlock | ImageContentBlock | DocumentContentBlock;
|
|
38
51
|
/**
|
|
39
52
|
* Raw JSONL message structure from Claude Code session file
|
|
40
53
|
* Note: content can be a string or an array of content blocks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/types/history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,MAAM,YAAY,GACpB,gBAAgB,GAChB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/types/history.ts"],"names":[],"mappings":"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"}
|