@hongmaple0820/scale-engine 0.13.0 → 0.14.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 (87) hide show
  1. package/dist/adapters/AiderAdapter.js +1 -1
  2. package/dist/adapters/AiderAdapter.js.map +1 -1
  3. package/dist/adapters/ClaudeCodeAdapter.js +5 -3
  4. package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
  5. package/dist/adapters/CodexAdapter.js +1 -1
  6. package/dist/adapters/CodexAdapter.js.map +1 -1
  7. package/dist/adapters/CursorAdapter.js +1 -1
  8. package/dist/adapters/CursorAdapter.js.map +1 -1
  9. package/dist/adapters/DeepSeekTuiAdapter.js +5 -3
  10. package/dist/adapters/DeepSeekTuiAdapter.js.map +1 -1
  11. package/dist/adapters/DoubaoAdapter.js +1 -1
  12. package/dist/adapters/DoubaoAdapter.js.map +1 -1
  13. package/dist/adapters/GeminiAdapter.js +1 -1
  14. package/dist/adapters/GeminiAdapter.js.map +1 -1
  15. package/dist/adapters/HermesAdapter.js +1 -1
  16. package/dist/adapters/HermesAdapter.js.map +1 -1
  17. package/dist/adapters/KimiAdapter.js +1 -1
  18. package/dist/adapters/KimiAdapter.js.map +1 -1
  19. package/dist/adapters/KiroAdapter.js +1 -1
  20. package/dist/adapters/KiroAdapter.js.map +1 -1
  21. package/dist/adapters/OpenClawAdapter.js +1 -1
  22. package/dist/adapters/OpenClawAdapter.js.map +1 -1
  23. package/dist/adapters/OpenCodeAdapter.js +1 -1
  24. package/dist/adapters/OpenCodeAdapter.js.map +1 -1
  25. package/dist/adapters/QCoderAdapter.js +1 -1
  26. package/dist/adapters/QCoderAdapter.js.map +1 -1
  27. package/dist/adapters/TraeAdapter.js +1 -1
  28. package/dist/adapters/TraeAdapter.js.map +1 -1
  29. package/dist/adapters/VSCAdapter.js +1 -1
  30. package/dist/adapters/VSCAdapter.js.map +1 -1
  31. package/dist/adapters/WindsurfAdapter.js +1 -1
  32. package/dist/adapters/WindsurfAdapter.js.map +1 -1
  33. package/dist/adapters/WorkBuddyAdapter.js +1 -1
  34. package/dist/adapters/WorkBuddyAdapter.js.map +1 -1
  35. package/dist/api/cli.js +308 -13
  36. package/dist/api/cli.js.map +1 -1
  37. package/dist/api/doctor.d.ts +1 -0
  38. package/dist/api/doctor.js +29 -0
  39. package/dist/api/doctor.js.map +1 -1
  40. package/dist/api/quickstart.d.ts +1 -0
  41. package/dist/api/quickstart.js +2 -2
  42. package/dist/api/quickstart.js.map +1 -1
  43. package/dist/cli/phaseCommands.d.ts +5 -0
  44. package/dist/cli/phaseCommands.js +149 -25
  45. package/dist/cli/phaseCommands.js.map +1 -1
  46. package/dist/skills/ExternalSkills.js +2 -0
  47. package/dist/skills/ExternalSkills.js.map +1 -1
  48. package/dist/skills/SkillCatalog.d.ts +13 -0
  49. package/dist/skills/SkillCatalog.js +184 -0
  50. package/dist/skills/SkillCatalog.js.map +1 -0
  51. package/dist/skills/SkillDoctor.d.ts +37 -0
  52. package/dist/skills/SkillDoctor.js +90 -0
  53. package/dist/skills/SkillDoctor.js.map +1 -0
  54. package/dist/skills/index.d.ts +1 -0
  55. package/dist/skills/index.js +1 -0
  56. package/dist/skills/index.js.map +1 -1
  57. package/dist/skills/routing/SkillGate.d.ts +2 -1
  58. package/dist/skills/routing/SkillGate.js +19 -2
  59. package/dist/skills/routing/SkillGate.js.map +1 -1
  60. package/dist/skills/routing/SkillPolicy.js +39 -12
  61. package/dist/skills/routing/SkillPolicy.js.map +1 -1
  62. package/dist/workflow/GovernanceLock.d.ts +35 -0
  63. package/dist/workflow/GovernanceLock.js +58 -0
  64. package/dist/workflow/GovernanceLock.js.map +1 -0
  65. package/dist/workflow/GovernanceTemplatePacks.d.ts +24 -0
  66. package/dist/workflow/GovernanceTemplatePacks.js +83 -0
  67. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -0
  68. package/dist/workflow/GovernanceTemplates.d.ts +6 -1
  69. package/dist/workflow/GovernanceTemplates.js +239 -68
  70. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  71. package/dist/workflow/TaskArtifactScaffolder.js +7 -7
  72. package/dist/workflow/TaskArtifactScaffolder.js.map +1 -1
  73. package/dist/workflow/VerificationCommands.js +1 -8
  74. package/dist/workflow/VerificationCommands.js.map +1 -1
  75. package/dist/workflow/VerificationProfile.d.ts +1 -0
  76. package/dist/workflow/VerificationProfile.js +42 -5
  77. package/dist/workflow/VerificationProfile.js.map +1 -1
  78. package/dist/workflow/WorkflowEngine.d.ts +6 -3
  79. package/dist/workflow/WorkflowEngine.js +1 -1
  80. package/dist/workflow/WorkflowEngine.js.map +1 -1
  81. package/dist/workflow/WorkspaceLifecycle.d.ts +51 -0
  82. package/dist/workflow/WorkspaceLifecycle.js +259 -0
  83. package/dist/workflow/WorkspaceLifecycle.js.map +1 -0
  84. package/dist/workflow/index.d.ts +3 -0
  85. package/dist/workflow/index.js +3 -0
  86. package/dist/workflow/index.js.map +1 -1
  87. package/package.json +2 -2
