From bf5c6fad75419929594e3ba672991b173dfae931 Mon Sep 17 00:00:00 2001 From: KageBinary Date: Sat, 8 Aug 2026 15:26:16 -0700 Subject: [PATCH] fix: three ix commands referenced that do not exist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Checked every `ix` command this plugin names against the CLI's actual registration — 37 OSS commands, 13 Pro stubs, and the 59 commands @ix/pro registers on its origin/main. Three did not resolve. `ix connect` — never existed. There is no `connect` command anywhere in the CLI's history. It appeared five times, and every one was user-facing remediation shown at the moment something was already broken: tools/ix-health.ts:57 "ix CLI not found" recovery block tools/ix-ingest.ts:163 "Could not determine graph state" tools/ix-ingest.ts:212 "ix CLI not found" recovery block TOOL_CONTRACT.md:238 documented recovery commands/ix-architecture.md:14 "ix graph unavailable" stop instruction All now point at `ix docker start` (and `ix status` to confirm), which is what the CLI itself prints for an unreachable backend, so the plugin and the tool agree. `ix goals` — the command is `goal`, singular. `goals` was dropped from @ix/pro in Ix-pro#103 ("drop duplicate top-level commands (approve, reject, goals)") and the OSS stub was removed in Ix#327, so it resolves nowhere. commands/ix-plan.md ran it directly, so that step could only ever return nothing. Replaced with `ix goal list`. `ix docs` — documentation only, and inaccurate. PLUGIN_SPEC.md and ROADMAP.md described ix-docs-tool as calling an `ix docs` CLI command; it does not, and no such command exists. The tool posts to /v2/ix_query with mode "docs". The docs now say what the code does. The three PluginHookContract test failures are pre-existing — verified identical on main (88 pass / 3 fail both ways). --- PLUGIN_SPEC.md | 4 ++-- ROADMAP.md | 2 +- TOOL_CONTRACT.md | 2 +- commands/ix-architecture.md | 2 +- commands/ix-plan.md | 4 ++-- tools/ix-health.ts | 6 +++--- tools/ix-ingest.ts | 8 ++++---- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/PLUGIN_SPEC.md b/PLUGIN_SPEC.md index 1a1bb2e..51ec40b 100644 --- a/PLUGIN_SPEC.md +++ b/PLUGIN_SPEC.md @@ -96,7 +96,7 @@ ix-opencode-plugin/ | `ix-map` | Architectural map + subsystem overview | `ix map ` CLI | | `ix-ingest` | Graph status + refresh trigger | `ix status` / `ix map` CLI | | `ix-history` | Revision/decisions/bugs | `ix history` CLI (Pro only) | -| `ix-docs-tool` | Context summaries | `ix docs ` CLI | +| `ix-docs-tool` | Context summaries | `POST /v2/ix_query` mode `"docs"` (no CLI equivalent) | ### Hooks (5 current via `ix-plugin.ts`) @@ -191,7 +191,7 @@ OpenCode's plugin system provides: | Architectural map | `ix-map` tool → `ix map` CLI | `POST /v2/ix_query` mode `"understand"` | | Ingest/refresh | `ix-ingest` tool → `ix map` CLI | `POST /v2/ingest/map` | | Pre-edit gate | `ix-pre-edit` hook → `ix-impact` tool | `POST /v2/ix_decide` | -| Context summaries | `ix-docs-tool` → `ix docs` CLI | `POST /v2/ix_query` mode `"docs"` | +| Context summaries | `ix-docs-tool` (runtime only) | `POST /v2/ix_query` mode `"docs"` | | All seven skills | `ix` CLI via commands | `POST /v2/ix_query` appropriate mode | | Text/semantic search | **Not available** (missing tool) | `POST /v2/ix_query` mode `"locate"` text search | | Architecture smells | **Not available** (missing tool) | `POST /v2/insights/derive` type `"smells"` | diff --git a/ROADMAP.md b/ROADMAP.md index 36de938..4ea5727 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -70,7 +70,7 @@ When a platform mechanism is unavailable, mark it explicitly as **Unsupported** Read all seven tool files in `tools/` and document the exact `ix` CLI commands each calls, along with the output parsing logic. **Current State Context:** -Seven tools: `ix-query.ts` (`ix locate`), `ix-neighbors.ts` (`ix callers/callees/depends/imports`), `ix-impact.ts` (`ix impact`), `ix-map.ts` (`ix map`), `ix-ingest.ts` (`ix status` + `ix map`), `ix-history.ts` (`ix history`, Pro only), `ix-docs-tool.ts` (`ix docs`). All call through `base.ts`. Tools return strings (not JSON objects — confirmed OpenCode constraint). +Seven tools: `ix-query.ts` (`ix locate`), `ix-neighbors.ts` (`ix callers/callees/depends/imports`), `ix-impact.ts` (`ix impact`), `ix-map.ts` (`ix map`), `ix-ingest.ts` (`ix status` + `ix map`), `ix-history.ts` (`ix history`, Pro only), `ix-docs-tool.ts` (runtime `/v2/ix_query` mode `"docs"` — no CLI equivalent). All call through `base.ts`. Tools return strings (not JSON objects — confirmed OpenCode constraint). **Implementation Notes:** Read each tool file. Document CLI args, output parsing, error handling, and string return format. Note which tools use `--json` flag vs raw text parsing. diff --git a/TOOL_CONTRACT.md b/TOOL_CONTRACT.md index 7e28baa..385a616 100644 --- a/TOOL_CONTRACT.md +++ b/TOOL_CONTRACT.md @@ -235,7 +235,7 @@ The Ix graph has been rebuilt. Graph data is now current. **ix CLI not found.** Install Ix to enable graph-aware features. command -v ix # check if installed -ix connect # connect to workspace +ix docker start # start the local backend ix map # build initial graph ``` diff --git a/commands/ix-architecture.md b/commands/ix-architecture.md index 260eae4..17b6688 100644 --- a/commands/ix-architecture.md +++ b/commands/ix-architecture.md @@ -11,7 +11,7 @@ Before anything else, run: command -v ix ix status ``` -If either fails, stop: *"ix graph unavailable — run `ix connect` or check your connection."* +If either fails, stop: *"ix graph unavailable — run `ix docker start` to start the backend, then `ix status` to confirm."* Then verify the graph has data: ```bash diff --git a/commands/ix-plan.md b/commands/ix-plan.md index af83911..a92fcbe 100644 --- a/commands/ix-plan.md +++ b/commands/ix-plan.md @@ -62,7 +62,7 @@ Identify if any third symbol depends on multiple targets (shared blast radius If Pro is available, check for existing plans and goals that overlap with this change: ```bash ix plans --format llm -ix goals --format llm +ix goal list --format llm ``` Cross-reference `activePlans` from the briefing to avoid duplicate work. If an existing plan covers these targets, reference it. @@ -106,7 +106,7 @@ After [target B]: verify [specific callers] - [any cross-subsystem boundary being crossed] ## Project context **[Pro]** -- Goal this serves: [from ix goals — omit if Pro unavailable] +- Goal this serves: [from `ix goal list` — omit if Pro unavailable] - Existing plan to track against: [plan ID + title, or "none — suggest creating one"] ``` diff --git a/tools/ix-health.ts b/tools/ix-health.ts index b5afa77..9b5cb69 100644 --- a/tools/ix-health.ts +++ b/tools/ix-health.ts @@ -53,9 +53,9 @@ export async function execute(_params: Params, context: Context): Promise { "", `**Status:** Could not determine graph state — ${msg}`, "", - "Ensure ix is connected: `ix connect`", + "Ensure the backend is running: `ix docker start`, then check `ix status`.", ].join("\n"); } } @@ -208,9 +208,9 @@ function unavailable(): string { "**ix CLI not found.** Install Ix to enable graph-aware features.", "", "```", - "command -v ix # check if installed", - "ix connect # connect to workspace", - "ix map # build initial graph", + "command -v ix # check if installed", + "ix docker start # start the local backend", + "ix map # build the initial graph", "```", ].join("\n"); }