@phantomind/core 0.1.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 (265) hide show
  1. package/dist/adapters/aider.d.ts +12 -0
  2. package/dist/adapters/aider.d.ts.map +1 -0
  3. package/dist/adapters/aider.js +24 -0
  4. package/dist/adapters/aider.js.map +1 -0
  5. package/dist/adapters/base.d.ts +21 -0
  6. package/dist/adapters/base.d.ts.map +1 -0
  7. package/dist/adapters/base.js +83 -0
  8. package/dist/adapters/base.js.map +1 -0
  9. package/dist/adapters/claude-code.d.ts +12 -0
  10. package/dist/adapters/claude-code.d.ts.map +1 -0
  11. package/dist/adapters/claude-code.js +31 -0
  12. package/dist/adapters/claude-code.js.map +1 -0
  13. package/dist/adapters/cline.d.ts +12 -0
  14. package/dist/adapters/cline.d.ts.map +1 -0
  15. package/dist/adapters/cline.js +32 -0
  16. package/dist/adapters/cline.js.map +1 -0
  17. package/dist/adapters/codex.d.ts +18 -0
  18. package/dist/adapters/codex.d.ts.map +1 -0
  19. package/dist/adapters/codex.js +38 -0
  20. package/dist/adapters/codex.js.map +1 -0
  21. package/dist/adapters/continue.d.ts +12 -0
  22. package/dist/adapters/continue.d.ts.map +1 -0
  23. package/dist/adapters/continue.js +29 -0
  24. package/dist/adapters/continue.js.map +1 -0
  25. package/dist/adapters/copilot.d.ts +12 -0
  26. package/dist/adapters/copilot.d.ts.map +1 -0
  27. package/dist/adapters/copilot.js +31 -0
  28. package/dist/adapters/copilot.js.map +1 -0
  29. package/dist/adapters/cursor.d.ts +12 -0
  30. package/dist/adapters/cursor.d.ts.map +1 -0
  31. package/dist/adapters/cursor.js +34 -0
  32. package/dist/adapters/cursor.js.map +1 -0
  33. package/dist/adapters/index.d.ts +32 -0
  34. package/dist/adapters/index.d.ts.map +1 -0
  35. package/dist/adapters/index.js +64 -0
  36. package/dist/adapters/index.js.map +1 -0
  37. package/dist/adapters/windsurf.d.ts +12 -0
  38. package/dist/adapters/windsurf.d.ts.map +1 -0
  39. package/dist/adapters/windsurf.js +32 -0
  40. package/dist/adapters/windsurf.js.map +1 -0
  41. package/dist/adapters/zed.d.ts +12 -0
  42. package/dist/adapters/zed.d.ts.map +1 -0
  43. package/dist/adapters/zed.js +27 -0
  44. package/dist/adapters/zed.js.map +1 -0
  45. package/dist/agent/decomposer.d.ts +55 -0
  46. package/dist/agent/decomposer.d.ts.map +1 -0
  47. package/dist/agent/decomposer.js +172 -0
  48. package/dist/agent/decomposer.js.map +1 -0
  49. package/dist/agent/executor.d.ts +33 -0
  50. package/dist/agent/executor.d.ts.map +1 -0
  51. package/dist/agent/executor.js +260 -0
  52. package/dist/agent/executor.js.map +1 -0
  53. package/dist/agent/index.d.ts +8 -0
  54. package/dist/agent/index.d.ts.map +1 -0
  55. package/dist/agent/index.js +8 -0
  56. package/dist/agent/index.js.map +1 -0
  57. package/dist/agent/memory.d.ts +95 -0
  58. package/dist/agent/memory.d.ts.map +1 -0
  59. package/dist/agent/memory.js +211 -0
  60. package/dist/agent/memory.js.map +1 -0
  61. package/dist/agent/orchestrator.d.ts +54 -0
  62. package/dist/agent/orchestrator.d.ts.map +1 -0
  63. package/dist/agent/orchestrator.js +190 -0
  64. package/dist/agent/orchestrator.js.map +1 -0
  65. package/dist/agent/queue.d.ts +95 -0
  66. package/dist/agent/queue.d.ts.map +1 -0
  67. package/dist/agent/queue.js +231 -0
  68. package/dist/agent/queue.js.map +1 -0
  69. package/dist/agent/retry.d.ts +61 -0
  70. package/dist/agent/retry.d.ts.map +1 -0
  71. package/dist/agent/retry.js +162 -0
  72. package/dist/agent/retry.js.map +1 -0
  73. package/dist/agent/roles.d.ts +35 -0
  74. package/dist/agent/roles.d.ts.map +1 -0
  75. package/dist/agent/roles.js +269 -0
  76. package/dist/agent/roles.js.map +1 -0
  77. package/dist/cli/agent.d.ts +12 -0
  78. package/dist/cli/agent.d.ts.map +1 -0
  79. package/dist/cli/agent.js +85 -0
  80. package/dist/cli/agent.js.map +1 -0
  81. package/dist/cli/audit.d.ts +11 -0
  82. package/dist/cli/audit.d.ts.map +1 -0
  83. package/dist/cli/audit.js +63 -0
  84. package/dist/cli/audit.js.map +1 -0
  85. package/dist/cli/eval.d.ts +11 -0
  86. package/dist/cli/eval.d.ts.map +1 -0
  87. package/dist/cli/eval.js +79 -0
  88. package/dist/cli/eval.js.map +1 -0
  89. package/dist/cli/index.d.ts +9 -0
  90. package/dist/cli/index.d.ts.map +1 -0
  91. package/dist/cli/index.js +9 -0
  92. package/dist/cli/index.js.map +1 -0
  93. package/dist/cli/init.d.ts +13 -0
  94. package/dist/cli/init.d.ts.map +1 -0
  95. package/dist/cli/init.js +157 -0
  96. package/dist/cli/init.js.map +1 -0
  97. package/dist/cli/main.d.ts +7 -0
  98. package/dist/cli/main.d.ts.map +1 -0
  99. package/dist/cli/main.js +153 -0
  100. package/dist/cli/main.js.map +1 -0
  101. package/dist/cli/serve.d.ts +11 -0
  102. package/dist/cli/serve.d.ts.map +1 -0
  103. package/dist/cli/serve.js +23 -0
  104. package/dist/cli/serve.js.map +1 -0
  105. package/dist/cli/stats.d.ts +10 -0
  106. package/dist/cli/stats.d.ts.map +1 -0
  107. package/dist/cli/stats.js +68 -0
  108. package/dist/cli/stats.js.map +1 -0
  109. package/dist/cli/sync.d.ts +11 -0
  110. package/dist/cli/sync.d.ts.map +1 -0
  111. package/dist/cli/sync.js +49 -0
  112. package/dist/cli/sync.js.map +1 -0
  113. package/dist/cli/validate.d.ts +13 -0
  114. package/dist/cli/validate.d.ts.map +1 -0
  115. package/dist/cli/validate.js +125 -0
  116. package/dist/cli/validate.js.map +1 -0
  117. package/dist/config/index.d.ts +2 -0
  118. package/dist/config/index.d.ts.map +1 -0
  119. package/dist/config/index.js +2 -0
  120. package/dist/config/index.js.map +1 -0
  121. package/dist/config/loader.d.ts +25 -0
  122. package/dist/config/loader.d.ts.map +1 -0
  123. package/dist/config/loader.js +190 -0
  124. package/dist/config/loader.js.map +1 -0
  125. package/dist/context/embedder.d.ts +53 -0
  126. package/dist/context/embedder.d.ts.map +1 -0
  127. package/dist/context/embedder.js +235 -0
  128. package/dist/context/embedder.js.map +1 -0
  129. package/dist/context/engine.d.ts +82 -0
  130. package/dist/context/engine.d.ts.map +1 -0
  131. package/dist/context/engine.js +343 -0
  132. package/dist/context/engine.js.map +1 -0
  133. package/dist/context/index.d.ts +5 -0
  134. package/dist/context/index.d.ts.map +1 -0
  135. package/dist/context/index.js +5 -0
  136. package/dist/context/index.js.map +1 -0
  137. package/dist/context/learner.d.ts +44 -0
  138. package/dist/context/learner.d.ts.map +1 -0
  139. package/dist/context/learner.js +246 -0
  140. package/dist/context/learner.js.map +1 -0
  141. package/dist/context/versioning.d.ts +29 -0
  142. package/dist/context/versioning.d.ts.map +1 -0
  143. package/dist/context/versioning.js +81 -0
  144. package/dist/context/versioning.js.map +1 -0
  145. package/dist/index.d.ts +169 -0
  146. package/dist/index.d.ts.map +1 -0
  147. package/dist/index.js +285 -0
  148. package/dist/index.js.map +1 -0
  149. package/dist/mcp/index.d.ts +2 -0
  150. package/dist/mcp/index.d.ts.map +1 -0
  151. package/dist/mcp/index.js +2 -0
  152. package/dist/mcp/index.js.map +1 -0
  153. package/dist/mcp/server.d.ts +31 -0
  154. package/dist/mcp/server.d.ts.map +1 -0
  155. package/dist/mcp/server.js +334 -0
  156. package/dist/mcp/server.js.map +1 -0
  157. package/dist/observability/audit.d.ts +61 -0
  158. package/dist/observability/audit.d.ts.map +1 -0
  159. package/dist/observability/audit.js +168 -0
  160. package/dist/observability/audit.js.map +1 -0
  161. package/dist/observability/cost-tracker.d.ts +71 -0
  162. package/dist/observability/cost-tracker.d.ts.map +1 -0
  163. package/dist/observability/cost-tracker.js +206 -0
  164. package/dist/observability/cost-tracker.js.map +1 -0
  165. package/dist/observability/dashboard.d.ts +52 -0
  166. package/dist/observability/dashboard.d.ts.map +1 -0
  167. package/dist/observability/dashboard.js +134 -0
  168. package/dist/observability/dashboard.js.map +1 -0
  169. package/dist/observability/index.d.ts +4 -0
  170. package/dist/observability/index.d.ts.map +1 -0
  171. package/dist/observability/index.js +4 -0
  172. package/dist/observability/index.js.map +1 -0
  173. package/dist/providers/anthropic.d.ts +14 -0
  174. package/dist/providers/anthropic.d.ts.map +1 -0
  175. package/dist/providers/anthropic.js +99 -0
  176. package/dist/providers/anthropic.js.map +1 -0
  177. package/dist/providers/base.d.ts +52 -0
  178. package/dist/providers/base.d.ts.map +1 -0
  179. package/dist/providers/base.js +68 -0
  180. package/dist/providers/base.js.map +1 -0
  181. package/dist/providers/deepseek.d.ts +15 -0
  182. package/dist/providers/deepseek.d.ts.map +1 -0
  183. package/dist/providers/deepseek.js +99 -0
  184. package/dist/providers/deepseek.js.map +1 -0
  185. package/dist/providers/gemini.d.ts +15 -0
  186. package/dist/providers/gemini.d.ts.map +1 -0
  187. package/dist/providers/gemini.js +118 -0
  188. package/dist/providers/gemini.js.map +1 -0
  189. package/dist/providers/groq.d.ts +15 -0
  190. package/dist/providers/groq.d.ts.map +1 -0
  191. package/dist/providers/groq.js +101 -0
  192. package/dist/providers/groq.js.map +1 -0
  193. package/dist/providers/index.d.ts +11 -0
  194. package/dist/providers/index.d.ts.map +1 -0
  195. package/dist/providers/index.js +11 -0
  196. package/dist/providers/index.js.map +1 -0
  197. package/dist/providers/mistral.d.ts +15 -0
  198. package/dist/providers/mistral.d.ts.map +1 -0
  199. package/dist/providers/mistral.js +99 -0
  200. package/dist/providers/mistral.js.map +1 -0
  201. package/dist/providers/ollama.d.ts +14 -0
  202. package/dist/providers/ollama.d.ts.map +1 -0
  203. package/dist/providers/ollama.js +122 -0
  204. package/dist/providers/ollama.js.map +1 -0
  205. package/dist/providers/openai.d.ts +14 -0
  206. package/dist/providers/openai.d.ts.map +1 -0
  207. package/dist/providers/openai.js +80 -0
  208. package/dist/providers/openai.js.map +1 -0
  209. package/dist/providers/openrouter.d.ts +15 -0
  210. package/dist/providers/openrouter.d.ts.map +1 -0
  211. package/dist/providers/openrouter.js +101 -0
  212. package/dist/providers/openrouter.js.map +1 -0
  213. package/dist/providers/router.d.ts +51 -0
  214. package/dist/providers/router.d.ts.map +1 -0
  215. package/dist/providers/router.js +198 -0
  216. package/dist/providers/router.js.map +1 -0
  217. package/dist/quality/anomaly.d.ts +32 -0
  218. package/dist/quality/anomaly.d.ts.map +1 -0
  219. package/dist/quality/anomaly.js +126 -0
  220. package/dist/quality/anomaly.js.map +1 -0
  221. package/dist/quality/consistency.d.ts +26 -0
  222. package/dist/quality/consistency.d.ts.map +1 -0
  223. package/dist/quality/consistency.js +156 -0
  224. package/dist/quality/consistency.js.map +1 -0
  225. package/dist/quality/dual-verifier.d.ts +22 -0
  226. package/dist/quality/dual-verifier.d.ts.map +1 -0
  227. package/dist/quality/dual-verifier.js +137 -0
  228. package/dist/quality/dual-verifier.js.map +1 -0
  229. package/dist/quality/hallucination-guard.d.ts +57 -0
  230. package/dist/quality/hallucination-guard.d.ts.map +1 -0
  231. package/dist/quality/hallucination-guard.js +245 -0
  232. package/dist/quality/hallucination-guard.js.map +1 -0
  233. package/dist/quality/index.d.ts +7 -0
  234. package/dist/quality/index.d.ts.map +1 -0
  235. package/dist/quality/index.js +7 -0
  236. package/dist/quality/index.js.map +1 -0
  237. package/dist/quality/regression.d.ts +44 -0
  238. package/dist/quality/regression.d.ts.map +1 -0
  239. package/dist/quality/regression.js +181 -0
  240. package/dist/quality/regression.js.map +1 -0
  241. package/dist/quality/secret-scanner.d.ts +36 -0
  242. package/dist/quality/secret-scanner.d.ts.map +1 -0
  243. package/dist/quality/secret-scanner.js +187 -0
  244. package/dist/quality/secret-scanner.js.map +1 -0
  245. package/dist/schemas/index.d.ts +2 -0
  246. package/dist/schemas/index.d.ts.map +1 -0
  247. package/dist/schemas/index.js +2 -0
  248. package/dist/schemas/index.js.map +1 -0
  249. package/dist/schemas/registry.d.ts +72 -0
  250. package/dist/schemas/registry.d.ts.map +1 -0
  251. package/dist/schemas/registry.js +483 -0
  252. package/dist/schemas/registry.js.map +1 -0
  253. package/dist/templates/engine.d.ts +70 -0
  254. package/dist/templates/engine.d.ts.map +1 -0
  255. package/dist/templates/engine.js +71 -0
  256. package/dist/templates/engine.js.map +1 -0
  257. package/dist/templates/index.d.ts +2 -0
  258. package/dist/templates/index.d.ts.map +1 -0
  259. package/dist/templates/index.js +2 -0
  260. package/dist/templates/index.js.map +1 -0
  261. package/dist/types.d.ts +912 -0
  262. package/dist/types.d.ts.map +1 -0
  263. package/dist/types.js +75 -0
  264. package/dist/types.js.map +1 -0
  265. package/package.json +85 -0
