@coze-arch/cli 0.0.1-alpha.a1ca15 → 0.0.1-alpha.a37c60

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 (33) hide show
  1. package/lib/__templates__/expo/.coze +7 -2
  2. package/lib/__templates__/expo/.cozeproj/scripts/{deploy_build.sh → dev_build.sh} +4 -10
  3. package/lib/__templates__/expo/.cozeproj/scripts/{deploy_run.sh → dev_run.sh} +15 -51
  4. package/lib/__templates__/expo/.cozeproj/scripts/prod_build.sh +47 -0
  5. package/lib/__templates__/expo/.cozeproj/scripts/prod_run.sh +35 -0
  6. package/lib/__templates__/expo/babel.config.js +10 -0
  7. package/lib/__templates__/expo/client/components/ThemedText.tsx +33 -0
  8. package/lib/__templates__/expo/client/components/ThemedView.tsx +38 -0
  9. package/lib/__templates__/expo/client/constants/theme.ts +779 -47
  10. package/lib/__templates__/expo/client/contexts/AuthContext.tsx +14 -107
  11. package/lib/__templates__/expo/client/hooks/useTheme.ts +1 -1
  12. package/lib/__templates__/expo/client/screens/home/index.tsx +1 -4
  13. package/lib/__templates__/expo/client/screens/home/styles.ts +1 -273
  14. package/lib/__templates__/expo/client/utils/index.ts +1 -2
  15. package/lib/__templates__/expo/metro.config.js +76 -8
  16. package/lib/__templates__/expo/package.json +15 -6
  17. package/lib/__templates__/expo/pnpm-lock.yaml +71 -516
  18. package/lib/__templates__/expo/src/index.ts +2 -2
  19. package/lib/__templates__/expo/template.config.js +1 -1
  20. package/lib/__templates__/nextjs/next.config.ts +1 -0
  21. package/lib/__templates__/nextjs/package.json +1 -1
  22. package/lib/__templates__/nextjs/pnpm-lock.yaml +5 -5
  23. package/lib/__templates__/nextjs/scripts/dev.sh +7 -26
  24. package/lib/__templates__/nextjs/src/app/globals.css +99 -87
  25. package/lib/__templates__/nextjs/src/app/layout.tsx +18 -18
  26. package/lib/__templates__/templates.json +34 -0
  27. package/lib/__templates__/vite/package.json +1 -1
  28. package/lib/__templates__/vite/pnpm-lock.yaml +120 -120
  29. package/lib/__templates__/vite/scripts/dev.sh +7 -26
  30. package/lib/__templates__/vite/template.config.js +11 -2
  31. package/lib/__templates__/vite/vite.config.ts +3 -3
  32. package/lib/cli.js +214 -79
  33. package/package.json +8 -4
@@ -3,8 +3,8 @@ import express from "express";
3
3
  const app = express();
4
4
  const port = process.env.PORT || 9091;
5
5
 
