Conversation
…mponent and plugin management
… and improving plugin registration logic
…unctions and enhancing component validation
…t file types (.yaml, .env) and improving save functionality with secret value handling
…tionalities, along with improved error handling and UI updates for plugin operations
…emission capabilities
…component scanning
… and enhance metadata management
…move, and info commands
…ject API integration
…nd improving wiring functionality
…ement_dashboard components
added 3 commits
May 1, 2026 09:14
- Implemented a feature in the `RunCommand` to regenerate imports before component initialization. - Added command-line options `--no-generate-imports` and `--generate-imports` to control the regeneration behavior. - Introduced a new module `imports_writer.py` to handle the creation of symlinks and shims for IDE compatibility. - Enhanced the `import_map.py` with a new function `to_module_name` to sanitize module names for Python compatibility. - Updated tests for the `RunCommand` to verify the new import regeneration behavior. - Created tests for the new imports writer functionality, including symlink and shim creation. - Added tests for the `to_module_name` function to ensure proper sanitization of module names.
- Introduced `alias` attribute in `ImportTarget` to carry user-declared identifiers from `ioc.yaml`, allowing stub generation to publish under `awioc.imports`. - Added `parse_py_ref` function to split Python reference strings into module and attribute components. - Updated `_entry_from_ref` to utilize the new `alias` for libraries and resources, ensuring correct mapping in the import map. - Implemented `write_stubs` function to create supplemental typings for `awioc.imports`, including handling for path-based and `py:` resources. - Enhanced `merge_pyright_config` to include `stubPath` for better type resolution in Pyright. - Added tests for alias handling in import map and stubs generation, ensuring correct behavior for libraries and resources. - Introduced `compile_resource` to handle resource specifications with constructor kwargs for `py:` references. - Updated existing tests to cover new functionality and ensure compatibility with the changes.
- ioc.yaml resource entries can now be a list of refs. compile_resource compiles each element and returns a Python list registered as a single resource, with synthetic metadata held in the side-table since lists reject __setattr__. - Stub writer aggregates list-resources into `<name> = list[T]` (or `list[Union[T1, T2]]` for mixed element types), resolving each element's class via py: parsing or the adjacent .awioc/manifest.yaml. - Resource stub aliases now use the manifest's registered component name rather than the file basename so the static symbol matches the ResourceHandle key returned at runtime. - DI wiring/config registration reads metadata via the side-table and recurses into list wrappers so nested elements still get their config registered and their modules wired. - Adds samples/cli_terminal: a programmable CLI building block other components can extend at runtime via the cli_terminal resource. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
🚀 Highlights
awioc) with extensible subcommands.✨ New Features
Management Dashboard
New Management Dashboard application sample:
Added:
Auto-generated
manifest.yamlsupport for dashboard componentsHTTP Server Sample Enhancements
.awioc/manifest.yaml)CLI Framework (AWIOC CLI)
New extensible command architecture
Implemented commands:
run– start applicationinit– initialize a projectadd– add plugins or librariesremove– remove plugins or librariesinfo– show project informationconfig– manage configurationpot– manage shared component directoriesgenerate– generate manifestsUnified command context and command registry
awioc --helpandawioc <command> --helpsupportawioc --versionsupport🧩 Component & Plugin System
Added directory-based plugins via
.awioc/manifest.yamlSupport for loading multiple components from a single plugin directory
Improved plugin lifecycle management:
Enhanced component metadata and internals inspection
⚙️ Configuration & Bootstrap Changes
Refactored IOC bootstrap process:
Added:
.envhandlingImproved logging setup and configuration precedence
🧰 API Changes & Additions
Expanded public API exports:
Improved
initialize_components,shutdown_components, andwait_for_componentsAdded project-level helpers:
AWIOCProject🧹 Improvements & Refactors
Large internal refactor across:
bootstrapapi__main__.py)Improved error handling and logging clarity
Cleaner separation between container, config, and lifecycle responsibilities
README and sample updates
🐛 Fixes
🔧 Maintenance
Updated
.gitignoreVersion bumped in package metadata:
0.1.0→2.0.0Added missing
__init__.pyexportsImproved typing and documentation across new modules