mirror of
https://github.com/sortedcord/omnia.git
synced 2026-07-22 12:02:49 +05:30
feat: Added Alias Resolver DeltaGenerator
This commit is contained in:
@@ -65,6 +65,21 @@ Calculates the physical time duration (in minutes) that a validated action takes
|
||||
```
|
||||
- **Resolution**: The Architect advances `worldState.clock` by the returned minutes and saves to `SQLiteRepository`.
|
||||
|
||||
### Alias Delta Generator
|
||||
|
||||
Dynamically synthesizes subjective names/aliases when an entity perceives another entity for the first time:
|
||||
|
||||
- **Trigger**: Run automatically during simulation loops for any co-located entities who do not yet have a record in their subjective alias registry.
|
||||
- **Epistemic Constraints**: Uses only the target entity's visible public attributes (e.g. appearance, clothing) as context, ensuring private names and details remain hidden from the observer.
|
||||
- **Inputs**: The observer (`viewer: Entity`) and the observed (`target: Entity`), along with the target's visible attributes.
|
||||
- **Output (Zod Schema)**:
|
||||
```json
|
||||
{
|
||||
"alias": "the tall silver-haired elf in the green tunic"
|
||||
}
|
||||
```
|
||||
- **Resolution**: Registers the generated descriptive alias to the observer's `aliases` map and persists the entity change to the SQLite database.
|
||||
|
||||
## A Note on Tech Debt
|
||||
|
||||
The Architect currently trusts an LLM's judgment about reasonable consequences rather than validating every change against declarative constraints. A general constraint solver is worth building eventually, but building it before anything is playable is foundational perfectionism that produces beautiful architecture and no game.
|
||||
|
||||
@@ -89,3 +89,15 @@ CREATE TABLE IF NOT EXISTS buffer_entries (
|
||||
|
||||
- **JSON Storage**: `intent` and `outcome` are serialized/deserialized as raw JSON, validated by Zod at creation time.
|
||||
- **Cascade Deletes**: Deleting an entity removes all associated subjective memory entries.
|
||||
|
||||
## Time Naturalization
|
||||
|
||||
LLMs are poor at tracking quantized clock times, and real entities do not recall exact timestamps for past events. To make memories psychologically realistic, timestamps are converted into relative natural language phrases prior to prompt injection:
|
||||
|
||||
* **Utility**: `naturalizeTime(now: Date, past: Date): string` converts raw dates into subjective relative strings.
|
||||
* **Granularity Tiers**:
|
||||
* **Relative (< 6 hours)**: Returns short offsets like `"just now"`, `"moments ago"`, `"a couple hours ago"`, or `"a few hours ago"`.
|
||||
* **Same Subjective Day (6h to 18h)**: Detects waking hours (05:00 - 21:59). If both times occur within the same waking block, it returns `"earlier today, in the {period}"` (where period is `morning`, `afternoon`, or `evening`).
|
||||
* **Plausible Sleep Boundaries**: Past events from sleep hours are mapped to `"last night"`, `"around midnight"`, or `"late last night"`.
|
||||
* **Coarse (>= 48 hours)**: Returns broad descriptors like `"a couple days ago"`, `"about a week ago"`, `"a couple months ago"`, or `"years ago"`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user