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.
- package/CHANGELOG.md +2513 -0
- package/LICENSE +21 -0
- package/README.md +765 -0
- package/README.zh.md +630 -0
- package/bin/kiro-spec-engine.js +796 -0
- package/bin/kse.js +3 -0
- package/bin/sce.js +3 -0
- package/bin/sco.js +3 -0
- package/docs/331-poc-adaptation-roadmap.md +156 -0
- package/docs/331-poc-dual-track-integration-guide.md +120 -0
- package/docs/331-poc-weekly-delivery-checklist.md +52 -0
- package/docs/OFFLINE_INSTALL.md +96 -0
- package/docs/README.md +279 -0
- package/docs/adopt-migration-guide.md +599 -0
- package/docs/adoption-guide.md +616 -0
- package/docs/agent-hooks-analysis.md +815 -0
- package/docs/architecture.md +733 -0
- package/docs/articles/ai-driven-development-philosophy-and-practice-review.md +208 -0
- package/docs/articles/ai-driven-development-philosophy-and-practice.en.md +459 -0
- package/docs/articles/ai-driven-development-philosophy-and-practice.md +492 -0
- package/docs/autonomous-control-guide.md +851 -0
- package/docs/command-reference.md +1368 -0
- package/docs/community.md +115 -0
- package/docs/cross-tool-guide.md +555 -0
- package/docs/developer-guide.md +619 -0
- package/docs/document-governance.md +865 -0
- package/docs/environment-management-guide.md +526 -0
- package/docs/examples/add-export-command/design.md +194 -0
- package/docs/examples/add-export-command/requirements.md +110 -0
- package/docs/examples/add-export-command/tasks.md +88 -0
- package/docs/examples/add-rest-api/design.md +855 -0
- package/docs/examples/add-rest-api/requirements.md +323 -0
- package/docs/examples/add-rest-api/tasks.md +355 -0
- package/docs/examples/add-user-dashboard/design.md +192 -0
- package/docs/examples/add-user-dashboard/requirements.md +143 -0
- package/docs/examples/add-user-dashboard/tasks.md +91 -0
- package/docs/faq.md +697 -0
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.json +156 -0
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.md +24 -0
- package/docs/images/wechat-qr.png +0 -0
- package/docs/integration-modes.md +529 -0
- package/docs/integration-philosophy.md +313 -0
- package/docs/knowledge-management-guide.md +263 -0
- package/docs/manual-workflows-guide.md +418 -0
- package/docs/moqui-capability-matrix.md +73 -0
- package/docs/moqui-template-core-library-playbook.md +109 -0
- package/docs/multi-agent-coordination-guide.md +553 -0
- package/docs/multi-repo-management-guide.md +1344 -0
- package/docs/quick-start-with-ai-tools.md +375 -0
- package/docs/quick-start.md +146 -0
- package/docs/release-checklist.md +121 -0
- package/docs/releases/README.md +13 -0
- package/docs/releases/v1.46.2-validation.md +45 -0
- package/docs/releases/v1.46.2.md +50 -0
- package/docs/scene-runtime-guide.md +347 -0
- package/docs/spec-collaboration-guide.md +369 -0
- package/docs/spec-locking-guide.md +225 -0
- package/docs/spec-numbering-guide.md +348 -0
- package/docs/spec-workflow.md +519 -0
- package/docs/steering-strategy-guide.md +196 -0
- package/docs/team-collaboration-guide.md +465 -0
- package/docs/testing-strategy.md +272 -0
- package/docs/tools/claude-guide.md +654 -0
- package/docs/tools/cursor-guide.md +706 -0
- package/docs/tools/generic-guide.md +446 -0
- package/docs/tools/kiro-guide.md +308 -0
- package/docs/tools/vscode-guide.md +445 -0
- package/docs/tools/windsurf-guide.md +391 -0
- package/docs/troubleshooting.md +1135 -0
- package/docs/upgrade-guide.md +639 -0
- package/docs/value-observability-guide.md +127 -0
- package/docs/zh/README.md +341 -0
- package/docs/zh/quick-start.md +764 -0
- package/docs/zh/release-checklist.md +121 -0
- package/docs/zh/releases/README.md +13 -0
- package/docs/zh/releases/v1.46.2-validation.md +45 -0
- package/docs/zh/releases/v1.46.2.md +50 -0
- package/docs/zh/spec-numbering-guide.md +348 -0
- package/docs/zh/tools/claude-guide.md +349 -0
- package/docs/zh/tools/cursor-guide.md +281 -0
- package/docs/zh/tools/generic-guide.md +499 -0
- package/docs/zh/tools/kiro-guide.md +342 -0
- package/docs/zh/tools/vscode-guide.md +449 -0
- package/docs/zh/tools/windsurf-guide.md +378 -0
- package/docs/zh/value-observability-guide.md +127 -0
- package/docs//344/272/244/344/273/230/346/270/205/345/215/225.md +75 -0
- package/lib/adoption/adoption-logger.js +487 -0
- package/lib/adoption/adoption-strategy.js +538 -0
- package/lib/adoption/backup-manager.js +420 -0
- package/lib/adoption/conflict-resolver.js +410 -0
- package/lib/adoption/detection-engine.js +275 -0
- package/lib/adoption/diff-viewer.js +226 -0
- package/lib/adoption/error-formatter.js +509 -0
- package/lib/adoption/file-classifier.js +385 -0
- package/lib/adoption/progress-reporter.js +534 -0
- package/lib/adoption/smart-orchestrator.js +470 -0
- package/lib/adoption/strategy-selector.js +218 -0
- package/lib/adoption/summary-generator.js +493 -0
- package/lib/adoption/template-sync.js +605 -0
- package/lib/auto/autonomous-engine.js +485 -0
- package/lib/auto/checkpoint-manager.js +300 -0
- package/lib/auto/close-loop-runner.js +2476 -0
- package/lib/auto/config-schema.js +176 -0
- package/lib/auto/decision-engine.js +344 -0
- package/lib/auto/error-recovery-manager.js +580 -0
- package/lib/auto/goal-decomposer.js +278 -0
- package/lib/auto/progress-tracker.js +502 -0
- package/lib/auto/safety-manager.js +186 -0
- package/lib/auto/semantic-decomposer.js +137 -0
- package/lib/auto/state-manager.js +126 -0
- package/lib/auto/task-queue-manager.js +340 -0
- package/lib/backup/backup-system.js +372 -0
- package/lib/backup/selective-backup.js +207 -0
- package/lib/collab/agent-registry.js +240 -0
- package/lib/collab/collab-manager.js +285 -0
- package/lib/collab/contract-manager.js +320 -0
- package/lib/collab/coordinator.js +370 -0
- package/lib/collab/dependency-manager.js +280 -0
- package/lib/collab/index.js +20 -0
- package/lib/collab/integration-manager.js +202 -0
- package/lib/collab/merge-coordinator.js +252 -0
- package/lib/collab/metadata-manager.js +233 -0
- package/lib/collab/multi-agent-config.js +120 -0
- package/lib/collab/spec-lifecycle-manager.js +304 -0
- package/lib/collab/sync-barrier.js +88 -0
- package/lib/collab/visualizer.js +208 -0
- package/lib/commands/adopt.js +749 -0
- package/lib/commands/auto.js +19559 -0
- package/lib/commands/collab.js +275 -0
- package/lib/commands/context.js +99 -0
- package/lib/commands/docs.js +808 -0
- package/lib/commands/doctor.js +273 -0
- package/lib/commands/env.js +420 -0
- package/lib/commands/knowledge.js +309 -0
- package/lib/commands/lock.js +235 -0
- package/lib/commands/ops.js +409 -0
- package/lib/commands/orchestrate.js +446 -0
- package/lib/commands/prompt.js +105 -0
- package/lib/commands/repo.js +118 -0
- package/lib/commands/rollback.js +219 -0
- package/lib/commands/scene.js +15549 -0
- package/lib/commands/spec-bootstrap.js +147 -0
- package/lib/commands/spec-gate.js +157 -0
- package/lib/commands/spec-pipeline.js +205 -0
- package/lib/commands/status.js +321 -0
- package/lib/commands/task.js +199 -0
- package/lib/commands/templates.js +654 -0
- package/lib/commands/upgrade.js +231 -0
- package/lib/commands/value.js +569 -0
- package/lib/commands/watch.js +684 -0
- package/lib/commands/workflows.js +240 -0
- package/lib/commands/workspace-multi.js +325 -0
- package/lib/commands/workspace.js +189 -0
- package/lib/context/context-exporter.js +378 -0
- package/lib/context/prompt-generator.js +482 -0
- package/lib/data/moqui-capability-lexicon.json +45 -0
- package/lib/environment/backup-system.js +189 -0
- package/lib/environment/environment-manager.js +379 -0
- package/lib/environment/environment-registry.js +168 -0
- package/lib/gitignore/gitignore-backup.js +229 -0
- package/lib/gitignore/gitignore-detector.js +239 -0
- package/lib/gitignore/gitignore-integration.js +267 -0
- package/lib/gitignore/gitignore-transformer.js +193 -0
- package/lib/gitignore/layered-rules-template.js +42 -0
- package/lib/governance/archive-tool.js +284 -0
- package/lib/governance/cleanup-tool.js +237 -0
- package/lib/governance/config-manager.js +186 -0
- package/lib/governance/diagnostic-engine.js +271 -0
- package/lib/governance/doc-reference-checker.js +200 -0
- package/lib/governance/execution-logger.js +243 -0
- package/lib/governance/file-scanner.js +285 -0
- package/lib/governance/hooks-manager.js +333 -0
- package/lib/governance/reporter.js +337 -0
- package/lib/governance/validation-engine.js +181 -0
- package/lib/i18n.js +79 -0
- package/lib/knowledge/entry-manager.js +208 -0
- package/lib/knowledge/index-manager.js +261 -0
- package/lib/knowledge/knowledge-manager.js +273 -0
- package/lib/knowledge/template-manager.js +191 -0
- package/lib/lock/index.js +21 -0
- package/lib/lock/lock-file.js +192 -0
- package/lib/lock/lock-manager.js +321 -0
- package/lib/lock/machine-identifier.js +135 -0
- package/lib/lock/steering-file-lock.js +207 -0
- package/lib/lock/task-lock-manager.js +345 -0
- package/lib/operations/audit-logger.js +293 -0
- package/lib/operations/feedback-manager.js +1147 -0
- package/lib/operations/index.js +23 -0
- package/lib/operations/models/index.js +170 -0
- package/lib/operations/operations-manager.js +151 -0
- package/lib/operations/operations-validator.js +280 -0
- package/lib/operations/permission-manager.js +354 -0
- package/lib/operations/template-loader.js +143 -0
- package/lib/orchestrator/agent-spawner.js +629 -0
- package/lib/orchestrator/bootstrap-prompt-builder.js +236 -0
- package/lib/orchestrator/index.js +19 -0
- package/lib/orchestrator/orchestration-engine.js +1270 -0
- package/lib/orchestrator/orchestrator-config.js +173 -0
- package/lib/orchestrator/status-monitor.js +591 -0
- package/lib/python-checker.js +209 -0
- package/lib/repo/config-manager.js +580 -0
- package/lib/repo/errors/config-error.js +13 -0
- package/lib/repo/errors/git-error.js +15 -0
- package/lib/repo/errors/repo-error.js +14 -0
- package/lib/repo/git-operations.js +181 -0
- package/lib/repo/handlers/.gitkeep +1 -0
- package/lib/repo/handlers/exec-handler.js +155 -0
- package/lib/repo/handlers/health-handler.js +169 -0
- package/lib/repo/handlers/init-handler.js +197 -0
- package/lib/repo/handlers/status-handler.js +176 -0
- package/lib/repo/output-formatter.js +184 -0
- package/lib/repo/path-resolver.js +178 -0
- package/lib/repo/repo-manager.js +514 -0
- package/lib/scene-runtime/audit-emitter.js +59 -0
- package/lib/scene-runtime/binding-plugin-loader.js +351 -0
- package/lib/scene-runtime/binding-registry.js +349 -0
- package/lib/scene-runtime/eval-bridge.js +44 -0
- package/lib/scene-runtime/index.js +19 -0
- package/lib/scene-runtime/moqui-adapter.js +620 -0
- package/lib/scene-runtime/moqui-client.js +606 -0
- package/lib/scene-runtime/moqui-extractor.js +2029 -0
- package/lib/scene-runtime/plan-compiler.js +208 -0
- package/lib/scene-runtime/policy-gate.js +58 -0
- package/lib/scene-runtime/runtime-executor.js +358 -0
- package/lib/scene-runtime/scene-loader.js +96 -0
- package/lib/scene-runtime/scene-ontology.js +959 -0
- package/lib/scene-runtime/scene-template-linter.js +852 -0
- package/lib/scene-runtime/templates/scene-template-erp-query-v0.1.yaml +28 -0
- package/lib/scene-runtime/templates/scene-template-hybrid-shadow-v0.1.yaml +34 -0
- package/lib/spec/bootstrap/context-collector.js +48 -0
- package/lib/spec/bootstrap/draft-generator.js +158 -0
- package/lib/spec/bootstrap/questionnaire-engine.js +70 -0
- package/lib/spec/bootstrap/trace-emitter.js +59 -0
- package/lib/spec/multi-spec-orchestrate.js +93 -0
- package/lib/spec/pipeline/constants.js +6 -0
- package/lib/spec/pipeline/stage-adapters.js +118 -0
- package/lib/spec/pipeline/stage-runner.js +146 -0
- package/lib/spec/pipeline/state-store.js +119 -0
- package/lib/spec-gate/engine/gate-engine.js +165 -0
- package/lib/spec-gate/policy/default-policy.js +22 -0
- package/lib/spec-gate/policy/policy-loader.js +103 -0
- package/lib/spec-gate/result-emitter.js +81 -0
- package/lib/spec-gate/rules/default-rules.js +156 -0
- package/lib/spec-gate/rules/rule-registry.js +51 -0
- package/lib/steering/adoption-config.js +164 -0
- package/lib/steering/compliance-auto-fixer.js +204 -0
- package/lib/steering/compliance-cache.js +99 -0
- package/lib/steering/compliance-error-reporter.js +70 -0
- package/lib/steering/context-sync-manager.js +273 -0
- package/lib/steering/index.js +92 -0
- package/lib/steering/spec-steering.js +230 -0
- package/lib/steering/steering-compliance-checker.js +73 -0
- package/lib/steering/steering-loader.js +144 -0
- package/lib/steering/steering-manager.js +289 -0
- package/lib/task/index.js +12 -0
- package/lib/task/task-claimer.js +489 -0
- package/lib/task/task-status-store.js +418 -0
- package/lib/templates/cache-manager.js +440 -0
- package/lib/templates/content-generalizer.js +247 -0
- package/lib/templates/frontmatter-generator.js +128 -0
- package/lib/templates/git-handler.js +471 -0
- package/lib/templates/metadata-collector.js +328 -0
- package/lib/templates/path-utils.js +144 -0
- package/lib/templates/registry-parser.js +505 -0
- package/lib/templates/spec-reader.js +216 -0
- package/lib/templates/template-applicator.js +249 -0
- package/lib/templates/template-creator.js +256 -0
- package/lib/templates/template-error.js +143 -0
- package/lib/templates/template-exporter.js +502 -0
- package/lib/templates/template-manager.js +782 -0
- package/lib/templates/template-validator.js +361 -0
- package/lib/upgrade/migration-engine.js +382 -0
- package/lib/upgrade/migrations/.gitkeep +52 -0
- package/lib/upgrade/migrations/1.0.0-to-1.1.0.js +78 -0
- package/lib/utils/file-diff.js +177 -0
- package/lib/utils/fs-utils.js +274 -0
- package/lib/utils/tool-detector.js +383 -0
- package/lib/utils/validation.js +324 -0
- package/lib/value/gate-summary-emitter.js +99 -0
- package/lib/value/metric-contract-loader.js +210 -0
- package/lib/value/risk-evaluator.js +117 -0
- package/lib/value/weekly-snapshot-builder.js +61 -0
- package/lib/version/version-checker.js +156 -0
- package/lib/version/version-manager.js +327 -0
- package/lib/watch/action-executor.js +458 -0
- package/lib/watch/event-debouncer.js +323 -0
- package/lib/watch/execution-logger.js +550 -0
- package/lib/watch/file-watcher.js +499 -0
- package/lib/watch/presets.js +266 -0
- package/lib/watch/watch-manager.js +533 -0
- package/lib/workspace/multi/global-config.js +150 -0
- package/lib/workspace/multi/index.js +22 -0
- package/lib/workspace/multi/path-utils.js +173 -0
- package/lib/workspace/multi/workspace-context-resolver.js +244 -0
- package/lib/workspace/multi/workspace-registry.js +196 -0
- package/lib/workspace/multi/workspace-state-manager.js +537 -0
- package/lib/workspace/multi/workspace.js +90 -0
- package/lib/workspace/workspace-manager.js +370 -0
- package/lib/workspace/workspace-sync.js +356 -0
- package/locales/en.json +114 -0
- package/locales/zh.json +114 -0
- package/package.json +102 -0
- package/template/.kiro/README.md +247 -0
- package/template/.kiro/hooks/check-spec-on-create.kiro.hook +17 -0
- package/template/.kiro/hooks/run-tests-on-save.kiro.hook +13 -0
- package/template/.kiro/hooks/sync-tasks-on-edit.kiro.hook +16 -0
- package/template/.kiro/specs/SPEC_WORKFLOW_GUIDE.md +134 -0
- package/template/.kiro/steering/CORE_PRINCIPLES.md +133 -0
- package/template/.kiro/steering/CURRENT_CONTEXT.md +30 -0
- package/template/.kiro/steering/ENVIRONMENT.md +35 -0
- package/template/.kiro/steering/RULES_GUIDE.md +46 -0
- package/template/.kiro/templates/operations/default/change-impact.md +112 -0
- package/template/.kiro/templates/operations/default/deployment.md +91 -0
- package/template/.kiro/templates/operations/default/feedback-response.md +269 -0
- package/template/.kiro/templates/operations/default/migration-plan.md +172 -0
- package/template/.kiro/templates/operations/default/monitoring.md +135 -0
- package/template/.kiro/templates/operations/default/operations.md +135 -0
- package/template/.kiro/templates/operations/default/rollback.md +143 -0
- package/template/.kiro/templates/operations/default/tools.yaml +364 -0
- package/template/.kiro/templates/operations/default/troubleshooting.md +123 -0
- package/template/.kiro/tools/backup_manager.py +295 -0
- package/template/.kiro/tools/configuration_manager.py +218 -0
- package/template/.kiro/tools/document_evaluator.py +550 -0
- package/template/.kiro/tools/enhancement_logger.py +168 -0
- package/template/.kiro/tools/error_handler.py +335 -0
- package/template/.kiro/tools/improvement_identifier.py +444 -0
- package/template/.kiro/tools/modification_applicator.py +737 -0
- package/template/.kiro/tools/quality_gate_enforcer.py +207 -0
- package/template/.kiro/tools/quality_scorer.py +305 -0
- package/template/.kiro/tools/report_generator.py +154 -0
- package/template/.kiro/tools/ultrawork_enhancer.py +676 -0
- package/template/.kiro/tools/ultrawork_enhancer_refactored.py +0 -0
- package/template/.kiro/tools/ultrawork_enhancer_v2.py +463 -0
- package/template/.kiro/tools/ultrawork_enhancer_v3.py +606 -0
- package/template/.kiro/tools/workflow_quality_gate.py +100 -0
- package/template/README.md +111 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bootstrap Prompt Builder
|
|
3
|
+
*
|
|
4
|
+
* Builds the initial prompt injected into each Codex CLI sub-agent so that it
|
|
5
|
+
* has full context about the target Spec, kse conventions, steering rules, and
|
|
6
|
+
* clear task-execution instructions.
|
|
7
|
+
*
|
|
8
|
+
* Requirements: 2.1 (Spec path), 2.2 (kse / steering context),
|
|
9
|
+
* 2.3 (task execution instructions), 2.4 (configurable template)
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const path = require('path');
|
|
13
|
+
const fs = require('fs-extra');
|
|
14
|
+
|
|
15
|
+
// Steering files loaded into every prompt (order matters for readability)
|
|
16
|
+
const STEERING_FILES = [
|
|
17
|
+
'CORE_PRINCIPLES.md',
|
|
18
|
+
'ENVIRONMENT.md',
|
|
19
|
+
'CURRENT_CONTEXT.md',
|
|
20
|
+
'RULES_GUIDE.md',
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
class BootstrapPromptBuilder {
|
|
24
|
+
/**
|
|
25
|
+
* @param {string} workspaceRoot - Absolute path to the project root
|
|
26
|
+
* @param {import('./orchestrator-config').OrchestratorConfig} orchestratorConfig
|
|
27
|
+
*/
|
|
28
|
+
constructor(workspaceRoot, orchestratorConfig) {
|
|
29
|
+
this._workspaceRoot = workspaceRoot;
|
|
30
|
+
this._orchestratorConfig = orchestratorConfig;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Build the bootstrap prompt for a given Spec.
|
|
35
|
+
*
|
|
36
|
+
* When a custom template is configured (via orchestrator.json bootstrapTemplate),
|
|
37
|
+
* the template is loaded and placeholders are replaced:
|
|
38
|
+
* {{specName}} – the Spec name
|
|
39
|
+
* {{specPath}} – relative path to the Spec directory
|
|
40
|
+
* {{steeringContext}} – concatenated steering file contents
|
|
41
|
+
* {{taskInstructions}} – task execution instructions block
|
|
42
|
+
*
|
|
43
|
+
* Otherwise a sensible built-in default template is used.
|
|
44
|
+
*
|
|
45
|
+
* @param {string} specName - Name of the Spec (e.g. "96-00-agent-orchestrator")
|
|
46
|
+
* @returns {Promise<string>} The assembled prompt
|
|
47
|
+
*/
|
|
48
|
+
async buildPrompt(specName) {
|
|
49
|
+
const specPath = `.kiro/specs/${specName}/`;
|
|
50
|
+
const steeringContext = await this._loadSteeringContext();
|
|
51
|
+
const taskInstructions = this._buildTaskInstructions(specName, specPath);
|
|
52
|
+
const readmeSummary = await this._loadReadmeSummary();
|
|
53
|
+
const specContext = await this._loadSpecContext(specPath);
|
|
54
|
+
|
|
55
|
+
const customTemplate = await this._orchestratorConfig.getBootstrapTemplate();
|
|
56
|
+
|
|
57
|
+
if (customTemplate) {
|
|
58
|
+
return this._renderTemplate(customTemplate, {
|
|
59
|
+
specName,
|
|
60
|
+
specPath,
|
|
61
|
+
steeringContext,
|
|
62
|
+
taskInstructions,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return this._buildDefaultPrompt({
|
|
67
|
+
specName,
|
|
68
|
+
specPath,
|
|
69
|
+
readmeSummary,
|
|
70
|
+
specContext,
|
|
71
|
+
steeringContext,
|
|
72
|
+
taskInstructions,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// Private helpers
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Load and concatenate all steering files from `.kiro/steering/`.
|
|
82
|
+
* Missing files are silently skipped.
|
|
83
|
+
* @returns {Promise<string>}
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
async _loadSteeringContext() {
|
|
87
|
+
const steeringDir = path.join(this._workspaceRoot, '.kiro', 'steering');
|
|
88
|
+
const sections = [];
|
|
89
|
+
|
|
90
|
+
for (const filename of STEERING_FILES) {
|
|
91
|
+
const filePath = path.join(steeringDir, filename);
|
|
92
|
+
try {
|
|
93
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
94
|
+
sections.push(`### ${filename}\n\n${content.trim()}`);
|
|
95
|
+
} catch (_err) {
|
|
96
|
+
// Steering file missing — skip silently
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return sections.join('\n\n---\n\n');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Load a short summary from `.kiro/README.md`.
|
|
105
|
+
* Returns the first ~40 lines (up to the first `---` separator after the
|
|
106
|
+
* opening block) to keep the prompt concise.
|
|
107
|
+
* @returns {Promise<string>}
|
|
108
|
+
* @private
|
|
109
|
+
*/
|
|
110
|
+
async _loadReadmeSummary() {
|
|
111
|
+
const readmePath = path.join(this._workspaceRoot, '.kiro', 'README.md');
|
|
112
|
+
try {
|
|
113
|
+
const content = await fs.readFile(readmePath, 'utf8');
|
|
114
|
+
// Take the first meaningful section (up to the capabilities list)
|
|
115
|
+
const lines = content.split('\n');
|
|
116
|
+
const summaryLines = [];
|
|
117
|
+
let separatorCount = 0;
|
|
118
|
+
for (const line of lines) {
|
|
119
|
+
if (line.trim() === '---') {
|
|
120
|
+
separatorCount++;
|
|
121
|
+
if (separatorCount >= 2) break; // stop after second separator
|
|
122
|
+
}
|
|
123
|
+
summaryLines.push(line);
|
|
124
|
+
}
|
|
125
|
+
return summaryLines.join('\n').trim();
|
|
126
|
+
} catch (_err) {
|
|
127
|
+
return 'SCE (Scene Capability Engine) — Spec-driven development project.';
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Load the Spec's own documents (requirements.md, design.md, tasks.md).
|
|
133
|
+
* Missing files are noted but do not cause failure.
|
|
134
|
+
* @param {string} specPath - Relative Spec directory path
|
|
135
|
+
* @returns {Promise<string>}
|
|
136
|
+
* @private
|
|
137
|
+
*/
|
|
138
|
+
async _loadSpecContext(specPath) {
|
|
139
|
+
const specDir = path.join(this._workspaceRoot, specPath);
|
|
140
|
+
const docs = ['requirements.md', 'design.md', 'tasks.md'];
|
|
141
|
+
const sections = [];
|
|
142
|
+
|
|
143
|
+
for (const doc of docs) {
|
|
144
|
+
const filePath = path.join(specDir, doc);
|
|
145
|
+
try {
|
|
146
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
147
|
+
sections.push(`#### ${doc}\n\n${content.trim()}`);
|
|
148
|
+
} catch (_err) {
|
|
149
|
+
sections.push(`#### ${doc}\n\n(not found)`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return sections.join('\n\n');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Build the task-execution instruction block.
|
|
158
|
+
* @param {string} specName
|
|
159
|
+
* @param {string} specPath
|
|
160
|
+
* @returns {string}
|
|
161
|
+
* @private
|
|
162
|
+
*/
|
|
163
|
+
_buildTaskInstructions(specName, specPath) {
|
|
164
|
+
return [
|
|
165
|
+
`You are a sub-agent responsible for executing the Spec "${specName}".`,
|
|
166
|
+
'',
|
|
167
|
+
'Instructions:',
|
|
168
|
+
`1. Read the task list at \`${specPath}tasks.md\`.`,
|
|
169
|
+
'2. Execute each task in order, starting from the first uncompleted task.',
|
|
170
|
+
'3. For each task, read the corresponding requirements and design sections.',
|
|
171
|
+
'4. Write all required code, tests, and documentation.',
|
|
172
|
+
'5. Mark each task as completed (change `[ ]` or `[-]` to `[x]`) after finishing.',
|
|
173
|
+
'6. Run relevant tests to verify your implementation before moving on.',
|
|
174
|
+
'7. If a task fails after multiple attempts, document the issue and continue.',
|
|
175
|
+
'',
|
|
176
|
+
'Quality requirements:',
|
|
177
|
+
'- All code must compile and pass linting.',
|
|
178
|
+
'- All new functionality must have tests.',
|
|
179
|
+
'- Follow existing code patterns and conventions.',
|
|
180
|
+
'- Do not break existing tests.',
|
|
181
|
+
].join('\n');
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Assemble the default (built-in) prompt from its constituent parts.
|
|
186
|
+
* @param {object} parts
|
|
187
|
+
* @returns {string}
|
|
188
|
+
* @private
|
|
189
|
+
*/
|
|
190
|
+
_buildDefaultPrompt({ specName, specPath, readmeSummary, specContext, steeringContext, taskInstructions }) {
|
|
191
|
+
const sections = [
|
|
192
|
+
'# Bootstrap Prompt',
|
|
193
|
+
'',
|
|
194
|
+
'## Project Overview',
|
|
195
|
+
'',
|
|
196
|
+
readmeSummary,
|
|
197
|
+
'',
|
|
198
|
+
'## Target Spec',
|
|
199
|
+
'',
|
|
200
|
+
`**Spec**: ${specName}`,
|
|
201
|
+
`**Path**: \`${specPath}\``,
|
|
202
|
+
'',
|
|
203
|
+
'## Spec Documents',
|
|
204
|
+
'',
|
|
205
|
+
specContext,
|
|
206
|
+
'',
|
|
207
|
+
'## Steering Context (Project Rules)',
|
|
208
|
+
'',
|
|
209
|
+
steeringContext,
|
|
210
|
+
'',
|
|
211
|
+
'## Task Execution Instructions',
|
|
212
|
+
'',
|
|
213
|
+
taskInstructions,
|
|
214
|
+
];
|
|
215
|
+
|
|
216
|
+
return sections.join('\n');
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Render a custom template by replacing `{{placeholder}}` tokens.
|
|
221
|
+
* @param {string} template
|
|
222
|
+
* @param {object} vars - { specName, specPath, steeringContext, taskInstructions }
|
|
223
|
+
* @returns {string}
|
|
224
|
+
* @private
|
|
225
|
+
*/
|
|
226
|
+
_renderTemplate(template, vars) {
|
|
227
|
+
let result = template;
|
|
228
|
+
for (const [key, value] of Object.entries(vars)) {
|
|
229
|
+
// Replace all occurrences of {{key}}
|
|
230
|
+
result = result.split(`{{${key}}}`).join(value);
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
module.exports = { BootstrapPromptBuilder };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrator Module — Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all orchestrator components for convenient consumption.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const { OrchestratorConfig } = require('./orchestrator-config');
|
|
8
|
+
const { BootstrapPromptBuilder } = require('./bootstrap-prompt-builder');
|
|
9
|
+
const { AgentSpawner } = require('./agent-spawner');
|
|
10
|
+
const { StatusMonitor } = require('./status-monitor');
|
|
11
|
+
const { OrchestrationEngine } = require('./orchestration-engine');
|
|
12
|
+
|
|
13
|
+
module.exports = {
|
|
14
|
+
OrchestratorConfig,
|
|
15
|
+
BootstrapPromptBuilder,
|
|
16
|
+
AgentSpawner,
|
|
17
|
+
StatusMonitor,
|
|
18
|
+
OrchestrationEngine,
|
|
19
|
+
};
|