@hongmaple0820/scale-engine 0.12.1 → 0.12.3

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.
@@ -0,0 +1,183 @@
1
+ // SCALE Engine — Kimi Adapter
2
+ // 生成 .kimi/settings.json + .kimi/rules.md + .kimi/skills/
3
+ // Kimi: Moonshot AI assistant (https://kimi.moonshot.cn)
4
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { logger } from '../core/logger.js';
7
+ // ============================================================================
8
+ // Kimi Adapter
9
+ // ============================================================================
10
+ export class KimiAdapter {
11
+ constructor() {
12
+ this.agentType = 'kimi';
13
+ this.projectDir = '.';
14
+ this.scaleDir = '.scale';
15
+ }
16
+ getSettingsPath() {
17
+ return join(this.projectDir, '.kimi', 'settings.json');
18
+ }
19
+ getKnowledgeDocPath() {
20
+ return join(this.projectDir, '.kimi', 'rules.md');
21
+ }
22
+ getSkillsDir() {
23
+ return join(this.projectDir, '.kimi', 'skills');
24
+ }
25
+ isInstalled() {
26
+ return existsSync(join(this.projectDir, '.kimi'));
27
+ }
28
+ generateSettings() {
29
+ return {
30
+ hooks: {
31
+ 'pre-tool-use': [
32
+ { matcher: 'Bash', command: 'scale gate pre-tool Bash --args-json "$ARGS" --session-id "$SESSION_ID"' },
33
+ { matcher: 'Edit|Write', command: 'scale gate pre-tool Edit --args-json "$ARGS" --session-id "$SESSION_ID"' },
34
+ ],
35
+ 'post-tool-use': [
36
+ { matcher: 'Edit|Write', command: 'scale gate post-tool Edit --args-json "$ARGS" --exit-code "$EXIT_CODE" --session-id "$SESSION_ID"' },
37
+ { matcher: 'Bash', command: 'scale gate post-tool Bash --args-json "$ARGS" --exit-code "$EXIT_CODE" --session-id "$SESSION_ID"' },
38
+ ],
39
+ 'exit': [
40
+ { matcher: '', command: 'scale gate before-stop --session-id "$SESSION_ID"' },
41
+ ],
42
+ },
43
+ permissions: {
44
+ allow: ['scale:*'],
45
+ },
46
+ };
47
+ }
48
+ mergeSettings(existing) {
49
+ const generated = this.generateSettings();
50
+ const merged = { ...existing };
51
+ if (!merged.hooks)
52
+ merged.hooks = {};
53
+ for (const [hookType, entries] of Object.entries(generated.hooks)) {
54
+ if (!merged.hooks[hookType])
55
+ merged.hooks[hookType] = [];
56
+ for (const entry of entries) {
57
+ const alreadyExists = merged.hooks[hookType].some((e) => e.command.includes('scale '));
58
+ if (!alreadyExists) {
59
+ merged.hooks[hookType].push(entry);
60
+ }
61
+ }
62
+ }
63
+ if (!merged.permissions)
64
+ merged.permissions = {};
65
+ if (!merged.permissions.allow)
66
+ merged.permissions.allow = [];
67
+ for (const perm of generated.permissions.allow) {
68
+ if (!merged.permissions.allow.includes(perm)) {
69
+ merged.permissions.allow.push(perm);
70
+ }
71
+ }
72
+ return merged;
73
+ }
74
+ generateKnowledgeDoc(projectName, techStack = []) {
75
+ const stackLine = techStack.length > 0
76
+ ? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
77
+ : '';
78
+ return `# ${projectName}
79
+ ${stackLine}
80
+ ## SCALE Engine Integration (Kimi)
81
+
82
+ This project uses SCALE Engine for AI engineering governance via Kimi (Moonshot AI).
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
+
105
+ ### Kimi-Specific Notes
106
+ - Kimi supports long-context reasoning (200K+ tokens)
107
+ - Use Kimi for complex analysis and documentation tasks
108
+ - This rules.md file provides AI assistant context
109
+ - SCALE hooks are defined in \`.kimi/settings.json\`
110
+ `;
111
+ }
112
+ async init(config) {
113
+ this.projectDir = config.projectDir;
114
+ this.scaleDir = config.scaleDir ?? join(config.projectDir, '.scale');
115
+ const created = [];
116
+ const skipped = [];
117
+ // 1. Create .scale/ directory structure
118
+ for (const dir of ['events', 'artifacts', 'rules', 'hooks', 'checkpoints']) {
119
+ const fullDir = join(this.scaleDir, dir);
120
+ if (!existsSync(fullDir)) {
121
+ mkdirSync(fullDir, { recursive: true });
122
+ created.push(fullDir);
123
+ }
124
+ else {
125
+ skipped.push(fullDir);
126
+ }
127
+ }
128
+ // 2. Create .kimi/ directory + settings.json
129
+ const kimiDir = join(this.projectDir, '.kimi');
130
+ if (!existsSync(kimiDir)) {
131
+ mkdirSync(kimiDir, { recursive: true });
132
+ created.push(kimiDir);
133
+ }
134
+ else {
135
+ skipped.push(kimiDir);
136
+ }
137
+ const settingsPath = this.getSettingsPath();
138
+ if (existsSync(settingsPath)) {
139
+ const existing = JSON.parse(readFileSync(settingsPath, 'utf-8'));
140
+ const merged = this.mergeSettings(existing);
141
+ writeFileSync(settingsPath, JSON.stringify(merged, null, 2), 'utf-8');
142
+ skipped.push(settingsPath + ' (merged)');
143
+ }
144
+ else {
145
+ writeFileSync(settingsPath, JSON.stringify(this.generateSettings(), null, 2), 'utf-8');
146
+ created.push(settingsPath);
147
+ }
148
+ // 3. Create skills directory
149
+ const skillsDir = this.getSkillsDir();
150
+ if (!existsSync(skillsDir)) {
151
+ mkdirSync(skillsDir, { recursive: true });
152
+ created.push(skillsDir);
153
+ }
154
+ else {
155
+ skipped.push(skillsDir);
156
+ }
157
+ // 4. Create .kimi/rules.md (knowledge document)
158
+ const knowledgeDocPath = this.getKnowledgeDocPath();
159
+ if (!existsSync(knowledgeDocPath)) {
160
+ const projectName = config.projectDir.split(/[/\\]/).pop() ?? 'Project';
161
+ writeFileSync(knowledgeDocPath, this.generateKnowledgeDoc(projectName), 'utf-8');
162
+ created.push(knowledgeDocPath);
163
+ }
164
+ else {
165
+ skipped.push(knowledgeDocPath);
166
+ }
167
+ // 5. .gitignore
168
+ const gitignorePath = join(this.scaleDir, '.gitignore');
169
+ if (!existsSync(gitignorePath)) {
170
+ writeFileSync(gitignorePath, `*.db\n*.db-journal\nevents/\ncheckpoints/\nhooks/*.sh\n`, 'utf-8');
171
+ created.push(gitignorePath);
172
+ }
173
+ logger.info({ created: created.length, skipped: skipped.length }, 'SCALE init (kimi) completed');
174
+ return {
175
+ settingsPath,
176
+ knowledgeDocPath,
177
+ scaleDir: this.scaleDir,
178
+ created,
179
+ skipped,
180
+ };
181
+ }
182
+ }
183
+ //# sourceMappingURL=KimiAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KimiAdapter.js","sourceRoot":"","sources":["../../src/adapters/KimiAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { IAgentAdapter, AdapterConfig, InitResult, SettingsJson } from './ClaudeCodeAdapter.js';
2
+ export declare class WindsurfAdapter implements IAgentAdapter {
3
+ readonly agentType = "windsurf";
4
+ private projectDir;
5
+ private scaleDir;
6
+ getSettingsPath(): string;
7
+ getKnowledgeDocPath(): string;
8
+ getSkillsDir(): string;
9
+ isInstalled(): boolean;
10
+ generateSettings(): SettingsJson;
11
+ mergeSettings(existing: SettingsJson): SettingsJson;
12
+ generateKnowledgeDoc(projectName: string, techStack?: string[]): string;
13
+ init(config: AdapterConfig): Promise<InitResult>;
14
+ }
@@ -0,0 +1,185 @@
1
+ // SCALE Engine — Windsurf Adapter
2
+ // 生成 .windsurf/settings.json + .windsurf/rules.md + .windsurf/skills/
3
+ // Windsurf: AI-first code editor (https://codeium.com/windsurf)
4
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { logger } from '../core/logger.js';
7
+ // ============================================================================
8
+ // Windsurf Adapter
9
+ // ============================================================================
10
+ export class WindsurfAdapter {
11
+ constructor() {
12
+ this.agentType = 'windsurf';
13
+ this.projectDir = '.';
14
+ this.scaleDir = '.scale';
15
+ }
16
+ getSettingsPath() {
17
+ return join(this.projectDir, '.windsurf', 'settings.json');
18
+ }
19
+ getKnowledgeDocPath() {
20
+ // Windsurf uses .windsurf/rules.md for AI instructions (similar to .cursorrules)
21
+ return join(this.projectDir, '.windsurf', 'rules.md');
22
+ }
23
+ getSkillsDir() {
24
+ return join(this.projectDir, '.windsurf', 'skills');
25
+ }
26
+ isInstalled() {
27
+ return existsSync(join(this.projectDir, '.windsurf')) ||
28
+ existsSync(join(this.projectDir, '.windsurfrc'));
29
+ }
30
+ generateSettings() {
31
+ return {
32
+ hooks: {
33
+ 'pre-exec': [
34
+ { matcher: 'Bash', command: 'scale gate pre-tool Bash --args-json "$ARGS" --session-id "$SESSION_ID"' },
35
+ { matcher: 'Edit|Write', command: 'scale gate pre-tool Edit --args-json "$ARGS" --session-id "$SESSION_ID"' },
36
+ ],
37
+ 'post-exec': [
38
+ { matcher: 'Edit|Write', command: 'scale gate post-tool Edit --args-json "$ARGS" --exit-code "$EXIT_CODE" --session-id "$SESSION_ID"' },
39
+ { matcher: 'Bash', command: 'scale gate post-tool Bash --args-json "$ARGS" --exit-code "$EXIT_CODE" --session-id "$SESSION_ID"' },
40
+ ],
41
+ 'before-stop': [
42
+ { matcher: '', command: 'scale gate before-stop --session-id "$SESSION_ID"' },
43
+ ],
44
+ },
45
+ permissions: {
46
+ allow: ['scale:*'],
47
+ },
48
+ };
49
+ }
50
+ mergeSettings(existing) {
51
+ const generated = this.generateSettings();
52
+ const merged = { ...existing };
53
+ if (!merged.hooks)
54
+ merged.hooks = {};
55
+ for (const [hookType, entries] of Object.entries(generated.hooks)) {
56
+ if (!merged.hooks[hookType])
57
+ merged.hooks[hookType] = [];
58
+ for (const entry of entries) {
59
+ const alreadyExists = merged.hooks[hookType].some((e) => e.command.includes('scale '));
60
+ if (!alreadyExists) {
61
+ merged.hooks[hookType].push(entry);
62
+ }
63
+ }
64
+ }
65
+ if (!merged.permissions)
66
+ merged.permissions = {};
67
+ if (!merged.permissions.allow)
68
+ merged.permissions.allow = [];
69
+ for (const perm of generated.permissions.allow) {
70
+ if (!merged.permissions.allow.includes(perm)) {
71
+ merged.permissions.allow.push(perm);
72
+ }
73
+ }
74
+ return merged;
75
+ }
76
+ generateKnowledgeDoc(projectName, techStack = []) {
77
+ const stackLine = techStack.length > 0
78
+ ? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
79
+ : '';
80
+ return `# ${projectName}
81
+ ${stackLine}
82
+ ## SCALE Engine Integration (Windsurf)
83
+
84
+ This project uses SCALE Engine for AI engineering governance via Windsurf.
85
+
86
+ ### Commands
87
+ - \`scale create <type> <title>\` — Create artifact
88
+ - \`scale transition <id> <action>\` — Transition artifact state
89
+ - \`scale list --type Spec\` — List artifacts
90
+ - \`scale role activate <role>\` — Switch role
91
+ - \`scale doctor\` — Health check
92
+
93
+ ### Workflow
94
+ 1. **Explore** → Role: explorer (Read/Grep only)
95
+ 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
96
+ 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
97
+ 4. **Verify** → Must run tests before claiming done
98
+ 5. **Learn** → Defects → Lessons → Rules → Hooks
99
+
100
+ ### Rules
101
+ - 🔴 Dangerous commands are physically blocked
102
+ - 🔴 Hardcoded secrets are blocked on Edit/Write
103
+ - 🟡 3 identical retries triggers brute-retry detection
104
+ - 🟡 Claiming done without running tests is blocked
105
+ - 🟢 All tool calls are tracked in .scale/events/
106
+
107
+ ### Windsurf-Specific Notes
108
+ - Windsurf uses Cascade Flow for multi-file editing
109
+ - Use Chat mode for quick questions, Cascade for complex tasks
110
+ - This rules.md file provides AI assistant context
111
+ - SCALE hooks are defined in \`.windsurf/settings.json\`
112
+ `;
113
+ }
114
+ async init(config) {
115
+ this.projectDir = config.projectDir;
116
+ this.scaleDir = config.scaleDir ?? join(config.projectDir, '.scale');
117
+ const created = [];
118
+ const skipped = [];
119
+ // 1. Create .scale/ directory structure
120
+ for (const dir of ['events', 'artifacts', 'rules', 'hooks', 'checkpoints']) {
121
+ const fullDir = join(this.scaleDir, dir);
122
+ if (!existsSync(fullDir)) {
123
+ mkdirSync(fullDir, { recursive: true });
124
+ created.push(fullDir);
125
+ }
126
+ else {
127
+ skipped.push(fullDir);
128
+ }
129
+ }
130
+ // 2. Create .windsurf/ directory + settings.json
131
+ const windsurfDir = join(this.projectDir, '.windsurf');
132
+ if (!existsSync(windsurfDir)) {
133
+ mkdirSync(windsurfDir, { recursive: true });
134
+ created.push(windsurfDir);
135
+ }
136
+ else {
137
+ skipped.push(windsurfDir);
138
+ }
139
+ const settingsPath = this.getSettingsPath();
140
+ if (existsSync(settingsPath)) {
141
+ const existing = JSON.parse(readFileSync(settingsPath, 'utf-8'));
142
+ const merged = this.mergeSettings(existing);
143
+ writeFileSync(settingsPath, JSON.stringify(merged, null, 2), 'utf-8');
144
+ skipped.push(settingsPath + ' (merged)');
145
+ }
146
+ else {
147
+ writeFileSync(settingsPath, JSON.stringify(this.generateSettings(), null, 2), 'utf-8');
148
+ created.push(settingsPath);
149
+ }
150
+ // 3. Create skills directory
151
+ const skillsDir = this.getSkillsDir();
152
+ if (!existsSync(skillsDir)) {
153
+ mkdirSync(skillsDir, { recursive: true });
154
+ created.push(skillsDir);
155
+ }
156
+ else {
157
+ skipped.push(skillsDir);
158
+ }
159
+ // 4. Create .windsurf/rules.md (knowledge document)
160
+ const knowledgeDocPath = this.getKnowledgeDocPath();
161
+ if (!existsSync(knowledgeDocPath)) {
162
+ const projectName = config.projectDir.split(/[/\\]/).pop() ?? 'Project';
163
+ writeFileSync(knowledgeDocPath, this.generateKnowledgeDoc(projectName), 'utf-8');
164
+ created.push(knowledgeDocPath);
165
+ }
166
+ else {
167
+ skipped.push(knowledgeDocPath);
168
+ }
169
+ // 5. .gitignore
170
+ const gitignorePath = join(this.scaleDir, '.gitignore');
171
+ if (!existsSync(gitignorePath)) {
172
+ writeFileSync(gitignorePath, `*.db\n*.db-journal\nevents/\ncheckpoints/\nhooks/*.sh\n`, 'utf-8');
173
+ created.push(gitignorePath);
174
+ }
175
+ logger.info({ created: created.length, skipped: skipped.length }, 'SCALE init (windsurf) completed');
176
+ return {
177
+ settingsPath,
178
+ knowledgeDocPath,
179
+ scaleDir: this.scaleDir,
180
+ created,
181
+ skipped,
182
+ };
183
+ }
184
+ }
185
+ //# sourceMappingURL=WindsurfAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindsurfAdapter.js","sourceRoot":"","sources":["../../src/adapters/WindsurfAdapter.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,10 @@ export { WorkBuddyAdapter } from './WorkBuddyAdapter.js';
13
13
  export { VSCAdapter } from './VSCAdapter.js';
