@hongmaple0820/scale-engine 0.33.0 → 0.39.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/README.en.md +86 -376
- package/README.md +95 -540
- package/dist/api/cli.js +293 -18
- package/dist/api/cli.js.map +1 -1
- package/dist/api/doctor.d.ts +38 -3
- package/dist/api/doctor.js +269 -44
- package/dist/api/doctor.js.map +1 -1
- package/dist/api/mcp.js +2 -2
- package/dist/api/mcp.js.map +1 -1
- package/dist/api/quickstart.d.ts +34 -4
- package/dist/api/quickstart.js +90 -73
- package/dist/api/quickstart.js.map +1 -1
- package/dist/bootstrap/DependencyBootstrap.d.ts +110 -0
- package/dist/bootstrap/DependencyBootstrap.js +829 -0
- package/dist/bootstrap/DependencyBootstrap.js.map +1 -0
- package/dist/bootstrap/DependencyBootstrapRenderer.d.ts +3 -0
- package/dist/bootstrap/DependencyBootstrapRenderer.js +140 -0
- package/dist/bootstrap/DependencyBootstrapRenderer.js.map +1 -0
- package/dist/capabilities/InstalledSkillsIntegration.js +14 -6
- package/dist/capabilities/InstalledSkillsIntegration.js.map +1 -1
- package/dist/cli/gateStatusCommands.d.ts +1 -0
- package/dist/cli/gateStatusCommands.js +52 -0
- package/dist/cli/gateStatusCommands.js.map +1 -0
- package/dist/cli/phaseCommands.js +15 -3
- package/dist/cli/phaseCommands.js.map +1 -1
- package/dist/cli/promptCommands.d.ts +1 -0
- package/dist/cli/promptCommands.js +57 -0
- package/dist/cli/promptCommands.js.map +1 -0
- package/dist/cli/scoreCommands.d.ts +1 -0
- package/dist/cli/scoreCommands.js +112 -0
- package/dist/cli/scoreCommands.js.map +1 -0
- package/dist/codegraph/CodeIntelligence.d.ts +12 -0
- package/dist/codegraph/CodeIntelligence.js +251 -30
- package/dist/codegraph/CodeIntelligence.js.map +1 -1
- package/dist/config/profiles.d.ts +12 -0
- package/dist/config/profiles.js +39 -4
- package/dist/config/profiles.js.map +1 -1
- package/dist/context/SessionStartSequence.js +13 -4
- package/dist/context/SessionStartSequence.js.map +1 -1
- package/dist/core/ExternalCommand.d.ts +9 -0
- package/dist/core/ExternalCommand.js +70 -0
- package/dist/core/ExternalCommand.js.map +1 -0
- package/dist/env/EnvironmentDoctor.d.ts +66 -0
- package/dist/env/EnvironmentDoctor.js +365 -0
- package/dist/env/EnvironmentDoctor.js.map +1 -0
- package/dist/i18n/Language.d.ts +9 -0
- package/dist/i18n/Language.js +38 -0
- package/dist/i18n/Language.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/knowledge/CerebrumManager.d.ts +2 -2
- package/dist/knowledge/CerebrumManager.js.map +1 -1
- package/dist/knowledge/GraphifyKnowledgeBase.d.ts +38 -0
- package/dist/knowledge/GraphifyKnowledgeBase.js +409 -0
- package/dist/knowledge/GraphifyKnowledgeBase.js.map +1 -0
- package/dist/memory/MemoryFabric.js +1 -0
- package/dist/memory/MemoryFabric.js.map +1 -1
- package/dist/memory/MemoryIntelligence.d.ts +42 -0
- package/dist/memory/MemoryIntelligence.js +215 -0
- package/dist/memory/MemoryIntelligence.js.map +1 -0
- package/dist/memory/MemoryProviders.d.ts +22 -0
- package/dist/memory/MemoryProviders.js +171 -5
- package/dist/memory/MemoryProviders.js.map +1 -1
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/prompts/PromptOptimizer.d.ts +42 -0
- package/dist/prompts/PromptOptimizer.js +309 -0
- package/dist/prompts/PromptOptimizer.js.map +1 -0
- package/dist/runtime/AiOsRuntime.d.ts +2 -0
- package/dist/runtime/AiOsRuntime.js +2 -0
- package/dist/runtime/AiOsRuntime.js.map +1 -1
- package/dist/runtime/ExecutionLedger.d.ts +46 -0
- package/dist/runtime/ExecutionLedger.js +71 -0
- package/dist/runtime/ExecutionLedger.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/setup/SetupWizard.d.ts +42 -0
- package/dist/setup/SetupWizard.js +156 -0
- package/dist/setup/SetupWizard.js.map +1 -0
- package/dist/skills/SkillRepository.js +7 -7
- package/dist/skills/SkillRepository.js.map +1 -1
- package/dist/skills/routing/SkillPolicy.js +2 -2
- package/dist/skills/routing/SkillPolicy.js.map +1 -1
- package/dist/testing/DiffTestSelector.js +1 -1
- package/dist/testing/DiffTestSelector.js.map +1 -1
- package/dist/tools/RtkRuntime.d.ts +9 -0
- package/dist/tools/RtkRuntime.js +43 -0
- package/dist/tools/RtkRuntime.js.map +1 -0
- package/dist/tools/ToolCapabilityRegistry.d.ts +5 -0
- package/dist/tools/ToolCapabilityRegistry.js +75 -13
- package/dist/tools/ToolCapabilityRegistry.js.map +1 -1
- package/dist/tools/ToolOrchestrator.js +6 -4
- package/dist/tools/ToolOrchestrator.js.map +1 -1
- package/dist/tools/ToolPolicy.js +16 -1
- package/dist/tools/ToolPolicy.js.map +1 -1
- package/dist/workflow/AdaptiveWorkflowRouter.d.ts +1 -0
- package/dist/workflow/AdaptiveWorkflowRouter.js +3 -0
- package/dist/workflow/AdaptiveWorkflowRouter.js.map +1 -1
- package/dist/workflow/CommitDiscipline.d.ts +68 -0
- package/dist/workflow/CommitDiscipline.js +328 -0
- package/dist/workflow/CommitDiscipline.js.map +1 -0
- package/dist/workflow/CrossRepoOrchestrator.d.ts +92 -0
- package/dist/workflow/CrossRepoOrchestrator.js +408 -0
- package/dist/workflow/CrossRepoOrchestrator.js.map +1 -0
- package/dist/workflow/GateCatalog.d.ts +61 -0
- package/dist/workflow/GateCatalog.js +212 -0
- package/dist/workflow/GateCatalog.js.map +1 -0
- package/dist/workflow/GovernanceRoi.d.ts +52 -0
- package/dist/workflow/GovernanceRoi.js +204 -0
- package/dist/workflow/GovernanceRoi.js.map +1 -0
- package/dist/workflow/GovernanceTemplatePacks.js +19 -4
- package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
- package/dist/workflow/GovernanceTemplates.js +2 -2
- package/dist/workflow/McpGovernance.d.ts +63 -0
- package/dist/workflow/McpGovernance.js +198 -0
- package/dist/workflow/McpGovernance.js.map +1 -0
- package/dist/workflow/SessionCoordinator.d.ts +103 -0
- package/dist/workflow/SessionCoordinator.js +401 -0
- package/dist/workflow/SessionCoordinator.js.map +1 -0
- package/dist/workflow/SessionPreamble.js +7 -2
- package/dist/workflow/SessionPreamble.js.map +1 -1
- package/dist/workflow/TaskDependencyGraph.d.ts +73 -0
- package/dist/workflow/TaskDependencyGraph.js +245 -0
- package/dist/workflow/TaskDependencyGraph.js.map +1 -0
- package/dist/workflow/TaskScoreEngine.d.ts +42 -0
- package/dist/workflow/TaskScoreEngine.js +181 -0
- package/dist/workflow/TaskScoreEngine.js.map +1 -0
- package/dist/workflow/WorkflowTemplates.d.ts +38 -0
- package/dist/workflow/WorkflowTemplates.js +371 -0
- package/dist/workflow/WorkflowTemplates.js.map +1 -0
- package/dist/workflow/WorkspacePolicy.d.ts +46 -0
- package/dist/workflow/WorkspacePolicy.js +141 -0
- package/dist/workflow/WorkspacePolicy.js.map +1 -0
- package/dist/workflow/WorkspaceTopology.d.ts +3 -0
- package/dist/workflow/WorkspaceTopology.js +40 -3
- package/dist/workflow/WorkspaceTopology.js.map +1 -1
- package/dist/workflow/gates/GateSystem.js +14 -11
- package/dist/workflow/gates/GateSystem.js.map +1 -1
- package/dist/workflow/index.d.ts +9 -0
- package/dist/workflow/index.js +9 -0
- package/dist/workflow/index.js.map +1 -1
- package/docs/CODE_INTELLIGENCE.md +48 -6
- package/docs/EXTERNAL_REFERENCES.md +5 -2
- package/docs/MEMORY_FABRIC.md +28 -3
- package/docs/SKILL-REPOSITORY.md +3 -3
- package/docs/THIRD_PARTY_SKILLS.md +50 -1
- package/docs/guides/GETTING_STARTED.md +24 -0
- package/docs/start/quickstart.md +107 -69
- package/docs/workflow/GATES_AND_SCORE.md +56 -0
- package/docs/workflow/PROMPT_OPTIMIZATION.md +44 -0
- package/docs/workflow/README.md +7 -0
- package/docs/workflow/node-library.md +3 -3
- package/docs/workflow/templates/skill-plan.md +1 -1
- package/package.json +13 -5
- package/scripts/workflow/provider-rehearsal.mjs +425 -0
- package/scripts/workflow/setup-smoke.mjs +299 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCapabilityRegistry.js","sourceRoot":"","sources":["../../src/tools/ToolCapabilityRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"ToolCapabilityRegistry.js","sourceRoot":"","sources":["../../src/tools/ToolCapabilityRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { execa } from 'execa';
|
|
|
2
2
|
import { inspectToolCapabilities, TOOL_CAPABILITY_CATALOG } from './ToolCapabilityRegistry.js';
|
|
3
3
|
import { ToolEvidenceStore } from './ToolEvidenceStore.js';
|
|
4
4
|
import { requiredToolsForDomains, resolveToolPolicy } from './ToolPolicy.js';
|
|
5
|
+
import { wrapCliCommandWithRtk } from './RtkRuntime.js';
|
|
5
6
|
export class ToolOrchestrator {
|
|
6
7
|
constructor(options = {}) {
|
|
7
8
|
this.projectDir = options.projectDir ?? process.cwd();
|
|
@@ -191,7 +192,8 @@ async function executeCliCapabilityCheck(step) {
|
|
|
191
192
|
};
|
|
192
193
|
}
|
|
193
194
|
try {
|
|
194
|
-
const
|
|
195
|
+
const invocation = wrapCliCommandWithRtk(command, args);
|
|
196
|
+
const result = await execa(invocation.command, invocation.args, {
|
|
195
197
|
reject: false,
|
|
196
198
|
timeout: 10_000,
|
|
197
199
|
cwd: process.cwd(),
|
|
@@ -201,7 +203,7 @@ async function executeCliCapabilityCheck(step) {
|
|
|
201
203
|
const stdout = result.stdout.trim();
|
|
202
204
|
const stderr = result.stderr.trim();
|
|
203
205
|
const exitCode = result.exitCode ?? 1;
|
|
204
|
-
const outputSummary = summarizeCliOutput(step.toolId, stdout, stderr, exitCode);
|
|
206
|
+
const outputSummary = summarizeCliOutput(step.toolId, stdout, stderr, exitCode, invocation.wrapped);
|
|
205
207
|
return {
|
|
206
208
|
status: exitCode === 0 ? 'passed' : 'failed',
|
|
207
209
|
outputSummary,
|
|
@@ -219,8 +221,8 @@ async function executeCliCapabilityCheck(step) {
|
|
|
219
221
|
};
|
|
220
222
|
}
|
|
221
223
|
}
|
|
222
|
-
function summarizeCliOutput(toolId, stdout, stderr, exitCode) {
|
|
223
|
-
const lines = [`CLI version check for ${toolId} exited with ${exitCode}
|
|
224
|
+
function summarizeCliOutput(toolId, stdout, stderr, exitCode, wrappedByRtk = false) {
|
|
225
|
+
const lines = [`CLI version check for ${toolId} exited with ${exitCode}.${wrappedByRtk ? ' Wrapped with RTK.' : ''}`];
|
|
224
226
|
if (stdout)
|
|
225
227
|
lines.push(`stdout: ${tail(stdout)}`);
|
|
226
228
|
if (stderr)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolOrchestrator.js","sourceRoot":"","sources":["../../src/tools/ToolOrchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAoF,MAAM,6BAA6B,CAAA;AAChL,OAAO,EAAE,iBAAiB,EAA2E,MAAM,wBAAwB,CAAA;AACnI,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAA2B,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"ToolOrchestrator.js","sourceRoot":"","sources":["../../src/tools/ToolOrchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/ToolPolicy.js
CHANGED
|
@@ -12,7 +12,7 @@ export const DEFAULT_TOOL_POLICY = {
|
|
|
12
12
|
destructiveActions: 'block',
|
|
13
13
|
evidenceRequired: true,
|
|
14
14
|
},
|
|
15
|
-
'
|
|
15
|
+
'awesome-design-md': {
|
|
16
16
|
enabled: true,
|
|
17
17
|
requiredFor: ['ui'],
|
|
18
18
|
destructiveActions: 'block',
|
|
@@ -24,6 +24,13 @@ export const DEFAULT_TOOL_POLICY = {
|
|
|
24
24
|
destructiveActions: 'block',
|
|
25
25
|
evidenceRequired: true,
|
|
26
26
|
},
|
|
27
|
+
'frontend-design': {
|
|
28
|
+
enabled: true,
|
|
29
|
+
requiredFor: [],
|
|
30
|
+
recommendedFor: ['ui'],
|
|
31
|
+
destructiveActions: 'block',
|
|
32
|
+
evidenceRequired: true,
|
|
33
|
+
},
|
|
27
34
|
'agent-browser': {
|
|
28
35
|
enabled: true,
|
|
29
36
|
requiredFor: ['browserAutomation'],
|
|
@@ -64,6 +71,14 @@ export const DEFAULT_TOOL_POLICY = {
|
|
|
64
71
|
command: 'codex',
|
|
65
72
|
evidenceRequired: true,
|
|
66
73
|
},
|
|
74
|
+
rtk: {
|
|
75
|
+
enabled: true,
|
|
76
|
+
requiredFor: ['externalCli'],
|
|
77
|
+
recommendedFor: ['review'],
|
|
78
|
+
destructiveActions: 'block',
|
|
79
|
+
command: 'rtk',
|
|
80
|
+
evidenceRequired: true,
|
|
81
|
+
},
|
|
67
82
|
'gemini-cli': {
|
|
68
83
|
enabled: false,
|
|
69
84
|
requiredFor: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolPolicy.js","sourceRoot":"","sources":["../../src/tools/ToolPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkCrD,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACrD,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE;QACL,YAAY,EAAE;YACZ,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,CAAC,aAAa,CAAC;YAC5B,cAAc,EAAE,CAAC,mBAAmB,CAAC;YACrC,kBAAkB,EAAE,OAAO;YAC3B,gBAAgB,EAAE,IAAI;SACvB;QACD,
|
|
1
|
+
{"version":3,"file":"ToolPolicy.js","sourceRoot":"","sources":["../../src/tools/ToolPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// SCALE Engine — Adaptive Workflow Router v1
|
|
2
2
|
// Routes evaluator risk/uncertainty and tool strategy signals into a concrete workflow profile.
|
|
3
|
+
import { selectTemplate } from './WorkflowTemplates.js';
|
|
3
4
|
const PROFILE_ORDER = ['light', 'standard', 'strict', 'critical'];
|
|
4
5
|
export function routeAdaptiveWorkflow(input) {
|
|
5
6
|
const { governance, evaluator, toolStrategy } = input;
|
|
@@ -83,8 +84,10 @@ export function routeAdaptiveWorkflow(input) {
|
|
|
83
84
|
}
|
|
84
85
|
const behavioralConstraints = buildBehavioralConstraints(profile, signals);
|
|
85
86
|
const exitCriteria = buildExitCriteria(profile, evaluator, toolStrategy);
|
|
87
|
+
const template = selectTemplate({ profile, task: '', level: profile === 'critical' ? 'CRITICAL' : profile === 'strict' ? 'L' : 'M' });
|
|
86
88
|
return {
|
|
87
89
|
profile,
|
|
90
|
+
templateId: template.id,
|
|
88
91
|
strategy: 'adaptive-workflow-router-v1',
|
|
89
92
|
escalationReasons: reasons,
|
|
90
93
|
gateOverrides,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptiveWorkflowRouter.js","sourceRoot":"","sources":["../../src/workflow/AdaptiveWorkflowRouter.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,gGAAgG;
|
|
1
|
+
{"version":3,"file":"AdaptiveWorkflowRouter.js","sourceRoot":"","sources":["../../src/workflow/AdaptiveWorkflowRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export type ViolationType = 'too-many-files' | 'too-long-since-commit' | 'task-switch-without-commit';
|
|
2
|
+
export type ViolationSeverity = 'warn' | 'block';
|
|
3
|
+
export interface CommitDisciplineConfig {
|
|
4
|
+
maxUncommittedFiles: number;
|
|
5
|
+
maxUncommittedFilesBlock: number;
|
|
6
|
+
maxMinutesWithoutCommit: number;
|
|
7
|
+
maxMinutesBlock: number;
|
|
8
|
+
warnOnTaskSwitch: boolean;
|
|
9
|
+
projectDir?: string;
|
|
10
|
+
scaleDir?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CommitViolation {
|
|
13
|
+
type: ViolationType;
|
|
14
|
+
severity: ViolationSeverity;
|
|
15
|
+
message: string;
|
|
16
|
+
count?: number;
|
|
17
|
+
threshold?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface CommitDisciplineStatus {
|
|
20
|
+
uncommittedFiles: number;
|
|
21
|
+
stagedFiles: number;
|
|
22
|
+
unstagedFiles: number;
|
|
23
|
+
untrackedFiles: number;
|
|
24
|
+
minutesSinceLastCommit: number;
|
|
25
|
+
commitsThisSession: number;
|
|
26
|
+
avgFilesPerCommit: number;
|
|
27
|
+
violations: CommitViolation[];
|
|
28
|
+
recommendations: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface FileGroup {
|
|
31
|
+
name: string;
|
|
32
|
+
files: string[];
|
|
33
|
+
suggestedMessage: string;
|
|
34
|
+
}
|
|
35
|
+
export interface CommitRecord {
|
|
36
|
+
id: string;
|
|
37
|
+
sha: string;
|
|
38
|
+
timestamp: string;
|
|
39
|
+
fileCount: number;
|
|
40
|
+
message: string;
|
|
41
|
+
files: string[];
|
|
42
|
+
}
|
|
43
|
+
export interface TaskSwitchResult {
|
|
44
|
+
allowed: boolean;
|
|
45
|
+
violations: CommitViolation[];
|
|
46
|
+
uncommittedCount: number;
|
|
47
|
+
suggestion: string;
|
|
48
|
+
}
|
|
49
|
+
export declare class CommitDiscipline {
|
|
50
|
+
private config;
|
|
51
|
+
private records;
|
|
52
|
+
private statePath;
|
|
53
|
+
private stateDir;
|
|
54
|
+
private now;
|
|
55
|
+
constructor(config?: Partial<CommitDisciplineConfig>, now?: () => Date);
|
|
56
|
+
check(): CommitDisciplineStatus;
|
|
57
|
+
suggestGroups(taskDescription?: string): FileGroup[];
|
|
58
|
+
recordCommit(sha: string, message: string, files: string[]): CommitRecord;
|
|
59
|
+
enforceBeforeTaskSwitch(taskDescription?: string): TaskSwitchResult;
|
|
60
|
+
summarize(): string;
|
|
61
|
+
getRecords(): CommitRecord[];
|
|
62
|
+
private inspectGit;
|
|
63
|
+
private getUncommittedFiles;
|
|
64
|
+
private minutesSinceLastCommit;
|
|
65
|
+
private loadState;
|
|
66
|
+
private saveState;
|
|
67
|
+
}
|
|
68
|
+
export declare function summarizeCommitDiscipline(status: CommitDisciplineStatus): string;
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
// SCALE Engine — Commit Discipline (v0.38.0)
|
|
2
|
+
// Prevents agents from accumulating uncommitted changes. Monitors git state,
|
|
3
|
+
// enforces thresholds, suggests logical commit groupings, tracks commit cadence.
|
|
4
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { execSync } from 'node:child_process';
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
const SILENT_GIT_STDIO = ['ignore', 'pipe', 'ignore'];
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Defaults
|
|
11
|
+
// ============================================================================
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
maxUncommittedFiles: 10,
|
|
14
|
+
maxUncommittedFilesBlock: 25,
|
|
15
|
+
maxMinutesWithoutCommit: 30,
|
|
16
|
+
maxMinutesBlock: 60,
|
|
17
|
+
warnOnTaskSwitch: true,
|
|
18
|
+
};
|
|
19
|
+
// Group name rules: path prefix → group name
|
|
20
|
+
const GROUP_RULES = [
|
|
21
|
+
{ test: f => /^src\/workflow\//.test(f), name: 'workflow', commitPrefix: 'feat(workflow)' },
|
|
22
|
+
{ test: f => /^src\/memory\//.test(f), name: 'memory', commitPrefix: 'feat(memory)' },
|
|
23
|
+
{ test: f => /^src\/runtime\//.test(f), name: 'runtime', commitPrefix: 'feat(runtime)' },
|
|
24
|
+
{ test: f => /^src\/governance\//.test(f), name: 'governance', commitPrefix: 'feat(governance)' },
|
|
25
|
+
{ test: f => /^src\/tools\//.test(f), name: 'tools', commitPrefix: 'feat(tools)' },
|
|
26
|
+
{ test: f => /^src\/skills\//.test(f), name: 'skills', commitPrefix: 'feat(skills)' },
|
|
27
|
+
{ test: f => /^src\//.test(f), name: 'src-other', commitPrefix: 'feat' },
|
|
28
|
+
{ test: f => /^tests\/workflow\//.test(f), name: 'tests-workflow', commitPrefix: 'test(workflow)' },
|
|
29
|
+
{ test: f => /^tests\//.test(f), name: 'tests', commitPrefix: 'test' },
|
|
30
|
+
{ test: f => /^docs\//.test(f), name: 'docs', commitPrefix: 'docs' },
|
|
31
|
+
{ test: f => /\.md$/.test(f) && !f.includes('/'), name: 'docs-root', commitPrefix: 'docs' },
|
|
32
|
+
{ test: f => /^package(-lock)?\.json$/.test(f), name: 'deps', commitPrefix: 'chore(deps)' },
|
|
33
|
+
{ test: f => /^\.(eslint|prettier|gitignore|npmrc)/.test(f), name: 'config', commitPrefix: 'chore(config)' },
|
|
34
|
+
];
|
|
35
|
+
// ============================================================================
|
|
36
|
+
// CommitDiscipline
|
|
37
|
+
// ============================================================================
|
|
38
|
+
export class CommitDiscipline {
|
|
39
|
+
constructor(config, now) {
|
|
40
|
+
this.records = [];
|
|
41
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
42
|
+
this.now = now ?? (() => new Date());
|
|
43
|
+
const projectDir = this.config.projectDir ?? process.cwd();
|
|
44
|
+
const scaleRoot = this.config.scaleDir ?? '.scale';
|
|
45
|
+
this.stateDir = join(projectDir, scaleRoot, 'commit-discipline');
|
|
46
|
+
this.statePath = join(this.stateDir, 'records.json');
|
|
47
|
+
this.loadState();
|
|
48
|
+
}
|
|
49
|
+
// --------------------------------------------------------------------------
|
|
50
|
+
// Core API
|
|
51
|
+
// --------------------------------------------------------------------------
|
|
52
|
+
check() {
|
|
53
|
+
const gitState = this.inspectGit();
|
|
54
|
+
const minutes = this.minutesSinceLastCommit();
|
|
55
|
+
const violations = [];
|
|
56
|
+
const recommendations = [];
|
|
57
|
+
// File count violations
|
|
58
|
+
const total = gitState.staged + gitState.unstaged + gitState.untracked;
|
|
59
|
+
if (total >= this.config.maxUncommittedFilesBlock) {
|
|
60
|
+
violations.push({
|
|
61
|
+
type: 'too-many-files',
|
|
62
|
+
severity: 'block',
|
|
63
|
+
message: `${total} uncommitted files exceeds block threshold (${this.config.maxUncommittedFilesBlock}). Commit or stash before continuing.`,
|
|
64
|
+
count: total,
|
|
65
|
+
threshold: this.config.maxUncommittedFilesBlock,
|
|
66
|
+
});
|
|
67
|
+
recommendations.push(`Split into logical commits by module. Use 'suggestGroups()' for grouping.`);
|
|
68
|
+
}
|
|
69
|
+
else if (total >= this.config.maxUncommittedFiles) {
|
|
70
|
+
violations.push({
|
|
71
|
+
type: 'too-many-files',
|
|
72
|
+
severity: 'warn',
|
|
73
|
+
message: `${total} uncommitted files exceeds warning threshold (${this.config.maxUncommittedFiles}). Consider committing soon.`,
|
|
74
|
+
count: total,
|
|
75
|
+
threshold: this.config.maxUncommittedFiles,
|
|
76
|
+
});
|
|
77
|
+
recommendations.push(`${total} files accumulating — commit before adding more changes.`);
|
|
78
|
+
}
|
|
79
|
+
// Time violations
|
|
80
|
+
if (minutes >= this.config.maxMinutesBlock) {
|
|
81
|
+
violations.push({
|
|
82
|
+
type: 'too-long-since-commit',
|
|
83
|
+
severity: 'block',
|
|
84
|
+
message: `${Math.round(minutes)} minutes since last commit exceeds block threshold (${this.config.maxMinutesBlock} min). Commit now.`,
|
|
85
|
+
count: Math.round(minutes),
|
|
86
|
+
threshold: this.config.maxMinutesBlock,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else if (minutes >= this.config.maxMinutesWithoutCommit) {
|
|
90
|
+
violations.push({
|
|
91
|
+
type: 'too-long-since-commit',
|
|
92
|
+
severity: 'warn',
|
|
93
|
+
message: `${Math.round(minutes)} minutes since last commit exceeds warning threshold (${this.config.maxMinutesWithoutCommit} min).`,
|
|
94
|
+
count: Math.round(minutes),
|
|
95
|
+
threshold: this.config.maxMinutesWithoutCommit,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
// General recommendations
|
|
99
|
+
if (gitState.staged > 0 && gitState.unstaged > 0) {
|
|
100
|
+
recommendations.push('You have both staged and unstaged changes. Consider committing staged changes first.');
|
|
101
|
+
}
|
|
102
|
+
if (gitState.untracked > 5) {
|
|
103
|
+
recommendations.push(`${gitState.untracked} untracked files. Add new files intentionally with 'git add <file>'.`);
|
|
104
|
+
}
|
|
105
|
+
const totalCommitted = this.records.reduce((s, r) => s + r.fileCount, 0);
|
|
106
|
+
const avgFiles = this.records.length > 0 ? Math.round(totalCommitted / this.records.length) : 0;
|
|
107
|
+
return {
|
|
108
|
+
uncommittedFiles: total,
|
|
109
|
+
stagedFiles: gitState.staged,
|
|
110
|
+
unstagedFiles: gitState.unstaged,
|
|
111
|
+
untrackedFiles: gitState.untracked,
|
|
112
|
+
minutesSinceLastCommit: Math.round(minutes),
|
|
113
|
+
commitsThisSession: this.records.length,
|
|
114
|
+
avgFilesPerCommit: avgFiles,
|
|
115
|
+
violations,
|
|
116
|
+
recommendations,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
suggestGroups(taskDescription) {
|
|
120
|
+
const files = this.getUncommittedFiles();
|
|
121
|
+
if (files.length === 0)
|
|
122
|
+
return [];
|
|
123
|
+
const groupMap = new Map();
|
|
124
|
+
for (const file of files) {
|
|
125
|
+
let matched = false;
|
|
126
|
+
for (const rule of GROUP_RULES) {
|
|
127
|
+
if (rule.test(file)) {
|
|
128
|
+
const group = groupMap.get(rule.name) ?? [];
|
|
129
|
+
group.push(file);
|
|
130
|
+
groupMap.set(rule.name, group);
|
|
131
|
+
matched = true;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (!matched) {
|
|
136
|
+
const group = groupMap.get('misc') ?? [];
|
|
137
|
+
group.push(file);
|
|
138
|
+
groupMap.set('misc', group);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const groups = [];
|
|
142
|
+
for (const [name, groupFiles] of groupMap) {
|
|
143
|
+
const rule = GROUP_RULES.find(r => r.name === name);
|
|
144
|
+
const prefix = rule?.commitPrefix ?? 'chore';
|
|
145
|
+
const desc = taskDescription ?? 'update';
|
|
146
|
+
groups.push({
|
|
147
|
+
name,
|
|
148
|
+
files: groupFiles,
|
|
149
|
+
suggestedMessage: `${prefix}: ${desc}`,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
return groups;
|
|
153
|
+
}
|
|
154
|
+
recordCommit(sha, message, files) {
|
|
155
|
+
const record = {
|
|
156
|
+
id: `COMMIT-${Date.now()}-${randomUUID().slice(0, 8)}`,
|
|
157
|
+
sha,
|
|
158
|
+
timestamp: this.now().toISOString(),
|
|
159
|
+
fileCount: files.length,
|
|
160
|
+
message,
|
|
161
|
+
files,
|
|
162
|
+
};
|
|
163
|
+
this.records.push(record);
|
|
164
|
+
this.saveState();
|
|
165
|
+
return record;
|
|
166
|
+
}
|
|
167
|
+
enforceBeforeTaskSwitch(taskDescription) {
|
|
168
|
+
const status = this.check();
|
|
169
|
+
const violations = [];
|
|
170
|
+
if (status.uncommittedFiles > 0 && this.config.warnOnTaskSwitch) {
|
|
171
|
+
const severity = status.uncommittedFiles >= this.config.maxUncommittedFilesBlock ? 'block' : 'warn';
|
|
172
|
+
violations.push({
|
|
173
|
+
type: 'task-switch-without-commit',
|
|
174
|
+
severity,
|
|
175
|
+
message: `Switching tasks with ${status.uncommittedFiles} uncommitted files. Commit current work first.`,
|
|
176
|
+
count: status.uncommittedFiles,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
const allowed = !violations.some(v => v.severity === 'block');
|
|
180
|
+
const groups = this.suggestGroups(taskDescription);
|
|
181
|
+
return {
|
|
182
|
+
allowed,
|
|
183
|
+
violations: [...status.violations, ...violations],
|
|
184
|
+
uncommittedCount: status.uncommittedFiles,
|
|
185
|
+
suggestion: groups.length > 0
|
|
186
|
+
? `Suggested commit groups: ${groups.map(g => `${g.name} (${g.files.length} files)`).join(', ')}`
|
|
187
|
+
: 'No uncommitted files.',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
summarize() {
|
|
191
|
+
const status = this.check();
|
|
192
|
+
const lines = [
|
|
193
|
+
'## Commit Discipline Status',
|
|
194
|
+
'',
|
|
195
|
+
`**Uncommitted Files:** ${status.uncommittedFiles} (staged: ${status.stagedFiles}, unstaged: ${status.unstagedFiles}, untracked: ${status.untrackedFiles})`,
|
|
196
|
+
`**Time Since Last Commit:** ${status.minutesSinceLastCommit} min`,
|
|
197
|
+
`**Commits This Session:** ${status.commitsThisSession}`,
|
|
198
|
+
`**Avg Files Per Commit:** ${status.avgFilesPerCommit}`,
|
|
199
|
+
'',
|
|
200
|
+
];
|
|
201
|
+
if (status.violations.length > 0) {
|
|
202
|
+
lines.push('### Violations');
|
|
203
|
+
for (const v of status.violations) {
|
|
204
|
+
const icon = v.severity === 'block' ? '[BLOCK]' : '[WARN]';
|
|
205
|
+
lines.push(`- ${icon} ${v.message}`);
|
|
206
|
+
}
|
|
207
|
+
lines.push('');
|
|
208
|
+
}
|
|
209
|
+
if (status.recommendations.length > 0) {
|
|
210
|
+
lines.push('### Recommendations');
|
|
211
|
+
for (const r of status.recommendations)
|
|
212
|
+
lines.push(`- ${r}`);
|
|
213
|
+
lines.push('');
|
|
214
|
+
}
|
|
215
|
+
const groups = this.suggestGroups();
|
|
216
|
+
if (groups.length > 1) {
|
|
217
|
+
lines.push('### Suggested Commit Groups');
|
|
218
|
+
for (const g of groups) {
|
|
219
|
+
lines.push(`- **${g.name}** (${g.files.length} files): \`${g.suggestedMessage}\``);
|
|
220
|
+
for (const f of g.files)
|
|
221
|
+
lines.push(` - ${f}`);
|
|
222
|
+
}
|
|
223
|
+
lines.push('');
|
|
224
|
+
}
|
|
225
|
+
if (status.violations.length === 0 && status.uncommittedFiles === 0) {
|
|
226
|
+
lines.push('No issues detected. Working tree is clean.');
|
|
227
|
+
}
|
|
228
|
+
return lines.join('\n');
|
|
229
|
+
}
|
|
230
|
+
getRecords() {
|
|
231
|
+
return [...this.records];
|
|
232
|
+
}
|
|
233
|
+
// --------------------------------------------------------------------------
|
|
234
|
+
// Git Inspection
|
|
235
|
+
// --------------------------------------------------------------------------
|
|
236
|
+
inspectGit() {
|
|
237
|
+
try {
|
|
238
|
+
const projectDir = this.config.projectDir ?? process.cwd();
|
|
239
|
+
const staged = execSync('git diff --cached --name-only', {
|
|
240
|
+
cwd: projectDir, encoding: 'utf-8', timeout: 5000, stdio: SILENT_GIT_STDIO,
|
|
241
|
+
}).trim().split('\n').filter(Boolean).length;
|
|
242
|
+
const unstaged = execSync('git diff --name-only', {
|
|
243
|
+
cwd: projectDir, encoding: 'utf-8', timeout: 5000, stdio: SILENT_GIT_STDIO,
|
|
244
|
+
}).trim().split('\n').filter(Boolean).length;
|
|
245
|
+
const untracked = execSync('git ls-files --others --exclude-standard', {
|
|
246
|
+
cwd: projectDir, encoding: 'utf-8', timeout: 5000, stdio: SILENT_GIT_STDIO,
|
|
247
|
+
}).trim().split('\n').filter(Boolean).length;
|
|
248
|
+
return { staged, unstaged, untracked };
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
return { staged: 0, unstaged: 0, untracked: 0 };
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
getUncommittedFiles() {
|
|
255
|
+
try {
|
|
256
|
+
const projectDir = this.config.projectDir ?? process.cwd();
|
|
257
|
+
const staged = execSync('git diff --cached --name-only', {
|
|
258
|
+
cwd: projectDir, encoding: 'utf-8', timeout: 5000, stdio: SILENT_GIT_STDIO,
|
|
259
|
+
}).trim().split('\n').filter(Boolean);
|
|
260
|
+
const unstaged = execSync('git diff --name-only', {
|
|
261
|
+
cwd: projectDir, encoding: 'utf-8', timeout: 5000, stdio: SILENT_GIT_STDIO,
|
|
262
|
+
}).trim().split('\n').filter(Boolean);
|
|
263
|
+
const untracked = execSync('git ls-files --others --exclude-standard', {
|
|
264
|
+
cwd: projectDir, encoding: 'utf-8', timeout: 5000, stdio: SILENT_GIT_STDIO,
|
|
265
|
+
}).trim().split('\n').filter(Boolean);
|
|
266
|
+
return [...new Set([...staged, ...unstaged, ...untracked])];
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
return [];
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
minutesSinceLastCommit() {
|
|
273
|
+
try {
|
|
274
|
+
const projectDir = this.config.projectDir ?? process.cwd();
|
|
275
|
+
const ts = execSync('git log -1 --format=%ct', {
|
|
276
|
+
cwd: projectDir, encoding: 'utf-8', timeout: 5000, stdio: SILENT_GIT_STDIO,
|
|
277
|
+
}).trim();
|
|
278
|
+
const lastCommitEpoch = parseInt(ts, 10) * 1000;
|
|
279
|
+
return (this.now().getTime() - lastCommitEpoch) / 60000;
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
return 0;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// --------------------------------------------------------------------------
|
|
286
|
+
// State Persistence
|
|
287
|
+
// --------------------------------------------------------------------------
|
|
288
|
+
loadState() {
|
|
289
|
+
if (!existsSync(this.statePath))
|
|
290
|
+
return;
|
|
291
|
+
try {
|
|
292
|
+
const raw = JSON.parse(readFileSync(this.statePath, 'utf-8'));
|
|
293
|
+
if (Array.isArray(raw.records))
|
|
294
|
+
this.records = raw.records;
|
|
295
|
+
}
|
|
296
|
+
catch { /* ignore corrupt state */ }
|
|
297
|
+
}
|
|
298
|
+
saveState() {
|
|
299
|
+
if (!existsSync(this.stateDir))
|
|
300
|
+
mkdirSync(this.stateDir, { recursive: true });
|
|
301
|
+
writeFileSync(this.statePath, JSON.stringify({ records: this.records }, null, 2), 'utf-8');
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// ============================================================================
|
|
305
|
+
// Summary Formatter (standalone)
|
|
306
|
+
// ============================================================================
|
|
307
|
+
export function summarizeCommitDiscipline(status) {
|
|
308
|
+
const lines = [
|
|
309
|
+
'## Commit Discipline',
|
|
310
|
+
'',
|
|
311
|
+
`**Uncommitted:** ${status.uncommittedFiles} files (staged: ${status.stagedFiles}, unstaged: ${status.unstagedFiles}, untracked: ${status.untrackedFiles})`,
|
|
312
|
+
`**Last Commit:** ${status.minutesSinceLastCommit} min ago`,
|
|
313
|
+
`**Session Commits:** ${status.commitsThisSession} (avg ${status.avgFilesPerCommit} files/commit)`,
|
|
314
|
+
];
|
|
315
|
+
if (status.violations.length > 0) {
|
|
316
|
+
lines.push('', '### Violations');
|
|
317
|
+
for (const v of status.violations) {
|
|
318
|
+
lines.push(`- ${v.severity === 'block' ? '[BLOCK]' : '[WARN]'} ${v.message}`);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if (status.recommendations.length > 0) {
|
|
322
|
+
lines.push('', '### Recommendations');
|
|
323
|
+
for (const r of status.recommendations)
|
|
324
|
+
lines.push(`- ${r}`);
|
|
325
|
+
}
|
|
326
|
+
return lines.join('\n');
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=CommitDiscipline.js.map
|