@kuznai/inception-engine 0.18.0 → 0.20.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/README.md +72 -43
- package/dist/{config → src/config}/agents.js +174 -24
- package/dist/src/core/adapters/agent-definitions.d.ts +8 -0
- package/dist/src/core/adapters/agent-definitions.js +162 -0
- package/dist/{core → src/core}/adapters/frontmatter.d.ts +10 -0
- package/dist/{core → src/core}/adapters/frontmatter.js +23 -6
- package/dist/{core → src/core}/adapters/index.d.ts +1 -1
- package/dist/{core → src/core}/adapters/index.js +4 -4
- package/dist/{core → src/core}/adapters/mcp.d.ts +2 -2
- package/dist/{core → src/core}/adapters/mcp.js +21 -24
- package/dist/{core → src/core}/adapters/permissions.js +16 -20
- package/dist/{core → src/core}/adapters/rules.d.ts +2 -2
- package/dist/src/core/adapters/rules.js +126 -0
- package/dist/src/core/capabilities.d.ts +47 -0
- package/dist/src/core/capabilities.js +280 -0
- package/dist/{core → src/core}/deploy.d.ts +1 -1
- package/dist/{core → src/core}/deploy.js +273 -92
- package/dist/{core → src/core}/init.js +126 -52
- package/dist/src/core/merge-patch.d.ts +4 -0
- package/dist/src/core/merge-patch.js +46 -0
- package/dist/{core → src/core}/ownership.d.ts +2 -2
- package/dist/{core → src/core}/ownership.js +13 -0
- package/dist/{core → src/core}/preflight.d.ts +1 -1
- package/dist/src/core/preflight.js +280 -0
- package/dist/{core → src/core}/resolve.d.ts +1 -1
- package/dist/{core → src/core}/resolve.js +7 -4
- package/dist/{core → src/core}/revert.js +95 -33
- package/dist/{core → src/core}/runtime-paths.d.ts +2 -1
- package/dist/{core → src/core}/runtime-paths.js +30 -23
- package/dist/{core → src/core}/validation.d.ts +10 -1
- package/dist/{core → src/core}/validation.js +75 -0
- package/dist/src/formatters.d.ts +5 -0
- package/dist/src/formatters.js +58 -0
- package/dist/{index.js → src/index.js} +8 -24
- package/dist/src/logger.js +62 -0
- package/dist/{schemas → src/schemas}/manifest.d.ts +22 -0
- package/dist/{schemas → src/schemas}/manifest.js +19 -5
- package/dist/{schemas → src/schemas}/registry.d.ts +74 -0
- package/dist/{schemas → src/schemas}/registry.js +18 -3
- package/dist/{types.d.ts → src/types.d.ts} +60 -0
- package/dist/test/helpers/fs.d.ts +2 -0
- package/dist/test/helpers/fs.js +17 -0
- package/dist/test/helpers/path.d.ts +10 -0
- package/dist/test/helpers/path.js +15 -0
- package/dist/test/helpers/skill-dir-scenarios.d.ts +7 -0
- package/dist/test/helpers/skill-dir-scenarios.js +206 -0
- package/dist/test/helpers/skill-dir.d.ts +7 -0
- package/dist/test/helpers/skill-dir.js +46 -0
- package/dist/test/os/cross-platform/cross-platform.test.d.ts +1 -0
- package/dist/test/os/cross-platform/cross-platform.test.js +328 -0
- package/dist/test/os/posix/skill-dir.test.d.ts +1 -0
- package/dist/test/os/posix/skill-dir.test.js +19 -0
- package/dist/test/os/windows/revert-integration.test.d.ts +1 -0
- package/dist/test/os/windows/revert-integration.test.js +72 -0
- package/dist/test/os/windows/skill-dir.test.d.ts +1 -0
- package/dist/test/os/windows/skill-dir.test.js +19 -0
- package/dist/test/unit/adapters.test.d.ts +1 -0
- package/dist/test/unit/adapters.test.js +947 -0
- package/dist/test/unit/capabilities.test.d.ts +1 -0
- package/dist/test/unit/capabilities.test.js +71 -0
- package/dist/test/unit/cli.test.d.ts +1 -0
- package/dist/test/unit/cli.test.js +834 -0
- package/dist/test/unit/deploy.test.d.ts +1 -0
- package/dist/test/unit/deploy.test.js +2481 -0
- package/dist/test/unit/detect.test.d.ts +1 -0
- package/dist/test/unit/detect.test.js +192 -0
- package/dist/test/unit/enterprise.test.d.ts +1 -0
- package/dist/test/unit/enterprise.test.js +106 -0
- package/dist/test/unit/frontmatter.test.d.ts +1 -0
- package/dist/test/unit/frontmatter.test.js +102 -0
- package/dist/test/unit/gemini-north-star.test.d.ts +1 -0
- package/dist/test/unit/gemini-north-star.test.js +243 -0
- package/dist/test/unit/manifest.test.d.ts +1 -0
- package/dist/test/unit/manifest.test.js +737 -0
- package/dist/test/unit/migration-golden.test.d.ts +1 -0
- package/dist/test/unit/migration-golden.test.js +197 -0
- package/dist/test/unit/ownership.test.d.ts +1 -0
- package/dist/test/unit/ownership.test.js +587 -0
- package/dist/test/unit/preflight.test.d.ts +1 -0
- package/dist/test/unit/preflight.test.js +501 -0
- package/dist/test/unit/resolve.test.d.ts +1 -0
- package/dist/test/unit/resolve.test.js +119 -0
- package/dist/test/unit/revert.test.d.ts +1 -0
- package/dist/test/unit/revert.test.js +1004 -0
- package/dist/test/unit/toml.test.d.ts +1 -0
- package/dist/test/unit/toml.test.js +55 -0
- package/package.json +1 -1
- package/dist/core/adapters/agent-definitions.d.ts +0 -20
- package/dist/core/adapters/agent-definitions.js +0 -90
- package/dist/core/adapters/rules.js +0 -103
- package/dist/core/preflight.js +0 -98
- package/dist/logger.js +0 -61
- /package/dist/{config → src/config}/agents.d.ts +0 -0
- /package/dist/{config → src/config}/manifest.d.ts +0 -0
- /package/dist/{config → src/config}/manifest.js +0 -0
- /package/dist/{core → src/core}/adapters/permissions.d.ts +0 -0
- /package/dist/{core → src/core}/adapters/toml.d.ts +0 -0
- /package/dist/{core → src/core}/adapters/toml.js +0 -0
- /package/dist/{core → src/core}/detect.d.ts +0 -0
- /package/dist/{core → src/core}/detect.js +0 -0
- /package/dist/{core → src/core}/init.d.ts +0 -0
- /package/dist/{core → src/core}/revert.d.ts +0 -0
- /package/dist/{errors.d.ts → src/errors.d.ts} +0 -0
- /package/dist/{errors.js → src/errors.js} +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{logger.d.ts → src/logger.d.ts} +0 -0
- /package/dist/{schemas → src/schemas}/errors.d.ts +0 -0
- /package/dist/{schemas → src/schemas}/errors.js +0 -0
- /package/dist/{types.js → src/types.js} +0 -0
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ GitHub Copilot is no longer treated as a separate instruction or skill target in
|
|
|
8
8
|
|
|
9
9
|
The broader portability layer is the roadmap direction, but this README focuses on what is working now.
|
|
10
10
|
|
|
11
|
-
`init` is available as a bootstrap command. It scans for directories containing `SKILL.md`, discovers agent-rules Markdown files using the Claude-first portability conventions, and reads `mcp-servers.json` from the repo root to populate `mcpServers`. `files` and `configs` remain empty — `init` emits guidance when it detects a `files/` or `configs/` directory.
|
|
11
|
+
`init` is available as a bootstrap command. It scans for directories containing `SKILL.md`, discovers agent-rules Markdown files using the Claude-first portability conventions, and reads `mcp-servers.json` from the repo root to populate `mcpServers`. Shared surfaces now default to the primary deploy target in generated manifests: for example, `init` emits `claude-code` rather than `github-copilot` for shared Claude-native skills and rules, and emits `gemini-cli` rather than `antigravity` for shared `GEMINI.md` rules surfaces. `files` and `configs` remain empty — `init` emits guidance when it detects a `files/` or `configs/` directory.
|
|
12
12
|
|
|
13
13
|
## Quick Start
|
|
14
14
|
|
|
@@ -27,7 +27,7 @@ inception-engine reads a manifest file (`inception.json`) from the target direct
|
|
|
27
27
|
|
|
28
28
|
Managed skills overwrite their previous version. If a target exists but was not created by inception-engine, deployment refuses to replace it. On POSIX systems, symlinks mean updates to the source repo are reflected immediately.
|
|
29
29
|
|
|
30
|
-
Before executing, the deploy command runs preflight analysis on instruction files
|
|
30
|
+
Before executing, the deploy command runs preflight analysis on instruction files and capability planning inputs. It validates that `agentRules` and `agentDefinitions` for targets requiring specific structure (like `github-copilot` and `antigravity`) include valid YAML frontmatter with `name` and `description` fields. For `github-copilot`, it further ensures either `tools` or `instructions` are defined; for `antigravity`, it validates the shape of any `mcp-servers` or `mcpServers` defined in the frontmatter. It also warns when a manifest targets a surface that is implementation-only, planned, unsupported, or shared through another agent, when the same agent will have multiple `agentRules` scopes active simultaneously, when the same source file is deployed to multiple scopes (duplicate-content risk), when `agentRules` or `agentDefinitions` source files exceed 50 KB (context-budget risk), and when GitHub Copilot appears to be running under enterprise-managed policy that may override local configuration. Warnings are printed but do not block deployment; structural validation failures block deployment for the affected targets.
|
|
31
31
|
|
|
32
32
|
## Agent Compatibility Matrix
|
|
33
33
|
|
|
@@ -50,14 +50,14 @@ Before executing, the deploy command runs preflight analysis on instruction file
|
|
|
50
50
|
| Skills (SKILL.md) | All agents via manifest and CLI | All agents |
|
|
51
51
|
| File write | All agents via manifest and CLI | All agents |
|
|
52
52
|
| Config patch (JSON merge) | All agents via manifest and CLI | All agents |
|
|
53
|
-
| MCP Servers | claude-code, gemini-cli, codex, antigravity, opencode; github-copilot repo-
|
|
54
|
-
| Global/Repo Rules Files |
|
|
55
|
-
| Permissions / Approval Config | claude-code (`~/.claude/settings.json`), codex (`~/.codex/config.toml`); other agents are warned and skipped | claude-code, codex |
|
|
56
|
-
| Agent Definitions | claude-code (`{repo}/.claude/agents/{name}.md`), gemini-cli (`{repo}/.gemini/agents/{name}.md`), antigravity (`{repo}/.agents/rules/{name}.md`), opencode (`{repo}/.opencode/agents/{name}.md`), github-copilot (`{repo}/.github/agents/{name}.agent.md`); codex is warned and skipped | All supported agents |
|
|
57
|
-
| `init` manifest generation | Scans `SKILL.md` directories (`skills`), `.md` files with Claude-first agent mapping (`agentRules`), `mcp-servers.json` (`mcpServers`), and agent-definition Markdown files (`agentDefinitions`); emits hints for `files/` and `configs/` directories | N/A |
|
|
58
|
-
| Instruction preflight analysis | Emits `precedence` warnings when an agent has
|
|
53
|
+
| MCP Servers | claude-code (`scope: "global"` → `~/.claude.json`; `scope: "repo"` → `{repo}/.claude/mcp.json`; `scope: "workspace"` → `{workspace}/.claude/mcp.json`), gemini-cli, codex, antigravity, opencode; github-copilot with `scope: "repo"` deploys to `{repo}/.vscode/mcp.json` and `scope: "workspace"` deploys to `{workspace}/.vscode/mcp.json`; github-copilot with `scope: "global"` (default) is unsupported and warns | claude-code, gemini-cli, codex, antigravity, opencode, github-copilot |
|
|
54
|
+
| Global/Repo/Workspace Rules Files | `scope: "global"` and `scope: "repo"` are supported on the implemented agent surfaces; `scope: "workspace"` is supported for `claude-code`, `codex`, and `gemini-cli`; `github-copilot` reads Claude-native rules via `claude-code` and has no separate rules deployment target | All supported agents |
|
|
55
|
+
| Permissions / Approval Config | claude-code (`~/.claude/settings.json`), codex (`~/.codex/config.toml`), opencode (`~/.config/opencode/opencode.json` on POSIX, `%APPDATA%\\opencode\\opencode.json` on Windows); other agents are warned and skipped | claude-code, codex, opencode |
|
|
56
|
+
| Agent Definitions | claude-code (`{repo}/.claude/agents/{name}.md`), gemini-cli (`{repo}/.gemini/agents/{name}.md` or `.toml`, plus `scope: "global"` to `~/.gemini/agents/{name}.md` or `.toml`), antigravity (`{repo}/.agents/rules/{name}.md`), opencode (`{repo}/.opencode/agents/{name}.md`, plus `scope: "global"` to the user config dir), github-copilot (`{repo}/.github/copilot/agents/{name}.md`, with migration from legacy `.github/agents/{name}.agent.md`); codex is warned and skipped | All supported agents |
|
|
57
|
+
| `init` manifest generation | Scans `SKILL.md` directories (`skills`), `.md` files with Claude-first agent mapping (`agentRules`), `mcp-servers.json` (`mcpServers`), and agent-definition Markdown files (`agentDefinitions`); shared surfaces default to the primary deploy target instead of shared riders; emits hints for `files/` and `configs/` directories | N/A |
|
|
58
|
+
| Instruction preflight analysis | Emits capability warnings for implementation-only, planned, unsupported, and shared-through surfaces used by the manifest; emits `precedence` warnings when an agent has multiple `agentRules` scopes active simultaneously or the same source file is deployed to multiple scopes; emits `budget` warnings when `agentRules` or `agentDefinitions` source files exceed 50 KB; emits GitHub Copilot enterprise-policy warnings when local configuration may be overridden; emits a `config-authority` warning when Gemini CLI's `settings.json` contains an `instructionFilename` override that differs from the deploy target | N/A |
|
|
59
59
|
|
|
60
|
-
Features that depend on agent-specific config surfaces are intentionally conservative:
|
|
60
|
+
Features that depend on agent-specific config surfaces are intentionally conservative: deploy and preflight now classify each surface through the same planner. If a target path or schema is implementation-only, planned, unsupported, or only shared through another agent, inception-engine warns and either routes through the primary surface or skips it rather than guessing.
|
|
61
61
|
|
|
62
62
|
For GitHub Copilot specifically, the portability rule is Claude-first: if Copilot accepts the same Claude-native instruction or skill artifact, inception-engine should not add a separate Copilot deployment feature for it.
|
|
63
63
|
|
|
@@ -95,6 +95,12 @@ Create an `inception.json` file at the root of your skills directory:
|
|
|
95
95
|
"name": "my-server",
|
|
96
96
|
"agents": ["claude-code", "gemini-cli"],
|
|
97
97
|
"config": { "command": "npx", "args": ["-y", "my-mcp-server"] }
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "my-server",
|
|
101
|
+
"agents": ["github-copilot"],
|
|
102
|
+
"scope": "repo",
|
|
103
|
+
"config": { "type": "stdio", "command": "npx", "args": ["-y", "my-mcp-server"] }
|
|
98
104
|
}
|
|
99
105
|
],
|
|
100
106
|
"agentRules": [
|
|
@@ -160,35 +166,46 @@ Each **mcpServer** entry registers an MCP server into the agent's config file by
|
|
|
160
166
|
- **name** - Unique identifier (same format as skill names); used as the server's key in the config
|
|
161
167
|
- **agents** - Array of agent IDs to register this server with
|
|
162
168
|
- **config** - Raw server descriptor object. For the currently supported JSON-backed adapters, inception-engine requires at least one non-empty `command` or `url` field, validates `args` as an array of strings when present, and validates `env` as a string-to-string object when present. Additional keys are passed through verbatim.
|
|
169
|
+
- **scope** - `"global"` (default), `"repo"`, or `"workspace"`. For most agents this field is ignored (they have only a single user-level config path). For `github-copilot`, `scope` selects the target file:
|
|
170
|
+
- `"global"` — unsupported; emits a warning and is skipped
|
|
171
|
+
- `"repo"` — deploys to `{repo}/.vscode/mcp.json` under the `servers` key
|
|
172
|
+
- `"workspace"` — deploys to `{workspace}/.vscode/mcp.json` under the `servers` key
|
|
163
173
|
|
|
164
|
-
|
|
165
|
-
|
|
174
|
+
GitHub Copilot's `.vscode/mcp.json` uses `servers` (not `mcpServers`) as the top-level key and optionally accepts a `type` field (`"stdio"` | `"sse"` | `"http"`) in the server descriptor, which is passed through verbatim.
|
|
175
|
+
|
|
176
|
+
MCP server registration is supported for all agents. Inception-engine automatically uses the correct adapter for each agent's configuration schema:
|
|
177
|
+
- **JSON (Merge Patch)**: `claude-code` (`~/.claude.json` for `scope: "global"`; `{repo}/.claude/mcp.json` for `scope: "repo"`; `{workspace}/.claude/mcp.json` for `scope: "workspace"`), `gemini-cli` (`~/.gemini/settings.json`), `opencode` (`~/.config/opencode/opencode.json` using the custom `"mcp"` key), and `github-copilot` (`{repo}/.vscode/mcp.json` or `{workspace}/.vscode/mcp.json` using the `"servers"` key).
|
|
166
178
|
- **TOML (Patch)**: `codex` (`~/.codex/config.toml`).
|
|
167
179
|
- **Markdown Frontmatter (Emit)**: `antigravity` (repo-local `.agents/rules/{name}.md` files).
|
|
168
180
|
|
|
169
|
-
|
|
181
|
+
For Markdown frontmatter targets, inception-engine now records patch-level provenance for the emitted frontmatter block. Deploy merges only the owned frontmatter keys, preserves unrelated frontmatter and Markdown body content, and `revert` removes only the engine-owned keys instead of deleting the whole file unless inception-engine originally created an otherwise-empty file.
|
|
182
|
+
|
|
183
|
+
Because Antigravity currently reuses `.agents/rules/{name}.md` for both MCP frontmatter emit and agent-definition files, planning now rejects a manifest when an `mcpServers` entry and an `agentDefinitions` entry would resolve to the same Antigravity target.
|
|
184
|
+
|
|
185
|
+
Revert removes the registered server entry from the respective configuration file or frontmatter block.
|
|
170
186
|
|
|
171
187
|
Each **agentRules** entry deploys a Markdown instruction file to an agent's supported instruction file location:
|
|
172
188
|
|
|
173
189
|
- **name** - Unique identifier (same format as skill names)
|
|
174
190
|
- **path** - Relative path to the source Markdown file within the repo; supported rules adapters require a `.md` or `.markdown` source path
|
|
175
191
|
- **agents** - Array of agent IDs to deploy this file to
|
|
176
|
-
- **scope** - `"global"` (default) or `"
|
|
177
|
-
- `"global"` — deploys to the agent's home-directory instruction file (e.g., `~/.claude/CLAUDE.md` for `claude-code`)
|
|
178
|
-
- `"repo"` — deploys to the project-root instruction file inside the deployed repository (e.g., `{repo}/CLAUDE.md` for `claude-code`)
|
|
192
|
+
- **scope** - `"global"` (default), `"repo"`, or `"workspace"`. Controls which instruction surface is targeted:
|
|
193
|
+
- `"global"` — deploys to the agent's home-directory instruction file when that surface is supported (e.g., `~/.claude/CLAUDE.md` for `claude-code`)
|
|
194
|
+
- `"repo"` — deploys to the project-root instruction file inside the deployed repository when that surface is supported (e.g., `{repo}/CLAUDE.md` for `claude-code`)
|
|
195
|
+
- `"workspace"` — deploys to the workspace-root instruction file when an agent exposes one (e.g., `{workspace}/CLAUDE.md` for `claude-code`); when unsupported, deployment is skipped with a warning
|
|
179
196
|
|
|
180
|
-
Instruction rule deployment is supported for
|
|
197
|
+
Instruction rule deployment is supported for implemented global, repo, and workspace surfaces. The target path depends on the agent and the `scope`:
|
|
181
198
|
|
|
182
|
-
| Agent | `scope: "global"` | `scope: "repo"` |
|
|
183
|
-
|
|
184
|
-
| `claude-code` | `~/.claude/CLAUDE.md` | `{repo}/CLAUDE.md` |
|
|
185
|
-
| `codex` | `~/.codex/AGENTS.md` | `{repo}/AGENTS.md` |
|
|
186
|
-
| `gemini-cli` | `~/.gemini/GEMINI.md` | `{repo}/GEMINI.md` |
|
|
187
|
-
| `antigravity` |
|
|
188
|
-
| `opencode` | `~/.config/opencode/AGENTS.md` | `{repo}/AGENTS.md` |
|
|
189
|
-
| `github-copilot` | unsupported
|
|
199
|
+
| Agent | `scope: "global"` | `scope: "repo"` | `scope: "workspace"` |
|
|
200
|
+
|---|---|---|---|
|
|
201
|
+
| `claude-code` | `~/.claude/CLAUDE.md` | `{repo}/CLAUDE.md` | `{workspace}/CLAUDE.md` |
|
|
202
|
+
| `codex` | `~/.codex/AGENTS.md` | `{repo}/AGENTS.md` | `{workspace}/AGENTS.md` |
|
|
203
|
+
| `gemini-cli` | `~/.gemini/GEMINI.md` | `{repo}/GEMINI.md` | `{workspace}/GEMINI.md` |
|
|
204
|
+
| `antigravity` | `~/.gemini/GEMINI.md` | `{repo}/GEMINI.md` | unsupported; warns and skips |
|
|
205
|
+
| `opencode` | `~/.config/opencode/AGENTS.md` | `{repo}/AGENTS.md` | unsupported; warns and skips |
|
|
206
|
+
| `github-copilot` | unsupported / Claude-first | deploy via `claude-code` | unsupported; deploy via `claude-code` with `scope: "workspace"` |
|
|
190
207
|
|
|
191
|
-
For `antigravity`,
|
|
208
|
+
For `antigravity`, `agentRules` now targets the shared GEMINI.md surface (`~/.gemini/GEMINI.md` for `global`, `{repo}/GEMINI.md` for `repo`) — the same paths used by `gemini-cli`. When both agents appear in the same entry, deduplication ensures only one write action is emitted. `workspace` scope is not supported and is skipped with a warning. For `github-copilot`, no separate deployment is needed — target it via the `claude-code` agentRules entry and it reaches Copilot automatically. Revert removes the deployed rules file.
|
|
192
209
|
|
|
193
210
|
Each **permissions** entry deploys execution and safety-oriented configuration to an agent's permission or approval surface:
|
|
194
211
|
|
|
@@ -231,20 +248,28 @@ Valid `approval_policy` values are `"auto"`, `"manual"`, `"suggest"`, and `"on-f
|
|
|
231
248
|
|
|
232
249
|
Revert restores the previous config values using the undo patch recorded at deploy time.
|
|
233
250
|
|
|
234
|
-
Each **agentDefinitions** entry deploys
|
|
251
|
+
Each **agentDefinitions** entry deploys an agent-definition file to the agent-definition directory of each targeted agent. `scope: "repo"` is the default, and some agents also support `scope: "global"`:
|
|
235
252
|
|
|
236
253
|
- **name** - Unique identifier (same format as skill names); used as the definition filename
|
|
237
|
-
- **path** - Relative path to the source
|
|
254
|
+
- **path** - Relative path to the source file within the repo; `.md` or `.markdown` for Markdown definitions, `.toml` for Gemini CLI TOML subagent definitions
|
|
238
255
|
- **agents** - Array of agent IDs to deploy this definition to
|
|
239
256
|
|
|
240
|
-
Agent-definition deployment is supported for `claude-code`, `gemini-cli`, `antigravity`, `opencode`, and `github-copilot`. For `codex`, inception-engine emits a warning and skips the entry
|
|
257
|
+
Agent-definition deployment is supported for `claude-code`, `gemini-cli`, `antigravity`, `opencode`, and `github-copilot`. For `codex`, inception-engine emits a warning and skips the entry. Gemini CLI and OpenCode also support `scope: "global"` definitions; other supported agents are repo-local only.
|
|
258
|
+
|
|
259
|
+
Gemini CLI supports two definition formats: Markdown (`.md`) files deploy to `{scope}/.gemini/agents/{name}.md`, and TOML (`.toml`) subagent configuration files deploy to `{scope}/.gemini/agents/{name}.toml`. TOML files are deployed verbatim without frontmatter validation. Agents other than `gemini-cli` that do not have a TOML definition surface silently produce no action when a `.toml` source is specified.
|
|
241
260
|
|
|
242
|
-
|
|
261
|
+
Repo-local targets:
|
|
243
262
|
- **claude-code**: `{repo}/.claude/agents/{name}.md`
|
|
244
|
-
- **gemini-cli**: `{repo}/.gemini/agents/{name}.md`
|
|
263
|
+
- **gemini-cli**: `{repo}/.gemini/agents/{name}.md` (Markdown) or `{repo}/.gemini/agents/{name}.toml` (TOML)
|
|
245
264
|
- **antigravity**: `{repo}/.agents/rules/{name}.md`
|
|
246
265
|
- **opencode**: `{repo}/.opencode/agents/{name}.md`
|
|
247
|
-
- **github-copilot**: `{repo}/.github/agents/{name}.
|
|
266
|
+
- **github-copilot**: `{repo}/.github/copilot/agents/{name}.md`
|
|
267
|
+
|
|
268
|
+
Global targets where supported:
|
|
269
|
+
- **gemini-cli**: `~/.gemini/agents/{name}.md` or `~/.gemini/agents/{name}.toml`
|
|
270
|
+
- **opencode**: `~/.config/opencode/agents/{name}.md` on POSIX, `%APPDATA%\\opencode\\agents\\{name}.md` on Windows
|
|
271
|
+
|
|
272
|
+
For GitHub Copilot, deploy also records migration from the legacy `{repo}/.github/agents/{name}.agent.md` path so older installs can be cleaned up safely.
|
|
248
273
|
|
|
249
274
|
Revert removes the deployed agent-definition file.
|
|
250
275
|
|
|
@@ -275,12 +300,12 @@ Current `init` behavior:
|
|
|
275
300
|
- Uses the directory name as the manifest skill name
|
|
276
301
|
- Applies either the `--agents` list or all currently known agent IDs
|
|
277
302
|
- Refuses to overwrite an existing `inception.json` unless `--force` is provided
|
|
278
|
-
- Supports `--
|
|
279
|
-
- Discovers agent-rules Markdown files in the root and conventional subdirectories (`rules/`, `instructions/`, `.github
|
|
303
|
+
- Supports `--plan` so you can inspect the generated manifest before writing it
|
|
304
|
+
- Discovers agent-rules Markdown files in the root and conventional subdirectories (`rules/`, `instructions/`, `.github/`), mapping them to agents using Claude-first portability conventions: `copilot-instructions.md` maps to `claude-code` (Copilot reads `CLAUDE.md` natively), and the fallback for unrecognized files excludes unsupported agents plus shared-surface riders that should default to their primary deploy target
|
|
280
305
|
- Reads `mcp-servers.json` from the repo root (if present) and generates `mcpServers` entries; invalid entries are warned and skipped
|
|
281
306
|
- Reads `files-manifest.json` from the repo root (if present) and generates `files` entries; invalid entries are warned and skipped
|
|
282
307
|
- Reads `configs-manifest.json` from the repo root (if present) and generates `configs` entries; invalid entries are warned and skipped
|
|
283
|
-
- Reads `agent-definitions-manifest.json` from the repo root (if present) and generates `agentDefinitions` entries; if absent, auto-discovers agent-definition Markdown files from `.claude/agents/`, `.gemini/agents/`, `.agents/rules/`, `.opencode/agents/`, and `.github/agents/`; invalid entries are warned and skipped
|
|
308
|
+
- Reads `agent-definitions-manifest.json` from the repo root (if present) and generates `agentDefinitions` entries; if absent, auto-discovers agent-definition Markdown files from `.claude/agents/`, `.gemini/agents/`, `.agents/rules/`, `.opencode/agents/`, `.github/copilot/agents/`, and legacy `.github/agents/`; invalid entries are warned and skipped
|
|
284
309
|
- Emits guidance to create a sidecar manifest when a `files/` or `configs/` directory is detected but the corresponding sidecar file is absent
|
|
285
310
|
|
|
286
311
|
Current `init` limitations:
|
|
@@ -342,10 +367,12 @@ Place an `agent-definitions-manifest.json` file at the repo root to have `init`
|
|
|
342
367
|
]
|
|
343
368
|
```
|
|
344
369
|
|
|
345
|
-
If no `agent-definitions-manifest.json` is present, `init` auto-discovers agent-definition Markdown files from
|
|
370
|
+
If no `agent-definitions-manifest.json` is present, `init` auto-discovers agent-definition Markdown files from six conventional subdirectories: `.claude/agents/`, `.gemini/agents/`, `.agents/rules/`, `.opencode/agents/`, `.github/copilot/agents/`, and legacy `.github/agents/`. Each discovered file is mapped to the owning agent(s). GitHub Copilot files named `{name}.agent.md` in the legacy directory have the `.agent` infix stripped to derive the manifest name (e.g., `foo.agent.md` -> name `foo`).
|
|
346
371
|
|
|
347
372
|
Invalid entries are warned and skipped; the rest are written into the generated manifest verbatim.
|
|
348
373
|
|
|
374
|
+
For shared surfaces, `init` prefers the primary deploy target instead of emitting both agents. That means generated `skills` entries exclude `github-copilot` in favor of `claude-code`, and generated shared `GEMINI.md` `agentRules` entries exclude `antigravity` in favor of `gemini-cli`. This keeps starter manifests minimal while preserving deploy behavior for explicitly authored shared-rider entries.
|
|
375
|
+
|
|
349
376
|
## CLI Reference
|
|
350
377
|
|
|
351
378
|
```
|
|
@@ -366,13 +393,15 @@ inception-engine init <directory> [options]
|
|
|
366
393
|
|
|
367
394
|
| Option | Description |
|
|
368
395
|
|---|---|
|
|
369
|
-
| `--
|
|
396
|
+
| `--plan` | Show what would be done without making changes |
|
|
370
397
|
| `--agents <list>` | Comma-separated list of agent IDs to target (overrides deploy detection; restricts revert) |
|
|
371
398
|
| `--force` | `init` only; overwrite an existing `inception.json` |
|
|
372
399
|
| `--verbose` | Show detailed output including file paths |
|
|
373
400
|
| `--debug` | Show full error stack traces |
|
|
374
401
|
| `--help` | Show help message |
|
|
375
402
|
|
|
403
|
+
With `--plan`, deploy and revert print a grouped action preview by agent. Each planned change includes the source path when applicable, the resolved target path, and action-specific details such as JSON/TOML patch payloads or emitted frontmatter content.
|
|
404
|
+
|
|
376
405
|
### Examples
|
|
377
406
|
|
|
378
407
|
```bash
|
|
@@ -380,7 +409,7 @@ inception-engine init <directory> [options]
|
|
|
380
409
|
npx @kuznai/inception-engine ./my-skills-repo
|
|
381
410
|
|
|
382
411
|
# Preview what would be deployed
|
|
383
|
-
npx @kuznai/inception-engine ./my-skills-repo --
|
|
412
|
+
npx @kuznai/inception-engine ./my-skills-repo --plan
|
|
384
413
|
|
|
385
414
|
# Deploy only to Claude Code and Codex
|
|
386
415
|
npx @kuznai/inception-engine ./my-skills-repo --agents claude-code,codex
|
|
@@ -389,13 +418,13 @@ npx @kuznai/inception-engine ./my-skills-repo --agents claude-code,codex
|
|
|
389
418
|
npx @kuznai/inception-engine revert ./my-skills-repo
|
|
390
419
|
|
|
391
420
|
# Preview what would be removed
|
|
392
|
-
npx @kuznai/inception-engine revert ./my-skills-repo --
|
|
421
|
+
npx @kuznai/inception-engine revert ./my-skills-repo --plan
|
|
393
422
|
|
|
394
423
|
# Generate a starter manifest from discovered skill folders
|
|
395
424
|
npx @kuznai/inception-engine init ./my-skills-repo
|
|
396
425
|
|
|
397
426
|
# Preview the generated manifest without writing it
|
|
398
|
-
npx @kuznai/inception-engine init ./my-skills-repo --
|
|
427
|
+
npx @kuznai/inception-engine init ./my-skills-repo --plan
|
|
399
428
|
```
|
|
400
429
|
|
|
401
430
|
## Sample Skills
|
|
@@ -405,8 +434,8 @@ The `limbo/` directory contains exceptional sample skills for testing purposes o
|
|
|
405
434
|
Try them out:
|
|
406
435
|
|
|
407
436
|
```bash
|
|
408
|
-
npx @kuznai/inception-engine init limbo --
|
|
409
|
-
npx @kuznai/inception-engine limbo --
|
|
437
|
+
npx @kuznai/inception-engine init limbo --plan
|
|
438
|
+
npx @kuznai/inception-engine limbo --plan
|
|
410
439
|
```
|
|
411
440
|
|
|
412
441
|
## Agent Detection
|
|
@@ -430,11 +459,11 @@ Revert targets all agents listed in the manifest by default (regardless of detec
|
|
|
430
459
|
|
|
431
460
|
### Ownership Tracking and Safe Revert
|
|
432
461
|
|
|
433
|
-
inception-engine maintains a centralized deployment registry at `~/.inception-engine/registry.json`. Each deploy records the target path, skill name, agent ID, action-specific provenance (`source`/`method` for skill-dir, `source` for file-write, `patch`/`undoPatch` for config-patch), and timestamp. No files are written to the source repository.
|
|
462
|
+
inception-engine maintains a centralized deployment registry at `~/.inception-engine/registry.json`. Each deploy records the target path, skill name, agent ID, action-specific provenance (`source`/`method` for skill-dir, `source` for file-write, `patch`/`undoPatch` for config-patch, `patch`/`undoPatch` plus frontmatter-shape metadata for frontmatter-emit), and timestamp. Registry entries also carry a stable surface ID so future surface migrations can preserve ownership continuity. No files are written to the source repository.
|
|
434
463
|
|
|
435
464
|
- **Registry-based ownership**: On revert, the registry is checked before removing any target. Only targets with a valid registry entry are removed. On redeploy, unmanaged targets are never replaced.
|
|
436
465
|
|
|
437
|
-
- **Strong binding**: Each registry entry binds a specific target path to its skill, agent, and action kind. For `skill-dir` and `file-write`, ownership checks also require the recorded `source` to match before an existing target is treated as managed. For `config-patch`, overwrite protection is keyed by target path, kind, skill, and agent; the stored `patch` and `undoPatch` are used for revert bookkeeping rather than deploy-time identity checks.
|
|
466
|
+
- **Strong binding**: Each registry entry binds a specific target path to its skill, agent, and action kind. For `skill-dir` and `file-write`, ownership checks also require the recorded `source` to match before an existing target is treated as managed. For `config-patch` and `frontmatter-emit`, overwrite protection is keyed by target path, kind, skill, and agent; the stored `patch` and `undoPatch` are used for patch-level revert bookkeeping rather than deploy-time identity checks.
|
|
438
467
|
|
|
439
468
|
- **Atomic redeploy**: When overwriting an existing managed `skill-dir` target, the engine renames the old target to a backup, creates the new deployment, and only removes the backup on success. If the new deployment fails, the backup is restored. `file-write` and `config-patch` deployments write directly to the target without this backup/rollback model.
|
|
440
469
|
|
|
@@ -28,6 +28,22 @@ export const AGENT_REGISTRY = [
|
|
|
28
28
|
windows: ["{home}", ".claude.json"],
|
|
29
29
|
},
|
|
30
30
|
},
|
|
31
|
+
mcpRepoSupport: {
|
|
32
|
+
status: "supported",
|
|
33
|
+
schemaLabel: "repo-local .claude/mcp.json",
|
|
34
|
+
path: {
|
|
35
|
+
posix: ["{repo}", ".claude", "mcp.json"],
|
|
36
|
+
windows: ["{repo}", ".claude", "mcp.json"],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
mcpWorkspaceSupport: {
|
|
40
|
+
status: "supported",
|
|
41
|
+
schemaLabel: "workspace-local .claude/mcp.json",
|
|
42
|
+
path: {
|
|
43
|
+
posix: ["{workspace}", ".claude", "mcp.json"],
|
|
44
|
+
windows: ["{workspace}", ".claude", "mcp.json"],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
31
47
|
agentRulesSupport: {
|
|
32
48
|
status: "supported",
|
|
33
49
|
schemaLabel: "global Markdown rules file",
|
|
@@ -52,7 +68,7 @@ export const AGENT_REGISTRY = [
|
|
|
52
68
|
windows: ["{home}", ".claude", "settings.json"],
|
|
53
69
|
},
|
|
54
70
|
},
|
|
55
|
-
|
|
71
|
+
agentDefinitionsRepoSupport: {
|
|
56
72
|
status: "supported",
|
|
57
73
|
schemaLabel: "repo-local agent definition Markdown file",
|
|
58
74
|
path: {
|
|
@@ -60,6 +76,14 @@ export const AGENT_REGISTRY = [
|
|
|
60
76
|
windows: ["{repo}", ".claude", "agents", "{name}.md"],
|
|
61
77
|
},
|
|
62
78
|
},
|
|
79
|
+
agentRulesWorkspaceSupport: {
|
|
80
|
+
status: "supported",
|
|
81
|
+
schemaLabel: "workspace-local CLAUDE.md",
|
|
82
|
+
path: {
|
|
83
|
+
posix: ["{workspace}", "CLAUDE.md"],
|
|
84
|
+
windows: ["{workspace}", "CLAUDE.md"],
|
|
85
|
+
},
|
|
86
|
+
},
|
|
63
87
|
},
|
|
64
88
|
{
|
|
65
89
|
id: "codex",
|
|
@@ -112,11 +136,19 @@ export const AGENT_REGISTRY = [
|
|
|
112
136
|
windows: ["{home}", ".codex", "config.toml"],
|
|
113
137
|
},
|
|
114
138
|
},
|
|
115
|
-
|
|
139
|
+
agentDefinitionsRepoSupport: {
|
|
116
140
|
status: "unsupported",
|
|
117
141
|
schemaLabel: "dedicated agent definition directory",
|
|
118
142
|
reason: "OpenAI Codex does not expose a documented dedicated per-agent definition directory surface separate from AGENTS.md and config.toml — use agentRules to deploy persona instructions instead",
|
|
119
143
|
},
|
|
144
|
+
agentRulesWorkspaceSupport: {
|
|
145
|
+
status: "supported",
|
|
146
|
+
schemaLabel: "workspace-local AGENTS.md",
|
|
147
|
+
path: {
|
|
148
|
+
posix: ["{workspace}", "AGENTS.md"],
|
|
149
|
+
windows: ["{workspace}", "AGENTS.md"],
|
|
150
|
+
},
|
|
151
|
+
},
|
|
120
152
|
},
|
|
121
153
|
{
|
|
122
154
|
id: "gemini-cli",
|
|
@@ -136,7 +168,7 @@ export const AGENT_REGISTRY = [
|
|
|
136
168
|
detectBinary: "documented",
|
|
137
169
|
mcpConfig: "documented",
|
|
138
170
|
agentRules: "documented",
|
|
139
|
-
agentDefinitions: "
|
|
171
|
+
agentDefinitions: "documented",
|
|
140
172
|
},
|
|
141
173
|
mcpSupport: {
|
|
142
174
|
status: "supported",
|
|
@@ -146,6 +178,9 @@ export const AGENT_REGISTRY = [
|
|
|
146
178
|
windows: ["{home}", ".gemini", "settings.json"],
|
|
147
179
|
},
|
|
148
180
|
},
|
|
181
|
+
// NOTE: Gemini CLI also reads AGENTS.md as a fallback when GEMINI.md is absent.
|
|
182
|
+
// inception-engine intentionally targets GEMINI.md to avoid ownership collisions
|
|
183
|
+
// with codex and opencode, which also write AGENTS.md.
|
|
149
184
|
agentRulesSupport: {
|
|
150
185
|
status: "supported",
|
|
151
186
|
schemaLabel: "global Markdown rules file",
|
|
@@ -168,6 +203,14 @@ export const AGENT_REGISTRY = [
|
|
|
168
203
|
reason: "Gemini CLI does not expose a documented global per-user permission or approval config surface",
|
|
169
204
|
},
|
|
170
205
|
agentDefinitionsSupport: {
|
|
206
|
+
status: "supported",
|
|
207
|
+
schemaLabel: "global agent definition Markdown file",
|
|
208
|
+
path: {
|
|
209
|
+
posix: ["{home}", ".gemini", "agents", "{name}.md"],
|
|
210
|
+
windows: ["{home}", ".gemini", "agents", "{name}.md"],
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
agentDefinitionsRepoSupport: {
|
|
171
214
|
status: "supported",
|
|
172
215
|
schemaLabel: "repo-local agent definition Markdown file",
|
|
173
216
|
path: {
|
|
@@ -175,6 +218,30 @@ export const AGENT_REGISTRY = [
|
|
|
175
218
|
windows: ["{repo}", ".gemini", "agents", "{name}.md"],
|
|
176
219
|
},
|
|
177
220
|
},
|
|
221
|
+
agentDefinitionsTomlSupport: {
|
|
222
|
+
status: "supported",
|
|
223
|
+
schemaLabel: "global agent definition TOML file",
|
|
224
|
+
path: {
|
|
225
|
+
posix: ["{home}", ".gemini", "agents", "{name}.toml"],
|
|
226
|
+
windows: ["{home}", ".gemini", "agents", "{name}.toml"],
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
agentDefinitionsTomlRepoSupport: {
|
|
230
|
+
status: "supported",
|
|
231
|
+
schemaLabel: "repo-local agent definition TOML file",
|
|
232
|
+
path: {
|
|
233
|
+
posix: ["{repo}", ".gemini", "agents", "{name}.toml"],
|
|
234
|
+
windows: ["{repo}", ".gemini", "agents", "{name}.toml"],
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
agentRulesWorkspaceSupport: {
|
|
238
|
+
status: "supported",
|
|
239
|
+
schemaLabel: "workspace-local GEMINI.md",
|
|
240
|
+
path: {
|
|
241
|
+
posix: ["{workspace}", "GEMINI.md"],
|
|
242
|
+
windows: ["{workspace}", "GEMINI.md"],
|
|
243
|
+
},
|
|
244
|
+
},
|
|
178
245
|
},
|
|
179
246
|
{
|
|
180
247
|
id: "antigravity",
|
|
@@ -203,20 +270,25 @@ export const AGENT_REGISTRY = [
|
|
|
203
270
|
windows: ["{repo}", ".agents", "rules", "{name}.md"],
|
|
204
271
|
},
|
|
205
272
|
},
|
|
273
|
+
// Antigravity shares its instruction surfaces with gemini-cli (both target
|
|
274
|
+
// the same GEMINI.md paths). surfaceKind: shared-via drives deduplication
|
|
275
|
+
// when both agents appear in the same agentRules entry.
|
|
206
276
|
agentRulesSupport: {
|
|
207
277
|
status: "supported",
|
|
208
|
-
|
|
278
|
+
surfaceKind: { kind: "shared-via", via: "gemini-cli" },
|
|
279
|
+
schemaLabel: "global Gemini blueprint instructions file",
|
|
209
280
|
path: {
|
|
210
|
-
posix: ["{
|
|
211
|
-
windows: ["{
|
|
281
|
+
posix: ["{home}", ".gemini", "GEMINI.md"],
|
|
282
|
+
windows: ["{home}", ".gemini", "GEMINI.md"],
|
|
212
283
|
},
|
|
213
284
|
},
|
|
214
285
|
agentRulesRepoSupport: {
|
|
215
286
|
status: "supported",
|
|
216
|
-
|
|
287
|
+
surfaceKind: { kind: "shared-via", via: "gemini-cli" },
|
|
288
|
+
schemaLabel: "repo-local GEMINI.md",
|
|
217
289
|
path: {
|
|
218
|
-
posix: ["{repo}", ".
|
|
219
|
-
windows: ["{repo}", ".
|
|
290
|
+
posix: ["{repo}", "GEMINI.md"],
|
|
291
|
+
windows: ["{repo}", "GEMINI.md"],
|
|
220
292
|
},
|
|
221
293
|
},
|
|
222
294
|
permissionsSupport: {
|
|
@@ -224,7 +296,7 @@ export const AGENT_REGISTRY = [
|
|
|
224
296
|
schemaLabel: "global permissions surface",
|
|
225
297
|
reason: "Antigravity does not expose a documented global per-user permission or approval config surface",
|
|
226
298
|
},
|
|
227
|
-
|
|
299
|
+
agentDefinitionsRepoSupport: {
|
|
228
300
|
status: "supported",
|
|
229
301
|
schemaLabel: "repo-local agent definition Markdown file",
|
|
230
302
|
path: {
|
|
@@ -232,6 +304,12 @@ export const AGENT_REGISTRY = [
|
|
|
232
304
|
windows: ["{repo}", ".agents", "rules", "{name}.md"],
|
|
233
305
|
},
|
|
234
306
|
},
|
|
307
|
+
agentRulesWorkspaceSupport: {
|
|
308
|
+
status: "unsupported",
|
|
309
|
+
schemaLabel: "workspace-local instruction surface",
|
|
310
|
+
reason: "Antigravity is natively repo-local and does not expose a separate workspace-local instruction surface",
|
|
311
|
+
},
|
|
312
|
+
instructionFrontmatterRequired: true,
|
|
235
313
|
},
|
|
236
314
|
{
|
|
237
315
|
id: "opencode",
|
|
@@ -251,6 +329,7 @@ export const AGENT_REGISTRY = [
|
|
|
251
329
|
detectBinary: "documented",
|
|
252
330
|
agentRules: "documented",
|
|
253
331
|
agentDefinitions: "documented",
|
|
332
|
+
permissions: "documented",
|
|
254
333
|
},
|
|
255
334
|
mcpSupport: {
|
|
256
335
|
status: "supported",
|
|
@@ -278,11 +357,22 @@ export const AGENT_REGISTRY = [
|
|
|
278
357
|
},
|
|
279
358
|
},
|
|
280
359
|
permissionsSupport: {
|
|
281
|
-
status: "
|
|
282
|
-
schemaLabel: "
|
|
283
|
-
|
|
360
|
+
status: "supported",
|
|
361
|
+
schemaLabel: "opencode.json permissions config",
|
|
362
|
+
path: {
|
|
363
|
+
posix: ["{xdg_config}", "opencode", "opencode.json"],
|
|
364
|
+
windows: ["{appdata}", "opencode", "opencode.json"],
|
|
365
|
+
},
|
|
284
366
|
},
|
|
285
367
|
agentDefinitionsSupport: {
|
|
368
|
+
status: "supported",
|
|
369
|
+
schemaLabel: "global agent definition Markdown file",
|
|
370
|
+
path: {
|
|
371
|
+
posix: ["{xdg_config}", "opencode", "agents", "{name}.md"],
|
|
372
|
+
windows: ["{appdata}", "opencode", "agents", "{name}.md"],
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
agentDefinitionsRepoSupport: {
|
|
286
376
|
status: "supported",
|
|
287
377
|
schemaLabel: "repo-local agent definition Markdown file",
|
|
288
378
|
path: {
|
|
@@ -290,6 +380,11 @@ export const AGENT_REGISTRY = [
|
|
|
290
380
|
windows: ["{repo}", ".opencode", "agents", "{name}.md"],
|
|
291
381
|
},
|
|
292
382
|
},
|
|
383
|
+
agentRulesWorkspaceSupport: {
|
|
384
|
+
status: "unsupported",
|
|
385
|
+
schemaLabel: "workspace-local AGENTS.md",
|
|
386
|
+
reason: "OpenCode does not expose a documented workspace-local instruction surface distinct from repo-local AGENTS.md",
|
|
387
|
+
},
|
|
293
388
|
},
|
|
294
389
|
{
|
|
295
390
|
id: "github-copilot",
|
|
@@ -298,6 +393,7 @@ export const AGENT_REGISTRY = [
|
|
|
298
393
|
// from `.claude/skills/` (the same path used by claude-code). Deploying
|
|
299
394
|
// via the `claude-code` skills target automatically covers Copilot — no
|
|
300
395
|
// separate `~/.copilot/skills/` path is needed or maintained.
|
|
396
|
+
skillsSurfaceKind: { kind: "shared-via", via: "claude-code" },
|
|
301
397
|
detectPaths: {
|
|
302
398
|
posix: ["{home}", ".copilot"],
|
|
303
399
|
windows: ["{home}", ".copilot"],
|
|
@@ -307,37 +403,91 @@ export const AGENT_REGISTRY = [
|
|
|
307
403
|
detectPaths: "documented",
|
|
308
404
|
detectBinary: "documented",
|
|
309
405
|
agentDefinitions: "documented",
|
|
406
|
+
mcpConfig: "documented",
|
|
310
407
|
},
|
|
311
408
|
mcpSupport: {
|
|
312
|
-
status: "
|
|
313
|
-
schemaLabel: "
|
|
314
|
-
|
|
315
|
-
reason: "GitHub Copilot MCP support will be implemented via repo-scoped devcontainer features and agent-frontmatter mappings — surfaces that are genuinely Copilot-specific and not covered by other agent targets",
|
|
409
|
+
status: "unsupported",
|
|
410
|
+
schemaLabel: "global MCP config",
|
|
411
|
+
reason: 'GitHub Copilot has no user-level MCP config file; use scope: "repo" or scope: "workspace" to target .vscode/mcp.json instead',
|
|
316
412
|
},
|
|
413
|
+
mcpRepoSupport: {
|
|
414
|
+
status: "supported",
|
|
415
|
+
schemaLabel: "repo-local .vscode/mcp.json",
|
|
416
|
+
mcpPatchKey: "servers",
|
|
417
|
+
path: {
|
|
418
|
+
posix: ["{repo}", ".vscode", "mcp.json"],
|
|
419
|
+
windows: ["{repo}", ".vscode", "mcp.json"],
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
mcpWorkspaceSupport: {
|
|
423
|
+
status: "supported",
|
|
424
|
+
schemaLabel: "workspace-local .vscode/mcp.json",
|
|
425
|
+
mcpPatchKey: "servers",
|
|
426
|
+
path: {
|
|
427
|
+
posix: ["{workspace}", ".vscode", "mcp.json"],
|
|
428
|
+
windows: ["{workspace}", ".vscode", "mcp.json"],
|
|
429
|
+
},
|
|
430
|
+
},
|
|
431
|
+
// GitHub Copilot reads Claude-native instruction files (CLAUDE.md) without
|
|
432
|
+
// a separate deploy action. These surfaces are marked shared-via claude-code
|
|
433
|
+
// with requiresPrimary: true so deploy skips emitting a separate action
|
|
434
|
+
// when claude-code is also targeted, and emits a guidance warning when it
|
|
435
|
+
// is not (copilot cannot write to these surfaces independently).
|
|
317
436
|
agentRulesSupport: {
|
|
318
|
-
status: "
|
|
437
|
+
status: "supported",
|
|
438
|
+
surfaceKind: {
|
|
439
|
+
kind: "shared-via",
|
|
440
|
+
via: "claude-code",
|
|
441
|
+
requiresPrimary: true,
|
|
442
|
+
},
|
|
319
443
|
schemaLabel: "Claude-native shared instructions",
|
|
320
|
-
|
|
444
|
+
path: {
|
|
445
|
+
posix: ["{home}", ".claude", "CLAUDE.md"],
|
|
446
|
+
windows: ["{home}", ".claude", "CLAUDE.md"],
|
|
447
|
+
},
|
|
321
448
|
},
|
|
322
449
|
agentRulesRepoSupport: {
|
|
323
|
-
status: "
|
|
450
|
+
status: "supported",
|
|
451
|
+
surfaceKind: {
|
|
452
|
+
kind: "shared-via",
|
|
453
|
+
via: "claude-code",
|
|
454
|
+
requiresPrimary: true,
|
|
455
|
+
},
|
|
324
456
|
schemaLabel: "repo-local CLAUDE.md",
|
|
325
|
-
|
|
457
|
+
path: {
|
|
458
|
+
posix: ["{repo}", "CLAUDE.md"],
|
|
459
|
+
windows: ["{repo}", "CLAUDE.md"],
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
agentRulesWorkspaceSupport: {
|
|
463
|
+
status: "supported",
|
|
464
|
+
surfaceKind: {
|
|
465
|
+
kind: "shared-via",
|
|
466
|
+
via: "claude-code",
|
|
467
|
+
requiresPrimary: true,
|
|
468
|
+
},
|
|
469
|
+
schemaLabel: "workspace-local CLAUDE.md",
|
|
470
|
+
path: {
|
|
471
|
+
posix: ["{workspace}", "CLAUDE.md"],
|
|
472
|
+
windows: ["{workspace}", "CLAUDE.md"],
|
|
473
|
+
},
|
|
326
474
|
},
|
|
327
475
|
permissionsSupport: {
|
|
328
476
|
status: "unsupported",
|
|
329
477
|
schemaLabel: "global permissions surface",
|
|
330
478
|
reason: "GitHub Copilot permissions are managed via organization policy, not a deployable per-user config surface",
|
|
331
479
|
},
|
|
332
|
-
|
|
480
|
+
agentDefinitionsRepoSupport: {
|
|
333
481
|
status: "supported",
|
|
334
482
|
schemaLabel: "repo-local agent definition Markdown file",
|
|
335
483
|
path: {
|
|
336
|
-
posix: ["{repo}", ".github", "agents", "{name}.
|
|
337
|
-
windows: ["{repo}", ".github", "agents", "{name}.
|
|
484
|
+
posix: ["{repo}", ".github", "copilot", "agents", "{name}.md"],
|
|
485
|
+
windows: ["{repo}", ".github", "copilot", "agents", "{name}.md"],
|
|
338
486
|
},
|
|
339
487
|
},
|
|
340
488
|
policyNote: "Organization policies may override locally deployed configuration. Verify with your GitHub org admin if deployed skills or rules are not active.",
|
|
489
|
+
instructionFrontmatterRequired: true,
|
|
490
|
+
enterprisePolicyDetection: true,
|
|
341
491
|
},
|
|
342
492
|
];
|
|
343
493
|
export const AGENT_REGISTRY_BY_ID = Object.fromEntries(AGENT_REGISTRY.map((a) => [a.id, a]));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AgentDefinitionEntry } from "../../schemas/manifest.ts";
|
|
2
|
+
import type { AgentId, FileWriteDeployAction, FileWriteRevertAction, PlanWarning } from "../../types.ts";
|
|
3
|
+
export interface AgentDefinitionsAdapterResult {
|
|
4
|
+
actions: FileWriteDeployAction[];
|
|
5
|
+
warnings: PlanWarning[];
|
|
6
|
+
}
|
|
7
|
+
export declare function compileAgentDefinitionActions(entry: AgentDefinitionEntry, sourceDir: string, resolvedSourceDir: string, realRoot: string, detectedAgents: AgentId[], home: string, repo?: string, workspace?: string): Promise<AgentDefinitionsAdapterResult>;
|
|
8
|
+
export declare function compileAgentDefinitionReverts(entry: AgentDefinitionEntry, agentFilter: AgentId[] | null, home: string, repo?: string, workspace?: string): FileWriteRevertAction[];
|