cast-code 1.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 (221) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +217 -0
  3. package/dist/app.module.js +45 -0
  4. package/dist/app.module.js.map +1 -0
  5. package/dist/common/common.module.js +49 -0
  6. package/dist/common/common.module.js.map +1 -0
  7. package/dist/common/constants/index.js +105 -0
  8. package/dist/common/constants/index.js.map +1 -0
  9. package/dist/common/index.js +24 -0
  10. package/dist/common/index.js.map +1 -0
  11. package/dist/common/services/config.service.js +119 -0
  12. package/dist/common/services/config.service.js.map +1 -0
  13. package/dist/common/services/llm.service.js +56 -0
  14. package/dist/common/services/llm.service.js.map +1 -0
  15. package/dist/common/services/markdown-parser.service.js +101 -0
  16. package/dist/common/services/markdown-parser.service.js.map +1 -0
  17. package/dist/common/services/markdown-renderer.service.js +220 -0
  18. package/dist/common/services/markdown-renderer.service.js.map +1 -0
  19. package/dist/common/services/multi-llm.service.js +115 -0
  20. package/dist/common/services/multi-llm.service.js.map +1 -0
  21. package/dist/common/types/index.js +20 -0
  22. package/dist/common/types/index.js.map +1 -0
  23. package/dist/common/types/markdown.types.js +6 -0
  24. package/dist/common/types/markdown.types.js.map +1 -0
  25. package/dist/main.js +84 -0
  26. package/dist/main.js.map +1 -0
  27. package/dist/modules/agents/agents.module.js +43 -0
  28. package/dist/modules/agents/agents.module.js.map +1 -0
  29. package/dist/modules/agents/definitions/architect.md +35 -0
  30. package/dist/modules/agents/definitions/backend.md +43 -0
  31. package/dist/modules/agents/definitions/coder.md +34 -0
  32. package/dist/modules/agents/definitions/devops.md +42 -0
  33. package/dist/modules/agents/definitions/frontend.md +46 -0
  34. package/dist/modules/agents/definitions/reviewer.md +35 -0
  35. package/dist/modules/agents/definitions/tester.md +41 -0
  36. package/dist/modules/agents/index.js +23 -0
  37. package/dist/modules/agents/index.js.map +1 -0
  38. package/dist/modules/agents/services/agent-loader.service.js +150 -0
  39. package/dist/modules/agents/services/agent-loader.service.js.map +1 -0
  40. package/dist/modules/agents/services/agent-registry.service.js +108 -0
  41. package/dist/modules/agents/services/agent-registry.service.js.map +1 -0
  42. package/dist/modules/agents/types/agent.types.js +6 -0
  43. package/dist/modules/agents/types/agent.types.js.map +1 -0
  44. package/dist/modules/agents/types/index.js +20 -0
  45. package/dist/modules/agents/types/index.js.map +1 -0
  46. package/dist/modules/config/config.module.js +38 -0
  47. package/dist/modules/config/config.module.js.map +1 -0
  48. package/dist/modules/config/index.js +24 -0
  49. package/dist/modules/config/index.js.map +1 -0
  50. package/dist/modules/config/services/config-commands.service.js +405 -0
  51. package/dist/modules/config/services/config-commands.service.js.map +1 -0
  52. package/dist/modules/config/services/config-manager.service.js +175 -0
  53. package/dist/modules/config/services/config-manager.service.js.map +1 -0
  54. package/dist/modules/config/services/init-config.service.js +238 -0
  55. package/dist/modules/config/services/init-config.service.js.map +1 -0
  56. package/dist/modules/config/types/config.types.js +163 -0
  57. package/dist/modules/config/types/config.types.js.map +1 -0
  58. package/dist/modules/config/types/index.js +20 -0
  59. package/dist/modules/config/types/index.js.map +1 -0
  60. package/dist/modules/core/core.module.js +60 -0
  61. package/dist/modules/core/core.module.js.map +1 -0
  62. package/dist/modules/core/index.js +22 -0
  63. package/dist/modules/core/index.js.map +1 -0
  64. package/dist/modules/core/services/deep-agent.service.js +575 -0
  65. package/dist/modules/core/services/deep-agent.service.js.map +1 -0
  66. package/dist/modules/core/services/plan-mode.service.js +225 -0
  67. package/dist/modules/core/services/plan-mode.service.js.map +1 -0
  68. package/dist/modules/git/git.module.js +48 -0
  69. package/dist/modules/git/git.module.js.map +1 -0
  70. package/dist/modules/git/index.js +23 -0
  71. package/dist/modules/git/index.js.map +1 -0
  72. package/dist/modules/git/services/code-review.service.js +330 -0
  73. package/dist/modules/git/services/code-review.service.js.map +1 -0
  74. package/dist/modules/git/services/commit-generator.service.js +403 -0
  75. package/dist/modules/git/services/commit-generator.service.js.map +1 -0
  76. package/dist/modules/git/services/index.js +21 -0
  77. package/dist/modules/git/services/index.js.map +1 -0
  78. package/dist/modules/git/services/monorepo-detector.service.js +338 -0
  79. package/dist/modules/git/services/monorepo-detector.service.js.map +1 -0
  80. package/dist/modules/git/services/pr-generator.service.js +429 -0
  81. package/dist/modules/git/services/pr-generator.service.js.map +1 -0
  82. package/dist/modules/git/services/release-notes.service.js +426 -0
  83. package/dist/modules/git/services/release-notes.service.js.map +1 -0
  84. package/dist/modules/git/types/git.types.js +6 -0
  85. package/dist/modules/git/types/git.types.js.map +1 -0
  86. package/dist/modules/git/types/index.js +20 -0
  87. package/dist/modules/git/types/index.js.map +1 -0
  88. package/dist/modules/mcp/catalog/mcp-templates.js +606 -0
  89. package/dist/modules/mcp/catalog/mcp-templates.js.map +1 -0
  90. package/dist/modules/mcp/index.js +23 -0
  91. package/dist/modules/mcp/index.js.map +1 -0
  92. package/dist/modules/mcp/mcp.module.js +35 -0
  93. package/dist/modules/mcp/mcp.module.js.map +1 -0
  94. package/dist/modules/mcp/services/mcp-client.service.js +289 -0
  95. package/dist/modules/mcp/services/mcp-client.service.js.map +1 -0
  96. package/dist/modules/mcp/services/mcp-registry.service.js +197 -0
  97. package/dist/modules/mcp/services/mcp-registry.service.js.map +1 -0
  98. package/dist/modules/mcp/types/index.js +20 -0
  99. package/dist/modules/mcp/types/index.js.map +1 -0
  100. package/dist/modules/mcp/types/mcp.types.js +6 -0
  101. package/dist/modules/mcp/types/mcp.types.js.map +1 -0
  102. package/dist/modules/memory/index.js +23 -0
  103. package/dist/modules/memory/index.js.map +1 -0
  104. package/dist/modules/memory/memory.module.js +35 -0
  105. package/dist/modules/memory/memory.module.js.map +1 -0
  106. package/dist/modules/memory/services/memory-tools.service.js +78 -0
  107. package/dist/modules/memory/services/memory-tools.service.js.map +1 -0
  108. package/dist/modules/memory/services/memory.service.js +169 -0
  109. package/dist/modules/memory/services/memory.service.js.map +1 -0
  110. package/dist/modules/memory/types/index.js +20 -0
  111. package/dist/modules/memory/types/index.js.map +1 -0
  112. package/dist/modules/memory/types/memory.types.js +6 -0
  113. package/dist/modules/memory/types/memory.types.js.map +1 -0
  114. package/dist/modules/mentions/index.js +22 -0
  115. package/dist/modules/mentions/index.js.map +1 -0
  116. package/dist/modules/mentions/mentions.module.js +32 -0
  117. package/dist/modules/mentions/mentions.module.js.map +1 -0
  118. package/dist/modules/mentions/services/mentions.service.js +336 -0
  119. package/dist/modules/mentions/services/mentions.service.js.map +1 -0
  120. package/dist/modules/mentions/types/index.js +20 -0
  121. package/dist/modules/mentions/types/index.js.map +1 -0
  122. package/dist/modules/mentions/types/mention.types.js +19 -0
  123. package/dist/modules/mentions/types/mention.types.js.map +1 -0
  124. package/dist/modules/permissions/index.js +23 -0
  125. package/dist/modules/permissions/index.js.map +1 -0
  126. package/dist/modules/permissions/permissions.module.js +35 -0
  127. package/dist/modules/permissions/permissions.module.js.map +1 -0
  128. package/dist/modules/permissions/services/permission.service.js +269 -0
  129. package/dist/modules/permissions/services/permission.service.js.map +1 -0
  130. package/dist/modules/permissions/services/prompt.service.js +116 -0
  131. package/dist/modules/permissions/services/prompt.service.js.map +1 -0
  132. package/dist/modules/permissions/types/permission.types.js +32 -0
  133. package/dist/modules/permissions/types/permission.types.js.map +1 -0
  134. package/dist/modules/project/index.js +24 -0
  135. package/dist/modules/project/index.js.map +1 -0
  136. package/dist/modules/project/project.module.js +38 -0
  137. package/dist/modules/project/project.module.js.map +1 -0
  138. package/dist/modules/project/services/project-analyzer.service.js +1063 -0
  139. package/dist/modules/project/services/project-analyzer.service.js.map +1 -0
  140. package/dist/modules/project/services/project-context.service.js +62 -0
  141. package/dist/modules/project/services/project-context.service.js.map +1 -0
  142. package/dist/modules/project/services/project-loader.service.js +147 -0
  143. package/dist/modules/project/services/project-loader.service.js.map +1 -0
  144. package/dist/modules/project/types/index.js +20 -0
  145. package/dist/modules/project/types/index.js.map +1 -0
  146. package/dist/modules/project/types/project.types.js +6 -0
  147. package/dist/modules/project/types/project.types.js.map +1 -0
  148. package/dist/modules/repl/index.js +21 -0
  149. package/dist/modules/repl/index.js.map +1 -0
  150. package/dist/modules/repl/repl.module.js +66 -0
  151. package/dist/modules/repl/repl.module.js.map +1 -0
  152. package/dist/modules/repl/services/commands/agent-commands.service.js +196 -0
  153. package/dist/modules/repl/services/commands/agent-commands.service.js.map +1 -0
  154. package/dist/modules/repl/services/commands/git-commands.service.js +500 -0
  155. package/dist/modules/repl/services/commands/git-commands.service.js.map +1 -0
  156. package/dist/modules/repl/services/commands/mcp-commands.service.js +579 -0
  157. package/dist/modules/repl/services/commands/mcp-commands.service.js.map +1 -0
  158. package/dist/modules/repl/services/commands/project-commands.service.js +226 -0
  159. package/dist/modules/repl/services/commands/project-commands.service.js.map +1 -0
  160. package/dist/modules/repl/services/commands/repl-commands.service.js +254 -0
  161. package/dist/modules/repl/services/commands/repl-commands.service.js.map +1 -0
  162. package/dist/modules/repl/services/repl.service.js +647 -0
  163. package/dist/modules/repl/services/repl.service.js.map +1 -0
  164. package/dist/modules/repl/services/smart-input.js +544 -0
  165. package/dist/modules/repl/services/smart-input.js.map +1 -0
  166. package/dist/modules/repl/services/welcome-screen.service.js +117 -0
  167. package/dist/modules/repl/services/welcome-screen.service.js.map +1 -0
  168. package/dist/modules/repl/utils/prompts-with-esc.js +187 -0
  169. package/dist/modules/repl/utils/prompts-with-esc.js.map +1 -0
  170. package/dist/modules/repl/utils/theme.js +185 -0
  171. package/dist/modules/repl/utils/theme.js.map +1 -0
  172. package/dist/modules/skills/definitions/general/file-operations.md +60 -0
  173. package/dist/modules/skills/definitions/general/git-operations.md +59 -0
  174. package/dist/modules/skills/definitions/general/planning.md +86 -0
  175. package/dist/modules/skills/definitions/general/search.md +59 -0
  176. package/dist/modules/skills/definitions/specialized/api-design.md +85 -0
  177. package/dist/modules/skills/definitions/specialized/database-operations.md +78 -0
  178. package/dist/modules/skills/definitions/specialized/frontend-bootstrap.md +71 -0
  179. package/dist/modules/skills/definitions/specialized/react-patterns.md +77 -0
  180. package/dist/modules/skills/definitions/specialized/testing-strategies.md +79 -0
  181. package/dist/modules/skills/index.js +23 -0
  182. package/dist/modules/skills/index.js.map +1 -0
  183. package/dist/modules/skills/services/skill-loader.service.js +130 -0
  184. package/dist/modules/skills/services/skill-loader.service.js.map +1 -0
  185. package/dist/modules/skills/services/skill-registry.service.js +96 -0
  186. package/dist/modules/skills/services/skill-registry.service.js.map +1 -0
  187. package/dist/modules/skills/skills.module.js +38 -0
  188. package/dist/modules/skills/skills.module.js.map +1 -0
  189. package/dist/modules/skills/types/index.js +20 -0
  190. package/dist/modules/skills/types/index.js.map +1 -0
  191. package/dist/modules/skills/types/skill.types.js +6 -0
  192. package/dist/modules/skills/types/skill.types.js.map +1 -0
  193. package/dist/modules/tasks/index.js +24 -0
  194. package/dist/modules/tasks/index.js.map +1 -0
  195. package/dist/modules/tasks/services/plan-executor.service.js +199 -0
  196. package/dist/modules/tasks/services/plan-executor.service.js.map +1 -0
  197. package/dist/modules/tasks/services/plan-mode.service.js +118 -0
  198. package/dist/modules/tasks/services/plan-mode.service.js.map +1 -0
  199. package/dist/modules/tasks/services/plan-persistence.service.js +148 -0
  200. package/dist/modules/tasks/services/plan-persistence.service.js.map +1 -0
  201. package/dist/modules/tasks/services/task-management.service.js +255 -0
  202. package/dist/modules/tasks/services/task-management.service.js.map +1 -0
  203. package/dist/modules/tasks/services/task-tools.service.js +270 -0
  204. package/dist/modules/tasks/services/task-tools.service.js.map +1 -0
  205. package/dist/modules/tasks/tasks.module.js +49 -0
  206. package/dist/modules/tasks/tasks.module.js.map +1 -0
  207. package/dist/modules/tasks/types/task.types.js +21 -0
  208. package/dist/modules/tasks/types/task.types.js.map +1 -0
  209. package/dist/modules/tools/index.js +24 -0
  210. package/dist/modules/tools/index.js.map +1 -0
  211. package/dist/modules/tools/services/filesystem-tools.service.js +450 -0
  212. package/dist/modules/tools/services/filesystem-tools.service.js.map +1 -0
  213. package/dist/modules/tools/services/search-tools.service.js +63 -0
  214. package/dist/modules/tools/services/search-tools.service.js.map +1 -0
  215. package/dist/modules/tools/services/shell-tools.service.js +194 -0
  216. package/dist/modules/tools/services/shell-tools.service.js.map +1 -0
  217. package/dist/modules/tools/services/tools-registry.service.js +83 -0
  218. package/dist/modules/tools/services/tools-registry.service.js.map +1 -0
  219. package/dist/modules/tools/tools.module.js +46 -0
  220. package/dist/modules/tools/tools.module.js.map +1 -0
  221. package/package.json +74 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Pedro Castanheira Costa
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,217 @@
1
+ # Cast Code
2
+
3
+ Cast Code is a multi-agent coding CLI for day-to-day engineering work.
4
+ It is designed to feel like an in-terminal AI teammate that can read your codebase, plan work, use tools, and delegate to specialist sub-agents.
5
+
6
+ ## Why this project
7
+
8
+ Main goal: accelerate product delivery, especially frontend bootstrap work from design prototypes.
9
+
10
+ Typical target workflow:
11
+ - connect Figma MCP,
12
+ - map project context,
13
+ - ask Cast to scaffold screens/components/styles,
14
+ - let frontend engineers focus on integration and complex business flows.
15
+
16
+ ## Requirements
17
+
18
+ - Node.js `>= 20`
19
+ - npm
20
+ - At least one LLM provider configured (`/config init`)
21
+
22
+ ## Install (global, from npm)
23
+
24
+ ```bash
25
+ npm install -g cast-code
26
+ cast
27
+ ```
28
+
29
+ > Requires Node.js >= 20. Works on any Linux/macOS terminal: bash, zsh, fish, dash, ksh, and others.
30
+
31
+ ### If `cast` is not found after install
32
+
33
+ The npm global bin directory may not be in your PATH. Run `npm prefix -g` to find it, then add `<prefix>/bin` to your shell:
34
+
35
+ **bash** (`~/.bashrc` or `~/.bash_profile`):
36
+ ```bash
37
+ export PATH="$(npm prefix -g)/bin:$PATH"
38
+ ```
39
+
40
+ **zsh** (`~/.zshrc`):
41
+ ```zsh
42
+ export PATH="$(npm prefix -g)/bin:$PATH"
43
+ ```
44
+
45
+ **fish** (`~/.config/fish/config.fish`):
46
+ ```fish
47
+ fish_add_path (npm prefix -g)/bin
48
+ ```
49
+
50
+ **dash / ksh / others** (`~/.profile`):
51
+ ```sh
52
+ export PATH="$(npm prefix -g)/bin:$PATH"
53
+ ```
54
+
55
+ After editing, reload your shell (`source ~/.zshrc`, `source ~/.bashrc`, or open a new terminal), then run `cast`.
56
+
57
+ ## Install (local development)
58
+
59
+ ```bash
60
+ npm install
61
+ npm run build
62
+ npm run start
63
+ ```
64
+
65
+ For development mode:
66
+
67
+ ```bash
68
+ npm run start:dev
69
+ ```
70
+
71
+ ## First Run
72
+
73
+ On first run, configure providers/models:
74
+
75
+ ```bash
76
+ /config init
77
+ ```
78
+
79
+ Configuration file:
80
+ - `~/.cast/config.yaml`
81
+
82
+ ## Frontend Daily Flow (Recommended)
83
+
84
+ 1. Connect Figma MCP
85
+
86
+ ```bash
87
+ /mcp add
88
+ ```
89
+
90
+ 2. Map project context
91
+
92
+ ```bash
93
+ /init
94
+ ```
95
+
96
+ `/init` is the project bootstrap command. It analyzes the repo and refreshes `.cast/context.md`.
97
+
98
+ 3. Validate specialists
99
+
100
+ ```bash
101
+ /agents
102
+ /skills
103
+ /context
104
+ ```
105
+
106
+ 4. Prompt for scaffold generation
107
+
108
+ Example prompt:
109
+
110
+ ```text
111
+ Use Figma to extract main screens and create a full frontend scaffold:
112
+ - routes
113
+ - page skeletons
114
+ - reusable UI components (button, table, modal, form)
115
+ - design tokens and global styling
116
+ - responsive behavior
117
+ ```
118
+
119
+ ## Useful Commands
120
+
121
+ ### Core
122
+ - `/help` show command guide
123
+ - `/init` analyze project and generate context
124
+ - `/project-deep` generate deep context + specialist brief
125
+ - `/context` show session, tools, agents, skills, MCP status
126
+ - `/clear` clear conversation history
127
+ - `/compact` compact context window
128
+ - `/exit` exit CLI
129
+
130
+ ### Config
131
+ - `/config` config menu
132
+ - `/config show` show current config
133
+ - `/config path` print config path
134
+ - `/config add-provider` add provider
135
+ - `/config set-model` set model by purpose
136
+
137
+ ### MCP
138
+ - `/mcp` MCP hub menu
139
+ - `/mcp list` list servers
140
+ - `/mcp tools` list tools
141
+ - `/mcp add` add server from templates or custom
142
+ - `/mcp remove` remove server
143
+ - `/mcp what` explain MCP
144
+
145
+ ### Git
146
+ - `/status`, `/diff`, `/log`
147
+ - `/commit`, `/up`, `/split-up`, `/pr`
148
+ - `/review`, `/fix`, `/ident`, `/release`
149
+
150
+ ### Agents & Skills
151
+ - `/agents`, `/agents create`
152
+ - `/skills`, `/skills create`
153
+
154
+ ## Mentions
155
+
156
+ Use mentions to inject context directly:
157
+
158
+ - `@src/file.ts`
159
+ - `@path/to/dir/`
160
+ - `@git:status`
161
+ - `@git:diff`
162
+
163
+ ## Plan Mode
164
+
165
+ For complex requests, Cast can enter plan mode:
166
+ - asks clarifying questions,
167
+ - generates a structured plan,
168
+ - allows refine/approve/cancel,
169
+ - executes with the approved plan as context.
170
+
171
+ ## Providers and Model Purposes
172
+
173
+ Cast supports multiple providers and model purposes:
174
+ - `default`
175
+ - `subAgent`
176
+ - `coder`
177
+ - `architect`
178
+ - `reviewer`
179
+ - `planner`
180
+ - `cheap`
181
+
182
+ This enables cost/performance tuning by task type.
183
+
184
+ ## Project Structure (high level)
185
+
186
+ - `src/modules/repl` interactive CLI and commands
187
+ - `src/modules/core` deep agent orchestration and system prompt
188
+ - `src/modules/agents` specialist sub-agents
189
+ - `src/modules/skills` skill definitions and knowledge
190
+ - `src/modules/mcp` MCP integration
191
+ - `src/modules/project` project analysis/context generation
192
+ - `src/modules/tasks` task and plan tools
193
+
194
+ ## Notes
195
+
196
+ - Keep `.cast/context.md` updated for better answers.
197
+ - For MCP servers requiring OAuth (like Figma), authenticate after adding and restarting Cast.
198
+ - If no agents/skills appear, run `/context` and verify project-level `.cast/agents` and `.cast/skills`.
199
+
200
+ ## Environment Variables
201
+
202
+ Before running, configure at least one LLM provider via `/config init` or set the relevant environment variables:
203
+
204
+ | Variable | Provider |
205
+ |---|---|
206
+ | `ANTHROPIC_API_KEY` | Anthropic / Claude |
207
+ | `OPENAI_API_KEY` | OpenAI |
208
+ | `GOOGLE_API_KEY` | Google Gemini |
209
+
210
+ Example:
211
+
212
+ ```bash
213
+ export ANTHROPIC_API_KEY=sk-ant-...
214
+ cast
215
+ ```
216
+
217
+ Or create a `.env` file in your working directory with the keys above.
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "AppModule", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return AppModule;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _commonmodule = require("./common/common.module");
13
+ const _coremodule = require("./modules/core/core.module");
14
+ const _replmodule = require("./modules/repl/repl.module");
15
+ const _permissionsmodule = require("./modules/permissions/permissions.module");
16
+ const _tasksmodule = require("./modules/tasks/tasks.module");
17
+ const _memorymodule = require("./modules/memory/memory.module");
18
+ const _mentionsmodule = require("./modules/mentions/mentions.module");
19
+ const _gitmodule = require("./modules/git/git.module");
20
+ const _config = require("./modules/config");
21
+ function _ts_decorate(decorators, target, key, desc) {
22
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
23
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
24
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
25
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
26
+ }
27
+ let AppModule = class AppModule {
28
+ };
29
+ AppModule = _ts_decorate([
30
+ (0, _common.Module)({
31
+ imports: [
32
+ _config.ConfigModule,
33
+ _commonmodule.CommonModule,
34
+ _coremodule.CoreModule,
35
+ _replmodule.ReplModule,
36
+ _permissionsmodule.PermissionsModule,
37
+ _tasksmodule.TasksModule,
38
+ _memorymodule.MemoryModule,
39
+ _mentionsmodule.MentionsModule,
40
+ _gitmodule.GitModule
41
+ ]
42
+ })
43
+ ], AppModule);
44
+
45
+ //# sourceMappingURL=app.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app.module.ts"],"sourcesContent":["import { Module } from '@nestjs/common';\nimport { CommonModule } from './common/common.module';\nimport { CoreModule } from './modules/core/core.module';\nimport { ReplModule } from './modules/repl/repl.module';\nimport { PermissionsModule } from './modules/permissions/permissions.module';\nimport { TasksModule } from './modules/tasks/tasks.module';\nimport { MemoryModule } from './modules/memory/memory.module';\nimport { MentionsModule } from './modules/mentions/mentions.module';\nimport { GitModule } from './modules/git/git.module';\nimport { ConfigModule } from './modules/config';\n\n@Module({\n imports: [ConfigModule, CommonModule, CoreModule, ReplModule, PermissionsModule, TasksModule, MemoryModule, MentionsModule, GitModule],\n})\nexport class AppModule {}\n"],"names":["AppModule","imports","ConfigModule","CommonModule","CoreModule","ReplModule","PermissionsModule","TasksModule","MemoryModule","MentionsModule","GitModule"],"mappings":";;;;+BAcaA;;;eAAAA;;;wBAdU;8BACM;4BACF;4BACA;mCACO;6BACN;8BACC;gCACE;2BACL;wBACG;;;;;;;AAKtB,IAAA,AAAMA,YAAN,MAAMA;AAAW;;;QAFtBC,SAAS;YAACC,oBAAY;YAAEC,0BAAY;YAAEC,sBAAU;YAAEC,sBAAU;YAAEC,oCAAiB;YAAEC,wBAAW;YAAEC,0BAAY;YAAEC,8BAAc;YAAEC,oBAAS;SAAC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "CommonModule", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return CommonModule;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _markdownparserservice = require("./services/markdown-parser.service");
13
+ const _llmservice = require("./services/llm.service");
14
+ const _multillmservice = require("./services/multi-llm.service");
15
+ const _configservice = require("./services/config.service");
16
+ const _markdownrendererservice = require("./services/markdown-renderer.service");
17
+ const _config = require("../modules/config");
18
+ function _ts_decorate(decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ }
24
+ let CommonModule = class CommonModule {
25
+ };
26
+ CommonModule = _ts_decorate([
27
+ (0, _common.Global)(),
28
+ (0, _common.Module)({
29
+ imports: [
30
+ _config.ConfigModule
31
+ ],
32
+ providers: [
33
+ _markdownparserservice.MarkdownParserService,
34
+ _llmservice.LlmService,
35
+ _multillmservice.MultiLlmService,
36
+ _configservice.ConfigService,
37
+ _markdownrendererservice.MarkdownRendererService
38
+ ],
39
+ exports: [
40
+ _markdownparserservice.MarkdownParserService,
41
+ _llmservice.LlmService,
42
+ _multillmservice.MultiLlmService,
43
+ _configservice.ConfigService,
44
+ _markdownrendererservice.MarkdownRendererService
45
+ ]
46
+ })
47
+ ], CommonModule);
48
+
49
+ //# sourceMappingURL=common.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/common/common.module.ts"],"sourcesContent":["import { Module, Global } from '@nestjs/common';\nimport { MarkdownParserService } from './services/markdown-parser.service';\nimport { LlmService } from './services/llm.service';\nimport { MultiLlmService } from './services/multi-llm.service';\nimport { ConfigService } from './services/config.service';\nimport { MarkdownRendererService } from './services/markdown-renderer.service';\nimport { ConfigModule } from '../modules/config';\n\n@Global()\n@Module({\n imports: [ConfigModule],\n providers: [MarkdownParserService, LlmService, MultiLlmService, ConfigService, MarkdownRendererService],\n exports: [MarkdownParserService, LlmService, MultiLlmService, ConfigService, MarkdownRendererService],\n})\nexport class CommonModule {}\n"],"names":["CommonModule","imports","ConfigModule","providers","MarkdownParserService","LlmService","MultiLlmService","ConfigService","MarkdownRendererService","exports"],"mappings":";;;;+BAcaA;;;eAAAA;;;wBAdkB;uCACO;4BACX;iCACK;+BACF;yCACU;wBACX;;;;;;;AAQtB,IAAA,AAAMA,eAAN,MAAMA;AAAc;;;;QAJzBC,SAAS;YAACC,oBAAY;SAAC;QACvBC,WAAW;YAACC,4CAAqB;YAAEC,sBAAU;YAAEC,gCAAe;YAAEC,4BAAa;YAAEC,gDAAuB;SAAC;QACvGC,SAAS;YAACL,4CAAqB;YAAEC,sBAAU;YAAEC,gCAAe;YAAEC,4BAAa;YAAEC,gDAAuB;SAAC"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get BUILT_IN_TOOLS () {
13
+ return BUILT_IN_TOOLS;
14
+ },
15
+ get CAST_DIR () {
16
+ return CAST_DIR;
17
+ },
18
+ get DEFAULT_MODEL () {
19
+ return DEFAULT_MODEL;
20
+ },
21
+ get DEFAULT_TEMPERATURE () {
22
+ return DEFAULT_TEMPERATURE;
23
+ },
24
+ get DEFINITIONS_DIR () {
25
+ return DEFINITIONS_DIR;
26
+ },
27
+ get GLOBAL_CONFIG_DIR () {
28
+ return GLOBAL_CONFIG_DIR;
29
+ }
30
+ });
31
+ const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
32
+ const _os = /*#__PURE__*/ _interop_require_wildcard(require("os"));
33
+ function _getRequireWildcardCache(nodeInterop) {
34
+ if (typeof WeakMap !== "function") return null;
35
+ var cacheBabelInterop = new WeakMap();
36
+ var cacheNodeInterop = new WeakMap();
37
+ return (_getRequireWildcardCache = function(nodeInterop) {
38
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
39
+ })(nodeInterop);
40
+ }
41
+ function _interop_require_wildcard(obj, nodeInterop) {
42
+ if (!nodeInterop && obj && obj.__esModule) {
43
+ return obj;
44
+ }
45
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
46
+ return {
47
+ default: obj
48
+ };
49
+ }
50
+ var cache = _getRequireWildcardCache(nodeInterop);
51
+ if (cache && cache.has(obj)) {
52
+ return cache.get(obj);
53
+ }
54
+ var newObj = {
55
+ __proto__: null
56
+ };
57
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
58
+ for(var key in obj){
59
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
60
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
61
+ if (desc && (desc.get || desc.set)) {
62
+ Object.defineProperty(newObj, key, desc);
63
+ } else {
64
+ newObj[key] = obj[key];
65
+ }
66
+ }
67
+ }
68
+ newObj.default = obj;
69
+ if (cache) {
70
+ cache.set(obj, newObj);
71
+ }
72
+ return newObj;
73
+ }
74
+ const CAST_DIR = '.cast';
75
+ const GLOBAL_CONFIG_DIR = _path.join(_os.homedir(), '.cast');
76
+ const DEFAULT_MODEL = 'gpt-4.1-nano';
77
+ const DEFAULT_TEMPERATURE = 0.1;
78
+ const DEFINITIONS_DIR = {
79
+ AGENTS: 'definitions',
80
+ SKILLS: 'definitions'
81
+ };
82
+ const BUILT_IN_TOOLS = [
83
+ 'read_file',
84
+ 'write_file',
85
+ 'edit_file',
86
+ 'glob',
87
+ 'grep',
88
+ 'ls',
89
+ 'shell',
90
+ 'shell_background',
91
+ 'web_search',
92
+ 'web_fetch',
93
+ 'task_create',
94
+ 'task_update',
95
+ 'task_list',
96
+ 'task_get',
97
+ 'ask_user_question',
98
+ 'enter_plan_mode',
99
+ 'exit_plan_mode',
100
+ 'memory_write',
101
+ 'memory_read',
102
+ 'memory_search'
103
+ ];
104
+
105
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/common/constants/index.ts"],"sourcesContent":["import * as path from 'path';\nimport * as os from 'os';\n\nexport const CAST_DIR = '.cast';\nexport const GLOBAL_CONFIG_DIR = path.join(os.homedir(), '.cast');\n\nexport const DEFAULT_MODEL = 'gpt-4.1-nano';\nexport const DEFAULT_TEMPERATURE = 0.1;\n\nexport const DEFINITIONS_DIR = {\n AGENTS: 'definitions',\n SKILLS: 'definitions',\n} as const;\n\nexport const BUILT_IN_TOOLS = [\n 'read_file',\n 'write_file',\n 'edit_file',\n 'glob',\n 'grep',\n 'ls',\n 'shell',\n 'shell_background',\n 'web_search',\n 'web_fetch',\n 'task_create',\n 'task_update',\n 'task_list',\n 'task_get',\n 'ask_user_question',\n 'enter_plan_mode',\n 'exit_plan_mode',\n 'memory_write',\n 'memory_read',\n 'memory_search',\n] as const;\n\nexport type BuiltInToolName = (typeof BUILT_IN_TOOLS)[number];\n"],"names":["BUILT_IN_TOOLS","CAST_DIR","DEFAULT_MODEL","DEFAULT_TEMPERATURE","DEFINITIONS_DIR","GLOBAL_CONFIG_DIR","path","join","os","homedir","AGENTS","SKILLS"],"mappings":";;;;;;;;;;;QAcaA;eAAAA;;QAXAC;eAAAA;;QAGAC;eAAAA;;QACAC;eAAAA;;QAEAC;eAAAA;;QALAC;eAAAA;;;8DAJS;4DACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,MAAMJ,WAAW;AACjB,MAAMI,oBAAoBC,MAAKC,IAAI,CAACC,IAAGC,OAAO,IAAI;AAElD,MAAMP,gBAAgB;AACtB,MAAMC,sBAAsB;AAE5B,MAAMC,kBAAkB;IAC7BM,QAAQ;IACRC,QAAQ;AACV;AAEO,MAAMX,iBAAiB;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./types"), exports);
6
+ _export_star(require("./constants"), exports);
7
+ _export_star(require("./services/markdown-parser.service"), exports);
8
+ _export_star(require("./services/llm.service"), exports);
9
+ _export_star(require("./common.module"), exports);
10
+ function _export_star(from, to) {
11
+ Object.keys(from).forEach(function(k) {
12
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
13
+ Object.defineProperty(to, k, {
14
+ enumerable: true,
15
+ get: function() {
16
+ return from[k];
17
+ }
18
+ });
19
+ }
20
+ });
21
+ return from;
22
+ }
23
+
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/common/index.ts"],"sourcesContent":["export * from './types';\nexport * from './constants';\nexport * from './services/markdown-parser.service';\nexport * from './services/llm.service';\nexport * from './common.module';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA;qBACA"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ConfigService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ConfigService;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
13
+ const _markdownparserservice = require("./markdown-parser.service");
14
+ const _constants = require("../constants");
15
+ function _getRequireWildcardCache(nodeInterop) {
16
+ if (typeof WeakMap !== "function") return null;
17
+ var cacheBabelInterop = new WeakMap();
18
+ var cacheNodeInterop = new WeakMap();
19
+ return (_getRequireWildcardCache = function(nodeInterop) {
20
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
21
+ })(nodeInterop);
22
+ }
23
+ function _interop_require_wildcard(obj, nodeInterop) {
24
+ if (!nodeInterop && obj && obj.__esModule) {
25
+ return obj;
26
+ }
27
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
28
+ return {
29
+ default: obj
30
+ };
31
+ }
32
+ var cache = _getRequireWildcardCache(nodeInterop);
33
+ if (cache && cache.has(obj)) {
34
+ return cache.get(obj);
35
+ }
36
+ var newObj = {
37
+ __proto__: null
38
+ };
39
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
40
+ for(var key in obj){
41
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
42
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
43
+ if (desc && (desc.get || desc.set)) {
44
+ Object.defineProperty(newObj, key, desc);
45
+ } else {
46
+ newObj[key] = obj[key];
47
+ }
48
+ }
49
+ }
50
+ newObj.default = obj;
51
+ if (cache) {
52
+ cache.set(obj, newObj);
53
+ }
54
+ return newObj;
55
+ }
56
+ function _ts_decorate(decorators, target, key, desc) {
57
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
58
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
59
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
60
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
61
+ }
62
+ function _ts_metadata(k, v) {
63
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
64
+ }
65
+ let ConfigService = class ConfigService {
66
+ async loadGlobalConfig() {
67
+ const configPath = _path.join(_constants.GLOBAL_CONFIG_DIR, 'config.md');
68
+ if (await this.markdownParser.exists(configPath)) {
69
+ const { frontmatter } = await this.markdownParser.parse(configPath);
70
+ this.config = {
71
+ model: frontmatter.model || process.env.OLLAMA_MODEL || this.config.model,
72
+ temperature: frontmatter.temperature ?? this.config.temperature,
73
+ apiKey: frontmatter.apiKey || process.env.OPENAI_API_KEY || '',
74
+ provider: frontmatter.provider || process.env.LLM_PROVIDER || this.config.provider,
75
+ ollamaBaseUrl: frontmatter.ollamaBaseUrl || process.env.OLLAMA_BASE_URL || this.config.ollamaBaseUrl
76
+ };
77
+ }
78
+ if (this.config.provider === 'openai' && !this.config.apiKey) {
79
+ throw new Error('OPENAI_API_KEY not configured. Set it in environment or ~/.cast/config.md');
80
+ }
81
+ }
82
+ getConfig() {
83
+ return this.config;
84
+ }
85
+ getModel() {
86
+ return this.config.model;
87
+ }
88
+ getTemperature() {
89
+ return this.config.temperature;
90
+ }
91
+ getApiKey() {
92
+ return this.config.apiKey;
93
+ }
94
+ getProvider() {
95
+ return this.config.provider;
96
+ }
97
+ getOllamaBaseUrl() {
98
+ return this.config.ollamaBaseUrl;
99
+ }
100
+ constructor(markdownParser){
101
+ this.markdownParser = markdownParser;
102
+ this.config = {
103
+ model: process.env.OLLAMA_MODEL || _constants.DEFAULT_MODEL,
104
+ temperature: _constants.DEFAULT_TEMPERATURE,
105
+ apiKey: process.env.OPENAI_API_KEY || '',
106
+ provider: process.env.LLM_PROVIDER || 'openai',
107
+ ollamaBaseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434'
108
+ };
109
+ }
110
+ };
111
+ ConfigService = _ts_decorate([
112
+ (0, _common.Injectable)(),
113
+ _ts_metadata("design:type", Function),
114
+ _ts_metadata("design:paramtypes", [
115
+ typeof _markdownparserservice.MarkdownParserService === "undefined" ? Object : _markdownparserservice.MarkdownParserService
116
+ ])
117
+ ], ConfigService);
118
+
119
+ //# sourceMappingURL=config.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/common/services/config.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\nimport * as path from 'path';\nimport { MarkdownParserService } from './markdown-parser.service';\nimport { GLOBAL_CONFIG_DIR, DEFAULT_MODEL, DEFAULT_TEMPERATURE } from '../constants';\n\ninterface GlobalConfigFrontmatter {\n model?: string;\n temperature?: number;\n apiKey?: string;\n provider?: string;\n ollamaBaseUrl?: string;\n}\n\nexport interface GlobalConfig {\n model: string;\n temperature: number;\n apiKey: string;\n provider: string;\n ollamaBaseUrl: string;\n}\n\n@Injectable()\nexport class ConfigService {\n private config: GlobalConfig = {\n model: process.env.OLLAMA_MODEL || DEFAULT_MODEL,\n temperature: DEFAULT_TEMPERATURE,\n apiKey: process.env.OPENAI_API_KEY || '',\n provider: process.env.LLM_PROVIDER || 'openai',\n ollamaBaseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434',\n };\n\n constructor(private readonly markdownParser: MarkdownParserService) {}\n\n async loadGlobalConfig() {\n const configPath = path.join(GLOBAL_CONFIG_DIR, 'config.md');\n\n if (await this.markdownParser.exists(configPath)) {\n const { frontmatter } =\n await this.markdownParser.parse<GlobalConfigFrontmatter>(configPath);\n\n this.config = {\n model: frontmatter.model || process.env.OLLAMA_MODEL || this.config.model,\n temperature: frontmatter.temperature ?? this.config.temperature,\n apiKey: frontmatter.apiKey || process.env.OPENAI_API_KEY || '',\n provider: frontmatter.provider || process.env.LLM_PROVIDER || this.config.provider,\n ollamaBaseUrl: frontmatter.ollamaBaseUrl || process.env.OLLAMA_BASE_URL || this.config.ollamaBaseUrl,\n };\n }\n\n if (this.config.provider === 'openai' && !this.config.apiKey) {\n throw new Error(\n 'OPENAI_API_KEY not configured. Set it in environment or ~/.cast/config.md',\n );\n }\n }\n\n getConfig(): GlobalConfig {\n return this.config;\n }\n\n getModel(): string {\n return this.config.model;\n }\n\n getTemperature(): number {\n return this.config.temperature;\n }\n\n getApiKey(): string {\n return this.config.apiKey;\n }\n\n getProvider(): string {\n return this.config.provider;\n }\n\n getOllamaBaseUrl(): string {\n return this.config.ollamaBaseUrl;\n }\n}\n"],"names":["ConfigService","loadGlobalConfig","configPath","path","join","GLOBAL_CONFIG_DIR","markdownParser","exists","frontmatter","parse","config","model","process","env","OLLAMA_MODEL","temperature","apiKey","OPENAI_API_KEY","provider","LLM_PROVIDER","ollamaBaseUrl","OLLAMA_BASE_URL","Error","getConfig","getModel","getTemperature","getApiKey","getProvider","getOllamaBaseUrl","DEFAULT_MODEL","DEFAULT_TEMPERATURE"],"mappings":";;;;+BAsBaA;;;eAAAA;;;wBAtBc;8DACL;uCACgB;2BACgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmB/D,IAAA,AAAMA,gBAAN,MAAMA;IAWX,MAAMC,mBAAmB;QACvB,MAAMC,aAAaC,MAAKC,IAAI,CAACC,4BAAiB,EAAE;QAEhD,IAAI,MAAM,IAAI,CAACC,cAAc,CAACC,MAAM,CAACL,aAAa;YAChD,MAAM,EAAEM,WAAW,EAAE,GACnB,MAAM,IAAI,CAACF,cAAc,CAACG,KAAK,CAA0BP;YAE3D,IAAI,CAACQ,MAAM,GAAG;gBACZC,OAAOH,YAAYG,KAAK,IAAIC,QAAQC,GAAG,CAACC,YAAY,IAAI,IAAI,CAACJ,MAAM,CAACC,KAAK;gBACzEI,aAAaP,YAAYO,WAAW,IAAI,IAAI,CAACL,MAAM,CAACK,WAAW;gBAC/DC,QAAQR,YAAYQ,MAAM,IAAIJ,QAAQC,GAAG,CAACI,cAAc,IAAI;gBAC5DC,UAAUV,YAAYU,QAAQ,IAAIN,QAAQC,GAAG,CAACM,YAAY,IAAI,IAAI,CAACT,MAAM,CAACQ,QAAQ;gBAClFE,eAAeZ,YAAYY,aAAa,IAAIR,QAAQC,GAAG,CAACQ,eAAe,IAAI,IAAI,CAACX,MAAM,CAACU,aAAa;YACtG;QACF;QAEA,IAAI,IAAI,CAACV,MAAM,CAACQ,QAAQ,KAAK,YAAY,CAAC,IAAI,CAACR,MAAM,CAACM,MAAM,EAAE;YAC5D,MAAM,IAAIM,MACR;QAEJ;IACF;IAEAC,YAA0B;QACxB,OAAO,IAAI,CAACb,MAAM;IACpB;IAEAc,WAAmB;QACjB,OAAO,IAAI,CAACd,MAAM,CAACC,KAAK;IAC1B;IAEAc,iBAAyB;QACvB,OAAO,IAAI,CAACf,MAAM,CAACK,WAAW;IAChC;IAEAW,YAAoB;QAClB,OAAO,IAAI,CAAChB,MAAM,CAACM,MAAM;IAC3B;IAEAW,cAAsB;QACpB,OAAO,IAAI,CAACjB,MAAM,CAACQ,QAAQ;IAC7B;IAEAU,mBAA2B;QACzB,OAAO,IAAI,CAAClB,MAAM,CAACU,aAAa;IAClC;IA/CA,YAAY,AAAiBd,cAAqC,CAAE;aAAvCA,iBAAAA;aARrBI,SAAuB;YAC7BC,OAAOC,QAAQC,GAAG,CAACC,YAAY,IAAIe,wBAAa;YAChDd,aAAae,8BAAmB;YAChCd,QAAQJ,QAAQC,GAAG,CAACI,cAAc,IAAI;YACtCC,UAAUN,QAAQC,GAAG,CAACM,YAAY,IAAI;YACtCC,eAAeR,QAAQC,GAAG,CAACQ,eAAe,IAAI;QAChD;IAEqE;AAgDvE"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "LlmService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return LlmService;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _openai = require("@langchain/openai");
13
+ const _ollama = require("@langchain/ollama");
14
+ const _configservice = require("./config.service");
15
+ function _ts_decorate(decorators, target, key, desc) {
16
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
20
+ }
21
+ function _ts_metadata(k, v) {
22
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
23
+ }
24
+ let LlmService = class LlmService {
25
+ createModel(streaming = false) {
26
+ const provider = this.configService.getProvider();
27
+ if (provider === 'ollama') {
28
+ return new _ollama.ChatOllama({
29
+ model: this.configService.getModel(),
30
+ temperature: this.configService.getTemperature(),
31
+ baseUrl: this.configService.getOllamaBaseUrl()
32
+ });
33
+ }
34
+ return new _openai.ChatOpenAI({
35
+ modelName: this.configService.getModel(),
36
+ temperature: this.configService.getTemperature(),
37
+ openAIApiKey: this.configService.getApiKey(),
38
+ streaming
39
+ });
40
+ }
41
+ createStreamingModel() {
42
+ return this.createModel(true);
43
+ }
44
+ constructor(configService){
45
+ this.configService = configService;
46
+ }
47
+ };
48
+ LlmService = _ts_decorate([
49
+ (0, _common.Injectable)(),
50
+ _ts_metadata("design:type", Function),
51
+ _ts_metadata("design:paramtypes", [
52
+ typeof _configservice.ConfigService === "undefined" ? Object : _configservice.ConfigService
53
+ ])
54
+ ], LlmService);
55
+
56
+ //# sourceMappingURL=llm.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/common/services/llm.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { ChatOpenAI } from '@langchain/openai';\nimport { ChatOllama } from '@langchain/ollama';\nimport { BaseChatModel } from '@langchain/core/language_models/chat_models';\nimport { ConfigService } from './config.service';\n\n@Injectable()\nexport class LlmService {\n constructor(private readonly configService: ConfigService) {}\n\n createModel(streaming = false): BaseChatModel {\n const provider = this.configService.getProvider();\n\n if (provider === 'ollama') {\n return new ChatOllama({\n model: this.configService.getModel(),\n temperature: this.configService.getTemperature(),\n baseUrl: this.configService.getOllamaBaseUrl(),\n });\n }\n\n return new ChatOpenAI({\n modelName: this.configService.getModel(),\n temperature: this.configService.getTemperature(),\n openAIApiKey: this.configService.getApiKey(),\n streaming,\n });\n }\n\n createStreamingModel(): BaseChatModel {\n return this.createModel(true);\n }\n}\n"],"names":["LlmService","createModel","streaming","provider","configService","getProvider","ChatOllama","model","getModel","temperature","getTemperature","baseUrl","getOllamaBaseUrl","ChatOpenAI","modelName","openAIApiKey","getApiKey","createStreamingModel"],"mappings":";;;;+BAOaA;;;eAAAA;;;wBAPc;wBACA;wBACA;+BAEG;;;;;;;;;;AAGvB,IAAA,AAAMA,aAAN,MAAMA;IAGXC,YAAYC,YAAY,KAAK,EAAiB;QAC5C,MAAMC,WAAW,IAAI,CAACC,aAAa,CAACC,WAAW;QAE/C,IAAIF,aAAa,UAAU;YACzB,OAAO,IAAIG,kBAAU,CAAC;gBACpBC,OAAO,IAAI,CAACH,aAAa,CAACI,QAAQ;gBAClCC,aAAa,IAAI,CAACL,aAAa,CAACM,cAAc;gBAC9CC,SAAS,IAAI,CAACP,aAAa,CAACQ,gBAAgB;YAC9C;QACF;QAEA,OAAO,IAAIC,kBAAU,CAAC;YACpBC,WAAW,IAAI,CAACV,aAAa,CAACI,QAAQ;YACtCC,aAAa,IAAI,CAACL,aAAa,CAACM,cAAc;YAC9CK,cAAc,IAAI,CAACX,aAAa,CAACY,SAAS;YAC1Cd;QACF;IACF;IAEAe,uBAAsC;QACpC,OAAO,IAAI,CAAChB,WAAW,CAAC;IAC1B;IAvBA,YAAY,AAAiBG,aAA4B,CAAE;aAA9BA,gBAAAA;IAA+B;AAwB9D"}