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.
Files changed (418) hide show
  1. package/CHANGELOG.md +525 -0
  2. package/README.md +188 -0
  3. package/config/component-versions.json +16 -0
  4. package/config/scenarioCapabilities.json +29 -0
  5. package/config/version-notes.yaml +244 -0
  6. package/dist/adapters/OutputAdapter.d.ts +79 -0
  7. package/dist/adapters/OutputAdapter.d.ts.map +1 -0
  8. package/dist/adapters/OutputAdapter.js +124 -0
  9. package/dist/adapters/OutputAdapter.js.map +1 -0
  10. package/dist/cli/check-node-version.d.ts +3 -0
  11. package/dist/cli/check-node-version.d.ts.map +1 -0
  12. package/dist/cli/check-node-version.js +153 -0
  13. package/dist/cli/check-node-version.js.map +1 -0
  14. package/dist/cli/plugins.d.ts +41 -0
  15. package/dist/cli/plugins.d.ts.map +1 -0
  16. package/dist/cli/plugins.js +742 -0
  17. package/dist/cli/plugins.js.map +1 -0
  18. package/dist/cli/rebuild.d.ts +63 -0
  19. package/dist/cli/rebuild.d.ts.map +1 -0
  20. package/dist/cli/rebuild.js +989 -0
  21. package/dist/cli/rebuild.js.map +1 -0
  22. package/dist/cli/repair.d.ts +7 -0
  23. package/dist/cli/repair.d.ts.map +1 -0
  24. package/dist/cli/repair.js +925 -0
  25. package/dist/cli/repair.js.map +1 -0
  26. package/dist/cli/setup.d.ts +7 -0
  27. package/dist/cli/setup.d.ts.map +1 -0
  28. package/dist/cli/setup.js +452 -0
  29. package/dist/cli/setup.js.map +1 -0
  30. package/dist/cli/update.d.ts +10 -0
  31. package/dist/cli/update.d.ts.map +1 -0
  32. package/dist/cli/update.js +426 -0
  33. package/dist/cli/update.js.map +1 -0
  34. package/dist/cli/webui.d.ts +6 -0
  35. package/dist/cli/webui.d.ts.map +1 -0
  36. package/dist/cli/webui.js +210 -0
  37. package/dist/cli/webui.js.map +1 -0
  38. package/dist/http/index.d.ts +3 -0
  39. package/dist/http/index.d.ts.map +1 -0
  40. package/dist/http/index.js +15 -0
  41. package/dist/http/index.js.map +1 -0
  42. package/dist/http/middleware/errorHandler.d.ts +16 -0
  43. package/dist/http/middleware/errorHandler.d.ts.map +1 -0
  44. package/dist/http/middleware/errorHandler.js +79 -0
  45. package/dist/http/middleware/errorHandler.js.map +1 -0
  46. package/dist/http/routes/admin.d.ts +3 -0
  47. package/dist/http/routes/admin.d.ts.map +1 -0
  48. package/dist/http/routes/admin.js +730 -0
  49. package/dist/http/routes/admin.js.map +1 -0
  50. package/dist/http/routes/backup.d.ts +3 -0
  51. package/dist/http/routes/backup.d.ts.map +1 -0
  52. package/dist/http/routes/backup.js +172 -0
  53. package/dist/http/routes/backup.js.map +1 -0
  54. package/dist/http/routes/config.d.ts +3 -0
  55. package/dist/http/routes/config.d.ts.map +1 -0
  56. package/dist/http/routes/config.js +157 -0
  57. package/dist/http/routes/config.js.map +1 -0
  58. package/dist/http/routes/context.d.ts +3 -0
  59. package/dist/http/routes/context.d.ts.map +1 -0
  60. package/dist/http/routes/context.js +82 -0
  61. package/dist/http/routes/context.js.map +1 -0
  62. package/dist/http/routes/log.d.ts +3 -0
  63. package/dist/http/routes/log.d.ts.map +1 -0
  64. package/dist/http/routes/log.js +105 -0
  65. package/dist/http/routes/log.js.map +1 -0
  66. package/dist/http/routes/memo.d.ts +6 -0
  67. package/dist/http/routes/memo.d.ts.map +1 -0
  68. package/dist/http/routes/memo.js +29 -0
  69. package/dist/http/routes/memo.js.map +1 -0
  70. package/dist/http/routes/node.d.ts +3 -0
  71. package/dist/http/routes/node.d.ts.map +1 -0
  72. package/dist/http/routes/node.js +251 -0
  73. package/dist/http/routes/node.js.map +1 -0
  74. package/dist/http/routes/state.d.ts +3 -0
  75. package/dist/http/routes/state.d.ts.map +1 -0
  76. package/dist/http/routes/state.js +48 -0
  77. package/dist/http/routes/state.js.map +1 -0
  78. package/dist/http/routes/workspace.d.ts +3 -0
  79. package/dist/http/routes/workspace.d.ts.map +1 -0
  80. package/dist/http/routes/workspace.js +249 -0
  81. package/dist/http/routes/workspace.js.map +1 -0
  82. package/dist/http/server.d.ts +10 -0
  83. package/dist/http/server.d.ts.map +1 -0
  84. package/dist/http/server.js +284 -0
  85. package/dist/http/server.js.map +1 -0
  86. package/dist/http/services.d.ts +93 -0
  87. package/dist/http/services.d.ts.map +1 -0
  88. package/dist/http/services.js +297 -0
  89. package/dist/http/services.js.map +1 -0
  90. package/dist/index.d.ts +3 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +1073 -0
  93. package/dist/index.js.map +1 -0
  94. package/dist/prompts/guidanceContent.d.ts +18 -0
  95. package/dist/prompts/guidanceContent.d.ts.map +1 -0
  96. package/dist/prompts/guidanceContent.js +814 -0
  97. package/dist/prompts/guidanceContent.js.map +1 -0
  98. package/dist/prompts/index.d.ts +2 -0
  99. package/dist/prompts/index.d.ts.map +1 -0
  100. package/dist/prompts/index.js +4 -0
  101. package/dist/prompts/index.js.map +1 -0
  102. package/dist/prompts/instructions.d.ts +56 -0
  103. package/dist/prompts/instructions.d.ts.map +1 -0
  104. package/dist/prompts/instructions.js +1343 -0
  105. package/dist/prompts/instructions.js.map +1 -0
  106. package/dist/services/BackupService.d.ts +104 -0
  107. package/dist/services/BackupService.d.ts.map +1 -0
  108. package/dist/services/BackupService.js +549 -0
  109. package/dist/services/BackupService.js.map +1 -0
  110. package/dist/services/CapabilityService.d.ts +38 -0
  111. package/dist/services/CapabilityService.d.ts.map +1 -0
  112. package/dist/services/CapabilityService.js +256 -0
  113. package/dist/services/CapabilityService.js.map +1 -0
  114. package/dist/services/ConfigService.d.ts +35 -0
  115. package/dist/services/ConfigService.d.ts.map +1 -0
  116. package/dist/services/ConfigService.js +105 -0
  117. package/dist/services/ConfigService.js.map +1 -0
  118. package/dist/services/ContextService.d.ts +65 -0
  119. package/dist/services/ContextService.d.ts.map +1 -0
  120. package/dist/services/ContextService.js +503 -0
  121. package/dist/services/ContextService.js.map +1 -0
  122. package/dist/services/DetectionService.d.ts +76 -0
  123. package/dist/services/DetectionService.d.ts.map +1 -0
  124. package/dist/services/DetectionService.js +262 -0
  125. package/dist/services/DetectionService.js.map +1 -0
  126. package/dist/services/DispatchService.d.ts +267 -0
  127. package/dist/services/DispatchService.d.ts.map +1 -0
  128. package/dist/services/DispatchService.js +1357 -0
  129. package/dist/services/DispatchService.js.map +1 -0
  130. package/dist/services/EventService.d.ts +81 -0
  131. package/dist/services/EventService.d.ts.map +1 -0
  132. package/dist/services/EventService.js +187 -0
  133. package/dist/services/EventService.js.map +1 -0
  134. package/dist/services/GuidanceService.d.ts +64 -0
  135. package/dist/services/GuidanceService.d.ts.map +1 -0
  136. package/dist/services/GuidanceService.js +259 -0
  137. package/dist/services/GuidanceService.js.map +1 -0
  138. package/dist/services/HealthService.d.ts +43 -0
  139. package/dist/services/HealthService.d.ts.map +1 -0
  140. package/dist/services/HealthService.js +276 -0
  141. package/dist/services/HealthService.js.map +1 -0
  142. package/dist/services/InstallationService.d.ts +62 -0
  143. package/dist/services/InstallationService.d.ts.map +1 -0
  144. package/dist/services/InstallationService.js +204 -0
  145. package/dist/services/InstallationService.js.map +1 -0
  146. package/dist/services/LogService.d.ts +35 -0
  147. package/dist/services/LogService.d.ts.map +1 -0
  148. package/dist/services/LogService.js +189 -0
  149. package/dist/services/LogService.js.map +1 -0
  150. package/dist/services/MemoService.d.ts +39 -0
  151. package/dist/services/MemoService.d.ts.map +1 -0
  152. package/dist/services/MemoService.js +288 -0
  153. package/dist/services/MemoService.js.map +1 -0
  154. package/dist/services/NodeService.d.ts +90 -0
  155. package/dist/services/NodeService.d.ts.map +1 -0
  156. package/dist/services/NodeService.js +958 -0
  157. package/dist/services/NodeService.js.map +1 -0
  158. package/dist/services/OpenSpecParser.d.ts +43 -0
  159. package/dist/services/OpenSpecParser.d.ts.map +1 -0
  160. package/dist/services/OpenSpecParser.js +191 -0
  161. package/dist/services/OpenSpecParser.js.map +1 -0
  162. package/dist/services/ReferenceService.d.ts +35 -0
  163. package/dist/services/ReferenceService.d.ts.map +1 -0
  164. package/dist/services/ReferenceService.js +195 -0
  165. package/dist/services/ReferenceService.js.map +1 -0
  166. package/dist/services/RepairService.d.ts +36 -0
  167. package/dist/services/RepairService.d.ts.map +1 -0
  168. package/dist/services/RepairService.js +429 -0
  169. package/dist/services/RepairService.js.map +1 -0
  170. package/dist/services/SearchService.d.ts +34 -0
  171. package/dist/services/SearchService.d.ts.map +1 -0
  172. package/dist/services/SearchService.js +293 -0
  173. package/dist/services/SearchService.js.map +1 -0
  174. package/dist/services/SessionService.d.ts +136 -0
  175. package/dist/services/SessionService.d.ts.map +1 -0
  176. package/dist/services/SessionService.js +297 -0
  177. package/dist/services/SessionService.js.map +1 -0
  178. package/dist/services/StateService.d.ts +97 -0
  179. package/dist/services/StateService.d.ts.map +1 -0
  180. package/dist/services/StateService.js +846 -0
  181. package/dist/services/StateService.js.map +1 -0
  182. package/dist/services/TutorialService.d.ts +114 -0
  183. package/dist/services/TutorialService.d.ts.map +1 -0
  184. package/dist/services/TutorialService.js +1262 -0
  185. package/dist/services/TutorialService.js.map +1 -0
  186. package/dist/services/WorkspaceService.d.ts +273 -0
  187. package/dist/services/WorkspaceService.d.ts.map +1 -0
  188. package/dist/services/WorkspaceService.js +1764 -0
  189. package/dist/services/WorkspaceService.js.map +1 -0
  190. package/dist/services/index.d.ts +15 -0
  191. package/dist/services/index.d.ts.map +1 -0
  192. package/dist/services/index.js +14 -0
  193. package/dist/services/index.js.map +1 -0
  194. package/dist/storage/FileSystemAdapter.d.ts +223 -0
  195. package/dist/storage/FileSystemAdapter.d.ts.map +1 -0
  196. package/dist/storage/FileSystemAdapter.js +384 -0
  197. package/dist/storage/FileSystemAdapter.js.map +1 -0
  198. package/dist/storage/JsonStorage.d.ts +158 -0
  199. package/dist/storage/JsonStorage.d.ts.map +1 -0
  200. package/dist/storage/JsonStorage.js +613 -0
  201. package/dist/storage/JsonStorage.js.map +1 -0
  202. package/dist/storage/MarkdownStorage.d.ts +178 -0
  203. package/dist/storage/MarkdownStorage.d.ts.map +1 -0
  204. package/dist/storage/MarkdownStorage.js +918 -0
  205. package/dist/storage/MarkdownStorage.js.map +1 -0
  206. package/dist/storage/SessionBindingStorage.d.ts +69 -0
  207. package/dist/storage/SessionBindingStorage.d.ts.map +1 -0
  208. package/dist/storage/SessionBindingStorage.js +131 -0
  209. package/dist/storage/SessionBindingStorage.js.map +1 -0
  210. package/dist/storage/index.d.ts +6 -0
  211. package/dist/storage/index.d.ts.map +1 -0
  212. package/dist/storage/index.js +6 -0
  213. package/dist/storage/index.js.map +1 -0
  214. package/dist/tools/capability.d.ts +18 -0
  215. package/dist/tools/capability.d.ts.map +1 -0
  216. package/dist/tools/capability.js +73 -0
  217. package/dist/tools/capability.js.map +1 -0
  218. package/dist/tools/config.d.ts +14 -0
  219. package/dist/tools/config.d.ts.map +1 -0
  220. package/dist/tools/config.js +61 -0
  221. package/dist/tools/config.js.map +1 -0
  222. package/dist/tools/context.d.ts +22 -0
  223. package/dist/tools/context.d.ts.map +1 -0
  224. package/dist/tools/context.js +139 -0
  225. package/dist/tools/context.js.map +1 -0
  226. package/dist/tools/dispatch.d.ts +41 -0
  227. package/dist/tools/dispatch.d.ts.map +1 -0
  228. package/dist/tools/dispatch.js +380 -0
  229. package/dist/tools/dispatch.js.map +1 -0
  230. package/dist/tools/help.d.ts +44 -0
  231. package/dist/tools/help.d.ts.map +1 -0
  232. package/dist/tools/help.js +227 -0
  233. package/dist/tools/help.js.map +1 -0
  234. package/dist/tools/import.d.ts +17 -0
  235. package/dist/tools/import.d.ts.map +1 -0
  236. package/dist/tools/import.js +96 -0
  237. package/dist/tools/import.js.map +1 -0
  238. package/dist/tools/index.d.ts +12 -0
  239. package/dist/tools/index.d.ts.map +1 -0
  240. package/dist/tools/index.js +13 -0
  241. package/dist/tools/index.js.map +1 -0
  242. package/dist/tools/log.d.ts +21 -0
  243. package/dist/tools/log.d.ts.map +1 -0
  244. package/dist/tools/log.js +93 -0
  245. package/dist/tools/log.js.map +1 -0
  246. package/dist/tools/memo.d.ts +26 -0
  247. package/dist/tools/memo.d.ts.map +1 -0
  248. package/dist/tools/memo.js +188 -0
  249. package/dist/tools/memo.js.map +1 -0
  250. package/dist/tools/node.d.ts +34 -0
  251. package/dist/tools/node.d.ts.map +1 -0
  252. package/dist/tools/node.js +328 -0
  253. package/dist/tools/node.js.map +1 -0
  254. package/dist/tools/search.d.ts +14 -0
  255. package/dist/tools/search.d.ts.map +1 -0
  256. package/dist/tools/search.js +95 -0
  257. package/dist/tools/search.js.map +1 -0
  258. package/dist/tools/session.d.ts +22 -0
  259. package/dist/tools/session.d.ts.map +1 -0
  260. package/dist/tools/session.js +127 -0
  261. package/dist/tools/session.js.map +1 -0
  262. package/dist/tools/state.d.ts +10 -0
  263. package/dist/tools/state.d.ts.map +1 -0
  264. package/dist/tools/state.js +79 -0
  265. package/dist/tools/state.js.map +1 -0
  266. package/dist/tools/workspace.d.ts +38 -0
  267. package/dist/tools/workspace.d.ts.map +1 -0
  268. package/dist/tools/workspace.js +240 -0
  269. package/dist/tools/workspace.js.map +1 -0
  270. package/dist/types/capability.d.ts +36 -0
  271. package/dist/types/capability.d.ts.map +1 -0
  272. package/dist/types/capability.js +3 -0
  273. package/dist/types/capability.js.map +1 -0
  274. package/dist/types/confirmation.d.ts +35 -0
  275. package/dist/types/confirmation.d.ts.map +1 -0
  276. package/dist/types/confirmation.js +3 -0
  277. package/dist/types/confirmation.js.map +1 -0
  278. package/dist/types/context.d.ts +174 -0
  279. package/dist/types/context.d.ts.map +1 -0
  280. package/dist/types/context.js +3 -0
  281. package/dist/types/context.js.map +1 -0
  282. package/dist/types/errors.d.ts +81 -0
  283. package/dist/types/errors.d.ts.map +1 -0
  284. package/dist/types/errors.js +154 -0
  285. package/dist/types/errors.js.map +1 -0
  286. package/dist/types/guidance.d.ts +162 -0
  287. package/dist/types/guidance.d.ts.map +1 -0
  288. package/dist/types/guidance.js +4 -0
  289. package/dist/types/guidance.js.map +1 -0
  290. package/dist/types/health.d.ts +61 -0
  291. package/dist/types/health.d.ts.map +1 -0
  292. package/dist/types/health.js +3 -0
  293. package/dist/types/health.js.map +1 -0
  294. package/dist/types/index.d.ts +10 -0
  295. package/dist/types/index.d.ts.map +1 -0
  296. package/dist/types/index.js +11 -0
  297. package/dist/types/index.js.map +1 -0
  298. package/dist/types/memo.d.ts +132 -0
  299. package/dist/types/memo.d.ts.map +1 -0
  300. package/dist/types/memo.js +3 -0
  301. package/dist/types/memo.js.map +1 -0
  302. package/dist/types/node.d.ts +316 -0
  303. package/dist/types/node.d.ts.map +1 -0
  304. package/dist/types/node.js +3 -0
  305. package/dist/types/node.js.map +1 -0
  306. package/dist/types/repair.d.ts +62 -0
  307. package/dist/types/repair.d.ts.map +1 -0
  308. package/dist/types/repair.js +4 -0
  309. package/dist/types/repair.js.map +1 -0
  310. package/dist/types/search.d.ts +58 -0
  311. package/dist/types/search.d.ts.map +1 -0
  312. package/dist/types/search.js +3 -0
  313. package/dist/types/search.js.map +1 -0
  314. package/dist/types/settings.d.ts +109 -0
  315. package/dist/types/settings.d.ts.map +1 -0
  316. package/dist/types/settings.js +30 -0
  317. package/dist/types/settings.js.map +1 -0
  318. package/dist/types/workspace.d.ts +357 -0
  319. package/dist/types/workspace.d.ts.map +1 -0
  320. package/dist/types/workspace.js +3 -0
  321. package/dist/types/workspace.js.map +1 -0
  322. package/dist/utils/contentValidation.d.ts +47 -0
  323. package/dist/utils/contentValidation.d.ts.map +1 -0
  324. package/dist/utils/contentValidation.js +93 -0
  325. package/dist/utils/contentValidation.js.map +1 -0
  326. package/dist/utils/devLog.d.ts +43 -0
  327. package/dist/utils/devLog.d.ts.map +1 -0
  328. package/dist/utils/devLog.js +94 -0
  329. package/dist/utils/devLog.js.map +1 -0
  330. package/dist/utils/errorLogger.d.ts +27 -0
  331. package/dist/utils/errorLogger.d.ts.map +1 -0
  332. package/dist/utils/errorLogger.js +105 -0
  333. package/dist/utils/errorLogger.js.map +1 -0
  334. package/dist/utils/git.d.ts +123 -0
  335. package/dist/utils/git.d.ts.map +1 -0
  336. package/dist/utils/git.js +400 -0
  337. package/dist/utils/git.js.map +1 -0
  338. package/dist/utils/hash.d.ts +32 -0
  339. package/dist/utils/hash.d.ts.map +1 -0
  340. package/dist/utils/hash.js +37 -0
  341. package/dist/utils/hash.js.map +1 -0
  342. package/dist/utils/id.d.ts +54 -0
  343. package/dist/utils/id.d.ts.map +1 -0
  344. package/dist/utils/id.js +96 -0
  345. package/dist/utils/id.js.map +1 -0
  346. package/dist/utils/index.d.ts +8 -0
  347. package/dist/utils/index.d.ts.map +1 -0
  348. package/dist/utils/index.js +9 -0
  349. package/dist/utils/index.js.map +1 -0
  350. package/dist/utils/logger.d.ts +42 -0
  351. package/dist/utils/logger.d.ts.map +1 -0
  352. package/dist/utils/logger.js +228 -0
  353. package/dist/utils/logger.js.map +1 -0
  354. package/dist/utils/manualChangeFormatter.d.ts +8 -0
  355. package/dist/utils/manualChangeFormatter.d.ts.map +1 -0
  356. package/dist/utils/manualChangeFormatter.js +21 -0
  357. package/dist/utils/manualChangeFormatter.js.map +1 -0
  358. package/dist/utils/paramValidator.d.ts +35 -0
  359. package/dist/utils/paramValidator.d.ts.map +1 -0
  360. package/dist/utils/paramValidator.js +214 -0
  361. package/dist/utils/paramValidator.js.map +1 -0
  362. package/dist/utils/port.d.ts +7 -0
  363. package/dist/utils/port.d.ts.map +1 -0
  364. package/dist/utils/port.js +28 -0
  365. package/dist/utils/port.js.map +1 -0
  366. package/dist/utils/processManager.d.ts +53 -0
  367. package/dist/utils/processManager.d.ts.map +1 -0
  368. package/dist/utils/processManager.js +267 -0
  369. package/dist/utils/processManager.js.map +1 -0
  370. package/dist/utils/sessionLogger.d.ts +28 -0
  371. package/dist/utils/sessionLogger.d.ts.map +1 -0
  372. package/dist/utils/sessionLogger.js +142 -0
  373. package/dist/utils/sessionLogger.js.map +1 -0
  374. package/dist/utils/time.d.ts +15 -0
  375. package/dist/utils/time.d.ts.map +1 -0
  376. package/dist/utils/time.js +32 -0
  377. package/dist/utils/time.js.map +1 -0
  378. package/dist/utils/validation.d.ts +23 -0
  379. package/dist/utils/validation.d.ts.map +1 -0
  380. package/dist/utils/validation.js +88 -0
  381. package/dist/utils/validation.js.map +1 -0
  382. package/docs//346/227/245/345/277/227/347/263/273/347/273/237.md +389 -0
  383. package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +1446 -0
  384. 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
  385. package/package.json +89 -0
  386. package/plugin/README.md +141 -0
  387. package/plugin/agents/xtep-executor.md +114 -0
  388. package/plugin/agents/xtep-reviewer.md +133 -0
  389. package/plugin/docs/diagnostic-guide.md +128 -0
  390. package/plugin/hooks/hooks.json.deprecated +70 -0
  391. package/plugin/scripts/cursor-hook-entry.cjs +217 -0
  392. package/plugin/scripts/hook-entry.cjs +663 -0
  393. package/plugin/scripts/openspec-import.cjs +714 -0
  394. package/plugin/scripts/shared/binding.cjs +98 -0
  395. package/plugin/scripts/shared/config.cjs +65 -0
  396. package/plugin/scripts/shared/context.cjs +120 -0
  397. package/plugin/scripts/shared/index.cjs +34 -0
  398. package/plugin/scripts/shared/logger.cjs +196 -0
  399. package/plugin/scripts/shared/reminder.cjs +261 -0
  400. package/plugin/scripts/shared/utils.cjs +62 -0
  401. package/plugin/scripts/shared/workspace.cjs +322 -0
  402. package/plugin/skills/aligning-intent/SKILL.md +275 -0
  403. package/plugin/skills/analyzing-measurements/SKILL.md +223 -0
  404. package/plugin/skills/bootstrapping-workspace/SKILL.md +260 -0
  405. package/plugin/skills/designing-solutions/SKILL.md +363 -0
  406. package/plugin/skills/diagnosing-issues/SKILL.md +219 -0
  407. package/plugin/skills/discovering-context/SKILL.md +283 -0
  408. package/plugin/skills/dispatching-parent/SKILL.md +399 -0
  409. package/plugin/skills/executing-task/SKILL.md +340 -0
  410. package/plugin/skills/memo-create/SKILL.md +222 -0
  411. package/plugin/skills/planning-verification/SKILL.md +245 -0
  412. package/plugin/skills/preparing-dispatch/SKILL.md +299 -0
  413. package/plugin/skills/researching-tech/SKILL.md +223 -0
  414. package/plugin/skills/reviewing-quality/SKILL.md +354 -0
  415. package/plugin/skills/reviewing-spec/SKILL.md +333 -0
  416. package/plugin/skills/starting-info-flow/SKILL.md +196 -0
  417. package/web/README.md +5 -0
  418. 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"}