@hongmaple0820/scale-engine 0.9.0 → 0.10.1
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/README.en.md +127 -179
- package/README.md +168 -1094
- package/dist/agents/AgentSourceLoader.js +1 -1
- package/dist/agents/AgentSourceLoader.js.map +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/api/cli.js +222 -6
- package/dist/api/cli.js.map +1 -1
- package/dist/api/quickstart.d.ts +23 -0
- package/dist/api/quickstart.js +57 -0
- package/dist/api/quickstart.js.map +1 -0
- package/dist/artifact/types.d.ts +5 -1
- package/dist/artifact/types.js.map +1 -1
- package/dist/capabilities/BrowserCapability.d.ts +30 -0
- package/dist/capabilities/BrowserCapability.js +73 -0
- package/dist/capabilities/BrowserCapability.js.map +1 -0
- package/dist/capabilities/CapabilityRegistry.d.ts +17 -0
- package/dist/capabilities/CapabilityRegistry.js +65 -0
- package/dist/capabilities/CapabilityRegistry.js.map +1 -0
- package/dist/capabilities/ComputerCapability.d.ts +28 -0
- package/dist/capabilities/ComputerCapability.js +40 -0
- package/dist/capabilities/ComputerCapability.js.map +1 -0
- package/dist/capabilities/InstalledSkillsIntegration.d.ts +66 -0
- package/dist/capabilities/InstalledSkillsIntegration.js +188 -0
- package/dist/capabilities/InstalledSkillsIntegration.js.map +1 -0
- package/dist/capabilities/SearchCapability.d.ts +46 -0
- package/dist/capabilities/SearchCapability.js +88 -0
- package/dist/capabilities/SearchCapability.js.map +1 -0
- package/dist/capabilities/index.d.ts +6 -0
- package/dist/capabilities/index.js +9 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/types.d.ts +92 -0
- package/dist/capabilities/types.js +7 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/cli/liteCommands.js +1 -1
- package/dist/cli/liteCommands.js.map +1 -1
- package/dist/cli/phaseCommands.d.ts +42 -3
- package/dist/cli/phaseCommands.js +490 -149
- package/dist/cli/phaseCommands.js.map +1 -1
- package/dist/core/logger.js +9 -2
- package/dist/core/logger.js.map +1 -1
- package/dist/hooks/HookGeneratorEnhanced.js +84 -5
- package/dist/hooks/HookGeneratorEnhanced.js.map +1 -1
- package/dist/hooks/WorkflowHooksManager.d.ts +30 -0
- package/dist/hooks/WorkflowHooksManager.js +117 -0
- package/dist/hooks/WorkflowHooksManager.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +2 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/skills/SkillExecutor.d.ts +11 -1
- package/dist/skills/SkillExecutor.js +160 -5
- package/dist/skills/SkillExecutor.js.map +1 -1
- package/dist/workflow/EvidenceStore.d.ts +20 -0
- package/dist/workflow/EvidenceStore.js +48 -0
- package/dist/workflow/EvidenceStore.js.map +1 -0
- package/dist/workflow/ReviewAnalyzer.d.ts +33 -0
- package/dist/workflow/ReviewAnalyzer.js +264 -0
- package/dist/workflow/ReviewAnalyzer.js.map +1 -0
- package/dist/workflow/ReviewStore.d.ts +32 -0
- package/dist/workflow/ReviewStore.js +42 -0
- package/dist/workflow/ReviewStore.js.map +1 -0
- package/dist/workflow/VerificationCommands.d.ts +23 -0
- package/dist/workflow/VerificationCommands.js +125 -0
- package/dist/workflow/VerificationCommands.js.map +1 -0
- package/dist/workflow/WorkflowEngine.d.ts +62 -0
- package/dist/workflow/WorkflowEngine.js +151 -0
- package/dist/workflow/WorkflowEngine.js.map +1 -0
- package/dist/workflow/cognitive/AmbiguityScorer.d.ts +17 -0
- package/dist/workflow/cognitive/AmbiguityScorer.js +107 -0
- package/dist/workflow/cognitive/AmbiguityScorer.js.map +1 -0
- package/dist/workflow/cognitive/ConsensusPlanner.d.ts +26 -0
- package/dist/workflow/cognitive/ConsensusPlanner.js +141 -0
- package/dist/workflow/cognitive/ConsensusPlanner.js.map +1 -0
- package/dist/workflow/cognitive/SocraticQuestioner.d.ts +33 -0
- package/dist/workflow/cognitive/SocraticQuestioner.js +276 -0
- package/dist/workflow/cognitive/SocraticQuestioner.js.map +1 -0
- package/dist/workflow/execution/RalphEngine.d.ts +36 -0
- package/dist/workflow/execution/RalphEngine.js +123 -0
- package/dist/workflow/execution/RalphEngine.js.map +1 -0
- package/dist/workflow/execution/UltraworkEngine.d.ts +43 -0
- package/dist/workflow/execution/UltraworkEngine.js +135 -0
- package/dist/workflow/execution/UltraworkEngine.js.map +1 -0
- package/dist/workflow/gates/GateSystem.d.ts +130 -0
- package/dist/workflow/gates/GateSystem.js +788 -0
- package/dist/workflow/gates/GateSystem.js.map +1 -0
- package/dist/workflow/index.d.ts +12 -0
- package/dist/workflow/index.js +14 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/quality/HonestDelivery.d.ts +19 -0
- package/dist/workflow/quality/HonestDelivery.js +77 -0
- package/dist/workflow/quality/HonestDelivery.js.map +1 -0
- package/dist/workflow/quality/KarpathyEvaluator.d.ts +18 -0
- package/dist/workflow/quality/KarpathyEvaluator.js +76 -0
- package/dist/workflow/quality/KarpathyEvaluator.js.map +1 -0
- package/dist/workflow/types.d.ts +146 -0
- package/dist/workflow/types.js +4 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workflows/DAGBuilder.js +1 -1
- package/dist/workflows/DAGBuilder.js.map +1 -1
- package/dist/workflows/WorkflowOrchestrator.js +1 -1
- package/dist/workflows/WorkflowOrchestrator.js.map +1 -1
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { IEventBus } from '../../core/eventBus.js';
|
|
2
|
+
import type { TaskDefinition, ModelTier } from '../types.js';
|
|
3
|
+
export interface ITaskRunner {
|
|
4
|
+
run(task: TaskDefinition): Promise<{
|
|
5
|
+
success: boolean;
|
|
6
|
+
output?: unknown;
|
|
7
|
+
error?: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export declare class UltraworkEngine {
|
|
11
|
+
private eventBus;
|
|
12
|
+
private tasks;
|
|
13
|
+
private runners;
|
|
14
|
+
private results;
|
|
15
|
+
constructor(eventBus: IEventBus);
|
|
16
|
+
addTask(task: TaskDefinition): void;
|
|
17
|
+
addTasks(tasks: TaskDefinition[]): void;
|
|
18
|
+
executeAll(): Promise<Map<string, {
|
|
19
|
+
success: boolean;
|
|
20
|
+
output?: unknown;
|
|
21
|
+
error?: string;
|
|
22
|
+
}>>;
|
|
23
|
+
executeParallel(): Promise<Map<string, {
|
|
24
|
+
success: boolean;
|
|
25
|
+
output?: unknown;
|
|
26
|
+
error?: string;
|
|
27
|
+
}>>;
|
|
28
|
+
private sortByDependencies;
|
|
29
|
+
private canExecute;
|
|
30
|
+
private executeTask;
|
|
31
|
+
getResults(): Map<string, {
|
|
32
|
+
success: boolean;
|
|
33
|
+
output?: unknown;
|
|
34
|
+
error?: string;
|
|
35
|
+
}>;
|
|
36
|
+
getTask(id: string): TaskDefinition | undefined;
|
|
37
|
+
clear(): void;
|
|
38
|
+
}
|
|
39
|
+
export declare class ModelRouter {
|
|
40
|
+
private taskComplexityThresholds;
|
|
41
|
+
route(taskType: string): ModelTier;
|
|
42
|
+
routeByComplexity(complexity: 'simple' | 'moderate' | 'complex'): ModelTier;
|
|
43
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// SCALE Engine — Ultrawork Engine
|
|
2
|
+
// 并行执行引擎 (模型路由)
|
|
3
|
+
export class UltraworkEngine {
|
|
4
|
+
constructor(eventBus) {
|
|
5
|
+
this.tasks = new Map();
|
|
6
|
+
this.runners = new Map();
|
|
7
|
+
this.results = new Map();
|
|
8
|
+
this.eventBus = eventBus;
|
|
9
|
+
this.runners.set('LOW', new LowTierRunner());
|
|
10
|
+
this.runners.set('MEDIUM', new MediumTierRunner());
|
|
11
|
+
this.runners.set('HIGH', new HighTierRunner());
|
|
12
|
+
}
|
|
13
|
+
addTask(task) {
|
|
14
|
+
this.tasks.set(task.id, task);
|
|
15
|
+
}
|
|
16
|
+
addTasks(tasks) {
|
|
17
|
+
tasks.forEach(t => this.addTask(t));
|
|
18
|
+
}
|
|
19
|
+
async executeAll() {
|
|
20
|
+
const sortedTasks = this.sortByDependencies();
|
|
21
|
+
for (const task of sortedTasks) {
|
|
22
|
+
if (this.canExecute(task)) {
|
|
23
|
+
await this.executeTask(task);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return this.results;
|
|
27
|
+
}
|
|
28
|
+
async executeParallel() {
|
|
29
|
+
const independentTasks = Array.from(this.tasks.values())
|
|
30
|
+
.filter(t => t.dependencies.length === 0 && t.status === 'PENDING');
|
|
31
|
+
await Promise.all(independentTasks.map(t => this.executeTask(t)));
|
|
32
|
+
// Then execute dependent tasks
|
|
33
|
+
const dependentTasks = Array.from(this.tasks.values())
|
|
34
|
+
.filter(t => t.dependencies.length > 0 && t.status === 'PENDING');
|
|
35
|
+
for (const task of dependentTasks) {
|
|
36
|
+
if (this.canExecute(task)) {
|
|
37
|
+
await this.executeTask(task);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return this.results;
|
|
41
|
+
}
|
|
42
|
+
sortByDependencies() {
|
|
43
|
+
const sorted = [];
|
|
44
|
+
const visited = new Set();
|
|
45
|
+
const visit = (taskId) => {
|
|
46
|
+
if (visited.has(taskId))
|
|
47
|
+
return;
|
|
48
|
+
visited.add(taskId);
|
|
49
|
+
const task = this.tasks.get(taskId);
|
|
50
|
+
if (task) {
|
|
51
|
+
task.dependencies.forEach(d => visit(d));
|
|
52
|
+
sorted.push(task);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
for (const taskId of this.tasks.keys()) {
|
|
56
|
+
visit(taskId);
|
|
57
|
+
}
|
|
58
|
+
return sorted;
|
|
59
|
+
}
|
|
60
|
+
canExecute(task) {
|
|
61
|
+
return task.dependencies.every(depId => {
|
|
62
|
+
const depResult = this.results.get(depId);
|
|
63
|
+
return depResult?.success === true;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async executeTask(task) {
|
|
67
|
+
task.status = 'RUNNING';
|
|
68
|
+
this.eventBus.emit('ultrawork.task.start', { taskId: task.id, tier: task.tier });
|
|
69
|
+
const runner = this.runners.get(task.tier);
|
|
70
|
+
if (!runner) {
|
|
71
|
+
task.status = 'FAILED';
|
|
72
|
+
this.results.set(task.id, { success: false, error: 'No runner for tier' });
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const result = await runner.run(task);
|
|
77
|
+
task.status = result.success ? 'COMPLETED' : 'FAILED';
|
|
78
|
+
this.results.set(task.id, result);
|
|
79
|
+
this.eventBus.emit('ultrawork.task.end', { taskId: task.id, success: result.success });
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
task.status = 'FAILED';
|
|
83
|
+
this.results.set(task.id, { success: false, error: String(e) });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
getResults() {
|
|
87
|
+
return this.results;
|
|
88
|
+
}
|
|
89
|
+
getTask(id) {
|
|
90
|
+
return this.tasks.get(id);
|
|
91
|
+
}
|
|
92
|
+
clear() {
|
|
93
|
+
this.tasks.clear();
|
|
94
|
+
this.results.clear();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
class LowTierRunner {
|
|
98
|
+
async run(task) {
|
|
99
|
+
return { success: true, output: { task: task.id, tier: 'LOW', result: 'quick lookup completed' } };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
class MediumTierRunner {
|
|
103
|
+
async run(task) {
|
|
104
|
+
return { success: true, output: { task: task.id, tier: 'MEDIUM', result: 'standard execution completed' } };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
class HighTierRunner {
|
|
108
|
+
async run(task) {
|
|
109
|
+
return { success: true, output: { task: task.id, tier: 'HIGH', result: 'deep analysis completed' } };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
export class ModelRouter {
|
|
113
|
+
constructor() {
|
|
114
|
+
this.taskComplexityThresholds = {
|
|
115
|
+
quickLookup: 'LOW',
|
|
116
|
+
codeGeneration: 'MEDIUM',
|
|
117
|
+
architectureDecision: 'HIGH',
|
|
118
|
+
securityAnalysis: 'HIGH',
|
|
119
|
+
debugging: 'MEDIUM',
|
|
120
|
+
refactoring: 'MEDIUM'
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
route(taskType) {
|
|
124
|
+
const tier = this.taskComplexityThresholds[taskType];
|
|
125
|
+
return tier || 'MEDIUM';
|
|
126
|
+
}
|
|
127
|
+
routeByComplexity(complexity) {
|
|
128
|
+
switch (complexity) {
|
|
129
|
+
case 'simple': return 'LOW';
|
|
130
|
+
case 'moderate': return 'MEDIUM';
|
|
131
|
+
case 'complex': return 'HIGH';
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=UltraworkEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UltraworkEngine.js","sourceRoot":"","sources":["../../../src/workflow/execution/UltraworkEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { IEventBus } from '../../core/eventBus.js';
|
|
2
|
+
import type { GateStage, GateResult } from '../types.js';
|
|
3
|
+
import { type ResolvedVerificationCommand, type VerificationCommandConfig } from '../VerificationCommands.js';
|
|
4
|
+
export interface IGate {
|
|
5
|
+
stage: GateStage;
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
requiredLevel: 'S' | 'M' | 'L' | 'ALWAYS' | 'CRITICAL';
|
|
9
|
+
execute(): Promise<GateResult>;
|
|
10
|
+
}
|
|
11
|
+
type RequiredLevel = 'S' | 'M' | 'L' | 'ALWAYS' | 'CRITICAL';
|
|
12
|
+
interface CommandResult {
|
|
13
|
+
code: number;
|
|
14
|
+
stdout: string;
|
|
15
|
+
stderr: string;
|
|
16
|
+
durationMs: number;
|
|
17
|
+
startedAt: number;
|
|
18
|
+
endedAt: number;
|
|
19
|
+
cwd: string;
|
|
20
|
+
}
|
|
21
|
+
export interface SecurityGateOptions {
|
|
22
|
+
rootDir?: string;
|
|
23
|
+
scanDirs?: string[];
|
|
24
|
+
maxFileBytes?: number;
|
|
25
|
+
maxFindings?: number;
|
|
26
|
+
strict?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare function runShellCommand(command: string, timeout: number): Promise<CommandResult>;
|
|
29
|
+
export declare class GateSystem {
|
|
30
|
+
private eventBus;
|
|
31
|
+
private gates;
|
|
32
|
+
private results;
|
|
33
|
+
private evidenceStore;
|
|
34
|
+
private commands;
|
|
35
|
+
constructor(eventBus: IEventBus, commandConfig?: VerificationCommandConfig);
|
|
36
|
+
registerGate(gate: IGate): void;
|
|
37
|
+
executeGate(stage: GateStage): Promise<GateResult>;
|
|
38
|
+
private persistEvidence;
|
|
39
|
+
executeAll(order?: GateStage[]): Promise<GateResult[]>;
|
|
40
|
+
getResult(stage: GateStage): GateResult | undefined;
|
|
41
|
+
getAllResults(): Map<GateStage, GateResult>;
|
|
42
|
+
private registerDefaultGates;
|
|
43
|
+
}
|
|
44
|
+
export declare class ExplorationGate implements IGate {
|
|
45
|
+
stage: GateStage;
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
requiredLevel: RequiredLevel;
|
|
49
|
+
execute(): Promise<GateResult>;
|
|
50
|
+
private findKnowledgeFile;
|
|
51
|
+
private checkKnowledgeGraph;
|
|
52
|
+
}
|
|
53
|
+
export declare class PlanningGate implements IGate {
|
|
54
|
+
stage: GateStage;
|
|
55
|
+
name: string;
|
|
56
|
+
description: string;
|
|
57
|
+
requiredLevel: RequiredLevel;
|
|
58
|
+
execute(): Promise<GateResult>;
|
|
59
|
+
private checkSpecDocument;
|
|
60
|
+
}
|
|
61
|
+
export declare class TDDGate implements IGate {
|
|
62
|
+
private evidencePath?;
|
|
63
|
+
private strict;
|
|
64
|
+
stage: GateStage;
|
|
65
|
+
name: string;
|
|
66
|
+
description: string;
|
|
67
|
+
requiredLevel: RequiredLevel;
|
|
68
|
+
constructor(evidencePath?: string | undefined, strict?: boolean);
|
|
69
|
+
execute(): Promise<GateResult>;
|
|
70
|
+
private verifyEvidenceFile;
|
|
71
|
+
}
|
|
72
|
+
export declare class BuildGate implements IGate {
|
|
73
|
+
private command;
|
|
74
|
+
stage: GateStage;
|
|
75
|
+
name: string;
|
|
76
|
+
description: string;
|
|
77
|
+
requiredLevel: RequiredLevel;
|
|
78
|
+
constructor(command: ResolvedVerificationCommand);
|
|
79
|
+
execute(): Promise<GateResult>;
|
|
80
|
+
}
|
|
81
|
+
export declare class LintGate implements IGate {
|
|
82
|
+
private command;
|
|
83
|
+
stage: GateStage;
|
|
84
|
+
name: string;
|
|
85
|
+
description: string;
|
|
86
|
+
requiredLevel: RequiredLevel;
|
|
87
|
+
constructor(command: ResolvedVerificationCommand);
|
|
88
|
+
execute(): Promise<GateResult>;
|
|
89
|
+
}
|
|
90
|
+
export declare class TestGate implements IGate {
|
|
91
|
+
private command;
|
|
92
|
+
stage: GateStage;
|
|
93
|
+
name: string;
|
|
94
|
+
description: string;
|
|
95
|
+
requiredLevel: RequiredLevel;
|
|
96
|
+
constructor(command: ResolvedVerificationCommand);
|
|
97
|
+
execute(): Promise<GateResult>;
|
|
98
|
+
}
|
|
99
|
+
export declare class CoverageGate implements IGate {
|
|
100
|
+
private command;
|
|
101
|
+
stage: GateStage;
|
|
102
|
+
name: string;
|
|
103
|
+
description: string;
|
|
104
|
+
requiredLevel: RequiredLevel;
|
|
105
|
+
constructor(command: ResolvedVerificationCommand);
|
|
106
|
+
execute(): Promise<GateResult>;
|
|
107
|
+
}
|
|
108
|
+
export declare class SecurityGate implements IGate {
|
|
109
|
+
stage: GateStage;
|
|
110
|
+
name: string;
|
|
111
|
+
description: string;
|
|
112
|
+
requiredLevel: RequiredLevel;
|
|
113
|
+
private rootDir;
|
|
114
|
+
private scanDirs;
|
|
115
|
+
private maxFileBytes;
|
|
116
|
+
private maxFindings;
|
|
117
|
+
private strict;
|
|
118
|
+
constructor(options?: SecurityGateOptions);
|
|
119
|
+
execute(): Promise<GateResult>;
|
|
120
|
+
private scan;
|
|
121
|
+
private scanFile;
|
|
122
|
+
private walkDir;
|
|
123
|
+
private rulesForFile;
|
|
124
|
+
private findEmptyCatchBlocks;
|
|
125
|
+
private summarize;
|
|
126
|
+
private isTestPath;
|
|
127
|
+
private isRuleDefinition;
|
|
128
|
+
private isSecurityTestFixture;
|
|
129
|
+
}
|
|
130
|
+
export {};
|