6
- app.get('/api/hello', (req, res) => {
7
- res.status(200).json({ message: 'hello world' });
6
+ app.get('/api/v1/ping', (req, res) => {
7
+ res.status(200).json({ message: 'connected' });
8
8
  });
9
9
 
10
10
  app.listen(port, () => {
@@ -31,7 +31,7 @@ export const paramsSchema = {
31
31
  const config = {
32
32
  paramsSchema,
33
33
  defaultParams: {
34
- port: 8081,
34
+ port: 9090,
35
35
  appName: 'my-expo-app',
36
36
  },
37
37
  onBeforeRender: async context => {
@@ -2,6 +2,7 @@ import type { NextConfig } from 'next';
2
2
 
3
3
  const nextConfig: NextConfig = {
4
4
  /* config options here */
5
+ allowedDevOrigins: ['*.dev.coze.site'],
5
6
  };
6
7
 
7
8
  export default nextConfig;
@@ -42,7 +42,7 @@
42
42
  "class-variance-authority": "^0.7.1",
43
43
  "clsx": "^2.1.1",
44
44
  "cmdk": "^1.1.1",
45
- "coze-coding-dev-sdk": "0.5.0",
45
+ "coze-coding-dev-sdk": "^0.5.2",
46
46
  "date-fns": "^4.1.0",
47
47
  "drizzle-kit": "^0.31.8",
48
48
  "drizzle-orm": "^0.45.1",
@@ -105,8 +105,8 @@ importers:
105
105
  specifier: ^1.1.1
106
106
  version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
107
107
  coze-coding-dev-sdk:
108
- specifier: 0.5.0
109
- version: 0.5.0(@types/pg@8.16.0)(openai@6.15.0(zod@4.3.5))
108
+ specifier: ^0.5.2
109
+ version: 0.5.4(@types/pg@8.16.0)(openai@6.15.0(zod@4.3.5))
110
110
  date-fns:
111
111
  specifier: ^4.1.0
112
112
  version: 4.1.0
@@ -2747,8 +2747,8 @@ packages:
2747
2747
  typescript:
2748
2748
  optional: true
2749
2749
 
2750
- coze-coding-dev-sdk@0.5.0:
2751
- resolution: {integrity: sha512-fmJypE4jgExKOOFSz26ZNRUyKmAh3FENKORXMfvP7JIbXmk092ntrnll9DCJ+HpNOcpdvlE5lTmGSvyGh9nwrw==}
2750
+ coze-coding-dev-sdk@0.5.4:
2751
+ resolution: {integrity: sha512-nIH2hMFlO2PSnqdslFzOITK+2FhR64caoYFuzy2ma+ceu0o2Spe7tLYLIsyUc42Prr5gXqk4MZESQqpXD34ZwQ==}
2752
2752
  engines: {node: '>=18.0.0'}
2753
2753
  hasBin: true
2754
2754
 
@@ -7931,7 +7931,7 @@ snapshots:
7931
7931
  optionalDependencies:
7932
7932
  typescript: 5.9.3
7933
7933
 
7934
- coze-coding-dev-sdk@0.5.0(@types/pg@8.16.0)(openai@6.15.0(zod@4.3.5)):
7934
+ coze-coding-dev-sdk@0.5.4(@types/pg@8.16.0)(openai@6.15.0(zod@4.3.5)):
7935
7935
  dependencies:
7936
7936
  '@aws-sdk/client-s3': 3.962.0
7937
7937
  '@aws-sdk/lib-storage': 3.962.0(@aws-sdk/client-s3@3.962.0)
@@ -4,44 +4,25 @@ set -Eeuo pipefail
4
4
  PORT=<%= port %>
5
5
  COZE_WORKSPACE_PATH="${COZE_WORKSPACE_PATH:-$(pwd)}"
6
6
  NODE_ENV=development
7
+ DEPLOY_RUN_PORT=<%= port %>
7
8
 
8
9
  cd "${COZE_WORKSPACE_PATH}"
9
10
 
10
11
  kill_port_if_listening() {
11
12
  local pids
12
-
13
- # Check if lsof is available (macOS/BSD) or ss (Linux)
14
- if command -v lsof >/dev/null 2>&1; then
15
- # macOS/BSD using lsof
16
- pids=$(lsof -ti:${PORT} 2>/dev/null || true)
17
- elif command -v ss >/dev/null 2>&1; then
18
- # Linux using ss
19
- pids=$(ss -H -lntp 2>/dev/null | awk -v port="${PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true)
20
- else
21
- echo "Warning: neither lsof nor ss found, cannot check port ${PORT}"
22
- return
23
- fi
24
-
13
+ pids=$(ss -H -lntp 2>/dev/null | awk -v port="${DEPLOY_RUN_PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true)
25
14
  if [[ -z "${pids}" ]]; then
26
- echo "Port ${PORT} is free."
15
+ echo "Port ${DEPLOY_RUN_PORT} is free."
27
16
  return
28
17
  fi
29
-
30
- echo "Port ${PORT} in use by PIDs: ${pids} (SIGKILL)"
18
+ echo "Port ${DEPLOY_RUN_PORT} in use by PIDs: ${pids} (SIGKILL)"
31
19
  echo "${pids}" | xargs -I {} kill -9 {}
32
20
  sleep 1
33
-
34
- # Verify port is cleared
35
- if command -v lsof >/dev/null 2>&1; then
36
- pids=$(lsof -ti:${PORT} 2>/dev/null || true)
37
- elif command -v ss >/dev/null 2>&1; then
38
- pids=$(ss -H -lntp 2>/dev/null | awk -v port="${PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true)
39
- fi
40
-
21
+ pids=$(ss -H -lntp 2>/dev/null | awk -v port="${DEPLOY_RUN_PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true)
41
22
  if [[ -n "${pids}" ]]; then
42
- echo "Warning: port ${PORT} still busy after SIGKILL, PIDs: ${pids}"
23
+ echo "Warning: port ${DEPLOY_RUN_PORT} still busy after SIGKILL, PIDs: ${pids}"
43
24
  else
44
- echo "Port ${PORT} cleared."
25
+ echo "Port ${DEPLOY_RUN_PORT} cleared."
45
26
  fi
46
27
  }
47
28
 
@@ -1,59 +1,11 @@
1
1
  @import 'tailwindcss';
2
- @import "tw-animate-css";
2
+ @import 'tw-animate-css';
3
3
 
4
4
  @custom-variant dark (&:is(.dark *));
5
5
 
6
- :root {
7
- --background: 0 0% 100%;
8
- --foreground: 0 0% 9%;
9
- --card: 0 0% 100%;
10
- --card-foreground: 0 0% 9%;
11
- --popover: 0 0% 100%;
12
- --popover-foreground: 0 0% 9%;
13
- --primary: 0 0% 9%;
14
- --primary-foreground: 0 0% 98%;
15
- --secondary: 0 0% 96%;
16
- --secondary-foreground: 0 0% 9%;
17
- --muted: 0 0% 96%;
18
- --muted-foreground: 0 0% 45%;
19
- --accent: 0 0% 96%;
20
- --accent-foreground: 0 0% 9%;
21
- --destructive: 0 84% 60%;
22
- --destructive-foreground: 0 0% 98%;
23
- --border: 0 0% 90%;
24
- --input: 0 0% 90%;
25
- --ring: 0 0% 9%;
26
- --radius: 0.5rem;
27
- --sidebar: hsl(0 0% 98%);
28
- --sidebar-foreground: hsl(240 5.3% 26.1%);
29
- --sidebar-primary: hsl(240 5.9% 10%);
30
- --sidebar-primary-foreground: hsl(0 0% 98%);
31
- --sidebar-accent: hsl(240 4.8% 95.9%);
32
- --sidebar-accent-foreground: hsl(240 5.9% 10%);
33
- --sidebar-border: hsl(220 13% 91%);
34
- --sidebar-ring: hsl(217.2 91.2% 59.8%);
35
- }
36
-
37
6
  @theme inline {
38
- --color-background: hsl(var(--background));
39
- --color-foreground: hsl(var(--foreground));
40
- --color-card: hsl(var(--card));
41
- --color-card-foreground: hsl(var(--card-foreground));
42
- --color-popover: hsl(var(--popover));
43
- --color-popover-foreground: hsl(var(--popover-foreground));
44
- --color-primary: hsl(var(--primary));
45
- --color-primary-foreground: hsl(var(--primary-foreground));
46
- --color-secondary: hsl(var(--secondary));
47
- --color-secondary-foreground: hsl(var(--secondary-foreground));
48
- --color-muted: hsl(var(--muted));
49
- --color-muted-foreground: hsl(var(--muted-foreground));
50
- --color-accent: hsl(var(--accent));
51
- --color-accent-foreground: hsl(var(--accent-foreground));
52
- --color-destructive: hsl(var(--destructive));
53
- --color-destructive-foreground: hsl(var(--destructive-foreground));
54
- --color-border: hsl(var(--border));
55
- --color-input: hsl(var(--input));
56
- --color-ring: hsl(var(--ring));
7
+ --color-background: var(--background);
8
+ --color-foreground: var(--foreground);
57
9
  --font-sans: var(--font-geist-sans);
58
10
  --font-mono: var(--font-geist-mono);
59
11
  --color-sidebar-ring: var(--sidebar-ring);
@@ -64,47 +16,103 @@
64
16
  --color-sidebar-primary: var(--sidebar-primary);
65
17
  --color-sidebar-foreground: var(--sidebar-foreground);
66
18
  --color-sidebar: var(--sidebar);
19
+ --color-chart-5: var(--chart-5);
20
+ --color-chart-4: var(--chart-4);
21
+ --color-chart-3: var(--chart-3);
22
+ --color-chart-2: var(--chart-2);
23
+ --color-chart-1: var(--chart-1);
24
+ --color-ring: var(--ring);
25
+ --color-input: var(--input);
26
+ --color-border: var(--border);
27
+ --color-destructive: var(--destructive);
28
+ --color-accent-foreground: var(--accent-foreground);
29
+ --color-accent: var(--accent);
30
+ --color-muted-foreground: var(--muted-foreground);
31
+ --color-muted: var(--muted);
32
+ --color-secondary-foreground: var(--secondary-foreground);
33
+ --color-secondary: var(--secondary);
34
+ --color-primary-foreground: var(--primary-foreground);
35
+ --color-primary: var(--primary);
36
+ --color-popover-foreground: var(--popover-foreground);
37
+ --color-popover: var(--popover);
38
+ --color-card-foreground: var(--card-foreground);
39
+ --color-card: var(--card);
40
+ --radius-sm: calc(var(--radius) - 4px);
41
+ --radius-md: calc(var(--radius) - 2px);
42
+ --radius-lg: var(--radius);
43
+ --radius-xl: calc(var(--radius) + 4px);
44
+ --radius-2xl: calc(var(--radius) + 8px);
45
+ --radius-3xl: calc(var(--radius) + 12px);
46
+ --radius-4xl: calc(var(--radius) + 16px);
67
47
  }
68
48
 
69
- @media (prefers-color-scheme: dark) {
70
- :root {
71
- --background: 0 0% 4%;
72
- --foreground: 0 0% 93%;
73
- --card: 0 0% 4%;
74
- --card-foreground: 0 0% 93%;
75
- --popover: 0 0% 4%;
76
- --popover-foreground: 0 0% 93%;
77
- --primary: 0 0% 98%;
78
- --primary-foreground: 0 0% 9%;
79
- --secondary: 0 0% 15%;
80
- --secondary-foreground: 0 0% 98%;
81
- --muted: 0 0% 15%;
82
- --muted-foreground: 0 0% 64%;
83
- --accent: 0 0% 15%;
84
- --accent-foreground: 0 0% 98%;
85
- --destructive: 0 63% 31%;
86
- --destructive-foreground: 0 0% 98%;
87
- --border: 0 0% 15%;
88
- --input: 0 0% 15%;
89
- --ring: 0 0% 83%;
90
- }
91
- }
92
-
93
- body {
94
- background: hsl(var(--background));
95
- color: hsl(var(--foreground));
96
- font-family: Arial, Helvetica, sans-serif;
49
+ :root {
50
+ --radius: 0.625rem;
51
+ --background: oklch(1 0 0);
52
+ --foreground: oklch(0.145 0 0);
53
+ --card: oklch(1 0 0);
54
+ --card-foreground: oklch(0.145 0 0);
55
+ --popover: oklch(1 0 0);
56
+ --popover-foreground: oklch(0.145 0 0);
57
+ --primary: oklch(0.205 0 0);
58
+ --primary-foreground: oklch(0.985 0 0);
59
+ --secondary: oklch(0.97 0 0);
60
+ --secondary-foreground: oklch(0.205 0 0);
61
+ --muted: oklch(0.97 0 0);
62
+ --muted-foreground: oklch(0.556 0 0);
63
+ --accent: oklch(0.97 0 0);
64
+ --accent-foreground: oklch(0.205 0 0);
65
+ --destructive: oklch(0.577 0.245 27.325);
66
+ --border: oklch(0.922 0 0);
67
+ --input: oklch(0.922 0 0);
68
+ --ring: oklch(0.708 0 0);
69
+ --chart-1: oklch(0.646 0.222 41.116);
70
+ --chart-2: oklch(0.6 0.118 184.704);
71
+ --chart-3: oklch(0.398 0.07 227.392);
72
+ --chart-4: oklch(0.828 0.189 84.429);
73
+ --chart-5: oklch(0.769 0.188 70.08);
74
+ --sidebar: oklch(0.985 0 0);
75
+ --sidebar-foreground: oklch(0.145 0 0);
76
+ --sidebar-primary: oklch(0.205 0 0);
77
+ --sidebar-primary-foreground: oklch(0.985 0 0);
78
+ --sidebar-accent: oklch(0.97 0 0);
79
+ --sidebar-accent-foreground: oklch(0.205 0 0);
80
+ --sidebar-border: oklch(0.922 0 0);
81
+ --sidebar-ring: oklch(0.708 0 0);
97
82
  }
98
83
 
99
84
  .dark {
100
- --sidebar: hsl(240 5.9% 10%);
101
- --sidebar-foreground: hsl(240 4.8% 95.9%);
102
- --sidebar-primary: hsl(224.3 76.3% 48%);
103
- --sidebar-primary-foreground: hsl(0 0% 100%);
104
- --sidebar-accent: hsl(240 3.7% 15.9%);
105
- --sidebar-accent-foreground: hsl(240 4.8% 95.9%);
106
- --sidebar-border: hsl(240 3.7% 15.9%);
107
- --sidebar-ring: hsl(217.2 91.2% 59.8%);
85
+ --background: oklch(0.145 0 0);
86
+ --foreground: oklch(0.985 0 0);
87
+ --card: oklch(0.205 0 0);
88
+ --card-foreground: oklch(0.985 0 0);
89
+ --popover: oklch(0.205 0 0);
90
+ --popover-foreground: oklch(0.985 0 0);
91
+ --primary: oklch(0.922 0 0);
92
+ --primary-foreground: oklch(0.205 0 0);
93
+ --secondary: oklch(0.269 0 0);
94
+ --secondary-foreground: oklch(0.985 0 0);
95
+ --muted: oklch(0.269 0 0);
96
+ --muted-foreground: oklch(0.708 0 0);
97
+ --accent: oklch(0.269 0 0);
98
+ --accent-foreground: oklch(0.985 0 0);
99
+ --destructive: oklch(0.704 0.191 22.216);
100
+ --border: oklch(1 0 0 / 10%);
101
+ --input: oklch(1 0 0 / 15%);
102
+ --ring: oklch(0.556 0 0);
103
+ --chart-1: oklch(0.488 0.243 264.376);
104
+ --chart-2: oklch(0.696 0.17 162.48);
105
+ --chart-3: oklch(0.769 0.188 70.08);
106
+ --chart-4: oklch(0.627 0.265 303.9);
107
+ --chart-5: oklch(0.645 0.246 16.439);
108
+ --sidebar: oklch(0.205 0 0);
109
+ --sidebar-foreground: oklch(0.985 0 0);
110
+ --sidebar-primary: oklch(0.488 0.243 264.376);
111
+ --sidebar-primary-foreground: oklch(0.985 0 0);
112
+ --sidebar-accent: oklch(0.269 0 0);
113
+ --sidebar-accent-foreground: oklch(0.985 0 0);
114
+ --sidebar-border: oklch(1 0 0 / 10%);
115
+ --sidebar-ring: oklch(0.556 0 0);
108
116
  }
109
117
 
110
118
  @layer base {
@@ -115,3 +123,7 @@ body {
115
123
  @apply bg-background text-foreground;
116
124
  }
117
125
  }
126
+
127
+ body {
128
+ @apply font-sans;
129
+ }
@@ -33,9 +33,9 @@ export const metadata: Metadata = {
33
33
  ],
34
34
  authors: [{ name: 'Coze Code Team', url: 'https://code.coze.cn' }],
35
35
  generator: 'Coze Code',
36
- icons: {
37
- icon: '',
38
- },
36
+ // icons: {
37
+ // icon: '',
38
+ // },
39
39
  openGraph: {
40
40
  title: '扣子编程 | 你的 AI 工程师已就位',
41
41
  description:
@@ -44,22 +44,22 @@ export const metadata: Metadata = {
44
44
  siteName: '扣子编程',
45
45
  locale: 'zh_CN',
46
46
  type: 'website',
47
- images: [
48
- {
49
- url: '',
50
- width: 1200,
51
- height: 630,
52
- alt: '扣子编程 - 你的 AI 工程师',
53
- },
54
- ],
55
- },
56
- twitter: {
57
- card: 'summary_large_image',
58
- title: 'Coze Code | Your AI Engineer is Here',
59
- description:
60
- 'Build and deploy full-stack applications through AI conversation. No env setup, just flow.',
61
- images: [''],
47
+ // images: [
48
+ // {
49
+ // url: '',
50
+ // width: 1200,
51
+ // height: 630,
52
+ // alt: '扣子编程 - 你的 AI 工程师',
53
+ // },
54
+ // ],
62
55
  },
56
+ // twitter: {
57
+ // card: 'summary_large_image',
58
+ // title: 'Coze Code | Your AI Engineer is Here',
59
+ // description:
60
+ // 'Build and deploy full-stack applications through AI conversation. No env setup, just flow.',
61
+ // // images: [''],
62
+ // },
63
63
  robots: {
64
64
  index: true,
65
65
  follow: true,
@@ -39,6 +39,33 @@
39
39
  }
40
40
  }
41
41
  },
42
+ {
43
+ "name": "test-only",
44
+ "description": "test-only template",
45
+ "location": "./test-only",
46
+ "paramsSchema": {
47
+ "appName": {
48
+ "type": "string",
49
+ "description": "Application name (lowercase, alphanumeric and hyphens only)",
50
+ "pattern": "^[a-z0-9-]+$"
51
+ },
52
+ "port": {
53
+ "type": "number",
54
+ "description": "Development server port",
55
+ "default": 5000,
56
+ "minimum": 1024,
57
+ "maximum": 65535
58
+ },
59
+ "includeTests": {
60
+ "type": "boolean",
61
+ "description": "Include test files"
62
+ },
63
+ "addCopyright": {
64
+ "type": "boolean",
65
+ "description": "Add copyright header to source files"
66
+ }
67
+ }
68
+ },
42
69
  {
43
70
  "name": "vite",
44
71
  "description": "vite template",
@@ -52,6 +79,13 @@
52
79
  "port": {
53
80
  "type": "number",
54
81
  "description": "Development server port",
82
+ "default": 5000,
83
+ "minimum": 1024,
84
+ "maximum": 65535
85
+ },
86
+ "hmrPort": {
87
+ "type": "number",
88
+ "description": "Development HMR server port",
55
89
  "default": 6000,
56
90
  "minimum": 1024,
57
91
  "maximum": 65535
@@ -15,7 +15,7 @@
15
15
  "postcss": "^8.4.49",
16
16
  "tailwindcss": "^3.4.17",
17
17
  "typescript": "^5.6.0",
18
- "vite": "^6.0.0"
18
+ "vite": "^7.2.4"
19
19
  },
20
20
  "packageManager": "pnpm@9.0.0",
21
21
  "engines": {