14
14
  export { QCoderAdapter } from './QCoderAdapter.js';
15
15
  export { DeepSeekTuiAdapter } from './DeepSeekTuiAdapter.js';
16
+ export { AiderAdapter } from './AiderAdapter.js';
17
+ export { WindsurfAdapter } from './WindsurfAdapter.js';
18
+ export { KimiAdapter } from './KimiAdapter.js';
19
+ export { DoubaoAdapter } from './DoubaoAdapter.js';
16
20
  /** All supported agent type identifiers */
17
21
  export declare const SUPPORTED_AGENTS: AgentPlatform[];
18
22
  /**
@@ -12,6 +12,10 @@ import { WorkBuddyAdapter } from './WorkBuddyAdapter.js';
12
12
  import { VSCAdapter } from './VSCAdapter.js';
13
13
  import { QCoderAdapter } from './QCoderAdapter.js';
14
14
  import { DeepSeekTuiAdapter } from './DeepSeekTuiAdapter.js';
15
+ import { AiderAdapter } from './AiderAdapter.js';
16
+ import { WindsurfAdapter } from './WindsurfAdapter.js';
17
+ import { KimiAdapter } from './KimiAdapter.js';
18
+ import { DoubaoAdapter } from './DoubaoAdapter.js';
15
19
  export { ClaudeCodeAdapter } from './ClaudeCodeAdapter.js';
16
20
  export { CodexAdapter } from './CodexAdapter.js';
17
21
  export { OpenCodeAdapter } from './OpenCodeAdapter.js';
@@ -24,6 +28,10 @@ export { WorkBuddyAdapter } from './WorkBuddyAdapter.js';
24
28
  export { VSCAdapter } from './VSCAdapter.js';
25
29
  export { QCoderAdapter } from './QCoderAdapter.js';
26
30
  export { DeepSeekTuiAdapter } from './DeepSeekTuiAdapter.js';
31
+ export { AiderAdapter } from './AiderAdapter.js';
32
+ export { WindsurfAdapter } from './WindsurfAdapter.js';
33
+ export { KimiAdapter } from './KimiAdapter.js';
34
+ export { DoubaoAdapter } from './DoubaoAdapter.js';
27
35
  // ============================================================================
28
36
  // Adapter Registry
29
37
  // ============================================================================
@@ -40,6 +48,10 @@ const ADAPTER_MAP = {
40
48
  'vsc': VSCAdapter,
41
49
  'qcoder': QCoderAdapter,
42
50
  'deepseek-tui': DeepSeekTuiAdapter,
51
+ 'aider': AiderAdapter,
52
+ 'windsurf': WindsurfAdapter,
53
+ 'kimi': KimiAdapter,
54
+ 'doubao': DoubaoAdapter,
43
55
  };
44
56
  /** All supported agent type identifiers */
