@hongmaple0820/scale-engine 0.33.0 → 0.39.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/README.en.md +86 -376
- package/README.md +95 -540
- package/dist/api/cli.js +293 -18
- package/dist/api/cli.js.map +1 -1
- package/dist/api/doctor.d.ts +38 -3
- package/dist/api/doctor.js +269 -44
- package/dist/api/doctor.js.map +1 -1
- package/dist/api/mcp.js +2 -2
- package/dist/api/mcp.js.map +1 -1
- package/dist/api/quickstart.d.ts +34 -4
- package/dist/api/quickstart.js +90 -73
- package/dist/api/quickstart.js.map +1 -1
- package/dist/bootstrap/DependencyBootstrap.d.ts +110 -0
- package/dist/bootstrap/DependencyBootstrap.js +829 -0
- package/dist/bootstrap/DependencyBootstrap.js.map +1 -0
- package/dist/bootstrap/DependencyBootstrapRenderer.d.ts +3 -0
- package/dist/bootstrap/DependencyBootstrapRenderer.js +140 -0
- package/dist/bootstrap/DependencyBootstrapRenderer.js.map +1 -0
- package/dist/capabilities/InstalledSkillsIntegration.js +14 -6
- package/dist/capabilities/InstalledSkillsIntegration.js.map +1 -1
- package/dist/cli/gateStatusCommands.d.ts +1 -0
- package/dist/cli/gateStatusCommands.js +52 -0
- package/dist/cli/gateStatusCommands.js.map +1 -0
- package/dist/cli/phaseCommands.js +15 -3
- package/dist/cli/phaseCommands.js.map +1 -1
- package/dist/cli/promptCommands.d.ts +1 -0
- package/dist/cli/promptCommands.js +57 -0
- package/dist/cli/promptCommands.js.map +1 -0
- package/dist/cli/scoreCommands.d.ts +1 -0
- package/dist/cli/scoreCommands.js +112 -0
- package/dist/cli/scoreCommands.js.map +1 -0
- package/dist/codegraph/CodeIntelligence.d.ts +12 -0
- package/dist/codegraph/CodeIntelligence.js +251 -30
- package/dist/codegraph/CodeIntelligence.js.map +1 -1
- package/dist/config/profiles.d.ts +12 -0
- package/dist/config/profiles.js +39 -4
- package/dist/config/profiles.js.map +1 -1
- package/dist/context/SessionStartSequence.js +13 -4
- package/dist/context/SessionStartSequence.js.map +1 -1
- package/dist/core/ExternalCommand.d.ts +9 -0
- package/dist/core/ExternalCommand.js +70 -0
- package/dist/core/ExternalCommand.js.map +1 -0
- package/dist/env/EnvironmentDoctor.d.ts +66 -0
- package/dist/env/EnvironmentDoctor.js +365 -0
- package/dist/env/EnvironmentDoctor.js.map +1 -0
- package/dist/i18n/Language.d.ts +9 -0
- package/dist/i18n/Language.js +38 -0
- package/dist/i18n/Language.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/knowledge/CerebrumManager.d.ts +2 -2
- package/dist/knowledge/CerebrumManager.js.map +1 -1
- package/dist/knowledge/GraphifyKnowledgeBase.d.ts +38 -0
- package/dist/knowledge/GraphifyKnowledgeBase.js +409 -0
- package/dist/knowledge/GraphifyKnowledgeBase.js.map +1 -0
- package/dist/memory/MemoryFabric.js +1 -0
- package/dist/memory/MemoryFabric.js.map +1 -1
- package/dist/memory/MemoryIntelligence.d.ts +42 -0
- package/dist/memory/MemoryIntelligence.js +215 -0
- package/dist/memory/MemoryIntelligence.js.map +1 -0
- package/dist/memory/MemoryProviders.d.ts +22 -0
- package/dist/memory/MemoryProviders.js +171 -5
- package/dist/memory/MemoryProviders.js.map +1 -1
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/prompts/PromptOptimizer.d.ts +42 -0
- package/dist/prompts/PromptOptimizer.js +309 -0
- package/dist/prompts/PromptOptimizer.js.map +1 -0
- package/dist/runtime/AiOsRuntime.d.ts +2 -0
- package/dist/runtime/AiOsRuntime.js +2 -0
- package/dist/runtime/AiOsRuntime.js.map +1 -1
- package/dist/runtime/ExecutionLedger.d.ts +46 -0
- package/dist/runtime/ExecutionLedger.js +71 -0
- package/dist/runtime/ExecutionLedger.js.map +1 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/setup/SetupWizard.d.ts +42 -0
- package/dist/setup/SetupWizard.js +156 -0
- package/dist/setup/SetupWizard.js.map +1 -0
- package/dist/skills/SkillRepository.js +7 -7
- package/dist/skills/SkillRepository.js.map +1 -1
- package/dist/skills/routing/SkillPolicy.js +2 -2
- package/dist/skills/routing/SkillPolicy.js.map +1 -1
- package/dist/testing/DiffTestSelector.js +1 -1
- package/dist/testing/DiffTestSelector.js.map +1 -1
- package/dist/tools/RtkRuntime.d.ts +9 -0
- package/dist/tools/RtkRuntime.js +43 -0
- package/dist/tools/RtkRuntime.js.map +1 -0
- package/dist/tools/ToolCapabilityRegistry.d.ts +5 -0
- package/dist/tools/ToolCapabilityRegistry.js +75 -13
- package/dist/tools/ToolCapabilityRegistry.js.map +1 -1
- package/dist/tools/ToolOrchestrator.js +6 -4
- package/dist/tools/ToolOrchestrator.js.map +1 -1
- package/dist/tools/ToolPolicy.js +16 -1
- package/dist/tools/ToolPolicy.js.map +1 -1
- package/dist/workflow/AdaptiveWorkflowRouter.d.ts +1 -0
- package/dist/workflow/AdaptiveWorkflowRouter.js +3 -0
- package/dist/workflow/AdaptiveWorkflowRouter.js.map +1 -1
- package/dist/workflow/CommitDiscipline.d.ts +68 -0
- package/dist/workflow/CommitDiscipline.js +328 -0
- package/dist/workflow/CommitDiscipline.js.map +1 -0
- package/dist/workflow/CrossRepoOrchestrator.d.ts +92 -0
- package/dist/workflow/CrossRepoOrchestrator.js +408 -0
- package/dist/workflow/CrossRepoOrchestrator.js.map +1 -0
- package/dist/workflow/GateCatalog.d.ts +61 -0
- package/dist/workflow/GateCatalog.js +212 -0
- package/dist/workflow/GateCatalog.js.map +1 -0
- package/dist/workflow/GovernanceRoi.d.ts +52 -0
- package/dist/workflow/GovernanceRoi.js +204 -0
- package/dist/workflow/GovernanceRoi.js.map +1 -0
- package/dist/workflow/GovernanceTemplatePacks.js +19 -4
- package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
- package/dist/workflow/GovernanceTemplates.js +2 -2
- package/dist/workflow/McpGovernance.d.ts +63 -0
- package/dist/workflow/McpGovernance.js +198 -0
- package/dist/workflow/McpGovernance.js.map +1 -0
- package/dist/workflow/SessionCoordinator.d.ts +103 -0
- package/dist/workflow/SessionCoordinator.js +401 -0
- package/dist/workflow/SessionCoordinator.js.map +1 -0
- package/dist/workflow/SessionPreamble.js +7 -2
- package/dist/workflow/SessionPreamble.js.map +1 -1
- package/dist/workflow/TaskDependencyGraph.d.ts +73 -0
- package/dist/workflow/TaskDependencyGraph.js +245 -0
- package/dist/workflow/TaskDependencyGraph.js.map +1 -0
- package/dist/workflow/TaskScoreEngine.d.ts +42 -0
- package/dist/workflow/TaskScoreEngine.js +181 -0
- package/dist/workflow/TaskScoreEngine.js.map +1 -0
- package/dist/workflow/WorkflowTemplates.d.ts +38 -0
- package/dist/workflow/WorkflowTemplates.js +371 -0
- package/dist/workflow/WorkflowTemplates.js.map +1 -0
- package/dist/workflow/WorkspacePolicy.d.ts +46 -0
- package/dist/workflow/WorkspacePolicy.js +141 -0
- package/dist/workflow/WorkspacePolicy.js.map +1 -0
- package/dist/workflow/WorkspaceTopology.d.ts +3 -0
- package/dist/workflow/WorkspaceTopology.js +40 -3
- package/dist/workflow/WorkspaceTopology.js.map +1 -1
- package/dist/workflow/gates/GateSystem.js +14 -11
- package/dist/workflow/gates/GateSystem.js.map +1 -1
- package/dist/workflow/index.d.ts +9 -0
- package/dist/workflow/index.js +9 -0
- package/dist/workflow/index.js.map +1 -1
- package/docs/CODE_INTELLIGENCE.md +48 -6
- package/docs/EXTERNAL_REFERENCES.md +5 -2
- package/docs/MEMORY_FABRIC.md +28 -3
- package/docs/SKILL-REPOSITORY.md +3 -3
- package/docs/THIRD_PARTY_SKILLS.md +50 -1
- package/docs/guides/GETTING_STARTED.md +24 -0
- package/docs/start/quickstart.md +107 -69
- package/docs/workflow/GATES_AND_SCORE.md +56 -0
- package/docs/workflow/PROMPT_OPTIMIZATION.md +44 -0
- package/docs/workflow/README.md +7 -0
- package/docs/workflow/node-library.md +3 -3
- package/docs/workflow/templates/skill-plan.md +1 -1
- package/package.json +13 -5
- package/scripts/workflow/provider-rehearsal.mjs +425 -0
- package/scripts/workflow/setup-smoke.mjs +299 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
// SCALE Engine — Task Dependency Graph (v0.36.0)
|
|
2
|
+
// Dependency declaration, topological sort, cycle detection for parallel task coordination
|
|
3
|
+
export class TaskDependencyGraph {
|
|
4
|
+
constructor(options = {}) {
|
|
5
|
+
this.nodes = new Map();
|
|
6
|
+
this.edges = [];
|
|
7
|
+
this.maxTasks = options.maxTasks ?? 100;
|
|
8
|
+
}
|
|
9
|
+
addTask(task) {
|
|
10
|
+
if (this.nodes.size >= this.maxTasks && !this.nodes.has(task.taskId)) {
|
|
11
|
+
throw new Error(`Task graph capacity (${this.maxTasks}) reached`);
|
|
12
|
+
}
|
|
13
|
+
this.nodes.set(task.taskId, task);
|
|
14
|
+
}
|
|
15
|
+
removeTask(taskId) {
|
|
16
|
+
this.nodes.delete(taskId);
|
|
17
|
+
this.edges = this.edges.filter(e => e.from !== taskId && e.to !== taskId);
|
|
18
|
+
}
|
|
19
|
+
addDependency(edge) {
|
|
20
|
+
if (!this.nodes.has(edge.from)) {
|
|
21
|
+
return { ok: false, error: `Source task "${edge.from}" not found` };
|
|
22
|
+
}
|
|
23
|
+
if (!this.nodes.has(edge.to)) {
|
|
24
|
+
return { ok: false, error: `Target task "${edge.to}" not found` };
|
|
25
|
+
}
|
|
26
|
+
if (edge.from === edge.to) {
|
|
27
|
+
return { ok: false, error: 'Self-dependency is not allowed' };
|
|
28
|
+
}
|
|
29
|
+
// Check for duplicate
|
|
30
|
+
const exists = this.edges.some(e => e.from === edge.from && e.to === edge.to);
|
|
31
|
+
if (exists)
|
|
32
|
+
return { ok: true };
|
|
33
|
+
// Check if adding this edge creates a cycle
|
|
34
|
+
const cycle = this.detectCycleWithEdge(edge);
|
|
35
|
+
if (cycle) {
|
|
36
|
+
return { ok: false, error: `Dependency creates cycle: ${cycle.join(' → ')}` };
|
|
37
|
+
}
|
|
38
|
+
this.edges.push(edge);
|
|
39
|
+
return { ok: true };
|
|
40
|
+
}
|
|
41
|
+
getTask(taskId) {
|
|
42
|
+
return this.nodes.get(taskId);
|
|
43
|
+
}
|
|
44
|
+
updateTaskStatus(taskId, status) {
|
|
45
|
+
const node = this.nodes.get(taskId);
|
|
46
|
+
if (!node)
|
|
47
|
+
return;
|
|
48
|
+
node.status = status;
|
|
49
|
+
if (status === 'done' || status === 'failed') {
|
|
50
|
+
node.completedAt = new Date().toISOString();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
getDependencies(taskId) {
|
|
54
|
+
return this.edges.filter(e => e.to === taskId);
|
|
55
|
+
}
|
|
56
|
+
getDependents(taskId) {
|
|
57
|
+
return this.edges.filter(e => e.from === taskId);
|
|
58
|
+
}
|
|
59
|
+
getBlockedTasks() {
|
|
60
|
+
const blocked = [];
|
|
61
|
+
for (const [taskId, node] of this.nodes) {
|
|
62
|
+
if (node.status === 'done' || node.status === 'failed')
|
|
63
|
+
continue;
|
|
64
|
+
const deps = this.getDependencies(taskId);
|
|
65
|
+
const waitingFor = [];
|
|
66
|
+
const reason = [];
|
|
67
|
+
for (const dep of deps) {
|
|
68
|
+
const depNode = this.nodes.get(dep.from);
|
|
69
|
+
if (depNode && depNode.status !== 'done') {
|
|
70
|
+
waitingFor.push(dep.from);
|
|
71
|
+
reason.push(`${dep.from} (${depNode.status}): ${dep.reason}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (waitingFor.length > 0) {
|
|
75
|
+
blocked.push({ taskId, waitingFor, reason });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return blocked;
|
|
79
|
+
}
|
|
80
|
+
getReadyTasks() {
|
|
81
|
+
const ready = [];
|
|
82
|
+
for (const [taskId, node] of this.nodes) {
|
|
83
|
+
if (node.status !== 'planned')
|
|
84
|
+
continue;
|
|
85
|
+
const deps = this.getDependencies(taskId);
|
|
86
|
+
const allMet = deps.every(dep => {
|
|
87
|
+
const depNode = this.nodes.get(dep.from);
|
|
88
|
+
return depNode?.status === 'done';
|
|
89
|
+
});
|
|
90
|
+
if (allMet)
|
|
91
|
+
ready.push(taskId);
|
|
92
|
+
}
|
|
93
|
+
return ready;
|
|
94
|
+
}
|
|
95
|
+
topologicalSort() {
|
|
96
|
+
const ids = [...this.nodes.keys()];
|
|
97
|
+
const inDegree = new Map();
|
|
98
|
+
const adjList = new Map();
|
|
99
|
+
for (const id of ids) {
|
|
100
|
+
inDegree.set(id, 0);
|
|
101
|
+
adjList.set(id, []);
|
|
102
|
+
}
|
|
103
|
+
for (const edge of this.edges) {
|
|
104
|
+
adjList.get(edge.from).push(edge.to);
|
|
105
|
+
inDegree.set(edge.to, (inDegree.get(edge.to) ?? 0) + 1);
|
|
106
|
+
}
|
|
107
|
+
// Kahn's algorithm with level tracking
|
|
108
|
+
const queue = [];
|
|
109
|
+
for (const [id, deg] of inDegree) {
|
|
110
|
+
if (deg === 0)
|
|
111
|
+
queue.push(id);
|
|
112
|
+
}
|
|
113
|
+
const order = [];
|
|
114
|
+
const levels = [];
|
|
115
|
+
while (queue.length > 0) {
|
|
116
|
+
const levelSize = queue.length;
|
|
117
|
+
const currentLevel = [];
|
|
118
|
+
for (let i = 0; i < levelSize; i++) {
|
|
119
|
+
const current = queue.shift();
|
|
120
|
+
currentLevel.push(current);
|
|
121
|
+
order.push(current);
|
|
122
|
+
for (const neighbor of adjList.get(current) ?? []) {
|
|
123
|
+
const newDeg = inDegree.get(neighbor) - 1;
|
|
124
|
+
inDegree.set(neighbor, newDeg);
|
|
125
|
+
if (newDeg === 0)
|
|
126
|
+
queue.push(neighbor);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
levels.push(currentLevel);
|
|
130
|
+
}
|
|
131
|
+
if (order.length !== ids.length) {
|
|
132
|
+
// Find the cycle
|
|
133
|
+
const cycle = this.findCycle();
|
|
134
|
+
return { order, levels, hasCycle: true, cyclePath: cycle ?? undefined };
|
|
135
|
+
}
|
|
136
|
+
return { order, levels, hasCycle: false };
|
|
137
|
+
}
|
|
138
|
+
summarize() {
|
|
139
|
+
const nodes = [...this.nodes.values()];
|
|
140
|
+
const totalTasks = nodes.length;
|
|
141
|
+
const completedTasks = nodes.filter(n => n.status === 'done').length;
|
|
142
|
+
const activeTasks = nodes.filter(n => n.status === 'active').length;
|
|
143
|
+
const blockedTasks = this.getBlockedTasks().length;
|
|
144
|
+
const readyTasks = this.getReadyTasks();
|
|
145
|
+
const longestPath = this.computeLongestPath();
|
|
146
|
+
return {
|
|
147
|
+
totalTasks,
|
|
148
|
+
totalEdges: this.edges.length,
|
|
149
|
+
completedTasks,
|
|
150
|
+
activeTasks,
|
|
151
|
+
blockedTasks,
|
|
152
|
+
readyTasks,
|
|
153
|
+
longestPath,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
listTasks() {
|
|
157
|
+
return [...this.nodes.values()];
|
|
158
|
+
}
|
|
159
|
+
listEdges() {
|
|
160
|
+
return [...this.edges];
|
|
161
|
+
}
|
|
162
|
+
toJSON() {
|
|
163
|
+
return { nodes: this.listTasks(), edges: this.listEdges() };
|
|
164
|
+
}
|
|
165
|
+
static fromJSON(data) {
|
|
166
|
+
const graph = new TaskDependencyGraph({ maxTasks: data.nodes.length + 50 });
|
|
167
|
+
for (const node of data.nodes)
|
|
168
|
+
graph.addTask(node);
|
|
169
|
+
for (const edge of data.edges)
|
|
170
|
+
graph.addDependency(edge);
|
|
171
|
+
return graph;
|
|
172
|
+
}
|
|
173
|
+
// --- Private ---
|
|
174
|
+
detectCycleWithEdge(newEdge) {
|
|
175
|
+
this.edges.push(newEdge);
|
|
176
|
+
const cycle = this.findCycle();
|
|
177
|
+
this.edges.pop();
|
|
178
|
+
return cycle;
|
|
179
|
+
}
|
|
180
|
+
findCycle() {
|
|
181
|
+
const visited = new Set();
|
|
182
|
+
const inStack = new Set();
|
|
183
|
+
const parent = new Map();
|
|
184
|
+
const adjList = new Map();
|
|
185
|
+
for (const id of this.nodes.keys())
|
|
186
|
+
adjList.set(id, []);
|
|
187
|
+
for (const edge of this.edges)
|
|
188
|
+
adjList.get(edge.from)?.push(edge.to);
|
|
189
|
+
for (const start of this.nodes.keys()) {
|
|
190
|
+
if (visited.has(start))
|
|
191
|
+
continue;
|
|
192
|
+
const result = this.dfsCycle(start, visited, inStack, parent, adjList);
|
|
193
|
+
if (result)
|
|
194
|
+
return result;
|
|
195
|
+
}
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
dfsCycle(current, visited, inStack, parent, adjList) {
|
|
199
|
+
visited.add(current);
|
|
200
|
+
inStack.add(current);
|
|
201
|
+
for (const neighbor of adjList.get(current) ?? []) {
|
|
202
|
+
if (!visited.has(neighbor)) {
|
|
203
|
+
parent.set(neighbor, current);
|
|
204
|
+
const result = this.dfsCycle(neighbor, visited, inStack, parent, adjList);
|
|
205
|
+
if (result)
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
else if (inStack.has(neighbor)) {
|
|
209
|
+
// Reconstruct cycle
|
|
210
|
+
const cycle = [neighbor, current];
|
|
211
|
+
let node = current;
|
|
212
|
+
while (node !== neighbor) {
|
|
213
|
+
node = parent.get(node);
|
|
214
|
+
cycle.push(node);
|
|
215
|
+
}
|
|
216
|
+
return cycle.reverse();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
inStack.delete(current);
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
computeLongestPath() {
|
|
223
|
+
const topo = this.topologicalSort();
|
|
224
|
+
if (topo.hasCycle)
|
|
225
|
+
return -1;
|
|
226
|
+
const dist = new Map();
|
|
227
|
+
for (const id of this.nodes.keys())
|
|
228
|
+
dist.set(id, 0);
|
|
229
|
+
const adjList = new Map();
|
|
230
|
+
for (const id of this.nodes.keys())
|
|
231
|
+
adjList.set(id, []);
|
|
232
|
+
for (const edge of this.edges)
|
|
233
|
+
adjList.get(edge.from)?.push(edge.to);
|
|
234
|
+
for (const node of topo.order) {
|
|
235
|
+
for (const neighbor of adjList.get(node) ?? []) {
|
|
236
|
+
dist.set(neighbor, Math.max(dist.get(neighbor), dist.get(node) + 1));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
let max = 0;
|
|
240
|
+
for (const d of dist.values())
|
|
241
|
+
max = Math.max(max, d);
|
|
242
|
+
return max;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=TaskDependencyGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskDependencyGraph.js","sourceRoot":"","sources":["../../src/workflow/TaskDependencyGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type GovernanceRoiSummary } from './GovernanceRoi.js';
|
|
2
|
+
import { type GateStatusReport } from './GateCatalog.js';
|
|
3
|
+
export type TaskScoreGrade = 'excellent' | 'good' | 'needs-work' | 'blocked';
|
|
4
|
+
export interface TaskScoreDimension {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
score: number;
|
|
8
|
+
maxScore: number;
|
|
9
|
+
status: 'pass' | 'warn' | 'fail';
|
|
10
|
+
evidence: string[];
|
|
11
|
+
recommendations: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface TaskScoreReport {
|
|
14
|
+
projectDir: string;
|
|
15
|
+
scaleDir: string;
|
|
16
|
+
generatedAt: string;
|
|
17
|
+
taskId?: string;
|
|
18
|
+
level: 'S' | 'M' | 'L' | 'CRITICAL';
|
|
19
|
+
totalScore: number;
|
|
20
|
+
maxScore: 100;
|
|
21
|
+
grade: TaskScoreGrade;
|
|
22
|
+
passed: boolean;
|
|
23
|
+
dimensions: TaskScoreDimension[];
|
|
24
|
+
blockers: string[];
|
|
25
|
+
recommendations: string[];
|
|
26
|
+
inputs: {
|
|
27
|
+
changedFiles: string[];
|
|
28
|
+
recentGateEvidence: number;
|
|
29
|
+
};
|
|
30
|
+
references: {
|
|
31
|
+
governanceRoi: GovernanceRoiSummary;
|
|
32
|
+
gateStatus: Pick<GateStatusReport, 'summary' | 'verificationProfile' | 'policy' | 'extensions' | 'warnings'>;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export interface CreateTaskScoreOptions {
|
|
36
|
+
projectDir?: string;
|
|
37
|
+
scaleDir?: string;
|
|
38
|
+
taskId?: string;
|
|
39
|
+
level?: 'S' | 'M' | 'L' | 'CRITICAL';
|
|
40
|
+
changedFiles?: string[];
|
|
41
|
+
}
|
|
42
|
+
export declare function createTaskScoreReport(options?: CreateTaskScoreOptions): TaskScoreReport;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { isAbsolute, resolve } from 'node:path';
|
|
2
|
+
import { inspectCodeIntelligence } from '../codegraph/CodeIntelligence.js';
|
|
3
|
+
import { inspectMemoryProviders } from '../memory/MemoryProviders.js';
|
|
4
|
+
import { collectGovernanceRoi } from './GovernanceRoi.js';
|
|
5
|
+
import { doctorEngineeringStandards } from './EngineeringStandards.js';
|
|
6
|
+
import { EvidenceStore } from './EvidenceStore.js';
|
|
7
|
+
import { createGateStatusReport } from './GateCatalog.js';
|
|
8
|
+
export function createTaskScoreReport(options = {}) {
|
|
9
|
+
const projectDir = resolve(options.projectDir ?? process.cwd());
|
|
10
|
+
const scaleDir = resolveScaleRoot(projectDir, options.scaleDir);
|
|
11
|
+
const level = options.level ?? 'M';
|
|
12
|
+
const changedFiles = uniquePaths(options.changedFiles ?? []);
|
|
13
|
+
const gateEvidence = new EvidenceStore(scaleDir).listGateResults(50);
|
|
14
|
+
const standards = doctorEngineeringStandards({
|
|
15
|
+
projectDir,
|
|
16
|
+
scaleDir,
|
|
17
|
+
changedFiles: changedFiles.length > 0 ? changedFiles : undefined,
|
|
18
|
+
});
|
|
19
|
+
const governanceRoi = collectGovernanceRoi({ projectDir, scaleDir });
|
|
20
|
+
const codeIntelligence = inspectCodeIntelligence({ projectDir, scaleDir });
|
|
21
|
+
const memory = inspectMemoryProviders({ projectDir, scaleDir });
|
|
22
|
+
const gateStatus = createGateStatusReport({ projectDir, scaleDir });
|
|
23
|
+
const dimensions = [
|
|
24
|
+
verificationDimension(gateEvidence),
|
|
25
|
+
architectureDimension(standards.ok, standards.findings),
|
|
26
|
+
evidenceDimension(gateEvidence),
|
|
27
|
+
contextDimension(codeIntelligence.availableProviderCount, codeIntelligence.projectIndexExists, memory.availableProviderCount),
|
|
28
|
+
efficiencyDimension(governanceRoi),
|
|
29
|
+
riskDimension(level, standards.findings, gateStatus.summary.blockingExtensions),
|
|
30
|
+
];
|
|
31
|
+
const totalScore = clampScore(dimensions.reduce((sum, dimension) => sum + dimension.score, 0));
|
|
32
|
+
const blockers = dimensions
|
|
33
|
+
.filter(dimension => dimension.status === 'fail')
|
|
34
|
+
.flatMap(dimension => dimension.evidence.map(item => `${dimension.name}: ${item}`));
|
|
35
|
+
const recommendations = uniqueStrings(dimensions.flatMap(dimension => dimension.recommendations));
|
|
36
|
+
const grade = gradeForScore(totalScore, blockers.length > 0);
|
|
37
|
+
return {
|
|
38
|
+
projectDir,
|
|
39
|
+
scaleDir,
|
|
40
|
+
generatedAt: new Date().toISOString(),
|
|
41
|
+
taskId: options.taskId,
|
|
42
|
+
level,
|
|
43
|
+
totalScore,
|
|
44
|
+
maxScore: 100,
|
|
45
|
+
grade,
|
|
46
|
+
passed: blockers.length === 0 && totalScore >= thresholdForLevel(level),
|
|
47
|
+
dimensions,
|
|
48
|
+
blockers,
|
|
49
|
+
recommendations,
|
|
50
|
+
inputs: {
|
|
51
|
+
changedFiles,
|
|
52
|
+
recentGateEvidence: gateEvidence.length,
|
|
53
|
+
},
|
|
54
|
+
references: {
|
|
55
|
+
governanceRoi,
|
|
56
|
+
gateStatus: {
|
|
57
|
+
summary: gateStatus.summary,
|
|
58
|
+
verificationProfile: gateStatus.verificationProfile,
|
|
59
|
+
policy: gateStatus.policy,
|
|
60
|
+
extensions: gateStatus.extensions,
|
|
61
|
+
warnings: gateStatus.warnings,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function verificationDimension(records) {
|
|
67
|
+
if (records.length === 0) {
|
|
68
|
+
return dimension('verification', 'Verification', 0, 30, 'fail', ['No persisted gate evidence was found.'], ['Run the required preflight or task verification gates before scoring.']);
|
|
69
|
+
}
|
|
70
|
+
const passed = records.filter(record => record.passed).length;
|
|
71
|
+
const passRate = passed / records.length;
|
|
72
|
+
const score = Math.round(passRate * 30);
|
|
73
|
+
return dimension('verification', 'Verification', score, 30, passRate >= 0.9 ? 'pass' : passRate >= 0.7 ? 'warn' : 'fail', [`${passed}/${records.length} recent gate records passed.`], passRate < 0.9 ? ['Fix failed gates and rerun verification before release.'] : []);
|
|
74
|
+
}
|
|
75
|
+
function architectureDimension(ok, findings) {
|
|
76
|
+
const blocking = findings.filter(finding => finding.severity === 'fail');
|
|
77
|
+
const warnings = findings.filter(finding => finding.severity === 'warn');
|
|
78
|
+
if (blocking.length > 0) {
|
|
79
|
+
return dimension('architecture', 'Architecture standards', 0, 20, 'fail', [`${blocking.length} blocking standards finding(s).`], ['Fix blocking architecture or engineering standards findings.']);
|
|
80
|
+
}
|
|
81
|
+
const score = ok && warnings.length === 0 ? 20 : Math.max(10, 20 - Math.min(10, warnings.length));
|
|
82
|
+
return dimension('architecture', 'Architecture standards', score, 20, warnings.length === 0 ? 'pass' : 'warn', warnings.length === 0 ? ['Standards doctor passed.'] : [`${warnings.length} advisory standards finding(s).`], warnings.length > 0 ? ['Review advisory standards findings before hardening the gate.'] : []);
|
|
83
|
+
}
|
|
84
|
+
function evidenceDimension(records) {
|
|
85
|
+
const withEvidence = records.filter(record => record.evidenceItems.length > 0 || record.evidence.trim().length > 0).length;
|
|
86
|
+
const ratio = records.length > 0 ? withEvidence / records.length : 0;
|
|
87
|
+
const score = Math.round(ratio * 15);
|
|
88
|
+
return dimension('evidence', 'Evidence completeness', score, 15, ratio >= 0.9 ? 'pass' : ratio >= 0.5 ? 'warn' : 'fail', records.length > 0 ? [`${withEvidence}/${records.length} gate records include evidence.`] : ['No evidence records found.'], ratio < 0.9 ? ['Persist command and gate evidence instead of relying on narrative claims.'] : []);
|
|
89
|
+
}
|
|
90
|
+
function contextDimension(codeProviders, codeIndexExists, memoryProviders) {
|
|
91
|
+
let score = 0;
|
|
92
|
+
const evidence = [];
|
|
93
|
+
if (codeProviders > 0) {
|
|
94
|
+
score += 4;
|
|
95
|
+
evidence.push(`${codeProviders} code intelligence provider(s) available.`);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
evidence.push('No code intelligence provider is available.');
|
|
99
|
+
}
|
|
100
|
+
if (codeIndexExists) {
|
|
101
|
+
score += 3;
|
|
102
|
+
evidence.push('Project code index exists.');
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
evidence.push('Project code index is missing.');
|
|
106
|
+
}
|
|
107
|
+
if (memoryProviders > 0) {
|
|
108
|
+
score += 3;
|
|
109
|
+
evidence.push(`${memoryProviders} memory provider(s) available.`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
evidence.push('No memory provider is available.');
|
|
113
|
+
}
|
|
114
|
+
return dimension('context', 'Context and memory use', score, 10, score >= 8 ? 'pass' : score >= 3 ? 'warn' : 'fail', evidence, score < 8 ? ['Initialize CodeGraph and memory providers so deterministic recall can reduce model context.'] : []);
|
|
115
|
+
}
|
|
116
|
+
function efficiencyDimension(roi) {
|
|
117
|
+
const savings = roi.cost.contextCompilerSavings + roi.cost.cacheHitSavings;
|
|
118
|
+
const hasSavings = savings > 0;
|
|
119
|
+
const hasUsage = roi.cost.totalTokensUsed > 0;
|
|
120
|
+
const score = hasSavings ? 10 : hasUsage ? 5 : 4;
|
|
121
|
+
return dimension('efficiency', 'Cost efficiency', score, 10, hasSavings ? 'pass' : 'warn', [
|
|
122
|
+
`Governance ROI score is ${roi.roi.overallScore}/100.`,
|
|
123
|
+
`Recorded context/cache savings: ${savings}.`,
|
|
124
|
+
], hasSavings ? [] : ['Record model usage and cache savings to prove token reduction instead of estimating it.']);
|
|
125
|
+
}
|
|
126
|
+
function riskDimension(level, findings, blockingExtensions) {
|
|
127
|
+
const blockingFindings = findings.filter(finding => finding.severity === 'fail').length;
|
|
128
|
+
const highRiskLevel = level === 'L' || level === 'CRITICAL';
|
|
129
|
+
const score = blockingFindings > 0
|
|
130
|
+
? 0
|
|
131
|
+
: highRiskLevel && blockingExtensions === 0
|
|
132
|
+
? 5
|
|
133
|
+
: 15;
|
|
134
|
+
return dimension('risk', 'Risk control', score, 15, score >= 12 ? 'pass' : score >= 5 ? 'warn' : 'fail', [
|
|
135
|
+
`Task level: ${level}.`,
|
|
136
|
+
`${blockingExtensions} blocking extension gate(s) configured.`,
|
|
137
|
+
`${blockingFindings} blocking standards finding(s).`,
|
|
138
|
+
], score < 12 ? ['Use stricter gate profiles for L/CRITICAL work and resolve blocking standards findings.'] : []);
|
|
139
|
+
}
|
|
140
|
+
function dimension(id, name, score, maxScore, status, evidence, recommendations) {
|
|
141
|
+
return {
|
|
142
|
+
id,
|
|
143
|
+
name,
|
|
144
|
+
score: Math.max(0, Math.min(maxScore, score)),
|
|
145
|
+
maxScore,
|
|
146
|
+
status,
|
|
147
|
+
evidence,
|
|
148
|
+
recommendations,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function thresholdForLevel(level) {
|
|
152
|
+
if (level === 'CRITICAL')
|
|
153
|
+
return 90;
|
|
154
|
+
if (level === 'L')
|
|
155
|
+
return 85;
|
|
156
|
+
if (level === 'M')
|
|
157
|
+
return 75;
|
|
158
|
+
return 65;
|
|
159
|
+
}
|
|
160
|
+
function gradeForScore(score, blocked) {
|
|
161
|
+
if (blocked)
|
|
162
|
+
return 'blocked';
|
|
163
|
+
if (score >= 90)
|
|
164
|
+
return 'excellent';
|
|
165
|
+
if (score >= 75)
|
|
166
|
+
return 'good';
|
|
167
|
+
return 'needs-work';
|
|
168
|
+
}
|
|
169
|
+
function clampScore(score) {
|
|
170
|
+
return Math.max(0, Math.min(100, Math.round(score)));
|
|
171
|
+
}
|
|
172
|
+
function resolveScaleRoot(projectDir, scaleDir = '.scale') {
|
|
173
|
+
return isAbsolute(scaleDir) ? scaleDir : resolve(projectDir, scaleDir);
|
|
174
|
+
}
|
|
175
|
+
function uniquePaths(paths) {
|
|
176
|
+
return uniqueStrings(paths.map(path => path.replace(/\\/g, '/').trim()).filter(Boolean));
|
|
177
|
+
}
|
|
178
|
+
function uniqueStrings(values) {
|
|
179
|
+
return Array.from(new Set(values));
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=TaskScoreEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskScoreEngine.js","sourceRoot":"","sources":["../../src/workflow/TaskScoreEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { WorkflowProfile } from './AdaptiveWorkflowRouter.js';
|
|
2
|
+
export type TemplateStepType = 'explore' | 'plan' | 'build' | 'verify' | 'review' | 'ship';
|
|
3
|
+
export type TemplateRiskLevel = 'low' | 'medium' | 'high' | 'critical';
|
|
4
|
+
export interface WorkflowStepTemplate {
|
|
5
|
+
id: string;
|
|
6
|
+
type: TemplateStepType;
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
required: boolean;
|
|
10
|
+
riskLevel: TemplateRiskLevel;
|
|
11
|
+
estimatedDuration: string;
|
|
12
|
+
evidenceRequired: string[];
|
|
13
|
+
tools: string[];
|
|
14
|
+
skipConditions?: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface WorkflowTemplate {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
profile: WorkflowProfile;
|
|
21
|
+
riskLevel: TemplateRiskLevel;
|
|
22
|
+
steps: WorkflowStepTemplate[];
|
|
23
|
+
exitCriteria: string[];
|
|
24
|
+
tags: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface WorkflowTemplateInput {
|
|
27
|
+
profile: WorkflowProfile;
|
|
28
|
+
task: string;
|
|
29
|
+
level: string;
|
|
30
|
+
files?: string[];
|
|
31
|
+
riskFactors?: string[];
|
|
32
|
+
}
|
|
33
|
+
export declare const WORKFLOW_TEMPLATES: Record<string, WorkflowTemplate>;
|
|
34
|
+
export declare function selectTemplate(input: WorkflowTemplateInput): WorkflowTemplate;
|
|
35
|
+
export declare function customizeTemplate(template: WorkflowTemplate, overrides: Partial<WorkflowTemplate>): WorkflowTemplate;
|
|
36
|
+
export declare function listTemplates(): WorkflowTemplate[];
|
|
37
|
+
export declare function getTemplateSteps(templateId: string): WorkflowStepTemplate[];
|
|
38
|
+
export declare function formatTemplateForAgent(template: WorkflowTemplate): string;
|