@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
|
@@ -120,58 +120,58 @@ export class AiderAdapter {
|
|
|
120
120
|
const stackLine = techStack.length > 0
|
|
121
121
|
? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
|
|
122
122
|
: '';
|
|
123
|
-
return `# ${projectName}
|
|
124
|
-
${stackLine}
|
|
125
|
-
## SCALE Engine Integration (Aider)
|
|
126
|
-
|
|
127
|
-
This project uses SCALE Engine for AI engineering governance via Aider CLI.
|
|
128
|
-
|
|
129
|
-
### Commands
|
|
130
|
-
- \`scale create <type> <title>\` — Create artifact
|
|
131
|
-
- \`scale transition <id> <action>\` — Transition artifact state
|
|
132
|
-
- \`scale list --type Spec\` — List artifacts
|
|
133
|
-
- \`scale role activate <role>\` — Switch role
|
|
134
|
-
- \`scale doctor\` — Health check
|
|
135
|
-
|
|
136
|
-
### Workflow
|
|
137
|
-
1. **Explore** → Role: explorer (Read/Grep only)
|
|
138
|
-
2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
|
|
139
|
-
3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
|
|
140
|
-
4. **Verify** → Must run tests before claiming done
|
|
141
|
-
5. **Learn** → Defects → Lessons → Rules → Hooks
|
|
142
|
-
|
|
143
|
-
### Rules
|
|
144
|
-
- 🔴 Dangerous commands are physically blocked
|
|
145
|
-
- 🔴 Hardcoded secrets are blocked on Edit/Write
|
|
146
|
-
- 🟡 3 identical retries triggers brute-retry detection
|
|
147
|
-
- 🟡 Claiming done without running tests is blocked
|
|
148
|
-
- 🟢 All tool calls are tracked in .scale/events/
|
|
149
|
-
|
|
150
|
-
### Aider-Specific Notes
|
|
151
|
-
- Aider uses \`/add\` and \`/drop\` to manage context files
|
|
152
|
-
- Use \`/run\` for shell commands (SCALE hooks apply)
|
|
153
|
-
- Use \`/clear\` to reset context between phases
|
|
154
|
-
- SCALE hooks are defined in \`.aider.conf.yml\`
|
|
155
|
-
|
|
156
|
-
### Quick Reference
|
|
157
|
-
\`\`\`
|
|
158
|
-
# Start with exploration
|
|
159
|
-
> /add src/
|
|
160
|
-
> /read AIDER.md
|
|
161
|
-
|
|
162
|
-
# Plan phase
|
|
163
|
-
> scale create Spec "Feature name"
|
|
164
|
-
|
|
165
|
-
# Implement
|
|
166
|
-
> scale role activate implementer
|
|
167
|
-
> (make changes)
|
|
168
|
-
|
|
169
|
-
# Verify
|
|
170
|
-
> /run npm test
|
|
171
|
-
|
|
172
|
-
# Complete
|
|
173
|
-
> scale transition <id> approve
|
|
174
|
-
\`\`\`
|
|
123
|
+
return `# ${projectName}
|
|
124
|
+
${stackLine}
|
|
125
|
+
## SCALE Engine Integration (Aider)
|
|
126
|
+
|
|
127
|
+
This project uses SCALE Engine for AI engineering governance via Aider CLI.
|
|
128
|
+
|
|
129
|
+
### Commands
|
|
130
|
+
- \`scale create <type> <title>\` — Create artifact
|
|
131
|
+
- \`scale transition <id> <action>\` — Transition artifact state
|
|
132
|
+
- \`scale list --type Spec\` — List artifacts
|
|
133
|
+
- \`scale role activate <role>\` — Switch role
|
|
134
|
+
- \`scale doctor\` — Health check
|
|
135
|
+
|
|
136
|
+
### Workflow
|
|
137
|
+
1. **Explore** → Role: explorer (Read/Grep only)
|
|
138
|
+
2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
|
|
139
|
+
3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
|
|
140
|
+
4. **Verify** → Must run tests before claiming done
|
|
141
|
+
5. **Learn** → Defects → Lessons → Rules → Hooks
|
|
142
|
+
|
|
143
|
+
### Rules
|
|
144
|
+
- 🔴 Dangerous commands are physically blocked
|
|
145
|
+
- 🔴 Hardcoded secrets are blocked on Edit/Write
|
|
146
|
+
- 🟡 3 identical retries triggers brute-retry detection
|
|
147
|
+
- 🟡 Claiming done without running tests is blocked
|
|
148
|
+
- 🟢 All tool calls are tracked in .scale/events/
|
|
149
|
+
|
|
150
|
+
### Aider-Specific Notes
|
|
151
|
+
- Aider uses \`/add\` and \`/drop\` to manage context files
|
|
152
|
+
- Use \`/run\` for shell commands (SCALE hooks apply)
|
|
153
|
+
- Use \`/clear\` to reset context between phases
|
|
154
|
+
- SCALE hooks are defined in \`.aider.conf.yml\`
|
|
155
|
+
|
|
156
|
+
### Quick Reference
|
|
157
|
+
\`\`\`
|
|
158
|
+
# Start with exploration
|
|
159
|
+
> /add src/
|
|
160
|
+
> /read AIDER.md
|
|
161
|
+
|
|
162
|
+
# Plan phase
|
|
163
|
+
> scale create Spec "Feature name"
|
|
164
|
+
|
|
165
|
+
# Implement
|
|
166
|
+
> scale role activate implementer
|
|
167
|
+
> (make changes)
|
|
168
|
+
|
|
169
|
+
# Verify
|
|
170
|
+
> /run npm test
|
|
171
|
+
|
|
172
|
+
# Complete
|
|
173
|
+
> scale transition <id> approve
|
|
174
|
+
\`\`\`
|
|
175
175
|
`;
|
|
176
176
|
}
|
|
177
177
|
async init(config) {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// SCALE Engine - Antigravity Adapter
|
|
2
|
+
import { GenericProjectAgentAdapter } from './GenericProjectAgentAdapter.js';
|
|
3
|
+
export class AntigravityAdapter extends GenericProjectAgentAdapter {
|
|
4
|
+
constructor() {
|
|
5
|
+
super({
|
|
6
|
+
agentType: 'antigravity',
|
|
7
|
+
displayName: 'Antigravity',
|
|
8
|
+
settingsPath: '.agents/hooks.json',
|
|
9
|
+
knowledgeDocPath: '.agents/rules/SCALE.md',
|
|
10
|
+
skillsDir: '.agents/skills',
|
|
11
|
+
extraDirs: ['.agents/rules'],
|
|
12
|
+
installedPaths: ['.agents/hooks.json', '.agents/rules'],
|
|
13
|
+
settingsShape: 'qoder-hooks',
|
|
14
|
+
notes: [
|
|
15
|
+
'Antigravity workspace hooks are configured through .agents/hooks.json.',
|
|
16
|
+
'Antigravity guidance is kept in .agents/rules and leaves shared AGENTS.md untouched.',
|
|
17
|
+
],
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=AntigravityAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AntigravityAdapter.js","sourceRoot":"","sources":["../../src/adapters/AntigravityAdapter.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAE5E,MAAM,OAAO,kBAAmB,SAAQ,0BAA0B;IAChE;QACE,KAAK,CAAC;YACJ,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,aAAa;YAC1B,YAAY,EAAE,oBAAoB;YAClC,gBAAgB,EAAE,wBAAwB;YAC1C,SAAS,EAAE,gBAAgB;YAC3B,SAAS,EAAE,CAAC,eAAe,CAAC;YAC5B,cAAc,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;YACvD,aAAa,EAAE,aAAa;YAC5B,KAAK,EAAE;gBACL,wEAAwE;gBACxE,sFAAsF;aACvF;SACF,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { AgentPlatform } from '../artifact/types.js';
|
|
1
2
|
export interface AdapterConfig {
|
|
2
3
|
projectDir: string;
|
|
3
4
|
scaleDir?: string;
|
|
4
|
-
agentType?:
|
|
5
|
+
agentType?: AgentPlatform;
|
|
5
6
|
scenarioMode?: 'sandbox' | 'standard' | 'critical';
|
|
6
7
|
thresholdsPath?: string;
|
|
7
8
|
}
|
|
@@ -9,6 +10,8 @@ export interface HookEntry {
|
|
|
9
10
|
matcher: string;
|
|
10
11
|
command: string;
|
|
11
12
|
timeout?: number;
|
|
13
|
+
type?: string;
|
|
14
|
+
hooks?: HookEntry[];
|
|
12
15
|
}
|
|
13
16
|
export interface SettingsJson {
|
|
14
17
|
hooks?: Record<string, HookEntry[]>;
|
|
@@ -85,32 +85,32 @@ export class ClaudeCodeAdapter {
|
|
|
85
85
|
const stackLine = techStack.length > 0
|
|
86
86
|
? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
|
|
87
87
|
: '';
|
|
88
|
-
return `# ${projectName}
|
|
89
|
-
${stackLine}
|
|
90
|
-
## SCALE Engine Integration
|
|
91
|
-
|
|
92
|
-
This project uses SCALE Engine for AI engineering governance.
|
|
93
|
-
|
|
94
|
-
### Commands
|
|
95
|
-
- \`scale create <type> <title>\` — Create artifact (Spec/Plan/Task/...)
|
|
96
|
-
- \`scale transition <id> <action>\` — Transition artifact state
|
|
97
|
-
- \`scale list --type Spec\` — List artifacts
|
|
98
|
-
- \`scale role activate <role>\` — Switch role (explorer/planner/implementer/reviewer)
|
|
99
|
-
- \`scale stats\` — Show engine stats
|
|
100
|
-
|
|
101
|
-
### Workflow
|
|
102
|
-
1. **Explore** → Role: explorer (Read/Grep only)
|
|
103
|
-
2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
|
|
104
|
-
3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
|
|
105
|
-
4. **Verify** → Must run tests before claiming done (Stop gate enforced)
|
|
106
|
-
5. **Learn** → Defects auto-extract to lessons → rules → hooks
|
|
107
|
-
|
|
108
|
-
### Rules
|
|
109
|
-
- 🔴 Dangerous commands (rm -rf, DROP TABLE) are physically blocked
|
|
110
|
-
- 🔴 Hardcoded secrets are blocked on Edit/Write
|
|
111
|
-
- 🟡 3 identical retries triggers brute-retry detection
|
|
112
|
-
- 🟡 Claiming done without running tests is blocked
|
|
113
|
-
- 🟢 All tool calls are tracked in .scale/events/
|
|
88
|
+
return `# ${projectName}
|
|
89
|
+
${stackLine}
|
|
90
|
+
## SCALE Engine Integration
|
|
91
|
+
|
|
92
|
+
This project uses SCALE Engine for AI engineering governance.
|
|
93
|
+
|
|
94
|
+
### Commands
|
|
95
|
+
- \`scale create <type> <title>\` — Create artifact (Spec/Plan/Task/...)
|
|
96
|
+
- \`scale transition <id> <action>\` — Transition artifact state
|
|
97
|
+
- \`scale list --type Spec\` — List artifacts
|
|
98
|
+
- \`scale role activate <role>\` — Switch role (explorer/planner/implementer/reviewer)
|
|
99
|
+
- \`scale stats\` — Show engine stats
|
|
100
|
+
|
|
101
|
+
### Workflow
|
|
102
|
+
1. **Explore** → Role: explorer (Read/Grep only)
|
|
103
|
+
2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
|
|
104
|
+
3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
|
|
105
|
+
4. **Verify** → Must run tests before claiming done (Stop gate enforced)
|
|
106
|
+
5. **Learn** → Defects auto-extract to lessons → rules → hooks
|
|
107
|
+
|
|
108
|
+
### Rules
|
|
109
|
+
- 🔴 Dangerous commands (rm -rf, DROP TABLE) are physically blocked
|
|
110
|
+
- 🔴 Hardcoded secrets are blocked on Edit/Write
|
|
111
|
+
- 🟡 3 identical retries triggers brute-retry detection
|
|
112
|
+
- 🟡 Claiming done without running tests is blocked
|
|
113
|
+
- 🟢 All tool calls are tracked in .scale/events/
|
|
114
114
|
`;
|
|
115
115
|
}
|
|
116
116
|
async init(config) {
|
|
@@ -158,14 +158,14 @@ This project uses SCALE Engine for AI engineering governance.
|
|
|
158
158
|
// 4. Create .gitignore for .scale/
|
|
159
159
|
const gitignorePath = join(this.scaleDir, '.gitignore');
|
|
160
160
|
if (!existsSync(gitignorePath)) {
|
|
161
|
-
writeFileSync(gitignorePath, `# SCALE Engine runtime data
|
|
162
|
-
*.db
|
|
163
|
-
*.db-journal
|
|
164
|
-
events/
|
|
165
|
-
checkpoints/
|
|
166
|
-
evidence/
|
|
167
|
-
state/
|
|
168
|
-
hooks/*.sh
|
|
161
|
+
writeFileSync(gitignorePath, `# SCALE Engine runtime data
|
|
162
|
+
*.db
|
|
163
|
+
*.db-journal
|
|
164
|
+
events/
|
|
165
|
+
checkpoints/
|
|
166
|
+
evidence/
|
|
167
|
+
state/
|
|
168
|
+
hooks/*.sh
|
|
169
169
|
`, 'utf-8');
|
|
170
170
|
created.push(gitignorePath);
|
|
171
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeCodeAdapter.js","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,0CAA0C;AAC1C,8CAA8C;AAE9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"ClaudeCodeAdapter.js","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// SCALE Engine - Cline Adapter
|
|
2
|
+
import { GenericProjectAgentAdapter } from './GenericProjectAgentAdapter.js';
|
|
3
|
+
export class ClineAdapter extends GenericProjectAgentAdapter {
|
|
4
|
+
constructor() {
|
|
5
|
+
super({
|
|
6
|
+
agentType: 'cline',
|
|
7
|
+
displayName: 'Cline',
|
|
8
|
+
settingsPath: '.cline/settings.json',
|
|
9
|
+
knowledgeDocPath: '.clinerules/SCALE.md',
|
|
10
|
+
skillsDir: '.cline/skills',
|
|
11
|
+
extraDirs: ['.clinerules'],
|
|
12
|
+
installedPaths: ['.cline/settings.json', '.clinerules'],
|
|
13
|
+
notes: [
|
|
14
|
+
'Cline project guidance is kept in .clinerules so it can coexist with user-owned AGENTS.md files.',
|
|
15
|
+
'Use SCALE verification evidence before accepting Cline-generated completion claims.',
|
|
16
|
+
],
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ClineAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClineAdapter.js","sourceRoot":"","sources":["../../src/adapters/ClineAdapter.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAE5E,MAAM,OAAO,YAAa,SAAQ,0BAA0B;IAC1D;QACE,KAAK,CAAC;YACJ,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,OAAO;YACpB,YAAY,EAAE,sBAAsB;YACpC,gBAAgB,EAAE,sBAAsB;YACxC,SAAS,EAAE,eAAe;YAC1B,SAAS,EAAE,CAAC,aAAa,CAAC;YAC1B,cAAc,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC;YACvD,KAAK,EAAE;gBACL,kGAAkG;gBAClG,qFAAqF;aACtF;SACF,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -39,18 +39,18 @@ export class CodexAdapter {
|
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
generateCodexConfig() {
|
|
42
|
-
return `# SCALE Engine — Codex CLI config
|
|
43
|
-
# See: https://github.com/openai/codex
|
|
44
|
-
|
|
45
|
-
[model]
|
|
46
|
-
default = "o4-mini"
|
|
47
|
-
|
|
48
|
-
[approval]
|
|
49
|
-
# SCALE hooks handle safety gates
|
|
50
|
-
auto_approve = ["scale *"]
|
|
51
|
-
|
|
52
|
-
[environment]
|
|
53
|
-
SCALE_AGENT = "codex"
|
|
42
|
+
return `# SCALE Engine — Codex CLI config
|
|
43
|
+
# See: https://github.com/openai/codex
|
|
44
|
+
|
|
45
|
+
[model]
|
|
46
|
+
default = "o4-mini"
|
|
47
|
+
|
|
48
|
+
[approval]
|
|
49
|
+
# SCALE hooks handle safety gates
|
|
50
|
+
auto_approve = ["scale *"]
|
|
51
|
+
|
|
52
|
+
[environment]
|
|
53
|
+
SCALE_AGENT = "codex"
|
|
54
54
|
`;
|
|
55
55
|
}
|
|
56
56
|
mergeSettings(existing) {
|
|
@@ -74,22 +74,22 @@ SCALE_AGENT = "codex"
|
|
|
74
74
|
const stackLine = techStack.length > 0
|
|
75
75
|
? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
|
|
76
76
|
: '';
|
|
77
|
-
return `# ${projectName}
|
|
78
|
-
${stackLine}
|
|
79
|
-
## SCALE Engine Integration
|
|
80
|
-
|
|
81
|
-
This project uses SCALE Engine for AI engineering governance.
|
|
82
|
-
|
|
83
|
-
### Workflow
|
|
84
|
-
1. Explore → Plan → Implement → Verify → Learn
|
|
85
|
-
2. All tool calls pass through SCALE gates
|
|
86
|
-
3. Dangerous commands are physically blocked
|
|
87
|
-
4. Tests must pass before completion
|
|
88
|
-
|
|
89
|
-
### Commands
|
|
90
|
-
- \`scale create <type> <title>\` — Create artifact
|
|
91
|
-
- \`scale transition <id> <action>\` — State transition
|
|
92
|
-
- \`scale doctor\` — Health check
|
|
77
|
+
return `# ${projectName}
|
|
78
|
+
${stackLine}
|
|
79
|
+
## SCALE Engine Integration
|
|
80
|
+
|
|
81
|
+
This project uses SCALE Engine for AI engineering governance.
|
|
82
|
+
|
|
83
|
+
### Workflow
|
|
84
|
+
1. Explore → Plan → Implement → Verify → Learn
|
|
85
|
+
2. All tool calls pass through SCALE gates
|
|
86
|
+
3. Dangerous commands are physically blocked
|
|
87
|
+
4. Tests must pass before completion
|
|
88
|
+
|
|
89
|
+
### Commands
|
|
90
|
+
- \`scale create <type> <title>\` — Create artifact
|
|
91
|
+
- \`scale transition <id> <action>\` — State transition
|
|
92
|
+
- \`scale doctor\` — Health check
|
|
93
93
|
`;
|
|
94
94
|
}
|
|
95
95
|
async init(config) {
|
|
@@ -75,32 +75,32 @@ export class CursorAdapter {
|
|
|
75
75
|
const stackLine = techStack.length > 0
|
|
76
76
|
? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
|
|
77
77
|
: '';
|
|
78
|
-
return `# ${projectName}
|
|
79
|
-
${stackLine}
|
|
80
|
-
## SCALE Engine Integration (Cursor)
|
|
81
|
-
|
|
82
|
-
This project uses SCALE Engine for AI engineering governance via Cursor.
|
|
83
|
-
|
|
84
|
-
### Commands
|
|
85
|
-
- \`scale create <type> <title>\` — Create artifact
|
|
86
|
-
- \`scale transition <id> <action>\` — Transition artifact state
|
|
87
|
-
- \`scale list --type Spec\` — List artifacts
|
|
88
|
-
- \`scale role activate <role>\` — Switch role
|
|
89
|
-
- \`scale doctor\` — Health check
|
|
90
|
-
|
|
91
|
-
### Workflow
|
|
92
|
-
1. **Explore** → Role: explorer (Read/Grep only)
|
|
93
|
-
2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
|
|
94
|
-
3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
|
|
95
|
-
4. **Verify** → Must run tests before claiming done
|
|
96
|
-
5. **Learn** → Defects → Lessons → Rules → Hooks
|
|
97
|
-
|
|
98
|
-
### Rules
|
|
99
|
-
- 🔴 Dangerous commands are physically blocked
|
|
100
|
-
- 🔴 Hardcoded secrets are blocked on Edit/Write
|
|
101
|
-
- 🟡 3 identical retries triggers brute-retry detection
|
|
102
|
-
- 🟡 Claiming done without running tests is blocked
|
|
103
|
-
- 🟢 All tool calls are tracked in .scale/events/
|
|
78
|
+
return `# ${projectName}
|
|
79
|
+
${stackLine}
|
|
80
|
+
## SCALE Engine Integration (Cursor)
|
|
81
|
+
|
|
82
|
+
This project uses SCALE Engine for AI engineering governance via Cursor.
|
|
83
|
+
|
|
84
|
+
### Commands
|
|
85
|
+
- \`scale create <type> <title>\` — Create artifact
|
|
86
|
+
- \`scale transition <id> <action>\` — Transition artifact state
|
|
87
|
+
- \`scale list --type Spec\` — List artifacts
|
|
88
|
+
- \`scale role activate <role>\` — Switch role
|
|
89
|
+
- \`scale doctor\` — Health check
|
|
90
|
+
|
|
91
|
+
### Workflow
|
|
92
|
+
1. **Explore** → Role: explorer (Read/Grep only)
|
|
93
|
+
2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
|
|
94
|
+
3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
|
|
95
|
+
4. **Verify** → Must run tests before claiming done
|
|
96
|
+
5. **Learn** → Defects → Lessons → Rules → Hooks
|
|
97
|
+
|
|
98
|
+
### Rules
|
|
99
|
+
- 🔴 Dangerous commands are physically blocked
|
|
100
|
+
- 🔴 Hardcoded secrets are blocked on Edit/Write
|
|
101
|
+
- 🟡 3 identical retries triggers brute-retry detection
|
|
102
|
+
- 🟡 Claiming done without running tests is blocked
|
|
103
|
+
- 🟢 All tool calls are tracked in .scale/events/
|
|
104
104
|
`;
|
|
105
105
|
}
|
|
106
106
|
async init(config) {
|
|
@@ -50,45 +50,45 @@ export class DeepSeekTuiAdapter {
|
|
|
50
50
|
generateConfigToml(scenarioMode = 'standard') {
|
|
51
51
|
const sandboxMode = scenarioMode === 'sandbox' ? 'read-only' : 'workspace-write';
|
|
52
52
|
const approvalPolicy = scenarioMode === 'critical' ? 'on-request' : 'on-request';
|
|
53
|
-
let config = `# SCALE Engine — DeepSeek TUI Project Overlay (#485)
|
|
54
|
-
# 此文件仅覆盖全局 ~/.deepseek/config.toml 中的指定顶层字段。
|
|
55
|
-
# 完整配置参考: https://github.com/Hmbown/deepseek-tui/blob/main/config.example.toml
|
|
56
|
-
|
|
57
|
-
# ── SCALE 项目约束 ──
|
|
58
|
-
sandbox_mode = "${sandboxMode}"
|
|
59
|
-
approval_policy = "${approvalPolicy}"
|
|
53
|
+
let config = `# SCALE Engine — DeepSeek TUI Project Overlay (#485)
|
|
54
|
+
# 此文件仅覆盖全局 ~/.deepseek/config.toml 中的指定顶层字段。
|
|
55
|
+
# 完整配置参考: https://github.com/Hmbown/deepseek-tui/blob/main/config.example.toml
|
|
56
|
+
|
|
57
|
+
# ── SCALE 项目约束 ──
|
|
58
|
+
sandbox_mode = "${sandboxMode}"
|
|
59
|
+
approval_policy = "${approvalPolicy}"
|
|
60
60
|
`;
|
|
61
61
|
if (scenarioMode === 'critical') {
|
|
62
|
-
config += `
|
|
63
|
-
# 严格模式:禁用 shell 工具,强制通过 scale gate 命令执行
|
|
64
|
-
allow_shell = false
|
|
65
|
-
max_subagents = 5
|
|
62
|
+
config += `
|
|
63
|
+
# 严格模式:禁用 shell 工具,强制通过 scale gate 命令执行
|
|
64
|
+
allow_shell = false
|
|
65
|
+
max_subagents = 5
|
|
66
66
|
`;
|
|
67
67
|
}
|
|
68
|
-
config += `
|
|
69
|
-
# ── SCALE Hooks 说明 ──
|
|
70
|
-
# deepseek-tui 的 hooks 不支持项目级覆盖,请将以下配置添加到
|
|
71
|
-
# 全局 ~/.deepseek/config.toml 的 [hooks] 段中:
|
|
72
|
-
#
|
|
73
|
-
# [hooks]
|
|
74
|
-
# enabled = true
|
|
75
|
-
# default_timeout_secs = 30
|
|
76
|
-
#
|
|
77
|
-
# [[hooks.hooks]]
|
|
78
|
-
# event = "session_start"
|
|
79
|
-
# command = "scale context inject --session-id $DEEPSEEK_SESSION_ID"
|
|
80
|
-
#
|
|
81
|
-
# [[hooks.hooks]]
|
|
82
|
-
# event = "tool_call_before"
|
|
83
|
-
# command = "scale gate pre-tool Bash --args-json '$TOOL_INPUT_JSON' --session-id $DEEPSEEK_SESSION_ID"
|
|
84
|
-
#
|
|
85
|
-
# [[hooks.hooks]]
|
|
86
|
-
# event = "tool_call_after"
|
|
87
|
-
# command = "scale gate post-tool Bash --exit-code '$TOOL_EXIT_CODE' --session-id $DEEPSEEK_SESSION_ID"
|
|
88
|
-
#
|
|
89
|
-
# [[hooks.hooks]]
|
|
90
|
-
# event = "session_end"
|
|
91
|
-
# command = "scale session end --session-id $DEEPSEEK_SESSION_ID"
|
|
68
|
+
config += `
|
|
69
|
+
# ── SCALE Hooks 说明 ──
|
|
70
|
+
# deepseek-tui 的 hooks 不支持项目级覆盖,请将以下配置添加到
|
|
71
|
+
# 全局 ~/.deepseek/config.toml 的 [hooks] 段中:
|
|
72
|
+
#
|
|
73
|
+
# [hooks]
|
|
74
|
+
# enabled = true
|
|
75
|
+
# default_timeout_secs = 30
|
|
76
|
+
#
|
|
77
|
+
# [[hooks.hooks]]
|
|
78
|
+
# event = "session_start"
|
|
79
|
+
# command = "scale context inject --session-id $DEEPSEEK_SESSION_ID"
|
|
80
|
+
#
|
|
81
|
+
# [[hooks.hooks]]
|
|
82
|
+
# event = "tool_call_before"
|
|
83
|
+
# command = "scale gate pre-tool Bash --args-json '$TOOL_INPUT_JSON' --session-id $DEEPSEEK_SESSION_ID"
|
|
84
|
+
#
|
|
85
|
+
# [[hooks.hooks]]
|
|
86
|
+
# event = "tool_call_after"
|
|
87
|
+
# command = "scale gate post-tool Bash --exit-code '$TOOL_EXIT_CODE' --session-id $DEEPSEEK_SESSION_ID"
|
|
88
|
+
#
|
|
89
|
+
# [[hooks.hooks]]
|
|
90
|
+
# event = "session_end"
|
|
91
|
+
# command = "scale session end --session-id $DEEPSEEK_SESSION_ID"
|
|
92
92
|
`;
|
|
93
93
|
return config;
|
|
94
94
|
}
|
|
@@ -110,59 +110,59 @@ max_subagents = 5
|
|
|
110
110
|
const stackLine = techStack.length > 0
|
|
111
111
|
? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
|
|
112
112
|
: '';
|
|
113
|
-
return `# ${projectName}
|
|
114
|
-
${stackLine}
|
|
115
|
-
## SCALE Engine Integration (DeepSeek TUI)
|
|
116
|
-
|
|
117
|
-
This project uses SCALE Engine for AI engineering governance via DeepSeek TUI.
|
|
118
|
-
|
|
119
|
-
### Phase Workflow (六阶段交付链路)
|
|
120
|
-
|
|
121
|
-
\`\`\`
|
|
122
|
-
define → plan → build → verify → review → ship
|
|
123
|
-
\`\`\`
|
|
124
|
-
|
|
125
|
-
每个阶段有明确的质量门禁,guard 失败时阻断流程而非继续。
|
|
126
|
-
|
|
127
|
-
### Commands
|
|
128
|
-
|
|
129
|
-
- \`scale define "<description>" --success-criteria "..." \` — 创建 Spec artifact
|
|
130
|
-
- \`scale plan <spec-id> --rollback "..."\` — 创建 Plan artifact
|
|
131
|
-
- \`scale build <plan-id> --description "..."\` — 创建 Task artifact
|
|
132
|
-
- \`scale verify <task-id>\` — 运行验证门禁 (build/lint/test/coverage)
|
|
133
|
-
- \`scale review <task-id>\` — 代码 review,生成持久化 review 证据
|
|
134
|
-
- \`scale ship <task-id> --message "feat: ..."\` — 发布(强制校验 verify + review 证据)
|
|
135
|
-
- \`scale ship <task-id> --no-commit\` — 仅生成交付报告,不创建 commit
|
|
136
|
-
- \`scale status --json\` — 查看当前 artifact 状态和 blocker
|
|
137
|
-
- \`scale doctor\` — 健康检查
|
|
138
|
-
|
|
139
|
-
### Workflow
|
|
140
|
-
|
|
141
|
-
1. **DEFINE** → 创建 Spec,明确成功标准和边界
|
|
142
|
-
2. **PLAN** → 技术方案设计,评估风险和复杂度
|
|
143
|
-
3. **BUILD** → 实现阶段,Task FSM 追踪状态
|
|
144
|
-
4. **VERIFY** → 运行测试/构建/lint,证据持久化到 .scale/
|
|
145
|
-
5. **REVIEW** → 确定性 review scanner 检查代码质量
|
|
146
|
-
6. **SHIP** → 强制校验 verify + review 证据后交付
|
|
147
|
-
|
|
148
|
-
### Safety Model
|
|
149
|
-
|
|
150
|
-
| 层级 | 作用 |
|
|
151
|
-
|------|------|
|
|
152
|
-
| FSM | 阻止非法 artifact 状态流转 |
|
|
153
|
-
| GateSystem | 执行 build/lint/test/coverage/security 门禁 |
|
|
154
|
-
| EvidenceStore | 持久化验证证据 (.scale/evidence/) |
|
|
155
|
-
| ReviewStore | 持久化 review 记录 (.scale/reviews/) |
|
|
156
|
-
| ReviewAnalyzer | 扫描 diff 中的高风险代码 |
|
|
157
|
-
| Detectors | OWASP Top 10 + 行为检测 (19 类) |
|
|
158
|
-
|
|
159
|
-
### Rules
|
|
160
|
-
|
|
161
|
-
- 🔴 Dangerous commands (rm -rf, DROP TABLE) are physically blocked
|
|
162
|
-
- 🔴 Hardcoded secrets are blocked on Edit/Write
|
|
163
|
-
- 🟡 3 identical retries triggers brute-retry detection
|
|
164
|
-
- 🟡 Claiming done without running tests is blocked (PrematureDoneDetector)
|
|
165
|
-
- 🟢 All tool calls are tracked in .scale/events/
|
|
113
|
+
return `# ${projectName}
|
|
114
|
+
${stackLine}
|
|
115
|
+
## SCALE Engine Integration (DeepSeek TUI)
|
|
116
|
+
|
|
117
|
+
This project uses SCALE Engine for AI engineering governance via DeepSeek TUI.
|
|
118
|
+
|
|
119
|
+
### Phase Workflow (六阶段交付链路)
|
|
120
|
+
|
|
121
|
+
\`\`\`
|
|
122
|
+
define → plan → build → verify → review → ship
|
|
123
|
+
\`\`\`
|
|
124
|
+
|
|
125
|
+
每个阶段有明确的质量门禁,guard 失败时阻断流程而非继续。
|
|
126
|
+
|
|
127
|
+
### Commands
|
|
128
|
+
|
|
129
|
+
- \`scale define "<description>" --success-criteria "..." \` — 创建 Spec artifact
|
|
130
|
+
- \`scale plan <spec-id> --rollback "..."\` — 创建 Plan artifact
|
|
131
|
+
- \`scale build <plan-id> --description "..."\` — 创建 Task artifact
|
|
132
|
+
- \`scale verify <task-id>\` — 运行验证门禁 (build/lint/test/coverage)
|
|
133
|
+
- \`scale review <task-id>\` — 代码 review,生成持久化 review 证据
|
|
134
|
+
- \`scale ship <task-id> --message "feat: ..."\` — 发布(强制校验 verify + review 证据)
|
|
135
|
+
- \`scale ship <task-id> --no-commit\` — 仅生成交付报告,不创建 commit
|
|
136
|
+
- \`scale status --json\` — 查看当前 artifact 状态和 blocker
|
|
137
|
+
- \`scale doctor\` — 健康检查
|
|
138
|
+
|
|
139
|
+
### Workflow
|
|
140
|
+
|
|
141
|
+
1. **DEFINE** → 创建 Spec,明确成功标准和边界
|
|
142
|
+
2. **PLAN** → 技术方案设计,评估风险和复杂度
|
|
143
|
+
3. **BUILD** → 实现阶段,Task FSM 追踪状态
|
|
144
|
+
4. **VERIFY** → 运行测试/构建/lint,证据持久化到 .scale/
|
|
145
|
+
5. **REVIEW** → 确定性 review scanner 检查代码质量
|
|
146
|
+
6. **SHIP** → 强制校验 verify + review 证据后交付
|
|
147
|
+
|
|
148
|
+
### Safety Model
|
|
149
|
+
|
|
150
|
+
| 层级 | 作用 |
|
|
151
|
+
|------|------|
|
|
152
|
+
| FSM | 阻止非法 artifact 状态流转 |
|
|
153
|
+
| GateSystem | 执行 build/lint/test/coverage/security 门禁 |
|
|
154
|
+
| EvidenceStore | 持久化验证证据 (.scale/evidence/) |
|
|
155
|
+
| ReviewStore | 持久化 review 记录 (.scale/reviews/) |
|
|
156
|
+
| ReviewAnalyzer | 扫描 diff 中的高风险代码 |
|
|
157
|
+
| Detectors | OWASP Top 10 + 行为检测 (19 类) |
|
|
158
|
+
|
|
159
|
+
### Rules
|
|
160
|
+
|
|
161
|
+
- 🔴 Dangerous commands (rm -rf, DROP TABLE) are physically blocked
|
|
162
|
+
- 🔴 Hardcoded secrets are blocked on Edit/Write
|
|
163
|
+
- 🟡 3 identical retries triggers brute-retry detection
|
|
164
|
+
- 🟡 Claiming done without running tests is blocked (PrematureDoneDetector)
|
|
165
|
+
- 🟢 All tool calls are tracked in .scale/events/
|
|
166
166
|
`;
|
|
167
167
|
}
|
|
168
168
|
async init(config) {
|
|
@@ -238,15 +238,15 @@ define → plan → build → verify → review → ship
|
|
|
238
238
|
// 6. .gitignore for .scale/
|
|
239
239
|
const gitignorePath = join(this.scaleDir, '.gitignore');
|
|
240
240
|
if (!existsSync(gitignorePath)) {
|
|
241
|
-
writeFileSync(gitignorePath, `# SCALE Engine runtime data
|
|
242
|
-
*.db
|
|
243
|
-
*.db-shm
|
|
244
|
-
*.db-wal
|
|
245
|
-
events/
|
|
246
|
-
checkpoints/
|
|
247
|
-
evidence/
|
|
248
|
-
state/
|
|
249
|
-
hooks/*.sh
|
|
241
|
+
writeFileSync(gitignorePath, `# SCALE Engine runtime data
|
|
242
|
+
*.db
|
|
243
|
+
*.db-shm
|
|
244
|
+
*.db-wal
|
|
245
|
+
events/
|
|
246
|
+
checkpoints/
|
|
247
|
+
evidence/
|
|
248
|
+
state/
|
|
249
|
+
hooks/*.sh
|
|
250
250
|
`, 'utf-8');
|
|
251
251
|
created.push(gitignorePath);
|
|
252
252
|
}
|