needware-cli 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 (93) hide show
  1. package/.editorconfig +21 -0
  2. package/AGENT_COMMAND_SUMMARY.md +364 -0
  3. package/CHANGELOG.md +138 -0
  4. package/FEATURE_INTERACTIVE_MODE.md +303 -0
  5. package/INTERACTIVE_EXAMPLE.md +305 -0
  6. package/LICENSE +22 -0
  7. package/PROJECT_SUMMARY.md +435 -0
  8. package/QUICK_START.md +216 -0
  9. package/README.md +310 -0
  10. package/SETUP.md +315 -0
  11. package/bin/cli.js +49 -0
  12. package/config/default.json +20 -0
  13. package/dist/commands/agent.d.ts +38 -0
  14. package/dist/commands/agent.d.ts.map +1 -0
  15. package/dist/commands/agent.js +444 -0
  16. package/dist/commands/agent.js.map +1 -0
  17. package/dist/commands/config.d.ts +48 -0
  18. package/dist/commands/config.d.ts.map +1 -0
  19. package/dist/commands/config.js +197 -0
  20. package/dist/commands/config.js.map +1 -0
  21. package/dist/commands/example.d.ts +32 -0
  22. package/dist/commands/example.d.ts.map +1 -0
  23. package/dist/commands/example.js +154 -0
  24. package/dist/commands/example.js.map +1 -0
  25. package/dist/commands/index.d.ts +8 -0
  26. package/dist/commands/index.d.ts.map +1 -0
  27. package/dist/commands/index.js +15 -0
  28. package/dist/commands/index.js.map +1 -0
  29. package/dist/commands/init.d.ts +25 -0
  30. package/dist/commands/init.d.ts.map +1 -0
  31. package/dist/commands/init.js +158 -0
  32. package/dist/commands/init.js.map +1 -0
  33. package/dist/core/cli.d.ts +37 -0
  34. package/dist/core/cli.d.ts.map +1 -0
  35. package/dist/core/cli.js +160 -0
  36. package/dist/core/cli.js.map +1 -0
  37. package/dist/core/command.d.ts +41 -0
  38. package/dist/core/command.d.ts.map +1 -0
  39. package/dist/core/command.js +87 -0
  40. package/dist/core/command.js.map +1 -0
  41. package/dist/core/logger.d.ts +30 -0
  42. package/dist/core/logger.d.ts.map +1 -0
  43. package/dist/core/logger.js +163 -0
  44. package/dist/core/logger.js.map +1 -0
  45. package/dist/index.d.ts +15 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +125 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/sdk/base-sdk.d.ts +61 -0
  50. package/dist/sdk/base-sdk.d.ts.map +1 -0
  51. package/dist/sdk/base-sdk.js +71 -0
  52. package/dist/sdk/base-sdk.js.map +1 -0
  53. package/dist/sdk/example-sdk.d.ts +40 -0
  54. package/dist/sdk/example-sdk.d.ts.map +1 -0
  55. package/dist/sdk/example-sdk.js +168 -0
  56. package/dist/sdk/example-sdk.js.map +1 -0
  57. package/dist/sdk/index.d.ts +59 -0
  58. package/dist/sdk/index.d.ts.map +1 -0
  59. package/dist/sdk/index.js +169 -0
  60. package/dist/sdk/index.js.map +1 -0
  61. package/dist/types/command.d.ts +34 -0
  62. package/dist/types/command.d.ts.map +1 -0
  63. package/dist/types/command.js +13 -0
  64. package/dist/types/command.js.map +1 -0
  65. package/dist/types/config.d.ts +30 -0
  66. package/dist/types/config.d.ts.map +1 -0
  67. package/dist/types/config.js +6 -0
  68. package/dist/types/config.js.map +1 -0
  69. package/dist/types/error.d.ts +24 -0
  70. package/dist/types/error.d.ts.map +1 -0
  71. package/dist/types/error.js +33 -0
  72. package/dist/types/error.js.map +1 -0
  73. package/dist/types/index.d.ts +8 -0
  74. package/dist/types/index.d.ts.map +1 -0
  75. package/dist/types/index.js +23 -0
  76. package/dist/types/index.js.map +1 -0
  77. package/dist/types/sdk.d.ts +21 -0
  78. package/dist/types/sdk.d.ts.map +1 -0
  79. package/dist/types/sdk.js +6 -0
  80. package/dist/types/sdk.js.map +1 -0
  81. package/dist/utils/config.d.ts +59 -0
  82. package/dist/utils/config.d.ts.map +1 -0
  83. package/dist/utils/config.js +237 -0
  84. package/dist/utils/config.js.map +1 -0
  85. package/dist/utils/file.d.ts +66 -0
  86. package/dist/utils/file.d.ts.map +1 -0
  87. package/dist/utils/file.js +162 -0
  88. package/dist/utils/file.js.map +1 -0
  89. package/dist/utils/validator.d.ts +66 -0
  90. package/dist/utils/validator.d.ts.map +1 -0
  91. package/dist/utils/validator.js +120 -0
  92. package/dist/utils/validator.js.map +1 -0
  93. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,qBAAa,YAAa,SAAQ,OAAO;IACvC,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,mDAAmD;IACvE,QAAQ,CAAC,OAAO,WAAU;gBAEd,MAAM,EAAE,MAAM;IAIpB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAuB9D;;OAEG;YACW,QAAQ;IA8EtB;;OAEG;YACW,mBAAmB;IAwEjC;;OAEG;YACY,mBAAmB;IAsDlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkJvB;;OAEG;IACH,OAAO,CAAC,QAAQ;CA+BjB"}
