@hongmaple0820/scale-engine 0.12.2 → 0.13.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 (116) hide show
  1. package/README.md +30 -2
  2. package/dist/adapters/ClaudeCodeAdapter.d.ts +1 -0
  3. package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
  4. package/dist/adapters/KiroAdapter.d.ts +14 -0
  5. package/dist/adapters/KiroAdapter.js +180 -0
  6. package/dist/adapters/KiroAdapter.js.map +1 -0
  7. package/dist/adapters/index.d.ts +1 -0
  8. package/dist/adapters/index.js +3 -0
  9. package/dist/adapters/index.js.map +1 -1
  10. package/dist/api/cli.js +396 -5
  11. package/dist/api/cli.js.map +1 -1
  12. package/dist/api/doctor.d.ts +12 -0
  13. package/dist/api/doctor.js +232 -5
  14. package/dist/api/doctor.js.map +1 -1
  15. package/dist/api/quickstart.d.ts +19 -1
  16. package/dist/api/quickstart.js +103 -2
  17. package/dist/api/quickstart.js.map +1 -1
  18. package/dist/artifact/types.d.ts +16 -2
  19. package/dist/artifact/types.js.map +1 -1
  20. package/dist/cli/phaseCommands.d.ts +61 -0
  21. package/dist/cli/phaseCommands.js +559 -39
  22. package/dist/cli/phaseCommands.js.map +1 -1
  23. package/dist/cli/vibeCommands.d.ts +44 -0
  24. package/dist/cli/vibeCommands.js +244 -0
  25. package/dist/cli/vibeCommands.js.map +1 -0
  26. package/dist/guardrails/detectors.d.ts +9 -0
  27. package/dist/guardrails/detectors.js +102 -0
  28. package/dist/guardrails/detectors.js.map +1 -1
  29. package/dist/hooks/HookGeneratorEnhanced.js +29 -0
  30. package/dist/hooks/HookGeneratorEnhanced.js.map +1 -1
  31. package/dist/hooks/WorkflowHooksManager.js +20 -1
  32. package/dist/hooks/WorkflowHooksManager.js.map +1 -1
  33. package/dist/index.d.ts +6 -0
  34. package/dist/index.js +4 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/output/BrandThemeLoader.d.ts +54 -0
  37. package/dist/output/BrandThemeLoader.js +340 -0
  38. package/dist/output/BrandThemeLoader.js.map +1 -0
  39. package/dist/output/HTMLDocumentRenderer.d.ts +83 -0
  40. package/dist/output/HTMLDocumentRenderer.js +717 -0
  41. package/dist/output/HTMLDocumentRenderer.js.map +1 -0
  42. package/dist/output/UIPrototypeRenderer.d.ts +61 -0
  43. package/dist/output/UIPrototypeRenderer.js +500 -0
  44. package/dist/output/UIPrototypeRenderer.js.map +1 -0
  45. package/dist/output/index.d.ts +6 -0
  46. package/dist/output/index.js +6 -0
  47. package/dist/output/index.js.map +1 -0
  48. package/dist/prompts/PhasePromptRegistry.d.ts +53 -0
  49. package/dist/prompts/PhasePromptRegistry.js +517 -0
  50. package/dist/prompts/PhasePromptRegistry.js.map +1 -0
  51. package/dist/skills/SkillDiscovery.js +2 -1
  52. package/dist/skills/SkillDiscovery.js.map +1 -1
  53. package/dist/skills/index.d.ts +1 -0
  54. package/dist/skills/index.js +1 -0
  55. package/dist/skills/index.js.map +1 -1
  56. package/dist/skills/routing/SkillGate.d.ts +11 -0
  57. package/dist/skills/routing/SkillGate.js +76 -0
  58. package/dist/skills/routing/SkillGate.js.map +1 -0
  59. package/dist/skills/routing/SkillPlanner.d.ts +8 -0
  60. package/dist/skills/routing/SkillPlanner.js +91 -0
  61. package/dist/skills/routing/SkillPlanner.js.map +1 -0
  62. package/dist/skills/routing/SkillPolicy.d.ts +6 -0
  63. package/dist/skills/routing/SkillPolicy.js +146 -0
  64. package/dist/skills/routing/SkillPolicy.js.map +1 -0
  65. package/dist/skills/routing/SkillRoutingTypes.d.ts +72 -0
  66. package/dist/skills/routing/SkillRoutingTypes.js +2 -0
  67. package/dist/skills/routing/SkillRoutingTypes.js.map +1 -0
  68. package/dist/skills/routing/TaskIntentClassifier.d.ts +6 -0
  69. package/dist/skills/routing/TaskIntentClassifier.js +79 -0
  70. package/dist/skills/routing/TaskIntentClassifier.js.map +1 -0
  71. package/dist/skills/routing/index.d.ts +5 -0
  72. package/dist/skills/routing/index.js +6 -0
  73. package/dist/skills/routing/index.js.map +1 -0
  74. package/dist/workflow/GovernanceTemplates.d.ts +12 -0
  75. package/dist/workflow/GovernanceTemplates.js +515 -0
  76. package/dist/workflow/GovernanceTemplates.js.map +1 -0
  77. package/dist/workflow/PhaseMarkerTracker.d.ts +63 -0
  78. package/dist/workflow/PhaseMarkerTracker.js +291 -0
  79. package/dist/workflow/PhaseMarkerTracker.js.map +1 -0
  80. package/dist/workflow/SessionStateTracker.d.ts +74 -0
  81. package/dist/workflow/SessionStateTracker.js +270 -0
  82. package/dist/workflow/SessionStateTracker.js.map +1 -0
  83. package/dist/workflow/TaskArtifactScaffolder.d.ts +47 -0
  84. package/dist/workflow/TaskArtifactScaffolder.js +237 -0
  85. package/dist/workflow/TaskArtifactScaffolder.js.map +1 -0
  86. package/dist/workflow/TaskMetricsStore.d.ts +49 -0
  87. package/dist/workflow/TaskMetricsStore.js +149 -0
  88. package/dist/workflow/TaskMetricsStore.js.map +1 -0
  89. package/dist/workflow/VerificationCommands.d.ts +2 -0
  90. package/dist/workflow/VerificationCommands.js +7 -4
  91. package/dist/workflow/VerificationCommands.js.map +1 -1
  92. package/dist/workflow/VerificationProfile.d.ts +55 -0
  93. package/dist/workflow/VerificationProfile.js +133 -0
  94. package/dist/workflow/VerificationProfile.js.map +1 -0
  95. package/dist/workflow/WorkflowArtifactWriter.d.ts +113 -0
  96. package/dist/workflow/WorkflowArtifactWriter.js +241 -0
  97. package/dist/workflow/WorkflowArtifactWriter.js.map +1 -0
  98. package/dist/workflow/WorkflowEngine.d.ts +20 -2
  99. package/dist/workflow/WorkflowEngine.js +37 -8
  100. package/dist/workflow/WorkflowEngine.js.map +1 -1
  101. package/dist/workflow/autonomous/AutonomousDevLoop.d.ts +88 -0
  102. package/dist/workflow/autonomous/AutonomousDevLoop.js +381 -0
  103. package/dist/workflow/autonomous/AutonomousDevLoop.js.map +1 -0
  104. package/dist/workflow/autonomous/WorklogManager.d.ts +50 -0
  105. package/dist/workflow/autonomous/WorklogManager.js +264 -0
  106. package/dist/workflow/autonomous/WorklogManager.js.map +1 -0
  107. package/dist/workflow/autonomous/index.d.ts +2 -0
  108. package/dist/workflow/autonomous/index.js +4 -0
  109. package/dist/workflow/autonomous/index.js.map +1 -0
  110. package/dist/workflow/gates/GateSystem.d.ts +12 -3
  111. package/dist/workflow/gates/GateSystem.js +185 -41
  112. package/dist/workflow/gates/GateSystem.js.map +1 -1
  113. package/dist/workflow/index.d.ts +7 -0
  114. package/dist/workflow/index.js +7 -0
  115. package/dist/workflow/index.js.map +1 -1
  116. package/package.json +3 -3
