hammoc 1.4.0 → 1.6.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 +428 -405
- package/bin/hammoc.js +0 -6
- package/package.json +100 -94
- package/packages/client/dist/assets/agentExampleHighlight-ltj9ce0U.js +1 -0
- package/packages/client/dist/assets/commandTokenHighlight-ji_ViMb4.js +1 -0
- package/packages/client/dist/assets/index-B-DiRGuz.js +2 -0
- package/packages/client/dist/assets/index-B09doO8H.js +139 -0
- package/packages/client/dist/assets/index-BT4RIi0U.js +1523 -0
- package/packages/client/dist/assets/index-DyNJ5jEW.css +32 -0
- package/packages/client/dist/assets/snippetTokenHighlight-CP3v4o2g.js +1 -0
- package/packages/client/dist/index.html +2 -2
- package/packages/client/dist/sw.js +1 -1
- package/packages/server/dist/app.d.ts.map +1 -1
- package/packages/server/dist/app.js +13 -21
- package/packages/server/dist/app.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/claudeMdController.d.ts +26 -0
- package/packages/server/dist/controllers/claudeMdController.d.ts.map +1 -0
- package/packages/server/dist/controllers/claudeMdController.js +158 -0
- package/packages/server/dist/controllers/claudeMdController.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 +35 -0
- package/packages/server/dist/controllers/harnessAgentController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessAgentController.js +372 -0
- package/packages/server/dist/controllers/harnessAgentController.js.map +1 -0
- 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 +35 -0
- package/packages/server/dist/controllers/harnessCommandController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessCommandController.js +415 -0
- package/packages/server/dist/controllers/harnessCommandController.js.map +1 -0
- package/packages/server/dist/controllers/harnessController.d.ts +21 -0
- package/packages/server/dist/controllers/harnessController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessController.js +176 -0
- package/packages/server/dist/controllers/harnessController.js.map +1 -0
- package/packages/server/dist/controllers/harnessHookController.d.ts +32 -0
- package/packages/server/dist/controllers/harnessHookController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessHookController.js +406 -0
- package/packages/server/dist/controllers/harnessHookController.js.map +1 -0
- package/packages/server/dist/controllers/harnessLintController.d.ts +18 -0
- package/packages/server/dist/controllers/harnessLintController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessLintController.js +72 -0
- package/packages/server/dist/controllers/harnessLintController.js.map +1 -0
- package/packages/server/dist/controllers/harnessMcpController.d.ts +28 -0
- package/packages/server/dist/controllers/harnessMcpController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessMcpController.js +371 -0
- package/packages/server/dist/controllers/harnessMcpController.js.map +1 -0
- package/packages/server/dist/controllers/harnessPluginController.d.ts +17 -0
- package/packages/server/dist/controllers/harnessPluginController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessPluginController.js +115 -0
- package/packages/server/dist/controllers/harnessPluginController.js.map +1 -0
- package/packages/server/dist/controllers/harnessShareScopeController.d.ts +24 -0
- package/packages/server/dist/controllers/harnessShareScopeController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessShareScopeController.js +120 -0
- package/packages/server/dist/controllers/harnessShareScopeController.js.map +1 -0
- package/packages/server/dist/controllers/harnessSkillController.d.ts +32 -0
- package/packages/server/dist/controllers/harnessSkillController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessSkillController.js +453 -0
- package/packages/server/dist/controllers/harnessSkillController.js.map +1 -0
- 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 +11 -0
- package/packages/server/dist/controllers/projectController.js.map +1 -1
- package/packages/server/dist/controllers/snippetController.d.ts +35 -0
- package/packages/server/dist/controllers/snippetController.d.ts.map +1 -0
- package/packages/server/dist/controllers/snippetController.js +294 -0
- package/packages/server/dist/controllers/snippetController.js.map +1 -0
- package/packages/server/dist/handlers/streamCallbacks.d.ts +8 -0
- package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
- package/packages/server/dist/handlers/streamCallbacks.js +8 -0
- package/packages/server/dist/handlers/streamCallbacks.js.map +1 -1
- package/packages/server/dist/handlers/websocket.d.ts +15 -0
- package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
- package/packages/server/dist/handlers/websocket.js +103 -2
- package/packages/server/dist/handlers/websocket.js.map +1 -1
- package/packages/server/dist/index.js +5 -0
- package/packages/server/dist/index.js.map +1 -1
- package/packages/server/dist/locales/en/server.json +37 -4
- package/packages/server/dist/locales/es/server.json +0 -4
- package/packages/server/dist/locales/ja/server.json +0 -4
- package/packages/server/dist/locales/ko/server.json +0 -4
- package/packages/server/dist/locales/pt/server.json +0 -4
- package/packages/server/dist/locales/zh-CN/server.json +0 -4
- package/packages/server/dist/routes/harness.d.ts +8 -0
- package/packages/server/dist/routes/harness.d.ts.map +1 -0
- package/packages/server/dist/routes/harness.js +150 -0
- package/packages/server/dist/routes/harness.js.map +1 -0
- package/packages/server/dist/routes/projects.d.ts.map +1 -1
- package/packages/server/dist/routes/projects.js +5 -60
- package/packages/server/dist/routes/projects.js.map +1 -1
- package/packages/server/dist/routes/snippets.d.ts +14 -0
- package/packages/server/dist/routes/snippets.d.ts.map +1 -0
- package/packages/server/dist/routes/snippets.js +27 -0
- package/packages/server/dist/routes/snippets.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 +15 -2
- package/packages/server/dist/services/bmadStatusService.d.ts.map +1 -1
- package/packages/server/dist/services/bmadStatusService.js +146 -37
- package/packages/server/dist/services/bmadStatusService.js.map +1 -1
- package/packages/server/dist/services/chatService.d.ts +3 -0
- package/packages/server/dist/services/chatService.d.ts.map +1 -1
- package/packages/server/dist/services/chatService.js +28 -7
- package/packages/server/dist/services/chatService.js.map +1 -1
- package/packages/server/dist/services/claudeMdService.d.ts +48 -0
- package/packages/server/dist/services/claudeMdService.d.ts.map +1 -0
- package/packages/server/dist/services/claudeMdService.js +240 -0
- package/packages/server/dist/services/claudeMdService.js.map +1 -0
- package/packages/server/dist/services/commandService.d.ts +10 -0
- package/packages/server/dist/services/commandService.d.ts.map +1 -1
- package/packages/server/dist/services/commandService.js +129 -4
- package/packages/server/dist/services/commandService.js.map +1 -1
- 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/fileWatcherService.d.ts +24 -0
- package/packages/server/dist/services/fileWatcherService.d.ts.map +1 -1
- package/packages/server/dist/services/fileWatcherService.js +232 -1
- package/packages/server/dist/services/fileWatcherService.js.map +1 -1
- package/packages/server/dist/services/harnessAgentService.d.ts +97 -0
- package/packages/server/dist/services/harnessAgentService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessAgentService.js +988 -0
- package/packages/server/dist/services/harnessAgentService.js.map +1 -0
- 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 +81 -0
- package/packages/server/dist/services/harnessCommandService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessCommandService.js +917 -0
- package/packages/server/dist/services/harnessCommandService.js.map +1 -0
- package/packages/server/dist/services/harnessHookService.d.ts +82 -0
- package/packages/server/dist/services/harnessHookService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessHookService.js +1112 -0
- package/packages/server/dist/services/harnessHookService.js.map +1 -0
- package/packages/server/dist/services/harnessLintService.d.ts +49 -0
- package/packages/server/dist/services/harnessLintService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessLintService.js +628 -0
- package/packages/server/dist/services/harnessLintService.js.map +1 -0
- package/packages/server/dist/services/harnessMcpService.d.ts +100 -0
- package/packages/server/dist/services/harnessMcpService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessMcpService.js +884 -0
- package/packages/server/dist/services/harnessMcpService.js.map +1 -0
- package/packages/server/dist/services/harnessPluginService.d.ts +66 -0
- package/packages/server/dist/services/harnessPluginService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessPluginService.js +559 -0
- package/packages/server/dist/services/harnessPluginService.js.map +1 -0
- package/packages/server/dist/services/harnessService.d.ts +40 -0
- package/packages/server/dist/services/harnessService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessService.js +222 -0
- package/packages/server/dist/services/harnessService.js.map +1 -0
- package/packages/server/dist/services/harnessShareScopeService.d.ts +50 -0
- package/packages/server/dist/services/harnessShareScopeService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessShareScopeService.js +158 -0
- package/packages/server/dist/services/harnessShareScopeService.js.map +1 -0
- package/packages/server/dist/services/harnessSkillService.d.ts +70 -0
- package/packages/server/dist/services/harnessSkillService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessSkillService.js +636 -0
- package/packages/server/dist/services/harnessSkillService.js.map +1 -0
- package/packages/server/dist/services/issueService.d.ts.map +1 -1
- package/packages/server/dist/services/issueService.js +3 -1
- package/packages/server/dist/services/issueService.js.map +1 -1
- package/packages/server/dist/services/manualSyncService.d.ts +19 -0
- package/packages/server/dist/services/manualSyncService.d.ts.map +1 -0
- package/packages/server/dist/services/manualSyncService.js +110 -0
- package/packages/server/dist/services/manualSyncService.js.map +1 -0
- 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/queueService.d.ts.map +1 -1
- package/packages/server/dist/services/queueService.js +48 -2
- package/packages/server/dist/services/queueService.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/snippetService.d.ts +54 -0
- package/packages/server/dist/services/snippetService.d.ts.map +1 -0
- package/packages/server/dist/services/snippetService.js +371 -0
- package/packages/server/dist/services/snippetService.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/utils/applyYamlFrontmatterPatch.d.ts +46 -0
- package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.d.ts.map +1 -0
- package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.js +125 -0
- package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.js.map +1 -0
- package/packages/server/dist/snippets/apply-qa-fixes +7 -5
- package/packages/server/dist/snippets/qa-review +5 -1
- package/packages/server/dist/snippets/split-commit +9 -0
- package/packages/server/dist/utils/applySecretsPolicy.d.ts +53 -0
- package/packages/server/dist/utils/applySecretsPolicy.d.ts.map +1 -0
- package/packages/server/dist/utils/applySecretsPolicy.js +204 -0
- package/packages/server/dist/utils/applySecretsPolicy.js.map +1 -0
- package/packages/server/dist/utils/assertNoSecretOnShared.d.ts +40 -0
- package/packages/server/dist/utils/assertNoSecretOnShared.d.ts.map +1 -0
- package/packages/server/dist/utils/assertNoSecretOnShared.js +47 -0
- package/packages/server/dist/utils/assertNoSecretOnShared.js.map +1 -0
- 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/bundledBinaryModelSupport.d.ts +7 -0
- package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts.map +1 -0
- package/packages/server/dist/utils/bundledBinaryModelSupport.js +107 -0
- package/packages/server/dist/utils/bundledBinaryModelSupport.js.map +1 -0
- package/packages/server/dist/utils/effortUtils.d.ts +2 -2
- package/packages/server/dist/utils/effortUtils.js +5 -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/gitignoreFilter.d.ts +23 -0
- package/packages/server/dist/utils/gitignoreFilter.d.ts.map +1 -0
- package/packages/server/dist/utils/gitignoreFilter.js +42 -0
- package/packages/server/dist/utils/gitignoreFilter.js.map +1 -0
- package/packages/server/dist/utils/harnessBundleSchema.d.ts +107 -0
- package/packages/server/dist/utils/harnessBundleSchema.d.ts.map +1 -0
- package/packages/server/dist/utils/harnessBundleSchema.js +89 -0
- package/packages/server/dist/utils/harnessBundleSchema.js.map +1 -0
- package/packages/server/dist/utils/harnessPaths.d.ts +74 -0
- package/packages/server/dist/utils/harnessPaths.d.ts.map +1 -0
- package/packages/server/dist/utils/harnessPaths.js +247 -0
- package/packages/server/dist/utils/harnessPaths.js.map +1 -0
- package/packages/server/dist/utils/secretHeuristic.d.ts +72 -0
- package/packages/server/dist/utils/secretHeuristic.d.ts.map +1 -0
- package/packages/server/dist/utils/secretHeuristic.js +163 -0
- package/packages/server/dist/utils/secretHeuristic.js.map +1 -0
- package/packages/server/dist/utils/secretPlaceholderNamer.d.ts +41 -0
- package/packages/server/dist/utils/secretPlaceholderNamer.d.ts.map +1 -0
- package/packages/server/dist/utils/secretPlaceholderNamer.js +81 -0
- package/packages/server/dist/utils/secretPlaceholderNamer.js.map +1 -0
- package/packages/server/dist/utils/serverPathResolver.d.ts +29 -0
- package/packages/server/dist/utils/serverPathResolver.d.ts.map +1 -0
- package/packages/server/dist/utils/serverPathResolver.js +59 -0
- package/packages/server/dist/utils/serverPathResolver.js.map +1 -0
- package/packages/server/dist/utils/snippetPaths.d.ts +61 -0
- package/packages/server/dist/utils/snippetPaths.d.ts.map +1 -0
- package/packages/server/dist/utils/snippetPaths.js +123 -0
- package/packages/server/dist/utils/snippetPaths.js.map +1 -0
- package/packages/server/dist/utils/structuredEditor.d.ts +34 -0
- package/packages/server/dist/utils/structuredEditor.d.ts.map +1 -0
- package/packages/server/dist/utils/structuredEditor.js +111 -0
- package/packages/server/dist/utils/structuredEditor.js.map +1 -0
- package/packages/server/package.json +6 -2
- package/packages/server/resources/internals/INDEX.md +25 -0
- package/packages/server/resources/internals/bmad-qa-fix-marker.md +32 -0
- package/packages/server/resources/internals/harness-files.md +85 -0
- package/packages/server/resources/internals/image-storage.md +43 -0
- package/packages/server/resources/internals/observability-storage.md +23 -0
- package/packages/server/resources/manual/01-getting-started.md +104 -0
- package/packages/server/resources/manual/02-chat.md +285 -0
- package/packages/server/resources/manual/03-sessions.md +48 -0
- package/packages/server/resources/manual/04-slash-commands-favorites.md +152 -0
- package/packages/server/resources/manual/05-projects.md +76 -0
- package/packages/server/resources/manual/06-file-explorer-editor.md +90 -0
- package/packages/server/resources/manual/07-git.md +94 -0
- package/packages/server/resources/manual/08-terminal.md +59 -0
- package/packages/server/resources/manual/09-queue-runner.md +262 -0
- package/packages/server/resources/manual/10-project-board.md +194 -0
- package/packages/server/resources/manual/11-bmad-method-integration.md +130 -0
- package/packages/server/resources/manual/12-harness-workbench.md +256 -0
- package/packages/server/resources/manual/13-settings.md +241 -0
- package/packages/server/resources/manual/14-keyboard-shortcuts.md +68 -0
- package/packages/server/resources/manual/15-environment-variables.md +28 -0
- package/packages/server/resources/manual/16-troubleshooting.md +110 -0
- package/packages/server/resources/manual/INDEX.md +60 -0
- 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 +10 -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/command.d.ts +3 -3
- package/packages/shared/dist/types/command.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/harness.d.ts +1211 -0
- package/packages/shared/dist/types/harness.d.ts.map +1 -0
- package/packages/shared/dist/types/harness.js +107 -0
- package/packages/shared/dist/types/harness.js.map +1 -0
- package/packages/shared/dist/types/harnessBundle.d.ts +205 -0
- package/packages/shared/dist/types/harnessBundle.d.ts.map +1 -0
- package/packages/shared/dist/types/harnessBundle.js +18 -0
- package/packages/shared/dist/types/harnessBundle.js.map +1 -0
- 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 +4 -0
- package/packages/shared/dist/types/preferences.d.ts.map +1 -1
- package/packages/shared/dist/types/preferences.js.map +1 -1
- package/packages/shared/dist/types/queue.d.ts +9 -0
- package/packages/shared/dist/types/queue.d.ts.map +1 -1
- package/packages/shared/dist/types/sdk.d.ts +1 -1
- package/packages/shared/dist/types/sdk.d.ts.map +1 -1
- package/packages/shared/dist/types/sdk.js +1 -1
- package/packages/shared/dist/types/sdk.js.map +1 -1
- package/packages/shared/dist/types/websocket.d.ts +10 -0
- package/packages/shared/dist/types/websocket.d.ts.map +1 -1
- package/packages/shared/dist/utils/markdownSections.d.ts +50 -0
- package/packages/shared/dist/utils/markdownSections.d.ts.map +1 -0
- package/packages/shared/dist/utils/markdownSections.js +111 -0
- package/packages/shared/dist/utils/markdownSections.js.map +1 -0
- package/packages/shared/dist/utils/queueParser.d.ts.map +1 -1
- package/packages/shared/dist/utils/queueParser.js +104 -0
- package/packages/shared/dist/utils/queueParser.js.map +1 -1
- package/scripts/build-manual-shards.mjs +100 -0
- package/packages/client/dist/assets/index-6jREnVYd.js +0 -2
- package/packages/client/dist/assets/index-BFF0iqyW.css +0 -32
- package/packages/client/dist/assets/index-BcI4y-fU.js +0 -1454
|
@@ -14,6 +14,10 @@ export var SDKErrorCode;
|
|
|
14
14
|
SDKErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
15
15
|
SDKErrorCode["INVALID_REQUEST"] = "INVALID_REQUEST";
|
|
16
16
|
SDKErrorCode["CONTEXT_OVERFLOW"] = "CONTEXT_OVERFLOW";
|
|
17
|
+
// Resume rejected because thinking blocks in the latest assistant turn no
|
|
18
|
+
// longer match their original signatures (typically after the CLI restructures
|
|
19
|
+
// a long conversation on resume). Recoverable by stripping thinking blocks.
|
|
20
|
+
SDKErrorCode["RESUME_THINKING_INVALID"] = "RESUME_THINKING_INVALID";
|
|
17
21
|
SDKErrorCode["SERVICE_UNAVAILABLE"] = "SERVICE_UNAVAILABLE";
|
|
18
22
|
SDKErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED";
|
|
19
23
|
SDKErrorCode["INVALID_PATH"] = "INVALID_PATH";
|
|
@@ -29,6 +33,7 @@ export const SDK_ERROR_STATUS = {
|
|
|
29
33
|
[SDKErrorCode.NETWORK_ERROR]: 503,
|
|
30
34
|
[SDKErrorCode.INVALID_REQUEST]: 400,
|
|
31
35
|
[SDKErrorCode.CONTEXT_OVERFLOW]: 400,
|
|
36
|
+
[SDKErrorCode.RESUME_THINKING_INVALID]: 400,
|
|
32
37
|
[SDKErrorCode.SERVICE_UNAVAILABLE]: 503,
|
|
33
38
|
[SDKErrorCode.PERMISSION_DENIED]: 403,
|
|
34
39
|
[SDKErrorCode.INVALID_PATH]: 400,
|
|
@@ -154,6 +159,18 @@ export function parseSDKError(error, lang) {
|
|
|
154
159
|
if (message.includes('abort') || error.name === 'AbortError') {
|
|
155
160
|
return new AbortedError(error, t?.('error.aborted'));
|
|
156
161
|
}
|
|
162
|
+
// Check for resume-time thinking-block signature rejection.
|
|
163
|
+
// The API rejects a resumed conversation whose latest assistant turn carries
|
|
164
|
+
// thinking blocks that no longer match their original signatures, e.g. after
|
|
165
|
+
// the CLI compacts/restructures a long conversation on resume. The message is:
|
|
166
|
+
// "`thinking` or `redacted_thinking` blocks in the latest assistant message
|
|
167
|
+
// cannot be modified. These blocks must remain as they were..."
|
|
168
|
+
if (message.includes('thinking') &&
|
|
169
|
+
(message.includes('cannot be modified') || message.includes('must remain as they were'))) {
|
|
170
|
+
return new SDKError(error.message, SDKErrorCode.RESUME_THINKING_INVALID, {
|
|
171
|
+
originalError: error,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
157
174
|
// Check for context overflow / token limit errors
|
|
158
175
|
if (message.includes('context window') ||
|
|
159
176
|
message.includes('context length') ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAN,IAAY,YAeX;AAfD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,2DAA2C,CAAA;IAC3C,6DAA6C,CAAA;IAC7C,+CAA+B,CAAA;IAC/B,mDAAmC,CAAA;IACnC,qDAAqC,CAAA;IACrC,0EAA0E;IAC1E,+EAA+E;IAC/E,4EAA4E;IAC5E,mEAAmD,CAAA;IACnD,2DAA2C,CAAA;IAC3C,uDAAuC,CAAA;IACvC,6CAA6B,CAAA;IAC7B,mCAAmB,CAAA;AACrB,CAAC,EAfW,YAAY,KAAZ,YAAY,QAevB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAiC;IAC5D,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG;IAC3B,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,GAAG;IACvC,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,GAAG;IACxC,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,GAAG;IACjC,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,GAAG;IACnC,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,GAAG;IACpC,CAAC,YAAY,CAAC,uBAAuB,CAAC,EAAE,GAAG;IAC3C,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,GAAG;IACvC,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,GAAG;IACrC,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,GAAG;IAChC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAe;IACnB,UAAU,CAAS;IACnB,UAAU,CAAU;IACpB,aAAa,CAAS;IAE/B,YACE,OAAe,EACf,OAAqB,YAAY,CAAC,OAAO,EACzC,OAGC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;QAE5C,8BAA8B;QAC9B,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,aAAqB,EAAE,EAAE,aAAqB,EAAE,OAAgB;QAC1E,KAAK,CACH,OAAO,IAAI,oDAAoD,EAC/D,YAAY,CAAC,mBAAmB,EAChC,EAAE,UAAU,EAAE,aAAa,EAAE,CAC9B,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,aAAqB,EAAE,OAAgB;QACjD,KAAK,CACH,OAAO,IAAI,iEAAiE,EAC5E,YAAY,CAAC,oBAAoB,EACjC,EAAE,aAAa,EAAE,CAClB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,aAAqB,EAAE,OAAgB;QACjD,KAAK,CACH,OAAO,IAAI,oEAAoE,EAC/E,YAAY,CAAC,aAAa,EAC1B,EAAE,aAAa,EAAE,CAClB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IACnC,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,aAAqB,EAAE,OAAgB;QAC/D,KAAK,CACH,OAAO,IAAI,iBAAiB,IAAI,EAAE,EAClC,YAAY,CAAC,YAAY,EACzB,EAAE,aAAa,EAAE,CAClB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,QAAQ;IACnD,YAAY,aAAqB,EAAE,OAAgB;QACjD,KAAK,CACH,OAAO,IAAI,wDAAwD,EACnE,YAAY,CAAC,mBAAmB,EAChC,EAAE,aAAa,EAAE,CAClB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,aAAqB,EAAE,OAAgB;QACjD,KAAK,CACH,OAAO,IAAI,sBAAsB,EACjC,YAAY,CAAC,OAAO,EACpB,EAAE,aAAa,EAAE,CAClB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,IAAa;IACzD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAE5C,8BAA8B;QAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,kCAAkC;QAClC,IACE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EACzB,CAAC;YACD,OAAO,IAAI,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,2BAA2B;QAC3B,IACE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC7B,CAAC;YACD,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC7D,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,4DAA4D;QAC5D,6EAA6E;QAC7E,6EAA6E;QAC7E,+EAA+E;QAC/E,4EAA4E;QAC5E,iEAAiE;QACjE,IACE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC5B,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,EACxF,CAAC;YACD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,uBAAuB,EAAE;gBACvE,aAAa,EAAE,KAAK;aACrB,CAAC,CAAC;QACL,CAAC;QAED,kDAAkD;QAClD,IACE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC9B,CAAC;YACD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,gBAAgB,EAAE;gBAChE,aAAa,EAAE,KAAK;aACrB,CAAC,CAAC;QACL,CAAC;QAED,gCAAgC;QAChC,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,uBAAuB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,+BAA+B;QAC/B,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE;YACvD,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,OAAO,IAAI,QAAQ,CACjB,MAAM,CAAC,KAAK,CAAC,EACb,YAAY,CAAC,OAAO,CACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Story 28.0.5 (Task 5): thin wrapper around `ignore` (kaelzhang/node-ignore).
|
|
3
|
+
*
|
|
4
|
+
* Originally introduced as preemptive infrastructure under the placeholder
|
|
5
|
+
* label "Epic 30 Story 10" (the pre-BMad-renumbering forward reference);
|
|
6
|
+
* Story 30.1 fills the call-sites (`harnessShareScopeService` + the
|
|
7
|
+
* client-side `ShareBadge` / `ModeBanner`) by consuming `loadGitignore()` +
|
|
8
|
+
* `isIgnored()` to drive the "shared vs. local vs. fully-ignored" badges on
|
|
9
|
+
* the harness workbench tree.
|
|
10
|
+
*/
|
|
11
|
+
import { type Ignore } from 'ignore';
|
|
12
|
+
/**
|
|
13
|
+
* Load `<rootPath>/.gitignore` into an `Ignore` matcher. Missing files yield
|
|
14
|
+
* a matcher that never excludes anything (so callers can treat "no
|
|
15
|
+
* .gitignore" as "nothing is ignored" without a separate branch).
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadGitignore(rootPath: string): Promise<Ignore>;
|
|
18
|
+
/**
|
|
19
|
+
* Test a relative path against the matcher. Input paths are normalized to
|
|
20
|
+
* POSIX separators as required by `ignore`'s contract.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isIgnored(matcher: Ignore, relativePath: string): boolean;
|
|
23
|
+
//# sourceMappingURL=gitignoreFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignoreFilter.d.ts","sourceRoot":"","sources":["../../src/utils/gitignoreFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAsB,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEpD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAarE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAGxE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Story 28.0.5 (Task 5): thin wrapper around `ignore` (kaelzhang/node-ignore).
|
|
3
|
+
*
|
|
4
|
+
* Originally introduced as preemptive infrastructure under the placeholder
|
|
5
|
+
* label "Epic 30 Story 10" (the pre-BMad-renumbering forward reference);
|
|
6
|
+
* Story 30.1 fills the call-sites (`harnessShareScopeService` + the
|
|
7
|
+
* client-side `ShareBadge` / `ModeBanner`) by consuming `loadGitignore()` +
|
|
8
|
+
* `isIgnored()` to drive the "shared vs. local vs. fully-ignored" badges on
|
|
9
|
+
* the harness workbench tree.
|
|
10
|
+
*/
|
|
11
|
+
import fs from 'fs/promises';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import ignoreFactory from 'ignore';
|
|
14
|
+
/**
|
|
15
|
+
* Load `<rootPath>/.gitignore` into an `Ignore` matcher. Missing files yield
|
|
16
|
+
* a matcher that never excludes anything (so callers can treat "no
|
|
17
|
+
* .gitignore" as "nothing is ignored" without a separate branch).
|
|
18
|
+
*/
|
|
19
|
+
export async function loadGitignore(rootPath) {
|
|
20
|
+
const matcher = ignoreFactory();
|
|
21
|
+
const gitignorePath = path.join(rootPath, '.gitignore');
|
|
22
|
+
try {
|
|
23
|
+
const content = await fs.readFile(gitignorePath, 'utf-8');
|
|
24
|
+
matcher.add(content);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error.code !== 'ENOENT') {
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
// No .gitignore — return an empty matcher.
|
|
31
|
+
}
|
|
32
|
+
return matcher;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Test a relative path against the matcher. Input paths are normalized to
|
|
36
|
+
* POSIX separators as required by `ignore`'s contract.
|
|
37
|
+
*/
|
|
38
|
+
export function isIgnored(matcher, relativePath) {
|
|
39
|
+
const posix = relativePath.replace(/\\/g, '/');
|
|
40
|
+
return matcher.ignores(posix);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=gitignoreFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignoreFilter.js","sourceRoot":"","sources":["../../src/utils/gitignoreFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,aAA8B,MAAM,QAAQ,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,2CAA2C;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,YAAoB;IAC7D,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Story 30.3 (Task 4.2): Zod runtime validation of `manifest.json` inside the
|
|
3
|
+
* harness export/import bundle. Lives on the server because zod is a
|
|
4
|
+
* server-only dep — the shared package exposes only the TypeScript surface
|
|
5
|
+
* (`packages/shared/src/types/harnessBundle.ts`).
|
|
6
|
+
*
|
|
7
|
+
* Two boundaries call this schema:
|
|
8
|
+
* - the bundle service when unpacking an import ZIP (AC5.c "malformed
|
|
9
|
+
* manifest" branch)
|
|
10
|
+
* - the controller when accepting an export request body (AC1, AC2, AC5)
|
|
11
|
+
*
|
|
12
|
+
* Both reuse the discriminator/value sets exported from `@hammoc/shared` so
|
|
13
|
+
* the schema and types stay in lockstep.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
/**
|
|
17
|
+
* Strict manifest schema — `bundleVersion` is locked to the literal 1 so
|
|
18
|
+
* future-version bundles fall through to the AC5.a "futureBundle" branch
|
|
19
|
+
* before this schema is even consulted (the import service inspects the raw
|
|
20
|
+
* JSON's version field first, then runs full Zod validation).
|
|
21
|
+
*
|
|
22
|
+
* `includes` is intentionally LOOSE (`z.array(z.string())`) rather than
|
|
23
|
+
* `z.array(sectionSchema)` so a `bundleVersion === 1` manifest carrying a
|
|
24
|
+
* future-domain stranger section (e.g. `['claude-md', 'future-section']`)
|
|
25
|
+
* still parses. The import service's `computePreview` then surfaces unknown
|
|
26
|
+
* sections via `preview.unknownSections` per AC5.b instead of bailing with
|
|
27
|
+
* `compatibility: 'malformed'`. Export-request validation
|
|
28
|
+
* (`exportBundleRequestSchema`) keeps `sectionSchema` strict — we never
|
|
29
|
+
* accept unknown sections from outbound callers, only tolerate them
|
|
30
|
+
* inbound.
|
|
31
|
+
*/
|
|
32
|
+
export declare const bundleManifestSchema: z.ZodObject<{
|
|
33
|
+
bundleVersion: z.ZodLiteral<1>;
|
|
34
|
+
hammocVersion: z.ZodString;
|
|
35
|
+
claudeCodeSpecVersion: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
36
|
+
createdAt: z.ZodString;
|
|
37
|
+
sourceProjectSlug: z.ZodString;
|
|
38
|
+
includes: z.ZodArray<z.ZodString>;
|
|
39
|
+
secretsPolicy: z.ZodEnum<{
|
|
40
|
+
excluded: "excluded";
|
|
41
|
+
placeholder: "placeholder";
|
|
42
|
+
"included-explicit": "included-explicit";
|
|
43
|
+
}>;
|
|
44
|
+
pluginDependencies: z.ZodArray<z.ZodObject<{
|
|
45
|
+
name: z.ZodString;
|
|
46
|
+
marketplace: z.ZodString;
|
|
47
|
+
version: z.ZodOptional<z.ZodString>;
|
|
48
|
+
}, z.core.$strip>>;
|
|
49
|
+
items: z.ZodArray<z.ZodObject<{
|
|
50
|
+
domain: z.ZodEnum<{
|
|
51
|
+
agent: "agent";
|
|
52
|
+
command: "command";
|
|
53
|
+
skill: "skill";
|
|
54
|
+
"claude-md": "claude-md";
|
|
55
|
+
mcp: "mcp";
|
|
56
|
+
hook: "hook";
|
|
57
|
+
bmad: "bmad";
|
|
58
|
+
}>;
|
|
59
|
+
identity: z.ZodString;
|
|
60
|
+
relativePath: z.ZodString;
|
|
61
|
+
sourceShareScope: z.ZodEnum<{
|
|
62
|
+
local: "local";
|
|
63
|
+
shared: "shared";
|
|
64
|
+
fullyIgnored: "fullyIgnored";
|
|
65
|
+
}>;
|
|
66
|
+
}, z.core.$strip>>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
export type BundleManifestParsed = z.infer<typeof bundleManifestSchema>;
|
|
69
|
+
/**
|
|
70
|
+
* Loose schema used for "is this even a manifest?" detection before the
|
|
71
|
+
* strict schema runs. Lets the import service distinguish "totally garbage
|
|
72
|
+
* JSON" (no bundleVersion field at all) from "future bundle" (bundleVersion
|
|
73
|
+
* is a number outside our supported range).
|
|
74
|
+
*/
|
|
75
|
+
export declare const loosenedManifestSchema: z.ZodObject<{
|
|
76
|
+
bundleVersion: z.ZodOptional<z.ZodNumber>;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
export declare const exportBundleRequestSchema: z.ZodObject<{
|
|
79
|
+
projectSlug: z.ZodString;
|
|
80
|
+
includes: z.ZodArray<z.ZodEnum<{
|
|
81
|
+
agents: "agents";
|
|
82
|
+
hooks: "hooks";
|
|
83
|
+
skills: "skills";
|
|
84
|
+
commands: "commands";
|
|
85
|
+
"claude-md": "claude-md";
|
|
86
|
+
mcp: "mcp";
|
|
87
|
+
bmad: "bmad";
|
|
88
|
+
}>>;
|
|
89
|
+
secretsPolicy: z.ZodEnum<{
|
|
90
|
+
excluded: "excluded";
|
|
91
|
+
placeholder: "placeholder";
|
|
92
|
+
"included-explicit": "included-explicit";
|
|
93
|
+
}>;
|
|
94
|
+
}, z.core.$strip>;
|
|
95
|
+
export declare const importApplyRequestSchema: z.ZodObject<{
|
|
96
|
+
bundleToken: z.ZodString;
|
|
97
|
+
itemActions: z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
98
|
+
rename: "rename";
|
|
99
|
+
overwrite: "overwrite";
|
|
100
|
+
skip: "skip";
|
|
101
|
+
appendSection: "appendSection";
|
|
102
|
+
}>>;
|
|
103
|
+
}, z.core.$strip>;
|
|
104
|
+
export declare const pluginDepsQuerySchema: z.ZodObject<{
|
|
105
|
+
projectSlug: z.ZodString;
|
|
106
|
+
}, z.core.$strip>;
|
|
107
|
+
//# sourceMappingURL=harnessBundleSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harnessBundleSchema.d.ts","sourceRoot":"","sources":["../../src/utils/harnessBundleSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0CxB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAU/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;iBAEjC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;iBAIpC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;iBAGnC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;iBAEhC,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Story 30.3 (Task 4.2): Zod runtime validation of `manifest.json` inside the
|
|
3
|
+
* harness export/import bundle. Lives on the server because zod is a
|
|
4
|
+
* server-only dep — the shared package exposes only the TypeScript surface
|
|
5
|
+
* (`packages/shared/src/types/harnessBundle.ts`).
|
|
6
|
+
*
|
|
7
|
+
* Two boundaries call this schema:
|
|
8
|
+
* - the bundle service when unpacking an import ZIP (AC5.c "malformed
|
|
9
|
+
* manifest" branch)
|
|
10
|
+
* - the controller when accepting an export request body (AC1, AC2, AC5)
|
|
11
|
+
*
|
|
12
|
+
* Both reuse the discriminator/value sets exported from `@hammoc/shared` so
|
|
13
|
+
* the schema and types stay in lockstep.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
import { BUNDLE_SECTIONS, HARNESS_BUNDLE_VERSION, } from '@hammoc/shared';
|
|
17
|
+
const sectionSchema = z.enum(BUNDLE_SECTIONS);
|
|
18
|
+
const secretsPolicySchema = z.enum(['excluded', 'placeholder', 'included-explicit']);
|
|
19
|
+
const itemDomainSchema = z.enum([
|
|
20
|
+
'claude-md',
|
|
21
|
+
'skill',
|
|
22
|
+
'mcp',
|
|
23
|
+
'hook',
|
|
24
|
+
'command',
|
|
25
|
+
'agent',
|
|
26
|
+
'bmad',
|
|
27
|
+
]);
|
|
28
|
+
const sourceShareScopeSchema = z.enum(['shared', 'local', 'fullyIgnored']);
|
|
29
|
+
const itemActionSchema = z.enum(['overwrite', 'skip', 'rename', 'appendSection']);
|
|
30
|
+
const pluginRefSchema = z.object({
|
|
31
|
+
name: z.string().min(1),
|
|
32
|
+
marketplace: z.string().min(1),
|
|
33
|
+
version: z.string().optional(),
|
|
34
|
+
});
|
|
35
|
+
const bundleItemSchema = z.object({
|
|
36
|
+
domain: itemDomainSchema,
|
|
37
|
+
identity: z.string().min(1),
|
|
38
|
+
relativePath: z.string().min(1),
|
|
39
|
+
sourceShareScope: sourceShareScopeSchema,
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* Strict manifest schema — `bundleVersion` is locked to the literal 1 so
|
|
43
|
+
* future-version bundles fall through to the AC5.a "futureBundle" branch
|
|
44
|
+
* before this schema is even consulted (the import service inspects the raw
|
|
45
|
+
* JSON's version field first, then runs full Zod validation).
|
|
46
|
+
*
|
|
47
|
+
* `includes` is intentionally LOOSE (`z.array(z.string())`) rather than
|
|
48
|
+
* `z.array(sectionSchema)` so a `bundleVersion === 1` manifest carrying a
|
|
49
|
+
* future-domain stranger section (e.g. `['claude-md', 'future-section']`)
|
|
50
|
+
* still parses. The import service's `computePreview` then surfaces unknown
|
|
51
|
+
* sections via `preview.unknownSections` per AC5.b instead of bailing with
|
|
52
|
+
* `compatibility: 'malformed'`. Export-request validation
|
|
53
|
+
* (`exportBundleRequestSchema`) keeps `sectionSchema` strict — we never
|
|
54
|
+
* accept unknown sections from outbound callers, only tolerate them
|
|
55
|
+
* inbound.
|
|
56
|
+
*/
|
|
57
|
+
export const bundleManifestSchema = z.object({
|
|
58
|
+
bundleVersion: z.literal(HARNESS_BUNDLE_VERSION),
|
|
59
|
+
hammocVersion: z.string().min(1),
|
|
60
|
+
claudeCodeSpecVersion: z.union([z.string().min(1), z.null()]),
|
|
61
|
+
createdAt: z.string().min(1),
|
|
62
|
+
sourceProjectSlug: z.string().min(1),
|
|
63
|
+
includes: z.array(z.string().min(1)),
|
|
64
|
+
secretsPolicy: secretsPolicySchema,
|
|
65
|
+
pluginDependencies: z.array(pluginRefSchema),
|
|
66
|
+
items: z.array(bundleItemSchema),
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Loose schema used for "is this even a manifest?" detection before the
|
|
70
|
+
* strict schema runs. Lets the import service distinguish "totally garbage
|
|
71
|
+
* JSON" (no bundleVersion field at all) from "future bundle" (bundleVersion
|
|
72
|
+
* is a number outside our supported range).
|
|
73
|
+
*/
|
|
74
|
+
export const loosenedManifestSchema = z.object({
|
|
75
|
+
bundleVersion: z.number().int().optional(),
|
|
76
|
+
});
|
|
77
|
+
export const exportBundleRequestSchema = z.object({
|
|
78
|
+
projectSlug: z.string().min(1),
|
|
79
|
+
includes: z.array(sectionSchema).min(1, 'at least one section is required'),
|
|
80
|
+
secretsPolicy: secretsPolicySchema,
|
|
81
|
+
});
|
|
82
|
+
export const importApplyRequestSchema = z.object({
|
|
83
|
+
bundleToken: z.string().min(1),
|
|
84
|
+
itemActions: z.record(z.string(), itemActionSchema),
|
|
85
|
+
});
|
|
86
|
+
export const pluginDepsQuerySchema = z.object({
|
|
87
|
+
projectSlug: z.string().min(1),
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=harnessBundleSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harnessBundleSchema.js","sourceRoot":"","sources":["../../src/utils/harnessBundleSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Story 28.0.5: Harness workbench path resolver.
|
|
3
|
+
*
|
|
4
|
+
* Resolves `~/.claude` (user scope) and `<projectRoot>/.claude` (project scope)
|
|
5
|
+
* into absolute paths and enforces that any relative path requested by the
|
|
6
|
+
* caller stays inside the resolved root. Every entry point into `harnessService`
|
|
7
|
+
* MUST route through `resolveHarnessPath` so that Windows/POSIX separator
|
|
8
|
+
* mixing, drive letters, UNC paths, and null-byte inputs cannot escape the
|
|
9
|
+
* subtree.
|
|
10
|
+
*/
|
|
11
|
+
import { type HarnessPathRef } from '@hammoc/shared';
|
|
12
|
+
/** Return the absolute path to the user-scope harness root (`~/.claude`). */
|
|
13
|
+
export declare function getUserHarnessRoot(): string;
|
|
14
|
+
/** Return the absolute path to the project-scope harness root (`<project>/.claude`). */
|
|
15
|
+
export declare function getProjectHarnessRoot(projectSlug: string): Promise<string>;
|
|
16
|
+
export interface ResolvedHarnessPath {
|
|
17
|
+
resolvedRoot: string;
|
|
18
|
+
absolutePath: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resolve a `HarnessPathRef` to an absolute path, guaranteed to sit inside the
|
|
22
|
+
* resolved root. Throws `HARNESS_PATH_DENIED` for any traversal attempt.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveHarnessPath(ref: HarnessPathRef): Promise<ResolvedHarnessPath>;
|
|
25
|
+
/**
|
|
26
|
+
* Story 29.1 (AC6): resolve the project-root `<projectRoot>/CLAUDE.md` path —
|
|
27
|
+
* the single file in the harness workbench whose location sits OUTSIDE the
|
|
28
|
+
* project's `.claude/` subtree, so `resolveHarnessPath` would reject it as a
|
|
29
|
+
* traversal. This helper accepts only `projectSlug` (no caller-supplied
|
|
30
|
+
* relative path) and returns the canonical CLAUDE.md location alongside the
|
|
31
|
+
* project root, so traversal is impossible by construction.
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveProjectClaudeMdPath(projectSlug: string): Promise<ResolvedHarnessPath>;
|
|
34
|
+
/**
|
|
35
|
+
* Story 30.7 (Task A.5): resolve the project-root `<projectRoot>/.gitignore`
|
|
36
|
+
* path. Like `resolveProjectClaudeMdPath`, `.gitignore` sits outside the
|
|
37
|
+
* `.claude/` subtree, so `resolveHarnessPath` cannot reach it. This helper
|
|
38
|
+
* accepts only `projectSlug` (no caller-supplied relative path), so traversal
|
|
39
|
+
* is impossible by construction. Used by
|
|
40
|
+
* `harnessShareScopeService.appendGitignorePattern()` to safely append
|
|
41
|
+
* patterns like `**\/.claude/**\/*.local.*` when the sibling-save flow detects
|
|
42
|
+
* the pattern is missing.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveProjectGitignorePath(projectSlug: string): Promise<ResolvedHarnessPath>;
|
|
45
|
+
/**
|
|
46
|
+
* Story 31.1 (Task A.1): resolve the project-root
|
|
47
|
+
* `<projectRoot>/.bmad-core/core-config.yaml` path. Like
|
|
48
|
+
* `resolveProjectClaudeMdPath` / `resolveProjectGitignorePath`, the
|
|
49
|
+
* `.bmad-core/` tree sits OUTSIDE the project's `.claude/` subtree, so
|
|
50
|
+
* `resolveHarnessPath` would reject it as a traversal. This helper accepts
|
|
51
|
+
* only `projectSlug` (no caller-supplied relative path), so traversal is
|
|
52
|
+
* impossible by construction. Used by `bmadCoreConfigService` to read/patch
|
|
53
|
+
* the single config file the BMad config form edits.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveBmadCoreConfigPath(projectSlug: string): Promise<ResolvedHarnessPath>;
|
|
56
|
+
/**
|
|
57
|
+
* Story 31.2 (Task A.1): resolve the context-builder manifest path
|
|
58
|
+
* `<projectRoot>/.hammoc/context-builder.json`. Like the `.bmad-core/`
|
|
59
|
+
* resolver, the `.hammoc/` tree sits OUTSIDE the project's `.claude/` subtree,
|
|
60
|
+
* so `resolveHarnessPath` would reject it as a traversal. Accepts only
|
|
61
|
+
* `projectSlug` (no caller-supplied relative path), so traversal is impossible
|
|
62
|
+
* by construction. Used by `contextBuilderService` as the single manifest R/W
|
|
63
|
+
* chokepoint (no other module touches this path via `fs`).
|
|
64
|
+
*/
|
|
65
|
+
export declare function resolveContextBuilderManifestPath(projectSlug: string): Promise<ResolvedHarnessPath>;
|
|
66
|
+
/**
|
|
67
|
+
* Story 31.2 (Task A.1): resolve the generated script path
|
|
68
|
+
* `<projectRoot>/.hammoc/hooks/context-builder.mjs`. Same traversal-proof
|
|
69
|
+
* construction as `resolveContextBuilderManifestPath`. The generated `.mjs`
|
|
70
|
+
* runs standalone at every session start, assembling the `additionalContext`
|
|
71
|
+
* JSON the SessionStart hook emits.
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolveContextBuilderScriptPath(projectSlug: string): Promise<ResolvedHarnessPath>;
|
|
74
|
+
//# sourceMappingURL=harnessPaths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harnessPaths.d.ts","sourceRoot":"","sources":["../../src/utils/harnessPaths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAWrE,6EAA6E;AAC7E,wBAAgB,kBAAkB,IAAI,MAAM,CAO3C;AAED,wFAAwF;AACxF,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBhF;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwC1F;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyBlG;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwBnG;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwBjG;AAED;;;;;;;;GAQG;AACH,wBAAsB,iCAAiC,CACrD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAI9B;AAED;;;;;;GAMG;AACH,wBAAsB,+BAA+B,CACnD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAI9B"}
|