feat: Key-value names for files - #723
Open
adamspofford-dfinity wants to merge 3 commits into
Open
Conversation
adamspofford-dfinity
force-pushed
the
spofford/named-files
branch
from
August 20, 2026 16:38
44df31d to
cd4ee1c
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Adds semantic keys to plugin file and directory inputs while preserving plain-list manifest support.
Changes:
- Adds keyed map forms for
dirsandfiles. - Propagates keys through bundling, runtime, and WIT inputs.
- Updates schemas, documentation, examples, and tests.
Reviewed changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
Cargo.toml |
Enables IndexMap schema support. |
Cargo.lock |
Records the schema dependency update. |
crates/icp/src/manifest/adapter/plugin.rs |
Parses and preserves named paths. |
crates/icp/src/manifest/canister.rs |
Boxes plugin steps and updates fixtures. |
crates/icp/src/canister/sync/plugin.rs |
Converts manifest paths into keyed runtime inputs. |
crates/icp-sync-plugin/sync-plugin.wit |
Adds keys and structured directory inputs. |
crates/icp-sync-plugin/src/runtime.rs |
Passes keys across the component boundary. |
crates/icp-sync-plugin/src/lib.rs |
Exports the keyed path type. |
crates/icp-sync-plugin/DESIGN.md |
Documents keyed-path architecture. |
crates/icp-sync-plugin/tests/fixtures/test-plugin/src/lib.rs |
Adds key propagation behavior. |
crates/icp-cli/src/operations/bundle.rs |
Preserves keys while relocating paths. |
crates/icp-cli/tests/sync_tests.rs |
Tests map-form directories end to end. |
crates/icp-cli/tests/bundle_tests.rs |
Tests keyed paths during bundling. |
examples/icp-sync-plugin/plugin/src/lib.rs |
Adapts the example to structured directories. |
docs/schemas/icp-yaml-schema.json |
Describes named paths in project manifests. |
docs/schemas/canister-yaml-schema.json |
Describes named paths in canister manifests. |
docs/reference/configuration.md |
Documents map-form configuration. |
docs/guides/writing-sync-plugins.md |
Updates plugin author guidance. |
docs/concepts/sync-plugins.md |
Explains key semantics in plugin inputs. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
adamspofford-dfinity
force-pushed
the
spofford/named-files
branch
from
August 20, 2026 17:15
cd4ee1c to
37cf959
Compare
adamspofford-dfinity
force-pushed
the
spofford/named-files
branch
from
August 20, 2026 17:42
37cf959 to
86b8cff
Compare
adamspofford-dfinity
force-pushed
the
spofford/named-files
branch
from
August 20, 2026 18:40
86b8cff to
9719c96
Compare
adamspofford-dfinity
force-pushed
the
spofford/named-files
branch
from
August 21, 2026 17:32
9719c96 to
bdad702
Compare
adamspofford-dfinity
force-pushed
the
spofford/named-files
branch
from
August 21, 2026 21:14
bdad702 to
013708c
Compare
adamspofford-dfinity
force-pushed
the
spofford/named-files
branch
from
August 24, 2026 16:43
013708c to
5ac6823
Compare
adamspofford-dfinity
marked this pull request as ready for review
August 24, 2026 16:49
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.
Allows plugins to assign semantic meaning to files and directories that are preopened with named fields.
Looks like:
File and directory entries in the wit interface gain a
key: option<string>. When a name contains a list, all the entries will have the same key. The old unstructured list form is valid and results in theoptionbeing unset.Stack created with GitHub Stacks CLI • Give Feedback 💬