@@ -0,0 +1,58 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { dirname, join } from 'node:path';
4
+ export function writeGovernanceLock(projectDir, input) {
5
+ const lock = {
6
+ version: 1,
7
+ scalePackage: '@hongmaple0820/scale-engine',
8
+ scaleVersion: input.scaleVersion,
9
+ pack: input.pack,
10
+ packVersion: input.packVersion,
11
+ generatedAt: new Date().toISOString(),
12
+ files: input.files
13
+ .filter(file => file.sha256 || existsSync(join(projectDir, file.path)))
14
+ .map(file => ({
15
+ path: file.path,
16
+ sha256: file.sha256 ?? hashFile(join(projectDir, file.path)),
17
+ owned: file.owned,
18
+ })),
19
+ };
20
+ const target = governanceLockPath(projectDir);
21
+ mkdirSync(dirname(target), { recursive: true });
22
+ writeFileSync(target, JSON.stringify(lock, null, 2) + '\n', 'utf-8');
23
+ return lock;
24
+ }
25
+ export function readGovernanceLock(projectDir) {
26
+ const target = governanceLockPath(projectDir);
27
+ if (!existsSync(target))
28
+ return null;
29
+ return JSON.parse(readFileSync(target, 'utf-8'));
30
+ }
31
+ export function computeGovernanceDrift(projectDir) {
32
+ const lock = readGovernanceLock(projectDir);
33
+ if (!lock)
34
+ return { lockExists: false, missing: [], changed: [], clean: [] };
35
+ const missing = [];
36
+ const changed = [];
37
+ const clean = [];
38
+ for (const entry of lock.files.filter(file => file.owned)) {
39
+ const target = join(projectDir, entry.path);
40
+ if (!existsSync(target)) {
41
+ missing.push(entry);
42
+ continue;
43
+ }
44
+ const current = hashFile(target);
45
+ if (current !== entry.sha256)
46
+ changed.push(entry);
47
+ else
48
+ clean.push(entry);
49
+ }
50
+ return { lockExists: true, missing, changed, clean };
51
+ }
52
+ export function governanceLockPath(projectDir) {
53
+ return join(projectDir, '.scale', 'governance.lock.json');
54
+ }
55
+ function hashFile(path) {
56
+ return createHash('sha256').update(readFileSync(path)).digest('hex');
57
+ }
58
+ //# sourceMappingURL=GovernanceLock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GovernanceLock.js","sourceRoot":"","sources":["../../src/workflow/GovernanceLock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAiCzC,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,KAA0B;IAChF,MAAM,IAAI,GAAuB;QAC/B,OAAO,EAAE,CAAC;QACV,YAAY,EAAE,6BAA6B;QAC3C,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,KAAK,EAAE,KAAK,CAAC,KAAK;aACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACtE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;KACN,CAAA;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IAC7C,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;IACpE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAuB,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAE5E,MAAM,OAAO,GAA0B,EAAE,CAAA;IACzC,MAAM,OAAO,GAA0B,EAAE,CAAA;IACzC,MAAM,KAAK,GAA0B,EAAE,CAAA;IAEvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACnB,SAAQ;QACV,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,OAAO,KAAK,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;YAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAA;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACtE,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { GovernanceMode } from './GovernanceTemplates.js';
2
+ import type { VerificationService } from './VerificationProfile.js';
3
+ export type GovernancePackId = 'standard' | 'project-scaffold' | 'go-service-matrix' | 'node-library' | 'frontend-app';
4
+ export interface GovernanceGeneratedFile {
5
+ path: string;
6
+ kind: 'doc' | 'template' | 'script' | 'config';
7
+ owned: boolean;
8
+ content: string;
9
+ }
10
+ export interface GovernancePackModeConfig {
11
+ artifactGate: 'off' | 'warn' | 'block';
12
+ skillRoutingMode: 'off' | 'warn' | 'block';
13
+ }
14
+ export interface GovernanceTemplatePack {
15
+ id: GovernancePackId;
16
+ version: number;
17
+ description: string;
18
+ modeDefaults: Record<GovernanceMode, GovernancePackModeConfig>;
19
+ defaultServices?: VerificationService[];
20
+ exclude?: string[];
21
+ generatedFiles: GovernanceGeneratedFile[];
22
+ }
23
+ export declare function listGovernanceTemplatePacks(): GovernanceTemplatePack[];
24
+ export declare function resolveGovernanceTemplatePack(id: string | undefined): GovernanceTemplatePack;
@@ -0,0 +1,83 @@
1
+ export function listGovernanceTemplatePacks() {
2
+ return PACKS;
3
+ }
4
+ export function resolveGovernanceTemplatePack(id) {
5
+ const normalized = (id || 'standard');
6
+ const pack = PACKS.find(candidate => candidate.id === normalized);
7
+ if (!pack) {
8
+ const supported = PACKS.map(candidate => candidate.id).join(', ');
9
+ throw new Error(`Unknown governance pack "${id}". Supported packs: ${supported}`);
10
+ }
11
+ return pack;
12
+ }
13
+ const modeDefaults = {
14
+ minimal: { artifactGate: 'off', skillRoutingMode: 'warn' },
15
+ standard: { artifactGate: 'warn', skillRoutingMode: 'warn' },
16
+ critical: { artifactGate: 'block', skillRoutingMode: 'block' },
17
+ };
18
+ const PACKS = [
19
+ {
20
+ id: 'standard',
21
+ version: 1,
22
+ description: 'Generic SCALE governance output.',
23
+ modeDefaults,
24
+ generatedFiles: [],
25
+ },
26
+ {
27
+ id: 'project-scaffold',
28
+ version: 1,
29
+ description: 'Reference project governance scaffold with workflow wrappers.',
30
+ modeDefaults,
31
+ generatedFiles: [
32
+ { path: 'scripts/workflow/new-task.sh', kind: 'script', owned: true, content: workflowWrapper('new-task', 'create-prd') },
33
+ { path: 'scripts/workflow/explore.sh', kind: 'script', owned: true, content: workflowWrapper('explore', 'skill scan') },
34
+ { path: 'scripts/workflow/resume.sh', kind: 'script', owned: true, content: workflowWrapper('resume', 'status') },
35
+ { path: 'scripts/workflow/verify.sh', kind: 'script', owned: true, content: workflowWrapper('verify', 'preflight') },
36
+ { path: 'scripts/gates/all.sh', kind: 'script', owned: true, content: workflowWrapper('gates/all', 'preflight --service all') },
37
+ ],
38
+ },
39
+ {
40
+ id: 'go-service-matrix',
41
+ version: 1,
42
+ description: 'Go multi-service repository governance.',
43
+ modeDefaults,
44
+ defaultServices: [
45
+ { name: 'netdisk', path: 'amdox-go-netdisk', type: 'go', required: true },
46
+ { name: 'auth', path: 'amdox-go-auth', type: 'go', required: true },
47
+ { name: 'gateway', path: 'amdox-go-gateway', type: 'go', required: true },
48
+ ],
49
+ exclude: ['OpenList', 'gfast', 'mcp-zero'],
50
+ generatedFiles: [],
51
+ },
52
+ {
53
+ id: 'node-library',
54
+ version: 1,
55
+ description: 'Node/npm library governance with build, test, diff, and pack checks.',
56
+ modeDefaults,
57
+ generatedFiles: [],
58
+ },
59
+ {
60
+ id: 'frontend-app',
61
+ version: 1,
62
+ description: 'Frontend app governance with UI and visual evidence requirements.',
63
+ modeDefaults,
64
+ generatedFiles: [],
65
+ },
66
+ ];
67
+ function workflowWrapper(label, scaleCommand) {
68
+ return `#!/usr/bin/env bash
69
+ set -euo pipefail
70
+
71
+ run_scale() {
72
+ if command -v scale >/dev/null 2>&1; then
73
+ scale "$@"
74
+ else
75
+ npx @hongmaple0820/scale-engine@latest "$@"
76
+ fi
77
+ }
78
+
79
+ echo "[scale-engine] compatibility wrapper: scripts/${label}.sh -> scale ${scaleCommand}" >&2
80
+ run_scale ${scaleCommand} "$@"
81
+ `;
82
+ }
83
+ //# sourceMappingURL=GovernanceTemplatePacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GovernanceTemplatePacks.js","sourceRoot":"","sources":["../../src/workflow/GovernanceTemplatePacks.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,13 @@
1
+ import { type GovernancePackId } from './GovernanceTemplatePacks.js';
2
+ import type { VerificationService } from './VerificationProfile.js';
1
3
  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';
4
+ export type GovernanceArtifactTemplateName = 'explore.md' | 'mini-prd.md' | 'skill-plan.md' | 'skill-evidence.md' | 'ui-spec.md' | 'visual-review.md' | 'api-contract.md' | 'docs-impact.md' | 'security-review.md' | 'db-change-plan.md' | 'e2e-plan.md' | 'plan.md' | 'verification.md' | 'review.md' | 'summary.md';
3
5
  export interface GovernanceTemplateOptions {
4
6
  mode?: GovernanceMode;
5
7
  projectName?: string;
8
+ pack?: GovernancePackId | string;
9
+ services?: VerificationService[];
10
+ exclude?: string[];
6
11
  }
7
12
  export interface GovernanceTemplateResult {
8
13
  created: string[];