@solidxai/solidctl 0.1.28-beta.2 → 0.1.28-beta.21

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.
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.registerReleaseCommand = registerReleaseCommand;
7
7
  const child_process_1 = require("child_process");
8
8
  const fs_1 = __importDefault(require("fs"));
9
+ const os_1 = __importDefault(require("os"));
9
10
  const path_1 = __importDefault(require("path"));
10
11
  const DEFAULT_CONFIG = {
11
12
  mainBranch: 'main',
@@ -34,9 +35,78 @@ function loadConfig() {
34
35
  }
35
36
  return DEFAULT_CONFIG;
36
37
  }
38
+ function readPackageJson(packageJsonPath = path_1.default.join(process.cwd(), 'package.json')) {
39
+ if (!fs_1.default.existsSync(packageJsonPath)) {
40
+ return undefined;
41
+ }
42
+ try {
43
+ return JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf-8'));
44
+ }
45
+ catch {
46
+ return undefined;
47
+ }
48
+ }
49
+ function readRequiredPackageJson(packageJsonPath) {
50
+ const packageJson = readPackageJson(packageJsonPath);
51
+ if (!packageJson) {
52
+ console.error(`❌ Could not read package.json at ${packageJsonPath}`);
53
+ process.exit(1);
54
+ }
55
+ return packageJson;
56
+ }
57
+ function resolveReleaseProject() {
58
+ const cwdName = path_1.default.basename(process.cwd());
59
+ const packageJson = readPackageJson();
60
+ const packageName = packageJson?.name;
61
+ const solidApiPackageJsonPath = path_1.default.join(process.cwd(), 'solid-api', 'package.json');
62
+ const solidApiPackageName = readPackageJson(solidApiPackageJsonPath)?.name;
63
+ switch (cwdName) {
64
+ case 'solidctl':
65
+ if (packageName === '@solidxai/solidctl') {
66
+ console.log(`📦 Release project resolved: solidctl (${packageName})`);
67
+ return { type: 'solidctl', cwdName, packageName, versionSourcePath: path_1.default.join(process.cwd(), 'package.json') };
68
+ }
69
+ break;
70
+ case 'solid-core-module':
71
+ if (packageName === '@solidxai/core') {
72
+ console.log(`📦 Release project resolved: solid-core-module (${packageName})`);
73
+ return { type: 'solid-core-module', cwdName, packageName, versionSourcePath: path_1.default.join(process.cwd(), 'package.json') };
74
+ }
75
+ break;
76
+ case 'solid-core-ui':
77
+ if (packageName === '@solidxai/core-ui') {
78
+ console.log(`📦 Release project resolved: solid-core-ui (${packageName})`);
79
+ return { type: 'solid-core-ui', cwdName, packageName, versionSourcePath: path_1.default.join(process.cwd(), 'package.json') };
80
+ }
81
+ break;
82
+ case 'solid-library-management':
83
+ if (solidApiPackageName === '@library-management/solid-api') {
84
+ console.log(`📦 Release project resolved: solid-library-management (${solidApiPackageName})`);
85
+ return {
86
+ type: 'solid-library-management',
87
+ cwdName,
88
+ packageName: solidApiPackageName,
89
+ versionSourcePath: solidApiPackageJsonPath,
90
+ };
91
+ }
92
+ break;
93
+ }
94
+ console.error(`❌ Could not resolve release project from folder "${cwdName}" and package name "${packageName || solidApiPackageName || 'unknown'}".`);
95
+ console.error(' Supported release folders are solidctl, solid-core-module, solid-core-ui, and solid-library-management.');
96
+ process.exit(1);
97
+ }
37
98
  function getCurrentBranch() {
38
99
  return (0, child_process_1.execSync)('git rev-parse --abbrev-ref HEAD', { encoding: 'utf-8' }).trim();
39
100
  }
