@hongmaple0820/scale-engine 0.12.3 → 0.14.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 (157) hide show
  1. package/dist/adapters/AiderAdapter.js +1 -1
  2. package/dist/adapters/AiderAdapter.js.map +1 -1
  3. package/dist/adapters/ClaudeCodeAdapter.d.ts +1 -0
  4. package/dist/adapters/ClaudeCodeAdapter.js +5 -3
  5. package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
  6. package/dist/adapters/CodexAdapter.js +1 -1
  7. package/dist/adapters/CodexAdapter.js.map +1 -1
  8. package/dist/adapters/CursorAdapter.js +1 -1
  9. package/dist/adapters/CursorAdapter.js.map +1 -1
  10. package/dist/adapters/DeepSeekTuiAdapter.js +5 -3
  11. package/dist/adapters/DeepSeekTuiAdapter.js.map +1 -1
  12. package/dist/adapters/DoubaoAdapter.js +1 -1
  13. package/dist/adapters/DoubaoAdapter.js.map +1 -1
  14. package/dist/adapters/GeminiAdapter.js +1 -1
  15. package/dist/adapters/GeminiAdapter.js.map +1 -1
  16. package/dist/adapters/HermesAdapter.js +1 -1
  17. package/dist/adapters/HermesAdapter.js.map +1 -1
  18. package/dist/adapters/KimiAdapter.js +1 -1
  19. package/dist/adapters/KimiAdapter.js.map +1 -1
  20. package/dist/adapters/KiroAdapter.d.ts +14 -0
  21. package/dist/adapters/KiroAdapter.js +180 -0
  22. package/dist/adapters/KiroAdapter.js.map +1 -0
  23. package/dist/adapters/OpenClawAdapter.js +1 -1
  24. package/dist/adapters/OpenClawAdapter.js.map +1 -1
  25. package/dist/adapters/OpenCodeAdapter.js +1 -1
  26. package/dist/adapters/OpenCodeAdapter.js.map +1 -1
  27. package/dist/adapters/QCoderAdapter.js +1 -1
  28. package/dist/adapters/QCoderAdapter.js.map +1 -1
  29. package/dist/adapters/TraeAdapter.js +1 -1
  30. package/dist/adapters/TraeAdapter.js.map +1 -1
  31. package/dist/adapters/VSCAdapter.js +1 -1
  32. package/dist/adapters/VSCAdapter.js.map +1 -1
  33. package/dist/adapters/WindsurfAdapter.js +1 -1
  34. package/dist/adapters/WindsurfAdapter.js.map +1 -1
  35. package/dist/adapters/WorkBuddyAdapter.js +1 -1
  36. package/dist/adapters/WorkBuddyAdapter.js.map +1 -1
  37. package/dist/adapters/index.d.ts +1 -0
  38. package/dist/adapters/index.js +3 -0
  39. package/dist/adapters/index.js.map +1 -1
  40. package/dist/api/cli.js +690 -9
  41. package/dist/api/cli.js.map +1 -1
  42. package/dist/api/doctor.d.ts +13 -0
  43. package/dist/api/doctor.js +261 -5
  44. package/dist/api/doctor.js.map +1 -1
  45. package/dist/api/quickstart.d.ts +20 -1
  46. package/dist/api/quickstart.js +104 -3
  47. package/dist/api/quickstart.js.map +1 -1
  48. package/dist/artifact/types.d.ts +16 -2
  49. package/dist/artifact/types.js.map +1 -1
  50. package/dist/cli/phaseCommands.d.ts +66 -0
  51. package/dist/cli/phaseCommands.js +695 -51
  52. package/dist/cli/phaseCommands.js.map +1 -1
  53. package/dist/guardrails/detectors.d.ts +9 -0
  54. package/dist/guardrails/detectors.js +102 -0
  55. package/dist/guardrails/detectors.js.map +1 -1
  56. package/dist/hooks/HookGeneratorEnhanced.js +29 -0
  57. package/dist/hooks/HookGeneratorEnhanced.js.map +1 -1
  58. package/dist/hooks/WorkflowHooksManager.js +20 -1
  59. package/dist/hooks/WorkflowHooksManager.js.map +1 -1
  60. package/dist/index.d.ts +6 -0
  61. package/dist/index.js +4 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/output/BrandThemeLoader.d.ts +54 -0
  64. package/dist/output/BrandThemeLoader.js +340 -0
  65. package/dist/output/BrandThemeLoader.js.map +1 -0
  66. package/dist/output/HTMLDocumentRenderer.d.ts +83 -0
  67. package/dist/output/HTMLDocumentRenderer.js +717 -0
  68. package/dist/output/HTMLDocumentRenderer.js.map +1 -0
  69. package/dist/output/UIPrototypeRenderer.d.ts +61 -0
  70. package/dist/output/UIPrototypeRenderer.js +500 -0
  71. package/dist/output/UIPrototypeRenderer.js.map +1 -0
  72. package/dist/output/index.d.ts +6 -0
  73. package/dist/output/index.js +6 -0
  74. package/dist/output/index.js.map +1 -0
  75. package/dist/skills/ExternalSkills.js +2 -0
  76. package/dist/skills/ExternalSkills.js.map +1 -1
  77. package/dist/skills/SkillCatalog.d.ts +13 -0
  78. package/dist/skills/SkillCatalog.js +184 -0
  79. package/dist/skills/SkillCatalog.js.map +1 -0
  80. package/dist/skills/SkillDiscovery.js +2 -1
  81. package/dist/skills/SkillDiscovery.js.map +1 -1
  82. package/dist/skills/SkillDoctor.d.ts +37 -0
  83. package/dist/skills/SkillDoctor.js +90 -0
  84. package/dist/skills/SkillDoctor.js.map +1 -0
  85. package/dist/skills/index.d.ts +2 -0
  86. package/dist/skills/index.js +2 -0
  87. package/dist/skills/index.js.map +1 -1
  88. package/dist/skills/routing/SkillGate.d.ts +12 -0
  89. package/dist/skills/routing/SkillGate.js +93 -0
  90. package/dist/skills/routing/SkillGate.js.map +1 -0
  91. package/dist/skills/routing/SkillPlanner.d.ts +8 -0
  92. package/dist/skills/routing/SkillPlanner.js +91 -0
  93. package/dist/skills/routing/SkillPlanner.js.map +1 -0
  94. package/dist/skills/routing/SkillPolicy.d.ts +6 -0
  95. package/dist/skills/routing/SkillPolicy.js +173 -0
  96. package/dist/skills/routing/SkillPolicy.js.map +1 -0
  97. package/dist/skills/routing/SkillRoutingTypes.d.ts +72 -0
  98. package/dist/skills/routing/SkillRoutingTypes.js +2 -0
  99. package/dist/skills/routing/SkillRoutingTypes.js.map +1 -0
  100. package/dist/skills/routing/TaskIntentClassifier.d.ts +6 -0
  101. package/dist/skills/routing/TaskIntentClassifier.js +79 -0
  102. package/dist/skills/routing/TaskIntentClassifier.js.map +1 -0
  103. package/dist/skills/routing/index.d.ts +5 -0
  104. package/dist/skills/routing/index.js +6 -0
  105. package/dist/skills/routing/index.js.map +1 -0
  106. package/dist/workflow/GovernanceLock.d.ts +35 -0
  107. package/dist/workflow/GovernanceLock.js +58 -0
  108. package/dist/workflow/GovernanceLock.js.map +1 -0
  109. package/dist/workflow/GovernanceTemplatePacks.d.ts +24 -0
  110. package/dist/workflow/GovernanceTemplatePacks.js +83 -0
  111. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -0
  112. package/dist/workflow/GovernanceTemplates.d.ts +17 -0
  113. package/dist/workflow/GovernanceTemplates.js +686 -0
  114. package/dist/workflow/GovernanceTemplates.js.map +1 -0
  115. package/dist/workflow/PhaseMarkerTracker.d.ts +63 -0
  116. package/dist/workflow/PhaseMarkerTracker.js +291 -0
  117. package/dist/workflow/PhaseMarkerTracker.js.map +1 -0
  118. package/dist/workflow/SessionStateTracker.d.ts +74 -0
  119. package/dist/workflow/SessionStateTracker.js +270 -0
  120. package/dist/workflow/SessionStateTracker.js.map +1 -0
  121. package/dist/workflow/TaskArtifactScaffolder.d.ts +47 -0
  122. package/dist/workflow/TaskArtifactScaffolder.js +237 -0
  123. package/dist/workflow/TaskArtifactScaffolder.js.map +1 -0
  124. package/dist/workflow/TaskMetricsStore.d.ts +49 -0
  125. package/dist/workflow/TaskMetricsStore.js +149 -0
  126. package/dist/workflow/TaskMetricsStore.js.map +1 -0
  127. package/dist/workflow/VerificationCommands.d.ts +2 -0
  128. package/dist/workflow/VerificationCommands.js +8 -12
  129. package/dist/workflow/VerificationCommands.js.map +1 -1
  130. package/dist/workflow/VerificationProfile.d.ts +56 -0
  131. package/dist/workflow/VerificationProfile.js +170 -0
  132. package/dist/workflow/VerificationProfile.js.map +1 -0
  133. package/dist/workflow/WorkflowArtifactWriter.d.ts +113 -0
  134. package/dist/workflow/WorkflowArtifactWriter.js +241 -0
  135. package/dist/workflow/WorkflowArtifactWriter.js.map +1 -0
  136. package/dist/workflow/WorkflowEngine.d.ts +26 -5
  137. package/dist/workflow/WorkflowEngine.js +38 -9
  138. package/dist/workflow/WorkflowEngine.js.map +1 -1
  139. package/dist/workflow/WorkspaceLifecycle.d.ts +51 -0
  140. package/dist/workflow/WorkspaceLifecycle.js +259 -0
  141. package/dist/workflow/WorkspaceLifecycle.js.map +1 -0
  142. package/dist/workflow/autonomous/AutonomousDevLoop.d.ts +88 -0
  143. package/dist/workflow/autonomous/AutonomousDevLoop.js +381 -0
  144. package/dist/workflow/autonomous/AutonomousDevLoop.js.map +1 -0
  145. package/dist/workflow/autonomous/WorklogManager.d.ts +50 -0
  146. package/dist/workflow/autonomous/WorklogManager.js +264 -0
  147. package/dist/workflow/autonomous/WorklogManager.js.map +1 -0
  148. package/dist/workflow/autonomous/index.d.ts +2 -0
  149. package/dist/workflow/autonomous/index.js +4 -0
  150. package/dist/workflow/autonomous/index.js.map +1 -0
  151. package/dist/workflow/gates/GateSystem.d.ts +12 -3
  152. package/dist/workflow/gates/GateSystem.js +185 -41
  153. package/dist/workflow/gates/GateSystem.js.map +1 -1
  154. package/dist/workflow/index.d.ts +10 -0
  155. package/dist/workflow/index.js +10 -0
  156. package/dist/workflow/index.js.map +1 -1
  157. package/package.json +3 -3
