@hongmaple0820/scale-engine 0.24.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/LICENSE +15 -15
  2. package/README.en.md +336 -304
  3. package/README.md +500 -475
  4. package/dist/adapters/AiderAdapter.js +52 -52
  5. package/dist/adapters/AntigravityAdapter.d.ts +4 -0
  6. package/dist/adapters/AntigravityAdapter.js +21 -0
  7. package/dist/adapters/AntigravityAdapter.js.map +1 -0
  8. package/dist/adapters/ClaudeCodeAdapter.d.ts +4 -1
  9. package/dist/adapters/ClaudeCodeAdapter.js +34 -34
  10. package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
  11. package/dist/adapters/ClineAdapter.d.ts +4 -0
  12. package/dist/adapters/ClineAdapter.js +20 -0
  13. package/dist/adapters/ClineAdapter.js.map +1 -0
  14. package/dist/adapters/CodexAdapter.js +28 -28
  15. package/dist/adapters/CursorAdapter.js +26 -26
  16. package/dist/adapters/DeepSeekTuiAdapter.js +97 -97
  17. package/dist/adapters/DoubaoAdapter.js +33 -33
  18. package/dist/adapters/GeminiAdapter.js +26 -26
  19. package/dist/adapters/GenericProjectAgentAdapter.d.ts +29 -0
  20. package/dist/adapters/GenericProjectAgentAdapter.js +204 -0
  21. package/dist/adapters/GenericProjectAgentAdapter.js.map +1 -0
  22. package/dist/adapters/HermesAdapter.js +26 -26
  23. package/dist/adapters/JCodeAdapter.d.ts +4 -0
  24. package/dist/adapters/JCodeAdapter.js +19 -0
  25. package/dist/adapters/JCodeAdapter.js.map +1 -0
  26. package/dist/adapters/KiloCodeAdapter.d.ts +4 -0
  27. package/dist/adapters/KiloCodeAdapter.js +20 -0
  28. package/dist/adapters/KiloCodeAdapter.js.map +1 -0
  29. package/dist/adapters/KimiAdapter.js +32 -32
  30. package/dist/adapters/KiroAdapter.js +26 -26
  31. package/dist/adapters/OpenClawAdapter.js +26 -26
  32. package/dist/adapters/OpenCodeAdapter.js +26 -26
  33. package/dist/adapters/QCoderAdapter.js +26 -26
  34. package/dist/adapters/QoderAdapter.d.ts +4 -0
  35. package/dist/adapters/QoderAdapter.js +21 -0
  36. package/dist/adapters/QoderAdapter.js.map +1 -0
  37. package/dist/adapters/TraeAdapter.js +26 -26
  38. package/dist/adapters/VSCAdapter.js +26 -26
  39. package/dist/adapters/WindsurfAdapter.js +32 -32
  40. package/dist/adapters/WorkBuddyAdapter.js +26 -26
  41. package/dist/adapters/index.d.ts +5 -0
  42. package/dist/adapters/index.js +15 -0
  43. package/dist/adapters/index.js.map +1 -1
  44. package/dist/api/cli.js +226 -48
  45. package/dist/api/cli.js.map +1 -1
  46. package/dist/api/doctor.js +10 -3
  47. package/dist/api/doctor.js.map +1 -1
  48. package/dist/api/quickstart.js +7 -1
  49. package/dist/api/quickstart.js.map +1 -1
  50. package/dist/artifact/sqliteStore.js +89 -89
  51. package/dist/artifact/types.d.ts +1 -1
  52. package/dist/cli/phaseCommands.js +45 -45
  53. package/dist/context/AntiPatternRegistry.js +20 -20
  54. package/dist/context/ContextBuilder.js +155 -155
  55. package/dist/evolution/EvolutionEngine.js +31 -31
  56. package/dist/evolution/EvolutionEvaluator.d.ts +2 -0
  57. package/dist/evolution/EvolutionEvaluator.js +7 -1
  58. package/dist/evolution/EvolutionEvaluator.js.map +1 -1
  59. package/dist/fsm/FSMAgentBridge.js +11 -11
  60. package/dist/hooks/HookGeneratorEnhanced.js +218 -218
  61. package/dist/index.d.ts +1 -1
  62. package/dist/index.js +2 -2
  63. package/dist/index.js.map +1 -1
  64. package/dist/knowledge/SQLiteKnowledgeBase.js +28 -28
  65. package/dist/memory/MemoryBrain.d.ts +1 -0
  66. package/dist/memory/MemoryBrain.js +55 -52
  67. package/dist/memory/MemoryBrain.js.map +1 -1
  68. package/dist/memory/MemoryFabric.d.ts +13 -1
  69. package/dist/memory/MemoryFabric.js +35 -0
  70. package/dist/memory/MemoryFabric.js.map +1 -1
  71. package/dist/memory/MemoryProviders.d.ts +111 -0
  72. package/dist/memory/MemoryProviders.js +385 -0
  73. package/dist/memory/MemoryProviders.js.map +1 -0
  74. package/dist/memory/index.d.ts +1 -0
  75. package/dist/memory/index.js +1 -0
  76. package/dist/memory/index.js.map +1 -1
  77. package/dist/output/GovernanceDashboard.js +44 -44
  78. package/dist/output/HTMLArtifactLayer.js +31 -31
  79. package/dist/prompts/VibeTemplateGallery.js +121 -121
  80. package/dist/skills/SkillDiscovery.js +12 -1
  81. package/dist/skills/SkillDiscovery.js.map +1 -1
  82. package/dist/skills/SkillRadar.js +20 -0
  83. package/dist/skills/SkillRadar.js.map +1 -1
  84. package/dist/skills/SkillRepository.d.ts +9 -1
  85. package/dist/skills/SkillRepository.js +70 -0
  86. package/dist/skills/SkillRepository.js.map +1 -1
  87. package/dist/skills/routing/SkillPlanner.js +40 -40
  88. package/dist/workflow/EngineeringStandards.js +62 -62
  89. package/dist/workflow/GovernanceTemplatePacks.d.ts +1 -1
  90. package/dist/workflow/GovernanceTemplatePacks.js +1990 -162
  91. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
  92. package/dist/workflow/GovernanceTemplates.d.ts +2 -0
  93. package/dist/workflow/GovernanceTemplates.js +1012 -1001
  94. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  95. package/dist/workflow/ResourceGovernance.js +16 -16
  96. package/dist/workflow/TaskArtifactScaffolder.js +10 -10
  97. package/dist/workflow/UpgradeManager.d.ts +3 -2
  98. package/dist/workflow/UpgradeManager.js +134 -49
  99. package/dist/workflow/UpgradeManager.js.map +1 -1
  100. package/dist/workflow/WorkspaceTopology.js +18 -15
  101. package/dist/workflow/WorkspaceTopology.js.map +1 -1
  102. package/docs/CODE_INTELLIGENCE.md +138 -138
  103. package/docs/CONTEXT_BUDGET.md +81 -81
  104. package/docs/EXTERNAL_REFERENCES.md +63 -0
  105. package/docs/GITLAB_FLOW.md +125 -125
  106. package/docs/GOVERNANCE_DASHBOARD.md +64 -64
  107. package/docs/MEMORY_BRAIN.md +104 -104
  108. package/docs/MEMORY_FABRIC.md +134 -107
  109. package/docs/README.md +79 -68
  110. package/docs/RUNTIME_EVIDENCE.md +101 -101
  111. package/docs/SKILL-REPOSITORY.md +57 -0
  112. package/docs/SKILL_RADAR.md +122 -115
  113. package/docs/THIRD_PARTY_SKILLS.md +57 -0
  114. package/docs/WORKFLOW_EVAL.md +151 -151
  115. package/docs/guides/DEVELOPMENT_WORKFLOW.md +80 -0
  116. package/docs/guides/GETTING_STARTED.md +50 -0
  117. package/docs/start/README.md +78 -72
  118. package/docs/start/agent-governance-demo.md +107 -107
  119. package/docs/start/quickstart.md +137 -127
  120. package/docs/start/workflow-upgrade.md +32 -8
  121. package/docs/workflow/README.md +67 -0
  122. package/docs/workflow/node-library.md +52 -0
  123. package/docs/workflow/templates/api-contract.md +29 -0
  124. package/docs/workflow/templates/architecture-review.md +23 -0
  125. package/docs/workflow/templates/db-change-plan.md +20 -0
  126. package/docs/workflow/templates/docs-impact.md +17 -0
  127. package/docs/workflow/templates/e2e-plan.md +20 -0
  128. package/docs/workflow/templates/explore.md +16 -0
  129. package/docs/workflow/templates/github-actions-scale-preflight.yml +32 -0
  130. package/docs/workflow/templates/mini-prd.md +16 -0
  131. package/docs/workflow/templates/plan.md +37 -0
  132. package/docs/workflow/templates/pre-push-scale-preflight.sh +8 -0
  133. package/docs/workflow/templates/product-smoke.md +61 -0
  134. package/docs/workflow/templates/reality-check.md +28 -0
  135. package/docs/workflow/templates/resource-cleanup.md +17 -0
  136. package/docs/workflow/templates/resource-impact.md +25 -0
  137. package/docs/workflow/templates/review.md +12 -0
  138. package/docs/workflow/templates/runtime.md +23 -0
  139. package/docs/workflow/templates/security-review.md +26 -0
  140. package/docs/workflow/templates/skill-evidence.md +33 -0
  141. package/docs/workflow/templates/skill-plan.md +39 -0
  142. package/docs/workflow/templates/spec.md +17 -0
  143. package/docs/workflow/templates/standards-impact.md +28 -0
  144. package/docs/workflow/templates/summary.md +16 -0
  145. package/docs/workflow/templates/tasks.md +8 -0
  146. package/docs/workflow/templates/ui-spec.md +29 -0
  147. package/docs/workflow/templates/verification.md +20 -0
  148. package/docs/workflow/templates/visual-review.md +20 -0
  149. package/examples/demo-projects/agent-governance-demo/CONTEXT.md +14 -14
  150. package/examples/demo-projects/agent-governance-demo/README.md +48 -48
  151. package/examples/demo-projects/agent-governance-demo/docs/CONTEXT-MAP.md +14 -14
  152. package/examples/demo-projects/agent-governance-demo/package.json +22 -21
  153. package/examples/demo-projects/agent-governance-demo/src/oauth-state.ts +39 -39
  154. package/examples/demo-projects/agent-governance-demo/tests/oauth-state.test.ts +52 -52
  155. package/package.json +88 -75