45
57
  export const SUPPORTED_AGENTS = Object.keys(ADAPTER_MAP);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,4CAA4C;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAK5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,WAAW,GAAmD;IAClE,aAAa,EAAE,iBAAiB;IAChC,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,eAAe;IAC3B,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,eAAe;IAC3B,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,gBAAgB;IAC7B,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,aAAa;IACvB,cAAc,EAAE,kBAAkB;CACnC,CAAA;AAED,2CAA2C;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAoB,CAAA;AAE3E;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,YAAY,GAAG,WAAW,CAAC,SAA0B,CAAC,CAAA;IAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,4BAA4B,SAAS,iBAAiB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpF,CAAA;IACH,CAAC;IACD,OAAO,IAAI,YAAY,EAAE,CAAA;AAC3B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"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"}
package/dist/api/cli.js CHANGED
@@ -1242,11 +1242,16 @@ const team = defineCommand({
1242
1242
  // ============================================================================
1243
1243
  import * as phaseCommands from '../cli/phaseCommands.js';
1244
1244
  import * as liteCommands from '../cli/liteCommands.js';
1245
+ import * as vibeCommands from '../cli/vibeCommands.js';
1245
1246
  const main = defineCommand({
1246
- meta: { name: 'scale', version: '0.10.1', description: 'SCALE Engine v0.10.1 CLI - hardened phase workflow gates: define/plan/build/verify/review/ship; Lite Mode: scale lite; 11 agents; 10 workflows; 9 detectors' },
1247
+ meta: { name: 'scale', version: '0.12.2', description: 'SCALE Engine v0.12.2 CLI - hardened phase workflow gates: define/plan/build/verify/review/ship; Vibe templates: scale vibe; 16 platform adapters; 12 agents; 10 workflows; 19 detectors' },
1247
1248
  subCommands: {
1248
1249
  // Lite Mode (agent-skills style interactive entry)
1249
1250
  lite: liteCommands.liteCommand,
1251
+ // Vibe Templates (one-click prompt workflow)
1252
+ vibe: vibeCommands.vibeCommand,
1253
+ 'vibe-next': vibeCommands.vibeNextCommand,
1254
+ 'vibe-index': vibeCommands.vibeIndexCommand,
1250
1255
  // Phase-Aligned Commands (agent-skills style)
1251
1256
  define: phaseCommands.phaseDefine,
1252
1257
  plan: phaseCommands.phasePlan,