specweave 0.29.2 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/README.md +65 -16
  2. package/bin/specweave.js +16 -0
  3. package/dist/plugins/specweave-ado/lib/ado-spec-commit-sync.d.ts +1 -1
  4. package/dist/plugins/specweave-ado/lib/ado-spec-commit-sync.d.ts.map +1 -1
  5. package/dist/plugins/specweave-ado/lib/ado-spec-commit-sync.js +1 -1
  6. package/dist/plugins/specweave-ado/lib/ado-spec-commit-sync.js.map +1 -1
  7. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts +1 -1
  8. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
  9. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +1 -1
  10. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
  11. package/dist/plugins/specweave-ado/lib/conflict-resolver.d.ts +134 -0
  12. package/dist/plugins/specweave-ado/lib/conflict-resolver.d.ts.map +1 -0
  13. package/dist/plugins/specweave-ado/lib/conflict-resolver.js +423 -0
  14. package/dist/plugins/specweave-ado/lib/conflict-resolver.js.map +1 -0
  15. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +23 -1
  16. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  17. package/dist/plugins/specweave-github/lib/github-client-v2.js +95 -0
  18. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  19. package/dist/plugins/specweave-github/lib/github-spec-commit-sync.d.ts +1 -1
  20. package/dist/plugins/specweave-github/lib/github-spec-commit-sync.d.ts.map +1 -1
  21. package/dist/plugins/specweave-github/lib/github-spec-commit-sync.js +1 -1
  22. package/dist/plugins/specweave-github/lib/github-spec-commit-sync.js.map +1 -1
  23. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts +1 -1
  24. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  25. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +1 -1
  26. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  27. package/dist/plugins/specweave-github/lib/types.d.ts +20 -0
  28. package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -1
  29. package/dist/plugins/specweave-jira/lib/jira-spec-commit-sync.d.ts +1 -1
  30. package/dist/plugins/specweave-jira/lib/jira-spec-commit-sync.d.ts.map +1 -1
  31. package/dist/plugins/specweave-jira/lib/jira-spec-commit-sync.js +1 -1
  32. package/dist/plugins/specweave-jira/lib/jira-spec-commit-sync.js.map +1 -1
  33. package/dist/plugins/specweave-jira/lib/jira-spec-content-sync.d.ts +1 -1
  34. package/dist/plugins/specweave-jira/lib/jira-spec-content-sync.d.ts.map +1 -1
  35. package/dist/plugins/specweave-jira/lib/jira-spec-content-sync.js +1 -1
  36. package/dist/plugins/specweave-jira/lib/jira-spec-content-sync.js.map +1 -1
  37. package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts +2 -2
  38. package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts.map +1 -1
  39. package/dist/plugins/specweave-jira/lib/setup-wizard.js +1 -1
  40. package/dist/plugins/specweave-jira/lib/setup-wizard.js.map +1 -1
  41. package/dist/src/adapters/claude/adapter.js +1 -1
  42. package/dist/src/adapters/claude/adapter.js.map +1 -1
  43. package/dist/src/cli/commands/detect-project.js +1 -1
  44. package/dist/src/cli/commands/detect-project.js.map +1 -1
  45. package/dist/src/cli/commands/detect-specs.js +1 -1
  46. package/dist/src/cli/commands/detect-specs.js.map +1 -1
  47. package/dist/src/cli/commands/import-docs.js +1 -1
  48. package/dist/src/cli/commands/import-docs.js.map +1 -1
  49. package/dist/src/cli/commands/init-multiproject.js +1 -1
  50. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  51. package/dist/src/cli/commands/init.d.ts.map +1 -1
  52. package/dist/src/cli/commands/init.js +31 -1
  53. package/dist/src/cli/commands/init.js.map +1 -1
  54. package/dist/src/cli/commands/jobs.js +15 -1
  55. package/dist/src/cli/commands/jobs.js.map +1 -1
  56. package/dist/src/cli/commands/migrate-to-multiproject.js +1 -1
  57. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  58. package/dist/src/cli/commands/switch-project.js +1 -1
  59. package/dist/src/cli/commands/switch-project.js.map +1 -1
  60. package/dist/src/cli/commands/sync-scheduled.d.ts +38 -0
  61. package/dist/src/cli/commands/sync-scheduled.d.ts.map +1 -0
  62. package/dist/src/cli/commands/sync-scheduled.js +170 -0
  63. package/dist/src/cli/commands/sync-scheduled.js.map +1 -0
  64. package/dist/src/cli/helpers/init/external-import-grouping.d.ts +53 -0
  65. package/dist/src/cli/helpers/init/external-import-grouping.d.ts.map +1 -0
  66. package/dist/src/cli/helpers/init/external-import-grouping.js +287 -0
  67. package/dist/src/cli/helpers/init/external-import-grouping.js.map +1 -0
  68. package/dist/src/cli/helpers/init/external-import.d.ts +1 -34
  69. package/dist/src/cli/helpers/init/external-import.d.ts.map +1 -1
  70. package/dist/src/cli/helpers/init/external-import.js +15 -486
  71. package/dist/src/cli/helpers/init/external-import.js.map +1 -1
  72. package/dist/src/cli/helpers/init/living-docs-preflight.d.ts +58 -0
  73. package/dist/src/cli/helpers/init/living-docs-preflight.d.ts.map +1 -0
  74. package/dist/src/cli/helpers/init/living-docs-preflight.js +290 -0
  75. package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -0
  76. package/dist/src/cli/helpers/init/sync-profile-helpers.d.ts +48 -0
  77. package/dist/src/cli/helpers/init/sync-profile-helpers.d.ts.map +1 -0
  78. package/dist/src/cli/helpers/init/sync-profile-helpers.js +238 -0
  79. package/dist/src/cli/helpers/init/sync-profile-helpers.js.map +1 -0
  80. package/dist/src/cli/helpers/init/types.d.ts +1 -0
  81. package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
  82. package/dist/src/cli/helpers/issue-tracker/ado.d.ts.map +1 -1
  83. package/dist/src/cli/helpers/issue-tracker/ado.js +113 -3
  84. package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
  85. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  86. package/dist/src/cli/helpers/issue-tracker/index.js +2 -287
  87. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  88. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts +25 -0
  89. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts.map +1 -0
  90. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js +306 -0
  91. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js.map +1 -0
  92. package/dist/src/cli/helpers/issue-tracker/types.d.ts +27 -0
  93. package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -1
  94. package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -1
  95. package/dist/src/cli/workers/living-docs-worker.d.ts +16 -0
  96. package/dist/src/cli/workers/living-docs-worker.d.ts.map +1 -0
  97. package/dist/src/cli/workers/living-docs-worker.js +395 -0
  98. package/dist/src/cli/workers/living-docs-worker.js.map +1 -0
  99. package/dist/src/core/background/job-dependency.d.ts +45 -0
  100. package/dist/src/core/background/job-dependency.d.ts.map +1 -0
  101. package/dist/src/core/background/job-dependency.js +144 -0
  102. package/dist/src/core/background/job-dependency.js.map +1 -0
  103. package/dist/src/core/background/job-launcher.d.ts +21 -1
  104. package/dist/src/core/background/job-launcher.d.ts.map +1 -1
  105. package/dist/src/core/background/job-launcher.js +93 -0
  106. package/dist/src/core/background/job-launcher.js.map +1 -1
  107. package/dist/src/core/background/types.d.ts +73 -2
  108. package/dist/src/core/background/types.d.ts.map +1 -1
  109. package/dist/src/core/brownfield/importer.js +1 -1
  110. package/dist/src/core/brownfield/importer.js.map +1 -1
  111. package/dist/src/core/comment-builder.d.ts +1 -1
  112. package/dist/src/core/comment-builder.d.ts.map +1 -1
  113. package/dist/src/core/{cost-tracker.d.ts → cost/cost-tracker.d.ts} +2 -2
  114. package/dist/src/core/cost/cost-tracker.d.ts.map +1 -0
  115. package/dist/src/core/{cost-tracker.js → cost/cost-tracker.js} +2 -2
  116. package/dist/src/core/cost/cost-tracker.js.map +1 -0
  117. package/dist/src/core/credentials/credentials-manager.d.ts.map +1 -0
  118. package/dist/src/core/credentials/credentials-manager.js.map +1 -0
  119. package/dist/src/core/increment/discipline-checker.js +1 -1
  120. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  121. package/dist/src/core/increment/increment-archiver.d.ts +9 -8
  122. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -1
  123. package/dist/src/core/increment/increment-archiver.js +40 -42
  124. package/dist/src/core/increment/increment-archiver.js.map +1 -1
  125. package/dist/src/core/increment/increment-status.d.ts.map +1 -0
  126. package/dist/src/core/{increment-status.js → increment/increment-status.js} +1 -1
  127. package/dist/src/core/increment/increment-status.js.map +1 -0
  128. package/dist/src/core/increment/increment-utils.d.ts.map +1 -0
  129. package/dist/src/core/increment/increment-utils.js.map +1 -0
  130. package/dist/src/core/increment/metadata-validator.js +1 -1
  131. package/dist/src/core/increment/metadata-validator.js.map +1 -1
  132. package/dist/src/core/living-docs/checkpoint-manager.d.ts +120 -0
  133. package/dist/src/core/living-docs/checkpoint-manager.d.ts.map +1 -0
  134. package/dist/src/core/living-docs/checkpoint-manager.js +231 -0
  135. package/dist/src/core/living-docs/checkpoint-manager.js.map +1 -0
  136. package/dist/src/core/living-docs/discovery.d.ts +91 -0
  137. package/dist/src/core/living-docs/discovery.d.ts.map +1 -0
  138. package/dist/src/core/living-docs/discovery.js +656 -0
  139. package/dist/src/core/living-docs/discovery.js.map +1 -0
  140. package/dist/src/core/living-docs/feature-archiver.d.ts +23 -4
  141. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -1
  142. package/dist/src/core/living-docs/feature-archiver.js +133 -30
  143. package/dist/src/core/living-docs/feature-archiver.js.map +1 -1
  144. package/dist/src/core/living-docs/foundation-builder.d.ts +37 -0
  145. package/dist/src/core/living-docs/foundation-builder.d.ts.map +1 -0
  146. package/dist/src/core/living-docs/foundation-builder.js +357 -0
  147. package/dist/src/core/living-docs/foundation-builder.js.map +1 -0
  148. package/dist/src/core/living-docs/living-docs-sync.d.ts +58 -0
  149. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  150. package/dist/src/core/living-docs/living-docs-sync.js +204 -7
  151. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  152. package/dist/src/core/living-docs/module-analyzer.d.ts +97 -0
  153. package/dist/src/core/living-docs/module-analyzer.d.ts.map +1 -0
  154. package/dist/src/core/living-docs/module-analyzer.js +427 -0
  155. package/dist/src/core/living-docs/module-analyzer.js.map +1 -0
  156. package/dist/src/core/living-docs/suggestions-generator.d.ts +112 -0
  157. package/dist/src/core/living-docs/suggestions-generator.d.ts.map +1 -0
  158. package/dist/src/core/living-docs/suggestions-generator.js +362 -0
  159. package/dist/src/core/living-docs/suggestions-generator.js.map +1 -0
  160. package/dist/src/core/living-docs/workitem-matcher.d.ts +116 -0
  161. package/dist/src/core/living-docs/workitem-matcher.d.ts.map +1 -0
  162. package/dist/src/core/living-docs/workitem-matcher.js +356 -0
  163. package/dist/src/core/living-docs/workitem-matcher.js.map +1 -0
  164. package/dist/src/core/{plugin-loader.d.ts → plugins/plugin-loader.d.ts} +1 -1
  165. package/dist/src/core/plugins/plugin-loader.d.ts.map +1 -0
  166. package/dist/src/core/{plugin-loader.js → plugins/plugin-loader.js} +2 -2
  167. package/dist/src/core/plugins/plugin-loader.js.map +1 -0
  168. package/dist/src/core/{project-manager.d.ts → project/project-manager.d.ts} +1 -1
  169. package/dist/src/core/project/project-manager.d.ts.map +1 -0
  170. package/dist/src/core/{project-manager.js → project/project-manager.js} +3 -3
  171. package/dist/src/core/project/project-manager.js.map +1 -0
  172. package/dist/src/core/project/project-structure-detector.d.ts.map +1 -0
  173. package/dist/src/core/project/project-structure-detector.js.map +1 -0
  174. package/dist/src/core/{rfc-generator-v2.d.ts → rfc/rfc-generator-v2.d.ts} +1 -1
  175. package/dist/src/core/rfc/rfc-generator-v2.d.ts.map +1 -0
  176. package/dist/src/core/{rfc-generator-v2.js → rfc/rfc-generator-v2.js} +1 -1
  177. package/dist/src/core/rfc/rfc-generator-v2.js.map +1 -0
  178. package/dist/src/core/scheduler/index.d.ts +1 -0
  179. package/dist/src/core/scheduler/index.d.ts.map +1 -1
  180. package/dist/src/core/scheduler/index.js +1 -0
  181. package/dist/src/core/scheduler/index.js.map +1 -1
  182. package/dist/src/core/scheduler/scheduled-job.d.ts +1 -1
  183. package/dist/src/core/scheduler/scheduled-job.d.ts.map +1 -1
  184. package/dist/src/core/scheduler/scheduled-job.js.map +1 -1
  185. package/dist/src/core/scheduler/session-sync-executor.d.ts +138 -0
  186. package/dist/src/core/scheduler/session-sync-executor.d.ts.map +1 -0
  187. package/dist/src/core/scheduler/session-sync-executor.js +333 -0
  188. package/dist/src/core/scheduler/session-sync-executor.js.map +1 -0
  189. package/dist/src/core/{spec-content-sync.d.ts → specs/spec-content-sync.d.ts} +2 -2
  190. package/dist/src/core/specs/spec-content-sync.d.ts.map +1 -0
  191. package/dist/src/core/{spec-content-sync.js → specs/spec-content-sync.js} +1 -1
  192. package/dist/src/core/specs/spec-content-sync.js.map +1 -0
  193. package/dist/src/core/{spec-detector.d.ts → specs/spec-detector.d.ts} +1 -1
  194. package/dist/src/core/specs/spec-detector.d.ts.map +1 -0
  195. package/dist/src/core/{spec-detector.js → specs/spec-detector.js} +1 -1
  196. package/dist/src/core/specs/spec-detector.js.map +1 -0
  197. package/dist/src/core/{spec-identifier-detector.d.ts → specs/spec-identifier-detector.d.ts} +2 -2
  198. package/dist/src/core/specs/spec-identifier-detector.d.ts.map +1 -0
  199. package/dist/src/core/{spec-identifier-detector.js → specs/spec-identifier-detector.js} +1 -1
  200. package/dist/src/core/specs/spec-identifier-detector.js.map +1 -0
  201. package/dist/src/core/specs/spec-metadata-manager.js +1 -1
  202. package/dist/src/core/specs/spec-metadata-manager.js.map +1 -1
  203. package/dist/src/core/specs/spec-task-mapper.d.ts.map +1 -0
  204. package/dist/src/core/specs/spec-task-mapper.js.map +1 -0
  205. package/dist/src/core/sync/sync-audit-logger.d.ts +62 -0
  206. package/dist/src/core/sync/sync-audit-logger.d.ts.map +1 -1
  207. package/dist/src/core/sync/sync-audit-logger.js +59 -0
  208. package/dist/src/core/sync/sync-audit-logger.js.map +1 -1
  209. package/dist/src/importers/item-converter.d.ts +51 -27
  210. package/dist/src/importers/item-converter.d.ts.map +1 -1
  211. package/dist/src/importers/item-converter.js +219 -179
  212. package/dist/src/importers/item-converter.js.map +1 -1
  213. package/dist/src/importers/markdown-generator.d.ts +75 -0
  214. package/dist/src/importers/markdown-generator.d.ts.map +1 -0
  215. package/dist/src/importers/markdown-generator.js +250 -0
  216. package/dist/src/importers/markdown-generator.js.map +1 -0
  217. package/dist/src/integrations/ado/ado-client.d.ts +93 -0
  218. package/dist/src/integrations/ado/ado-client.d.ts.map +1 -1
  219. package/dist/src/integrations/ado/ado-client.js +172 -1
  220. package/dist/src/integrations/ado/ado-client.js.map +1 -1
  221. package/dist/src/integrations/jira/jira-client.d.ts +44 -0
  222. package/dist/src/integrations/jira/jira-client.d.ts.map +1 -1
  223. package/dist/src/integrations/jira/jira-client.js +119 -1
  224. package/dist/src/integrations/jira/jira-client.js.map +1 -1
  225. package/dist/src/integrations/jira/jira-incremental-mapper.js +2 -2
  226. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  227. package/dist/src/integrations/jira/jira-mapper.js +1 -1
  228. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  229. package/dist/src/living-docs/epic-id-allocator.d.ts +177 -0
  230. package/dist/src/living-docs/epic-id-allocator.d.ts.map +1 -0
  231. package/dist/src/living-docs/epic-id-allocator.js +363 -0
  232. package/dist/src/living-docs/epic-id-allocator.js.map +1 -0
  233. package/dist/src/sync/external-change-puller.d.ts +94 -0
  234. package/dist/src/sync/external-change-puller.d.ts.map +1 -0
  235. package/dist/src/sync/external-change-puller.js +181 -0
  236. package/dist/src/sync/external-change-puller.js.map +1 -0
  237. package/dist/src/sync/index.d.ts +4 -0
  238. package/dist/src/sync/index.d.ts.map +1 -1
  239. package/dist/src/sync/index.js +2 -0
  240. package/dist/src/sync/index.js.map +1 -1
  241. package/dist/src/sync/living-docs-updater.d.ts +93 -0
  242. package/dist/src/sync/living-docs-updater.d.ts.map +1 -0
  243. package/dist/src/sync/living-docs-updater.js +218 -0
  244. package/dist/src/sync/living-docs-updater.js.map +1 -0
  245. package/dist/src/testing/test-generator.js +1 -1
  246. package/dist/src/testing/test-generator.js.map +1 -1
  247. package/dist/src/utils/cost-reporter.d.ts +1 -1
  248. package/dist/src/utils/cost-reporter.d.ts.map +1 -1
  249. package/dist/src/utils/model-selection.js +4 -4
  250. package/dist/src/utils/model-selection.js.map +1 -1
  251. package/dist/src/utils/pricing-constants.d.ts +2 -2
  252. package/dist/src/utils/pricing-constants.js +2 -2
  253. package/package.json +1 -1
  254. package/plugins/specweave/.claude-plugin/plugin.json +1 -28
  255. package/plugins/specweave/agents/code-standards-detective/AGENT.md +3 -3
  256. package/plugins/specweave/agents/infrastructure/AGENT.md +4 -0
  257. package/plugins/specweave/agents/performance/AGENT.md +2 -2
  258. package/plugins/specweave/agents/reflective-reviewer/AGENT.md +3 -3
  259. package/plugins/specweave/agents/translator/AGENT.md +2 -2
  260. package/plugins/specweave/commands/specweave-costs.md +2 -2
  261. package/plugins/specweave/commands/specweave-do.md +2 -2
  262. package/plugins/specweave/hooks/lib/scheduler-startup.sh +59 -8
  263. package/plugins/specweave/skills/code-reviewer/SKILL.md +1 -1
  264. package/plugins/specweave/skills/role-orchestrator/README.md +1 -1
  265. package/plugins/specweave-ado/agents/ado-manager/AGENT.md +8 -2
  266. package/plugins/specweave-ado/agents/ado-multi-project-mapper/AGENT.md +2 -2
  267. package/plugins/specweave-ado/agents/ado-sync-judge/AGENT.md +2 -2
  268. package/plugins/specweave-ado/lib/ado-spec-commit-sync.d.ts +1 -1
  269. package/plugins/specweave-ado/lib/ado-spec-commit-sync.js +1 -1
  270. package/plugins/specweave-ado/lib/ado-spec-commit-sync.ts +1 -1
  271. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +1 -1
  272. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +1 -1
  273. package/plugins/specweave-ado/lib/conflict-resolver.js +87 -0
  274. package/plugins/specweave-ado/lib/conflict-resolver.ts +124 -0
  275. package/plugins/specweave-ado/skills/specweave-ado-mapper/SKILL.md +1 -1
  276. package/plugins/specweave-backend/agents/database-optimizer/AGENT.md +3 -3
  277. package/plugins/specweave-backend/skills/dotnet-backend/SKILL.md +1 -1
  278. package/plugins/specweave-backend/skills/nodejs-backend/SKILL.md +1 -1
  279. package/plugins/specweave-backend/skills/python-backend/SKILL.md +1 -1
  280. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +6 -1
  281. package/plugins/specweave-diagrams/agents/diagrams-architect/AGENT.md +2 -2
  282. package/plugins/specweave-diagrams/skills/diagrams-architect/SKILL.md +1 -1
  283. package/plugins/specweave-frontend/agents/frontend-architect/AGENT.md +4 -0
  284. package/plugins/specweave-github/agents/github-manager/AGENT.md +1 -1
  285. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +11 -1
  286. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +6 -1
  287. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +90 -0
  288. package/plugins/specweave-github/lib/github-client-v2.js +97 -0
  289. package/plugins/specweave-github/lib/github-client-v2.ts +115 -1
  290. package/plugins/specweave-github/lib/github-spec-commit-sync.d.ts +1 -1
  291. package/plugins/specweave-github/lib/github-spec-commit-sync.js +1 -1
  292. package/plugins/specweave-github/lib/github-spec-commit-sync.ts +1 -1
  293. package/plugins/specweave-github/lib/github-spec-content-sync.js +1 -1
  294. package/plugins/specweave-github/lib/github-spec-content-sync.ts +1 -1
  295. package/plugins/specweave-github/lib/types.ts +21 -0
  296. package/plugins/specweave-infrastructure/agents/devops/AGENT.md +1 -1
  297. package/plugins/specweave-infrastructure/agents/network-engineer/AGENT.md +3 -3
  298. package/plugins/specweave-infrastructure/agents/observability-engineer/AGENT.md +2 -2
  299. package/plugins/specweave-infrastructure/agents/performance-engineer/AGENT.md +3 -3
  300. package/plugins/specweave-infrastructure/agents/sre/AGENT.md +2 -2
  301. package/plugins/specweave-jira/agents/jira-manager/AGENT.md +11 -1
  302. package/plugins/specweave-jira/commands/import-projects.js +1 -1
  303. package/plugins/specweave-jira/commands/import-projects.ts +1 -1
  304. package/plugins/specweave-jira/lib/jira-spec-commit-sync.d.ts +1 -1
  305. package/plugins/specweave-jira/lib/jira-spec-commit-sync.js +1 -1
  306. package/plugins/specweave-jira/lib/jira-spec-commit-sync.ts +1 -1
  307. package/plugins/specweave-jira/lib/jira-spec-content-sync.js +1 -1
  308. package/plugins/specweave-jira/lib/jira-spec-content-sync.ts +1 -1
  309. package/plugins/specweave-jira/lib/setup-wizard.js +2 -2
  310. package/plugins/specweave-jira/lib/setup-wizard.ts +2 -2
  311. package/plugins/specweave-jira/skills/specweave-jira-mapper/SKILL.md +1 -1
  312. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +5 -1
  313. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +6 -1
  314. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +6 -1
  315. package/plugins/specweave-kubernetes/agents/kubernetes-architect/AGENT.md +3 -3
  316. package/plugins/specweave-ml/agents/data-scientist/AGENT.md +2 -1
  317. package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +2 -1
  318. package/plugins/specweave-ml/agents/mlops-engineer/AGENT.md +3 -3
  319. package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +6 -1
  320. package/plugins/specweave-payments/agents/payment-integration/AGENT.md +3 -3
  321. package/plugins/specweave-release/agents/release-manager/AGENT.md +6 -1
  322. package/plugins/specweave-release/commands/specweave-release-npm.md +8 -0
  323. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +135 -0
  324. package/plugins/specweave-testing/agents/qa-engineer/AGENT.md +5 -0
  325. package/src/templates/AGENTS.md.template +97 -0
  326. package/dist/src/core/cost-tracker.d.ts.map +0 -1
  327. package/dist/src/core/cost-tracker.js.map +0 -1
  328. package/dist/src/core/credentials-manager.d.ts.map +0 -1
  329. package/dist/src/core/credentials-manager.js.map +0 -1
  330. package/dist/src/core/increment-status.d.ts.map +0 -1
  331. package/dist/src/core/increment-status.js.map +0 -1
  332. package/dist/src/core/increment-utils.d.ts.map +0 -1
  333. package/dist/src/core/increment-utils.js.map +0 -1
  334. package/dist/src/core/plugin-loader.d.ts.map +0 -1
  335. package/dist/src/core/plugin-loader.js.map +0 -1
  336. package/dist/src/core/project-manager.d.ts.map +0 -1
  337. package/dist/src/core/project-manager.js.map +0 -1
  338. package/dist/src/core/project-structure-detector.d.ts.map +0 -1
  339. package/dist/src/core/project-structure-detector.js.map +0 -1
  340. package/dist/src/core/rfc-generator-v2.d.ts.map +0 -1
  341. package/dist/src/core/rfc-generator-v2.js.map +0 -1
  342. package/dist/src/core/spec-content-sync.d.ts.map +0 -1
  343. package/dist/src/core/spec-content-sync.js.map +0 -1
  344. package/dist/src/core/spec-detector.d.ts.map +0 -1
  345. package/dist/src/core/spec-detector.js.map +0 -1
  346. package/dist/src/core/spec-identifier-detector.d.ts.map +0 -1
  347. package/dist/src/core/spec-identifier-detector.js.map +0 -1
  348. package/dist/src/core/spec-task-mapper.d.ts.map +0 -1
  349. package/dist/src/core/spec-task-mapper.js.map +0 -1
  350. package/dist/src/utils/spec-parser.d.ts +0 -145
  351. package/dist/src/utils/spec-parser.d.ts.map +0 -1
  352. package/dist/src/utils/spec-parser.js +0 -640
  353. package/dist/src/utils/spec-parser.js.map +0 -1
  354. package/plugins/specweave/agents/pm/AGENT.md.bak2 +0 -1754
  355. package/plugins/specweave/hooks/hooks.json.bak +0 -72
  356. package/plugins/specweave/hooks/hooks.json.v1-backup +0 -16
  357. package/plugins/specweave/hooks/v2/hooks.json +0 -16
  358. /package/dist/src/core/{credentials-manager.d.ts → credentials/credentials-manager.d.ts} +0 -0
  359. /package/dist/src/core/{credentials-manager.js → credentials/credentials-manager.js} +0 -0
  360. /package/dist/src/core/{increment-status.d.ts → increment/increment-status.d.ts} +0 -0
  361. /package/dist/src/core/{increment-utils.d.ts → increment/increment-utils.d.ts} +0 -0
  362. /package/dist/src/core/{increment-utils.js → increment/increment-utils.js} +0 -0
  363. /package/dist/src/core/{project-structure-detector.d.ts → project/project-structure-detector.d.ts} +0 -0
  364. /package/dist/src/core/{project-structure-detector.js → project/project-structure-detector.js} +0 -0
  365. /package/dist/src/core/{spec-task-mapper.d.ts → specs/spec-task-mapper.d.ts} +0 -0
  366. /package/dist/src/core/{spec-task-mapper.js → specs/spec-task-mapper.js} +0 -0