101
+ function getRequiredBranch(preid, mainBranch, devBranch) {
102
+ if (preid === 'alpha') {
103
+ return 'predev';
104
+ }
105
+ if (preid) {
106
+ return devBranch;
107
+ }
108
+ return mainBranch;
109
+ }
40
110
  function exec(cmd, dryRun) {
41
111
  if (dryRun) {
42
112
  console.log(`[dry-run] ${cmd}`);
@@ -45,6 +115,289 @@ function exec(cmd, dryRun) {
45
115
  (0, child_process_1.execSync)(cmd, { stdio: 'inherit' });
46
116
  return '';
47
117
  }
118
+ function getReleaseOptions(options) {
119
+ const config = loadConfig();
120
+ return {
121
+ mainBranch: options.mainBranch || config.mainBranch,
122
+ devBranch: options.devBranch || config.devBranch,
123
+ reverseMerge: options.merge !== false && config.reverseMerge,
124
+ dryRun: options.dryRun || false,
125
+ force: options.force || false,
126
+ preid: options.preid,
127
+ isPrerelease: !!options.preid,
128
+ };
129
+ }
130
+ function validateReleaseBranch(preid, mainBranch, devBranch, force) {
131
+ const currentBranch = getCurrentBranch();
132
+ const requiredBranch = preid ? getRequiredBranch(preid, mainBranch, devBranch) : mainBranch;
133
+ if (currentBranch !== requiredBranch) {
134
+ if (force) {
135
+ console.log(`⚠️ Not on ${requiredBranch} branch (on ${currentBranch}), but --force flag set. Continuing...`);
136
+ return currentBranch;
137
+ }
138
+ if (preid === 'alpha') {
139
+ console.error(`❌ Must be on predev branch to publish alpha pre-releases. Currently on: ${currentBranch}`);
140
+ }
141
+ else if (preid) {
142
+ console.error(`❌ Must be on ${devBranch} branch to publish ${preid} pre-releases. Currently on: ${currentBranch}`);
143
+ }
144
+ else {
145
+ console.error(`❌ Must be on ${mainBranch} branch to publish stable releases. Currently on: ${currentBranch}`);
146
+ }
147
+ console.error(' Use --force to override this check.');
148
+ process.exit(1);
149
+ }
150
+ return currentBranch;
151
+ }
152
+ function getVersionCommand(versionType, preid) {
153
+ if (preid) {
154
+ if (versionType === 'patch' || versionType === 'prerelease') {
155
+ return `npm version prerelease --preid=${preid}`;
156
+ }
157
+ if (versionType === 'preminor' || versionType === 'minor') {
158
+ return `npm version preminor --preid=${preid}`;
159
+ }
160
+ if (versionType === 'premajor' || versionType === 'major') {
161
+ return `npm version premajor --preid=${preid}`;
162
+ }
163
+ return `npm version prerelease --preid=${preid}`;
164
+ }
165
+ return `npm version ${versionType}`;
166
+ }
167
+ function parseVersion(version) {
168
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-]+)\.(\d+))?$/);
169
+ if (!match) {
170
+ throw new Error(`Unsupported version format: ${version}`);
171
+ }
172
+ return {
173
+ major: Number(match[1]),
174
+ minor: Number(match[2]),
175
+ patch: Number(match[3]),
176
+ prereleaseId: match[4],
177
+ prereleaseNumber: match[5] === undefined ? undefined : Number(match[5]),
178
+ };
179
+ }
180
+ function formatVersion(parsed) {
181
+ const base = `${parsed.major}.${parsed.minor}.${parsed.patch}`;
182
+ if (parsed.prereleaseId === undefined || parsed.prereleaseNumber === undefined) {
183
+ return base;
184
+ }
185
+ return `${base}-${parsed.prereleaseId}.${parsed.prereleaseNumber}`;
186
+ }
187
+ function planNextVersion(currentVersion, versionType, preid) {
188
+ const parsed = parseVersion(currentVersion);
189
+ if (!preid) {
190
+ if (versionType === 'minor') {
191
+ return formatVersion({ major: parsed.major, minor: parsed.minor + 1, patch: 0 });
192
+ }
193
+ if (versionType === 'major') {
194
+ return formatVersion({ major: parsed.major + 1, minor: 0, patch: 0 });
195
+ }
196
+ return formatVersion({ major: parsed.major, minor: parsed.minor, patch: parsed.patch + 1 });
197
+ }
198
+ if (versionType === 'minor' || versionType === 'preminor') {
199
+ return formatVersion({
200
+ major: parsed.major,
201
+ minor: parsed.minor + 1,
202
+ patch: 0,
203
+ prereleaseId: preid,
204
+ prereleaseNumber: 0,
205
+ });
206
+ }
207
+ if (versionType === 'major' || versionType === 'premajor') {
208
+ return formatVersion({
209
+ major: parsed.major + 1,
210
+ minor: 0,
211
+ patch: 0,
212
+ prereleaseId: preid,
213
+ prereleaseNumber: 0,
214
+ });
215
+ }
216
+ if (parsed.prereleaseId) {
217
+ return formatVersion({
218
+ major: parsed.major,
219
+ minor: parsed.minor,
220
+ patch: parsed.patch,
221
+ prereleaseId: preid,
222
+ prereleaseNumber: parsed.prereleaseId === preid ? (parsed.prereleaseNumber ?? 0) + 1 : 0,
223
+ });
224
+ }
225
+ return formatVersion({
226
+ major: parsed.major,
227
+ minor: parsed.minor,
228
+ patch: parsed.patch + 1,
229
+ prereleaseId: preid,
230
+ prereleaseNumber: 0,
231
+ });
232
+ }
233
+ function getMovingDockerTag(preid) {
234
+ if (preid) {
235
+ return preid;
236
+ }
237
+ return 'latest';
238
+ }
239
+ function copyDirectoryForDockerBuild(sourcePath, destinationPath) {
240
+ fs_1.default.cpSync(sourcePath, destinationPath, {
241
+ recursive: true,
242
+ filter: (currentPath) => {
243
+ const baseName = path_1.default.basename(currentPath);
244
+ return !['.git', 'node_modules', 'dist', 'coverage', '.DS_Store', 'logs', '.venv', '.pytest_cache'].includes(baseName);
245
+ },
246
+ });
247
+ }
248
+ function createSolidLibraryManagementDockerfile() {
249
+ return `FROM node:20-bookworm
250
+
251
+ ENV DEBIAN_FRONTEND=noninteractive
252
+ WORKDIR /workspace/solid-library-management
253
+
254
+ RUN apt-get update \\
255
+ && apt-get install -y python3 python3-pip python3-venv supervisor \\
256
+ && rm -rf /var/lib/apt/lists/*
257
+
258
+ RUN npm install -g @angular-devkit/schematics-cli
259
+
260
+ COPY solid-library-management /workspace/solid-library-management
261
+ COPY agent /workspace/agent
262
+
263
+ RUN python3 -m venv /opt/agent-venv
264
+ RUN /bin/sh -lc ". /opt/agent-venv/bin/activate && cd /workspace/agent && pip install --no-cache-dir -e /workspace/agent/vendor/mini-swe-agent && pip install --no-cache-dir -e '.[full]'"
265
+ RUN cd /workspace/solid-library-management/solid-api && npm i
266
+ RUN cd /workspace/solid-library-management/solid-ui && npm i
267
+ RUN mkdir -p /opt/prebuilt/agent-ui-dist
268
+ RUN cd /workspace/agent/agent-ui && npm i --legacy-peer-deps && npm run build -- --outDir /opt/prebuilt/agent-ui-dist --emptyOutDir
269
+ `;
270
+ }
271
+ function runSharedReleaseFlow(versionType, options) {
272
+ const { mainBranch, devBranch, reverseMerge, dryRun, force, preid, isPrerelease } = getReleaseOptions(options);
273
+ try {
274
+ const currentBranch = validateReleaseBranch(preid, mainBranch, devBranch, force);
275
+ if (dryRun) {
276
+ console.log('🧪 Dry run mode - no changes will be made\n');
277
+ }
278
+ const versionCmd = getVersionCommand(versionType, preid);
279
+ if (isPrerelease) {
280
+ console.log(`🔄 Updating package version (pre-release: ${preid})...`);
281
+ }
282
+ else {
283
+ console.log(`🔄 Updating package version (${versionType})...`);
284
+ }
285
+ exec(versionCmd, dryRun);
286
+ console.log('📦 Pushing to git (with tags)...');
287
+ exec('git push --follow-tags', dryRun);
288
+ console.log('📦 Publishing package...');
289
+ if (isPrerelease) {
290
+ exec(`npm publish --tag ${preid}`, dryRun);
291
+ }
292
+ else {
293
+ exec('npm publish', dryRun);
294
+ }
295
+ console.log('✅ Published successfully!\n');
296
+ if (!isPrerelease && reverseMerge) {
297
+ console.log(`🔀 Merging ${mainBranch} into ${devBranch}...`);
298
+ exec(`git checkout ${devBranch}`, dryRun);
299
+ exec(`git pull origin ${devBranch}`, dryRun);
300
+ try {
301
+ exec(`git merge ${mainBranch} -m "chore: merge ${mainBranch} after publish"`, dryRun);
302
+ exec(`git push origin ${devBranch}`, dryRun);
303
+ console.log(`✅ Successfully merged ${mainBranch} into ${devBranch}\n`);
304
+ }
305
+ catch {
306
+ console.error('\n⚠️ Merge conflict detected. Please resolve manually.');
307
+ console.error(` You are now on the ${devBranch} branch.`);
308
+ process.exit(1);
309
+ }
310
+ exec(`git checkout ${mainBranch}`, dryRun);
311
+ console.log(`📍 Back on ${mainBranch} branch`);
312
+ }
313
+ else if (!isPrerelease && !reverseMerge) {
314
+ console.log('⏭️ Skipping reverse merge (--no-merge)');
315
+ }
316
+ else {
317
+ console.log(`📍 Staying on ${currentBranch} branch`);
318
+ }
319
+ console.log('\n🎉 All done!');
320
+ }
321
+ catch (error) {
322
+ console.error('❌ Error:', error instanceof Error ? error.message : error);
323
+ process.exit(1);
324
+ }
325
+ }
326
+ function runSolidLibraryManagementReleaseFlow(versionType, options, project) {
327
+ const { mainBranch, devBranch, dryRun, force, preid, isPrerelease } = getReleaseOptions(options);
328
+ const solidApiPackageJsonPath = project.versionSourcePath || path_1.default.join(process.cwd(), 'solid-api', 'package.json');
329
+ const solidApiPackageJson = readRequiredPackageJson(solidApiPackageJsonPath);
330
+ const currentVersion = solidApiPackageJson.version;
331
+ const agentRepoPath = process.env.SOLIDX_AI_AGENT_PATH;
332
+ const imageRepository = 'solidxaiorg/solid-library-management-sandbox-base-image';
333
+ if (!currentVersion) {
334
+ console.error(`❌ solid-api package.json is missing a version at ${solidApiPackageJsonPath}`);
335
+ process.exit(1);
336
+ }
337
+ if (!agentRepoPath) {
338
+ console.error('❌ SOLIDX_AI_AGENT_PATH is not set. This release flow needs the local agent checkout.');
339
+ process.exit(1);
340
+ }
341
+ if (!fs_1.default.existsSync(agentRepoPath)) {
342
+ console.error(`❌ SOLIDX_AI_AGENT_PATH does not exist: ${agentRepoPath}`);
343
+ process.exit(1);
344
+ }
345
+ const currentBranch = validateReleaseBranch(preid, mainBranch, devBranch, force);
346
+ const plannedVersion = planNextVersion(currentVersion, versionType, preid);
347
+ const movingDockerTag = getMovingDockerTag(preid);
348
+ const versionCmd = getVersionCommand(versionType, preid);
349
+ const buildContextRoot = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'solid-library-management-release-'));
350
+ const dockerfilePath = path_1.default.join(buildContextRoot, 'Dockerfile');
351
+ const releaseProjectCopyPath = path_1.default.join(buildContextRoot, 'solid-library-management');
352
+ const agentCopyPath = path_1.default.join(buildContextRoot, 'agent');
353
+ const versionImageTag = `${imageRepository}:${plannedVersion}`;
354
+ const movingImageTag = `${imageRepository}:${movingDockerTag}`;
355
+ try {
356
+ console.log(`🐳 Preparing solid-library-management sandbox base image release (${plannedVersion})...`);
357
+ console.log(`📦 Docker image repository: ${imageRepository}`);
358
+ console.log(`📦 Docker base image: node:20-bookworm`);
359
+ console.log(`📦 Docker tags to publish: ${plannedVersion}, ${movingDockerTag}`);
360
+ console.log(`📦 Agent source path: ${agentRepoPath}`);
361
+ if (dryRun) {
362
+ console.log('🧪 Dry run mode - no changes will be made\n');
363
+ }
364
+ console.log(`🔄 Updating solid-api version (${isPrerelease ? `pre-release: ${preid}` : versionType})...`);
365
+ exec(`cd solid-api && ${versionCmd}`, dryRun);
366
+ if (!dryRun) {
367
+ const actualVersion = readRequiredPackageJson(solidApiPackageJsonPath).version;
368
+ if (!actualVersion) {
369
+ throw new Error('Failed to determine solid-api version after npm version.');
370
+ }
371
+ if (actualVersion !== plannedVersion) {
372
+ throw new Error(`Expected solid-api version ${plannedVersion}, but found ${actualVersion} after npm version.`);
373
+ }
374
+ }
375
+ console.log('📦 Creating Docker build context...');
376
+ if (!dryRun) {
377
+ copyDirectoryForDockerBuild(process.cwd(), releaseProjectCopyPath);
378
+ copyDirectoryForDockerBuild(agentRepoPath, agentCopyPath);
379
+ fs_1.default.writeFileSync(dockerfilePath, createSolidLibraryManagementDockerfile(), 'utf-8');
380
+ }
381
+ console.log('🐳 Building sandbox base image...');
382
+ exec(`docker build --progress=plain -t ${versionImageTag} -t ${movingImageTag} ${buildContextRoot}`, dryRun);
383
+ console.log('📦 Pushing git commit and tags...');
384
+ exec('git push --follow-tags', dryRun);
385
+ console.log('📦 Publishing Docker image...');
386
+ exec(`docker push ${versionImageTag}`, dryRun);
387
+ exec(`docker push ${movingImageTag}`, dryRun);
388
+ console.log(`📍 Staying on ${currentBranch} branch`);
389
+ console.log('\n🎉 Docker image release completed!');
390
+ }
391
+ catch (error) {
392
+ console.error('❌ Error:', error instanceof Error ? error.message : error);
393
+ process.exit(1);
394
+ }
395
+ finally {
396
+ if (!dryRun) {
397
+ fs_1.default.rmSync(buildContextRoot, { recursive: true, force: true });
398
+ }
399
+ }
400
+ }
48
401
  function registerReleaseCommand(program) {
49
402
  program
50
403
  .command('release [version-type]')
@@ -62,12 +415,12 @@ Examples:
62
415
  $ solidctl release minor # minor: 0.0.12 → 0.1.0
63
416
  $ solidctl release major # major: 0.0.12 → 1.0.0
64
417
 
65
- Pre-releases (from dev branch):
66
- $ solidctl release --preid=alpha # 0.0.12 → 0.0.13-alpha.0
418
+ Pre-releases:
419
+ $ solidctl release --preid=alpha # from predev: 0.0.12 → 0.0.13-alpha.0
67
420
  $ solidctl release --preid=alpha # 0.0.13-alpha.0 → 0.0.13-alpha.1
68
- $ solidctl release minor --preid=alpha # 0.0.12 → 0.1.0-alpha.0
69
- $ solidctl release --preid=beta # 0.0.13-alpha.1 → 0.0.13-beta.0
70
- $ solidctl release --preid=rc # 0.0.13-beta.1 → 0.0.13-rc.0
421
+ $ solidctl release minor --preid=alpha # from predev: 0.0.12 → 0.1.0-alpha.0
422
+ $ solidctl release --preid=beta # from dev: 0.0.13-alpha.1 → 0.0.13-beta.0
423
+ $ solidctl release --preid=rc # from dev: 0.0.13-beta.1 → 0.0.13-rc.0
71
424
 
72
425
  Options:
73
426
  $ solidctl release --dry-run # Preview without making changes
@@ -87,94 +440,20 @@ Configuration:
87
440
  }
