@tienne/gestalt 0.12.3 → 0.14.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 (249) hide show
  1. package/README.ko.md +51 -1
  2. package/README.md +51 -1
  3. package/dist/package.json +5 -1
  4. package/dist/schemas/gestalt.schema.json +41 -3
  5. package/dist/skills/interview/SKILL.md +18 -1
  6. package/dist/src/agent/passthrough-generator.d.ts.map +1 -1
  7. package/dist/src/agent/passthrough-generator.js +3 -1
  8. package/dist/src/agent/passthrough-generator.js.map +1 -1
  9. package/dist/src/agent/role-agent-registry.d.ts.map +1 -1
  10. package/dist/src/agent/role-agent-registry.js.map +1 -1
  11. package/dist/src/agent/role-match-engine.d.ts.map +1 -1
  12. package/dist/src/agent/role-match-engine.js.map +1 -1
  13. package/dist/src/cli/commands/graph-visualize.d.ts.map +1 -1
  14. package/dist/src/cli/commands/graph-visualize.js +3 -1
  15. package/dist/src/cli/commands/graph-visualize.js.map +1 -1
  16. package/dist/src/cli/commands/init.d.ts.map +1 -1
  17. package/dist/src/cli/commands/init.js.map +1 -1
  18. package/dist/src/cli/commands/interview.d.ts.map +1 -1
  19. package/dist/src/cli/commands/interview.js +2 -2
  20. package/dist/src/cli/commands/interview.js.map +1 -1
  21. package/dist/src/cli/commands/spec.d.ts.map +1 -1
  22. package/dist/src/cli/commands/spec.js +2 -2
  23. package/dist/src/cli/commands/spec.js.map +1 -1
  24. package/dist/src/cli/commands/status.d.ts.map +1 -1
  25. package/dist/src/cli/commands/status.js.map +1 -1
  26. package/dist/src/cli/index.d.ts.map +1 -1
  27. package/dist/src/cli/index.js.map +1 -1
  28. package/dist/src/code-graph/engine.d.ts.map +1 -1
  29. package/dist/src/code-graph/engine.js +16 -13
  30. package/dist/src/code-graph/engine.js.map +1 -1
  31. package/dist/src/code-graph/plugins/go.d.ts.map +1 -1
  32. package/dist/src/code-graph/plugins/go.js +28 -4
  33. package/dist/src/code-graph/plugins/go.js.map +1 -1
  34. package/dist/src/code-graph/plugins/java.d.ts.map +1 -1
  35. package/dist/src/code-graph/plugins/java.js +63 -11
  36. package/dist/src/code-graph/plugins/java.js.map +1 -1
  37. package/dist/src/code-graph/plugins/kotlin.d.ts.map +1 -1
  38. package/dist/src/code-graph/plugins/kotlin.js +50 -7
  39. package/dist/src/code-graph/plugins/kotlin.js.map +1 -1
  40. package/dist/src/code-graph/plugins/objc.d.ts.map +1 -1
  41. package/dist/src/code-graph/plugins/objc.js +70 -12
  42. package/dist/src/code-graph/plugins/objc.js.map +1 -1
  43. package/dist/src/code-graph/plugins/python.d.ts.map +1 -1
  44. package/dist/src/code-graph/plugins/python.js +28 -4
  45. package/dist/src/code-graph/plugins/python.js.map +1 -1
  46. package/dist/src/code-graph/plugins/rust.d.ts.map +1 -1
  47. package/dist/src/code-graph/plugins/rust.js +72 -12
  48. package/dist/src/code-graph/plugins/rust.js.map +1 -1
  49. package/dist/src/code-graph/plugins/swift.d.ts.map +1 -1
  50. package/dist/src/code-graph/plugins/swift.js +62 -8
  51. package/dist/src/code-graph/plugins/swift.js.map +1 -1
  52. package/dist/src/code-graph/plugins/typescript.d.ts.map +1 -1
  53. package/dist/src/code-graph/plugins/typescript.js +2 -2
  54. package/dist/src/code-graph/plugins/typescript.js.map +1 -1
  55. package/dist/src/code-graph/providers/local-embedding.js +1 -1
  56. package/dist/src/code-graph/providers/local-embedding.js.map +1 -1
  57. package/dist/src/code-graph/storage.d.ts.map +1 -1
  58. package/dist/src/code-graph/storage.js +1 -3
  59. package/dist/src/code-graph/storage.js.map +1 -1
  60. package/dist/src/core/config.d.ts +138 -1
  61. package/dist/src/core/config.d.ts.map +1 -1
  62. package/dist/src/core/config.js +36 -3
  63. package/dist/src/core/config.js.map +1 -1
  64. package/dist/src/core/constants.d.ts.map +1 -1
  65. package/dist/src/core/constants.js +6 -6
  66. package/dist/src/core/constants.js.map +1 -1
  67. package/dist/src/core/result.d.ts.map +1 -1
  68. package/dist/src/core/result.js.map +1 -1
  69. package/dist/src/core/types.d.ts.map +1 -1
  70. package/dist/src/execute/audit-engine.d.ts.map +1 -1
  71. package/dist/src/execute/audit-engine.js +1 -3
  72. package/dist/src/execute/audit-engine.js.map +1 -1
  73. package/dist/src/execute/dag-validator.d.ts.map +1 -1
  74. package/dist/src/execute/dag-validator.js.map +1 -1
  75. package/dist/src/execute/parallel-groups.d.ts.map +1 -1
  76. package/dist/src/execute/parallel-groups.js.map +1 -1
  77. package/dist/src/execute/passthrough-engine.d.ts.map +1 -1
  78. package/dist/src/execute/passthrough-engine.js +34 -14
  79. package/dist/src/execute/passthrough-engine.js.map +1 -1
  80. package/dist/src/execute/prompts.d.ts.map +1 -1
  81. package/dist/src/execute/prompts.js +2 -4
  82. package/dist/src/execute/prompts.js.map +1 -1
  83. package/dist/src/execute/repository.d.ts.map +1 -1
  84. package/dist/src/execute/repository.js.map +1 -1
  85. package/dist/src/execute/session.d.ts.map +1 -1
  86. package/dist/src/execute/session.js +2 -1
  87. package/dist/src/execute/session.js.map +1 -1
  88. package/dist/src/execute/termination-detector.d.ts.map +1 -1
  89. package/dist/src/execute/termination-detector.js +3 -2
  90. package/dist/src/execute/termination-detector.js.map +1 -1
  91. package/dist/src/gestalt/analyzer.d.ts.map +1 -1
  92. package/dist/src/gestalt/analyzer.js +1 -2
  93. package/dist/src/gestalt/analyzer.js.map +1 -1
  94. package/dist/src/gestalt/principles.d.ts.map +1 -1
  95. package/dist/src/gestalt/principles.js +1 -3
  96. package/dist/src/gestalt/principles.js.map +1 -1
  97. package/dist/src/interview/engine.d.ts.map +1 -1
  98. package/dist/src/interview/engine.js +4 -1
  99. package/dist/src/interview/engine.js.map +1 -1
  100. package/dist/src/interview/mini-interview-engine.d.ts.map +1 -1
  101. package/dist/src/interview/mini-interview-engine.js +1 -3
  102. package/dist/src/interview/mini-interview-engine.js.map +1 -1
  103. package/dist/src/interview/passthrough-engine.d.ts.map +1 -1
  104. package/dist/src/interview/passthrough-engine.js +7 -3
  105. package/dist/src/interview/passthrough-engine.js.map +1 -1
  106. package/dist/src/interview/repository.d.ts.map +1 -1
  107. package/dist/src/interview/repository.js.map +1 -1
  108. package/dist/src/interview/resolution.js +1 -3
  109. package/dist/src/interview/resolution.js.map +1 -1
  110. package/dist/src/interview/session.d.ts.map +1 -1
  111. package/dist/src/interview/session.js.map +1 -1
  112. package/dist/src/knowledge-base/embedding-index.d.ts +11 -0
  113. package/dist/src/knowledge-base/embedding-index.d.ts.map +1 -0
  114. package/dist/src/knowledge-base/embedding-index.js +31 -0
  115. package/dist/src/knowledge-base/embedding-index.js.map +1 -0
  116. package/dist/src/knowledge-base/embedding.d.ts +19 -0
  117. package/dist/src/knowledge-base/embedding.d.ts.map +1 -0
  118. package/dist/src/knowledge-base/embedding.js +39 -0
  119. package/dist/src/knowledge-base/embedding.js.map +1 -0
  120. package/dist/src/knowledge-base/generator.d.ts +11 -0
  121. package/dist/src/knowledge-base/generator.d.ts.map +1 -0
  122. package/dist/src/knowledge-base/generator.js +91 -0
  123. package/dist/src/knowledge-base/generator.js.map +1 -0
  124. package/dist/src/knowledge-base/search.d.ts +12 -0
  125. package/dist/src/knowledge-base/search.d.ts.map +1 -0
  126. package/dist/src/knowledge-base/search.js +106 -0
  127. package/dist/src/knowledge-base/search.js.map +1 -0
  128. package/dist/src/knowledge-base/templates.d.ts +6 -0
  129. package/dist/src/knowledge-base/templates.d.ts.map +1 -0
  130. package/dist/src/knowledge-base/templates.js +27 -0
  131. package/dist/src/knowledge-base/templates.js.map +1 -0
  132. package/dist/src/knowledge-base/types.d.ts +29 -0
  133. package/dist/src/knowledge-base/types.d.ts.map +1 -0
  134. package/dist/src/knowledge-base/types.js +2 -0
  135. package/dist/src/knowledge-base/types.js.map +1 -0
  136. package/dist/src/knowledge-base/writer.d.ts +7 -0
  137. package/dist/src/knowledge-base/writer.d.ts.map +1 -0
  138. package/dist/src/knowledge-base/writer.js +21 -0
  139. package/dist/src/knowledge-base/writer.js.map +1 -0
  140. package/dist/src/llm/adapter.d.ts.map +1 -1
  141. package/dist/src/llm/adapter.js.map +1 -1
  142. package/dist/src/llm/factory.d.ts +24 -0
  143. package/dist/src/llm/factory.d.ts.map +1 -0
  144. package/dist/src/llm/factory.js +75 -0
  145. package/dist/src/llm/factory.js.map +1 -0
  146. package/dist/src/llm/openai-adapter.d.ts +1 -1
  147. package/dist/src/llm/openai-adapter.d.ts.map +1 -1
  148. package/dist/src/llm/openai-adapter.js +2 -2
  149. package/dist/src/llm/openai-adapter.js.map +1 -1
  150. package/dist/src/mcp/schemas.d.ts.map +1 -1
  151. package/dist/src/mcp/schemas.js +224 -88
  152. package/dist/src/mcp/schemas.js.map +1 -1
  153. package/dist/src/mcp/server.d.ts.map +1 -1
  154. package/dist/src/mcp/server.js +322 -109
  155. package/dist/src/mcp/server.js.map +1 -1
  156. package/dist/src/mcp/tools/benchmark-passthrough.js +1 -1
  157. package/dist/src/mcp/tools/benchmark-passthrough.js.map +1 -1
  158. package/dist/src/mcp/tools/create-agent-passthrough.d.ts.map +1 -1
  159. package/dist/src/mcp/tools/create-agent-passthrough.js.map +1 -1
  160. package/dist/src/mcp/tools/execute-passthrough.d.ts.map +1 -1
  161. package/dist/src/mcp/tools/execute-passthrough.js +71 -30
  162. package/dist/src/mcp/tools/execute-passthrough.js.map +1 -1
  163. package/dist/src/mcp/tools/generate-kb.d.ts +8 -0
  164. package/dist/src/mcp/tools/generate-kb.d.ts.map +1 -0
  165. package/dist/src/mcp/tools/generate-kb.js +52 -0
  166. package/dist/src/mcp/tools/generate-kb.js.map +1 -0
  167. package/dist/src/mcp/tools/graph-visualize-passthrough.d.ts.map +1 -1
  168. package/dist/src/mcp/tools/graph-visualize-passthrough.js.map +1 -1
  169. package/dist/src/mcp/tools/interview-passthrough.d.ts.map +1 -1
  170. package/dist/src/mcp/tools/interview-passthrough.js +7 -3
  171. package/dist/src/mcp/tools/interview-passthrough.js.map +1 -1
  172. package/dist/src/mcp/tools/interview.d.ts.map +1 -1
  173. package/dist/src/mcp/tools/interview.js +4 -2
  174. package/dist/src/mcp/tools/interview.js.map +1 -1
  175. package/dist/src/mcp/tools/review-passthrough.js +1 -1
  176. package/dist/src/mcp/tools/review-passthrough.js.map +1 -1
  177. package/dist/src/mcp/tools/search-kb.d.ts +9 -0
  178. package/dist/src/mcp/tools/search-kb.d.ts.map +1 -0
  179. package/dist/src/mcp/tools/search-kb.js +26 -0
  180. package/dist/src/mcp/tools/search-kb.js.map +1 -0
  181. package/dist/src/mcp/tools/spec-passthrough.d.ts.map +1 -1
  182. package/dist/src/mcp/tools/spec-passthrough.js.map +1 -1
  183. package/dist/src/mcp/tools/spec.d.ts.map +1 -1
  184. package/dist/src/mcp/tools/spec.js.map +1 -1
  185. package/dist/src/mcp/tools/status.d.ts.map +1 -1
  186. package/dist/src/mcp/tools/status.js +1 -1
  187. package/dist/src/mcp/tools/status.js.map +1 -1
  188. package/dist/src/mcp/tools/sync-kb.d.ts +6 -0
  189. package/dist/src/mcp/tools/sync-kb.d.ts.map +1 -0
  190. package/dist/src/mcp/tools/sync-kb.js +23 -0
  191. package/dist/src/mcp/tools/sync-kb.js.map +1 -0
  192. package/dist/src/memory/memory-context-injector.d.ts.map +1 -1
  193. package/dist/src/memory/memory-context-injector.js +2 -6
  194. package/dist/src/memory/memory-context-injector.js.map +1 -1
  195. package/dist/src/memory/user-profile-store.d.ts.map +1 -1
  196. package/dist/src/memory/user-profile-store.js +1 -4
  197. package/dist/src/memory/user-profile-store.js.map +1 -1
  198. package/dist/src/recording/agg-converter.d.ts.map +1 -1
  199. package/dist/src/recording/agg-converter.js.map +1 -1
  200. package/dist/src/recording/agg-installer.d.ts.map +1 -1
  201. package/dist/src/recording/agg-installer.js.map +1 -1
  202. package/dist/src/recording/asciinema-installer.d.ts.map +1 -1
  203. package/dist/src/recording/asciinema-installer.js.map +1 -1
  204. package/dist/src/recording/asciinema-recorder.d.ts.map +1 -1
  205. package/dist/src/recording/asciinema-recorder.js.map +1 -1
  206. package/dist/src/recording/cast-generator.d.ts.map +1 -1
  207. package/dist/src/recording/cast-generator.js +38 -13
  208. package/dist/src/recording/cast-generator.js.map +1 -1
  209. package/dist/src/recording/filename-generator.d.ts.map +1 -1
  210. package/dist/src/recording/filename-generator.js +2 -2
  211. package/dist/src/recording/filename-generator.js.map +1 -1
  212. package/dist/src/recording/recording-orchestrator.d.ts.map +1 -1
  213. package/dist/src/recording/recording-orchestrator.js.map +1 -1
  214. package/dist/src/registry/base-registry.d.ts.map +1 -1
  215. package/dist/src/registry/base-registry.js.map +1 -1
  216. package/dist/src/resilience/lateral.d.ts.map +1 -1
  217. package/dist/src/resilience/lateral.js +6 -1
  218. package/dist/src/resilience/lateral.js.map +1 -1
  219. package/dist/src/resilience/prompts.d.ts.map +1 -1
  220. package/dist/src/resilience/prompts.js.map +1 -1
  221. package/dist/src/review/agent-matcher.d.ts.map +1 -1
  222. package/dist/src/review/agent-matcher.js.map +1 -1
  223. package/dist/src/review/context-collector.d.ts.map +1 -1
  224. package/dist/src/review/context-collector.js.map +1 -1
  225. package/dist/src/review/passthrough-engine.d.ts.map +1 -1
  226. package/dist/src/review/passthrough-engine.js +1 -3
  227. package/dist/src/review/passthrough-engine.js.map +1 -1
  228. package/dist/src/review/report-generator.d.ts.map +1 -1
  229. package/dist/src/review/report-generator.js.map +1 -1
  230. package/dist/src/scripts/postinstall.js +3 -1
  231. package/dist/src/scripts/postinstall.js.map +1 -1
  232. package/dist/src/spec/generator.d.ts.map +1 -1
  233. package/dist/src/spec/generator.js.map +1 -1
  234. package/dist/src/spec/passthrough-generator.d.ts.map +1 -1
  235. package/dist/src/spec/passthrough-generator.js.map +1 -1
  236. package/dist/src/spec/schema.js +1 -1
  237. package/dist/src/spec/schema.js.map +1 -1
  238. package/dist/src/spec/text-based-spec-generator.d.ts.map +1 -1
  239. package/dist/src/spec/text-based-spec-generator.js +3 -1
  240. package/dist/src/spec/text-based-spec-generator.js.map +1 -1
  241. package/dist/src/tui/hooks/event-store-reader.d.ts.map +1 -1
  242. package/dist/src/tui/hooks/event-store-reader.js +1 -3
  243. package/dist/src/tui/hooks/event-store-reader.js.map +1 -1
  244. package/dist/src/tui/hooks/useEventStorePoller.d.ts.map +1 -1
  245. package/dist/src/tui/hooks/useEventStorePoller.js +1 -3
  246. package/dist/src/tui/hooks/useEventStorePoller.js.map +1 -1
  247. package/package.json +5 -1
  248. package/schemas/gestalt.schema.json +41 -3
  249. package/skills/interview/SKILL.md +18 -1
