hammoc 1.6.0 → 1.7.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 +6 -4
- package/package.json +2 -2
- package/packages/client/dist/assets/{agentExampleHighlight-ltj9ce0U.js → agentExampleHighlight-7Olvqdpf.js} +1 -1
- package/packages/client/dist/assets/{commandTokenHighlight-ji_ViMb4.js → commandTokenHighlight-DtKwh4lx.js} +1 -1
- package/packages/client/dist/assets/{index-BT4RIi0U.js → index-Bee52CKG.js} +556 -510
- package/packages/client/dist/assets/index-CVy582lU.css +32 -0
- package/packages/client/dist/assets/{index-B-DiRGuz.js → index-DLHBUw8c.js} +1 -1
- package/packages/client/dist/assets/{snippetTokenHighlight-CP3v4o2g.js → snippetTokenHighlight-C8O688f4.js} +1 -1
- package/packages/client/dist/index.html +2 -2
- package/packages/client/dist/sw.js +2 -2
- package/packages/server/dist/_dbg_agent_rows.d.ts +2 -0
- package/packages/server/dist/_dbg_agent_rows.d.ts.map +1 -0
- package/packages/server/dist/_dbg_agent_rows.js +60 -0
- package/packages/server/dist/_dbg_agent_rows.js.map +1 -0
- package/packages/server/dist/_dbg_flicker.d.ts +2 -0
- package/packages/server/dist/_dbg_flicker.d.ts.map +1 -0
- package/packages/server/dist/_dbg_flicker.js +38 -0
- package/packages/server/dist/_dbg_flicker.js.map +1 -0
- package/packages/server/dist/_harness_cli.d.ts +2 -0
- package/packages/server/dist/_harness_cli.d.ts.map +1 -0
- package/packages/server/dist/_harness_cli.js +81 -0
- package/packages/server/dist/_harness_cli.js.map +1 -0
- package/packages/server/dist/_harness_provcard.d.ts +2 -0
- package/packages/server/dist/_harness_provcard.d.ts.map +1 -0
- package/packages/server/dist/_harness_provcard.js +67 -0
- package/packages/server/dist/_harness_provcard.js.map +1 -0
- package/packages/server/dist/_replay_dump.d.ts +2 -0
- package/packages/server/dist/_replay_dump.d.ts.map +1 -0
- package/packages/server/dist/_replay_dump.js +62 -0
- package/packages/server/dist/_replay_dump.js.map +1 -0
- package/packages/server/dist/app.d.ts.map +1 -1
- package/packages/server/dist/app.js +6 -0
- package/packages/server/dist/app.js.map +1 -1
- package/packages/server/dist/config/index.d.ts.map +1 -1
- package/packages/server/dist/config/index.js.map +1 -1
- package/packages/server/dist/controllers/projectController.d.ts.map +1 -1
- package/packages/server/dist/controllers/projectController.js +7 -1
- package/packages/server/dist/controllers/projectController.js.map +1 -1
- package/packages/server/dist/controllers/sessionController.d.ts.map +1 -1
- package/packages/server/dist/controllers/sessionController.js +16 -4
- package/packages/server/dist/controllers/sessionController.js.map +1 -1
- package/packages/server/dist/controllers/systemBrowseController.d.ts +33 -0
- package/packages/server/dist/controllers/systemBrowseController.d.ts.map +1 -0
- package/packages/server/dist/controllers/systemBrowseController.js +105 -0
- package/packages/server/dist/controllers/systemBrowseController.js.map +1 -0
- package/packages/server/dist/handlers/streamCallbacks.d.ts +2 -0
- package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
- package/packages/server/dist/handlers/streamCallbacks.js +17 -4
- package/packages/server/dist/handlers/streamCallbacks.js.map +1 -1
- package/packages/server/dist/handlers/websocket.d.ts +43 -3
- package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
- package/packages/server/dist/handlers/websocket.js +362 -92
- package/packages/server/dist/handlers/websocket.js.map +1 -1
- package/packages/server/dist/index.js +2 -0
- package/packages/server/dist/index.js.map +1 -1
- package/packages/server/dist/locales/en/server.json +17 -0
- package/packages/server/dist/locales/es/server.json +17 -0
- package/packages/server/dist/locales/ja/server.json +17 -0
- package/packages/server/dist/locales/ko/server.json +17 -0
- package/packages/server/dist/locales/pt/server.json +17 -0
- package/packages/server/dist/locales/zh-CN/server.json +17 -0
- package/packages/server/dist/routes/preferences.d.ts.map +1 -1
- package/packages/server/dist/routes/preferences.js +12 -2
- package/packages/server/dist/routes/preferences.js.map +1 -1
- package/packages/server/dist/routes/systemBrowse.d.ts +17 -0
- package/packages/server/dist/routes/systemBrowse.d.ts.map +1 -0
- package/packages/server/dist/routes/systemBrowse.js +22 -0
- package/packages/server/dist/routes/systemBrowse.js.map +1 -0
- package/packages/server/dist/services/bmadStatusService.d.ts.map +1 -1
- package/packages/server/dist/services/bmadStatusService.js +18 -7
- package/packages/server/dist/services/bmadStatusService.js.map +1 -1
- package/packages/server/dist/services/chatEngine.d.ts +81 -0
- package/packages/server/dist/services/chatEngine.d.ts.map +1 -0
- package/packages/server/dist/services/chatEngine.js +2 -0
- package/packages/server/dist/services/chatEngine.js.map +1 -0
- package/packages/server/dist/services/chatEngineFactory.d.ts +15 -0
- package/packages/server/dist/services/chatEngineFactory.d.ts.map +1 -0
- package/packages/server/dist/services/chatEngineFactory.js +28 -0
- package/packages/server/dist/services/chatEngineFactory.js.map +1 -0
- package/packages/server/dist/services/chatService.d.ts +34 -26
- package/packages/server/dist/services/chatService.d.ts.map +1 -1
- package/packages/server/dist/services/chatService.js +43 -103
- package/packages/server/dist/services/chatService.js.map +1 -1
- package/packages/server/dist/services/cliChatEngine.d.ts +198 -0
- package/packages/server/dist/services/cliChatEngine.d.ts.map +1 -0
- package/packages/server/dist/services/cliChatEngine.js +2977 -0
- package/packages/server/dist/services/cliChatEngine.js.map +1 -0
- package/packages/server/dist/services/cliGridCards.d.ts +87 -0
- package/packages/server/dist/services/cliGridCards.d.ts.map +1 -0
- package/packages/server/dist/services/cliGridCards.js +298 -0
- package/packages/server/dist/services/cliGridCards.js.map +1 -0
- package/packages/server/dist/services/cliGridRegion.d.ts +44 -0
- package/packages/server/dist/services/cliGridRegion.d.ts.map +1 -0
- package/packages/server/dist/services/cliGridRegion.js +94 -0
- package/packages/server/dist/services/cliGridRegion.js.map +1 -0
- package/packages/server/dist/services/cliModalDetect.d.ts +299 -0
- package/packages/server/dist/services/cliModalDetect.d.ts.map +1 -0
- package/packages/server/dist/services/cliModalDetect.js +583 -0
- package/packages/server/dist/services/cliModalDetect.js.map +1 -0
- package/packages/server/dist/services/cliScreenCache.d.ts +33 -0
- package/packages/server/dist/services/cliScreenCache.d.ts.map +1 -0
- package/packages/server/dist/services/cliScreenCache.js +48 -0
- package/packages/server/dist/services/cliScreenCache.js.map +1 -0
- package/packages/server/dist/services/cliScreenModel.d.ts +141 -0
- package/packages/server/dist/services/cliScreenModel.d.ts.map +1 -0
- package/packages/server/dist/services/cliScreenModel.js +196 -0
- package/packages/server/dist/services/cliScreenModel.js.map +1 -0
- package/packages/server/dist/services/cliScreenStallWatchdog.d.ts +41 -0
- package/packages/server/dist/services/cliScreenStallWatchdog.d.ts.map +1 -0
- package/packages/server/dist/services/cliScreenStallWatchdog.js +45 -0
- package/packages/server/dist/services/cliScreenStallWatchdog.js.map +1 -0
- package/packages/server/dist/services/cliSessionPool.d.ts +97 -0
- package/packages/server/dist/services/cliSessionPool.d.ts.map +1 -0
- package/packages/server/dist/services/cliSessionPool.js +278 -0
- package/packages/server/dist/services/cliSessionPool.js.map +1 -0
- package/packages/server/dist/services/cliSpinnerProgress.d.ts +41 -0
- package/packages/server/dist/services/cliSpinnerProgress.d.ts.map +1 -0
- package/packages/server/dist/services/cliSpinnerProgress.js +131 -0
- package/packages/server/dist/services/cliSpinnerProgress.js.map +1 -0
- package/packages/server/dist/services/fileRewind.d.ts +46 -0
- package/packages/server/dist/services/fileRewind.d.ts.map +1 -0
- package/packages/server/dist/services/fileRewind.js +77 -0
- package/packages/server/dist/services/fileRewind.js.map +1 -0
- package/packages/server/dist/services/historyParser.d.ts +11 -0
- package/packages/server/dist/services/historyParser.d.ts.map +1 -1
- package/packages/server/dist/services/historyParser.js +10 -8
- package/packages/server/dist/services/historyParser.js.map +1 -1
- package/packages/server/dist/services/imageStorageService.d.ts +12 -0
- package/packages/server/dist/services/imageStorageService.d.ts.map +1 -1
- package/packages/server/dist/services/imageStorageService.js +22 -0
- package/packages/server/dist/services/imageStorageService.js.map +1 -1
- package/packages/server/dist/services/projectService.d.ts +13 -1
- package/packages/server/dist/services/projectService.d.ts.map +1 -1
- package/packages/server/dist/services/projectService.js +32 -0
- package/packages/server/dist/services/projectService.js.map +1 -1
- package/packages/server/dist/services/queueService.d.ts.map +1 -1
- package/packages/server/dist/services/queueService.js +9 -3
- package/packages/server/dist/services/queueService.js.map +1 -1
- package/packages/server/dist/services/rateLimitProbeService.d.ts +15 -0
- package/packages/server/dist/services/rateLimitProbeService.d.ts.map +1 -1
- package/packages/server/dist/services/rateLimitProbeService.js +48 -19
- package/packages/server/dist/services/rateLimitProbeService.js.map +1 -1
- package/packages/server/dist/services/streamHandler.d.ts +8 -1
- package/packages/server/dist/services/streamHandler.d.ts.map +1 -1
- package/packages/server/dist/services/streamHandler.js +12 -5
- package/packages/server/dist/services/streamHandler.js.map +1 -1
- package/packages/server/dist/services/systemBrowseService.d.ts +91 -0
- package/packages/server/dist/services/systemBrowseService.d.ts.map +1 -0
- package/packages/server/dist/services/systemBrowseService.js +372 -0
- package/packages/server/dist/services/systemBrowseService.js.map +1 -0
- package/packages/server/dist/services/workspaceContext.d.ts +24 -0
- package/packages/server/dist/services/workspaceContext.d.ts.map +1 -0
- package/packages/server/dist/services/workspaceContext.js +109 -0
- package/packages/server/dist/services/workspaceContext.js.map +1 -0
- package/packages/server/dist/snippets/qa-review +2 -0
- package/packages/server/dist/utils/backgroundBlock.d.ts +29 -0
- package/packages/server/dist/utils/backgroundBlock.d.ts.map +1 -0
- package/packages/server/dist/utils/backgroundBlock.js +33 -0
- package/packages/server/dist/utils/backgroundBlock.js.map +1 -0
- package/packages/server/dist/utils/backgroundTaskTracker.d.ts +20 -0
- package/packages/server/dist/utils/backgroundTaskTracker.d.ts.map +1 -0
- package/packages/server/dist/utils/backgroundTaskTracker.js +40 -0
- package/packages/server/dist/utils/backgroundTaskTracker.js.map +1 -0
- package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts +7 -0
- package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts.map +1 -1
- package/packages/server/dist/utils/bundledBinaryModelSupport.js +9 -4
- package/packages/server/dist/utils/bundledBinaryModelSupport.js.map +1 -1
- package/packages/server/dist/utils/cliDebugLog.d.ts +38 -0
- package/packages/server/dist/utils/cliDebugLog.d.ts.map +1 -0
- package/packages/server/dist/utils/cliDebugLog.js +65 -0
- package/packages/server/dist/utils/cliDebugLog.js.map +1 -0
- package/packages/server/dist/utils/cliEngineUtils.d.ts +35 -0
- package/packages/server/dist/utils/cliEngineUtils.d.ts.map +1 -0
- package/packages/server/dist/utils/cliEngineUtils.js +38 -0
- package/packages/server/dist/utils/cliEngineUtils.js.map +1 -0
- package/packages/server/dist/utils/effortUtils.d.ts.map +1 -1
- package/packages/server/dist/utils/effortUtils.js +5 -3
- package/packages/server/dist/utils/effortUtils.js.map +1 -1
- package/packages/server/dist/utils/trailingThrottle.d.ts +21 -0
- package/packages/server/dist/utils/trailingThrottle.d.ts.map +1 -0
- package/packages/server/dist/utils/trailingThrottle.js +36 -0
- package/packages/server/dist/utils/trailingThrottle.js.map +1 -0
- package/packages/server/package.json +61 -59
- package/packages/server/resources/internals/image-storage.md +9 -0
- package/packages/server/resources/manual/02-chat.md +22 -3
- package/packages/server/resources/manual/03-sessions.md +1 -0
- package/packages/server/resources/manual/05-projects.md +12 -1
- package/packages/server/resources/manual/11-bmad-method-integration.md +2 -0
- package/packages/server/resources/manual/13-settings.md +57 -5
- package/packages/shared/dist/index.d.ts +3 -0
- package/packages/shared/dist/index.d.ts.map +1 -1
- package/packages/shared/dist/index.js +6 -0
- package/packages/shared/dist/index.js.map +1 -1
- package/packages/shared/dist/types/bmadStatus.d.ts +16 -0
- package/packages/shared/dist/types/bmadStatus.d.ts.map +1 -1
- package/packages/shared/dist/types/bmadStatus.js.map +1 -1
- package/packages/shared/dist/types/preferences.d.ts +14 -2
- package/packages/shared/dist/types/preferences.d.ts.map +1 -1
- package/packages/shared/dist/types/preferences.js +1 -0
- package/packages/shared/dist/types/preferences.js.map +1 -1
- package/packages/shared/dist/types/project.d.ts +7 -1
- package/packages/shared/dist/types/project.d.ts.map +1 -1
- package/packages/shared/dist/types/project.js.map +1 -1
- package/packages/shared/dist/types/sdk.d.ts +123 -11
- package/packages/shared/dist/types/sdk.d.ts.map +1 -1
- package/packages/shared/dist/types/sdk.js +64 -19
- package/packages/shared/dist/types/sdk.js.map +1 -1
- package/packages/shared/dist/types/streaming.d.ts +2 -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/systemBrowse.d.ts +120 -0
- package/packages/shared/dist/types/systemBrowse.d.ts.map +1 -0
- package/packages/shared/dist/types/systemBrowse.js +57 -0
- package/packages/shared/dist/types/systemBrowse.js.map +1 -0
- package/packages/shared/dist/types/websocket.d.ts +38 -0
- package/packages/shared/dist/types/websocket.d.ts.map +1 -1
- package/packages/shared/dist/utils/interruptFiller.d.ts +30 -0
- package/packages/shared/dist/utils/interruptFiller.d.ts.map +1 -0
- package/packages/shared/dist/utils/interruptFiller.js +38 -0
- package/packages/shared/dist/utils/interruptFiller.js.map +1 -0
- package/packages/shared/dist/utils/toolResultContent.d.ts +22 -0
- package/packages/shared/dist/utils/toolResultContent.d.ts.map +1 -0
- package/packages/shared/dist/utils/toolResultContent.js +29 -0
- package/packages/shared/dist/utils/toolResultContent.js.map +1 -0
- package/scripts/run-integration-test.mjs +362 -362
- package/packages/client/dist/assets/index-DyNJ5jEW.css +0 -32
|
@@ -1,59 +1,61 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@hammoc/server",
|
|
3
|
-
"version": "1.0.3",
|
|
4
|
-
"type": "module",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "node --import tsx/esm --watch src/dev.ts",
|
|
8
|
-
"build": "tsc && node -e \"require('fs').cpSync('src/locales','dist/locales',{recursive:true});require('fs').cpSync('src/snippets','dist/snippets',{recursive:true})\"",
|
|
9
|
-
"start": "cross-env NODE_ENV=production node dist/index.js",
|
|
10
|
-
"typecheck": "tsc --noEmit",
|
|
11
|
-
"test": "vitest run --exclude '**/**.integration.test.ts'",
|
|
12
|
-
"test:watch": "vitest --exclude '**/**.integration.test.ts'",
|
|
13
|
-
"test:coverage": "vitest run --coverage --exclude '**/**.integration.test.ts'",
|
|
14
|
-
"test:integration": "vitest run src/services/__tests__/chatService.integration.test.ts",
|
|
15
|
-
"test:all": "vitest run"
|
|
16
|
-
},
|
|
17
|
-
"dependencies": {
|
|
18
|
-
"@anthropic-ai/claude-agent-sdk": "^0.3.
|
|
19
|
-
"@anthropic-ai/sdk": "^0.100.1",
|
|
20
|
-
"@hammoc/shared": "*",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"@types/
|
|
45
|
-
"@types/
|
|
46
|
-
"@types/
|
|
47
|
-
"@types/
|
|
48
|
-
"@types/
|
|
49
|
-
"@types/
|
|
50
|
-
"@types/
|
|
51
|
-
"@types/
|
|
52
|
-
"@types/
|
|
53
|
-
"@
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@hammoc/server",
|
|
3
|
+
"version": "1.0.3",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "node --import tsx/esm --watch src/dev.ts",
|
|
8
|
+
"build": "tsc && node -e \"require('fs').cpSync('src/locales','dist/locales',{recursive:true});require('fs').cpSync('src/snippets','dist/snippets',{recursive:true})\"",
|
|
9
|
+
"start": "cross-env NODE_ENV=production node dist/index.js",
|
|
10
|
+
"typecheck": "tsc --noEmit",
|
|
11
|
+
"test": "vitest run --exclude '**/**.integration.test.ts'",
|
|
12
|
+
"test:watch": "vitest --exclude '**/**.integration.test.ts'",
|
|
13
|
+
"test:coverage": "vitest run --coverage --exclude '**/**.integration.test.ts'",
|
|
14
|
+
"test:integration": "vitest run src/services/__tests__/chatService.integration.test.ts",
|
|
15
|
+
"test:all": "vitest run"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@anthropic-ai/claude-agent-sdk": "^0.3.177",
|
|
19
|
+
"@anthropic-ai/sdk": "^0.100.1",
|
|
20
|
+
"@hammoc/shared": "*",
|
|
21
|
+
"@xterm/addon-serialize": "0.14.0",
|
|
22
|
+
"@xterm/headless": "5.5.0",
|
|
23
|
+
"bcrypt": "^6.0.0",
|
|
24
|
+
"chokidar": "^5.0.0",
|
|
25
|
+
"cookie-session": "^2.1.1",
|
|
26
|
+
"cors": "^2.8.5",
|
|
27
|
+
"express": "^4.21.0",
|
|
28
|
+
"helmet": "^8.1.0",
|
|
29
|
+
"i18next": "^24.2.3",
|
|
30
|
+
"ignore": "^5.3.2",
|
|
31
|
+
"js-yaml": "^4.1.1",
|
|
32
|
+
"jsonc-parser": "^3.3.1",
|
|
33
|
+
"jszip": "^3.10.1",
|
|
34
|
+
"multer": "^2.1.1",
|
|
35
|
+
"node-pty": "^1.0.0",
|
|
36
|
+
"sharp": "^0.34.5",
|
|
37
|
+
"simple-git": "^3.27.0",
|
|
38
|
+
"socket.io": "^4.8.0",
|
|
39
|
+
"web-push": "^3.6.7",
|
|
40
|
+
"yaml": "^2.8.3",
|
|
41
|
+
"zod": "^4.3.6"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/bcrypt": "^6.0.0",
|
|
45
|
+
"@types/cookie-session": "^2.0.49",
|
|
46
|
+
"@types/cors": "^2.8.19",
|
|
47
|
+
"@types/express": "^4.17.25",
|
|
48
|
+
"@types/express-serve-static-core": "^4.19.8",
|
|
49
|
+
"@types/js-yaml": "^4.0.9",
|
|
50
|
+
"@types/multer": "^2.1.0",
|
|
51
|
+
"@types/node": "^22.0.0",
|
|
52
|
+
"@types/sharp": "^0.31.1",
|
|
53
|
+
"@types/supertest": "^6.0.3",
|
|
54
|
+
"@types/web-push": "^3.6.4",
|
|
55
|
+
"@vitest/coverage-v8": "^2.0.0",
|
|
56
|
+
"supertest": "^7.2.2",
|
|
57
|
+
"tsx": "^4.19.0",
|
|
58
|
+
"typescript": "^5.6.0",
|
|
59
|
+
"vitest": "^2.1.9"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -30,6 +30,15 @@ Anything else is rejected at attach time.
|
|
|
30
30
|
- The chat message references each image via the API URL `/api/projects/<projectSlug>/sessions/<sessionId>/images/<filename>`. That URL is for the **browser** to render thumbnails — it is not a file-system path and Read tools cannot use it directly.
|
|
31
31
|
- To open the file from disk, build the absolute path under `<homeDir>/.claude/projects/...` using the rules above, then call Read with that path.
|
|
32
32
|
|
|
33
|
+
## Delivery to the model (SDK vs CLI engine)
|
|
34
|
+
|
|
35
|
+
The on-disk location above is identical for both conversation engines, but how the bytes reach the model differs:
|
|
36
|
+
|
|
37
|
+
- **SDK engine** — The image is embedded inline in the request as a base64 content block. The model receives it as a vision input directly; no file read occurs.
|
|
38
|
+
- **CLI engine** — The interactive CLI channel carries only text, so the image is referenced **by path** instead. Right after storing, Hammoc grants the model read access to the session image directory (`<homeDir>/.claude/projects/<encoded-project-path>/images/<sessionId>`) via the CLI `--add-dir` flag, then appends an instruction to the prompt telling the model to open the listed absolute path(s) with its Read tool. The grant is scoped to exactly that one image directory (which sits outside the project cwd), and reading an `--add-dir`'d image this way does not raise a permission prompt.
|
|
39
|
+
|
|
40
|
+
For an agent: in CLI mode an attached image arrives as a literal "use your Read tool to open this file" instruction carrying an absolute path under `.claude/projects/.../images/...` — that path resolves with the rules above.
|
|
41
|
+
|
|
33
42
|
## Lifecycle
|
|
34
43
|
|
|
35
44
|
- Images are written the moment the user sends a message with attachments.
|
|
@@ -56,6 +56,7 @@ Attach images to your messages for Claude to analyze:
|
|
|
56
56
|
- Maximum: 5 images per message, 10MB per image
|
|
57
57
|
- Images preview in the input area before sending
|
|
58
58
|
- 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)
|
|
59
|
+
- 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
|
|
59
60
|
|
|
60
61
|
### 2.5 Tool Call Visualization
|
|
61
62
|
|
|
@@ -127,7 +128,7 @@ Monitor token usage in real-time:
|
|
|
127
128
|
- **Rate limit dots** — 5h/7d utilization indicators in the input area
|
|
128
129
|
- **Color thresholds** — Green (normal), Yellow (moderate), Red (high usage)
|
|
129
130
|
- **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
|
|
130
|
-
- **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
|
|
131
|
+
- **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.17) lets you disable auto-compaction entirely and manage compaction manually instead
|
|
131
132
|
|
|
132
133
|
### 2.11 Aborting Responses
|
|
133
134
|
|
|
@@ -169,13 +170,21 @@ When Claude uses extended thinking, the reasoning is shown in a collapsible bloc
|
|
|
169
170
|
|
|
170
171
|
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.
|
|
171
172
|
|
|
173
|
+
**1M context window** — For models that support a 1-million-token context window (Opus 4.8, Sonnet 4.6), a **"1M context"** toggle appears near the top of the dropdown:
|
|
174
|
+
|
|
175
|
+
- **Opus** — Locked on. The 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").
|
|
176
|
+
- **Sonnet** (and other non-Opus 1M-capable models) — Off by default. Sonnet's 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 runs at the standard 200K context window.
|
|
177
|
+
- **Fable 5** — Opt-in, same as Sonnet. The toggle appears and defaults to off.
|
|
178
|
+
|
|
179
|
+
The toggle only appears for 1M-capable models; every other model uses its native context window and shows no toggle.
|
|
180
|
+
|
|
172
181
|
### 2.16 Thinking Effort
|
|
173
182
|
|
|
174
183
|
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:
|
|
175
184
|
|
|
176
185
|
- **Low / Medium / High** — 3 levels, available for all models
|
|
177
186
|
- **Max** — 4th level, added for Opus 4.6 / Sonnet 4.6
|
|
178
|
-
- **XHigh** — 5th level, added for **Opus 4.7+** (the default effort for these models is XHigh)
|
|
187
|
+
- **XHigh** — 5th level, added for **Opus 4.7+** and **Fable 5** (the default effort for these models is XHigh)
|
|
179
188
|
|
|
180
189
|
Behavior:
|
|
181
190
|
|
|
@@ -274,7 +283,7 @@ Browse all conversation branches in a read-only mode:
|
|
|
274
283
|
|
|
275
284
|
### 2.24 Max Budget Warning Banner
|
|
276
285
|
|
|
277
|
-
When the **Max Budget (USD)** advanced setting (see §13.
|
|
286
|
+
When the **Max Budget (USD)** advanced setting (see §13.17) is configured, a sticky banner appears at the top of the chat area once the session cost approaches the limit:
|
|
278
287
|
|
|
279
288
|
- **Yellow warning** (80% threshold) — "Budget warning: $X.XXXX / $Y.YYYY used (ZZ%) — approaching Max Budget limit."
|
|
280
289
|
- **Red critical warning** (95% threshold) — "Budget critical: $X.XXXX / $Y.YYYY used (ZZ%) — stream will auto-stop when limit is exceeded."
|
|
@@ -283,3 +292,13 @@ When the **Max Budget (USD)** advanced setting (see §13.16) is configured, a st
|
|
|
283
292
|
|
|
284
293
|
The banner disappears automatically once the running cost falls back below the warning threshold (for example, after starting a new session).
|
|
285
294
|
|
|
295
|
+
### 2.25 Background Task Wait Card
|
|
296
|
+
|
|
297
|
+
When Claude launches background tasks (e.g., background `Agent` sub-tasks), an amber notification card appears below the message stream showing:
|
|
298
|
+
|
|
299
|
+
- **Elapsed timer** — A running clock (mm:ss) counting how long the background work has been running
|
|
300
|
+
- **Pending count** — Number of background tasks still in progress
|
|
301
|
+
- **Stop button** — Appears after a configurable delay (default 60 seconds) to let you abort if something seems stuck
|
|
302
|
+
|
|
303
|
+
The card disappears automatically once all background tasks complete.
|
|
304
|
+
|
|
@@ -13,6 +13,7 @@ Access the session list via the sidebar or quick panel:
|
|
|
13
13
|
- **Streaming indicator** — Green dot with animation when streaming
|
|
14
14
|
- **Waiting indicator** — Amber pulsing dot with "Waiting" badge when a session is connected but not yet streaming
|
|
15
15
|
- **Queue badge** — Shown when queue runner is active on the session
|
|
16
|
+
- **Early visibility** — New sessions appear in the list as soon as a message is sent, with no brief delay
|
|
16
17
|
- Empty sessions are hidden by default (toggle with the eye icon)
|
|
17
18
|
|
|
18
19
|
### 3.2 Creating a New Session
|
|
@@ -26,12 +26,22 @@ Each card has a **kebab menu** (⋮) with:
|
|
|
26
26
|
### 5.2 Creating a New Project
|
|
27
27
|
|
|
28
28
|
1. Click **"New Project"** on the project list page
|
|
29
|
-
2. Enter the project directory path
|
|
29
|
+
2. Enter the project directory path, or click **Browse** to pick a folder visually (see below)
|
|
30
30
|
3. The path is validated automatically with a short debounce while you type (`"Validating path..."` helper text is shown). Blurring the field validates immediately
|
|
31
31
|
4. Path collision detection — if the path already belongs to an existing project, an amber warning appears with a **"Navigate to existing"** link and the **Create** button is disabled until you pick a different path
|
|
32
32
|
5. Invalid paths show the server's validation message in red below the input, and also disable **Create**
|
|
33
33
|
6. Optionally enable BMad Method initialization with version selection
|
|
34
34
|
|
|
35
|
+
**Browse for a directory** — Instead of typing the path, click **Browse** to open a visual directory picker:
|
|
36
|
+
|
|
37
|
+
- It opens expanded at your home directory. Click **My PC** to jump up to the drive roots (Windows) or filesystem root, then drill back down
|
|
38
|
+
- A breadcrumb across the top shows your current location; click any segment to jump straight to that level
|
|
39
|
+
- The folder tree lazy-loads subfolders as you expand them — only folders are shown, never files
|
|
40
|
+
- Create a folder in place with **New folder**, or rename one with **Rename** (there is no delete here, by design)
|
|
41
|
+
- Click **Select this path** to drop the highlighted folder into the path field. Browsing only fills the input; the normal validation and **Create** step still apply
|
|
42
|
+
|
|
43
|
+
This is most useful on mobile or tablet, where typing a long absolute path by hand is awkward.
|
|
44
|
+
|
|
35
45
|
### 5.3 Project Settings
|
|
36
46
|
|
|
37
47
|
Per-project settings live in their own tab inside each project (Overview / Queue / Git / Files / Terminal / Board / **Settings**), no longer under the global Settings page. Opening the tab takes you directly to that project's configuration — there is no project dropdown to disambiguate.
|
|
@@ -45,6 +55,7 @@ The Settings tab has a two-pane layout:
|
|
|
45
55
|
|
|
46
56
|
- **Default model** — Override the global model selection
|
|
47
57
|
- **Permission mode** — Override the global permission mode (Plan, Ask before edits, Edit automatically). Note: Bypass permissions is not available at project level
|
|
58
|
+
- **Conversation engine** — Override which engine this project runs on: **Use Global default**, **SDK**, or **CLI** (see §13.16). When set to anything other than Global default, a "Project override" badge appears next to the field. The effective engine is resolved as project override → global setting → SDK
|
|
48
59
|
- **Hidden toggle** — Hide the project from the project list
|
|
49
60
|
- **Reset to Global Defaults** — Remove all overrides at once
|
|
50
61
|
|
|
@@ -60,6 +60,8 @@ Click the **Agent Button** (Users icon, in the chat bottom bar right of the mode
|
|
|
60
60
|
|
|
61
61
|
For BMad projects, the overview page displays additional sections above the standard project overview (see §5.5):
|
|
62
62
|
|
|
63
|
+
**QA gate parse warning** — If any QA gate file has formatting errors, an amber warning banner lists the affected files at the top of the overview so you can fix them.
|
|
64
|
+
|
|
63
65
|
**BMad Summary Card:**
|
|
64
66
|
- Overall **completion percentage** with a progress bar
|
|
65
67
|
- **Done/total epics** and **done/total stories** counts
|
|
@@ -4,12 +4,16 @@ Access settings via the gear icon or the Settings page. The page has **8 tabs**:
|
|
|
4
4
|
|
|
5
5
|
> Per-project overrides have moved out of this page. See §5.3 — they now live in each project's own Settings tab (the workbench-level General section).
|
|
6
6
|
|
|
7
|
+
**Multi-device sync** — Settings here are stored on the server, so they apply to every device and browser signed in to the same server, not just the one you changed them on. When you change a setting on one browser, other open browsers update live over the WebSocket connection without a manual refresh (the browser you changed it on is excluded from its own echo). This covers the Global and Advanced settings on this page and per-project settings (§5.3). Credential-style settings (Telegram bot token, Web Push) are managed through their own masked endpoints and are **not** broadcast. A few view-only states that depend on screen size — quick panel width/side, board view mode, Git diff layout, queue wrap — stay local to each browser by design.
|
|
8
|
+
|
|
7
9
|
### 13.1 Theme
|
|
8
10
|
|
|
9
11
|
- **Dark** — Dark background, light text (default)
|
|
10
12
|
- **Light** — Warm gray background, dark text
|
|
11
13
|
- **System** — Follows your OS/browser preference
|
|
12
14
|
|
|
15
|
+
Theme is stored locally per device (a "this device only" badge is shown next to the picker), so each browser/device can use a different theme even though other settings sync across devices (see multi-device sync above).
|
|
16
|
+
|
|
13
17
|
### 13.2 Language
|
|
14
18
|
|
|
15
19
|
Hammoc supports 6 languages:
|
|
@@ -35,6 +39,9 @@ Choose the default Claude model:
|
|
|
35
39
|
- **Opus** — Latest Opus
|
|
36
40
|
- **Haiku** — Latest Haiku
|
|
37
41
|
|
|
42
|
+
**Mythos-class:**
|
|
43
|
+
- Fable 5 (1M opt-in)
|
|
44
|
+
|
|
38
45
|
**Claude 4.x:**
|
|
39
46
|
- Opus 4.8 (most capable, 1M context), 4.7, 4.6, 4.5, 4.1, 4
|
|
40
47
|
- Sonnet 4.6 (1M context), 4.5, 4
|
|
@@ -45,6 +52,8 @@ Choose the default Claude model:
|
|
|
45
52
|
- Haiku 3.5
|
|
46
53
|
- Opus 3, Sonnet 3, Haiku 3
|
|
47
54
|
|
|
55
|
+
> **1M context window**: Opus 4.8 always runs with its 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 uses a 200K window.
|
|
56
|
+
|
|
48
57
|
Can be overridden per-project (see §5.3).
|
|
49
58
|
|
|
50
59
|
### 13.4 Default Permission Mode
|
|
@@ -100,7 +109,7 @@ How long to wait for Claude's response:
|
|
|
100
109
|
- 10 minutes
|
|
101
110
|
- 30 minutes
|
|
102
111
|
|
|
103
|
-
The timeout resets on every activity. If overridden by an environment variable, the field is disabled with an amber warning.
|
|
112
|
+
The timeout resets on every activity, and it only guards Claude's own generation. Waiting for **your** input — approving a permission prompt or answering an `AskUserQuestion` selection — pauses the timer, so those prompts never time out; step away and respond whenever you're back. If overridden by an environment variable, the field is disabled with an amber warning.
|
|
104
113
|
|
|
105
114
|
### 13.10 Default Thinking Effort
|
|
106
115
|
|
|
@@ -198,7 +207,32 @@ Customize Claude's behavior with a fully editable system prompt template:
|
|
|
198
207
|
|
|
199
208
|
> The default template focuses Claude on Hammoc-specific features (snippets, queue runner, board, BMAD, permission modes, sessions) and points at the manual + internals docs that Hammoc syncs to `~/.hammoc/docs/` on every server boot, so agents always have current docs even when run from a fresh install. The `{gitStatus}` block is no longer baked into the default — re-add it via this editor if you want it pre-included.
|
|
200
209
|
|
|
201
|
-
### 13.16
|
|
210
|
+
### 13.16 Conversation Engine
|
|
211
|
+
|
|
212
|
+
Hammoc can run conversations through one of two engines. The engine picker in Settings shows them as **side-by-side comparison cards** with a Recommended / Beta badge:
|
|
213
|
+
|
|
214
|
+
- **SDK** (default, Recommended) — The Claude Agent SDK. Responses stream token-by-token. Every model and feature is supported.
|
|
215
|
+
- **CLI** (Beta) — Routes your conversation through the Claude Code CLI. Its main draw is billing: it draws on your Claude **subscription** rather than separate API credits. Responses arrive block-by-block.
|
|
216
|
+
|
|
217
|
+
**Trade-offs:**
|
|
218
|
+
|
|
219
|
+
| | SDK | CLI |
|
|
220
|
+
|---|---|---|
|
|
221
|
+
| Billing | API credits | Subscription pool |
|
|
222
|
+
| Response rendering | Token-by-token streaming | **Block-by-block** — each completed block appears at once |
|
|
223
|
+
| Progress feedback | Live token stream | Optional "↓ N tokens · Ns" counter while generating |
|
|
224
|
+
|
|
225
|
+
Your conversation history is identical either way — both engines write the same session files, so a chat created in CLI mode reloads and renders exactly like an SDK chat, and you can switch engines between sessions without losing or garbling history. The engine is chosen per session at the moment you send; there is no live mid-conversation switch.
|
|
226
|
+
|
|
227
|
+
Everything interactive works the same in CLI mode as in SDK mode: live tool-call cards, permission prompts, selection cards, extended thinking, image attachments (see §2.4), and code rewind all behave identically. Claude is equally Hammoc-aware in both engines.
|
|
228
|
+
|
|
229
|
+
**Live permission mode switch** — During a CLI chat, clicking the permission mode button (or pressing `Shift+Tab`) changes the mode immediately, not just for the next session.
|
|
230
|
+
|
|
231
|
+
CLI engine settings have moved to **Advanced Settings** (see §13.17) under the "CLI engine only" group.
|
|
232
|
+
|
|
233
|
+
### 13.17 Advanced Settings
|
|
234
|
+
|
|
235
|
+
Settings in the Advanced tab are organized into groups by which conversation engine they apply to.
|
|
202
236
|
|
|
203
237
|
**Server Management (mode-dependent):**
|
|
204
238
|
|
|
@@ -209,14 +243,32 @@ Customize Claude's behavior with a fully editable system prompt template:
|
|
|
209
243
|
- **Chat sessions** — Save file snapshots during chat for rewind/restore (default: on). Disabling this prevents the Code Rewind feature (see §2.20) from working
|
|
210
244
|
- **Queue runner** — Save file snapshots during queue execution (default: off). Enabling increases JSONL session file size
|
|
211
245
|
|
|
212
|
-
**
|
|
246
|
+
**Common (both engines):**
|
|
247
|
+
- **Auto-compact when context fills** — Master switch for automatic context compaction (default: on). When enabled, conversations are automatically summarized when the context window fills up, so the session keeps going instead of stalling. When disabled, you manage compaction manually via `/compact` or the usage donut (see §2.10). Applies to both SDK and CLI engines.
|
|
248
|
+
|
|
249
|
+
**SDK Parameters (SDK engine only):**
|
|
213
250
|
- **Max Thinking Tokens** — Limit Claude's extended thinking tokens (1,024–128,000)
|
|
214
251
|
- **Max Turns** — Limit conversation turns per query (1–100)
|
|
215
252
|
- **Max Budget (USD)** — Set cost limit per query ($0.01–$100)
|
|
216
253
|
|
|
217
254
|
> **Scope (as of v1.3.0)**: these SDK parameters now apply to **both** direct chat sends and Queue Runner executions. Earlier releases silently dropped them in the queue path — if your queue runs started honoring Max Turns or Max Thinking Tokens after upgrading, this is why. Adjust the values if the new behavior surprises you.
|
|
218
255
|
|
|
219
|
-
|
|
256
|
+
**CLI engine settings:**
|
|
257
|
+
|
|
258
|
+
These settings apply only while the CLI engine is active (see §13.16):
|
|
259
|
+
|
|
260
|
+
- **Show thinking summaries** — Surface Claude's thinking summaries while generating a response (default on). Whether summaries actually appear can also depend on your Claude version.
|
|
261
|
+
- **Show generation progress** — Toggle the live "↓ N tokens · Ns" indicator shown during generation (default on).
|
|
262
|
+
- **Synthetic typing** — Re-animate each completed block character-by-character as it arrives, mimicking the SDK's token-by-token feel. Purely cosmetic; off by default.
|
|
263
|
+
- **Resume confirm** — When resuming a large or old session, Claude may show a confirm menu asking whether to "resume from summary" or "resume the full session". This setting controls how Hammoc handles that menu: **Ask each time** (default) shows an interactive card so you choose; **Auto: resume from summary** or **Auto: resume full session** auto-picks without blocking the turn.
|
|
264
|
+
- **Screen-stall detection** — If generation appears stuck for a configurable duration (default 20 seconds), a soft amber warning appears with a "Stop" button. Advisory only — Hammoc never auto-aborts. Set to 0 to disable.
|
|
265
|
+
- **Claude screen mirror** — Show a read-only terminal mirroring Claude's raw output during CLI-mode chats; on by default. Useful when a card is slow to arrive or the progress counter freezes. The panel is draggable and resizable, with a copy button for the full buffer. Turn it off if you find it distracting.
|
|
266
|
+
- **Claude binary path** — Manually point Hammoc at a specific `claude` executable. Leave empty to auto-detect. If the path is invalid, Hammoc falls back to auto-detect.
|
|
267
|
+
|
|
268
|
+
**Display:**
|
|
269
|
+
- **Card entrance animation** — While a response streams, each message and tool card fades and slides up one at a time as it appears, instead of the whole batch popping in at once. Applies to both engines and affects live streaming only (reloaded history renders statically). Purely cosmetic; on by default.
|
|
270
|
+
|
|
271
|
+
### 13.18 Help
|
|
220
272
|
|
|
221
273
|
In-app usage guide within the Settings page:
|
|
222
274
|
|
|
@@ -226,7 +278,7 @@ In-app usage guide within the Settings page:
|
|
|
226
278
|
- **BMad Method** — Quick guide to the BMad workflow
|
|
227
279
|
- **Keyboard shortcuts** — Key bindings table (Enter, Shift+Enter, Escape, Ctrl+C, F7/Shift+F7, /)
|
|
228
280
|
|
|
229
|
-
### 13.
|
|
281
|
+
### 13.19 About
|
|
230
282
|
|
|
231
283
|
Displays app information:
|
|
232
284
|
|
|
@@ -15,6 +15,7 @@ export { SlashCommand, StarCommand, CommandsResponse, SnippetItem } from './type
|
|
|
15
15
|
export { CommandFavoriteEntry, UserPreferences, PromptHistoryData, DEFAULT_PREFERENCES, PreferencesApiResponse, TelegramSettings, TelegramSettingsApiResponse, UpdateTelegramSettingsRequest, WebPushSettings, WebPushSettingsApiResponse, WebPushSubscribeRequest, SupportedLanguage, SUPPORTED_LANGUAGES, PermissionSyncPolicy, } from './types/preferences.js';
|
|
16
16
|
export { RawJSONLMessage, HistoryMessage, PaginationInfo, HistoryMessagesResponse, PaginationOptions, ContentBlock, TextContentBlock, ThinkingContentBlock, ToolUseContentBlock, ToolResultContentBlock, ImageContentBlock, } from './types/history.js';
|
|
17
17
|
export * from './types/fileSystem.js';
|
|
18
|
+
export * from './types/systemBrowse.js';
|
|
18
19
|
export * from './types/bmadStatus.js';
|
|
19
20
|
export * from './types/queue.js';
|
|
20
21
|
export { parseQueueScript, serializeQueueItems } from './utils/queueParser.js';
|
|
@@ -27,6 +28,8 @@ export { LogLevel, parseLogLevel } from './types/logger.js';
|
|
|
27
28
|
export * from './types/harness.js';
|
|
28
29
|
export * from './types/observability.js';
|
|
29
30
|
export { splitMarkdownByH2, appendMarkdownSections, MarkdownH2Section, } from './utils/markdownSections.js';
|
|
31
|
+
export { sanitizeToolResultContent } from './utils/toolResultContent.js';
|
|
32
|
+
export { INTERRUPT_FILLER_TEXTS, isInterruptFillerText } from './utils/interruptFiller.js';
|
|
30
33
|
export * from './types/harnessBundle.js';
|
|
31
34
|
export * from './types/bmadCoreConfig.js';
|
|
32
35
|
export * from './types/contextBuilder.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,GACrB,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,GAClB,MAAM,oBAAoB,CAAC;AAG5B,cAAc,uBAAuB,CAAC;AAGtC,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,cAAc,0BAA0B,CAAC;AAGzC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,2BAA2B,CAAC;AAG1C,cAAc,wBAAwB,CAAC"}
|
|
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,GACrB,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,GAClB,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"}
|
|
@@ -27,6 +27,8 @@ export { PROJECT_ERRORS, } from './types/project.js';
|
|
|
27
27
|
export { DEFAULT_PREFERENCES, SUPPORTED_LANGUAGES, } from './types/preferences.js';
|
|
28
28
|
// Story 11.1: File System types for file read and directory list API
|
|
29
29
|
export * from './types/fileSystem.js';
|
|
30
|
+
// Story 34.1: System Browse types for directory-only system browse API (Epic 34)
|
|
31
|
+
export * from './types/systemBrowse.js';
|
|
30
32
|
// Story 12.1: BMad Status types for BMad Dashboard API
|
|
31
33
|
export * from './types/bmadStatus.js';
|
|
32
34
|
// Story 15.1: Queue Runner types
|
|
@@ -51,6 +53,10 @@ export * from './types/harness.js';
|
|
|
51
53
|
export * from './types/observability.js';
|
|
52
54
|
// Story 29.1: Markdown H2 split/append helpers (shared by server & client)
|
|
53
55
|
export { splitMarkdownByH2, appendMarkdownSections, } from './utils/markdownSections.js';
|
|
56
|
+
// tool_result content sanitization (shared by server engines & client render)
|
|
57
|
+
export { sanitizeToolResultContent } from './utils/toolResultContent.js';
|
|
58
|
+
// Interrupt / empty-turn filler detection (shared by historyParser & MessageArea)
|
|
59
|
+
export { INTERRUPT_FILLER_TEXTS, isInterruptFillerText } from './utils/interruptFiller.js';
|
|
54
60
|
// Story 30.3: Harness Export/Import bundle DTOs
|
|
55
61
|
export * from './types/harnessBundle.js';
|
|
56
62
|
// Story 31.1: BMad core-config.yaml editor DTOs (Epic 31)
|
|
@@ -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,GAEpB,MAAM,wBAAwB,CAAC;AAiBhC,qEAAqE;AACrE,cAAc,uBAAuB,CAAC;AAEtC,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,gDAAgD;AAChD,cAAc,0BAA0B,CAAC;AAEzC,0DAA0D;AAC1D,cAAc,2BAA2B,CAAC;AAE1C,0DAA0D;AAC1D,cAAc,2BAA2B,CAAC;AAE1C,wDAAwD;AACxD,cAAc,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,GAEpB,MAAM,wBAAwB,CAAC;AAiBhC,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"}
|
|
@@ -87,11 +87,27 @@ export interface BmadAuxDocument {
|
|
|
87
87
|
files?: DirEntry[];
|
|
88
88
|
}
|
|
89
89
|
/** Response for GET /api/projects/:projectSlug/bmad-status */
|
|
90
|
+
/**
|
|
91
|
+
* A QA gate file that failed to parse as YAML. Surfaced to the UI so it can warn
|
|
92
|
+
* that next-step recommendations may be inaccurate until the file is fixed —
|
|
93
|
+
* an unparseable gate is treated as "no gate", which silently misroutes the
|
|
94
|
+
* recommendation (e.g. a PASS gate that won't parse looks like "needs review").
|
|
95
|
+
*/
|
|
96
|
+
export interface GateParseError {
|
|
97
|
+
/** Gate file name, e.g. "1.7-rule-firing-pool-entry-accrual.yml" */
|
|
98
|
+
file: string;
|
|
99
|
+
/** Story id parsed from the file name, e.g. "1.7" */
|
|
100
|
+
storyId: string;
|
|
101
|
+
/** Parser error message */
|
|
102
|
+
message: string;
|
|
103
|
+
}
|
|
90
104
|
export interface BmadStatusResponse {
|
|
91
105
|
config: BmadConfig;
|
|
92
106
|
documents: BmadDocuments;
|
|
93
107
|
auxiliaryDocuments: BmadAuxDocument[];
|
|
94
108
|
epics: BmadEpicStatus[];
|
|
109
|
+
/** QA gate files that failed to parse. Omitted/empty when all gates parsed. */
|
|
110
|
+
gateParseErrors?: GateParseError[];
|
|
95
111
|
}
|
|
96
112
|
export declare const BMAD_STATUS_ERRORS: {
|
|
97
113
|
readonly NOT_BMAD_PROJECT: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bmadStatus.d.ts","sourceRoot":"","sources":["../../src/types/bmadStatus.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4FAA4F;AAC5F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,gCAAgC;AAChC,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC3B;AAED,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,kBAAkB,CAAC;IACxB,YAAY,EAAE,kBAAkB,CAAC;IACjC,6DAA6D;IAC7D,aAAa,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACrC;AAED,4BAA4B;AAC5B,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,aAAa,CAAC;IACzB,kBAAkB,EAAE,eAAe,EAAE,CAAC;IACtC,KAAK,EAAE,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"bmadStatus.d.ts","sourceRoot":"","sources":["../../src/types/bmadStatus.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4FAA4F;AAC5F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,gCAAgC;AAChC,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC3B;AAED,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,kBAAkB,CAAC;IACxB,YAAY,EAAE,kBAAkB,CAAC;IACjC,6DAA6D;IAC7D,aAAa,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACrC;AAED,4BAA4B;AAC5B,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,8DAA8D;AAC9D;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,aAAa,CAAC;IACzB,kBAAkB,EAAE,eAAe,EAAE,CAAC;IACtC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;CAgBrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bmadStatus.js","sourceRoot":"","sources":["../../src/types/bmadStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bmadStatus.js","sourceRoot":"","sources":["../../src/types/bmadStatus.ts"],"names":[],"mappings":"AAyHA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,gBAAgB,EAAE;QAChB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,mDAAmD;QAC5D,UAAU,EAAE,GAAG;KAChB;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,mCAAmC;QAC5C,UAAU,EAAE,GAAG;KAChB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,uBAAuB;QAChC,UAAU,EAAE,GAAG;KAChB;CACO,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* User Preferences Types
|
|
3
3
|
* Server-side persistent settings (replaces localStorage)
|
|
4
4
|
*/
|
|
5
|
-
import type { PermissionMode, ThinkingEffort } from './sdk.js';
|
|
5
|
+
import type { PermissionMode, ThinkingEffort, EngineMode } from './sdk.js';
|
|
6
6
|
import type { LintRuleId } from './harness.js';
|
|
7
7
|
import type { ObservabilityTokenizer } from './observability.js';
|
|
8
8
|
/** Supported i18n languages (Epic 22) */
|
|
@@ -26,6 +26,15 @@ export interface UserPreferences {
|
|
|
26
26
|
permissionMode?: PermissionMode | 'latest';
|
|
27
27
|
/** Stores the actual last-used mode when permissionMode is 'latest' */
|
|
28
28
|
lastPermissionMode?: PermissionMode;
|
|
29
|
+
engineMode?: EngineMode;
|
|
30
|
+
cliShowThinkingSummaries?: boolean;
|
|
31
|
+
cliShowGenerationProgress?: boolean;
|
|
32
|
+
cliResumeChoice?: 'ask' | 'summary' | 'full';
|
|
33
|
+
cliBinaryPath?: string;
|
|
34
|
+
cliPtyMirror?: boolean;
|
|
35
|
+
cliMirrorThrottleMs?: number;
|
|
36
|
+
cliScreenStallMs?: number;
|
|
37
|
+
backgroundStopDelayMs?: number;
|
|
29
38
|
commandFavorites?: Array<string | CommandFavoriteEntry>;
|
|
30
39
|
starFavorites?: Record<string, string[]>;
|
|
31
40
|
defaultModel?: string;
|
|
@@ -40,12 +49,15 @@ export interface UserPreferences {
|
|
|
40
49
|
maxBudgetUsd?: number;
|
|
41
50
|
defaultEffort?: ThinkingEffort;
|
|
42
51
|
showThinkingBlocks?: boolean;
|
|
52
|
+
cardEntranceAnimation?: boolean;
|
|
53
|
+
autoCompactEnabled?: boolean;
|
|
43
54
|
language?: SupportedLanguage;
|
|
44
55
|
permissionSyncPolicy?: PermissionSyncPolicy;
|
|
45
56
|
panelDefaultOpen?: boolean;
|
|
46
57
|
panelDefaultSide?: 'left' | 'right' | 'last';
|
|
47
58
|
allowedReadPaths?: string[];
|
|
48
59
|
autoApproveSafetyChecks?: boolean;
|
|
60
|
+
planModeBypassBehavior?: 'override' | 'sync';
|
|
49
61
|
enableChatCheckpointing?: boolean;
|
|
50
62
|
enableQueueCheckpointing?: boolean;
|
|
51
63
|
harnessLintRules?: Partial<Record<LintRuleId, boolean>>;
|
|
@@ -54,7 +66,7 @@ export interface UserPreferences {
|
|
|
54
66
|
/** Controls when permission mode changes are broadcast to other browsers viewing the same session */
|
|
55
67
|
export type PermissionSyncPolicy = 'streaming' | 'always';
|
|
56
68
|
/** Default values for global settings */
|
|
57
|
-
export declare const DEFAULT_PREFERENCES: Required<Pick<UserPreferences, 'theme' | 'defaultModel' | 'permissionMode' | 'chatTimeoutMs' | 'fileExplorerViewMode' | 'showThinkingBlocks'>>;
|
|
69
|
+
export declare const DEFAULT_PREFERENCES: Required<Pick<UserPreferences, 'theme' | 'defaultModel' | 'permissionMode' | 'chatTimeoutMs' | 'fileExplorerViewMode' | 'showThinkingBlocks' | 'autoCompactEnabled'>>;
|
|
58
70
|
/** API response type — includes server-only metadata */
|
|
59
71
|
export interface PreferencesApiResponse extends UserPreferences {
|
|
60
72
|
_overrides?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/types/preferences.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/types/preferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../src/types/preferences.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,yCAAyC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../src/types/preferences.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,yCAAyC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AA2HpF,yCAAyC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAA0K;IACxM,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,EAAE;IAChB,cAAc,EAAE,SAAS;IACzB,aAAa,EAAE,MAAM;IACrB,oBAAoB,EAAE,MAAM;IAC5B,kBAAkB,EAAE,IAAI;IACxB,kBAAkB,EAAE,IAAI;CACzB,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* [Extended: Story 3.6 - Task 1: New Project Creation types]
|
|
6
6
|
* [Extended: Story 10.3 - Task 1: Project settings overrides]
|
|
7
7
|
*/
|
|
8
|
-
import type { PermissionMode } from './sdk.js';
|
|
8
|
+
import type { PermissionMode, EngineMode } from './sdk.js';
|
|
9
9
|
import type { BoardConfig } from './board.js';
|
|
10
10
|
/**
|
|
11
11
|
* Project information returned by the API
|
|
@@ -33,6 +33,8 @@ export interface ProjectSettings {
|
|
|
33
33
|
modelOverride?: string;
|
|
34
34
|
/** undefined = use global */
|
|
35
35
|
permissionModeOverride?: PermissionMode;
|
|
36
|
+
/** undefined = use the global engine preference (Epic 33) */
|
|
37
|
+
engineModeOverride?: EngineMode;
|
|
36
38
|
/** Custom board column configuration */
|
|
37
39
|
boardConfig?: BoardConfig;
|
|
38
40
|
}
|
|
@@ -44,6 +46,8 @@ export interface UpdateProjectSettingsRequest {
|
|
|
44
46
|
hidden?: boolean;
|
|
45
47
|
modelOverride?: string | null;
|
|
46
48
|
permissionModeOverride?: PermissionMode | null;
|
|
49
|
+
/** null = clear override (use global) */
|
|
50
|
+
engineModeOverride?: EngineMode | null;
|
|
47
51
|
/** null = reset to default board config */
|
|
48
52
|
boardConfig?: BoardConfig | null;
|
|
49
53
|
}
|
|
@@ -56,6 +60,8 @@ export interface ProjectSettingsApiResponse extends ProjectSettings {
|
|
|
56
60
|
effectiveModel: string;
|
|
57
61
|
/** Effective permission mode after merging with global preferences */
|
|
58
62
|
effectivePermissionMode: PermissionMode;
|
|
63
|
+
/** Effective engine mode after merging project override with the global preference (Epic 33) */
|
|
64
|
+
effectiveEngineMode: EngineMode;
|
|
59
65
|
/** Which fields have project-level overrides (for UI indicator) */
|
|
60
66
|
_overrides: string[];
|
|
61
67
|
}
|