88
441
  `)
89
442
  .action((versionType = 'patch', options) => {
90
- const config = loadConfig();
91
- const mainBranch = options.mainBranch || config.mainBranch;
92
- const devBranch = options.devBranch || config.devBranch;
93
- const reverseMerge = options.merge !== false && config.reverseMerge;
94
- const dryRun = options.dryRun || false;
95
- const force = options.force || false;
96
- const preid = options.preid;
97
- const isPrerelease = !!preid;
98
- try {
99
- const currentBranch = getCurrentBranch();
100
- const requiredBranch = isPrerelease ? devBranch : mainBranch;
101
- if (currentBranch !== requiredBranch) {
102
- if (force) {
103
- console.log(`⚠️ Not on ${requiredBranch} branch (on ${currentBranch}), but --force flag set. Continuing...`);
104
- }
105
- else {
106
- if (isPrerelease) {
107
- console.error(`❌ Must be on ${devBranch} branch to publish pre-releases. Currently on: ${currentBranch}`);
108
- }
109
- else {
110
- console.error(`❌ Must be on ${mainBranch} branch to publish stable releases. Currently on: ${currentBranch}`);
111
- }
112
- console.error(` Use --force to override this check.`);
113
- process.exit(1);
114
- }
115
- }
116
- if (dryRun) {
117
- console.log('🧪 Dry run mode - no changes will be made\n');
118
- }
119
- let versionCmd;
120
- if (isPrerelease) {
121
- if (versionType === 'patch' || versionType === 'prerelease') {
122
- versionCmd = `npm version prerelease --preid=${preid}`;
123
- }
124
- else if (versionType === 'preminor' || versionType === 'minor') {
125
- versionCmd = `npm version preminor --preid=${preid}`;
126
- }
127
- else if (versionType === 'premajor' || versionType === 'major') {
128
- versionCmd = `npm version premajor --preid=${preid}`;
129
- }
130
- else {
131
- versionCmd = `npm version prerelease --preid=${preid}`;
132
- }
133
- console.log(`🔄 Updating package version (pre-release: ${preid})...`);
134
- }
135
- else {
136
- versionCmd = `npm version ${versionType}`;
137
- console.log(`🔄 Updating package version (${versionType})...`);
138
- }
139
- exec(versionCmd, dryRun);
140
- console.log('📦 Pushing to git (with tags)...');
141
- exec('git push --follow-tags', dryRun);
142
- console.log('📦 Publishing package...');
143
- if (isPrerelease) {
144
- exec(`npm publish --tag ${preid}`, dryRun);
145
- }
146
- else {
147
- exec('npm publish', dryRun);
148
- }
149
- console.log('✅ Published successfully!\n');
150
- if (!isPrerelease && reverseMerge) {
151
- console.log(`🔀 Merging ${mainBranch} into ${devBranch}...`);
152
- exec(`git checkout ${devBranch}`, dryRun);
153
- exec(`git pull origin ${devBranch}`, dryRun);
154
- try {
155
- exec(`git merge ${mainBranch} -m "chore: merge ${mainBranch} after publish"`, dryRun);
156
- exec(`git push origin ${devBranch}`, dryRun);
157
- console.log(`✅ Successfully merged ${mainBranch} into ${devBranch}\n`);
158
- }
159
- catch {
160
- console.error(`\n⚠️ Merge conflict detected. Please resolve manually.`);
161
- console.error(` You are now on the ${devBranch} branch.`);
162
- process.exit(1);
163
- }
164
- exec(`git checkout ${mainBranch}`, dryRun);
165
- console.log(`📍 Back on ${mainBranch} branch`);
166
- }
167
- else if (!isPrerelease && !reverseMerge) {
168
- console.log(`⏭️ Skipping reverse merge (--no-merge)`);
169
- }
170
- else {
171
- console.log(`📍 Staying on ${currentBranch} branch`);
172
- }
173
- console.log('\n🎉 All done!');
174
- }
175
- catch (error) {
176
- console.error('❌ Error:', error instanceof Error ? error.message : error);
177
- process.exit(1);
443
+ const project = resolveReleaseProject();
444
+ switch (project.type) {
445
+ case 'solidctl':
446
+ runSharedReleaseFlow(versionType, options);
447
+ break;
448
+ case 'solid-core-module':
449
+ runSharedReleaseFlow(versionType, options);
450
+ break;
451
+ case 'solid-core-ui':
452
+ runSharedReleaseFlow(versionType, options);
453
+ break;
454
+ case 'solid-library-management':
455
+ runSolidLibraryManagementReleaseFlow(versionType, options, project);
456
+ break;
178
457
  }
179
458
  });
180
459
  }
@@ -1 +1 @@
1
- {"version":3,"file":"release.command.js","sourceRoot":"","sources":["../../src/commands/release.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release.command.js","sourceRoot":"","sources":["../../src/commands/release.command.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.registerStartCommand = registerStartCommand;
7
7
  const child_process_1 = require("child_process");
8
8
  const chalk_1 = __importDefault(require("chalk"));
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
10
  const path_1 = __importDefault(require("path"));
10
11
  const readline_1 = __importDefault(require("readline"));
11
12
  const helper_1 = require("../helper");
12
13
  class StartSupervisor {
13
14
  projectRoot;
15
+ apiPort;
16
+ uiPort;
14
17
  serviceConfigs;
15
18
  serviceStates;
16
19
  isInteractive;
@@ -22,6 +25,8 @@ class StartSupervisor {
22
25
  this.projectRoot = projectRoot;
23
26
  this.isInteractive = Boolean(process.stdout.isTTY && process.stdin.isTTY && !options.plain);
24
27
  this.npmCommand = process.platform === 'win32' ? 'npm.cmd' : 'npm';
28
+ this.apiPort = this.resolveApiPort();
29
+ this.uiPort = this.resolveUiPort();
25
30
  this.serviceConfigs = {
26
31
  api: {
27
32
  cwd: path_1.default.join(projectRoot, 'solid-api'),
@@ -146,13 +151,9 @@ class StartSupervisor {
146
151
  return;
147
152
  }
148
153
  const footer = [
149
- chalk_1.default.bold('Controls'),
150
- 'q quit',
151
- 'c clear',
152
- 'r restart both',
153
- 'a restart API',
154
- 'u restart UI',
155
- `project:${path_1.default.basename(this.projectRoot)}`,
154
+ `${chalk_1.default.bold('Controls')}: q quit & c clear`,
155
+ `${chalk_1.default.bold('Services')}: API (a restart, d open docs, :${this.apiPort}) UI (u restart, o open, :${this.uiPort})`,
156
+ `${chalk_1.default.bold('Project')}: ${path_1.default.basename(this.projectRoot)}`,
156
157
  ].join(chalk_1.default.dim(' | '));
157
158
  const terminalWidth = process.stdout.columns || 80;
158
159
  const renderedFooter = chalk_1.default.inverse(` ${footer} `);
@@ -251,6 +252,12 @@ class StartSupervisor {
251
252
  console.clear();
252
253
  this.renderFooter();
253
254
  break;
255
+ case 'd':
256
+ this.openUrlInBrowser(this.getApiDocsUrl(), 'API docs');
257
+ break;
258
+ case 'o':
259
+ this.openUrlInBrowser(this.getUiUrl(), 'UI');
260
+ break;
254
261
  case 'q':
255
262
  this.shutdown(0);
256
263
  break;
@@ -327,6 +334,65 @@ class StartSupervisor {
327
334
  }
328
335
  process.stdout.write('\n');
329
336
  }
337
+ resolveApiPort() {
338
+ const envPath = path_1.default.join(this.serviceConfigs?.api?.cwd ?? path_1.default.join(this.projectRoot, 'solid-api'), '.env');
339
+ return this.readEnvValue(envPath, 'PORT') ?? '3000';
340
+ }
341
+ resolveUiPort() {
342
+ const packageJsonPath = path_1.default.join(this.serviceConfigs?.ui?.cwd ?? path_1.default.join(this.projectRoot, 'solid-ui'), 'package.json');
343
+ try {
344
+ const packageJson = fs_extra_1.default.readJsonSync(packageJsonPath);
345
+ const devScript = packageJson.scripts?.dev ?? '';
346
+ const portMatch = /(?:^|\s)--port\s+(\d{1,5})(?:\s|$)/.exec(devScript);
347
+ if (portMatch) {
348
+ return portMatch[1];
349
+ }
350
+ }
351
+ catch {
352
+ }
353
+ return '5173';
354
+ }
355
+ readEnvValue(filePath, key) {
356
+ try {
357
+ if (!fs_extra_1.default.existsSync(filePath)) {
358
+ return null;
359
+ }
360
+ const content = fs_extra_1.default.readFileSync(filePath, 'utf8');
361
+ const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
362
+ const match = content.match(new RegExp(`^\\s*${escapedKey}\\s*=\\s*(.+?)\\s*$`, 'm'));
363
+ return match?.[1]?.replace(/^['"]|['"]$/g, '') ?? null;
364
+ }
365
+ catch {
366
+ return null;
367
+ }
368
+ }
369
+ getApiDocsUrl() {
370
+ return `http://localhost:${this.apiPort}/docs`;
371
+ }
372
+ getUiUrl() {
373
+ return `http://localhost:${this.uiPort}`;
374
+ }
375
+ openUrlInBrowser(url, label) {
376
+ const openCommand = process.platform === 'darwin'
377
+ ? 'open'
378
+ : process.platform === 'win32'
379
+ ? 'cmd'
380
+ : 'xdg-open';
381
+ const openArgs = process.platform === 'darwin'
382
+ ? [url]
383
+ : process.platform === 'win32'
384
+ ? ['/c', 'start', '', url]
385
+ : [url];
386
+ const child = (0, child_process_1.spawn)(openCommand, openArgs, {
387
+ detached: true,
388
+ stdio: 'ignore',
389
+ });
390
+ child.on('error', (error) => {
391
+ this.printStatus(`Failed to open ${label}: ${error.message}`);
392
+ });
393
+ child.unref();
394
+ this.printStatus(`Opening ${label} at ${url}`);
395
+ }
330
396
  }
331
397
  function registerStartCommand(program) {
332
398
  program