@@ -0,0 +1,106 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ import matter from 'gray-matter';
4
+ import { EmbeddingService } from './embedding.js';
5
+ import { loadEmbeddingIndex } from './embedding-index.js';
6
+ import { log } from '../core/log.js';
7
+ export class SemanticSearchEngine {
8
+ embeddingService;
9
+ constructor() {
10
+ this.embeddingService = new EmbeddingService();
11
+ }
12
+ async search(query, kbPath, options) {
13
+ const k = options?.k ?? 5;
14
+ const types = options?.types;
15
+ log(`search: loading embedding index from ${kbPath}`);
16
+ const index = await loadEmbeddingIndex(kbPath);
17
+ if (!index || index.entries.length === 0) {
18
+ log('search: no embedding index found, returning empty results');
19
+ return [];
20
+ }
21
+ log(`search: computing query embedding for "${query}"`);
22
+ const queryVector = await this.embeddingService.embed(query);
23
+ // 각 EmbeddingEntry에 대해 코사인 유사도 계산
24
+ const scored = [];
25
+ for (const embEntry of index.entries) {
26
+ // types 필터: filePath에서 타입 디렉토리 추출
27
+ if (types && types.length > 0) {
28
+ // .gestalt-kb/{type}/{id}.md 패턴에서 type 추출
29
+ const parts = embEntry.filePath.replace(/\\/g, '/').split('/');
30
+ // parts 예: ['.gestalt-kb', 'code-graph', 'uuid.md'] 또는 절대경로
31
+ // kbPath 기준 상대 경로를 구성해서 두 번째 세그먼트를 type으로 간주
32
+ const rel = embEntry.filePath.startsWith(kbPath)
33
+ ? embEntry.filePath.slice(kbPath.length).replace(/^[/\\]/, '')
34
+ : parts.slice(-2).join('/');
35
+ const typeSegment = rel.split('/')[0] ?? '';
36
+ if (!types.includes(typeSegment)) {
37
+ continue;
38
+ }
39
+ }
40
+ const score = this.cosineSimilarity(queryVector, embEntry.vector);
41
+ scored.push({ entryId: embEntry.entryId, filePath: embEntry.filePath, score });
42
+ }
43
+ // 내림차순 정렬 후 상위 k개 선택
44
+ scored.sort((a, b) => b.score - a.score);
45
+ const topK = scored.slice(0, k);
46
+ log(`search: top ${topK.length} results (from ${scored.length} candidates)`);
47
+ // KnowledgeEntry 로드 및 SearchResult 조합
48
+ const results = [];
49
+ for (let i = 0; i < topK.length; i++) {
50
+ const item = topK[i];
51
+ // filePath가 절대경로면 그대로, 상대경로면 kbPath 기준으로 resolve
52
+ const resolvedPath = path.isAbsolute(item.filePath)
53
+ ? item.filePath
54
+ : path.join(kbPath, item.filePath.replace(/^\.gestalt-kb[/\\]/, ''));
55
+ const entry = await this.loadEntry(resolvedPath);
56
+ if (!entry)
57
+ continue;
58
+ results.push({
59
+ entry,
60
+ score: item.score,
61
+ excerpt: entry.content.slice(0, 200),
62
+ rank: i + 1,
63
+ });
64
+ }
65
+ return results;
66
+ }
67
+ cosineSimilarity(a, b) {
68
+ if (a.length !== b.length || a.length === 0)
69
+ return 0;
70
+ let dot = 0;
71
+ let normA = 0;
72
+ let normB = 0;
73
+ for (let i = 0; i < a.length; i++) {
74
+ const ai = a[i];
75
+ const bi = b[i];
76
+ dot += ai * bi;
77
+ normA += ai * ai;
78
+ normB += bi * bi;
79
+ }
80
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
81
+ if (denom === 0)
82
+ return 0;
83
+ return dot / denom;
84
+ }
85
+ async loadEntry(filePath) {
86
+ try {
87
+ const raw = await fs.readFile(filePath, 'utf-8');
88
+ const parsed = matter(raw);
89
+ const data = parsed.data;
90
+ return {
91
+ id: String(data['id'] ?? ''),
92
+ type: data['type'] ?? 'code-graph',
93
+ title: String(data['title'] ?? ''),
94
+ content: parsed.content,
95
+ filePath: String(data['filePath'] ?? filePath),
96
+ createdAt: String(data['createdAt'] ?? new Date().toISOString()),
97
+ tags: Array.isArray(data['tags']) ? data['tags'] : [],
98
+ };
99
+ }
100
+ catch (err) {
101
+ log(`search: failed to load entry at ${filePath}: ${String(err)}`);
102
+ return null;
103
+ }
104
+ }
105
+ }
106
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/knowledge-base/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { KnowledgeEntry } from './types.js';
2
+ /**
3
+ * KnowledgeEntry를 gray-matter 형식 frontmatter + content body 마크다운으로 직렬화한다.
4
+ */
5
+ export declare function renderMarkdown(entry: KnowledgeEntry): string;
6
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/knowledge-base/templates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;AAqBrE;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAK5D"}
@@ -0,0 +1,27 @@
1
+ import matter from 'gray-matter';
2
+ function buildFrontmatter(entry) {
3
+ const base = {
4
+ id: entry.id,
5
+ type: entry.type,
6
+ title: entry.title,
7
+ tags: entry.tags,
8
+ };
9
+ const byType = {
10
+ 'code-graph': { ...base, filePath: entry.filePath },
11
+ 'business-logic': base,
12
+ 'api-spec': base,
13
+ adr: { ...base, date: entry.createdAt },
14
+ policy: base,
15
+ };
16
+ return byType[entry.type] ?? base;
17
+ }
18
+ /**
19
+ * KnowledgeEntry를 gray-matter 형식 frontmatter + content body 마크다운으로 직렬화한다.
20
+ */
21
+ export function renderMarkdown(entry) {
22
+ const frontmatter = buildFrontmatter(entry);
23
+ // gray-matter의 stringify는 두 번째 인자로 data를 받고 세 번째 인자로 content를 받는다.
24
+ // matter.stringify(content, data) 형식으로 사용한다.
25
+ return matter.stringify(entry.content, frontmatter);
26
+ }
27
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/knowledge-base/templates.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,SAAS,gBAAgB,CAAC,KAAqB;IAC7C,MAAM,IAAI,GAA4B;QACpC,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;IAEF,MAAM,MAAM,GAAiE;QAC3E,YAAY,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;QACnD,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE;QACvC,MAAM,EAAE,IAAI;KACb,CAAC;IAEF,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAqB;IAClD,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,mEAAmE;IACnE,6CAA6C;IAC7C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,29 @@
1
+ export type KnowledgeEntryType = 'code-graph' | 'business-logic' | 'api-spec' | 'adr' | 'policy';
2
+ export interface KnowledgeEntry {
3
+ id: string;
4
+ type: KnowledgeEntryType;
5
+ title: string;
6
+ content: string;
7
+ filePath: string;
8
+ createdAt: string;
9
+ tags: string[];
10
+ }
11
+ export interface EmbeddingEntry {
12
+ entryId: string;
13
+ filePath: string;
14
+ vector: number[];
15
+ createdAt: string;
16
+ }
17
+ export interface EmbeddingIndex {
18
+ model: string;
19
+ dimension: number;
20
+ entries: EmbeddingEntry[];
21
+ createdAt: string;
22
+ }
23
+ export interface SearchResult {
24
+ entry: KnowledgeEntry;
25
+ score: number;
26
+ excerpt: string;
27
+ rank: number;
28
+ }
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/knowledge-base/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,gBAAgB,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEjG,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/knowledge-base/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { KnowledgeEntry } from './types.js';
2
+ /**
3
+ * KnowledgeEntry 배열을 .gestalt-kb/ 하위 MD 파일로 저장한다.
4
+ * 경로: {outputPath}/{entry.type}/{entry.id}.md
5
+ */
6
+ export declare function writeKnowledgeBase(entries: KnowledgeEntry[], outputPath: string): Promise<void>;
7
+ //# sourceMappingURL=writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/knowledge-base/writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -0,0 +1,21 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { log } from '../core/log.js';
4
+ import { renderMarkdown } from './templates.js';
5
+ /**
6
+ * KnowledgeEntry 배열을 .gestalt-kb/ 하위 MD 파일로 저장한다.
7
+ * 경로: {outputPath}/{entry.type}/{entry.id}.md
8
+ */
9
+ export async function writeKnowledgeBase(entries, outputPath) {
10
+ log(`knowledge-base: writing ${entries.length} entries to ${outputPath}`);
11
+ for (const entry of entries) {
12
+ const dir = join(outputPath, entry.type);
13
+ await mkdir(dir, { recursive: true });
14
+ const filePath = join(dir, `${entry.id}.md`);
15
+ const content = renderMarkdown(entry);
16
+ await writeFile(filePath, content, 'utf-8');
17
+ log(`knowledge-base: wrote ${filePath}`);
18
+ }
19
+ log(`knowledge-base: done`);
20
+ }
21
+ //# sourceMappingURL=writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/knowledge-base/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAyB,EACzB,UAAkB;IAElB,GAAG,CAAC,2BAA2B,OAAO,CAAC,MAAM,eAAe,UAAU,EAAE,CAAC,CAAC;IAE1E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5C,GAAG,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/llm/adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtE,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CAgCtD"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/llm/adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtE,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CA8BtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/llm/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAY;IAClB,KAAK,CAAS;IAEtB,YAAY,MAAc,EAAE,KAAa;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAmB;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACjD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,cAAc;gBAC/C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,eAAe;gBACnD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrC,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5C,MAAM,IAAI,QAAQ,CAAC,iCAAiC,CAAC,CAAC;YACxD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,SAAS,CAAC,IAAI;gBACvB,KAAK,EAAE;oBACL,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;oBACxC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;iBAC3C;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,QAAQ;gBAAE,MAAM,CAAC,CAAC;YACnC,MAAM,IAAI,QAAQ,CAChB,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/llm/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAY;IAClB,KAAK,CAAS;IAEtB,YAAY,MAAc,EAAE,KAAa;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAmB;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACjD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,cAAc;gBAC/C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,eAAe;gBACnD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrC,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5C,MAAM,IAAI,QAAQ,CAAC,iCAAiC,CAAC,CAAC;YACxD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,SAAS,CAAC,IAAI;gBACvB,KAAK,EAAE;oBACL,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;oBACxC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;iBAC3C;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,QAAQ;gBAAE,MAAM,CAAC,CAAC;YACnC,MAAM,IAAI,QAAQ,CAAC,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import type { GestaltConfig, LLMTierConfig } from '../core/config.js';
2
+ import type { LLMAdapter } from './types.js';
3
+ import type { TierMapping } from '../agent/figural-router.js';
4
+ /**
5
+ * tier config 또는 flat config(apiKey + model)에서 LLMAdapter를 생성한다.
6
+ * flat config인 경우 Anthropic을 기본 provider로 사용한다.
7
+ */
8
+ export declare function createAdapter(llmConfig: GestaltConfig['llm']): LLMAdapter;
9
+ /**
10
+ * LLMTierConfig에서 provider별 LLMAdapter를 생성한다.
11
+ * tier config에 apiKey가 없으면 flat config의 apiKey를 fallback으로 사용한다.
12
+ */
13
+ export declare function createAdapterFromTierConfig(tierCfg: LLMTierConfig, llmConfig: GestaltConfig['llm']): LLMAdapter;
14
+ /**
15
+ * GestaltConfig에서 FiguralRouter용 TierMapping을 생성한다.
16
+ * tier 설정이 없는 경우 flat config(apiKey + model)로 모든 tier에 AnthropicAdapter를 할당한다.
17
+ */
18
+ export declare function createTierMapping(config: GestaltConfig): TierMapping;
19
+ /**
20
+ * LLM API 키가 설정되어 있는지 확인한다.
21
+ * flat config의 apiKey 또는 any tier의 apiKey가 있으면 true.
22
+ */
23
+ export declare function hasLLMApiKey(config: GestaltConfig): boolean;
24
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/llm/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAItE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAI9D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,UAAU,CASzE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,GAC9B,UAAU,CAWZ;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAwBpE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAO3D"}
@@ -0,0 +1,75 @@
1
+ import { DEFAULT_MODEL } from '../core/constants.js';
2
+ import { LLMError } from '../core/errors.js';
3
+ import { AnthropicAdapter } from './adapter.js';
4
+ import { OpenAIAdapter } from './openai-adapter.js';
5
+ /**
6
+ * tier config 또는 flat config(apiKey + model)에서 LLMAdapter를 생성한다.
7
+ * flat config인 경우 Anthropic을 기본 provider로 사용한다.
8
+ */
9
+ export function createAdapter(llmConfig) {
10
+ // standard tier가 있으면 그것으로, 없으면 flat config 사용
11
+ const tierCfg = llmConfig.standard;
12
+ if (tierCfg) {
13
+ return createAdapterFromTierConfig(tierCfg, llmConfig);
14
+ }
15
+ // flat config fallback (기존 호환)
16
+ return new AnthropicAdapter(llmConfig.apiKey, llmConfig.model);
17
+ }
18
+ /**
19
+ * LLMTierConfig에서 provider별 LLMAdapter를 생성한다.
20
+ * tier config에 apiKey가 없으면 flat config의 apiKey를 fallback으로 사용한다.
21
+ */
22
+ export function createAdapterFromTierConfig(tierCfg, llmConfig) {
23
+ const apiKey = tierCfg.apiKey ?? llmConfig.apiKey;
24
+ switch (tierCfg.provider) {
25
+ case 'anthropic':
26
+ return new AnthropicAdapter(apiKey, tierCfg.model);
27
+ case 'openai':
28
+ return new OpenAIAdapter(apiKey, tierCfg.model, tierCfg.baseURL);
29
+ default:
30
+ throw new LLMError(`Unsupported LLM provider: ${String(tierCfg.provider)}`);
31
+ }
32
+ }
33
+ /**
34
+ * GestaltConfig에서 FiguralRouter용 TierMapping을 생성한다.
35
+ * tier 설정이 없는 경우 flat config(apiKey + model)로 모든 tier에 AnthropicAdapter를 할당한다.
36
+ */
37
+ export function createTierMapping(config) {
38
+ const llm = config.llm;
39
+ const tiers = ['frugal', 'standard', 'frontier'];
40
+ const mapping = {};
41
+ for (const tier of tiers) {
42
+ const tierCfg = llm[tier];
43
+ if (tierCfg) {
44
+ mapping[tier] = {
45
+ provider: tierCfg.provider,
46
+ model: tierCfg.model,
47
+ adapter: createAdapterFromTierConfig(tierCfg, llm),
48
+ };
49
+ }
50
+ else {
51
+ // flat config fallback
52
+ mapping[tier] = {
53
+ provider: 'anthropic',
54
+ model: llm.model || DEFAULT_MODEL,
55
+ adapter: new AnthropicAdapter(llm.apiKey, llm.model || DEFAULT_MODEL),
56
+ };
57
+ }
58
+ }
59
+ return mapping;
60
+ }
61
+ /**
62
+ * LLM API 키가 설정되어 있는지 확인한다.
63
+ * flat config의 apiKey 또는 any tier의 apiKey가 있으면 true.
64
+ */
65
+ export function hasLLMApiKey(config) {
66
+ if (config.llm.apiKey)
67
+ return true;
68
+ const tiers = ['frugal', 'standard', 'frontier'];
69
+ for (const tier of tiers) {
70
+ if (config.llm[tier]?.apiKey)
71
+ return true;
72
+ }
73
+ return false;
74
+ }
75
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/llm/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAA+B;IAC3D,8CAA8C;IAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,2BAA2B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,+BAA+B;IAC/B,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,OAAsB,EACtB,SAA+B;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;IAElD,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,WAAW;YACd,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACrD,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACnE;YACE,MAAM,IAAI,QAAQ,CAAC,6BAA6B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,MAAM,KAAK,GAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,EAA+C,CAAC;IAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,GAAG;gBACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,2BAA2B,CAAC,OAAO,EAAE,GAAG,CAAC;aACnD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,OAAO,CAAC,IAAI,CAAC,GAAG;gBACd,QAAQ,EAAE,WAAW;gBACrB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,aAAa;gBACjC,OAAO,EAAE,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,aAAa,CAAC;aACtE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,OAAsB,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -2,7 +2,7 @@ import type { LLMAdapter, LLMRequest, LLMResponse } from './types.js';
2
2
  export declare class OpenAIAdapter implements LLMAdapter {
3
3
  private client;
4
4
  private model;
5
- constructor(apiKey: string, model: string);
5
+ constructor(apiKey: string, model: string, baseURL?: string);
6
6
  chat(request: LLMRequest): Promise<LLMResponse>;
7
7
  }
