Feat#8
Merged
Merged
Conversation
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Added step to update npm to the latest version before building.
Agent-Logs-Url: https://github.com/Armadillidiid/cmdly/sessions/947cf820-7da9-42b1-9e91-a7059500f90a Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Armadillidiid <86387828+Armadillidiid@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR cuts over the CLI packaging and release pipeline from an @vercel/ncc-bundled JS entry to Node.js SEA (Single Executable Application) binaries, updates CI to build/upload those binaries, and adjusts a few runtime/service wiring details (Effect layer ordering + JSON parsing/encoding).
Changes:
- Replace the build pipeline with Node SEA (new build/verify scripts, updated
package.json, removeinject-constant.js). - Update GitHub Actions workflows to version/tag and build per-target SEA binaries with checksums for GitHub Releases.
- Refactor JSON read/write to use
Schema.parseJsonand adjust Effect layer provisioning order in commands.
Reviewed changes
Copilot reviewed 17 out of 19 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
src/utils/files.ts |
Switch JSON parse/stringify to Schema.parseJson and wrap errors in FileSystemError. |
src/services/credentials.ts |
Adjust credential error handling and add an Effect “expect leaking” annotation on the service. |
src/services/ai.ts |
Adjust missing-API-key error handling. |
src/constants.ts |
Default NAME fallback changed to "cmdly". |
src/commands/suggest.ts |
Reorder/provide base layers (NodeFileSystem, NodePath) before dependent services. |
src/commands/explain.ts |
Same layer ordering/provisioning adjustment as suggest. |
src/commands/configure.ts |
Same layer ordering/provisioning adjustment; tweak credentials load fallback. |
scripts/verify-sea.mjs |
New script to smoke-test SEA binaries (--help, --version). |
scripts/build-sea.mjs |
New SEA build script using esbuild + node --build-sea. |
scripts/inject-constant.js |
Removed (no longer mutating built output post-build). |
pnpm-workspace.yaml |
Add allowBuilds configuration for native/build dependencies. |
pnpm-lock.yaml |
Lockfile updates for dependency/tooling changes (e.g., add esbuild, remove @vercel/ncc). |
package.json |
Update Node/pnpm requirements, replace build scripts with SEA build, remove npm bin/files, swap @vercel/ncc for esbuild. |
.opencode/plans/1778415295647-swift-island.md |
Add SEA cutover plan doc. |
.gitignore |
Ignore .sea/ working directory. |
.github/workflows/release.yml |
Split versioning from binary builds; upload SEA artifacts to GitHub Releases. |
.github/workflows/check.yml |
Update checkout action version used by CI jobs. |
.github/actions/setup/action.yml |
Update Node version used in CI setup to 26. |
.changeset/brave-lions-jump.md |
Changeset describing SEA cutover and layer ordering fix. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+67
to
+70
| return yield* new CredentialsError({ | ||
| message: | ||
| "No credentials found. Please run 'configure' command to set up your credentials.", | ||
| }); |
Comment on lines
83
to
+87
| const credential = credentials[provider]; | ||
| if (!credential) { | ||
| return yield* Effect.fail( | ||
| new CredentialsError({ | ||
| message: `No credentials found for provider: ${provider}. Please run 'configure' command.`, | ||
| }), | ||
| ); | ||
| return yield* new CredentialsError({ | ||
| message: `No credentials found for provider: ${provider}. Please run 'configure' command.`, | ||
| }); |
Comment on lines
+27
to
+29
| return yield* new AiServiceError({ | ||
| message: `No API key found for provider: ${providerName}`, | ||
| }); |
Comment on lines
90
to
+94
| const fs = yield* FileSystem.FileSystem; | ||
| yield* fs.writeFileString(filePath, JSON.stringify(data, null, 2)); | ||
| const json = yield* Schema.encode(Schema.parseJson())(data).pipe( | ||
| Effect.mapError( | ||
| (error) => | ||
| new FileSystemError({ |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Added bin and files fields to package.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.