@@ -0,0 +1,264 @@
1
+ // SCALE Engine — Worklog Manager
2
+ // 工作日志读写管理,支持 markdown 格式的 pending/done 列表
3
+ // 设计参考:z.ai 自主开发循环模式 + Baton System 持久化
4
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
5
+ import { dirname } from 'node:path';
6
+ import { logger } from '../../core/logger.js';
7
+ // ============================================================================
8
+ // Worklog Manager
9
+ // ============================================================================
10
+ export class WorklogManager {
11
+ constructor(worklogPath) {
12
+ this.worklogPath = worklogPath;
13
+ }
14
+ // ─────────────────────────────────────────────────────────────
15
+ // Read
16
+ // ─────────────────────────────────────────────────────────────
17
+ /** Read and parse the worklog file */
18
+ read() {
19
+ if (!existsSync(this.worklogPath)) {
20
+ return this.createEmptyState();
21
+ }
22
+ const content = readFileSync(this.worklogPath, 'utf-8');
23
+ return this.parse(content);
24
+ }
25
+ /** Parse markdown content into WorklogState */
26
+ parse(content) {
27
+ const entries = [];
28
+ let currentSection = 'pending';
29
+ let entryIndex = 0;
30
+ for (const line of content.split('\n')) {
31
+ const trimmed = line.trim();
32
+ // Detect section headers
33
+ if (/^##\s+Pending/i.test(trimmed)) {
34
+ currentSection = 'pending';
35
+ continue;
36
+ }
37
+ if (/^##\s+Done/i.test(trimmed)) {
38
+ currentSection = 'done';
39
+ continue;
40
+ }
41
+ if (/^##\s+Blocked/i.test(trimmed)) {
42
+ currentSection = 'pending'; // blocked entries are in pending flow
43
+ continue;
44
+ }
45
+ // Parse pending entries: "- [P0] fix: description" or "- [P1] feat: description"
46
+ const pendingMatch = trimmed.match(/^-\s+\[(P[0-2])\]\s+(\w+):\s+(.+)$/);
47
+ if (pendingMatch && currentSection === 'pending') {
48
+ entryIndex++;
49
+ const [, priority, typeRaw, description] = pendingMatch;
50
+ entries.push({
51
+ id: `WL-${String(entryIndex).padStart(3, '0')}`,
52
+ type: this.normalizeType(typeRaw),
53
+ description: description.trim(),
54
+ status: 'pending',
55
+ priority: priority,
56
+ });
57
+ continue;
58
+ }
59
+ // Parse done entries: "- [x] description" or "- [x] type: description"
60
+ const doneMatch = trimmed.match(/^-\s+\[x\]\s+(.+)$/);
61
+ if (doneMatch && currentSection === 'done') {
62
+ entryIndex++;
63
+ const raw = doneMatch[1];
64
+ const typeMatch = raw.match(/^(\w+):\s+(.+)$/);
65
+ entries.push({
66
+ id: `WL-${String(entryIndex).padStart(3, '0')}`,
67
+ type: typeMatch ? this.normalizeType(typeMatch[1]) : 'feature',
68
+ description: typeMatch ? typeMatch[2].trim() : raw.trim(),
69
+ status: 'done',
70
+ priority: 'P2', // done items default to lowest priority
71
+ });
72
+ continue;
73
+ }
74
+ // Parse in_progress entries: "- [~] description"
75
+ const inProgressMatch = trimmed.match(/^-\s+\[~\]\s+(.+)$/);
76
+ if (inProgressMatch) {
77
+ entryIndex++;
78
+ const raw = inProgressMatch[1];
79
+ const typeMatch = raw.match(/^\[(P[0-2])\]\s+(\w+):\s+(.+)$/);
80
+ entries.push({
81
+ id: `WL-${String(entryIndex).padStart(3, '0')}`,
82
+ type: typeMatch ? this.normalizeType(typeMatch[2]) : 'feature',
83
+ description: typeMatch ? typeMatch[3].trim() : raw.trim(),
84
+ status: 'in_progress',
85
+ priority: typeMatch ? typeMatch[1] : 'P1',
86
+ });
87
+ continue;
88
+ }
89
+ }
90
+ const totalDone = entries.filter(e => e.status === 'done').length;
91
+ const totalPending = entries.filter(e => e.status === 'pending' || e.status === 'in_progress').length;
92
+ return {
93
+ entries,
94
+ lastUpdated: new Date().toISOString(),
95
+ totalDone,
96
+ totalPending,
97
+ };
98
+ }
99
+ // ─────────────────────────────────────────────────────────────
100
+ // Query
101
+ // ─────────────────────────────────────────────────────────────
102
+ /** Get next pending task by priority */
103
+ getNextTask(state) {
104
+ const pending = state.entries
105
+ .filter(e => e.status === 'pending')
106
+ .sort((a, b) => this.priorityWeight(a.priority) - this.priorityWeight(b.priority));
107
+ return pending[0];
108
+ }
109
+ /** Get all entries with a specific status */
110
+ getByStatus(state, status) {
111
+ return state.entries.filter(e => e.status === status);
112
+ }
113
+ /** Get entries by type */
114
+ getByType(state, type) {
115
+ return state.entries.filter(e => e.type === type);
116
+ }
117
+ // ─────────────────────────────────────────────────────────────
118
+ // Update
119
+ // ─────────────────────────────────────────────────────────────
120
+ /** Update entry status */
121
+ updateEntryStatus(state, entryId, newStatus, notes) {
122
+ const updated = state.entries.map(e => {
123
+ if (e.id === entryId) {
124
+ return {
125
+ ...e,
126
+ status: newStatus,
127
+ notes: notes ?? e.notes,
128
+ };
129
+ }
130
+ return e;
131
+ });
132
+ return this.recomputeState(updated);
133
+ }
134
+ /** Mark entry as in_progress */
135
+ markInProgress(state, entryId) {
136
+ // First, reset any currently in_progress items back to pending
137
+ const reset = state.entries.map(e => e.status === 'in_progress' ? { ...e, status: 'pending' } : e);
138
+ // Then mark the target as in_progress
139
+ const updated = reset.map(e => e.id === entryId ? { ...e, status: 'in_progress' } : e);
140
+ return this.recomputeState(updated);
141
+ }
142
+ /** Mark entry as done */
143
+ markDone(state, entryId, notes) {
144
+ return this.updateEntryStatus(state, entryId, 'done', notes);
145
+ }
146
+ /** Mark entry as blocked */
147
+ markBlocked(state, entryId, reason) {
148
+ return this.updateEntryStatus(state, entryId, 'blocked', reason);
149
+ }
150
+ /** Add a new entry */
151
+ addEntry(state, entry) {
152
+ const nextNum = state.entries.length + 1;
153
+ const newEntry = {
154
+ ...entry,
155
+ id: `WL-${String(nextNum).padStart(3, '0')}`,
156
+ };
157
+ const updated = [...state.entries, newEntry];
158
+ return this.recomputeState(updated);
159
+ }
160
+ // ─────────────────────────────────────────────────────────────
161
+ // Write
162
+ // ─────────────────────────────────────────────────────────────
163
+ /** Write worklog state back to markdown file */
164
+ write(state) {
165
+ const dir = dirname(this.worklogPath);
166
+ if (!existsSync(dir)) {
167
+ mkdirSync(dir, { recursive: true });
168
+ }
169
+ const content = this.toMarkdown(state);
170
+ writeFileSync(this.worklogPath, content, 'utf-8');
171
+ logger.info({ path: this.worklogPath, total: state.entries.length }, 'Worklog written');
172
+ }
173
+ /** Convert state to markdown format */
174
+ toMarkdown(state) {
175
+ const inProgress = state.entries.filter(e => e.status === 'in_progress');
176
+ const pending = state.entries.filter(e => e.status === 'pending');
177
+ const done = state.entries.filter(e => e.status === 'done');
178
+ const blocked = state.entries.filter(e => e.status === 'blocked');
179
+ let md = `# Worklog\n\n`;
180
+ md += `> Updated: ${state.lastUpdated}\n\n`;
181
+ // In Progress
182
+ if (inProgress.length > 0) {
183
+ md += `## In Progress\n\n`;
184
+ for (const e of inProgress) {
185
+ md += `- [~] [${e.priority}] ${e.type}: ${e.description}\n`;
186
+ if (e.notes)
187
+ md += ` > ${e.notes}\n`;
188
+ }
189
+ md += '\n';
190
+ }
191
+ // Pending
192
+ md += `## Pending\n\n`;
193
+ if (pending.length === 0) {
194
+ md += `_No pending tasks._\n\n`;
195
+ }
196
+ else {
197
+ for (const e of pending) {
198
+ md += `- [${e.priority}] ${e.type}: ${e.description}\n`;
199
+ if (e.notes)
200
+ md += ` > ${e.notes}\n`;
201
+ }
202
+ md += '\n';
203
+ }
204
+ // Blocked
205
+ if (blocked.length > 0) {
206
+ md += `## Blocked\n\n`;
207
+ for (const e of blocked) {
208
+ md += `- [${e.priority}] ${e.type}: ${e.description}\n`;
209
+ if (e.notes)
210
+ md += ` > BLOCKED: ${e.notes}\n`;
211
+ }
212
+ md += '\n';
213
+ }
214
+ // Done
215
+ md += `## Done\n\n`;
216
+ if (done.length === 0) {
217
+ md += `_No completed tasks yet._\n`;
218
+ }
219
+ else {
220
+ for (const e of done) {
221
+ md += `- [x] ${e.type}: ${e.description}\n`;
222
+ if (e.notes)
223
+ md += ` > ${e.notes}\n`;
224
+ }
225
+ }
226
+ return md;
227
+ }
228
+ // ─────────────────────────────────────────────────────────────
229
+ // Helpers
230
+ // ─────────────────────────────────────────────────────────────
231
+ normalizeType(raw) {
232
+ const map = {
233
+ fix: 'fix',
234
+ bug: 'bug',
235
+ feat: 'feature',
236
+ feature: 'feature',
237
+ refactor: 'refactor',
238
+ test: 'test',
239
+ chore: 'refactor',
240
+ };
241
+ return map[raw.toLowerCase()] ?? 'feature';
242
+ }
243
+ priorityWeight(p) {
244
+ const weights = { P0: 0, P1: 1, P2: 2 };
245
+ return weights[p] ?? 99;
246
+ }
247
+ recomputeState(entries) {
248
+ return {
249
+ entries,
250
+ lastUpdated: new Date().toISOString(),
251
+ totalDone: entries.filter(e => e.status === 'done').length,
252
+ totalPending: entries.filter(e => e.status === 'pending' || e.status === 'in_progress').length,
253
+ };
254
+ }
255
+ createEmptyState() {
256
+ return {
257
+ entries: [],
258
+ lastUpdated: new Date().toISOString(),
259
+ totalDone: 0,
260
+ totalPending: 0,
261
+ };
262
+ }
263
+ }
264
+ //# sourceMappingURL=WorklogManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorklogManager.js","sourceRoot":"","sources":["../../../src/workflow/autonomous/WorklogManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './WorklogManager.js';
2
+ export * from './AutonomousDevLoop.js';
@@ -0,0 +1,4 @@
1
+ // SCALE Engine — Autonomous Module Index
2
+ export * from './WorklogManager.js';
3
+ export * from './AutonomousDevLoop.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflow/autonomous/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import type { IEventBus } from '../../core/eventBus.js';
2
2
  import type { GateStage, GateResult } from '../types.js';