@@ -76,32 +76,32 @@ export class OpenClawAdapter {
76
76
  const stackLine = techStack.length > 0
77
77
  ? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
78
78
  : '';
79
- return `# ${projectName}
80
- ${stackLine}
81
- ## SCALE Engine Integration (OpenClaw)
82
-
83
- This project uses SCALE Engine for AI engineering governance via OpenClaw.
84
-
85
- ### Commands
86
- - \`scale create <type> <title>\` — Create artifact
87
- - \`scale transition <id> <action>\` — Transition artifact state
88
- - \`scale list --type Spec\` — List artifacts
89
- - \`scale role activate <role>\` — Switch role
90
- - \`scale doctor\` — Health check
91
-
92
- ### Workflow
93
- 1. **Explore** → Role: explorer (Read/Grep only)
94
- 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
- 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
- 4. **Verify** → Must run tests before claiming done
97
- 5. **Learn** → Defects → Lessons → Rules → Hooks
98
-
99
- ### Rules
100
- - 🔴 Dangerous commands are physically blocked
101
- - 🔴 Hardcoded secrets are blocked on Edit/Write
102
- - 🟡 3 identical retries triggers brute-retry detection
103
- - 🟡 Claiming done without running tests is blocked
104
- - 🟢 All tool calls are tracked in .scale/events/
79
+ return `# ${projectName}
80
+ ${stackLine}
81
+ ## SCALE Engine Integration (OpenClaw)
82
+
83
+ This project uses SCALE Engine for AI engineering governance via OpenClaw.
84
+
85
+ ### Commands
86
+ - \`scale create <type> <title>\` — Create artifact
87
+ - \`scale transition <id> <action>\` — Transition artifact state
88
+ - \`scale list --type Spec\` — List artifacts
89
+ - \`scale role activate <role>\` — Switch role
90
+ - \`scale doctor\` — Health check
91
+
92
+ ### Workflow
93
+ 1. **Explore** → Role: explorer (Read/Grep only)
94
+ 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
+ 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
+ 4. **Verify** → Must run tests before claiming done
97
+ 5. **Learn** → Defects → Lessons → Rules → Hooks
98
+
99
+ ### Rules
100
+ - 🔴 Dangerous commands are physically blocked
101
+ - 🔴 Hardcoded secrets are blocked on Edit/Write
102
+ - 🟡 3 identical retries triggers brute-retry detection
103
+ - 🟡 Claiming done without running tests is blocked
104
+ - 🟢 All tool calls are tracked in .scale/events/
105
105
  `;
106
106
  }
