@hongmaple0820/scale-engine 0.33.0 → 0.38.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 (108) hide show
  1. package/README.en.md +86 -376
  2. package/README.md +89 -549
  3. package/dist/api/cli.js +185 -12
  4. package/dist/api/cli.js.map +1 -1
  5. package/dist/api/doctor.d.ts +38 -3
  6. package/dist/api/doctor.js +269 -44
  7. package/dist/api/doctor.js.map +1 -1
  8. package/dist/api/mcp.js +2 -2
  9. package/dist/api/mcp.js.map +1 -1
  10. package/dist/api/quickstart.d.ts +34 -4
  11. package/dist/api/quickstart.js +90 -73
  12. package/dist/api/quickstart.js.map +1 -1
  13. package/dist/bootstrap/DependencyBootstrap.d.ts +89 -0
  14. package/dist/bootstrap/DependencyBootstrap.js +441 -0
  15. package/dist/bootstrap/DependencyBootstrap.js.map +1 -0
  16. package/dist/capabilities/InstalledSkillsIntegration.js +14 -6
  17. package/dist/capabilities/InstalledSkillsIntegration.js.map +1 -1
  18. package/dist/codegraph/CodeIntelligence.d.ts +12 -0
  19. package/dist/codegraph/CodeIntelligence.js +251 -30
  20. package/dist/codegraph/CodeIntelligence.js.map +1 -1
  21. package/dist/config/profiles.d.ts +12 -0
  22. package/dist/config/profiles.js +39 -4
  23. package/dist/config/profiles.js.map +1 -1
  24. package/dist/core/ExternalCommand.d.ts +9 -0
  25. package/dist/core/ExternalCommand.js +56 -0
  26. package/dist/core/ExternalCommand.js.map +1 -0
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/knowledge/CerebrumManager.d.ts +2 -2
  31. package/dist/knowledge/CerebrumManager.js.map +1 -1
  32. package/dist/knowledge/GraphifyKnowledgeBase.d.ts +38 -0
  33. package/dist/knowledge/GraphifyKnowledgeBase.js +409 -0
  34. package/dist/knowledge/GraphifyKnowledgeBase.js.map +1 -0
  35. package/dist/memory/MemoryFabric.js +1 -0
  36. package/dist/memory/MemoryFabric.js.map +1 -1
  37. package/dist/memory/MemoryIntelligence.d.ts +42 -0
  38. package/dist/memory/MemoryIntelligence.js +215 -0
  39. package/dist/memory/MemoryIntelligence.js.map +1 -0
  40. package/dist/memory/MemoryProviders.d.ts +22 -0
  41. package/dist/memory/MemoryProviders.js +138 -5
  42. package/dist/memory/MemoryProviders.js.map +1 -1
  43. package/dist/memory/index.d.ts +1 -0
  44. package/dist/memory/index.js +1 -0
  45. package/dist/memory/index.js.map +1 -1
  46. package/dist/runtime/AiOsRuntime.d.ts +2 -0
  47. package/dist/runtime/AiOsRuntime.js +2 -0
  48. package/dist/runtime/AiOsRuntime.js.map +1 -1
  49. package/dist/runtime/ExecutionLedger.d.ts +46 -0
  50. package/dist/runtime/ExecutionLedger.js +71 -0
  51. package/dist/runtime/ExecutionLedger.js.map +1 -0
  52. package/dist/runtime/index.d.ts +1 -0
  53. package/dist/runtime/index.js +1 -0
  54. package/dist/runtime/index.js.map +1 -1
  55. package/dist/skills/SkillRepository.js +5 -5
  56. package/dist/skills/SkillRepository.js.map +1 -1
  57. package/dist/skills/routing/SkillPolicy.js +2 -2
  58. package/dist/skills/routing/SkillPolicy.js.map +1 -1
  59. package/dist/tools/RtkRuntime.d.ts +9 -0
  60. package/dist/tools/RtkRuntime.js +43 -0
  61. package/dist/tools/RtkRuntime.js.map +1 -0
  62. package/dist/tools/ToolCapabilityRegistry.d.ts +1 -0
  63. package/dist/tools/ToolCapabilityRegistry.js +68 -11
  64. package/dist/tools/ToolCapabilityRegistry.js.map +1 -1
  65. package/dist/tools/ToolOrchestrator.js +6 -4
  66. package/dist/tools/ToolOrchestrator.js.map +1 -1
  67. package/dist/tools/ToolPolicy.js +16 -1
  68. package/dist/tools/ToolPolicy.js.map +1 -1
  69. package/dist/workflow/AdaptiveWorkflowRouter.d.ts +1 -0
  70. package/dist/workflow/AdaptiveWorkflowRouter.js +3 -0
  71. package/dist/workflow/AdaptiveWorkflowRouter.js.map +1 -1
  72. package/dist/workflow/CommitDiscipline.d.ts +68 -0
  73. package/dist/workflow/CommitDiscipline.js +327 -0
  74. package/dist/workflow/CommitDiscipline.js.map +1 -0
  75. package/dist/workflow/CrossRepoOrchestrator.d.ts +92 -0
  76. package/dist/workflow/CrossRepoOrchestrator.js +400 -0
  77. package/dist/workflow/CrossRepoOrchestrator.js.map +1 -0
  78. package/dist/workflow/GovernanceRoi.d.ts +52 -0
  79. package/dist/workflow/GovernanceRoi.js +204 -0
  80. package/dist/workflow/GovernanceRoi.js.map +1 -0
  81. package/dist/workflow/GovernanceTemplates.js +2 -2
  82. package/dist/workflow/McpGovernance.d.ts +63 -0
  83. package/dist/workflow/McpGovernance.js +198 -0
  84. package/dist/workflow/McpGovernance.js.map +1 -0
  85. package/dist/workflow/SessionCoordinator.d.ts +103 -0
  86. package/dist/workflow/SessionCoordinator.js +401 -0
  87. package/dist/workflow/SessionCoordinator.js.map +1 -0
  88. package/dist/workflow/TaskDependencyGraph.d.ts +73 -0
  89. package/dist/workflow/TaskDependencyGraph.js +245 -0
  90. package/dist/workflow/TaskDependencyGraph.js.map +1 -0
  91. package/dist/workflow/WorkflowTemplates.d.ts +38 -0
  92. package/dist/workflow/WorkflowTemplates.js +371 -0
  93. package/dist/workflow/WorkflowTemplates.js.map +1 -0
  94. package/dist/workflow/WorkspacePolicy.d.ts +46 -0
  95. package/dist/workflow/WorkspacePolicy.js +141 -0
  96. package/dist/workflow/WorkspacePolicy.js.map +1 -0
  97. package/dist/workflow/gates/GateSystem.js +12 -9
  98. package/dist/workflow/gates/GateSystem.js.map +1 -1
  99. package/dist/workflow/index.d.ts +7 -0
  100. package/dist/workflow/index.js +7 -0
  101. package/dist/workflow/index.js.map +1 -1
  102. package/docs/CODE_INTELLIGENCE.md +22 -5
  103. package/docs/EXTERNAL_REFERENCES.md +5 -2
  104. package/docs/MEMORY_FABRIC.md +7 -3
  105. package/docs/SKILL-REPOSITORY.md +3 -3
  106. package/docs/start/quickstart.md +11 -0
  107. package/docs/workflow/templates/skill-plan.md +1 -1
  108. package/package.json +3 -2