@@ -0,0 +1,269 @@
1
+ /**
2
+ * PhantomMindAI — Agent Roles
3
+ * Persona & role system with specialized system prompts.
4
+ */
5
+ const ROLE_DEFINITIONS = {
6
+ architect: {
7
+ name: 'architect',
8
+ displayName: 'Software Architect',
9
+ description: 'Designs system architecture, reviews design decisions, and ensures structural integrity.',
10
+ temperature: 0.3,
11
+ focus: [
12
+ 'System design and architecture',
13
+ 'Design patterns and best practices',
14
+ 'Scalability and maintainability',
15
+ 'Module boundaries and interfaces',
16
+ 'Technology selection',
17
+ ],
18
+ constraints: [
19
+ 'Always consider separation of concerns',
20
+ 'Prefer composition over inheritance',
21
+ 'Design for testability',
22
+ 'Follow SOLID principles',
23
+ 'Consider backward compatibility',
24
+ ],
25
+ systemPrompt: `You are a Senior Software Architect. Your primary responsibility is designing robust, scalable, and maintainable software systems.
26
+
27
+ ## Your Expertise
28
+ - System design and architecture patterns (MVC, CQRS, Event Sourcing, Hexagonal, etc.)
29
+ - Microservices and monolith architecture decisions
30
+ - API design (REST, GraphQL, gRPC)
31
+ - Database design and data modeling
32
+ - Performance optimization and scalability planning
33
+ - Security architecture
34
+
35
+ ## Your Approach
36
+ 1. Understand the full requirements before proposing solutions
37
+ 2. Consider multiple architectural approaches and their trade-offs
38
+ 3. Design clear module boundaries and interfaces
39
+ 4. Ensure the architecture supports future extensibility
40
+ 5. Document key architectural decisions with rationale
41
+
42
+ ## Constraints
43
+ - Always justify architectural decisions with reasoning
44
+ - Prefer proven patterns over novel approaches
45
+ - Consider the team's skill level and project timeline
46
+ - Design for testability from the start
47
+ - Never sacrifice security for convenience`,
48
+ },
49
+ implementer: {
50
+ name: 'implementer',
51
+ displayName: 'Implementation Engineer',
52
+ description: 'Writes production-quality code following best practices and project conventions.',
53
+ temperature: 0.2,
54
+ focus: [
55
+ 'Writing clean, efficient code',
56
+ 'Following project conventions',
57
+ 'Error handling and edge cases',
58
+ 'Type safety and correctness',
59
+ 'Performance-conscious implementation',
60
+ ],
61
+ constraints: [
62
+ 'Follow existing code style and conventions',
63
+ 'Write self-documenting code',
64
+ 'Handle errors appropriately',
65
+ 'Never hardcode secrets or credentials',
66
+ 'Keep functions focused and small',
67
+ ],
68
+ systemPrompt: `You are an Expert Implementation Engineer. Your primary responsibility is writing high-quality, production-ready code.
69
+
70
+ ## Your Expertise
71
+ - Writing clean, maintainable, and efficient code
72
+ - Deep knowledge of language idioms and best practices
73
+ - Strong understanding of data structures and algorithms
74
+ - Performance optimization techniques
75
+ - Comprehensive error handling
76
+
77
+ ## Your Approach
78
+ 1. Understand the existing codebase conventions before writing code
79
+ 2. Write code that reads like documentation
80
+ 3. Handle edge cases and error conditions
81
+ 4. Use appropriate abstractions (not too many, not too few)
82
+ 5. Write code that is easy to test
83
+
84
+ ## Constraints
85
+ - Follow the project's existing coding style exactly
86
+ - Never introduce dependencies without justification
87
+ - Always handle errors — never use bare catches or ignore them
88
+ - Never hardcode secrets, credentials, or environment-specific values
89
+ - Keep functions under 50 lines when possible
90
+ - Use meaningful variable and function names`,
91
+ },
92
+ securityReviewer: {
93
+ name: 'securityReviewer',
94
+ displayName: 'Security Reviewer',
95
+ description: 'Reviews code for security vulnerabilities and ensures compliance with security best practices.',
96
+ temperature: 0.1,
97
+ focus: [
98
+ 'OWASP Top 10 vulnerabilities',
99
+ 'Input validation and sanitization',
100
+ 'Authentication and authorization',
101
+ 'Data encryption and protection',
102
+ 'Secure dependency management',
103
+ ],
104
+ constraints: [
105
+ 'Never approve code with known vulnerabilities',
106
+ 'Always recommend the most secure approach',
107
+ 'Flag any hardcoded credentials immediately',
108
+ 'Consider the principle of least privilege',
109
+ 'Verify input validation at all boundaries',
110
+ ],
111
+ systemPrompt: `You are a Senior Security Engineer reviewing code for vulnerabilities. Your primary responsibility is ensuring code security.
112
+
113
+ ## Your Expertise
114
+ - OWASP Top 10 vulnerability detection
115
+ - Injection attacks (SQL, XSS, Command, LDAP)
116
+ - Authentication and session management
117
+ - Cryptographic best practices
118
+ - Secure API design
119
+ - Supply chain security
120
+ - Data protection and privacy (GDPR, CCPA)
121
+
122
+ ## Your Approach
123
+ 1. Scan for common vulnerability patterns
124
+ 2. Check input validation at all trust boundaries
125
+ 3. Verify authentication and authorization logic
126
+ 4. Review cryptographic implementations
127
+ 5. Check for information disclosure
128
+ 6. Analyze dependency security
129
+
130
+ ## Severity Classification
131
+ - CRITICAL: Remote code execution, SQL injection, authentication bypass
132
+ - HIGH: XSS, CSRF, insecure deserialization, path traversal
133
+ - MEDIUM: Information disclosure, weak cryptography, missing rate limiting
134
+ - LOW: Missing security headers, verbose error messages
135
+
136
+ ## Constraints
137
+ - Never mark code as secure if you have any doubts
138
+ - Always provide remediation guidance with findings
139
+ - Consider both server-side and client-side security
140
+ - Check for hardcoded secrets and credentials
141
+ - Verify secure communication (TLS/HTTPS)`,
142
+ },
143
+ documentWriter: {
144
+ name: 'documentWriter',
145
+ displayName: 'Documentation Writer',
146
+ description: 'Creates and maintains comprehensive project documentation.',
147
+ temperature: 0.4,
148
+ focus: [
149
+ 'API documentation',
150
+ 'Architecture documentation',
151
+ 'User guides and tutorials',
152
+ 'README and getting started guides',
153
+ 'Code comments and JSDoc',
154
+ ],
155
+ constraints: [
156
+ 'Documentation must be accurate and up-to-date',
157
+ 'Use clear, concise language',
158
+ 'Include practical examples',
159
+ 'Follow the project documentation standards',
160
+ 'Keep documentation DRY — reference, dont repeat',
161
+ ],
162
+ systemPrompt: `You are a Technical Documentation Writer. Your primary responsibility is creating clear, comprehensive, and accurate documentation.
163
+
164
+ ## Your Expertise
165
+ - Technical writing and communication
166
+ - API documentation (OpenAPI/Swagger, JSDoc, TSDoc)
167
+ - Architecture Decision Records (ADRs)
168
+ - User guides and tutorials
169
+ - README files and getting started guides
170
+
171
+ ## Your Approach
172
+ 1. Understand the audience (developers, users, operators)
173
+ 2. Structure information logically (overview → details → examples)
174
+ 3. Use consistent formatting and terminology
175
+ 4. Include practical, working examples
176
+ 5. Keep documentation concise but complete
177
+
178
+ ## Constraints
179
+ - Always verify technical accuracy before documenting
180
+ - Use active voice and present tense
181
+ - Include code examples that actually work
182
+ - Document the "why" not just the "what"
183
+ - Follow existing documentation patterns in the project`,
184
+ },
185
+ testWriter: {
186
+ name: 'testWriter',
187
+ displayName: 'Test Engineer',
188
+ description: 'Writes comprehensive test suites with high coverage and meaningful assertions.',
189
+ temperature: 0.2,
190
+ focus: [
191
+ 'Unit testing',
192
+ 'Integration testing',
193
+ 'Edge case coverage',
194
+ 'Test readability and maintainability',
195
+ 'Mock and stub strategies',
196
+ ],
197
+ constraints: [
198
+ 'Tests must be deterministic',
199
+ 'Each test should test one thing',
200
+ 'Use descriptive test names',
201
+ 'Avoid testing implementation details',
202
+ 'Mock external dependencies, not internal ones',
203
+ ],
204
+ systemPrompt: `You are a Senior Test Engineer. Your primary responsibility is writing comprehensive, reliable test suites.
205
+
206
+ ## Your Expertise
207
+ - Unit testing with assertion libraries
208
+ - Integration and end-to-end testing
209
+ - Test-Driven Development (TDD)
210
+ - Mocking, stubbing, and faking strategies
211
+ - Property-based testing
212
+ - Performance and load testing
213
+
214
+ ## Your Approach
215
+ 1. Follow Arrange-Act-Assert (AAA) pattern
216
+ 2. Test behavior, not implementation
217
+ 3. Cover happy paths, edge cases, and error conditions
218
+ 4. Use meaningful test descriptions (should... when...)
219
+ 5. Keep tests independent and deterministic
220
+
221
+ ## Test Naming Convention
222
+ describe('ClassName / functionName', () => {
223
+ it('should [expected behavior] when [condition]', () => {})
224
+ })
225
+
226
+ ## Constraints
227
+ - Every test must be deterministic (no flaky tests)
228
+ - Each test should assert one logical concept
229
+ - Use descriptive names that explain the scenario
230
+ - Avoid testing private methods directly
231
+ - Mock at boundaries (APIs, databases, file system)
232
+ - Dont test framework code — trust the framework`,
233
+ },
234
+ };
235
+ /**
236
+ * Get the system prompt for a role
237
+ */
238
+ export function getRoleSystemPrompt(role) {
239
+ return ROLE_DEFINITIONS[role]?.systemPrompt ?? ROLE_DEFINITIONS.implementer.systemPrompt;
240
+ }
241
+ /**
242
+ * Get the full role definition
243
+ */
244
+ export function getRoleDefinition(role) {
245
+ return ROLE_DEFINITIONS[role] ?? ROLE_DEFINITIONS.implementer;
246
+ }
247
+ /**
248
+ * Get all available roles
249
+ */
250
+ export function getAvailableRoles() {
251
+ return Object.values(ROLE_DEFINITIONS);
252
+ }
253
+ /**
254
+ * Get recommended temperature for a role
255
+ */
256
+ export function getRoleTemperature(role) {
257
+ return ROLE_DEFINITIONS[role]?.temperature ?? 0.2;
258
+ }
259
+ /**
260
+ * Build a composite system prompt from multiple roles
261
+ */
262
+ export function buildMultiRolePrompt(roles) {
263
+ const prompts = roles.map(role => {
264
+ const def = ROLE_DEFINITIONS[role];
265
+ return def ? `## Role: ${def.displayName}\n${def.systemPrompt}` : '';
266
+ }).filter(Boolean);
267
+ return `You are a multi-disciplinary AI assistant with the following roles:\n\n${prompts.join('\n\n---\n\n')}`;
268
+ }
269
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/agent/roles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,gBAAgB,GAAsC;IAC1D,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,0FAA0F;QACvG,WAAW,EAAE,GAAG;QAChB,KAAK,EAAE;YACL,gCAAgC;YAChC,oCAAoC;YACpC,iCAAiC;YACjC,kCAAkC;YAClC,sBAAsB;SACvB;QACD,WAAW,EAAE;YACX,wCAAwC;YACxC,qCAAqC;YACrC,wBAAwB;YACxB,yBAAyB;YACzB,iCAAiC;SAClC;QACD,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;2CAsByB;KACxC;IAED,WAAW,EAAE;QACX,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,yBAAyB;QACtC,WAAW,EAAE,kFAAkF;QAC/F,WAAW,EAAE,GAAG;QAChB,KAAK,EAAE;YACL,+BAA+B;YAC/B,+BAA+B;YAC/B,+BAA+B;YAC/B,6BAA6B;YAC7B,sCAAsC;SACvC;QACD,WAAW,EAAE;YACX,4CAA4C;YAC5C,6BAA6B;YAC7B,6BAA6B;YAC7B,uCAAuC;YACvC,kCAAkC;SACnC;QACD,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;6CAsB2B;KAC1C;IAED,gBAAgB,EAAE;QAChB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,gGAAgG;QAC7G,WAAW,EAAE,GAAG;QAChB,KAAK,EAAE;YACL,8BAA8B;YAC9B,mCAAmC;YACnC,kCAAkC;YAClC,gCAAgC;YAChC,8BAA8B;SAC/B;QACD,WAAW,EAAE;YACX,+CAA+C;YAC/C,2CAA2C;YAC3C,4CAA4C;YAC5C,2CAA2C;YAC3C,2CAA2C;SAC5C;QACD,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CA8BwB;KACvC;IAED,cAAc,EAAE;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,sBAAsB;QACnC,WAAW,EAAE,4DAA4D;QACzE,WAAW,EAAE,GAAG;QAChB,KAAK,EAAE;YACL,mBAAmB;YACnB,4BAA4B;YAC5B,2BAA2B;YAC3B,mCAAmC;YACnC,yBAAyB;SAC1B;QACD,WAAW,EAAE;YACX,+CAA+C;YAC/C,6BAA6B;YAC7B,4BAA4B;YAC5B,4CAA4C;YAC5C,iDAAiD;SAClD;QACD,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;wDAqBsC;KACrD;IAED,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,gFAAgF;QAC7F,WAAW,EAAE,GAAG;QAChB,KAAK,EAAE;YACL,cAAc;YACd,qBAAqB;YACrB,oBAAoB;YACpB,sCAAsC;YACtC,0BAA0B;SAC3B;QACD,WAAW,EAAE;YACX,6BAA6B;YAC7B,iCAAiC;YACjC,4BAA4B;YAC5B,sCAAsC;YACtC,+CAA+C;SAChD;QACD,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDA4B+B;KAC9C;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,YAAY,IAAI,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAAC;AAC3F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAe;IAC/C,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,WAAW,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAe;IAChD,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,IAAI,GAAG,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAkB;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/B,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,OAAO,0EAA0E,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AACjH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * PhantomMindAI — CLI Agent Command
3
+ * Run agentic tasks from the command line.
4
+ */
5
+ export interface AgentOptions {
6
+ role?: string;
7
+ orchestrate?: boolean;
8
+ roles?: string[];
9
+ maxSteps?: number;
10
+ }
11
+ export declare function agentCommand(projectRoot: string, task: string, options: AgentOptions): Promise<void>;
12
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/cli/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAyFf"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * PhantomMindAI — CLI Agent Command
3
+ * Run agentic tasks from the command line.
4
+ */
5
+ import { loadConfig } from '../config/loader.js';
6
+ import { ContextEngine } from '../context/engine.js';
7
+ import { ProviderRouter } from '../providers/router.js';
8
+ import { AgentExecutor } from '../agent/executor.js';
9
+ import { AgentOrchestrator } from '../agent/orchestrator.js';
10
+ export async function agentCommand(projectRoot, task, options) {
11
+ const chalk = (await import('chalk')).default;
12
+ const ora = (await import('ora')).default;
13
+ console.log(chalk.bold.cyan('\nšŸ¤– PhantomMindAI — Agent Execution\n'));
14
+ const spinner = ora('Initializing agent...').start();
15
+ try {
16
+ const config = await loadConfig(projectRoot);
17
+ const contextEngine = new ContextEngine(config, projectRoot);
18
+ const router = new ProviderRouter(config.providers, config.budget ? {
19
+ maxCostPerDay: config.budget.maxCostPerDay,
20
+ warningAt: config.budget.warningAt,
21
+ fallbackOnBudget: config.budget.fallbackOnBudget,
22
+ } : undefined);
23
+ if (options.orchestrate) {
24
+ // Multi-agent orchestration
25
+ const roles = (options.roles ?? ['architect', 'implementer', 'securityReviewer']);
26
+ spinner.text = `Orchestrating ${roles.join(', ')}...`;
27
+ const orchestrator = new AgentOrchestrator(router, contextEngine, projectRoot);
28
+ orchestrator.on('orchestration:phase', ({ phase }) => {
29
+ spinner.text = `Phase: ${phase}...`;
30
+ });
31
+ spinner.stop();
32
+ console.log(chalk.dim(` Task: ${task}`));
33
+ console.log(chalk.dim(` Roles: ${roles.join(', ')}`));
34
+ console.log(chalk.dim(` Mode: orchestrated`));
35
+ console.log('');
36
+ const spinnerRun = ora('Running orchestration...').start();
37
+ const result = await orchestrator.orchestrate(task, roles);
38
+ spinnerRun.stop();
39
+ console.log(chalk.bold(`Result: ${result.success ? chalk.green('Success') : chalk.red('Failed')}`));
40
+ console.log(` Duration: ${(result.duration / 1000).toFixed(1)}s`);
41
+ console.log(` Cost: $${result.totalUsage.estimatedCost.toFixed(4)}`);
42
+ console.log(` Phases: ${result.phases.length}`);
43
+ for (const phase of result.phases) {
44
+ console.log(`\n ${chalk.bold(phase.name)}:`);
45
+ console.log(` ${phase.aggregatedOutput.slice(0, 200)}...`);
46
+ }
47
+ }
48
+ else {
49
+ // Single agent execution
50
+ const role = (options.role ?? 'implementer');
51
+ spinner.text = `Running ${role} agent...`;
52
+ const executor = new AgentExecutor(router, contextEngine, projectRoot, {
53
+ role,
54
+ maxSteps: options.maxSteps ?? 30,
55
+ });
56
+ executor.on('agent:step', ({ step }) => {
57
+ spinner.text = `Step: ${step.action}...`;
58
+ });
59
+ spinner.stop();
60
+ console.log(chalk.dim(` Task: ${task}`));
61
+ console.log(chalk.dim(` Role: ${role}`));
62
+ console.log('');
63
+ const spinnerRun = ora('Executing task...').start();
64
+ const result = await executor.run(task);
65
+ spinnerRun.stop();
66
+ console.log(chalk.bold(`Result: ${result.success ? chalk.green('Success') : chalk.red('Failed')}`));
67
+ console.log(` ${result.summary}`);
68
+ console.log(` Duration: ${(result.duration / 1000).toFixed(1)}s`);
69
+ console.log(` Cost: $${result.totalTokenUsage.estimatedCost.toFixed(4)}`);
70
+ if (result.filesChanged.length > 0) {
71
+ console.log(` Files Changed:`);
72
+ for (const f of result.filesChanged) {
73
+ console.log(` - ${f}`);
74
+ }
75
+ }
76
+ }
77
+ console.log('');
78
+ }
79
+ catch (error) {
80
+ spinner.fail('Agent execution failed');
81
+ console.error(chalk.red(error.message));
82
+ process.exit(1);
83
+ }
84
+ }
85
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/cli/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * PhantomMindAI — CLI Audit Command
3
+ * View audit trail and cost reports.
4
+ */
5
+ export interface AuditOptions {
6
+ period?: 'today' | 'week' | 'month' | 'all';
7
+ format?: 'terminal' | 'markdown' | 'json';
8
+ type?: 'costs' | 'actions' | 'dashboard';
9
+ }
10
+ export declare function auditCommand(projectRoot: string, options: AuditOptions): Promise<void>;
11
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAC5C,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1C,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;CAC1C;AAED,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * PhantomMindAI — CLI Audit Command
3
+ * View audit trail and cost reports.
4
+ */
5
+ import { AuditTrail } from '../observability/audit.js';
6
+ import { CostTracker } from '../observability/cost-tracker.js';
7
+ import { AnalyticsDashboard } from '../observability/dashboard.js';
8
+ import { loadConfig } from '../config/loader.js';
9
+ export async function auditCommand(projectRoot, options) {
10
+ const chalk = (await import('chalk')).default;
11
+ const ora = (await import('ora')).default;
12
+ console.log(chalk.bold.cyan('\nšŸ“Š PhantomMindAI — Audit & Analytics\n'));
13
+ const spinner = ora('Loading audit data...').start();
14
+ try {
15
+ const config = await loadConfig(projectRoot);
16
+ const auditTrail = new AuditTrail(projectRoot);
17
+ const costTracker = new CostTracker(projectRoot, {
18
+ daily: config.budget?.maxCostPerDay,
19
+ });
20
+ await auditTrail.loadFromDisk();
21
+ await costTracker.load();
22
+ spinner.stop();
23
+ const type = options.type ?? 'dashboard';
24
+ const period = options.period ?? 'today';
25
+ if (type === 'dashboard' || type === 'costs') {
26
+ const dashboard = new AnalyticsDashboard(costTracker, auditTrail);
27
+ if (options.format === 'json') {
28
+ console.log(JSON.stringify(dashboard.toJSON(), null, 2));
29
+ }
30
+ else if (options.format === 'markdown') {
31
+ console.log(dashboard.formatMarkdown());
32
+ }
33
+ else {
34
+ console.log(dashboard.formatTerminal());
35
+ }
36
+ }
37
+ if (type === 'costs') {
38
+ console.log('');
39
+ console.log(costTracker.formatMarkdown(period));
40
+ }
41
+ if (type === 'actions') {
42
+ const entries = auditTrail.getRecent(50);
43
+ console.log(chalk.bold(`Recent Actions (${entries.length}):\n`));
44
+ for (const entry of entries) {
45
+ const time = new Date(entry.timestamp).toLocaleTimeString();
46
+ console.log(` ${chalk.dim(time)} ${chalk.cyan(entry.action)} ${chalk.dim(`by ${entry.agent}`)}`);
47
+ }
48
+ }
49
+ // Budget check
50
+ const budgetCheck = costTracker.checkBudget();
51
+ if (budgetCheck.exceeded) {
52
+ console.log('');
53
+ console.log(chalk.red.bold(`āš ļø Budget exceeded! (${budgetCheck.type}: $${budgetCheck.spent.toFixed(4)} / $${budgetCheck.limit?.toFixed(4)})`));
54
+ }
55
+ console.log('');
56
+ }
57
+ catch (error) {
58
+ spinner.fail('Audit failed');
59
+ console.error(chalk.red(error.message));
60
+ process.exit(1);
61
+ }
62
+ }
63
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * PhantomMindAI — CLI Eval Command
3
+ * Evaluate and test AI provider connections.
4
+ */
5
+ export interface EvalOptions {
6
+ provider?: string;
7
+ model?: string;
8
+ prompt?: string;
9
+ }
10
+ export declare function evalCommand(projectRoot: string, options: EvalOptions): Promise<void>;
11
+ //# sourceMappingURL=eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/cli/eval.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAoFf"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * PhantomMindAI — CLI Eval Command
3
+ * Evaluate and test AI provider connections.
4
+ */
5
+ import { loadConfig } from '../config/loader.js';
6
+ import { createProvider } from '../providers/index.js';
7
+ export async function evalCommand(projectRoot, options) {
8
+ const chalk = (await import('chalk')).default;
9
+ const ora = (await import('ora')).default;
10
+ console.log(chalk.bold.cyan('\n🧪 PhantomMindAI — Provider Evaluation\n'));
11
+ const spinner = ora('Loading configuration...').start();
12
+ try {
13
+ const config = await loadConfig(projectRoot);
14
+ const providerConfig = config.providers.primary;
15
+ const providerName = providerConfig.name;
16
+ spinner.text = `Connecting to ${providerName}...`;
17
+ const resolvedConfig = options.model
18
+ ? { ...providerConfig, model: options.model }
19
+ : providerConfig;
20
+ const provider = createProvider(resolvedConfig);
21
+ // Check availability
22
+ const available = await provider.isAvailable();
23
+ if (!available) {
24
+ spinner.fail(`Provider ${providerName} is not available. Check your API key.`);
25
+ return;
26
+ }
27
+ spinner.succeed(`Connected to ${providerName}`);
28
+ // Run test prompt
29
+ const testPrompt = options.prompt ?? 'Say "PhantomMindAI is ready!" in one short sentence.';
30
+ const model = resolvedConfig.model;
31
+ console.log('');
32
+ console.log(chalk.dim(` Provider: ${providerName}`));
33
+ console.log(chalk.dim(` Model: ${model}`));
34
+ console.log(chalk.dim(` Prompt: ${testPrompt}`));
35
+ console.log('');
36
+ const evalSpinner = ora('Generating response...').start();
37
+ const startTime = Date.now();
38
+ const response = await provider.complete({
39
+ prompt: testPrompt,
40
+ temperature: 0.7,
41
+ maxTokens: 200,
42
+ });
43
+ const duration = Date.now() - startTime;
44
+ evalSpinner.stop();
45
+ console.log(chalk.bold('Response:'));
46
+ console.log(chalk.white(` ${response.content}`));
47
+ console.log('');
48
+ console.log(chalk.dim('─'.repeat(50)));
49
+ console.log(chalk.dim(` Model: ${response.model}`));
50
+ console.log(chalk.dim(` Provider: ${response.provider}`));
51
+ console.log(chalk.dim(` Tokens: ${response.usage.inputTokens} in / ${response.usage.outputTokens} out`));
52
+ console.log(chalk.dim(` Cost: $${response.usage.estimatedCost.toFixed(6)}`));
53
+ console.log(chalk.dim(` Duration: ${duration}ms`));
54
+ console.log('');
55
+ // List available models
56
+ try {
57
+ const models = await provider.listModels();
58
+ if (models.length > 0) {
59
+ console.log(chalk.dim('Available models:'));
60
+ for (const m of models.slice(0, 10)) {
61
+ console.log(chalk.dim(` - ${m}`));
62
+ }
63
+ if (models.length > 10) {
64
+ console.log(chalk.dim(` ... and ${models.length - 10} more`));
65
+ }
66
+ console.log('');
67
+ }
68
+ }
69
+ catch {
70
+ // Not all providers support listing models
71
+ }
72
+ }
73
+ catch (error) {
74
+ spinner.fail('Evaluation failed');
75
+ console.error(chalk.red(error.message));
76
+ process.exit(1);
77
+ }
78
+ }
79
+ //# sourceMappingURL=eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/cli/eval.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQvD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,OAAoB;IAEpB,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IAE3E,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAChD,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC;QAEzC,OAAO,CAAC,IAAI,GAAG,iBAAiB,YAAY,KAAK,CAAC;QAElD,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK;YAClC,CAAC,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;YAC7C,CAAC,CAAC,cAAc,CAAC;QAEnB,MAAM,QAAQ,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;QAEhD,qBAAqB;QACrB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,YAAY,YAAY,wCAAwC,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC;QAEhD,kBAAkB;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,sDAAsD,CAAC;QAC5F,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;QAEnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,WAAW,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;YACvC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,KAAK,CAAC,WAAW,SAAS,QAAQ,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC;QAC5G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,QAAQ,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,wBAAwB;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { initCommand, type InitOptions } from './init.js';
2
+ export { syncCommand, type SyncOptions } from './sync.js';
3
+ export { serveCommand, type ServeOptions } from './serve.js';
4
+ export { evalCommand, type EvalOptions } from './eval.js';
5
+ export { validateCommand, type ValidateOptions } from './validate.js';
6
+ export { auditCommand, type AuditOptions } from './audit.js';
7
+ export { statsCommand, type StatsOptions } from './stats.js';
8
+ export { agentCommand, type AgentOptions } from './agent.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { initCommand } from './init.js';
2
+ export { syncCommand } from './sync.js';
3
+ export { serveCommand } from './serve.js';
4
+ export { evalCommand } from './eval.js';
5
+ export { validateCommand } from './validate.js';
6
+ export { auditCommand } from './audit.js';
7
+ export { statsCommand } from './stats.js';
8
+ export { agentCommand } from './agent.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * PhantomMindAI — CLI Init Command
3
+ * Interactive project initialization.
4
+ */
5
+ export interface InitOptions {
6
+ adapters?: string[];
7
+ provider?: string;
8
+ model?: string;
9
+ yes?: boolean;
10
+ interactive?: boolean;
11
+ }
12
+ export declare function initCommand(projectRoot: string, options: InitOptions): Promise<void>;
13
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAsJf"}