needware-cli 1.6.1 → 1.6.3

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.
@@ -8,10 +8,8 @@ import { z } from 'zod';
8
8
  export declare class SupabaseDeployFunctionsTool extends BaseTool {
9
9
  definition: ToolDefinition;
10
10
  getZodSchema(): {
11
- functionName: z.ZodOptional<z.ZodString>;
11
+ functionName: z.ZodString;
12
12
  functionPath: z.ZodOptional<z.ZodString>;
13
- noVerifyJwt: z.ZodOptional<z.ZodBoolean>;
14
- importMap: z.ZodOptional<z.ZodString>;
15
13
  };
16
14
  execute(input: Record<string, any>): Promise<ToolResult>;
17
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"supabase-deploy-functions-tool.d.ts","sourceRoot":"","sources":["../../src/tools/supabase-deploy-functions-tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,qBAAa,2BAA4B,SAAQ,QAAQ;IACvD,UAAU,EAAE,cAAc,CAyBxB;IAEF,YAAY;;;;;;IASN,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAkG/D"}
1
+ {"version":3,"file":"supabase-deploy-functions-tool.d.ts","sourceRoot":"","sources":["../../src/tools/supabase-deploy-functions-tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,qBAAa,2BAA4B,SAAQ,QAAQ;IACvD,UAAU,EAAE,cAAc,CAiBxB;IAEF,YAAY;;;;IAON,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CA2G/D"}
@@ -5,48 +5,58 @@
5
5
  import { BaseTool } from './base-tool.js';
6
6
  import chalk from 'chalk';
7
7
  import { z } from 'zod';
8
+ import fs from 'fs/promises';
9
+ import path from 'path';
8
10
  export class SupabaseDeployFunctionsTool extends BaseTool {
9
11
  definition = {
10
12
  name: 'supabase-deploy-functions',
11
- description: 'Deploy Supabase Edge Functions. Can deploy a specific function or all functions in the supabase/functions directory.',
13
+ description: 'Deploy a Supabase Edge Function by reading the function code and deploying it to your Supabase project.',
12
14
  input_schema: {
13
15
  type: 'object',
14
16
  properties: {
15
17
  functionName: {
16
18
  type: 'string',
17
- description: 'Name of the function to deploy. If not provided, will deploy all functions.',
19
+ description: 'Name of the function to deploy (required)',
18
20
  },
19
21
  functionPath: {
20
22
  type: 'string',
21
- description: 'Path to the function directory. Defaults to supabase/functions/<functionName>',
22
- },
23
- noVerifyJwt: {
24
- type: 'boolean',
25
- description: 'Deploy without JWT verification (useful for public functions)',
26
- },
27
- importMap: {
28
- type: 'string',
29
- description: 'Path to import map file',
23
+ description: 'Path to the function file. Defaults to supabase/functions/<functionName>/index.ts',
30
24
  },
31
25
  },
32
- required: [],
26
+ required: ['functionName'],
33
27
  },
34
28
  };
35
29
  getZodSchema() {
36
30
  return {
37
- functionName: z.string().optional().describe('Name of the function to deploy'),
38
- functionPath: z.string().optional().describe('Path to the function directory'),
39
- noVerifyJwt: z.boolean().optional().describe('Deploy without JWT verification'),
40
- importMap: z.string().optional().describe('Path to import map file'),
31
+ functionName: z.string().describe('Name of the function to deploy'),
32
+ functionPath: z.string().optional().describe('Path to the function file'),
41
33
  };
42
34
  }
43
35
  async execute(input) {
44
36
  try {
45
37
  // 验证并获取 Gateway 配置
46
38
  this.validateGatewayConfig();
47
- const { apiKey, chatId, workspaceId } = this.getGatewayConfig();
48
- const { functionName, functionPath, noVerifyJwt, importMap } = input;
49
- // 1. 先检查 Supabase 项目状态
39
+ const { apiKey, chatId } = this.getGatewayConfig();
40
+ const { functionName, functionPath } = input;
41
+ if (!functionName) {
42
+ throw new Error('functionName is required');
43
+ }
44
+ // 1. 确定函数文件路径
45
+ const workspacePath = process.cwd();
46
+ const defaultFunctionPath = path.join('supabase', 'functions', functionName, 'index.ts');
47
+ const actualFunctionPath = functionPath || defaultFunctionPath;
48
+ const fullPath = path.join(workspacePath, actualFunctionPath);
49
+ console.log(chalk.blue(`📖 读取函数代码: ${actualFunctionPath}`));
50
+ // 2. 读取函数代码
51
+ let functionCode;
52
+ try {
53
+ functionCode = await fs.readFile(fullPath, 'utf-8');
54
+ console.log(chalk.green(`✓ 成功读取函数代码 (${functionCode.length} 字符)`));
55
+ }
56
+ catch (error) {
57
+ throw new Error(`Failed to read function file at ${actualFunctionPath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
58
+ }
59
+ // 3. 先检查 Supabase 项目状态
50
60
  console.log(chalk.blue('🔍 检查 Supabase 项目状态...'));
51
61
  const statusUrl = `https://www.needware.dev/api/supabase/status?chatId=${chatId}`;
52
62
  const statusResponse = await fetch(statusUrl, {
@@ -64,26 +74,14 @@ export class SupabaseDeployFunctionsTool extends BaseTool {
64
74
  }
65
75
  const projectId = statusData.data.projectId;
66
76
  console.log(chalk.green(`✓ 找到 Supabase 项目: ${projectId}`));
67
- // 2. 部署 Edge Function
68
- console.log(chalk.blue(`🚀 开始部署 Edge Function${functionName ? `: ${functionName}` : 's'}...`));
77
+ // 4. 部署 Edge Function
78
+ console.log(chalk.blue(`🚀 开始部署 Edge Function: ${functionName}...`));
69
79
  const deployUrl = 'https://www.needware.dev/api/supabase/deploy-function';
70
80
  const deployPayload = {
71
81
  chatId,
72
- workspaceId,
73
- projectId,
82
+ functionName,
83
+ functionCode,
74
84
  };
75
- if (functionName) {
76
- deployPayload.functionName = functionName;
77
- }
78
- if (functionPath) {
79
- deployPayload.functionPath = functionPath;
80
- }
81
- if (noVerifyJwt !== undefined) {
82
- deployPayload.noVerifyJwt = noVerifyJwt;
83
- }
84
- if (importMap) {
85
- deployPayload.importMap = importMap;
86
- }
87
85
  const deployResponse = await fetch(deployUrl, {
88
86
  method: 'POST',
89
87
  headers: {
@@ -101,7 +99,7 @@ export class SupabaseDeployFunctionsTool extends BaseTool {
101
99
  throw new Error(`Deploy failed: ${deployData.error || deployData.message || 'Unknown error'}`);
102
100
  }
103
101
  console.log(chalk.green('✓ Edge Function 部署成功'));
104
- // 3. 构建返回信息
102
+ // 5. 构建返回信息
105
103
  const resultMessage = `Supabase Edge Function deployed successfully!
106
104
 
107
105
  ${deployData.message}
@@ -114,11 +112,12 @@ ${deployData.data ? `Deployment Details:
114
112
  - Deployed At: ${deployData.data.deployedAt}` : ''}
115
113
 
116
114
  Project ID: ${projectId}
117
- ${functionName ? `Function: ${functionName}` : 'All functions deployed'}`;
115
+ Function: ${functionName}
116
+ Source File: ${actualFunctionPath}`;
118
117
  return this.successWithContent(resultMessage);
119
118
  }
120
119
  catch (error) {
121
- const message = error instanceof Error ? error.message : 'Failed to deploy Supabase Edge Functions';
120
+ const message = error instanceof Error ? error.message : 'Failed to deploy Supabase Edge Function';
122
121
  console.log(chalk.red(`\n✖ ${message}\n`));
123
122
  return this.errorWithContent(message);
124
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"supabase-deploy-functions-tool.js","sourceRoot":"","sources":["../../src/tools/supabase-deploy-functions-tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,MAAM,OAAO,2BAA4B,SAAQ,QAAQ;IACvD,UAAU,GAAmB;QAC3B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,sHAAsH;QACnI,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6EAA6E;iBAC3F;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+EAA+E;iBAC7F;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,+DAA+D;iBAC7E;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yBAAyB;iBACvC;aACF;YACD,QAAQ,EAAE,EAAE;SACb;KACF,CAAC;IAEF,YAAY;QACV,OAAO;YACL,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC9E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC9E,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC/E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAA0B;QACtC,IAAI,CAAC;YACH,mBAAmB;YACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAEhE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;YAErE,uBAAuB;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,uDAAuD,MAAM,EAAE,CAAC;YAClF,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;gBAC5C,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,EAAE;iBACpC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,wBAAwB,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,EAAqC,CAAC;YAElF,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;YACvG,CAAC;YAED,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC,CAAC;YAE3D,sBAAsB;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAE/F,MAAM,SAAS,GAAG,uDAAuD,CAAC;YAC1E,MAAM,aAAa,GAAwB;gBACzC,MAAM;gBACN,WAAW;gBACX,SAAS;aACV,CAAC;YAEF,IAAI,YAAY,EAAE,CAAC;gBACjB,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;YAC5C,CAAC;YACD,IAAI,YAAY,EAAE,CAAC;gBACjB,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;YAC5C,CAAC;YACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC;YAC1C,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACd,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;YACtC,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;gBAC5C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,EAAE;oBACnC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;aACpC,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,kBAAkB,cAAc,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC,CAAC;YAC/E,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,EAAoB,CAAC;YAEjE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,kBAAkB,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;YACjG,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAEjD,YAAY;YACZ,MAAM,aAAa,GAAG;;EAE1B,UAAU,CAAC,OAAO;;EAElB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;iBACH,UAAU,CAAC,IAAI,CAAC,UAAU;mBACxB,UAAU,CAAC,IAAI,CAAC,YAAY;YACnC,UAAU,CAAC,IAAI,CAAC,MAAM;aACrB,UAAU,CAAC,IAAI,CAAC,OAAO;iBACnB,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;;cAEpC,SAAS;EACrB,YAAY,CAAC,CAAC,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC;YAEpE,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0CAA0C,CAAC;YACpG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"supabase-deploy-functions-tool.js","sourceRoot":"","sources":["../../src/tools/supabase-deploy-functions-tool.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.6.1",
3
+ "version": "1.6.3",
4
4
  "description": "一个功能强大的 Node.js 命令行工具",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -120,8 +120,11 @@ const corsHeaders = {
120
120
  "Access-Control-Allow-Origin": "*",
121
121
  "Access-Control-Allow-Headers":
122
122
  "authorization, x-client-info, apikey, content-type",
123
+ "Access-Control-Allow-Methods": "POST, OPTIONS",
124
+ "Access-Control-Max-Age": "86400",
123
125
  };
124
126
 
127
+
125
128
  interface EmailRequest {
126
129
  to: string;
127
130
  subject: string;
@@ -131,7 +134,10 @@ interface EmailRequest {
131
134
  const handler = async (req: Request): Promise<Response> => {
132
135
  // Handle CORS preflight requests
133
136
  if (req.method === "OPTIONS") {
134
- return new Response(null, { headers: corsHeaders });
137
+ return new Response(null, {
138
+ status: 200,
139
+ headers: corsHeaders
140
+ });
135
141
  }
136
142
 
137
143
  try {
@@ -186,7 +192,10 @@ interface BatchEmailRequest {
186
192
 
187
193
  const handler = async (req: Request): Promise<Response> => {
188
194
  if (req.method === "OPTIONS") {
189
- return new Response(null, { headers: corsHeaders });
195
+ return new Response(null, {
196
+ status: 200,
197
+ headers: corsHeaders
198
+ });
190
199
  }
191
200
 
192
201
  try {
@@ -251,6 +260,8 @@ const corsHeaders = {
251
260
  "Access-Control-Allow-Origin": "*",
252
261
  "Access-Control-Allow-Headers":
253
262
  "authorization, x-client-info, apikey, content-type",
263
+ "Access-Control-Allow-Methods": "POST, OPTIONS",
264
+ "Access-Control-Max-Age": "86400",
254
265
  };
255
266
 
256
267
  interface AlertEmailRequest {