@@ -0,0 +1,241 @@
1
+ // SCALE Engine — Workflow Artifact Writer
2
+ // 将工作流各阶段结果写入标准化 JSON 文件,供 Gate 系统验证
3
+ // 设计参考:工作流优化方案 — "内容 + 执行 + 检查" 三者闭环
4
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync, unlinkSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { logger } from '../core/logger.js';
7
+ // ============================================================================
8
+ // Artifact Writer
9
+ // ============================================================================
10
+ export class WorkflowArtifactWriter {
11
+ constructor(scaleDir = '.scale') {
12
+ this.stateDir = join(scaleDir, 'state');
13
+ }
14
+ // ─────────────────────────────────────────────────────────────
15
+ // Ensure directory
16
+ // ─────────────────────────────────────────────────────────────
17
+ ensureDir() {
18
+ if (!existsSync(this.stateDir)) {
19
+ mkdirSync(this.stateDir, { recursive: true });
20
+ }
21
+ }
22
+ // ─────────────────────────────────────────────────────────────
23
+ // Explore Artifact
24
+ // ─────────────────────────────────────────────────────────────
25
+ /** Write explore result to .scale/state/explore.json */
26
+ writeExploreResult(result) {
27
+ this.ensureDir();
28
+ const filePath = join(this.stateDir, 'explore.json');
29
+ writeFileSync(filePath, JSON.stringify(result, null, 2), 'utf-8');
30
+ this.updateCurrentState({
31
+ phase: 'explore',
32
+ exploredFiles: result.files,
33
+ fileCount: result.fileCount,
34
+ mainContradiction: result.mainContradiction,
35
+ });
36
+ logger.info({ files: result.fileCount, contradiction: result.mainContradiction }, 'Explore artifact written');
37
+ }
38
+ /** Read explore artifact from .scale/state/explore.json */
39
+ readExploreResult() {
40
+ return this.readJson(join(this.stateDir, 'explore.json'));
41
+ }
42
+ /** Check if explore artifact exists and is valid */
43
+ hasValidExploreResult(minFiles = 3) {
44
+ const artifact = this.readExploreResult();
45
+ if (!artifact)
46
+ return false;
47
+ return artifact.fileCount >= minFiles && artifact.mainContradiction.length > 0;
48
+ }
49
+ // ─────────────────────────────────────────────────────────────
50
+ // Plan Artifact
51
+ // ─────────────────────────────────────────────────────────────
52
+ /** Write plan result to .scale/state/plan-{planId}.json */
53
+ writePlanResult(result) {
54
+ this.ensureDir();
55
+ const filePath = join(this.stateDir, `plan-${result.planId}.json`);
56
+ writeFileSync(filePath, JSON.stringify(result, null, 2), 'utf-8');
57
+ this.updateCurrentState({
58
+ phase: 'plan',
59
+ lastSpecId: result.specId || undefined,
60
+ lastPlanId: result.planId,
61
+ });
62
+ logger.info({ planId: result.planId, verdict: result.verdict }, 'Plan artifact written');
63
+ }
64
+ /** Read plan artifact by ID */
65
+ readPlanResult(planId) {
66
+ return this.readJson(join(this.stateDir, `plan-${planId}.json`));
67
+ }
68
+ /** Read the most recent plan artifact */
69
+ readLatestPlanResult() {
70
+ const planFiles = this.listFiles('plan-');
71
+ if (planFiles.length === 0)
72
+ return null;
73
+ // Sort by timestamp in filename, take latest
74
+ const sorted = planFiles.sort().reverse();
75
+ return this.readJson(join(this.stateDir, sorted[0]));
76
+ }
77
+ /** Check if a valid plan artifact exists */
78
+ hasValidPlanResult() {
79
+ const artifact = this.readLatestPlanResult();
80
+ if (!artifact)
81
+ return false;
82
+ return artifact.hasBoundaryAnalysis && artifact.hasRollbackStrategy;
83
+ }
84
+ // ─────────────────────────────────────────────────────────────
85
+ // TDD Evidence
86
+ // ─────────────────────────────────────────────────────────────
87
+ /** Write TDD evidence to .scale/state/tdd-{taskId}.json */
88
+ writeTDDEvidence(evidence) {
89
+ this.ensureDir();
90
+ const filePath = join(this.stateDir, `tdd-${evidence.taskId}.json`);
91
+ writeFileSync(filePath, JSON.stringify(evidence, null, 2), 'utf-8');
92
+ this.updateCurrentState({
93
+ phase: 'verify',
94
+ lastTaskId: evidence.taskId,
95
+ });
96
+ logger.info({ taskId: evidence.taskId }, 'TDD evidence written');
97
+ }
98
+ /** Read TDD evidence by task ID */
99
+ readTDDEvidence(taskId) {
100
+ return this.readJson(join(this.stateDir, `tdd-${taskId}.json`));
101
+ }
102
+ /** Read the most recent TDD evidence */
103
+ readLatestTDDEvidence() {
104
+ const tddFiles = this.listFiles('tdd-');
105
+ if (tddFiles.length === 0)
106
+ return null;
107
+ const sorted = tddFiles.sort().reverse();
108
+ return this.readJson(join(this.stateDir, sorted[0]));
109
+ }
110
+ /** Check if valid TDD evidence exists for a task */
111
+ hasValidTDDEvidence(taskId) {
112
+ const artifact = taskId
113
+ ? this.readTDDEvidence(taskId)
114
+ : this.readLatestTDDEvidence();
115
+ if (!artifact)
116
+ return false;
117
+ return artifact.red && artifact.green && artifact.refactor && artifact.testFirst;
118
+ }
119
+ // ─────────────────────────────────────────────────────────────
120
+ // Checkpoint
121
+ // ─────────────────────────────────────────────────────────────
122
+ /** Write checkpoint to .scale/state/checkpoint.json */
123
+ writeCheckpoint(data) {
124
+ this.ensureDir();
125
+ const filePath = join(this.stateDir, 'checkpoint.json');
126
+ writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
127
+ if (this.isWorkflowPhase(data.phase)) {
128
+ this.updateCurrentState({ phase: data.phase });
129
+ }
130
+ logger.info({ phase: data.phase }, 'Checkpoint written');
131
+ }
132
+ /** Read checkpoint */
133
+ readCheckpoint() {
134
+ return this.readJson(join(this.stateDir, 'checkpoint.json'));
135
+ }
136
+ // ─────────────────────────────────────────────────────────────
137
+ // Generic Helpers
138
+ // ─────────────────────────────────────────────────────────────
139
+ /** Clear all artifacts (for testing or reset) */
140
+ clearAll() {
141
+ if (!existsSync(this.stateDir))
142
+ return;
143
+ const files = readdirSync(this.stateDir);
144
+ for (const file of files) {
145
+ if (file.endsWith('.json')) {
146
+ unlinkSync(join(this.stateDir, file));
147
+ }
148
+ }
149
+ logger.info('All workflow artifacts cleared');
150
+ }
151
+ /** Get state directory path */
152
+ getStateDir() { return this.stateDir; }
153
+ /** Write authoritative workflow state to .scale/state/current.json */
154
+ writeCurrentState(state) {
155
+ this.ensureDir();
156
+ const normalized = this.normalizeState(state);
157
+ writeFileSync(join(this.stateDir, 'current.json'), JSON.stringify(normalized, null, 2), 'utf-8');
158
+ }
159
+ /** Read authoritative workflow state from .scale/state/current.json */
160
+ readCurrentState() {
161
+ return this.readJson(join(this.stateDir, 'current.json'));
162
+ }
163
+ /** Merge a patch into .scale/state/current.json. */
164
+ updateCurrentState(patch) {
165
+ const current = this.readCurrentState();
166
+ const next = this.normalizeState({
167
+ ...(current ?? this.createDefaultState()),
168
+ ...patch,
169
+ updatedAt: patch.updatedAt ?? new Date().toISOString(),
170
+ });
171
+ this.writeCurrentState(next);
172
+ return next;
173
+ }
174
+ // ─────────────────────────────────────────────────────────────
175
+ // Private Helpers
176
+ // ─────────────────────────────────────────────────────────────
177
+ readJson(filePath) {
178
+ if (!existsSync(filePath))
179
+ return null;
180
+ try {
181
+ const content = readFileSync(filePath, 'utf-8');
182
+ return JSON.parse(content);
183
+ }
184
+ catch (e) {
185
+ logger.warn({ path: filePath, error: e.message }, 'Failed to read artifact');
186
+ return null;
187
+ }
188
+ }
189
+ listFiles(prefix) {
190
+ if (!existsSync(this.stateDir))
191
+ return [];
192
+ return readdirSync(this.stateDir)
193
+ .filter(f => f.startsWith(prefix) && f.endsWith('.json'));
194
+ }
195
+ createDefaultState() {
196
+ return {
197
+ schemaVersion: 1,
198
+ taskId: `task-${Date.now()}`,
199
+ level: 'M',
200
+ phase: 'define',
201
+ exploredFiles: [],
202
+ fileCount: 0,
203
+ mainContradiction: '',
204
+ completedGates: [],
205
+ openTasks: [],
206
+ filesModified: [],
207
+ updatedAt: new Date().toISOString(),
208
+ };
209
+ }
210
+ normalizeState(state) {
211
+ return {
212
+ schemaVersion: 1,
213
+ taskId: state.taskId || `task-${Date.now()}`,
214
+ level: state.level ?? 'M',
215
+ phase: state.phase ?? 'define',
216
+ artifactsDir: state.artifactsDir,
217
+ exploredFiles: state.exploredFiles ?? [],
218
+ fileCount: state.fileCount ?? state.exploredFiles?.length ?? 0,
219
+ mainContradiction: state.mainContradiction ?? '',
220
+ completedGates: state.completedGates ?? [],
221
+ openTasks: state.openTasks ?? [],
222
+ filesModified: state.filesModified ?? [],
223
+ skillIntents: state.skillIntents ?? [],
224
+ skillRoutingMode: state.skillRoutingMode,
225
+ skillPlanRequired: state.skillPlanRequired,
226
+ skillPlanPath: state.skillPlanPath,
227
+ requiredSkills: state.requiredSkills ?? [],
228
+ recommendedSkills: state.recommendedSkills ?? [],
229
+ requiredSkillArtifacts: state.requiredSkillArtifacts ?? [],
230
+ requiredSkillVerification: state.requiredSkillVerification ?? [],
231
+ lastSpecId: state.lastSpecId,
232
+ lastPlanId: state.lastPlanId,
233
+ lastTaskId: state.lastTaskId,
234
+ updatedAt: state.updatedAt ?? new Date().toISOString(),
235
+ };
236
+ }
237
+ isWorkflowPhase(phase) {
238
+ return ['define', 'explore', 'plan', 'build', 'verify', 'review', 'ship', 'done'].includes(phase);
239
+ }
240
+ }
241
+ //# sourceMappingURL=WorkflowArtifactWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowArtifactWriter.js","sourceRoot":"","sources":["../../src/workflow/WorkflowArtifactWriter.ts"],"names":[],"mappings":"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"}
@@ -9,12 +9,31 @@ import { SocraticQuestioner } from './cognitive/SocraticQuestioner.js';
9
9
  import { RalphEngine, PRDManager } from './execution/RalphEngine.js';
