Skip to content

Migrate channel spec to ChannelModule subclass (first proof of concept)#7294

Draft
isaacroldan wants to merge 1 commit into04-14-wire_loader_to_support_moduleregistry_alongside_extensionspecificationfrom
04-14-migrate_channel_spec_to_channelmodule_subclass_first_proof_of_concept_
Draft

Migrate channel spec to ChannelModule subclass (first proof of concept)#7294
isaacroldan wants to merge 1 commit into04-14-wire_loader_to_support_moduleregistry_alongside_extensionspecificationfrom
04-14-migrate_channel_spec_to_channelmodule_subclass_first_proof_of_concept_

Conversation

@isaacroldan
Copy link
Copy Markdown
Contributor

WHY are these changes introduced?

Fixes #0000

WHAT is this pull request doing?

How to test your changes?

Post-release steps

Checklist

  • I've considered possible cross-platform impacts (Mac, Linux, Windows)
  • I've considered possible documentation changes
  • I've considered analytics changes to measure impact
  • The change is user-facing, so I've added a changelog entry with pnpm changeset add

Copy link
Copy Markdown
Contributor Author

@github-actions
Copy link
Copy Markdown
Contributor

Differences in type declarations

We detected differences in the type declarations generated by Typescript for this branch compared to the baseline ('main' branch). Please, review them to ensure they are backward-compatible. Here are some important things to keep in mind:

  • Some seemingly private modules might be re-exported through public modules.
  • If the branch is behind main you might see odd diffs, rebase main into this branch.

New type declarations

We found no new type declarations in this PR

Existing type declarations

packages/cli-kit/dist/public/node/node-package-manager.d.ts
@@ -68,14 +68,6 @@ export declare function packageManagerFromUserAgent(env?: NodeJS.ProcessEnv): Pa
  * @returns The dependency manager
  */
 export declare function getPackageManager(fromDirectory: string): Promise<PackageManager>;
-/**
- * Builds the command and argv needed to execute a local binary using the package manager
- * detected from the provided directory or its ancestors.
- */
-export declare function packageManagerBinaryCommandForDirectory(fromDirectory: string, binary: string, ...binaryArgs: string[]): Promise<{
-    command: string;
-    args: string[];
-}>;
 interface InstallNPMDependenciesRecursivelyOptions {
     /**
      * The dependency manager to use to install the dependencies.

Phase 3b: First spec migrated to the new ExtensionInstance subclass pattern.

- Create ChannelModule extending ExtensionInstance directly with:
  - copy_files build config
  - include_assets client steps
  - contract-based deploy config
- Create channelDescriptor as a ModuleDescriptor
- Register descriptor in loadModuleRegistry()
- Remove channel from legacy spec list
- Wire moduleRegistry into loadAppFromContext pipeline

Channel extensions are now created via descriptor.createModule() instead
of new SpecificationBackedExtension() with a factory-generated spec.
513 model tests pass.
@isaacroldan isaacroldan force-pushed the 04-14-wire_loader_to_support_moduleregistry_alongside_extensionspecification branch from 8c23aab to f51e497 Compare April 14, 2026 16:36
@isaacroldan isaacroldan force-pushed the 04-14-migrate_channel_spec_to_channelmodule_subclass_first_proof_of_concept_ branch from 27ef3ed to 10eac4a Compare April 14, 2026 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant