hammoc 1.5.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 +12 -4
- package/package.json +2 -2
- package/packages/client/dist/assets/{agentExampleHighlight-BgwTm15v.js → agentExampleHighlight-7Olvqdpf.js} +1 -1
- package/packages/client/dist/assets/{commandTokenHighlight-BljHwnrK.js → commandTokenHighlight-DtKwh4lx.js} +1 -1
- package/packages/client/dist/assets/index-B09doO8H.js +139 -0
- package/packages/client/dist/assets/index-Bee52CKG.js +1569 -0
- package/packages/client/dist/assets/index-CVy582lU.css +32 -0
- package/packages/client/dist/assets/{index-D3LxqW3f.js → index-DLHBUw8c.js} +1 -1
- package/packages/client/dist/assets/{snippetTokenHighlight-DWsaQXX0.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/bmadCoreConfigController.d.ts +41 -0
- package/packages/server/dist/controllers/bmadCoreConfigController.d.ts.map +1 -0
- package/packages/server/dist/controllers/bmadCoreConfigController.js +172 -0
- package/packages/server/dist/controllers/bmadCoreConfigController.js.map +1 -0
- package/packages/server/dist/controllers/contextBuilderController.d.ts +43 -0
- package/packages/server/dist/controllers/contextBuilderController.d.ts.map +1 -0
- package/packages/server/dist/controllers/contextBuilderController.js +159 -0
- package/packages/server/dist/controllers/contextBuilderController.js.map +1 -0
- package/packages/server/dist/controllers/harnessAgentController.d.ts +7 -0
- package/packages/server/dist/controllers/harnessAgentController.d.ts.map +1 -1
- package/packages/server/dist/controllers/harnessAgentController.js +33 -0
- package/packages/server/dist/controllers/harnessAgentController.js.map +1 -1
- package/packages/server/dist/controllers/harnessBundleController.d.ts +37 -0
- package/packages/server/dist/controllers/harnessBundleController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessBundleController.js +312 -0
- package/packages/server/dist/controllers/harnessBundleController.js.map +1 -0
- package/packages/server/dist/controllers/harnessCommandController.d.ts +7 -0
- package/packages/server/dist/controllers/harnessCommandController.d.ts.map +1 -1
- package/packages/server/dist/controllers/harnessCommandController.js +33 -0
- package/packages/server/dist/controllers/harnessCommandController.js.map +1 -1
- package/packages/server/dist/controllers/harnessHookController.d.ts.map +1 -1
- package/packages/server/dist/controllers/harnessHookController.js +44 -1
- package/packages/server/dist/controllers/harnessHookController.js.map +1 -1
- package/packages/server/dist/controllers/harnessMcpController.d.ts.map +1 -1
- package/packages/server/dist/controllers/harnessMcpController.js +62 -1
- package/packages/server/dist/controllers/harnessMcpController.js.map +1 -1
- package/packages/server/dist/controllers/harnessShareScopeController.d.ts +9 -0
- package/packages/server/dist/controllers/harnessShareScopeController.d.ts.map +1 -1
- package/packages/server/dist/controllers/harnessShareScopeController.js +48 -1
- package/packages/server/dist/controllers/harnessShareScopeController.js.map +1 -1
- package/packages/server/dist/controllers/marketplaceController.d.ts +19 -0
- package/packages/server/dist/controllers/marketplaceController.d.ts.map +1 -0
- package/packages/server/dist/controllers/marketplaceController.js +74 -0
- package/packages/server/dist/controllers/marketplaceController.js.map +1 -0
- package/packages/server/dist/controllers/observabilityController.d.ts +32 -0
- package/packages/server/dist/controllers/observabilityController.d.ts.map +1 -0
- package/packages/server/dist/controllers/observabilityController.js +148 -0
- package/packages/server/dist/controllers/observabilityController.js.map +1 -0
- 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 +10 -0
- package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
- package/packages/server/dist/handlers/streamCallbacks.js +25 -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 +385 -93
- 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/harness.d.ts.map +1 -1
- package/packages/server/dist/routes/harness.js +58 -0
- package/packages/server/dist/routes/harness.js.map +1 -1
- 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/bmadCoreConfigService.d.ts +86 -0
- package/packages/server/dist/services/bmadCoreConfigService.d.ts.map +1 -0
- package/packages/server/dist/services/bmadCoreConfigService.js +175 -0
- package/packages/server/dist/services/bmadCoreConfigService.js.map +1 -0
- package/packages/server/dist/services/bmadStatusService.d.ts +9 -0
- package/packages/server/dist/services/bmadStatusService.d.ts.map +1 -1
- package/packages/server/dist/services/bmadStatusService.js +77 -13
- 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 +44 -104
- 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/contextBuilderScriptTemplate.d.ts +24 -0
- package/packages/server/dist/services/contextBuilderScriptTemplate.d.ts.map +1 -0
- package/packages/server/dist/services/contextBuilderScriptTemplate.js +181 -0
- package/packages/server/dist/services/contextBuilderScriptTemplate.js.map +1 -0
- package/packages/server/dist/services/contextBuilderService.d.ts +68 -0
- package/packages/server/dist/services/contextBuilderService.d.ts.map +1 -0
- package/packages/server/dist/services/contextBuilderService.js +345 -0
- package/packages/server/dist/services/contextBuilderService.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/fileWatcherService.d.ts.map +1 -1
- package/packages/server/dist/services/fileWatcherService.js +40 -0
- package/packages/server/dist/services/fileWatcherService.js.map +1 -1
- package/packages/server/dist/services/harnessAgentService.d.ts +18 -0
- package/packages/server/dist/services/harnessAgentService.d.ts.map +1 -1
- package/packages/server/dist/services/harnessAgentService.js +55 -0
- package/packages/server/dist/services/harnessAgentService.js.map +1 -1
- package/packages/server/dist/services/harnessBundleService.d.ts +145 -0
- package/packages/server/dist/services/harnessBundleService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessBundleService.js +1318 -0
- package/packages/server/dist/services/harnessBundleService.js.map +1 -0
- package/packages/server/dist/services/harnessCommandService.d.ts +21 -0
- package/packages/server/dist/services/harnessCommandService.d.ts.map +1 -1
- package/packages/server/dist/services/harnessCommandService.js +64 -0
- package/packages/server/dist/services/harnessCommandService.js.map +1 -1
- package/packages/server/dist/services/harnessHookService.d.ts +27 -0
- package/packages/server/dist/services/harnessHookService.d.ts.map +1 -1
- package/packages/server/dist/services/harnessHookService.js +52 -0
- package/packages/server/dist/services/harnessHookService.js.map +1 -1
- package/packages/server/dist/services/harnessMcpService.d.ts +24 -1
- package/packages/server/dist/services/harnessMcpService.d.ts.map +1 -1
- package/packages/server/dist/services/harnessMcpService.js +70 -0
- package/packages/server/dist/services/harnessMcpService.js.map +1 -1
- package/packages/server/dist/services/harnessShareScopeService.d.ts +19 -0
- package/packages/server/dist/services/harnessShareScopeService.d.ts.map +1 -1
- package/packages/server/dist/services/harnessShareScopeService.js +65 -0
- package/packages/server/dist/services/harnessShareScopeService.js.map +1 -1
- 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/issueService.d.ts.map +1 -1
- package/packages/server/dist/services/issueService.js +1 -0
- package/packages/server/dist/services/issueService.js.map +1 -1
- package/packages/server/dist/services/marketplaceService.d.ts +50 -0
- package/packages/server/dist/services/marketplaceService.d.ts.map +1 -0
- package/packages/server/dist/services/marketplaceService.js +326 -0
- package/packages/server/dist/services/marketplaceService.js.map +1 -0
- package/packages/server/dist/services/observabilityService.d.ts +87 -0
- package/packages/server/dist/services/observabilityService.d.ts.map +1 -0
- package/packages/server/dist/services/observabilityService.js +0 -0
- package/packages/server/dist/services/observabilityService.js.map +1 -0
- 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 +12 -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/sessionService.d.ts +16 -0
- package/packages/server/dist/services/sessionService.d.ts.map +1 -1
- package/packages/server/dist/services/sessionService.js +125 -0
- package/packages/server/dist/services/sessionService.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/tokenCountService.d.ts +71 -0
- package/packages/server/dist/services/tokenCountService.d.ts.map +1 -0
- package/packages/server/dist/services/tokenCountService.js +313 -0
- package/packages/server/dist/services/tokenCountService.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/apply-qa-fixes +7 -5
- package/packages/server/dist/snippets/qa-review +7 -1
- package/packages/server/dist/utils/assertSafeBundlePath.d.ts +29 -0
- package/packages/server/dist/utils/assertSafeBundlePath.d.ts.map +1 -0
- package/packages/server/dist/utils/assertSafeBundlePath.js +53 -0
- package/packages/server/dist/utils/assertSafeBundlePath.js.map +1 -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 +14 -0
- package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts.map +1 -0
- package/packages/server/dist/utils/bundledBinaryModelSupport.js +112 -0
- package/packages/server/dist/utils/bundledBinaryModelSupport.js.map +1 -0
- 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 +2 -2
- package/packages/server/dist/utils/effortUtils.d.ts.map +1 -1
- package/packages/server/dist/utils/effortUtils.js +7 -5
- package/packages/server/dist/utils/effortUtils.js.map +1 -1
- package/packages/server/dist/utils/errors.d.ts +1 -0
- package/packages/server/dist/utils/errors.d.ts.map +1 -1
- package/packages/server/dist/utils/errors.js +17 -0
- package/packages/server/dist/utils/errors.js.map +1 -1
- package/packages/server/dist/utils/harnessBundleSchema.d.ts +14 -12
- package/packages/server/dist/utils/harnessBundleSchema.d.ts.map +1 -1
- package/packages/server/dist/utils/harnessBundleSchema.js +11 -1
- package/packages/server/dist/utils/harnessBundleSchema.js.map +1 -1
- package/packages/server/dist/utils/harnessPaths.d.ts +40 -0
- package/packages/server/dist/utils/harnessPaths.d.ts.map +1 -1
- package/packages/server/dist/utils/harnessPaths.js +123 -0
- package/packages/server/dist/utils/harnessPaths.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 -58
- package/packages/server/resources/internals/INDEX.md +3 -1
- package/packages/server/resources/internals/bmad-qa-fix-marker.md +32 -0
- package/packages/server/resources/internals/harness-files.md +22 -0
- package/packages/server/resources/internals/image-storage.md +9 -0
- package/packages/server/resources/internals/observability-storage.md +23 -0
- package/packages/server/resources/manual/02-chat.md +23 -4
- package/packages/server/resources/manual/03-sessions.md +1 -0
- package/packages/server/resources/manual/05-projects.md +15 -2
- package/packages/server/resources/manual/10-project-board.md +4 -3
- package/packages/server/resources/manual/11-bmad-method-integration.md +12 -8
- package/packages/server/resources/manual/12-harness-workbench.md +82 -1
- package/packages/server/resources/manual/13-settings.md +61 -9
- package/packages/shared/dist/index.d.ts +7 -0
- package/packages/shared/dist/index.d.ts.map +1 -1
- package/packages/shared/dist/index.js +14 -0
- package/packages/shared/dist/index.js.map +1 -1
- package/packages/shared/dist/types/bmadCoreConfig.d.ts +71 -0
- package/packages/shared/dist/types/bmadCoreConfig.d.ts.map +1 -0
- package/packages/shared/dist/types/bmadCoreConfig.js +30 -0
- package/packages/shared/dist/types/bmadCoreConfig.js.map +1 -0
- package/packages/shared/dist/types/bmadStatus.d.ts +26 -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/board.d.ts +6 -0
- package/packages/shared/dist/types/board.d.ts.map +1 -1
- package/packages/shared/dist/types/contextBuilder.d.ts +102 -0
- package/packages/shared/dist/types/contextBuilder.d.ts.map +1 -0
- package/packages/shared/dist/types/contextBuilder.js +55 -0
- package/packages/shared/dist/types/contextBuilder.js.map +1 -0
- package/packages/shared/dist/types/harnessBundle.d.ts +35 -0
- package/packages/shared/dist/types/harnessBundle.d.ts.map +1 -1
- package/packages/shared/dist/types/marketplace.d.ts +83 -0
- package/packages/shared/dist/types/marketplace.d.ts.map +1 -0
- package/packages/shared/dist/types/marketplace.js +18 -0
- package/packages/shared/dist/types/marketplace.js.map +1 -0
- package/packages/shared/dist/types/observability.d.ts +148 -0
- package/packages/shared/dist/types/observability.d.ts.map +1 -0
- package/packages/shared/dist/types/observability.js +24 -0
- package/packages/shared/dist/types/observability.js.map +1 -0
- package/packages/shared/dist/types/preferences.d.ts +16 -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 +124 -12
- 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-CjyjnXB8.css +0 -32
- package/packages/client/dist/assets/index-NqJdhlek.js +0 -1498
|
@@ -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,19 +170,27 @@ 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
|
|
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
|
|
|
182
191
|
- Click the currently active level again to reset to default
|
|
183
192
|
- Cannot be changed while Claude is responding
|
|
184
|
-
- If you switch to a model that doesn't support the current level (e.g., XHigh →
|
|
193
|
+
- If you switch to a model that doesn't support the current level (e.g., XHigh → model without XHigh, or Max → model without Max), the effort automatically resets to the highest supported level
|
|
185
194
|
- When the active model is temporarily unknown (e.g., right after switching projects before the resolved model arrives), the dropdown keeps your saved choice instead of resetting it. As soon as the model is known, the effort is reclamped if necessary
|
|
186
195
|
|
|
187
196
|
The default thinking effort for new sessions can be configured in Settings > Global.
|
|
@@ -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
|
|
@@ -21,28 +21,41 @@ Each card has a **kebab menu** (⋮) with:
|
|
|
21
21
|
|
|
22
22
|
**Dashboard summary bar** appears at the top when projects exist, showing aggregate stats: Projects, Sessions, Active, Queue, Terminals.
|
|
23
23
|
|
|
24
|
+
**Header brand logo (Hammoc)** — The Hammoc logo on the left of every header is clickable and always returns you to the project list from any page (project Overview, Board, Sessions, Queue, Files, Git, Terminal, project Settings, chat session). Use it as a one-tap "Home" without going through the back button.
|
|
25
|
+
|
|
24
26
|
### 5.2 Creating a New Project
|
|
25
27
|
|
|
26
28
|
1. Click **"New Project"** on the project list page
|
|
27
|
-
2. Enter the project directory path
|
|
29
|
+
2. Enter the project directory path, or click **Browse** to pick a folder visually (see below)
|
|
28
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
|
|
29
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
|
|
30
32
|
5. Invalid paths show the server's validation message in red below the input, and also disable **Create**
|
|
31
33
|
6. Optionally enable BMad Method initialization with version selection
|
|
32
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
|
+
|
|
33
45
|
### 5.3 Project Settings
|
|
34
46
|
|
|
35
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.
|
|
36
48
|
|
|
37
49
|
The Settings tab has a two-pane layout:
|
|
38
50
|
|
|
39
|
-
- **Left nav** —
|
|
51
|
+
- **Left nav** — Top-level groups: **General**, **Harness Workbench** (see §12), **Context Builder** (§12.17), **Observability** (§12.18), and **Marketplace** (§12.19). BMad projects also get a **BMad Settings** group (§12.16)
|
|
40
52
|
- **Right panel** — Form contents for the selected group
|
|
41
53
|
|
|
42
54
|
**General group** (per-project override fields):
|
|
43
55
|
|
|
44
56
|
- **Default model** — Override the global model selection
|
|
45
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
|
|
46
59
|
- **Hidden toggle** — Hide the project from the project list
|
|
47
60
|
- **Reset to Global Defaults** — Remove all overrides at once
|
|
48
61
|
|
|
@@ -85,7 +85,7 @@ Draft → Approved → In Progress → Ready for Review → Done
|
|
|
85
85
|
- **QA Waived** — Quality review waived/skipped
|
|
86
86
|
- **QA Failed** — Quality review failed, fixes needed
|
|
87
87
|
- **QA Concerns** — Quality review raised concerns
|
|
88
|
-
- **QA Fixed** —
|
|
88
|
+
- **QA Fixed** — The developer has recorded a fix for the current gate; ready for re-review
|
|
89
89
|
|
|
90
90
|
Not all statuses are required. Use the context menu to change status directly. **Promoted** indicates an issue that has been escalated to a story or epic.
|
|
91
91
|
|
|
@@ -134,9 +134,10 @@ Click the **⋮** button on any card to open the context menu. Actions vary by c
|
|
|
134
134
|
- **Complete Story** — Mark as Done without committing
|
|
135
135
|
- **Request QA Review** — Re-request quality review
|
|
136
136
|
- **QA Failed / QA Concerns:**
|
|
137
|
-
- **Apply QA Fix** — Apply fixes for QA issues
|
|
137
|
+
- **Apply QA Fix** — Apply fixes for QA issues (always offered)
|
|
138
|
+
- **Review Story** — Re-request QA review; also offered unless Hammoc has confirmed fixes are still pending for the current gate (e.g., legacy stories or external BMad projects)
|
|
138
139
|
- **QA Fixed:**
|
|
139
|
-
- **Review Story** —
|
|
140
|
+
- **Apply QA Fix** / **Review Story** — Apply further fixes, or request re-review
|
|
140
141
|
- **Ready for Review / Ready for Done (no QA gate):**
|
|
141
142
|
- **Review Story** — Request quality review
|
|
142
143
|
|
|
@@ -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
|
|
@@ -108,14 +110,16 @@ The Next Step Recommender analyzes the project state and suggests actions based
|
|
|
108
110
|
|
|
109
111
|
Recommendations follow reverse workflow order (finish what's closest to done first):
|
|
110
112
|
|
|
111
|
-
- **Priority 1:** QA Passed/Waived stories → Commit and mark Done, or re-request QA review → Dev agent
|
|
112
|
-
- **Priority 2:** QA
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
- **Priority
|
|
117
|
-
- **Priority
|
|
118
|
-
- **Priority
|
|
113
|
+
- **Priority 1:** QA Passed/Waived stories → Commit and mark Done, mark Done without committing, or re-request QA review → Dev/QA agent
|
|
114
|
+
- **Priority 2:** QA Failed/Concerns stories → the next step depends on whether the developer has already recorded a fix for the *current* gate:
|
|
115
|
+
- Fix already applied for this gate → Request QA re-review → QA agent
|
|
116
|
+
- Fix still needed → Apply QA fixes → Dev agent
|
|
117
|
+
- State unknown (a story from before this tracking existed, an external BMad project, or a manually-edited gate) → **both** "Apply QA fixes" and "Request QA review" are offered (apply-fixes leading) so you choose
|
|
118
|
+
- **Priority 3:** Ready for Review stories (no QA gate) → Request QA review → QA agent
|
|
119
|
+
- **Priority 4:** In Progress stories → Continue development → Dev agent
|
|
120
|
+
- **Priority 5:** Approved stories → Start development (Dev), or re-validate with Validate and Fix / Validate Only → PO agent
|
|
121
|
+
- **Priority 6:** Draft stories → Validate and Fix / Validate Only → PO agent
|
|
122
|
+
- **Priority 7:** Create next story → SM agent (when no actionable stories)
|
|
119
123
|
|
|
120
124
|
**Phase 4: Completed** (all planned stories are Done)
|
|
121
125
|
- Brainstorm new features → Analyst agent
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
The **Harness Workbench** is the unified surface for managing everything Claude Code reads from the `.claude/` configuration tree — plugins, skills, MCP servers, hooks, slash commands, sub-agents, `CLAUDE.md`, and Hammoc-native `%snippets`. It lives inside each project's **Settings** tab (see §5.3) under the "Harness Workbench" group, so the workbench is always scoped to the project you're working on but can also reach the global (`~/.claude/`) versions of each item.
|
|
4
4
|
|
|
5
|
+
The same Settings tab also hosts four sibling harness-engineering panels next to the Workbench (each a top-level nav item, not one of the Workbench's own sections): **BMad Settings** (§12.16, BMad projects only), **Context Builder** (§12.17), **Observability** (§12.18), and **Plugin Marketplace** (§12.19).
|
|
6
|
+
|
|
5
7
|
### 12.1 Layout
|
|
6
8
|
|
|
7
9
|
The workbench has two stacked headers above an eight-section navigator:
|
|
@@ -31,7 +33,7 @@ A workbench-wide banner just above the navigator tells you how the project share
|
|
|
31
33
|
|
|
32
34
|
The banner is derived from the project root's `.gitignore`. Edit the rules and the banner updates the next time the workbench refreshes.
|
|
33
35
|
|
|
34
|
-
>
|
|
36
|
+
> The Private mode banner surfaces an **Export** action on its right edge (in addition to the workbench-wide Bundle menu) so you can ship the current harness state to a teammate as a single `.zip` bundle. See §12.15 for the full export/import flow.
|
|
35
37
|
|
|
36
38
|
### 12.3 Share Badges
|
|
37
39
|
|
|
@@ -173,3 +175,82 @@ The dialog lists exactly which values were flagged (line numbers for text files,
|
|
|
173
175
|
|
|
174
176
|
Every Markdown body in the workbench — skill body and raw view, skill bundle files, command body and raw view, agent system prompt and raw view, `CLAUDE.md` (both columns), snippet body — shows a small **Expand** button (⤢ icon) above the editor area. Clicking it opens a fullscreen overlay with the same CodeMirror instance, line wrapping, and a Markdown edit / preview toggle, so you can write long content without scrolling inside a narrow modal. Edits in the overlay sync back to the host panel through the same 300 ms debounce auto-save — there is no separate save button. Close the overlay with **X** or `Escape`. Read-only buffers (a plugin-scope file, a bundled snippet) show a small "read-only" chip in the overlay header.
|
|
175
177
|
|
|
178
|
+
### 12.15 Bundle Export / Import (Team Sharing)
|
|
179
|
+
|
|
180
|
+
When your project's `.claude/` tree is **fully git-ignored** (Mode B — typical when you use Hammoc itself to develop on Hammoc, or when your team intentionally keeps the harness out of source control), you can still share the entire workbench configuration with a teammate by exporting it as a single `.zip` bundle and importing on the other side. The workbench shows a **Bundle** menu (top-right of the workbench header, also surfaced as an **Export** button on the Mode B banner), with two actions:
|
|
181
|
+
|
|
182
|
+
- **Export bundle** — Opens a dialog summarizing what will be packed (the five domain cards + `CLAUDE.md` + snippets) and lets you choose how secrets are handled:
|
|
183
|
+
- **Exclude (default)** — Secrets detected by the heuristic are stripped before packing; the recipient sees a *"N secrets removed"* toast after import. Use this when you want your teammate to fill in their own credentials.
|
|
184
|
+
- **Include as `${ENV_REF}` placeholders** — Detected secrets are replaced with named environment-variable references and a hint table lists which keys the recipient needs to set. Good for sharing a config skeleton without leaking real values.
|
|
185
|
+
- **Include explicit (with secrets)** — Plain-text secrets are packed as-is. This is the *"send it over secure DM and delete after use"* mode: you must check a second confirmation box before the dialog enables the download button, the resulting filename contains a visible `WITH-SECRETS` token, and a 5-second warning toast appears after the download starts.
|
|
186
|
+
- **Import bundle** — Drop a `.zip` (or browse for one). Before anything is applied, Hammoc shows a preview of every incoming item alongside what already exists, with three per-item actions (Overwrite / Skip / Add only if missing) and three bulk-action shortcuts. Bundles tagged *"with secrets"* require the recipient to acknowledge a separate *"this bundle contains plaintext secrets"* checkbox before the apply button activates, and bundles produced by a newer Hammoc version (`bundleVersion` greater than what the local server supports) are rejected outright with an upgrade hint.
|
|
187
|
+
|
|
188
|
+
The export/import flow only touches the workbench items themselves — `package.json`, repository code, and tracked files outside `.claude/` are never bundled. Bundles produced and consumed by the same Hammoc version are round-trip identical: re-importing your own export into an empty project reproduces the workbench cards byte-for-byte (handy for backups or for setting up a new dev machine).
|
|
189
|
+
|
|
190
|
+
### 12.16 BMad Settings (core-config Editor)
|
|
191
|
+
|
|
192
|
+
> Shown only for BMad projects (those with a `.bmad-core/` folder). For non-BMad projects this nav item is hidden entirely — no empty placeholder.
|
|
193
|
+
|
|
194
|
+
A form-based editor for BMad's `core-config.yaml`, so you can change BMad's paths and flags without opening a terminal or text editor. It is a top-level item in the project Settings left nav (a sibling of the Harness Workbench, not one of its sections).
|
|
195
|
+
|
|
196
|
+
Keys are organized into collapsible groups — **General**, **QA**, **PRD**, **Architecture**, and **Brownfield Epic** — and each value uses a widget matched to its type:
|
|
197
|
+
|
|
198
|
+
- **Toggle** for boolean flags (e.g., Markdown Exploder, PRD Sharded)
|
|
199
|
+
- **Path picker** for file/folder paths — a **Browse** button opens a file-tree dialog; paths are relative to the project root (e.g., Dev Story Location, QA Location)
|
|
200
|
+
- **Text** for plain strings (e.g., PRD Version, Slash Prefix)
|
|
201
|
+
- **Glob** with a live match preview that counts the files matching the pattern (e.g., Epic File Pattern)
|
|
202
|
+
- **Drag-sortable list** for path arrays (e.g., Dev Load Always Files, Custom Technical Documents)
|
|
203
|
+
|
|
204
|
+
Other behaviors:
|
|
205
|
+
|
|
206
|
+
- **Auto-save** — Text/path/glob edits debounce-save (~300 ms); toggles and list changes save immediately. Saves write `.bmad-core/core-config.yaml` while preserving comments and key order.
|
|
207
|
+
- **Raw YAML toggle** — A **Form / Raw** switch in the top-right lets you edit the file as raw YAML; switching back to Form preserves comments and ordering. A parse error keeps you in Raw mode until it is fixed.
|
|
208
|
+
- **Unknown Keys** — Keys the form doesn't recognize (for example, a newer BMad schema) are preserved and listed read-only in an "Unknown Keys" section at the bottom; edit them in Raw mode.
|
|
209
|
+
- **External-change banner** — If the file changes outside Hammoc while the panel is open, a banner with a **Reload** button appears.
|
|
210
|
+
|
|
211
|
+
After you change a path such as **Dev Story Location**, the BMad agents (e.g., `/dev`) pick up the new value on their next run.
|
|
212
|
+
|
|
213
|
+
### 12.17 Context Builder
|
|
214
|
+
|
|
215
|
+
The **Context Builder** automatically injects a block of context into every new chat session, so you don't have to re-explain "what was I working on" each time. It does this by generating a Claude Code **SessionStart hook** for you. Available on all projects.
|
|
216
|
+
|
|
217
|
+
You declare three kinds of content in the panel:
|
|
218
|
+
|
|
219
|
+
- **Reference files** — Project files that are read fresh and injected at each session start. Each file shows its byte size and an approximate token count. If the combined size nears the SessionStart output cap an amber warning appears; past the hard cap (red), the content spills to a file plus a preview instead of being injected inline, so trim the list when warned.
|
|
220
|
+
- **Dynamic variables** — Built-in values recomputed every session, each with an on/off toggle:
|
|
221
|
+
- **Current branch** — the active git branch
|
|
222
|
+
- **Active BMad story** — title and status of the most recently modified story file
|
|
223
|
+
- **Recent commits** — the most recent commit subjects (count configurable)
|
|
224
|
+
- **Today** — today's date
|
|
225
|
+
- **Uncommitted files** — count of files with uncommitted changes
|
|
226
|
+
- **Custom commands** (advanced) — Arbitrary shell commands whose output is appended. Because these run automatically at every session start, each requires you to tick a confirmation checkbox ("I understand this command runs automatically at every session start"). Hammoc also flags commands that look like they contain a secret.
|
|
227
|
+
|
|
228
|
+
When you save, Hammoc generates a hook script under the project's `.hammoc/` folder and registers a SessionStart entry in `.claude/settings.json`. In the **Hooks** panel (§12.7) that entry is marked **"Hammoc Context Builder"**; editing it by hand there raises a sync-loss warning, since the Context Builder owns it — change it from this panel instead. The token-size hints reuse the same approximation as Observability (§12.18).
|
|
229
|
+
|
|
230
|
+
### 12.18 Observability
|
|
231
|
+
|
|
232
|
+
The **Observability** panel is the feedback loop for harness tuning: it shows which tools get called and how much of the context window each harness element consumes. Available on all projects.
|
|
233
|
+
|
|
234
|
+
**MCP / tool calls:**
|
|
235
|
+
|
|
236
|
+
- A **timeline** of recent tool calls (server, tool, response time, and success / failed / no-response status) and an **aggregate chart** of calls per server and per tool with average response time and error counts.
|
|
237
|
+
- **Filters** by server, tool, and time window (default: last 30 days).
|
|
238
|
+
- Only call **metadata** is recorded — server, tool, timestamp, argument and response **sizes**, and duration. Argument and response **bodies are never stored**, so file contents and secrets don't leak into the log.
|
|
239
|
+
|
|
240
|
+
**Token attribution:**
|
|
241
|
+
|
|
242
|
+
- A bar chart of how many tokens each harness element contributes — project and global `CLAUDE.md`, each skill's `SKILL.md`, and the Context Builder's injected block — with an overlay showing the total against the current model's context window.
|
|
243
|
+
- Inline hints show an **approximate** token count prefixed with `~` (a fast byte-based estimate), expressed two ways at once: as a percentage of the context window and as a share of the total harness prompt.
|
|
244
|
+
- An **Exact count** button calls Anthropic's official token-count API and caches the result by file content; if the call fails, the approximation is kept.
|
|
245
|
+
|
|
246
|
+
### 12.19 Plugin Marketplace
|
|
247
|
+
|
|
248
|
+
The **Marketplace** panel lets you discover Claude Code plugins from the marketplaces registered on your machine, complementing the install/toggle view in the Plugins panel (§12.4). Available on all projects.
|
|
249
|
+
|
|
250
|
+
- **Catalog** — One card per plugin parsed from each registered marketplace, showing name, description, version, author, category, a type badge (**Plugin** or **External MCP**), bundled-component counts, and an **Installed** badge when applicable.
|
|
251
|
+
- **Filter & search** — By name, category, type, and installed state.
|
|
252
|
+
- **Install / Uninstall guide** — Because Claude Code's plugin commands are interactive slash commands (not shell subcommands), the **Install** and **Uninstall** buttons open a dialog containing the exact command — e.g. `/plugin install <name>@<marketplace>` — with a **Copy** button. Paste it into your Claude CLI session to run it; plugin commands can't be executed from the Hammoc chat.
|
|
253
|
+
- **Add marketplace** — A form takes a marketplace URL and produces the matching `/plugin marketplace add <url>` command to copy.
|
|
254
|
+
- **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
|
+
- **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
|
+
|
|
@@ -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,9 +39,12 @@ 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
|
-
- Opus 4.
|
|
40
|
-
- Sonnet 4.5, 4
|
|
46
|
+
- Opus 4.8 (most capable, 1M context), 4.7, 4.6, 4.5, 4.1, 4
|
|
47
|
+
- Sonnet 4.6 (1M context), 4.5, 4
|
|
41
48
|
- Haiku 4.5
|
|
42
49
|
|
|
43
50
|
**Claude 3.x:**
|
|
@@ -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,15 +109,15 @@ 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
|
|
|
107
116
|
Set the default thinking effort for new sessions:
|
|
108
117
|
|
|
109
118
|
- **SDK Default** / Low / Medium / High / XHigh / Max
|
|
110
|
-
- Max is available on Opus 4.6, Sonnet 4.6, and Opus 4.
|
|
111
|
-
- XHigh is available
|
|
119
|
+
- Max is available on Opus 4.6, Sonnet 4.6, Opus 4.7, and Opus 4.8
|
|
120
|
+
- XHigh is available on Opus 4.7 and Opus 4.8 (and is the SDK default for those models)
|
|
112
121
|
- 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
|
|
113
122
|
- The chosen level is preserved while the active model is still resolving (no flicker back to Default during project switches)
|
|
114
123
|
|
|
@@ -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';
|
|
@@ -25,6 +26,12 @@ export * from './types/dashboard.js';
|
|
|
25
26
|
export * from './types/board.js';
|
|
26
27
|
export { LogLevel, parseLogLevel } from './types/logger.js';
|
|
27
28
|
export * from './types/harness.js';
|
|
29
|
+
export * from './types/observability.js';
|
|
28
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';
|
|
29
33
|
export * from './types/harnessBundle.js';
|
|
34
|
+
export * from './types/bmadCoreConfig.js';
|
|
35
|
+
export * from './types/contextBuilder.js';
|
|
36
|
+
export * from './types/marketplace.js';
|
|
30
37
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAGrC,cAAc,0BAA0B,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
|
|
@@ -47,8 +49,20 @@ export * from './types/board.js';
|
|
|
47
49
|
export { LogLevel, parseLogLevel } from './types/logger.js';
|
|
48
50
|
// Story 28.0.5: Harness workbench shared types (Epic 28 common infra)
|
|
49
51
|
export * from './types/harness.js';
|
|
52
|
+
// Story 31.3: Observability — MCP call log + token attribution (Epic 31)
|
|
53
|
+
export * from './types/observability.js';
|
|
50
54
|
// Story 29.1: Markdown H2 split/append helpers (shared by server & client)
|
|
51
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';
|
|
52
60
|
// Story 30.3: Harness Export/Import bundle DTOs
|
|
53
61
|
export * from './types/harnessBundle.js';
|
|
62
|
+
// Story 31.1: BMad core-config.yaml editor DTOs (Epic 31)
|
|
63
|
+
export * from './types/bmadCoreConfig.js';
|
|
64
|
+
// Story 31.2: SessionStart context-builder DTOs (Epic 31)
|
|
65
|
+
export * from './types/contextBuilder.js';
|
|
66
|
+
// Story 31.4: Plugin marketplace catalog DTOs (Epic 31)
|
|
67
|
+
export * from './types/marketplace.js';
|
|
54
68
|
//# sourceMappingURL=index.js.map
|
|
@@ -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,2EAA2E;AAC3E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AAErC,gDAAgD;AAChD,cAAc,0BAA0B,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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed shape of the 18 known keys of `.bmad-core/core-config.yaml`.
|
|
3
|
+
*
|
|
4
|
+
* Every key is optional: a config that omits a key is valid, and the form
|
|
5
|
+
* renders an empty widget for it. The nested groups (`qa`, `prd`,
|
|
6
|
+
* `architecture`, `brownfieldEpic`) mirror the on-disk YAML nesting so the
|
|
7
|
+
* value of a leaf such as `prd.epicFilePattern` is reachable at the same path
|
|
8
|
+
* the AST patch op uses (`['prd', 'epicFilePattern']`).
|
|
9
|
+
*
|
|
10
|
+
* `customTechnicalDocuments` is `string[] | null` because the canonical
|
|
11
|
+
* default on disk is the literal `null` (an explicit "no extra docs" marker)
|
|
12
|
+
* that the form promotes to an array on first item add.
|
|
13
|
+
*/
|
|
14
|
+
export interface BmadCoreConfigKnownKeys {
|
|
15
|
+
markdownExploder?: boolean;
|
|
16
|
+
qa?: {
|
|
17
|
+
qaLocation?: string;
|
|
18
|
+
};
|
|
19
|
+
prd?: {
|
|
20
|
+
prdFile?: string;
|
|
21
|
+
prdVersion?: string;
|
|
22
|
+
prdSharded?: boolean;
|
|
23
|
+
prdShardedLocation?: string;
|
|
24
|
+
epicFilePattern?: string;
|
|
25
|
+
};
|
|
26
|
+
architecture?: {
|
|
27
|
+
architectureFile?: string;
|
|
28
|
+
architectureVersion?: string;
|
|
29
|
+
architectureSharded?: boolean;
|
|
30
|
+
architectureShardedLocation?: string;
|
|
31
|
+
};
|
|
32
|
+
customTechnicalDocuments?: string[] | null;
|
|
33
|
+
devLoadAlwaysFiles?: string[];
|
|
34
|
+
brownfieldEpic?: {
|
|
35
|
+
updateOnCreate?: string[];
|
|
36
|
+
doNotUpdate?: string[];
|
|
37
|
+
};
|
|
38
|
+
devDebugLog?: string;
|
|
39
|
+
devStoryLocation?: string;
|
|
40
|
+
slashPrefix?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The 10 known TOP-LEVEL keys of `.bmad-core/core-config.yaml`. Any other
|
|
44
|
+
* top-level key in the parsed YAML is treated as "unknown" and round-trips
|
|
45
|
+
* untouched (AC4). Nested groups (`qa`/`prd`/`architecture`/`brownfieldEpic`)
|
|
46
|
+
* count as one top-level key each; their leaves are the 18-key matrix.
|
|
47
|
+
*
|
|
48
|
+
* Single source of truth shared by the server partition logic and any client
|
|
49
|
+
* consumer that needs to reason about top-level membership.
|
|
50
|
+
*/
|
|
51
|
+
export declare const BMAD_CORE_CONFIG_KNOWN_TOP_LEVEL_KEYS: readonly ["markdownExploder", "qa", "prd", "architecture", "customTechnicalDocuments", "devLoadAlwaysFiles", "brownfieldEpic", "devDebugLog", "devStoryLocation", "slashPrefix"];
|
|
52
|
+
/** GET /api/harness/bmad-config/:projectSlug response. */
|
|
53
|
+
export interface BmadCoreConfigReadResponse {
|
|
54
|
+
/** Full raw text of `.bmad-core/core-config.yaml` — feeds the Raw editor toggle. */
|
|
55
|
+
content: string;
|
|
56
|
+
/** ISO 8601 mtime — STALE_WRITE ETag echoed back on the next patch/raw write. */
|
|
57
|
+
mtime: string;
|
|
58
|
+
/** Known top-level keys, typed. Drives the 18-key form widgets. */
|
|
59
|
+
knownKeys: BmadCoreConfigKnownKeys;
|
|
60
|
+
/**
|
|
61
|
+
* Unknown top-level keys (BMad schema extensions or user-defined keys) shown
|
|
62
|
+
* read-only in the "unknown keys" section with a JS-type hint each (AC4.a).
|
|
63
|
+
*/
|
|
64
|
+
unknownKeys: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
/** PATCH / PUT(raw) write response. */
|
|
67
|
+
export interface BmadCoreConfigWriteResponse {
|
|
68
|
+
/** ISO 8601 mtime after the write — the client persists this as the next ETag. */
|
|
69
|
+
mtime: string;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=bmadCoreConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bmadCoreConfig.d.ts","sourceRoot":"","sources":["../../src/types/bmadCoreConfig.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,EAAE,CAAC,EAAE;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,YAAY,CAAC,EAAE;QACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAC;KACtC,CAAC;IACF,wBAAwB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE;QACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qCAAqC,kLAWxC,CAAC;AAEX,0DAA0D;AAC1D,MAAM,WAAW,0BAA0B;IACzC,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,SAAS,EAAE,uBAAuB,CAAC;IACnC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,uCAAuC;AACvC,MAAM,WAAW,2BAA2B;IAC1C,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Story 31.1: BMad core-config.yaml editor shared types (Epic 31)
|
|
2
|
+
//
|
|
3
|
+
// Single source of truth for the typed shape of the 18 known keys plus the
|
|
4
|
+
// read-response envelope used by the BMad config form editor. The 18-key
|
|
5
|
+
// widget matrix itself lives client-side (BMAD_KNOWN_KEYS_MATRIX in
|
|
6
|
+
// bmadCoreConfigStore.ts); these types describe the *values* that travel over
|
|
7
|
+
// the wire after the server partitions a parsed config into known vs unknown
|
|
8
|
+
// top-level keys (see bmadCoreConfigService.parseUnknownKeys).
|
|
9
|
+
/**
|
|
10
|
+
* The 10 known TOP-LEVEL keys of `.bmad-core/core-config.yaml`. Any other
|
|
11
|
+
* top-level key in the parsed YAML is treated as "unknown" and round-trips
|
|
12
|
+
* untouched (AC4). Nested groups (`qa`/`prd`/`architecture`/`brownfieldEpic`)
|
|
13
|
+
* count as one top-level key each; their leaves are the 18-key matrix.
|
|
14
|
+
*
|
|
15
|
+
* Single source of truth shared by the server partition logic and any client
|
|
16
|
+
* consumer that needs to reason about top-level membership.
|
|
17
|
+
*/
|
|
18
|
+
export const BMAD_CORE_CONFIG_KNOWN_TOP_LEVEL_KEYS = [
|
|
19
|
+
'markdownExploder',
|
|
20
|
+
'qa',
|
|
21
|
+
'prd',
|
|
22
|
+
'architecture',
|
|
23
|
+
'customTechnicalDocuments',
|
|
24
|
+
'devLoadAlwaysFiles',
|
|
25
|
+
'brownfieldEpic',
|
|
26
|
+
'devDebugLog',
|
|
27
|
+
'devStoryLocation',
|
|
28
|
+
'slashPrefix',
|
|
29
|
+
];
|
|
30
|
+
//# sourceMappingURL=bmadCoreConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bmadCoreConfig.js","sourceRoot":"","sources":["../../src/types/bmadCoreConfig.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,oEAAoE;AACpE,8EAA8E;AAC9E,6EAA6E;AAC7E,+DAA+D;AA4C/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG;IACnD,kBAAkB;IAClB,IAAI;IACJ,KAAK;IACL,cAAc;IACd,0BAA0B;IAC1B,oBAAoB;IACpB,gBAAgB;IAChB,aAAa;IACb,kBAAkB;IAClB,aAAa;CACL,CAAC"}
|