@@ -0,0 +1,395 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Living Docs Builder Worker
4
+ *
5
+ * Background worker that generates living documentation from codebase analysis.
6
+ * Handles long-running operations (hours/days for large codebases) with:
7
+ * - Checkpoint/resume support
8
+ * - Dependency waiting (clone/import jobs)
9
+ * - Phase-based progress tracking
10
+ * - Structured logging
11
+ *
12
+ * Usage:
13
+ * node living-docs-worker.js <jobId> <projectPath>
14
+ */
15
+ import * as fs from 'fs';
16
+ import * as path from 'path';
17
+ import { fileURLToPath } from 'url';
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const __dirname = path.dirname(__filename);
20
+ // Dynamically loaded modules
21
+ let checkDependencies;
22
+ let waitForDependencies;
23
+ let getJobManager;
24
+ let runDiscovery;
25
+ let buildFoundation;
26
+ let saveFoundationDocs;
27
+ let loadImportedWorkItems;
28
+ let matchWorkItemsToModules;
29
+ let saveMatchingResults;
30
+ let analyzeModule;
31
+ let saveModuleAnalysis;
32
+ let generateSuggestions;
33
+ let saveSuggestionsReport;
34
+ let initializeCheckpoint;
35
+ let loadCheckpoint;
36
+ let saveCheckpoint;
37
+ let saveDiscoveryCheckpoint;
38
+ let loadDiscoveryCheckpoint;
39
+ let saveFoundationCheckpoint;
40
+ let saveMatchingCheckpoint;
41
+ let startModuleAnalysis;
42
+ let updateModuleProgress;
43
+ let recordError;
44
+ let completeJob;
45
+ let isPhaseCompleted;
46
+ let getResumePoint;
47
+ /**
48
+ * Main worker entry point
49
+ */
50
+ async function main() {
51
+ const args = process.argv.slice(2);
52
+ if (args.length < 2) {
53
+ console.error('Usage: living-docs-worker.js <jobId> <projectPath>');
54
+ process.exit(1);
55
+ }
56
+ const jobId = args[0];
57
+ const projectPath = args[1];
58
+ // Write PID file with exclusive lock
59
+ const pidFile = path.join(projectPath, '.specweave', 'jobs', jobId, 'worker.pid');
60
+ fs.mkdirSync(path.dirname(pidFile), { recursive: true });
61
+ try {
62
+ const fd = fs.openSync(pidFile, 'wx');
63
+ fs.writeSync(fd, process.pid.toString());
64
+ fs.closeSync(fd);
65
+ }
66
+ catch (err) {
67
+ if (err.code === 'EEXIST') {
68
+ try {
69
+ const existingPid = parseInt(fs.readFileSync(pidFile, 'utf-8').trim(), 10);
70
+ process.kill(existingPid, 0);
71
+ console.error(`Worker already running for job ${jobId} (PID: ${existingPid})`);
72
+ process.exit(1);
73
+ }
74
+ catch {
75
+ fs.unlinkSync(pidFile);
76
+ fs.writeFileSync(pidFile, process.pid.toString());
77
+ }
78
+ }
79
+ else {
80
+ throw err;
81
+ }
82
+ }
83
+ // Cleanup on exit
84
+ const cleanup = () => {
85
+ try {
86
+ if (fs.existsSync(pidFile)) {
87
+ fs.unlinkSync(pidFile);
88
+ }
89
+ }
90
+ catch {
91
+ // Ignore
92
+ }
93
+ };
94
+ process.on('exit', cleanup);
95
+ process.on('SIGTERM', () => { cleanup(); process.exit(0); });
96
+ process.on('SIGINT', () => { cleanup(); process.exit(0); });
97
+ // Setup logging
98
+ const logDir = path.join(projectPath, '.specweave', 'jobs', jobId);
99
+ fs.mkdirSync(logDir, { recursive: true });
100
+ const logPath = path.join(logDir, 'worker.log');
101
+ const progressPath = path.join(logDir, 'progress.json');
102
+ const log = (msg) => {
103
+ const timestamp = new Date().toISOString();
104
+ fs.appendFileSync(logPath, `[${timestamp}] ${msg}\n`);
105
+ };
106
+ const updateProgress = (phase, progress, message) => {
107
+ fs.writeFileSync(progressPath, JSON.stringify({
108
+ phase,
109
+ progress,
110
+ message,
111
+ updatedAt: new Date().toISOString()
112
+ }, null, 2));
113
+ };
114
+ try {
115
+ log('════════════════════════════════════════════════════════════');
116
+ log('LIVING DOCS BUILDER STARTED');
117
+ log('════════════════════════════════════════════════════════════');
118
+ log(`Job ID: ${jobId}`);
119
+ log(`Project path: ${projectPath}`);
120
+ log(`PID: ${process.pid}`);
121
+ log(`Started at: ${new Date().toISOString()}`);
122
+ log('');
123
+ // Load job configuration
124
+ const configPath = path.join(logDir, 'config.json');
125
+ if (!fs.existsSync(configPath)) {
126
+ throw new Error(`Job config not found: ${configPath}`);
127
+ }
128
+ const jobConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
129
+ log(`User inputs: ${JSON.stringify(jobConfig.userInputs)}`);
130
+ log(`Dependencies: ${jobConfig.dependsOn?.join(', ') || 'none'}`);
131
+ log('');
132
+ // Load modules dynamically
133
+ log('Loading dependencies...');
134
+ const depModule = await import('../../core/background/job-dependency.js');
135
+ checkDependencies = depModule.checkDependencies;
136
+ waitForDependencies = depModule.waitForDependencies;
137
+ const jobManagerModule = await import('../../core/background/job-manager.js');
138
+ getJobManager = jobManagerModule.getJobManager;
139
+ const discoveryModule = await import('../../core/living-docs/discovery.js');
140
+ runDiscovery = discoveryModule.runDiscovery;
141
+ const foundationModule = await import('../../core/living-docs/foundation-builder.js');
142
+ buildFoundation = foundationModule.buildFoundation;
143
+ saveFoundationDocs = foundationModule.saveFoundationDocs;
144
+ const matcherModule = await import('../../core/living-docs/workitem-matcher.js');
145
+ loadImportedWorkItems = matcherModule.loadImportedWorkItems;
146
+ matchWorkItemsToModules = matcherModule.matchWorkItemsToModules;
147
+ saveMatchingResults = matcherModule.saveMatchingResults;
148
+ const analyzerModule = await import('../../core/living-docs/module-analyzer.js');
149
+ analyzeModule = analyzerModule.analyzeModule;
150
+ saveModuleAnalysis = analyzerModule.saveModuleAnalysis;
151
+ const suggestionsModule = await import('../../core/living-docs/suggestions-generator.js');
152
+ generateSuggestions = suggestionsModule.generateSuggestions;
153
+ saveSuggestionsReport = suggestionsModule.saveSuggestionsReport;
154
+ const checkpointModule = await import('../../core/living-docs/checkpoint-manager.js');
155
+ initializeCheckpoint = checkpointModule.initializeCheckpoint;
156
+ loadCheckpoint = checkpointModule.loadCheckpoint;
157
+ saveCheckpoint = checkpointModule.saveCheckpoint;
158
+ saveDiscoveryCheckpoint = checkpointModule.saveDiscoveryCheckpoint;
159
+ loadDiscoveryCheckpoint = checkpointModule.loadDiscoveryCheckpoint;
160
+ saveFoundationCheckpoint = checkpointModule.saveFoundationCheckpoint;
161
+ saveMatchingCheckpoint = checkpointModule.saveMatchingCheckpoint;
162
+ startModuleAnalysis = checkpointModule.startModuleAnalysis;
163
+ updateModuleProgress = checkpointModule.updateModuleProgress;
164
+ recordError = checkpointModule.recordError;
165
+ completeJob = checkpointModule.completeJob;
166
+ isPhaseCompleted = checkpointModule.isPhaseCompleted;
167
+ getResumePoint = checkpointModule.getResumePoint;
168
+ log('Dependencies loaded successfully');
169
+ log('');
170
+ // Get job manager and mark as running
171
+ const jobManager = getJobManager(projectPath);
172
+ jobManager.startJob(jobId);
173
+ // Check for existing checkpoint (resume support)
174
+ let checkpoint = loadCheckpoint(projectPath, jobId);
175
+ if (checkpoint) {
176
+ log(`Resuming from checkpoint: phase=${checkpoint.phase}, progress=${checkpoint.phaseProgress}%`);
177
+ }
178
+ else {
179
+ checkpoint = initializeCheckpoint(projectPath, jobId);
180
+ log('Initialized new checkpoint');
181
+ }
182
+ // ═══════════════════════════════════════════════════════════════
183
+ // PHASE 1: Wait for dependencies
184
+ // ═══════════════════════════════════════════════════════════════
185
+ if (jobConfig.dependsOn && jobConfig.dependsOn.length > 0 && !isPhaseCompleted(checkpoint, 'waiting')) {
186
+ log('PHASE: Waiting for dependencies...');
187
+ updateProgress('waiting', 0, 'Waiting for clone/import jobs to complete');
188
+ const depStatus = await waitForDependencies(projectPath, jobConfig.dependsOn, (status) => {
189
+ if (status.waitingFor.length > 0) {
190
+ log(` Still waiting for: ${status.waitingFor.join(', ')}`);
191
+ updateProgress('waiting', 0, `Waiting for ${status.waitingFor.length} jobs`);
192
+ }
193
+ }, 30000 // Check every 30 seconds
194
+ );
195
+ if (depStatus.failedDeps.length > 0) {
196
+ log(` WARNING: Some dependencies failed: ${depStatus.failedDeps.join(', ')}`);
197
+ log(' Proceeding with available data...');
198
+ }
199
+ log(' Dependencies complete');
200
+ checkpoint.phase = 'discovery';
201
+ saveCheckpoint(projectPath, jobId, checkpoint);
202
+ }
203
+ // ═══════════════════════════════════════════════════════════════
204
+ // PHASE 2: Discovery
205
+ // ═══════════════════════════════════════════════════════════════
206
+ let discovery = loadDiscoveryCheckpoint(projectPath, jobId);
207
+ if (!discovery) {
208
+ log('PHASE: Discovery - Scanning codebase...');
209
+ updateProgress('discovery', 0, 'Scanning codebase structure');
210
+ try {
211
+ discovery = await runDiscovery(projectPath, jobConfig.userInputs.additionalSources, (phase, current, total) => {
212
+ const progress = Math.round((current / total) * 100);
213
+ updateProgress('discovery', progress, `${phase}: ${current}/${total}`);
214
+ });
215
+ saveDiscoveryCheckpoint(projectPath, jobId, discovery);
216
+ log(` Discovered ${discovery.codebaseStats.totalFiles} files in ${discovery.modules.length} modules`);
217
+ log(` Tier: ${discovery.tier}`);
218
+ log(` Languages: ${discovery.techStack.languages.join(', ')}`);
219
+ }
220
+ catch (err) {
221
+ recordError(projectPath, jobId, 'discovery', err.message);
222
+ throw err;
223
+ }
224
+ }
225
+ else {
226
+ log(' Discovery loaded from checkpoint');
227
+ }
228
+ // ═══════════════════════════════════════════════════════════════
229
+ // PHASE 3: Foundation docs
230
+ // ═══════════════════════════════════════════════════════════════
231
+ if (!isPhaseCompleted(checkpoint, 'foundation')) {
232
+ log('PHASE: Foundation - Building high-level docs...');
233
+ updateProgress('foundation', 0, 'Generating overview documentation');
234
+ try {
235
+ const foundationDocs = await buildFoundation(projectPath, discovery, (docName, status) => {
236
+ log(` ${docName}: ${status}`);
237
+ if (status === 'generating') {
238
+ updateProgress('foundation', 50, `Generating ${docName}`);
239
+ }
240
+ });
241
+ const savedPaths = await saveFoundationDocs(projectPath, foundationDocs);
242
+ saveFoundationCheckpoint(projectPath, jobId, savedPaths);
243
+ log(` Created ${savedPaths.length} foundation docs`);
244
+ }
245
+ catch (err) {
246
+ recordError(projectPath, jobId, 'foundation', err.message);
247
+ throw err;
248
+ }
249
+ }
250
+ else {
251
+ log(' Foundation phase already complete');
252
+ }
253
+ // ═══════════════════════════════════════════════════════════════
254
+ // PHASE 4: Integration (Work Item Matching)
255
+ // ═══════════════════════════════════════════════════════════════
256
+ let matchResult;
257
+ if (!isPhaseCompleted(checkpoint, 'integration')) {
258
+ log('PHASE: Integration - Matching work items...');
259
+ updateProgress('integration', 0, 'Loading imported work items');
260
+ try {
261
+ const workItems = await loadImportedWorkItems(projectPath, (phase, current, total) => {
262
+ updateProgress('integration', Math.round((current / total) * 50), `Loading work items: ${current}/${total}`);
263
+ });
264
+ log(` Loaded ${workItems.length} work items`);
265
+ matchResult = await matchWorkItemsToModules(projectPath, discovery, workItems, (phase, current, total) => {
266
+ updateProgress('integration', 50 + Math.round((current / total) * 50), `Matching: ${current}/${total}`);
267
+ });
268
+ await saveMatchingResults(projectPath, matchResult);
269
+ saveMatchingCheckpoint(projectPath, jobId, matchResult);
270
+ log(` Matched ${matchResult.stats.matchedWorkItems}/${matchResult.stats.totalWorkItems} items`);
271
+ log(` Modules with work items: ${matchResult.stats.modulesWithWorkItems}`);
272
+ }
273
+ catch (err) {
274
+ recordError(projectPath, jobId, 'integration', err.message);
275
+ throw err;
276
+ }
277
+ }
278
+ else {
279
+ log(' Integration phase already complete');
280
+ // Load from checkpoint if needed
281
+ matchResult = checkpoint.matchingStats ? {
282
+ stats: checkpoint.matchingStats,
283
+ moduleMap: new Map(),
284
+ priorityQueue: [],
285
+ unmatchedItems: []
286
+ } : null;
287
+ }
288
+ // ═══════════════════════════════════════════════════════════════
289
+ // PHASE 5: Deep Dive (Module Analysis)
290
+ // ═══════════════════════════════════════════════════════════════
291
+ const moduleAnalyses = new Map();
292
+ if (!isPhaseCompleted(checkpoint, 'deep-dive')) {
293
+ log('PHASE: Deep Dive - Analyzing modules...');
294
+ // Determine which modules to analyze based on depth setting
295
+ let modulesToAnalyze = [...discovery.modules];
296
+ if (jobConfig.userInputs.analysisDepth === 'quick') {
297
+ // Only top 5 priority modules
298
+ modulesToAnalyze = modulesToAnalyze.slice(0, 5);
299
+ }
300
+ else if (jobConfig.userInputs.analysisDepth === 'standard') {
301
+ // Top 10
302
+ modulesToAnalyze = modulesToAnalyze.slice(0, 10);
303
+ }
304
+ // 'deep' = all modules
305
+ // Check for resume point
306
+ const resumePoint = getResumePoint(projectPath, jobId);
307
+ let startIndex = 0;
308
+ if (resumePoint?.module) {
309
+ startIndex = modulesToAnalyze.findIndex(m => m.name === resumePoint.module);
310
+ if (startIndex === -1)
311
+ startIndex = 0;
312
+ log(` Resuming from module: ${resumePoint.module}`);
313
+ }
314
+ else {
315
+ startModuleAnalysis(projectPath, jobId, modulesToAnalyze.map(m => m.name));
316
+ }
317
+ for (let i = startIndex; i < modulesToAnalyze.length; i++) {
318
+ const module = modulesToAnalyze[i];
319
+ const remaining = modulesToAnalyze.slice(i + 1).map(m => m.name);
320
+ log(` Analyzing module: ${module.name} (${i + 1}/${modulesToAnalyze.length})`);
321
+ updateProgress('deep-dive', Math.round(((i + 1) / modulesToAnalyze.length) * 100), `Analyzing ${module.name}`);
322
+ try {
323
+ const workItemMatches = matchResult?.moduleMap?.get(module.name)?.matches || [];
324
+ const analysis = await analyzeModule(projectPath, module, discovery.samplingConfig, workItemMatches, (_moduleName, _fileIdx, _totalFiles) => {
325
+ // File-level progress
326
+ });
327
+ moduleAnalyses.set(module.name, analysis);
328
+ await saveModuleAnalysis(projectPath, analysis);
329
+ updateModuleProgress(projectPath, jobId, module.name, remaining);
330
+ log(` Files analyzed: ${analysis.filesAnalyzed.length}`);
331
+ log(` Exports found: ${analysis.totalExports}`);
332
+ }
333
+ catch (err) {
334
+ recordError(projectPath, jobId, 'deep-dive', `${module.name}: ${err.message}`);
335
+ log(` ERROR: ${err.message}`);
336
+ // Continue with next module
337
+ }
338
+ }
339
+ }
340
+ else {
341
+ log(' Deep dive phase already complete');
342
+ }
343
+ // ═══════════════════════════════════════════════════════════════
344
+ // PHASE 6: Suggestions
345
+ // ═══════════════════════════════════════════════════════════════
346
+ log('PHASE: Suggestions - Generating recommendations...');
347
+ updateProgress('suggestions', 0, 'Generating SUGGESTIONS.md');
348
+ try {
349
+ const report = await generateSuggestions(projectPath, discovery, moduleAnalyses, matchResult || { stats: { totalWorkItems: 0, matchedWorkItems: 0, modulesWithWorkItems: 0 }, moduleMap: new Map(), priorityQueue: [], unmatchedItems: [] }, jobConfig.userInputs);
350
+ const suggestionsPath = await saveSuggestionsReport(projectPath, report);
351
+ log(` Created: ${suggestionsPath}`);
352
+ log(` Summary:`);
353
+ log(` - Total modules: ${report.summary.totalModules}`);
354
+ log(` - Documented: ${report.summary.modulesDocumented}`);
355
+ log(` - Partial: ${report.summary.modulesPartial}`);
356
+ log(` - Undocumented: ${report.summary.modulesUndocumented}`);
357
+ log(` - Coverage: ${report.summary.coveragePercent}%`);
358
+ }
359
+ catch (err) {
360
+ recordError(projectPath, jobId, 'suggestions', err.message);
361
+ throw err;
362
+ }
363
+ // ═══════════════════════════════════════════════════════════════
364
+ // Complete
365
+ // ═══════════════════════════════════════════════════════════════
366
+ completeJob(projectPath, jobId);
367
+ jobManager.completeJob(jobId, {
368
+ completedAt: new Date().toISOString(),
369
+ modulesAnalyzed: moduleAnalyses.size,
370
+ suggestionsGenerated: true
371
+ });
372
+ updateProgress('complete', 100, 'Living docs generation complete');
373
+ log('');
374
+ log('════════════════════════════════════════════════════════════');
375
+ log('LIVING DOCS BUILDER COMPLETED');
376
+ log('════════════════════════════════════════════════════════════');
377
+ log(`Completed at: ${new Date().toISOString()}`);
378
+ log(`Output: .specweave/docs/SUGGESTIONS.md`);
379
+ }
380
+ catch (err) {
381
+ log(`FATAL ERROR: ${err.message}`);
382
+ log(err.stack || '');
383
+ try {
384
+ const jobManager = getJobManager(projectPath);
385
+ jobManager.failJob(jobId, err.message);
386
+ }
387
+ catch {
388
+ // Ignore
389
+ }
390
+ updateProgress('error', 0, err.message);
391
+ process.exit(1);
392
+ }
393
+ }
394
+ main();
395
+ //# sourceMappingURL=living-docs-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"living-docs-worker.js","sourceRoot":"","sources":["../../../../src/cli/workers/living-docs-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,6BAA6B;AAC7B,IAAI,iBAAsB,CAAC;AAC3B,IAAI,mBAAwB,CAAC;AAC7B,IAAI,aAAkB,CAAC;AACvB,IAAI,YAAiB,CAAC;AACtB,IAAI,eAAoB,CAAC;AACzB,IAAI,kBAAuB,CAAC;AAC5B,IAAI,qBAA0B,CAAC;AAC/B,IAAI,uBAA4B,CAAC;AACjC,IAAI,mBAAwB,CAAC;AAC7B,IAAI,aAAkB,CAAC;AACvB,IAAI,kBAAuB,CAAC;AAC5B,IAAI,mBAAwB,CAAC;AAC7B,IAAI,qBAA0B,CAAC;AAC/B,IAAI,oBAAyB,CAAC;AAC9B,IAAI,cAAmB,CAAC;AACxB,IAAI,cAAmB,CAAC;AACxB,IAAI,uBAA4B,CAAC;AACjC,IAAI,uBAA4B,CAAC;AACjC,IAAI,wBAA6B,CAAC;AAClC,IAAI,sBAA2B,CAAC;AAChC,IAAI,mBAAwB,CAAC;AAC7B,IAAI,oBAAyB,CAAC;AAC9B,IAAI,WAAgB,CAAC;AACrB,IAAI,WAAgB,CAAC;AACrB,IAAI,gBAAqB,CAAC;AAC1B,IAAI,cAAmB,CAAC;AAgBxB;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE5B,qCAAqC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAClF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3E,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,UAAU,WAAW,GAAG,CAAC,CAAC;gBAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvB,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACnE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAExD,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE;QAC1B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,KAAK,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,OAAe,EAAE,EAAE;QAC1E,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YAC5C,KAAK;YACL,QAAQ;YACR,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,GAAG,CAAC,8DAA8D,CAAC,CAAC;QACpE,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACnC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QACpE,GAAG,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;QACxB,GAAG,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,GAAG,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,GAAG,CAAC,EAAE,CAAC,CAAC;QAER,yBAAyB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,SAAS,GAAwB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACxF,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5D,GAAG,CAAC,iBAAiB,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QAClE,GAAG,CAAC,EAAE,CAAC,CAAC;QAER,2BAA2B;QAC3B,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAE/B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAC1E,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAChD,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;QAEpD,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAC;QAC9E,aAAa,GAAG,gBAAgB,CAAC,aAAa,CAAC;QAE/C,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;QAC5E,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC;QAE5C,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,8CAA8C,CAAC,CAAC;QACtF,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAC;QACnD,kBAAkB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QAEzD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,4CAA4C,CAAC,CAAC;QACjF,qBAAqB,GAAG,aAAa,CAAC,qBAAqB,CAAC;QAC5D,uBAAuB,GAAG,aAAa,CAAC,uBAAuB,CAAC;QAChE,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,CAAC;QAExD,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,2CAA2C,CAAC,CAAC;QACjF,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC;QAC7C,kBAAkB,GAAG,cAAc,CAAC,kBAAkB,CAAC;QAEvD,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,iDAAiD,CAAC,CAAC;QAC1F,mBAAmB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC;QAC5D,qBAAqB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC;QAEhE,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,8CAA8C,CAAC,CAAC;QACtF,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QAC7D,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC;QACjD,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC;QACjD,uBAAuB,GAAG,gBAAgB,CAAC,uBAAuB,CAAC;QACnE,uBAAuB,GAAG,gBAAgB,CAAC,uBAAuB,CAAC;QACnE,wBAAwB,GAAG,gBAAgB,CAAC,wBAAwB,CAAC;QACrE,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC;QACjE,mBAAmB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC;QAC3D,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QAC7D,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAC3C,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAC3C,gBAAgB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACrD,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC;QAEjD,GAAG,CAAC,kCAAkC,CAAC,CAAC;QACxC,GAAG,CAAC,EAAE,CAAC,CAAC;QAER,sCAAsC;QACtC,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAC9C,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE3B,iDAAiD;QACjD,IAAI,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,mCAAmC,UAAU,CAAC,KAAK,cAAc,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACtD,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACpC,CAAC;QAED,kEAAkE;QAClE,iCAAiC;QACjC,kEAAkE;QAClE,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;YACtG,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC1C,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;YAE1E,MAAM,SAAS,GAAG,MAAM,mBAAmB,CACzC,WAAW,EACX,SAAS,CAAC,SAAS,EACnB,CAAC,MAA+F,EAAE,EAAE;gBAClG,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,GAAG,CAAC,wBAAwB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5D,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,eAAe,MAAM,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC,EACD,KAAK,CAAC,yBAAyB;aAChC,CAAC;YAEF,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,GAAG,CAAC,wCAAwC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/E,GAAG,CAAC,qCAAqC,CAAC,CAAC;YAC7C,CAAC;YAED,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAC/B,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC;YAC/B,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACjD,CAAC;QAED,kEAAkE;QAClE,qBAAqB;QACrB,kEAAkE;QAClE,IAAI,SAAS,GAAG,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAE5D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,yCAAyC,CAAC,CAAC;YAC/C,cAAc,CAAC,WAAW,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAC;YAE9D,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,YAAY,CAC5B,WAAW,EACX,SAAS,CAAC,UAAU,CAAC,iBAAiB,EACtC,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa,EAAE,EAAE;oBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;oBACrD,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,KAAK,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;gBACzE,CAAC,CACF,CAAC;gBAEF,uBAAuB,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBACvD,GAAG,CAAC,gBAAgB,SAAS,CAAC,aAAa,CAAC,UAAU,aAAa,SAAS,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;gBACvG,GAAG,CAAC,WAAW,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjC,GAAG,CAAC,gBAAgB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1D,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAC5C,CAAC;QAED,kEAAkE;QAClE,2BAA2B;QAC3B,kEAAkE;QAClE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,iDAAiD,CAAC,CAAC;YACvD,cAAc,CAAC,YAAY,EAAE,CAAC,EAAE,mCAAmC,CAAC,CAAC;YAErE,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,eAAe,CAC1C,WAAW,EACX,SAAS,EACT,CAAC,OAAe,EAAE,MAAc,EAAE,EAAE;oBAClC,GAAG,CAAC,KAAK,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;oBAC/B,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;wBAC5B,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,cAAc,OAAO,EAAE,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC,CACF,CAAC;gBAEF,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBACzE,wBAAwB,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;gBACzD,GAAG,CAAC,aAAa,UAAU,CAAC,MAAM,kBAAkB,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3D,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,qCAAqC,CAAC,CAAC;QAC7C,CAAC;QAED,kEAAkE;QAClE,4CAA4C;QAC5C,kEAAkE;QAClE,IAAI,WAAgB,CAAC;QAErB,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,6CAA6C,CAAC,CAAC;YACnD,cAAc,CAAC,aAAa,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAC;YAEhE,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,WAAW,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa,EAAE,EAAE;oBAC3G,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,uBAAuB,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;gBAC/G,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,YAAY,SAAS,CAAC,MAAM,aAAa,CAAC,CAAC;gBAE/C,WAAW,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa,EAAE,EAAE;oBAC/H,cAAc,CAAC,aAAa,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,aAAa,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;gBAC1G,CAAC,CAAC,CAAC;gBAEH,MAAM,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACpD,sBAAsB,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;gBACxD,GAAG,CAAC,aAAa,WAAW,CAAC,KAAK,CAAC,gBAAgB,IAAI,WAAW,CAAC,KAAK,CAAC,cAAc,QAAQ,CAAC,CAAC;gBACjG,GAAG,CAAC,8BAA8B,WAAW,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAC9E,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5D,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,sCAAsC,CAAC,CAAC;YAC5C,iCAAiC;YACjC,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;gBACvC,KAAK,EAAE,UAAU,CAAC,aAAa;gBAC/B,SAAS,EAAE,IAAI,GAAG,EAAE;gBACpB,aAAa,EAAE,EAAE;gBACjB,cAAc,EAAE,EAAE;aACnB,CAAC,CAAC,CAAC,IAAI,CAAC;QACX,CAAC;QAED,kEAAkE;QAClE,uCAAuC;QACvC,kEAAkE;QAClE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAe,CAAC;QAE9C,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,yCAAyC,CAAC,CAAC;YAE/C,4DAA4D;YAC5D,IAAI,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YAE9C,IAAI,SAAS,CAAC,UAAU,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBACnD,8BAA8B;gBAC9B,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,SAAS,CAAC,UAAU,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;gBAC7D,SAAS;gBACT,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,uBAAuB;YAEvB,yBAAyB;YACzB,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,UAAU,GAAG,CAAC,CAAC;YAEnB,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;gBACxB,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC5E,IAAI,UAAU,KAAK,CAAC,CAAC;oBAAE,UAAU,GAAG,CAAC,CAAC;gBACtC,GAAG,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,mBAAmB,CAAC,WAAW,EAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7E,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1D,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAEjE,GAAG,CAAC,uBAAuB,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChF,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAC/E,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAE9B,IAAI,CAAC;oBACH,MAAM,eAAe,GAAG,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;oBAEhF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,WAAW,EACX,MAAM,EACN,SAAS,CAAC,cAAc,EACxB,eAAe,EACf,CAAC,WAAmB,EAAE,QAAgB,EAAE,WAAmB,EAAE,EAAE;wBAC7D,sBAAsB;oBACxB,CAAC,CACF,CAAC;oBAEF,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAC1C,MAAM,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBAEhD,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBACjE,GAAG,CAAC,uBAAuB,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC5D,GAAG,CAAC,sBAAsB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/E,GAAG,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACjC,4BAA4B;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAC5C,CAAC;QAED,kEAAkE;QAClE,uBAAuB;QACvB,kEAAkE;QAClE,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAC1D,cAAc,CAAC,aAAa,EAAE,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,WAAW,EACX,SAAS,EACT,cAAc,EACd,WAAW,IAAI,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAC1J,SAAS,CAAC,UAAU,CACrB,CAAC;YAEF,MAAM,eAAe,GAAG,MAAM,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACzE,GAAG,CAAC,cAAc,eAAe,EAAE,CAAC,CAAC;YACrC,GAAG,CAAC,YAAY,CAAC,CAAC;YAClB,GAAG,CAAC,wBAAwB,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,qBAAqB,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC7D,GAAG,CAAC,kBAAkB,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;YACvD,GAAG,CAAC,uBAAuB,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACjE,GAAG,CAAC,mBAAmB,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,kEAAkE;QAClE,WAAW;QACX,kEAAkE;QAClE,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE;YAC5B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,eAAe,EAAE,cAAc,CAAC,IAAI;YACpC,oBAAoB,EAAE,IAAI;SAC3B,CAAC,CAAC;QAEH,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,iCAAiC,CAAC,CAAC;QAEnE,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,8DAA8D,CAAC,CAAC;QACpE,GAAG,CAAC,+BAA+B,CAAC,CAAC;QACrC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QACpE,GAAG,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACjD,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEhD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAErB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;YAC9C,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Job Dependency System
3
+ *
4
+ * Enables jobs to wait for other jobs to complete before starting.
5
+ * Used by living-docs-builder to wait for clone and import jobs.
6
+ */
7
+ import { BackgroundJobManager } from './job-manager.js';
8
+ export interface DependencyStatus {
9
+ /** Whether all dependencies are satisfied */
10
+ ready: boolean;
11
+ /** Job IDs still running/pending */
12
+ waitingFor: string[];
13
+ /** Job IDs that failed */
14
+ failedDeps: string[];
15
+ /** Job IDs that completed successfully */
16
+ completedDeps: string[];
17
+ }
18
+ /**
19
+ * Check the status of job dependencies
20
+ */
21
+ export declare function checkDependencies(jobManager: BackgroundJobManager, dependsOn: string[] | undefined): DependencyStatus;
22
+ /**
23
+ * Wait for all dependencies to complete (or fail)
24
+ *
25
+ * @param projectPath - Project root path
26
+ * @param dependsOn - Array of job IDs to wait for
27
+ * @param onProgress - Callback for progress updates
28
+ * @param pollIntervalMs - How often to check (default 10 seconds)
29
+ * @returns Final dependency status
30
+ */
31
+ export declare function waitForDependencies(projectPath: string, dependsOn: string[] | undefined, onProgress: (status: DependencyStatus) => void, pollIntervalMs?: number): Promise<DependencyStatus>;
32
+ /**
33
+ * Check for circular dependencies
34
+ *
35
+ * @param jobManager - Job manager instance
36
+ * @param jobId - The job being checked
37
+ * @param dependsOn - Its dependencies
38
+ * @returns Array of circular dependency chains found, or empty if none
39
+ */
40
+ export declare function detectCircularDependencies(jobManager: BackgroundJobManager, jobId: string, dependsOn: string[] | undefined): string[][];
41
+ /**
42
+ * Format dependency status for display
43
+ */
44
+ export declare function formatDependencyStatus(status: DependencyStatus): string;
45
+ //# sourceMappingURL=job-dependency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-dependency.d.ts","sourceRoot":"","sources":["../../../../src/core/background/job-dependency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGvE,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,KAAK,EAAE,OAAO,CAAC;IACf,oCAAoC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,oBAAoB,EAChC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,GAC9B,gBAAgB,CAuClB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,EAC/B,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,EAC9C,cAAc,GAAE,MAAc,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAa3B;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,oBAAoB,EAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,GAC9B,MAAM,EAAE,EAAE,CAoDZ;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAoBvE"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Job Dependency System
3
+ *
4
+ * Enables jobs to wait for other jobs to complete before starting.
5
+ * Used by living-docs-builder to wait for clone and import jobs.
6
+ */
7
+ import { getJobManager } from './job-manager.js';
8
+ /**
9
+ * Check the status of job dependencies
10
+ */
11
+ export function checkDependencies(jobManager, dependsOn) {
12
+ if (!dependsOn || dependsOn.length === 0) {
13
+ return { ready: true, waitingFor: [], failedDeps: [], completedDeps: [] };
14
+ }
15
+ const waitingFor = [];
16
+ const failedDeps = [];
17
+ const completedDeps = [];
18
+ for (const depId of dependsOn) {
19
+ const job = jobManager.getJob(depId);
20
+ if (!job) {
21
+ // Job doesn't exist (deleted or never created), treat as completed
22
+ completedDeps.push(depId);
23
+ continue;
24
+ }
25
+ switch (job.status) {
26
+ case 'completed':
27
+ completedDeps.push(depId);
28
+ break;
29
+ case 'failed':
30
+ failedDeps.push(depId);
31
+ break;
32
+ case 'pending':
33
+ case 'running':
34
+ case 'paused':
35
+ default:
36
+ waitingFor.push(depId);
37
+ }
38
+ }
39
+ return {
40
+ ready: waitingFor.length === 0,
41
+ waitingFor,
42
+ failedDeps,
43
+ completedDeps
44
+ };
45
+ }
46
+ /**
47
+ * Wait for all dependencies to complete (or fail)
48
+ *
49
+ * @param projectPath - Project root path
50
+ * @param dependsOn - Array of job IDs to wait for
51
+ * @param onProgress - Callback for progress updates
52
+ * @param pollIntervalMs - How often to check (default 10 seconds)
53
+ * @returns Final dependency status
54
+ */
55
+ export async function waitForDependencies(projectPath, dependsOn, onProgress, pollIntervalMs = 10000) {
56
+ const jobManager = getJobManager(projectPath);
57
+ let status = checkDependencies(jobManager, dependsOn);
58
+ while (!status.ready) {
59
+ onProgress(status);
60
+ await new Promise(resolve => setTimeout(resolve, pollIntervalMs));
61
+ status = checkDependencies(jobManager, dependsOn);
62
+ }
63
+ // Final callback with ready status
64
+ onProgress(status);
65
+ return status;
66
+ }
67
+ /**
68
+ * Check for circular dependencies
69
+ *
70
+ * @param jobManager - Job manager instance
71
+ * @param jobId - The job being checked
72
+ * @param dependsOn - Its dependencies
73
+ * @returns Array of circular dependency chains found, or empty if none
74
+ */
75
+ export function detectCircularDependencies(jobManager, jobId, dependsOn) {
76
+ if (!dependsOn || dependsOn.length === 0) {
77
+ return [];
78
+ }
79
+ const circularChains = [];
80
+ const visited = new Set();
81
+ const path = [jobId];
82
+ function dfs(currentId) {
83
+ if (visited.has(currentId)) {
84
+ return;
85
+ }
86
+ const job = jobManager.getJob(currentId);
87
+ if (!job) {
88
+ return;
89
+ }
90
+ // Get dependencies from job config if it has them
91
+ const deps = job.config.dependsOn;
92
+ if (!deps || deps.length === 0) {
93
+ return;
94
+ }
95
+ for (const depId of deps) {
96
+ if (depId === jobId) {
97
+ // Found circular dependency back to original job
98
+ circularChains.push([...path, depId]);
99
+ }
100
+ else if (!visited.has(depId)) {
101
+ path.push(depId);
102
+ dfs(depId);
103
+ path.pop();
104
+ }
105
+ }
106
+ visited.add(currentId);
107
+ }
108
+ // Check each direct dependency
109
+ for (const depId of dependsOn) {
110
+ if (depId === jobId) {
111
+ // Direct self-reference
112
+ circularChains.push([jobId, depId]);
113
+ }
114
+ else {
115
+ path.push(depId);
116
+ dfs(depId);
117
+ path.pop();
118
+ }
119
+ }
120
+ return circularChains;
121
+ }
122
+ /**
123
+ * Format dependency status for display
124
+ */
125
+ export function formatDependencyStatus(status) {
126
+ if (status.ready) {
127
+ if (status.failedDeps.length > 0) {
128
+ return `Dependencies ready (${status.failedDeps.length} failed, proceeding with partial data)`;
129
+ }
130
+ return 'All dependencies completed';
131
+ }
132
+ const parts = [];
133
+ if (status.waitingFor.length > 0) {
134
+ parts.push(`Waiting for: ${status.waitingFor.join(', ')}`);
135
+ }
136
+ if (status.completedDeps.length > 0) {
137
+ parts.push(`Completed: ${status.completedDeps.length}`);
138
+ }
139
+ if (status.failedDeps.length > 0) {
140
+ parts.push(`Failed: ${status.failedDeps.length}`);
141
+ }
142
+ return parts.join(' | ');
143
+ }
144
+ //# sourceMappingURL=job-dependency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-dependency.js","sourceRoot":"","sources":["../../../../src/core/background/job-dependency.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Spawns import workers as detached processes that survive terminal close.
5
5
  * Progress tracked via file system - check with /specweave:jobs
