@hongmaple0820/scale-engine 0.25.0 → 0.27.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 (171) hide show
  1. package/LICENSE +15 -15
  2. package/README.en.md +384 -346
  3. package/README.md +564 -529
  4. package/dist/adapters/AiderAdapter.js +52 -52
  5. package/dist/adapters/AntigravityAdapter.d.ts +4 -0
  6. package/dist/adapters/AntigravityAdapter.js +21 -0
  7. package/dist/adapters/AntigravityAdapter.js.map +1 -0
  8. package/dist/adapters/ClaudeCodeAdapter.d.ts +4 -1
  9. package/dist/adapters/ClaudeCodeAdapter.js +34 -34
  10. package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
  11. package/dist/adapters/ClineAdapter.d.ts +4 -0
  12. package/dist/adapters/ClineAdapter.js +20 -0
  13. package/dist/adapters/ClineAdapter.js.map +1 -0
  14. package/dist/adapters/CodexAdapter.js +28 -28
  15. package/dist/adapters/CursorAdapter.js +26 -26
  16. package/dist/adapters/DeepSeekTuiAdapter.js +97 -97
  17. package/dist/adapters/DoubaoAdapter.js +33 -33
  18. package/dist/adapters/GeminiAdapter.js +26 -26
  19. package/dist/adapters/GenericProjectAgentAdapter.d.ts +29 -0
  20. package/dist/adapters/GenericProjectAgentAdapter.js +204 -0
  21. package/dist/adapters/GenericProjectAgentAdapter.js.map +1 -0
  22. package/dist/adapters/HermesAdapter.js +26 -26
  23. package/dist/adapters/JCodeAdapter.d.ts +4 -0
  24. package/dist/adapters/JCodeAdapter.js +19 -0
  25. package/dist/adapters/JCodeAdapter.js.map +1 -0
  26. package/dist/adapters/KiloCodeAdapter.d.ts +4 -0
  27. package/dist/adapters/KiloCodeAdapter.js +20 -0
  28. package/dist/adapters/KiloCodeAdapter.js.map +1 -0
  29. package/dist/adapters/KimiAdapter.js +32 -32
  30. package/dist/adapters/KiroAdapter.js +26 -26
  31. package/dist/adapters/OpenClawAdapter.js +26 -26
  32. package/dist/adapters/OpenCodeAdapter.js +26 -26
  33. package/dist/adapters/QCoderAdapter.js +26 -26
  34. package/dist/adapters/QoderAdapter.d.ts +4 -0
  35. package/dist/adapters/QoderAdapter.js +21 -0
  36. package/dist/adapters/QoderAdapter.js.map +1 -0
  37. package/dist/adapters/TraeAdapter.js +26 -26
  38. package/dist/adapters/VSCAdapter.js +26 -26
  39. package/dist/adapters/WindsurfAdapter.js +32 -32
  40. package/dist/adapters/WorkBuddyAdapter.js +26 -26
  41. package/dist/adapters/index.d.ts +5 -0
  42. package/dist/adapters/index.js +15 -0
  43. package/dist/adapters/index.js.map +1 -1
  44. package/dist/api/cli.js +190 -56
  45. package/dist/api/cli.js.map +1 -1
  46. package/dist/api/doctor.js +10 -3
  47. package/dist/api/doctor.js.map +1 -1
  48. package/dist/api/quickstart.js +7 -1
  49. package/dist/api/quickstart.js.map +1 -1
  50. package/dist/artifact/sqliteStore.js +89 -89
  51. package/dist/artifact/types.d.ts +1 -1
  52. package/dist/cli/phaseCommands.js +53 -53
  53. package/dist/cli/phaseCommands.js.map +1 -1
  54. package/dist/context/AntiPatternRegistry.js +20 -20
  55. package/dist/context/ContextBudget.d.ts +14 -0
  56. package/dist/context/ContextBudget.js +50 -14
  57. package/dist/context/ContextBudget.js.map +1 -1
  58. package/dist/context/ContextBuilder.js +155 -155
  59. package/dist/context/ContextCompiler.d.ts +34 -0
  60. package/dist/context/ContextCompiler.js +120 -0
  61. package/dist/context/ContextCompiler.js.map +1 -0
  62. package/dist/eval/WorkflowEval.js +4 -6
  63. package/dist/eval/WorkflowEval.js.map +1 -1
  64. package/dist/evolution/EvolutionEngine.js +31 -31
  65. package/dist/evolution/EvolutionEvaluator.d.ts +2 -0
  66. package/dist/evolution/EvolutionEvaluator.js +7 -1
  67. package/dist/evolution/EvolutionEvaluator.js.map +1 -1
  68. package/dist/fsm/FSMAgentBridge.js +11 -11
  69. package/dist/governance/GovernanceRoi.d.ts +6 -1
  70. package/dist/governance/GovernanceRoi.js +32 -0
  71. package/dist/governance/GovernanceRoi.js.map +1 -1
  72. package/dist/guardrails/DependencyAuditor.js +38 -0
  73. package/dist/guardrails/DependencyAuditor.js.map +1 -1
  74. package/dist/hooks/HookGeneratorEnhanced.js +218 -218
  75. package/dist/index.d.ts +2 -1
  76. package/dist/index.js +3 -2
  77. package/dist/index.js.map +1 -1
  78. package/dist/knowledge/SQLiteKnowledgeBase.js +28 -28
  79. package/dist/memory/MemoryBrain.js +52 -52
  80. package/dist/output/GovernanceDashboard.js +44 -44
  81. package/dist/output/HTMLArtifactLayer.js +31 -31
  82. package/dist/prompts/VibeTemplateGallery.js +121 -121
  83. package/dist/runtime/AiOsRuntime.d.ts +53 -0
  84. package/dist/runtime/AiOsRuntime.js +142 -0
  85. package/dist/runtime/AiOsRuntime.js.map +1 -0
  86. package/dist/runtime/index.d.ts +1 -0
  87. package/dist/runtime/index.js +1 -0
  88. package/dist/runtime/index.js.map +1 -1
  89. package/dist/skills/SkillDiscovery.js +12 -1
  90. package/dist/skills/SkillDiscovery.js.map +1 -1
  91. package/dist/skills/routing/SkillPlanner.js +128 -40
  92. package/dist/skills/routing/SkillPlanner.js.map +1 -1
  93. package/dist/skills/routing/SkillRoutingTypes.d.ts +17 -0
  94. package/dist/tools/SafeCommandRunner.d.ts +16 -0
  95. package/dist/tools/SafeCommandRunner.js +83 -0
  96. package/dist/tools/SafeCommandRunner.js.map +1 -0
  97. package/dist/workflow/EngineeringStandards.js +62 -62
  98. package/dist/workflow/GovernanceTemplatePacks.d.ts +1 -1
  99. package/dist/workflow/GovernanceTemplatePacks.js +1990 -162
  100. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
  101. package/dist/workflow/GovernanceTemplates.d.ts +2 -0
  102. package/dist/workflow/GovernanceTemplates.js +1012 -1001
  103. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  104. package/dist/workflow/ResourceGovernance.js +16 -16
  105. package/dist/workflow/TaskArtifactScaffolder.js +10 -10
  106. package/dist/workflow/UpgradeManager.d.ts +3 -2
  107. package/dist/workflow/UpgradeManager.js +134 -49
  108. package/dist/workflow/UpgradeManager.js.map +1 -1
  109. package/dist/workflow/WorkspaceTopology.js +18 -15
  110. package/dist/workflow/WorkspaceTopology.js.map +1 -1
  111. package/dist/workflow/gates/GateSystem.js +3 -9
  112. package/dist/workflow/gates/GateSystem.js.map +1 -1
  113. package/docs/ACTIVE_SECURITY_VISUAL_GATES.md +87 -87
  114. package/docs/AI_ENGINEERING_OS_POSITIONING.md +462 -0
  115. package/docs/BACKGROUND_HUNTER.md +62 -62
  116. package/docs/CODE_INTELLIGENCE.md +138 -138
  117. package/docs/CONTEXT_BUDGET.md +155 -113
  118. package/docs/DEPENDENCY_AUDIT.md +118 -89
  119. package/docs/EVOLUTION_SHADOW_MODE.md +63 -63
  120. package/docs/EXTERNAL_REFERENCES.md +63 -58
  121. package/docs/GITLAB_FLOW.md +125 -125
  122. package/docs/GOVERNANCE_DASHBOARD.md +85 -85
  123. package/docs/MEMORY_BRAIN.md +104 -104
  124. package/docs/MEMORY_FABRIC.md +136 -134
  125. package/docs/README.md +102 -92
  126. package/docs/RUNTIME_EVIDENCE.md +101 -101
  127. package/docs/SKILL-REPOSITORY.md +57 -57
  128. package/docs/SKILL_RADAR.md +135 -122
  129. package/docs/THIRD_PARTY_SKILLS.md +57 -57
  130. package/docs/WORKFLOW_EVAL.md +151 -151
  131. package/docs/guides/DEVELOPMENT_WORKFLOW.md +80 -0
  132. package/docs/guides/GETTING_STARTED.md +50 -0
  133. package/docs/start/README.md +78 -72
  134. package/docs/start/agent-governance-demo.md +107 -107
  135. package/docs/start/quickstart.md +137 -127
  136. package/docs/start/workflow-upgrade.md +32 -8
  137. package/docs/workflow/README.md +67 -0
  138. package/docs/workflow/node-library.md +52 -0
  139. package/docs/workflow/templates/api-contract.md +29 -0
  140. package/docs/workflow/templates/architecture-review.md +23 -0
  141. package/docs/workflow/templates/db-change-plan.md +20 -0
  142. package/docs/workflow/templates/docs-impact.md +17 -0
  143. package/docs/workflow/templates/e2e-plan.md +20 -0
  144. package/docs/workflow/templates/explore.md +16 -0
  145. package/docs/workflow/templates/github-actions-scale-preflight.yml +32 -0
  146. package/docs/workflow/templates/mini-prd.md +16 -0
  147. package/docs/workflow/templates/plan.md +37 -0
  148. package/docs/workflow/templates/pre-push-scale-preflight.sh +8 -0
  149. package/docs/workflow/templates/product-smoke.md +61 -0
  150. package/docs/workflow/templates/reality-check.md +28 -0
  151. package/docs/workflow/templates/resource-cleanup.md +17 -0
  152. package/docs/workflow/templates/resource-impact.md +25 -0
  153. package/docs/workflow/templates/review.md +12 -0
  154. package/docs/workflow/templates/runtime.md +23 -0
  155. package/docs/workflow/templates/security-review.md +26 -0
  156. package/docs/workflow/templates/skill-evidence.md +33 -0
  157. package/docs/workflow/templates/skill-plan.md +39 -0
  158. package/docs/workflow/templates/spec.md +17 -0
  159. package/docs/workflow/templates/standards-impact.md +28 -0
  160. package/docs/workflow/templates/summary.md +16 -0
  161. package/docs/workflow/templates/tasks.md +8 -0
  162. package/docs/workflow/templates/ui-spec.md +29 -0
  163. package/docs/workflow/templates/verification.md +20 -0
  164. package/docs/workflow/templates/visual-review.md +20 -0
  165. package/examples/demo-projects/agent-governance-demo/CONTEXT.md +14 -14
  166. package/examples/demo-projects/agent-governance-demo/README.md +48 -48
  167. package/examples/demo-projects/agent-governance-demo/docs/CONTEXT-MAP.md +14 -14
  168. package/examples/demo-projects/agent-governance-demo/package.json +22 -21
  169. package/examples/demo-projects/agent-governance-demo/src/oauth-state.ts +39 -39
  170. package/examples/demo-projects/agent-governance-demo/tests/oauth-state.test.ts +52 -52
  171. package/package.json +95 -78
