@hongmaple0820/scale-engine 0.5.0 → 0.7.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 (128) hide show
  1. package/LICENSE +15 -15
  2. package/README.md +64 -13
  3. package/dist/adapters/ClaudeCodeAdapter.d.ts +1 -1
  4. package/dist/adapters/ClaudeCodeAdapter.js +5 -3
  5. package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
  6. package/dist/adapters/CodexAdapter.js +33 -31
  7. package/dist/adapters/CodexAdapter.js.map +1 -1
  8. package/dist/adapters/CursorAdapter.js +5 -3
  9. package/dist/adapters/CursorAdapter.js.map +1 -1
  10. package/dist/adapters/GeminiAdapter.js +5 -3
  11. package/dist/adapters/GeminiAdapter.js.map +1 -1
  12. package/dist/adapters/HermesAdapter.js +5 -3
  13. package/dist/adapters/HermesAdapter.js.map +1 -1
  14. package/dist/adapters/OpenClawAdapter.js +5 -3
  15. package/dist/adapters/OpenClawAdapter.js.map +1 -1
  16. package/dist/adapters/OpenCodeAdapter.js +5 -3
  17. package/dist/adapters/OpenCodeAdapter.js.map +1 -1
  18. package/dist/adapters/QCoderAdapter.d.ts +13 -0
  19. package/dist/adapters/QCoderAdapter.js +155 -0
  20. package/dist/adapters/QCoderAdapter.js.map +1 -0
  21. package/dist/adapters/TraeAdapter.d.ts +13 -0
  22. package/dist/adapters/TraeAdapter.js +155 -0
  23. package/dist/adapters/TraeAdapter.js.map +1 -0
  24. package/dist/adapters/VSCAdapter.d.ts +13 -0
  25. package/dist/adapters/VSCAdapter.js +155 -0
  26. package/dist/adapters/VSCAdapter.js.map +1 -0
  27. package/dist/adapters/WorkBuddyAdapter.d.ts +13 -0
  28. package/dist/adapters/WorkBuddyAdapter.js +155 -0
  29. package/dist/adapters/WorkBuddyAdapter.js.map +1 -0
  30. package/dist/adapters/index.d.ts +4 -0
  31. package/dist/adapters/index.js +13 -1
  32. package/dist/adapters/index.js.map +1 -1
  33. package/dist/agents/AgentManager.d.ts +14 -0
  34. package/dist/agents/AgentManager.js +85 -0
  35. package/dist/agents/AgentManager.js.map +1 -0
  36. package/dist/agents/IAgent.d.ts +53 -0
  37. package/dist/agents/IAgent.js +4 -0
  38. package/dist/agents/IAgent.js.map +1 -0
  39. package/dist/agents/definitions/debugger.d.ts +2 -0
  40. package/dist/agents/definitions/debugger.js +6 -0
  41. package/dist/agents/definitions/debugger.js.map +1 -0
  42. package/dist/agents/definitions/doc-writer.d.ts +2 -0
  43. package/dist/agents/definitions/doc-writer.js +6 -0
  44. package/dist/agents/definitions/doc-writer.js.map +1 -0
  45. package/dist/agents/definitions/implementer.d.ts +2 -0
  46. package/dist/agents/definitions/implementer.js +6 -0
  47. package/dist/agents/definitions/implementer.js.map +1 -0
  48. package/dist/agents/definitions/planner.d.ts +2 -0
  49. package/dist/agents/definitions/planner.js +6 -0
  50. package/dist/agents/definitions/planner.js.map +1 -0
  51. package/dist/agents/definitions/researcher.d.ts +2 -0
  52. package/dist/agents/definitions/researcher.js +6 -0
  53. package/dist/agents/definitions/researcher.js.map +1 -0
  54. package/dist/agents/definitions/reviewer.d.ts +2 -0
  55. package/dist/agents/definitions/reviewer.js +6 -0
  56. package/dist/agents/definitions/reviewer.js.map +1 -0
  57. package/dist/agents/definitions/security.d.ts +2 -0
  58. package/dist/agents/definitions/security.js +6 -0
  59. package/dist/agents/definitions/security.js.map +1 -0
  60. package/dist/agents/definitions/tester.d.ts +2 -0
  61. package/dist/agents/definitions/tester.js +6 -0
  62. package/dist/agents/definitions/tester.js.map +1 -0
  63. package/dist/agents/definitions${file}.d.ts +1 -0
  64. package/dist/agents/definitions${file}.js +14 -0
  65. package/dist/agents/definitions${file}.js.map +1 -0
  66. package/dist/agents/index.d.ts +15 -0
  67. package/dist/agents/index.js +34 -0
  68. package/dist/agents/index.js.map +1 -0
  69. package/dist/api/cli.js +6 -5
  70. package/dist/api/cli.js.map +1 -1
  71. package/dist/api/doctor.js +29 -12
  72. package/dist/api/doctor.js.map +1 -1
  73. package/dist/api/mcp.js +0 -5
  74. package/dist/api/mcp.js.map +1 -1
  75. package/dist/artifact/fsm.d.ts +5 -0
  76. package/dist/artifact/fsm.js +25 -3
  77. package/dist/artifact/fsm.js.map +1 -1
  78. package/dist/artifact/sqliteStore.js +90 -103
  79. package/dist/artifact/sqliteStore.js.map +1 -1
  80. package/dist/artifact/store.js +2 -4
  81. package/dist/artifact/store.js.map +1 -1
  82. package/dist/artifact/types.d.ts +3 -3
  83. package/dist/artifact/types.js +0 -3
  84. package/dist/artifact/types.js.map +1 -1
  85. package/dist/context/ContextBuilder.js +1 -4
  86. package/dist/context/ContextBuilder.js.map +1 -1
  87. package/dist/core/container.js +4 -2
  88. package/dist/core/container.js.map +1 -1
  89. package/dist/core/eventBus.js +5 -6
  90. package/dist/core/eventBus.js.map +1 -1
  91. package/dist/dashboard/index.d.ts +2 -0
  92. package/dist/dashboard/index.js +2 -0
  93. package/dist/dashboard/index.js.map +1 -0
  94. package/dist/dashboard/server.d.ts +52 -0
  95. package/dist/dashboard/server.js +83 -0
  96. package/dist/dashboard/server.js.map +1 -0
  97. package/dist/evolution/BehaviorTracker.js +2 -3
  98. package/dist/evolution/BehaviorTracker.js.map +1 -1
  99. package/dist/evolution/EvolutionEngine.js +34 -45
  100. package/dist/evolution/EvolutionEngine.js.map +1 -1
  101. package/dist/evolution/PatternExtractor.d.ts +40 -0
  102. package/dist/evolution/PatternExtractor.js +83 -0
  103. package/dist/evolution/PatternExtractor.js.map +1 -0
  104. package/dist/evolution/SkillCreator.d.ts +40 -0
  105. package/dist/evolution/SkillCreator.js +118 -0
  106. package/dist/evolution/SkillCreator.js.map +1 -0
  107. package/dist/guardrails/Gateway.js +6 -7
  108. package/dist/guardrails/Gateway.js.map +1 -1
  109. package/dist/guardrails/advancedDetectors.d.ts +12 -0
  110. package/dist/guardrails/advancedDetectors.js +78 -28
  111. package/dist/guardrails/advancedDetectors.js.map +1 -1
  112. package/dist/guardrails/detectors.js +24 -14
  113. package/dist/guardrails/detectors.js.map +1 -1
  114. package/dist/index.d.ts +12 -1
  115. package/dist/index.js +11 -2
  116. package/dist/index.js.map +1 -1
  117. package/dist/knowledge/KnowledgeBase.js +2 -3
  118. package/dist/knowledge/KnowledgeBase.js.map +1 -1
  119. package/dist/knowledge/SQLiteKnowledgeBase.d.ts +28 -0
  120. package/dist/knowledge/SQLiteKnowledgeBase.js +175 -0
  121. package/dist/knowledge/SQLiteKnowledgeBase.js.map +1 -0
  122. package/dist/routing/ModelRouter.js +0 -2
  123. package/dist/routing/ModelRouter.js.map +1 -1
  124. package/dist/skills/SkillDiscovery.js +8 -1
  125. package/dist/skills/SkillDiscovery.js.map +1 -1
  126. package/dist/tasks/TaskEngine.js +25 -5
  127. package/dist/tasks/TaskEngine.js.map +1 -1
  128. package/package.json +8 -2
