@hongmaple0820/scale-engine 0.12.3 → 0.13.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/dist/adapters/ClaudeCodeAdapter.d.ts +1 -0
- package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
- package/dist/adapters/KiroAdapter.d.ts +14 -0
- package/dist/adapters/KiroAdapter.js +180 -0
- package/dist/adapters/KiroAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +1 -0
- package/dist/adapters/index.js +3 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/api/cli.js +391 -5
- package/dist/api/cli.js.map +1 -1
- package/dist/api/doctor.d.ts +12 -0
- package/dist/api/doctor.js +232 -5
- package/dist/api/doctor.js.map +1 -1
- package/dist/api/quickstart.d.ts +19 -1
- package/dist/api/quickstart.js +103 -2
- package/dist/api/quickstart.js.map +1 -1
- package/dist/artifact/types.d.ts +16 -2
- package/dist/artifact/types.js.map +1 -1
- package/dist/cli/phaseCommands.d.ts +61 -0
- package/dist/cli/phaseCommands.js +559 -39
- package/dist/cli/phaseCommands.js.map +1 -1
- package/dist/guardrails/detectors.d.ts +9 -0
- package/dist/guardrails/detectors.js +102 -0
- package/dist/guardrails/detectors.js.map +1 -1
- package/dist/hooks/HookGeneratorEnhanced.js +29 -0
- package/dist/hooks/HookGeneratorEnhanced.js.map +1 -1
- package/dist/hooks/WorkflowHooksManager.js +20 -1
- package/dist/hooks/WorkflowHooksManager.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/output/BrandThemeLoader.d.ts +54 -0
- package/dist/output/BrandThemeLoader.js +340 -0
- package/dist/output/BrandThemeLoader.js.map +1 -0
- package/dist/output/HTMLDocumentRenderer.d.ts +83 -0
- package/dist/output/HTMLDocumentRenderer.js +717 -0
- package/dist/output/HTMLDocumentRenderer.js.map +1 -0
- package/dist/output/UIPrototypeRenderer.d.ts +61 -0
- package/dist/output/UIPrototypeRenderer.js +500 -0
- package/dist/output/UIPrototypeRenderer.js.map +1 -0
- package/dist/output/index.d.ts +6 -0
- package/dist/output/index.js +6 -0
- package/dist/output/index.js.map +1 -0
- package/dist/skills/SkillDiscovery.js +2 -1
- package/dist/skills/SkillDiscovery.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/skills/routing/SkillGate.d.ts +11 -0
- package/dist/skills/routing/SkillGate.js +76 -0
- package/dist/skills/routing/SkillGate.js.map +1 -0
- package/dist/skills/routing/SkillPlanner.d.ts +8 -0
- package/dist/skills/routing/SkillPlanner.js +91 -0
- package/dist/skills/routing/SkillPlanner.js.map +1 -0
- package/dist/skills/routing/SkillPolicy.d.ts +6 -0
- package/dist/skills/routing/SkillPolicy.js +146 -0
- package/dist/skills/routing/SkillPolicy.js.map +1 -0
- package/dist/skills/routing/SkillRoutingTypes.d.ts +72 -0
- package/dist/skills/routing/SkillRoutingTypes.js +2 -0
- package/dist/skills/routing/SkillRoutingTypes.js.map +1 -0
- package/dist/skills/routing/TaskIntentClassifier.d.ts +6 -0
- package/dist/skills/routing/TaskIntentClassifier.js +79 -0
- package/dist/skills/routing/TaskIntentClassifier.js.map +1 -0
- package/dist/skills/routing/index.d.ts +5 -0
- package/dist/skills/routing/index.js +6 -0
- package/dist/skills/routing/index.js.map +1 -0
- package/dist/workflow/GovernanceTemplates.d.ts +12 -0
- package/dist/workflow/GovernanceTemplates.js +515 -0
- package/dist/workflow/GovernanceTemplates.js.map +1 -0
- package/dist/workflow/PhaseMarkerTracker.d.ts +63 -0
- package/dist/workflow/PhaseMarkerTracker.js +291 -0
- package/dist/workflow/PhaseMarkerTracker.js.map +1 -0
- package/dist/workflow/SessionStateTracker.d.ts +74 -0
- package/dist/workflow/SessionStateTracker.js +270 -0
- package/dist/workflow/SessionStateTracker.js.map +1 -0
- package/dist/workflow/TaskArtifactScaffolder.d.ts +47 -0
- package/dist/workflow/TaskArtifactScaffolder.js +237 -0
- package/dist/workflow/TaskArtifactScaffolder.js.map +1 -0
- package/dist/workflow/TaskMetricsStore.d.ts +49 -0
- package/dist/workflow/TaskMetricsStore.js +149 -0
- package/dist/workflow/TaskMetricsStore.js.map +1 -0
- package/dist/workflow/VerificationCommands.d.ts +2 -0
- package/dist/workflow/VerificationCommands.js +7 -4
- package/dist/workflow/VerificationCommands.js.map +1 -1
- package/dist/workflow/VerificationProfile.d.ts +55 -0
- package/dist/workflow/VerificationProfile.js +133 -0
- package/dist/workflow/VerificationProfile.js.map +1 -0
- package/dist/workflow/WorkflowArtifactWriter.d.ts +113 -0
- package/dist/workflow/WorkflowArtifactWriter.js +241 -0
- package/dist/workflow/WorkflowArtifactWriter.js.map +1 -0
- package/dist/workflow/WorkflowEngine.d.ts +20 -2
- package/dist/workflow/WorkflowEngine.js +37 -8
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/dist/workflow/autonomous/AutonomousDevLoop.d.ts +88 -0
- package/dist/workflow/autonomous/AutonomousDevLoop.js +381 -0
- package/dist/workflow/autonomous/AutonomousDevLoop.js.map +1 -0
- package/dist/workflow/autonomous/WorklogManager.d.ts +50 -0
- package/dist/workflow/autonomous/WorklogManager.js +264 -0
- package/dist/workflow/autonomous/WorklogManager.js.map +1 -0
- package/dist/workflow/autonomous/index.d.ts +2 -0
- package/dist/workflow/autonomous/index.js +4 -0
- package/dist/workflow/autonomous/index.js.map +1 -0
- package/dist/workflow/gates/GateSystem.d.ts +12 -3
- package/dist/workflow/gates/GateSystem.js +185 -41
- package/dist/workflow/gates/GateSystem.js.map +1 -1
- package/dist/workflow/index.d.ts +7 -0
- package/dist/workflow/index.js +7 -0
- package/dist/workflow/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/skills/routing/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type GovernanceMode = 'minimal' | 'standard' | 'critical';
|
|
2
|
+
export type GovernanceArtifactTemplateName = 'explore.md' | 'mini-prd.md' | 'skill-plan.md' | 'ui-spec.md' | 'visual-review.md' | 'api-contract.md' | 'security-review.md' | 'db-change-plan.md' | 'e2e-plan.md' | 'plan.md' | 'verification.md' | 'review.md' | 'summary.md';
|
|
3
|
+
export interface GovernanceTemplateOptions {
|
|
4
|
+
mode?: GovernanceMode;
|
|
5
|
+
projectName?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface GovernanceTemplateResult {
|
|
8
|
+
created: string[];
|
|
9
|
+
skipped: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function writeGovernanceTemplates(projectDir?: string, options?: GovernanceTemplateOptions): GovernanceTemplateResult;
|
|
12
|
+
export declare function governanceTemplateContent(name: GovernanceArtifactTemplateName): string;
|
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { skillRoutingPolicyTemplate } from '../skills/routing/SkillPolicy.js';
|
|
4
|
+
export function writeGovernanceTemplates(projectDir = process.cwd(), options = {}) {
|
|
5
|
+
const mode = options.mode ?? 'standard';
|
|
6
|
+
const projectName = options.projectName ?? 'Project';
|
|
7
|
+
const result = { created: [], skipped: [] };
|
|
8
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'README.md'), workflowReadme(projectName, mode));
|
|
9
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'explore.md'), governanceTemplateContent('explore.md'));
|
|
10
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'mini-prd.md'), governanceTemplateContent('mini-prd.md'));
|
|
11
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'skill-plan.md'), governanceTemplateContent('skill-plan.md'));
|
|
12
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'ui-spec.md'), governanceTemplateContent('ui-spec.md'));
|
|
13
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'visual-review.md'), governanceTemplateContent('visual-review.md'));
|
|
14
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'api-contract.md'), governanceTemplateContent('api-contract.md'));
|
|
15
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'security-review.md'), governanceTemplateContent('security-review.md'));
|
|
16
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'db-change-plan.md'), governanceTemplateContent('db-change-plan.md'));
|
|
17
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'e2e-plan.md'), governanceTemplateContent('e2e-plan.md'));
|
|
18
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'plan.md'), governanceTemplateContent('plan.md'));
|
|
19
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'verification.md'), governanceTemplateContent('verification.md'));
|
|
20
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'review.md'), governanceTemplateContent('review.md'));
|
|
21
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'summary.md'), governanceTemplateContent('summary.md'));
|
|
22
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'github-actions-scale-preflight.yml'), githubActionsPreflightTemplate());
|
|
23
|
+
writeIfMissing(result, join(projectDir, 'docs', 'workflow', 'templates', 'pre-push-scale-preflight.sh'), prePushPreflightTemplate());
|
|
24
|
+
writeIfMissing(result, join(projectDir, 'docs', 'worklog', 'metrics.md'), metricsTemplate());
|
|
25
|
+
writeIfMissing(result, join(projectDir, '.scale', 'verification.json'), verificationMatrixTemplate(mode));
|
|
26
|
+
writeIfMissing(result, join(projectDir, '.scale', 'skills.json'), skillRoutingPolicyTemplate(mode));
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
export function governanceTemplateContent(name) {
|
|
30
|
+
switch (name) {
|
|
31
|
+
case 'explore.md': return exploreTemplate();
|
|
32
|
+
case 'mini-prd.md': return miniPrdTemplate();
|
|
33
|
+
case 'skill-plan.md': return skillPlanTemplate();
|
|
34
|
+
case 'ui-spec.md': return uiSpecTemplate();
|
|
35
|
+
case 'visual-review.md': return visualReviewTemplate();
|
|
36
|
+
case 'api-contract.md': return apiContractTemplate();
|
|
37
|
+
case 'security-review.md': return securityReviewTemplate();
|
|
38
|
+
case 'db-change-plan.md': return dbChangePlanTemplate();
|
|
39
|
+
case 'e2e-plan.md': return e2ePlanTemplate();
|
|
40
|
+
case 'plan.md': return planTemplate();
|
|
41
|
+
case 'verification.md': return verificationTemplate();
|
|
42
|
+
case 'review.md': return reviewTemplate();
|
|
43
|
+
case 'summary.md': return summaryTemplate();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function writeIfMissing(result, path, content) {
|
|
47
|
+
if (existsSync(path)) {
|
|
48
|
+
result.skipped.push(path);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const dir = path.split(/[\\/]/).slice(0, -1).join('/');
|
|
52
|
+
if (dir && !existsSync(dir))
|
|
53
|
+
mkdirSync(dir, { recursive: true });
|
|
54
|
+
writeFileSync(path, content, 'utf-8');
|
|
55
|
+
result.created.push(path);
|
|
56
|
+
}
|
|
57
|
+
function workflowReadme(projectName, mode) {
|
|
58
|
+
return `# ${projectName} Workflow
|
|
59
|
+
|
|
60
|
+
Governance mode: ${mode}
|
|
61
|
+
|
|
62
|
+
## Task Levels
|
|
63
|
+
|
|
64
|
+
| Level | Use for | Required artifacts |
|
|
65
|
+
| --- | --- | --- |
|
|
66
|
+
| S | typo, comments, small local edits | relevant validation only |
|
|
67
|
+
| M | bug fixes, new APIs, 2-5 files | explore, skill plan, plan, verification, review, summary |
|
|
68
|
+
| L | cross-module or architecture changes | full artifacts plus human confirmation |
|
|
69
|
+
| CRITICAL | auth, permissions, migrations, production config | rollback plan, security review, full verification |
|
|
70
|
+
|
|
71
|
+
## Standard Task Directory
|
|
72
|
+
|
|
73
|
+
\`\`\`text
|
|
74
|
+
docs/worklog/tasks/<yyyy-mm-dd>-<task-slug>/
|
|
75
|
+
├── explore.md
|
|
76
|
+
├── mini-prd.md
|
|
77
|
+
├── plan.md
|
|
78
|
+
├── verification.md
|
|
79
|
+
├── review.md
|
|
80
|
+
└── summary.md
|
|
81
|
+
\`\`\`
|
|
82
|
+
|
|
83
|
+
## Verification
|
|
84
|
+
|
|
85
|
+
Use service-aware verification when configured:
|
|
86
|
+
|
|
87
|
+
\`\`\`bash
|
|
88
|
+
scale preflight --service all
|
|
89
|
+
scale verify <task-id> --profile default
|
|
90
|
+
scale verify <task-id> --service <service-name>
|
|
91
|
+
scale verify <task-id> --artifact-gate warn
|
|
92
|
+
scale verify <task-id> --artifact-gate block
|
|
93
|
+
scale task-artifacts check --dir docs/worklog/tasks/<task-dir> --level L
|
|
94
|
+
\`\`\`
|
|
95
|
+
|
|
96
|
+
Keep \`.scale/verification.json\` as the source of truth for profiles and service commands.
|
|
97
|
+
Keep \`.scale/skills.json\` as the source of truth for active skill routing policy.
|
|
98
|
+
Use \`artifactGate: "warn"\` while introducing the workflow, then move M/L/CRITICAL work to \`"block"\` once templates and local gates are stable.
|
|
99
|
+
|
|
100
|
+
## Automation Templates
|
|
101
|
+
|
|
102
|
+
Optional automation templates are generated under \`docs/workflow/templates/\`:
|
|
103
|
+
|
|
104
|
+
- \`github-actions-scale-preflight.yml\`: CI workflow that runs \`scale preflight --service all\`.
|
|
105
|
+
- \`pre-push-scale-preflight.sh\`: local pre-push hook template for the same checks.
|
|
106
|
+
|
|
107
|
+
Keep these templates advisory until \`scale preflight --service all\` is reliable locally for the project.
|
|
108
|
+
`;
|
|
109
|
+
}
|
|
110
|
+
function exploreTemplate() {
|
|
111
|
+
return `# Explore
|
|
112
|
+
|
|
113
|
+
## Files Read
|
|
114
|
+
|
|
115
|
+
-
|
|
116
|
+
|
|
117
|
+
## Current Behavior
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
## Main Conflict
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
## Affected Modules
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
## Evidence
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
`;
|
|
130
|
+
}
|
|
131
|
+
function miniPrdTemplate() {
|
|
132
|
+
return `# Mini-PRD
|
|
133
|
+
|
|
134
|
+
## Background
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
## Target Users
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
## Core Scenario
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
## Non-Goals
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## User Path
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
## Permission Rules
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
## Data Impact
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
## Exception Scenarios
|
|
156
|
+
|
|
157
|
+
1.
|
|
158
|
+
2.
|
|
159
|
+
3.
|
|
160
|
+
|
|
161
|
+
## Acceptance Criteria
|
|
162
|
+
|
|
163
|
+
- [ ]
|
|
164
|
+
|
|
165
|
+
## Rollback Or Disable Strategy
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
`;
|
|
169
|
+
}
|
|
170
|
+
function skillPlanTemplate() {
|
|
171
|
+
return `# Skill Plan
|
|
172
|
+
|
|
173
|
+
## Detected Intents
|
|
174
|
+
|
|
175
|
+
| Domain | Score | Evidence |
|
|
176
|
+
| --- | ---: | --- |
|
|
177
|
+
| | | |
|
|
178
|
+
|
|
179
|
+
## Required Skills
|
|
180
|
+
|
|
181
|
+
-
|
|
182
|
+
|
|
183
|
+
## Recommended Skills
|
|
184
|
+
|
|
185
|
+
-
|
|
186
|
+
|
|
187
|
+
## Required Artifacts
|
|
188
|
+
|
|
189
|
+
-
|
|
190
|
+
|
|
191
|
+
## Required Verification Evidence
|
|
192
|
+
|
|
193
|
+
-
|
|
194
|
+
|
|
195
|
+
## Skipped Skills
|
|
196
|
+
|
|
197
|
+
| Skill | Reason | Fallback Evidence |
|
|
198
|
+
| --- | --- | --- |
|
|
199
|
+
| | | |
|
|
200
|
+
`;
|
|
201
|
+
}
|
|
202
|
+
function uiSpecTemplate() {
|
|
203
|
+
return `# UI Spec
|
|
204
|
+
|
|
205
|
+
## User Goal
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
## Primary Flow
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
## Interaction States
|
|
212
|
+
|
|
213
|
+
- Default:
|
|
214
|
+
- Loading:
|
|
215
|
+
- Empty:
|
|
216
|
+
- Error:
|
|
217
|
+
- Success:
|
|
218
|
+
|
|
219
|
+
## Responsive Behavior
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
## Accessibility Requirements
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
## Acceptance Criteria
|
|
226
|
+
|
|
227
|
+
- [ ]
|
|
228
|
+
`;
|
|
229
|
+
}
|
|
230
|
+
function visualReviewTemplate() {
|
|
231
|
+
return `# Visual Review
|
|
232
|
+
|
|
233
|
+
## Screenshots Or Evidence
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
## Layout And Responsiveness
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
## Text Fit And Overlap
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
## Accessibility Notes
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
## Final Verdict
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
`;
|
|
249
|
+
}
|
|
250
|
+
function apiContractTemplate() {
|
|
251
|
+
return `# API Contract
|
|
252
|
+
|
|
253
|
+
## Endpoint Or Interface
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
## Request
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
## Response
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
## Errors
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
## Permission Rules
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
## Compatibility Notes
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
## Acceptance Criteria
|
|
272
|
+
|
|
273
|
+
- [ ]
|
|
274
|
+
`;
|
|
275
|
+
}
|
|
276
|
+
function securityReviewTemplate() {
|
|
277
|
+
return `# Security Review
|
|
278
|
+
|
|
279
|
+
## Assets And Trust Boundaries
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
## Authorization Rules
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
## Abuse Cases
|
|
286
|
+
|
|
287
|
+
1.
|
|
288
|
+
2.
|
|
289
|
+
3.
|
|
290
|
+
|
|
291
|
+
## Sensitive Data Impact
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
## Rollback Or Disable Strategy
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
## Final Verdict
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
`;
|
|
301
|
+
}
|
|
302
|
+
function dbChangePlanTemplate() {
|
|
303
|
+
return `# DB Change Plan
|
|
304
|
+
|
|
305
|
+
## Schema Or Data Change
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
## Backward Compatibility
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
## Migration Steps
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
## Rollback Plan
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
## Verification
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
`;
|
|
321
|
+
}
|
|
322
|
+
function e2ePlanTemplate() {
|
|
323
|
+
return `# E2E Plan
|
|
324
|
+
|
|
325
|
+
## User Paths
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
## Browser Coverage
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
## Test Data
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
## Assertions
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
## Evidence
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
`;
|
|
341
|
+
}
|
|
342
|
+
function planTemplate() {
|
|
343
|
+
return `# Plan
|
|
344
|
+
|
|
345
|
+
## Approach
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
## Boundaries
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
## Exception Contract
|
|
352
|
+
|
|
353
|
+
1.
|
|
354
|
+
2.
|
|
355
|
+
3.
|
|
356
|
+
|
|
357
|
+
## Rollback Plan
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
## Test Strategy
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
`;
|
|
364
|
+
}
|
|
365
|
+
function verificationTemplate() {
|
|
366
|
+
return `# Verification
|
|
367
|
+
|
|
368
|
+
## Commands Run
|
|
369
|
+
|
|
370
|
+
| Command | Result | Notes |
|
|
371
|
+
| --- | --- | --- |
|
|
372
|
+
| | | |
|
|
373
|
+
|
|
374
|
+
## Output Summary
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
## Failures And Fixes
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
## Final Status
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
`;
|
|
384
|
+
}
|
|
385
|
+
function reviewTemplate() {
|
|
386
|
+
return `# Review
|
|
387
|
+
|
|
388
|
+
## Code Review
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
## Security Review
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
## Same-Pattern Scan
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
## Residual Risks
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
`;
|
|
401
|
+
}
|
|
402
|
+
function summaryTemplate() {
|
|
403
|
+
return `# Summary
|
|
404
|
+
|
|
405
|
+
## Delivered Changes
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
## Remaining Risks
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
## Follow-Ups
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
## Metric Row
|
|
415
|
+
|
|
416
|
+
| Date | Task | Level | Services | Files Changed | First Verification Pass | Fix Iterations | Artifact Complete | Residual Risk | Final Gate |
|
|
417
|
+
| --- | --- | --- | --- | ---: | --- | ---: | --- | --- | --- |
|
|
418
|
+
| | | | | | | | | | |
|
|
419
|
+
`;
|
|
420
|
+
}
|
|
421
|
+
function metricsTemplate() {
|
|
422
|
+
return `# Workflow Metrics
|
|
423
|
+
|
|
424
|
+
<!-- SCALE_METRICS:START -->
|
|
425
|
+
| Date | Task | Level | Services | Files Changed | First Verification Pass | Fix Iterations | Rework Needed | Artifact Complete | Residual Risk | Final Gate |
|
|
426
|
+
| --- | --- | --- | --- | ---: | --- | ---: | --- | --- | --- | --- |
|
|
427
|
+
| | | | | | | | | | | |
|
|
428
|
+
<!-- SCALE_METRICS:END -->
|
|
429
|
+
|
|
430
|
+
## Monthly Review
|
|
431
|
+
|
|
432
|
+
### Repeated Failure Patterns
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
### Slowest Gates
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
### Documentation Gaps
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
### Product Design Misses
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
### Proposed Workflow Changes
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
`;
|
|
448
|
+
}
|
|
449
|
+
function verificationMatrixTemplate(mode) {
|
|
450
|
+
return JSON.stringify({
|
|
451
|
+
version: 1,
|
|
452
|
+
defaultProfile: 'default',
|
|
453
|
+
profiles: {
|
|
454
|
+
default: {
|
|
455
|
+
commands: {},
|
|
456
|
+
services: [],
|
|
457
|
+
},
|
|
458
|
+
},
|
|
459
|
+
services: [],
|
|
460
|
+
exclude: ['node_modules', 'dist', 'tmp', 'vendor'],
|
|
461
|
+
policy: {
|
|
462
|
+
mode,
|
|
463
|
+
optionalToolsWarnOnly: true,
|
|
464
|
+
artifactGate: mode === 'critical' ? 'block' : 'warn',
|
|
465
|
+
artifactGateLevels: ['M', 'L', 'CRITICAL'],
|
|
466
|
+
},
|
|
467
|
+
}, null, 2) + '\n';
|
|
468
|
+
}
|
|
469
|
+
function githubActionsPreflightTemplate() {
|
|
470
|
+
return `name: SCALE Preflight
|
|
471
|
+
|
|
472
|
+
on:
|
|
473
|
+
pull_request:
|
|
474
|
+
push:
|
|
475
|
+
branches:
|
|
476
|
+
- main
|
|
477
|
+
- master
|
|
478
|
+
|
|
479
|
+
jobs:
|
|
480
|
+
preflight:
|
|
481
|
+
runs-on: ubuntu-latest
|
|
482
|
+
steps:
|
|
483
|
+
- name: Checkout
|
|
484
|
+
uses: actions/checkout@v4
|
|
485
|
+
|
|
486
|
+
- name: Setup Node.js
|
|
487
|
+
uses: actions/setup-node@v4
|
|
488
|
+
with:
|
|
489
|
+
node-version: '20'
|
|
490
|
+
|
|
491
|
+
- name: Install project dependencies when present
|
|
492
|
+
shell: bash
|
|
493
|
+
run: |
|
|
494
|
+
if [ -f package-lock.json ]; then
|
|
495
|
+
npm ci
|
|
496
|
+
elif [ -f package.json ]; then
|
|
497
|
+
npm install
|
|
498
|
+
fi
|
|
499
|
+
|
|
500
|
+
- name: Run SCALE preflight
|
|
501
|
+
run: npx @hongmaple0820/scale-engine@latest preflight --service all
|
|
502
|
+
`;
|
|
503
|
+
}
|
|
504
|
+
function prePushPreflightTemplate() {
|
|
505
|
+
return `#!/usr/bin/env sh
|
|
506
|
+
set -eu
|
|
507
|
+
|
|
508
|
+
if command -v scale >/dev/null 2>&1; then
|
|
509
|
+
scale preflight --service all
|
|
510
|
+
else
|
|
511
|
+
npx @hongmaple0820/scale-engine@latest preflight --service all
|
|
512
|
+
fi
|
|
513
|
+
`;
|
|
514
|
+
}
|
|
515
|
+
//# sourceMappingURL=GovernanceTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GovernanceTemplates.js","sourceRoot":"","sources":["../../src/workflow/GovernanceTemplates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export type ScalePhase = 'DEFINE' | 'PLAN' | 'EXECUTE' | 'VERIFY' | 'REVIEW' | 'SHIP';
|
|
2
|
+
export interface PhaseStatus {
|
|
3
|
+
completed: boolean;
|
|
4
|
+
marker?: string;
|
|
5
|
+
details?: Record<string, string>;
|
|
6
|
+
timestamp?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface PhaseState {
|
|
9
|
+
DEFINE: PhaseStatus;
|
|
10
|
+
PLAN: PhaseStatus;
|
|
11
|
+
EXECUTE: PhaseStatus;
|
|
12
|
+
VERIFY: PhaseStatus;
|
|
13
|
+
REVIEW: PhaseStatus;
|
|
14
|
+
SHIP: PhaseStatus;
|
|
15
|
+
}
|
|
16
|
+
export declare class PhaseMarkerTracker {
|
|
17
|
+
private stateDir;
|
|
18
|
+
private stateFile;
|
|
19
|
+
constructor(scaleDir?: string);
|
|
20
|
+
private ensureDir;
|
|
21
|
+
/**
|
|
22
|
+
* 解析文本中的所有 Output Markers 并更新状态
|
|
23
|
+
* @param text 包含 markers 的文本(对话输出)
|
|
24
|
+
* @returns 本次解析出的 markers 数量
|
|
25
|
+
*/
|
|
26
|
+
parseAndUpdate(text: string): number;
|
|
27
|
+
/**
|
|
28
|
+
* 解析文本中的所有 Output Markers
|
|
29
|
+
* @returns 解析结果 Map<Phase, PhaseStatus>
|
|
30
|
+
*/
|
|
31
|
+
parseMarkers(text: string): Partial<Record<ScalePhase, PhaseStatus>>;
|
|
32
|
+
/** 获取当前 Phase 状态 */
|
|
33
|
+
getState(): PhaseState;
|
|
34
|
+
/** 手动标记 Phase 完成 */
|
|
35
|
+
markComplete(phase: ScalePhase, details?: Record<string, string>): void;
|
|
36
|
+
/** 重置 Phase 状态 */
|
|
37
|
+
resetPhase(phase: ScalePhase): void;
|
|
38
|
+
/** 重置所有状态 */
|
|
39
|
+
resetAll(): void;
|
|
40
|
+
/** 检查单个 Phase 是否完成 */
|
|
41
|
+
isPhaseComplete(phase: ScalePhase): boolean;
|
|
42
|
+
/** 检查所有必需 Phase 是否完成 */
|
|
43
|
+
isAllComplete(): boolean;
|
|
44
|
+
/** 获取缺失的 Phase 列表 */
|
|
45
|
+
getMissingPhases(): ScalePhase[];
|
|
46
|
+
/** 获取已完成的 Phase 列表 */
|
|
47
|
+
getCompletedPhases(): ScalePhase[];
|
|
48
|
+
/** 生成状态报告 */
|
|
49
|
+
generateReport(): string;
|
|
50
|
+
/** 生成 Stop Hook 检查结果 */
|
|
51
|
+
generateStopHookResult(): {
|
|
52
|
+
pass: boolean;
|
|
53
|
+
message: string;
|
|
54
|
+
missing: string[];
|
|
55
|
+
};
|
|
56
|
+
private createDefaultState;
|
|
57
|
+
private writeState;
|
|
58
|
+
}
|
|
59
|
+
/** 快速解析单个 marker 行(供 CLI 和 Hook 使用) */
|
|
60
|
+
export declare function parsePhaseMarker(line: string): {
|
|
61
|
+
phase: ScalePhase;
|
|
62
|
+
details: Record<string, string>;
|
|
63
|
+
} | null;
|