@cmssy/cli 0.22.4 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/dist/index.js +435 -0
  2. package/package.json +25 -86
  3. package/LICENSE +0 -21
  4. package/README.md +0 -692
  5. package/config.d.ts +0 -3
  6. package/config.js +0 -4
  7. package/dist/cli.d.ts +0 -3
  8. package/dist/cli.d.ts.map +0 -1
  9. package/dist/cli.js +0 -340
  10. package/dist/cli.js.map +0 -1
  11. package/dist/commands/add-source.d.ts +0 -13
  12. package/dist/commands/add-source.d.ts.map +0 -1
  13. package/dist/commands/add-source.js +0 -273
  14. package/dist/commands/add-source.js.map +0 -1
  15. package/dist/commands/build.d.ts +0 -7
  16. package/dist/commands/build.d.ts.map +0 -1
  17. package/dist/commands/build.js +0 -127
  18. package/dist/commands/build.js.map +0 -1
  19. package/dist/commands/codegen.d.ts +0 -7
  20. package/dist/commands/codegen.d.ts.map +0 -1
  21. package/dist/commands/codegen.js +0 -150
  22. package/dist/commands/codegen.js.map +0 -1
  23. package/dist/commands/configure.d.ts +0 -6
  24. package/dist/commands/configure.d.ts.map +0 -1
  25. package/dist/commands/configure.js +0 -39
  26. package/dist/commands/configure.js.map +0 -1
  27. package/dist/commands/create.d.ts +0 -18
  28. package/dist/commands/create.d.ts.map +0 -1
  29. package/dist/commands/create.js +0 -403
  30. package/dist/commands/create.js.map +0 -1
  31. package/dist/commands/dev.d.ts +0 -6
  32. package/dist/commands/dev.d.ts.map +0 -1
  33. package/dist/commands/dev.js +0 -144
  34. package/dist/commands/dev.js.map +0 -1
  35. package/dist/commands/doctor.d.ts +0 -2
  36. package/dist/commands/doctor.d.ts.map +0 -1
  37. package/dist/commands/doctor.js +0 -230
  38. package/dist/commands/doctor.js.map +0 -1
  39. package/dist/commands/init.d.ts +0 -6
  40. package/dist/commands/init.d.ts.map +0 -1
  41. package/dist/commands/init.js +0 -414
  42. package/dist/commands/init.js.map +0 -1
  43. package/dist/commands/lib.d.ts +0 -17
  44. package/dist/commands/lib.d.ts.map +0 -1
  45. package/dist/commands/lib.js +0 -132
  46. package/dist/commands/lib.js.map +0 -1
  47. package/dist/commands/link.d.ts +0 -8
  48. package/dist/commands/link.d.ts.map +0 -1
  49. package/dist/commands/link.js +0 -116
  50. package/dist/commands/link.js.map +0 -1
  51. package/dist/commands/migrate.d.ts +0 -2
  52. package/dist/commands/migrate.d.ts.map +0 -1
  53. package/dist/commands/migrate.js +0 -231
  54. package/dist/commands/migrate.js.map +0 -1
  55. package/dist/commands/package.d.ts +0 -14
  56. package/dist/commands/package.d.ts.map +0 -1
  57. package/dist/commands/package.js +0 -137
  58. package/dist/commands/package.js.map +0 -1
  59. package/dist/commands/publish-block-buildtime.d.ts +0 -8
  60. package/dist/commands/publish-block-buildtime.d.ts.map +0 -1
  61. package/dist/commands/publish-block-buildtime.js +0 -290
  62. package/dist/commands/publish-block-buildtime.js.map +0 -1
  63. package/dist/commands/publish-template.d.ts +0 -22
  64. package/dist/commands/publish-template.d.ts.map +0 -1
  65. package/dist/commands/publish-template.js +0 -345
  66. package/dist/commands/publish-template.js.map +0 -1
  67. package/dist/commands/publish.d.ts +0 -15
  68. package/dist/commands/publish.d.ts.map +0 -1
  69. package/dist/commands/publish.js +0 -1003
  70. package/dist/commands/publish.js.map +0 -1
  71. package/dist/commands/skills.d.ts +0 -11
  72. package/dist/commands/skills.d.ts.map +0 -1
  73. package/dist/commands/skills.js +0 -178
  74. package/dist/commands/skills.js.map +0 -1
  75. package/dist/commands/sync.d.ts +0 -6
  76. package/dist/commands/sync.d.ts.map +0 -1
  77. package/dist/commands/sync.js +0 -208
  78. package/dist/commands/sync.js.map +0 -1
  79. package/dist/commands/test.d.ts +0 -8
  80. package/dist/commands/test.d.ts.map +0 -1
  81. package/dist/commands/test.js +0 -60
  82. package/dist/commands/test.js.map +0 -1
  83. package/dist/commands/upload.d.ts +0 -11
  84. package/dist/commands/upload.d.ts.map +0 -1
  85. package/dist/commands/upload.js +0 -128
  86. package/dist/commands/upload.js.map +0 -1
  87. package/dist/commands/workspaces.d.ts +0 -2
  88. package/dist/commands/workspaces.d.ts.map +0 -1
  89. package/dist/commands/workspaces.js +0 -62
  90. package/dist/commands/workspaces.js.map +0 -1
  91. package/dist/dev-ui/app.js +0 -1284
  92. package/dist/dev-ui/index.html +0 -1511
  93. package/dist/dev-ui-react/App.tsx +0 -164
  94. package/dist/dev-ui-react/__tests__/previewData.test.ts +0 -193
  95. package/dist/dev-ui-react/components/BlocksList.tsx +0 -232
  96. package/dist/dev-ui-react/components/Editor.tsx +0 -469
  97. package/dist/dev-ui-react/components/Preview.tsx +0 -146
  98. package/dist/dev-ui-react/hooks/useBlocks.ts +0 -80
  99. package/dist/dev-ui-react/index.html +0 -13
  100. package/dist/dev-ui-react/main.tsx +0 -8
  101. package/dist/dev-ui-react/styles.css +0 -856
  102. package/dist/dev-ui-react/types.ts +0 -45
  103. package/dist/skills/claude/cmssy-block.md +0 -454
  104. package/dist/skills/claude/cmssy-mcp-content.md +0 -235
  105. package/dist/test-helpers/index.d.ts +0 -23
  106. package/dist/test-helpers/index.d.ts.map +0 -1
  107. package/dist/test-helpers/index.js +0 -50
  108. package/dist/test-helpers/index.js.map +0 -1
  109. package/dist/types/block-config.d.ts +0 -6
  110. package/dist/types/block-config.d.ts.map +0 -1
  111. package/dist/types/block-config.js +0 -12
  112. package/dist/types/block-config.js.map +0 -1
  113. package/dist/types/publish-job.d.ts +0 -61
  114. package/dist/types/publish-job.d.ts.map +0 -1
  115. package/dist/types/publish-job.js +0 -13
  116. package/dist/types/publish-job.js.map +0 -1
  117. package/dist/utils/api-error.d.ts +0 -10
  118. package/dist/utils/api-error.d.ts.map +0 -1
  119. package/dist/utils/api-error.js +0 -55
  120. package/dist/utils/api-error.js.map +0 -1
  121. package/dist/utils/block-config.d.ts +0 -87
  122. package/dist/utils/block-config.d.ts.map +0 -1
  123. package/dist/utils/block-config.js +0 -214
  124. package/dist/utils/block-config.js.map +0 -1
  125. package/dist/utils/blocks-meta-cache.d.ts +0 -28
  126. package/dist/utils/blocks-meta-cache.d.ts.map +0 -1
  127. package/dist/utils/blocks-meta-cache.js +0 -72
  128. package/dist/utils/blocks-meta-cache.js.map +0 -1
  129. package/dist/utils/builder.d.ts +0 -34
  130. package/dist/utils/builder.d.ts.map +0 -1
  131. package/dist/utils/builder.js +0 -140
  132. package/dist/utils/builder.js.map +0 -1
  133. package/dist/utils/cmssy-config.d.ts +0 -16
  134. package/dist/utils/cmssy-config.d.ts.map +0 -1
  135. package/dist/utils/cmssy-config.js +0 -19
  136. package/dist/utils/cmssy-config.js.map +0 -1
  137. package/dist/utils/config.d.ts +0 -9
  138. package/dist/utils/config.d.ts.map +0 -1
  139. package/dist/utils/config.js +0 -51
  140. package/dist/utils/config.js.map +0 -1
  141. package/dist/utils/dependency-check.d.ts +0 -21
  142. package/dist/utils/dependency-check.d.ts.map +0 -1
  143. package/dist/utils/dependency-check.js +0 -56
  144. package/dist/utils/dependency-check.js.map +0 -1
  145. package/dist/utils/dev-generator/api-routes/blocks.d.ts +0 -3
  146. package/dist/utils/dev-generator/api-routes/blocks.d.ts.map +0 -1
  147. package/dist/utils/dev-generator/api-routes/blocks.js +0 -194
  148. package/dist/utils/dev-generator/api-routes/blocks.js.map +0 -1
  149. package/dist/utils/dev-generator/api-routes/config.d.ts +0 -2
  150. package/dist/utils/dev-generator/api-routes/config.d.ts.map +0 -1
  151. package/dist/utils/dev-generator/api-routes/config.js +0 -107
  152. package/dist/utils/dev-generator/api-routes/config.js.map +0 -1
  153. package/dist/utils/dev-generator/api-routes/preview.d.ts +0 -2
  154. package/dist/utils/dev-generator/api-routes/preview.d.ts.map +0 -1
  155. package/dist/utils/dev-generator/api-routes/preview.js +0 -50
  156. package/dist/utils/dev-generator/api-routes/preview.js.map +0 -1
  157. package/dist/utils/dev-generator/api-routes/workspaces.d.ts +0 -2
  158. package/dist/utils/dev-generator/api-routes/workspaces.d.ts.map +0 -1
  159. package/dist/utils/dev-generator/api-routes/workspaces.js +0 -128
  160. package/dist/utils/dev-generator/api-routes/workspaces.js.map +0 -1
  161. package/dist/utils/dev-generator/helpers.d.ts +0 -23
  162. package/dist/utils/dev-generator/helpers.d.ts.map +0 -1
  163. package/dist/utils/dev-generator/helpers.js +0 -128
  164. package/dist/utils/dev-generator/helpers.js.map +0 -1
  165. package/dist/utils/dev-generator/home-page.d.ts +0 -2
  166. package/dist/utils/dev-generator/home-page.d.ts.map +0 -1
  167. package/dist/utils/dev-generator/home-page.js +0 -643
  168. package/dist/utils/dev-generator/home-page.js.map +0 -1
  169. package/dist/utils/dev-generator/index.d.ts +0 -11
  170. package/dist/utils/dev-generator/index.d.ts.map +0 -1
  171. package/dist/utils/dev-generator/index.js +0 -85
  172. package/dist/utils/dev-generator/index.js.map +0 -1
  173. package/dist/utils/dev-generator/layout.d.ts +0 -3
  174. package/dist/utils/dev-generator/layout.d.ts.map +0 -1
  175. package/dist/utils/dev-generator/layout.js +0 -63
  176. package/dist/utils/dev-generator/layout.js.map +0 -1
  177. package/dist/utils/dev-generator/next-config.d.ts +0 -3
  178. package/dist/utils/dev-generator/next-config.d.ts.map +0 -1
  179. package/dist/utils/dev-generator/next-config.js +0 -111
  180. package/dist/utils/dev-generator/next-config.js.map +0 -1
  181. package/dist/utils/dev-generator/preview-pages.d.ts +0 -3
  182. package/dist/utils/dev-generator/preview-pages.d.ts.map +0 -1
  183. package/dist/utils/dev-generator/preview-pages.js +0 -833
  184. package/dist/utils/dev-generator/preview-pages.js.map +0 -1
  185. package/dist/utils/dev-generator.d.ts +0 -12
  186. package/dist/utils/dev-generator.d.ts.map +0 -1
  187. package/dist/utils/dev-generator.js +0 -1752
  188. package/dist/utils/dev-generator.js.map +0 -1
  189. package/dist/utils/field-schema.d.ts +0 -13
  190. package/dist/utils/field-schema.d.ts.map +0 -1
  191. package/dist/utils/field-schema.js +0 -182
  192. package/dist/utils/field-schema.js.map +0 -1
  193. package/dist/utils/graphql.d.ts +0 -39
  194. package/dist/utils/graphql.d.ts.map +0 -1
  195. package/dist/utils/graphql.js +0 -138
  196. package/dist/utils/graphql.js.map +0 -1
  197. package/dist/utils/lib-manifest.d.ts +0 -7
  198. package/dist/utils/lib-manifest.d.ts.map +0 -1
  199. package/dist/utils/lib-manifest.js +0 -59
  200. package/dist/utils/lib-manifest.js.map +0 -1
  201. package/dist/utils/publish-helpers.d.ts +0 -43
  202. package/dist/utils/publish-helpers.d.ts.map +0 -1
  203. package/dist/utils/publish-helpers.js +0 -215
  204. package/dist/utils/publish-helpers.js.map +0 -1
  205. package/dist/utils/publish-helpers.test.d.ts +0 -2
  206. package/dist/utils/publish-helpers.test.d.ts.map +0 -1
  207. package/dist/utils/publish-helpers.test.js +0 -24
  208. package/dist/utils/publish-helpers.test.js.map +0 -1
  209. package/dist/utils/resolve-workspace.d.ts +0 -6
  210. package/dist/utils/resolve-workspace.d.ts.map +0 -1
  211. package/dist/utils/resolve-workspace.js +0 -32
  212. package/dist/utils/resolve-workspace.js.map +0 -1
  213. package/dist/utils/scanner.d.ts +0 -42
  214. package/dist/utils/scanner.d.ts.map +0 -1
  215. package/dist/utils/scanner.js +0 -156
  216. package/dist/utils/scanner.js.map +0 -1
  217. package/dist/utils/schema-diff.d.ts +0 -22
  218. package/dist/utils/schema-diff.d.ts.map +0 -1
  219. package/dist/utils/schema-diff.js +0 -107
  220. package/dist/utils/schema-diff.js.map +0 -1
  221. package/dist/utils/source-collector.d.ts +0 -19
  222. package/dist/utils/source-collector.d.ts.map +0 -1
  223. package/dist/utils/source-collector.js +0 -565
  224. package/dist/utils/source-collector.js.map +0 -1
  225. package/dist/utils/theme-builder.d.ts +0 -12
  226. package/dist/utils/theme-builder.d.ts.map +0 -1
  227. package/dist/utils/theme-builder.js +0 -117
  228. package/dist/utils/theme-builder.js.map +0 -1
  229. package/dist/utils/type-generator.d.ts +0 -9
  230. package/dist/utils/type-generator.d.ts.map +0 -1
  231. package/dist/utils/type-generator.js +0 -86
  232. package/dist/utils/type-generator.js.map +0 -1
  233. package/dist/utils/version.d.ts +0 -10
  234. package/dist/utils/version.d.ts.map +0 -1
  235. package/dist/utils/version.js +0 -30
  236. package/dist/utils/version.js.map +0 -1
  237. package/dist/utils/versions.d.ts.map +0 -1
  238. package/dist/utils/versions.js.map +0 -1
  239. package/src/dev-app/app/api/blocks/[name]/config/route.ts +0 -140
  240. package/src/dev-app/app/api/blocks/route.ts +0 -61
  241. package/src/dev-app/app/api/config/route.ts +0 -98
  242. package/src/dev-app/app/api/context/route.ts +0 -126
  243. package/src/dev-app/app/api/preview/[name]/route.ts +0 -137
  244. package/src/dev-app/app/api/workspaces/route.ts +0 -124
  245. package/src/dev-app/app/layout.tsx +0 -18
  246. package/src/dev-app/app/page.tsx +0 -1785
  247. package/test.d.ts +0 -1
  248. package/test.js +0 -2
