scene-capability-engine 3.0.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 (336) hide show
  1. package/CHANGELOG.md +2513 -0
  2. package/LICENSE +21 -0
  3. package/README.md +765 -0
  4. package/README.zh.md +630 -0
  5. package/bin/kiro-spec-engine.js +796 -0
  6. package/bin/kse.js +3 -0
  7. package/bin/sce.js +3 -0
  8. package/bin/sco.js +3 -0
  9. package/docs/331-poc-adaptation-roadmap.md +156 -0
  10. package/docs/331-poc-dual-track-integration-guide.md +120 -0
  11. package/docs/331-poc-weekly-delivery-checklist.md +52 -0
  12. package/docs/OFFLINE_INSTALL.md +96 -0
  13. package/docs/README.md +279 -0
  14. package/docs/adopt-migration-guide.md +599 -0
  15. package/docs/adoption-guide.md +616 -0
  16. package/docs/agent-hooks-analysis.md +815 -0
  17. package/docs/architecture.md +733 -0
  18. package/docs/articles/ai-driven-development-philosophy-and-practice-review.md +208 -0
  19. package/docs/articles/ai-driven-development-philosophy-and-practice.en.md +459 -0
  20. package/docs/articles/ai-driven-development-philosophy-and-practice.md +492 -0
  21. package/docs/autonomous-control-guide.md +851 -0
  22. package/docs/command-reference.md +1368 -0
  23. package/docs/community.md +115 -0
  24. package/docs/cross-tool-guide.md +555 -0
  25. package/docs/developer-guide.md +619 -0
  26. package/docs/document-governance.md +865 -0
  27. package/docs/environment-management-guide.md +526 -0
  28. package/docs/examples/add-export-command/design.md +194 -0
  29. package/docs/examples/add-export-command/requirements.md +110 -0
  30. package/docs/examples/add-export-command/tasks.md +88 -0
  31. package/docs/examples/add-rest-api/design.md +855 -0
  32. package/docs/examples/add-rest-api/requirements.md +323 -0
  33. package/docs/examples/add-rest-api/tasks.md +355 -0
  34. package/docs/examples/add-user-dashboard/design.md +192 -0
  35. package/docs/examples/add-user-dashboard/requirements.md +143 -0
  36. package/docs/examples/add-user-dashboard/tasks.md +91 -0
  37. package/docs/faq.md +697 -0
  38. package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.json +156 -0
  39. package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.md +24 -0
  40. package/docs/images/wechat-qr.png +0 -0
  41. package/docs/integration-modes.md +529 -0
  42. package/docs/integration-philosophy.md +313 -0
  43. package/docs/knowledge-management-guide.md +263 -0
  44. package/docs/manual-workflows-guide.md +418 -0
  45. package/docs/moqui-capability-matrix.md +73 -0
  46. package/docs/moqui-template-core-library-playbook.md +109 -0
  47. package/docs/multi-agent-coordination-guide.md +553 -0
  48. package/docs/multi-repo-management-guide.md +1344 -0
  49. package/docs/quick-start-with-ai-tools.md +375 -0
  50. package/docs/quick-start.md +146 -0
  51. package/docs/release-checklist.md +121 -0
  52. package/docs/releases/README.md +13 -0
  53. package/docs/releases/v1.46.2-validation.md +45 -0
  54. package/docs/releases/v1.46.2.md +50 -0
  55. package/docs/scene-runtime-guide.md +347 -0
  56. package/docs/spec-collaboration-guide.md +369 -0
  57. package/docs/spec-locking-guide.md +225 -0
  58. package/docs/spec-numbering-guide.md +348 -0
  59. package/docs/spec-workflow.md +519 -0
  60. package/docs/steering-strategy-guide.md +196 -0
  61. package/docs/team-collaboration-guide.md +465 -0
  62. package/docs/testing-strategy.md +272 -0
  63. package/docs/tools/claude-guide.md +654 -0
  64. package/docs/tools/cursor-guide.md +706 -0
  65. package/docs/tools/generic-guide.md +446 -0
  66. package/docs/tools/kiro-guide.md +308 -0
  67. package/docs/tools/vscode-guide.md +445 -0
  68. package/docs/tools/windsurf-guide.md +391 -0
  69. package/docs/troubleshooting.md +1135 -0
  70. package/docs/upgrade-guide.md +639 -0
  71. package/docs/value-observability-guide.md +127 -0
  72. package/docs/zh/README.md +341 -0
  73. package/docs/zh/quick-start.md +764 -0
  74. package/docs/zh/release-checklist.md +121 -0
  75. package/docs/zh/releases/README.md +13 -0
  76. package/docs/zh/releases/v1.46.2-validation.md +45 -0
  77. package/docs/zh/releases/v1.46.2.md +50 -0
  78. package/docs/zh/spec-numbering-guide.md +348 -0
  79. package/docs/zh/tools/claude-guide.md +349 -0
  80. package/docs/zh/tools/cursor-guide.md +281 -0
  81. package/docs/zh/tools/generic-guide.md +499 -0
  82. package/docs/zh/tools/kiro-guide.md +342 -0
  83. package/docs/zh/tools/vscode-guide.md +449 -0
  84. package/docs/zh/tools/windsurf-guide.md +378 -0
  85. package/docs/zh/value-observability-guide.md +127 -0
  86. package/docs//344/272/244/344/273/230/346/270/205/345/215/225.md +75 -0
  87. package/lib/adoption/adoption-logger.js +487 -0
  88. package/lib/adoption/adoption-strategy.js +538 -0
  89. package/lib/adoption/backup-manager.js +420 -0
  90. package/lib/adoption/conflict-resolver.js +410 -0
  91. package/lib/adoption/detection-engine.js +275 -0
  92. package/lib/adoption/diff-viewer.js +226 -0
  93. package/lib/adoption/error-formatter.js +509 -0
  94. package/lib/adoption/file-classifier.js +385 -0
  95. package/lib/adoption/progress-reporter.js +534 -0
  96. package/lib/adoption/smart-orchestrator.js +470 -0
  97. package/lib/adoption/strategy-selector.js +218 -0
  98. package/lib/adoption/summary-generator.js +493 -0
  99. package/lib/adoption/template-sync.js +605 -0
  100. package/lib/auto/autonomous-engine.js +485 -0
  101. package/lib/auto/checkpoint-manager.js +300 -0
  102. package/lib/auto/close-loop-runner.js +2476 -0
  103. package/lib/auto/config-schema.js +176 -0
  104. package/lib/auto/decision-engine.js +344 -0
  105. package/lib/auto/error-recovery-manager.js +580 -0
  106. package/lib/auto/goal-decomposer.js +278 -0
  107. package/lib/auto/progress-tracker.js +502 -0
  108. package/lib/auto/safety-manager.js +186 -0
  109. package/lib/auto/semantic-decomposer.js +137 -0
  110. package/lib/auto/state-manager.js +126 -0
  111. package/lib/auto/task-queue-manager.js +340 -0
  112. package/lib/backup/backup-system.js +372 -0
  113. package/lib/backup/selective-backup.js +207 -0
  114. package/lib/collab/agent-registry.js +240 -0
  115. package/lib/collab/collab-manager.js +285 -0
  116. package/lib/collab/contract-manager.js +320 -0
  117. package/lib/collab/coordinator.js +370 -0
  118. package/lib/collab/dependency-manager.js +280 -0
  119. package/lib/collab/index.js +20 -0
  120. package/lib/collab/integration-manager.js +202 -0
  121. package/lib/collab/merge-coordinator.js +252 -0
  122. package/lib/collab/metadata-manager.js +233 -0
  123. package/lib/collab/multi-agent-config.js +120 -0
  124. package/lib/collab/spec-lifecycle-manager.js +304 -0
  125. package/lib/collab/sync-barrier.js +88 -0
  126. package/lib/collab/visualizer.js +208 -0
  127. package/lib/commands/adopt.js +749 -0
  128. package/lib/commands/auto.js +19559 -0
  129. package/lib/commands/collab.js +275 -0
  130. package/lib/commands/context.js +99 -0
  131. package/lib/commands/docs.js +808 -0
  132. package/lib/commands/doctor.js +273 -0
  133. package/lib/commands/env.js +420 -0
  134. package/lib/commands/knowledge.js +309 -0
  135. package/lib/commands/lock.js +235 -0
  136. package/lib/commands/ops.js +409 -0
  137. package/lib/commands/orchestrate.js +446 -0
  138. package/lib/commands/prompt.js +105 -0
  139. package/lib/commands/repo.js +118 -0
  140. package/lib/commands/rollback.js +219 -0
  141. package/lib/commands/scene.js +15549 -0
  142. package/lib/commands/spec-bootstrap.js +147 -0
  143. package/lib/commands/spec-gate.js +157 -0
  144. package/lib/commands/spec-pipeline.js +205 -0
  145. package/lib/commands/status.js +321 -0
  146. package/lib/commands/task.js +199 -0
  147. package/lib/commands/templates.js +654 -0
  148. package/lib/commands/upgrade.js +231 -0
  149. package/lib/commands/value.js +569 -0
  150. package/lib/commands/watch.js +684 -0
  151. package/lib/commands/workflows.js +240 -0
  152. package/lib/commands/workspace-multi.js +325 -0
  153. package/lib/commands/workspace.js +189 -0
  154. package/lib/context/context-exporter.js +378 -0
  155. package/lib/context/prompt-generator.js +482 -0
  156. package/lib/data/moqui-capability-lexicon.json +45 -0
  157. package/lib/environment/backup-system.js +189 -0
  158. package/lib/environment/environment-manager.js +379 -0
  159. package/lib/environment/environment-registry.js +168 -0
  160. package/lib/gitignore/gitignore-backup.js +229 -0
  161. package/lib/gitignore/gitignore-detector.js +239 -0
  162. package/lib/gitignore/gitignore-integration.js +267 -0
  163. package/lib/gitignore/gitignore-transformer.js +193 -0
  164. package/lib/gitignore/layered-rules-template.js +42 -0
  165. package/lib/governance/archive-tool.js +284 -0
  166. package/lib/governance/cleanup-tool.js +237 -0
  167. package/lib/governance/config-manager.js +186 -0
  168. package/lib/governance/diagnostic-engine.js +271 -0
  169. package/lib/governance/doc-reference-checker.js +200 -0
  170. package/lib/governance/execution-logger.js +243 -0
  171. package/lib/governance/file-scanner.js +285 -0
  172. package/lib/governance/hooks-manager.js +333 -0
  173. package/lib/governance/reporter.js +337 -0
  174. package/lib/governance/validation-engine.js +181 -0
  175. package/lib/i18n.js +79 -0
  176. package/lib/knowledge/entry-manager.js +208 -0
  177. package/lib/knowledge/index-manager.js +261 -0
  178. package/lib/knowledge/knowledge-manager.js +273 -0
  179. package/lib/knowledge/template-manager.js +191 -0
  180. package/lib/lock/index.js +21 -0
  181. package/lib/lock/lock-file.js +192 -0
  182. package/lib/lock/lock-manager.js +321 -0
  183. package/lib/lock/machine-identifier.js +135 -0
  184. package/lib/lock/steering-file-lock.js +207 -0
  185. package/lib/lock/task-lock-manager.js +345 -0
  186. package/lib/operations/audit-logger.js +293 -0
  187. package/lib/operations/feedback-manager.js +1147 -0
  188. package/lib/operations/index.js +23 -0
  189. package/lib/operations/models/index.js +170 -0
  190. package/lib/operations/operations-manager.js +151 -0
  191. package/lib/operations/operations-validator.js +280 -0
  192. package/lib/operations/permission-manager.js +354 -0
  193. package/lib/operations/template-loader.js +143 -0
  194. package/lib/orchestrator/agent-spawner.js +629 -0
  195. package/lib/orchestrator/bootstrap-prompt-builder.js +236 -0
  196. package/lib/orchestrator/index.js +19 -0
  197. package/lib/orchestrator/orchestration-engine.js +1270 -0
  198. package/lib/orchestrator/orchestrator-config.js +173 -0
  199. package/lib/orchestrator/status-monitor.js +591 -0
  200. package/lib/python-checker.js +209 -0
  201. package/lib/repo/config-manager.js +580 -0
  202. package/lib/repo/errors/config-error.js +13 -0
  203. package/lib/repo/errors/git-error.js +15 -0
  204. package/lib/repo/errors/repo-error.js +14 -0
  205. package/lib/repo/git-operations.js +181 -0
  206. package/lib/repo/handlers/.gitkeep +1 -0
  207. package/lib/repo/handlers/exec-handler.js +155 -0
  208. package/lib/repo/handlers/health-handler.js +169 -0
  209. package/lib/repo/handlers/init-handler.js +197 -0
  210. package/lib/repo/handlers/status-handler.js +176 -0
  211. package/lib/repo/output-formatter.js +184 -0
  212. package/lib/repo/path-resolver.js +178 -0
  213. package/lib/repo/repo-manager.js +514 -0
  214. package/lib/scene-runtime/audit-emitter.js +59 -0
  215. package/lib/scene-runtime/binding-plugin-loader.js +351 -0
  216. package/lib/scene-runtime/binding-registry.js +349 -0
  217. package/lib/scene-runtime/eval-bridge.js +44 -0
  218. package/lib/scene-runtime/index.js +19 -0
  219. package/lib/scene-runtime/moqui-adapter.js +620 -0
  220. package/lib/scene-runtime/moqui-client.js +606 -0
  221. package/lib/scene-runtime/moqui-extractor.js +2029 -0
  222. package/lib/scene-runtime/plan-compiler.js +208 -0
  223. package/lib/scene-runtime/policy-gate.js +58 -0
  224. package/lib/scene-runtime/runtime-executor.js +358 -0
  225. package/lib/scene-runtime/scene-loader.js +96 -0
  226. package/lib/scene-runtime/scene-ontology.js +959 -0
  227. package/lib/scene-runtime/scene-template-linter.js +852 -0
  228. package/lib/scene-runtime/templates/scene-template-erp-query-v0.1.yaml +28 -0
  229. package/lib/scene-runtime/templates/scene-template-hybrid-shadow-v0.1.yaml +34 -0
  230. package/lib/spec/bootstrap/context-collector.js +48 -0
  231. package/lib/spec/bootstrap/draft-generator.js +158 -0
  232. package/lib/spec/bootstrap/questionnaire-engine.js +70 -0
  233. package/lib/spec/bootstrap/trace-emitter.js +59 -0
  234. package/lib/spec/multi-spec-orchestrate.js +93 -0
  235. package/lib/spec/pipeline/constants.js +6 -0
  236. package/lib/spec/pipeline/stage-adapters.js +118 -0
  237. package/lib/spec/pipeline/stage-runner.js +146 -0
  238. package/lib/spec/pipeline/state-store.js +119 -0
  239. package/lib/spec-gate/engine/gate-engine.js +165 -0
  240. package/lib/spec-gate/policy/default-policy.js +22 -0
  241. package/lib/spec-gate/policy/policy-loader.js +103 -0
  242. package/lib/spec-gate/result-emitter.js +81 -0
  243. package/lib/spec-gate/rules/default-rules.js +156 -0
  244. package/lib/spec-gate/rules/rule-registry.js +51 -0
  245. package/lib/steering/adoption-config.js +164 -0
  246. package/lib/steering/compliance-auto-fixer.js +204 -0
  247. package/lib/steering/compliance-cache.js +99 -0
  248. package/lib/steering/compliance-error-reporter.js +70 -0
  249. package/lib/steering/context-sync-manager.js +273 -0
  250. package/lib/steering/index.js +92 -0
  251. package/lib/steering/spec-steering.js +230 -0
  252. package/lib/steering/steering-compliance-checker.js +73 -0
  253. package/lib/steering/steering-loader.js +144 -0
  254. package/lib/steering/steering-manager.js +289 -0
  255. package/lib/task/index.js +12 -0
  256. package/lib/task/task-claimer.js +489 -0
  257. package/lib/task/task-status-store.js +418 -0
  258. package/lib/templates/cache-manager.js +440 -0
  259. package/lib/templates/content-generalizer.js +247 -0
  260. package/lib/templates/frontmatter-generator.js +128 -0
  261. package/lib/templates/git-handler.js +471 -0
  262. package/lib/templates/metadata-collector.js +328 -0
  263. package/lib/templates/path-utils.js +144 -0
  264. package/lib/templates/registry-parser.js +505 -0
  265. package/lib/templates/spec-reader.js +216 -0
  266. package/lib/templates/template-applicator.js +249 -0
  267. package/lib/templates/template-creator.js +256 -0
  268. package/lib/templates/template-error.js +143 -0
  269. package/lib/templates/template-exporter.js +502 -0
  270. package/lib/templates/template-manager.js +782 -0
  271. package/lib/templates/template-validator.js +361 -0
  272. package/lib/upgrade/migration-engine.js +382 -0
  273. package/lib/upgrade/migrations/.gitkeep +52 -0
  274. package/lib/upgrade/migrations/1.0.0-to-1.1.0.js +78 -0
  275. package/lib/utils/file-diff.js +177 -0
  276. package/lib/utils/fs-utils.js +274 -0
  277. package/lib/utils/tool-detector.js +383 -0
  278. package/lib/utils/validation.js +324 -0
  279. package/lib/value/gate-summary-emitter.js +99 -0
  280. package/lib/value/metric-contract-loader.js +210 -0
  281. package/lib/value/risk-evaluator.js +117 -0
  282. package/lib/value/weekly-snapshot-builder.js +61 -0
  283. package/lib/version/version-checker.js +156 -0
  284. package/lib/version/version-manager.js +327 -0
  285. package/lib/watch/action-executor.js +458 -0
  286. package/lib/watch/event-debouncer.js +323 -0
  287. package/lib/watch/execution-logger.js +550 -0
  288. package/lib/watch/file-watcher.js +499 -0
  289. package/lib/watch/presets.js +266 -0
  290. package/lib/watch/watch-manager.js +533 -0
  291. package/lib/workspace/multi/global-config.js +150 -0
  292. package/lib/workspace/multi/index.js +22 -0
  293. package/lib/workspace/multi/path-utils.js +173 -0
  294. package/lib/workspace/multi/workspace-context-resolver.js +244 -0
  295. package/lib/workspace/multi/workspace-registry.js +196 -0
  296. package/lib/workspace/multi/workspace-state-manager.js +537 -0
  297. package/lib/workspace/multi/workspace.js +90 -0
  298. package/lib/workspace/workspace-manager.js +370 -0
  299. package/lib/workspace/workspace-sync.js +356 -0
  300. package/locales/en.json +114 -0
  301. package/locales/zh.json +114 -0
  302. package/package.json +102 -0
  303. package/template/.kiro/README.md +247 -0
  304. package/template/.kiro/hooks/check-spec-on-create.kiro.hook +17 -0
  305. package/template/.kiro/hooks/run-tests-on-save.kiro.hook +13 -0
  306. package/template/.kiro/hooks/sync-tasks-on-edit.kiro.hook +16 -0
  307. package/template/.kiro/specs/SPEC_WORKFLOW_GUIDE.md +134 -0
  308. package/template/.kiro/steering/CORE_PRINCIPLES.md +133 -0
  309. package/template/.kiro/steering/CURRENT_CONTEXT.md +30 -0
  310. package/template/.kiro/steering/ENVIRONMENT.md +35 -0
  311. package/template/.kiro/steering/RULES_GUIDE.md +46 -0
  312. package/template/.kiro/templates/operations/default/change-impact.md +112 -0
  313. package/template/.kiro/templates/operations/default/deployment.md +91 -0
  314. package/template/.kiro/templates/operations/default/feedback-response.md +269 -0
  315. package/template/.kiro/templates/operations/default/migration-plan.md +172 -0
  316. package/template/.kiro/templates/operations/default/monitoring.md +135 -0
  317. package/template/.kiro/templates/operations/default/operations.md +135 -0
  318. package/template/.kiro/templates/operations/default/rollback.md +143 -0
  319. package/template/.kiro/templates/operations/default/tools.yaml +364 -0
  320. package/template/.kiro/templates/operations/default/troubleshooting.md +123 -0
  321. package/template/.kiro/tools/backup_manager.py +295 -0
  322. package/template/.kiro/tools/configuration_manager.py +218 -0
  323. package/template/.kiro/tools/document_evaluator.py +550 -0
  324. package/template/.kiro/tools/enhancement_logger.py +168 -0
  325. package/template/.kiro/tools/error_handler.py +335 -0
  326. package/template/.kiro/tools/improvement_identifier.py +444 -0
  327. package/template/.kiro/tools/modification_applicator.py +737 -0
  328. package/template/.kiro/tools/quality_gate_enforcer.py +207 -0
  329. package/template/.kiro/tools/quality_scorer.py +305 -0
  330. package/template/.kiro/tools/report_generator.py +154 -0
  331. package/template/.kiro/tools/ultrawork_enhancer.py +676 -0
  332. package/template/.kiro/tools/ultrawork_enhancer_refactored.py +0 -0
  333. package/template/.kiro/tools/ultrawork_enhancer_v2.py +463 -0
  334. package/template/.kiro/tools/ultrawork_enhancer_v3.py +606 -0
  335. package/template/.kiro/tools/workflow_quality_gate.py +100 -0
  336. package/template/README.md +111 -0
