@mainwp/control 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 (204) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +583 -0
  3. package/bin/_exit.js +12 -0
  4. package/bin/dev.js +7 -0
  5. package/bin/run.js +7 -0
  6. package/dist/chat/chat-engine.d.ts +213 -0
  7. package/dist/chat/chat-engine.d.ts.map +1 -0
  8. package/dist/chat/chat-engine.js +636 -0
  9. package/dist/chat/chat-engine.js.map +1 -0
  10. package/dist/chat/index.d.ts +10 -0
  11. package/dist/chat/index.d.ts.map +1 -0
  12. package/dist/chat/index.js +14 -0
  13. package/dist/chat/index.js.map +1 -0
  14. package/dist/chat/providers/anthropic.d.ts +52 -0
  15. package/dist/chat/providers/anthropic.d.ts.map +1 -0
  16. package/dist/chat/providers/anthropic.js +292 -0
  17. package/dist/chat/providers/anthropic.js.map +1 -0
  18. package/dist/chat/providers/gemini.d.ts +52 -0
  19. package/dist/chat/providers/gemini.d.ts.map +1 -0
  20. package/dist/chat/providers/gemini.js +284 -0
  21. package/dist/chat/providers/gemini.js.map +1 -0
  22. package/dist/chat/providers/index.d.ts +19 -0
  23. package/dist/chat/providers/index.d.ts.map +1 -0
  24. package/dist/chat/providers/index.js +23 -0
  25. package/dist/chat/providers/index.js.map +1 -0
  26. package/dist/chat/providers/local.d.ts +37 -0
  27. package/dist/chat/providers/local.d.ts.map +1 -0
  28. package/dist/chat/providers/local.js +130 -0
  29. package/dist/chat/providers/local.js.map +1 -0
  30. package/dist/chat/providers/openai-compatible.d.ts +155 -0
  31. package/dist/chat/providers/openai-compatible.d.ts.map +1 -0
  32. package/dist/chat/providers/openai-compatible.js +264 -0
  33. package/dist/chat/providers/openai-compatible.js.map +1 -0
  34. package/dist/chat/providers/openai.d.ts +24 -0
  35. package/dist/chat/providers/openai.d.ts.map +1 -0
  36. package/dist/chat/providers/openai.js +62 -0
  37. package/dist/chat/providers/openai.js.map +1 -0
  38. package/dist/chat/providers/openrouter.d.ts +26 -0
  39. package/dist/chat/providers/openrouter.d.ts.map +1 -0
  40. package/dist/chat/providers/openrouter.js +65 -0
  41. package/dist/chat/providers/openrouter.js.map +1 -0
  42. package/dist/chat/providers/provider-fetch.d.ts +15 -0
  43. package/dist/chat/providers/provider-fetch.d.ts.map +1 -0
  44. package/dist/chat/providers/provider-fetch.js +35 -0
  45. package/dist/chat/providers/provider-fetch.js.map +1 -0
  46. package/dist/chat/providers/provider.d.ts +214 -0
  47. package/dist/chat/providers/provider.d.ts.map +1 -0
  48. package/dist/chat/providers/provider.js +166 -0
  49. package/dist/chat/providers/provider.js.map +1 -0
  50. package/dist/chat/providers/sse-reader.d.ts +21 -0
  51. package/dist/chat/providers/sse-reader.d.ts.map +1 -0
  52. package/dist/chat/providers/sse-reader.js +48 -0
  53. package/dist/chat/providers/sse-reader.js.map +1 -0
  54. package/dist/chat/system-prompt.d.ts +33 -0
  55. package/dist/chat/system-prompt.d.ts.map +1 -0
  56. package/dist/chat/system-prompt.js +166 -0
  57. package/dist/chat/system-prompt.js.map +1 -0
  58. package/dist/chat/tool-envelope.d.ts +72 -0
  59. package/dist/chat/tool-envelope.d.ts.map +1 -0
  60. package/dist/chat/tool-envelope.js +263 -0
  61. package/dist/chat/tool-envelope.js.map +1 -0
  62. package/dist/commands/abilities/info.d.ts +21 -0
  63. package/dist/commands/abilities/info.d.ts.map +1 -0
  64. package/dist/commands/abilities/info.js +80 -0
  65. package/dist/commands/abilities/info.js.map +1 -0
  66. package/dist/commands/abilities/list.d.ts +19 -0
  67. package/dist/commands/abilities/list.d.ts.map +1 -0
  68. package/dist/commands/abilities/list.js +98 -0
  69. package/dist/commands/abilities/list.js.map +1 -0
  70. package/dist/commands/abilities/run.d.ts +75 -0
  71. package/dist/commands/abilities/run.d.ts.map +1 -0
  72. package/dist/commands/abilities/run.js +468 -0
  73. package/dist/commands/abilities/run.js.map +1 -0
  74. package/dist/commands/chat.d.ts +54 -0
  75. package/dist/commands/chat.d.ts.map +1 -0
  76. package/dist/commands/chat.js +384 -0
  77. package/dist/commands/chat.js.map +1 -0
  78. package/dist/commands/config/show.d.ts +54 -0
  79. package/dist/commands/config/show.d.ts.map +1 -0
  80. package/dist/commands/config/show.js +324 -0
  81. package/dist/commands/config/show.js.map +1 -0
  82. package/dist/commands/doctor.d.ts +77 -0
  83. package/dist/commands/doctor.d.ts.map +1 -0
  84. package/dist/commands/doctor.js +412 -0
  85. package/dist/commands/doctor.js.map +1 -0
  86. package/dist/commands/jobs/watch.d.ts +50 -0
  87. package/dist/commands/jobs/watch.d.ts.map +1 -0
  88. package/dist/commands/jobs/watch.js +269 -0
  89. package/dist/commands/jobs/watch.js.map +1 -0
  90. package/dist/commands/login.d.ts +25 -0
  91. package/dist/commands/login.d.ts.map +1 -0
  92. package/dist/commands/login.js +165 -0
  93. package/dist/commands/login.js.map +1 -0
  94. package/dist/commands/profile/delete.d.ts +22 -0
  95. package/dist/commands/profile/delete.d.ts.map +1 -0
  96. package/dist/commands/profile/delete.js +57 -0
  97. package/dist/commands/profile/delete.js.map +1 -0
  98. package/dist/commands/profile/list.d.ts +19 -0
  99. package/dist/commands/profile/list.d.ts.map +1 -0
  100. package/dist/commands/profile/list.js +53 -0
  101. package/dist/commands/profile/list.js.map +1 -0
  102. package/dist/commands/profile/use.d.ts +22 -0
  103. package/dist/commands/profile/use.d.ts.map +1 -0
  104. package/dist/commands/profile/use.js +46 -0
  105. package/dist/commands/profile/use.js.map +1 -0
  106. package/dist/config/fs-utils.d.ts +14 -0
  107. package/dist/config/fs-utils.d.ts.map +1 -0
  108. package/dist/config/fs-utils.js +31 -0
  109. package/dist/config/fs-utils.js.map +1 -0
  110. package/dist/config/keychain.d.ts +53 -0
  111. package/dist/config/keychain.d.ts.map +1 -0
  112. package/dist/config/keychain.js +175 -0
  113. package/dist/config/keychain.js.map +1 -0
  114. package/dist/config/profile-store.d.ts +85 -0
  115. package/dist/config/profile-store.d.ts.map +1 -0
  116. package/dist/config/profile-store.js +228 -0
  117. package/dist/config/profile-store.js.map +1 -0
  118. package/dist/config/settings.d.ts +71 -0
  119. package/dist/config/settings.d.ts.map +1 -0
  120. package/dist/config/settings.js +151 -0
  121. package/dist/config/settings.js.map +1 -0
  122. package/dist/core/abilities-executor.d.ts +126 -0
  123. package/dist/core/abilities-executor.d.ts.map +1 -0
  124. package/dist/core/abilities-executor.js +264 -0
  125. package/dist/core/abilities-executor.js.map +1 -0
  126. package/dist/core/batch-manager.d.ts +113 -0
  127. package/dist/core/batch-manager.d.ts.map +1 -0
  128. package/dist/core/batch-manager.js +244 -0
  129. package/dist/core/batch-manager.js.map +1 -0
  130. package/dist/core/http-client.d.ts +111 -0
  131. package/dist/core/http-client.d.ts.map +1 -0
  132. package/dist/core/http-client.js +329 -0
  133. package/dist/core/http-client.js.map +1 -0
  134. package/dist/core/safety-controller.d.ts +114 -0
  135. package/dist/core/safety-controller.d.ts.map +1 -0
  136. package/dist/core/safety-controller.js +229 -0
  137. package/dist/core/safety-controller.js.map +1 -0
  138. package/dist/hooks/command-not-found.d.ts +12 -0
  139. package/dist/hooks/command-not-found.d.ts.map +1 -0
  140. package/dist/hooks/command-not-found.js +58 -0
  141. package/dist/hooks/command-not-found.js.map +1 -0
  142. package/dist/index.d.ts +7 -0
  143. package/dist/index.d.ts.map +1 -0
  144. package/dist/index.js +7 -0
  145. package/dist/index.js.map +1 -0
  146. package/dist/lib/base-command.d.ts +123 -0
  147. package/dist/lib/base-command.d.ts.map +1 -0
  148. package/dist/lib/base-command.js +285 -0
  149. package/dist/lib/base-command.js.map +1 -0
  150. package/dist/output/formatter.d.ts +48 -0
  151. package/dist/output/formatter.d.ts.map +1 -0
  152. package/dist/output/formatter.js +138 -0
  153. package/dist/output/formatter.js.map +1 -0
  154. package/dist/output/json-envelope.d.ts +43 -0
  155. package/dist/output/json-envelope.d.ts.map +1 -0
  156. package/dist/output/json-envelope.js +73 -0
  157. package/dist/output/json-envelope.js.map +1 -0
  158. package/dist/utils/audit-logger.d.ts +97 -0
  159. package/dist/utils/audit-logger.d.ts.map +1 -0
  160. package/dist/utils/audit-logger.js +169 -0
  161. package/dist/utils/audit-logger.js.map +1 -0
  162. package/dist/utils/colors.d.ts +29 -0
  163. package/dist/utils/colors.d.ts.map +1 -0
  164. package/dist/utils/colors.js +36 -0
  165. package/dist/utils/colors.js.map +1 -0
  166. package/dist/utils/errors.d.ts +107 -0
  167. package/dist/utils/errors.d.ts.map +1 -0
  168. package/dist/utils/errors.js +149 -0
  169. package/dist/utils/errors.js.map +1 -0
  170. package/dist/utils/exit-codes.d.ts +21 -0
  171. package/dist/utils/exit-codes.d.ts.map +1 -0
  172. package/dist/utils/exit-codes.js +20 -0
  173. package/dist/utils/exit-codes.js.map +1 -0
  174. package/dist/utils/format.d.ts +64 -0
  175. package/dist/utils/format.d.ts.map +1 -0
  176. package/dist/utils/format.js +69 -0
  177. package/dist/utils/format.js.map +1 -0
  178. package/dist/utils/prompt.d.ts +34 -0
  179. package/dist/utils/prompt.d.ts.map +1 -0
  180. package/dist/utils/prompt.js +132 -0
  181. package/dist/utils/prompt.js.map +1 -0
  182. package/dist/utils/retry.d.ts +59 -0
  183. package/dist/utils/retry.d.ts.map +1 -0
  184. package/dist/utils/retry.js +96 -0
  185. package/dist/utils/retry.js.map +1 -0
  186. package/dist/utils/terminal-sanitizer.d.ts +60 -0
  187. package/dist/utils/terminal-sanitizer.d.ts.map +1 -0
  188. package/dist/utils/terminal-sanitizer.js +166 -0
  189. package/dist/utils/terminal-sanitizer.js.map +1 -0
  190. package/dist/validation/input-sanitizer.d.ts +76 -0
  191. package/dist/validation/input-sanitizer.d.ts.map +1 -0
  192. package/dist/validation/input-sanitizer.js +199 -0
  193. package/dist/validation/input-sanitizer.js.map +1 -0
  194. package/dist/validation/schema-validator.d.ts +75 -0
  195. package/dist/validation/schema-validator.d.ts.map +1 -0
  196. package/dist/validation/schema-validator.js +147 -0
  197. package/dist/validation/schema-validator.js.map +1 -0
  198. package/oclif.manifest.json +857 -0
  199. package/package.json +101 -0
  200. package/scripts/completions/README.md +221 -0
  201. package/scripts/completions/mainwpcontrol.bash +193 -0
  202. package/scripts/completions/mainwpcontrol.zsh +267 -0
  203. package/scripts/completions/profile-completer.sh +35 -0
  204. package/scripts/completions/regenerate.sh +78 -0
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Chat Engine for mainwpcontrol
3
+ *
4
+ * LLM interaction loop with safety enforcement.
5
+ *
6
+ * CRITICAL INVARIANTS (from PLAN.md, CHAT_PROMPT.md):
7
+ * - AI proposes tool calls; ChatEngine executes via AbilitiesExecutor
8
+ * - AI NEVER executes directly
9
+ * - Destructive actions always preview first
10
+ * - Max tool calls per turn enforced
11
+ * - JSON retry logic (max 2 retries)
12
+ */
13
+ import type { LLMProvider, Message } from './providers/provider.js';
14
+ import { type SystemPromptConfig } from './system-prompt.js';
15
+ import { type AbilitiesExecutor, type Ability, type ExecutionResult } from '../core/abilities-executor.js';
16
+ import { type PreviewResult } from '../core/safety-controller.js';
17
+ /**
18
+ * Chat response types
19
+ */
20
+ export type ChatResponse = {
21
+ type: 'message';
22
+ content: string;
23
+ } | {
24
+ type: 'tool_result';
25
+ tool: string;
26
+ result: ExecutionResult;
27
+ preview?: PreviewResult;
28
+ } | {
29
+ type: 'preview';
30
+ preview: PreviewResult;
31
+ requiresApproval: boolean;
32
+ } | {
33
+ type: 'error';
34
+ error: string;
35
+ };
36
+ /**
37
+ * Chat engine options
38
+ */
39
+ export interface ChatEngineOptions {
40
+ /** LLM provider */
41
+ provider: LLMProvider;
42
+ /** Abilities executor */
43
+ executor: AbilitiesExecutor;
44
+ /** Maximum tool calls per turn */
45
+ maxToolCallsPerTurn?: number;
46
+ /** Maximum JSON parse retries */
47
+ maxParseRetries?: number;
48
+ /** Model to use */
49
+ model?: string;
50
+ /** Temperature */
51
+ temperature?: number;
52
+ /** System prompt config */
53
+ promptConfig?: Partial<SystemPromptConfig>;
54
+ /** Maximum messages to keep in context (excluding system prompt). undefined = no limit */
55
+ maxContextMessages?: number;
56
+ /** Maximum estimated tokens in context. Reserved for future use. */
57
+ maxContextTokens?: number;
58
+ /** Whether to use streaming responses (default: false) */
59
+ stream?: boolean;
60
+ /** Callback for streaming content chunks (called as content arrives) */
61
+ onStreamChunk?: (content: string) => void;
62
+ }
63
+ /**
64
+ * Chat engine class
65
+ *
66
+ * SAFETY: All execution flows through SafetyController and AbilitiesExecutor.
67
+ * ChatEngine never bypasses safety checks.
68
+ *
69
+ * Context window management: The engine maintains a sliding window of messages
70
+ * to prevent unbounded memory growth. The system prompt is always preserved,
71
+ * and message coherence (user-assistant pairs, tool call-result pairs) is maintained.
72
+ */
73
+ export declare class ChatEngine {
74
+ private readonly provider;
75
+ private readonly executor;
76
+ private readonly safetyController;
77
+ private readonly maxToolCallsPerTurn;
78
+ private readonly maxParseRetries;
79
+ private readonly model;
80
+ private readonly temperature;
81
+ private readonly promptConfig;
82
+ private readonly maxContextMessages;
83
+ private readonly stream;
84
+ private readonly onStreamChunk?;
85
+ private messages;
86
+ private abilities;
87
+ private tools;
88
+ private pendingPreview;
89
+ private initialized;
90
+ constructor(options: ChatEngineOptions);
91
+ /**
92
+ * Initialize the chat session
93
+ */
94
+ initialize(): Promise<void>;
95
+ /**
96
+ * Send a user message and process the response
97
+ */
98
+ sendMessage(userMessage: string): Promise<ChatResponse[]>;
99
+ /**
100
+ * Handle response to a pending preview
101
+ */
102
+ private handlePreviewResponse;
103
+ /**
104
+ * Process LLM response with tool calling loop
105
+ */
106
+ private processLLMResponse;
107
+ /**
108
+ * Execute a tool with safety checks
109
+ *
110
+ * CRITICAL: All execution goes through SafetyController
111
+ */
112
+ private executeTool;
113
+ /**
114
+ * Execute destructive action with preview
115
+ */
116
+ private executeWithPreview;
117
+ /**
118
+ * Accumulate streaming chunks into a complete LLM response.
119
+ * This method consumes an AsyncGenerator<StreamChunk> and reconstructs
120
+ * a complete LLMResponse compatible with the existing parseResponse() logic.
121
+ *
122
+ * @param stream - The streaming generator from the provider
123
+ * @returns A complete LLMResponse with accumulated content and tool calls
124
+ */
125
+ private accumulateStream;
126
+ /**
127
+ * Check if there's a pending preview awaiting approval
128
+ */
129
+ hasPendingPreview(): boolean;
130
+ /**
131
+ * Get the pending preview
132
+ */
133
+ getPendingPreview(): PreviewResult | null;
134
+ /**
135
+ * Cancel pending preview
136
+ */
137
+ cancelPendingPreview(): void;
138
+ /**
139
+ * Get conversation history (for debugging)
140
+ */
141
+ getHistory(): Message[];
142
+ /**
143
+ * Clear conversation history (keep system prompt)
144
+ */
145
+ clearHistory(): void;
146
+ /**
147
+ * Get message count (excluding system prompt)
148
+ */
149
+ private getMessageCount;
150
+ /**
151
+ * Estimate tokens for a set of messages using character count as a rough proxy.
152
+ * Uses character_count / 4 as a heuristic (common approximation for English text).
153
+ *
154
+ * NOTE: This is a rough estimate. Actual token counts from LLMResponse.usage
155
+ * are more accurate when available.
156
+ *
157
+ * @param messages - Messages to estimate tokens for
158
+ * @returns Estimated token count
159
+ */
160
+ private estimateTokens;
161
+ /**
162
+ * Check if context truncation should occur based on message count limits.
163
+ * Token-based limits are reserved for future implementation.
164
+ *
165
+ * @returns true if truncation should occur, false if:
166
+ * - maxContextMessages is undefined (no limit)
167
+ * - maxContextMessages is 0 (explicit unlimited)
168
+ * - message count is within limit
169
+ */
170
+ private shouldTruncate;
171
+ /**
172
+ * Find the index where truncation should start, respecting message boundaries.
173
+ * This ensures we keep complete user-assistant exchanges and tool call-result pairs.
174
+ *
175
+ * @returns Index in the messages array where truncation should start (exclusive of system prompt)
176
+ */
177
+ private findTruncationPoint;
178
+ /**
179
+ * Truncate message history using a sliding window approach.
180
+ * Preserves:
181
+ * - System prompt (always first message)
182
+ * - Messages since pending preview (if any)
183
+ * - Most recent N messages where N = maxContextMessages
184
+ * - Complete message exchanges (user-assistant, tool call-result pairs)
185
+ */
186
+ private truncateHistory;
187
+ /**
188
+ * Get context window statistics for monitoring.
189
+ *
190
+ * @returns Object with current message count, max limit, and estimated tokens
191
+ */
192
+ getContextStats(): {
193
+ messageCount: number;
194
+ maxMessages: number | undefined;
195
+ estimatedTokens: number;
196
+ };
197
+ /**
198
+ * Get loaded abilities
199
+ */
200
+ getAbilities(): Ability[];
201
+ /**
202
+ * Get provider info
203
+ */
204
+ getProviderInfo(): {
205
+ name: string;
206
+ model: string;
207
+ };
208
+ }
209
+ /**
210
+ * Create a chat engine
211
+ */
212
+ export declare function createChatEngine(options: ChatEngineOptions): ChatEngine;
213
+ //# sourceMappingURL=chat-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-engine.d.ts","sourceRoot":"","sources":["../../src/chat/chat-engine.ts"],"names":[],"mappings":"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"}