8
8
  //# sourceMappingURL=openai-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai-adapter.d.ts","sourceRoot":"","sources":["../../../src/llm/openai-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtE,qBAAa,aAAc,YAAW,UAAU;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CAsCtD"}
1
+ {"version":3,"file":"openai-adapter.d.ts","sourceRoot":"","sources":["../../../src/llm/openai-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtE,qBAAa,aAAc,YAAW,UAAU;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAKrD,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CAoCtD"}
@@ -4,8 +4,8 @@ import { LLMError } from '../core/errors.js';
4
4
  export class OpenAIAdapter {
5
5
  client;
6
6
  model;
7
- constructor(apiKey, model) {
8
- this.client = new OpenAI({ apiKey });
7
+ constructor(apiKey, model, baseURL) {
8
+ this.client = new OpenAI({ apiKey, ...(baseURL ? { baseURL } : {}) });
9
9
  this.model = model;
10
10
  }
11
11
  async chat(request) {
@@ -1 +1 @@
1
- {"version":3,"file":"openai-adapter.js","sourceRoot":"","sources":["../../../src/llm/openai-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,MAAM,OAAO,aAAa;IAChB,MAAM,CAAS;IACf,KAAK,CAAS;IAEtB,YAAY,MAAc,EAAE,KAAa;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAmB;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAwC,EAAE,CAAC;YAEzD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACzD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,cAAc;gBAC/C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,eAAe;gBACnD,QAAQ;aACT,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,QAAQ,CAAC,+BAA+B,CAAC,CAAC;YACtD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;gBAC/B,KAAK,EAAE;oBACL,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;oBAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;iBACrD;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,QAAQ;gBAAE,MAAM,CAAC,CAAC;YACnC,MAAM,IAAI,QAAQ,CAChB,qBAAqB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"openai-adapter.js","sourceRoot":"","sources":["../../../src/llm/openai-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,MAAM,OAAO,aAAa;IAChB,MAAM,CAAS;IACf,KAAK,CAAS;IAEtB,YAAY,MAAc,EAAE,KAAa,EAAE,OAAgB;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAmB;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAwC,EAAE,CAAC;YAEzD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACzD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,cAAc;gBAC/C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,eAAe;gBACnD,QAAQ;aACT,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,QAAQ,CAAC,+BAA+B,CAAC,CAAC;YACtD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;gBAC/B,KAAK,EAAE;oBACL,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;oBAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;iBACrD;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,QAAQ;gBAAE,MAAM,CAAC,CAAC;YACnC,MAAM,IAAI,QAAQ,CAAC,qBAAqB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/mcp/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAGxD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+N7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAOjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,yBAAyB;;;;;;;;;EAGpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/mcp/schemas.ts"],"names":[],"mappings":"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"}