k0ntext 3.0.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 (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +623 -0
  3. package/bin/k0ntext.js +12 -0
  4. package/dist/agents/cleanup-agent.d.ts +39 -0
  5. package/dist/agents/cleanup-agent.d.ts.map +1 -0
  6. package/dist/agents/cleanup-agent.js +56 -0
  7. package/dist/agents/cleanup-agent.js.map +1 -0
  8. package/dist/agents/performance-agent.d.ts +37 -0
  9. package/dist/agents/performance-agent.d.ts.map +1 -0
  10. package/dist/agents/performance-agent.js +91 -0
  11. package/dist/agents/performance-agent.js.map +1 -0
  12. package/dist/analyzer/index.d.ts +5 -0
  13. package/dist/analyzer/index.d.ts.map +1 -0
  14. package/dist/analyzer/index.js +5 -0
  15. package/dist/analyzer/index.js.map +1 -0
  16. package/dist/analyzer/intelligent-analyzer.d.ts +111 -0
  17. package/dist/analyzer/intelligent-analyzer.d.ts.map +1 -0
  18. package/dist/analyzer/intelligent-analyzer.js +537 -0
  19. package/dist/analyzer/intelligent-analyzer.js.map +1 -0
  20. package/dist/cli/commands/cleanup.d.ts +3 -0
  21. package/dist/cli/commands/cleanup.d.ts.map +1 -0
  22. package/dist/cli/commands/cleanup.js +24 -0
  23. package/dist/cli/commands/cleanup.js.map +1 -0
  24. package/dist/cli/commands/export.d.ts +9 -0
  25. package/dist/cli/commands/export.d.ts.map +1 -0
  26. package/dist/cli/commands/export.js +72 -0
  27. package/dist/cli/commands/export.js.map +1 -0
  28. package/dist/cli/commands/import.d.ts +9 -0
  29. package/dist/cli/commands/import.d.ts.map +1 -0
  30. package/dist/cli/commands/import.js +62 -0
  31. package/dist/cli/commands/import.js.map +1 -0
  32. package/dist/cli/commands/performance.d.ts +9 -0
  33. package/dist/cli/commands/performance.d.ts.map +1 -0
  34. package/dist/cli/commands/performance.js +36 -0
  35. package/dist/cli/commands/performance.js.map +1 -0
  36. package/dist/cli/commands/validate.d.ts +9 -0
  37. package/dist/cli/commands/validate.d.ts.map +1 -0
  38. package/dist/cli/commands/validate.js +82 -0
  39. package/dist/cli/commands/validate.js.map +1 -0
  40. package/dist/cli/commands/watch.d.ts +9 -0
  41. package/dist/cli/commands/watch.d.ts.map +1 -0
  42. package/dist/cli/commands/watch.js +72 -0
  43. package/dist/cli/commands/watch.js.map +1 -0
  44. package/dist/cli/generate.d.ts +3 -0
  45. package/dist/cli/generate.d.ts.map +1 -0
  46. package/dist/cli/generate.js +194 -0
  47. package/dist/cli/generate.js.map +1 -0
  48. package/dist/cli/index.d.ts +9 -0
  49. package/dist/cli/index.d.ts.map +1 -0
  50. package/dist/cli/index.js +448 -0
  51. package/dist/cli/index.js.map +1 -0
  52. package/dist/cli/sync.d.ts +26 -0
  53. package/dist/cli/sync.d.ts.map +1 -0
  54. package/dist/cli/sync.js +163 -0
  55. package/dist/cli/sync.js.map +1 -0
  56. package/dist/config/cleanup-config.d.ts +26 -0
  57. package/dist/config/cleanup-config.d.ts.map +1 -0
  58. package/dist/config/cleanup-config.js +21 -0
  59. package/dist/config/cleanup-config.js.map +1 -0
  60. package/dist/db/client.d.ts +284 -0
  61. package/dist/db/client.d.ts.map +1 -0
  62. package/dist/db/client.js +688 -0
  63. package/dist/db/client.js.map +1 -0
  64. package/dist/db/index.d.ts +6 -0
  65. package/dist/db/index.d.ts.map +1 -0
  66. package/dist/db/index.js +6 -0
  67. package/dist/db/index.js.map +1 -0
  68. package/dist/db/schema.d.ts +41 -0
  69. package/dist/db/schema.d.ts.map +1 -0
  70. package/dist/db/schema.js +226 -0
  71. package/dist/db/schema.js.map +1 -0
  72. package/dist/embeddings/index.d.ts +5 -0
  73. package/dist/embeddings/index.d.ts.map +1 -0
  74. package/dist/embeddings/index.js +5 -0
  75. package/dist/embeddings/index.js.map +1 -0
  76. package/dist/embeddings/openrouter.d.ts +133 -0
  77. package/dist/embeddings/openrouter.d.ts.map +1 -0
  78. package/dist/embeddings/openrouter.js +455 -0
  79. package/dist/embeddings/openrouter.js.map +1 -0
  80. package/dist/index.d.ts +14 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +18 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/mcp.d.ts +29 -0
  85. package/dist/mcp.d.ts.map +1 -0
  86. package/dist/mcp.js +257 -0
  87. package/dist/mcp.js.map +1 -0
  88. package/docs/ARCHIVE/MIGRATE_TO_NEW_REPO.md +222 -0
  89. package/docs/ARCHIVE/MIGRATE_TO_UNIFIED.md +220 -0
  90. package/docs/CLEANUP.md +76 -0
  91. package/docs/MCP_QUICKSTART.md +219 -0
  92. package/docs/QUICKSTART.md +119 -0
  93. package/docs/TROUBLESHOOTING.md +611 -0
  94. package/package.json +100 -0
  95. package/skills/context-optimize/SKILL.md +86 -0
  96. package/skills/implement/SKILL.md +150 -0
  97. package/skills/plan/SKILL.md +143 -0
  98. package/skills/research/SKILL.md +103 -0
  99. package/skills/validate/SKILL.md +62 -0
  100. package/skills/verify-docs/SKILL.md +77 -0
  101. package/src/agents/cleanup-agent.ts +96 -0
  102. package/src/agents/performance-agent.ts +117 -0
  103. package/src/analyzer/index.ts +10 -0
  104. package/src/analyzer/intelligent-analyzer.ts +640 -0
  105. package/src/cli/commands/cleanup.ts +26 -0
  106. package/src/cli/commands/export.ts +82 -0
  107. package/src/cli/commands/import.ts +73 -0
  108. package/src/cli/commands/performance.ts +40 -0
  109. package/src/cli/commands/validate.ts +98 -0
  110. package/src/cli/commands/watch.ts +83 -0
  111. package/src/cli/generate.ts +219 -0
  112. package/src/cli/index.ts +510 -0
  113. package/src/cli/sync.ts +194 -0
  114. package/src/config/cleanup-config.ts +42 -0
  115. package/src/db/client.ts +949 -0
  116. package/src/db/index.ts +19 -0
  117. package/src/db/schema.ts +241 -0
  118. package/src/embeddings/index.ts +11 -0
  119. package/src/embeddings/openrouter.ts +592 -0
  120. package/src/index.ts +57 -0
  121. package/src/mcp.ts +354 -0
  122. package/templates/AI_CONTEXT.md.template +245 -0
  123. package/templates/base/README.md +260 -0
  124. package/templates/base/RPI_WORKFLOW_PLAN.md +325 -0
  125. package/templates/base/agents/api-developer.md +76 -0
  126. package/templates/base/agents/context-engineer.md +525 -0
  127. package/templates/base/agents/core-architect.md +76 -0
  128. package/templates/base/agents/database-ops.md +76 -0
  129. package/templates/base/agents/deployment-ops.md +76 -0
  130. package/templates/base/agents/integration-hub.md +76 -0
  131. package/templates/base/analytics/README.md +114 -0
  132. package/templates/base/automation/config.json +58 -0
  133. package/templates/base/automation/generators/code-mapper.js +308 -0
  134. package/templates/base/automation/generators/index-builder.js +321 -0
  135. package/templates/base/automation/hooks/post-commit.sh +83 -0
  136. package/templates/base/automation/hooks/pre-commit.sh +103 -0
  137. package/templates/base/ci-templates/README.md +108 -0
  138. package/templates/base/ci-templates/github-actions/context-check.yml +144 -0
  139. package/templates/base/ci-templates/github-actions/validate-docs.yml +105 -0
  140. package/templates/base/commands/analytics.md +238 -0
  141. package/templates/base/commands/auto-sync.md +172 -0
  142. package/templates/base/commands/collab.md +194 -0
  143. package/templates/base/commands/context-optimize.md +226 -0
  144. package/templates/base/commands/help.md +485 -0
  145. package/templates/base/commands/rpi-implement.md +164 -0
  146. package/templates/base/commands/rpi-plan.md +147 -0
  147. package/templates/base/commands/rpi-research.md +145 -0
  148. package/templates/base/commands/session-resume.md +144 -0
  149. package/templates/base/commands/session-save.md +112 -0
  150. package/templates/base/commands/validate-all.md +77 -0
  151. package/templates/base/commands/verify-docs-current.md +86 -0
  152. package/templates/base/config/base.json +57 -0
  153. package/templates/base/config/environments/development.json +13 -0
  154. package/templates/base/config/environments/production.json +17 -0
  155. package/templates/base/config/environments/staging.json +13 -0
  156. package/templates/base/config/local.json.example +21 -0
  157. package/templates/base/context/.meta/generated-at.json +18 -0
  158. package/templates/base/context/ARCHITECTURE_SNAPSHOT.md +156 -0
  159. package/templates/base/context/CODE_TO_WORKFLOW_MAP.md +94 -0
  160. package/templates/base/context/FILE_OWNERSHIP.md +57 -0
  161. package/templates/base/context/INTEGRATION_POINTS.md +92 -0
  162. package/templates/base/context/KNOWN_GOTCHAS.md +195 -0
  163. package/templates/base/context/TESTING_MAP.md +95 -0
  164. package/templates/base/context/WORKFLOW_INDEX.md +129 -0
  165. package/templates/base/context/workflows/WORKFLOW_TEMPLATE.md +294 -0
  166. package/templates/base/indexes/agents/CAPABILITY_MATRIX.md +255 -0
  167. package/templates/base/indexes/agents/CATEGORY_INDEX.md +44 -0
  168. package/templates/base/indexes/code/CATEGORY_INDEX.md +38 -0
  169. package/templates/base/indexes/routing/CATEGORY_INDEX.md +39 -0
  170. package/templates/base/indexes/search/CATEGORY_INDEX.md +39 -0
  171. package/templates/base/indexes/workflows/CATEGORY_INDEX.md +38 -0
  172. package/templates/base/knowledge/README.md +98 -0
  173. package/templates/base/knowledge/sessions/README.md +88 -0
  174. package/templates/base/knowledge/sessions/TEMPLATE.md +150 -0
  175. package/templates/base/knowledge/shared/decisions/0001-adopt-context-engineering.md +144 -0
  176. package/templates/base/knowledge/shared/decisions/README.md +49 -0
  177. package/templates/base/knowledge/shared/decisions/TEMPLATE.md +123 -0
  178. package/templates/base/knowledge/shared/patterns/README.md +62 -0
  179. package/templates/base/knowledge/shared/patterns/TEMPLATE.md +120 -0
  180. package/templates/base/plans/PLAN_TEMPLATE.md +316 -0
  181. package/templates/base/plans/active/.gitkeep +0 -0
  182. package/templates/base/plans/completed/.gitkeep +0 -0
  183. package/templates/base/research/RESEARCH_TEMPLATE.md +245 -0
  184. package/templates/base/research/active/.gitkeep +0 -0
  185. package/templates/base/research/completed/.gitkeep +0 -0
  186. package/templates/base/schemas/agent.schema.json +141 -0
  187. package/templates/base/schemas/anchors.schema.json +54 -0
  188. package/templates/base/schemas/automation.schema.json +93 -0
  189. package/templates/base/schemas/command.schema.json +134 -0
  190. package/templates/base/schemas/hashes.schema.json +40 -0
  191. package/templates/base/schemas/manifest.schema.json +117 -0
  192. package/templates/base/schemas/plan.schema.json +136 -0
  193. package/templates/base/schemas/research.schema.json +115 -0
  194. package/templates/base/schemas/roles.schema.json +34 -0
  195. package/templates/base/schemas/session.schema.json +77 -0
  196. package/templates/base/schemas/settings.schema.json +244 -0
  197. package/templates/base/schemas/staleness.schema.json +53 -0
  198. package/templates/base/schemas/team-config.schema.json +42 -0
  199. package/templates/base/schemas/workflow.schema.json +126 -0
  200. package/templates/base/session/checkpoints/.gitkeep +2 -0
  201. package/templates/base/session/current/state.json +20 -0
  202. package/templates/base/session/history/.gitkeep +2 -0
  203. package/templates/base/settings.json +3 -0
  204. package/templates/base/standards/COMPATIBILITY.md +219 -0
  205. package/templates/base/standards/EXTENSION_GUIDELINES.md +280 -0
  206. package/templates/base/standards/QUALITY_CHECKLIST.md +211 -0
  207. package/templates/base/standards/README.md +66 -0
  208. package/templates/base/sync/anchors.json +6 -0
  209. package/templates/base/sync/hashes.json +6 -0
  210. package/templates/base/sync/staleness.json +10 -0
  211. package/templates/base/team/README.md +168 -0
  212. package/templates/base/team/config.json +79 -0
  213. package/templates/base/team/roles.json +145 -0
  214. package/templates/base/tools/bin/claude-context.js +151 -0
  215. package/templates/base/tools/lib/anchor-resolver.js +276 -0
  216. package/templates/base/tools/lib/config-loader.js +363 -0
  217. package/templates/base/tools/lib/detector.js +350 -0
  218. package/templates/base/tools/lib/diagnose.js +206 -0
  219. package/templates/base/tools/lib/drift-detector.js +373 -0
  220. package/templates/base/tools/lib/errors.js +199 -0
  221. package/templates/base/tools/lib/index.js +36 -0
  222. package/templates/base/tools/lib/init.js +192 -0
  223. package/templates/base/tools/lib/logger.js +230 -0
  224. package/templates/base/tools/lib/placeholder.js +201 -0
  225. package/templates/base/tools/lib/session-manager.js +354 -0
  226. package/templates/base/tools/lib/validate.js +521 -0
  227. package/templates/base/tools/package.json +49 -0
  228. package/templates/handlebars/aider-config.hbs +146 -0
  229. package/templates/handlebars/antigravity.hbs +377 -0
  230. package/templates/handlebars/claude.hbs +183 -0
  231. package/templates/handlebars/cline.hbs +62 -0
  232. package/templates/handlebars/continue-config.hbs +116 -0
  233. package/templates/handlebars/copilot.hbs +130 -0
  234. package/templates/handlebars/partials/gotcha-list.hbs +11 -0
  235. package/templates/handlebars/partials/header.hbs +3 -0
  236. package/templates/handlebars/partials/workflow-summary.hbs +16 -0
  237. package/templates/handlebars/windsurf-rules.hbs +69 -0
  238. package/templates/hooks/post-commit.hbs +28 -0
  239. package/templates/hooks/pre-commit.hbs +46 -0
@@ -0,0 +1,455 @@
1
+ /**
2
+ * OpenRouter Client
3
+ *
4
+ * Client for OpenRouter API supporting both embeddings and chat completions.
5
+ * Used for intelligent initialization and context understanding.
6
+ */
7
+ import { createHash } from 'crypto';
8
+ /**
9
+ * OpenRouter API endpoints
10
+ */
11
+ const OPENROUTER_EMBEDDINGS_URL = 'https://openrouter.ai/api/v1/embeddings';
12
+ const OPENROUTER_CHAT_URL = 'https://openrouter.ai/api/v1/chat/completions';
13
+ /**
14
+ * Default models
15
+ */
16
+ const DEFAULT_EMBEDDING_MODEL = 'openai/text-embedding-3-small';
17
+ const DEFAULT_CHAT_MODEL = 'anthropic/claude-3-haiku';
18
+ const EMBEDDING_DIMENSION = 1536;
19
+ /**
20
+ * OpenRouter-specific error types
21
+ */
22
+ export class OpenRouterError extends Error {
23
+ code;
24
+ constructor(message, code) {
25
+ super(message);
26
+ this.code = code;
27
+ this.name = 'OpenRouterError';
28
+ }
29
+ }
30
+ export class OpenRouterRateLimitError extends OpenRouterError {
31
+ retryAfter;
32
+ constructor(message, retryAfter) {
33
+ super(message, 'RATE_LIMIT');
34
+ this.retryAfter = retryAfter;
35
+ this.name = 'OpenRouterRateLimitError';
36
+ }
37
+ }
38
+ export class OpenRouterAuthError extends OpenRouterError {
39
+ constructor(message) {
40
+ super(message, 'AUTH_ERROR');
41
+ this.name = 'OpenRouterAuthError';
42
+ }
43
+ }
44
+ export class OpenRouterTimeoutError extends OpenRouterError {
45
+ constructor(message) {
46
+ super(message, 'TIMEOUT');
47
+ this.name = 'OpenRouterTimeoutError';
48
+ }
49
+ }
50
+ /**
51
+ * OpenRouter client for embeddings and chat
52
+ */
53
+ export class OpenRouterClient {
54
+ apiKey;
55
+ embeddingModel;
56
+ chatModel;
57
+ siteUrl;
58
+ siteName;
59
+ embeddingCache = new Map();
60
+ /**
61
+ * Retry configuration
62
+ */
63
+ maxRetries = 3;
64
+ baseRetryDelay = 1000; // ms
65
+ /**
66
+ * Rate limiting configuration
67
+ */
68
+ minRequestInterval;
69
+ lastRequestTime = 0;
70
+ /**
71
+ * Timeout configuration
72
+ */
73
+ requestTimeout;
74
+ /**
75
+ * Sleep for specified milliseconds
76
+ */
77
+ sleep(ms) {
78
+ return new Promise(resolve => setTimeout(resolve, ms));
79
+ }
80
+ /**
81
+ * Create a timeout promise that rejects after specified milliseconds
82
+ */
83
+ createTimeoutPromise(ms) {
84
+ return new Promise((_, reject) => {
85
+ setTimeout(() => {
86
+ reject(new OpenRouterTimeoutError(`Request timed out after ${ms}ms`));
87
+ }, ms);
88
+ });
89
+ }
90
+ /**
91
+ * Wrap a fetch promise with timeout
92
+ */
93
+ async fetchWithTimeout(url, options, timeout) {
94
+ return Promise.race([
95
+ fetch(url, options),
96
+ this.createTimeoutPromise(timeout)
97
+ ]);
98
+ }
99
+ /**
100
+ * Apply rate limiting before API requests
101
+ */
102
+ async applyRateLimit() {
103
+ const now = Date.now();
104
+ const timeSinceLastRequest = now - this.lastRequestTime;
105
+ if (timeSinceLastRequest < this.minRequestInterval) {
106
+ const waitTime = this.minRequestInterval - timeSinceLastRequest;
107
+ await this.sleep(waitTime);
108
+ }
109
+ this.lastRequestTime = Date.now();
110
+ }
111
+ constructor(config) {
112
+ if (!config.apiKey) {
113
+ throw new Error('OPENROUTER_API_KEY is required');
114
+ }
115
+ this.apiKey = config.apiKey;
116
+ this.embeddingModel = config.embeddingModel || DEFAULT_EMBEDDING_MODEL;
117
+ this.chatModel = config.chatModel || DEFAULT_CHAT_MODEL;
118
+ this.siteUrl = config.siteUrl || 'https://github.com/SireJeff/claude-context-engineering-template';
119
+ this.siteName = config.siteName || 'AI Context';
120
+ this.minRequestInterval = config.minRequestInterval || 100; // ms between requests
121
+ this.requestTimeout = config.requestTimeout || 30000; // 30 seconds default
122
+ this.lastRequestTime = 0;
123
+ }
124
+ /**
125
+ * Generate embedding for a single text
126
+ */
127
+ async embed(text) {
128
+ // Check cache
129
+ const cacheKey = this.hashText(text);
130
+ if (this.embeddingCache.has(cacheKey)) {
131
+ return this.embeddingCache.get(cacheKey);
132
+ }
133
+ let lastError = null;
134
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
135
+ try {
136
+ // Apply rate limiting before each attempt
137
+ await this.applyRateLimit();
138
+ const response = await this.fetchWithTimeout(OPENROUTER_EMBEDDINGS_URL, {
139
+ method: 'POST',
140
+ headers: {
141
+ 'Authorization': `Bearer ${this.apiKey}`,
142
+ 'Content-Type': 'application/json',
143
+ 'HTTP-Referer': this.siteUrl,
144
+ 'X-Title': this.siteName
145
+ },
146
+ body: JSON.stringify({
147
+ model: this.embeddingModel,
148
+ input: text
149
+ })
150
+ }, this.requestTimeout);
151
+ if (!response.ok) {
152
+ const error = await response.text();
153
+ // Don't retry auth errors
154
+ if (response.status === 401 || response.status === 403) {
155
+ throw new OpenRouterAuthError(`Authentication failed: ${error}`);
156
+ }
157
+ // Rate limit errors - check for retry-after header
158
+ if (response.status === 429) {
159
+ const retryAfter = response.headers.get('Retry-After');
160
+ throw new OpenRouterRateLimitError(`Rate limit exceeded: ${error}`, retryAfter ? parseInt(retryAfter, 10) : undefined);
161
+ }
162
+ throw new OpenRouterError(`OpenRouter API error (${response.status}): ${error}`);
163
+ }
164
+ const data = await response.json();
165
+ if (!data ||
166
+ !Array.isArray(data.data) ||
167
+ data.data.length === 0 ||
168
+ !data.data[0] ||
169
+ !Array.isArray(data.data[0].embedding)) {
170
+ throw new OpenRouterError('OpenRouter API error: no embedding data returned in response', 'NO_DATA');
171
+ }
172
+ const embedding = data.data[0].embedding;
173
+ // Cache the result
174
+ this.embeddingCache.set(cacheKey, embedding);
175
+ return embedding;
176
+ }
177
+ catch (error) {
178
+ // Don't retry auth errors - they'll be thrown as OpenRouterAuthError
179
+ if (error instanceof OpenRouterAuthError) {
180
+ throw error;
181
+ }
182
+ // Don't retry rate limit errors with explicit retry-after
183
+ if (error instanceof OpenRouterRateLimitError && error.retryAfter) {
184
+ throw error;
185
+ }
186
+ lastError = error instanceof Error ? error : new Error(String(error));
187
+ // Don't retry if it's the last attempt or certain error types
188
+ if (attempt === this.maxRetries) {
189
+ break;
190
+ }
191
+ // Exponential backoff: wait longer with each attempt
192
+ const delay = this.baseRetryDelay * Math.pow(2, attempt);
193
+ await this.sleep(delay);
194
+ }
195
+ }
196
+ throw lastError || new OpenRouterError('OpenRouter API error: max retries exceeded', 'MAX_RETRIES');
197
+ }
198
+ /**
199
+ * Generate embeddings for multiple texts (batch)
200
+ */
201
+ async embedBatch(texts) {
202
+ // Check cache for all texts
203
+ const uncachedTexts = [];
204
+ const uncachedIndices = [];
205
+ const results = texts.map((text, index) => {
206
+ const cacheKey = this.hashText(text);
207
+ if (this.embeddingCache.has(cacheKey)) {
208
+ return this.embeddingCache.get(cacheKey);
209
+ }
210
+ uncachedTexts.push(text);
211
+ uncachedIndices.push(index);
212
+ return null;
213
+ });
214
+ // If all cached, return immediately
215
+ if (uncachedTexts.length === 0) {
216
+ return results;
217
+ }
218
+ // Batch request to OpenRouter with retry
219
+ let lastError = null;
220
+ let data = null;
221
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
222
+ try {
223
+ // Apply rate limiting before each attempt
224
+ await this.applyRateLimit();
225
+ const response = await this.fetchWithTimeout(OPENROUTER_EMBEDDINGS_URL, {
226
+ method: 'POST',
227
+ headers: {
228
+ 'Authorization': `Bearer ${this.apiKey}`,
229
+ 'Content-Type': 'application/json',
230
+ 'HTTP-Referer': this.siteUrl,
231
+ 'X-Title': this.siteName
232
+ },
233
+ body: JSON.stringify({
234
+ model: this.embeddingModel,
235
+ input: uncachedTexts
236
+ })
237
+ }, this.requestTimeout);
238
+ if (!response.ok) {
239
+ const error = await response.text();
240
+ // Don't retry auth errors
241
+ if (response.status === 401 || response.status === 403) {
242
+ throw new OpenRouterAuthError(`Authentication failed: ${error}`);
243
+ }
244
+ // Rate limit errors
245
+ if (response.status === 429) {
246
+ const retryAfter = response.headers.get('Retry-After');
247
+ throw new OpenRouterRateLimitError(`Rate limit exceeded: ${error}`, retryAfter ? parseInt(retryAfter, 10) : undefined);
248
+ }
249
+ throw new OpenRouterError(`OpenRouter API error (${response.status}): ${error}`);
250
+ }
251
+ data = await response.json();
252
+ break; // Success, exit retry loop
253
+ }
254
+ catch (error) {
255
+ // Don't retry auth errors - they'll be thrown as OpenRouterAuthError
256
+ if (error instanceof OpenRouterAuthError) {
257
+ throw error;
258
+ }
259
+ // Don't retry rate limit errors with explicit retry-after
260
+ if (error instanceof OpenRouterRateLimitError && error.retryAfter) {
261
+ throw error;
262
+ }
263
+ lastError = error instanceof Error ? error : new Error(String(error));
264
+ if (attempt === this.maxRetries) {
265
+ break;
266
+ }
267
+ const delay = this.baseRetryDelay * Math.pow(2, attempt);
268
+ await this.sleep(delay);
269
+ }
270
+ }
271
+ if (!data) {
272
+ throw lastError || new OpenRouterError('OpenRouter API error: max retries exceeded', 'MAX_RETRIES');
273
+ }
274
+ // Fill in results and cache
275
+ for (let i = 0; i < data.data.length; i++) {
276
+ const embedding = data.data[i].embedding;
277
+ const originalIndex = uncachedIndices[i];
278
+ const text = uncachedTexts[i];
279
+ results[originalIndex] = embedding;
280
+ this.embeddingCache.set(this.hashText(text), embedding);
281
+ }
282
+ return results;
283
+ }
284
+ /**
285
+ * Chat completion - for intelligent context understanding
286
+ */
287
+ async chat(messages, options) {
288
+ let lastError = null;
289
+ let data = null;
290
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
291
+ try {
292
+ // Apply rate limiting before each attempt
293
+ await this.applyRateLimit();
294
+ const response = await this.fetchWithTimeout(OPENROUTER_CHAT_URL, {
295
+ method: 'POST',
296
+ headers: {
297
+ 'Authorization': `Bearer ${this.apiKey}`,
298
+ 'Content-Type': 'application/json',
299
+ 'HTTP-Referer': this.siteUrl,
300
+ 'X-Title': this.siteName
301
+ },
302
+ body: JSON.stringify({
303
+ model: options?.model || this.chatModel,
304
+ messages,
305
+ temperature: options?.temperature ?? 0.3,
306
+ max_tokens: options?.maxTokens ?? 4096
307
+ })
308
+ }, this.requestTimeout);
309
+ if (!response.ok) {
310
+ const error = await response.text();
311
+ // Don't retry auth errors
312
+ if (response.status === 401 || response.status === 403) {
313
+ throw new OpenRouterAuthError(`Authentication failed: ${error}`);
314
+ }
315
+ // Rate limit errors
316
+ if (response.status === 429) {
317
+ const retryAfter = response.headers.get('Retry-After');
318
+ throw new OpenRouterRateLimitError(`Rate limit exceeded: ${error}`, retryAfter ? parseInt(retryAfter, 10) : undefined);
319
+ }
320
+ throw new OpenRouterError(`OpenRouter Chat API error (${response.status}): ${error}`);
321
+ }
322
+ data = await response.json();
323
+ break; // Success, exit retry loop
324
+ }
325
+ catch (error) {
326
+ // Don't retry auth errors - they'll be thrown as OpenRouterAuthError
327
+ if (error instanceof OpenRouterAuthError) {
328
+ throw error;
329
+ }
330
+ // Don't retry rate limit errors with explicit retry-after
331
+ if (error instanceof OpenRouterRateLimitError && error.retryAfter) {
332
+ throw error;
333
+ }
334
+ lastError = error instanceof Error ? error : new Error(String(error));
335
+ if (attempt === this.maxRetries) {
336
+ break;
337
+ }
338
+ const delay = this.baseRetryDelay * Math.pow(2, attempt);
339
+ await this.sleep(delay);
340
+ }
341
+ }
342
+ if (!data) {
343
+ throw lastError || new OpenRouterError('OpenRouter Chat API error: max retries exceeded', 'MAX_RETRIES');
344
+ }
345
+ const firstChoice = data?.choices && Array.isArray(data.choices) ? data.choices[0] : undefined;
346
+ const content = firstChoice?.message?.content;
347
+ if (typeof content !== 'string' || content.trim().length === 0) {
348
+ throw new Error('OpenRouter Chat API returned an unexpected response structure: missing or empty message content.');
349
+ }
350
+ return content;
351
+ }
352
+ /**
353
+ * Analyze codebase content intelligently
354
+ */
355
+ async analyzeContent(content, analysisType) {
356
+ const systemPrompts = {
357
+ summarize: `You are an expert code analyzer. Provide a concise summary of the given code or documentation.
358
+ Focus on: purpose, key functionality, dependencies, and important patterns.
359
+ Keep the summary under 500 words.`,
360
+ extract_workflows: `You are an expert at analyzing codebases to identify workflows.
361
+ Extract the main workflows from the given code. For each workflow, identify:
362
+ 1. Entry points (API routes, CLI commands, event handlers)
363
+ 2. Key processing steps
364
+ 3. Dependencies and integrations
365
+ 4. Data flow
366
+ Output as structured markdown with file:line references where possible.`,
367
+ extract_architecture: `You are an expert software architect.
368
+ Analyze the given code to extract the architecture patterns:
369
+ 1. Project structure and organization
370
+ 2. Design patterns used
371
+ 3. Key components and their responsibilities
372
+ 4. Integration points
373
+ 5. Technology stack
374
+ Output as structured markdown.`,
375
+ suggest_context: `You are an AI context engineering expert.
376
+ Analyze the given codebase content and suggest:
377
+ 1. Key context files that should be created
378
+ 2. Important workflows to document
379
+ 3. Agent configurations needed
380
+ 4. Commands that would be useful
381
+ 5. Knowledge base entries to capture
382
+ Be specific and actionable in your suggestions.`
383
+ };
384
+ return this.chat([
385
+ { role: 'system', content: systemPrompts[analysisType] },
386
+ { role: 'user', content }
387
+ ]);
388
+ }
389
+ /**
390
+ * Calculate cosine similarity between two embeddings
391
+ */
392
+ static cosineSimilarity(a, b) {
393
+ if (a.length !== b.length) {
394
+ throw new Error('Embeddings must have the same dimension');
395
+ }
396
+ let dotProduct = 0;
397
+ let normA = 0;
398
+ let normB = 0;
399
+ for (let i = 0; i < a.length; i++) {
400
+ dotProduct += a[i] * b[i];
401
+ normA += a[i] * a[i];
402
+ normB += b[i] * b[i];
403
+ }
404
+ const magnitude = Math.sqrt(normA) * Math.sqrt(normB);
405
+ if (magnitude === 0)
406
+ return 0;
407
+ return dotProduct / magnitude;
408
+ }
409
+ /**
410
+ * Get embedding dimension
411
+ */
412
+ getDimension() {
413
+ return EMBEDDING_DIMENSION;
414
+ }
415
+ /**
416
+ * Clear embedding cache
417
+ */
418
+ clearCache() {
419
+ this.embeddingCache.clear();
420
+ }
421
+ /**
422
+ * Get cache size
423
+ */
424
+ getCacheSize() {
425
+ return this.embeddingCache.size;
426
+ }
427
+ /**
428
+ * Hash text for caching
429
+ */
430
+ hashText(text) {
431
+ return createHash('md5').update(text).digest('hex');
432
+ }
433
+ }
434
+ /**
435
+ * Create OpenRouter client from environment
436
+ */
437
+ export function createOpenRouterClient() {
438
+ const apiKey = process.env.OPENROUTER_API_KEY;
439
+ if (!apiKey) {
440
+ throw new Error('OPENROUTER_API_KEY environment variable is required.\n' +
441
+ 'Get your API key at: https://openrouter.ai/keys');
442
+ }
443
+ return new OpenRouterClient({
444
+ apiKey,
445
+ embeddingModel: process.env.OPENROUTER_EMBEDDING_MODEL,
446
+ chatModel: process.env.OPENROUTER_CHAT_MODEL
447
+ });
448
+ }
449
+ /**
450
+ * Check if OpenRouter API key is available
451
+ */
452
+ export function hasOpenRouterKey() {
453
+ return !!process.env.OPENROUTER_API_KEY;
454
+ }
455
+ //# sourceMappingURL=openrouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/embeddings/openrouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * AI Context
3
+ *
4
+ * Unified AI Context Engineering package.
5
+ * Provides intelligent context for all AI coding assistants.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export { DatabaseClient, type ContextItem, type GraphEdge, type GitCommit, type SyncState, type AIToolConfig, type SearchResult } from './db/client.js';
10
+ export { SCHEMA_VERSION, RELATION_TYPES, CONTEXT_TYPES, SYNC_STATUSES, AI_TOOLS, AI_TOOL_FOLDERS, type RelationType, type ContextType, type SyncStatus, type AITool } from './db/schema.js';
11
+ export { OpenRouterClient, createOpenRouterClient, hasOpenRouterKey, type OpenRouterConfig, type ChatMessage } from './embeddings/openrouter.js';
12
+ export { IntelligentAnalyzer, createIntelligentAnalyzer, type DiscoveredFile, type AnalysisResult } from './analyzer/intelligent-analyzer.js';
13
+ export { createServer, startServer, main as startMcpServer, type ServerConfig } from './mcp.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,QAAQ,EACR,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,YAAY,EACZ,WAAW,EACX,IAAI,IAAI,cAAc,EACtB,KAAK,YAAY,EAClB,MAAM,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ /**
2
+ * AI Context
3
+ *
4
+ * Unified AI Context Engineering package.
5
+ * Provides intelligent context for all AI coding assistants.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ // Database
10
+ export { DatabaseClient } from './db/client.js';
11
+ export { SCHEMA_VERSION, RELATION_TYPES, CONTEXT_TYPES, SYNC_STATUSES, AI_TOOLS, AI_TOOL_FOLDERS } from './db/schema.js';
12
+ // OpenRouter / Embeddings
13
+ export { OpenRouterClient, createOpenRouterClient, hasOpenRouterKey } from './embeddings/openrouter.js';
14
+ // Analyzer
15
+ export { IntelligentAnalyzer, createIntelligentAnalyzer } from './analyzer/intelligent-analyzer.js';
16
+ // MCP Server
17
+ export { createServer, startServer, main as startMcpServer } from './mcp.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,WAAW;AACX,OAAO,EACL,cAAc,EAOf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,QAAQ,EACR,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AAExB,0BAA0B;AAC1B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAGjB,MAAM,4BAA4B,CAAC;AAEpC,WAAW;AACX,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAG1B,MAAM,oCAAoC,CAAC;AAE5C,aAAa;AACb,OAAO,EACL,YAAY,EACZ,WAAW,EACX,IAAI,IAAI,cAAc,EAEvB,MAAM,UAAU,CAAC"}
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ /**
2
+ * MCP Server
3
+ *
4
+ * Model Context Protocol server for AI context.
5
+ * Provides tools, resources, and prompts for AI coding assistants.
6
+ */
7
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ /**
9
+ * Server configuration
10
+ */
11
+ export interface ServerConfig {
12
+ projectRoot: string;
13
+ dbPath?: string;
14
+ name?: string;
15
+ version?: string;
16
+ }
17
+ /**
18
+ * Create and start the MCP server
19
+ */
20
+ export declare function createServer(config: ServerConfig): Promise<McpServer>;
21
+ /**
22
+ * Start the server with stdio transport
23
+ */
24
+ export declare function startServer(config: ServerConfig): Promise<void>;
25
+ /**
26
+ * Main entry point
27
+ */
28
+ export declare function main(): Promise<void>;
29
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAiS3E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CASrE;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ1C"}