xtep-workspace 1.10.10
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/CHANGELOG.md +525 -0
- package/README.md +188 -0
- package/config/component-versions.json +16 -0
- package/config/scenarioCapabilities.json +29 -0
- package/config/version-notes.yaml +244 -0
- package/dist/adapters/OutputAdapter.d.ts +79 -0
- package/dist/adapters/OutputAdapter.d.ts.map +1 -0
- package/dist/adapters/OutputAdapter.js +124 -0
- package/dist/adapters/OutputAdapter.js.map +1 -0
- package/dist/cli/check-node-version.d.ts +3 -0
- package/dist/cli/check-node-version.d.ts.map +1 -0
- package/dist/cli/check-node-version.js +153 -0
- package/dist/cli/check-node-version.js.map +1 -0
- package/dist/cli/plugins.d.ts +41 -0
- package/dist/cli/plugins.d.ts.map +1 -0
- package/dist/cli/plugins.js +742 -0
- package/dist/cli/plugins.js.map +1 -0
- package/dist/cli/rebuild.d.ts +63 -0
- package/dist/cli/rebuild.d.ts.map +1 -0
- package/dist/cli/rebuild.js +989 -0
- package/dist/cli/rebuild.js.map +1 -0
- package/dist/cli/repair.d.ts +7 -0
- package/dist/cli/repair.d.ts.map +1 -0
- package/dist/cli/repair.js +925 -0
- package/dist/cli/repair.js.map +1 -0
- package/dist/cli/setup.d.ts +7 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +452 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/update.d.ts +10 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +426 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/webui.d.ts +6 -0
- package/dist/cli/webui.d.ts.map +1 -0
- package/dist/cli/webui.js +210 -0
- package/dist/cli/webui.js.map +1 -0
- package/dist/http/index.d.ts +3 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +15 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/middleware/errorHandler.d.ts +16 -0
- package/dist/http/middleware/errorHandler.d.ts.map +1 -0
- package/dist/http/middleware/errorHandler.js +79 -0
- package/dist/http/middleware/errorHandler.js.map +1 -0
- package/dist/http/routes/admin.d.ts +3 -0
- package/dist/http/routes/admin.d.ts.map +1 -0
- package/dist/http/routes/admin.js +730 -0
- package/dist/http/routes/admin.js.map +1 -0
- package/dist/http/routes/backup.d.ts +3 -0
- package/dist/http/routes/backup.d.ts.map +1 -0
- package/dist/http/routes/backup.js +172 -0
- package/dist/http/routes/backup.js.map +1 -0
- package/dist/http/routes/config.d.ts +3 -0
- package/dist/http/routes/config.d.ts.map +1 -0
- package/dist/http/routes/config.js +157 -0
- package/dist/http/routes/config.js.map +1 -0
- package/dist/http/routes/context.d.ts +3 -0
- package/dist/http/routes/context.d.ts.map +1 -0
- package/dist/http/routes/context.js +82 -0
- package/dist/http/routes/context.js.map +1 -0
- package/dist/http/routes/log.d.ts +3 -0
- package/dist/http/routes/log.d.ts.map +1 -0
- package/dist/http/routes/log.js +105 -0
- package/dist/http/routes/log.js.map +1 -0
- package/dist/http/routes/memo.d.ts +6 -0
- package/dist/http/routes/memo.d.ts.map +1 -0
- package/dist/http/routes/memo.js +29 -0
- package/dist/http/routes/memo.js.map +1 -0
- package/dist/http/routes/node.d.ts +3 -0
- package/dist/http/routes/node.d.ts.map +1 -0
- package/dist/http/routes/node.js +251 -0
- package/dist/http/routes/node.js.map +1 -0
- package/dist/http/routes/state.d.ts +3 -0
- package/dist/http/routes/state.d.ts.map +1 -0
- package/dist/http/routes/state.js +48 -0
- package/dist/http/routes/state.js.map +1 -0
- package/dist/http/routes/workspace.d.ts +3 -0
- package/dist/http/routes/workspace.d.ts.map +1 -0
- package/dist/http/routes/workspace.js +249 -0
- package/dist/http/routes/workspace.js.map +1 -0
- package/dist/http/server.d.ts +10 -0
- package/dist/http/server.d.ts.map +1 -0
- package/dist/http/server.js +284 -0
- package/dist/http/server.js.map +1 -0
- package/dist/http/services.d.ts +93 -0
- package/dist/http/services.d.ts.map +1 -0
- package/dist/http/services.js +297 -0
- package/dist/http/services.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1073 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/guidanceContent.d.ts +18 -0
- package/dist/prompts/guidanceContent.d.ts.map +1 -0
- package/dist/prompts/guidanceContent.js +814 -0
- package/dist/prompts/guidanceContent.js.map +1 -0
- package/dist/prompts/index.d.ts +2 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +4 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/instructions.d.ts +56 -0
- package/dist/prompts/instructions.d.ts.map +1 -0
- package/dist/prompts/instructions.js +1343 -0
- package/dist/prompts/instructions.js.map +1 -0
- package/dist/services/BackupService.d.ts +104 -0
- package/dist/services/BackupService.d.ts.map +1 -0
- package/dist/services/BackupService.js +549 -0
- package/dist/services/BackupService.js.map +1 -0
- package/dist/services/CapabilityService.d.ts +38 -0
- package/dist/services/CapabilityService.d.ts.map +1 -0
- package/dist/services/CapabilityService.js +256 -0
- package/dist/services/CapabilityService.js.map +1 -0
- package/dist/services/ConfigService.d.ts +35 -0
- package/dist/services/ConfigService.d.ts.map +1 -0
- package/dist/services/ConfigService.js +105 -0
- package/dist/services/ConfigService.js.map +1 -0
- package/dist/services/ContextService.d.ts +65 -0
- package/dist/services/ContextService.d.ts.map +1 -0
- package/dist/services/ContextService.js +503 -0
- package/dist/services/ContextService.js.map +1 -0
- package/dist/services/DetectionService.d.ts +76 -0
- package/dist/services/DetectionService.d.ts.map +1 -0
- package/dist/services/DetectionService.js +262 -0
- package/dist/services/DetectionService.js.map +1 -0
- package/dist/services/DispatchService.d.ts +267 -0
- package/dist/services/DispatchService.d.ts.map +1 -0
- package/dist/services/DispatchService.js +1357 -0
- package/dist/services/DispatchService.js.map +1 -0
- package/dist/services/EventService.d.ts +81 -0
- package/dist/services/EventService.d.ts.map +1 -0
- package/dist/services/EventService.js +187 -0
- package/dist/services/EventService.js.map +1 -0
- package/dist/services/GuidanceService.d.ts +64 -0
- package/dist/services/GuidanceService.d.ts.map +1 -0
- package/dist/services/GuidanceService.js +259 -0
- package/dist/services/GuidanceService.js.map +1 -0
- package/dist/services/HealthService.d.ts +43 -0
- package/dist/services/HealthService.d.ts.map +1 -0
- package/dist/services/HealthService.js +276 -0
- package/dist/services/HealthService.js.map +1 -0
- package/dist/services/InstallationService.d.ts +62 -0
- package/dist/services/InstallationService.d.ts.map +1 -0
- package/dist/services/InstallationService.js +204 -0
- package/dist/services/InstallationService.js.map +1 -0
- package/dist/services/LogService.d.ts +35 -0
- package/dist/services/LogService.d.ts.map +1 -0
- package/dist/services/LogService.js +189 -0
- package/dist/services/LogService.js.map +1 -0
- package/dist/services/MemoService.d.ts +39 -0
- package/dist/services/MemoService.d.ts.map +1 -0
- package/dist/services/MemoService.js +288 -0
- package/dist/services/MemoService.js.map +1 -0
- package/dist/services/NodeService.d.ts +90 -0
- package/dist/services/NodeService.d.ts.map +1 -0
- package/dist/services/NodeService.js +958 -0
- package/dist/services/NodeService.js.map +1 -0
- package/dist/services/OpenSpecParser.d.ts +43 -0
- package/dist/services/OpenSpecParser.d.ts.map +1 -0
- package/dist/services/OpenSpecParser.js +191 -0
- package/dist/services/OpenSpecParser.js.map +1 -0
- package/dist/services/ReferenceService.d.ts +35 -0
- package/dist/services/ReferenceService.d.ts.map +1 -0
- package/dist/services/ReferenceService.js +195 -0
- package/dist/services/ReferenceService.js.map +1 -0
- package/dist/services/RepairService.d.ts +36 -0
- package/dist/services/RepairService.d.ts.map +1 -0
- package/dist/services/RepairService.js +429 -0
- package/dist/services/RepairService.js.map +1 -0
- package/dist/services/SearchService.d.ts +34 -0
- package/dist/services/SearchService.d.ts.map +1 -0
- package/dist/services/SearchService.js +293 -0
- package/dist/services/SearchService.js.map +1 -0
- package/dist/services/SessionService.d.ts +136 -0
- package/dist/services/SessionService.d.ts.map +1 -0
- package/dist/services/SessionService.js +297 -0
- package/dist/services/SessionService.js.map +1 -0
- package/dist/services/StateService.d.ts +97 -0
- package/dist/services/StateService.d.ts.map +1 -0
- package/dist/services/StateService.js +846 -0
- package/dist/services/StateService.js.map +1 -0
- package/dist/services/TutorialService.d.ts +114 -0
- package/dist/services/TutorialService.d.ts.map +1 -0
- package/dist/services/TutorialService.js +1262 -0
- package/dist/services/TutorialService.js.map +1 -0
- package/dist/services/WorkspaceService.d.ts +273 -0
- package/dist/services/WorkspaceService.d.ts.map +1 -0
- package/dist/services/WorkspaceService.js +1764 -0
- package/dist/services/WorkspaceService.js.map +1 -0
- package/dist/services/index.d.ts +15 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +14 -0
- package/dist/services/index.js.map +1 -0
- package/dist/storage/FileSystemAdapter.d.ts +223 -0
- package/dist/storage/FileSystemAdapter.d.ts.map +1 -0
- package/dist/storage/FileSystemAdapter.js +384 -0
- package/dist/storage/FileSystemAdapter.js.map +1 -0
- package/dist/storage/JsonStorage.d.ts +158 -0
- package/dist/storage/JsonStorage.d.ts.map +1 -0
- package/dist/storage/JsonStorage.js +613 -0
- package/dist/storage/JsonStorage.js.map +1 -0
- package/dist/storage/MarkdownStorage.d.ts +178 -0
- package/dist/storage/MarkdownStorage.d.ts.map +1 -0
- package/dist/storage/MarkdownStorage.js +918 -0
- package/dist/storage/MarkdownStorage.js.map +1 -0
- package/dist/storage/SessionBindingStorage.d.ts +69 -0
- package/dist/storage/SessionBindingStorage.d.ts.map +1 -0
- package/dist/storage/SessionBindingStorage.js +131 -0
- package/dist/storage/SessionBindingStorage.js.map +1 -0
- package/dist/storage/index.d.ts +6 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/tools/capability.d.ts +18 -0
- package/dist/tools/capability.d.ts.map +1 -0
- package/dist/tools/capability.js +73 -0
- package/dist/tools/capability.js.map +1 -0
- package/dist/tools/config.d.ts +14 -0
- package/dist/tools/config.d.ts.map +1 -0
- package/dist/tools/config.js +61 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/context.d.ts +22 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +139 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/dispatch.d.ts +41 -0
- package/dist/tools/dispatch.d.ts.map +1 -0
- package/dist/tools/dispatch.js +380 -0
- package/dist/tools/dispatch.js.map +1 -0
- package/dist/tools/help.d.ts +44 -0
- package/dist/tools/help.d.ts.map +1 -0
- package/dist/tools/help.js +227 -0
- package/dist/tools/help.js.map +1 -0
- package/dist/tools/import.d.ts +17 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +96 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +13 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/log.d.ts +21 -0
- package/dist/tools/log.d.ts.map +1 -0
- package/dist/tools/log.js +93 -0
- package/dist/tools/log.js.map +1 -0
- package/dist/tools/memo.d.ts +26 -0
- package/dist/tools/memo.d.ts.map +1 -0
- package/dist/tools/memo.js +188 -0
- package/dist/tools/memo.js.map +1 -0
- package/dist/tools/node.d.ts +34 -0
- package/dist/tools/node.d.ts.map +1 -0
- package/dist/tools/node.js +328 -0
- package/dist/tools/node.js.map +1 -0
- package/dist/tools/search.d.ts +14 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +95 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/session.d.ts +22 -0
- package/dist/tools/session.d.ts.map +1 -0
- package/dist/tools/session.js +127 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/state.d.ts +10 -0
- package/dist/tools/state.d.ts.map +1 -0
- package/dist/tools/state.js +79 -0
- package/dist/tools/state.js.map +1 -0
- package/dist/tools/workspace.d.ts +38 -0
- package/dist/tools/workspace.d.ts.map +1 -0
- package/dist/tools/workspace.js +240 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/types/capability.d.ts +36 -0
- package/dist/types/capability.d.ts.map +1 -0
- package/dist/types/capability.js +3 -0
- package/dist/types/capability.js.map +1 -0
- package/dist/types/confirmation.d.ts +35 -0
- package/dist/types/confirmation.d.ts.map +1 -0
- package/dist/types/confirmation.js +3 -0
- package/dist/types/confirmation.js.map +1 -0
- package/dist/types/context.d.ts +174 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +3 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/errors.d.ts +81 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +154 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/guidance.d.ts +162 -0
- package/dist/types/guidance.d.ts.map +1 -0
- package/dist/types/guidance.js +4 -0
- package/dist/types/guidance.js.map +1 -0
- package/dist/types/health.d.ts +61 -0
- package/dist/types/health.d.ts.map +1 -0
- package/dist/types/health.js +3 -0
- package/dist/types/health.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/memo.d.ts +132 -0
- package/dist/types/memo.d.ts.map +1 -0
- package/dist/types/memo.js +3 -0
- package/dist/types/memo.js.map +1 -0
- package/dist/types/node.d.ts +316 -0
- package/dist/types/node.d.ts.map +1 -0
- package/dist/types/node.js +3 -0
- package/dist/types/node.js.map +1 -0
- package/dist/types/repair.d.ts +62 -0
- package/dist/types/repair.d.ts.map +1 -0
- package/dist/types/repair.js +4 -0
- package/dist/types/repair.js.map +1 -0
- package/dist/types/search.d.ts +58 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +3 -0
- package/dist/types/search.js.map +1 -0
- package/dist/types/settings.d.ts +109 -0
- package/dist/types/settings.d.ts.map +1 -0
- package/dist/types/settings.js +30 -0
- package/dist/types/settings.js.map +1 -0
- package/dist/types/workspace.d.ts +357 -0
- package/dist/types/workspace.d.ts.map +1 -0
- package/dist/types/workspace.js +3 -0
- package/dist/types/workspace.js.map +1 -0
- package/dist/utils/contentValidation.d.ts +47 -0
- package/dist/utils/contentValidation.d.ts.map +1 -0
- package/dist/utils/contentValidation.js +93 -0
- package/dist/utils/contentValidation.js.map +1 -0
- package/dist/utils/devLog.d.ts +43 -0
- package/dist/utils/devLog.d.ts.map +1 -0
- package/dist/utils/devLog.js +94 -0
- package/dist/utils/devLog.js.map +1 -0
- package/dist/utils/errorLogger.d.ts +27 -0
- package/dist/utils/errorLogger.d.ts.map +1 -0
- package/dist/utils/errorLogger.js +105 -0
- package/dist/utils/errorLogger.js.map +1 -0
- package/dist/utils/git.d.ts +123 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +400 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/hash.d.ts +32 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +37 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/id.d.ts +54 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +96 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +42 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +228 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/manualChangeFormatter.d.ts +8 -0
- package/dist/utils/manualChangeFormatter.d.ts.map +1 -0
- package/dist/utils/manualChangeFormatter.js +21 -0
- package/dist/utils/manualChangeFormatter.js.map +1 -0
- package/dist/utils/paramValidator.d.ts +35 -0
- package/dist/utils/paramValidator.d.ts.map +1 -0
- package/dist/utils/paramValidator.js +214 -0
- package/dist/utils/paramValidator.js.map +1 -0
- package/dist/utils/port.d.ts +7 -0
- package/dist/utils/port.d.ts.map +1 -0
- package/dist/utils/port.js +28 -0
- package/dist/utils/port.js.map +1 -0
- package/dist/utils/processManager.d.ts +53 -0
- package/dist/utils/processManager.d.ts.map +1 -0
- package/dist/utils/processManager.js +267 -0
- package/dist/utils/processManager.js.map +1 -0
- package/dist/utils/sessionLogger.d.ts +28 -0
- package/dist/utils/sessionLogger.d.ts.map +1 -0
- package/dist/utils/sessionLogger.js +142 -0
- package/dist/utils/sessionLogger.js.map +1 -0
- package/dist/utils/time.d.ts +15 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +32 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/validation.d.ts +23 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +88 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs//346/227/245/345/277/227/347/263/273/347/273/237.md +389 -0
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +1446 -0
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214/344/270/216/346/212/200/346/234/257/346/214/207/345/215/227.md +873 -0
- package/package.json +89 -0
- package/plugin/README.md +141 -0
- package/plugin/agents/xtep-executor.md +114 -0
- package/plugin/agents/xtep-reviewer.md +133 -0
- package/plugin/docs/diagnostic-guide.md +128 -0
- package/plugin/hooks/hooks.json.deprecated +70 -0
- package/plugin/scripts/cursor-hook-entry.cjs +217 -0
- package/plugin/scripts/hook-entry.cjs +663 -0
- package/plugin/scripts/openspec-import.cjs +714 -0
- package/plugin/scripts/shared/binding.cjs +98 -0
- package/plugin/scripts/shared/config.cjs +65 -0
- package/plugin/scripts/shared/context.cjs +120 -0
- package/plugin/scripts/shared/index.cjs +34 -0
- package/plugin/scripts/shared/logger.cjs +196 -0
- package/plugin/scripts/shared/reminder.cjs +261 -0
- package/plugin/scripts/shared/utils.cjs +62 -0
- package/plugin/scripts/shared/workspace.cjs +322 -0
- package/plugin/skills/aligning-intent/SKILL.md +275 -0
- package/plugin/skills/analyzing-measurements/SKILL.md +223 -0
- package/plugin/skills/bootstrapping-workspace/SKILL.md +260 -0
- package/plugin/skills/designing-solutions/SKILL.md +363 -0
- package/plugin/skills/diagnosing-issues/SKILL.md +219 -0
- package/plugin/skills/discovering-context/SKILL.md +283 -0
- package/plugin/skills/dispatching-parent/SKILL.md +399 -0
- package/plugin/skills/executing-task/SKILL.md +340 -0
- package/plugin/skills/memo-create/SKILL.md +222 -0
- package/plugin/skills/planning-verification/SKILL.md +245 -0
- package/plugin/skills/preparing-dispatch/SKILL.md +299 -0
- package/plugin/skills/researching-tech/SKILL.md +223 -0
- package/plugin/skills/reviewing-quality/SKILL.md +354 -0
- package/plugin/skills/reviewing-spec/SKILL.md +333 -0
- package/plugin/skills/starting-info-flow/SKILL.md +196 -0
- package/web/README.md +5 -0
- package//351/205/215/347/275/256/346/226/271/345/274/217.md +330 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
// src/services/SessionService.ts
|
|
2
|
+
import { XtepError } from "../types/errors.js";
|
|
3
|
+
/**
|
|
4
|
+
* 会话服务
|
|
5
|
+
* 管理 Claude Code 会话与工作区的绑定关系
|
|
6
|
+
*/
|
|
7
|
+
export class SessionService {
|
|
8
|
+
sessionStorage;
|
|
9
|
+
json;
|
|
10
|
+
md;
|
|
11
|
+
fs;
|
|
12
|
+
installationService = null;
|
|
13
|
+
constructor(sessionStorage, json, md, fs) {
|
|
14
|
+
this.sessionStorage = sessionStorage;
|
|
15
|
+
this.json = json;
|
|
16
|
+
this.md = md;
|
|
17
|
+
this.fs = fs;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 设置 InstallationService 依赖(延迟注入避免循环依赖)
|
|
21
|
+
*/
|
|
22
|
+
setInstallationService(service) {
|
|
23
|
+
this.installationService = service;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 绑定会话到工作区
|
|
27
|
+
*/
|
|
28
|
+
async bind(params) {
|
|
29
|
+
const { sessionId, workspaceId, nodeId } = params;
|
|
30
|
+
// 验证工作区存在并获取位置信息
|
|
31
|
+
const location = await this.json.getWorkspaceLocation(workspaceId);
|
|
32
|
+
if (!location) {
|
|
33
|
+
throw new XtepError("WORKSPACE_NOT_FOUND", `工作区 "${workspaceId}" 不存在`);
|
|
34
|
+
}
|
|
35
|
+
const { projectRoot, dirName } = location;
|
|
36
|
+
// 验证项目目录存在
|
|
37
|
+
const workspacePath = this.fs.getWorkspacePath(projectRoot, dirName);
|
|
38
|
+
if (!(await this.fs.exists(workspacePath))) {
|
|
39
|
+
throw new XtepError("WORKSPACE_NOT_FOUND", `工作区 "${workspaceId}" 的项目目录不存在`);
|
|
40
|
+
}
|
|
41
|
+
// 如果指定了节点,验证节点存在并同步到 graph.currentFocus
|
|
42
|
+
if (nodeId) {
|
|
43
|
+
const graph = await this.json.readGraph(projectRoot, dirName);
|
|
44
|
+
if (!graph.nodes[nodeId]) {
|
|
45
|
+
throw new XtepError("NODE_NOT_FOUND", `节点 "${nodeId}" 不存在`);
|
|
46
|
+
}
|
|
47
|
+
// 同步聚焦节点到 graph.currentFocus,确保单一数据源
|
|
48
|
+
if (graph.currentFocus !== nodeId) {
|
|
49
|
+
graph.currentFocus = nodeId;
|
|
50
|
+
await this.json.writeGraph(projectRoot, dirName, graph);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// 获取工作区名称
|
|
54
|
+
const config = await this.json.readWorkspaceConfig(projectRoot, dirName);
|
|
55
|
+
// 执行绑定
|
|
56
|
+
const binding = await this.sessionStorage.bind(sessionId, workspaceId, nodeId);
|
|
57
|
+
return {
|
|
58
|
+
success: true,
|
|
59
|
+
message: `已绑定到工作区「${config.name}」`,
|
|
60
|
+
binding
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 解除会话绑定
|
|
65
|
+
*/
|
|
66
|
+
async unbind(params) {
|
|
67
|
+
const { sessionId } = params;
|
|
68
|
+
// 获取当前绑定信息(用于消息提示)
|
|
69
|
+
const currentBinding = await this.sessionStorage.getBinding(sessionId);
|
|
70
|
+
// 执行解绑
|
|
71
|
+
const success = await this.sessionStorage.unbind(sessionId);
|
|
72
|
+
if (!success) {
|
|
73
|
+
return {
|
|
74
|
+
success: true,
|
|
75
|
+
message: "当前会话未绑定任何工作区"
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// 尝试获取工作区名称(可能已删除)
|
|
79
|
+
let workspaceName = "未知";
|
|
80
|
+
if (currentBinding) {
|
|
81
|
+
try {
|
|
82
|
+
const location = await this.json.getWorkspaceLocation(currentBinding.workspaceId);
|
|
83
|
+
if (location) {
|
|
84
|
+
const config = await this.json.readWorkspaceConfig(location.projectRoot, location.dirName);
|
|
85
|
+
workspaceName = config.name;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// 忽略错误
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
success: true,
|
|
94
|
+
message: `已解除工作区「${workspaceName}」绑定,Hook 将不再注入上下文`
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 查询会话状态
|
|
99
|
+
*/
|
|
100
|
+
async status(params) {
|
|
101
|
+
const { sessionId } = params;
|
|
102
|
+
// 获取当前绑定
|
|
103
|
+
const binding = await this.sessionStorage.getBinding(sessionId);
|
|
104
|
+
if (!binding) {
|
|
105
|
+
// 未绑定,返回可用工作区列表
|
|
106
|
+
const index = await this.json.readIndex();
|
|
107
|
+
const availableWorkspaces = index.workspaces
|
|
108
|
+
.filter(ws => ws.status === "active")
|
|
109
|
+
.map(ws => ({
|
|
110
|
+
id: ws.id,
|
|
111
|
+
name: ws.name,
|
|
112
|
+
status: ws.status
|
|
113
|
+
}));
|
|
114
|
+
return {
|
|
115
|
+
bound: false,
|
|
116
|
+
availableWorkspaces
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// 已绑定,获取详细信息
|
|
120
|
+
const location = await this.json.getWorkspaceLocation(binding.workspaceId);
|
|
121
|
+
if (!location) {
|
|
122
|
+
// 工作区已删除,自动清理绑定
|
|
123
|
+
await this.sessionStorage.unbind(sessionId);
|
|
124
|
+
const index = await this.json.readIndex();
|
|
125
|
+
return {
|
|
126
|
+
bound: false,
|
|
127
|
+
availableWorkspaces: index.workspaces
|
|
128
|
+
.filter(ws => ws.status === "active")
|
|
129
|
+
.map(ws => ({
|
|
130
|
+
id: ws.id,
|
|
131
|
+
name: ws.name,
|
|
132
|
+
status: ws.status
|
|
133
|
+
}))
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const { projectRoot, dirName } = location;
|
|
137
|
+
// 获取工作区信息
|
|
138
|
+
const config = await this.json.readWorkspaceConfig(projectRoot, dirName);
|
|
139
|
+
const workspaceMdData = await this.md.readWorkspaceMd(projectRoot, dirName);
|
|
140
|
+
const graph = await this.json.readGraph(projectRoot, dirName);
|
|
141
|
+
// 从根节点读取 goal(requirement 字段)- goal 已统一到根节点
|
|
142
|
+
const rootNodeId = config.rootNodeId || "root";
|
|
143
|
+
const rootNodeMeta = graph.nodes[rootNodeId];
|
|
144
|
+
const rootNodeDirName = rootNodeMeta?.dirName || rootNodeId;
|
|
145
|
+
const rootNodeInfo = await this.md.readNodeInfo(projectRoot, dirName, rootNodeDirName);
|
|
146
|
+
const goal = rootNodeInfo.requirement || "";
|
|
147
|
+
const result = {
|
|
148
|
+
bound: true,
|
|
149
|
+
workspace: {
|
|
150
|
+
id: binding.workspaceId,
|
|
151
|
+
name: config.name,
|
|
152
|
+
goal, // 从根节点 requirement 读取
|
|
153
|
+
},
|
|
154
|
+
rules: workspaceMdData.rules
|
|
155
|
+
};
|
|
156
|
+
// 获取聚焦节点信息(优先使用 graph.currentFocus 作为权威来源)
|
|
157
|
+
const focusNodeId = graph.currentFocus || binding.focusedNodeId;
|
|
158
|
+
if (focusNodeId && graph.nodes[focusNodeId]) {
|
|
159
|
+
const nodeDirName = graph.nodes[focusNodeId].dirName || focusNodeId;
|
|
160
|
+
const nodeInfo = await this.md.readNodeInfo(projectRoot, dirName, nodeDirName);
|
|
161
|
+
result.focusedNode = {
|
|
162
|
+
id: focusNodeId,
|
|
163
|
+
title: nodeInfo.title,
|
|
164
|
+
status: graph.nodes[focusNodeId].status,
|
|
165
|
+
requirement: nodeInfo.requirement
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// 检查安装警告
|
|
169
|
+
const warnings = await this.checkInstallationWarnings();
|
|
170
|
+
if (warnings.length > 0) {
|
|
171
|
+
result.installationWarnings = warnings;
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 检查安装版本警告
|
|
177
|
+
* 使用组件级版本检查,每个组件独立比较版本
|
|
178
|
+
*/
|
|
179
|
+
async checkInstallationWarnings() {
|
|
180
|
+
if (!this.installationService) {
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
const warnings = [];
|
|
184
|
+
try {
|
|
185
|
+
const meta = await this.installationService.read();
|
|
186
|
+
const currentVersion = this.installationService.getPackageVersion();
|
|
187
|
+
// 组件名称映射(用于生成友好的警告消息)
|
|
188
|
+
const componentNames = {
|
|
189
|
+
hooks: "Hook",
|
|
190
|
+
mcp: "MCP",
|
|
191
|
+
agents: "Dispatch Agents",
|
|
192
|
+
skills: "Skills",
|
|
193
|
+
};
|
|
194
|
+
// 检查各平台的组件版本
|
|
195
|
+
for (const platform of ["claudeCode", "cursor", "codex"]) {
|
|
196
|
+
const platformInfo = meta.global.platforms[platform];
|
|
197
|
+
if (!platformInfo?.enabled)
|
|
198
|
+
continue;
|
|
199
|
+
// 遍历每个组件检查版本
|
|
200
|
+
for (const [componentKey, componentInfo] of Object.entries(platformInfo.components)) {
|
|
201
|
+
// 类型断言:componentInfo 可能是 ComponentInfo
|
|
202
|
+
const info = componentInfo;
|
|
203
|
+
if (!info?.installed || !info.version)
|
|
204
|
+
continue;
|
|
205
|
+
// 版本不匹配时生成警告
|
|
206
|
+
if (info.version !== currentVersion) {
|
|
207
|
+
const friendlyName = componentNames[componentKey] || componentKey;
|
|
208
|
+
warnings.push({
|
|
209
|
+
platform,
|
|
210
|
+
component: componentKey,
|
|
211
|
+
installedVersion: info.version,
|
|
212
|
+
currentVersion,
|
|
213
|
+
message: `${platform} ${friendlyName} 版本过旧 (${info.version} → ${currentVersion}),建议更新`,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// 检查失败时静默,不影响主功能
|
|
221
|
+
}
|
|
222
|
+
return warnings;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* 更新聚焦节点
|
|
226
|
+
*/
|
|
227
|
+
async updateFocus(sessionId, nodeId) {
|
|
228
|
+
return this.sessionStorage.updateFocus(sessionId, nodeId);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* 清理过期会话绑定
|
|
232
|
+
*/
|
|
233
|
+
async cleanup(maxAgeMs) {
|
|
234
|
+
return this.sessionStorage.cleanup(maxAgeMs);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* 清理指定工作区的所有会话绑定
|
|
238
|
+
*/
|
|
239
|
+
async cleanupByWorkspace(workspaceId) {
|
|
240
|
+
return this.sessionStorage.cleanupByWorkspace(workspaceId);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* 获取待处理的手动变更提醒(供 Hook 脚本调用)
|
|
244
|
+
*/
|
|
245
|
+
async getPendingChanges(params) {
|
|
246
|
+
const { sessionId, workspaceId: explicitWorkspaceId } = params;
|
|
247
|
+
// 确定工作区 ID:优先使用显式传入的,否则从 session 绑定获取
|
|
248
|
+
let workspaceId = explicitWorkspaceId;
|
|
249
|
+
if (!workspaceId) {
|
|
250
|
+
const binding = await this.sessionStorage.getBinding(sessionId);
|
|
251
|
+
if (!binding) {
|
|
252
|
+
// 未绑定且未提供工作区 ID,返回空结果
|
|
253
|
+
return {
|
|
254
|
+
hasChanges: false,
|
|
255
|
+
reminderText: ""
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
workspaceId = binding.workspaceId;
|
|
259
|
+
}
|
|
260
|
+
// 获取工作区位置信息
|
|
261
|
+
const location = await this.json.getWorkspaceLocation(workspaceId);
|
|
262
|
+
if (!location) {
|
|
263
|
+
// 工作区不存在,返回空结果
|
|
264
|
+
return {
|
|
265
|
+
hasChanges: false,
|
|
266
|
+
reminderText: ""
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
const { projectRoot, dirName } = location;
|
|
270
|
+
// 读取工作区配置
|
|
271
|
+
try {
|
|
272
|
+
const config = await this.json.readWorkspaceConfig(projectRoot, dirName);
|
|
273
|
+
const manualChanges = config.pendingManualChanges || [];
|
|
274
|
+
if (manualChanges.length === 0) {
|
|
275
|
+
return {
|
|
276
|
+
hasChanges: false,
|
|
277
|
+
reminderText: ""
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
// 导入 formatter 并格式化提醒文本
|
|
281
|
+
const { formatManualChangeReminder } = await import("../utils/manualChangeFormatter.js");
|
|
282
|
+
const reminderText = formatManualChangeReminder(manualChanges);
|
|
283
|
+
return {
|
|
284
|
+
hasChanges: true,
|
|
285
|
+
reminderText
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
// 读取失败时返回空结果
|
|
290
|
+
return {
|
|
291
|
+
hasChanges: false,
|
|
292
|
+
reminderText: ""
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=SessionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionService.js","sourceRoot":"","sources":["../../src/services/SessionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { FileSystemAdapter } from "../storage/FileSystemAdapter.js";
|
|
2
|
+
import type { JsonStorage } from "../storage/JsonStorage.js";
|
|
3
|
+
import type { MarkdownStorage } from "../storage/MarkdownStorage.js";
|
|
4
|
+
import type { NodeTransitionParams, NodeTransitionResult } from "../types/node.js";
|
|
5
|
+
/**
|
|
6
|
+
* 待确认 Token 信息
|
|
7
|
+
*/
|
|
8
|
+
export interface PendingConfirmation {
|
|
9
|
+
token: string;
|
|
10
|
+
workspaceId: string;
|
|
11
|
+
nodeId: string;
|
|
12
|
+
actionType: string;
|
|
13
|
+
createdAt: number;
|
|
14
|
+
expiresAt: number;
|
|
15
|
+
metadata?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 状态服务
|
|
19
|
+
* 处理节点状态转换
|
|
20
|
+
*/
|
|
21
|
+
export declare class StateService {
|
|
22
|
+
private json;
|
|
23
|
+
private md;
|
|
24
|
+
private fs;
|
|
25
|
+
/**
|
|
26
|
+
* Token 存储(内存中)
|
|
27
|
+
* key: token, value: PendingConfirmation
|
|
28
|
+
*/
|
|
29
|
+
private pendingConfirmations;
|
|
30
|
+
/**
|
|
31
|
+
* Token 有效期(毫秒)
|
|
32
|
+
*/
|
|
33
|
+
private readonly TOKEN_VALIDITY_MS;
|
|
34
|
+
/**
|
|
35
|
+
* 引导服务
|
|
36
|
+
*/
|
|
37
|
+
private guidanceService;
|
|
38
|
+
constructor(json: JsonStorage, md: MarkdownStorage, fs: FileSystemAdapter);
|
|
39
|
+
/**
|
|
40
|
+
* 根据 workspaceId 获取 projectRoot 和 wsDirName
|
|
41
|
+
*/
|
|
42
|
+
private resolveProjectRoot;
|
|
43
|
+
/**
|
|
44
|
+
* 执行状态转换
|
|
45
|
+
*/
|
|
46
|
+
transition(params: NodeTransitionParams): Promise<NodeTransitionResult>;
|
|
47
|
+
/**
|
|
48
|
+
* 检查是否是第一个非信息收集的执行节点启动
|
|
49
|
+
*/
|
|
50
|
+
private isFirstNonInfoCollectionExecution;
|
|
51
|
+
/**
|
|
52
|
+
* 生成工作流提示
|
|
53
|
+
*/
|
|
54
|
+
private generateHint;
|
|
55
|
+
/**
|
|
56
|
+
* 验证状态转换合法性
|
|
57
|
+
*/
|
|
58
|
+
private validateTransition;
|
|
59
|
+
/**
|
|
60
|
+
* 生成状态转换错误的修复建议
|
|
61
|
+
*/
|
|
62
|
+
private getTransitionSuggestion;
|
|
63
|
+
/**
|
|
64
|
+
* 构建日志事件描述
|
|
65
|
+
*/
|
|
66
|
+
private buildLogEvent;
|
|
67
|
+
/**
|
|
68
|
+
* 检查根节点是否有已完成的信息收集节点
|
|
69
|
+
*/
|
|
70
|
+
private checkInfoCollectionNode;
|
|
71
|
+
/**
|
|
72
|
+
* 归档信息收集节点的 conclusion 到工作区
|
|
73
|
+
* 解析 ## 规则 和 ## 文档 部分
|
|
74
|
+
*/
|
|
75
|
+
private archiveInfoCollection;
|
|
76
|
+
/**
|
|
77
|
+
* 创建待确认 Token
|
|
78
|
+
* @param workspaceId 工作区 ID
|
|
79
|
+
* @param nodeId 节点 ID
|
|
80
|
+
* @param actionType 动作类型(如 "check_docs")
|
|
81
|
+
* @param metadata 附加元数据
|
|
82
|
+
* @returns PendingConfirmation 对象
|
|
83
|
+
*/
|
|
84
|
+
createPendingConfirmation(workspaceId: string, nodeId: string, actionType: string, metadata?: Record<string, unknown>): PendingConfirmation;
|
|
85
|
+
/**
|
|
86
|
+
* 验证 Token
|
|
87
|
+
* @param token 待验证的 token
|
|
88
|
+
* @returns 如果 token 有效,返回 PendingConfirmation 对象;否则返回 null
|
|
89
|
+
*/
|
|
90
|
+
validateConfirmation(token: string): PendingConfirmation | null;
|
|
91
|
+
/**
|
|
92
|
+
* 清理过期 Token
|
|
93
|
+
* 遍历所有 token,删除已过期的
|
|
94
|
+
*/
|
|
95
|
+
clearExpiredTokens(): void;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=StateService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateService.d.ts","sourceRoot":"","sources":["../../src/services/StateService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAGV,oBAAoB,EACpB,oBAAoB,EAQrB,MAAM,kBAAkB,CAAC;AAkB1B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA6BD;;;GAGG;AACH,qBAAa,YAAY;IAkBrB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,EAAE;IAnBZ;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAA+C;IAE3E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkB;IAEpD;;OAEG;IACH,OAAO,CAAC,eAAe,CAAkB;gBAG/B,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,iBAAiB;IAK/B;;OAEG;YACW,kBAAkB;IAehC;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwd7E;;OAEG;IACH,OAAO,CAAC,iCAAiC;IAwBzC;;OAEG;IACH,OAAO,CAAC,YAAY;IAyFpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiE/B;;OAEG;IACH,OAAO,CAAC,aAAa;IA+BrB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmC/B;;;OAGG;YACW,qBAAqB;IA8EnC;;;;;;;OAOG;IACH,yBAAyB,CACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,mBAAmB;IAuBtB;;;;OAIG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAmB/D;;;OAGG;IACH,kBAAkB,IAAI,IAAI;CAe3B"}
|