oh-my-copilot 4.13.21 → 4.13.45
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +8 -0
- package/agents/code-reviewer.agent.md +24 -6
- package/agents/designer.agent.md +12 -0
- package/bridge/cli.cjs +1978 -1214
- package/bridge/mcp-server.cjs +678 -261
- package/bridge/runtime-cli.cjs +55 -8
- package/bridge/team.js +507 -38
- package/dist/__tests__/agent-registry.test.js +92 -1
- package/dist/__tests__/agent-registry.test.js.map +1 -1
- package/dist/__tests__/bedrock-model-routing.test.js +18 -17
- package/dist/__tests__/bedrock-model-routing.test.js.map +1 -1
- package/dist/__tests__/delegation-enforcer.test.js +46 -6
- package/dist/__tests__/delegation-enforcer.test.js.map +1 -1
- package/dist/__tests__/hooks/session-end-cleanup.test.d.ts +2 -0
- package/dist/__tests__/hooks/session-end-cleanup.test.d.ts.map +1 -0
- package/dist/__tests__/hooks/session-end-cleanup.test.js +93 -0
- package/dist/__tests__/hooks/session-end-cleanup.test.js.map +1 -0
- package/dist/__tests__/hud/stdin.test.d.ts +2 -0
- package/dist/__tests__/hud/stdin.test.d.ts.map +1 -0
- package/dist/__tests__/hud/stdin.test.js +556 -0
- package/dist/__tests__/hud/stdin.test.js.map +1 -0
- package/dist/__tests__/model-routing-override-three-site-sync.test.d.ts +2 -0
- package/dist/__tests__/model-routing-override-three-site-sync.test.d.ts.map +1 -0
- package/dist/__tests__/model-routing-override-three-site-sync.test.js +75 -0
- package/dist/__tests__/model-routing-override-three-site-sync.test.js.map +1 -0
- package/dist/__tests__/non-claude-provider-detection.test.js +37 -0
- package/dist/__tests__/non-claude-provider-detection.test.js.map +1 -1
- package/dist/__tests__/package-dir-resolution-regression.test.js +25 -0
- package/dist/__tests__/package-dir-resolution-regression.test.js.map +1 -1
- package/dist/__tests__/pre-tool-enforcer.test.js +51 -0
- package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -1
- package/dist/__tests__/session-start-script-context.test.js +121 -0
- package/dist/__tests__/session-start-script-context.test.js.map +1 -1
- package/dist/__tests__/setup-claude-md-script.test.js +44 -1
- package/dist/__tests__/setup-claude-md-script.test.js.map +1 -1
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +2 -1
- package/dist/agents/definitions.js.map +1 -1
- package/dist/autoresearch/__tests__/decide-outcome.test.d.ts +2 -0
- package/dist/autoresearch/__tests__/decide-outcome.test.d.ts.map +1 -0
- package/dist/autoresearch/__tests__/decide-outcome.test.js +69 -0
- package/dist/autoresearch/__tests__/decide-outcome.test.js.map +1 -0
- package/dist/autoresearch/runtime.d.ts.map +1 -1
- package/dist/autoresearch/runtime.js +16 -2
- package/dist/autoresearch/runtime.js.map +1 -1
- package/dist/cli/__tests__/launch.test.js +23 -0
- package/dist/cli/__tests__/launch.test.js.map +1 -1
- package/dist/cli/__tests__/self-improve-paths.test.js +3 -2
- package/dist/cli/__tests__/self-improve-paths.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +100 -0
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/commands/__tests__/team-role-shorthand.test.js +30 -0
- package/dist/cli/commands/__tests__/team-role-shorthand.test.js.map +1 -1
- package/dist/cli/commands/__tests__/team.test.js +48 -1
- package/dist/cli/commands/__tests__/team.test.js.map +1 -1
- package/dist/cli/commands/team.d.ts +2 -0
- package/dist/cli/commands/team.d.ts.map +1 -1
- package/dist/cli/commands/team.js +9 -2
- package/dist/cli/commands/team.js.map +1 -1
- package/dist/cli/launch.d.ts.map +1 -1
- package/dist/cli/launch.js +7 -0
- package/dist/cli/launch.js.map +1 -1
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +34 -3
- package/dist/cli/team.js.map +1 -1
- package/dist/config/__tests__/loader.test.js +35 -4
- package/dist/config/__tests__/loader.test.js.map +1 -1
- package/dist/config/__tests__/models.test.js +126 -3
- package/dist/config/__tests__/models.test.js.map +1 -1
- package/dist/config/models.d.ts +8 -0
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +119 -8
- package/dist/config/models.js.map +1 -1
- package/dist/features/delegation-enforcer.d.ts.map +1 -1
- package/dist/features/delegation-enforcer.js +10 -9
- package/dist/features/delegation-enforcer.js.map +1 -1
- package/dist/hooks/__tests__/bridge-routing.test.js +1 -0
- package/dist/hooks/__tests__/bridge-routing.test.js.map +1 -1
- package/dist/hooks/autopilot/enforcement.d.ts.map +1 -1
- package/dist/hooks/autopilot/enforcement.js +19 -0
- package/dist/hooks/autopilot/enforcement.js.map +1 -1
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +26 -4
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/persistent-mode/stop-hook-blocking.test.js +37 -1
- package/dist/hooks/persistent-mode/stop-hook-blocking.test.js.map +1 -1
- package/dist/hooks/session-end/index.d.ts +9 -2
- package/dist/hooks/session-end/index.d.ts.map +1 -1
- package/dist/hooks/session-end/index.js +90 -35
- package/dist/hooks/session-end/index.js.map +1 -1
- package/dist/hud/stdin.d.ts +12 -1
- package/dist/hud/stdin.d.ts.map +1 -1
- package/dist/hud/stdin.js +123 -18
- package/dist/hud/stdin.js.map +1 -1
- package/dist/hud/types.d.ts +1 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/installer/__tests__/session-start-template.test.d.ts +2 -0
- package/dist/installer/__tests__/session-start-template.test.d.ts.map +1 -0
- package/dist/installer/__tests__/session-start-template.test.js +174 -0
- package/dist/installer/__tests__/session-start-template.test.js.map +1 -0
- package/dist/lib/__tests__/mode-state-io.test.js +75 -12
- package/dist/lib/__tests__/mode-state-io.test.js.map +1 -1
- package/dist/lib/mode-state-io.d.ts +11 -0
- package/dist/lib/mode-state-io.d.ts.map +1 -1
- package/dist/lib/mode-state-io.js +64 -0
- package/dist/lib/mode-state-io.js.map +1 -1
- package/dist/lib/worktree-paths.d.ts +12 -0
- package/dist/lib/worktree-paths.d.ts.map +1 -1
- package/dist/lib/worktree-paths.js +75 -0
- package/dist/lib/worktree-paths.js.map +1 -1
- package/dist/planning/__tests__/artifacts.test.d.ts +2 -0
- package/dist/planning/__tests__/artifacts.test.d.ts.map +1 -0
- package/dist/planning/__tests__/artifacts.test.js +486 -0
- package/dist/planning/__tests__/artifacts.test.js.map +1 -0
- package/dist/planning/artifact-names.d.ts +13 -0
- package/dist/planning/artifact-names.d.ts.map +1 -0
- package/dist/planning/artifact-names.js +108 -0
- package/dist/planning/artifact-names.js.map +1 -0
- package/dist/planning/artifacts.d.ts +47 -0
- package/dist/planning/artifacts.d.ts.map +1 -0
- package/dist/planning/artifacts.js +221 -0
- package/dist/planning/artifacts.js.map +1 -0
- package/dist/team/__tests__/api-interop.compatibility.test.js +194 -5
- package/dist/team/__tests__/api-interop.compatibility.test.js.map +1 -1
- package/dist/team/__tests__/model-contract.test.js +92 -2
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/runtime-v2.dispatch.test.js +30 -0
- package/dist/team/__tests__/runtime-v2.dispatch.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +39 -1
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +6 -0
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/api-interop.d.ts.map +1 -1
- package/dist/team/api-interop.js +89 -2
- package/dist/team/api-interop.js.map +1 -1
- package/dist/team/delegation-evidence.d.ts +5 -0
- package/dist/team/delegation-evidence.d.ts.map +1 -0
- package/dist/team/delegation-evidence.js +29 -0
- package/dist/team/delegation-evidence.js.map +1 -0
- package/dist/team/model-contract.d.ts +8 -0
- package/dist/team/model-contract.d.ts.map +1 -1
- package/dist/team/model-contract.js +13 -0
- package/dist/team/model-contract.js.map +1 -1
- package/dist/team/runtime-v2.d.ts +2 -1
- package/dist/team/runtime-v2.d.ts.map +1 -1
- package/dist/team/runtime-v2.js +3 -1
- package/dist/team/runtime-v2.js.map +1 -1
- package/dist/team/state/tasks.d.ts +4 -1
- package/dist/team/state/tasks.d.ts.map +1 -1
- package/dist/team/state/tasks.js +38 -1
- package/dist/team/state/tasks.js.map +1 -1
- package/dist/team/team-ops.d.ts +4 -1
- package/dist/team/team-ops.d.ts.map +1 -1
- package/dist/team/team-ops.js +2 -2
- package/dist/team/team-ops.js.map +1 -1
- package/dist/team/types.d.ts +22 -1
- package/dist/team/types.d.ts.map +1 -1
- package/dist/team/types.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +6 -1
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/tools/__tests__/state-tools.test.js +322 -5
- package/dist/tools/__tests__/state-tools.test.js.map +1 -1
- package/dist/tools/__tests__/wiki-tools-working-directory.test.d.ts +2 -0
- package/dist/tools/__tests__/wiki-tools-working-directory.test.d.ts.map +1 -0
- package/dist/tools/__tests__/wiki-tools-working-directory.test.js +66 -0
- package/dist/tools/__tests__/wiki-tools-working-directory.test.js.map +1 -0
- package/dist/tools/state-tools.d.ts +3 -10
- package/dist/tools/state-tools.d.ts.map +1 -1
- package/dist/tools/state-tools.js +393 -91
- package/dist/tools/state-tools.js.map +1 -1
- package/dist/tools/wiki-tools.js +8 -8
- package/dist/tools/wiki-tools.js.map +1 -1
- package/docs/GETTING-STARTED.md +7 -0
- package/docs/copilot-instructions.md +1 -1
- package/package.json +1 -1
- package/scripts/lib/model-routing-override-message.mjs +21 -0
- package/scripts/persistent-mode.cjs +36 -0
- package/scripts/persistent-mode.mjs +36 -0
- package/scripts/post-tool-verifier.mjs +1 -0
- package/scripts/pre-tool-enforcer.mjs +60 -0
- package/scripts/session-start.mjs +63 -0
- package/scripts/setup-copilot-instructions.sh +12 -2
- package/skills/configure-notifications/SKILL.md +3 -3
- package/skills/mcp-setup/SKILL.md +60 -45
- package/skills/omc-setup/SKILL.md +3 -3
- package/skills/omc-setup/phases/01-install-claude-md.md +1 -1
- package/skills/omc-setup/phases/04-welcome.md +8 -8
- package/skills/project-session-manager/SKILL.md +2 -2
- package/skills/project-session-manager/psm.sh +1 -1
- package/templates/hooks/lib/model-routing-override-message.mjs +21 -0
- package/templates/hooks/session-start.mjs +62 -0
|
@@ -239,7 +239,7 @@ Telegram Notifications Configured!
|
|
|
239
239
|
Format: Markdown
|
|
240
240
|
Events: session-end, ask-user-question
|
|
241
241
|
|
|
242
|
-
Config saved to: ~/.copilot/.
|
|
242
|
+
Config saved to: ~/.copilot/.omc-config.json
|
|
243
243
|
|
|
244
244
|
You can also set these via environment variables:
|
|
245
245
|
OMC_TELEGRAM_BOT_TOKEN=123456789:ABCdefGHI...
|
|
@@ -481,7 +481,7 @@ Discord Notifications Configured!
|
|
|
481
481
|
Events: session-end, ask-user-question
|
|
482
482
|
Username: OMC
|
|
483
483
|
|
|
484
|
-
Config saved to: ~/.copilot/.
|
|
484
|
+
Config saved to: ~/.copilot/.omc-config.json
|
|
485
485
|
|
|
486
486
|
You can also set these via environment variables:
|
|
487
487
|
OMC_DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
|
|
@@ -728,7 +728,7 @@ Slack Notifications Configured!
|
|
|
728
728
|
Events: session-end, ask-user-question
|
|
729
729
|
Username: OMC
|
|
730
730
|
|
|
731
|
-
Config saved to: ~/.copilot/.
|
|
731
|
+
Config saved to: ~/.copilot/.omc-config.json
|
|
732
732
|
|
|
733
733
|
You can also set these via environment variables:
|
|
734
734
|
OMC_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mcp-setup
|
|
3
3
|
description: Configure popular MCP servers for enhanced agent capabilities
|
|
4
|
-
level: 2
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# MCP Setup
|
|
8
7
|
|
|
9
|
-
Configure Model Context Protocol (MCP) servers to extend
|
|
8
|
+
Configure Model Context Protocol (MCP) servers to extend Copilot CLI's capabilities with external tools like web search, token optimization, and DevOps integration.
|
|
10
9
|
|
|
11
10
|
## Overview
|
|
12
11
|
|
|
13
|
-
MCP servers provide additional tools that
|
|
12
|
+
MCP servers provide additional tools that Copilot CLI agents can use. This skill helps you configure popular MCP servers using the `copilot mcp add` command-line interface.
|
|
14
13
|
|
|
15
14
|
## Step 1: Choose a Setup Path
|
|
16
15
|
|
|
17
|
-
Use **AskUserQuestion** with **one question at a time** and **no more than 3 options per question**. Recent
|
|
16
|
+
Use **AskUserQuestion** with **one question at a time** and **no more than 3 options per question**. Recent Copilot CLI builds reject larger option payloads as invalid tool parameters, so keep the MCP selection flow staged.
|
|
18
17
|
|
|
19
18
|
### Step 1.1: First menu
|
|
20
19
|
|
|
21
20
|
**Question:** "What kind of MCP setup would you like?"
|
|
22
21
|
|
|
23
22
|
**Options:**
|
|
24
|
-
1. **Recommended starter setup** - Fast path for the most common
|
|
23
|
+
1. **Recommended starter setup** - Fast path for the most common OMCP MCP additions
|
|
25
24
|
2. **Individual popular server** - Pick one built-in server from a short follow-up menu
|
|
26
25
|
3. **Custom server** - Add your own stdio or HTTP MCP server
|
|
27
26
|
|
|
@@ -33,8 +32,8 @@ Ask a follow-up **AskUserQuestion**:
|
|
|
33
32
|
|
|
34
33
|
**Options:**
|
|
35
34
|
1. **Context7 only (Recommended)** - Zero-config docs/context server
|
|
36
|
-
2. **Context7 +
|
|
37
|
-
3. **Full recommended bundle** - Context7,
|
|
35
|
+
2. **Context7 + lean-ctx** - Docs/context plus token-saving compression layer
|
|
36
|
+
3. **Full recommended bundle** - Context7, lean-ctx, Exa, and GitHub
|
|
38
37
|
|
|
39
38
|
Map that choice to the server list you will configure.
|
|
40
39
|
|
|
@@ -46,17 +45,17 @@ Ask a follow-up **AskUserQuestion**:
|
|
|
46
45
|
|
|
47
46
|
**Options:**
|
|
48
47
|
1. **Context7 (Recommended)** - Documentation and code context from popular libraries
|
|
49
|
-
2. **
|
|
50
|
-
3. **More server choices** -
|
|
48
|
+
2. **lean-ctx** - Token-saving compression layer for Read/Grep/Bash tools
|
|
49
|
+
3. **More server choices** - Exa, GitHub, Azure DevOps, or the full recommended bundle
|
|
51
50
|
|
|
52
51
|
If the user chooses **More server choices**, ask one more **AskUserQuestion**:
|
|
53
52
|
|
|
54
53
|
**Question:** "Which additional MCP option do you want?"
|
|
55
54
|
|
|
56
55
|
**Options:**
|
|
57
|
-
1. **
|
|
58
|
-
2. **GitHub
|
|
59
|
-
3. **Full recommended bundle** - Configure Context7,
|
|
56
|
+
1. **Exa Web Search** - Enhanced web search (replaces built-in websearch)
|
|
57
|
+
2. **GitHub / Azure DevOps** - Repository and project management integration
|
|
58
|
+
3. **Full recommended bundle** - Configure Context7, lean-ctx, Exa, and GitHub together
|
|
60
59
|
|
|
61
60
|
### Step 1.4: If the user chooses "Custom server"
|
|
62
61
|
|
|
@@ -75,13 +74,9 @@ Do you have an Exa API key?
|
|
|
75
74
|
- Enter your API key, or type 'skip' to configure later
|
|
76
75
|
```
|
|
77
76
|
|
|
78
|
-
### For
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
Which directories should the filesystem MCP have access to?
|
|
82
|
-
Default: Current working directory
|
|
83
|
-
Enter comma-separated paths, or press Enter for default
|
|
84
|
-
```
|
|
77
|
+
### For lean-ctx:
|
|
78
|
+
No API key required. Installs automatically. Saves 60-80% input tokens via caching and compression.
|
|
79
|
+
More info: https://github.com/yvgude/lean-ctx
|
|
85
80
|
|
|
86
81
|
### For GitHub:
|
|
87
82
|
Ask for token:
|
|
@@ -92,46 +87,64 @@ Do you have a GitHub Personal Access Token?
|
|
|
92
87
|
- Enter your token, or type 'skip' to configure later
|
|
93
88
|
```
|
|
94
89
|
|
|
90
|
+
### For Azure DevOps:
|
|
91
|
+
Ask for organization:
|
|
92
|
+
```
|
|
93
|
+
What is your Azure DevOps organization URL?
|
|
94
|
+
- Example: https://dev.azure.com/my-org
|
|
95
|
+
- Enter your organization URL, or type 'skip' to configure later
|
|
96
|
+
```
|
|
97
|
+
More info: https://github.com/microsoft/azure-devops-mcp
|
|
98
|
+
|
|
95
99
|
## Step 3: Add MCP Servers Using CLI
|
|
96
100
|
|
|
97
|
-
Use the `
|
|
101
|
+
Use the `copilot mcp add` command to configure each MCP server. The CLI automatically handles settings.json updates and merging.
|
|
98
102
|
|
|
99
103
|
### Context7 Configuration:
|
|
100
104
|
```bash
|
|
101
|
-
|
|
105
|
+
copilot mcp add context7 -- npx -y @upstash/context7-mcp
|
|
102
106
|
```
|
|
103
107
|
|
|
104
108
|
### Exa Web Search Configuration:
|
|
105
109
|
```bash
|
|
106
|
-
|
|
110
|
+
copilot mcp add -e EXA_API_KEY=<user-provided-key> exa -- npx -y exa-mcp-server
|
|
107
111
|
```
|
|
108
112
|
|
|
109
|
-
###
|
|
113
|
+
### lean-ctx Configuration:
|
|
110
114
|
```bash
|
|
111
|
-
|
|
115
|
+
npm install -g lean-ctx-bin && lean-ctx setup
|
|
112
116
|
```
|
|
117
|
+
> Note: lean-ctx uses its own installer (`lean-ctx setup`) which auto-configures shell and all detected editors. It hooks into existing tools (Read, Grep, Bash) to compress and cache results automatically.
|
|
118
|
+
|
|
113
119
|
|
|
114
120
|
### GitHub Configuration:
|
|
115
121
|
|
|
116
122
|
**Option 1: Docker (local)**
|
|
117
123
|
```bash
|
|
118
|
-
|
|
124
|
+
copilot mcp add -e GITHUB_PERSONAL_ACCESS_TOKEN=<user-provided-token> github -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
|
|
119
125
|
```
|
|
120
126
|
|
|
121
127
|
**Option 2: HTTP (remote)**
|
|
122
128
|
```bash
|
|
123
|
-
|
|
129
|
+
copilot mcp add --transport http github https://api.githubcopilot.com/mcp/
|
|
124
130
|
```
|
|
125
131
|
|
|
126
132
|
> Note: Docker option requires Docker installed. HTTP option is simpler but may have different capabilities.
|
|
127
133
|
|
|
134
|
+
### Azure DevOps Configuration:
|
|
135
|
+
```bash
|
|
136
|
+
copilot mcp add azure-devops -- npx -y @microsoft/azure-devops-mcp
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
> Note: Requires Azure DevOps authentication. Run `az login` first or configure a PAT. See https://github.com/microsoft/azure-devops-mcp for setup details.
|
|
140
|
+
|
|
128
141
|
## Step 4: Verify Installation
|
|
129
142
|
|
|
130
143
|
After configuration, verify the MCP servers are properly set up:
|
|
131
144
|
|
|
132
145
|
```bash
|
|
133
146
|
# List configured MCP servers
|
|
134
|
-
|
|
147
|
+
copilot mcp list
|
|
135
148
|
```
|
|
136
149
|
|
|
137
150
|
This will display all configured MCP servers and their status.
|
|
@@ -145,26 +158,27 @@ CONFIGURED SERVERS:
|
|
|
145
158
|
[List the servers that were configured]
|
|
146
159
|
|
|
147
160
|
NEXT STEPS:
|
|
148
|
-
1. Restart
|
|
161
|
+
1. Restart Copilot CLI for changes to take effect
|
|
149
162
|
2. The configured MCP tools will be available to all agents
|
|
150
|
-
3. Run `
|
|
163
|
+
3. Run `copilot mcp list` to verify configuration
|
|
151
164
|
|
|
152
165
|
USAGE TIPS:
|
|
153
166
|
- Context7: Ask about library documentation (e.g., "How do I use React hooks?")
|
|
154
167
|
- Exa: Use for web searches (e.g., "Search the web for latest TypeScript features")
|
|
155
|
-
-
|
|
168
|
+
- lean-ctx: Automatic — compresses Read/Grep/Bash results to save tokens
|
|
156
169
|
- GitHub: Interact with GitHub repos, issues, and PRs
|
|
170
|
+
- Azure DevOps: Manage work items, pipelines, repos, and wikis
|
|
157
171
|
|
|
158
172
|
TROUBLESHOOTING:
|
|
159
|
-
- If MCP servers don't appear, run `
|
|
173
|
+
- If MCP servers don't appear, run `copilot mcp list` to check status
|
|
160
174
|
- Ensure you have Node.js 18+ installed for npx-based servers
|
|
161
175
|
- For GitHub Docker option, ensure Docker is installed and running
|
|
162
176
|
- Run /oh-my-copilot:omc-doctor to diagnose issues
|
|
163
177
|
|
|
164
178
|
MANAGING MCP SERVERS:
|
|
165
|
-
- Add more servers: /oh-my-copilot:mcp-setup or `
|
|
166
|
-
- List servers: `
|
|
167
|
-
- Remove a server: `
|
|
179
|
+
- Add more servers: /oh-my-copilot:mcp-setup or `copilot mcp add ...`
|
|
180
|
+
- List servers: `copilot mcp list`
|
|
181
|
+
- Remove a server: `copilot mcp remove <server-name>`
|
|
168
182
|
```
|
|
169
183
|
|
|
170
184
|
## Custom MCP Server
|
|
@@ -179,24 +193,24 @@ Ask for:
|
|
|
179
193
|
5. Environment variables (optional, key=value pairs)
|
|
180
194
|
6. HTTP headers (optional, for http transport only)
|
|
181
195
|
|
|
182
|
-
Then construct and run the appropriate `
|
|
196
|
+
Then construct and run the appropriate `copilot mcp add` command:
|
|
183
197
|
|
|
184
198
|
**For stdio servers:**
|
|
185
199
|
```bash
|
|
186
200
|
# Without environment variables
|
|
187
|
-
|
|
201
|
+
copilot mcp add <server-name> -- <command> [args...]
|
|
188
202
|
|
|
189
203
|
# With environment variables
|
|
190
|
-
|
|
204
|
+
copilot mcp add -e KEY1=value1 -e KEY2=value2 <server-name> -- <command> [args...]
|
|
191
205
|
```
|
|
192
206
|
|
|
193
207
|
**For HTTP servers:**
|
|
194
208
|
```bash
|
|
195
209
|
# Basic HTTP server
|
|
196
|
-
|
|
210
|
+
copilot mcp add --transport http <server-name> <url>
|
|
197
211
|
|
|
198
212
|
# HTTP server with headers
|
|
199
|
-
|
|
213
|
+
copilot mcp add --transport http --header "Authorization: Bearer <token>" <server-name> <url>
|
|
200
214
|
```
|
|
201
215
|
|
|
202
216
|
### Company-context convention
|
|
@@ -206,7 +220,7 @@ If the custom server is meant to provide organization-specific reference materia
|
|
|
206
220
|
Example local registration:
|
|
207
221
|
|
|
208
222
|
```bash
|
|
209
|
-
|
|
223
|
+
copilot mcp add company-context -- node examples/vendor-mcp-server/server.mjs
|
|
210
224
|
```
|
|
211
225
|
|
|
212
226
|
Then point OMC at the full tool name in `.copilot/omg.jsonc` or `~/.config/copilot-omg/config.jsonc`:
|
|
@@ -227,19 +241,20 @@ This remains advisory prompt context, not runtime enforcement.
|
|
|
227
241
|
### MCP Server Not Loading
|
|
228
242
|
- Ensure Node.js 18+ is installed
|
|
229
243
|
- Check that npx is available in PATH
|
|
230
|
-
- Run `
|
|
244
|
+
- Run `copilot mcp list` to verify server status
|
|
231
245
|
- Check server logs for errors
|
|
232
246
|
|
|
233
247
|
### API Key Issues
|
|
234
248
|
- Exa: Verify key at https://dashboard.exa.ai
|
|
235
249
|
- GitHub: Ensure token has required scopes (repo, read:org)
|
|
236
|
-
-
|
|
250
|
+
- Azure DevOps: Run `az login` or check PAT permissions
|
|
251
|
+
- Re-run `copilot mcp add` with correct credentials if needed
|
|
237
252
|
|
|
238
253
|
### Agents Still Using Built-in Tools
|
|
239
|
-
- Restart
|
|
254
|
+
- Restart Copilot CLI after configuration
|
|
240
255
|
- The built-in websearch will be deprioritized when exa is configured
|
|
241
|
-
- Run `
|
|
256
|
+
- Run `copilot mcp list` to confirm servers are active
|
|
242
257
|
|
|
243
258
|
### Removing or Updating a Server
|
|
244
|
-
- Remove: `
|
|
259
|
+
- Remove: `copilot mcp remove <server-name>`
|
|
245
260
|
- Update: Remove the old server, then add it again with new configuration
|
|
@@ -79,7 +79,7 @@ EXAMPLES:
|
|
|
79
79
|
/oh-my-copilot:omc-setup --global # Update all projects
|
|
80
80
|
/oh-my-copilot:omc-setup --force # Re-run full setup wizard
|
|
81
81
|
|
|
82
|
-
For more info: https://github.com/
|
|
82
|
+
For more info: https://github.com/RobinNorberg/oh-my-copilot
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
## Pre-Setup Check: Already Configured?
|
|
@@ -156,13 +156,13 @@ bash "${CLAUDE_PLUGIN_ROOT}/scripts/setup-progress.sh" clear
|
|
|
156
156
|
## Phase Execution
|
|
157
157
|
|
|
158
158
|
### For `--local` or `--global` flags:
|
|
159
|
-
Read the file at `${CLAUDE_PLUGIN_ROOT}/skills/omc-setup/phases/01-install-
|
|
159
|
+
Read the file at `${CLAUDE_PLUGIN_ROOT}/skills/omc-setup/phases/01-install-copilot-instructions.md` and follow its instructions.
|
|
160
160
|
(The phase file handles early exit for flag mode.)
|
|
161
161
|
|
|
162
162
|
### For full setup (default or --force):
|
|
163
163
|
Execute phases sequentially. For each phase, read the corresponding file and follow its instructions:
|
|
164
164
|
|
|
165
|
-
1. **Phase 1 - Install
|
|
165
|
+
1. **Phase 1 - Install copilot-instructions.md**: Read `${CLAUDE_PLUGIN_ROOT}/skills/omc-setup/phases/01-install-copilot-instructions.md` and follow its instructions.
|
|
166
166
|
|
|
167
167
|
2. **Phase 2 - Environment Configuration**: Read `${CLAUDE_PLUGIN_ROOT}/skills/omc-setup/phases/02-configure.md` and follow its instructions. Phase 2 must delegate HUD/statusLine setup to the `hud` skill; do not generate or patch `statusLine` paths inline here.
|
|
168
168
|
|
|
@@ -46,7 +46,7 @@ For `local` installs inside a git repository, the script also seeds `.git/info/e
|
|
|
46
46
|
|
|
47
47
|
**FALLBACK** if curl fails:
|
|
48
48
|
Tell user to manually download from:
|
|
49
|
-
https://raw.githubusercontent.com/
|
|
49
|
+
https://raw.githubusercontent.com/RobinNorberg/oh-my-copilot/main/docs/CLAUDE.md
|
|
50
50
|
|
|
51
51
|
**Note**: The downloaded CLAUDE.md includes Context Persistence instructions with `<remember>` tags for surviving conversation compaction.
|
|
52
52
|
|
|
@@ -134,7 +134,7 @@ gh auth status &>/dev/null
|
|
|
134
134
|
**Before prompting, check if the repository is already starred:**
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
|
-
gh api user/starred/
|
|
137
|
+
gh api user/starred/RobinNorberg/oh-my-copilot &>/dev/null
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
**If already starred (exit code 0):**
|
|
@@ -147,15 +147,15 @@ Use AskUserQuestion:
|
|
|
147
147
|
|
|
148
148
|
**Question:** "If you're enjoying oh-my-copilot, would you like to support the project by starring it on GitHub?"
|
|
149
149
|
|
|
150
|
-
**Options
|
|
151
|
-
1. **Yes, star it
|
|
152
|
-
2. **
|
|
153
|
-
3. **
|
|
150
|
+
**Options** (list in this exact order — Copilot CLI preselects the first option):
|
|
151
|
+
1. **Yes, star it! (Recommended)** - Star the repository
|
|
152
|
+
2. **Maybe later** - Skip without further prompts
|
|
153
|
+
3. **No thanks** - Skip without further prompts
|
|
154
154
|
|
|
155
|
-
If user chooses "Yes, star it!":
|
|
155
|
+
If user chooses "Yes, star it! (Recommended)":
|
|
156
156
|
|
|
157
157
|
```bash
|
|
158
|
-
gh api -X PUT /user/starred/
|
|
158
|
+
gh api -X PUT /user/starred/RobinNorberg/oh-my-copilot 2>/dev/null && echo "Thanks for starring!" || true
|
|
159
159
|
```
|
|
160
160
|
|
|
161
161
|
**Note:** Fail silently if the API call doesn't work - never block setup completion.
|
|
@@ -165,7 +165,7 @@ gh api -X PUT /user/starred/Yeachan-Heo/oh-my-copilot 2>/dev/null && echo "Thank
|
|
|
165
165
|
```bash
|
|
166
166
|
echo ""
|
|
167
167
|
echo "If you enjoy oh-my-copilot, consider starring the repo:"
|
|
168
|
-
echo " https://github.com/
|
|
168
|
+
echo " https://github.com/RobinNorberg/oh-my-copilot"
|
|
169
169
|
echo ""
|
|
170
170
|
```
|
|
171
171
|
|
|
@@ -50,7 +50,7 @@ Supported formats:
|
|
|
50
50
|
{
|
|
51
51
|
"aliases": {
|
|
52
52
|
"omc": {
|
|
53
|
-
"repo": "
|
|
53
|
+
"repo": "RobinNorberg/oh-my-copilot",
|
|
54
54
|
"local": "~/Workspace/oh-my-copilot",
|
|
55
55
|
"default_base": "main"
|
|
56
56
|
}
|
|
@@ -564,7 +564,7 @@ if [[ ! -f ~/.psm/projects.json ]]; then
|
|
|
564
564
|
{
|
|
565
565
|
"aliases": {
|
|
566
566
|
"omc": {
|
|
567
|
-
"repo": "
|
|
567
|
+
"repo": "RobinNorberg/oh-my-copilot",
|
|
568
568
|
"local": "~/Workspace/oh-my-copilot",
|
|
569
569
|
"default_base": "main"
|
|
570
570
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Shared constant imported by scripts/session-start.mjs and
|
|
2
|
+
// templates/hooks/session-start.mjs. Kept in a side-effect-free module so
|
|
3
|
+
// tests can import it without triggering hook entrypoint side effects.
|
|
4
|
+
export const MODEL_ROUTING_OVERRIDE_MESSAGE = `<system-reminder>
|
|
5
|
+
|
|
6
|
+
[MODEL ROUTING OVERRIDE — NON-STANDARD PROVIDER DETECTED]
|
|
7
|
+
|
|
8
|
+
This environment uses a non-standard model provider (AWS Bedrock, Google Vertex AI, or a proxy such as CC Switch / LiteLLM).
|
|
9
|
+
|
|
10
|
+
How to pass \`model\` on Task/Agent calls:
|
|
11
|
+
- Prefer a tier alias: \`model: "sonnet"\`, \`model: "opus"\`, or \`model: "haiku"\`. OMC's pre-tool enforcer resolves these to provider-safe IDs when one of these env vars is set: \`ANTHROPIC_DEFAULT_SONNET_MODEL\` (and sibling \`ANTHROPIC_DEFAULT_OPUS_MODEL\` / \`ANTHROPIC_DEFAULT_HAIKU_MODEL\`), \`CLAUDE_CODE_BEDROCK_SONNET_MODEL\` (and sibling \`CLAUDE_CODE_BEDROCK_OPUS_MODEL\` / \`CLAUDE_CODE_BEDROCK_HAIKU_MODEL\`), or \`OMC_SUBAGENT_MODEL\`.
|
|
12
|
+
- If none of those env vars are configured, the enforcer will deny the tier alias with an env-var configuration hint — set one of them in your \`settings.json\` env or shell profile.
|
|
13
|
+
- The enforcer denies tier aliases it cannot resolve. It also denies provider-specific IDs that carry a \`[1m]\` context-window suffix or otherwise fail subagent-safe validation (sub-agents cannot inherit \`[1m]\`). Valid provider-specific IDs without extended-context suffixes are allowed.
|
|
14
|
+
|
|
15
|
+
When the session model carries a \`[1m]\` suffix, passing an explicit \`model\` is REQUIRED — omitting it will be denied (sub-agents cannot inherit the \`[1m]\` suffix). Use a tier alias (requires resolver env vars above); the Agent tool schema does not accept provider-specific IDs, so tier aliases are the only valid option.
|
|
16
|
+
|
|
17
|
+
When the session model has no \`[1m]\` suffix, omitting \`model\` is safe UNLESS a custom sub-agent definition pins a bare Anthropic model ID (e.g. \`model: claude-sonnet-4-6\` in agent frontmatter). When resolver env vars are configured, the enforcer will deny that call with tier-alias guidance; when they are absent, the call is not denied by the enforcer but will fail at the provider. Either way, custom sub-agents should pin tier aliases (not bare Anthropic IDs) in their frontmatter. Shipped OMC agents already do this and are unaffected.
|
|
18
|
+
|
|
19
|
+
The CLAUDE.md instruction "Pass model on Task calls: haiku, sonnet, opus" applies here — subject to the resolution prerequisites above.
|
|
20
|
+
|
|
21
|
+
</system-reminder>`;
|
|
@@ -142,6 +142,68 @@ const OMC_STARTUP_GUIDANCE_MAX_CHARS = 8000;
|
|
|
142
142
|
const SESSION_START_CONTEXT_BUDGET = 6000;
|
|
143
143
|
const SESSION_START_OMISSION_NOTICE = '[Additional SessionStart context omitted to preserve the 6000-character aggregate budget.]';
|
|
144
144
|
|
|
145
|
+
const { MODEL_ROUTING_OVERRIDE_MESSAGE } = await import(pathToFileURL(join(__dirname, 'lib', 'model-routing-override-message.mjs')).href);
|
|
146
|
+
|
|
147
|
+
function isTruthyProviderFlag(value) {
|
|
148
|
+
return value === '1' || value === 'true';
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function getSessionModelId() {
|
|
152
|
+
return process.env.CLAUDE_MODEL || process.env.ANTHROPIC_MODEL || '';
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function isBedrockSession() {
|
|
156
|
+
if (isTruthyProviderFlag(process.env.CLAUDE_CODE_USE_BEDROCK)) return true;
|
|
157
|
+
const modelId = getSessionModelId();
|
|
158
|
+
return Boolean(
|
|
159
|
+
modelId && (
|
|
160
|
+
/^((us|eu|ap|global)\.anthropic\.|anthropic\.claude)/i.test(modelId) ||
|
|
161
|
+
(
|
|
162
|
+
/^arn:aws(-[^:]+)?:bedrock:/i.test(modelId) &&
|
|
163
|
+
/:(inference-profile|application-inference-profile)\//i.test(modelId) &&
|
|
164
|
+
modelId.toLowerCase().includes('claude')
|
|
165
|
+
)
|
|
166
|
+
)
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function isVertexSession() {
|
|
171
|
+
if (isTruthyProviderFlag(process.env.CLAUDE_CODE_USE_VERTEX)) return true;
|
|
172
|
+
const modelId = getSessionModelId();
|
|
173
|
+
return Boolean(modelId && modelId.toLowerCase().startsWith('vertex_ai/'));
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function readRoutingForceInheritFromConfig(directory) {
|
|
177
|
+
const configPaths = [
|
|
178
|
+
join(configDir, '.omc-config.json'),
|
|
179
|
+
join(directory, '.omc', 'config.json'),
|
|
180
|
+
];
|
|
181
|
+
|
|
182
|
+
for (const configPath of configPaths) {
|
|
183
|
+
const config = readJsonFile(configPath);
|
|
184
|
+
if (config?.routing?.forceInherit === true) return true;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function shouldEmitModelRoutingOverride(directory) {
|
|
191
|
+
if (process.env.OMC_ROUTING_FORCE_INHERIT === 'true') return true;
|
|
192
|
+
if (process.env.OMC_ROUTING_FORCE_INHERIT === 'false') return false;
|
|
193
|
+
if (readRoutingForceInheritFromConfig(directory)) return true;
|
|
194
|
+
|
|
195
|
+
if (isBedrockSession() || isVertexSession()) return true;
|
|
196
|
+
|
|
197
|
+
const modelId = getSessionModelId();
|
|
198
|
+
if (modelId && !modelId.toLowerCase().includes('claude')) return true;
|
|
199
|
+
|
|
200
|
+
const baseUrl = process.env.ANTHROPIC_BASE_URL || '';
|
|
201
|
+
if (baseUrl && !baseUrl.includes('anthropic.com')) return true;
|
|
202
|
+
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
|
145
207
|
function compactBudgetedText(text, maxChars) {
|
|
146
208
|
const notice = '\n...[truncated to preserve SessionStart context budget]';
|
|
147
209
|
if (!text || text.length <= maxChars) return text || '';
|