@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.
- package/LICENSE +15 -15
- package/README.en.md +384 -346
- package/README.md +564 -529
- package/dist/adapters/AiderAdapter.js +52 -52
- package/dist/adapters/AntigravityAdapter.d.ts +4 -0
- package/dist/adapters/AntigravityAdapter.js +21 -0
- package/dist/adapters/AntigravityAdapter.js.map +1 -0
- package/dist/adapters/ClaudeCodeAdapter.d.ts +4 -1
- package/dist/adapters/ClaudeCodeAdapter.js +34 -34
- package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
- package/dist/adapters/ClineAdapter.d.ts +4 -0
- package/dist/adapters/ClineAdapter.js +20 -0
- package/dist/adapters/ClineAdapter.js.map +1 -0
- package/dist/adapters/CodexAdapter.js +28 -28
- package/dist/adapters/CursorAdapter.js +26 -26
- package/dist/adapters/DeepSeekTuiAdapter.js +97 -97
- package/dist/adapters/DoubaoAdapter.js +33 -33
- package/dist/adapters/GeminiAdapter.js +26 -26
- package/dist/adapters/GenericProjectAgentAdapter.d.ts +29 -0
- package/dist/adapters/GenericProjectAgentAdapter.js +204 -0
- package/dist/adapters/GenericProjectAgentAdapter.js.map +1 -0
- package/dist/adapters/HermesAdapter.js +26 -26
- package/dist/adapters/JCodeAdapter.d.ts +4 -0
- package/dist/adapters/JCodeAdapter.js +19 -0
- package/dist/adapters/JCodeAdapter.js.map +1 -0
- package/dist/adapters/KiloCodeAdapter.d.ts +4 -0
- package/dist/adapters/KiloCodeAdapter.js +20 -0
- package/dist/adapters/KiloCodeAdapter.js.map +1 -0
- package/dist/adapters/KimiAdapter.js +32 -32
- package/dist/adapters/KiroAdapter.js +26 -26
- package/dist/adapters/OpenClawAdapter.js +26 -26
- package/dist/adapters/OpenCodeAdapter.js +26 -26
- package/dist/adapters/QCoderAdapter.js +26 -26
- package/dist/adapters/QoderAdapter.d.ts +4 -0
- package/dist/adapters/QoderAdapter.js +21 -0
- package/dist/adapters/QoderAdapter.js.map +1 -0
- package/dist/adapters/TraeAdapter.js +26 -26
- package/dist/adapters/VSCAdapter.js +26 -26
- package/dist/adapters/WindsurfAdapter.js +32 -32
- package/dist/adapters/WorkBuddyAdapter.js +26 -26
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.js +15 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/api/cli.js +190 -56
- package/dist/api/cli.js.map +1 -1
- package/dist/api/doctor.js +10 -3
- package/dist/api/doctor.js.map +1 -1
- package/dist/api/quickstart.js +7 -1
- package/dist/api/quickstart.js.map +1 -1
- package/dist/artifact/sqliteStore.js +89 -89
- package/dist/artifact/types.d.ts +1 -1
- package/dist/cli/phaseCommands.js +53 -53
- package/dist/cli/phaseCommands.js.map +1 -1
- package/dist/context/AntiPatternRegistry.js +20 -20
- package/dist/context/ContextBudget.d.ts +14 -0
- package/dist/context/ContextBudget.js +50 -14
- package/dist/context/ContextBudget.js.map +1 -1
- package/dist/context/ContextBuilder.js +155 -155
- package/dist/context/ContextCompiler.d.ts +34 -0
- package/dist/context/ContextCompiler.js +120 -0
- package/dist/context/ContextCompiler.js.map +1 -0
- package/dist/eval/WorkflowEval.js +4 -6
- package/dist/eval/WorkflowEval.js.map +1 -1
- package/dist/evolution/EvolutionEngine.js +31 -31
- package/dist/evolution/EvolutionEvaluator.d.ts +2 -0
- package/dist/evolution/EvolutionEvaluator.js +7 -1
- package/dist/evolution/EvolutionEvaluator.js.map +1 -1
- package/dist/fsm/FSMAgentBridge.js +11 -11
- package/dist/governance/GovernanceRoi.d.ts +6 -1
- package/dist/governance/GovernanceRoi.js +32 -0
- package/dist/governance/GovernanceRoi.js.map +1 -1
- package/dist/guardrails/DependencyAuditor.js +38 -0
- package/dist/guardrails/DependencyAuditor.js.map +1 -1
- package/dist/hooks/HookGeneratorEnhanced.js +218 -218
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/knowledge/SQLiteKnowledgeBase.js +28 -28
- package/dist/memory/MemoryBrain.js +52 -52
- package/dist/output/GovernanceDashboard.js +44 -44
- package/dist/output/HTMLArtifactLayer.js +31 -31
- package/dist/prompts/VibeTemplateGallery.js +121 -121
- package/dist/runtime/AiOsRuntime.d.ts +53 -0
- package/dist/runtime/AiOsRuntime.js +142 -0
- package/dist/runtime/AiOsRuntime.js.map +1 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/skills/SkillDiscovery.js +12 -1
- package/dist/skills/SkillDiscovery.js.map +1 -1
- package/dist/skills/routing/SkillPlanner.js +128 -40
- package/dist/skills/routing/SkillPlanner.js.map +1 -1
- package/dist/skills/routing/SkillRoutingTypes.d.ts +17 -0
- package/dist/tools/SafeCommandRunner.d.ts +16 -0
- package/dist/tools/SafeCommandRunner.js +83 -0
- package/dist/tools/SafeCommandRunner.js.map +1 -0
- package/dist/workflow/EngineeringStandards.js +62 -62
- package/dist/workflow/GovernanceTemplatePacks.d.ts +1 -1
- package/dist/workflow/GovernanceTemplatePacks.js +1990 -162
- package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
- package/dist/workflow/GovernanceTemplates.d.ts +2 -0
- package/dist/workflow/GovernanceTemplates.js +1012 -1001
- package/dist/workflow/GovernanceTemplates.js.map +1 -1
- package/dist/workflow/ResourceGovernance.js +16 -16
- package/dist/workflow/TaskArtifactScaffolder.js +10 -10
- package/dist/workflow/UpgradeManager.d.ts +3 -2
- package/dist/workflow/UpgradeManager.js +134 -49
- package/dist/workflow/UpgradeManager.js.map +1 -1
- package/dist/workflow/WorkspaceTopology.js +18 -15
- package/dist/workflow/WorkspaceTopology.js.map +1 -1
- package/dist/workflow/gates/GateSystem.js +3 -9
- package/dist/workflow/gates/GateSystem.js.map +1 -1
- package/docs/ACTIVE_SECURITY_VISUAL_GATES.md +87 -87
- package/docs/AI_ENGINEERING_OS_POSITIONING.md +462 -0
- package/docs/BACKGROUND_HUNTER.md +62 -62
- package/docs/CODE_INTELLIGENCE.md +138 -138
- package/docs/CONTEXT_BUDGET.md +155 -113
- package/docs/DEPENDENCY_AUDIT.md +118 -89
- package/docs/EVOLUTION_SHADOW_MODE.md +63 -63
- package/docs/EXTERNAL_REFERENCES.md +63 -58
- package/docs/GITLAB_FLOW.md +125 -125
- package/docs/GOVERNANCE_DASHBOARD.md +85 -85
- package/docs/MEMORY_BRAIN.md +104 -104
- package/docs/MEMORY_FABRIC.md +136 -134
- package/docs/README.md +102 -92
- package/docs/RUNTIME_EVIDENCE.md +101 -101
- package/docs/SKILL-REPOSITORY.md +57 -57
- package/docs/SKILL_RADAR.md +135 -122
- package/docs/THIRD_PARTY_SKILLS.md +57 -57
- package/docs/WORKFLOW_EVAL.md +151 -151
- package/docs/guides/DEVELOPMENT_WORKFLOW.md +80 -0
- package/docs/guides/GETTING_STARTED.md +50 -0
- package/docs/start/README.md +78 -72
- package/docs/start/agent-governance-demo.md +107 -107
- package/docs/start/quickstart.md +137 -127
- package/docs/start/workflow-upgrade.md +32 -8
- package/docs/workflow/README.md +67 -0
- package/docs/workflow/node-library.md +52 -0
- package/docs/workflow/templates/api-contract.md +29 -0
- package/docs/workflow/templates/architecture-review.md +23 -0
- package/docs/workflow/templates/db-change-plan.md +20 -0
- package/docs/workflow/templates/docs-impact.md +17 -0
- package/docs/workflow/templates/e2e-plan.md +20 -0
- package/docs/workflow/templates/explore.md +16 -0
- package/docs/workflow/templates/github-actions-scale-preflight.yml +32 -0
- package/docs/workflow/templates/mini-prd.md +16 -0
- package/docs/workflow/templates/plan.md +37 -0
- package/docs/workflow/templates/pre-push-scale-preflight.sh +8 -0
- package/docs/workflow/templates/product-smoke.md +61 -0
- package/docs/workflow/templates/reality-check.md +28 -0
- package/docs/workflow/templates/resource-cleanup.md +17 -0
- package/docs/workflow/templates/resource-impact.md +25 -0
- package/docs/workflow/templates/review.md +12 -0
- package/docs/workflow/templates/runtime.md +23 -0
- package/docs/workflow/templates/security-review.md +26 -0
- package/docs/workflow/templates/skill-evidence.md +33 -0
- package/docs/workflow/templates/skill-plan.md +39 -0
- package/docs/workflow/templates/spec.md +17 -0
- package/docs/workflow/templates/standards-impact.md +28 -0
- package/docs/workflow/templates/summary.md +16 -0
- package/docs/workflow/templates/tasks.md +8 -0
- package/docs/workflow/templates/ui-spec.md +29 -0
- package/docs/workflow/templates/verification.md +20 -0
- package/docs/workflow/templates/visual-review.md +20 -0
- package/examples/demo-projects/agent-governance-demo/CONTEXT.md +14 -14
- package/examples/demo-projects/agent-governance-demo/README.md +48 -48
- package/examples/demo-projects/agent-governance-demo/docs/CONTEXT-MAP.md +14 -14
- package/examples/demo-projects/agent-governance-demo/package.json +22 -21
- package/examples/demo-projects/agent-governance-demo/src/oauth-state.ts +39 -39
- package/examples/demo-projects/agent-governance-demo/tests/oauth-state.test.ts +52 -52
- 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';
|