fix(desktop): bundle runtime packages for Windows#7878
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
ccfcd47 to
46c5e69
Compare
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
- useLiteralKeys on electrobun.config.ts string-keyed copy entries - noPrototypeBuiltins on copy-runtime-node-modules hasOwnProperty calls - organizeImports on release-plugin-policy.test.ts Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Landed on develop via rebase: commits 55b8fe1 (fix(desktop): bundle runtime packages for Windows), c361674 (fix(test): align app-core server expectations), and 7bddb5d (style: biome auto-fix lint nits in PR #7878 merge). Validation:
Thanks @NubsCarson. |
Snapshot of dirty state in the main worktree: - packages/chip/scripts/ai_eda/*: new check_* and convert_* helpers plus updates to bootstrap_ai_eda_stack, fetch_external_asset, package_cuda_training_payload, preflight_ai_eda_backends, check_ai_eda_source_inventory. - packages/os/linux/variants/elizaos-linux/scripts/*: new boot-qemu, check_release_manifest, generate-elizaos-brand-assets, qemu_virt_boot_riscv64, qemu_virt_smoke, static-smoke. - plugins/plugin-coding-tools: new tests for enter/exit-worktree, ls, read, write, run-shell + ls.ts. - plugins/plugin-hearwear, packages/cloud-frontend, packages/agent vitest config, packages/chip docs/Makefile/external/research. Captured to keep the rebase-in-progress reflog clean; will be moved onto its proper branch once the rebase settles. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
plugin-worker-runtime,plugin-remote-manifest, and desktopplugin-agent-orchestrator)remotes/into direct embedded desktop packages so first-party remotes have theirplugin.jsonVerification
node packages/scripts/run-vitest.mjs run --config packages/agent/vitest.config.ts packages/agent/src/runtime/release-plugin-policy.test.tsnode packages/scripts/run-vitest.mjs run --config packages/app-core/vitest.config.ts packages/app-core/scripts/assert-required-bundled-packages.test.ts packages/app-core/platforms/electrobun/src/electrobun-config.test.tsMILADY_ELIZA_SOURCE=localeliza-dist/node_modules/@elizaos/plugin-agent-orchestrator/dist/index.jseliza-dist/node_modules/@elizaos/plugin-worker-runtime/dist/bootstrap.jseliza-dist/node_modules/@elizaos/plugin-remote-manifest/dist/index.jseliza-dist/node_modules/@elizaos/skills/skills/task-agent-eliza-bridge/SKILL.mdremotes/runtime/plugin.json/api/healthreportedready: trueandplugins.failed: 0/chatEcho: hello from final latest packageGreptile Summary
This PR fixes the Windows desktop build by ensuring
plugin-worker-runtime,plugin-remote-manifest, andplugin-agent-orchestratorare built and bundled into the packaged runtime, and copies Electrobunremotes/so first-party remote plugins carry theirplugin.json.BASELINE_BUNDLED_RUNTIME_PACKAGESnow includes the new runtime-support packages for filesystem bundling, but a separateBASELINE_REGISTRY_BUNDLED_PLUGIN_PACKAGESlist keeps them out of the registry "bundled" classification;classifyRegistryPluginReleaseis tightened to require both a static whitelist check and a runtime-availability check before marking a plugin as bundled.shouldPreservePrunedPackageEntrygains explicit rules to retain skill markdown files,googleapisdocs API files,three.jsJSM/fonts examples, and@elizaos/uicomponent docs that are loaded dynamically at runtime.@octokit/restis skipped when bundlinggit-workspace-service's transitive deps, relying on the top-level peer supplied byplugin-agent-orchestratorto avoid deeply-nested Windows-unsafe paths.Confidence Score: 5/5
Safe to merge — all changes are build-tooling and policy metadata with no modifications to runtime logic or data paths.
All changes are confined to the desktop packaging pipeline and release-policy classification. The new preservation rules and entrypoint assertions are well-covered by the added tests, the Windows tar-path fix is correctly scoped to the one package that triggers the problem, and the policy split between bundled-for-filesystem and bundled-for-registry correctly prevents runtime-support packages from being surfaced as user-installable plugins.
No files require special attention.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A[desktop-build.mjs] --> B[Build core + shared + vault] A --> C[Build plugin-remote-manifest] A --> D[Build plugin-agent-orchestrator NEW] A --> E[Build plugin-worker-runtime NEW] A --> F[Build app-core] G[copy-runtime-node-modules] --> H{shouldSkipPackagedDependency?} H -->|git-workspace-service and octokit-rest| I[Skip - use root peer] H -->|other deps| J[selectCopyTargetNodeModules] J -->|solana or ALWAYS_HOISTED| K[Root node_modules] J -->|version matches top-level| K J -->|version mismatch| L[Nested node_modules] M[pruneCopiedPackageDir] --> N{shouldPreservePrunedPackageEntry?} N -->|skills markdown| O[Keep SKILL.md] N -->|googleapis docs api| P[Keep docs API files] N -->|three jsm and fonts| Q[Keep runtime loaders] N -->|elizaos-ui component docs| R[Keep component docs] N -->|other pruned entries| S[Delete] T[assertRequiredBundledPackagesLanded] --> U{package.json exists?} U -->|No| V[FAIL missing package] U -->|Yes baseline package| W{entrypoints exist?} W -->|No| X[FAIL missing runtime entry] W -->|Yes| Y[PASS]Reviews (4): Last reviewed commit: "fix(test): allowlist known service type ..." | Re-trigger Greptile