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,23 @@
1
+ /**
2
+ * Operations Module
3
+ *
4
+ * Core module for DevOps integration foundation
5
+ * Provides operations spec management, permission control, feedback handling, and audit logging
6
+ */
7
+
8
+ module.exports = {
9
+ // Core managers
10
+ OperationsManager: require('./operations-manager'),
11
+ PermissionManager: require('./permission-manager'),
12
+ FeedbackManager: require('./feedback-manager'),
13
+ AuditLogger: require('./audit-logger'),
14
+
15
+ // Template system
16
+ TemplateLoader: require('./template-loader'),
17
+
18
+ // Validation
19
+ OperationsValidator: require('./operations-validator'),
20
+
21
+ // Data models
22
+ models: require('./models')
23
+ };
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Data Models for Operations Module
3
+ *
4
+ * Defines core data structures and enums
5
+ */
6
+
7
+ /**
8
+ * Takeover Level Enum
9
+ * Defines the degree of AI autonomy in executing operations
10
+ */
11
+ const TakeoverLevel = {
12
+ L1_OBSERVATION: 'L1_OBSERVATION',
13
+ L2_SUGGESTION: 'L2_SUGGESTION',
14
+ L3_SEMI_AUTO: 'L3_SEMI_AUTO',
15
+ L4_AUTO: 'L4_AUTO',
16
+ L5_FULLY_AUTONOMOUS: 'L5_FULLY_AUTONOMOUS'
17
+ };
18
+
19
+ /**
20
+ * Security Environment Enum
21
+ * Deployment environment classification
22
+ */
23
+ const SecurityEnvironment = {
24
+ DEVELOPMENT: 'development',
25
+ TEST: 'test',
26
+ PRE_PRODUCTION: 'pre-production',
27
+ PRODUCTION: 'production'
28
+ };
29
+
30
+ /**
31
+ * Feedback Channel Enum
32
+ * Methods by which user feedback enters the system
33
+ */
34
+ const FeedbackChannel = {
35
+ SUPPORT_TICKET: 'support_ticket',
36
+ MONITORING_ALERT: 'monitoring_alert',
37
+ USER_REPORT: 'user_report',
38
+ API_ENDPOINT: 'api_endpoint',
39
+ CUSTOMER_SURVEY: 'customer_survey'
40
+ };
41
+
42
+ /**
43
+ * Feedback Type Enum
44
+ * Classification of feedback content
45
+ */
46
+ const FeedbackType = {
47
+ BUG_REPORT: 'bug_report',
48
+ PERFORMANCE_ISSUE: 'performance_issue',
49
+ FEATURE_REQUEST: 'feature_request',
50
+ OPERATIONAL_CONCERN: 'operational_concern'
51
+ };
52
+
53
+ /**
54
+ * Feedback Severity Enum
55
+ * Priority level of feedback
56
+ */
57
+ const FeedbackSeverity = {
58
+ CRITICAL: 'critical', // System down
59
+ HIGH: 'high', // Degraded performance
60
+ MEDIUM: 'medium', // Usability issue
61
+ LOW: 'low' // Enhancement
62
+ };
63
+
64
+ /**
65
+ * Feedback Status Enum
66
+ * Resolution lifecycle states
67
+ */
68
+ const FeedbackStatus = {
69
+ ACKNOWLEDGED: 'acknowledged',
70
+ INVESTIGATING: 'investigating',
71
+ RESOLVED: 'resolved',
72
+ VERIFIED: 'verified'
73
+ };
74
+
75
+ /**
76
+ * Operation Type Enum
77
+ * Types of operations that can be performed
78
+ */
79
+ const OperationType = {
80
+ DEPLOYMENT: 'deployment',
81
+ CONFIGURATION_CHANGE: 'configuration_change',
82
+ DATA_MIGRATION: 'data_migration',
83
+ ROLLBACK: 'rollback',
84
+ MONITORING_UPDATE: 'monitoring_update',
85
+ TROUBLESHOOTING: 'troubleshooting',
86
+ FEEDBACK_RESPONSE: 'feedback_response',
87
+ PERMISSION_CHANGE: 'permission_change'
88
+ };
89
+
90
+ /**
91
+ * Document Type Enum
92
+ * Types of operations spec documents
93
+ */
94
+ const DocumentType = {
95
+ DEPLOYMENT: 'deployment',
96
+ MONITORING: 'monitoring',
97
+ OPERATIONS: 'operations',
98
+ TROUBLESHOOTING: 'troubleshooting',
99
+ ROLLBACK: 'rollback',
100
+ CHANGE_IMPACT: 'change-impact',
101
+ MIGRATION_PLAN: 'migration-plan',
102
+ FEEDBACK_RESPONSE: 'feedback-response',
103
+ TOOLS: 'tools' // AI-driven tools configuration
104
+ };
105
+
106
+ module.exports = {
107
+ TakeoverLevel,
108
+ SecurityEnvironment,
109
+ FeedbackChannel,
110
+ FeedbackType,
111
+ FeedbackSeverity,
112
+ FeedbackStatus,
113
+ OperationType,
114
+ DocumentType
115
+ };
116
+
117
+ /**
118
+ * @typedef {Object} IssuePattern
119
+ * @property {string} pattern - Description of the issue pattern
120
+ * @property {number} occurrences - Number of times this pattern occurred
121
+ * @property {FeedbackType} type - Type of feedback
122
+ * @property {FeedbackSeverity} severity - Severity level
123
+ * @property {string[]} affectedVersions - Versions where this pattern appears
124
+ * @property {string} firstSeen - ISO timestamp of first occurrence
125
+ * @property {string} lastSeen - ISO timestamp of last occurrence
126
+ */
127
+
128
+ /**
129
+ * @typedef {Object} ResolutionTimeStats
130
+ * @property {number} average - Average resolution time in hours
131
+ * @property {number} median - Median resolution time in hours
132
+ * @property {number} min - Minimum resolution time in hours
133
+ * @property {number} max - Maximum resolution time in hours
134
+ * @property {Object.<FeedbackSeverity, number>} bySeverity - Average resolution time by severity
135
+ * @property {Object.<FeedbackType, number>} byType - Average resolution time by type
136
+ */
137
+
138
+ /**
139
+ * @typedef {Object} SatisfactionTrend
140
+ * @property {string} period - Time period (e.g., "2026-01", "2026-W04")
141
+ * @property {number} totalFeedback - Total feedback items in period
142
+ * @property {number} resolvedCount - Number of resolved items
143
+ * @property {number} resolutionRate - Percentage of resolved items
144
+ * @property {number} averageResolutionTime - Average time to resolve in hours
145
+ * @property {Object.<FeedbackSeverity, number>} severityDistribution - Count by severity
146
+ */
147
+
148
+ /**
149
+ * @typedef {Object} VersionIssue
150
+ * @property {string} version - Project version
151
+ * @property {number} feedbackCount - Total feedback for this version
152
+ * @property {IssuePattern[]} topIssues - Most common issues in this version
153
+ * @property {number} criticalCount - Number of critical issues
154
+ * @property {number} averageResolutionTime - Average resolution time in hours
155
+ */
156
+
157
+ /**
158
+ * @typedef {Object} FeedbackAnalytics
159
+ * @property {string} project - Project name
160
+ * @property {string} generatedAt - ISO timestamp of analytics generation
161
+ * @property {Object} timeRange - Time range for analytics
162
+ * @property {string} timeRange.from - Start date (ISO)
163
+ * @property {string} timeRange.to - End date (ISO)
164
+ * @property {IssuePattern[]} commonIssues - Most common issue patterns
165
+ * @property {ResolutionTimeStats} resolutionTimes - Resolution time statistics
166
+ * @property {SatisfactionTrend[]} satisfactionTrends - Satisfaction trends over time
167
+ * @property {VersionIssue[]} versionSpecificIssues - Issues by version
168
+ * @property {number} totalFeedback - Total feedback items analyzed
169
+ * @property {Object.<FeedbackStatus, number>} statusDistribution - Count by status
170
+ */
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Operations Manager
3
+ *
4
+ * Manages operations specs lifecycle
5
+ */
6
+
7
+ const fs = require('fs-extra');
8
+ const path = require('path');
9
+ const TemplateLoader = require('./template-loader');
10
+ const OperationsValidator = require('./operations-validator');
11
+ const { DocumentType } = require('./models');
12
+
13
+ class OperationsManager {
14
+ constructor(projectRoot = process.cwd()) {
15
+ this.projectRoot = projectRoot;
16
+ this.templateLoader = new TemplateLoader();
17
+ this.validator = new OperationsValidator();
18
+ }
19
+
20
+ /**
21
+ * Create operations spec from template
22
+ *
23
+ * @param {string} projectName - Project name
24
+ * @param {string} version - Project version
25
+ * @param {string} templateName - Template to use (default: 'default')
26
+ * @returns {Promise<string>} Path to created operations directory
27
+ */
28
+ async createOperationsSpec(projectName, version = '1.0.0', templateName = 'default') {
29
+ const operationsPath = path.join(
30
+ this.projectRoot,
31
+ '.kiro/specs',
32
+ projectName,
33
+ 'operations'
34
+ );
35
+
36
+ // Create operations directory
37
+ await fs.ensureDir(operationsPath);
38
+
39
+ // Load all templates
40
+ const templates = await this.templateLoader.loadAllTemplates(templateName);
41
+
42
+ // Write each template to file
43
+ const documentTypes = Object.values(DocumentType);
44
+
45
+ for (const docType of documentTypes) {
46
+ const template = templates[docType];
47
+ if (template) {
48
+ const fileName = docType === DocumentType.TOOLS ? 'tools.yaml' : `${docType}.md`;
49
+ const filePath = path.join(operationsPath, fileName);
50
+ await fs.writeFile(filePath, template, 'utf8');
51
+ }
52
+ }
53
+
54
+ // Create version metadata file
55
+ const metadata = {
56
+ project: projectName,
57
+ version: version,
58
+ created: new Date().toISOString(),
59
+ template: templateName
60
+ };
61
+
62
+ await fs.writeFile(
63
+ path.join(operationsPath, '.metadata.json'),
64
+ JSON.stringify(metadata, null, 2),
65
+ 'utf8'
66
+ );
67
+
68
+ return operationsPath;
69
+ }
70
+
71
+ /**
72
+ * Load operations spec
73
+ *
74
+ * @param {string} projectName - Project name
75
+ * @returns {Promise<Object>} Operations spec object
76
+ */
77
+ async loadOperationsSpec(projectName) {
78
+ const operationsPath = path.join(
79
+ this.projectRoot,
80
+ '.kiro/specs',
81
+ projectName,
82
+ 'operations'
83
+ );
84
+
85
+ // Check if operations directory exists
86
+ const exists = await fs.pathExists(operationsPath);
87
+ if (!exists) {
88
+ throw new Error(`Operations spec not found for project: ${projectName}`);
89
+ }
90
+
91
+ // Load metadata
92
+ const metadataPath = path.join(operationsPath, '.metadata.json');
93
+ let metadata = {};
94
+ if (await fs.pathExists(metadataPath)) {
95
+ try {
96
+ metadata = await fs.readJson(metadataPath);
97
+ } catch (error) {
98
+ // If metadata is corrupted, use empty object
99
+ console.warn(`Warning: Could not parse metadata file: ${error.message}`);
100
+ metadata = {};
101
+ }
102
+ }
103
+
104
+ return {
105
+ project: projectName,
106
+ path: operationsPath,
107
+ metadata
108
+ };
109
+ }
110
+
111
+ /**
112
+ * Validate operations spec
113
+ *
114
+ * @param {string} projectName - Project name
115
+ * @returns {Promise<Object>} Validation result
116
+ */
117
+ async validateOperationsSpec(projectName) {
118
+ const spec = await this.loadOperationsSpec(projectName);
119
+ return await this.validator.validateComplete(spec.path);
120
+ }
121
+
122
+ /**
123
+ * List all operations specs
124
+ *
125
+ * @returns {Promise<string[]>} Array of project names with operations specs
126
+ */
127
+ async listOperationsSpecs() {
128
+ const specsPath = path.join(this.projectRoot, '.kiro/specs');
129
+
130
+ const exists = await fs.pathExists(specsPath);
131
+ if (!exists) {
132
+ return [];
133
+ }
134
+
135
+ const entries = await fs.readdir(specsPath, { withFileTypes: true });
136
+ const projects = [];
137
+
138
+ for (const entry of entries) {
139
+ if (entry.isDirectory()) {
140
+ const operationsPath = path.join(specsPath, entry.name, 'operations');
141
+ if (await fs.pathExists(operationsPath)) {
142
+ projects.push(entry.name);
143
+ }
144
+ }
145
+ }
146
+
147
+ return projects;
148
+ }
149
+ }
150
+
151
+ module.exports = OperationsManager;
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Operations Spec Validator
3
+ *
4
+ * Validates operations spec completeness and structure
5
+ */
6
+
7
+ const fs = require('fs-extra');
8
+ const path = require('path');
9
+ const { DocumentType } = require('./models');
10
+
11
+ // Required sections for each document type
12
+ const REQUIRED_SECTIONS = {
13
+ [DocumentType.DEPLOYMENT]: [
14
+ 'Prerequisites',
15
+ 'Deployment Steps',
16
+ 'Environment Variables',
17
+ 'Health Checks',
18
+ 'Rollback Procedure'
19
+ ],
20
+ [DocumentType.MONITORING]: [
21
+ 'Metrics',
22
+ 'Thresholds',
23
+ 'Alert Rules',
24
+ 'Response Procedures'
25
+ ],
26
+ [DocumentType.OPERATIONS]: [
27
+ 'Daily Tasks',
28
+ 'Maintenance Procedures',
29
+ 'Backup Procedures'
30
+ ],
31
+ [DocumentType.TROUBLESHOOTING]: [
32
+ 'Common Issues',
33
+ 'Diagnostic Commands',
34
+ 'Resolution Steps'
35
+ ],
36
+ [DocumentType.ROLLBACK]: [
37
+ 'Rollback Triggers',
38
+ 'Rollback Steps',
39
+ 'Data Recovery Procedures'
40
+ ],
41
+ [DocumentType.CHANGE_IMPACT]: [
42
+ 'Change Classification',
43
+ 'Affected Systems',
44
+ 'Risk Assessment'
45
+ ],
46
+ [DocumentType.MIGRATION_PLAN]: [
47
+ 'Migration Strategy',
48
+ 'Data Mapping',
49
+ 'Validation Steps',
50
+ 'Rollback Plan'
51
+ ],
52
+ [DocumentType.FEEDBACK_RESPONSE]: [
53
+ 'Feedback Classification Rules',
54
+ 'Response Procedures',
55
+ 'Escalation Paths',
56
+ 'Resolution Tracking'
57
+ ]
58
+ };
59
+
60
+ class OperationsValidator {
61
+ /**
62
+ * Validate operations spec directory structure
63
+ *
64
+ * @param {string} operationsPath - Path to operations directory
65
+ * @returns {Promise<Object>} Validation result
66
+ */
67
+ async validateStructure(operationsPath) {
68
+ const errors = [];
69
+ const warnings = [];
70
+ const missingDocuments = [];
71
+ const presentDocuments = [];
72
+
73
+ // Check if operations directory exists
74
+ const exists = await fs.pathExists(operationsPath);
75
+ if (!exists) {
76
+ errors.push({
77
+ type: 'missing_directory',
78
+ message: `Operations directory not found: ${operationsPath}`
79
+ });
80
+
81
+ return {
82
+ valid: false,
83
+ errors,
84
+ warnings,
85
+ missingDocuments: Object.values(DocumentType),
86
+ presentDocuments: []
87
+ };
88
+ }
89
+
90
+ // Check for all required documents
91
+ const documentTypes = Object.values(DocumentType);
92
+
93
+ for (const docType of documentTypes) {
94
+ // tools.yaml is a YAML file, others are markdown
95
+ const fileName = docType === DocumentType.TOOLS ? `${docType}.yaml` : `${docType}.md`;
96
+ const docPath = path.join(operationsPath, fileName);
97
+ const docExists = await fs.pathExists(docPath);
98
+
99
+ if (docExists) {
100
+ presentDocuments.push(docType);
101
+ } else {
102
+ missingDocuments.push(docType);
103
+ errors.push({
104
+ type: 'missing_document',
105
+ documentType: docType,
106
+ message: `Required document missing: ${fileName}`
107
+ });
108
+ }
109
+ }
110
+
111
+ return {
112
+ valid: errors.length === 0,
113
+ errors,
114
+ warnings,
115
+ missingDocuments,
116
+ presentDocuments,
117
+ totalRequired: documentTypes.length,
118
+ totalPresent: presentDocuments.length
119
+ };
120
+ }
121
+
122
+ /**
123
+ * Validate document content (sections)
124
+ *
125
+ * @param {string} documentPath - Path to document file
126
+ * @param {string} documentType - Type of document
127
+ * @returns {Promise<Object>} Validation result
128
+ */
129
+ async validateDocumentContent(documentPath, documentType) {
130
+ const errors = [];
131
+ const warnings = [];
132
+
133
+ // Check if document exists
134
+ const exists = await fs.pathExists(documentPath);
135
+ if (!exists) {
136
+ errors.push({
137
+ type: 'file_not_found',
138
+ message: `Document not found: ${documentPath}`
139
+ });
140
+
141
+ return {
142
+ valid: false,
143
+ errors,
144
+ warnings,
145
+ missingSections: REQUIRED_SECTIONS[documentType] || [],
146
+ presentSections: []
147
+ };
148
+ }
149
+
150
+ // Read document content
151
+ const content = await fs.readFile(documentPath, 'utf8');
152
+
153
+ // Get required sections for this document type
154
+ const requiredSections = REQUIRED_SECTIONS[documentType];
155
+ if (!requiredSections) {
156
+ warnings.push({
157
+ type: 'unknown_document_type',
158
+ message: `No validation rules for document type: ${documentType}`
159
+ });
160
+
161
+ return {
162
+ valid: true,
163
+ errors,
164
+ warnings,
165
+ missingSections: [],
166
+ presentSections: []
167
+ };
168
+ }
169
+
170
+ // Parse sections from markdown
171
+ const sections = this.parseSections(content);
172
+ const missingSections = [];
173
+ const presentSections = [];
174
+
175
+ // Check for required sections
176
+ for (const requiredSection of requiredSections) {
177
+ const found = sections.some(section =>
178
+ section.toLowerCase().includes(requiredSection.toLowerCase())
179
+ );
180
+
181
+ if (found) {
182
+ presentSections.push(requiredSection);
183
+ } else {
184
+ missingSections.push(requiredSection);
185
+ errors.push({
186
+ type: 'missing_section',
187
+ section: requiredSection,
188
+ message: `Required section missing: ${requiredSection}`
189
+ });
190
+ }
191
+ }
192
+
193
+ return {
194
+ valid: errors.length === 0,
195
+ errors,
196
+ warnings,
197
+ missingSections,
198
+ presentSections,
199
+ totalRequired: requiredSections.length,
200
+ totalPresent: presentSections.length
201
+ };
202
+ }
203
+
204
+ /**
205
+ * Validate complete operations spec
206
+ *
207
+ * @param {string} operationsPath - Path to operations directory
208
+ * @returns {Promise<Object>} Complete validation result
209
+ */
210
+ async validateComplete(operationsPath) {
211
+ // First validate structure
212
+ const structureResult = await this.validateStructure(operationsPath);
213
+
214
+ if (!structureResult.valid) {
215
+ return {
216
+ valid: false,
217
+ structureValid: false,
218
+ contentValid: false,
219
+ structure: structureResult,
220
+ content: {}
221
+ };
222
+ }
223
+
224
+ // Then validate content of each document
225
+ const contentResults = {};
226
+ let allContentValid = true;
227
+
228
+ for (const docType of structureResult.presentDocuments) {
229
+ const docPath = path.join(operationsPath, `${docType}.md`);
230
+ const contentResult = await this.validateDocumentContent(docPath, docType);
231
+
232
+ contentResults[docType] = contentResult;
233
+
234
+ if (!contentResult.valid) {
235
+ allContentValid = false;
236
+ }
237
+ }
238
+
239
+ return {
240
+ valid: structureResult.valid && allContentValid,
241
+ structureValid: structureResult.valid,
242
+ contentValid: allContentValid,
243
+ structure: structureResult,
244
+ content: contentResults
245
+ };
246
+ }
247
+
248
+ /**
249
+ * Parse markdown sections (## headers)
250
+ *
251
+ * @param {string} content - Markdown content
252
+ * @returns {string[]} Array of section titles
253
+ */
254
+ parseSections(content) {
255
+ const sections = [];
256
+ const lines = content.split('\n');
257
+
258
+ for (const line of lines) {
259
+ // Match ## Section Title
260
+ const match = line.match(/^##\s+(.+)$/);
261
+ if (match) {
262
+ sections.push(match[1].trim());
263
+ }
264
+ }
265
+
266
+ return sections;
267
+ }
268
+
269
+ /**
270
+ * Get required sections for a document type
271
+ *
272
+ * @param {string} documentType - Type of document
273
+ * @returns {string[]} Array of required section names
274
+ */
275
+ getRequiredSections(documentType) {
276
+ return REQUIRED_SECTIONS[documentType] || [];
277
+ }
278
+ }
279
+
280
+ module.exports = OperationsValidator;