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