107
107
  async init(config) {
@@ -76,32 +76,32 @@ export class OpenCodeAdapter {
76
76
  const stackLine = techStack.length > 0
77
77
  ? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
78
78
  : '';
79
- return `# ${projectName}
80
- ${stackLine}
81
- ## SCALE Engine Integration (OpenCode)
82
-
83
- This project uses SCALE Engine for AI engineering governance via OpenCode.
84
-
85
- ### Commands
86
- - \`scale create <type> <title>\` — Create artifact
87
- - \`scale transition <id> <action>\` — Transition artifact state
88
- - \`scale list --type Spec\` — List artifacts
89
- - \`scale role activate <role>\` — Switch role
90
- - \`scale doctor\` — Health check
91
-
92
- ### Workflow
93
- 1. **Explore** → Role: explorer (Read/Grep only)
94
- 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
- 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
- 4. **Verify** → Must run tests before claiming done
97
- 5. **Learn** → Defects → Lessons → Rules → Hooks
98
-
99
- ### Rules
100
- - 🔴 Dangerous commands are physically blocked
101
- - 🔴 Hardcoded secrets are blocked on Edit/Write
102
- - 🟡 3 identical retries triggers brute-retry detection
103
- - 🟡 Claiming done without running tests is blocked
104
- - 🟢 All tool calls are tracked in .scale/events/
79
+ return `# ${projectName}
80
+ ${stackLine}
81
+ ## SCALE Engine Integration (OpenCode)
82
+
83
+ This project uses SCALE Engine for AI engineering governance via OpenCode.
84
+
85
+ ### Commands
86
+ - \`scale create <type> <title>\` — Create artifact
87
+ - \`scale transition <id> <action>\` — Transition artifact state
88
+ - \`scale list --type Spec\` — List artifacts
89
+ - \`scale role activate <role>\` — Switch role
90
+ - \`scale doctor\` — Health check
91
+
92
+ ### Workflow
93
+ 1. **Explore** → Role: explorer (Read/Grep only)
94
+ 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
+ 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
+ 4. **Verify** → Must run tests before claiming done
97
+ 5. **Learn** → Defects → Lessons → Rules → Hooks
98
+
99
+ ### Rules
100
+ - 🔴 Dangerous commands are physically blocked
101
+ - 🔴 Hardcoded secrets are blocked on Edit/Write
102
+ - 🟡 3 identical retries triggers brute-retry detection
103
+ - 🟡 Claiming done without running tests is blocked
104
+ - 🟢 All tool calls are tracked in .scale/events/
105
105
  `;
106
106
  }
107
107
  async init(config) {
@@ -76,32 +76,32 @@ export class QCoderAdapter {
76
76
  const stackLine = techStack.length > 0
77
77
  ? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
78
78
  : '';
79
- return `# ${projectName}
80
- ${stackLine}
81
- ## SCALE Engine Integration (QCoder / Qwen Code)
82
-
83
- This project uses SCALE Engine for AI engineering governance via Qwen Code CLI.
84
-
85
- ### Commands
86
- - \`scale create <type> <title>\` — Create artifact
87
- - \`scale transition <id> <action>\` — Transition artifact state
88
- - \`scale list --type Spec\` — List artifacts
89
- - \`scale role activate <role>\` — Switch role
90
- - \`scale doctor\` — Health check
91
-
92
- ### Workflow
93
- 1. **Explore** → Role: explorer (Read/Grep only)
94
- 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
- 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
- 4. **Verify** → Must run tests before claiming done
97
- 5. **Learn** → Defects → Lessons → Rules → Hooks
98
-
99
- ### Rules
100
- - 🔴 Dangerous commands are physically blocked
101
- - 🔴 Hardcoded secrets are blocked on Edit/Write
102
- - 🟡 3 identical retries triggers brute-retry detection
103
- - 🟡 Claiming done without running tests is blocked
104
- - 🟢 All tool calls are tracked in .scale/events/
79
+ return `# ${projectName}
80
+ ${stackLine}
81
+ ## SCALE Engine Integration (QCoder / Qwen Code)
82
+
83
+ This project uses SCALE Engine for AI engineering governance via Qwen Code CLI.
84
+
85
+ ### Commands
86
+ - \`scale create <type> <title>\` — Create artifact
87
+ - \`scale transition <id> <action>\` — Transition artifact state
88
+ - \`scale list --type Spec\` — List artifacts
89
+ - \`scale role activate <role>\` — Switch role
90
+ - \`scale doctor\` — Health check
91
+
92
+ ### Workflow
93
+ 1. **Explore** → Role: explorer (Read/Grep only)
94
+ 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
+ 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
+ 4. **Verify** → Must run tests before claiming done
97
+ 5. **Learn** → Defects → Lessons → Rules → Hooks
98
+
99
+ ### Rules
100
+ - 🔴 Dangerous commands are physically blocked
101
+ - 🔴 Hardcoded secrets are blocked on Edit/Write
102
+ - 🟡 3 identical retries triggers brute-retry detection
103
+ - 🟡 Claiming done without running tests is blocked
104
+ - 🟢 All tool calls are tracked in .scale/events/
105
105
  `;
106
106
  }
107
107
  async init(config) {
@@ -0,0 +1,4 @@
1
+ import { GenericProjectAgentAdapter } from './GenericProjectAgentAdapter.js';
2
+ export declare class QoderAdapter extends GenericProjectAgentAdapter {
3
+ constructor();
4
+ }
@@ -0,0 +1,21 @@
1
+ // SCALE Engine - Qoder Adapter
2
+ import { GenericProjectAgentAdapter } from './GenericProjectAgentAdapter.js';
3
+ export class QoderAdapter extends GenericProjectAgentAdapter {
4
+ constructor() {
5
+ super({
6
+ agentType: 'qoder',
7
+ displayName: 'Qoder',
8
+ settingsPath: '.qoder/settings.json',
9
+ knowledgeDocPath: '.qoder/rules/SCALE.md',
10
+ skillsDir: '.qoder/skills',
11
+ extraDirs: ['.qoder/rules'],
12
+ installedPaths: ['.qoder/settings.json', '.qoder/rules'],
13
+ settingsShape: 'qoder-hooks',
14
+ notes: [
15
+ 'Qoder rules are kept under .qoder/rules for project-scoped guidance.',
16
+ 'Qoder hook entries use PreToolUse, PostToolUse, and Stop style sections.',
17
+ ],
18
+ });
19
+ }
20
+ }
21
+ //# sourceMappingURL=QoderAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QoderAdapter.js","sourceRoot":"","sources":["../../src/adapters/QoderAdapter.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,uBAAuB;YACzC,SAAS,EAAE,eAAe;YAC1B,SAAS,EAAE,CAAC,cAAc,CAAC;YAC3B,cAAc,EAAE,CAAC,sBAAsB,EAAE,cAAc,CAAC;YACxD,aAAa,EAAE,aAAa;YAC5B,KAAK,EAAE;gBACL,sEAAsE;gBACtE,0EAA0E;aAC3E;SACF,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -76,32 +76,32 @@ export class TraeAdapter {
76
76
  const stackLine = techStack.length > 0
77
77
  ? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
78
78
  : '';
79
- return `# ${projectName}
80
- ${stackLine}
81
- ## SCALE Engine Integration (Trae)
82
-
83
- This project uses SCALE Engine for AI engineering governance via Trae.
84
-
85
- ### Commands
86
- - \`scale create <type> <title>\` — Create artifact
87
- - \`scale transition <id> <action>\` — Transition artifact state
88
- - \`scale list --type Spec\` — List artifacts
89
- - \`scale role activate <role>\` — Switch role
90
- - \`scale doctor\` — Health check
91
-
92
- ### Workflow
93
- 1. **Explore** → Role: explorer (Read/Grep only)
94
- 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
- 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
- 4. **Verify** → Must run tests before claiming done
97
- 5. **Learn** → Defects → Lessons → Rules → Hooks
98
-
99
- ### Rules
100
- - 🔴 Dangerous commands are physically blocked
101
- - 🔴 Hardcoded secrets are blocked on Edit/Write
102
- - 🟡 3 identical retries triggers brute-retry detection
103
- - 🟡 Claiming done without running tests is blocked
104
- - 🟢 All tool calls are tracked in .scale/events/
79
+ return `# ${projectName}
80
+ ${stackLine}
81
+ ## SCALE Engine Integration (Trae)
82
+
83
+ This project uses SCALE Engine for AI engineering governance via Trae.
84
+
85
+ ### Commands
86
+ - \`scale create <type> <title>\` — Create artifact
87
+ - \`scale transition <id> <action>\` — Transition artifact state
88
+ - \`scale list --type Spec\` — List artifacts
89
+ - \`scale role activate <role>\` — Switch role
90
+ - \`scale doctor\` — Health check
91
+
92
+ ### Workflow
93
+ 1. **Explore** → Role: explorer (Read/Grep only)
94
+ 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
+ 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
+ 4. **Verify** → Must run tests before claiming done
97
+ 5. **Learn** → Defects → Lessons → Rules → Hooks
98
+
99
+ ### Rules
100
+ - 🔴 Dangerous commands are physically blocked
101
+ - 🔴 Hardcoded secrets are blocked on Edit/Write
102
+ - 🟡 3 identical retries triggers brute-retry detection
103
+ - 🟡 Claiming done without running tests is blocked
104
+ - 🟢 All tool calls are tracked in .scale/events/
105
105
  `;
106
106
  }
107
107
  async init(config) {
@@ -76,32 +76,32 @@ export class VSCAdapter {
76
76
  const stackLine = techStack.length > 0
77
77
  ? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
78
78
  : '';
79
- return `# ${projectName}
80
- ${stackLine}
81
- ## SCALE Engine Integration (VSC)
82
-
83
- This project uses SCALE Engine for AI engineering governance via VS Code Copilot CLI.
84
-
85
- ### Commands
86
- - \`scale create <type> <title>\` — Create artifact
87
- - \`scale transition <id> <action>\` — Transition artifact state
88
- - \`scale list --type Spec\` — List artifacts
89
- - \`scale role activate <role>\` — Switch role
90
- - \`scale doctor\` — Health check
91
-
92
- ### Workflow
93
- 1. **Explore** → Role: explorer (Read/Grep only)
94
- 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
- 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
- 4. **Verify** → Must run tests before claiming done
97
- 5. **Learn** → Defects → Lessons → Rules → Hooks
98
-
99
- ### Rules
100
- - 🔴 Dangerous commands are physically blocked
101
- - 🔴 Hardcoded secrets are blocked on Edit/Write
102
- - 🟡 3 identical retries triggers brute-retry detection
103
- - 🟡 Claiming done without running tests is blocked
104
- - 🟢 All tool calls are tracked in .scale/events/
79
+ return `# ${projectName}
80
+ ${stackLine}
81
+ ## SCALE Engine Integration (VSC)
82
+
83
+ This project uses SCALE Engine for AI engineering governance via VS Code Copilot CLI.
84
+
85
+ ### Commands
86
+ - \`scale create <type> <title>\` — Create artifact
87
+ - \`scale transition <id> <action>\` — Transition artifact state
88
+ - \`scale list --type Spec\` — List artifacts
89
+ - \`scale role activate <role>\` — Switch role
90
+ - \`scale doctor\` — Health check
91
+
92
+ ### Workflow
93
+ 1. **Explore** → Role: explorer (Read/Grep only)
94
+ 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
+ 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
+ 4. **Verify** → Must run tests before claiming done
97
+ 5. **Learn** → Defects → Lessons → Rules → Hooks
98
+
99
+ ### Rules
100
+ - 🔴 Dangerous commands are physically blocked
101
+ - 🔴 Hardcoded secrets are blocked on Edit/Write
102
+ - 🟡 3 identical retries triggers brute-retry detection
103
+ - 🟡 Claiming done without running tests is blocked
104
+ - 🟢 All tool calls are tracked in .scale/events/
105
105
  `;
106
106
  }
107
107
  async init(config) {
@@ -77,38 +77,38 @@ export class WindsurfAdapter {
77
77
  const stackLine = techStack.length > 0
78
78
  ? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
79
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\`
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
112
  `;
113
113
  }
114
114
  async init(config) {
@@ -76,32 +76,32 @@ export class WorkBuddyAdapter {
76
76
  const stackLine = techStack.length > 0
77
77
  ? `\n## Tech Stack\n${techStack.map((t) => `- ${t}`).join('\n')}\n`
78
78
  : '';
79
- return `# ${projectName}
80
- ${stackLine}
81
- ## SCALE Engine Integration (WorkBuddy)
82
-
83
- This project uses SCALE Engine for AI engineering governance via WorkBuddy.
84
-
85
- ### Commands
86
- - \`scale create <type> <title>\` — Create artifact
87
- - \`scale transition <id> <action>\` — Transition artifact state
88
- - \`scale list --type Spec\` — List artifacts
89
- - \`scale role activate <role>\` — Switch role
90
- - \`scale doctor\` — Health check
91
-
92
- ### Workflow
93
- 1. **Explore** → Role: explorer (Read/Grep only)
94
- 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
- 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
- 4. **Verify** → Must run tests before claiming done
97
- 5. **Learn** → Defects → Lessons → Rules → Hooks
98
-
99
- ### Rules
100
- - 🔴 Dangerous commands are physically blocked
101
- - 🔴 Hardcoded secrets are blocked on Edit/Write
102
- - 🟡 3 identical retries triggers brute-retry detection
103
- - 🟡 Claiming done without running tests is blocked
104
- - 🟢 All tool calls are tracked in .scale/events/
79
+ return `# ${projectName}
80
+ ${stackLine}
81
+ ## SCALE Engine Integration (WorkBuddy)
82
+
83
+ This project uses SCALE Engine for AI engineering governance via WorkBuddy.
84
+
85
+ ### Commands
86
+ - \`scale create <type> <title>\` — Create artifact
87
+ - \`scale transition <id> <action>\` — Transition artifact state
88
+ - \`scale list --type Spec\` — List artifacts
89
+ - \`scale role activate <role>\` — Switch role
90
+ - \`scale doctor\` — Health check
91
+
92
+ ### Workflow
93
+ 1. **Explore** → Role: explorer (Read/Grep only)
94
+ 2. **Plan** → Create Spec → refine → approve (guard: ambiguity ≤ 0.2)
95
+ 3. **Implement** → Role: implementer (Edit/Write/Bash unlocked)
96
+ 4. **Verify** → Must run tests before claiming done
97
+ 5. **Learn** → Defects → Lessons → Rules → Hooks
98
+
99
+ ### Rules
100
+ - 🔴 Dangerous commands are physically blocked
101
+ - 🔴 Hardcoded secrets are blocked on Edit/Write
102
+ - 🟡 3 identical retries triggers brute-retry detection
103
+ - 🟡 Claiming done without running tests is blocked
104
+ - 🟢 All tool calls are tracked in .scale/events/
105
105
  `;
106
106
  }
107
107
  async init(config) {
@@ -18,6 +18,11 @@ export { WindsurfAdapter } from './WindsurfAdapter.js';
18
18
  export { KimiAdapter } from './KimiAdapter.js';
19
19
  export { DoubaoAdapter } from './DoubaoAdapter.js';
20
20
  export { KiroAdapter } from './KiroAdapter.js';
21
+ export { QoderAdapter } from './QoderAdapter.js';
22
+ export { JCodeAdapter } from './JCodeAdapter.js';
23
+ export { ClineAdapter } from './ClineAdapter.js';
24
+ export { KiloCodeAdapter } from './KiloCodeAdapter.js';
25
+ export { AntigravityAdapter } from './AntigravityAdapter.js';
21
26
  /** All supported agent type identifiers */
22
27
  export declare const SUPPORTED_AGENTS: AgentPlatform[];
23
28
  /**
@@ -17,6 +17,11 @@ import { WindsurfAdapter } from './WindsurfAdapter.js';
17
17
  import { KimiAdapter } from './KimiAdapter.js';
18
18
  import { DoubaoAdapter } from './DoubaoAdapter.js';
19
19
  import { KiroAdapter } from './KiroAdapter.js';
20
+ import { QoderAdapter } from './QoderAdapter.js';
21
+ import { JCodeAdapter } from './JCodeAdapter.js';
22
+ import { ClineAdapter } from './ClineAdapter.js';
23
+ import { KiloCodeAdapter } from './KiloCodeAdapter.js';
24
+ import { AntigravityAdapter } from './AntigravityAdapter.js';
20
25
  export { ClaudeCodeAdapter } from './ClaudeCodeAdapter.js';
21
26
  export { CodexAdapter } from './CodexAdapter.js';
22
27
  export { OpenCodeAdapter } from './OpenCodeAdapter.js';
@@ -34,6 +39,11 @@ export { WindsurfAdapter } from './WindsurfAdapter.js';
34
39
  export { KimiAdapter } from './KimiAdapter.js';
35
40
  export { DoubaoAdapter } from './DoubaoAdapter.js';
36
41
  export { KiroAdapter } from './KiroAdapter.js';
42
+ export { QoderAdapter } from './QoderAdapter.js';
43
+ export { JCodeAdapter } from './JCodeAdapter.js';
44
+ export { ClineAdapter } from './ClineAdapter.js';
45
+ export { KiloCodeAdapter } from './KiloCodeAdapter.js';
46
+ export { AntigravityAdapter } from './AntigravityAdapter.js';
37
47
  // ============================================================================
38
48
  // Adapter Registry
39
49
  // ============================================================================
@@ -55,6 +65,11 @@ const ADAPTER_MAP = {
55
65
  'kimi': KimiAdapter,
56
66
  'doubao': DoubaoAdapter,
57
67
  'kiro': KiroAdapter,
68
+ 'qoder': QoderAdapter,
69
+ 'jcode': JCodeAdapter,
70
+ 'cline': ClineAdapter,
71
+ 'kilocode': KiloCodeAdapter,
72
+ 'antigravity': AntigravityAdapter,
58
73
  };
59
74
  /** All supported agent type identifiers */
60
75
  export const SUPPORTED_AGENTS = Object.keys(ADAPTER_MAP);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"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"}
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;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,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;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,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;IAClC,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,eAAe;IAC3B,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,eAAe;IAC3B,aAAa,EAAE,kBAAkB;CAClC,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"}