@hongmaple0820/scale-engine 0.28.0 → 0.33.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 +3 -0
- package/README.md +2 -0
- package/dist/api/cli.js +12 -0
- package/dist/api/cli.js.map +1 -1
- package/dist/evolution/SessionLearnings.d.ts +70 -0
- package/dist/evolution/SessionLearnings.js +217 -0
- package/dist/evolution/SessionLearnings.js.map +1 -0
- package/dist/runtime/AiOsRuntime.d.ts +138 -0
- package/dist/runtime/AiOsRuntime.js +671 -14
- package/dist/runtime/AiOsRuntime.js.map +1 -1
- package/dist/skills/RoleSkills.d.ts +20 -0
- package/dist/skills/RoleSkills.js +154 -0
- package/dist/skills/RoleSkills.js.map +1 -0
- package/dist/skills/SkillDiscovery.d.ts +5 -0
- package/dist/skills/SkillDiscovery.js +15 -0
- package/dist/skills/SkillDiscovery.js.map +1 -1
- package/dist/skills/SkillFrontmatter.d.ts +28 -0
- package/dist/skills/SkillFrontmatter.js +152 -0
- package/dist/skills/SkillFrontmatter.js.map +1 -0
- package/dist/skills/SkillRegistry.d.ts +11 -0
- package/dist/skills/SkillRegistry.js +12 -0
- package/dist/skills/SkillRegistry.js.map +1 -1
- package/dist/skills/index.d.ts +1 -0
- package/dist/skills/index.js +1 -0
- package/dist/skills/index.js.map +1 -1
- package/dist/testing/DiffTestSelector.d.ts +22 -0
- package/dist/testing/DiffTestSelector.js +114 -0
- package/dist/testing/DiffTestSelector.js.map +1 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.js +3 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/workflow/AdaptiveWorkflowRouter.d.ts +37 -0
- package/dist/workflow/AdaptiveWorkflowRouter.js +211 -0
- package/dist/workflow/AdaptiveWorkflowRouter.js.map +1 -0
- package/dist/workflow/EvolutionShadowPromoter.d.ts +46 -0
- package/dist/workflow/EvolutionShadowPromoter.js +73 -0
- package/dist/workflow/EvolutionShadowPromoter.js.map +1 -0
- package/dist/workflow/ReviewAnalyzer.d.ts +15 -0
- package/dist/workflow/ReviewAnalyzer.js +82 -0
- package/dist/workflow/ReviewAnalyzer.js.map +1 -1
- package/dist/workflow/SecurityAudit.d.ts +27 -0
- package/dist/workflow/SecurityAudit.js +294 -0
- package/dist/workflow/SecurityAudit.js.map +1 -0
- package/dist/workflow/SessionPreamble.d.ts +19 -0
- package/dist/workflow/SessionPreamble.js +125 -0
- package/dist/workflow/SessionPreamble.js.map +1 -0
- package/dist/workflow/ShipPipeline.d.ts +30 -0
- package/dist/workflow/ShipPipeline.js +366 -0
- package/dist/workflow/ShipPipeline.js.map +1 -0
- package/dist/workflow/WorkflowGuidance.d.ts +5 -1
- package/dist/workflow/WorkflowGuidance.js +31 -0
- package/dist/workflow/WorkflowGuidance.js.map +1 -1
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.js +5 -0
- package/dist/workflow/index.js.map +1 -1
- package/docs/AI_ENGINEERING_OS_POSITIONING.md +15 -0
- package/docs/CONTEXT_BUDGET.md +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
// SCALE Engine — Ship Pipeline (v0.32.0)
|
|
2
|
+
// Full ship closure: sync-base → test → review-diff → bump-version → changelog → commit → push → create-pr
|
|
3
|
+
// Inspired by gstack's /ship skill, integrated with scale-engine governance.
|
|
4
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { execSync } from 'node:child_process';
|
|
7
|
+
import { runSafeCommand } from '../tools/SafeCommandRunner.js';
|
|
8
|
+
import { parseChangedFiles, shouldReviewFile } from './ReviewAnalyzer.js';
|
|
9
|
+
import { resolveVerificationTargets } from './VerificationProfile.js';
|
|
10
|
+
import { collectSessionPreamble } from './SessionPreamble.js';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Pipeline
|
|
13
|
+
// ============================================================================
|
|
14
|
+
export async function runShipPipeline(input) {
|
|
15
|
+
const projectDir = input.projectDir ?? process.cwd();
|
|
16
|
+
const scaleDir = input.scaleDir ?? '.scale';
|
|
17
|
+
const baseBranch = input.baseBranch ?? 'master';
|
|
18
|
+
const remote = input.remote ?? 'origin';
|
|
19
|
+
const skipSteps = new Set(input.skipSteps ?? []);
|
|
20
|
+
const dryRun = input.dryRun ?? false;
|
|
21
|
+
const versionBump = input.versionBump ?? 'patch';
|
|
22
|
+
const steps = [];
|
|
23
|
+
const warnings = [];
|
|
24
|
+
const startTime = Date.now();
|
|
25
|
+
let changedFiles = [];
|
|
26
|
+
// Collect preamble
|
|
27
|
+
const preamble = collectSessionPreamble({ projectDir, scaleDir });
|
|
28
|
+
// Execute steps in order
|
|
29
|
+
const allSteps = ['sync-base', 'test', 'review-diff', 'bump-version', 'changelog', 'commit', 'push', 'create-pr'];
|
|
30
|
+
for (const step of allSteps) {
|
|
31
|
+
if (skipSteps.has(step)) {
|
|
32
|
+
steps.push({ step, status: 'skipped', duration: 0 });
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const stepStart = Date.now();
|
|
36
|
+
try {
|
|
37
|
+
const result = await executeStep(step, {
|
|
38
|
+
projectDir,
|
|
39
|
+
scaleDir,
|
|
40
|
+
baseBranch,
|
|
41
|
+
remote,
|
|
42
|
+
dryRun,
|
|
43
|
+
versionBump,
|
|
44
|
+
preamble,
|
|
45
|
+
changedFiles,
|
|
46
|
+
prTitle: input.prTitle,
|
|
47
|
+
prBody: input.prBody,
|
|
48
|
+
});
|
|
49
|
+
steps.push({
|
|
50
|
+
step,
|
|
51
|
+
status: result.status,
|
|
52
|
+
duration: Date.now() - stepStart,
|
|
53
|
+
evidence: result.evidence,
|
|
54
|
+
error: result.error,
|
|
55
|
+
});
|
|
56
|
+
if (result.status === 'failed') {
|
|
57
|
+
// Pipeline stops on failure
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
if (result.changedFiles) {
|
|
61
|
+
changedFiles = result.changedFiles;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
steps.push({
|
|
66
|
+
step,
|
|
67
|
+
status: 'failed',
|
|
68
|
+
duration: Date.now() - stepStart,
|
|
69
|
+
error: err instanceof Error ? err.message : String(err),
|
|
70
|
+
});
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const totalDuration = Date.now() - startTime;
|
|
75
|
+
const success = steps.every(s => s.status === 'passed' || s.status === 'skipped');
|
|
76
|
+
const lastStep = steps[steps.length - 1];
|
|
77
|
+
return {
|
|
78
|
+
success,
|
|
79
|
+
steps,
|
|
80
|
+
totalDuration,
|
|
81
|
+
changedFiles,
|
|
82
|
+
warnings,
|
|
83
|
+
commitSha: extractCommitSha(steps),
|
|
84
|
+
prUrl: extractPrUrl(steps),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async function executeStep(step, ctx) {
|
|
88
|
+
switch (step) {
|
|
89
|
+
case 'sync-base':
|
|
90
|
+
return executeSyncBase(ctx);
|
|
91
|
+
case 'test':
|
|
92
|
+
return executeTest(ctx);
|
|
93
|
+
case 'review-diff':
|
|
94
|
+
return executeReviewDiff(ctx);
|
|
95
|
+
case 'bump-version':
|
|
96
|
+
return executeBumpVersion(ctx);
|
|
97
|
+
case 'changelog':
|
|
98
|
+
return executeChangelog(ctx);
|
|
99
|
+
case 'commit':
|
|
100
|
+
return executeCommit(ctx);
|
|
101
|
+
case 'push':
|
|
102
|
+
return executePush(ctx);
|
|
103
|
+
case 'create-pr':
|
|
104
|
+
return executeCreatePr(ctx);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Step Implementations
|
|
109
|
+
// ============================================================================
|
|
110
|
+
async function executeSyncBase(ctx) {
|
|
111
|
+
try {
|
|
112
|
+
// Fetch latest
|
|
113
|
+
execSync(`git fetch ${ctx.remote}`, { cwd: ctx.projectDir, encoding: 'utf-8', timeout: 30000 });
|
|
114
|
+
// Check if base branch exists locally
|
|
115
|
+
try {
|
|
116
|
+
execSync(`git rev-parse --verify ${ctx.baseBranch}`, { cwd: ctx.projectDir, encoding: 'utf-8' });
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Track remote branch
|
|
120
|
+
execSync(`git checkout -b ${ctx.baseBranch} ${ctx.remote}/${ctx.baseBranch}`, { cwd: ctx.projectDir, encoding: 'utf-8' });
|
|
121
|
+
}
|
|
122
|
+
// Get current branch
|
|
123
|
+
const currentBranch = execSync('git branch --show-current', { cwd: ctx.projectDir, encoding: 'utf-8' }).trim();
|
|
124
|
+
if (currentBranch !== ctx.baseBranch) {
|
|
125
|
+
// Merge base into current branch
|
|
126
|
+
try {
|
|
127
|
+
execSync(`git merge ${ctx.remote}/${ctx.baseBranch} --no-edit`, { cwd: ctx.projectDir, encoding: 'utf-8', timeout: 30000 });
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
return { status: 'failed', error: `Merge conflict with ${ctx.baseBranch}. Resolve conflicts manually.` };
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return { status: 'passed', evidence: `Synced with ${ctx.remote}/${ctx.baseBranch}` };
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
return { status: 'failed', error: `Sync failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
async function executeTest(ctx) {
|
|
140
|
+
try {
|
|
141
|
+
// Resolve test command from verification profile
|
|
142
|
+
const targets = resolveVerificationTargets({ projectDir: ctx.projectDir, scaleDir: ctx.scaleDir });
|
|
143
|
+
const testCommand = targets.targets[0]?.config.test ?? 'npm test';
|
|
144
|
+
if (ctx.dryRun) {
|
|
145
|
+
return { status: 'passed', evidence: `[dry-run] Would run: ${testCommand}` };
|
|
146
|
+
}
|
|
147
|
+
const result = await runSafeCommand(testCommand, { cwd: ctx.projectDir, timeout: 300000 });
|
|
148
|
+
if (result.exitCode !== 0) {
|
|
149
|
+
return { status: 'failed', error: `Tests failed (exit ${result.exitCode}): ${result.stderr.slice(0, 500)}` };
|
|
150
|
+
}
|
|
151
|
+
return { status: 'passed', evidence: `Tests passed: ${testCommand}` };
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
return { status: 'failed', error: `Test execution failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async function executeReviewDiff(ctx) {
|
|
158
|
+
try {
|
|
159
|
+
const diffOutput = execSync(`git diff --name-only ${ctx.remote}/${ctx.baseBranch}`, {
|
|
160
|
+
cwd: ctx.projectDir,
|
|
161
|
+
encoding: 'utf-8',
|
|
162
|
+
});
|
|
163
|
+
const changedFiles = parseChangedFiles(diffOutput)
|
|
164
|
+
.filter(f => shouldReviewFile(f.path))
|
|
165
|
+
.map(f => f.path);
|
|
166
|
+
if (changedFiles.length === 0) {
|
|
167
|
+
return { status: 'passed', evidence: 'No reviewable changes', changedFiles: [] };
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
status: 'passed',
|
|
171
|
+
evidence: `${changedFiles.length} file(s) changed: ${changedFiles.slice(0, 5).join(', ')}${changedFiles.length > 5 ? '...' : ''}`,
|
|
172
|
+
changedFiles,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
return { status: 'failed', error: `Diff review failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async function executeBumpVersion(ctx) {
|
|
180
|
+
const pkgPath = join(ctx.projectDir, 'package.json');
|
|
181
|
+
if (!existsSync(pkgPath)) {
|
|
182
|
+
return { status: 'passed', evidence: 'No package.json found, skipping version bump' };
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
186
|
+
if (!pkg.version) {
|
|
187
|
+
return { status: 'passed', evidence: 'No version field in package.json' };
|
|
188
|
+
}
|
|
189
|
+
const [major, minor, patch] = pkg.version.split('.').map(Number);
|
|
190
|
+
let newVersion;
|
|
191
|
+
switch (ctx.versionBump) {
|
|
192
|
+
case 'major':
|
|
193
|
+
newVersion = `${major + 1}.0.0`;
|
|
194
|
+
break;
|
|
195
|
+
case 'minor':
|
|
196
|
+
newVersion = `${major}.${minor + 1}.0`;
|
|
197
|
+
break;
|
|
198
|
+
case 'patch':
|
|
199
|
+
newVersion = `${major}.${minor}.${patch + 1}`;
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
if (ctx.dryRun) {
|
|
203
|
+
return { status: 'passed', evidence: `[dry-run] Would bump ${pkg.version} → ${newVersion}` };
|
|
204
|
+
}
|
|
205
|
+
pkg.version = newVersion;
|
|
206
|
+
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n', 'utf-8');
|
|
207
|
+
// Also update package-lock.json if it exists
|
|
208
|
+
const lockPath = join(ctx.projectDir, 'package-lock.json');
|
|
209
|
+
if (existsSync(lockPath)) {
|
|
210
|
+
const lock = readFileSync(lockPath, 'utf-8');
|
|
211
|
+
writeFileSync(lockPath, lock.replace(`"version": "${pkg.version}"`, `"version": "${newVersion}"`), 'utf-8');
|
|
212
|
+
}
|
|
213
|
+
return { status: 'passed', evidence: `Version bumped: ${pkg.version} → ${newVersion}` };
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
return { status: 'failed', error: `Version bump failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async function executeChangelog(ctx) {
|
|
220
|
+
const changelogPath = join(ctx.projectDir, 'CHANGELOG.md');
|
|
221
|
+
if (!existsSync(changelogPath)) {
|
|
222
|
+
return { status: 'passed', evidence: 'No CHANGELOG.md found, skipping' };
|
|
223
|
+
}
|
|
224
|
+
try {
|
|
225
|
+
if (ctx.dryRun) {
|
|
226
|
+
return { status: 'passed', evidence: '[dry-run] Would update CHANGELOG.md' };
|
|
227
|
+
}
|
|
228
|
+
const pkgPath = join(ctx.projectDir, 'package.json');
|
|
229
|
+
let version = '0.0.0';
|
|
230
|
+
if (existsSync(pkgPath)) {
|
|
231
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
232
|
+
version = pkg.version ?? '0.0.0';
|
|
233
|
+
}
|
|
234
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
235
|
+
const changelog = readFileSync(changelogPath, 'utf-8');
|
|
236
|
+
// Get commit messages since last tag
|
|
237
|
+
let commitSummary = '';
|
|
238
|
+
try {
|
|
239
|
+
const lastTag = execSync('git describe --tags --abbrev=0 2>/dev/null || echo ""', { cwd: ctx.projectDir, encoding: 'utf-8' }).trim();
|
|
240
|
+
const range = lastTag ? `${lastTag}..HEAD` : 'HEAD';
|
|
241
|
+
const messages = execSync(`git log ${range} --oneline --no-merges | head -20`, { cwd: ctx.projectDir, encoding: 'utf-8' }).trim();
|
|
242
|
+
if (messages) {
|
|
243
|
+
commitSummary = '\n' + messages.split('\n').map(m => `- ${m.replace(/^[a-f0-9]+ /, '')}`).join('\n');
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
// Ignore git log errors
|
|
248
|
+
}
|
|
249
|
+
const newEntry = `## ${version} - ${today}\n\n### Changes${commitSummary}\n\n---\n\n`;
|
|
250
|
+
writeFileSync(changelogPath, newEntry + changelog, 'utf-8');
|
|
251
|
+
return { status: 'passed', evidence: `CHANGELOG.md updated for v${version}` };
|
|
252
|
+
}
|
|
253
|
+
catch (err) {
|
|
254
|
+
return { status: 'failed', error: `Changelog update failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
async function executeCommit(ctx) {
|
|
258
|
+
try {
|
|
259
|
+
// Stage all changes
|
|
260
|
+
execSync('git add -A', { cwd: ctx.projectDir, encoding: 'utf-8' });
|
|
261
|
+
// Check if there are changes to commit
|
|
262
|
+
try {
|
|
263
|
+
execSync('git diff --cached --quiet', { cwd: ctx.projectDir, encoding: 'utf-8' });
|
|
264
|
+
return { status: 'passed', evidence: 'No changes to commit' };
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// There are changes, continue
|
|
268
|
+
}
|
|
269
|
+
if (ctx.dryRun) {
|
|
270
|
+
return { status: 'passed', evidence: '[dry-run] Would commit staged changes' };
|
|
271
|
+
}
|
|
272
|
+
// Get version for commit message
|
|
273
|
+
let version = '';
|
|
274
|
+
const pkgPath = join(ctx.projectDir, 'package.json');
|
|
275
|
+
if (existsSync(pkgPath)) {
|
|
276
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
277
|
+
version = pkg.version ?? '';
|
|
278
|
+
}
|
|
279
|
+
const commitMsg = version ? `chore: release v${version}` : `chore: ship ${new Date().toISOString().slice(0, 10)}`;
|
|
280
|
+
execSync(`git commit -m "${commitMsg}"`, { cwd: ctx.projectDir, encoding: 'utf-8' });
|
|
281
|
+
// Get commit SHA
|
|
282
|
+
const sha = execSync('git rev-parse HEAD', { cwd: ctx.projectDir, encoding: 'utf-8' }).trim();
|
|
283
|
+
return { status: 'passed', evidence: `Committed: ${sha.slice(0, 8)} — ${commitMsg}` };
|
|
284
|
+
}
|
|
285
|
+
catch (err) {
|
|
286
|
+
return { status: 'failed', error: `Commit failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
async function executePush(ctx) {
|
|
290
|
+
try {
|
|
291
|
+
const currentBranch = execSync('git branch --show-current', { cwd: ctx.projectDir, encoding: 'utf-8' }).trim();
|
|
292
|
+
if (ctx.dryRun) {
|
|
293
|
+
return { status: 'passed', evidence: `[dry-run] Would push to ${ctx.remote}/${currentBranch}` };
|
|
294
|
+
}
|
|
295
|
+
execSync(`git push ${ctx.remote} ${currentBranch}`, { cwd: ctx.projectDir, encoding: 'utf-8', timeout: 60000 });
|
|
296
|
+
return { status: 'passed', evidence: `Pushed to ${ctx.remote}/${currentBranch}` };
|
|
297
|
+
}
|
|
298
|
+
catch (err) {
|
|
299
|
+
return { status: 'failed', error: `Push failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
async function executeCreatePr(ctx) {
|
|
303
|
+
try {
|
|
304
|
+
const currentBranch = execSync('git branch --show-current', { cwd: ctx.projectDir, encoding: 'utf-8' }).trim();
|
|
305
|
+
if (ctx.dryRun) {
|
|
306
|
+
return { status: 'passed', evidence: `[dry-run] Would create PR: ${currentBranch} → ${ctx.baseBranch}` };
|
|
307
|
+
}
|
|
308
|
+
const title = ctx.prTitle ?? `Ship ${currentBranch} → ${ctx.baseBranch}`;
|
|
309
|
+
const body = ctx.prBody ?? `Automated PR created by scale ship pipeline.\n\nBranch: ${currentBranch}\nBase: ${ctx.baseBranch}`;
|
|
310
|
+
// Try gh CLI first
|
|
311
|
+
try {
|
|
312
|
+
const prUrl = execSync(`gh pr create --title "${title}" --body "${body}" --base ${ctx.baseBranch}`, { cwd: ctx.projectDir, encoding: 'utf-8', timeout: 30000 }).trim();
|
|
313
|
+
return { status: 'passed', evidence: `PR created: ${prUrl}` };
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
// gh not available or failed, output manual instructions
|
|
317
|
+
return {
|
|
318
|
+
status: 'passed',
|
|
319
|
+
evidence: `Push complete. Create PR manually: ${currentBranch} → ${ctx.baseBranch}`,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
catch (err) {
|
|
324
|
+
return { status: 'failed', error: `PR creation failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// ============================================================================
|
|
328
|
+
// Helpers
|
|
329
|
+
// ============================================================================
|
|
330
|
+
function extractCommitSha(steps) {
|
|
331
|
+
const commitStep = steps.find(s => s.step === 'commit' && s.status === 'passed');
|
|
332
|
+
if (!commitStep?.evidence)
|
|
333
|
+
return undefined;
|
|
334
|
+
const match = commitStep.evidence.match(/Committed: ([a-f0-9]+)/);
|
|
335
|
+
return match?.[1];
|
|
336
|
+
}
|
|
337
|
+
function extractPrUrl(steps) {
|
|
338
|
+
const prStep = steps.find(s => s.step === 'create-pr' && s.status === 'passed');
|
|
339
|
+
if (!prStep?.evidence)
|
|
340
|
+
return undefined;
|
|
341
|
+
const match = prStep.evidence.match(/PR created: (https?:\/\/\S+)/);
|
|
342
|
+
return match?.[1];
|
|
343
|
+
}
|
|
344
|
+
// ============================================================================
|
|
345
|
+
// Summary
|
|
346
|
+
// ============================================================================
|
|
347
|
+
export function summarizeShipPipeline(result) {
|
|
348
|
+
const lines = ['## Ship Pipeline Result\n'];
|
|
349
|
+
for (const step of result.steps) {
|
|
350
|
+
const icon = step.status === 'passed' ? '✅' : step.status === 'skipped' ? '⏭️' : step.status === 'blocked' ? '🚫' : '❌';
|
|
351
|
+
lines.push(`${icon} **${step.step}** (${step.duration}ms)`);
|
|
352
|
+
if (step.evidence)
|
|
353
|
+
lines.push(` ${step.evidence}`);
|
|
354
|
+
if (step.error)
|
|
355
|
+
lines.push(` Error: ${step.error}`);
|
|
356
|
+
}
|
|
357
|
+
lines.push('');
|
|
358
|
+
lines.push(`**Total duration:** ${result.totalDuration}ms`);
|
|
359
|
+
lines.push(`**Changed files:** ${result.changedFiles.length}`);
|
|
360
|
+
if (result.commitSha)
|
|
361
|
+
lines.push(`**Commit:** ${result.commitSha}`);
|
|
362
|
+
if (result.prUrl)
|
|
363
|
+
lines.push(`**PR:** ${result.prUrl}`);
|
|
364
|
+
return lines.join('\n');
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=ShipPipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShipPipeline.js","sourceRoot":"","sources":["../../src/workflow/ShipPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { WorkflowTaskLevel } from './WorkflowArtifactWriter.js';
|
|
2
|
-
|
|
2
|
+
import type { SkillRole } from '../skills/RoleSkills.js';
|
|
3
|
+
export type WorkflowGuidancePhase = 'explore' | 'plan' | 'build' | 'verify' | 'review' | 'ship';
|
|
3
4
|
export interface WorkflowGuidanceItem {
|
|
4
5
|
id: string;
|
|
5
6
|
phase: WorkflowGuidancePhase;
|
|
6
7
|
required: boolean;
|
|
7
8
|
reason: string;
|
|
8
9
|
command: string;
|
|
10
|
+
role?: SkillRole;
|
|
9
11
|
}
|
|
10
12
|
export interface WorkflowGuidance {
|
|
11
13
|
taskId: string;
|
|
@@ -24,3 +26,5 @@ export interface WorkflowGuidanceInput {
|
|
|
24
26
|
}
|
|
25
27
|
export declare function createWorkflowGuidance(input: WorkflowGuidanceInput): WorkflowGuidance;
|
|
26
28
|
export declare function renderWorkflowGuidance(guidance: WorkflowGuidance): string;
|
|
29
|
+
export declare function getRoleGuidanceForPhase(phase: WorkflowGuidancePhase): SkillRole[];
|
|
30
|
+
export declare function createRoleGuidanceItem(role: SkillRole, phase: WorkflowGuidancePhase, taskId: string, description: string): WorkflowGuidanceItem;
|
|
@@ -170,4 +170,35 @@ function quoteArg(value) {
|
|
|
170
170
|
return value;
|
|
171
171
|
return `"${value.replace(/(["\\$`])/g, '\\$1')}"`;
|
|
172
172
|
}
|
|
173
|
+
// ============================================================================
|
|
174
|
+
// Role-Based Guidance
|
|
175
|
+
// ============================================================================
|
|
176
|
+
export function getRoleGuidanceForPhase(phase) {
|
|
177
|
+
switch (phase) {
|
|
178
|
+
case 'explore':
|
|
179
|
+
return ['eng-manager'];
|
|
180
|
+
case 'plan':
|
|
181
|
+
return ['ceo-reviewer', 'eng-manager'];
|
|
182
|
+
case 'build':
|
|
183
|
+
return [];
|
|
184
|
+
case 'verify':
|
|
185
|
+
return ['qa-lead', 'security-reviewer'];
|
|
186
|
+
case 'review':
|
|
187
|
+
return ['eng-manager', 'security-reviewer'];
|
|
188
|
+
case 'ship':
|
|
189
|
+
return ['release-engineer'];
|
|
190
|
+
default:
|
|
191
|
+
return [];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
export function createRoleGuidanceItem(role, phase, taskId, description) {
|
|
195
|
+
return {
|
|
196
|
+
id: `role-${role}`,
|
|
197
|
+
phase,
|
|
198
|
+
required: phase === 'review' || phase === 'verify',
|
|
199
|
+
reason: `${role} perspective ensures multi-angle review coverage.`,
|
|
200
|
+
command: `scale review --role ${role} --task-id ${taskId}`,
|
|
201
|
+
role,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
173
204
|
//# sourceMappingURL=WorkflowGuidance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowGuidance.js","sourceRoot":"","sources":["../../src/workflow/WorkflowGuidance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WorkflowGuidance.js","sourceRoot":"","sources":["../../src/workflow/WorkflowGuidance.ts"],"names":[],"mappings":"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"}
|
package/dist/workflow/index.d.ts
CHANGED
|
@@ -28,4 +28,9 @@ export * from './DiagnosticLoop.js';
|
|
|
28
28
|
export * from './TddLoop.js';
|
|
29
29
|
export * from './WorkflowGuidance.js';
|
|
30
30
|
export * from './WorkflowOpenTasks.js';
|
|
31
|
+
export * from './SessionPreamble.js';
|
|
32
|
+
export * from './ShipPipeline.js';
|
|
33
|
+
export * from './SecurityAudit.js';
|
|
34
|
+
export * from './AdaptiveWorkflowRouter.js';
|
|
35
|
+
export * from './EvolutionShadowPromoter.js';
|
|
31
36
|
export * from './autonomous/index.js';
|
package/dist/workflow/index.js
CHANGED
|
@@ -29,5 +29,10 @@ export * from './DiagnosticLoop.js';
|
|
|
29
29
|
export * from './TddLoop.js';
|
|
30
30
|
export * from './WorkflowGuidance.js';
|
|
31
31
|
export * from './WorkflowOpenTasks.js';
|
|
32
|
+
export * from './SessionPreamble.js';
|
|
33
|
+
export * from './ShipPipeline.js';
|
|
34
|
+
export * from './SecurityAudit.js';
|
|
35
|
+
export * from './AdaptiveWorkflowRouter.js';
|
|
36
|
+
export * from './EvolutionShadowPromoter.js';
|
|
32
37
|
export * from './autonomous/index.js';
|
|
33
38
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA"}
|
|
@@ -422,6 +422,12 @@ Core work:
|
|
|
422
422
|
| Skill Strategy Learning | learn preferred tools from successful evidence, failures, and user overrides |
|
|
423
423
|
| Workflow Eval Integration | turn benchmark results into release-gate evidence |
|
|
424
424
|
|
|
425
|
+
Current first slice:
|
|
426
|
+
|
|
427
|
+
- `scale ai-os status --json` now includes an `intelligence` report with `memory-recall`, `context-savings`, `skill-routing`, and `benchmark-intelligence` signals; memory recall includes a quality score based on confidence, relevance, and evidence-backed items.
|
|
428
|
+
- Context intelligence now reports `contextQuality` with omitted sections, total omitted tokens, compression risk, and evidence-loss warnings when runtime evidence is dropped by budget constraints.
|
|
429
|
+
- Human `scale ai-os status --lang zh|en` output surfaces the same intelligence readiness summary so release reviewers can see whether 0.29.0 memory/context/skill gains are backed by run and benchmark evidence.
|
|
430
|
+
|
|
425
431
|
Exit criteria:
|
|
426
432
|
|
|
427
433
|
- memory recall has acceptance/rejection feedback
|
|
@@ -444,6 +450,15 @@ Core work:
|
|
|
444
450
|
| Tool Strategy Planner | cost, retry, fallback, and evidence graph for tools |
|
|
445
451
|
| Evolution Shadow Promotion | lessons become rules only after validation |
|
|
446
452
|
|
|
453
|
+
Current first slice:
|
|
454
|
+
|
|
455
|
+
- `scale ai-os plan` now emits `evaluator` intelligence with strategy `evaluator-intelligence-v1`, required gates, risk level, uncertainty score, drivers, and recommendations.
|
|
456
|
+
- Architecture, root-cause, security, and release-risk tasks can automatically add `architecture-critique`, `root-cause-review`, `security-threat-model`, `release-readiness-review`, and `uncertainty-decision-log` gates to the adaptive workflow.
|
|
457
|
+
- `scale ai-os run` carries evaluator gates into the executable step list and evidence requirements, so reasoning-heavy work cannot be represented as a plain low-friction run.
|
|
458
|
+
- `scale ai-os status` now includes an `evaluator-intelligence` signal plus evaluator gate count and average uncertainty for release and milestone review.
|
|
459
|
+
- `scale ai-os plan` now emits `toolStrategy` with strategy `tool-strategy-v1`, converting skill, artifact, and verification steps into a cost, retry, fallback, side-effect, and evidence graph.
|
|
460
|
+
- `scale ai-os status` now includes a `tool-strategy` signal plus tool step count, estimated cost units, high-risk step count, and fallback coverage.
|
|
461
|
+
|
|
447
462
|
Exit criteria:
|
|
448
463
|
|
|
449
464
|
- small tasks can stay lightweight with evidence
|
package/docs/CONTEXT_BUDGET.md
CHANGED
|
@@ -43,7 +43,7 @@ scale context pack \
|
|
|
43
43
|
--json
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
Build the unified AI OS runtime plan that embeds the context pack with memory, skill routing, adaptive workflow, and ROI:
|
|
46
|
+
Build the unified AI OS runtime plan that embeds the context pack with memory, skill routing, evaluator intelligence, tool strategy, adaptive workflow, and ROI:
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
49
|
scale ai-os plan \
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hongmaple0820/scale-engine",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.0",
|
|
4
4
|
"description": "Executable AI agent governance with workflow gates, evidence, skill/tool orchestration, and traceable HTML artifacts",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
"test": "vitest run --reporter dot --pool=forks --poolOptions.forks.maxForks=1 --poolOptions.forks.minForks=1",
|
|
59
59
|
"typecheck": "tsc --noEmit",
|
|
60
60
|
"lint": "eslint src/**/*.ts",
|
|
61
|
+
"release:check": "npm run typecheck && npm run lint && npm test && npm run build && npm audit --omit=dev && npm pack --dry-run",
|
|
61
62
|
"mcp": "node dist/api/mcp.js",
|
|
62
63
|
"serve": "node dist/api/http.js"
|
|
63
64
|
},
|