6
6
  */
7
- import type { BackgroundJob, JobType } from './types.js';
7
+ import type { BackgroundJob, JobType, LivingDocsUserInputs } from './types.js';
8
8
  export interface LaunchOptions {
9
9
  /** Job type */
10
10
  type: JobType;
@@ -56,6 +56,26 @@ export interface CloneLaunchOptions {
56
56
  * @returns Job info and process details
57
57
  */
58
58
  export declare function launchCloneJob(options: CloneLaunchOptions): Promise<LaunchResult>;
59
+ export interface LivingDocsLaunchOptions {
60
+ /** Project path */
61
+ projectPath: string;
62
+ /** User inputs collected before launch */
63
+ userInputs: LivingDocsUserInputs;
64
+ /** Job IDs to wait for before starting */
65
+ dependsOn?: string[];
66
+ /** Run in foreground (blocking) instead of background */
67
+ foreground?: boolean;
68
+ }
69
+ /**
70
+ * Launch a living-docs-builder job
71
+ *
72
+ * This job waits for dependencies (clone/import jobs) to complete before
73
+ * analyzing the codebase and generating living documentation.
74
+ *
75
+ * @param options Launch configuration
76
+ * @returns Job info and process details
77
+ */
78
+ export declare function launchLivingDocsJob(options: LivingDocsLaunchOptions): Promise<LaunchResult>;
59
79
  /**
60
80
  * Check if a background job is still running
61
81
  */