10
10
  import { UltraworkEngine } from './execution/UltraworkEngine.js';
11
11
  import { KarpathyEvaluator } from './quality/KarpathyEvaluator.js';
12
- import type { PRDDocument, UserStory, TaskDefinition, SocraticSession } from './types.js';
12
+ import { WorkflowArtifactWriter } from './WorkflowArtifactWriter.js';
13
+ import type { PRDDocument, UserStory, TaskDefinition, GateStage, SocraticSession, KarpathyCheck } from './types.js';
13
14
  export interface WorkflowEngineConfig {
14
15
  eventBus: IEventBus;
15
16
  capabilityRegistry?: ICapabilityRegistry;
16
17
  skillRegistry?: ISkillRegistry;
17
18
  verificationCommands?: VerificationCommandConfig;
19
+ scaleDir?: string;
20
+ }
21
+ export interface ExploreOptions {
22
+ files?: string[];
23
+ mainContradiction?: string;
24
+ persistArtifact?: boolean;
25
+ runGate?: boolean;
26
+ }
27
+ export interface PlanOptions {
28
+ planId?: string;
29
+ specId?: string;
30
+ rollbackStrategy?: string;
31
+ modules?: string[];
32
+ persistArtifact?: boolean;
33
+ runGate?: boolean;
34
+ }
35
+ export interface VerifyOptions extends VerificationCommandConfig {
36
+ gates?: GateStage[];
18
37
  }
