needware-cli 1.3.5 → 1.3.7
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.
- package/dist/commands/agent.d.ts +0 -4
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +16 -152
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/code-snapshot.d.ts +27 -0
- package/dist/commands/code-snapshot.d.ts.map +1 -0
- package/dist/commands/code-snapshot.js +219 -0
- package/dist/commands/code-snapshot.js.map +1 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/system-prompt.d.ts +12 -0
- package/dist/commands/system-prompt.d.ts.map +1 -0
- package/dist/commands/system-prompt.js +269 -0
- package/dist/commands/system-prompt.js.map +1 -0
- package/dist/core/cli.d.ts.map +1 -1
- package/dist/core/cli.js +7 -0
- package/dist/core/cli.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/examples/auto-convert-url-to-base64.json +1 -0
- package/package.json +2 -1
- package/test-multimodal.sh +1 -0
- package/IMAGE_FEATURE_SUMMARY.md +0 -247
package/dist/commands/agent.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3C,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;IAqB9D;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;OAEG;YACW,2BAA2B;IA+BzC;;OAEG;YACW,mBAAmB;IAqFjC;;OAEG;YACW,QAAQ;IAmNtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,QAAQ;CAwDjB"}
|
package/dist/commands/agent.js
CHANGED
|
@@ -6,6 +6,7 @@ import ora from 'ora';
|
|
|
6
6
|
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
7
7
|
import { Command } from '../core/command.js';
|
|
8
8
|
import { parsePromptFromArgs } from '../utils/prompt-parser.js';
|
|
9
|
+
import { getSystemPrompt } from './system-prompt.js';
|
|
9
10
|
import * as path from 'path';
|
|
10
11
|
import * as fs from 'fs';
|
|
11
12
|
export class AgentCommand extends Command {
|
|
@@ -112,7 +113,12 @@ export class AgentCommand extends Command {
|
|
|
112
113
|
const agentQuery = query({
|
|
113
114
|
prompt: parsedPrompt.prompt,
|
|
114
115
|
options: {
|
|
115
|
-
systemPrompt:
|
|
116
|
+
systemPrompt: getSystemPrompt(resolvedWorkingDir, {
|
|
117
|
+
hasSelectedProject: true,
|
|
118
|
+
projectId: 'sniiobwuoecgypjxpymx',
|
|
119
|
+
publishableKey: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InNuaWlvYnd1b2VjZ3lwanhweW14Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjIxNjE0NDEsImV4cCI6MjA3NzczNzQ0MX0.mm8W3B_NnL37-czNajjV4Dvnh-8JuwirvawypINo9DY',
|
|
120
|
+
url: 'https://sniiobwuoecgypjxpymx.supabase.co',
|
|
121
|
+
}),
|
|
116
122
|
settingSources: ['project'],
|
|
117
123
|
model: 'claude-sonnet-4-5',
|
|
118
124
|
maxTurns: 30,
|
|
@@ -132,7 +138,7 @@ export class AgentCommand extends Command {
|
|
|
132
138
|
PATH: process.env.PATH || '/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
|
|
133
139
|
IS_SANDBOX: 1,
|
|
134
140
|
// 设置配置目录为目标工作目录,这样 memory 会存储在该目录下
|
|
135
|
-
|
|
141
|
+
CLAUDE_CONFIG_DIR: resolvedWorkingDir,
|
|
136
142
|
},
|
|
137
143
|
},
|
|
138
144
|
});
|
|
@@ -229,11 +235,17 @@ export class AgentCommand extends Command {
|
|
|
229
235
|
console.log(chalk.gray(` NODE_ENV: ${process.env.NODE_ENV}`));
|
|
230
236
|
console.log(chalk.gray(` PATH: ${process.env.PATH}`));
|
|
231
237
|
console.log();
|
|
238
|
+
console.log('**************agent');
|
|
232
239
|
// 创建 agent 查询
|
|
233
240
|
const agentQuery = query({
|
|
234
241
|
prompt: prompt.trim(),
|
|
235
242
|
options: {
|
|
236
|
-
systemPrompt:
|
|
243
|
+
systemPrompt: getSystemPrompt(resolvedWorkingDir, {
|
|
244
|
+
hasSelectedProject: true,
|
|
245
|
+
projectId: 'sniiobwuoecgypjxpymx',
|
|
246
|
+
publishableKey: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InNuaWlvYnd1b2VjZ3lwanhweW14Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjIxNjE0NDEsImV4cCI6MjA3NzczNzQ0MX0.mm8W3B_NnL37-czNajjV4Dvnh-8JuwirvawypINo9DY',
|
|
247
|
+
url: 'https://sniiobwuoecgypjxpymx.supabase.co',
|
|
248
|
+
}),
|
|
237
249
|
settingSources: ['project'],
|
|
238
250
|
model: 'claude-sonnet-4-5',
|
|
239
251
|
maxTurns: 30,
|
|
@@ -254,7 +266,7 @@ export class AgentCommand extends Command {
|
|
|
254
266
|
PATH: process.env.PATH || '/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
|
|
255
267
|
IS_SANDBOX: 1,
|
|
256
268
|
// 设置配置目录为目标工作目录,这样 memory 会存储在该目录下
|
|
257
|
-
|
|
269
|
+
CLAUDE_CONFIG_DIR: resolvedWorkingDir,
|
|
258
270
|
},
|
|
259
271
|
},
|
|
260
272
|
});
|
|
@@ -342,154 +354,6 @@ export class AgentCommand extends Command {
|
|
|
342
354
|
console.log(message);
|
|
343
355
|
}
|
|
344
356
|
}
|
|
345
|
-
/**
|
|
346
|
-
* 获取系统提示词
|
|
347
|
-
*/
|
|
348
|
-
getSystemPrompt(workingDir) {
|
|
349
|
-
return `
|
|
350
|
-
## Working Directory Context
|
|
351
|
-
|
|
352
|
-
IMPORTANT: You are working in the directory: ${workingDir}
|
|
353
|
-
All file operations (read, write, create, etc.) MUST be performed in this working directory.
|
|
354
|
-
Do NOT use /tmp or any other system directories. Work exclusively in: ${workingDir}
|
|
355
|
-
|
|
356
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
357
|
-
|
|
358
|
-
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.
|
|
359
|
-
|
|
360
|
-
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.
|
|
361
|
-
|
|
362
|
-
Always reply in the same language as the user's message.
|
|
363
|
-
|
|
364
|
-
## Technology Stack:
|
|
365
|
-
needware projects are built on top of React, Vite, Tailwind CSS, and TypeScript.
|
|
366
|
-
- **Framework**: React
|
|
367
|
-
- **Build Tool**: Vite
|
|
368
|
-
- **Styling**: Tailwind CSS (with design system tokens)
|
|
369
|
-
- **TypeScript**: Strict mode enabled
|
|
370
|
-
- **Package Manager**: npm
|
|
371
|
-
|
|
372
|
-
## Project Structure:
|
|
373
|
-
- **Entry HTML**: \`index.html\` at project root (Vite entry point)
|
|
374
|
-
- **Source code**: All in \`src/\` directory
|
|
375
|
-
- \`main.tsx\`: React application entry point
|
|
376
|
-
- \`App.tsx\`: Main App component
|
|
377
|
-
- \`index.css\`: Global styles and design system tokens
|
|
378
|
-
- \`assets/\`: Static assets (images, icons, etc.)
|
|
379
|
-
- \`components/\`: Reusable UI components (create if needed)
|
|
380
|
-
- \`hooks/\`: Custom React hooks (create if needed)
|
|
381
|
-
- \`types/\`: TypeScript type definitions (create if needed)
|
|
382
|
-
- \`utils/\`: Utility functions (create if needed)
|
|
383
|
-
- **Public assets**: \`public/\` directory (served at root during dev/build)
|
|
384
|
-
- **Tailwind config**: \`tailwind.config.ts\` for design system customization
|
|
385
|
-
|
|
386
|
-
## Development Commands:
|
|
387
|
-
- \`npm run dev\`: Start dev server
|
|
388
|
-
- \`npm run build\`: Build for production
|
|
389
|
-
- \`npm run preview\`: Preview production build
|
|
390
|
-
- \`npm run lint\`: Run ESLint
|
|
391
|
-
|
|
392
|
-
## General Guidelines
|
|
393
|
-
|
|
394
|
-
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.
|
|
395
|
-
|
|
396
|
-
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.
|
|
397
|
-
|
|
398
|
-
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.
|
|
399
|
-
|
|
400
|
-
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.
|
|
401
|
-
|
|
402
|
-
COMMUNICATE ACTIONS: Before performing any changes, briefly inform the user what you will do.
|
|
403
|
-
|
|
404
|
-
## Required Workflow (Follow This Order)
|
|
405
|
-
|
|
406
|
-
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.
|
|
407
|
-
|
|
408
|
-
2. THINK & PLAN: When thinking about the task, you should:
|
|
409
|
-
- Restate what the user is ACTUALLY asking for (not what you think they might want)
|
|
410
|
-
- Do not hesitate to explore more of the codebase to find relevant information
|
|
411
|
-
- Define EXACTLY what will change and what will remain untouched
|
|
412
|
-
- Plan a minimal but CORRECT approach needed to fulfill the request
|
|
413
|
-
- Select the most appropriate and efficient tools
|
|
414
|
-
|
|
415
|
-
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.
|
|
416
|
-
|
|
417
|
-
4. GATHER CONTEXT EFFICIENTLY:
|
|
418
|
-
- ALWAYS batch multiple file operations when possible
|
|
419
|
-
- Only read files directly relevant to the request
|
|
420
|
-
|
|
421
|
-
5. IMPLEMENTATION (when relevant):
|
|
422
|
-
- Focus on the changes explicitly requested
|
|
423
|
-
- Create small, focused components instead of large files
|
|
424
|
-
- Avoid fallbacks, edge cases, or features not explicitly requested
|
|
425
|
-
|
|
426
|
-
6. VERIFY & CONCLUDE:
|
|
427
|
-
- Ensure all changes are complete and correct
|
|
428
|
-
- Conclude with a very concise summary of the changes you made
|
|
429
|
-
- Avoid emojis
|
|
430
|
-
|
|
431
|
-
## Efficient Tool Usage
|
|
432
|
-
|
|
433
|
-
### CARDINAL RULES:
|
|
434
|
-
1. ALWAYS batch multiple operations when possible
|
|
435
|
-
2. NEVER make sequential tool calls that could be combined
|
|
436
|
-
3. Use the most appropriate tool for each task
|
|
437
|
-
|
|
438
|
-
### EFFICIENT CODE MODIFICATION
|
|
439
|
-
Choose the least invasive approach:
|
|
440
|
-
- Use search-replace for most changes
|
|
441
|
-
- Use write-file only for new files or complete rewrites
|
|
442
|
-
|
|
443
|
-
## Coding Standards:
|
|
444
|
-
- **Always use TypeScript** with proper type definitions
|
|
445
|
-
- Use **functional components** with hooks
|
|
446
|
-
- Use **modern React patterns**: useState, useEffect, useCallback, useMemo, etc.
|
|
447
|
-
- Use **ES modules** (import/export)
|
|
448
|
-
- Follow **React best practices**: component composition, prop drilling avoidance, etc.
|
|
449
|
-
- ALWAYS generate beautiful and responsive designs
|
|
450
|
-
- Use toast components to inform the user about important events
|
|
451
|
-
|
|
452
|
-
## Design System (CRITICAL):
|
|
453
|
-
The design system is everything. You should never write custom styles in components, you should always use the design system and customize it.
|
|
454
|
-
|
|
455
|
-
- **Maximize reusability** of components
|
|
456
|
-
- **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
|
|
457
|
-
- **Create variants** in the components you'll use
|
|
458
|
-
- **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!
|
|
459
|
-
|
|
460
|
-
## File Naming Conventions:
|
|
461
|
-
- **Components**: PascalCase (e.g., \`UserProfile.tsx\`)
|
|
462
|
-
- **Hooks**: camelCase starting with 'use' (e.g., \`useAuth.ts\`)
|
|
463
|
-
- **Types**: PascalCase (e.g., \`User.ts\` or \`types.ts\`)
|
|
464
|
-
- **Utils**: camelCase (e.g., \`formatDate.ts\`)
|
|
465
|
-
- **CSS Modules**: \`ComponentName.module.css\`
|
|
466
|
-
|
|
467
|
-
## Import Paths:
|
|
468
|
-
- Use relative imports (e.g., \`import { X } from './components/X'\`)
|
|
469
|
-
- Or configure path aliases in \`vite.config.ts\` and \`tsconfig.json\` if needed
|
|
470
|
-
|
|
471
|
-
## Design Guidelines:
|
|
472
|
-
- Create **beautiful, modern, production-ready** UI designs
|
|
473
|
-
- Ensure responsive layouts (mobile-first approach)
|
|
474
|
-
- Implement proper error handling and loading states
|
|
475
|
-
- Follow accessibility best practices (semantic HTML, ARIA labels, keyboard navigation)
|
|
476
|
-
- Use modern CSS features (flexbox, grid, custom properties)
|
|
477
|
-
- Maximize reusability of components
|
|
478
|
-
- Pay attention to contrast, color, and typography
|
|
479
|
-
- Beautiful designs are your top priority
|
|
480
|
-
- **Image placeholders**: If no image URL is provided, use an Unsplash image as a substitute based on the scene
|
|
481
|
-
|
|
482
|
-
## Important Rules:
|
|
483
|
-
- When installing new packages, use \`npm install\` (not yarn or pnpm)
|
|
484
|
-
- Always maintain TypeScript type safety
|
|
485
|
-
- Hot Module Replacement (HMR) is enabled by default with Vite
|
|
486
|
-
- For production builds, assets are optimized and hashed automatically
|
|
487
|
-
- Keep explanations very, very short
|
|
488
|
-
- Minimize emoji use
|
|
489
|
-
- Make sure to write valid TypeScript and CSS code following the design system
|
|
490
|
-
- Make sure imports are correct
|
|
491
|
-
`.trim();
|
|
492
|
-
}
|
|
493
357
|
/**
|
|
494
358
|
* 显示帮助信息
|
|
495
359
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 代码快照命令 - 扫描项目目录并输出未被 .gitignore 忽略的文件结构
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from '../core/command.js';
|
|
5
|
+
import { CommandOptions, CommandResult } from '../types/index.js';
|
|
6
|
+
import { Logger } from '../core/logger.js';
|
|
7
|
+
export declare class CodeSnapshotCommand extends Command {
|
|
8
|
+
readonly name = "code-snapshot";
|
|
9
|
+
readonly description = "\u751F\u6210\u9879\u76EE\u4EE3\u7801\u5FEB\u7167\uFF08\u6839\u636E .gitignore \u8FC7\u6EE4\uFF09";
|
|
10
|
+
readonly aliases: string[];
|
|
11
|
+
constructor(logger: Logger);
|
|
12
|
+
execute(options: CommandOptions): Promise<CommandResult>;
|
|
13
|
+
/**
|
|
14
|
+
* 加载 .gitignore 规则
|
|
15
|
+
*/
|
|
16
|
+
private loadGitignore;
|
|
17
|
+
/**
|
|
18
|
+
* 扫描目录并生成扁平化结构
|
|
19
|
+
*/
|
|
20
|
+
private scanDirectory;
|
|
21
|
+
/**
|
|
22
|
+
* 判断文件是否为二进制文件
|
|
23
|
+
*/
|
|
24
|
+
private isBinaryFile;
|
|
25
|
+
validate(_options: CommandOptions): boolean;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=code-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/code-snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAgB3C,qBAAa,mBAAoB,SAAQ,OAAO;IAC9C,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,WAAW,sGAAgC;IACpD,QAAQ,CAAC,OAAO,WAAsB;gBAE1B,MAAM,EAAE,MAAM;IAIpB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAwE9D;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAmFrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqCpB,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;CAG5C"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 代码快照命令 - 扫描项目目录并输出未被 .gitignore 忽略的文件结构
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
import ignore from 'ignore';
|
|
9
|
+
import { Command } from '../core/command.js';
|
|
10
|
+
export class CodeSnapshotCommand extends Command {
|
|
11
|
+
name = 'code-snapshot';
|
|
12
|
+
description = '生成项目代码快照(根据 .gitignore 过滤)';
|
|
13
|
+
aliases = ['snapshot', 'cs'];
|
|
14
|
+
constructor(logger) {
|
|
15
|
+
super(logger);
|
|
16
|
+
}
|
|
17
|
+
async execute(options) {
|
|
18
|
+
try {
|
|
19
|
+
// 获取目标目录(默认为当前工作目录)
|
|
20
|
+
const targetDir = options.dir || options.directory || process.cwd();
|
|
21
|
+
const resolvedDir = path.resolve(targetDir);
|
|
22
|
+
// 验证目录存在
|
|
23
|
+
if (!fs.existsSync(resolvedDir)) {
|
|
24
|
+
return this.error(`目录不存在: ${resolvedDir}`);
|
|
25
|
+
}
|
|
26
|
+
if (!fs.statSync(resolvedDir).isDirectory()) {
|
|
27
|
+
return this.error(`路径不是目录: ${resolvedDir}`);
|
|
28
|
+
}
|
|
29
|
+
this.logger.info(chalk.blue(`\n📸 正在生成代码快照...`));
|
|
30
|
+
this.logger.info(chalk.gray(`目标目录: ${resolvedDir}\n`));
|
|
31
|
+
const spinner = ora('扫描文件系统...').start();
|
|
32
|
+
try {
|
|
33
|
+
// 读取 .gitignore 规则
|
|
34
|
+
const ig = this.loadGitignore(resolvedDir);
|
|
35
|
+
// 默认包含文件内容
|
|
36
|
+
const includeContents = true;
|
|
37
|
+
// 扫描目录并生成扁平化结构
|
|
38
|
+
const result = this.scanDirectory(resolvedDir, resolvedDir, ig, includeContents);
|
|
39
|
+
spinner.succeed(chalk.green('扫描完成'));
|
|
40
|
+
// 生成 JSON
|
|
41
|
+
const json = JSON.stringify(result, null, 2);
|
|
42
|
+
if (options.output) {
|
|
43
|
+
// 保存到文件
|
|
44
|
+
const outputPath = path.resolve(options.output);
|
|
45
|
+
fs.writeFileSync(outputPath, json, 'utf-8');
|
|
46
|
+
this.logger.success(chalk.green(`\n✅ 快照已保存到: ${outputPath}`));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// 输出到控制台
|
|
50
|
+
console.log('\n' + json);
|
|
51
|
+
}
|
|
52
|
+
// 统计信息
|
|
53
|
+
let fileCount = 0;
|
|
54
|
+
let folderCount = 0;
|
|
55
|
+
for (const item of Object.values(result)) {
|
|
56
|
+
if (item.type === 'file')
|
|
57
|
+
fileCount++;
|
|
58
|
+
else if (item.type === 'folder')
|
|
59
|
+
folderCount++;
|
|
60
|
+
}
|
|
61
|
+
// 显示统计信息
|
|
62
|
+
console.log(chalk.blue('\n📊 统计信息:'));
|
|
63
|
+
console.log(chalk.gray('─'.repeat(50)));
|
|
64
|
+
console.log(chalk.cyan('文件总数:'), fileCount);
|
|
65
|
+
console.log(chalk.cyan('目录总数:'), folderCount);
|
|
66
|
+
console.log(chalk.cyan('根目录:'), resolvedDir);
|
|
67
|
+
console.log(chalk.gray('─'.repeat(50) + '\n'));
|
|
68
|
+
return this.success('Code snapshot generated successfully', result);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
spinner.fail(chalk.red('扫描失败'));
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const message = error instanceof Error ? error.message : 'Code snapshot failed';
|
|
77
|
+
return this.error(message, error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 加载 .gitignore 规则
|
|
82
|
+
*/
|
|
83
|
+
loadGitignore(rootDir) {
|
|
84
|
+
const ig = ignore();
|
|
85
|
+
// 添加默认忽略规则
|
|
86
|
+
ig.add([
|
|
87
|
+
'.git',
|
|
88
|
+
'node_modules',
|
|
89
|
+
'.DS_Store',
|
|
90
|
+
]);
|
|
91
|
+
// 尝试读取 .gitignore 文件
|
|
92
|
+
const gitignorePath = path.join(rootDir, '.gitignore');
|
|
93
|
+
if (fs.existsSync(gitignorePath)) {
|
|
94
|
+
try {
|
|
95
|
+
const gitignoreContent = fs.readFileSync(gitignorePath, 'utf-8');
|
|
96
|
+
ig.add(gitignoreContent);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
this.logger.warn(chalk.yellow(`无法读取 .gitignore 文件: ${error}`));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return ig;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 扫描目录并生成扁平化结构
|
|
106
|
+
*/
|
|
107
|
+
scanDirectory(currentPath, rootPath, ig, includeContents) {
|
|
108
|
+
const result = {};
|
|
109
|
+
const scan = (dirPath) => {
|
|
110
|
+
try {
|
|
111
|
+
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
112
|
+
for (const entry of entries) {
|
|
113
|
+
const fullPath = path.join(dirPath, entry.name);
|
|
114
|
+
const relativePath = path.relative(rootPath, fullPath);
|
|
115
|
+
// 检查是否应该忽略
|
|
116
|
+
if (entry.isDirectory()) {
|
|
117
|
+
// 对于目录,测试目录路径和目录路径+斜杠两种形式
|
|
118
|
+
if (ig.ignores(relativePath) || ig.ignores(relativePath + '/')) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
// 添加目录信息
|
|
122
|
+
try {
|
|
123
|
+
const stats = fs.statSync(fullPath);
|
|
124
|
+
result[relativePath] = {
|
|
125
|
+
name: entry.name,
|
|
126
|
+
type: 'folder',
|
|
127
|
+
fullPath: relativePath,
|
|
128
|
+
lastModified: stats.mtimeMs,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
this.logger.warn(chalk.yellow(`无法读取目录信息 ${fullPath}: ${error}`));
|
|
133
|
+
}
|
|
134
|
+
// 递归扫描子目录
|
|
135
|
+
scan(fullPath);
|
|
136
|
+
}
|
|
137
|
+
else if (entry.isFile()) {
|
|
138
|
+
// 对于文件,直接检查文件路径
|
|
139
|
+
if (ig.ignores(relativePath)) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
// 添加文件信息
|
|
143
|
+
try {
|
|
144
|
+
const stats = fs.statSync(fullPath);
|
|
145
|
+
const isBinary = this.isBinaryFile(fullPath);
|
|
146
|
+
const fileDetails = {
|
|
147
|
+
name: entry.name,
|
|
148
|
+
type: 'file',
|
|
149
|
+
fullPath: relativePath,
|
|
150
|
+
isBinary,
|
|
151
|
+
lastModified: stats.mtimeMs,
|
|
152
|
+
size: stats.size,
|
|
153
|
+
};
|
|
154
|
+
// 如果需要包含内容且不是二进制文件,读取内容
|
|
155
|
+
if (includeContents && !isBinary) {
|
|
156
|
+
try {
|
|
157
|
+
fileDetails.contents = fs.readFileSync(fullPath, 'utf-8');
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
this.logger.warn(chalk.yellow(`无法读取文件内容 ${fullPath}: ${error}`));
|
|
161
|
+
fileDetails.contents = '';
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
result[relativePath] = fileDetails;
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
this.logger.warn(chalk.yellow(`无法读取文件信息 ${fullPath}: ${error}`));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
this.logger.warn(chalk.yellow(`无法读取目录 ${dirPath}: ${error}`));
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
scan(currentPath);
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* 判断文件是否为二进制文件
|
|
181
|
+
*/
|
|
182
|
+
isBinaryFile(filePath) {
|
|
183
|
+
try {
|
|
184
|
+
// 检查文件扩展名
|
|
185
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
186
|
+
const binaryExtensions = [
|
|
187
|
+
'.png', '.jpg', '.jpeg', '.gif', '.bmp', '.ico', '.webp', '.svg',
|
|
188
|
+
'.pdf', '.zip', '.tar', '.gz', '.rar', '.7z',
|
|
189
|
+
'.mp3', '.mp4', '.avi', '.mov', '.wav',
|
|
190
|
+
'.exe', '.dll', '.so', '.dylib',
|
|
191
|
+
'.woff', '.woff2', '.ttf', '.eot', '.otf',
|
|
192
|
+
'.bin', '.dat', '.db', '.sqlite',
|
|
193
|
+
];
|
|
194
|
+
if (binaryExtensions.includes(ext)) {
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
// 读取文件开头的部分字节来判断
|
|
198
|
+
const buffer = Buffer.alloc(512);
|
|
199
|
+
const fd = fs.openSync(filePath, 'r');
|
|
200
|
+
const bytesRead = fs.readSync(fd, buffer, 0, 512, 0);
|
|
201
|
+
fs.closeSync(fd);
|
|
202
|
+
// 检查是否包含空字节(二进制文件的特征)
|
|
203
|
+
for (let i = 0; i < bytesRead; i++) {
|
|
204
|
+
if (buffer[i] === 0) {
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
// 如果无法判断,默认为文本文件
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
validate(_options) {
|
|
216
|
+
return true;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=code-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-snapshot.js","sourceRoot":"","sources":["../../src/commands/code-snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAkB7C,MAAM,OAAO,mBAAoB,SAAQ,OAAO;IACrC,IAAI,GAAG,eAAe,CAAC;IACvB,WAAW,GAAG,4BAA4B,CAAC;IAC3C,OAAO,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEtC,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,IAAI,CAAC;YACH,oBAAoB;YACpB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACpE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAE5C,SAAS;YACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,WAAW,IAAI,CAAC,CAAC,CAAC;YAEvD,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;YAEzC,IAAI,CAAC;gBACH,mBAAmB;gBACnB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAE3C,WAAW;gBACX,MAAM,eAAe,GAAG,IAAI,CAAC;gBAE7B,eAAe;gBACf,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;gBAEjF,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAErC,UAAU;gBACV,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAE7C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,QAAQ;oBACR,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAChD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;oBAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBACN,SAAS;oBACT,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBAED,OAAO;gBACP,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,WAAW,GAAG,CAAC,CAAC;gBACpB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;wBAAE,SAAS,EAAE,CAAC;yBACjC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;wBAAE,WAAW,EAAE,CAAC;gBACjD,CAAC;gBAED,SAAS;gBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAE/C,OAAO,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAChF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAc,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,OAAe;QACnC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QAEpB,WAAW;QACX,EAAE,CAAC,GAAG,CAAC;YACL,MAAM;YACN,cAAc;YACd,WAAW;SACZ,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBACjE,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,aAAa,CACnB,WAAmB,EACnB,QAAgB,EAChB,EAA6B,EAC7B,eAAwB;QAExB,MAAM,MAAM,GAAmB,EAAE,CAAC;QAElC,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE;YAC/B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAEvD,WAAW;oBACX,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,0BAA0B;wBAC1B,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC;4BAC/D,SAAS;wBACX,CAAC;wBAED,SAAS;wBACT,IAAI,CAAC;4BACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;4BACpC,MAAM,CAAC,YAAY,CAAC,GAAG;gCACrB,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,IAAI,EAAE,QAAQ;gCACd,QAAQ,EAAE,YAAY;gCACtB,YAAY,EAAE,KAAK,CAAC,OAAO;6BAC5B,CAAC;wBACJ,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;wBACnE,CAAC;wBAED,UAAU;wBACV,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACjB,CAAC;yBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBAC1B,gBAAgB;wBAChB,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;4BAC7B,SAAS;wBACX,CAAC;wBAED,SAAS;wBACT,IAAI,CAAC;4BACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;4BACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;4BAE7C,MAAM,WAAW,GAAgB;gCAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,IAAI,EAAE,MAAM;gCACZ,QAAQ,EAAE,YAAY;gCACtB,QAAQ;gCACR,YAAY,EAAE,KAAK,CAAC,OAAO;gCAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;6BACjB,CAAC;4BAEF,wBAAwB;4BACxB,IAAI,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACjC,IAAI,CAAC;oCACH,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gCAC5D,CAAC;gCAAC,OAAO,KAAK,EAAE,CAAC;oCACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;oCACjE,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC;gCAC5B,CAAC;4BACH,CAAC;4BAED,MAAM,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;wBACrC,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;wBACnE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,QAAgB;QACnC,IAAI,CAAC;YACH,UAAU;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,gBAAgB,GAAG;gBACvB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;gBAChE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;gBAC5C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;gBACtC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ;gBAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;gBACzC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;aACjC,CAAC;YAEF,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,iBAAiB;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACrD,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAEjB,sBAAsB;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iBAAiB;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,QAAwB;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -5,4 +5,5 @@ export { InitCommand } from './init.js';
|
|
|
5
5
|
export { ConfigCommand } from './config.js';
|
|
6
6
|
export { ExampleCommand } from './example.js';
|
|
7
7
|
export { AgentCommand } from './agent.js';
|
|
8
|
+
export { CodeSnapshotCommand } from './code-snapshot.js';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -5,4 +5,5 @@ export { InitCommand } from './init.js';
|
|
|
5
5
|
export { ConfigCommand } from './config.js';
|
|
6
6
|
export { ExampleCommand } from './example.js';
|
|
7
7
|
export { AgentCommand } from './agent.js';
|
|
8
|
+
export { CodeSnapshotCommand } from './code-snapshot.js';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System prompt for Agent command
|
|
3
|
+
*/
|
|
4
|
+
interface SupabaseConfig {
|
|
5
|
+
hasSelectedProject?: boolean;
|
|
6
|
+
projectId?: string;
|
|
7
|
+
publishableKey?: string;
|
|
8
|
+
url?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function getSystemPrompt(workingDir: string, supabase?: SupabaseConfig): string;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=system-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/commands/system-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU,cAAc;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA6HD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,cAAc,GACxB,MAAM,CAkJR"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System prompt for Agent command
|
|
3
|
+
*/
|
|
4
|
+
function getDatabaseInstructions(supabase) {
|
|
5
|
+
const hasSupabaseProject = supabase?.hasSelectedProject && supabase?.projectId && supabase?.publishableKey;
|
|
6
|
+
if (!hasSupabaseProject && !supabase) {
|
|
7
|
+
return `
|
|
8
|
+
## Database Instructions
|
|
9
|
+
|
|
10
|
+
CRITICAL: Use Supabase for databases by default, unless specified otherwise. Supabase can provide login, register, database query, authorization, storage, Edge Functions etc.
|
|
11
|
+
|
|
12
|
+
Supabase project setup handled separately by user!
|
|
13
|
+
`;
|
|
14
|
+
}
|
|
15
|
+
if (supabase && !supabase.hasSelectedProject) {
|
|
16
|
+
return `
|
|
17
|
+
## Database Instructions
|
|
18
|
+
|
|
19
|
+
CRITICAL: Use Supabase for databases by default, unless specified otherwise. Supabase can provide login, register, database query, authorization, storage, Edge Functions etc.
|
|
20
|
+
|
|
21
|
+
Supabase project setup handled separately by user! No project selected. Remind user to select project in chat box.
|
|
22
|
+
`;
|
|
23
|
+
}
|
|
24
|
+
const envConfig = hasSupabaseProject && supabase.url
|
|
25
|
+
? ` with:
|
|
26
|
+
VITE_SUPABASE_PROJECT_ID="${supabase.projectId}"
|
|
27
|
+
VITE_SUPABASE_PUBLISHABLE_KEY="${supabase.publishableKey}"
|
|
28
|
+
VITE_SUPABASE_URL="${supabase.url}"`
|
|
29
|
+
: '.';
|
|
30
|
+
return `
|
|
31
|
+
## Database Instructions
|
|
32
|
+
|
|
33
|
+
CRITICAL: Use Supabase for databases by default, unless specified otherwise. Supabase can provide login, register, database query, authorization, storage, Edge Functions etc.
|
|
34
|
+
|
|
35
|
+
Create .env file if it doesn't exist${envConfig}
|
|
36
|
+
|
|
37
|
+
### DATA PRESERVATION REQUIREMENTS:
|
|
38
|
+
- DATA INTEGRITY IS HIGHEST PRIORITY - users must NEVER lose data
|
|
39
|
+
- FORBIDDEN: Destructive operations (DROP, DELETE) that could cause data loss
|
|
40
|
+
- FORBIDDEN: Transaction control (BEGIN, COMMIT, ROLLBACK, END)
|
|
41
|
+
Note: DO $$ BEGIN ... END $$ blocks (PL/pgSQL) are allowed
|
|
42
|
+
|
|
43
|
+
### SQL Migrations - CRITICAL:
|
|
44
|
+
For EVERY database change, provide ONE action:
|
|
45
|
+
|
|
46
|
+
1. Migration File Creation:
|
|
47
|
+
\`\`\`
|
|
48
|
+
<boltAction type="supabase" operation="migration" filePath="/supabase/migrations/your_migration.sql">
|
|
49
|
+
/* supabase migration content */
|
|
50
|
+
</boltAction>
|
|
51
|
+
\`\`\`
|
|
52
|
+
|
|
53
|
+
### Migration Rules:
|
|
54
|
+
- NEVER use diffs, ALWAYS provide COMPLETE file content
|
|
55
|
+
- Create new migration file for each change in /home/project/supabase/migrations
|
|
56
|
+
- NEVER update existing migration files
|
|
57
|
+
- Descriptive names without number prefix (e.g., create_users.sql)
|
|
58
|
+
- ALWAYS enable RLS: \`alter table users enable row level security;\`
|
|
59
|
+
- Add appropriate RLS policies for CRUD operations
|
|
60
|
+
- Use default values: DEFAULT false/true, DEFAULT 0, DEFAULT '', DEFAULT now()
|
|
61
|
+
- Start with markdown summary in multi-line comment explaining changes
|
|
62
|
+
- Use IF EXISTS/IF NOT EXISTS for safe operations
|
|
63
|
+
|
|
64
|
+
### Migration Example:
|
|
65
|
+
\`\`\`sql
|
|
66
|
+
/*
|
|
67
|
+
# Create users table
|
|
68
|
+
1. New Tables: users (id uuid, email text, created_at timestamp)
|
|
69
|
+
2. Security: Enable RLS, add read policy for authenticated users
|
|
70
|
+
*/
|
|
71
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
72
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
73
|
+
email text UNIQUE NOT NULL,
|
|
74
|
+
created_at timestamptz DEFAULT now()
|
|
75
|
+
);
|
|
76
|
+
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
|
|
77
|
+
CREATE POLICY "Users read own data" ON users FOR SELECT TO authenticated USING (auth.uid() = id);
|
|
78
|
+
\`\`\`
|
|
79
|
+
|
|
80
|
+
### Client Setup:
|
|
81
|
+
- Use @supabase/supabase-js
|
|
82
|
+
- Create singleton client instance
|
|
83
|
+
- Use environment variables from .env
|
|
84
|
+
|
|
85
|
+
### Authentication:
|
|
86
|
+
- ALWAYS use email/password signup
|
|
87
|
+
- FORBIDDEN: magic links, social providers, SSO (unless explicitly stated)
|
|
88
|
+
- FORBIDDEN: custom auth systems, ALWAYS use Supabase's built-in auth
|
|
89
|
+
- Email confirmation ALWAYS disabled unless stated
|
|
90
|
+
|
|
91
|
+
### User Profiles:
|
|
92
|
+
- ALWAYS create public.profiles table linked to auth.users
|
|
93
|
+
- Use: \`user_id uuid REFERENCES auth.users(id) ON DELETE CASCADE UNIQUE NOT NULL\`
|
|
94
|
+
- Include common fields: username, avatar_url, created_at, updated_at
|
|
95
|
+
- Create trigger to auto-insert profile on user signup (INSERT INTO profiles on auth.users INSERT)
|
|
96
|
+
|
|
97
|
+
### Storage (If the user needs):
|
|
98
|
+
- Use Supabase Storage for file uploads (images, documents, etc.)
|
|
99
|
+
- Create buckets in migrations: \`INSERT INTO storage.buckets (id, name, public) VALUES ('avatars', 'avatars', true)\`
|
|
100
|
+
- ALWAYS add RLS policies for storage.objects table with bucket_id filter
|
|
101
|
+
- Common operations: .upload(), .download(), .getPublicUrl(), .remove(), .list()
|
|
102
|
+
- Organize files with user ID prefix: '{userId}/filename' for private files
|
|
103
|
+
|
|
104
|
+
### Edge Functions (If the user needs):
|
|
105
|
+
- Use Supabase Edge Functions for server-side logic, background tasks, webhooks, and API integrations
|
|
106
|
+
- Create functions in /supabase/functions/<function-name>/index.ts
|
|
107
|
+
- Use Deno runtime with TypeScript support
|
|
108
|
+
- Import from: 'https://esm.sh/@supabase/supabase-js@2' for Supabase client
|
|
109
|
+
- Access environment variables via Deno.env.get('VARIABLE_NAME')
|
|
110
|
+
- Invoke from client: supabase.functions.invoke('function-name', { body: { ... } })
|
|
111
|
+
- Common use cases: webhooks, scheduled jobs, third-party API calls, complex business logic
|
|
112
|
+
- Return Response object: new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json' } })
|
|
113
|
+
|
|
114
|
+
### Security:
|
|
115
|
+
- ALWAYS enable RLS for every new table
|
|
116
|
+
- Create policies based on user authentication
|
|
117
|
+
- One migration per logical change
|
|
118
|
+
- Use descriptive policy names
|
|
119
|
+
- Add indexes for frequently queried columns
|
|
120
|
+
`;
|
|
121
|
+
}
|
|
122
|
+
export function getSystemPrompt(workingDir, supabase) {
|
|
123
|
+
return `
|
|
124
|
+
## Working Directory Context
|
|
125
|
+
|
|
126
|
+
IMPORTANT: You are working in the directory: ${workingDir}
|
|
127
|
+
All file operations (read, write, create, etc.) MUST be performed in this working directory.
|
|
128
|
+
Do NOT use /tmp or any other system directories. Work exclusively in: ${workingDir}
|
|
129
|
+
|
|
130
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
131
|
+
|
|
132
|
+
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.
|
|
133
|
+
|
|
134
|
+
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.
|
|
135
|
+
|
|
136
|
+
Always reply in the same language as the user's message.
|
|
137
|
+
|
|
138
|
+
## Technology Stack:
|
|
139
|
+
needware projects are built on top of React, Vite, Tailwind CSS, and TypeScript.
|
|
140
|
+
- **Framework**: React
|
|
141
|
+
- **Build Tool**: Vite
|
|
142
|
+
- **Styling**: Tailwind CSS (with design system tokens)
|
|
143
|
+
- **TypeScript**: Strict mode enabled
|
|
144
|
+
- **Package Manager**: npm
|
|
145
|
+
|
|
146
|
+
${getDatabaseInstructions(supabase)}
|
|
147
|
+
|
|
148
|
+
## Project Structure:
|
|
149
|
+
- **Entry HTML**: \`index.html\` at project root (Vite entry point)
|
|
150
|
+
- **Source code**: All in \`src/\` directory
|
|
151
|
+
- \`main.tsx\`: React application entry point
|
|
152
|
+
- \`App.tsx\`: Main App component
|
|
153
|
+
- \`index.css\`: Global styles and design system tokens
|
|
154
|
+
- \`assets/\`: Static assets (images, icons, etc.)
|
|
155
|
+
- \`components/\`: Reusable UI components (create if needed)
|
|
156
|
+
- \`hooks/\`: Custom React hooks (create if needed)
|
|
157
|
+
- \`types/\`: TypeScript type definitions (create if needed)
|
|
158
|
+
- \`utils/\`: Utility functions (create if needed)
|
|
159
|
+
- **Public assets**: \`public/\` directory (served at root during dev/build)
|
|
160
|
+
- **Tailwind config**: \`tailwind.config.ts\` for design system customization
|
|
161
|
+
|
|
162
|
+
## Development Commands:
|
|
163
|
+
- \`npm run dev\`: Start dev server
|
|
164
|
+
- \`npm run build\`: Build for production
|
|
165
|
+
- \`npm run preview\`: Preview production build
|
|
166
|
+
- \`npm run lint\`: Run ESLint
|
|
167
|
+
|
|
168
|
+
## General Guidelines
|
|
169
|
+
|
|
170
|
+
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.
|
|
171
|
+
|
|
172
|
+
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.
|
|
173
|
+
|
|
174
|
+
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.
|
|
175
|
+
|
|
176
|
+
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.
|
|
177
|
+
|
|
178
|
+
COMMUNICATE ACTIONS: Before performing any changes, briefly inform the user what you will do.
|
|
179
|
+
|
|
180
|
+
## Required Workflow (Follow This Order)
|
|
181
|
+
|
|
182
|
+
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.
|
|
183
|
+
|
|
184
|
+
2. THINK & PLAN: When thinking about the task, you should:
|
|
185
|
+
- Restate what the user is ACTUALLY asking for (not what you think they might want)
|
|
186
|
+
- Do not hesitate to explore more of the codebase to find relevant information
|
|
187
|
+
- Define EXACTLY what will change and what will remain untouched
|
|
188
|
+
- Plan a minimal but CORRECT approach needed to fulfill the request
|
|
189
|
+
- Select the most appropriate and efficient tools
|
|
190
|
+
|
|
191
|
+
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.
|
|
192
|
+
|
|
193
|
+
4. GATHER CONTEXT EFFICIENTLY:
|
|
194
|
+
- ALWAYS batch multiple file operations when possible
|
|
195
|
+
- Only read files directly relevant to the request
|
|
196
|
+
|
|
197
|
+
5. IMPLEMENTATION (when relevant):
|
|
198
|
+
- Focus on the changes explicitly requested
|
|
199
|
+
- Create small, focused components instead of large files
|
|
200
|
+
- Avoid fallbacks, edge cases, or features not explicitly requested
|
|
201
|
+
|
|
202
|
+
6. VERIFY & CONCLUDE:
|
|
203
|
+
- Ensure all changes are complete and correct
|
|
204
|
+
- Conclude with a very concise summary of the changes you made
|
|
205
|
+
- Avoid emojis
|
|
206
|
+
|
|
207
|
+
## Efficient Tool Usage
|
|
208
|
+
|
|
209
|
+
### CARDINAL RULES:
|
|
210
|
+
1. ALWAYS batch multiple operations when possible
|
|
211
|
+
2. NEVER make sequential tool calls that could be combined
|
|
212
|
+
3. Use the most appropriate tool for each task
|
|
213
|
+
|
|
214
|
+
### EFFICIENT CODE MODIFICATION
|
|
215
|
+
Choose the least invasive approach:
|
|
216
|
+
- Use search-replace for most changes
|
|
217
|
+
- Use write-file only for new files or complete rewrites
|
|
218
|
+
|
|
219
|
+
## Coding Standards:
|
|
220
|
+
- **Always use TypeScript** with proper type definitions
|
|
221
|
+
- Use **functional components** with hooks
|
|
222
|
+
- Use **modern React patterns**: useState, useEffect, useCallback, useMemo, etc.
|
|
223
|
+
- Use **ES modules** (import/export)
|
|
224
|
+
- Follow **React best practices**: component composition, prop drilling avoidance, etc.
|
|
225
|
+
- ALWAYS generate beautiful and responsive designs
|
|
226
|
+
- Use toast components to inform the user about important events
|
|
227
|
+
|
|
228
|
+
## Design System (CRITICAL):
|
|
229
|
+
The design system is everything. You should never write custom styles in components, you should always use the design system and customize it.
|
|
230
|
+
|
|
231
|
+
- **Maximize reusability** of components
|
|
232
|
+
- **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
|
|
233
|
+
- **Create variants** in the components you'll use
|
|
234
|
+
- **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!
|
|
235
|
+
|
|
236
|
+
## File Naming Conventions:
|
|
237
|
+
- **Components**: PascalCase (e.g., \`UserProfile.tsx\`)
|
|
238
|
+
- **Hooks**: camelCase starting with 'use' (e.g., \`useAuth.ts\`)
|
|
239
|
+
- **Types**: PascalCase (e.g., \`User.ts\` or \`types.ts\`)
|
|
240
|
+
- **Utils**: camelCase (e.g., \`formatDate.ts\`)
|
|
241
|
+
- **CSS Modules**: \`ComponentName.module.css\`
|
|
242
|
+
|
|
243
|
+
## Import Paths:
|
|
244
|
+
- Use relative imports (e.g., \`import { X } from './components/X'\`)
|
|
245
|
+
- Or configure path aliases in \`vite.config.ts\` and \`tsconfig.json\` if needed
|
|
246
|
+
|
|
247
|
+
## Design Guidelines:
|
|
248
|
+
- Create **beautiful, modern, production-ready** UI designs
|
|
249
|
+
- Ensure responsive layouts (mobile-first approach)
|
|
250
|
+
- Implement proper error handling and loading states
|
|
251
|
+
- Follow accessibility best practices (semantic HTML, ARIA labels, keyboard navigation)
|
|
252
|
+
- Use modern CSS features (flexbox, grid, custom properties)
|
|
253
|
+
- Maximize reusability of components
|
|
254
|
+
- Pay attention to contrast, color, and typography
|
|
255
|
+
- Beautiful designs are your top priority
|
|
256
|
+
- **Image placeholders**: If no image URL is provided, use an Unsplash image as a substitute based on the scene
|
|
257
|
+
|
|
258
|
+
## Important Rules:
|
|
259
|
+
- When installing new packages, use \`npm install\` (not yarn or pnpm)
|
|
260
|
+
- Always maintain TypeScript type safety
|
|
261
|
+
- Hot Module Replacement (HMR) is enabled by default with Vite
|
|
262
|
+
- For production builds, assets are optimized and hashed automatically
|
|
263
|
+
- Keep explanations very, very short
|
|
264
|
+
- Minimize emoji use
|
|
265
|
+
- Make sure to write valid TypeScript and CSS code following the design system
|
|
266
|
+
- Make sure imports are correct
|
|
267
|
+
`.trim();
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=system-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/commands/system-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,SAAS,uBAAuB,CAAC,QAAyB;IACxD,MAAM,kBAAkB,GAAG,QAAQ,EAAE,kBAAkB,IAAI,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,cAAc,CAAC;IAE3G,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IAED,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAC7C,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,IAAI,QAAQ,CAAC,GAAG;QAClD,CAAC,CAAC;8BACwB,QAAQ,CAAC,SAAS;mCACb,QAAQ,CAAC,cAAc;uBACnC,QAAQ,CAAC,GAAG,GAAG;QAClC,CAAC,CAAC,GAAG,CAAC;IAER,OAAO;;;;;sCAK6B,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqF9C,CAAC;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,QAAyB;IAEzB,OAAO;;;+CAGsC,UAAU;;wEAEe,UAAU;;;;;;;;;;;;;;;;;;EAkBhF,uBAAuB,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAyHxB,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC"}
|
package/dist/core/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAY,MAAM,aAAa,CAAC;AAI/C,qBAAa,GAAG;IACd,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAS5C;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAY,MAAM,aAAa,CAAC;AAI/C,qBAAa,GAAG;IACd,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAS5C;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IA+DvC;;OAEG;IACG,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAmCjC;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;CAGpC"}
|
package/dist/core/cli.js
CHANGED
|
@@ -59,6 +59,13 @@ export class CLI {
|
|
|
59
59
|
.option('--base-url <url>', 'Anthropic API Base URL (overrides ANTHROPIC_BASE_URL env var)')
|
|
60
60
|
.option('--claude-code-path <path>', 'Path to Claude Code executable (optional)');
|
|
61
61
|
}
|
|
62
|
+
// 为 code-snapshot 命令添加特定选项
|
|
63
|
+
if (command.name === 'code-snapshot') {
|
|
64
|
+
commandInstance
|
|
65
|
+
.option('-d, --dir <path>', 'Specify target directory (default: current directory)')
|
|
66
|
+
.option('--directory <path>', 'Alias for --dir')
|
|
67
|
+
.option('-o, --output <path>', 'Save snapshot to file (default: stdout)');
|
|
68
|
+
}
|
|
62
69
|
commandInstance.action(async (...args) => {
|
|
63
70
|
try {
|
|
64
71
|
const commandObject = args[args.length - 1];
|
package/dist/core/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,MAAM,EAAY,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAc,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,MAAM,EAAY,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAc,MAAM,gBAAgB,CAAC;AAqGxD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAClD,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { CLI } from './core/cli.js';
|
|
|
6
6
|
import { Logger } from './core/logger.js';
|
|
7
7
|
import { ConfigManager } from './utils/config.js';
|
|
8
8
|
import { SDKManager, ExampleSDK } from './sdk/index.js';
|
|
9
|
-
import { InitCommand, ConfigCommand, ExampleCommand, AgentCommand } from './commands/index.js';
|
|
9
|
+
import { InitCommand, ConfigCommand, ExampleCommand, AgentCommand, CodeSnapshotCommand } from './commands/index.js';
|
|
10
10
|
import { FileUtils } from './utils/file.js';
|
|
11
11
|
import { createRequire } from 'module';
|
|
12
12
|
import { fileURLToPath } from 'url';
|
|
@@ -55,6 +55,9 @@ function registerCommands(cli, logger, configManager, sdkManager) {
|
|
|
55
55
|
// Agent 命令
|
|
56
56
|
const agentCommand = new AgentCommand(logger);
|
|
57
57
|
cli.registerCommand(agentCommand);
|
|
58
|
+
// Code Snapshot 命令
|
|
59
|
+
const codeSnapshotCommand = new CodeSnapshotCommand(logger);
|
|
60
|
+
cli.registerCommand(codeSnapshotCommand);
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
60
63
|
* 主函数
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,MAAM,EAAY,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "needware-cli",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.7",
|
|
4
4
|
"description": "一个功能强大的 Node.js 命令行工具",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"chalk": "^4.1.2",
|
|
42
42
|
"commander": "^11.1.0",
|
|
43
43
|
"dotenv": "^16.3.1",
|
|
44
|
+
"ignore": "^7.0.5",
|
|
44
45
|
"inquirer": "^8.2.5",
|
|
45
46
|
"ora": "^5.4.1"
|
|
46
47
|
},
|
package/test-multimodal.sh
CHANGED
package/IMAGE_FEATURE_SUMMARY.md
DELETED
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
# 图片转换功能总结
|
|
2
|
-
|
|
3
|
-
## 🎉 已完成的功能
|
|
4
|
-
|
|
5
|
-
本次更新为 needware-cli 添加了完整的图片处理功能,包括本地文件转换、远程URL下载转换,以及自动检测转换。
|
|
6
|
-
|
|
7
|
-
## 📦 核心功能列表
|
|
8
|
-
|
|
9
|
-
### 1. 本地图片转换为 Base64
|
|
10
|
-
|
|
11
|
-
**功能**: 将本地图片文件转换为 Claude API 所需的 base64 格式
|
|
12
|
-
|
|
13
|
-
**API**:
|
|
14
|
-
- `convertImageToBase64(imagePath: string)` - 单个图片转换
|
|
15
|
-
- `convertImagesToBase64(imagePaths: string[])` - 批量转换
|
|
16
|
-
- `isImageFile(filePath: string)` - 检查是否为图片文件
|
|
17
|
-
|
|
18
|
-
**支持格式**: JPEG, PNG, GIF, WebP
|
|
19
|
-
|
|
20
|
-
**示例**:
|
|
21
|
-
```typescript
|
|
22
|
-
const imageBlock = await convertImageToBase64('./photo.jpg');
|
|
23
|
-
// 输出: { type: "image", source: { type: "base64", media_type: "image/jpeg", data: "..." } }
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### 2. 远程 URL 图片转换为 Base64
|
|
27
|
-
|
|
28
|
-
**功能**: 从远程 URL 下载图片并转换为 base64 格式
|
|
29
|
-
|
|
30
|
-
**API**:
|
|
31
|
-
- `convertRemoteImageToBase64(imageUrl: string)` - 单个远程图片转换
|
|
32
|
-
- `convertRemoteImagesToBase64(imageUrls: string[])` - 批量远程图片转换
|
|
33
|
-
|
|
34
|
-
**特性**:
|
|
35
|
-
- ✅ 支持 HTTP/HTTPS 协议
|
|
36
|
-
- ✅ 自动处理重定向(301/302)
|
|
37
|
-
- ✅ 自动识别图片类型
|
|
38
|
-
- ✅ 错误处理和日志记录
|
|
39
|
-
|
|
40
|
-
**示例**:
|
|
41
|
-
```typescript
|
|
42
|
-
const imageBlock = await convertRemoteImageToBase64('https://example.com/photo.jpg');
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### 3. 智能图片转换(自动检测)
|
|
46
|
-
|
|
47
|
-
**功能**: 自动检测输入是本地文件还是远程 URL,并进行相应转换
|
|
48
|
-
|
|
49
|
-
**API**:
|
|
50
|
-
- `convertImageToBase64Smart(imagePath: string)` - 智能单个转换
|
|
51
|
-
- `convertImagesToBase64Smart(imagePaths: string[])` - 智能批量转换
|
|
52
|
-
|
|
53
|
-
**特性**:
|
|
54
|
-
- ✅ 自动识别 URL 或本地路径
|
|
55
|
-
- ✅ 可混合处理本地和远程图片
|
|
56
|
-
- ✅ 统一的 API 接口
|
|
57
|
-
|
|
58
|
-
**示例**:
|
|
59
|
-
```typescript
|
|
60
|
-
// 自动识别本地文件
|
|
61
|
-
await convertImageToBase64Smart('./photo.jpg');
|
|
62
|
-
|
|
63
|
-
// 自动识别远程 URL
|
|
64
|
-
await convertImageToBase64Smart('https://example.com/photo.jpg');
|
|
65
|
-
|
|
66
|
-
// 混合处理
|
|
67
|
-
await convertImagesToBase64Smart([
|
|
68
|
-
'./local.jpg',
|
|
69
|
-
'https://example.com/remote.jpg'
|
|
70
|
-
]);
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### 4. 🔥 自动转换消息中的图片 URL
|
|
74
|
-
|
|
75
|
-
**功能**: 在解析用户消息时,自动将 `type: "url"` 的图片源转换为 `type: "base64"`
|
|
76
|
-
|
|
77
|
-
**支持的消息格式**:
|
|
78
|
-
1. 简化用户消息格式(`{ user: { content: [...] } }`)
|
|
79
|
-
2. SDK 标准消息格式(`SDKUserMessage`)
|
|
80
|
-
3. 从 JSON 文件读取的消息
|
|
81
|
-
4. 双重编码的 JSON 消息
|
|
82
|
-
|
|
83
|
-
**转换过程**:
|
|
84
|
-
```
|
|
85
|
-
输入: { type: "image", source: { type: "url", url: "https://..." } }
|
|
86
|
-
↓ 自动下载和转换
|
|
87
|
-
输出: { type: "image", source: { type: "base64", media_type: "image/jpeg", data: "..." } }
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**使用方式**:
|
|
91
|
-
```bash
|
|
92
|
-
# 直接在命令行使用 URL 图片
|
|
93
|
-
needware-cli agent '{
|
|
94
|
-
"user": {
|
|
95
|
-
"content": [
|
|
96
|
-
{"type": "text", "text": "分析这张图片"},
|
|
97
|
-
{"type": "image", "source": {"type": "url", "url": "https://example.com/photo.jpg"}}
|
|
98
|
-
]
|
|
99
|
-
}
|
|
100
|
-
}'
|
|
101
|
-
|
|
102
|
-
# 从文件读取(自动转换)
|
|
103
|
-
needware-cli agent message.json
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## 📁 新增文件
|
|
107
|
-
|
|
108
|
-
### 源代码
|
|
109
|
-
- `src/utils/prompt-parser.ts` - **已更新**,添加图片转换功能
|
|
110
|
-
|
|
111
|
-
### 示例文件
|
|
112
|
-
- `examples/image-conversion-example.ts` - 完整的使用示例
|
|
113
|
-
- `examples/auto-convert-url-to-base64.json` - 自动转换示例
|
|
114
|
-
|
|
115
|
-
### 文档
|
|
116
|
-
- `docs/IMAGE_CONVERSION.md` - 图片转换 API 完整文档
|
|
117
|
-
- `docs/AUTO_IMAGE_CONVERSION.md` - 自动转换功能详细文档
|
|
118
|
-
- `docs/IMAGE_URL_TO_BASE64_QUICKSTART.md` - 快速开始指南
|
|
119
|
-
- `IMAGE_FEATURE_SUMMARY.md` - 本文档(功能总结)
|
|
120
|
-
|
|
121
|
-
### 更新的文档
|
|
122
|
-
- `README.md` - **已更新**,添加图片转换功能说明
|
|
123
|
-
|
|
124
|
-
## 🎯 输出格式
|
|
125
|
-
|
|
126
|
-
所有转换函数统一返回 `ImageContentBlock` 类型:
|
|
127
|
-
|
|
128
|
-
```typescript
|
|
129
|
-
interface ImageContentBlock {
|
|
130
|
-
type: 'image';
|
|
131
|
-
source: {
|
|
132
|
-
type: 'base64';
|
|
133
|
-
media_type: 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp';
|
|
134
|
-
data: string; // base64 编码的图片数据
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
这个格式完全符合 Anthropic Claude API 的要求。
|
|
140
|
-
|
|
141
|
-
## ✨ 核心特性
|
|
142
|
-
|
|
143
|
-
1. **自动化**: 无需手动转换,系统自动处理 URL 图片
|
|
144
|
-
2. **智能识别**: 自动区分本地文件和远程 URL
|
|
145
|
-
3. **错误容错**: 转换失败时保留原始格式,不中断流程
|
|
146
|
-
4. **多格式支持**: JPEG、PNG、GIF、WebP
|
|
147
|
-
5. **批量处理**: 支持一次处理多张图片
|
|
148
|
-
6. **完整日志**: 详细的转换过程日志
|
|
149
|
-
7. **类型安全**: 完整的 TypeScript 类型定义
|
|
150
|
-
|
|
151
|
-
## 🔧 技术实现
|
|
152
|
-
|
|
153
|
-
### 关键函数
|
|
154
|
-
|
|
155
|
-
1. `convertImageUrlsToBase64InData(data)` - 转换数据中的图片 URL
|
|
156
|
-
2. `convertImageUrlsInContent(content)` - 转换内容数组中的图片
|
|
157
|
-
3. `downloadImage(imageUrl)` - 下载远程图片
|
|
158
|
-
4. `getImageMediaTypeFromUrl(url)` - 获取图片 MIME 类型
|
|
159
|
-
|
|
160
|
-
### 集成点
|
|
161
|
-
|
|
162
|
-
图片 URL 自动转换已集成到以下位置:
|
|
163
|
-
|
|
164
|
-
1. ✅ `parsePrompt()` - 字符串 JSON 解析
|
|
165
|
-
2. ✅ `parsePromptFromFile()` - 文件读取解析
|
|
166
|
-
3. ✅ 双重编码 JSON 处理
|
|
167
|
-
4. ✅ SDK 和简化消息格式
|
|
168
|
-
|
|
169
|
-
## 📊 使用统计
|
|
170
|
-
|
|
171
|
-
### 新增 API 函数:11 个
|
|
172
|
-
- `convertImageToBase64`
|
|
173
|
-
- `convertImagesToBase64`
|
|
174
|
-
- `convertRemoteImageToBase64`
|
|
175
|
-
- `convertRemoteImagesToBase64`
|
|
176
|
-
- `convertImageToBase64Smart`
|
|
177
|
-
- `convertImagesToBase64Smart`
|
|
178
|
-
- `isImageFile`
|
|
179
|
-
- `convertImageUrlsToBase64InData` (内部)
|
|
180
|
-
- `convertImageUrlsInContent` (内部)
|
|
181
|
-
- `downloadImage` (内部)
|
|
182
|
-
- `getImageMediaTypeFromUrl` (内部)
|
|
183
|
-
|
|
184
|
-
### 新增文档:4 个
|
|
185
|
-
- API 参考文档
|
|
186
|
-
- 自动转换文档
|
|
187
|
-
- 快速开始指南
|
|
188
|
-
- 功能总结文档
|
|
189
|
-
|
|
190
|
-
### 示例代码:2 个
|
|
191
|
-
- TypeScript 示例代码
|
|
192
|
-
- JSON 消息示例
|
|
193
|
-
|
|
194
|
-
## 🚀 快速开始
|
|
195
|
-
|
|
196
|
-
```bash
|
|
197
|
-
# 1. 使用 URL 图片(自动转换)
|
|
198
|
-
needware-cli agent '{
|
|
199
|
-
"user": {
|
|
200
|
-
"content": [
|
|
201
|
-
{"type": "text", "text": "根据图片一比一还原应用"},
|
|
202
|
-
{"type": "image", "source": {"type": "url", "url": "https://example.com/design.png"}}
|
|
203
|
-
]
|
|
204
|
-
}
|
|
205
|
-
}'
|
|
206
|
-
|
|
207
|
-
# 2. 使用示例文件
|
|
208
|
-
needware-cli agent examples/auto-convert-url-to-base64.json
|
|
209
|
-
|
|
210
|
-
# 3. 在代码中手动转换
|
|
211
|
-
import { convertRemoteImageToBase64 } from 'needware-cli/utils/prompt-parser';
|
|
212
|
-
const imageBlock = await convertRemoteImageToBase64('https://example.com/photo.jpg');
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## 📖 文档导航
|
|
216
|
-
|
|
217
|
-
- 🔥 [快速开始](docs/IMAGE_URL_TO_BASE64_QUICKSTART.md) - 最快上手
|
|
218
|
-
- 📚 [自动转换详解](docs/AUTO_IMAGE_CONVERSION.md) - 深入了解自动转换
|
|
219
|
-
- 🔧 [API 参考](docs/IMAGE_CONVERSION.md) - 完整 API 文档
|
|
220
|
-
- 💡 [代码示例](examples/image-conversion-example.ts) - 实际代码示例
|
|
221
|
-
|
|
222
|
-
## ✅ 测试验证
|
|
223
|
-
|
|
224
|
-
- ✅ TypeScript 编译通过
|
|
225
|
-
- ✅ 无 Linter 错误
|
|
226
|
-
- ✅ 类型定义完整
|
|
227
|
-
- ✅ 文档完整
|
|
228
|
-
|
|
229
|
-
## 🎉 总结
|
|
230
|
-
|
|
231
|
-
本次更新为 needware-cli 添加了完整的图片处理能力:
|
|
232
|
-
|
|
233
|
-
1. **本地图片** → Base64 ✅
|
|
234
|
-
2. **远程图片** → Base64 ✅
|
|
235
|
-
3. **智能检测** → 自动处理 ✅
|
|
236
|
-
4. **自动转换** → 无缝集成 ✅
|
|
237
|
-
|
|
238
|
-
现在您可以:
|
|
239
|
-
- 直接在消息中使用图片 URL,系统自动处理
|
|
240
|
-
- 手动转换本地或远程图片
|
|
241
|
-
- 智能批量处理混合来源的图片
|
|
242
|
-
- 享受完整的类型安全和错误处理
|
|
243
|
-
|
|
244
|
-
**所有功能已就绪,可以立即使用!** 🚀
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|