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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_dbg_agent_rows.js","sourceRoot":"","sources":["../src/_dbg_agent_rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_dbg_flicker.d.ts","sourceRoot":"","sources":["../src/_dbg_flicker.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { createCliScreenModel, CLI_SCREEN_COLS, CLI_SCREEN_ROWS } from './services/cliScreenModel.js';
|
|
3
|
+
import { isGeneratingGrid } from './services/cliModalDetect.js';
|
|
4
|
+
import { scrollbackBodyRows } from './services/cliGridRegion.js';
|
|
5
|
+
const file = process.argv[2];
|
|
6
|
+
const raw = readFileSync(file, 'utf8');
|
|
7
|
+
const screen = createCliScreenModel(CLI_SCREEN_COLS, CLI_SCREEN_ROWS);
|
|
8
|
+
const CHUNK = 256;
|
|
9
|
+
const toolRE = /(Bash|Search|Read|Write|Edit|Grep|Glob|Agent|PowerShell|Workflow)\s*\(/;
|
|
10
|
+
let genFrames = 0;
|
|
11
|
+
const flickers = [];
|
|
12
|
+
const run = async () => {
|
|
13
|
+
for (let i = 0; i < raw.length; i += CHUNK) {
|
|
14
|
+
screen.write(raw.slice(i, i + CHUNK));
|
|
15
|
+
await screen.flush();
|
|
16
|
+
const grid = screen.readGrid();
|
|
17
|
+
if (!isGeneratingGrid(grid))
|
|
18
|
+
continue;
|
|
19
|
+
genFrames++;
|
|
20
|
+
const body = scrollbackBodyRows(grid);
|
|
21
|
+
for (const row of body) {
|
|
22
|
+
if (!toolRE.test(row))
|
|
23
|
+
continue;
|
|
24
|
+
const indent = row.length - row.trimStart().length;
|
|
25
|
+
const hasBullet = row.trimStart().startsWith('●');
|
|
26
|
+
if (!hasBullet && indent <= 3) {
|
|
27
|
+
flickers.push(`frame=${genFrames} indent=${indent} hasBullet=${hasBullet} "${row.slice(0, 80)}"`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
console.log('genFrames:', genFrames);
|
|
32
|
+
console.log('=== BULLET-LESS tool lines at indent<=3 (flicker candidates) ===');
|
|
33
|
+
flickers.slice(0, 40).forEach((f) => console.log(' ' + f));
|
|
34
|
+
console.log('total:', flickers.length);
|
|
35
|
+
process.exit(0);
|
|
36
|
+
};
|
|
37
|
+
void run();
|
|
38
|
+
//# sourceMappingURL=_dbg_flicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_dbg_flicker.js","sourceRoot":"","sources":["../src/_dbg_flicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;AAC9B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AACtE,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,MAAM,GAAG,wEAAwE,CAAC;AACxF,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,MAAM,QAAQ,GAAa,EAAE,CAAC;AAE9B,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,SAAS,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,SAAS;YAChC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;YACnD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,SAAS,SAAS,WAAW,MAAM,cAAc,SAAS,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAChF,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AACF,KAAK,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_harness_cli.d.ts","sourceRoot":"","sources":["../src/_harness_cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TEMP harness — REAL-TIME tool-completion check (NO reconnect). Question: in ONE live process, does
|
|
3
|
+
* every tool (esp. Read) receive its onToolResult (completion), or do some stay "USE but no RESULT"
|
|
4
|
+
* (stuck spinner)? This isolates whether the stuck-Read is a LIVE-path bug or reconnect-only.
|
|
5
|
+
*
|
|
6
|
+
* cd packages/server
|
|
7
|
+
* HAMMOC_CLI_TOOL_TRACE=1 npx tsx src/_harness_cli.ts D:/repo/hammoc
|
|
8
|
+
*/
|
|
9
|
+
import { CliChatEngine } from './services/cliChatEngine.js';
|
|
10
|
+
import { randomUUID } from 'node:crypto';
|
|
11
|
+
const projectPath = process.argv[2] || process.cwd();
|
|
12
|
+
const engine = new CliChatEngine({
|
|
13
|
+
workingDirectory: projectPath,
|
|
14
|
+
permissionMode: 'bypassPermissions',
|
|
15
|
+
autoCompactEnabled: false,
|
|
16
|
+
});
|
|
17
|
+
const tools = new Map();
|
|
18
|
+
const order = [];
|
|
19
|
+
const callbacks = {
|
|
20
|
+
onSessionInit: (sid) => console.log(`[INIT] ${sid}`),
|
|
21
|
+
onToolUse: (t) => {
|
|
22
|
+
const prev = tools.get(t.id);
|
|
23
|
+
if (!prev)
|
|
24
|
+
order.push(t.id);
|
|
25
|
+
tools.set(t.id, { id: t.id, name: t.name, prov: t.provisional ?? prev?.prov ?? false, result: prev?.result ?? false });
|
|
26
|
+
console.log(`[USE] ${t.provisional ? 'prov ' : 'CANON'} ${t.name} id=${t.id}`);
|
|
27
|
+
},
|
|
28
|
+
onToolResult: (toolCallId, _result, provisional) => {
|
|
29
|
+
const rec = tools.get(toolCallId);
|
|
30
|
+
if (rec)
|
|
31
|
+
rec.result = true;
|
|
32
|
+
else {
|
|
33
|
+
tools.set(toolCallId, { id: toolCallId, name: '?', prov: false, result: true });
|
|
34
|
+
order.push(toolCallId);
|
|
35
|
+
}
|
|
36
|
+
console.log(`[RESULT] ${provisional ? 'prov ' : 'CANON'} id=${toolCallId}`);
|
|
37
|
+
},
|
|
38
|
+
onComplete: (resp) => console.log(`[COMPLETE] done=${resp.done}`),
|
|
39
|
+
onError: (e) => console.error(`[ERROR] ${e.message}`),
|
|
40
|
+
};
|
|
41
|
+
const abort = new AbortController();
|
|
42
|
+
const timer = setTimeout(() => { console.error('[HARNESS] 300s timeout → abort'); abort.abort(); }, 300_000);
|
|
43
|
+
// Long turn: read MANY files ONE BY ONE with prose between each, so the tool cards scroll the
|
|
44
|
+
// 80-row viewport. The question: do EARLY tools (now scrolled ABOVE the viewport) still receive
|
|
45
|
+
// their completion (green flip OR file backstop), or do some stay USE-but-never-RESULT once they
|
|
46
|
+
// leave the screen? This isolates the scroll-off live-path completion gap (Story 37.16 territory).
|
|
47
|
+
const FILES = [
|
|
48
|
+
'package.json', 'tsconfig.json', 'README.md', 'CLAUDE.md',
|
|
49
|
+
'packages/client/package.json', 'packages/server/package.json', 'packages/shared/package.json',
|
|
50
|
+
'packages/client/src/services/socket.ts', 'packages/client/src/components/ToolCard.tsx',
|
|
51
|
+
'packages/server/src/config/index.ts', 'packages/client/src/sw.ts',
|
|
52
|
+
'packages/client/src/main.tsx', 'packages/server/src/index.ts',
|
|
53
|
+
'packages/client/src/components/ProvisionalBadge.tsx', 'packages/client/src/components/ThinkingBlock.tsx',
|
|
54
|
+
];
|
|
55
|
+
const prompt = [
|
|
56
|
+
'Read each of these files ONE BY ONE — exactly one Read tool call at a time, NEVER batch multiple reads. After EACH file write 2-3 sentences of explanation about it before reading the next, so the screen scrolls a lot:',
|
|
57
|
+
...FILES.map((f, i) => `${i + 1}. ${f}`),
|
|
58
|
+
`${FILES.length + 1}. Finish with a three-sentence summary of the project.`,
|
|
59
|
+
].join('\n');
|
|
60
|
+
console.log(`[HARNESS] cwd=${projectPath} sending ${prompt.length} chars...\n`);
|
|
61
|
+
const options = { sessionId: randomUUID(), abortController: abort };
|
|
62
|
+
try {
|
|
63
|
+
const resp = await engine.sendMessageWithCallbacks(prompt, callbacks, options, undefined, undefined, () => { });
|
|
64
|
+
console.log(`\n[HARNESS] === REAL-TIME TOOL COMPLETION (no reconnect) ===`);
|
|
65
|
+
const all = order.map((id) => tools.get(id)).filter(Boolean);
|
|
66
|
+
const incomplete = all.filter((t) => !t.result);
|
|
67
|
+
console.log(` total tool ids : ${all.length}`);
|
|
68
|
+
console.log(` completed : ${all.filter((t) => t.result).length}`);
|
|
69
|
+
console.log(` INCOMPLETE : ${incomplete.length} (USE but never RESULT = stuck spinner)`);
|
|
70
|
+
for (const t of incomplete)
|
|
71
|
+
console.log(` ✗ ${t.name} id=${t.id} prov=${t.prov}`);
|
|
72
|
+
console.log(`[HARNESS] done=${resp.done} isError=${resp.isError}`);
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
console.error(`[HARNESS] FATAL ${e instanceof Error ? e.message : String(e)}`);
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
clearTimeout(timer);
|
|
79
|
+
setTimeout(() => process.exit(0), 800);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=_harness_cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_harness_cli.js","sourceRoot":"","sources":["../src/_harness_cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_harness_provcard.d.ts","sourceRoot":"","sources":["../src/_harness_provcard.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TEMP harness — does the live screen-scrape produce PROVISIONAL text/thinking cards at all?
|
|
3
|
+
* Spawns a REAL claude via the CLI engine (one turn) and logs every onTextChunk / onThinking /
|
|
4
|
+
* onToolUse with its provisional flag + slot id. If `provisional text/think > 0`, the grid parser
|
|
5
|
+
* (`●`/`∴` at the fixed col-0 gate, scrollbackBodyRows) is recognizing headers end-to-end. Pure
|
|
6
|
+
* observation; HAMMOC_CLI_PTY_DUMP=1 also writes the raw frames so the `●` column can be inspected.
|
|
7
|
+
*
|
|
8
|
+
* cd packages/server
|
|
9
|
+
* HAMMOC_CLI_PTY_DUMP=1 npx tsx src/_harness_provcard.ts D:/repo/hammoc
|
|
10
|
+
*/
|
|
11
|
+
import { CliChatEngine } from './services/cliChatEngine.js';
|
|
12
|
+
import { randomUUID } from 'node:crypto';
|
|
13
|
+
const projectPath = process.argv[2] || process.cwd();
|
|
14
|
+
const engine = new CliChatEngine({
|
|
15
|
+
workingDirectory: projectPath,
|
|
16
|
+
permissionMode: 'bypassPermissions',
|
|
17
|
+
autoCompactEnabled: false,
|
|
18
|
+
});
|
|
19
|
+
let provText = 0;
|
|
20
|
+
let canonText = 0;
|
|
21
|
+
let provThink = 0;
|
|
22
|
+
let canonThink = 0;
|
|
23
|
+
const callbacks = {
|
|
24
|
+
onSessionInit: (sid) => console.log(`[INIT] ${sid}`),
|
|
25
|
+
onTextChunk: (c) => {
|
|
26
|
+
if (c.provisional)
|
|
27
|
+
provText++;
|
|
28
|
+
else
|
|
29
|
+
canonText++;
|
|
30
|
+
console.log(`[TEXT] ${c.provisional ? 'PROV ' : 'canon'} id=${c.messageId} "${c.content.slice(0, 50).replace(/\n/g, ' ')}"`);
|
|
31
|
+
},
|
|
32
|
+
onThinking: (content, prov) => {
|
|
33
|
+
if (prov)
|
|
34
|
+
provThink++;
|
|
35
|
+
else
|
|
36
|
+
canonThink++;
|
|
37
|
+
console.log(`[THINK] ${prov ? 'PROV ' : 'canon'} "${content.slice(0, 50).replace(/\n/g, ' ')}"`);
|
|
38
|
+
},
|
|
39
|
+
onToolUse: (t) => console.log(`[TOOL] ${t.provisional ? 'PROV ' : 'canon'} ${t.name} id=${t.id}`),
|
|
40
|
+
onComplete: (resp) => console.log(`[COMPLETE] done=${resp.done}`),
|
|
41
|
+
onError: (e) => console.error(`[ERROR] ${e.message}`),
|
|
42
|
+
};
|
|
43
|
+
const abort = new AbortController();
|
|
44
|
+
const timer = setTimeout(() => { console.error('[HARNESS] 180s timeout → abort'); abort.abort(); }, 180_000);
|
|
45
|
+
// A turn that produces BOTH a thinking summary (∴) and assistant prose (●), plus one tool, so the
|
|
46
|
+
// live scraper has all three header kinds to recognize off the fixed col-0/col-2 gate.
|
|
47
|
+
const prompt = 'Think briefly about what kind of project this monorepo is, then answer in about 4 sentences. ' +
|
|
48
|
+
'After that, read package.json and tell me the "name" field.';
|
|
49
|
+
console.log(`[HARNESS] cwd=${projectPath} sending...\n`);
|
|
50
|
+
const options = { sessionId: randomUUID(), abortController: abort };
|
|
51
|
+
try {
|
|
52
|
+
const resp = await engine.sendMessageWithCallbacks(prompt, callbacks, options, undefined, undefined, () => { });
|
|
53
|
+
console.log(`\n[HARNESS] === PROVISIONAL CARD CHECK ===`);
|
|
54
|
+
console.log(` provisional text : ${provText} canonical text : ${canonText}`);
|
|
55
|
+
console.log(` provisional think: ${provThink} canonical think: ${canonThink}`);
|
|
56
|
+
const ok = provText + provThink > 0;
|
|
57
|
+
console.log(` => provisional cards ${ok ? 'DID appear — live parsing OK' : 'NEVER appeared — live parsing BROKEN'}`);
|
|
58
|
+
console.log(`[HARNESS] done=${resp.done} isError=${resp.isError}`);
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
console.error(`[HARNESS] FATAL ${e instanceof Error ? e.message : String(e)}`);
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
clearTimeout(timer);
|
|
65
|
+
setTimeout(() => process.exit(0), 800);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=_harness_provcard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_harness_provcard.js","sourceRoot":"","sources":["../src/_harness_provcard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_replay_dump.d.ts","sourceRoot":"","sources":["../src/_replay_dump.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TEMP replay — feed a real HAMMOC_CLI_PTY_DUMP capture into the screen model and reproduce the EXACT
|
|
3
|
+
* live-scraper path (emitProvisionalCards): only mid-generation frames (isGeneratingGrid), footer
|
|
4
|
+
* cluster stripped (scrollbackBodyRows), then parseGridCards. Flags any frame where a USER MESSAGE
|
|
5
|
+
* substring becomes an assistant card. Pure replay → quota 0.
|
|
6
|
+
*
|
|
7
|
+
* cd packages/server
|
|
8
|
+
* npx tsx src/_replay_dump.ts logs/cli-pty-dump/<file>.log
|
|
9
|
+
*/
|
|
10
|
+
import { readFileSync } from 'node:fs';
|
|
11
|
+
import { createCliScreenModel, CLI_SCREEN_COLS, CLI_SCREEN_ROWS } from './services/cliScreenModel.js';
|
|
12
|
+
import { parseGridCards } from './services/cliGridCards.js';
|
|
13
|
+
import { scrollbackBodyRows } from './services/cliGridRegion.js';
|
|
14
|
+
import { isGeneratingGrid } from './services/cliModalDetect.js';
|
|
15
|
+
const file = process.argv[2];
|
|
16
|
+
// User-message substrings to watch for (hard-coded to avoid Windows argv encoding issues with Hangul).
|
|
17
|
+
const needles = ['유저 메시지는', '아까 대화', '로그 보면', '재시작했어', '줄넘김', '토큰이랑', '스피너 카드'];
|
|
18
|
+
const raw = readFileSync(file, 'utf8');
|
|
19
|
+
const screen = createCliScreenModel(CLI_SCREEN_COLS, CLI_SCREEN_ROWS);
|
|
20
|
+
const CHUNK = 256;
|
|
21
|
+
const seen = new Set();
|
|
22
|
+
let hits = 0;
|
|
23
|
+
let genFrames = 0;
|
|
24
|
+
const run = async () => {
|
|
25
|
+
for (let i = 0; i < raw.length; i += CHUNK) {
|
|
26
|
+
screen.write(raw.slice(i, i + CHUNK));
|
|
27
|
+
await screen.flush();
|
|
28
|
+
const full = screen.readGrid();
|
|
29
|
+
if (!isGeneratingGrid(full))
|
|
30
|
+
continue; // the live scraper ONLY runs mid-generation
|
|
31
|
+
genFrames++;
|
|
32
|
+
const bodyRows = scrollbackBodyRows(full); // EXACT live-path input: footer cluster stripped
|
|
33
|
+
const colors = screen.readBulletColors().slice(0, bodyRows.length);
|
|
34
|
+
const cards = parseGridCards(bodyRows, colors);
|
|
35
|
+
for (const c of cards) {
|
|
36
|
+
for (const n of needles) {
|
|
37
|
+
if (!c.text.includes(n))
|
|
38
|
+
continue;
|
|
39
|
+
const key = `${c.kind}|${n}`;
|
|
40
|
+
if (seen.has(key))
|
|
41
|
+
continue;
|
|
42
|
+
seen.add(key);
|
|
43
|
+
hits++;
|
|
44
|
+
console.log(`\n### HIT @~${i}B CARD kind=${c.kind}${c.bulletColor ? ':' + c.bulletColor : ''} needle=${JSON.stringify(n)}`);
|
|
45
|
+
console.log(` card.text=${JSON.stringify(c.text.slice(0, 200))}`);
|
|
46
|
+
bodyRows.forEach((r, ri) => {
|
|
47
|
+
if (r.includes(n))
|
|
48
|
+
console.log(` bodyRow[${ri}]=${JSON.stringify(r)}`);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
console.log(`\n=== generating frames scraped: ${genFrames} ; distinct (kind x needle) hits: ${hits} ===`);
|
|
54
|
+
console.log('\n=== FINAL screen grid (col-preserved; leading spaces show indent) ===');
|
|
55
|
+
screen.readGrid().forEach((r, ri) => {
|
|
56
|
+
if (r.trim())
|
|
57
|
+
console.log(`row[${String(ri).padStart(2)}] ${JSON.stringify(r)}`);
|
|
58
|
+
});
|
|
59
|
+
process.exit(0);
|
|
60
|
+
};
|
|
61
|
+
void run();
|
|
62
|
+
//# sourceMappingURL=_replay_dump.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_replay_dump.js","sourceRoot":"","sources":["../src/_replay_dump.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAgB,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAgB,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AA6B9D,OAAO,WAAW,CAAC;AAInB;;;GAGG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CA0KlD"}
|
|
@@ -29,6 +29,7 @@ import imageRoutes from './routes/images.js';
|
|
|
29
29
|
import serverRoutes from './routes/server.js';
|
|
30
30
|
import harnessRoutes from './routes/harness.js';
|
|
31
31
|
import snippetsRoutes from './routes/snippets.js';
|
|
32
|
+
import systemBrowseRoutes from './routes/systemBrowse.js';
|
|
32
33
|
import { createSessionMiddleware } from './middleware/session.js';
|
|
33
34
|
import { authMiddlewareWithExclusions } from './middleware/auth.js';
|
|
34
35
|
import { i18nMiddleware } from './middleware/i18n.js';
|
|
@@ -145,6 +146,11 @@ export async function createApp() {
|
|
|
145
146
|
// intentionally separate from `/api/harness/*` so the URL boundary makes
|
|
146
147
|
// the system-of-record obvious.
|
|
147
148
|
app.use('/api/snippets', snippetsRoutes);
|
|
149
|
+
// System browse routes (Story 34.1) — directory-only host filesystem browse
|
|
150
|
+
// for project-path selection. Mounted under /api/system (not /api/projects)
|
|
151
|
+
// because it runs before a project exists, so there is no project boundary.
|
|
152
|
+
// Auth is automatic via authMiddlewareWithExclusions (not in PUBLIC_ROUTES).
|
|
153
|
+
app.use('/api/system', systemBrowseRoutes);
|
|
148
154
|
// Server management routes (restart)
|
|
149
155
|
app.use('/api/server', serverRoutes);
|
|
150
156
|
// Debug routes (server-side logging + test helpers) — dev mode or explicit opt-in.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,QAAQ,EAAiB,MAAM,gBAAgB,CAAC;AAiCzD;;;GAGG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;;QAED;;;;;;WAMG;;;IAIL;;OAEG;;;;QAID;;;;;;WAMG;;;IAIL;;;;OAIG;;;0BAG2B,MAAM,EAAE;;;IAItC;;;OAGG;;;;IAMH;;;OAGG;;;;;;IAOH;;;;OAIG;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,QAAQ,EAAiB,MAAM,gBAAgB,CAAC;AAiCzD;;;GAGG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;;QAED;;;;;;WAMG;;;IAIL;;OAEG;;;;QAID;;;;;;WAMG;;;IAIL;;;;OAIG;;;0BAG2B,MAAM,EAAE;;;IAItC;;;OAGG;;;;IAMH;;;OAGG;;;;;;IAOH;;;;OAIG;;;;;;IAOH;;OAEG;;;;;;;;;;CAEK,CAAC;AAEX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Story 31.1: BMad core-config editor controller (Epic 31).
|
|
3
|
+
*
|
|
4
|
+
* Mounts at GET/PATCH `/api/harness/bmad-config/:projectSlug` and
|
|
5
|
+
* PUT `/api/harness/bmad-config/:projectSlug/raw`. Mirrors the error-mapping
|
|
6
|
+
* envelope of `claudeMdController` (Story 29.1) / `harnessController`
|
|
7
|
+
* (Story 28.0.5): success responses are the raw result object and failures are
|
|
8
|
+
* `{ error: { code, message, details? } }` with the message resolved through
|
|
9
|
+
* `req.t!()` for i18n. There is no global Express error middleware — this
|
|
10
|
+
* controller maps `HARNESS_ERRORS` codes to HTTP statuses inline.
|
|
11
|
+
*/
|
|
12
|
+
import { Request, Response } from 'express';
|
|
13
|
+
export declare const bmadCoreConfigController: {
|
|
14
|
+
/**
|
|
15
|
+
* GET /api/harness/bmad-config/:projectSlug
|
|
16
|
+
*
|
|
17
|
+
* Returns content + mtime + the known/unknown key partition. A malformed
|
|
18
|
+
* on-disk YAML does NOT 422 here (the API contract limits GET errors to
|
|
19
|
+
* FILE_NOT_FOUND / FORBIDDEN): the raw content is still returned with empty
|
|
20
|
+
* partitions so the client can open in Raw mode and repair the file.
|
|
21
|
+
*/
|
|
22
|
+
read(req: Request, res: Response): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* PATCH /api/harness/bmad-config/:projectSlug
|
|
25
|
+
* body: { ops: HarnessStructuredPatchOp[]; expectedMtime? }
|
|
26
|
+
*
|
|
27
|
+
* AST patch preserving comments/order/quoting; unknown keys round-trip
|
|
28
|
+
* untouched. A malformed on-disk YAML surfaces as HARNESS_PARSE_ERROR (422)
|
|
29
|
+
* so the client switches to Raw mode.
|
|
30
|
+
*/
|
|
31
|
+
patch(req: Request, res: Response): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* PUT /api/harness/bmad-config/:projectSlug/raw
|
|
34
|
+
* body: { content: string; expectedMtime? }
|
|
35
|
+
*
|
|
36
|
+
* Raw-mode overwrite (bypasses the AST patch). STALE_WRITE guard still
|
|
37
|
+
* applies so a raw save cannot clobber an external edit silently.
|
|
38
|
+
*/
|
|
39
|
+
writeRaw(req: Request, res: Response): Promise<void>;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=bmadCoreConfigController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bmadCoreConfigController.d.ts","sourceRoot":"","sources":["../../src/controllers/bmadCoreConfigController.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA0F5C,eAAO,MAAM,wBAAwB;IACnC;;;;;;;OAOG;cACa,OAAO,OAAO,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBtD;;;;;;;OAOG;eACc,OAAO,OAAO,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvD;;;;;;OAMG;kBACiB,OAAO,OAAO,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAqB3D,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Story 31.1: BMad core-config editor controller (Epic 31).
|
|
3
|
+
*
|
|
4
|
+
* Mounts at GET/PATCH `/api/harness/bmad-config/:projectSlug` and
|
|
5
|
+
* PUT `/api/harness/bmad-config/:projectSlug/raw`. Mirrors the error-mapping
|
|
6
|
+
* envelope of `claudeMdController` (Story 29.1) / `harnessController`
|
|
7
|
+
* (Story 28.0.5): success responses are the raw result object and failures are
|
|
8
|
+
* `{ error: { code, message, details? } }` with the message resolved through
|
|
9
|
+
* `req.t!()` for i18n. There is no global Express error middleware — this
|
|
10
|
+
* controller maps `HARNESS_ERRORS` codes to HTTP statuses inline.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { HARNESS_ERRORS, } from '@hammoc/shared';
|
|
14
|
+
import { bmadCoreConfigService } from '../services/bmadCoreConfigService.js';
|
|
15
|
+
const projectSlugSchema = z.string().min(1, 'projectSlug is required');
|
|
16
|
+
const patchOpSchema = z.object({
|
|
17
|
+
// `value` is intentionally `z.unknown()` so an omitted key parses to
|
|
18
|
+
// `undefined` (= delete per HarnessStructuredPatchOp), while an explicit
|
|
19
|
+
// `null` stays a real YAML-null set (e.g. customTechnicalDocuments: null).
|
|
20
|
+
path: z.array(z.union([z.string(), z.number()])).min(1, 'patch op requires a non-empty path'),
|
|
21
|
+
value: z.unknown(),
|
|
22
|
+
});
|
|
23
|
+
const patchBodySchema = z.object({
|
|
24
|
+
ops: z.array(patchOpSchema).min(1, 'at least one patch op is required'),
|
|
25
|
+
expectedMtime: z.string().optional(),
|
|
26
|
+
});
|
|
27
|
+
const rawBodySchema = z.object({
|
|
28
|
+
content: z.string(),
|
|
29
|
+
expectedMtime: z.string().optional(),
|
|
30
|
+
});
|
|
31
|
+
const MAPPED_CODES = [
|
|
32
|
+
'HARNESS_PATH_DENIED',
|
|
33
|
+
'HARNESS_FORBIDDEN',
|
|
34
|
+
'HARNESS_FILE_NOT_FOUND',
|
|
35
|
+
'HARNESS_NOT_A_FILE',
|
|
36
|
+
'HARNESS_ROOT_MISSING',
|
|
37
|
+
'HARNESS_STALE_WRITE',
|
|
38
|
+
'HARNESS_PARSE_ERROR',
|
|
39
|
+
];
|
|
40
|
+
const MESSAGE_KEY = {
|
|
41
|
+
HARNESS_PATH_DENIED: 'harness.error.pathDenied',
|
|
42
|
+
HARNESS_FORBIDDEN: 'harness.error.forbidden',
|
|
43
|
+
HARNESS_FILE_NOT_FOUND: 'harness.error.fileNotFound',
|
|
44
|
+
HARNESS_NOT_A_FILE: 'harness.error.notAFile',
|
|
45
|
+
HARNESS_ROOT_MISSING: 'harness.error.rootMissing',
|
|
46
|
+
HARNESS_STALE_WRITE: 'harness.error.staleWrite',
|
|
47
|
+
HARNESS_PARSE_ERROR: 'harness.error.parseError',
|
|
48
|
+
};
|
|
49
|
+
function handleError(req, res, error) {
|
|
50
|
+
const nodeError = error;
|
|
51
|
+
for (const key of MAPPED_CODES) {
|
|
52
|
+
const entry = HARNESS_ERRORS[key];
|
|
53
|
+
if (nodeError.code === entry.code) {
|
|
54
|
+
const body = {
|
|
55
|
+
code: entry.code,
|
|
56
|
+
message: req.t(MESSAGE_KEY[key]),
|
|
57
|
+
};
|
|
58
|
+
if (key === 'HARNESS_STALE_WRITE') {
|
|
59
|
+
body.details = { currentMtime: nodeError.currentMtime ?? '' };
|
|
60
|
+
}
|
|
61
|
+
if (key === 'HARNESS_FILE_NOT_FOUND' && nodeError.absolutePath) {
|
|
62
|
+
body.details = { absolutePath: nodeError.absolutePath };
|
|
63
|
+
}
|
|
64
|
+
res.status(entry.httpStatus).json({ error: body });
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
res.status(HARNESS_ERRORS.HARNESS_WRITE_ERROR.httpStatus).json({
|
|
69
|
+
error: {
|
|
70
|
+
code: HARNESS_ERRORS.HARNESS_WRITE_ERROR.code,
|
|
71
|
+
message: req.t('harness.error.writeError'),
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function parseSlug(req, res) {
|
|
76
|
+
const parsed = projectSlugSchema.safeParse(req.params.projectSlug);
|
|
77
|
+
if (!parsed.success) {
|
|
78
|
+
res.status(400).json({
|
|
79
|
+
error: { code: 'INVALID_REQUEST', message: parsed.error.issues[0]?.message ?? 'invalid projectSlug' },
|
|
80
|
+
});
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return parsed.data;
|
|
84
|
+
}
|
|
85
|
+
export const bmadCoreConfigController = {
|
|
86
|
+
/**
|
|
87
|
+
* GET /api/harness/bmad-config/:projectSlug
|
|
88
|
+
*
|
|
89
|
+
* Returns content + mtime + the known/unknown key partition. A malformed
|
|
90
|
+
* on-disk YAML does NOT 422 here (the API contract limits GET errors to
|
|
91
|
+
* FILE_NOT_FOUND / FORBIDDEN): the raw content is still returned with empty
|
|
92
|
+
* partitions so the client can open in Raw mode and repair the file.
|
|
93
|
+
*/
|
|
94
|
+
async read(req, res) {
|
|
95
|
+
const projectSlug = parseSlug(req, res);
|
|
96
|
+
if (!projectSlug)
|
|
97
|
+
return;
|
|
98
|
+
try {
|
|
99
|
+
const { content, mtime } = await bmadCoreConfigService.read(projectSlug);
|
|
100
|
+
let knownKeys = {};
|
|
101
|
+
let unknownKeys = {};
|
|
102
|
+
try {
|
|
103
|
+
const partition = bmadCoreConfigService.parseUnknownKeys(content);
|
|
104
|
+
knownKeys = partition.knownKeys;
|
|
105
|
+
unknownKeys = partition.unknownKeys;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Malformed YAML on disk — return raw content with empty partitions so
|
|
109
|
+
// the panel can still open and the user can fix it in Raw mode.
|
|
110
|
+
}
|
|
111
|
+
const response = { content, mtime, knownKeys, unknownKeys };
|
|
112
|
+
res.json(response);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
handleError(req, res, error);
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
/**
|
|
119
|
+
* PATCH /api/harness/bmad-config/:projectSlug
|
|
120
|
+
* body: { ops: HarnessStructuredPatchOp[]; expectedMtime? }
|
|
121
|
+
*
|
|
122
|
+
* AST patch preserving comments/order/quoting; unknown keys round-trip
|
|
123
|
+
* untouched. A malformed on-disk YAML surfaces as HARNESS_PARSE_ERROR (422)
|
|
124
|
+
* so the client switches to Raw mode.
|
|
125
|
+
*/
|
|
126
|
+
async patch(req, res) {
|
|
127
|
+
const projectSlug = parseSlug(req, res);
|
|
128
|
+
if (!projectSlug)
|
|
129
|
+
return;
|
|
130
|
+
const parsed = patchBodySchema.safeParse(req.body ?? {});
|
|
131
|
+
if (!parsed.success) {
|
|
132
|
+
res.status(400).json({
|
|
133
|
+
error: { code: 'INVALID_REQUEST', message: parsed.error.issues[0]?.message ?? 'invalid body' },
|
|
134
|
+
});
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
const result = await bmadCoreConfigService.patchKey(projectSlug, parsed.data.ops, parsed.data.expectedMtime);
|
|
139
|
+
res.json(result);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
handleError(req, res, error);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
/**
|
|
146
|
+
* PUT /api/harness/bmad-config/:projectSlug/raw
|
|
147
|
+
* body: { content: string; expectedMtime? }
|
|
148
|
+
*
|
|
149
|
+
* Raw-mode overwrite (bypasses the AST patch). STALE_WRITE guard still
|
|
150
|
+
* applies so a raw save cannot clobber an external edit silently.
|
|
151
|
+
*/
|
|
152
|
+
async writeRaw(req, res) {
|
|
153
|
+
const projectSlug = parseSlug(req, res);
|
|
154
|
+
if (!projectSlug)
|
|
155
|
+
return;
|
|
156
|
+
const parsed = rawBodySchema.safeParse(req.body ?? {});
|
|
157
|
+
if (!parsed.success) {
|
|
158
|
+
res.status(400).json({
|
|
159
|
+
error: { code: 'INVALID_REQUEST', message: parsed.error.issues[0]?.message ?? 'invalid body' },
|
|
160
|
+
});
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const result = await bmadCoreConfigService.writeRaw(projectSlug, parsed.data.content, parsed.data.expectedMtime);
|
|
165
|
+
res.json(result);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
handleError(req, res, error);
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=bmadCoreConfigController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bmadCoreConfigController.js","sourceRoot":"","sources":["../../src/controllers/bmadCoreConfigController.ts"],"names":[],"mappings":"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"}
|