@@ -24,3 +24,15 @@ export declare class RoleGateDetector implements IDetector {
24
24
  getRole(): RoleDefinition;
25
25
  check(input: ToolUseInput, _ctx: DetectorContext): Promise<DetectorResult>;
26
26
  }
27
+ export declare class ScopeCreepDetector implements IDetector {
28
+ name: string;
29
+ /** Max distinct files allowed per session before warning */
30
+ private maxFiles;
31
+ /** Window in ms to track file edits */
32
+ private windowMs;
33
+ constructor(opts?: {
34
+ maxFiles?: number;
35
+ windowMs?: number;
36
+ });
37
+ check(input: ToolUseInput, ctx: DetectorContext): Promise<DetectorResult>;
38
+ }
@@ -1,25 +1,27 @@
1
- // SCALE Engine — 危险命令检测 + Role 权限网关
2
- // W5 补充检测器
1
+ // SCALE Engine — 危险命令检测 + Role 权限网关 + ScopeCreep 检测
2
+ // W5 补充检测器 + 9th detector
3
3
  // 设计参考:docs/01-ARCHITECTURE.md §二 L2
4
4
  // ============================================================================
5
5
  // 6. 危险命令检测器
6
6
  // ============================================================================
7
7
  export class DangerousCommandDetector {
8
- name = 'dangerous-command';
9
- patterns = [
10
- { pattern: /rm\s+-rf\s+[\/~]/, description: 'rm -rf on root/home' },
11
- { pattern: /rm\s+-rf\s+\*/, description: 'rm -rf wildcard' },
12
- { pattern: /DROP\s+(TABLE|DATABASE|SCHEMA)/i, description: 'SQL DROP' },
13
- { pattern: /TRUNCATE\s+TABLE/i, description: 'SQL TRUNCATE' },
14
- { pattern: /DELETE\s+FROM\s+\w+\s*;/i, description: 'SQL DELETE without WHERE' },
15
- { pattern: /ALTER\s+TABLE\s+\w+\s+DROP/i, description: 'SQL ALTER DROP column' },
16
- { pattern: /curl\s+.*\|\s*(bash|sh)/i, description: 'curl pipe to shell' },
17
- { pattern: /chmod\s+777/, description: 'chmod 777' },
18
- { pattern: />\s*\/dev\/sda/, description: 'write to device' },
19
- { pattern: /mkfs\./, description: 'format filesystem' },
20
- { pattern: /:(){ :\|:& };:/, description: 'fork bomb' },
21
- { pattern: /dd\s+if=.*of=\/dev\//, description: 'dd to device' },
22
- ];
8
+ constructor() {
9
+ this.name = 'dangerous-command';
10
+ this.patterns = [
11
+ { pattern: /rm\s+-rf\s+[\/~]/, description: 'rm -rf on root/home' },
12
+ { pattern: /rm\s+-rf\s+\*/, description: 'rm -rf wildcard' },
13
+ { pattern: /DROP\s+(TABLE|DATABASE|SCHEMA)/i, description: 'SQL DROP' },
14
+ { pattern: /TRUNCATE\s+TABLE/i, description: 'SQL TRUNCATE' },
15
+ { pattern: /DELETE\s+FROM\s+\w+\s*;/i, description: 'SQL DELETE without WHERE' },
16
+ { pattern: /ALTER\s+TABLE\s+\w+\s+DROP/i, description: 'SQL ALTER DROP column' },
17
+ { pattern: /curl\s+.*\|\s*(bash|sh)/i, description: 'curl pipe to shell' },
18
+ { pattern: /chmod\s+777/, description: 'chmod 777' },
19
+ { pattern: />\s*\/dev\/sda/, description: 'write to device' },
20
+ { pattern: /mkfs\./, description: 'format filesystem' },
21
+ { pattern: /:(){ :\|:& };:/, description: 'fork bomb' },
22
+ { pattern: /dd\s+if=.*of=\/dev\//, description: 'dd to device' },
23
+ ];
24
+ }
23
25
  async check(input, ctx) {
24
26
  if (input.tool !== 'Bash')
25
27
  return { triggered: false };
@@ -47,15 +49,17 @@ export class DangerousCommandDetector {
47
49
  // 7. 密钥泄露检测器
48
50
  // ============================================================================
49
51
  export class SecretLeakDetector {
50
- name = 'secret-leak';
51
- patterns = [
52
- { pattern: /['"]?[A-Za-z0-9+\/]{40}['"]?/, description: 'possible API key (40 chars)' },
53
- { pattern: /AKIA[0-9A-Z]{16}/, description: 'AWS Access Key ID' },
54
- { pattern: /-----BEGIN (RSA |EC |DSA )?PRIVATE KEY-----/, description: 'Private key' },
55
- { pattern: /sk-[a-zA-Z0-9]{48}/, description: 'OpenAI API key' },
56
- { pattern: /ghp_[a-zA-Z0-9]{36}/, description: 'GitHub PAT' },
57
- { pattern: /password\s*[:=]\s*['"][^'"]{8,}['"]/, description: 'hardcoded password' },
58
- ];
52
+ constructor() {
53
+ this.name = 'secret-leak';
54
+ this.patterns = [
55
+ { pattern: /['"]?[A-Za-z0-9+\/]{40}['"]?/, description: 'possible API key (40 chars)' },
56
+ { pattern: /AKIA[0-9A-Z]{16}/, description: 'AWS Access Key ID' },
57
+ { pattern: /-----BEGIN (RSA |EC |DSA )?PRIVATE KEY-----/, description: 'Private key' },
58
+ { pattern: /sk-[a-zA-Z0-9]{48}/, description: 'OpenAI API key' },
59
+ { pattern: /ghp_[a-zA-Z0-9]{36}/, description: 'GitHub PAT' },
60
+ { pattern: /password\s*[:=]\s*['"][^'"]{8,}['"]/, description: 'hardcoded password' },
61
+ ];
62
+ }
59
63
  async check(input, ctx) {
60
64
  if (!['Edit', 'Write', 'MultiEdit'].includes(input.tool))
61
65
  return { triggered: false };
@@ -104,8 +108,10 @@ export const BUILT_IN_ROLES = {
104
108
  },
105
109
  };
106
110
  export class RoleGateDetector {
107
- name = 'role-gate';
108
- currentRole = BUILT_IN_ROLES.implementer;
111
+ constructor() {
112
+ this.name = 'role-gate';
113
+ this.currentRole = BUILT_IN_ROLES.implementer;
114
+ }
109
115
  setRole(role) {
110
116
  this.currentRole = role;
111
117
  }
@@ -135,4 +141,48 @@ export class RoleGateDetector {
135
141
  return { triggered: false };
136
142
  }
137
143
  }
144
+ // ============================================================================
145
+ // 9. ScopeCreep 检测器
146
+ // ============================================================================
147
+ export class ScopeCreepDetector {
148
+ constructor(opts = {}) {
149
+ this.name = 'scope-creep';
150
+ this.maxFiles = opts.maxFiles ?? 15;
151
+ this.windowMs = opts.windowMs ?? 10 * 60 * 1000; // 10 minutes
152
+ }
153
+ async check(input, ctx) {
154
+ if (!['Edit', 'Write', 'MultiEdit'].includes(input.tool))
155
+ return { triggered: false };
156
+ const file = input.args.file_path;
157
+ if (!file)
158
+ return { triggered: false };
159
+ const key = `scope-creep:${input.sessionId}`;
160
+ const record = ctx.cache.get(key)
161
+ ?? { files: new Set(), timestamps: [] };
162
+ const now = Date.now();
163
+ // Prune old timestamps outside window
164
+ record.timestamps = record.timestamps.filter((t) => now - t < this.windowMs);
165
+ // Track new file
166
+ const isNew = !record.files.has(file);
167
+ record.files.add(file);
168
+ record.timestamps.push(now);
169
+ ctx.cache.set(key, record);
170
+ // Only warn when a NEW file is added and we exceed the threshold
171
+ if (isNew && record.files.size > this.maxFiles) {
172
+ ctx.eventBus.emit('tool.blocked', {
173
+ tool: input.tool,
174
+ detector: this.name,
175
+ reason: `scope_creep:${record.files.size}_files`,
176
+ file,
177
+ }, { sessionId: input.sessionId });
178
+ return {
179
+ triggered: true,
180
+ severity: 'warn',
181
+ reason: `⚠️ 检测到「范围蔓延」:本会话已编辑 ${record.files.size} 个不同文件(阈值 ${this.maxFiles})。请确认这些修改都在当前任务范围内,而非越界修改。`,
182
+ suggestion: '请检查是否偏离了原始任务范围。考虑收窄修改范围或拆分为多个任务。',
183
+ };
184
+ }
185
+ return { triggered: false };
186
+ }
187
+ }
138
188
  //# sourceMappingURL=advancedDetectors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"advancedDetectors.js","sourceRoot":"","sources":["../../src/guardrails/advancedDetectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advancedDetectors.js","sourceRoot":"","sources":["../../src/guardrails/advancedDetectors.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,11 @@ import { createHash } from 'node:crypto';
4
4
  const hashArgs = (args) => createHash('md5').update(JSON.stringify(args)).digest('hex').slice(0, 8);
5
5
  // 1. 暴力重试检测
6
6
  export class BruteRetryDetector {
7
- name = 'brute-retry';
8
- windowMs = 3 * 60 * 1000;
9
- threshold = 3;
7
+ constructor() {
8
+ this.name = 'brute-retry';
9
+ this.windowMs = 3 * 60 * 1000;
10
+ this.threshold = 3;
11
+ }
10
12
  async check(input, ctx) {
11
13
  const key = `${input.sessionId}:${input.tool}:${hashArgs(input.args)}`;
12
14
  const history = ctx.cache.get(key) ?? [];
@@ -26,7 +28,9 @@ export class BruteRetryDetector {
26
28
  }
27
29
  // 2. 工具闲置检测
28
30
  export class IdleToolDetector {
29
- name = 'idle-tool';
31
+ constructor() {
32
+ this.name = 'idle-tool';
33
+ }
30
34
  async check(input, ctx) {
31
35
  if (!['Edit', 'Write', 'MultiEdit'].includes(input.tool))
32
36
  return { triggered: false };
@@ -55,7 +59,9 @@ export class IdleToolDetector {
55
59
  }
56
60
  // 3. 忙碌假象(来回反复修改同一文件)
57
61
  export class BusyLoopDetector {
58
- name = 'busy-loop';
62
+ constructor() {
63
+ this.name = 'busy-loop';
64
+ }
59
65
  async check(input, ctx) {
60
66
  if (input.tool !== 'Edit')
61
67
  return { triggered: false };
@@ -98,7 +104,9 @@ export class BusyLoopDetector {
98
104
  }
99
105
  // 4. 声称完成但未验证
100
106
  export class PrematureDoneDetector {
101
- name = 'premature-done';
107
+ constructor() {
108
+ this.name = 'premature-done';
109
+ }
102
110
  async check(input, ctx) {
103
111
  const edits = await ctx.eventBus.query({
104
112
  sessionId: input.sessionId,
@@ -138,14 +146,16 @@ export class PrematureDoneDetector {
138
146
  }
139
147
  // 5. 甩锅检测
140
148
  export class BlameShiftDetector {
141
- name = 'blame-shift';
142
- patterns = [
143
- /可能是环境问题/i,
144
- /建议你?手动/i,
145
- /maybe (an?|the) (environment|version|setup)/i,
146
- /not sure why/i,
147
- /unable to (determine|figure out|resolve)/i,
148
- ];
149
+ constructor() {
150
+ this.name = 'blame-shift';
151
+ this.patterns = [
152
+ /可能是环境问题/i,
153
+ /建议你?手动/i,
154
+ /maybe (an?|the) (environment|version|setup)/i,
155
+ /not sure why/i,
156
+ /unable to (determine|figure out|resolve)/i,
157
+ ];
158
+ }
149
159
  async check(input, ctx) {
150
160
  const text = input.output ?? '';
151
161
  if (!this.patterns.some((p) => p.test(text)))
@@ -1 +1 @@
1
- {"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../src/guardrails/detectors.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,oCAAoC;AAIpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAU,EAAE,CACzC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAE1E,YAAY;AACZ,MAAM,OAAO,kBAAkB;IAC7B,IAAI,GAAG,aAAa,CAAA;IACZ,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;IACxB,SAAS,GAAG,CAAC,CAAA;IAErB,KAAK,CAAC,KAAK,CAAC,KAAmB,EAAE,GAAoB;QACnD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;QACtE,MAAM,OAAO,GAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAA0B,IAAI,EAAE,CAAA;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACvB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC1B,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;YACrH,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,aAAa,KAAK,CAAC,IAAI,MAAM,IAAI,CAAC,QAAQ,GAAG,KAAK,WAAW,MAAM,CAAC,MAAM,wBAAwB;aAC3G,CAAA;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC7B,CAAC;CACF;AAED,YAAY;AACZ,MAAM,OAAO,gBAAgB;IAC3B,IAAI,GAAG,WAAW,CAAA;IAElB,KAAK,CAAC,KAAK,CAAC,KAAmB,EAAE,GAAoB;QACnD,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QACrF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;YACxC,KAAK,EAAE,EAAE;SACV,CAAC,CAAA;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;QACpE,IAAI,UAAU,GAAG,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;QACzC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAE,CAAC,CAAC,OAA4B,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;YAC7F,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,4DAA4D;gBACpE,UAAU,EAAE,uDAAuD;aACpE,CAAA;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC7B,CAAC;CACF;AAED,sBAAsB;AACtB,MAAM,OAAO,gBAAgB;IAC3B,IAAI,GAAG,WAAW,CAAA;IAElB,KAAK,CAAC,KAAK,CAAC,KAAmB,EAAE,GAAoB;QACnD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QACtD,MAAM,IAAI,GAAI,KAAK,CAAC,IAA+B,CAAC,SAAS,CAAA;QAC7D,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QACtC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,CAAC,gBAAgB,CAAC;YACzB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,CAAC,OAAyD,CAAA;gBACrE,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAA;YACvD,CAAC;YACD,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;QACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9B,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAiE,CAAA;YAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACxF,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACxF,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;gBAAC,KAAK,GAAG,IAAI,CAAC;gBAAC,MAAK;YAAC,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;QAC7B,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;YACjF,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,gBAAgB,IAAI,oCAAoC;aACjE,CAAA;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC7B,CAAC;CACF;AAED,cAAc;AACd,MAAM,OAAO,qBAAqB;IAChC,IAAI,GAAG,gBAAgB,CAAA;IAEvB,KAAK,CAAC,KAAK,CAAC,KAAgB,EAAE,GAAoB;QAChD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,CAAC,gBAAgB,CAAC;YACzB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAE,CAAC,CAAC,OAA4B,CAAC,IAAI,CAAC;SAC7F,CAAC,CAAA;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QACnD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,CAAC,gBAAgB,CAAC;YACzB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,CAAC,OAAuD,CAAA;gBACnE,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;YACrF,CAAC;SACF,CAAC,CAAA;QACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;YAC3G,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,yDAAyD;gBACjE,UAAU,EAAE,2CAA2C;aACxD,CAAA;QACH,CAAC;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,UAAU,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC9C,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,+BAA+B;aACxC,CAAA;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC7B,CAAC;CACF;AAED,UAAU;AACV,MAAM,OAAO,kBAAkB;IAC7B,IAAI,GAAG,aAAa,CAAA;IACZ,QAAQ,GAAG;QACjB,UAAU;QACV,SAAS;QACT,8CAA8C;QAC9C,eAAe;QACf,2CAA2C;KAC5C,CAAA;IAED,KAAK,CAAC,KAAK,CAAC,KAAsB,EAAE,GAAoB;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QACzE,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,CAAC,gBAAgB,CAAC;YACzB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,OAA4B,CAAC,IAAI,KAAK,MAAM;YAC9D,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;QACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;YACzG,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,uEAAuE;aAChF,CAAA;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../src/guardrails/detectors.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,17 +8,28 @@ export { Container, container, createToken } from './core/container.js';
8
8
  export { logger } from './core/logger.js';
9
9
  export { TaskEngine } from './tasks/TaskEngine.js';
10
10
  export { KnowledgeBase } from './knowledge/KnowledgeBase.js';
11
+ export { SQLiteKnowledgeBase } from './knowledge/SQLiteKnowledgeBase.js';
12
+ export type { IKnowledgeBase } from './knowledge/KnowledgeBase.js';
11
13
  export { BehaviorTracker } from './evolution/BehaviorTracker.js';
12
14
  export { LessonExtractor, RuleProposer, HookGenerator, EvolutionEngine } from './evolution/EvolutionEngine.js';
13
15
  export { Gateway } from './guardrails/Gateway.js';
14
16
  export { ROLES, getRole, listRoles } from './guardrails/roles.js';
15
17
  export { BruteRetryDetector, IdleToolDetector, BusyLoopDetector, PrematureDoneDetector, BlameShiftDetector, } from './guardrails/detectors.js';
18
+ export { DangerousCommandDetector, SecretLeakDetector, RoleGateDetector, ScopeCreepDetector, BUILT_IN_ROLES, } from './guardrails/advancedDetectors.js';
16
19
  export { ContextBuilder } from './context/ContextBuilder.js';
17
20
  export { wireEffects } from './orchestration/EffectsWiring.js';
18
21
  export { ModelRouter, DEFAULT_MODELS } from './routing/ModelRouter.js';
19
- export { ClaudeCodeAdapter, CodexAdapter, OpenCodeAdapter, CursorAdapter, GeminiAdapter, OpenClawAdapter, HermesAdapter, createAdapter, SUPPORTED_AGENTS, } from './adapters/index.js';
22
+ export { ClaudeCodeAdapter, CodexAdapter, OpenCodeAdapter, CursorAdapter, GeminiAdapter, OpenClawAdapter, HermesAdapter, TraeAdapter, WorkBuddyAdapter, VSCAdapter, QCoderAdapter, createAdapter, SUPPORTED_AGENTS, } from './adapters/index.js';
20
23
  export type { IAgentAdapter, AdapterConfig, InitResult, SettingsJson, HookEntry } from './adapters/ClaudeCodeAdapter.js';
21
24
  export { SkillDiscovery } from './skills/SkillDiscovery.js';
22
25
  export { WORKFLOW_PRESETS, getWorkflowPreset, listWorkflowPresets, getPresetsByScenario, BASIC_DEV, TDD_DEV, BUG_FIX, SDD, CODE_REVIEW, SECURITY_AUDIT, RALPH_LOOP, RAPID_PROTO, MASSIVE_REFACTOR, PARALLEL_EXEC, } from './workflows/presets.js';
26
+ export { AgentManager, initializeAgentManager, registerAllAgents, ALL_AGENTS, AGENT_MANAGER_TOKEN, } from './agents/index.js';
27
+ export type { IAgentManager, IAgent, AgentDefinition, AgentTaskContext, AgentResult, AgentCapability, } from './agents/index.js';
28
+ export { PatternExtractor } from './evolution/PatternExtractor.js';
29
+ export type { Pattern, PatternStep, IPatternExtractor } from './evolution/PatternExtractor.js';
30
+ export { SkillCreator } from './evolution/SkillCreator.js';
31
+ export type { SkillProposal, SkillStep, ISkillCreator } from './evolution/SkillCreator.js';
32
+ export { DashboardServer } from './dashboard/index.js';
33
+ export type { DashboardConfig, DashboardData } from './dashboard/index.js';
23
34
  export { Doctor } from './api/doctor.js';
24
35
  export { ScaleMCPServer } from './api/mcp.js';
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ export { logger } from './core/logger.js';
14
14
  export { TaskEngine } from './tasks/TaskEngine.js';
15
15
  // Knowledge Base
16
16
  export { KnowledgeBase } from './knowledge/KnowledgeBase.js';
17
+ export { SQLiteKnowledgeBase } from './knowledge/SQLiteKnowledgeBase.js';
17
18
  // Evolution
18
19
  export { BehaviorTracker } from './evolution/BehaviorTracker.js';
19
20
  export { LessonExtractor, RuleProposer, HookGenerator, EvolutionEngine } from './evolution/EvolutionEngine.js';
@@ -21,18 +22,26 @@ export { LessonExtractor, RuleProposer, HookGenerator, EvolutionEngine } from '.
21
22
  export { Gateway } from './guardrails/Gateway.js';
22
23
  export { ROLES, getRole, listRoles } from './guardrails/roles.js';
23
24
  export { BruteRetryDetector, IdleToolDetector, BusyLoopDetector, PrematureDoneDetector, BlameShiftDetector, } from './guardrails/detectors.js';
25
+ export { DangerousCommandDetector, SecretLeakDetector, RoleGateDetector, ScopeCreepDetector, BUILT_IN_ROLES, } from './guardrails/advancedDetectors.js';
24
26
  // Context
25
27
  export { ContextBuilder } from './context/ContextBuilder.js';
26
28
  // Orchestration
27
29
  export { wireEffects } from './orchestration/EffectsWiring.js';
28
30
  // Routing
29
31
  export { ModelRouter, DEFAULT_MODELS } from './routing/ModelRouter.js';
30
- // Adapters (all 7 platforms)
31
- export { ClaudeCodeAdapter, CodexAdapter, OpenCodeAdapter, CursorAdapter, GeminiAdapter, OpenClawAdapter, HermesAdapter, createAdapter, SUPPORTED_AGENTS, } from './adapters/index.js';
32
+ // Adapters (all 11 platforms)
33
+ export { ClaudeCodeAdapter, CodexAdapter, OpenCodeAdapter, CursorAdapter, GeminiAdapter, OpenClawAdapter, HermesAdapter, TraeAdapter, WorkBuddyAdapter, VSCAdapter, QCoderAdapter, createAdapter, SUPPORTED_AGENTS, } from './adapters/index.js';
32
34
  // Skill Discovery
33
35
  export { SkillDiscovery } from './skills/SkillDiscovery.js';
34
36
  // Workflow Presets
35
37
  export { WORKFLOW_PRESETS, getWorkflowPreset, listWorkflowPresets, getPresetsByScenario, BASIC_DEV, TDD_DEV, BUG_FIX, SDD, CODE_REVIEW, SECURITY_AUDIT, RALPH_LOOP, RAPID_PROTO, MASSIVE_REFACTOR, PARALLEL_EXEC, } from './workflows/presets.js';
38
+ // Agents (Phase 1)
39
+ export { AgentManager, initializeAgentManager, registerAllAgents, ALL_AGENTS, AGENT_MANAGER_TOKEN, } from './agents/index.js';
40
+ // Evolution Positive Learning (Phase 4)
41
+ export { PatternExtractor } from './evolution/PatternExtractor.js';
42
+ export { SkillCreator } from './evolution/SkillCreator.js';
43
+ // Dashboard (Phase 7)
44
+ export { DashboardServer } from './dashboard/index.js';
36
45
  // API
37
46
  export { Doctor } from './api/doctor.js';
38
47
  export { ScaleMCPServer } from './api/mcp.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,oEAAoE;AAEpE,aAAa;AACb,cAAc,qBAAqB,CAAA;AAEnC,MAAM;AACN,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,iBAAiB;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAG3D,sBAAsB;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAE5D,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAE9G,aAAa;AACb,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EACL,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EACtD,qBAAqB,EAAE,kBAAkB,GAC1C,MAAM,2BAA2B,CAAA;AAElC,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAE9D,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEtE,6BAA6B;AAC7B,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAA;AAG5B,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,mBAAmB;AACnB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,OAAO,EACP,OAAO,EACP,GAAG,EACH,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,aAAa,GACd,MAAM,wBAAwB,CAAA;AAE/B,MAAM;AACN,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,oEAAoE;AAEpE,aAAa;AACb,cAAc,qBAAqB,CAAA;AAEnC,MAAM;AACN,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,iBAAiB;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAG3D,sBAAsB;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAGxE,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAE9G,aAAa;AACb,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EACL,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EACtD,qBAAqB,EAAE,kBAAkB,GAC1C,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,wBAAwB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAClF,cAAc,GACf,MAAM,mCAAmC,CAAA;AAE1C,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAE9D,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEtE,8BAA8B;AAC9B,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAA;AAG5B,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,mBAAmB;AACnB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,OAAO,EACP,OAAO,EACP,GAAG,EACH,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,aAAa,GACd,MAAM,wBAAwB,CAAA;AAE/B,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAU1B,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAG1D,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,MAAM;AACN,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA"}
@@ -2,11 +2,10 @@
2
2
  // 设计参考:docs/03-CORE-MODULES.md §3.4
3
3
  import { logger } from '../core/logger.js';
4
4
  export class KnowledgeBase {
5
- eventBus;
6
- entries = new Map();
7
- seq = 0;
8
5
  constructor(eventBus) {
9
6
  this.eventBus = eventBus;
7
+ this.entries = new Map();
8
+ this.seq = 0;
10
9
  }
11
10
  async add(input) {
12
11
  const entry = {
@@ -1 +1 @@
1
- {"version":3,"file":"KnowledgeBase.js","sourceRoot":"","sources":["../../src/knowledge/KnowledgeBase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KnowledgeBase.js","sourceRoot":"","sources":["../../src/knowledge/KnowledgeBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { KnowledgeEntry, KnowledgeQuery } from '../artifact/types.js';
2
+ import type { IEventBus } from '../core/eventBus.js';
3
+ import type { IKnowledgeBase } from './KnowledgeBase.js';
4
+ export declare class SQLiteKnowledgeBase implements IKnowledgeBase {
5
+ private eventBus;
6
+ private db;
7
+ private seq;
8
+ constructor(eventBus: IEventBus, opts?: {
9
+ dbPath?: string;
10
+ });
11
+ add(input: Omit<KnowledgeEntry, 'id' | 'createdAt' | 'accessCount' | 'relevance'>): Promise<KnowledgeEntry>;
12
+ recall(query: KnowledgeQuery): Promise<KnowledgeEntry[]>;
13
+ recallByVector(text: string, topK: number): Promise<KnowledgeEntry[]>;
14
+ markHelpful(id: string, sessionId: string): Promise<void>;
15
+ markUseless(id: string, sessionId: string): Promise<void>;
16
+ verify(id: string, verifiedBy: string): Promise<void>;
17
+ decay(): Promise<void>;
18
+ /** Close database connection */
19
+ close(): void;
20
+ /** Get stats */
21
+ stats(): {
22
+ entryCount: number;
23
+ verifiedCount: number;
24
+ byType: Record<string, number>;
25
+ };
26
+ private generateId;
27
+ private fromRow;
28
+ }
@@ -0,0 +1,175 @@
1
+ // SCALE Engine — SQLite Knowledge Base
2
+ // Persistent version of KnowledgeBase using better-sqlite3
3
+ // Design ref: docs/03-CORE-MODULES.md §3.4
4
+ import Database from 'better-sqlite3';
5
+ import { logger } from '../core/logger.js';
6
+ import { mkdirSync } from 'node:fs';
7
+ import { dirname } from 'node:path';
8
+ const KB_SCHEMA = `
9
+ CREATE TABLE IF NOT EXISTS knowledge_entries (
10
+ id TEXT PRIMARY KEY,
11
+ type TEXT NOT NULL,
12
+ title TEXT NOT NULL,
13
+ tags TEXT NOT NULL DEFAULT '[]',
14
+ content_ref TEXT NOT NULL DEFAULT '',
15
+ embedding_id TEXT,
16
+ relevance REAL NOT NULL DEFAULT 0.5,
17
+ access_count INTEGER NOT NULL DEFAULT 0,
18
+ last_accessed INTEGER,
19
+ verified INTEGER NOT NULL DEFAULT 0,
20
+ verified_by TEXT,
21
+ verified_at INTEGER,
22
+ created_at INTEGER NOT NULL,
23
+ source_artifact TEXT
24
+ );
25
+
26
+ CREATE INDEX IF NOT EXISTS idx_kb_type ON knowledge_entries(type);
27
+ CREATE INDEX IF NOT EXISTS idx_kb_relevance ON knowledge_entries(relevance);
28
+ CREATE INDEX IF NOT EXISTS idx_kb_verified ON knowledge_entries(verified);
29
+ CREATE INDEX IF NOT EXISTS idx_kb_created ON knowledge_entries(created_at);
30
+ `;
31
+ export class SQLiteKnowledgeBase {
32
+ constructor(eventBus, opts = {}) {
33
+ this.eventBus = eventBus;
34
+ this.seq = 0;
35
+ const dbPath = opts.dbPath ?? '.scale/knowledge.db';
36
+ mkdirSync(dirname(dbPath), { recursive: true });
37
+ this.db = new Database(dbPath);
38
+ this.db.pragma('journal_mode = WAL');
39
+ this.db.pragma('busy_timeout = 5000');
40
+ this.db.exec(KB_SCHEMA);
41
+ // Restore seq from max id
42
+ const maxRow = this.db.prepare('SELECT id FROM knowledge_entries ORDER BY created_at DESC LIMIT 1').get();
43
+ if (maxRow) {
44
+ const parts = maxRow.id.split('-');
45
+ this.seq = parseInt(parts[parts.length - 1], 10) || 0;
46
+ }
47
+ }
48
+ async add(input) {
49
+ const entry = {
50
+ ...input,
51
+ id: this.generateId(),
52
+ createdAt: Date.now(),
53
+ accessCount: 0,
54
+ relevance: 0.5,
55
+ };
56
+ this.db.prepare(`
57
+ INSERT INTO knowledge_entries
58
+ (id, type, title, tags, content_ref, embedding_id, relevance,
59
+ access_count, last_accessed, verified, verified_by, verified_at,
60
+ created_at, source_artifact)
61
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
62
+ `).run(entry.id, entry.type, entry.title, JSON.stringify(entry.tags), entry.contentRef, entry.embeddingId ?? null, entry.relevance, entry.accessCount, entry.lastAccessed ?? null, entry.verified ? 1 : 0, entry.verifiedBy ?? null, entry.verifiedAt ?? null, entry.createdAt, entry.sourceArtifact ?? null);
63
+ this.eventBus.emit('lesson.proposed', { lessonId: entry.id }, { artifactId: input.sourceArtifact });
64
+ return entry;
65
+ }
66
+ async recall(query) {
67
+ const conditions = ['1=1'];
68
+ const params = [];
69
+ if (query.type) {
70
+ const types = Array.isArray(query.type) ? query.type : [query.type];
71
+ conditions.push(`type IN (${types.map(() => '?').join(',')})`);
72
+ params.push(...types);
73
+ }
74
+ if (query.tags && query.tags.length > 0) {
75
+ for (const tag of query.tags) {
76
+ conditions.push(`tags LIKE ?`);
77
+ params.push(`%"${tag}"%`);
78
+ }
79
+ }
80
+ if (query.minRelevance !== undefined) {
81
+ conditions.push('relevance >= ?');
82
+ params.push(query.minRelevance);
83
+ }
84
+ if (query.verifiedOnly) {
85
+ conditions.push('verified = 1');
86
+ }
87
+ const limit = query.limit ?? 10;
88
+ const sql = `SELECT * FROM knowledge_entries WHERE ${conditions.join(' AND ')} ORDER BY relevance DESC LIMIT ?`;
89
+ params.push(limit);
90
+ const rows = this.db.prepare(sql).all(...params);
91
+ return rows.map((r) => this.fromRow(r));
92
+ }
93
+ async recallByVector(text, topK) {
94
+ // Qdrant integration placeholder — falls back to recall
95
+ logger.debug({ text, topK }, 'recallByVector (SQLite fallback to recall)');
96
+ return this.recall({ verifiedOnly: true, limit: topK });
97
+ }
98
+ async markHelpful(id, sessionId) {
99
+ const row = this.db.prepare('SELECT * FROM knowledge_entries WHERE id = ?').get(id);
100
+ if (!row)
101
+ return;
102
+ const newRelevance = Math.min(1, row.relevance + 0.05);
103
+ const newCount = row.access_count + 1;
104
+ const now = Date.now();
105
+ this.db.prepare('UPDATE knowledge_entries SET relevance = ?, access_count = ?, last_accessed = ? WHERE id = ?').run(newRelevance, newCount, now, id);
106
+ this.eventBus.emit('lesson.helpful', { lessonId: id }, { sessionId });
107
+ }
108
+ async markUseless(id, sessionId) {
109
+ const row = this.db.prepare('SELECT * FROM knowledge_entries WHERE id = ?').get(id);
110
+ if (!row)
111
+ return;
112
+ const newRelevance = Math.max(0.05, row.relevance - 0.1);
113
+ this.db.prepare('UPDATE knowledge_entries SET relevance = ? WHERE id = ?').run(newRelevance, id);
114
+ this.eventBus.emit('lesson.useless', { lessonId: id }, { sessionId });
115
+ }
116
+ async verify(id, verifiedBy) {
117
+ const now = Date.now();
118
+ const result = this.db.prepare('UPDATE knowledge_entries SET verified = 1, verified_by = ?, verified_at = ? WHERE id = ?').run(verifiedBy, now, id);
119
+ if (result.changes > 0) {
120
+ this.eventBus.emit('lesson.approved', { lessonId: id, verifiedBy });
121
+ }
122
+ }
123
+ async decay() {
124
+ const DAY = 24 * 60 * 60 * 1000;
125
+ const now = Date.now();
126
+ const rows = this.db.prepare('SELECT id, relevance, last_accessed FROM knowledge_entries').all();
127
+ const stmt = this.db.prepare('UPDATE knowledge_entries SET relevance = ? WHERE id = ?');
128
+ const updateAll = this.db.transaction(() => {
129
+ for (const row of rows) {
130
+ const days = row.last_accessed ? (now - row.last_accessed) / DAY : 90;
131
+ const recency = Math.exp(-days / 30);
132
+ const newRelevance = Math.max(0.05, row.relevance * 0.95 + recency * 0.05);
133
+ stmt.run(newRelevance, row.id);
134
+ }
135
+ });
136
+ updateAll();
137
+ }
138
+ /** Close database connection */
139
+ close() {
140
+ this.db.close();
141
+ }
142
+ /** Get stats */
143
+ stats() {
144
+ const entryCount = this.db.prepare('SELECT COUNT(*) as c FROM knowledge_entries').get().c;
145
+ const verifiedCount = this.db.prepare('SELECT COUNT(*) as c FROM knowledge_entries WHERE verified = 1').get().c;
146
+ const rows = this.db.prepare('SELECT type, COUNT(*) as c FROM knowledge_entries GROUP BY type').all();
147
+ const byType = {};
148
+ for (const r of rows)
149
+ byType[r.type] = r.c;
150
+ return { entryCount, verifiedCount, byType };
151
+ }
152
+ generateId() {
153
+ this.seq = (this.seq + 1) % 10000;
154
+ return `KB-${Date.now()}-${this.seq.toString().padStart(4, '0')}`;
155
+ }
156
+ fromRow(row) {
157
+ return {
158
+ id: row.id,
159
+ type: row.type,
160
+ title: row.title,
161
+ tags: JSON.parse(row.tags),
162
+ contentRef: row.content_ref,
163
+ embeddingId: row.embedding_id ?? undefined,
164
+ relevance: row.relevance,
165
+ accessCount: row.access_count,
166
+ lastAccessed: row.last_accessed ?? undefined,
167
+ verified: row.verified === 1,
168
+ verifiedBy: row.verified_by ?? undefined,
169
+ verifiedAt: row.verified_at ?? undefined,
170
+ createdAt: row.created_at,
171
+ sourceArtifact: row.source_artifact ?? undefined,
172
+ };
173
+ }
174
+ }
175
+ //# sourceMappingURL=SQLiteKnowledgeBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLiteKnowledgeBase.js","sourceRoot":"","sources":["../../src/knowledge/SQLiteKnowledgeBase.ts"],"names":[],"mappings":"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"}