refactor: rename aris to aelis (#59)

Rename all references across the codebase: package names,
imports, source IDs, directory names, docs, and configs.

Co-authored-by: Ona <no-reply@ona.com>
This commit is contained in:
2026-03-10 19:19:23 +00:00
committed by GitHub
parent 230116d9f7
commit 863c298bd3
201 changed files with 891 additions and 647 deletions

View File

@@ -6,7 +6,7 @@
## Scope
**`aris-core` only.** Add action support to `FeedSource` and `FeedItem`. No changes to existing fields or methods — purely additive.
**`aelis-core` only.** Add action support to `FeedSource` and `FeedItem`. No changes to existing fields or methods — purely additive.
## Design
@@ -16,7 +16,7 @@ MCP was considered. It doesn't fit because:
- MCP resources don't accept input context (FeedSource needs accumulated context as input)
- MCP has no structured feed items (priority, timestamp, type)
- MCP's isolation model conflicts with ARIS's dependency graph
- MCP's isolation model conflicts with AELIS's dependency graph
- Adding these as MCP extensions would mean the extensions are the entire protocol
The interface is designed to be **protocol-compatible** — a future `RemoteFeedSource` adapter can map each field/method to a JSON-RPC operation without changing the interface:
@@ -35,20 +35,20 @@ No interface changes needed when the transport layer is built.
### Source ID & Action ID Convention
Source IDs use reverse domain notation. Built-in sources use `aris.<name>`. Third parties use their own domain.
Source IDs use reverse domain notation. Built-in sources use `aelis.<name>`. Third parties use their own domain.
Action IDs are descriptive verb-noun pairs in kebab-case, scoped to their source. The globally unique form is `<sourceId>/<actionId>`.
| Source ID | Action IDs |
| --------------- | -------------------------------------------------------------- |
| `aris.location` | `update-location` (migrated from `pushLocation()`) |
| `aris.tfl` | `set-lines-of-interest` (migrated from `setLinesOfInterest()`) |
| `aris.weather` | _(none)_ |
| `aelis.location` | `update-location` (migrated from `pushLocation()`) |
| `aelis.tfl` | `set-lines-of-interest` (migrated from `setLinesOfInterest()`) |
| `aelis.weather` | _(none)_ |
| `com.spotify` | `play-track`, `pause-playback`, `skip-track`, `like-track` |
| `aris.calendar` | `rsvp`, `create-event` |
| `aelis.calendar` | `rsvp`, `create-event` |
| `com.todoist` | `complete-task`, `snooze-task` |
This means existing source packages need their `id` updated (e.g., `"location"``"aris.location"`).
This means existing source packages need their `id` updated (e.g., `"location"``"aelis.location"`).
### New Types
@@ -270,17 +270,17 @@ class SpotifySource implements FeedSource<SpotifyFeedItem> {
## Implementation Steps
1. Create `action.ts` in `aris-core/src` with `ActionDefinition`, `ActionResult`, `ItemAction`
1. Create `action.ts` in `aelis-core/src` with `ActionDefinition`, `ActionResult`, `ItemAction`
2. Add optional `actions` and `executeAction` to `FeedSource` interface in `feed-source.ts`
3. Add optional `actions` field to `FeedItem` interface in `feed.ts`
4. Add `executeAction()` and `listActions()` to `FeedEngine` in `feed-engine.ts`
5. Export new types from `aris-core/index.ts`
5. Export new types from `aelis-core/index.ts`
6. Add tests for `FeedEngine.executeAction()` routing
7. Add tests for `FeedEngine.listActions()` aggregation
8. Add tests for error cases (unknown action, unknown source, source without actions)
9. Update source IDs to reverse-domain format (`"location"``"aris.location"`, etc.) across all source packages
10. Migrate `LocationSource.pushLocation()` → action `update-location` on `aris.location`
11. Migrate `TflSource.setLinesOfInterest()` → action `set-lines-of-interest` on `aris.tfl`
9. Update source IDs to reverse-domain format (`"location"``"aelis.location"`, etc.) across all source packages
10. Migrate `LocationSource.pushLocation()` → action `update-location` on `aelis.location`
11. Migrate `TflSource.setLinesOfInterest()` → action `set-lines-of-interest` on `aelis.tfl`
12. Add `async listActions() { return {} }` and no-op `executeAction()` to sources without actions (WeatherSource, GoogleCalendarSource, AppleCalendarSource)
13. Update any tests or code referencing old source IDs
14. Run all tests to confirm nothing breaks