claude-code-workflow 6.2.7 → 6.3.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 (208) hide show
  1. package/.claude/CLAUDE.md +16 -1
  2. package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +11 -4
  3. package/.claude/workflows/cli-templates/protocols/write-protocol.md +10 -75
  4. package/.claude/workflows/cli-tools-usage.md +14 -24
  5. package/.codex/AGENTS.md +51 -1
  6. package/.codex/prompts/compact.md +378 -0
  7. package/.gemini/GEMINI.md +57 -20
  8. package/ccw/dist/cli.d.ts.map +1 -1
  9. package/ccw/dist/cli.js +21 -8
  10. package/ccw/dist/cli.js.map +1 -1
  11. package/ccw/dist/commands/cli.d.ts +2 -0
  12. package/ccw/dist/commands/cli.d.ts.map +1 -1
  13. package/ccw/dist/commands/cli.js +129 -8
  14. package/ccw/dist/commands/cli.js.map +1 -1
  15. package/ccw/dist/commands/hook.d.ts.map +1 -1
  16. package/ccw/dist/commands/hook.js +3 -2
  17. package/ccw/dist/commands/hook.js.map +1 -1
  18. package/ccw/dist/config/litellm-api-config-manager.d.ts +180 -0
  19. package/ccw/dist/config/litellm-api-config-manager.d.ts.map +1 -0
  20. package/ccw/dist/config/litellm-api-config-manager.js +770 -0
  21. package/ccw/dist/config/litellm-api-config-manager.js.map +1 -0
  22. package/ccw/dist/config/provider-models.d.ts +73 -0
  23. package/ccw/dist/config/provider-models.d.ts.map +1 -0
  24. package/ccw/dist/config/provider-models.js +172 -0
  25. package/ccw/dist/config/provider-models.js.map +1 -0
  26. package/ccw/dist/core/cache-manager.d.ts.map +1 -1
  27. package/ccw/dist/core/cache-manager.js +3 -5
  28. package/ccw/dist/core/cache-manager.js.map +1 -1
  29. package/ccw/dist/core/dashboard-generator.d.ts.map +1 -1
  30. package/ccw/dist/core/dashboard-generator.js +3 -1
  31. package/ccw/dist/core/dashboard-generator.js.map +1 -1
  32. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  33. package/ccw/dist/core/routes/cli-routes.js +169 -0
  34. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  35. package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -1
  36. package/ccw/dist/core/routes/codexlens-routes.js +234 -18
  37. package/ccw/dist/core/routes/codexlens-routes.js.map +1 -1
  38. package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -1
  39. package/ccw/dist/core/routes/hooks-routes.js +30 -32
  40. package/ccw/dist/core/routes/hooks-routes.js.map +1 -1
  41. package/ccw/dist/core/routes/litellm-api-routes.d.ts +21 -0
  42. package/ccw/dist/core/routes/litellm-api-routes.d.ts.map +1 -0
  43. package/ccw/dist/core/routes/litellm-api-routes.js +780 -0
  44. package/ccw/dist/core/routes/litellm-api-routes.js.map +1 -0
  45. package/ccw/dist/core/routes/litellm-routes.d.ts +20 -0
  46. package/ccw/dist/core/routes/litellm-routes.d.ts.map +1 -0
  47. package/ccw/dist/core/routes/litellm-routes.js +85 -0
  48. package/ccw/dist/core/routes/litellm-routes.js.map +1 -0
  49. package/ccw/dist/core/routes/mcp-routes.js +2 -2
  50. package/ccw/dist/core/routes/mcp-routes.js.map +1 -1
  51. package/ccw/dist/core/routes/status-routes.d.ts.map +1 -1
  52. package/ccw/dist/core/routes/status-routes.js +39 -0
  53. package/ccw/dist/core/routes/status-routes.js.map +1 -1
  54. package/ccw/dist/core/routes/system-routes.js +1 -1
  55. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  56. package/ccw/dist/core/server.d.ts.map +1 -1
  57. package/ccw/dist/core/server.js +15 -1
  58. package/ccw/dist/core/server.js.map +1 -1
  59. package/ccw/dist/mcp-server/index.js +1 -1
  60. package/ccw/dist/mcp-server/index.js.map +1 -1
  61. package/ccw/dist/tools/claude-cli-tools.d.ts +82 -0
  62. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -0
  63. package/ccw/dist/tools/claude-cli-tools.js +216 -0
  64. package/ccw/dist/tools/claude-cli-tools.js.map +1 -0
  65. package/ccw/dist/tools/cli-executor.d.ts.map +1 -1
  66. package/ccw/dist/tools/cli-executor.js +76 -14
  67. package/ccw/dist/tools/cli-executor.js.map +1 -1
  68. package/ccw/dist/tools/codex-lens.d.ts +9 -2
  69. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  70. package/ccw/dist/tools/codex-lens.js +114 -9
  71. package/ccw/dist/tools/codex-lens.js.map +1 -1
  72. package/ccw/dist/tools/context-cache-store.d.ts +136 -0
  73. package/ccw/dist/tools/context-cache-store.d.ts.map +1 -0
  74. package/ccw/dist/tools/context-cache-store.js +256 -0
  75. package/ccw/dist/tools/context-cache-store.js.map +1 -0
  76. package/ccw/dist/tools/context-cache.d.ts +56 -0
  77. package/ccw/dist/tools/context-cache.d.ts.map +1 -0
  78. package/ccw/dist/tools/context-cache.js +294 -0
  79. package/ccw/dist/tools/context-cache.js.map +1 -0
  80. package/ccw/dist/tools/core-memory.d.ts.map +1 -1
  81. package/ccw/dist/tools/core-memory.js +33 -19
  82. package/ccw/dist/tools/core-memory.js.map +1 -1
  83. package/ccw/dist/tools/index.d.ts.map +1 -1
  84. package/ccw/dist/tools/index.js +2 -0
  85. package/ccw/dist/tools/index.js.map +1 -1
  86. package/ccw/dist/tools/litellm-client.d.ts +85 -0
  87. package/ccw/dist/tools/litellm-client.d.ts.map +1 -0
  88. package/ccw/dist/tools/litellm-client.js +188 -0
  89. package/ccw/dist/tools/litellm-client.js.map +1 -0
  90. package/ccw/dist/tools/litellm-executor.d.ts +34 -0
  91. package/ccw/dist/tools/litellm-executor.d.ts.map +1 -0
  92. package/ccw/dist/tools/litellm-executor.js +192 -0
  93. package/ccw/dist/tools/litellm-executor.js.map +1 -0
  94. package/ccw/dist/tools/pattern-parser.d.ts +55 -0
  95. package/ccw/dist/tools/pattern-parser.d.ts.map +1 -0
  96. package/ccw/dist/tools/pattern-parser.js +237 -0
  97. package/ccw/dist/tools/pattern-parser.js.map +1 -0
  98. package/ccw/dist/tools/smart-search.d.ts +1 -0
  99. package/ccw/dist/tools/smart-search.d.ts.map +1 -1
  100. package/ccw/dist/tools/smart-search.js +117 -41
  101. package/ccw/dist/tools/smart-search.js.map +1 -1
  102. package/ccw/dist/types/litellm-api-config.d.ts +294 -0
  103. package/ccw/dist/types/litellm-api-config.d.ts.map +1 -0
  104. package/ccw/dist/types/litellm-api-config.js +8 -0
  105. package/ccw/dist/types/litellm-api-config.js.map +1 -0
  106. package/ccw/src/cli.ts +258 -244
  107. package/ccw/src/commands/cli.ts +153 -9
  108. package/ccw/src/commands/hook.ts +3 -2
  109. package/ccw/src/config/.litellm-api-config-manager.ts.2025-12-23T11-57-43-727Z.bak +441 -0
  110. package/ccw/src/config/litellm-api-config-manager.ts +1012 -0
  111. package/ccw/src/config/provider-models.ts +222 -0
  112. package/ccw/src/core/cache-manager.ts +292 -294
  113. package/ccw/src/core/dashboard-generator.ts +3 -1
  114. package/ccw/src/core/routes/cli-routes.ts +192 -0
  115. package/ccw/src/core/routes/codexlens-routes.ts +241 -19
  116. package/ccw/src/core/routes/hooks-routes.ts +399 -405
  117. package/ccw/src/core/routes/litellm-api-routes.ts +930 -0
  118. package/ccw/src/core/routes/litellm-routes.ts +107 -0
  119. package/ccw/src/core/routes/mcp-routes.ts +1271 -1271
  120. package/ccw/src/core/routes/status-routes.ts +51 -0
  121. package/ccw/src/core/routes/system-routes.ts +1 -1
  122. package/ccw/src/core/server.ts +15 -1
  123. package/ccw/src/mcp-server/index.ts +1 -1
  124. package/ccw/src/templates/dashboard-css/12-cli-legacy.css +44 -0
  125. package/ccw/src/templates/dashboard-css/31-api-settings.css +2265 -0
  126. package/ccw/src/templates/dashboard-js/components/cli-history.js +15 -8
  127. package/ccw/src/templates/dashboard-js/components/cli-status.js +323 -9
  128. package/ccw/src/templates/dashboard-js/components/navigation.js +329 -313
  129. package/ccw/src/templates/dashboard-js/i18n.js +583 -1
  130. package/ccw/src/templates/dashboard-js/views/api-settings.js +3362 -0
  131. package/ccw/src/templates/dashboard-js/views/cli-manager.js +199 -24
  132. package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +1265 -27
  133. package/ccw/src/templates/dashboard.html +840 -831
  134. package/ccw/src/tools/claude-cli-tools.ts +300 -0
  135. package/ccw/src/tools/cli-executor.ts +83 -14
  136. package/ccw/src/tools/codex-lens.ts +146 -9
  137. package/ccw/src/tools/context-cache-store.ts +368 -0
  138. package/ccw/src/tools/context-cache.ts +393 -0
  139. package/ccw/src/tools/core-memory.ts +33 -19
  140. package/ccw/src/tools/index.ts +2 -0
  141. package/ccw/src/tools/litellm-client.ts +246 -0
  142. package/ccw/src/tools/litellm-executor.ts +241 -0
  143. package/ccw/src/tools/pattern-parser.ts +329 -0
  144. package/ccw/src/tools/smart-search.ts +142 -41
  145. package/ccw/src/types/litellm-api-config.ts +402 -0
  146. package/ccw-litellm/README.md +180 -0
  147. package/ccw-litellm/pyproject.toml +35 -0
  148. package/ccw-litellm/src/ccw_litellm/__init__.py +47 -0
  149. package/ccw-litellm/src/ccw_litellm/__pycache__/__init__.cpython-313.pyc +0 -0
  150. package/ccw-litellm/src/ccw_litellm/__pycache__/cli.cpython-313.pyc +0 -0
  151. package/ccw-litellm/src/ccw_litellm/cli.py +108 -0
  152. package/ccw-litellm/src/ccw_litellm/clients/__init__.py +12 -0
  153. package/ccw-litellm/src/ccw_litellm/clients/__pycache__/__init__.cpython-313.pyc +0 -0
  154. package/ccw-litellm/src/ccw_litellm/clients/__pycache__/litellm_embedder.cpython-313.pyc +0 -0
  155. package/ccw-litellm/src/ccw_litellm/clients/__pycache__/litellm_llm.cpython-313.pyc +0 -0
  156. package/ccw-litellm/src/ccw_litellm/clients/litellm_embedder.py +251 -0
  157. package/ccw-litellm/src/ccw_litellm/clients/litellm_llm.py +165 -0
  158. package/ccw-litellm/src/ccw_litellm/config/__init__.py +22 -0
  159. package/ccw-litellm/src/ccw_litellm/config/__pycache__/__init__.cpython-313.pyc +0 -0
  160. package/ccw-litellm/src/ccw_litellm/config/__pycache__/loader.cpython-313.pyc +0 -0
  161. package/ccw-litellm/src/ccw_litellm/config/__pycache__/models.cpython-313.pyc +0 -0
  162. package/ccw-litellm/src/ccw_litellm/config/loader.py +316 -0
  163. package/ccw-litellm/src/ccw_litellm/config/models.py +130 -0
  164. package/ccw-litellm/src/ccw_litellm/interfaces/__init__.py +14 -0
  165. package/ccw-litellm/src/ccw_litellm/interfaces/__pycache__/__init__.cpython-313.pyc +0 -0
  166. package/ccw-litellm/src/ccw_litellm/interfaces/__pycache__/embedder.cpython-313.pyc +0 -0
  167. package/ccw-litellm/src/ccw_litellm/interfaces/__pycache__/llm.cpython-313.pyc +0 -0
  168. package/ccw-litellm/src/ccw_litellm/interfaces/embedder.py +52 -0
  169. package/ccw-litellm/src/ccw_litellm/interfaces/llm.py +45 -0
  170. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  171. package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
  172. package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
  173. package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
  174. package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
  175. package/codex-lens/src/codexlens/cli/commands.py +378 -23
  176. package/codex-lens/src/codexlens/cli/embedding_manager.py +660 -56
  177. package/codex-lens/src/codexlens/cli/model_manager.py +31 -18
  178. package/codex-lens/src/codexlens/cli/output.py +12 -1
  179. package/codex-lens/src/codexlens/config.py +93 -0
  180. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  181. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  182. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  183. package/codex-lens/src/codexlens/search/chain_search.py +6 -2
  184. package/codex-lens/src/codexlens/search/hybrid_search.py +44 -21
  185. package/codex-lens/src/codexlens/search/ranking.py +1 -1
  186. package/codex-lens/src/codexlens/semantic/__init__.py +42 -0
  187. package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
  188. package/codex-lens/src/codexlens/semantic/__pycache__/base.cpython-313.pyc +0 -0
  189. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  190. package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
  191. package/codex-lens/src/codexlens/semantic/__pycache__/factory.cpython-313.pyc +0 -0
  192. package/codex-lens/src/codexlens/semantic/__pycache__/gpu_support.cpython-313.pyc +0 -0
  193. package/codex-lens/src/codexlens/semantic/__pycache__/litellm_embedder.cpython-313.pyc +0 -0
  194. package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
  195. package/codex-lens/src/codexlens/semantic/base.py +61 -0
  196. package/codex-lens/src/codexlens/semantic/chunker.py +43 -20
  197. package/codex-lens/src/codexlens/semantic/embedder.py +60 -13
  198. package/codex-lens/src/codexlens/semantic/factory.py +98 -0
  199. package/codex-lens/src/codexlens/semantic/gpu_support.py +225 -3
  200. package/codex-lens/src/codexlens/semantic/litellm_embedder.py +144 -0
  201. package/codex-lens/src/codexlens/semantic/rotational_embedder.py +434 -0
  202. package/codex-lens/src/codexlens/semantic/vector_store.py +33 -8
  203. package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
  204. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
  205. package/codex-lens/src/codexlens/storage/path_mapper.py +27 -1
  206. package/package.json +15 -5
  207. package/.codex/prompts.zip +0 -0
  208. package/ccw/package.json +0 -65
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litellm-client.d.ts","sourceRoot":"","sources":["../../src/tools/litellm-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,GAAE,aAAkB;IAMtC;;OAEG;YACW,aAAa;IAkD3B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAezC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAK/B;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAsB/E;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IASvE;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,GAAE,MAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;CAgB9F;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,CAKtE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO9D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAU/D"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * LiteLLM Client - Bridge between CCW and ccw-litellm Python package
3
+ * Provides LLM chat and embedding capabilities via spawned Python process
4
+ *
5
+ * Features:
6
+ * - Chat completions with multiple models
7
+ * - Text embeddings generation
8
+ * - Configuration management
9
+ * - JSON protocol communication
10
+ */
11
+ import { spawn } from 'child_process';
12
+ export class LiteLLMClient {
13
+ pythonPath;
14
+ configPath;
15
+ timeout;
16
+ constructor(config = {}) {
17
+ this.pythonPath = config.pythonPath || 'python';
18
+ this.configPath = config.configPath;
19
+ this.timeout = config.timeout || 60000;
20
+ }
21
+ /**
22
+ * Execute Python ccw-litellm command
23
+ */
24
+ async executePython(args, options = {}) {
25
+ const timeout = options.timeout || this.timeout;
26
+ return new Promise((resolve, reject) => {
27
+ const proc = spawn(this.pythonPath, ['-m', 'ccw_litellm.cli', ...args], {
28
+ stdio: ['pipe', 'pipe', 'pipe'],
29
+ env: { ...process.env }
30
+ });
31
+ let stdout = '';
32
+ let stderr = '';
33
+ let timedOut = false;
34
+ // Set up timeout
35
+ const timeoutId = setTimeout(() => {
36
+ timedOut = true;
37
+ proc.kill('SIGTERM');
38
+ reject(new Error(`Command timed out after ${timeout}ms`));
39
+ }, timeout);
40
+ proc.stdout.on('data', (data) => {
41
+ stdout += data.toString();
42
+ });
43
+ proc.stderr.on('data', (data) => {
44
+ stderr += data.toString();
45
+ });
46
+ proc.on('error', (error) => {
47
+ clearTimeout(timeoutId);
48
+ reject(new Error(`Failed to spawn Python process: ${error.message}`));
49
+ });
50
+ proc.on('close', (code) => {
51
+ clearTimeout(timeoutId);
52
+ if (timedOut) {
53
+ return; // Already rejected
54
+ }
55
+ if (code === 0) {
56
+ resolve(stdout.trim());
57
+ }
58
+ else {
59
+ const errorMsg = stderr.trim() || `Process exited with code ${code}`;
60
+ reject(new Error(errorMsg));
61
+ }
62
+ });
63
+ });
64
+ }
65
+ /**
66
+ * Check if ccw-litellm is available
67
+ */
68
+ async isAvailable() {
69
+ try {
70
+ await this.executePython(['version'], { timeout: 5000 });
71
+ return true;
72
+ }
73
+ catch {
74
+ return false;
75
+ }
76
+ }
77
+ /**
78
+ * Get status information
79
+ */
80
+ async getStatus() {
81
+ try {
82
+ const output = await this.executePython(['version'], { timeout: 5000 });
83
+ return {
84
+ available: true,
85
+ version: output.trim()
86
+ };
87
+ }
88
+ catch (error) {
89
+ return {
90
+ available: false,
91
+ error: error.message
92
+ };
93
+ }
94
+ }
95
+ /**
96
+ * Get current configuration
97
+ */
98
+ async getConfig() {
99
+ const output = await this.executePython(['config', '--json']);
100
+ return JSON.parse(output);
101
+ }
102
+ /**
103
+ * Generate embeddings for texts
104
+ */
105
+ async embed(texts, model = 'default') {
106
+ if (!texts || texts.length === 0) {
107
+ throw new Error('texts array cannot be empty');
108
+ }
109
+ const args = ['embed', '--model', model, '--output', 'json'];
110
+ // Add texts as arguments
111
+ for (const text of texts) {
112
+ args.push(text);
113
+ }
114
+ const output = await this.executePython(args, { timeout: this.timeout * 2 });
115
+ const vectors = JSON.parse(output);
116
+ return {
117
+ vectors,
118
+ dimensions: vectors[0]?.length || 0,
119
+ model
120
+ };
121
+ }
122
+ /**
123
+ * Chat with LLM
124
+ */
125
+ async chat(message, model = 'default') {
126
+ if (!message) {
127
+ throw new Error('message cannot be empty');
128
+ }
129
+ const args = ['chat', '--model', model, message];
130
+ return this.executePython(args, { timeout: this.timeout * 2 });
131
+ }
132
+ /**
133
+ * Multi-turn chat with messages array
134
+ */
135
+ async chatMessages(messages, model = 'default') {
136
+ if (!messages || messages.length === 0) {
137
+ throw new Error('messages array cannot be empty');
138
+ }
139
+ // For now, just use the last user message
140
+ // TODO: Implement full message history support in ccw-litellm
141
+ const lastMessage = messages[messages.length - 1];
142
+ const content = await this.chat(lastMessage.content, model);
143
+ return {
144
+ content,
145
+ model,
146
+ usage: undefined // TODO: Add usage tracking
147
+ };
148
+ }
149
+ }
150
+ // Singleton instance
151
+ let _client = null;
152
+ /**
153
+ * Get or create singleton LiteLLM client
154
+ */
155
+ export function getLiteLLMClient(config) {
156
+ if (!_client) {
157
+ _client = new LiteLLMClient(config);
158
+ }
159
+ return _client;
160
+ }
161
+ /**
162
+ * Check if LiteLLM is available
163
+ */
164
+ export async function checkLiteLLMAvailable() {
165
+ try {
166
+ const client = getLiteLLMClient();
167
+ return await client.isAvailable();
168
+ }
169
+ catch {
170
+ return false;
171
+ }
172
+ }
173
+ /**
174
+ * Get LiteLLM status
175
+ */
176
+ export async function getLiteLLMStatus() {
177
+ try {
178
+ const client = getLiteLLMClient();
179
+ return await client.getStatus();
180
+ }
181
+ catch (error) {
182
+ return {
183
+ available: false,
184
+ error: error.message
185
+ };
186
+ }
187
+ }
188
+ //# sourceMappingURL=litellm-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litellm-client.js","sourceRoot":"","sources":["../../src/tools/litellm-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * LiteLLM Executor - Execute LiteLLM endpoints with context caching
3
+ * Integrates with context-cache for file packing and LiteLLM client for API calls
4
+ */
5
+ export interface LiteLLMExecutionOptions {
6
+ prompt: string;
7
+ endpointId: string;
8
+ baseDir: string;
9
+ cwd?: string;
10
+ includeDirs?: string[];
11
+ enableCache?: boolean;
12
+ onOutput?: (data: {
13
+ type: string;
14
+ data: string;
15
+ }) => void;
16
+ }
17
+ export interface LiteLLMExecutionResult {
18
+ success: boolean;
19
+ output: string;
20
+ model: string;
21
+ provider: string;
22
+ cacheUsed: boolean;
23
+ cachedFiles?: string[];
24
+ error?: string;
25
+ }
26
+ /**
27
+ * Extract @patterns from prompt text
28
+ */
29
+ export declare function extractPatterns(prompt: string): string[];
30
+ /**
31
+ * Execute LiteLLM endpoint with optional context caching
32
+ */
33
+ export declare function executeLiteLLMEndpoint(options: LiteLLMExecutionOptions): Promise<LiteLLMExecutionResult>;
34
+ //# sourceMappingURL=litellm-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litellm-executor.d.ts","sourceRoot":"","sources":["../../src/tools/litellm-executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CASxD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CA+JjC"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * LiteLLM Executor - Execute LiteLLM endpoints with context caching
3
+ * Integrates with context-cache for file packing and LiteLLM client for API calls
4
+ */
5
+ import { getLiteLLMClient } from './litellm-client.js';
6
+ import { handler as contextCacheHandler } from './context-cache.js';
7
+ import { findEndpointById, getProviderWithResolvedEnvVars, } from '../config/litellm-api-config-manager.js';
8
+ /**
9
+ * Extract @patterns from prompt text
10
+ */
11
+ export function extractPatterns(prompt) {
12
+ // Match @path patterns: @src/**/*.ts, @CLAUDE.md, @../shared/**/*
13
+ const regex = /@([^\s]+)/g;
14
+ const patterns = [];
15
+ let match;
16
+ while ((match = regex.exec(prompt)) !== null) {
17
+ patterns.push('@' + match[1]);
18
+ }
19
+ return patterns;
20
+ }
21
+ /**
22
+ * Execute LiteLLM endpoint with optional context caching
23
+ */
24
+ export async function executeLiteLLMEndpoint(options) {
25
+ const { prompt, endpointId, baseDir, cwd, includeDirs, enableCache, onOutput } = options;
26
+ // 1. Find endpoint configuration
27
+ const endpoint = findEndpointById(baseDir, endpointId);
28
+ if (!endpoint) {
29
+ return {
30
+ success: false,
31
+ output: '',
32
+ model: '',
33
+ provider: '',
34
+ cacheUsed: false,
35
+ error: `Endpoint not found: ${endpointId}`,
36
+ };
37
+ }
38
+ // 2. Get provider with resolved env vars
39
+ const provider = getProviderWithResolvedEnvVars(baseDir, endpoint.providerId);
40
+ if (!provider) {
41
+ return {
42
+ success: false,
43
+ output: '',
44
+ model: '',
45
+ provider: '',
46
+ cacheUsed: false,
47
+ error: `Provider not found: ${endpoint.providerId}`,
48
+ };
49
+ }
50
+ // Verify API key is available
51
+ if (!provider.resolvedApiKey) {
52
+ return {
53
+ success: false,
54
+ output: '',
55
+ model: endpoint.model,
56
+ provider: provider.type,
57
+ cacheUsed: false,
58
+ error: `API key not configured for provider: ${provider.name}`,
59
+ };
60
+ }
61
+ // 3. Process context cache if enabled
62
+ let finalPrompt = prompt;
63
+ let cacheUsed = false;
64
+ let cachedFiles = [];
65
+ const shouldCache = enableCache ?? endpoint.cacheStrategy.enabled;
66
+ if (shouldCache) {
67
+ const patterns = extractPatterns(prompt);
68
+ if (patterns.length > 0) {
69
+ if (onOutput) {
70
+ onOutput({ type: 'stderr', data: `[Context cache: Found ${patterns.length} @patterns]\n` });
71
+ }
72
+ // Pack files into cache
73
+ const packResult = await contextCacheHandler({
74
+ operation: 'pack',
75
+ patterns,
76
+ cwd: cwd || process.cwd(),
77
+ include_dirs: includeDirs,
78
+ ttl: endpoint.cacheStrategy.ttlMinutes * 60 * 1000,
79
+ max_file_size: endpoint.cacheStrategy.maxSizeKB * 1024,
80
+ });
81
+ if (packResult.success && packResult.result) {
82
+ const pack = packResult.result;
83
+ if (onOutput) {
84
+ onOutput({
85
+ type: 'stderr',
86
+ data: `[Context cache: Packed ${pack.files_packed} files, ${pack.total_bytes} bytes]\n`,
87
+ });
88
+ }
89
+ // Read cached content
90
+ const readResult = await contextCacheHandler({
91
+ operation: 'read',
92
+ session_id: pack.session_id,
93
+ limit: endpoint.cacheStrategy.maxSizeKB * 1024,
94
+ });
95
+ if (readResult.success && readResult.result) {
96
+ const read = readResult.result;
97
+ // Prepend cached content to prompt
98
+ finalPrompt = `${read.content}\n\n---\n\n${prompt}`;
99
+ cacheUsed = true;
100
+ cachedFiles = pack.files_packed ? Array(pack.files_packed).fill('...') : [];
101
+ if (onOutput) {
102
+ onOutput({ type: 'stderr', data: `[Context cache: Applied to prompt]\n` });
103
+ }
104
+ }
105
+ }
106
+ else if (packResult.error) {
107
+ if (onOutput) {
108
+ onOutput({ type: 'stderr', data: `[Context cache warning: ${packResult.error}]\n` });
109
+ }
110
+ }
111
+ }
112
+ }
113
+ // 4. Call LiteLLM
114
+ try {
115
+ if (onOutput) {
116
+ onOutput({
117
+ type: 'stderr',
118
+ data: `[LiteLLM: Calling ${provider.type}/${endpoint.model}]\n`,
119
+ });
120
+ }
121
+ const client = getLiteLLMClient({
122
+ pythonPath: 'python',
123
+ timeout: 120000, // 2 minutes
124
+ });
125
+ // Configure provider credentials via environment
126
+ // LiteLLM uses standard env vars like OPENAI_API_KEY, ANTHROPIC_API_KEY
127
+ const envVarName = getProviderEnvVarName(provider.type);
128
+ if (envVarName) {
129
+ process.env[envVarName] = provider.resolvedApiKey;
130
+ }
131
+ // Set base URL if custom
132
+ if (provider.apiBase) {
133
+ const baseUrlEnvVar = getProviderBaseUrlEnvVarName(provider.type);
134
+ if (baseUrlEnvVar) {
135
+ process.env[baseUrlEnvVar] = provider.apiBase;
136
+ }
137
+ }
138
+ // Use litellm-client to call chat
139
+ const response = await client.chat(finalPrompt, endpoint.model);
140
+ if (onOutput) {
141
+ onOutput({ type: 'stdout', data: response });
142
+ }
143
+ return {
144
+ success: true,
145
+ output: response,
146
+ model: endpoint.model,
147
+ provider: provider.type,
148
+ cacheUsed,
149
+ cachedFiles,
150
+ };
151
+ }
152
+ catch (error) {
153
+ const errorMsg = error.message;
154
+ if (onOutput) {
155
+ onOutput({ type: 'stderr', data: `[LiteLLM error: ${errorMsg}]\n` });
156
+ }
157
+ return {
158
+ success: false,
159
+ output: '',
160
+ model: endpoint.model,
161
+ provider: provider.type,
162
+ cacheUsed,
163
+ error: errorMsg,
164
+ };
165
+ }
166
+ }
167
+ /**
168
+ * Get environment variable name for provider API key
169
+ */
170
+ function getProviderEnvVarName(providerType) {
171
+ const envVarMap = {
172
+ openai: 'OPENAI_API_KEY',
173
+ anthropic: 'ANTHROPIC_API_KEY',
174
+ google: 'GOOGLE_API_KEY',
175
+ azure: 'AZURE_API_KEY',
176
+ mistral: 'MISTRAL_API_KEY',
177
+ deepseek: 'DEEPSEEK_API_KEY',
178
+ };
179
+ return envVarMap[providerType] || null;
180
+ }
181
+ /**
182
+ * Get environment variable name for provider base URL
183
+ */
184
+ function getProviderBaseUrlEnvVarName(providerType) {
185
+ const envVarMap = {
186
+ openai: 'OPENAI_API_BASE',
187
+ anthropic: 'ANTHROPIC_API_BASE',
188
+ azure: 'AZURE_API_BASE',
189
+ };
190
+ return envVarMap[providerType] || null;
191
+ }
192
+ //# sourceMappingURL=litellm-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litellm-executor.js","sourceRoot":"","sources":["../../src/tools/litellm-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Pattern Parser - Parse @expression patterns to file lists
3
+ * Supports glob patterns like @src/**.ts, @CLAUDE.md, @../shared/**
4
+ */
5
+ /** Result of parsing @patterns */
6
+ export interface PatternParseResult {
7
+ files: string[];
8
+ patterns: string[];
9
+ errors: string[];
10
+ stats: {
11
+ total_files: number;
12
+ total_patterns: number;
13
+ matched_patterns: number;
14
+ };
15
+ }
16
+ /** Options for pattern parsing */
17
+ export interface PatternParseOptions {
18
+ cwd?: string;
19
+ includeDirs?: string[];
20
+ ignore?: string[];
21
+ maxFiles?: number;
22
+ followSymlinks?: boolean;
23
+ }
24
+ /**
25
+ * Parse @expressions and return matched files
26
+ */
27
+ export declare function parsePatterns(patterns: string[], options?: PatternParseOptions): Promise<PatternParseResult>;
28
+ /**
29
+ * Pack files into a single content string with metadata headers
30
+ */
31
+ export declare function packFiles(files: string[], options?: {
32
+ includeMetadata?: boolean;
33
+ separator?: string;
34
+ maxFileSize?: number;
35
+ }): Promise<{
36
+ content: string;
37
+ packedFiles: string[];
38
+ skippedFiles: string[];
39
+ totalBytes: number;
40
+ }>;
41
+ /**
42
+ * Parse patterns and pack files in one call
43
+ */
44
+ export declare function parseAndPack(patterns: string[], options?: PatternParseOptions & {
45
+ includeMetadata?: boolean;
46
+ separator?: string;
47
+ maxFileSize?: number;
48
+ }): Promise<{
49
+ content: string;
50
+ parseResult: PatternParseResult;
51
+ packedFiles: string[];
52
+ skippedFiles: string[];
53
+ totalBytes: number;
54
+ }>;
55
+ //# sourceMappingURL=pattern-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-parser.d.ts","sourceRoot":"","sources":["../../src/tools/pattern-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,kCAAkC;AAClC,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AA4DD;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAqI7B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAkDD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,mBAAmB,GAAG;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAgBD"}