zero-workspace 0.0.2
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 +18 -0
- package/README.md +187 -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 +94 -0
- package/plugin/README.md +141 -0
- package/plugin/agents/zero-executor.md +114 -0
- package/plugin/agents/zero-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/web/dist/assets/DocsView-Bls_Vjsr.css +1 -0
- package/web/dist/assets/DocsView-Cxc0B63r.js +1447 -0
- package/web/dist/assets/HomeView-C7df9thb.js +9 -0
- package/web/dist/assets/HomeView-ufUdnfHk.css +1 -0
- package/web/dist/assets/MarkdownContent-DXp6CtSP.js +308 -0
- package/web/dist/assets/MarkdownContent-NFqiOBLH.css +1 -0
- package/web/dist/assets/NotFoundView-BYX1oZAn.css +1 -0
- package/web/dist/assets/NotFoundView-zrc0lT9q.js +1 -0
- package/web/dist/assets/WorkspaceView-BckqgNcX.js +27 -0
- package/web/dist/assets/WorkspaceView-J1dgpYMx.css +1 -0
- package/web/dist/assets/WsConfirmDialog-C1CvL4my.css +1 -0
- package/web/dist/assets/WsConfirmDialog-gLEP7uBD.js +4 -0
- package/web/dist/assets/arc-DPkKTkUT.js +1 -0
- package/web/dist/assets/architectureDiagram-VXUJARFQ-CEGpqUlZ.js +36 -0
- package/web/dist/assets/blockDiagram-VD42YOAC-Bv-mqdQH.js +122 -0
- package/web/dist/assets/c4Diagram-YG6GDRKO-DRyPatZ_.js +10 -0
- package/web/dist/assets/channel-B84mKLDZ.js +1 -0
- package/web/dist/assets/chunk-4BX2VUAB-c7DivX0u.js +1 -0
- package/web/dist/assets/chunk-55IACEB6-CGKTaLlo.js +1 -0
- package/web/dist/assets/chunk-B4BG7PRW-Czhx5Q_P.js +165 -0
- package/web/dist/assets/chunk-DI55MBZ5-CQVA7hcZ.js +220 -0
- package/web/dist/assets/chunk-FMBD7UC4-hEiPmi7V.js +15 -0
- package/web/dist/assets/chunk-QN33PNHL-rL6yYI-E.js +1 -0
- package/web/dist/assets/chunk-QZHKN3VN-BRyHBBzq.js +1 -0
- package/web/dist/assets/chunk-TZMSLE5B-D4PXmTz9.js +1 -0
- package/web/dist/assets/classDiagram-2ON5EDUG-CNn53ohi.js +1 -0
- package/web/dist/assets/classDiagram-v2-WZHVMYZB-CNn53ohi.js +1 -0
- package/web/dist/assets/cose-bilkent-S5V4N54A-BAREnRga.js +1 -0
- package/web/dist/assets/cytoscape.esm-BnkdMOzK.js +321 -0
- package/web/dist/assets/dagre-6UL2VRFP-DaYzb3MT.js +4 -0
- package/web/dist/assets/defaultLocale-C4B-KCzX.js +1 -0
- package/web/dist/assets/diagram-PSM6KHXK-BFltDqvd.js +24 -0
- package/web/dist/assets/diagram-QEK2KX5R-CR4VU2La.js +43 -0
- package/web/dist/assets/diagram-S2PKOQOG-0UfIeT-1.js +24 -0
- package/web/dist/assets/erDiagram-Q2GNP2WA-Bo17Xmng.js +60 -0
- package/web/dist/assets/flowDiagram-NV44I4VS-CzqhQp8s.js +162 -0
- package/web/dist/assets/ganttDiagram-JELNMOA3-TXwXtUcq.js +267 -0
- package/web/dist/assets/gitGraphDiagram-NY62KEGX-CoFQTy9O.js +65 -0
- package/web/dist/assets/graph-CIQcRIVd.js +1 -0
- package/web/dist/assets/index-BgLd_o_M.css +1 -0
- package/web/dist/assets/index-Cd_J3fZn.js +30 -0
- package/web/dist/assets/infoDiagram-WHAUD3N6-Dq0xXfVu.js +2 -0
- package/web/dist/assets/init-Gi6I4Gst.js +1 -0
- package/web/dist/assets/journeyDiagram-XKPGCS4Q-jIg5BOfC.js +139 -0
- package/web/dist/assets/kanban-definition-3W4ZIXB7-D2giu6aZ.js +89 -0
- package/web/dist/assets/katex-XbL3y5x-.js +261 -0
- package/web/dist/assets/layout-Bm-XCM-8.js +1 -0
- package/web/dist/assets/linear-FbekP9OZ.js +1 -0
- package/web/dist/assets/min-BrRCpYmF.js +1 -0
- package/web/dist/assets/mindmap-definition-VGOIOE7T-o-4ubbY9.js +68 -0
- package/web/dist/assets/noto-emoji-0-400-normal-BTQbhB77.woff +0 -0
- package/web/dist/assets/noto-emoji-0-400-normal-DHdy6Uhy.woff2 +0 -0
- package/web/dist/assets/noto-emoji-1-400-normal-0IvkdXBB.woff +0 -0
- package/web/dist/assets/noto-emoji-1-400-normal-BY9OovbM.woff2 +0 -0
- package/web/dist/assets/noto-emoji-10-400-normal-D9w4QCof.woff2 +0 -0
- package/web/dist/assets/noto-emoji-10-400-normal-DtCumcZR.woff +0 -0
- package/web/dist/assets/noto-emoji-11-400-normal-BboTlyvx.woff +0 -0
- package/web/dist/assets/noto-emoji-12-400-normal-BB5pgBKj.woff2 +0 -0
- package/web/dist/assets/noto-emoji-12-400-normal-g186qhiA.woff +0 -0
- package/web/dist/assets/noto-emoji-2-400-normal-BKCR1azW.woff2 +0 -0
- package/web/dist/assets/noto-emoji-2-400-normal-BYH0KhDr.woff +0 -0
- package/web/dist/assets/noto-emoji-3-400-normal-CnPTUeEK.woff +0 -0
- package/web/dist/assets/noto-emoji-3-400-normal-TrTb2VQM.woff2 +0 -0
- package/web/dist/assets/noto-emoji-4-400-normal-BxD0KVdj.woff +0 -0
- package/web/dist/assets/noto-emoji-4-400-normal-s_n9EyG1.woff2 +0 -0
- package/web/dist/assets/noto-emoji-5-400-normal-C190AIxR.woff +0 -0
- package/web/dist/assets/noto-emoji-5-400-normal-Ctfx4xc6.woff2 +0 -0
- package/web/dist/assets/noto-emoji-6-400-normal-DlXlXWt7.woff +0 -0
- package/web/dist/assets/noto-emoji-6-400-normal-NzsjD754.woff2 +0 -0
- package/web/dist/assets/noto-emoji-7-400-normal-BHP8KeA6.woff2 +0 -0
- package/web/dist/assets/noto-emoji-7-400-normal-CtuKhtAZ.woff +0 -0
- package/web/dist/assets/noto-emoji-8-400-normal-DR49ZFe7.woff +0 -0
- package/web/dist/assets/noto-emoji-8-400-normal-Dvmkf6b2.woff2 +0 -0
- package/web/dist/assets/noto-emoji-9-400-normal-BeHJQ2iK.woff2 +0 -0
- package/web/dist/assets/noto-emoji-9-400-normal-BlXmCgeQ.woff +0 -0
- package/web/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/web/dist/assets/pieDiagram-ADFJNKIX-C45wSpld.js +30 -0
- package/web/dist/assets/quadrantDiagram-AYHSOK5B-tv-_fe-W.js +7 -0
- package/web/dist/assets/reduce-CoLNNlNb.js +1 -0
- package/web/dist/assets/requirementDiagram-UZGBJVZJ-Dn6PDfkL.js +64 -0
- package/web/dist/assets/sankeyDiagram-TZEHDZUN-CbXTZAsG.js +10 -0
- package/web/dist/assets/sequenceDiagram-WL72ISMW-B-o1CUJ5.js +145 -0
- package/web/dist/assets/stateDiagram-FKZM4ZOC-hzrupXQi.js +1 -0
- package/web/dist/assets/stateDiagram-v2-4FDKWEC3-DN-c2M96.js +1 -0
- package/web/dist/assets/timeline-definition-IT6M3QCI-R5SP9GDo.js +61 -0
- package/web/dist/assets/treemap-KMMF4GRG-Pg9KlUOt.js +128 -0
- package/web/dist/assets/xychartDiagram-PRI3JC2R-C3vbJhd1.js +7 -0
- package/web/dist/favicon.svg +13 -0
- package/web/dist/index.html +17 -0
- package//351/205/215/347/275/256/346/226/271/345/274/217.md +330 -0
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
// src/utils/git.ts
|
|
2
|
+
import { exec } from "child_process";
|
|
3
|
+
import { promisify } from "util";
|
|
4
|
+
import { promises as fs } from "fs";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import { devLog } from "./devLog.js";
|
|
7
|
+
const execAsync = promisify(exec);
|
|
8
|
+
/**
|
|
9
|
+
* 需要从 git 跟踪中排除的目录
|
|
10
|
+
*/
|
|
11
|
+
const EXCLUDED_DIRS = [".zero-workspace/", ".zero-workspace-dev/"];
|
|
12
|
+
/**
|
|
13
|
+
* 分支命名常量
|
|
14
|
+
*/
|
|
15
|
+
const BRANCH_PREFIX = "zero_workspace";
|
|
16
|
+
const BACKUP_PREFIX = `${BRANCH_PREFIX}/backup`;
|
|
17
|
+
const PROCESS_PREFIX = `${BRANCH_PREFIX}/process`;
|
|
18
|
+
/**
|
|
19
|
+
* 执行 git 命令
|
|
20
|
+
*/
|
|
21
|
+
async function execGit(command, cwd) {
|
|
22
|
+
const options = cwd ? { cwd } : {};
|
|
23
|
+
return execAsync(`git ${command}`, options);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 检查当前目录是否是 git 仓库
|
|
27
|
+
*/
|
|
28
|
+
export async function isGitRepo(cwd) {
|
|
29
|
+
try {
|
|
30
|
+
await execGit("rev-parse --is-inside-work-tree", cwd);
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 确保 ZeroWorkspace 目录被 git 排除
|
|
39
|
+
* 通过添加到 .git/info/exclude(不影响项目的 .gitignore)
|
|
40
|
+
*/
|
|
41
|
+
export async function ensureGitExclude(cwd) {
|
|
42
|
+
const workDir = cwd || process.cwd();
|
|
43
|
+
try {
|
|
44
|
+
// 获取 git 仓库根目录
|
|
45
|
+
const { stdout } = await execGit("rev-parse --git-dir", workDir);
|
|
46
|
+
const gitDir = path.resolve(workDir, stdout.trim());
|
|
47
|
+
const excludePath = path.join(gitDir, "info", "exclude");
|
|
48
|
+
// 读取现有内容
|
|
49
|
+
let content = "";
|
|
50
|
+
try {
|
|
51
|
+
content = await fs.readFile(excludePath, "utf-8");
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// 文件不存在,使用空内容
|
|
55
|
+
}
|
|
56
|
+
// 检查并添加缺失的排除项
|
|
57
|
+
const lines = content.split("\n");
|
|
58
|
+
let modified = false;
|
|
59
|
+
for (const dir of EXCLUDED_DIRS) {
|
|
60
|
+
if (!lines.includes(dir)) {
|
|
61
|
+
lines.push(dir);
|
|
62
|
+
modified = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// 只在有修改时写入
|
|
66
|
+
if (modified) {
|
|
67
|
+
await fs.writeFile(excludePath, lines.join("\n"), "utf-8");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
// 记录错误但不抛出(可能不是 git 仓库或权限问题)
|
|
72
|
+
devLog.gitError("ensureGitExclude", error, { cwd: workDir });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 获取当前分支名
|
|
77
|
+
*/
|
|
78
|
+
export async function getCurrentBranch(cwd) {
|
|
79
|
+
const { stdout } = await execGit("rev-parse --abbrev-ref HEAD", cwd);
|
|
80
|
+
return stdout.trim();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 检查是否有未提交的修改(包括未跟踪文件)
|
|
84
|
+
*/
|
|
85
|
+
export async function hasUncommittedChanges(cwd) {
|
|
86
|
+
const { stdout } = await execGit("status --porcelain", cwd);
|
|
87
|
+
return stdout.trim().length > 0;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 检查是否有已暂存但未提交的修改
|
|
91
|
+
*/
|
|
92
|
+
export async function hasStagedChanges(cwd) {
|
|
93
|
+
const { stdout } = await execGit("diff --cached --name-only", cwd);
|
|
94
|
+
return stdout.trim().length > 0;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* 列出匹配模式的分支
|
|
98
|
+
* @param pattern - 分支名模式,如 "zero_workspace/process/*"
|
|
99
|
+
*/
|
|
100
|
+
export async function listBranches(pattern, cwd) {
|
|
101
|
+
try {
|
|
102
|
+
const { stdout } = await execGit(`branch --list "${pattern}"`, cwd);
|
|
103
|
+
return stdout
|
|
104
|
+
.split("\n")
|
|
105
|
+
.map((line) => line.trim().replace(/^\*\s*/, ""))
|
|
106
|
+
.filter((line) => line.length > 0);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
devLog.gitDebug("listBranches", { pattern, error: error instanceof Error ? error.message : String(error) });
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 创建备份分支(用于保存未提交内容)
|
|
115
|
+
* 分支名格式: zero_workspace/backup/{workspaceId}/{timestamp}
|
|
116
|
+
* @returns 备份分支名
|
|
117
|
+
*/
|
|
118
|
+
export async function createBackupBranch(workspaceId, cwd) {
|
|
119
|
+
const timestamp = Date.now();
|
|
120
|
+
const branchName = `${BACKUP_PREFIX}/${workspaceId}/${timestamp}`;
|
|
121
|
+
// 创建并切换到备份分支
|
|
122
|
+
await execGit(`checkout -b "${branchName}"`, cwd);
|
|
123
|
+
// 添加所有文件并提交
|
|
124
|
+
await execGit("add -A", cwd);
|
|
125
|
+
await execGit(`commit -m "zero: 派发前自动备份 - ${workspaceId}" --allow-empty`, cwd);
|
|
126
|
+
return branchName;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 创建并切换到派发分支
|
|
130
|
+
* 分支名格式: zero_workspace/process/{workspaceId}
|
|
131
|
+
*/
|
|
132
|
+
export async function createProcessBranch(workspaceId, cwd) {
|
|
133
|
+
const branchName = `${PROCESS_PREFIX}/${workspaceId}`;
|
|
134
|
+
// 检查分支是否已存在
|
|
135
|
+
const existingBranches = await listBranches(branchName, cwd);
|
|
136
|
+
if (existingBranches.length > 0) {
|
|
137
|
+
// 检查是否当前在该分支上
|
|
138
|
+
const currentBranch = await getCurrentBranch(cwd);
|
|
139
|
+
if (currentBranch === branchName) {
|
|
140
|
+
// 当前在目标分支上,先切换到 detached HEAD
|
|
141
|
+
await execGit("checkout --detach", cwd);
|
|
142
|
+
}
|
|
143
|
+
// 删除已存在的分支
|
|
144
|
+
await execGit(`branch -D "${branchName}"`, cwd);
|
|
145
|
+
}
|
|
146
|
+
await execGit(`checkout -b "${branchName}"`, cwd);
|
|
147
|
+
return branchName;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 切换到派发分支
|
|
151
|
+
*/
|
|
152
|
+
export async function checkoutProcessBranch(workspaceId, cwd) {
|
|
153
|
+
const branchName = `${PROCESS_PREFIX}/${workspaceId}`;
|
|
154
|
+
await execGit(`checkout "${branchName}"`, cwd);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* 切换到指定分支
|
|
158
|
+
*/
|
|
159
|
+
export async function checkoutBranch(branchName, cwd) {
|
|
160
|
+
await execGit(`checkout "${branchName}"`, cwd);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 获取当前 commit hash
|
|
164
|
+
*/
|
|
165
|
+
export async function getCurrentCommit(cwd) {
|
|
166
|
+
const { stdout } = await execGit("rev-parse HEAD", cwd);
|
|
167
|
+
return stdout.trim();
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* 提交派发修改
|
|
171
|
+
* @returns commit hash
|
|
172
|
+
*/
|
|
173
|
+
export async function commitDispatch(nodeId, title, cwd) {
|
|
174
|
+
await execGit("add -A", cwd);
|
|
175
|
+
// 检查是否有内容需要提交
|
|
176
|
+
const hasChanges = await hasStagedChanges(cwd);
|
|
177
|
+
if (!hasChanges) {
|
|
178
|
+
// 没有修改,返回当前 commit
|
|
179
|
+
return getCurrentCommit(cwd);
|
|
180
|
+
}
|
|
181
|
+
const message = `zero: ${nodeId} - ${title}`;
|
|
182
|
+
await execGit(`commit -m "${message}"`, cwd);
|
|
183
|
+
return getCurrentCommit(cwd);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 回滚到指定 commit
|
|
187
|
+
*/
|
|
188
|
+
export async function resetToCommit(commitHash, cwd) {
|
|
189
|
+
await execGit(`reset --hard "${commitHash}"`, cwd);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* 合并派发分支到目标分支(使用 --no-ff)
|
|
193
|
+
*/
|
|
194
|
+
export async function mergeProcessBranch(workspaceId, targetBranch, cwd) {
|
|
195
|
+
const processBranch = `${PROCESS_PREFIX}/${workspaceId}`;
|
|
196
|
+
// 切换到目标分支
|
|
197
|
+
await execGit(`checkout "${targetBranch}"`, cwd);
|
|
198
|
+
// 合并派发分支
|
|
199
|
+
await execGit(`merge --no-ff "${processBranch}" -m "zero: 完成工作区 ${workspaceId} 任务"`, cwd);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* 删除派发分支
|
|
203
|
+
*/
|
|
204
|
+
export async function deleteProcessBranch(workspaceId, cwd) {
|
|
205
|
+
const branchName = `${PROCESS_PREFIX}/${workspaceId}`;
|
|
206
|
+
try {
|
|
207
|
+
await execGit(`branch -D "${branchName}"`, cwd);
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
// 分支不存在,忽略错误
|
|
211
|
+
devLog.gitDebug("deleteProcessBranch", { branchName, error: error instanceof Error ? error.message : String(error) });
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* 删除备份分支
|
|
216
|
+
* @param timestamp - 可选,指定时间戳删除特定备份;不指定则删除该工作区所有备份
|
|
217
|
+
*/
|
|
218
|
+
export async function deleteBackupBranch(workspaceId, timestamp, cwd) {
|
|
219
|
+
if (timestamp) {
|
|
220
|
+
const branchName = `${BACKUP_PREFIX}/${workspaceId}/${timestamp}`;
|
|
221
|
+
try {
|
|
222
|
+
await execGit(`branch -D "${branchName}"`, cwd);
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
// 分支不存在,忽略错误
|
|
226
|
+
devLog.gitDebug("deleteBackupBranch", { branchName, error: error instanceof Error ? error.message : String(error) });
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// 删除该工作区所有备份分支
|
|
231
|
+
const pattern = `${BACKUP_PREFIX}/${workspaceId}/*`;
|
|
232
|
+
const branches = await listBranches(pattern, cwd);
|
|
233
|
+
for (const branch of branches) {
|
|
234
|
+
try {
|
|
235
|
+
await execGit(`branch -D "${branch}"`, cwd);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
// 忽略错误
|
|
239
|
+
devLog.gitDebug("deleteBackupBranch:loop", { branch, error: error instanceof Error ? error.message : String(error) });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* 删除工作区相关的所有分支(备份 + 派发)
|
|
246
|
+
*/
|
|
247
|
+
export async function deleteAllWorkspaceBranches(workspaceId, cwd) {
|
|
248
|
+
await deleteProcessBranch(workspaceId, cwd);
|
|
249
|
+
await deleteBackupBranch(workspaceId, undefined, cwd);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* 检查是否有派发分支存在(用于并发检查)
|
|
253
|
+
* @returns 如果存在派发分支,返回工作区 ID;否则返回 null
|
|
254
|
+
*/
|
|
255
|
+
export async function getActiveDispatchWorkspace(cwd) {
|
|
256
|
+
const pattern = `${PROCESS_PREFIX}/*`;
|
|
257
|
+
const branches = await listBranches(pattern, cwd);
|
|
258
|
+
if (branches.length === 0) {
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
// 从分支名提取工作区 ID
|
|
262
|
+
const match = branches[0].match(/zero_workspace\/process\/(.+)$/);
|
|
263
|
+
return match ? match[1] : null;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* 获取派发分支名
|
|
267
|
+
*/
|
|
268
|
+
export function getProcessBranchName(workspaceId) {
|
|
269
|
+
return `${PROCESS_PREFIX}/${workspaceId}`;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* 检查当前是否在派发分支上
|
|
273
|
+
*/
|
|
274
|
+
export async function isOnProcessBranch(workspaceId, cwd) {
|
|
275
|
+
const currentBranch = await getCurrentBranch(cwd);
|
|
276
|
+
return currentBranch === `${PROCESS_PREFIX}/${workspaceId}`;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* 获取两个提交之间的提交列表
|
|
280
|
+
* @returns 提交列表,每项包含 hash 和 message
|
|
281
|
+
*/
|
|
282
|
+
export async function getCommitsBetween(fromCommit, toCommit, cwd) {
|
|
283
|
+
try {
|
|
284
|
+
const { stdout } = await execGit(`log --oneline ${fromCommit}..${toCommit}`, cwd);
|
|
285
|
+
return stdout
|
|
286
|
+
.trim()
|
|
287
|
+
.split("\n")
|
|
288
|
+
.filter((line) => line.length > 0)
|
|
289
|
+
.map((line) => {
|
|
290
|
+
const [hash, ...messageParts] = line.split(" ");
|
|
291
|
+
return { hash, message: messageParts.join(" ") };
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
devLog.gitError("getCommitsBetween", error, { fromCommit, toCommit });
|
|
296
|
+
return [];
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* 获取未提交修改的摘要
|
|
301
|
+
*/
|
|
302
|
+
export async function getUncommittedChangesSummary(cwd) {
|
|
303
|
+
try {
|
|
304
|
+
const { stdout: statusOutput } = await execGit("status --porcelain", cwd);
|
|
305
|
+
if (!statusOutput.trim()) {
|
|
306
|
+
return null;
|
|
307
|
+
}
|
|
308
|
+
const files = statusOutput.trim().split("\n").length;
|
|
309
|
+
// 尝试获取 diff 统计,但对于未跟踪文件可能不准确
|
|
310
|
+
try {
|
|
311
|
+
const { stdout: diffOutput } = await execGit("diff --stat HEAD", cwd);
|
|
312
|
+
const match = diffOutput.match(/(\d+) insertions?.*?(\d+) deletions?/);
|
|
313
|
+
if (match) {
|
|
314
|
+
return {
|
|
315
|
+
files,
|
|
316
|
+
insertions: parseInt(match[1], 10),
|
|
317
|
+
deletions: parseInt(match[2], 10),
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
devLog.gitError("getUncommittedChangesSummary:diff", error);
|
|
323
|
+
}
|
|
324
|
+
return { files, insertions: 0, deletions: 0 };
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
devLog.gitError("getUncommittedChangesSummary", error);
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Squash 合并派发分支到目标分支
|
|
333
|
+
* @returns 新的 commit hash
|
|
334
|
+
*/
|
|
335
|
+
export async function squashMergeProcessBranch(workspaceId, targetBranch, commitMessage, cwd) {
|
|
336
|
+
const processBranch = `${PROCESS_PREFIX}/${workspaceId}`;
|
|
337
|
+
// 切换到目标分支
|
|
338
|
+
await execGit(`checkout "${targetBranch}"`, cwd);
|
|
339
|
+
// Squash 合并(不自动提交)
|
|
340
|
+
await execGit(`merge --squash "${processBranch}"`, cwd);
|
|
341
|
+
// 提交
|
|
342
|
+
await execGit(`commit -m "${commitMessage}"`, cwd);
|
|
343
|
+
return getCurrentCommit(cwd);
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Rebase 合并派发分支(保留独立提交,线性历史)
|
|
347
|
+
*/
|
|
348
|
+
export async function rebaseMergeProcessBranch(workspaceId, targetBranch, cwd) {
|
|
349
|
+
const processBranch = `${PROCESS_PREFIX}/${workspaceId}`;
|
|
350
|
+
// 切换到目标分支
|
|
351
|
+
await execGit(`checkout "${targetBranch}"`, cwd);
|
|
352
|
+
// Fast-forward 合并(如果可能)或 rebase
|
|
353
|
+
try {
|
|
354
|
+
await execGit(`merge --ff-only "${processBranch}"`, cwd);
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
// 如果不能 fast-forward,使用 rebase
|
|
358
|
+
devLog.gitDebug("rebaseMergeProcessBranch:ff-failed", { processBranch, targetBranch, error: error instanceof Error ? error.message : String(error) });
|
|
359
|
+
await execGit(`rebase "${processBranch}"`, cwd);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Cherry-pick 派发分支的提交到工作区(不提交)
|
|
364
|
+
* @param fromCommit - 起始提交(不包含)
|
|
365
|
+
*/
|
|
366
|
+
export async function cherryPickToWorkingTree(workspaceId, targetBranch, fromCommit, cwd) {
|
|
367
|
+
const processBranch = `${PROCESS_PREFIX}/${workspaceId}`;
|
|
368
|
+
// 切换到目标分支
|
|
369
|
+
await execGit(`checkout "${targetBranch}"`, cwd);
|
|
370
|
+
// 获取要 cherry-pick 的提交
|
|
371
|
+
const commits = await getCommitsBetween(fromCommit, processBranch, cwd);
|
|
372
|
+
if (commits.length === 0) {
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
// 从旧到新 cherry-pick(不提交)
|
|
376
|
+
const commitHashes = commits.map((c) => c.hash).reverse();
|
|
377
|
+
for (const hash of commitHashes) {
|
|
378
|
+
try {
|
|
379
|
+
await execGit(`cherry-pick --no-commit ${hash}`, cwd);
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
// 如果有冲突,保持当前状态让用户处理
|
|
383
|
+
devLog.gitDebug("cherryPickToWorkingTree:conflict", { hash, error: error instanceof Error ? error.message : String(error) });
|
|
384
|
+
break;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* 获取备份分支名(最新的一个)
|
|
390
|
+
*/
|
|
391
|
+
export async function getLatestBackupBranch(workspaceId, cwd) {
|
|
392
|
+
const pattern = `${BACKUP_PREFIX}/${workspaceId}/*`;
|
|
393
|
+
const branches = await listBranches(pattern, cwd);
|
|
394
|
+
if (branches.length === 0) {
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
// 按时间戳排序,返回最新的
|
|
398
|
+
return branches.sort().reverse()[0];
|
|
399
|
+
}
|
|
400
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 计算内容的 MD5 hash
|
|
3
|
+
* @param content 要计算 hash 的内容
|
|
4
|
+
* @returns 32 位十六进制字符串
|
|
5
|
+
*/
|
|
6
|
+
export declare function computeContentHash(content: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* 计算节点多字段组合的 hash
|
|
9
|
+
* @param fields 包含 title, requirement, note, conclusion 的对象
|
|
10
|
+
* @returns 32 位十六进制字符串
|
|
11
|
+
*/
|
|
12
|
+
export declare function computeNodeHash(fields: {
|
|
13
|
+
title: string;
|
|
14
|
+
requirement: string;
|
|
15
|
+
note: string;
|
|
16
|
+
conclusion: string;
|
|
17
|
+
}): string;
|
|
18
|
+
/**
|
|
19
|
+
* 子节点结论项(用于 conclusionsHash 计算)
|
|
20
|
+
*/
|
|
21
|
+
export interface ChildConclusionForHash {
|
|
22
|
+
nodeId: string;
|
|
23
|
+
conclusion: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 计算子节点结论的 conclusionsHash
|
|
27
|
+
* 用于检测子节点结论是否发生变化,确保"先读后写"
|
|
28
|
+
* @param childConclusions 子节点结论列表
|
|
29
|
+
* @returns 32 位十六进制字符串
|
|
30
|
+
*/
|
|
31
|
+
export declare function computeConclusionsHash(childConclusions: ChildConclusionForHash[]): string;
|
|
32
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAQT;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,GAAG,MAAM,CAMzF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
/**
|
|
3
|
+
* 计算内容的 MD5 hash
|
|
4
|
+
* @param content 要计算 hash 的内容
|
|
5
|
+
* @returns 32 位十六进制字符串
|
|
6
|
+
*/
|
|
7
|
+
export function computeContentHash(content) {
|
|
8
|
+
return createHash('md5').update(content, 'utf8').digest('hex');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 计算节点多字段组合的 hash
|
|
12
|
+
* @param fields 包含 title, requirement, note, conclusion 的对象
|
|
13
|
+
* @returns 32 位十六进制字符串
|
|
14
|
+
*/
|
|
15
|
+
export function computeNodeHash(fields) {
|
|
16
|
+
const combined = [
|
|
17
|
+
fields.title,
|
|
18
|
+
fields.requirement,
|
|
19
|
+
fields.note,
|
|
20
|
+
fields.conclusion,
|
|
21
|
+
].join('\n---\n');
|
|
22
|
+
return computeContentHash(combined);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 计算子节点结论的 conclusionsHash
|
|
26
|
+
* 用于检测子节点结论是否发生变化,确保"先读后写"
|
|
27
|
+
* @param childConclusions 子节点结论列表
|
|
28
|
+
* @returns 32 位十六进制字符串
|
|
29
|
+
*/
|
|
30
|
+
export function computeConclusionsHash(childConclusions) {
|
|
31
|
+
const data = childConclusions
|
|
32
|
+
.filter(c => c.conclusion) // 只包含有结论的子节点
|
|
33
|
+
.map(c => `${c.nodeId}:${c.conclusion}`)
|
|
34
|
+
.join('|');
|
|
35
|
+
return computeContentHash(data);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAK/B;IACC,MAAM,QAAQ,GAAG;QACf,MAAM,CAAC,KAAK;QACZ,MAAM,CAAC,WAAW;QAClB,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,UAAU;KAClB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClB,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,gBAA0C;IAC/E,MAAM,IAAI,GAAG,gBAAgB;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAE,aAAa;SACxC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;SACvC,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 生成唯一 ID
|
|
3
|
+
* 使用时间戳 + 随机字符串的组合
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateId(): string;
|
|
6
|
+
/**
|
|
7
|
+
* 生成工作区 ID
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateWorkspaceId(): string;
|
|
10
|
+
/**
|
|
11
|
+
* 生成节点 ID
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateNodeId(): string;
|
|
14
|
+
/**
|
|
15
|
+
* 生成备忘 ID
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateMemoId(): string;
|
|
18
|
+
/**
|
|
19
|
+
* 从 ID 中提取短 ID(时间戳部分,8位)
|
|
20
|
+
* @param id 完整 ID(如 ws-mjb65az5-0wcjuu 或 node-mjb6mj4h-a60yht 或 memo-mjktac6h-49y2xe)
|
|
21
|
+
* @returns 短 ID(如 mjb65az5)
|
|
22
|
+
*/
|
|
23
|
+
export declare function extractShortId(id: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* 清理名称,移除文件系统不安全的字符
|
|
26
|
+
* 保留中文、字母、数字、下划线、短横线、空格
|
|
27
|
+
*/
|
|
28
|
+
export declare function sanitizeName(name: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* 生成工作区目录名
|
|
31
|
+
* 格式:{sanitized_name}_{short_id}
|
|
32
|
+
* 示例:UI优化_mjb65az5
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateWorkspaceDirName(name: string, workspaceId: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* 生成节点目录名
|
|
37
|
+
* 格式:{sanitized_title}_{short_id}
|
|
38
|
+
* 示例:功能分析_mjb6mj4h
|
|
39
|
+
* 注意:根节点 "root" 保持不变
|
|
40
|
+
*/
|
|
41
|
+
export declare function generateNodeDirName(title: string, nodeId: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* 生成备忘目录名
|
|
44
|
+
* 格式:{sanitized_title}_{short_id}
|
|
45
|
+
* 示例:长备忘_mjktac6h
|
|
46
|
+
*/
|
|
47
|
+
export declare function generateMemoDirName(title: string, memoId: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* 从目录名中提取短 ID
|
|
50
|
+
* @param dirName 目录名(如 UI优化_mjb65az5)
|
|
51
|
+
* @returns 短 ID(如 mjb65az5)或 null
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractShortIdFromDirName(dirName: string): string | null;
|
|
54
|
+
//# sourceMappingURL=id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAIlF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOzE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIzE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxE"}
|
package/dist/utils/id.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// src/utils/id.ts
|
|
2
|
+
/**
|
|
3
|
+
* 生成唯一 ID
|
|
4
|
+
* 使用时间戳 + 随机字符串的组合
|
|
5
|
+
*/
|
|
6
|
+
export function generateId() {
|
|
7
|
+
const timestamp = Date.now().toString(36);
|
|
8
|
+
const randomPart = Math.random().toString(36).substring(2, 8);
|
|
9
|
+
return `${timestamp}-${randomPart}`;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 生成工作区 ID
|
|
13
|
+
*/
|
|
14
|
+
export function generateWorkspaceId() {
|
|
15
|
+
return `ws-${generateId()}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 生成节点 ID
|
|
19
|
+
*/
|
|
20
|
+
export function generateNodeId() {
|
|
21
|
+
return `node-${generateId()}`;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 生成备忘 ID
|
|
25
|
+
*/
|
|
26
|
+
export function generateMemoId() {
|
|
27
|
+
return `memo-${generateId()}`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 从 ID 中提取短 ID(时间戳部分,8位)
|
|
31
|
+
* @param id 完整 ID(如 ws-mjb65az5-0wcjuu 或 node-mjb6mj4h-a60yht 或 memo-mjktac6h-49y2xe)
|
|
32
|
+
* @returns 短 ID(如 mjb65az5)
|
|
33
|
+
*/
|
|
34
|
+
export function extractShortId(id) {
|
|
35
|
+
// 移除前缀(ws-、node- 或 memo-),取时间戳部分
|
|
36
|
+
const withoutPrefix = id.replace(/^(ws-|node-|memo-)/, "");
|
|
37
|
+
return withoutPrefix.split("-")[0];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 清理名称,移除文件系统不安全的字符
|
|
41
|
+
* 保留中文、字母、数字、下划线、短横线、空格
|
|
42
|
+
*/
|
|
43
|
+
export function sanitizeName(name) {
|
|
44
|
+
return name
|
|
45
|
+
.replace(/[\/\\:*?"<>|]/g, "_") // 替换不安全字符为下划线
|
|
46
|
+
.replace(/\s+/g, " ") // 合并连续空格
|
|
47
|
+
.trim()
|
|
48
|
+
.substring(0, 50); // 限制长度,避免目录名过长
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 生成工作区目录名
|
|
52
|
+
* 格式:{sanitized_name}_{short_id}
|
|
53
|
+
* 示例:UI优化_mjb65az5
|
|
54
|
+
*/
|
|
55
|
+
export function generateWorkspaceDirName(name, workspaceId) {
|
|
56
|
+
const shortId = extractShortId(workspaceId);
|
|
57
|
+
const safeName = sanitizeName(name);
|
|
58
|
+
return `${safeName}_${shortId}`;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 生成节点目录名
|
|
62
|
+
* 格式:{sanitized_title}_{short_id}
|
|
63
|
+
* 示例:功能分析_mjb6mj4h
|
|
64
|
+
* 注意:根节点 "root" 保持不变
|
|
65
|
+
*/
|
|
66
|
+
export function generateNodeDirName(title, nodeId) {
|
|
67
|
+
if (nodeId === "root") {
|
|
68
|
+
return "root";
|
|
69
|
+
}
|
|
70
|
+
const shortId = extractShortId(nodeId);
|
|
71
|
+
const safeTitle = sanitizeName(title);
|
|
72
|
+
return `${safeTitle}_${shortId}`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 生成备忘目录名
|
|
76
|
+
* 格式:{sanitized_title}_{short_id}
|
|
77
|
+
* 示例:长备忘_mjktac6h
|
|
78
|
+
*/
|
|
79
|
+
export function generateMemoDirName(title, memoId) {
|
|
80
|
+
const shortId = extractShortId(memoId);
|
|
81
|
+
const safeTitle = sanitizeName(title);
|
|
82
|
+
return `${safeTitle}_${shortId}`;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 从目录名中提取短 ID
|
|
86
|
+
* @param dirName 目录名(如 UI优化_mjb65az5)
|
|
87
|
+
* @returns 短 ID(如 mjb65az5)或 null
|
|
88
|
+
*/
|
|
89
|
+
export function extractShortIdFromDirName(dirName) {
|
|
90
|
+
const lastUnderscore = dirName.lastIndexOf("_");
|
|
91
|
+
if (lastUnderscore === -1) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
return dirName.substring(lastUnderscore + 1);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAElB;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,OAAO,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,UAAU,EAAE,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,QAAQ,UAAU,EAAE,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,QAAQ,UAAU,EAAE,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,iCAAiC;IACjC,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC3D,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI;SACR,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAE,cAAc;SAC9C,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAa,SAAS;SAC1C,IAAI,EAAE;SACN,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAgB,eAAe;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,WAAmB;IACxE,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,MAAc;IAC/D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,MAAc;IAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
|