@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.
Files changed (109) hide show
  1. package/dist/adapters/ClaudeCodeAdapter.d.ts +1 -0
  2. package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
  3. package/dist/adapters/KiroAdapter.d.ts +14 -0
  4. package/dist/adapters/KiroAdapter.js +180 -0
  5. package/dist/adapters/KiroAdapter.js.map +1 -0
  6. package/dist/adapters/index.d.ts +1 -0
  7. package/dist/adapters/index.js +3 -0
  8. package/dist/adapters/index.js.map +1 -1
  9. package/dist/api/cli.js +391 -5
  10. package/dist/api/cli.js.map +1 -1
  11. package/dist/api/doctor.d.ts +12 -0
  12. package/dist/api/doctor.js +232 -5
  13. package/dist/api/doctor.js.map +1 -1
  14. package/dist/api/quickstart.d.ts +19 -1
  15. package/dist/api/quickstart.js +103 -2
  16. package/dist/api/quickstart.js.map +1 -1
  17. package/dist/artifact/types.d.ts +16 -2
  18. package/dist/artifact/types.js.map +1 -1
  19. package/dist/cli/phaseCommands.d.ts +61 -0
  20. package/dist/cli/phaseCommands.js +559 -39
  21. package/dist/cli/phaseCommands.js.map +1 -1
  22. package/dist/guardrails/detectors.d.ts +9 -0
  23. package/dist/guardrails/detectors.js +102 -0
  24. package/dist/guardrails/detectors.js.map +1 -1
  25. package/dist/hooks/HookGeneratorEnhanced.js +29 -0
  26. package/dist/hooks/HookGeneratorEnhanced.js.map +1 -1
  27. package/dist/hooks/WorkflowHooksManager.js +20 -1
  28. package/dist/hooks/WorkflowHooksManager.js.map +1 -1
  29. package/dist/index.d.ts +6 -0
  30. package/dist/index.js +4 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/output/BrandThemeLoader.d.ts +54 -0
  33. package/dist/output/BrandThemeLoader.js +340 -0
  34. package/dist/output/BrandThemeLoader.js.map +1 -0
  35. package/dist/output/HTMLDocumentRenderer.d.ts +83 -0
  36. package/dist/output/HTMLDocumentRenderer.js +717 -0
  37. package/dist/output/HTMLDocumentRenderer.js.map +1 -0
  38. package/dist/output/UIPrototypeRenderer.d.ts +61 -0
  39. package/dist/output/UIPrototypeRenderer.js +500 -0
  40. package/dist/output/UIPrototypeRenderer.js.map +1 -0
  41. package/dist/output/index.d.ts +6 -0
  42. package/dist/output/index.js +6 -0
  43. package/dist/output/index.js.map +1 -0
  44. package/dist/skills/SkillDiscovery.js +2 -1
  45. package/dist/skills/SkillDiscovery.js.map +1 -1
  46. package/dist/skills/index.d.ts +1 -0
  47. package/dist/skills/index.js +1 -0
  48. package/dist/skills/index.js.map +1 -1
  49. package/dist/skills/routing/SkillGate.d.ts +11 -0
  50. package/dist/skills/routing/SkillGate.js +76 -0
  51. package/dist/skills/routing/SkillGate.js.map +1 -0
  52. package/dist/skills/routing/SkillPlanner.d.ts +8 -0
  53. package/dist/skills/routing/SkillPlanner.js +91 -0
  54. package/dist/skills/routing/SkillPlanner.js.map +1 -0
  55. package/dist/skills/routing/SkillPolicy.d.ts +6 -0
  56. package/dist/skills/routing/SkillPolicy.js +146 -0
  57. package/dist/skills/routing/SkillPolicy.js.map +1 -0
  58. package/dist/skills/routing/SkillRoutingTypes.d.ts +72 -0
  59. package/dist/skills/routing/SkillRoutingTypes.js +2 -0
  60. package/dist/skills/routing/SkillRoutingTypes.js.map +1 -0
  61. package/dist/skills/routing/TaskIntentClassifier.d.ts +6 -0
  62. package/dist/skills/routing/TaskIntentClassifier.js +79 -0
  63. package/dist/skills/routing/TaskIntentClassifier.js.map +1 -0
  64. package/dist/skills/routing/index.d.ts +5 -0
  65. package/dist/skills/routing/index.js +6 -0
  66. package/dist/skills/routing/index.js.map +1 -0
  67. package/dist/workflow/GovernanceTemplates.d.ts +12 -0
  68. package/dist/workflow/GovernanceTemplates.js +515 -0
  69. package/dist/workflow/GovernanceTemplates.js.map +1 -0
  70. package/dist/workflow/PhaseMarkerTracker.d.ts +63 -0
  71. package/dist/workflow/PhaseMarkerTracker.js +291 -0
  72. package/dist/workflow/PhaseMarkerTracker.js.map +1 -0
  73. package/dist/workflow/SessionStateTracker.d.ts +74 -0
  74. package/dist/workflow/SessionStateTracker.js +270 -0
  75. package/dist/workflow/SessionStateTracker.js.map +1 -0
  76. package/dist/workflow/TaskArtifactScaffolder.d.ts +47 -0
  77. package/dist/workflow/TaskArtifactScaffolder.js +237 -0
  78. package/dist/workflow/TaskArtifactScaffolder.js.map +1 -0
  79. package/dist/workflow/TaskMetricsStore.d.ts +49 -0
  80. package/dist/workflow/TaskMetricsStore.js +149 -0
  81. package/dist/workflow/TaskMetricsStore.js.map +1 -0
  82. package/dist/workflow/VerificationCommands.d.ts +2 -0
  83. package/dist/workflow/VerificationCommands.js +7 -4
  84. package/dist/workflow/VerificationCommands.js.map +1 -1
  85. package/dist/workflow/VerificationProfile.d.ts +55 -0
  86. package/dist/workflow/VerificationProfile.js +133 -0
  87. package/dist/workflow/VerificationProfile.js.map +1 -0
  88. package/dist/workflow/WorkflowArtifactWriter.d.ts +113 -0
  89. package/dist/workflow/WorkflowArtifactWriter.js +241 -0
  90. package/dist/workflow/WorkflowArtifactWriter.js.map +1 -0
  91. package/dist/workflow/WorkflowEngine.d.ts +20 -2
  92. package/dist/workflow/WorkflowEngine.js +37 -8
  93. package/dist/workflow/WorkflowEngine.js.map +1 -1
  94. package/dist/workflow/autonomous/AutonomousDevLoop.d.ts +88 -0
  95. package/dist/workflow/autonomous/AutonomousDevLoop.js +381 -0
  96. package/dist/workflow/autonomous/AutonomousDevLoop.js.map +1 -0
  97. package/dist/workflow/autonomous/WorklogManager.d.ts +50 -0
  98. package/dist/workflow/autonomous/WorklogManager.js +264 -0
  99. package/dist/workflow/autonomous/WorklogManager.js.map +1 -0
  100. package/dist/workflow/autonomous/index.d.ts +2 -0
  101. package/dist/workflow/autonomous/index.js +4 -0
  102. package/dist/workflow/autonomous/index.js.map +1 -0
  103. package/dist/workflow/gates/GateSystem.d.ts +12 -3
  104. package/dist/workflow/gates/GateSystem.js +185 -41
  105. package/dist/workflow/gates/GateSystem.js.map +1 -1
  106. package/dist/workflow/index.d.ts +7 -0
  107. package/dist/workflow/index.js +7 -0
  108. package/dist/workflow/index.js.map +1 -1
  109. package/package.json +3 -3
@@ -0,0 +1,5 @@
1
+ export * from './SkillRoutingTypes.js';
2
+ export * from './SkillPolicy.js';
3
+ export * from './TaskIntentClassifier.js';
4
+ export * from './SkillPlanner.js';
5
+ export * from './SkillGate.js';
@@ -0,0 +1,6 @@
1
+ export * from './SkillRoutingTypes.js';
2
+ export * from './SkillPolicy.js';
3
+ export * from './TaskIntentClassifier.js';
4
+ export * from './SkillPlanner.js';
5
+ export * from './SkillGate.js';
6
+ //# sourceMappingURL=index.js.map
@@ -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;