agentsmesh 0.26.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/README.md +10 -10
- package/dist/canonical.js +692 -241
- package/dist/canonical.js.map +1 -1
- package/dist/cli.js +196 -192
- package/dist/engine.js +695 -244
- package/dist/engine.js.map +1 -1
- package/dist/index.js +713 -254
- package/dist/index.js.map +1 -1
- package/dist/lessons.js +18 -10
- package/dist/lessons.js.map +1 -1
- package/dist/targets.js +692 -241
- package/dist/targets.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.28.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- e148490: Deterministic pre-edit lesson recall via a `PreToolUse` hook.
|
|
8
|
+
|
|
9
|
+
`agentsmesh init --lessons` now wires the recall hook under **both** `PreToolUse` and `PostToolUse`, and `agentsmesh lessons hook` is event-aware (it echoes the harness `hook_event_name`). On targets whose hooks can inject context before a tool call (e.g. Claude Code), matching lessons are now surfaced **before the first edit/command** — guarding the "first touch" the previous PostToolUse-only design left unguarded — with no extra model turn and no compliance dependence. Session dedup keeps each lesson injected at most once per session, and `PostToolUse` remains as the fallback for harnesses that support only post-call context injection. Existing projects pick this up by re-running `agentsmesh init --lessons` (idempotent) and `agentsmesh generate`; behavior is unchanged when no `hook_event_name` is supplied (defaults to `PostToolUse`).
|
|
10
|
+
|
|
11
|
+
## 0.27.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- c172153: Declare Amazon Q `additionalRules` as **Native** for project scope. AgentsMesh already emits each non-root rule as a separate `.amazonq/rules/<slug>.md` file (which Amazon Q auto-loads) and imports them back, so the capability was under-declared as `none`. Global scope stays `none` because Amazon Q has no global rules directory on disk (`~/.aws/amazonq/` is used only for MCP and agents).
|
|
16
|
+
- 9492875: Declare Augment Code `permissions` as **Native** for global scope (was `none`). Auggie (Augment's CLI) reads tool permissions from the personal `~/.augment/settings.json` `toolPermissions` array (`[{ toolName, permission: { type: allow | deny | ask-user } }]`), mapped to canonical allow / deny / ask. Generation now emits `toolPermissions` into the global settings.json (alongside `mcpServers`/`hooks`) and import reads it back. Project scope stays `none` — per Augment's docs, tool permissions are personal/global and apply only in the CLI, not the IDE extension. (Advanced `webhook-policy` / `script-policy` / `shellInputRegex` entries have no canonical equivalent and are skipped on import.)
|
|
17
|
+
- c172153: Codex CLI hooks are now declared **Native** (project and global), correcting a `partial` mislabel. Codex CLI reads lifecycle hooks from a real on-disk file — `.codex/hooks.json` (project) and `~/.codex/hooks.json` (global) — which AgentsMesh already generates from `.agentsmesh/hooks.yaml` and imports back, so the round-trip was fully working and only the declared capability level was wrong. The support matrix (README + website) now shows Codex CLI hooks as Native.
|
|
18
|
+
- 4d31ea5: Declare Continue `permissions` as **Native** for global scope (was `none`). Continue reads personal tool permissions from `~/.continue/permissions.yaml` (top-level `allow` / `ask` / `exclude` arrays of tool-matcher patterns); AgentsMesh now generates that file in global mode and imports it back, mapping `exclude` ↔ canonical `deny`. Project scope stays `none` — Continue's own spec marks project-level permissions "not implemented yet".
|
|
19
|
+
|
|
20
|
+
Also: the descriptor schema now accepts a target's `globalSupport.scopeExtras` as a valid implementation of a settings-backed capability (mcp/hooks/ignore/permissions) at global scope, since `scopeExtras` is the global-only emit path Continue uses.
|
|
21
|
+
|
|
22
|
+
- eddf184: Declare GitHub Copilot `hooks` as **Native** for project scope (was `partial`). Copilot CLI auto-loads `.github/hooks/*.json` at startup, and AgentsMesh already generates `.github/hooks/agentsmesh.json` (plus wrapper scripts) and imports it back — the round-trip was fully working and only the declared level was wrong. Lint still warns about unsupported hook events and the POSIX-shell wrapper-script requirement. (Global Copilot hooks at `~/.copilot/hooks/*.json` remain a separate follow-up.)
|
|
23
|
+
- b591409: Declare Cursor `additionalRules` as **Native** (both scopes; was `embedded`). AgentsMesh already emits each non-root rule as a separate native `.cursor/rules/<slug>.mdc` file and imports them back — identical to Cline — so the level was under-declared. No generator/importer changes; the round-trip already worked.
|
|
24
|
+
- dcbe440: Declare Factory Droid `commands` as **Native** (both scopes; was `none`). Factory Droid reads custom slash commands from `.factory/commands/*.md` (project) and `~/.factory/commands/*.md` (global) — Markdown with optional `description` / `allowed-tools` frontmatter, filename as the command slug (per docs.factory.ai). AgentsMesh now generates and imports these native command files instead of projecting commands into `.factory/skills/am-command-*/SKILL.md`; `supportsConversion.commands` is removed. Regenerating replaces the old projected command-skills with native `.factory/commands/` files.
|
|
25
|
+
- b591409: Declare Gemini CLI `permissions` as **Native** for global scope (was `none`). Gemini's policy engine loads User-tier `~/.gemini/policies/*.toml`, and AgentsMesh's permissions generator/importer already produce and read that TOML — the global layout was simply suppressing it. Policies now emit in global mode and round-trip. Project scope stays `partial` (workspace-tier policies are disabled upstream).
|
|
26
|
+
- fd7e4a5: Declare Goose `hooks` as **Native** for both scopes (was `none`). Goose supports lifecycle hooks via the Open Plugin Specification — a `hooks/hooks.json` inside a plugin dir, auto-discovered at `.agents/plugins/agentsmesh/hooks/hooks.json` (project) and `~/.agents/plugins/agentsmesh/hooks/hooks.json` (global). The file uses the same wrapped command-hook shape as Codex CLI / Factory Droid (`{ "hooks": { "<Event>": [{ matcher?, hooks: [{ type, command }] }] } }`), so AgentsMesh now generates and imports it through the shared `wrapped-command-hooks` helper. The previous no-op `lintHooks` warning is removed.
|
|
27
|
+
- c94d3cd: Declare Goose `permissions` as **Native** for global scope (was `none`). Goose reads tool permissions from `~/.config/goose/permission.yaml` — a map keyed by category where AgentsMesh owns the `user` block (`always_allow` / `ask_before` / `never_allow`, mapped to canonical allow / ask / deny). Generation emits it via `scopeExtras` and **merge-preserves** every other category (notably Goose's runtime `smart_approve` cache); import reads the `user` block back. Project scope stays `none` (Goose has no project-level permission file), and the project-scope lint warning now points users at the global file instead of claiming permissions are unsupported.
|
|
28
|
+
- d34681a: Declare Pi Agent `commands` as **Native** (both scopes; was `none`). Pi discovers prompt templates from `.pi/prompts/*.md` (project) and `~/.pi/agent/prompts/*.md` (global) — Markdown with optional `description` frontmatter, filename as the command name, `$ARGUMENTS` substitution (per earendil-works/pi). AgentsMesh now generates and imports these native prompt templates instead of projecting commands into `.pi/skills/am-command-*/SKILL.md`; `supportsConversion.commands` is removed (agents are still projected as skills). Also corrects `metadata.officialUrl` to `https://github.com/earendil-works/pi` (was the non-existent `pi-labs/pi-agent`). Canonical `allowedTools` have no Pi equivalent and are dropped on generate.
|
|
29
|
+
- 0063ecc: Declare Roo Code `agents` as **Native** for project scope (was `partial`) by adding the missing importer. AgentsMesh already generated `.roomodes` (canonical agents → Roo `customModes`); it now imports `.roomodes` back into `.agentsmesh/agents/<slug>.md`, completing the round-trip (`slug` → filename, `name`/`description` → frontmatter, `roleDefinition` → body). Global agents stay `partial` because Roo's global custom modes live in VS Code globalStorage, not an AgentsMesh-ownable file.
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- ed90714: Make Aider actually load the generated `CONVENTIONS.md`. Aider has no auto-discovery for `CONVENTIONS.md` — it must be referenced from `.aider.conf.yml` via the `read:` key — so the rules AgentsMesh emitted were silently ignored. Generation now also emits a project-level `.aider.conf.yml` with `read: [CONVENTIONS.md]`, merge-preserving any existing user config (other keys kept, `read` list unioned). Scoped to project mode (a home-level config's `read:` path semantics differ and are out of scope); the `.aider.conf.yml` is deterministic wiring and is not imported as canonical content.
|
|
34
|
+
- c172153: Fix Amazon Q agent generation/import using the wrong system-prompt key. AgentsMesh wrote and read `systemPrompt`, but Amazon Q's `agent-v1.json` schema uses `prompt` — so generated `.amazonq/cli-agents/*.json` agents silently lost their system prompt. Generation now emits `prompt`; import reads `prompt` and falls back to the legacy `systemPrompt` key so previously generated agent files still round-trip.
|
|
35
|
+
- c172153: Fix Augment Code rule frontmatter to use the official `type` key. AgentsMesh emitted boolean flags (`always_apply: true`, `agent_requested: true`), but Augment Code rules declare their activation via a single `type` field (`type: always_apply` / `type: agent_requested`). Generation now emits `type: …`; import reads `type` and still accepts the legacy boolean keys for backward compatibility.
|
|
36
|
+
- b591409: Fix `agentsmesh import --from crush --global` silently importing no MCP servers (and no hooks). The Crush config reader was scope-blind and always read `<root>/crush.json`; in global scope it now reads `~/.config/crush/crush.json` (Crush's real global config), so global MCP/hooks round-trip as the `native` matrix already claims.
|
|
37
|
+
- c172153: Fix Cursor hooks being emitted in a format Cursor cannot read. AgentsMesh wrote `.cursor/hooks.json` with Claude-style PascalCase event names (`PreToolUse`) and a nested `{ matcher, hooks: [...] }` structure, but Cursor uses camelCase event names (`preToolUse`, `postToolUse`, `beforeSubmitPrompt`, …) and a flat array of hook objects — so generated hooks silently never fired. Generation and import now use Cursor's real event names and flat shape, the canonical↔Cursor mapping round-trips, and a lint warning is emitted for canonical hook events Cursor has no equivalent for.
|
|
38
|
+
- b2ccc64: Fix `agentsmesh import --from factory-droid` silently dropping native droid agents. Factory Droid's `agents` capability was declared **Native** and generation already emitted `.factory/droids/<name>.md`, but the importer had no `agents` spec — so the round-trip the matrix promised never happened (import produced no `.agentsmesh/agents/*`). The descriptor now imports `.factory/droids/` (and the global `~/.factory/droids/`) back into canonical agents via the `agent` preset, completing the round-trip in both scopes.
|
|
39
|
+
- efd0c6f: Fix Factory Droid `hooks.json` format and complete its round-trip. Factory's `hooks.json` nests events under a top-level `"hooks"` key (`{ "hooks": { "PreToolUse": [{ matcher, hooks: [{ type, command }] }] } }`, per docs.factory.ai) — but generation emitted the bare top-level Claude Code shape Factory does not read, and there was no importer at all, so the declared **Native** hooks never round-tripped. Generation now wraps under `hooks` and `agentsmesh import --from factory-droid` reads it back into `.agentsmesh/hooks.yaml` (both scopes). The wrapped command-hook serialize/import logic — identical to Codex CLI's — is now a shared `wrapped-command-hooks` helper that both targets use, removing the duplication.
|
|
40
|
+
|
|
3
41
|
## 0.26.0
|
|
4
42
|
|
|
5
43
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -112,7 +112,7 @@ The memory is one git-tracked file, `.agentsmesh/lessons/lessons.json`, and ever
|
|
|
112
112
|
agentsmesh init --lessons && agentsmesh generate # wire the recall/capture loop once
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
`init --lessons` drops a small always-on rule into `.agentsmesh/rules/_root.md` (so every target gets the habit), seeds the full operating manual as a `lessons` skill where supported, and wires a `PostToolUse`
|
|
115
|
+
`init --lessons` drops a small always-on rule into `.agentsmesh/rules/_root.md` (so every target gets the habit), seeds the full operating manual as a `lessons` skill where supported, and wires a recall hook (a `PreToolUse` first-touch guard plus a `PostToolUse` fallback) on hook-capable tools; agents without shell access use the matching MCP tools (`lessons_query` / `lessons_add`). Because the graph is a normal git-tracked file, a lesson one agent learns today helps every teammate's agent tomorrow, and every change is reviewable like any other diff.
|
|
116
116
|
|
|
117
117
|
Full walkthrough: [Teach your AI agents with lessons](https://samplexbro.github.io/agentsmesh/guides/lessons/) · [`agentsmesh lessons` reference](https://samplexbro.github.io/agentsmesh/cli/lessons/).
|
|
118
118
|
|
|
@@ -167,7 +167,7 @@ Every command accepts `--global` (operate on `~/.agentsmesh/`) and `--json` (mac
|
|
|
167
167
|
AgentsMesh generates native config for every major AI coding assistant — plus plugin targets you can ship as standalone npm packages. Native vs. embedded support per feature is tracked in the [supported-tools matrix](https://samplexbro.github.io/agentsmesh/reference/supported-tools/).
|
|
168
168
|
|
|
169
169
|
<!-- agentsmesh:tool-list -->
|
|
170
|
-
- **CLI agents:** [Aider](https://aider.chat), [Amp](https://ampcode.com), [Claude Code](https://www.anthropic.com/claude-code), [Codex CLI](https://github.com/openai/codex), [Crush](https://github.com/charmbracelet/crush), [Deep Agents CLI](https://github.com/langchain-ai/deepagents), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Goose](https://block.github.io/goose), [OpenCode](https://opencode.ai), [Pi Agent](https://github.com/
|
|
170
|
+
- **CLI agents:** [Aider](https://aider.chat), [Amp](https://ampcode.com), [Claude Code](https://www.anthropic.com/claude-code), [Codex CLI](https://github.com/openai/codex), [Crush](https://github.com/charmbracelet/crush), [Deep Agents CLI](https://github.com/langchain-ai/deepagents), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Goose](https://block.github.io/goose), [OpenCode](https://opencode.ai), [Pi Agent](https://github.com/earendil-works/pi), [Qwen Code](https://github.com/QwenLM/qwen-code), [Rovo Dev](https://www.atlassian.com/solutions/devops/rovo-dev), [Warp](https://www.warp.dev).
|
|
171
171
|
- **IDE integrations:** [Amazon Q Developer](https://aws.amazon.com/q/developer), [Antigravity](https://antigravity.google), [Augment Code](https://www.augmentcode.com), [Cline](https://cline.bot), [Continue](https://continue.dev), [GitHub Copilot](https://github.com/features/copilot), [Cursor](https://cursor.com), [Junie](https://www.jetbrains.com/junie), [Kilo Code](https://kilocode.ai), [Kiro](https://kiro.dev), [Roo Code](https://roocode.com), [Trae](https://www.trae.ai), [Windsurf](https://windsurf.com), [Zed](https://zed.dev).
|
|
172
172
|
- **Cloud agent platforms:** [Factory Droid](https://www.factory.ai), [Jules](https://jules.google), [Replit Agent](https://replit.com).
|
|
173
173
|
<!-- /agentsmesh:tool-list -->
|
|
@@ -178,12 +178,12 @@ AgentsMesh generates native config for every major AI coding assistant — plus
|
|
|
178
178
|
| Feature | Aider | Amazon Q Developer | Amp | Antigravity | Augment Code | Claude Code | Cline | Codex CLI | Continue | GitHub Copilot | Crush | Cursor | Deep Agents CLI | Factory Droid | Gemini CLI | Goose | Jules | Junie | Kilo Code | Kiro | OpenCode | Pi Agent | Qwen Code | Replit Agent | Roo Code | Rovo Dev | Trae | Warp | Windsurf | Zed |
|
|
179
179
|
|---|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|
|
|
180
180
|
| Rules | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native |
|
|
181
|
-
| Additional Rules | Embedded |
|
|
182
|
-
| Commands | — | — | Native | Partial (workflows) | Native | Native | Native (workflows) | Embedded | Native | Native | — | Native | — |
|
|
183
|
-
| Agents | — | Native | — | — | Native | Native | Native | Native | — | Native | — | Native | — | Native | Native | — | — | Native | Native | Native | Native | — | Native | — |
|
|
181
|
+
| Additional Rules | Embedded | Native | Embedded | Native | Native | Native | Native | Native | Native | Native | Embedded | Native | Embedded | Embedded | Embedded | Embedded | Embedded | Native | Native | Native | Native | Embedded | Native | Embedded | Native | Embedded | Native | Embedded | Native | Embedded |
|
|
182
|
+
| Commands | — | — | Native | Partial (workflows) | Native | Native | Native (workflows) | Embedded | Native | Native | — | Native | — | Native | Native | — | — | Native | Native | Embedded | Native | Native | Native | — | Native | — | Native | — | Native (workflows) | — |
|
|
183
|
+
| Agents | — | Native | — | — | Native | Native | Native | Native | — | Native | — | Native | — | Native | Native | — | — | Native | Native | Native | Native | — | Native | — | Native | — | — | — | Embedded | — |
|
|
184
184
|
| Skills | Native | — | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | — | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native |
|
|
185
185
|
| MCP Servers | — | Native | Native | — | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | — | — | Native | Native | Native | Native | — | Native | — | Native | Native | Native | Native | Partial | Native |
|
|
186
|
-
| Hooks | — | — | Native | Native | Native | Native | Native |
|
|
186
|
+
| Hooks | — | — | Native | Native | Native | Native | Native | Native | — | Native | Native | Native | Native | Native | Partial | Native | — | — | — | Native | — | — | Native | — | — | — | — | — | Native | — |
|
|
187
187
|
| Ignore | Native | — | — | — | Native | Native | Native | — | — | — | Native | Native | — | — | Native (settings-embedded) | Native | — | Native | Native | Native | — | — | Native | — | Native | — | Native | — | Native | — |
|
|
188
188
|
| Permissions | — | — | Native | Partial | — | Native | — | — | — | — | Partial | Partial | — | — | Partial | — | — | — | Native | — | Native | — | Native | — | Partial | — | — | Partial | — | — |
|
|
189
189
|
<!-- /agentsmesh:support-matrix:project -->
|
|
@@ -194,14 +194,14 @@ AgentsMesh generates native config for every major AI coding assistant — plus
|
|
|
194
194
|
| Feature | Aider | Amazon Q Developer | Amp | Antigravity | Augment Code | Claude Code | Cline | Codex CLI | Continue | GitHub Copilot | Crush | Cursor | Deep Agents CLI | Factory Droid | Gemini CLI | Goose | Jules | Junie | Kilo Code | Kiro | OpenCode | Pi Agent | Qwen Code | Replit Agent | Roo Code | Rovo Dev | Trae | Warp | Windsurf | Zed |
|
|
195
195
|
|---|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|:-----------:|
|
|
196
196
|
| Rules | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | — | Native | Native | Native | Native | Native | Native | — | Native | Native | Native | — | Native | — |
|
|
197
|
-
| Additional Rules | Embedded | — | Embedded | Embedded | Native | Native | Native | Embedded | Native | Native | Embedded |
|
|
198
|
-
| Commands | — | — | Native | Partial (workflows) | Native | Native | Native (workflows) | Embedded | Native | Native | — | Native | — |
|
|
197
|
+
| Additional Rules | Embedded | — | Embedded | Embedded | Native | Native | Native | Embedded | Native | Native | Embedded | Native | Embedded | Embedded | Embedded | Embedded | — | Embedded | Native | Native | Native | Embedded | Embedded | — | Native | Embedded | Native | — | Partial | — |
|
|
198
|
+
| Commands | — | — | Native | Partial (workflows) | Native | Native | Native (workflows) | Embedded | Native | Native | — | Native | — | Native | Native | — | — | Native | Native | Embedded | Native | Native | Native | — | Native | — | Native | — | Native (workflows) | — |
|
|
199
199
|
| Agents | — | Native | — | — | Native | Native | Native | Native | — | Native | — | Native | — | Native | Native | — | — | Native | Native | Native | Native | — | Native | — | Partial | — | — | — | Embedded | — |
|
|
200
200
|
| Skills | Native | — | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | Native | — | Native | Native | Native | Native | Native | Native | — | Native | Native | Native | Native | Native | — |
|
|
201
201
|
| MCP Servers | — | Native | Native | Native | Native | Native | Native | Native | Native | — | Native | Native | Native | Native | Native | Native | — | Native | Native | Native | Native | — | Native | — | Native | Native | Native | — | Native | Native |
|
|
202
|
-
| Hooks | — | — | Native | Native | — | Native | Native |
|
|
202
|
+
| Hooks | — | — | Native | Native | — | Native | Native | Native | — | — | Native | Native | Native | Native | Partial | Native | — | — | — | — | — | — | Native | — | — | Native | — | — | Native | — |
|
|
203
203
|
| Ignore | Native | — | — | — | — | Native | Native | — | — | — | — | Native | — | — | — | Native | — | — | Native | Native | — | — | — | — | Native | — | — | — | Native | — |
|
|
204
|
-
| Permissions | — | — | Native | Partial |
|
|
204
|
+
| Permissions | — | — | Native | Partial | Native | Native | — | — | Native | — | — | — | — | — | Native | Native | — | Native | Native | — | Native | — | Native | — | Partial | Native | — | Partial | — | — |
|
|
205
205
|
<!-- /agentsmesh:support-matrix:global -->
|
|
206
206
|
|
|
207
207
|
See the [full feature matrix](https://samplexbro.github.io/agentsmesh/reference/supported-tools/) for native vs. embedded details and per-tool global paths.
|