19
38
  export declare class WorkflowEngine {
20
39
  private eventBus;
@@ -29,24 +48,25 @@ export declare class WorkflowEngine {
29
48
  private prdManager;
30
49
  private modelRouter;
31
50
  private karpathyEvaluator;
51
+ private artifactWriter;
32
52
  constructor(config: WorkflowEngineConfig);
33
- explore(requirement: string): Promise<{
53
+ explore(requirement: string, options?: ExploreOptions): Promise<{
34
54
  ambiguityScore: number;
35
55
  gateResult: unknown;
36
56
  socraticSession?: SocraticSession;
37
57
  }>;
38
58
  refineRequirement(session: SocraticSession, questionId: string, answer: string): SocraticSession;
39
59
  getNextQuestion(session: SocraticSession): import('./types.js').SocraticQuestion | null;
40
- plan(requirement: string): Promise<unknown>;
60
+ plan(requirement: string, options?: PlanOptions): Promise<unknown>;
41
61
  build(tasks: TaskDefinition[]): Promise<Map<string, unknown>>;
42
- verify(commandOverrides?: VerificationCommandConfig): Promise<import('./types.js').GateResult[]>;
62
+ verify(commandOverrides?: VerifyOptions): Promise<import('./types.js').GateResult[]>;
43
63
  executePRD(title: string, stories: UserStory[]): Promise<PRDDocument>;
44
64
  checkKarpathy(context: {
45
65
  hypothesesListed: boolean;
46
66
  hasExtraFeatures: boolean;
47
67
  changesTraceable: boolean;
48
68
  hasVerifiableGoal: boolean;
49
- }): unknown;
69
+ }): KarpathyCheck[];
50
70
  generateDeliveryReport(): string;
51
71
  executeSkill(skillId: string, input: Record<string, unknown>): Promise<unknown>;
52
72
  executeMCPCapability(toolName: string, input: Record<string, unknown>): Promise<unknown>;
@@ -59,4 +79,5 @@ export declare class WorkflowEngine {
59
79
  getUltraworkEngine(): UltraworkEngine;
60
80
  getPRDManager(): PRDManager;
61
81
  getKarpathyEvaluator(): KarpathyEvaluator;
82
+ getArtifactWriter(): WorkflowArtifactWriter;
62
83
  }
@@ -7,13 +7,17 @@ import { SocraticQuestioner } from './cognitive/SocraticQuestioner.js';
7
7
  import { RalphEngine, PRDManager } from './execution/RalphEngine.js';
8
8
  import { UltraworkEngine, ModelRouter } from './execution/UltraworkEngine.js';
9
9
  import { KarpathyEvaluator } from './quality/KarpathyEvaluator.js';
10
+ import { WorkflowArtifactWriter } from './WorkflowArtifactWriter.js';
10
11
  export class WorkflowEngine {
11
12
  constructor(config) {
12
13
  this.eventBus = config.eventBus;
13
14
  this.capabilityRegistry = config.capabilityRegistry;
14
15
  this.skillRegistry = config.skillRegistry;
16
+ // Initialize artifact writer (shared with GateSystem)
17
+ const scaleDir = config.scaleDir ?? '.scale';
18
+ this.artifactWriter = new WorkflowArtifactWriter(scaleDir);
15
19
  // Initialize workflow modules
16
- this.gateSystem = new GateSystem(this.eventBus, config.verificationCommands);
20
+ this.gateSystem = new GateSystem(this.eventBus, config.verificationCommands, this.artifactWriter);
17
21
  this.ambiguityScorer = new AmbiguityScorer();
18
22
  this.consensusPlanner = new ConsensusPlanner(this.eventBus);
19
23
  this.socraticQuestioner = new SocraticQuestioner(this.eventBus);
@@ -24,9 +28,7 @@ export class WorkflowEngine {
24
28
  this.karpathyEvaluator = new KarpathyEvaluator();
25
29
  }
26
30
  // Phase 1: Exploration with Gate G1
27
- async explore(requirement) {
28
- // G1: Exploration gate
29
- const gateResult = await this.gateSystem.executeGate('G1');
31
+ async explore(requirement, options = {}) {
30
32
  // Analyze requirement ambiguity
31
33
  const ambiguityResult = this.ambiguityScorer.analyzeRequirement(requirement);
32
34
  // If ambiguity > 20%, start Socratic session
@@ -34,6 +36,19 @@ export class WorkflowEngine {
34
36
  if (ambiguityResult.requiresQuestioning) {
35
37
  socraticSession = this.socraticQuestioner.startSession(requirement, ambiguityResult);
36
38
  }
39
+ const files = options.files ?? [];
40
+ const mainContradiction = options.mainContradiction ?? '';
41
+ if (options.persistArtifact !== false) {
42
+ this.artifactWriter.writeExploreResult({
43
+ timestamp: new Date().toISOString(),
44
+ files,
45
+ fileCount: files.length,
46
+ mainContradiction,
47
+ ambiguityScore: ambiguityResult.totalScore,
48
+ socraticCompleted: !ambiguityResult.requiresQuestioning
49
+ });
50
+ }
51
+ const gateResult = options.runGate === false ? undefined : await this.gateSystem.executeGate('G1');
37
52
  return {
38
53
  ambiguityScore: ambiguityResult.totalScore,
39
54
  gateResult,
@@ -60,11 +75,24 @@ export class WorkflowEngine {
60
75
  return this.socraticQuestioner.askNextQuestion(session);
61
76
  }
62
77
  // Phase 2: Planning with Consensus
63
- async plan(requirement) {
78
+ async plan(requirement, options = {}) {
64
79
  // Run consensus planner
65
80
  const consensusResult = await this.consensusPlanner.execute(requirement);
66
- // G2: Planning gate (if L-level task)
67
- if (consensusResult.viableOptions.length > 1) {
81
+ const planId = options.planId ?? `engine-${Date.now()}`;
82
+ if (options.persistArtifact !== false) {
83
+ this.artifactWriter.writePlanResult({
84
+ timestamp: new Date().toISOString(),
85
+ planId,
86
+ specId: options.specId ?? '',
87
+ hasBoundaryAnalysis: consensusResult.viableOptions.length > 1,
88
+ hasExceptionHandling: consensusResult.preMortem?.rootCauses?.length > 0,
89
+ hasRollbackStrategy: Boolean(options.rollbackStrategy),
90
+ modules: options.modules ?? [],
91
+ consensusRounds: consensusResult.iterationCount,
92
+ verdict: consensusResult.verdict
93
+ });
94
+ }
95
+ if (options.runGate !== false && consensusResult.viableOptions.length > 1) {
68
96
  await this.gateSystem.executeGate('G2');
69
97
  }
70
98
  return consensusResult;
@@ -77,9 +105,9 @@ export class WorkflowEngine {
77
105
  // Phase 4: Verify with build and quality gates
78
106
  async verify(commandOverrides) {
79
107
  if (commandOverrides) {
80
- this.gateSystem = new GateSystem(this.eventBus, commandOverrides);
108
+ this.gateSystem = new GateSystem(this.eventBus, commandOverrides, this.artifactWriter);
81
109
  }
82
- const results = await this.gateSystem.executeAll(['G3', 'G0', 'G4', 'G5', 'G6', 'G7']);
110
+ const results = await this.gateSystem.executeAll(commandOverrides?.gates ?? ['G3', 'G0', 'G4', 'G5', 'G6', 'G7']);
83
111
  return results;
84
112
  }
85
113
  // Phase 5: PRD-driven execution with Ralph
@@ -147,5 +175,6 @@ export class WorkflowEngine {
147
175
  getUltraworkEngine() { return this.ultraworkEngine; }
148
176
  getPRDManager() { return this.prdManager; }
149
177
  getKarpathyEvaluator() { return this.karpathyEvaluator; }
178
+ getArtifactWriter() { return this.artifactWriter; }
150
179
  }
151
180
  //# sourceMappingURL=WorkflowEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowEngine.js","sourceRoot":"","sources":["../../src/workflow/WorkflowEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowEngine.js","sourceRoot":"","sources":["../../src/workflow/WorkflowEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ export type WorkspaceRepositoryKind = 'root' | 'submodule' | 'nested-repo';
2
+ export interface WorkspaceRepositoryStatus {
3
+ kind: WorkspaceRepositoryKind;
4
+ path: string;
5
+ relativePath: string;
6
+ branch: string | null;
7
+ head: string | null;
8
+ upstream: string | null;
9
+ ahead: number;
10
+ behind: number;
11
+ gitDir: string | null;
12
+ gitCommonDir: string | null;
13
+ isLinkedWorktree: boolean;
14
+ isSubmodule: boolean;
15
+ superproject: string | null;
16
+ clean: boolean;
17
+ staged: number;
18
+ unstaged: number;
19
+ untracked: number;
20
+ }
21
+ export interface WorkspaceFinishDecision {
22
+ canCleanup: boolean;
23
+ blockers: string[];
24
+ warnings: string[];
25
+ nextActions: string[];
26
+ }
27
+ export interface WorkspaceLifecycleReport {
28
+ root: WorkspaceRepositoryStatus;
29
+ childRepositories: WorkspaceRepositoryStatus[];
30
+ finish: WorkspaceFinishDecision;
31
+ }
32
+ export interface WorkspaceLifecycleOptions {
33
+ projectDir?: string;
34
+ }
35
+ export interface WorkspaceCleanupOptions extends WorkspaceLifecycleOptions {
36
+ apply?: boolean;
37
+ confirm?: string;
38
+ }
39
+ export interface WorkspaceCleanupResult {
40
+ mode: 'dry-run' | 'apply';
41
+ canApply: boolean;
42
+ applied: boolean;
43
+ targetPath: string;
44
+ confirmationToken: string | null;
45
+ blockers: string[];
46
+ warnings: string[];
47
+ commands: string[];
48
+ report: WorkspaceLifecycleReport;
49
+ }
50
+ export declare function inspectWorkspaceLifecycle(options?: WorkspaceLifecycleOptions): Promise<WorkspaceLifecycleReport>;
51
+ export declare function cleanupWorkspaceLifecycle(options?: WorkspaceCleanupOptions): Promise<WorkspaceCleanupResult>;