@@ -0,0 +1,444 @@
1
+ "use strict";
2
+ /**
3
+ * Agent 命令 - 使用 Claude Agent SDK 执行智能任务
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.AgentCommand = void 0;
43
+ const chalk_1 = __importDefault(require("chalk"));
44
+ const ora_1 = __importDefault(require("ora"));
45
+ const inquirer_1 = __importDefault(require("inquirer"));
46
+ const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
47
+ const command_1 = require("../core/command");
48
+ const path = __importStar(require("path"));
49
+ const crypto_1 = require("crypto");
50
+ class AgentCommand extends command_1.Command {
51
+ name = 'agent';
52
+ description = 'Execute AI agent tasks using Claude Agent SDK';
53
+ aliases = ['ag'];
54
+ constructor(logger) {
55
+ super(logger);
56
+ }
57
+ async execute(options) {
58
+ try {
59
+ const prompt = options.args?.[0];
60
+ const interactive = options.interactive || options.i;
61
+ // 交互式模式不需要初始 prompt
62
+ if (!interactive && !prompt) {
63
+ return this.showHelp();
64
+ }
65
+ // 如果是交互模式,使用多轮对话
66
+ if (interactive) {
67
+ return await this.runInteractiveAgent(prompt, options);
68
+ }
69
+ // 否则使用单次对话
70
+ return await this.runAgent(prompt, options);
71
+ }
72
+ catch (error) {
73
+ const message = error instanceof Error ? error.message : 'Agent command failed';
74
+ return this.error(message, error);
75
+ }
76
+ }
77
+ /**
78
+ * 运行 Agent 查询
79
+ */
80
+ async runAgent(prompt, options) {
81
+ // 获取 API Key,优先级:命令行参数 > 环境变量 > 默认值
82
+ const apiKey = options.apiKey || process.env.ANTHROPIC_API_KEY;
83
+ // 获取 Base URL,优先级:命令行参数 > 环境变量 > 默认值
84
+ const baseUrl = options.baseUrl || process.env.ANTHROPIC_BASE_URL;
85
+ // SDK 会在初始化时检查 process.env.ANTHROPIC_API_KEY
86
+ // 所以需要确保环境变量被设置
87
+ if (!process.env.ANTHROPIC_API_KEY) {
88
+ process.env.ANTHROPIC_API_KEY = apiKey;
89
+ }
90
+ if (!process.env.ANTHROPIC_BASE_URL && baseUrl) {
91
+ process.env.ANTHROPIC_BASE_URL = baseUrl;
92
+ }
93
+ console.log('API Key:', apiKey.substring(0, 10) + '...');
94
+ console.log('Base URL:', baseUrl);
95
+ // 获取工作目录(默认使用当前工作目录)
96
+ const workingDirectory = options.workingDir || process.cwd();
97
+ const resolvedWorkingDir = path.resolve(workingDirectory);
98
+ // 获取额外的目录
99
+ const additionalDirectories = options.additionalDirs
100
+ ? options.additionalDirs.split(',').map((dir) => dir.trim())
101
+ : [];
102
+ console.log(chalk_1.default.blue('\n🤖 启动 Claude Agent...\n'));
103
+ console.log(chalk_1.default.gray(`工作目录: ${resolvedWorkingDir}`));
104
+ if (additionalDirectories.length > 0) {
105
+ console.log(chalk_1.default.gray(`额外目录: ${additionalDirectories.join(', ')}`));
106
+ }
107
+ console.log(chalk_1.default.gray(`提示词: ${prompt}\n`));
108
+ const spinner = (0, ora_1.default)('Agent 正在处理...').start();
109
+ try {
110
+ // 创建 agent 查询
111
+ const agentQuery = (0, claude_agent_sdk_1.query)({
112
+ prompt: prompt.trim(),
113
+ options: {
114
+ systemPrompt: this.getSystemPrompt(resolvedWorkingDir),
115
+ settingSources: ['project'],
116
+ model: 'claude-sonnet-4-5',
117
+ maxTurns: 30,
118
+ permissionMode: 'bypassPermissions',
119
+ cwd: resolvedWorkingDir,
120
+ additionalDirectories,
121
+ env: {
122
+ ANTHROPIC_API_KEY: apiKey,
123
+ ...(baseUrl && { ANTHROPIC_BASE_URL: baseUrl }),
124
+ PATH: process.env.PATH || '/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
125
+ },
126
+ },
127
+ });
128
+ spinner.stop();
129
+ console.log(chalk_1.default.green('✓ Agent 已启动\n'));
130
+ console.log(chalk_1.default.blue('━'.repeat(60)));
131
+ console.log();
132
+ // 流式输出结果
133
+ for await (const message of agentQuery) {
134
+ this.handleAgentMessage(message);
135
+ }
136
+ console.log();
137
+ console.log(chalk_1.default.blue('━'.repeat(60)));
138
+ console.log(chalk_1.default.green('\n✓ Agent 执行完成\n'));
139
+ return this.success('Agent task completed successfully');
140
+ }
141
+ catch (error) {
142
+ spinner.fail(chalk_1.default.red('Agent 执行失败'));
143
+ throw error;
144
+ }
145
+ }
146
+ /**
147
+ * 运行交互式 Agent 查询(多轮对话)
148
+ */
149
+ async runInteractiveAgent(initialPrompt, options) {
150
+ // 获取 API Key 和 Base URL
151
+ const apiKey = options.apiKey || process.env.ANTHROPIC_API_KEY;
152
+ const baseUrl = options.baseUrl || process.env.ANTHROPIC_BASE_URL;
153
+ if (!process.env.ANTHROPIC_API_KEY) {
154
+ process.env.ANTHROPIC_API_KEY = apiKey;
155
+ }
156
+ if (!process.env.ANTHROPIC_BASE_URL && baseUrl) {
157
+ process.env.ANTHROPIC_BASE_URL = baseUrl;
158
+ }
159
+ // 获取工作目录
160
+ const workingDirectory = options.workingDir || process.cwd();
161
+ const resolvedWorkingDir = path.resolve(workingDirectory);
162
+ // 获取额外的目录
163
+ const additionalDirectories = options.additionalDirs
164
+ ? options.additionalDirs.split(',').map((dir) => dir.trim())
165
+ : [];
166
+ console.log(chalk_1.default.blue('\n🤖 启动交互式 Claude Agent...\n'));
167
+ console.log(chalk_1.default.gray(`工作目录: ${resolvedWorkingDir}`));
168
+ if (additionalDirectories.length > 0) {
169
+ console.log(chalk_1.default.gray(`额外目录: ${additionalDirectories.join(', ')}`));
170
+ }
171
+ console.log(chalk_1.default.yellow(`\n💡 提示: 输入 'exit' 或 'quit' 退出对话\n`));
172
+ const sessionId = (0, crypto_1.randomUUID)();
173
+ // 创建消息流生成器
174
+ const messageStream = this.createMessageStream(sessionId, initialPrompt);
175
+ // 创建 agent 查询
176
+ const agentQuery = (0, claude_agent_sdk_1.query)({
177
+ prompt: messageStream,
178
+ options: {
179
+ systemPrompt: this.getSystemPrompt(resolvedWorkingDir),
180
+ settingSources: ['project'],
181
+ model: 'claude-sonnet-4-5',
182
+ maxTurns: 100, // 增加交互轮次
183
+ permissionMode: 'bypassPermissions',
184
+ cwd: resolvedWorkingDir,
185
+ additionalDirectories,
186
+ env: {
187
+ ANTHROPIC_API_KEY: apiKey,
188
+ ...(baseUrl && { ANTHROPIC_BASE_URL: baseUrl }),
189
+ PATH: process.env.PATH || '/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
190
+ },
191
+ },
192
+ });
193
+ console.log(chalk_1.default.green('✓ Agent 已启动\n'));
194
+ console.log(chalk_1.default.blue('━'.repeat(60)));
195
+ console.log();
196
+ // 流式输出结果
197
+ for await (const message of agentQuery) {
198
+ this.handleAgentMessage(message);
199
+ }
200
+ console.log();
201
+ console.log(chalk_1.default.blue('━'.repeat(60)));
202
+ console.log(chalk_1.default.green('\n✓ 对话结束\n'));
203
+ return this.success('Interactive agent session completed');
204
+ }
205
+ /**
206
+ * 创建消息流生成器
207
+ */
208
+ async *createMessageStream(sessionId, initialPrompt) {
209
+ // 如果有初始 prompt,先发送它
210
+ if (initialPrompt) {
211
+ yield {
212
+ session_id: sessionId,
213
+ type: 'user',
214
+ message: {
215
+ role: 'user',
216
+ content: initialPrompt.trim(),
217
+ },
218
+ parent_tool_use_id: null,
219
+ };
220
+ }
221
+ // 持续接收用户输入
222
+ while (true) {
223
+ const { userInput } = await inquirer_1.default.prompt([
224
+ {
225
+ type: 'input',
226
+ name: 'userInput',
227
+ message: chalk_1.default.cyan('You:'),
228
+ validate: (input) => {
229
+ if (!input.trim()) {
230
+ return '请输入内容';
231
+ }
232
+ return true;
233
+ },
234
+ },
235
+ ]);
236
+ const trimmedInput = userInput.trim();
237
+ // 检查是否退出
238
+ if (trimmedInput.toLowerCase() === 'exit' || trimmedInput.toLowerCase() === 'quit') {
239
+ console.log(chalk_1.default.yellow('\n👋 退出对话...\n'));
240
+ break;
241
+ }
242
+ // 发送用户消息
243
+ yield {
244
+ session_id: sessionId,
245
+ type: 'user',
246
+ message: {
247
+ role: 'user',
248
+ content: trimmedInput,
249
+ },
250
+ parent_tool_use_id: null,
251
+ };
252
+ }
253
+ }
254
+ /**
255
+ * 处理 Agent 消息
256
+ */
257
+ handleAgentMessage(message) {
258
+ try {
259
+ // 直接输出原始消息到终端
260
+ console.log(JSON.stringify(message, null, 2));
261
+ }
262
+ catch (error) {
263
+ // 如果序列化失败,尝试直接输出
264
+ console.log(message);
265
+ }
266
+ }
267
+ /**
268
+ * 获取系统提示词
269
+ */
270
+ getSystemPrompt(workingDir) {
271
+ return `
272
+ ## Working Directory Context
273
+
274
+ IMPORTANT: You are working in the directory: ${workingDir}
275
+ All file operations (read, write, create, etc.) MUST be performed in this working directory.
276
+ Do NOT use /tmp or any other system directories. Work exclusively in: ${workingDir}
277
+
278
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
279
+
280
+ You are needware, an AI editor that creates and modifies web applications. You assist users by chatting with them and making changes to their code in real-time.
281
+
282
+ Not every interaction requires code changes - you're happy to discuss, explain concepts, or provide guidance without modifying the codebase. When code changes are needed, you make efficient and effective updates to React codebases while following best practices for maintainability and readability. You take pride in keeping things simple and elegant. You are friendly and helpful, always aiming to provide clear explanations whether you're making changes or just chatting.
283
+
284
+ Always reply in the same language as the user's message.
285
+
286
+ ## Technology Stack:
287
+ needware projects are built on top of React, Vite, Tailwind CSS, and TypeScript.
288
+ - **Framework**: React
289
+ - **Build Tool**: Vite
290
+ - **Styling**: Tailwind CSS (with design system tokens)
291
+ - **TypeScript**: Strict mode enabled
292
+ - **Package Manager**: npm
293
+
294
+ ## Project Structure:
295
+ - **Entry HTML**: \`index.html\` at project root (Vite entry point)
296
+ - **Source code**: All in \`src/\` directory
297
+ - \`main.tsx\`: React application entry point
298
+ - \`App.tsx\`: Main App component
299
+ - \`index.css\`: Global styles and design system tokens
300
+ - \`assets/\`: Static assets (images, icons, etc.)
301
+ - \`components/\`: Reusable UI components (create if needed)
302
+ - \`hooks/\`: Custom React hooks (create if needed)
303
+ - \`types/\`: TypeScript type definitions (create if needed)
304
+ - \`utils/\`: Utility functions (create if needed)
305
+ - **Public assets**: \`public/\` directory (served at root during dev/build)
306
+ - **Tailwind config**: \`tailwind.config.ts\` for design system customization
307
+
308
+ ## Development Commands:
309
+ - \`npm run dev\`: Start dev server
310
+ - \`npm run build\`: Build for production
311
+ - \`npm run preview\`: Preview production build
312
+ - \`npm run lint\`: Run ESLint
313
+
314
+ ## General Guidelines
315
+
316
+ PERFECT ARCHITECTURE: Always consider whether the code needs refactoring given the latest request. If it does, refactor the code to be more efficient and maintainable. Spaghetti code is your enemy.
317
+
318
+ MAXIMIZE EFFICIENCY: For maximum efficiency, whenever you need to perform multiple independent operations, always invoke all relevant tools simultaneously. Never make sequential tool calls when they can be combined.
319
+
320
+ CHECK UNDERSTANDING: If unsure about scope, ask for clarification rather than guessing. When you ask a question to the user, make sure to wait for their response before proceeding and calling tools.
321
+
322
+ BE CONCISE: You MUST answer concisely with fewer than 2 lines of text (not including tool use or code generation), unless user asks for detail. After editing code, do not write a long explanation, just keep it as short as possible without emojis.
323
+
324
+ COMMUNICATE ACTIONS: Before performing any changes, briefly inform the user what you will do.
325
+
326
+ ## Required Workflow (Follow This Order)
327
+
328
+ 1. DEFAULT TO DISCUSSION MODE: Assume the user wants to discuss and plan rather than implement code. Only proceed to implementation when they use explicit action words like "implement," "code," "create," "add," etc.
329
+
330
+ 2. THINK & PLAN: When thinking about the task, you should:
331
+ - Restate what the user is ACTUALLY asking for (not what you think they might want)
332
+ - Do not hesitate to explore more of the codebase to find relevant information
333
+ - Define EXACTLY what will change and what will remain untouched
334
+ - Plan a minimal but CORRECT approach needed to fulfill the request
335
+ - Select the most appropriate and efficient tools
336
+
337
+ 3. ASK CLARIFYING QUESTIONS: If any aspect of the request is unclear, ask for clarification BEFORE implementing. Wait for their response before proceeding and calling tools.
338
+
339
+ 4. GATHER CONTEXT EFFICIENTLY:
340
+ - ALWAYS batch multiple file operations when possible
341
+ - Only read files directly relevant to the request
342
+
343
+ 5. IMPLEMENTATION (when relevant):
344
+ - Focus on the changes explicitly requested
345
+ - Create small, focused components instead of large files
346
+ - Avoid fallbacks, edge cases, or features not explicitly requested
347
+
348
+ 6. VERIFY & CONCLUDE:
349
+ - Ensure all changes are complete and correct
350
+ - Conclude with a very concise summary of the changes you made
351
+ - Avoid emojis
352
+
353
+ ## Efficient Tool Usage
354
+
355
+ ### CARDINAL RULES:
356
+ 1. ALWAYS batch multiple operations when possible
357
+ 2. NEVER make sequential tool calls that could be combined
358
+ 3. Use the most appropriate tool for each task
359
+
360
+ ### EFFICIENT CODE MODIFICATION
361
+ Choose the least invasive approach:
362
+ - Use search-replace for most changes
363
+ - Use write-file only for new files or complete rewrites
364
+
365
+ ## Coding Standards:
366
+ - **Always use TypeScript** with proper type definitions
367
+ - Use **functional components** with hooks
368
+ - Use **modern React patterns**: useState, useEffect, useCallback, useMemo, etc.
369
+ - Use **ES modules** (import/export)
370
+ - Follow **React best practices**: component composition, prop drilling avoidance, etc.
371
+ - ALWAYS generate beautiful and responsive designs
372
+ - Use toast components to inform the user about important events
373
+
374
+ ## Design System (CRITICAL):
375
+ The design system is everything. You should never write custom styles in components, you should always use the design system and customize it.
376
+
377
+ - **Maximize reusability** of components
378
+ - **Leverage index.css and tailwind.config.ts** to create a consistent design system that can be reused across the app instead of custom styles everywhere
379
+ - **Create variants** in the components you'll use
380
+ - **USE SEMANTIC TOKENS FOR COLORS**: It's important you follow best practices. DO NOT use direct colors like text-white, text-black, bg-white, bg-black, etc. Everything must be themed via the design system defined in the index.css and tailwind.config.ts files!
381
+
382
+ ## File Naming Conventions:
383
+ - **Components**: PascalCase (e.g., \`UserProfile.tsx\`)
384
+ - **Hooks**: camelCase starting with 'use' (e.g., \`useAuth.ts\`)
385
+ - **Types**: PascalCase (e.g., \`User.ts\` or \`types.ts\`)
386
+ - **Utils**: camelCase (e.g., \`formatDate.ts\`)
387
+ - **CSS Modules**: \`ComponentName.module.css\`
388
+
389
+ ## Import Paths:
390
+ - Use relative imports (e.g., \`import { X } from './components/X'\`)
391
+ - Or configure path aliases in \`vite.config.ts\` and \`tsconfig.json\` if needed
392
+
393
+ ## Design Guidelines:
394
+ - Create **beautiful, modern, production-ready** UI designs
395
+ - Ensure responsive layouts (mobile-first approach)
396
+ - Implement proper error handling and loading states
397
+ - Follow accessibility best practices (semantic HTML, ARIA labels, keyboard navigation)
398
+ - Use modern CSS features (flexbox, grid, custom properties)
399
+ - Maximize reusability of components
400
+ - Pay attention to contrast, color, and typography
401
+ - Beautiful designs are your top priority
402
+ - **Image placeholders**: If no image URL is provided, use an Unsplash image as a substitute based on the scene
403
+
404
+ ## Important Rules:
405
+ - When installing new packages, use \`npm install\` (not yarn or pnpm)
406
+ - Always maintain TypeScript type safety
407
+ - Hot Module Replacement (HMR) is enabled by default with Vite
408
+ - For production builds, assets are optimized and hashed automatically
409
+ - Keep explanations very, very short
410
+ - Minimize emoji use
411
+ - Make sure to write valid TypeScript and CSS code following the design system
412
+ - Make sure imports are correct
413
+ `.trim();
414
+ }
415
+ /**
416
+ * 显示帮助信息
417
+ */
418
+ showHelp() {
419
+ console.log(chalk_1.default.blue('\n📖 Agent 命令帮助:\n'));
420
+ console.log(chalk_1.default.cyan('用法:'));
421
+ console.log(' needware-cli agent <prompt> [options]');
422
+ console.log(' needware-cli agent --interactive [initial-prompt] [options]\n');
423
+ console.log(chalk_1.default.cyan('选项:'));
424
+ console.log(' -i, --interactive 启用交互式多轮对话模式');
425
+ console.log(' --working-dir <path> 指定工作目录 (默认: 当前目录)');
426
+ console.log(' --additional-dirs <paths> 指定额外的目录 (逗号分隔)');
427
+ console.log(' --api-key <key> Anthropic API Key (覆盖环境变量)');
428
+ console.log(' --base-url <url> Anthropic API Base URL (覆盖环境变量)\n');
429
+ console.log(chalk_1.default.cyan('环境变量:'));
430
+ console.log(' ANTHROPIC_API_KEY Anthropic API Key');
431
+ console.log(' ANTHROPIC_BASE_URL Anthropic API Base URL\n');
432
+ console.log(chalk_1.default.cyan('单次对话示例:'));
433
+ console.log(chalk_1.default.gray(' needware-cli agent "创建一个待办事项应用"'));
434
+ console.log(chalk_1.default.gray(' needware-cli agent "修复登录页面的样式问题" --working-dir ./my-project'));
435
+ console.log(chalk_1.default.gray(' needware-cli agent "添加用户认证功能" --api-key sk-xxx\n'));
436
+ console.log(chalk_1.default.cyan('多轮对话示例:'));
437
+ console.log(chalk_1.default.gray(' needware-cli agent --interactive'));
438
+ console.log(chalk_1.default.gray(' needware-cli agent -i "创建一个待办事项应用"'));
439
+ console.log(chalk_1.default.gray(' needware-cli agent --interactive --working-dir ./my-project\n'));
440
+ return this.success('Help shown');
441
+ }
442
+ }
443
+ exports.AgentCommand = AgentCommand;
444
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * 配置管理命令
3
+ */
4
+ import { Command } from '../core/command';
5
+ import { CommandOptions, CommandResult } from '../types';
6
+ import { ConfigManager } from '../utils/config';
7
+ import { Logger } from '../core/logger';
8
+ export declare class ConfigCommand extends Command {
9
+ readonly name = "config";
10
+ readonly description = "\u914D\u7F6E\u7BA1\u7406\uFF08\u67E5\u770B/\u8BBE\u7F6E\uFF09";
11
+ readonly aliases: string[];
12
+ private configManager;
13
+ constructor(logger: Logger, configManager: ConfigManager);
14
+ execute(options: CommandOptions): Promise<CommandResult>;
15
+ /**
16
+ * 列出所有配置
17
+ */
18
+ private listConfig;
19
+ /**
20
+ * 递归打印配置
21
+ */
22
+ private printConfig;
23
+ /**
24
+ * 格式化配置值
25
+ */
26
+ private formatValue;
27
+ /**
28
+ * 获取配置项
29
+ */
30
+ private getConfig;
31
+ /**
32
+ * 设置配置项
33
+ */
34
+ private setConfig;
35
+ /**
36
+ * 重置配置
37
+ */
38
+ private resetConfig;
39
+ /**
40
+ * 显示配置文件路径
41
+ */
42
+ private showConfigPath;
43
+ /**
44
+ * 显示帮助信息
45
+ */
46
+ private showHelp;
47
+ }
48
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,qBAAa,aAAc,SAAQ,OAAO;IACxC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,mEAAiB;IACrC,QAAQ,CAAC,OAAO,WAAW;IAE3B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAKlD,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB9D;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAkBjB;;OAEG;IACH,OAAO,CAAC,SAAS;IA2CjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAqBjB"}