Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/scripts/collect_worker_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def _typed_schema_violations(functions: list[dict[str, object]]) -> list[str]:
def _untyped_trigger_names(triggers: list[dict[str, object]]) -> list[str]:
"""Trigger names whose `invocation_schema` is the empty/AnyValue ('unknown')
schema. Unlike functions, a schema-less trigger is NOT a hard publish blocker:
some trigger types legitimately take no binding config (e.g. iii-directory's
some trigger types legitimately take no binding config (e.g. directory's
`directory::*::on-change`), so callers warn rather than fail."""
names: list[str] = []
for trigger in triggers:
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/parse_publish_workers_input.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"console",
"database",
"harness",
"iii-directory",
"directory",
"image-resize",
"mcp",
"shell",
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/tests/test_normalize_worker_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ def test_surfaces_trigger_schemas_from_info_enriched_rows() -> None:


def test_untyped_trigger_surfaces_empty_schema() -> None:
"""A trigger type registered without a binding config (e.g. iii-directory's
"""A trigger type registered without a binding config (e.g. directory's
`directory::*::on-change`) has no schema in `::info` — normalize emits an
empty `{}`, which the publish step warns (not errors) about."""
interface = normalize_worker_interface(
Expand Down
4 changes: 2 additions & 2 deletions .github/scripts/validate_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
4. tests/ exists and is non-empty.
5. For workers in BOOTSTRAP_WORKERS, skills/SKILL.md exists, is non-empty,
and is within the 256 KiB cap — the harness bootstraps these onto disk via
iii-directory on first boot; a missing or oversized file breaks the
directory on first boot; a missing or oversized file breaks the
chat surface's orientation.

If `--worker` is not in `--source-changed`, requirements 1, 3, and 4 are
Expand All @@ -33,7 +33,7 @@
# skills/SKILL.md a hard PR gate. Keep in sync with what the harness
# actually bootstraps.
BOOTSTRAP_WORKERS = frozenset({
"iii-directory",
"directory",
"shell",
})

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/create-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ on:
- database
- email
- harness
- iii-directory
- directory
- lsp
- lsp-vscode
- image-resize
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ on:
- 'database/v*'
- 'email/v*'
- 'harness/v*'
- 'iii-directory/v*'
- 'directory/v*'
- 'lsp/v*'
- 'image-resize/v*'
- 'llm-router/v*'
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ npx skills add iii-hq/iii --all
| [`session-manager`](session-manager/) | Rust | Durable, reactive, branching conversation store — fourteen `session::*` functions plus six trigger types; the transcript backend for `harness` and `console`. See [`session-manager/architecture/`](session-manager/architecture/). |
| [`context-manager`](context-manager/) | Rust | Model-ready context assembly — four `context::*` functions for token counting, function-result pruning, and history compaction over caller-supplied messages. Storage-agnostic; summarisation via `llm-router` when installed. |
| [`database`](database/) | Rust | PostgreSQL, MySQL, and SQLite client — query, execute, transactions, prepared statements, and change feeds. |
| [`iii-directory`](iii-directory/) | Rust | Engine introspection (functions / triggers / workers), workers-registry proxy, and filesystem-backed skill + prompt reader. |
| [`directory`](directory/) | Rust | Engine introspection (functions / triggers / workers), workers-registry proxy, and filesystem-backed skill + prompt reader. |
| [`lsp`](lsp/) | Rust | Language Server for iii function ids, trigger configs, and worker discovery. Autocomplete / hover across JS/TS, Python, Rust. |
| [`lsp-vscode`](lsp-vscode/) | Node | VS Code extension package `iii-lsp`, embedding the `lsp` server. |
| [`image-resize`](image-resize/) | Rust | Image resize via channel I/O — JPEG/PNG/WebP with EXIF auto-orient, scale-to-fit / crop-to-fit. |
Expand Down
2 changes: 1 addition & 1 deletion approval-gate/iii.worker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ description: Policy and decision surface for human-held function calls — pre_t
dependencies:
iii-state: "^0.19.0"
configuration: "^0.19.0"
iii-directory: "^1.0.0"
directory: "^1.0.0"
session-manager: "^1.0.0"
4 changes: 2 additions & 2 deletions console/web/src/components/chat/directory/parsers.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* Zod schemas for the `directory::*` namespace (iii-directory worker).
* Zod schemas for the `directory::*` namespace (directory worker).
*
* Wire source: `iii-directory/src/functions/*.rs`
* Wire source: `directory/src/functions/*.rs`
* - skills.rs — directory::skills::list / get / index
* - download.rs — directory::skills::download
* - prompts.rs — directory::prompts::list / get
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ describe('worker::list', () => {
const payload = {
workers: [
{ name: 'iii-worker-manager', pid: null, running: true },
{ name: 'iii-directory', pid: 19052, running: true, version: '0.5.2' },
{ name: 'directory', pid: 19052, running: true, version: '0.5.2' },
{ name: 'iii-stream', pid: null, running: true, version: '0.11.6' },
],
}
Expand Down
2 changes: 1 addition & 1 deletion console/web/src/hooks/use-worker-lifecycle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { getIiiClient } from '@/lib/iii-client'
* own terminal.
*
* IMPORTANT: the engine `worker` trigger filters on BOTH `operations` and
* `stages`. The only working subscriber in the tree (the Rust `iii-directory`
* `stages`. The only working subscriber in the tree (the Rust `directory`
* worker) always sets both; omitting `stages` matches no events, so this hook
* always sends a stage filter (defaulting to the full lifecycle).
*
Expand Down
18 changes: 9 additions & 9 deletions console/web/src/stories/fixtures/engine-fixtures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export const engineFunctionsListDone = base(
export const engineFunctionsListEmpty = base(
'engine-fn-list-empty',
'engine::functions::list',
{ worker: 'iii-directory', search: 'nonexistent' },
{ worker: 'directory', search: 'nonexistent' },
{ functions: [] },
)

Expand All @@ -79,12 +79,12 @@ export const engineFunctionsListRaw = base(
functions: [
{
function_id: 'directory::skills::download',
worker_name: 'iii-directory',
worker_name: 'directory',
description: 'Download skill bundle from the registry',
},
{
function_id: 'directory::skills::list',
worker_name: 'iii-directory',
worker_name: 'directory',
// description intentionally omitted for visual variance
},
],
Expand Down Expand Up @@ -193,13 +193,13 @@ export const engineTriggersListDone = base(
},
{
id: 'directory::prompts::on-change',
worker_name: 'iii-directory',
worker_name: 'directory',
description:
'Fires after every successful directory::skills::download that wrote at least one prompt.',
},
{
id: 'directory::skills::on-change',
worker_name: 'iii-directory',
worker_name: 'directory',
description:
'Fires after every successful directory::skills::download that wrote at least one skill.',
},
Expand Down Expand Up @@ -251,14 +251,14 @@ export const engineRegisteredTriggersListDone = base(
export const engineRegisteredTriggersListPlainSummary = base(
'engine-reg-tr-plain',
'engine::registered-triggers::list',
{ worker: 'iii-directory' },
{ worker: 'directory' },
{
registered_triggers: [
{
id: 'a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d',
trigger_type: 'log',
function_id: 'directory::log::watch',
worker_name: 'iii-directory',
worker_name: 'directory',
config_summary: 'level=info, source=stdout',
},
],
Expand Down Expand Up @@ -327,7 +327,7 @@ export const engineWorkersListDone = base(
},
{
id: '00000000-0000-0000-0000-000000000aaa',
name: 'iii-directory',
name: 'directory',
description: null,
version: '0.1.5',
runtime: 'rust',
Expand Down Expand Up @@ -365,7 +365,7 @@ export const engineWorkersListFiltered = base(
workers: [
{
id: '00000000-0000-0000-0000-000000000aaa',
name: 'iii-directory',
name: 'directory',
description: null,
version: '0.1.5',
runtime: 'rust',
Expand Down
6 changes: 3 additions & 3 deletions console/web/src/stories/fixtures/worker-fixtures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ function base(
/* ---------------- worker::list ---------------- */

/** Mirrors the user's screenshot: 7+ workers, mix of running engine builtins
* (null pid, null version) and a managed iii-directory with a real pid. */
* (null pid, null version) and a managed directory with a real pid. */
export const workerListDone = base(
'worker-list',
'worker::list',
Expand All @@ -41,7 +41,7 @@ export const workerListDone = base(
{ name: 'iii-worker-manager', pid: null, running: true },
{ name: 'iii-pubsub', pid: null, running: true },
{ name: 'iii-observability', pid: null, running: true },
{ name: 'iii-directory', pid: 19052, running: true, version: '0.5.2' },
{ name: 'directory', pid: 19052, running: true, version: '0.5.2' },
{ name: 'iii-queue', pid: null, running: true, version: '0.11.6' },
{ name: 'iii-state', pid: null, running: true, version: '0.11.6' },
{ name: 'iii-stream', pid: null, running: true, version: '0.11.6' },
Expand All @@ -56,7 +56,7 @@ export const workerListRunningOnly = base(
{ running_only: true },
{
workers: [
{ name: 'iii-directory', pid: 19052, running: true, version: '0.5.2' },
{ name: 'directory', pid: 19052, running: true, version: '0.5.2' },
{ name: 'iii-queue', pid: null, running: true, version: '0.11.6' },
],
},
Expand Down
56 changes: 28 additions & 28 deletions iii-directory/Cargo.lock → directory/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions iii-directory/Cargo.toml → directory/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[workspace]

[package]
name = "iii-directory"
name = "directory"
version = "1.0.0"
edition = "2021"
publish = false
Expand All @@ -11,7 +11,7 @@ name = "iii-directory"
path = "src/main.rs"

[lib]
name = "iii_directory"
name = "directory"
path = "src/lib.rs"

[dependencies]
Expand Down
14 changes: 7 additions & 7 deletions iii-directory/README.md → directory/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# iii-directory
# directory

Workers registry HTTP proxy and filesystem-backed skill + prompt
reader for the [iii engine](https://github.com/iii-hq/iii). Every
Expand Down Expand Up @@ -50,7 +50,7 @@ registry view also surfaces publication metadata (`type`, `config`,
## Install

```bash
iii worker add iii-directory
iii worker add directory
```

`iii worker add` fetches the binary, writes a config block into
Expand All @@ -61,10 +61,10 @@ iii worker add iii-directory

## Skills

Install the `iii-directory` agent skill for Claude Code, Cursor, and 30+ other agents:
Install the `directory` agent skill for Claude Code, Cursor, and 30+ other agents:

```bash
npx skills add iii-hq/workers --skill iii-directory
npx skills add iii-hq/workers --skill directory
```

Browse or install every worker skill at once:
Expand All @@ -79,13 +79,13 @@ npx skills add iii-hq/workers --all
## Configuration

Runtime settings live in the **`configuration` worker** under id
**`iii-directory`** (the same pattern `database` and `storage` use). At boot
**`directory`** (the same pattern `database` and `storage` use). At boot
the worker registers its JSON Schema, reads the live value via
`configuration::get` (the configuration worker env-expands `${VAR}`), and binds
a `configuration` trigger so it re-fetches on change.

Persisted values default to `./data/configuration/iii-directory.yaml` (fs
adapter). Edit that file directly, call `configuration::set id=iii-directory`,
Persisted values default to `./data/configuration/directory.yaml` (fs
adapter). Edit that file directly, call `configuration::set id=directory`,
or use the console Workers tab — all three propagate without a redeploy.

### Fields
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# Optional seed file for first-time registration
# (`iii-directory --config ./config.yaml.example`).
#
# As of this version, iii-directory's runtime config lives in the
# `configuration` worker under id `iii-directory` (the same pattern
# As of this version, directory's runtime config lives in the
# `configuration` worker under id `directory` (the same pattern
# `database` and `storage` use). This file is only a SEED: when the worker
# is launched with `--config <this file>` AND no value is yet stored for id
# `iii-directory`, its contents are passed as `initial_value` on
# `directory`, its contents are passed as `initial_value` on
# `configuration::register` (the configuration worker env-expands `${VAR}`).
# After that first register the stored value is authoritative; edit it with
# `configuration::set id=iii-directory` (or the console Workers tab), or by
# editing `./data/configuration/iii-directory.yaml` directly.
# `configuration::set id=directory` (or the console Workers tab), or by
# editing `./data/configuration/directory.yaml` directly.
#
# Tunable fields hot-reload on change (registry_url, download_timeout_ms,
# registry_cache_ttl_ms, filter_unregistered). Topology fields require a
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use iii_directory::fs_source::{scan_prompts, scan_skills};
use iii_directory::sources::registry::{download, VersionSpec};
use directory::fs_source::{scan_prompts, scan_skills};
use directory::sources::registry::{download, VersionSpec};

#[tokio::main]
async fn main() -> Result<(), String> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
iii: v1
name: iii-directory
name: directory
language: rust
deploy: binary
manifest: Cargo.toml
Expand Down
4 changes: 2 additions & 2 deletions iii-directory/skills/SKILL.md → directory/skills/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
name: iii-directory
name: directory
description: >-
Discovery entry point for the engine — read the skill and prompt docs that
installed workers ship off local disk, browse the public iii workers registry
over HTTP, and install new worker bundles. Reach for it first to find out
which workers exist and how to call them.
---

# iii-directory
# directory

The directory worker is how an agent finds its way around the engine. It does
three things: serves the markdown docs installed workers ship (`directory::skills::*`),
Expand Down
Loading
Loading