diff --git a/README.md b/README.md index f0bef8792..f79986d1f 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ Run `sol help` for the full command reference. | Topic | Document | |-------|----------| | Installation and setup | [docs/INSTALL.md](docs/INSTALL.md) | -| Journal structure and data model | [docs/JOURNAL.md](docs/JOURNAL.md) | +| Journal structure and data model | [talent/journal/SKILL.md](talent/journal/SKILL.md) | | Capture pipeline | [docs/OBSERVE.md](docs/OBSERVE.md) | | Processing and agents | [docs/THINK.md](docs/THINK.md) | | Web interface | [docs/CONVEY.md](docs/CONVEY.md) | diff --git a/apps/settings/routes.py b/apps/settings/routes.py index 687b31931..a8d9d54b5 100644 --- a/apps/settings/routes.py +++ b/apps/settings/routes.py @@ -97,7 +97,7 @@ def update_config() -> Any: - env: API keys (GOOGLE_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY, REVAI_ACCESS_TOKEN, PLAUD_ACCESS_TOKEN) Note: Model/provider configuration is done via the 'providers' section in - journal.json. See docs/JOURNAL.md for the providers config format. + journal.json. See talent/journal/references/config.md for the providers config format. """ try: request_data = request.get_json() diff --git a/docs/APPS.md b/docs/APPS.md index e3840cf50..17d2a7901 100644 --- a/docs/APPS.md +++ b/docs/APPS.md @@ -406,7 +406,7 @@ Define [Agent Skills](https://agentskills.io/specification) as subdirectories wi - Create a subdirectory in `talent/` with a `SKILL.md` file (YAML frontmatter + markdown body) - The directory name must match the `name` field in the YAML frontmatter - Skill names must be unique across system `talent/` and all `apps/*/talent/` directories -- `make skills` discovers all skills and symlinks them into `.agents/skills/` and `.claude/skills/` +- `make skills` discovers all skills and symlinks them into `journal/.agents/skills/` and `journal/.claude/skills/` - Skills are standalone — they don't interact with the talent agent/generator system - The talent loader ignores subdirectories, so skills won't interfere with agent discovery @@ -448,7 +448,7 @@ apps/my_app/talent/my-skill/ └── references/ ``` -**Running `make skills`:** Discovers all `SKILL.md` files under `talent/*/` and `apps/*/talent/*/`, then creates symlinks so that all supported coding agents see the same skills. Errors if two skills share the same directory name. +**Running `make skills`:** Discovers all `SKILL.md` files under `talent/*/` and `apps/*/talent/*/`, then creates symlinks in `journal/.agents/skills/` and `journal/.claude/skills/` so that all supported coding agents see the same skills. Errors if two skills share the same directory name. --- @@ -597,7 +597,7 @@ Available functions from the `think` module: ### Entities `think/entities/`: `load_entities(facet)` - Load entities for a facet -See [JOURNAL.md](JOURNAL.md), [CORTEX.md](CORTEX.md), [CALLOSUM.md](CALLOSUM.md) for subsystem details. +See [talent/journal/SKILL.md](../talent/journal/SKILL.md), [CORTEX.md](CORTEX.md), [CALLOSUM.md](CALLOSUM.md) for subsystem details. --- @@ -811,7 +811,7 @@ Browse `apps/*/` directories for reference implementations. Apps range in comple - **`convey/static/app.js`** - AppServices framework - **`convey/static/websocket.js`** - WebSocket event system - [../AGENTS.md](../AGENTS.md) - Project development guidelines and standards -- [JOURNAL.md](JOURNAL.md) - Journal directory structure and data organization +- [storage.md](../talent/journal/references/storage.md) - Journal directory structure and data organization - [CORTEX.md](CORTEX.md) - Agent system architecture and spawning agents - [CALLOSUM.md](CALLOSUM.md) - Message bus protocol and WebSocket events diff --git a/docs/DOCTOR.md b/docs/DOCTOR.md index 2d174eac1..691bb6d76 100644 --- a/docs/DOCTOR.md +++ b/docs/DOCTOR.md @@ -329,6 +329,6 @@ sol describe /path/to/broken.mov -v ## See Also -- [JOURNAL.md](JOURNAL.md) - Directory structure and file formats +- [logs.md](../talent/journal/references/logs.md) - Journal logs, health files, and event formats - [CORTEX.md](CORTEX.md) - Agent system, events, configuration - [CALLOSUM.md](CALLOSUM.md) - Message bus protocol diff --git a/docs/OBSERVE.md b/docs/OBSERVE.md index e09813307..129c6ebf6 100644 --- a/docs/OBSERVE.md +++ b/docs/OBSERVE.md @@ -95,7 +95,7 @@ Both upload segments via the same HTTP ingest API used by the built-in Linux obs ## Output Formats -See [JOURNAL.md](JOURNAL.md) for detailed extract schemas: +See [captures.md](../talent/journal/references/captures.md) for detailed extract schemas: - Audio transcripts: `audio.jsonl` with timestamps (speaker detection not included) - Screen analysis: `screen.jsonl` with frame-by-frame categorization diff --git a/docs/PROMPT_TEMPLATES.md b/docs/PROMPT_TEMPLATES.md index cd298a130..25e2bade3 100644 --- a/docs/PROMPT_TEMPLATES.md +++ b/docs/PROMPT_TEMPLATES.md @@ -61,7 +61,7 @@ Identity variables come from the `identity` block in `config/journal.json`. Thes The flattening logic converts nested objects using underscore separators. For example, `identity.pronouns.subject` becomes `$pronouns_subject`. **References:** -- Identity configuration: [JOURNAL.md](JOURNAL.md) (identity section) +- Identity configuration: [config.md](../talent/journal/references/config.md) (identity section) - Flattening implementation: `think/prompts.py` → `_flatten_identity_to_template_vars()` ### Template Variables @@ -186,7 +186,7 @@ load_prompt("myprompt", context={"custom_var": "value"}) | Category | Authoritative Source | |----------|---------------------| -| Identity config schema | [JOURNAL.md](JOURNAL.md) (identity section) | +| Identity config schema | [config.md](../talent/journal/references/config.md) (identity section) | | Identity flattening | `think/prompts.py` (`_flatten_identity_to_template_vars`) | | Template loading | `think/prompts.py` (`_load_templates`) | | Core load function | `think/prompts.py` (`load_prompt`) | diff --git a/docs/SCREEN_CATEGORIES.md b/docs/SCREEN_CATEGORIES.md index 391b65e02..12e8d4d27 100644 --- a/docs/SCREEN_CATEGORIES.md +++ b/docs/SCREEN_CATEGORIES.md @@ -24,7 +24,7 @@ Optional extraction prompt content goes here... | `description` | Yes | - | Single-line description used in the categorization prompt | | `output` | No | `"markdown"` | Response format for extraction: `"json"` or `"markdown"` | -Model selection is handled via the providers configuration in `journal.json`. Each category uses the context pattern `observe.describe.` for routing. See [JOURNAL.md](JOURNAL.md) for details on configuring providers per context. +Model selection is handled via the providers configuration in `journal.json`. Each category uses the context pattern `observe.describe.` for routing. See [config.md](../talent/journal/references/config.md) for details on configuring providers per context. Categories with prompt content after the frontmatter are "extractable" - they can receive detailed content extraction after initial categorization. The prompt is sent to the model for analysis and should instruct the model to: - Analyze the screenshot for this specific category diff --git a/docs/SOLCLI.md b/docs/SOLCLI.md index 46c90ac73..1ab03efc1 100644 --- a/docs/SOLCLI.md +++ b/docs/SOLCLI.md @@ -161,7 +161,7 @@ List items for a day. - `-f, --facet`: facet name (default: `SOL_FACET` env). ``` -4. **Run `make skills`** to create the symlink in `.agents/skills/`. +4. **Run `make skills`** to create the symlink in `journal/.agents/skills/`. 5. **Update AGENTS.md** — add the skill to the Skills table. @@ -183,7 +183,7 @@ call_app.add_typer(mytools_app, name="mytools") |------|-----------|-----------| | `apps//call.py` | Typer app with commands | Yes | | `apps//talent//SKILL.md` | Skill doc for agents | If agents should use it | -| `.agents/skills/` | Symlink (via `make skills`) | Auto-generated | +| `journal/.agents/skills/` | Symlink (via `make skills`) | Auto-generated | | `AGENTS.md` Skills table | Add trigger description | If skill exists | | `tests/test__call.py` | CLI tests | Yes | @@ -279,7 +279,7 @@ solstone/ │ ├── journal/SKILL.md # Skills not tied to an app │ ├── coding/SKILL.md │ └── *.md # Agent prompt files -├── .agents/skills/ # Symlinks (generated by make skills) +├── journal/.agents/skills/ # Symlinks (generated by make skills) └── AGENTS.md # Sol identity + skill table ``` @@ -320,7 +320,7 @@ solstone/ ## Skill System -Skills are documented in `SKILL.md` files and symlinked into `.agents/skills/` by `make skills`. +Skills are documented in `SKILL.md` files and symlinked into `journal/.agents/skills/` by `make skills`. **Skill locations:** - App skills: `apps//talent//SKILL.md` diff --git a/docs/environment.md b/docs/environment.md index 101b12355..c4a56db7a 100644 --- a/docs/environment.md +++ b/docs/environment.md @@ -24,7 +24,7 @@ Store API keys in `.env` file, never commit to repository. - Update README files for new functionality - Code comments explain "why" not "what" - Function signatures should include type hints; highlight gaps when touching older modules -- **All docs in `docs/`**: Browse for JOURNAL.md, APPS.md, CORTEX.md, CALLOSUM.md, THINK.md, and more +- **All docs in `docs/` plus journal references in `talent/journal/`**: Browse `talent/journal/SKILL.md`, APPS.md, CORTEX.md, CALLOSUM.md, THINK.md, and more - Each package has a README.md symlink pointing to its documentation in `docs/`. - **App/UI work**: [docs/APPS.md](docs/APPS.md) is required reading before modifying `apps/` diff --git a/docs/project-structure.md b/docs/project-structure.md index 431c4bf95..3252166fc 100644 --- a/docs/project-structure.md +++ b/docs/project-structure.md @@ -34,7 +34,7 @@ Each package has a README.md symlink pointing to its documentation in `docs/`. ## Agent & Skill Organization -`talent/*.md` stores agent personas and generator templates. Apps can add their own in `apps/*/talent/*.md`. Skills live at `talent/*/SKILL.md` and are symlinked to `.agents/skills/` and `.claude/skills/` via `make skills`. +`talent/*.md` stores agent personas and generator templates. Apps can add their own in `apps/*/talent/*.md`. Skills live at `talent/*/SKILL.md` and are symlinked into `journal/.agents/skills/` and `journal/.claude/skills/` via `make skills`. ## File Locations @@ -43,5 +43,5 @@ Each package has a README.md symlink pointing to its documentation in `docs/`. - **Live Logs**: `journal/health/.log` - **Agent Personas**: `talent/*.md` (apps can add their own in `talent/`, see [docs/APPS.md](docs/APPS.md)) - **Generator Templates**: `talent/*.md` (apps can add their own in `talent/`, see [docs/APPS.md](docs/APPS.md)) -- **Agent Skills**: `talent/*/SKILL.md` - symlinked to `.agents/skills/` and `.claude/skills/` via `make skills`, read https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices to create the best skills +- **Agent Skills**: `talent/*/SKILL.md` - symlinked into `journal/.agents/skills/` and `journal/.claude/skills/` via `make skills`, read https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices to create the best skills - **Scratch Space**: `scratch/` - git-ignored local workspace diff --git a/think/formatters.py b/think/formatters.py index 6000357f7..5c753f1d7 100644 --- a/think/formatters.py +++ b/think/formatters.py @@ -122,7 +122,7 @@ def extract_path_metadata(rel_path: str) -> dict[str, str]: # enough to use as Path.glob() arguments from the journal root. The indexed # flag controls whether find_formattable_files() collects matching files for # the search index. Adding a new journal content location requires a new -# entry here — see docs/JOURNAL.md "Search Index" for details. +# entry here — see talent/journal/references/storage.md "Search Index" for details. # # Order matters: first match wins, so place specific patterns before general ones. FORMATTERS: dict[str, tuple[str, str, bool]] = {