Commit Graph

6 Commits

Author SHA1 Message Date
Michael Sitarzewski 00fb28a4cf feat(tools): add ZCode (Z.ai GLM agent harness) (#700)
* feat(tools): add ZCode (Z.ai GLM agent harness)

ZCode reads per-agent markdown from `.zcode/agents/{slug}.md` (project) and
`~/.config/zcode/agents/{slug}.md` (global), with `name` + `description` YAML
frontmatter and an optional `tools` list — the same plain-agent-markdown shape
as Qwen.

- tools.json: add the `zcode` entry (dual-scope, per-agent, format `zcode-md`).
- convert.sh: add `convert_zcode` (byte-identical to the qwen converter,
  output to integrations/zcode/agents/) + register in the dispatch, valid_tools,
  tools_to_run, and parallel_tools.
- install.sh: add `zcode` to ALL_TOOLS, `install_zcode`, `detect_zcode`, and the
  resolve_dest / bin / is_detected / display / label dispatches.

Directories + file format verified against ZCode's published docs. Renderer
contract: `zcode-md` output is byte-identical to `qwen-md`, verified by
diffing `convert.sh --tool zcode` against `--tool qwen` (243/243 files match).

check-tools.sh passes (16 tools consistent across tools.json, install.sh, and
convert.sh); bash -n clean on both scripts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WdX6PvnCfRgYD11yVpXVor

* zcode: gitignore generated output + add integration README

Bring the ZCode integration in line with the other tools: the 243 generated
agent files (integrations/zcode/agents/*.md) are output of `convert.sh`, not
source — add a .gitignore rule so they can't be committed, and add
integrations/zcode/README.md documenting generate/install (matching the vibe
and qwen integration READMEs).

Verified: generated agents are now git-ignored, the README is tracked, and
check-tools.sh still passes at 16 tools.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WKnDRWM4izsB8WAXKszhsq

* zcode: fix user-scope install path to ~/.zcode/agents (per ZCode docs)

The user-scope dest was ~/.config/zcode/agents/, but the official ZCode docs
state subagents are read from ~/.zcode/agents/<name>.md — so user-scope
installs landed where ZCode never looks. (detect.agentsDir and project scope
were already correct at .zcode/agents, so this was an internal inconsistency.)

Point tools.json dest.user, install_zcode's default, the header comment, and
the list display at ~/.zcode/agents; drop the stale ~/.config/zcode detection
clause; update the integration README. Keep format `zcode-md` distinct — ZCode's
native format supports color/model/permissions, so it will diverge from gemini-md
as the converter matures rather than being a permanent alias.

Verified: a default user-scope install now writes to ~/.zcode/agents/<slug>.md
(not ~/.config/zcode); check-tools.sh passes at 16 tools; install.sh syntax and
tools.json JSON both valid.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WKnDRWM4izsB8WAXKszhsq

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 11:29:16 -05:00
Laurent Wandrebeck 90ae2b27d1 Add Mistral Vibe support for Agency agents (#658)
* Add Mistral Vibe support for Agency agents

- Add Mistral Vibe entry to tools.json with proper configuration
  (id, label, kebab, format, installKind, dest, detection, version)
- Implement convert_vibe() function in convert.sh for Mistral Vibe's format
  - Generates TOML agent configuration files (~/.vibe/agents/<slug>.toml)
  - Generates markdown prompt files (~/.vibe/prompts/<slug>.md)
  - Each agent gets agent_type and system_prompt_id (no hardcoded active_model)
- Add install_vibe() function in install.sh with full feature support
  - Copies both agent TOML and prompt MD files
  - Supports division/agent filtering and environment variable overrides
  - Uses VIBE_HOME environment variable for custom install paths
- Add Mistral Vibe detection and tool labeling
- Add Mistral Vibe to all necessary case statements and arrays
- Update README.md to document Mistral Vibe support
- All changes validated with scripts/check-tools.sh

Mistral Vibe uses a two-file approach per agent:
- ~/.vibe/agents/<slug>.toml for agent configuration
- ~/.vibe/prompts/<slug>.md for system prompts

Users can specify active_model in their agent TOML files or rely on their
Vibe configuration default model.

Usage: ./scripts/install.sh --tool vibe [--division X] [--agent Y]

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>

* Address PR #658 review feedback: add .gitignore, README, and fix icon

- Add integrations/vibe/README.md documenting the Mistral Vibe integration
- Update .gitignore to ignore integrations/vibe/agents/ and prompts/
- Update convert.sh usage() to include vibe in the tool list
- Fix tools.json: change vibe icon from 'mistral' to null (no mistral.svg)
- Bonus: update vibe accent color from #FF69B4 to #FA520F (Mistral brand orange)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>

---------

Co-authored-by: Mistral Vibe <vibe@mistral.ai>
2026-07-05 04:21:50 -05:00
Michael Sitarzewski 309a8e7b0c fix(antigravity): correct skills path + deterministic SKILL.md
Antigravity moved its skill directories: global skills now load from
~/.gemini/config/skills/ and project skills from <project>/.agents/skills/
(the old ~/.gemini/antigravity/skills/ is stale). Confirmed against Google's
Antigravity Skills docs.

- tools.json: antigravity → skill-md format, new user+project dests, scope
  user+project (keeps the `agency-` slug prefix for namespacing).
- convert.sh: emit standard Agent-Skills frontmatter only (name + description);
  drop risk/source/date_added — the date stamp made output non-deterministic,
  and it's the reason the app had kept Antigravity recognized-only. Now byte-
  identical to the osaurus skill-md shape. Removed the now-unused
  ANTIGRAVITY_DATE_ADDED constant.
- install.sh: install + detect against ~/.gemini/config/skills/.
- Docs updated.

check-tools.sh passes (tools.json / install.sh / convert.sh consistent).

Path discovery + skill-md approach by Pedro Remedios (msitarzewski/agency-agents-app#32).

Co-authored-by: Pedro Remedios <pedro.remedios@gmail.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 12:15:38 -05:00
Michael Sitarzewski 21763134f6 Add installKind to tools.json — install mechanism as upstream truth (#618)
Adds `installKind` to every tool entry and enforces it in check-tools.sh. It
classifies the install MECHANISM, which is true for every consumer (not app
state, unlike renderer coverage):
  - per-agent : one rendered file/dir per agent (11 tools)
  - roster    : one combined file for all agents (aider, windsurf)
  - plugin    : a built artifact, NOT per-agent renderable — CLI-only everywhere
                (hermes; no consumer can render it as a string)

Why: consumers currently infer "this tool is a plugin / can't be rendered" from
the format name + multi-file dest + reading the convert script. Making it
explicit is principled, not incidental. The Agency Agents app can now branch:
install natively when installKind is per-agent|roster AND it implements the
`format`; treat `plugin` kinds as recognized-but-CLI-only. Renderer coverage
stays the consumer's concern (derived from `format`); the catalog still carries
no app-release state — installKind passes the "true for every consumer" test
that `wired` failed.

check-tools.sh now requires installKind on every entry and validates the enum
(per-agent|roster|plugin). Purely additive — agency-agents scripts don't read
it, so this lands safely independent of the app, which adopts the field on its
next bundled-baseline refresh.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 10:32:50 -05:00
PattrnData 8ab8d82930 Add Hermes lazy Agency router plugin (#614)
* Add Hermes lazy agency router plugin

* Document Hermes router specialist usage
2026-06-28 08:27:39 -05:00
Michael Sitarzewski 9262649a48 Add tools.json canonical registry + check-tools.sh guard (#606)
Mirrors the divisions.json / check-divisions.sh pattern for the supported tool
set. tools.json (repo root) is the single source of truth for all 13 tools,
consumed by the Agency Agents app and by scripts/convert.sh + scripts/install.sh.
scripts/check-tools.sh (no-jq, bash 3.2) fails the build if tools.json disagrees
with ALL_TOOLS in install.sh or the converter set in convert.sh, or if any entry
is missing id/label/kebab/format/dest.

Every tool carries its real install contract (format, dest, scope, detect,
version) — verified against actual convert.sh/install.sh behavior via a
sandboxed install pass (all dest templates resolve to the real on-disk layout).

`format` is the renderer contract: same name => byte-identical output. The five
formerly-undescribed tools get distinct names — aider-conventions, antigravity-skill
(its non-deterministic date_added means it can't share osaurus's skill-md),
kimi-agent, openclaw-workspace, windsurf-rules — none colliding with the app's
implemented renderers. Removed the `wired` field: it encoded app renderer state
(not catalog truth); consumers derive installability from `format` against their
own implemented-format set. check-tools.sh requires format+dest for every tool,
not just some. Also fixes antigravity detect (.gemini/antigravity-cli ->
.gemini/antigravity/skills, matching the actual code).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 01:38:47 -05:00