@@ -0,0 +1,400 @@
1
+ // SCALE Engine — Cross-Repo Orchestrator
2
+ // Multi-repo Git workflow: coordinated branching, change graph, merge ordering, ship pipeline
3
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
4
+ import { isAbsolute, join, resolve } from 'node:path';
5
+ import { execSync } from 'node:child_process';
6
+ // ============================================================================
7
+ // CrossRepoOrchestrator
8
+ // ============================================================================
9
+ export class CrossRepoOrchestrator {
10
+ constructor(input = {}) {
11
+ this.projectDir = resolve(input.projectDir ?? process.cwd());
12
+ this.scaleRoot = isAbsolute(input.scaleDir ?? '')
13
+ ? input.scaleDir
14
+ : join(this.projectDir, input.scaleDir ?? '.scale');
15
+ this.stateDir = join(this.scaleRoot, 'cross-repo');
16
+ this.statePath = join(this.stateDir, 'state.json');
17
+ this.branches = [];
18
+ this.changes = [];
19
+ this.repositories = [];
20
+ this.loadTopology();
21
+ this.loadState();
22
+ }
23
+ // --------------------------------------------------------------------------
24
+ // Branch Management
25
+ // --------------------------------------------------------------------------
26
+ createCoordinatedBranch(branchName, repoNames, options = {}) {
27
+ const missing = repoNames.filter(name => !this.repositories.some(r => r.name === name));
28
+ if (missing.length > 0) {
29
+ throw new Error(`Repositories not found in topology: ${missing.join(', ')}`);
30
+ }
31
+ const branch = {
32
+ name: branchName,
33
+ repos: repoNames,
34
+ createdAt: new Date().toISOString(),
35
+ createdBy: options.createdBy ?? 'session',
36
+ };
37
+ this.branches.push(branch);
38
+ this.saveState();
39
+ return branch;
40
+ }
41
+ deleteCoordinatedBranch(branchName) {
42
+ this.branches = this.branches.filter(b => b.name !== branchName);
43
+ this.changes = this.changes.filter(c => c.branch !== branchName);
44
+ this.saveState();
45
+ }
46
+ getManagedBranches() {
47
+ return [...this.branches];
48
+ }
49
+ // --------------------------------------------------------------------------
50
+ // Change Tracking
51
+ // --------------------------------------------------------------------------
52
+ registerChange(change) {
53
+ const existing = this.changes.find(c => c.repoName === change.repoName && c.branch === change.branch && c.status !== 'merged' && c.status !== 'shipped');
54
+ if (existing) {
55
+ Object.assign(existing, change);
56
+ this.saveState();
57
+ return existing;
58
+ }
59
+ const fullChange = {
60
+ ...change,
61
+ status: 'planned',
62
+ startedAt: new Date().toISOString(),
63
+ };
64
+ this.changes.push(fullChange);
65
+ this.saveState();
66
+ return fullChange;
67
+ }
68
+ updateChangeStatus(repoName, branch, status) {
69
+ const change = this.changes.find(c => c.repoName === repoName && c.branch === branch);
70
+ if (!change)
71
+ return;
72
+ change.status = status;
73
+ if (status === 'merged')
74
+ change.mergedAt = new Date().toISOString();
75
+ if (status === 'shipped')
76
+ change.shippedAt = new Date().toISOString();
77
+ this.saveState();
78
+ }
79
+ // --------------------------------------------------------------------------
80
+ // Merge Planning
81
+ // --------------------------------------------------------------------------
82
+ buildMergePlan(branchName) {
83
+ const branchChanges = this.changes.filter(c => c.branch === branchName && c.status !== 'merged' && c.status !== 'shipped');
84
+ const blockers = [];
85
+ if (branchChanges.length === 0) {
86
+ return { changes: [], mergeOrder: [], testOrder: [], deployOrder: [], blockers: ['No changes registered for this branch.'] };
87
+ }
88
+ // Topological sort of repo dependencies
89
+ const mergeOrder = this.resolveMergeOrder(branchChanges);
90
+ const testOrder = [...mergeOrder]; // test in merge order
91
+ const deployOrder = [...mergeOrder].reverse(); // deploy in reverse (leaf services first in deploy, or dependents first)
92
+ // Check for missing dependencies
93
+ for (const change of branchChanges) {
94
+ for (const dep of change.dependsOn) {
95
+ if (!branchChanges.some(c => c.repoName === dep)) {
96
+ blockers.push(`${change.repoName} depends on ${dep}, but ${dep} has no changes on branch ${branchName}.`);
97
+ }
98
+ }
99
+ }
100
+ // Check for unresolved statuses
101
+ for (const change of branchChanges) {
102
+ if (change.status === 'planned') {
103
+ blockers.push(`${change.repoName} is still planned — complete implementation before merging.`);
104
+ }
105
+ }
106
+ return { changes: branchChanges, mergeOrder, testOrder, deployOrder, blockers };
107
+ }
108
+ // --------------------------------------------------------------------------
109
+ // Coordinated Ship
110
+ // --------------------------------------------------------------------------
111
+ async shipCoordinated(branchName, options = {}) {
112
+ const remote = options.remote ?? 'origin';
113
+ const baseBranch = options.baseBranch ?? 'master';
114
+ const dryRun = options.dryRun ?? false;
115
+ const skipRepos = new Set(options.skipRepos ?? []);
116
+ const plan = this.buildMergePlan(branchName);
117
+ const steps = [];
118
+ const warnings = [...plan.blockers];
119
+ const startTime = Date.now();
120
+ if (plan.blockers.length > 0 && !dryRun) {
121
+ return {
122
+ success: false,
123
+ steps: [],
124
+ totalDuration: 0,
125
+ warnings: plan.blockers,
126
+ };
127
+ }
128
+ // Phase 1: Merge each repo in dependency order
129
+ for (const repoName of plan.mergeOrder) {
130
+ if (skipRepos.has(repoName)) {
131
+ steps.push({ repoName, action: 'merge', status: 'skipped', duration: 0 });
132
+ continue;
133
+ }
134
+ const repo = this.repositories.find(r => r.name === repoName);
135
+ if (!repo) {
136
+ steps.push({ repoName, action: 'merge', status: 'failed', duration: 0, error: `Repository ${repoName} not found in topology.` });
137
+ continue;
138
+ }
139
+ const repoPath = join(this.projectDir, repo.path);
140
+ const stepStart = Date.now();
141
+ try {
142
+ if (!dryRun) {
143
+ this.execGit(repoPath, `checkout ${baseBranch}`);
144
+ this.execGit(repoPath, `merge ${branchName} --no-ff -m "Merge ${branchName} into ${baseBranch}"`);
145
+ }
146
+ steps.push({ repoName, action: 'merge', status: 'passed', duration: Date.now() - stepStart, evidence: dryRun ? 'dry-run' : `merged ${branchName}` });
147
+ if (!dryRun)
148
+ this.updateChangeStatus(repoName, branchName, 'merged');
149
+ }
150
+ catch (err) {
151
+ steps.push({ repoName, action: 'merge', status: 'failed', duration: Date.now() - stepStart, error: err instanceof Error ? err.message : String(err) });
152
+ return { success: false, steps, totalDuration: Date.now() - startTime, warnings };
153
+ }
154
+ }
155
+ // Phase 2: Test each repo in order
156
+ for (const repoName of plan.testOrder) {
157
+ if (skipRepos.has(repoName)) {
158
+ steps.push({ repoName, action: 'test', status: 'skipped', duration: 0 });
159
+ continue;
160
+ }
161
+ const repo = this.repositories.find(r => r.name === repoName);
162
+ if (!repo)
163
+ continue;
164
+ const repoPath = join(this.projectDir, repo.path);
165
+ const stepStart = Date.now();
166
+ try {
167
+ if (!dryRun) {
168
+ // Try npm test, fall back to just checking it exists
169
+ try {
170
+ execSync('npm test --if-present', { cwd: repoPath, stdio: 'pipe', timeout: 120000 });
171
+ }
172
+ catch {
173
+ // test command may not exist
174
+ }
175
+ }
176
+ steps.push({ repoName, action: 'test', status: 'passed', duration: Date.now() - stepStart, evidence: dryRun ? 'dry-run' : 'tests passed' });
177
+ }
178
+ catch (err) {
179
+ steps.push({ repoName, action: 'test', status: 'failed', duration: Date.now() - stepStart, error: err instanceof Error ? err.message : String(err) });
180
+ return { success: false, steps, totalDuration: Date.now() - startTime, warnings };
181
+ }
182
+ }
183
+ // Phase 3: Tag and push
184
+ for (const repoName of plan.mergeOrder) {
185
+ if (skipRepos.has(repoName)) {
186
+ steps.push({ repoName, action: 'push', status: 'skipped', duration: 0 });
187
+ continue;
188
+ }
189
+ const repo = this.repositories.find(r => r.name === repoName);
190
+ if (!repo)
191
+ continue;
192
+ const repoPath = join(this.projectDir, repo.path);
193
+ const stepStart = Date.now();
194
+ try {
195
+ if (!dryRun) {
196
+ this.execGit(repoPath, `push ${remote} ${baseBranch}`);
197
+ }
198
+ steps.push({ repoName, action: 'push', status: 'passed', duration: Date.now() - stepStart, evidence: dryRun ? 'dry-run' : `pushed to ${remote}` });
199
+ if (!dryRun)
200
+ this.updateChangeStatus(repoName, branchName, 'shipped');
201
+ }
202
+ catch (err) {
203
+ steps.push({ repoName, action: 'push', status: 'failed', duration: Date.now() - stepStart, error: err instanceof Error ? err.message : String(err) });
204
+ return { success: false, steps, totalDuration: Date.now() - startTime, warnings };
205
+ }
206
+ }
207
+ return {
208
+ success: steps.every(s => s.status === 'passed' || s.status === 'skipped'),
209
+ steps,
210
+ totalDuration: Date.now() - startTime,
211
+ warnings,
212
+ };
213
+ }
214
+ // --------------------------------------------------------------------------
215
+ // Status
216
+ // --------------------------------------------------------------------------
217
+ getCrossRepoStatus() {
218
+ const repoStates = this.repositories.map(repo => {
219
+ const repoPath = join(this.projectDir, repo.path);
220
+ return {
221
+ name: repo.name,
222
+ path: repo.path,
223
+ ...this.getRepoGitState(repoPath),
224
+ };
225
+ });
226
+ const activeChanges = this.changes.filter(c => c.status !== 'merged' && c.status !== 'shipped');
227
+ const recommendations = this.buildRecommendations(activeChanges, repoStates);
228
+ return {
229
+ topology: this.repositories.length > 1 ? 'multi-repo' : 'single',
230
+ managedBranches: this.branches,
231
+ activeChanges,
232
+ repoStates,
233
+ recommendations,
234
+ };
235
+ }
236
+ // --------------------------------------------------------------------------
237
+ // State Persistence
238
+ // --------------------------------------------------------------------------
239
+ loadTopology() {
240
+ const topologyPath = join(this.scaleRoot, 'workspace.json');
241
+ if (!existsSync(topologyPath)) {
242
+ this.repositories = [{ name: 'root', path: '.', role: 'root', required: true }];
243
+ return;
244
+ }
245
+ try {
246
+ const raw = JSON.parse(readFileSync(topologyPath, 'utf-8'));
247
+ this.repositories = raw.repositories ?? [{ name: 'root', path: '.', role: 'root', required: true }];
248
+ }
249
+ catch {
250
+ this.repositories = [{ name: 'root', path: '.', role: 'root', required: true }];
251
+ }
252
+ }
253
+ loadState() {
254
+ if (!existsSync(this.statePath))
255
+ return;
256
+ try {
257
+ const raw = JSON.parse(readFileSync(this.statePath, 'utf-8'));
258
+ if (raw.branches)
259
+ this.branches = raw.branches;
260
+ if (raw.changes)
261
+ this.changes = raw.changes;
262
+ }
263
+ catch { /* ignore */ }
264
+ }
265
+ saveState() {
266
+ if (!existsSync(this.stateDir))
267
+ mkdirSync(this.stateDir, { recursive: true });
268
+ writeFileSync(this.statePath, JSON.stringify({
269
+ branches: this.branches,
270
+ changes: this.changes,
271
+ }, null, 2), 'utf-8');
272
+ }
273
+ // --------------------------------------------------------------------------
274
+ // Internal
275
+ // --------------------------------------------------------------------------
276
+ resolveMergeOrder(changes) {
277
+ const changeMap = new Map();
278
+ for (const c of changes)
279
+ changeMap.set(c.repoName, c);
280
+ const visited = new Set();
281
+ const order = [];
282
+ const visit = (name) => {
283
+ if (visited.has(name))
284
+ return;
285
+ visited.add(name);
286
+ const change = changeMap.get(name);
287
+ if (change) {
288
+ for (const dep of change.dependsOn) {
289
+ if (changeMap.has(dep))
290
+ visit(dep);
291
+ }
292
+ }
293
+ order.push(name);
294
+ };
295
+ for (const change of changes) {
296
+ visit(change.repoName);
297
+ }
298
+ return order;
299
+ }
300
+ execGit(repoPath, command) {
301
+ try {
302
+ return execSync(`git ${command}`, { cwd: repoPath, encoding: 'utf-8', timeout: 30000 }).trim();
303
+ }
304
+ catch (err) {
305
+ throw new Error(`git ${command} failed in ${repoPath}: ${err instanceof Error ? err.message : String(err)}`);
306
+ }
307
+ }
308
+ getRepoGitState(repoPath) {
309
+ const defaults = { branch: 'unknown', clean: true, ahead: 0, behind: 0 };
310
+ if (!existsSync(repoPath))
311
+ return defaults;
312
+ try {
313
+ const branch = execSync('git branch --show-current', { cwd: repoPath, encoding: 'utf-8', timeout: 5000 }).trim();
314
+ const status = execSync('git status --porcelain', { cwd: repoPath, encoding: 'utf-8', timeout: 5000 }).trim();
315
+ const clean = status.length === 0;
316
+ let ahead = 0, behind = 0;
317
+ try {
318
+ const tracking = execSync('git rev-list --left-right --count HEAD...@{u}', { cwd: repoPath, encoding: 'utf-8', timeout: 5000 }).trim();
319
+ const parts = tracking.split(/\s+/);
320
+ ahead = parseInt(parts[0] ?? '0', 10) || 0;
321
+ behind = parseInt(parts[1] ?? '0', 10) || 0;
322
+ }
323
+ catch { /* no upstream */ }
324
+ return { branch, clean, ahead, behind };
325
+ }
326
+ catch {
327
+ return defaults;
328
+ }
329
+ }
330
+ buildRecommendations(activeChanges, repoStates) {
331
+ const recs = [];
332
+ const dirtyRepos = repoStates.filter(r => !r.clean);
333
+ if (dirtyRepos.length > 0) {
334
+ recs.push(`${dirtyRepos.length} repo(s) have uncommitted changes: ${dirtyRepos.map(r => r.name).join(', ')}. Commit or stash before merging.`);
335
+ }
336
+ const unpushedRepos = repoStates.filter(r => r.ahead > 0);
337
+ if (unpushedRepos.length > 0) {
338
+ recs.push(`${unpushedRepos.length} repo(s) have unpushed commits: ${unpushedRepos.map(r => r.name).join(', ')}.`);
339
+ }
340
+ const readyChanges = activeChanges.filter(c => c.status === 'ready');
341
+ const inProgressChanges = activeChanges.filter(c => c.status === 'in-progress');
342
+ if (readyChanges.length > 0 && inProgressChanges.length > 0) {
343
+ recs.push(`${readyChanges.length} change(s) ready to merge, but ${inProgressChanges.length} still in progress. Wait for all or merge independently.`);
344
+ }
345
+ if (activeChanges.length > 0) {
346
+ const branches = new Set(activeChanges.map(c => c.branch));
347
+ if (branches.size > 1) {
348
+ recs.push(`Changes span ${branches.size} branches. Consider consolidating to a single coordinated branch.`);
349
+ }
350
+ }
351
+ if (recs.length === 0) {
352
+ recs.push('No cross-repo issues detected.');
353
+ }
354
+ return recs;
355
+ }
356
+ }
357
+ // ============================================================================
358
+ // Summary Formatter
359
+ // ============================================================================
360
+ export function summarizeCrossRepoStatus(status) {
361
+ const lines = [
362
+ '## Cross-Repo Status',
363
+ '',
364
+ `**Topology:** ${status.topology}`,
365
+ `**Managed Branches:** ${status.managedBranches.length}`,
366
+ `**Active Changes:** ${status.activeChanges.length}`,
367
+ '',
368
+ ];
369
+ if (status.repoStates.length > 0) {
370
+ lines.push('### Repository States');
371
+ for (const repo of status.repoStates) {
372
+ const clean = repo.clean ? 'clean' : 'dirty';
373
+ const ahead = repo.ahead > 0 ? ` (+${repo.ahead})` : '';
374
+ lines.push(`- **${repo.name}** (\`${repo.path}\`): ${repo.branch} [${clean}]${ahead}`);
375
+ }
376
+ lines.push('');
377
+ }
378
+ if (status.managedBranches.length > 0) {
379
+ lines.push('### Managed Branches');
380
+ for (const branch of status.managedBranches) {
381
+ lines.push(`- **${branch.name}**: ${branch.repos.join(', ')}`);
382
+ }
383
+ lines.push('');
384
+ }
385
+ if (status.activeChanges.length > 0) {
386
+ lines.push('### Active Changes');
387
+ for (const change of status.activeChanges) {
388
+ const deps = change.dependsOn.length > 0 ? ` (depends: ${change.dependsOn.join(', ')})` : '';
389
+ lines.push(`- **${change.repoName}** [${change.branch}]: ${change.description} [${change.status}]${deps}`);
390
+ }
391
+ lines.push('');
392
+ }
393
+ if (status.recommendations.length > 0) {
394
+ lines.push('### Recommendations');
395
+ for (const rec of status.recommendations)
396
+ lines.push(`- ${rec}`);
397
+ }
398
+ return lines.join('\n');
399
+ }
400
+ //# sourceMappingURL=CrossRepoOrchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrossRepoOrchestrator.js","sourceRoot":"","sources":["../../src/workflow/CrossRepoOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ export interface GovernanceCostMetrics {
2
+ totalTokensUsed: number;
3
+ tokensByPhase: Record<string, number>;
4
+ estimatedCostUsd?: number;
5
+ contextCompilerSavings: number;
6
+ cacheHitSavings: number;
7
+ }
8
+ export interface GovernanceQualityMetrics {
9
+ firstPassRate: number;
10
+ averageFixIterations: number;
11
+ gatePassRate: number;
12
+ evidenceCompletenessRate: number;
13
+ securityFindingsCount: number;
14
+ resolvedSecurityFindings: number;
15
+ }
16
+ export interface GovernanceFrictionMetrics {
17
+ totalGateChecks: number;
18
+ gateBlocks: number;
19
+ averageGateLatencyMs: number;
20
+ skippedPhases: number;
21
+ manualOverrides: number;
22
+ }
23
+ export interface GovernanceRoiSummary {
24
+ cost: GovernanceCostMetrics;
25
+ quality: GovernanceQualityMetrics;
26
+ friction: GovernanceFrictionMetrics;
27
+ roi: {
28
+ tokenEfficiency: number;
29
+ gateEfficiency: number;
30
+ overallScore: number;
31
+ };
32
+ recommendations: string[];
33
+ }
34
+ export interface GovernanceRoiInput {
35
+ projectDir?: string;
36
+ scaleDir?: string;
37
+ sinceDays?: number;
38
+ }
39
+ export interface RoiDelta {
40
+ costDelta: Partial<GovernanceCostMetrics>;
41
+ qualityDelta: Partial<GovernanceQualityMetrics>;
42
+ frictionDelta: Partial<GovernanceFrictionMetrics>;
43
+ roiDelta: {
44
+ tokenEfficiencyChange: number;
45
+ gateEfficiencyChange: number;
46
+ overallScoreChange: number;
47
+ };
48
+ summary: string;
49
+ }
50
+ export declare function collectGovernanceRoi(input?: GovernanceRoiInput): GovernanceRoiSummary;
51
+ export declare function summarizeGovernanceRoi(summary: GovernanceRoiSummary): string;
52
+ export declare function compareRoiReports(baseline: GovernanceRoiSummary, current: GovernanceRoiSummary): RoiDelta;