@@ -0,0 +1,83 @@
1
+ import { execa } from 'execa';
2
+ const SHELL_META = new Set(['|', '&', ';', '<', '>', '`', '$', '(', ')']);
3
+ export function parseCommandLine(command) {
4
+ const tokens = [];
5
+ let current = '';
6
+ let quote = null;
7
+ for (let index = 0; index < command.length; index += 1) {
8
+ const char = command[index];
9
+ if (quote) {
10
+ if (char === quote) {
11
+ quote = null;
12
+ }
13
+ else if (quote === '"' && char === '\\' && index + 1 < command.length) {
14
+ index += 1;
15
+ current += command[index];
16
+ }
17
+ else {
18
+ current += char;
19
+ }
20
+ continue;
21
+ }
22
+ if (char === '"' || char === "'") {
23
+ quote = char;
24
+ continue;
25
+ }
26
+ if (/\s/.test(char)) {
27
+ if (current) {
28
+ tokens.push(current);
29
+ current = '';
30
+ }
31
+ continue;
32
+ }
33
+ if (char === '\\' && index + 1 < command.length) {
34
+ index += 1;
35
+ current += command[index];
36
+ continue;
37
+ }
38
+ if (SHELL_META.has(char)) {
39
+ throw new Error(`Shell metacharacter "${char}" is not allowed in verification commands. Use package scripts or set SCALE_ALLOW_SHELL_COMMANDS=1 for a trusted local run.`);
40
+ }
41
+ current += char;
42
+ }
43
+ if (quote)
44
+ throw new Error('Unterminated quote in command');
45
+ if (current)
46
+ tokens.push(current);
47
+ if (tokens.length === 0)
48
+ throw new Error('Command is empty');
49
+ return { file: tokens[0], args: tokens.slice(1) };
50
+ }
51
+ export async function runSafeCommand(command, options = {}) {
52
+ const allowShell = options.allowShell || process.env.SCALE_ALLOW_SHELL_COMMANDS === '1';
53
+ const execaOptions = {
54
+ cwd: options.cwd,
55
+ timeout: options.timeout,
56
+ reject: false,
57
+ };
58
+ const result = allowShell
59
+ ? await execa(command, { ...execaOptions, shell: true })
60
+ : await runWithoutShell(command, execaOptions);
61
+ return {
62
+ exitCode: result.exitCode ?? 1,
63
+ stdout: commandOutputToString(result.stdout),
64
+ stderr: commandOutputToString(result.stderr),
65
+ };
66
+ }
67
+ function commandOutputToString(value) {
68
+ if (typeof value === 'string')
69
+ return value;
70
+ if (value === undefined || value === null)
71
+ return '';
72
+ if (value instanceof Uint8Array)
73
+ return new TextDecoder().decode(value);
74
+ return String(value);
75
+ }
76
+ async function runWithoutShell(command, options) {
77
+ const parsed = parseCommandLine(command);
78
+ return execa(parsed.file, parsed.args, {
79
+ ...options,
80
+ shell: false,
81
+ });
82
+ }
83
+ //# sourceMappingURL=SafeCommandRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeCommandRunner.js","sourceRoot":"","sources":["../../src/tools/SafeCommandRunner.ts"],"names":[],"mappings":"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"}
@@ -644,21 +644,21 @@ function standardsSettlementMarkdown(taskId, doctor) {
644
644
  const findings = doctor.findings.length
645
645
  ? doctor.findings.map(finding => `| ${finding.severity.toUpperCase()} | ${finding.ruleId} | ${escapeCell(finding.path)} | ${finding.line ?? ''} | ${escapeCell(finding.message)} |`).join('\n')
646
646
  : '| OK | no-findings | | | No engineering standards findings. |';
647
- return `
648
- ## SCALE Engineering Standards Settlement - ${new Date().toISOString()}
649
-
650
- Task: ${taskId ?? 'unspecified'}
651
- Status: ${doctor.ok ? 'passed' : 'blocked'}
652
-
653
- | Metric | Value |
654
- | --- | ---: |
655
- | Files scanned | ${doctor.scan.summary.filesScanned} |
656
- | Total findings | ${doctor.scan.summary.totalFindings} |
657
- | Blocking findings | ${doctor.scan.summary.blockingFindings} |
658
-
659
- | Severity | Rule | Path | Line | Message |
660
- | --- | --- | --- | ---: | --- |
661
- ${findings}
647
+ return `
648
+ ## SCALE Engineering Standards Settlement - ${new Date().toISOString()}
649
+
650
+ Task: ${taskId ?? 'unspecified'}
651
+ Status: ${doctor.ok ? 'passed' : 'blocked'}
652
+
653
+ | Metric | Value |
654
+ | --- | ---: |
655
+ | Files scanned | ${doctor.scan.summary.filesScanned} |
656
+ | Total findings | ${doctor.scan.summary.totalFindings} |
657
+ | Blocking findings | ${doctor.scan.summary.blockingFindings} |
658
+
659
+ | Severity | Rule | Path | Line | Message |
660
+ | --- | --- | --- | ---: | --- |
661
+ ${findings}
662
662
  `;
663
663
  }
664
664
  function baselineEntriesFromFindings(findings, reason) {
@@ -762,53 +762,53 @@ function legacyDebtMarkdown(options) {
762
762
  const truncated = options.findings.length > detailLimit
763
763
  ? `\n\nDetail rows truncated to ${detailLimit} of ${options.findings.length}. The baseline file contains the complete machine-readable list.\n`
764
764
  : '';
765
- return `# SCALE Engineering Standards Legacy Debt Classification
766
-
767
- Generated: ${new Date().toISOString()}
768
- Task: ${options.taskId ?? 'unspecified'}
769
- Baseline written: ${options.wroteBaseline ? 'yes' : 'no'}
770
- Baseline path: ${options.baselinePath}
771
- Baseline entries: ${options.baselineEntries.length}
772
-
773
- ## Summary
774
-
775
- | Metric | Value |
776
- | --- | ---: |
777
- | Files scanned | ${options.debt.filesScanned} |
778
- | Total findings | ${options.debt.totalFindings} |
779
- | Blocking findings | ${options.debt.blockingFindings} |
780
- | Warnings | ${options.debt.bySeverity.warn} |
781
- | Info | ${options.debt.bySeverity.info} |
782
-
783
- ## By Category
784
-
785
- | Category | Total | Blocking | Warn | Info |
786
- | --- | ---: | ---: | ---: | ---: |
787
- ${categories}
788
-
789
- ## By Scope
790
-
791
- | Scope | Total | Blocking | Warn | Info |
792
- | --- | ---: | ---: | ---: | ---: |
793
- ${scopes}
794
-
795
- ## By Rule
796
-
797
- | Rule | Category | Total | Blocking | Warn | Info |
798
- | --- | --- | ---: | ---: | ---: | ---: |
799
- ${rules}
800
-
801
- ## Top Files
802
-
803
- | Path | Total | Blocking | Warn | Info |
804
- | --- | ---: | ---: | ---: | ---: |
805
- ${files}
806
-
807
- ## Finding Details
808
-
809
- | Severity | Category | Rule | Path | Line | Message |
810
- | --- | --- | --- | --- | ---: | --- |
811
- ${details}${truncated}
765
+ return `# SCALE Engineering Standards Legacy Debt Classification
766
+
767
+ Generated: ${new Date().toISOString()}
768
+ Task: ${options.taskId ?? 'unspecified'}
769
+ Baseline written: ${options.wroteBaseline ? 'yes' : 'no'}
770
+ Baseline path: ${options.baselinePath}
771
+ Baseline entries: ${options.baselineEntries.length}
772
+
773
+ ## Summary
774
+
775
+ | Metric | Value |
776
+ | --- | ---: |
777
+ | Files scanned | ${options.debt.filesScanned} |
778
+ | Total findings | ${options.debt.totalFindings} |
779
+ | Blocking findings | ${options.debt.blockingFindings} |
780
+ | Warnings | ${options.debt.bySeverity.warn} |
781
+ | Info | ${options.debt.bySeverity.info} |
782
+
783
+ ## By Category
784
+
785
+ | Category | Total | Blocking | Warn | Info |
786
+ | --- | ---: | ---: | ---: | ---: |
787
+ ${categories}
788
+
789
+ ## By Scope
790
+
791
+ | Scope | Total | Blocking | Warn | Info |
792
+ | --- | ---: | ---: | ---: | ---: |
793
+ ${scopes}
794
+
795
+ ## By Rule
796
+
797
+ | Rule | Category | Total | Blocking | Warn | Info |
798
+ | --- | --- | ---: | ---: | ---: | ---: |
799
+ ${rules}
800
+
801
+ ## Top Files
802
+
803
+ | Path | Total | Blocking | Warn | Info |
804
+ | --- | ---: | ---: | ---: | ---: |
805
+ ${files}
806
+
807
+ ## Finding Details
808
+
809
+ | Severity | Category | Rule | Path | Line | Message |
810
+ | --- | --- | --- | --- | ---: | --- |
811
+ ${details}${truncated}
812
812
  `;
813
813
  }
814
814
  function summarizeStandards(filesScanned, findings) {
@@ -1,6 +1,6 @@
1
1
  import type { GovernanceMode } from './GovernanceTemplates.js';
2
2
  import type { VerificationService } from './VerificationProfile.js';
3
- export type GovernancePackId = 'standard' | 'project-scaffold' | 'moe-workspace' | 'resource-governance' | 'go-service-matrix' | 'node-library' | 'frontend-app';
3
+ export type GovernancePackId = 'standard' | 'project-scaffold' | 'scale-engine-repo' | 'moe-workspace' | 'resource-governance' | 'go-service-matrix' | 'node-library' | 'frontend-app';
4
4
  export interface GovernanceGeneratedFile {
5
5
  path: string;
6
6
  kind: 'doc' | 'template' | 'script' | 'config';