@cg3/equip 0.9.0 → 0.9.1
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 +93 -157
- package/bin/equip.js +84 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,99 +1,32 @@
|
|
|
1
1
|
# @cg3/equip
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Cross-platform installer for MCP tools, behavioral rules, agent skills, and lifecycle hooks.
|
|
4
4
|
|
|
5
|
-
[Join the Discord](https://discord.gg/bBcRHT4J)
|
|
5
|
+
[Join the Discord](https://discord.gg/bBcRHT4J) | [Tool Author Guide](./docs/tool-author.md)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## What It Does
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
You build an MCP tool. You want it to work on Claude Code, Cursor, VS Code, Windsurf, Cline, Roo Code, Codex, Gemini CLI, and more. Each platform has its own config format, file paths, root keys, URL fields, and quirks.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
npx @cg3/equip demo
|
|
13
|
-
```
|
|
11
|
+
Equip handles all of that. One setup script, 11 platforms.
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
## Install
|
|
16
14
|
|
|
17
15
|
```bash
|
|
18
|
-
|
|
19
|
-
npx @cg3/equip demo --uninstall # clean up demo files
|
|
16
|
+
npm install -g @cg3/equip
|
|
20
17
|
```
|
|
21
18
|
|
|
22
|
-
## Supported Platforms
|
|
23
|
-
|
|
24
|
-
Equip supports **11 platforms** across two tiers, depending on whether the platform has a writable location for behavioral rules.
|
|
25
|
-
|
|
26
|
-
### Full Support — MCP + Behavioral Rules
|
|
27
|
-
|
|
28
|
-
These platforms get both MCP server config *and* auto-installed behavioral rules. Rules teach agents *when* to use your tool (e.g., "search before debugging") and are versioned for idempotent updates.
|
|
29
|
-
|
|
30
|
-
| Platform | MCP Config | Rules |
|
|
31
|
-
|---|---|---|
|
|
32
|
-
| Claude Code | `~/.claude.json` (JSON, `mcpServers`) | `~/.claude/CLAUDE.md` (append) |
|
|
33
|
-
| Windsurf | `~/.codeium/windsurf/mcp_config.json` (JSON, `mcpServers`, `serverUrl`) | `~/.codeium/windsurf/memories/global_rules.md` (append) |
|
|
34
|
-
| Cline | `globalStorage/.../cline_mcp_settings.json` (JSON, `mcpServers`) | `~/Documents/Cline/Rules/` (standalone file) |
|
|
35
|
-
| Roo Code | `globalStorage/.../cline_mcp_settings.json` (JSON, `mcpServers`) | `~/.roo/rules/` (standalone file) |
|
|
36
|
-
| Codex | `~/.codex/config.toml` (TOML, `mcp_servers`) | `~/.codex/AGENTS.md` (append) |
|
|
37
|
-
| Gemini CLI | `~/.gemini/settings.json` (JSON, `mcpServers`, `httpUrl`) | `~/.gemini/GEMINI.md` (append) |
|
|
38
|
-
|
|
39
|
-
### MCP Only — No Writable Rules Path
|
|
40
|
-
|
|
41
|
-
These platforms get MCP server config but don't have a writable global rules file (`rulesPath: null`). The MCP tools work fine — but equip can't auto-install behavioral rules.
|
|
42
|
-
|
|
43
|
-
| Platform | MCP Config |
|
|
44
|
-
|---|---|
|
|
45
|
-
| Cursor | `~/.cursor/mcp.json` (JSON, `mcpServers`, `type: "streamable-http"`) |
|
|
46
|
-
| VS Code | `Code/User/mcp.json` (JSON, `servers`, `type: "http"`) |
|
|
47
|
-
| Junie (JetBrains) | `~/.junie/mcp/mcp.json` (JSON, `mcpServers`) |
|
|
48
|
-
| Copilot (JetBrains) | `~/.config/github-copilot/intellij/mcp.json` (JSON, `mcpServers`) |
|
|
49
|
-
| Copilot CLI | `~/.copilot/mcp-config.json` (JSON, `mcpServers`) |
|
|
50
|
-
|
|
51
|
-
For these platforms, `installRules()` returns `{ action: "clipboard" }` if the platform is in the configurable `clipboardPlatforms` list (default: `["cursor", "vscode"]`) and automatically copies the rules content to the system clipboard. For platforms with no rules path and not in `clipboardPlatforms`, it returns `{ action: "skipped" }`.
|
|
52
|
-
|
|
53
|
-
### Hooks — Structural Enforcement
|
|
54
|
-
|
|
55
|
-
Some platforms support **lifecycle hooks** — scripts that run automatically at key moments (e.g., after a tool fails, when the agent finishes responding). Hooks provide structural enforcement that behavioral rules alone cannot:
|
|
56
|
-
|
|
57
|
-
| Platform | Hooks Support | Events |
|
|
58
|
-
|---|---|---|
|
|
59
|
-
| Claude Code | ✅ | `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `Stop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `Notification`, `SubagentStart`, `SubagentStop`, `PreCompact`, `TaskCompleted` |
|
|
60
|
-
| All others | ❌ | — |
|
|
61
|
-
|
|
62
|
-
When hooks are supported, equip writes the consumer-provided scripts to a configurable directory (default: `~/.${name}/hooks/`) and registers them in the platform's settings. Hooks are a **silent enhancement** — if the platform doesn't support them, equip installs only MCP + rules without any error or warning.
|
|
63
|
-
|
|
64
|
-
Hook scripts and event bindings are defined by the consumer (your package), not by equip. Equip provides only the installation infrastructure — capabilities detection, file writing, settings registration, and cleanup. As more platforms add hook support, equip can enable them without consumer code changes.
|
|
65
|
-
|
|
66
19
|
## Quick Start
|
|
67
20
|
|
|
68
21
|
```bash
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
## CLI Usage
|
|
75
|
-
|
|
76
|
-
You can invoke any npm package that has an equip-based setup command:
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
# Full package name + command
|
|
80
|
-
npx @cg3/equip @cg3/prior-node setup
|
|
81
|
-
|
|
82
|
-
# Shorthand (if registered)
|
|
83
|
-
npx @cg3/equip prior
|
|
22
|
+
equip prior # Install a tool
|
|
23
|
+
equip status # See what's installed across all platforms
|
|
24
|
+
equip doctor # Validate config integrity
|
|
25
|
+
equip update # Update equip + migrate configs
|
|
26
|
+
unequip prior # Remove a tool
|
|
84
27
|
```
|
|
85
28
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
### Shorthand Registry
|
|
89
|
-
|
|
90
|
-
Registered shorthands save typing. Open a PR to [`registry.json`](./registry.json) to add yours:
|
|
91
|
-
|
|
92
|
-
| Shorthand | Expands to |
|
|
93
|
-
|---|---|
|
|
94
|
-
| `prior` | `@cg3/prior-node setup` |
|
|
95
|
-
|
|
96
|
-
## Programmatic Usage
|
|
29
|
+
## For Tool Authors
|
|
97
30
|
|
|
98
31
|
```js
|
|
99
32
|
const { Equip } = require("@cg3/equip");
|
|
@@ -105,103 +38,106 @@ const equip = new Equip({
|
|
|
105
38
|
content: `<!-- my-tool:v1.0.0 -->\n## My Tool\nAlways check My Tool first.\n<!-- /my-tool -->`,
|
|
106
39
|
version: "1.0.0",
|
|
107
40
|
marker: "my-tool",
|
|
108
|
-
|
|
41
|
+
},
|
|
42
|
+
skill: {
|
|
43
|
+
name: "lookup",
|
|
44
|
+
files: [{ path: "SKILL.md", content: "---\nname: lookup\ndescription: Look up docs\n---\n\n# Lookup\n" }],
|
|
109
45
|
},
|
|
110
46
|
});
|
|
111
47
|
|
|
112
|
-
// Detect installed platforms
|
|
113
48
|
const platforms = equip.detect();
|
|
114
|
-
|
|
115
|
-
// Install MCP + rules on all detected platforms
|
|
116
49
|
for (const p of platforms) {
|
|
117
50
|
equip.installMcp(p, "api_key_here");
|
|
118
51
|
equip.installRules(p);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
// Uninstall
|
|
122
|
-
for (const p of platforms) {
|
|
123
|
-
equip.uninstallMcp(p);
|
|
124
|
-
equip.uninstallRules(p);
|
|
52
|
+
equip.installSkill(p);
|
|
125
53
|
}
|
|
126
54
|
```
|
|
127
55
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
### `new Equip(config)`
|
|
131
|
-
|
|
132
|
-
- `config.name` — Server name in MCP configs (required)
|
|
133
|
-
- `config.serverUrl` — Remote MCP server URL (required unless `stdio` provided)
|
|
134
|
-
- `config.rules` — Behavioral rules config (optional)
|
|
135
|
-
- `content` — Markdown content with version markers
|
|
136
|
-
- `version` — Version string for idempotency tracking
|
|
137
|
-
- `marker` — Marker name used in `<!-- marker:vX.X -->` comments
|
|
138
|
-
- `fileName` — Standalone filename for directory-based platforms
|
|
139
|
-
- `clipboardPlatforms` — Platform IDs that use clipboard (default: `["cursor", "vscode"]`)
|
|
140
|
-
- `config.stdio` — Stdio transport config (optional, alternative to HTTP)
|
|
141
|
-
- `command`, `args`, `envKey`
|
|
142
|
-
- `config.hooks` — Lifecycle hook definitions (optional, array)
|
|
143
|
-
- `event` — Hook event name (e.g., `"PostToolUseFailure"`)
|
|
144
|
-
- `matcher` — Regex matcher for event filtering (optional, e.g., `"Bash"`)
|
|
145
|
-
- `script` — Hook script content (Node.js)
|
|
146
|
-
- `name` — Script filename (without `.js` extension)
|
|
147
|
-
- `config.hookDir` — Directory for hook scripts (default: `~/.${name}/hooks/`)
|
|
148
|
-
|
|
149
|
-
### Instance Methods
|
|
150
|
-
|
|
151
|
-
- `equip.detect()` — Returns array of detected platform objects
|
|
152
|
-
- `equip.installMcp(platform, apiKey, options?)` — Install MCP config
|
|
153
|
-
- `equip.uninstallMcp(platform, dryRun?)` — Remove MCP config
|
|
154
|
-
- `equip.updateMcpKey(platform, apiKey, transport?)` — Update API key
|
|
155
|
-
- `equip.installRules(platform, options?)` — Install behavioral rules
|
|
156
|
-
- `equip.uninstallRules(platform, dryRun?)` — Remove behavioral rules
|
|
157
|
-
- `equip.readMcp(platform)` — Check if MCP is configured
|
|
158
|
-
- `equip.buildConfig(platformId, apiKey, transport?)` — Build MCP config object
|
|
159
|
-
- `equip.installHooks(platform, options?)` — Install lifecycle hooks (if supported)
|
|
160
|
-
- `equip.uninstallHooks(platform, options?)` — Remove hooks
|
|
161
|
-
- `equip.hasHooks(platform, options?)` — Check if hooks are installed
|
|
162
|
-
- `equip.supportsHooks(platform)` — Check if platform supports hooks
|
|
163
|
-
|
|
164
|
-
### Utilities
|
|
56
|
+
See the [Tool Author Guide](./docs/tool-author.md) for the complete walkthrough, or run `equip demo` for an interactive example.
|
|
165
57
|
|
|
166
|
-
|
|
167
|
-
const { createManualPlatform, platformName, resolvePlatformId, parseRulesVersion, markerPatterns, cli, KNOWN_PLATFORMS, PLATFORM_REGISTRY, getPlatform } = require("@cg3/equip");
|
|
168
|
-
```
|
|
58
|
+
## The Four Layers
|
|
169
59
|
|
|
170
|
-
|
|
171
|
-
- `platformName(id)` — Human-readable display name for a platform ID
|
|
172
|
-
- `resolvePlatformId(input)` — Resolve a friendly name or alias to a canonical platform ID (e.g., `"claude"` → `"claude-code"`, `"roo"` → `"roo-code"`)
|
|
173
|
-
- `parseRulesVersion(content, marker)` — Extract version from a marker block in content
|
|
174
|
-
- `markerPatterns(marker)` — Get regex patterns for a marker name
|
|
175
|
-
- `KNOWN_PLATFORMS` — Array of all supported platform IDs
|
|
176
|
-
- `PLATFORM_REGISTRY` — Map of platform definitions (for advanced use)
|
|
177
|
-
- `getPlatform(id)` — Get a platform definition by ID (throws if unknown)
|
|
178
|
-
- `cli` — Output helpers: `log`, `ok`, `fail`, `warn`, `info`, `step`, `prompt`, `copyToClipboard`, color constants
|
|
60
|
+
Equip distributes your tool through four complementary layers:
|
|
179
61
|
|
|
180
|
-
|
|
62
|
+
| Layer | What It Does | Reliability | Coverage |
|
|
63
|
+
|---|---|---|---|
|
|
64
|
+
| [MCP Config](./docs/mcp-servers.md) | Makes the tool *available* — agent can call it | Baseline | 11 platforms |
|
|
65
|
+
| [Behavioral Rules](./docs/rules.md) | Teaches the agent *when* to call it | Strong | 8 platforms + clipboard |
|
|
66
|
+
| [Agent Skills](./docs/skills.md) | Gives the agent *detailed knowledge* of how to use it | Strong (varies) | 8 platforms |
|
|
67
|
+
| [Lifecycle Hooks](./docs/hooks.md) | *Structurally enforces* behavior at key moments | Strongest | 1 platform (Claude Code) |
|
|
181
68
|
|
|
182
|
-
-
|
|
183
|
-
- **11 platforms** — Covers ~80% of active AI coding tool users
|
|
184
|
-
- **Platform-aware** — Handles each platform's config quirks (JSON vs TOML, root keys, URL fields, type requirements)
|
|
185
|
-
- **Non-destructive** — Merges into existing configs, creates backups, preserves other servers
|
|
186
|
-
- **Versioned rules** — Marker-based blocks enable idempotent updates without clobbering user content
|
|
187
|
-
- **Dry-run support** — Preview changes without writing files
|
|
188
|
-
- **CLI helpers** — Colored output, prompts, clipboard utilities included
|
|
69
|
+
Each layer compensates for the limitations of the one before it. Tool descriptions alone don't reliably trigger behavior. Rules are stronger but can be compacted. Skills add depth but may not auto-invoke on all platforms. Hooks fire automatically, independent of the agent's memory.
|
|
189
70
|
|
|
190
|
-
|
|
71
|
+
No layer is a silver bullet. Together, they give you the best coverage available.
|
|
191
72
|
|
|
192
|
-
|
|
73
|
+
## Supported Platforms
|
|
193
74
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
75
|
+
| Platform | MCP | Rules | Skills | Hooks |
|
|
76
|
+
|---|---|---|---|---|
|
|
77
|
+
| Claude Code | Yes | Yes | Yes | Yes |
|
|
78
|
+
| Cursor | Yes | clipboard | Yes | -- |
|
|
79
|
+
| VS Code / Copilot | Yes | clipboard | Yes | -- |
|
|
80
|
+
| Windsurf | Yes | Yes | Yes | -- |
|
|
81
|
+
| Cline | Yes | Yes | Yes | -- |
|
|
82
|
+
| Roo Code | Yes | Yes | Yes | -- |
|
|
83
|
+
| Codex | Yes | Yes | Yes | -- |
|
|
84
|
+
| Gemini CLI | Yes | Yes | Yes | -- |
|
|
85
|
+
| Junie | Yes | -- | -- | -- |
|
|
86
|
+
| Copilot (JetBrains) | Yes | -- | -- | -- |
|
|
87
|
+
| Copilot CLI | Yes | -- | -- | -- |
|
|
88
|
+
|
|
89
|
+
See [Platforms](./docs/platforms.md) for full details — config paths, detection, and per-platform quirks.
|
|
90
|
+
|
|
91
|
+
## CLI Commands
|
|
92
|
+
|
|
93
|
+
| Command | Description |
|
|
94
|
+
|---|---|
|
|
95
|
+
| `equip <tool>` | Install an MCP tool |
|
|
96
|
+
| `equip status` | Cross-platform MCP server inventory |
|
|
97
|
+
| `equip doctor` | Validate config integrity, detect drift |
|
|
98
|
+
| `equip update` | Update equip and migrate configs |
|
|
99
|
+
| `equip list` | Show registered tools |
|
|
100
|
+
| `equip uninstall <tool>` | Remove a tool (alias: `unequip`) |
|
|
101
|
+
| `equip demo` | Run the interactive demo |
|
|
197
102
|
|
|
198
|
-
|
|
103
|
+
See [CLI Reference](./docs/cli.md) for details.
|
|
199
104
|
|
|
200
|
-
|
|
201
|
-
- **Behavioral rules** are stronger, but can be dropped during context window compaction in long sessions, and the agent can still rationalize skipping them.
|
|
202
|
-
- **Lifecycle hooks** are the strongest available enforcement — they fire automatically at the platform level, independent of the agent's memory or reasoning. Not all platforms support hooks yet, but equip installs them where available and silently skips where not.
|
|
105
|
+
## Documentation
|
|
203
106
|
|
|
204
|
-
|
|
107
|
+
| Guide | Audience |
|
|
108
|
+
|---|---|
|
|
109
|
+
| [Tool Author Guide](./docs/tool-author.md) | Building a setup script with equip |
|
|
110
|
+
| [Platforms](./docs/platforms.md) | Supported platforms, capabilities, paths |
|
|
111
|
+
| [MCP Servers](./docs/mcp-servers.md) | Config format translation, API reference |
|
|
112
|
+
| [Behavioral Rules](./docs/rules.md) | Marker-based versioned instructions |
|
|
113
|
+
| [Agent Skills](./docs/skills.md) | SKILL.md format, cross-platform distribution |
|
|
114
|
+
| [Lifecycle Hooks](./docs/hooks.md) | Event-driven enforcement scripts |
|
|
115
|
+
| [CLI Reference](./docs/cli.md) | Commands, state tracking, tool registry |
|
|
116
|
+
|
|
117
|
+
## Key Design Decisions
|
|
118
|
+
|
|
119
|
+
- **Zero runtime dependencies** — installs fast, no supply chain risk
|
|
120
|
+
- **Platform registry as single source of truth** — one place for all platform knowledge
|
|
121
|
+
- **Atomic file writes** — crash-safe config modifications
|
|
122
|
+
- **State reconciliation from disk** — CLI scans what's actually installed, no stale cache
|
|
123
|
+
- **Corrupt config detection** — throws instead of silently overwriting
|
|
124
|
+
|
|
125
|
+
## Tool Registry
|
|
126
|
+
|
|
127
|
+
Register a shorthand for your tool so users can run `equip <name>`. Open a PR to [`registry.json`](./registry.json):
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"my-tool": {
|
|
132
|
+
"package": "@myorg/my-tool",
|
|
133
|
+
"command": "setup",
|
|
134
|
+
"description": "What my tool does",
|
|
135
|
+
"marker": "my-tool",
|
|
136
|
+
"hookDir": "~/.my-tool/hooks",
|
|
137
|
+
"skillName": "my-skill"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
205
141
|
|
|
206
142
|
## License
|
|
207
143
|
|
package/bin/equip.js
CHANGED
|
@@ -60,6 +60,8 @@ function cmdHelp() {
|
|
|
60
60
|
console.log("");
|
|
61
61
|
console.log("Commands:");
|
|
62
62
|
console.log(" <tool> Install an MCP tool (e.g. equip prior)");
|
|
63
|
+
console.log(" ./script.js Run a local setup script (for development)");
|
|
64
|
+
console.log(" . Run current directory's package bin entry");
|
|
63
65
|
console.log(" uninstall <tool> Remove an installed tool (alias: unequip)");
|
|
64
66
|
console.log(" status Show all MCP servers across all platforms");
|
|
65
67
|
console.log(" doctor Validate config integrity and detect drift");
|
|
@@ -137,7 +139,20 @@ function cmdUpdate() {
|
|
|
137
139
|
|
|
138
140
|
// ─── Tool Dispatch ──────────────────────────────────────────
|
|
139
141
|
|
|
142
|
+
function isLocalPath(arg) {
|
|
143
|
+
return arg.startsWith("./") || arg.startsWith("../") || arg.startsWith("/")
|
|
144
|
+
|| arg.startsWith(".\\") || arg.startsWith("..\\")
|
|
145
|
+
|| arg === "."
|
|
146
|
+
|| arg.endsWith(".js");
|
|
147
|
+
}
|
|
148
|
+
|
|
140
149
|
function dispatchTool(alias, extraArgs) {
|
|
150
|
+
// Local path: run directly with node
|
|
151
|
+
if (isLocalPath(alias)) {
|
|
152
|
+
runLocal(alias, extraArgs);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
|
|
141
156
|
const entry = TOOLS[alias];
|
|
142
157
|
|
|
143
158
|
if (!entry) {
|
|
@@ -157,6 +172,75 @@ function dispatchTool(alias, extraArgs) {
|
|
|
157
172
|
spawnTool(entry.package, entry.command, extraArgs, alias);
|
|
158
173
|
}
|
|
159
174
|
|
|
175
|
+
/**
|
|
176
|
+
* Run a local script or package directory.
|
|
177
|
+
* - equip ./piratehat.js → node ./piratehat.js
|
|
178
|
+
* - equip . → reads package.json bin, runs it
|
|
179
|
+
* - equip ../my-tool/setup.js → node ../my-tool/setup.js
|
|
180
|
+
*/
|
|
181
|
+
function runLocal(localPath, extraArgs) {
|
|
182
|
+
const _path = require("path");
|
|
183
|
+
const _fs = require("fs");
|
|
184
|
+
let scriptPath;
|
|
185
|
+
let toolName = null;
|
|
186
|
+
|
|
187
|
+
if (localPath === "." || (_fs.existsSync(localPath) && _fs.statSync(localPath).isDirectory())) {
|
|
188
|
+
// Directory — look for package.json with bin field
|
|
189
|
+
const pkgPath = _path.join(localPath, "package.json");
|
|
190
|
+
if (!_fs.existsSync(pkgPath)) {
|
|
191
|
+
console.error(`No package.json found in ${localPath}`);
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
const pkg = JSON.parse(_fs.readFileSync(pkgPath, "utf-8"));
|
|
195
|
+
toolName = pkg.name?.replace(/^@[^/]+\//, "") || null;
|
|
196
|
+
const binEntries = pkg.bin;
|
|
197
|
+
if (!binEntries || typeof binEntries !== "object") {
|
|
198
|
+
console.error(`No bin field in ${pkgPath}`);
|
|
199
|
+
process.exit(1);
|
|
200
|
+
}
|
|
201
|
+
// Use the first bin entry
|
|
202
|
+
const binScript = Object.values(binEntries)[0];
|
|
203
|
+
scriptPath = _path.resolve(localPath, binScript);
|
|
204
|
+
} else {
|
|
205
|
+
// Direct script path
|
|
206
|
+
scriptPath = _path.resolve(localPath);
|
|
207
|
+
// Infer tool name from filename (piratehat.js → piratehat)
|
|
208
|
+
toolName = _path.basename(scriptPath, ".js");
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (!_fs.existsSync(scriptPath)) {
|
|
212
|
+
console.error(`Script not found: ${scriptPath}`);
|
|
213
|
+
process.exit(1);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
const child = spawn(process.execPath, [scriptPath, ...extraArgs], {
|
|
217
|
+
stdio: "inherit",
|
|
218
|
+
env: { ...process.env, EQUIP_VERSION },
|
|
219
|
+
});
|
|
220
|
+
child.on("close", (code) => {
|
|
221
|
+
if (toolName) {
|
|
222
|
+
try {
|
|
223
|
+
const { reconcileState } = require("../dist/lib/reconcile");
|
|
224
|
+
const changed = reconcileState({
|
|
225
|
+
toolName,
|
|
226
|
+
package: toolName,
|
|
227
|
+
marker: toolName,
|
|
228
|
+
});
|
|
229
|
+
if (changed > 0) {
|
|
230
|
+
process.stderr.write(`\n equip: tracked ${toolName} on ${changed} platform${changed === 1 ? "" : "s"}\n`);
|
|
231
|
+
}
|
|
232
|
+
} catch (e) {
|
|
233
|
+
process.stderr.write(`\n[equip] state reconciliation failed: ${e.message}\n`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
process.exit(code || 0);
|
|
237
|
+
});
|
|
238
|
+
child.on("error", (err) => {
|
|
239
|
+
console.error(`Failed to run ${scriptPath}: ${err.message}`);
|
|
240
|
+
process.exit(1);
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
|
|
160
244
|
function spawnTool(pkg, command, extraArgs, toolName) {
|
|
161
245
|
const npxCmd = process.platform === "win32" ? "npx.cmd" : "npx";
|
|
162
246
|
const child = spawn(npxCmd, ["-y", `${pkg}@latest`, command, ...extraArgs], {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAgC,cAAc,EAAE,MAAM,aAAa,CAAC;AAE9F,OAAO,EAA+D,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChP,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AACjC,OAAO,EAA0C,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIxG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,cAAM,KAAK;IACT,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;gBAEd,MAAM,EAAE,WAAW;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -69,8 +69,6 @@ class Equip {
|
|
|
69
69
|
constructor(config) {
|
|
70
70
|
if (!config.name)
|
|
71
71
|
throw new Error("Equip: name is required");
|
|
72
|
-
if (!config.serverUrl && !config.stdio)
|
|
73
|
-
throw new Error("Equip: serverUrl or stdio is required");
|
|
74
72
|
this.name = config.name;
|
|
75
73
|
this.serverUrl = config.serverUrl;
|
|
76
74
|
this.rules = config.rules || null;
|
|
@@ -87,6 +85,8 @@ class Equip {
|
|
|
87
85
|
const env = { [this.stdio.envKey]: apiKey };
|
|
88
86
|
return (0, mcp_1.buildStdioConfig)(this.stdio.command, this.stdio.args, env);
|
|
89
87
|
}
|
|
88
|
+
if (!this.serverUrl)
|
|
89
|
+
throw new Error("Equip: serverUrl is required for MCP installation");
|
|
90
90
|
return (0, mcp_1.buildHttpConfigWithAuth)(this.serverUrl, apiKey, platformId);
|
|
91
91
|
}
|
|
92
92
|
installMcp(platform, apiKey, options = {}) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,4GAA4G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE5G,2CAA6B;AAC7B,uCAAyB;AAEzB,yCAA+C;AAC/C,mCAA4H;AAC5H,uCAA8F;AAmO5F,kGAnOO,yBAAiB,OAmOP;AACjB,+FApOwD,sBAAc,OAoOxD;AAnOhB,uCAAyB;AACzB,uCAA+G;AAC/G,+CAAgP;AAyN9O,qGAzNO,gCAAoB,OAyNP;AACpB,6FA1N6B,wBAAY,OA0N7B;AACZ,kGA3N2C,6BAAiB,OA2N3C;AACjB,gGA5N8D,2BAAe,OA4N9D;AACf,kGA7N+E,6BAAiB,OA6N/E;AACjB,4FA9NkG,uBAAW,OA8NlG;AA7Nb,+CAAiC;AAkO/B,kBAAG;AAjOL,yCAAwG;AAwBxG;;GAEG;AACH,MAAM,KAAK;IACT,IAAI,CAAS;IACb,SAAS,CAAU;IACnB,KAAK,CAA8B;IACnC,KAAK,CAA8B;IACnC,QAAQ,CAA0B;IAClC,OAAO,CAAS;IAChB,KAAK,CAAqB;IAE1B,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cg3/equip",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "Universal MCP + behavioral rules installer for AI coding agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
],
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "tsc",
|
|
24
|
-
"test": "tsc && node --test test/equip.test.js",
|
|
24
|
+
"test": "tsc && node --test test/equip.test.js test/docs.test.js",
|
|
25
25
|
"prepublishOnly": "npm run build"
|
|
26
26
|
},
|
|
27
27
|
"keywords": [
|