3
+ import { WorkflowArtifactWriter } from '../WorkflowArtifactWriter.js';
3
4
  import { type ResolvedVerificationCommand, type VerificationCommandConfig } from '../VerificationCommands.js';
4
5
  export interface IGate {
5
6
  stage: GateStage;
@@ -25,17 +26,19 @@ export interface SecurityGateOptions {
25
26
  maxFindings?: number;
26
27
  strict?: boolean;
27
28
  }
28
- export declare function runShellCommand(command: string, timeout: number): Promise<CommandResult>;
29
+ export declare function runShellCommand(command: string, timeout: number, cwd?: string): Promise<CommandResult>;
29
30
  export declare class GateSystem {
30
31
  private eventBus;
31
32
  private gates;
32
33
  private results;
33
34
  private evidenceStore;
34
35
  private commands;
35
- constructor(eventBus: IEventBus, commandConfig?: VerificationCommandConfig);
36
+ private artifactWriter;
37
+ constructor(eventBus: IEventBus, commandConfig?: VerificationCommandConfig, artifactWriter?: WorkflowArtifactWriter);
36
38
  registerGate(gate: IGate): void;
37
39
  executeGate(stage: GateStage): Promise<GateResult>;
38
40
  private persistEvidence;
41
+ private recordCompletedGate;
39
42
  executeAll(order?: GateStage[]): Promise<GateResult[]>;
40
43
  getResult(stage: GateStage): GateResult | undefined;
41
44
  getAllResults(): Map<GateStage, GateResult>;
@@ -46,6 +49,8 @@ export declare class ExplorationGate implements IGate {
46
49
  name: string;
47
50
  description: string;
48
51
  requiredLevel: RequiredLevel;
52
+ private artifactWriter?;
53
+ constructor(artifactWriter?: WorkflowArtifactWriter);
49
54
  execute(): Promise<GateResult>;
50
55
  private findKnowledgeFile;
51
56
  private checkKnowledgeGraph;
@@ -55,6 +60,8 @@ export declare class PlanningGate implements IGate {
55
60
  name: string;
56
61
  description: string;
57
62
  requiredLevel: RequiredLevel;
63
+ private artifactWriter?;
64
+ constructor(artifactWriter?: WorkflowArtifactWriter);
58
65
  execute(): Promise<GateResult>;
59
66
  private checkSpecDocument;
60
67
  }
@@ -65,8 +72,10 @@ export declare class TDDGate implements IGate {
65
72
  name: string;
66
73
  description: string;
67
74
  requiredLevel: RequiredLevel;
68
- constructor(evidencePath?: string | undefined, strict?: boolean);
75
+ private artifactWriter?;
76
+ constructor(evidencePath?: string | undefined, strict?: boolean, artifactWriter?: WorkflowArtifactWriter);
69
77
  execute(): Promise<GateResult>;
78
+ private verifyStructuredEvidence;
70
79
  private verifyEvidenceFile;
71
80
  }
72
81
  export declare class BuildGate implements IGate {