package/dist/cli.js DELETED
@@ -1,340 +0,0 @@
1
- #!/usr/bin/env node
2
- import chalk from "chalk";
3
- import { Command, Option } from "commander";
4
- import { buildCommand } from "./commands/build.js";
5
- import { codegenCommand } from "./commands/codegen.js";
6
- import { configureCommand } from "./commands/configure.js";
7
- import { linkCommand } from "./commands/link.js";
8
- import { createCommand } from "./commands/create.js";
9
- import { devCommand } from "./commands/dev.js";
10
- import { doctorCommand } from "./commands/doctor.js";
11
- import { initCommand } from "./commands/init.js";
12
- import { testCommand } from "./commands/test.js";
13
- import { syncCommand } from "./commands/sync.js";
14
- import { migrateCommand } from "./commands/migrate.js";
15
- import { publishBlockBuildtimeCommand } from "./commands/publish-block-buildtime.js";
16
- import { publishTemplateCommand } from "./commands/publish-template.js";
17
- import { libInstallCommand, libSyncCommand } from "./commands/lib.js";
18
- import { skillsInstallCommand, skillsListCommand } from "./commands/skills.js";
19
- import { workspacesCommand } from "./commands/workspaces.js";
20
- import { readFileSync } from "fs";
21
- import { fileURLToPath } from "url";
22
- import { dirname, join } from "path";
23
- const __filename = fileURLToPath(import.meta.url);
24
- const __dirname = dirname(__filename);
25
- const packageJson = JSON.parse(readFileSync(join(__dirname, "../package.json"), "utf-8"));
26
- const program = new Command();
27
- program
28
- .name("cmssy")
29
- .description("Unified CLI for building and publishing blocks to Cmssy design library")
30
- .version(packageJson.version)
31
- .addHelpText("after", `
32
- Examples:
33
- $ cmssy init my-blocks Create new project (uses create-next-app)
34
- $ cmssy init Add Cmssy to existing Next.js project
35
- $ cmssy create block hero Add a new block to your project
36
- $ cmssy dev Start dev server with hot reload
37
- $ cmssy build Build all blocks for production
38
- $ cmssy publish-block hero -w abc Publish a single block to workspace
39
-
40
- Workflow:
41
- 1. init → Create project with example block
42
- 2. link → Connect to your workspace
43
- 3. create → Add more blocks/templates
44
- 4. dev → Develop with live preview
45
- 5. test → Run block tests
46
- 6. build → Bundle for production
47
- 7. publish-block → Deploy a block via the sandbox build pipeline
48
-
49
- Documentation: https://cmssy.io/docs/cli
50
- `);
51
- // cmssy init
52
- program
53
- .command("init")
54
- .description("Initialize a new Cmssy project or add Cmssy to existing one")
55
- .argument("[name]", "Project name (creates new directory with create-next-app)")
56
- .option("-y, --yes", "Skip prompts and use defaults")
57
- .addHelpText("after", `
58
- Examples:
59
- $ cmssy init my-blocks New project (runs create-next-app)
60
- $ cmssy init -y my-blocks New project with defaults (no prompts)
61
- $ cmssy init Add Cmssy to existing Next.js project
62
- `)
63
- .action((name, options) => initCommand(name, options));
64
- // cmssy create
65
- const create = program
66
- .command("create")
67
- .description("Create a new block or template")
68
- .addHelpText("after", `
69
- Examples:
70
- $ cmssy create block hero
71
- $ cmssy create block pricing -c marketing -t "pricing,plans"
72
- $ cmssy create template landing-page
73
- `);
74
- create
75
- .command("block")
76
- .description("Create a new block with scaffold files")
77
- .argument("<name>", "Block name (kebab-case recommended)")
78
- .option("-y, --yes", "Skip prompts and use defaults")
79
- .option("-d, --description <description>", "Block description")
80
- .option("-c, --category <category>", "Category: marketing, typography, media, layout, forms, navigation, other")
81
- .option("-t, --tags <tags>", "Comma-separated tags")
82
- .addHelpText("after", `
83
- Creates:
84
- blocks/<name>/
85
- ├── config.ts Type-safe configuration
86
- ├── package.json Name and version
87
- ├── preview.json Preview data for dev server
88
- └── src/
89
- ├── index.tsx Entry point (mount/unmount)
90
- ├── Block.tsx React component
91
- ├── block.d.ts Auto-generated types
92
- └── index.css Styles
93
- `)
94
- .action(createCommand.block);
95
- create
96
- .command("template")
97
- .description("Create a new page template")
98
- .argument("<name>", "Template name (kebab-case recommended)")
99
- .option("-y, --yes", "Skip prompts and use defaults")
100
- .option("-d, --description <description>", "Template description")
101
- .action(createCommand.page);
102
- // cmssy build
103
- program
104
- .command("build")
105
- .description("Build blocks and templates for production")
106
- .option("--block <names...>", "Build only specific blocks/templates")
107
- .option("--framework <framework>", "Override framework from config")
108
- .addHelpText("after", `
109
- Examples:
110
- $ cmssy build Build all blocks and templates
111
- $ cmssy build --block hero pricing Build only hero and pricing blocks
112
-
113
- Output:
114
- public/@vendor/blocks.<name>/<version>/
115
- ├── index.js Bundled JavaScript
116
- ├── index.css Styles
117
- └── package.json Metadata for design library
118
- `)
119
- .action(buildCommand);
120
- // cmssy dev
121
- program
122
- .command("dev")
123
- .description("Start development server with hot reload")
124
- .option("-p, --port <port>", "Port number", "3000")
125
- .addHelpText("after", `
126
- Examples:
127
- $ cmssy dev Start on default port 3000
128
- $ cmssy dev -p 8080 Start on port 8080
129
-
130
- Features:
131
- • Live preview of all blocks/templates
132
- • Hot reload on file changes
133
- • Auto-regenerates types on config.ts changes
134
- `)
135
- .action(devCommand);
136
- // cmssy test
137
- program
138
- .command("test")
139
- .description("Run block tests with vitest")
140
- .option("--block <names...>", "Test specific blocks")
141
- .option("--watch", "Watch mode")
142
- .option("--coverage", "Generate coverage report")
143
- .addHelpText("after", `
144
- Examples:
145
- $ cmssy test Run all block tests
146
- $ cmssy test --block hero Test specific block
147
- $ cmssy test --watch Watch mode
148
- $ cmssy test --coverage With coverage
149
-
150
- Test files: blocks/*/src/**/*.{test,spec}.{ts,tsx}
151
- templates/*/src/**/*.{test,spec}.{ts,tsx}
152
- `)
153
- .action(testCommand);
154
- // cmssy link
155
- program
156
- .command("link")
157
- .description("Connect project to a Cmssy workspace")
158
- .option("--api-url <url>", "Cmssy API URL (default: existing or https://api.cmssy.io/graphql)")
159
- .option("--token <token>", "API token (skip interactive prompt)")
160
- .option("-w, --workspace <id>", "Workspace ID or slug (skip interactive picker)")
161
- .addHelpText("after", `
162
- Examples:
163
- $ cmssy link Interactive setup
164
- $ cmssy link --token cs_xxx --workspace abc123 Non-interactive (CI)
165
-
166
- Saves credentials and workspace ID to .env file.
167
- Get your API token at: https://cmssy.io/settings/tokens
168
- `)
169
- .action(linkCommand);
170
- // cmssy configure (hidden - deprecated, use `cmssy link`)
171
- program.addCommand(new Command("configure")
172
- .description("Configure Cmssy API credentials (deprecated: use `cmssy link`)")
173
- .option("--api-url <url>", "Cmssy API URL")
174
- .action((options) => {
175
- console.log(chalk.yellow("\n⚠ `cmssy configure` is deprecated. Use `cmssy link` instead.\n"));
176
- return configureCommand(options);
177
- }), { hidden: true });
178
- // cmssy doctor
179
- program
180
- .command("doctor")
181
- .description("Check project setup, API connection, and block health")
182
- .addHelpText("after", `
183
- Runs diagnostic checks:
184
- • Environment (Node.js, npm, next, react)
185
- • Configuration (.env, API token, workspace ID)
186
- • API connection and workspace access
187
- • Block structure validation
188
- • Dependency versions
189
- `)
190
- .action(doctorCommand);
191
- program
192
- .command("publish-block")
193
- .description("Publish a single block via the build pipeline (Vercel Sandbox + Inngest).\n\n" +
194
- " Sends the block source tree to the backend, which packs it as tar.gz,\n" +
195
- " uploads to Vercel Blob, then enqueues an Inngest job that bundles in\n" +
196
- " a sandbox and stores artifacts back to Blob.")
197
- .argument("<name>", "Block directory name under blocks/")
198
- .option("-w, --workspace [id]", "Workspace id (defaults to .env)")
199
- .option("--entry <path>", "Entry path inside block dir (default: src/index.tsx)")
200
- .option("--dry-run", "Collect files and print plan without uploading")
201
- .addHelpText("after", `
202
- Examples:
203
- $ cmssy publish-block hero Publish blocks/hero
204
- $ cmssy publish-block hero --dry-run Show what would be sent
205
- $ cmssy publish-block faq -w 65f... Override workspace
206
-
207
- Limits per block: 200 files, 10 MB total.
208
- Build polling: 1.5s interval, 10 minute cap, gives up after 5 consecutive errors.
209
- `)
210
- .action((name, options) => publishBlockBuildtimeCommand(name, options));
211
- // cmssy publish-template
212
- program
213
- .command("publish-template")
214
- .description("Publish a single template (page tree + content) to a workspace.\n\n" +
215
- " Templates are declarative - no sandbox build. Reads config.ts +\n" +
216
- " pages.json and uploads via GraphQL. The backend revalidates the\n" +
217
- " public-site cache so changes appear immediately.")
218
- .argument("<name>", "Template directory name under templates/")
219
- .option("-w, --workspace [id]", "Workspace id (defaults to .env)")
220
- .option("--patch", "Bump patch version (1.0.0 -> 1.0.1) - default")
221
- .option("--minor", "Bump minor version (1.0.0 -> 1.1.0)")
222
- .option("--major", "Bump major version (1.0.0 -> 2.0.0)")
223
- .option("--no-bump", "Publish without version bump")
224
- .option("--dry-run", "Print plan without uploading")
225
- .option("--overwrite-content", "Overwrite existing page content on republish (default: preserve)")
226
- .addHelpText("after", `
227
- Examples:
228
- $ cmssy publish-template marketing-site Publish templates/marketing-site
229
- $ cmssy publish-template marketing-site --dry-run Show the plan
230
- $ cmssy publish-template blog -w 65f... --minor Override workspace + minor bump
231
-
232
- Required blocks listed in the template must already exist in the workspace
233
- (publish them via \`cmssy publish-block\` first).
234
- `)
235
- .action((name, options) => publishTemplateCommand(name, options));
236
- const lib = program
237
- .command("lib")
238
- .description("Manage the workspace's npm dependency manifest");
239
- lib
240
- .command("install")
241
- .description("Install npm package(s) locally and sync the manifest")
242
- .argument("<packages...>", "npm package specs (e.g. lodash zod@^4)")
243
- .option("-w, --workspace [id]", "Workspace id (defaults to .env)")
244
- .addOption(new Option("--package-manager <pm>", "Force the package manager").choices([
245
- "npm",
246
- "pnpm",
247
- "yarn",
248
- "bun",
249
- ]))
250
- .option("--skip-install", "Skip local install; only sync from package.json")
251
- .option("--dry-run", "Don't push manifest, just print it")
252
- .action((packages, options) => libInstallCommand(packages, options));
253
- lib
254
- .command("sync")
255
- .description("Push current package.json deps to the workspace manifest")
256
- .option("-w, --workspace [id]", "Workspace id (defaults to .env)")
257
- .option("--dry-run", "Don't push manifest, just print it")
258
- .action((options) => libSyncCommand(options));
259
- // cmssy sync
260
- program
261
- .command("sync")
262
- .description("Pull blocks from design library to local project")
263
- .argument("[package]", "Package slug (e.g., @cmssy/blocks.hero)")
264
- .option("--workspace <id>", "Sync from specific workspace")
265
- .addHelpText("after", `
266
- Examples:
267
- $ cmssy sync @cmssy/blocks.hero Sync from design library
268
- $ cmssy sync --workspace abc123 Sync all from workspace
269
- `)
270
- .action(syncCommand);
271
- // cmssy migrate (hidden - legacy command, all projects already migrated)
272
- program.addCommand(new Command("migrate")
273
- .argument("[block-name]")
274
- .description("Migrate legacy package.json config to config.ts")
275
- .addHelpText("after", `
276
- Examples:
277
- $ cmssy migrate hero Migrate specific block
278
- $ cmssy migrate Migrate all blocks/templates
279
-
280
- Converts:
281
- package.json { cmssy: {...} } → config.ts
282
- `)
283
- .action(migrateCommand), { hidden: true });
284
- // cmssy workspaces
285
- program
286
- .command("workspaces")
287
- .description("List your workspaces and their IDs")
288
- .addHelpText("after", `
289
- Use workspace IDs with:
290
- $ cmssy publish-block <name> --workspace <id>
291
- $ cmssy publish-template <name> --workspace <id>
292
- $ cmssy sync --workspace <id>
293
- `)
294
- .action(workspacesCommand);
295
- // cmssy skills
296
- const skills = program
297
- .command("skills")
298
- .description("Manage AI coding-assistant skills for cmssy");
299
- skills
300
- .command("list")
301
- .description("List available skills")
302
- .action(skillsListCommand);
303
- skills
304
- .command("install")
305
- .description("Install a skill into your AI assistant's config directory")
306
- .argument("[skill]", "Skill name: block, mcp-content (omit for interactive)")
307
- .option("--target <editor>", "Editor target: claude (default)", "claude")
308
- .option("--all", "Install every available skill")
309
- .option("--local", "Install into ./.claude/skills (default: ~/.claude/skills)")
310
- .option("--force", "Overwrite existing skill without prompting")
311
- .option("-y, --yes", "Non-interactive mode (fail instead of prompting)")
312
- .addHelpText("after", `
313
- Examples:
314
- $ cmssy skills list Show available skills
315
- $ cmssy skills install Interactive prompt (pick a skill)
316
- $ cmssy skills install block CLI + block dev workflow skill
317
- $ cmssy skills install mcp-content Content editing via @cmssy/mcp-server
318
- $ cmssy skills install --all Install every skill
319
- $ cmssy skills install block --local Install into current project's .claude/
320
- $ cmssy skills install block --force Overwrite existing skill
321
-
322
- Changed in 0.14.0: the first positional arg is now the skill name (e.g.
323
- 'block', 'mcp-content'), not the editor target. Use --target for editor.
324
- `)
325
- .action((skillName, options) => skillsInstallCommand(skillName, options));
326
- // cmssy codegen (hidden - use `cmssy init --graphql` for setup)
327
- program.addCommand(new Command("codegen")
328
- .description("Generate TypeScript types from workspace public GraphQL schema")
329
- .option("-w, --workspace <slug>", "Workspace slug")
330
- .option("-o, --output <path>", "Output file path", "src/graphql/types.ts")
331
- .option("--init", "Generate codegen.ts config file instead of running codegen")
332
- .addHelpText("after", `
333
- Examples:
334
- $ cmssy codegen --workspace my-workspace
335
- $ cmssy codegen --init
336
- $ cmssy codegen -o src/types/api.ts
337
- `)
338
- .action(codegenCommand), { hidden: true });
339
- program.parse();
340
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAC1D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CACV,wEAAwE,CACzE;KACA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;CAmBH,CACE,CAAC;AAEJ,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6DAA6D,CAAC;KAC1E,QAAQ,CACP,QAAQ,EACR,2DAA2D,CAC5D;KACA,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,WAAW,CACV,OAAO,EACP;;;;;CAKH,CACE;KACA,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAEzD,eAAe;AACf,MAAM,MAAM,GAAG,OAAO;KACnB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,WAAW,CACV,OAAO,EACP;;;;;CAKH,CACE,CAAC;AAEJ,MAAM;KACH,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wCAAwC,CAAC;KACrD,QAAQ,CAAC,QAAQ,EAAE,qCAAqC,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CAAC,iCAAiC,EAAE,mBAAmB,CAAC;KAC9D,MAAM,CACL,2BAA2B,EAC3B,0EAA0E,CAC3E;KACA,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;KACnD,WAAW,CACV,OAAO,EACP;;;;;;;;;;;CAWH,CACE;KACA,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAE/B,MAAM;KACH,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,4BAA4B,CAAC;KACzC,QAAQ,CAAC,QAAQ,EAAE,wCAAwC,CAAC;KAC5D,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CAAC,iCAAiC,EAAE,sBAAsB,CAAC;KACjE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAE9B,cAAc;AACd,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,oBAAoB,EAAE,sCAAsC,CAAC;KACpE,MAAM,CAAC,yBAAyB,EAAE,gCAAgC,CAAC;KACnE,WAAW,CACV,OAAO,EACP;;;;;;;;;;CAUH,CACE;KACA,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,YAAY;AACZ,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC;KAClD,WAAW,CACV,OAAO,EACP;;;;;;;;;CASH,CACE;KACA,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;KACpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC;KAC/B,MAAM,CAAC,YAAY,EAAE,0BAA0B,CAAC;KAChD,WAAW,CACV,OAAO,EACP;;;;;;;;;CASH,CACE;KACA,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CACL,iBAAiB,EACjB,mEAAmE,CACpE;KACA,MAAM,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;KAChE,MAAM,CACL,sBAAsB,EACtB,gDAAgD,CACjD;KACA,WAAW,CACV,OAAO,EACP;;;;;;;CAOH,CACE;KACA,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,0DAA0D;AAC1D,OAAO,CAAC,UAAU,CAChB,IAAI,OAAO,CAAC,WAAW,CAAC;KACrB,WAAW,CACV,gEAAgE,CACjE;KACA,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC;KAC1C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,kEAAkE,CACnE,CACF,CAAC;IACF,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,EACJ,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;AAEF,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,WAAW,CACV,OAAO,EACP;;;;;;;CAOH,CACE;KACA,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CACV,+EAA+E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,gDAAgD,CACnD;KACA,QAAQ,CAAC,QAAQ,EAAE,oCAAoC,CAAC;KACxD,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;KACjE,MAAM,CACL,gBAAgB,EAChB,sDAAsD,CACvD;KACA,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;KACrE,WAAW,CACV,OAAO,EACP;;;;;;;;CAQH,CACE;KACA,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1E,yBAAyB;AACzB,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CACV,qEAAqE;IACnE,qEAAqE;IACrE,qEAAqE;IACrE,oDAAoD,CACvD;KACA,QAAQ,CAAC,QAAQ,EAAE,0CAA0C,CAAC;KAC9D,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;KACjE,MAAM,CAAC,SAAS,EAAE,+CAA+C,CAAC;KAClE,MAAM,CAAC,SAAS,EAAE,qCAAqC,CAAC;KACxD,MAAM,CAAC,SAAS,EAAE,qCAAqC,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,8BAA8B,CAAC;KACnD,MAAM,CAAC,WAAW,EAAE,8BAA8B,CAAC;KACnD,MAAM,CACL,qBAAqB,EACrB,kEAAkE,CACnE;KACA,WAAW,CACV,OAAO,EACP;;;;;;;;CAQH,CACE;KACA,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpE,MAAM,GAAG,GAAG,OAAO;KAChB,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,gDAAgD,CAAC,CAAC;AAEjE,GAAG;KACA,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,sDAAsD,CAAC;KACnE,QAAQ,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;KACjE,SAAS,CACR,IAAI,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,CAAC,OAAO,CAAC;IACxE,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;CACN,CAAC,CACH;KACA,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,CAAC;KAC3E,MAAM,CAAC,WAAW,EAAE,oCAAoC,CAAC;KACzD,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAEvE,GAAG;KACA,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,oCAAoC,CAAC;KACzD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAEhD,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kDAAkD,CAAC;KAC/D,QAAQ,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAChE,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;KAC1D,WAAW,CACV,OAAO,EACP;;;;CAIH,CACE;KACA,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,yEAAyE;AACzE,OAAO,CAAC,UAAU,CAChB,IAAI,OAAO,CAAC,SAAS,CAAC;KACnB,QAAQ,CAAC,cAAc,CAAC;KACxB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,WAAW,CACV,OAAO,EACP;;;;;;;CAOL,CACI;KACA,MAAM,CAAC,cAAc,CAAC,EACzB,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;AAEF,mBAAmB;AACnB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,oCAAoC,CAAC;KACjD,WAAW,CACV,OAAO,EACP;;;;;CAKH,CACE;KACA,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,eAAe;AACf,MAAM,MAAM,GAAG,OAAO;KACnB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6CAA6C,CAAC,CAAC;AAE9D,MAAM;KACH,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,MAAM;KACH,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,2DAA2D,CAAC;KACxE,QAAQ,CAAC,SAAS,EAAE,uDAAuD,CAAC;KAC5E,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,EAAE,QAAQ,CAAC;KACxE,MAAM,CAAC,OAAO,EAAE,+BAA+B,CAAC;KAChD,MAAM,CACL,SAAS,EACT,2DAA2D,CAC5D;KACA,MAAM,CAAC,SAAS,EAAE,4CAA4C,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,kDAAkD,CAAC;KACvE,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;CAYH,CACE;KACA,MAAM,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5E,gEAAgE;AAChE,OAAO,CAAC,UAAU,CAChB,IAAI,OAAO,CAAC,SAAS,CAAC;KACnB,WAAW,CACV,gEAAgE,CACjE;KACA,MAAM,CAAC,wBAAwB,EAAE,gBAAgB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,CAAC;KACzE,MAAM,CACL,QAAQ,EACR,4DAA4D,CAC7D;KACA,WAAW,CACV,OAAO,EACP;;;;;CAKL,CACI;KACA,MAAM,CAAC,cAAc,CAAC,EACzB,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;AAEF,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1,13 +0,0 @@
1
- import { GraphQLClient } from "graphql-request";
2
- interface AddSourceOptions {
3
- workspace?: string;
4
- all?: boolean;
5
- }
6
- /**
7
- * Upload source code for a single block to workspace.
8
- * Reusable from both `cmssy add-source` and `cmssy publish --with-source`.
9
- */
10
- export declare function uploadBlockSource(blockName: string, blockPath: string, blockId: string, client: GraphQLClient): Promise<boolean>;
11
- export declare function addSourceCommand(blockNames: string[] | undefined, options: AddSourceOptions): Promise<void>;
12
- export {};
13
- //# sourceMappingURL=add-source.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-source.d.ts","sourceRoot":"","sources":["../../src/commands/add-source.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAUhD,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA+GD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC,CAgClB;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAAE,YAAK,EACzB,OAAO,EAAE,gBAAgB,iBAiM1B"}
@@ -1,273 +0,0 @@
1
- import chalk from "chalk";
2
- import fs from "fs-extra";
3
- import { GraphQLClient } from "graphql-request";
4
- import inquirer from "inquirer";
5
- import ora from "ora";
6
- import path from "path";
7
- import { hasConfig, loadConfig } from "../utils/config.js";
8
- import { ADD_BLOCK_SOURCE_CODE_MUTATION, GET_WORKSPACE_BLOCKS_QUERY, } from "../utils/graphql.js";
9
- /**
10
- * Read original source code for AI Block Builder (editable in Sandpack).
11
- * Combines the main component file with type definitions into a single file.
12
- */
13
- async function readOriginalSourceCode(packagePath) {
14
- const srcDir = path.join(packagePath, "src");
15
- // Find main component file (not index.tsx, but the actual component)
16
- const files = fs.readdirSync(srcDir);
17
- let mainComponentFile;
18
- let sourceCode;
19
- // Look for component files (excluding index.tsx and .d.ts files)
20
- for (const file of files) {
21
- if ((file.endsWith(".tsx") || file.endsWith(".ts")) &&
22
- !file.startsWith("index") &&
23
- !file.endsWith(".d.ts")) {
24
- mainComponentFile = path.join(srcDir, file);
25
- break;
26
- }
27
- }
28
- // If no main component found, try index.tsx
29
- if (!mainComponentFile) {
30
- const indexPath = path.join(srcDir, "index.tsx");
31
- if (fs.existsSync(indexPath)) {
32
- mainComponentFile = indexPath;
33
- }
34
- }
35
- if (mainComponentFile && fs.existsSync(mainComponentFile)) {
36
- // Read the main component
37
- let content = fs.readFileSync(mainComponentFile, "utf-8");
38
- // Read block.d.ts if exists and inline the types
39
- const blockDtsPath = path.join(srcDir, "block.d.ts");
40
- if (fs.existsSync(blockDtsPath)) {
41
- const blockDts = fs.readFileSync(blockDtsPath, "utf-8");
42
- // Extract interface/type definitions from block.d.ts
43
- const typeMatch = blockDts.match(/(?:export\s+)?(?:interface|type)\s+BlockContent[\s\S]*?(?=(?:export\s+)?(?:interface|type)|$)/);
44
- if (typeMatch) {
45
- // Remove the import from block.d.ts and add inline type
46
- content = content.replace(/import\s*{\s*BlockContent\s*}\s*from\s*["']\.\/block(?:\.d)?["'];?\n?/, "");
47
- // Add inline interface at the top
48
- const inlineInterface = `interface BlockContent {
49
- [key: string]: any;
50
- }\n\n`;
51
- // Insert after imports
52
- const lastImportMatch = content.match(/^(import[\s\S]*?from\s*['"][^'"]+['"];?\n)/m);
53
- if (lastImportMatch) {
54
- const insertPos = content.lastIndexOf(lastImportMatch[0]) + lastImportMatch[0].length;
55
- content =
56
- content.slice(0, insertPos) +
57
- "\n" +
58
- inlineInterface +
59
- content.slice(insertPos);
60
- }
61
- else {
62
- content = inlineInterface + content;
63
- }
64
- }
65
- }
66
- sourceCode = content;
67
- }
68
- // Read CSS
69
- const cssPath = path.join(srcDir, "index.css");
70
- const sourceCss = fs.existsSync(cssPath)
71
- ? fs.readFileSync(cssPath, "utf-8")
72
- : undefined;
73
- // Read dependencies from package.json
74
- const pkgPath = path.join(packagePath, "package.json");
75
- let dependencies;
76
- if (fs.existsSync(pkgPath)) {
77
- const pkg = fs.readJsonSync(pkgPath);
78
- if (pkg.dependencies && Object.keys(pkg.dependencies).length > 0) {
79
- dependencies = pkg.dependencies;
80
- }
81
- }
82
- return { sourceCode, sourceCss, dependencies };
83
- }
84
- /**
85
- * Upload source code for a single block to workspace.
86
- * Reusable from both `cmssy add-source` and `cmssy publish --with-source`.
87
- */
88
- export async function uploadBlockSource(blockName, blockPath, blockId, client) {
89
- let sourceCode;
90
- let sourceCss;
91
- let dependencies;
92
- try {
93
- const result = await readOriginalSourceCode(blockPath);
94
- sourceCode = result.sourceCode;
95
- sourceCss = result.sourceCss;
96
- dependencies = result.dependencies;
97
- }
98
- catch (error) {
99
- throw new Error(`Failed to read source for ${blockName}: ${error.message}`);
100
- }
101
- if (!sourceCode) {
102
- return false;
103
- }
104
- const input = {
105
- blockId,
106
- sourceCode,
107
- };
108
- if (sourceCss) {
109
- input.sourceCss = sourceCss;
110
- }
111
- if (dependencies) {
112
- input.dependencies = dependencies;
113
- }
114
- await client.request(ADD_BLOCK_SOURCE_CODE_MUTATION, { input });
115
- return true;
116
- }
117
- export async function addSourceCommand(blockNames = [], options) {
118
- console.log(chalk.blue.bold("\n📦 Cmssy - Add Source Code\n"));
119
- // Check configuration
120
- if (!hasConfig()) {
121
- console.error(chalk.red("✖ Not configured. Run: cmssy link\n"));
122
- process.exit(1);
123
- }
124
- const config = loadConfig();
125
- // Get workspace ID
126
- let workspaceId = options.workspace;
127
- if (!workspaceId) {
128
- if (config.workspaceId) {
129
- workspaceId = config.workspaceId;
130
- console.log(chalk.gray(`Using workspace ID from .env: ${workspaceId}\n`));
131
- }
132
- else {
133
- const answer = await inquirer.prompt([
134
- {
135
- type: "input",
136
- name: "workspaceId",
137
- message: "Enter Workspace ID:",
138
- validate: (input) => {
139
- if (!input) {
140
- return "Workspace ID is required (or set CMSSY_WORKSPACE_ID in .env)";
141
- }
142
- return true;
143
- },
144
- },
145
- ]);
146
- workspaceId = answer.workspaceId;
147
- }
148
- }
149
- // Find cmssy.config.js
150
- const configPath = path.join(process.cwd(), "cmssy.config.js");
151
- if (!fs.existsSync(configPath)) {
152
- console.error(chalk.red("✖ Not a cmssy project (missing cmssy.config.js)\n"));
153
- process.exit(1);
154
- }
155
- // Create GraphQL client
156
- const client = new GraphQLClient(config.apiUrl, {
157
- headers: {
158
- "Content-Type": "application/json",
159
- Authorization: `Bearer ${config.apiToken}`,
160
- "X-Workspace-ID": workspaceId,
161
- },
162
- });
163
- // Fetch workspace blocks
164
- const spinner = ora("Fetching workspace blocks...").start();
165
- let workspaceBlocks;
166
- try {
167
- const result = await client.request(GET_WORKSPACE_BLOCKS_QUERY);
168
- workspaceBlocks = result.workspaceBlocks;
169
- spinner.succeed(`Found ${workspaceBlocks.length} blocks in workspace`);
170
- }
171
- catch (error) {
172
- spinner.fail("Failed to fetch workspace blocks");
173
- console.error(chalk.red(error.message));
174
- process.exit(1);
175
- }
176
- // Find blocks directory
177
- const blocksDir = path.join(process.cwd(), "blocks");
178
- if (!fs.existsSync(blocksDir)) {
179
- console.error(chalk.red("✖ No blocks directory found\n"));
180
- process.exit(1);
181
- }
182
- // Get list of local blocks
183
- const localBlocks = fs
184
- .readdirSync(blocksDir, { withFileTypes: true })
185
- .filter((d) => d.isDirectory())
186
- .map((d) => d.name);
187
- // Filter blocks to process
188
- let blocksToProcess;
189
- if (options.all) {
190
- blocksToProcess = localBlocks;
191
- }
192
- else if (blockNames.length > 0) {
193
- blocksToProcess = blockNames.filter((name) => localBlocks.includes(name));
194
- const missing = blockNames.filter((name) => !localBlocks.includes(name));
195
- if (missing.length > 0) {
196
- console.warn(chalk.yellow(`Warning: Blocks not found locally: ${missing.join(", ")}`));
197
- }
198
- }
199
- else {
200
- // Interactive selection
201
- const choices = localBlocks.map((name) => {
202
- const wsBlock = workspaceBlocks.find((b) => b.blockType === name);
203
- const hasSource = wsBlock?.sourceUrl
204
- ? chalk.green(" (has source)")
205
- : chalk.gray(" (no source)");
206
- return {
207
- name: `${name}${hasSource}`,
208
- value: name,
209
- checked: !wsBlock?.sourceUrl,
210
- };
211
- });
212
- const answer = await inquirer.prompt([
213
- {
214
- type: "checkbox",
215
- name: "blocks",
216
- message: "Select blocks to add source code:",
217
- choices,
218
- },
219
- ]);
220
- blocksToProcess = answer.blocks;
221
- }
222
- if (blocksToProcess.length === 0) {
223
- console.log(chalk.yellow("\n⚠ No blocks selected\n"));
224
- return;
225
- }
226
- console.log(chalk.cyan(`\nAdding source to ${blocksToProcess.length} block(s):\n`));
227
- let successCount = 0;
228
- let errorCount = 0;
229
- for (const blockName of blocksToProcess) {
230
- const blockPath = path.join(blocksDir, blockName);
231
- const wsBlock = workspaceBlocks.find((b) => b.blockType === blockName);
232
- if (!wsBlock) {
233
- console.log(chalk.yellow(` ⚠ ${blockName}: Not found in workspace (publish it first)`));
234
- continue;
235
- }
236
- const blockSpinner = ora(`Adding source to ${blockName}...`).start();
237
- try {
238
- // Read source code
239
- const { sourceCode, sourceCss, dependencies } = await readOriginalSourceCode(blockPath);
240
- if (!sourceCode) {
241
- blockSpinner.warn(`${blockName}: No source code found`);
242
- continue;
243
- }
244
- // Upload via mutation
245
- const input = {
246
- blockId: wsBlock.id,
247
- sourceCode,
248
- };
249
- if (sourceCss) {
250
- input.sourceCss = sourceCss;
251
- }
252
- if (dependencies) {
253
- input.dependencies = dependencies;
254
- }
255
- await client.request(ADD_BLOCK_SOURCE_CODE_MUTATION, { input });
256
- blockSpinner.succeed(chalk.green(`${blockName}: Source added`));
257
- successCount++;
258
- }
259
- catch (error) {
260
- blockSpinner.fail(chalk.red(`${blockName}: Failed`));
261
- console.error(chalk.red(` Error: ${error.message}`));
262
- errorCount++;
263
- }
264
- }
265
- console.log("");
266
- if (errorCount === 0) {
267
- console.log(chalk.green.bold(`✓ ${successCount} block(s) updated successfully\n`));
268
- }
269
- else {
270
- console.log(chalk.yellow(`⚠ ${successCount} succeeded, ${errorCount} failed\n`));
271
- }
272
- }
273
- //# sourceMappingURL=add-source.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-source.js","sourceRoot":"","sources":["../../src/commands/add-source.ts"],"names":[],"mappings":"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"}