@@ -0,0 +1,553 @@
1
+ # Multi-Agent Parallel Coordination Guide
2
+
3
+ > Enable multiple AI agents to work on the same kse project simultaneously without conflicts.
4
+
5
+ **Version**: 1.44.0
6
+ **Last Updated**: 2026-02-12
7
+
8
+ ---
9
+
10
+ ## Overview
11
+
12
+ When multiple AI agent instances (e.g., multiple Kiro IDE windows, Claude Code sessions, or Cursor instances) work on the same project, they can accidentally overwrite each other's changes, claim the same tasks, or corrupt shared files like `tasks.md`.
13
+
14
+ The Multi-Agent Parallel Coordination system solves this with six layers of protection:
15
+
16
+ 1. **Agent Registry** — Who is working?
17
+ 2. **Task Lock Manager** — Who owns which task?
18
+ 3. **Task Status Store** — Safe concurrent updates to tasks.md
19
+ 4. **Steering File Lock** — Safe concurrent updates to steering files
20
+ 5. **Merge Coordinator** — Git branch isolation per agent
21
+ 6. **Central Coordinator** — Intelligent task assignment (optional)
22
+ 7. **Spec-Level Steering (L4)** — Per-Spec constraints and notes (v1.44.0)
23
+ 8. **Steering Loader** — Unified L1-L4 four-layer steering merge (v1.44.0)
24
+ 9. **Context Sync Manager** — Multi-agent CURRENT_CONTEXT.md maintenance (v1.44.0)
25
+ 10. **Spec Lifecycle Manager** — Spec state machine and auto-completion (v1.44.0)
26
+ 11. **Sync Barrier** — Agent Spec-switch synchronization (v1.44.0)
27
+
28
+ All components are **zero overhead in single-agent mode** — they become no-ops when multi-agent mode is not enabled.
29
+
30
+ ---
31
+
32
+ ## Quick Start
33
+
34
+ ### 1. Enable Multi-Agent Mode
35
+
36
+ Create the configuration file `.kiro/config/multi-agent.json`:
37
+
38
+ ```json
39
+ {
40
+ "enabled": true,
41
+ "coordinator": false,
42
+ "heartbeatIntervalMs": 30000,
43
+ "heartbeatTimeoutMs": 120000
44
+ }
45
+ ```
46
+
47
+ | Field | Description | Default |
48
+ |-------|-------------|---------|
49
+ | `enabled` | Enable multi-agent coordination | `false` |
50
+ | `coordinator` | Enable central task assignment | `false` |
51
+ | `heartbeatIntervalMs` | Heartbeat interval in ms | `30000` |
52
+ | `heartbeatTimeoutMs` | Agent considered inactive after this | `120000` |
53
+
54
+ ### 2. Each Agent Registers Itself
55
+
56
+ When an agent starts working, it registers with the AgentRegistry:
57
+
58
+ ```javascript
59
+ const { AgentRegistry } = require('kiro-spec-engine/lib/collab');
60
+
61
+ const registry = new AgentRegistry(workspaceRoot);
62
+ const { agentId } = await registry.register();
63
+ // agentId format: "{machineId}:{instanceIndex}"
64
+ // e.g., "a1b2c3d4:0", "a1b2c3d4:1"
65
+ ```
66
+
67
+ ### 3. Lock Tasks Before Working
68
+
69
+ ```javascript
70
+ const { TaskLockManager } = require('kiro-spec-engine/lib/lock');
71
+
72
+ const lockManager = new TaskLockManager(workspaceRoot);
73
+ const result = await lockManager.acquireTaskLock('my-spec', '1.1', agentId);
74
+
75
+ if (result.success) {
76
+ // Safe to work on task 1.1
77
+ // ... do work ...
78
+ await lockManager.releaseTaskLock('my-spec', '1.1', agentId);
79
+ } else {
80
+ // Task is locked by another agent
81
+ console.log(`Locked by: ${result.lockedBy}`);
82
+ }
83
+ ```
84
+
85
+ ### 4. Deregister When Done
86
+
87
+ ```javascript
88
+ await registry.deregister(agentId);
89
+ // Automatically releases all locks held by this agent
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Architecture
95
+
96
+ ```
97
+ ┌─────────────────────────────────────────────────────┐
98
+ │ Coordinator (optional) │
99
+ │ Ready task computation + assignment │
100
+ │ v1.44.0: auto Spec completion + sync barrier │
101
+ ├──────────┬──────────┬──────────┬────────────────────┤
102
+ │ Agent │ Task │ Task │ Steering │ Merge │
103
+ │ Registry │ Lock │ Status │ File Lock │ Coord │
104
+ │ │ Manager │ Store │ │ │
105
+ ├──────────┴──────────┴──────────┴────────────┴────────┤
106
+ │ MultiAgentConfig │
107
+ │ .kiro/config/multi-agent.json │
108
+ ├──────────────────────────────────────────────────────┤
109
+ │ v1.44.0: Spec-Level Steering & Context Sync │
110
+ │ SpecSteering │ SteeringLoader │ ContextSyncManager │
111
+ │ SpecLifecycleManager │ SyncBarrier │
112
+ └─────────────────────────────────────────────────────┘
113
+ ```
114
+
115
+ ---
116
+
117
+ ## Components
118
+
119
+ ### Agent Registry
120
+
121
+ Manages agent lifecycle with heartbeat-based health monitoring.
122
+
123
+ **File**: `lib/collab/agent-registry.js`
124
+ **Storage**: `.kiro/config/agent-registry.json`
125
+
126
+ ```javascript
127
+ const { AgentRegistry } = require('kiro-spec-engine/lib/collab');
128
+ const registry = new AgentRegistry(workspaceRoot);
129
+
130
+ // Register a new agent
131
+ const { agentId } = await registry.register();
132
+
133
+ // Send heartbeat (call periodically)
134
+ await registry.heartbeat(agentId);
135
+
136
+ // List active agents
137
+ const agents = await registry.getActiveAgents();
138
+
139
+ // Clean up inactive agents (heartbeat timeout)
140
+ const cleaned = await registry.cleanupInactive();
141
+ // Also releases all locks held by inactive agents
142
+
143
+ // Deregister when done
144
+ await registry.deregister(agentId);
145
+ ```
146
+
147
+ **Agent ID format**: `{machineId}:{instanceIndex}`
148
+ - `machineId` is derived from MachineIdentifier (hardware-based)
149
+ - `instanceIndex` increments for multiple instances on the same machine
150
+ - Example: `a1b2c3d4e5f6:0`, `a1b2c3d4e5f6:1`
151
+
152
+ ### Task Lock Manager
153
+
154
+ File-based mutual exclusion for task ownership.
155
+
156
+ **File**: `lib/lock/task-lock-manager.js`
157
+ **Lock files**: `.kiro/specs/{specName}/locks/{taskId}.lock`
158
+
159
+ ```javascript
160
+ const { TaskLockManager } = require('kiro-spec-engine/lib/lock');
161
+ const lockManager = new TaskLockManager(workspaceRoot);
162
+
163
+ // Acquire a task lock
164
+ const result = await lockManager.acquireTaskLock(specName, taskId, agentId);
165
+ // result: { success: true } or { success: false, lockedBy: "other-agent-id" }
166
+
167
+ // Release a task lock
168
+ await lockManager.releaseTaskLock(specName, taskId, agentId);
169
+
170
+ // Release ALL locks for an agent (used during cleanup)
171
+ await lockManager.releaseAllLocks(agentId);
172
+
173
+ // Check lock status
174
+ const status = await lockManager.getTaskLockStatus(specName, taskId);
175
+ // status: { locked: true, agentId: "...", timestamp: "..." } or { locked: false }
176
+
177
+ // List all locked tasks in a spec
178
+ const locked = await lockManager.listLockedTasks(specName);
179
+ ```
180
+
181
+ **Lock file content** (JSON):
182
+ ```json
183
+ {
184
+ "agentId": "a1b2c3d4e5f6:0",
185
+ "timestamp": "2026-02-11T10:30:00.000Z",
186
+ "reason": "task-execution"
187
+ }
188
+ ```
189
+
190
+ ### Task Status Store
191
+
192
+ Concurrent-safe updates to `tasks.md` with conflict detection and retry.
193
+
194
+ **File**: `lib/task/task-status-store.js`
195
+
196
+ ```javascript
197
+ const { TaskStatusStore } = require('kiro-spec-engine/lib/task');
198
+ const store = new TaskStatusStore(workspaceRoot);
199
+
200
+ // Update task status with file locking
201
+ await store.updateStatus(specName, taskId, 'in-progress');
202
+
203
+ // Claim a task (with lock + retry)
204
+ const result = await store.claimTask(specName, taskId, agentId, username);
205
+
206
+ // Unclaim a task
207
+ await store.unclaimTask(specName, taskId, agentId, username);
208
+ ```
209
+
210
+ **Conflict resolution strategy**:
211
+ 1. Acquire file lock on `tasks.md.lock`
212
+ 2. Read current file content
213
+ 3. Validate target line hasn't changed (line-content comparison)
214
+ 4. Write updated content atomically
215
+ 5. Release file lock
216
+ 6. On conflict: exponential backoff retry (up to 5 attempts, starting at 100ms)
217
+ 7. After retries exhausted: return conflict error, original file preserved
218
+
219
+ ### Steering File Lock
220
+
221
+ Write serialization for steering files (`.kiro/steering/*.md`).
222
+
223
+ **File**: `lib/lock/steering-file-lock.js`
224
+
225
+ ```javascript
226
+ const { SteeringFileLock } = require('kiro-spec-engine/lib/lock');
227
+ const steeringLock = new SteeringFileLock(workspaceRoot);
228
+
229
+ // Execute callback with lock held
230
+ await steeringLock.withLock('CURRENT_CONTEXT.md', async () => {
231
+ // Safe to write to CURRENT_CONTEXT.md
232
+ await fs.writeFile(contextPath, newContent);
233
+ });
234
+
235
+ // Manual lock management
236
+ const { lockId } = await steeringLock.acquireLock('CURRENT_CONTEXT.md');
237
+ // ... write file ...
238
+ await steeringLock.releaseLock('CURRENT_CONTEXT.md', lockId);
239
+
240
+ // Degraded write (when lock cannot be acquired)
241
+ await steeringLock.writePending('CURRENT_CONTEXT.md', content, agentId);
242
+ // Creates: .kiro/steering/CURRENT_CONTEXT.md.pending.{agentId}
243
+ ```
244
+
245
+ ### Merge Coordinator
246
+
247
+ Git branch isolation per agent for conflict-free parallel development.
248
+
249
+ **File**: `lib/collab/merge-coordinator.js`
250
+
251
+ ```javascript
252
+ const { MergeCoordinator } = require('kiro-spec-engine/lib/collab');
253
+ const merger = new MergeCoordinator(workspaceRoot);
254
+
255
+ // Create agent-specific branch
256
+ const { branchName, created } = await merger.createAgentBranch(agentId, specName);
257
+ // branchName: "agent/a1b2c3d4e5f6:0/my-spec"
258
+
259
+ // Check for conflicts before merging
260
+ const { hasConflicts, files } = await merger.detectConflicts(branchName, 'main');
261
+
262
+ // Merge back to main
263
+ const result = await merger.merge(branchName, 'main');
264
+ // result.strategy: "fast-forward" | "merge-commit" | null (conflicts)
265
+
266
+ // Clean up merged branch
267
+ await merger.cleanupBranch(branchName);
268
+ ```
269
+
270
+ **Branch naming**: `agent/{agentId}/{specName}`
271
+
272
+ ### Central Coordinator (Optional)
273
+
274
+ When `coordinator: true` in config, provides intelligent task assignment based on dependency analysis.
275
+
276
+ **File**: `lib/collab/coordinator.js`
277
+ **Log**: `.kiro/config/coordination-log.json`
278
+
279
+ ```javascript
280
+ const { Coordinator } = require('kiro-spec-engine/lib/collab');
281
+ const coordinator = new Coordinator(workspaceRoot, depManager, registry, lockManager);
282
+
283
+ // Get tasks ready to execute (dependencies satisfied, not locked)
284
+ const readyTasks = await coordinator.getReadyTasks(specName);
285
+
286
+ // Request a task assignment
287
+ const assignment = await coordinator.assignTask(agentId);
288
+ // assignment: { specName, taskId, task } or null
289
+
290
+ // Mark task complete (releases lock, computes newly ready tasks)
291
+ // v1.44.0: also auto-checks Spec completion via SpecLifecycleManager
292
+ const { newReadyTasks } = await coordinator.completeTask(specName, taskId, agentId);
293
+
294
+ // Get progress across all specs
295
+ const { specs, agents } = await coordinator.getProgress();
296
+ ```
297
+
298
+ ### Spec-Level Steering (L4) — v1.44.0
299
+
300
+ Per-Spec `steering.md` providing independent constraints, notes, and decisions for each Spec. Eliminates cross-agent write conflicts on global steering files.
301
+
302
+ **File**: `lib/steering/spec-steering.js`
303
+ **Storage**: `.kiro/specs/{spec-name}/steering.md`
304
+
305
+ ```javascript
306
+ const { SpecSteering } = require('kiro-spec-engine/lib/steering');
307
+ const specSteering = new SpecSteering(workspaceRoot);
308
+
309
+ // Create a steering template for a new Spec
310
+ await specSteering.createTemplate(specName, { description: 'My feature' });
311
+
312
+ // Read Spec-level steering
313
+ const steering = await specSteering.read(specName);
314
+ // steering: { specName, description, constraints: [], notes: [], decisions: [] }
315
+
316
+ // Write updated steering
317
+ await specSteering.write(specName, updatedSteering);
318
+
319
+ // Parse raw Markdown to structured object
320
+ const parsed = specSteering.parse(markdownContent);
321
+
322
+ // Format structured object back to Markdown
323
+ const markdown = specSteering.format(steeringObj);
324
+ ```
325
+
326
+ ### Steering Loader — v1.44.0
327
+
328
+ Unified loader that merges all four steering layers (L1-L4) into a single context.
329
+
330
+ **File**: `lib/steering/steering-loader.js`
331
+
332
+ ```javascript
333
+ const { SteeringLoader } = require('kiro-spec-engine/lib/steering');
334
+ const loader = new SteeringLoader(workspaceRoot);
335
+
336
+ // Load a specific layer
337
+ const l1 = await loader.loadL1(); // CORE_PRINCIPLES.md
338
+ const l2 = await loader.loadL2(); // ENVIRONMENT.md
339
+ const l3 = await loader.loadL3(); // CURRENT_CONTEXT.md
340
+ const l4 = await loader.loadL4(specName); // specs/{specName}/steering.md
341
+
342
+ // Load all layers merged (L4 only in multi-agent mode)
343
+ const merged = await loader.loadMerged(specName);
344
+ // merged: { l1, l2, l3, l4, merged: "combined content" }
345
+ ```
346
+
347
+ ### Context Sync Manager — v1.44.0
348
+
349
+ Multi-agent friendly maintenance of `CURRENT_CONTEXT.md` with structured Spec progress table format.
350
+
351
+ **File**: `lib/steering/context-sync-manager.js`
352
+
353
+ ```javascript
354
+ const { ContextSyncManager } = require('kiro-spec-engine/lib/steering');
355
+ const syncManager = new ContextSyncManager(workspaceRoot);
356
+
357
+ // Read current context
358
+ const context = await syncManager.readContext();
359
+
360
+ // Update Spec progress entry (SteeringFileLock-protected)
361
+ await syncManager.updateSpecProgress(specName, {
362
+ status: 'in-progress',
363
+ progress: '3/8 tasks',
364
+ agent: 'a1b2c3d4:0'
365
+ });
366
+
367
+ // Compute progress from tasks.md
368
+ const progress = await syncManager.computeProgress(specName);
369
+ // progress: { total: 8, completed: 3, percentage: 37.5 }
370
+
371
+ // Write full context (SteeringFileLock-protected)
372
+ await syncManager.writeContext(newContext);
373
+ ```
374
+
375
+ ### Spec Lifecycle Manager — v1.44.0
376
+
377
+ State machine managing Spec lifecycle transitions with auto-completion detection.
378
+
379
+ **File**: `lib/collab/spec-lifecycle-manager.js`
380
+ **Storage**: `.kiro/specs/{spec-name}/lifecycle.json`
381
+
382
+ Valid transitions: `planned → assigned → in-progress → completed → released`
383
+
384
+ ```javascript
385
+ const { SpecLifecycleManager } = require('kiro-spec-engine/lib/collab');
386
+ const lifecycle = new SpecLifecycleManager(workspaceRoot);
387
+
388
+ // Get current Spec status
389
+ const status = await lifecycle.getStatus(specName);
390
+ // status: "planned" | "assigned" | "in-progress" | "completed" | "released"
391
+
392
+ // Transition to next state
393
+ await lifecycle.transition(specName, 'in-progress');
394
+
395
+ // Check if all tasks are completed (auto-transitions to "completed")
396
+ const isComplete = await lifecycle.checkCompletion(specName);
397
+
398
+ // Read full lifecycle data
399
+ const data = await lifecycle.readLifecycle(specName);
400
+ // data: { status, transitions: [...], completedAt, ... }
401
+ ```
402
+
403
+ ### Sync Barrier — v1.44.0
404
+
405
+ Ensures agents synchronize state before switching between Specs.
406
+
407
+ **File**: `lib/collab/sync-barrier.js`
408
+
409
+ ```javascript
410
+ const { SyncBarrier } = require('kiro-spec-engine/lib/collab');
411
+ const barrier = new SyncBarrier(workspaceRoot);
412
+
413
+ // Check before switching Specs
414
+ const ready = await barrier.prepareSwitch(agentId, fromSpec, toSpec);
415
+ // Checks: uncommitted changes, reloads steering
416
+
417
+ // Check for uncommitted changes
418
+ const hasChanges = await barrier.hasUncommittedChanges();
419
+ ```
420
+
421
+ ---
422
+
423
+ ## Typical Workflow
424
+
425
+ ```
426
+ Agent A Agent B
427
+ │ │
428
+ ├─ register() → agentId:0 ├─ register() → agentId:1
429
+ │ │
430
+ ├─ acquireTaskLock(1.1) ✅ ├─ acquireTaskLock(1.1) ❌ (locked)
431
+ │ ├─ acquireTaskLock(1.2) ✅
432
+ │ │
433
+ ├─ work on task 1.1 ├─ work on task 1.2
434
+ │ │
435
+ ├─ releaseTaskLock(1.1) ├─ releaseTaskLock(1.2)
436
+ │ │
437
+ ├─ acquireTaskLock(2.1) ✅ ├─ acquireTaskLock(2.2) ✅
438
+ │ ... │ ...
439
+ │ │
440
+ ├─ deregister() ├─ deregister()
441
+ ```
442
+
443
+ ---
444
+
445
+ ## Failure Recovery
446
+
447
+ ### Agent Crashes
448
+
449
+ When an agent crashes without deregistering:
450
+
451
+ 1. Its heartbeat stops updating
452
+ 2. Another agent (or periodic cleanup) calls `registry.cleanupInactive()`
453
+ 3. All locks held by the crashed agent are automatically released
454
+ 4. Other agents can now claim those tasks
455
+
456
+ ### File Write Conflicts
457
+
458
+ When two agents try to update `tasks.md` simultaneously:
459
+
460
+ 1. TaskStatusStore uses file-level locking (`tasks.md.lock`)
461
+ 2. The second writer detects the lock and retries with exponential backoff
462
+ 3. Line-content validation ensures no silent overwrites
463
+ 4. After 5 retries, returns a conflict error (original file preserved)
464
+
465
+ ### Steering File Conflicts
466
+
467
+ When two agents try to update a steering file:
468
+
469
+ 1. SteeringFileLock serializes writes
470
+ 2. If lock cannot be acquired after 3 retries, the agent writes to a `.pending` file
471
+ 3. The pending file can be manually merged later
472
+
473
+ ### Git Merge Conflicts
474
+
475
+ When agent branches have conflicting changes:
476
+
477
+ 1. `detectConflicts()` performs a dry-run merge to check
478
+ 2. If conflicts exist, `merge()` returns the list of conflicting files
479
+ 3. Conflicts must be resolved manually before merging
480
+
481
+ ---
482
+
483
+ ## Single-Agent Backward Compatibility
484
+
485
+ All components check `MultiAgentConfig.isEnabled()` before doing anything:
486
+
487
+ | Component | Single-Agent Behavior |
488
+ |-----------|----------------------|
489
+ | AgentRegistry | Not used |
490
+ | TaskLockManager | Delegates to existing LockManager |
491
+ | TaskStatusStore | Delegates to existing TaskClaimer (no lock, no retry) |
492
+ | SteeringFileLock | Not used |
493
+ | MergeCoordinator | Returns current branch, no branch creation |
494
+ | Coordinator | All methods return empty results |
495
+
496
+ **Zero overhead**: No extra file I/O, no lock files, no registry files.
497
+
498
+ ---
499
+
500
+ ## Configuration Reference
501
+
502
+ ### `.kiro/config/multi-agent.json`
503
+
504
+ ```json
505
+ {
506
+ "enabled": true,
507
+ "coordinator": false,
508
+ "heartbeatIntervalMs": 30000,
509
+ "heartbeatTimeoutMs": 120000
510
+ }
511
+ ```
512
+
513
+ ### File Locations
514
+
515
+ | File | Purpose |
516
+ |------|---------|
517
+ | `.kiro/config/multi-agent.json` | Multi-agent configuration |
518
+ | `.kiro/config/agent-registry.json` | Active agent registry |
519
+ | `.kiro/config/coordination-log.json` | Coordinator assignment log |
520
+ | `.kiro/specs/{spec}/locks/{taskId}.lock` | Task lock files |
521
+ | `.kiro/specs/{spec}/tasks.md.lock` | tasks.md file lock |
522
+ | `.kiro/specs/{spec}/steering.md` | Spec-level steering (L4) |
523
+ | `.kiro/specs/{spec}/lifecycle.json` | Spec lifecycle state |
524
+ | `.kiro/steering/{file}.lock` | Steering file locks |
525
+ | `.kiro/steering/{file}.pending.{agentId}` | Pending steering writes |
526
+
527
+ ---
528
+
529
+ ## API Reference
530
+
531
+ ### Module Exports
532
+
533
+ ```javascript
534
+ // Collaboration modules
535
+ const { AgentRegistry, Coordinator, MergeCoordinator, MultiAgentConfig, SpecLifecycleManager, SyncBarrier } = require('kiro-spec-engine/lib/collab');
536
+
537
+ // Steering modules
538
+ const { SpecSteering, SteeringLoader, ContextSyncManager } = require('kiro-spec-engine/lib/steering');
539
+
540
+ // Lock modules
541
+ const { TaskLockManager, SteeringFileLock } = require('kiro-spec-engine/lib/lock');
542
+
543
+ // Task modules
544
+ const { TaskStatusStore } = require('kiro-spec-engine/lib/task');
545
+ ```
546
+
547
+ ---
548
+
549
+ ## Related Documentation
550
+
551
+ - [Spec-Level Collaboration Guide](spec-collaboration-guide.md) — Coordinate multiple Specs across AI instances
552
+ - [Spec Locking Guide](spec-locking-guide.md) — Single-agent Spec locking mechanism
553
+ - [Team Collaboration Guide](team-collaboration-guide.md) — Multi-user team workflows