@contextium/cli 1.6.4 → 1.6.6
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/dist/commands/setup-claude.d.ts.map +1 -1
- package/dist/commands/setup-claude.js +6 -36
- package/dist/commands/setup-claude.js.map +1 -1
- package/dist/commands/setup-codex.d.ts +14 -0
- package/dist/commands/setup-codex.d.ts.map +1 -0
- package/dist/commands/setup-codex.js +160 -0
- package/dist/commands/setup-codex.js.map +1 -0
- package/dist/commands/setup-connect.d.ts +11 -0
- package/dist/commands/setup-connect.d.ts.map +1 -0
- package/dist/commands/setup-connect.js +52 -0
- package/dist/commands/setup-connect.js.map +1 -0
- package/dist/commands/setup-copilot.d.ts +14 -0
- package/dist/commands/setup-copilot.d.ts.map +1 -0
- package/dist/commands/setup-copilot.js +123 -0
- package/dist/commands/setup-copilot.js.map +1 -0
- package/dist/commands/setup-cursor.d.ts +15 -0
- package/dist/commands/setup-cursor.d.ts.map +1 -0
- package/dist/commands/setup-cursor.js +109 -0
- package/dist/commands/setup-cursor.js.map +1 -0
- package/dist/commands/workflows.js +2 -2
- package/dist/commands/workflows.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/claude-permissions.d.ts +1 -0
- package/dist/lib/claude-permissions.d.ts.map +1 -1
- package/dist/lib/claude-permissions.js +16 -4
- package/dist/lib/claude-permissions.js.map +1 -1
- package/dist/lib/client-config.d.ts +26 -0
- package/dist/lib/client-config.d.ts.map +1 -0
- package/dist/lib/client-config.js +55 -0
- package/dist/lib/client-config.js.map +1 -0
- package/dist/lib/instructions.d.ts +49 -0
- package/dist/lib/instructions.d.ts.map +1 -0
- package/dist/lib/instructions.js +138 -0
- package/dist/lib/instructions.js.map +1 -0
- package/package.json +1 -1
- package/skills/ium/new-project.md +287 -3
- package/skills/ium/workflow.md +9 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-claude.d.ts","sourceRoot":"","sources":["../../src/commands/setup-claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAwBnC,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"setup-claude.d.ts","sourceRoot":"","sources":["../../src/commands/setup-claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAwBnC,eAAO,MAAM,kBAAkB,SAyH3B,CAAA"}
|
|
@@ -5,7 +5,7 @@ import os from 'os';
|
|
|
5
5
|
import { fileURLToPath } from 'url';
|
|
6
6
|
import { createRequire } from 'module';
|
|
7
7
|
import { chalk, ora } from '../lib/output.js';
|
|
8
|
-
import { installUpdateHook, installStatuslineHook } from '../lib/claude-permissions.js';
|
|
8
|
+
import { installUpdateHook, installStatuslineHook, addClaudePermission, PERMISSIONS } from '../lib/claude-permissions.js';
|
|
9
9
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
10
|
const require = createRequire(import.meta.url);
|
|
11
11
|
async function getLatestNpmVersion(pkg) {
|
|
@@ -39,39 +39,9 @@ ${chalk.dim('If you use other IDEs (VSCode, Cursor, etc.) without Claude Code, s
|
|
|
39
39
|
? 'Configuring global Claude Code settings...'
|
|
40
40
|
: 'Configuring project Claude Code settings...').start();
|
|
41
41
|
try {
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
await
|
|
45
|
-
// Read existing settings or create default
|
|
46
|
-
let settings = {
|
|
47
|
-
permissions: {
|
|
48
|
-
allow: []
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
try {
|
|
52
|
-
const content = await fs.readFile(settingsPath, 'utf-8');
|
|
53
|
-
settings = JSON.parse(content);
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
if (error.code !== 'ENOENT') {
|
|
57
|
-
throw error;
|
|
58
|
-
}
|
|
59
|
-
// File doesn't exist, use default
|
|
60
|
-
}
|
|
61
|
-
// Ensure permissions structure exists
|
|
62
|
-
if (!settings.permissions) {
|
|
63
|
-
settings.permissions = { allow: [] };
|
|
64
|
-
}
|
|
65
|
-
if (!settings.permissions.allow) {
|
|
66
|
-
settings.permissions.allow = [];
|
|
67
|
-
}
|
|
68
|
-
// Add permission if not already present
|
|
69
|
-
const permission = 'Bash contextium *';
|
|
70
|
-
const permissionAlreadySet = settings.permissions.allow.includes(permission);
|
|
71
|
-
if (!permissionAlreadySet) {
|
|
72
|
-
settings.permissions.allow.push(permission);
|
|
73
|
-
await fs.writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
74
|
-
}
|
|
42
|
+
// Add the Contextium allow rules (CLI via Bash + every MCP tool) so
|
|
43
|
+
// Claude Code never prompts for Contextium actions.
|
|
44
|
+
await addClaudePermission(isGlobal ? 'global' : 'project');
|
|
75
45
|
spinner.succeed('Claude Code permissions configured!');
|
|
76
46
|
// Install /ium: slash commands to ~/.claude/commands/ium/
|
|
77
47
|
const commandsDestDir = path.join(os.homedir(), '.claude', 'commands', 'ium');
|
|
@@ -110,7 +80,7 @@ ${chalk.dim('If you use other IDEs (VSCode, Cursor, etc.) without Claude Code, s
|
|
|
110
80
|
console.log();
|
|
111
81
|
console.log(chalk.green('✓') + ' Contextium CLI commands will no longer require permission prompts');
|
|
112
82
|
console.log(chalk.dim(`Settings file: ${settingsPath}`));
|
|
113
|
-
console.log(chalk.dim(`Added
|
|
83
|
+
console.log(chalk.dim(`Added permissions: ${PERMISSIONS.join(', ')}`));
|
|
114
84
|
if (skillsInstalled) {
|
|
115
85
|
console.log(chalk.green('✓') + ' /ium: slash commands installed to ~/.claude/commands/ium/');
|
|
116
86
|
}
|
|
@@ -153,7 +123,7 @@ ${chalk.dim('If you use other IDEs (VSCode, Cursor, etc.) without Claude Code, s
|
|
|
153
123
|
console.log();
|
|
154
124
|
console.log(chalk.white(' {'));
|
|
155
125
|
console.log(chalk.white(' "permissions": {'));
|
|
156
|
-
console.log(chalk.white(
|
|
126
|
+
console.log(chalk.white(` "allow": ${JSON.stringify(PERMISSIONS)}`));
|
|
157
127
|
console.log(chalk.white(' }'));
|
|
158
128
|
console.log(chalk.white(' }'));
|
|
159
129
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-claude.js","sourceRoot":"","sources":["../../src/commands/setup-claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"setup-claude.js","sourceRoot":"","sources":["../../src/commands/setup-claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Configure OpenAI Codex CLI for Contextium with parity to the Claude Code setup:
|
|
4
|
+
* MCP server, product-behaviour instructions, and the /ium: prompts.
|
|
5
|
+
*
|
|
6
|
+
* Codex reads:
|
|
7
|
+
* - ~/.codex/config.toml — `[mcp_servers.*]` tables register MCP servers
|
|
8
|
+
* - AGENTS.md — project instructions (repo root, or ~/.codex/AGENTS.md global)
|
|
9
|
+
* - ~/.codex/prompts/*.md — custom prompts, invoked as /name
|
|
10
|
+
*
|
|
11
|
+
* Codex approvals are global (no per-server allowlist), so --no-prompt is opt-in.
|
|
12
|
+
*/
|
|
13
|
+
export declare const setupCodexCommand: Command;
|
|
14
|
+
//# sourceMappingURL=setup-codex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-codex.d.ts","sourceRoot":"","sources":["../../src/commands/setup-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2EnC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,SA+E1B,CAAA"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import fs from 'fs/promises';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import os from 'os';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
import { chalk, ora } from '../lib/output.js';
|
|
7
|
+
import { contextiumServerKey, contextiumMcpEntry } from '../lib/client-config.js';
|
|
8
|
+
import { writeInstructionsBlock, installCommands } from '../lib/instructions.js';
|
|
9
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
// skills/ium lives at the package root, two levels up from dist/commands/
|
|
11
|
+
const COMMANDS_SRC_DIR = path.join(__dirname, '..', '..', 'skills', 'ium');
|
|
12
|
+
const TOML_START = '# contextium:start (managed by `contextium setup-codex` — edits inside are overwritten)';
|
|
13
|
+
const TOML_END = '# contextium:end';
|
|
14
|
+
/**
|
|
15
|
+
* Render the `[mcp_servers.<key>]` TOML table for Codex from the shared MCP
|
|
16
|
+
* entry definition, so local/remote/profile behaviour matches every other
|
|
17
|
+
* operator setup.
|
|
18
|
+
*/
|
|
19
|
+
function renderCodexServerToml(serverKey, entry) {
|
|
20
|
+
const lines = [`[mcp_servers.${serverKey}]`];
|
|
21
|
+
if (entry.url) {
|
|
22
|
+
lines.push(`url = ${JSON.stringify(entry.url)}`);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
lines.push(`command = ${JSON.stringify(entry.command)}`);
|
|
26
|
+
lines.push(`args = [${entry.args.map((a) => JSON.stringify(a)).join(', ')}]`);
|
|
27
|
+
if (entry.env) {
|
|
28
|
+
const env = Object.entries(entry.env)
|
|
29
|
+
.map(([k, v]) => `${JSON.stringify(k)} = ${JSON.stringify(v)}`)
|
|
30
|
+
.join(', ');
|
|
31
|
+
lines.push(`env = { ${env} }`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return lines.join('\n');
|
|
35
|
+
}
|
|
36
|
+
/** Upsert the managed Contextium server block into config.toml, preserving the rest. */
|
|
37
|
+
async function upsertCodexServer(configPath, tableToml) {
|
|
38
|
+
const block = `${TOML_START}\n${tableToml}\n${TOML_END}`;
|
|
39
|
+
let content = '';
|
|
40
|
+
try {
|
|
41
|
+
content = await fs.readFile(configPath, 'utf-8');
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error.code !== 'ENOENT')
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
const start = content.indexOf(TOML_START);
|
|
48
|
+
const end = content.indexOf(TOML_END);
|
|
49
|
+
if (start !== -1 && end !== -1) {
|
|
50
|
+
content = content.slice(0, start) + block + content.slice(end + TOML_END.length);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const sep = content.length && !content.endsWith('\n') ? '\n\n' : content.length ? '\n' : '';
|
|
54
|
+
content = content + sep + block + '\n';
|
|
55
|
+
}
|
|
56
|
+
await fs.mkdir(path.dirname(configPath), { recursive: true });
|
|
57
|
+
await fs.writeFile(configPath, content, 'utf-8');
|
|
58
|
+
}
|
|
59
|
+
/** Prepend a root-level `approval_policy = "never"` if not already present. */
|
|
60
|
+
async function setCodexNoPrompt(configPath) {
|
|
61
|
+
let content = '';
|
|
62
|
+
try {
|
|
63
|
+
content = await fs.readFile(configPath, 'utf-8');
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error.code !== 'ENOENT')
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
if (/^\s*approval_policy\s*=/m.test(content))
|
|
70
|
+
return false; // respect existing setting
|
|
71
|
+
// Root keys must precede any table — prepending at the very top is valid TOML.
|
|
72
|
+
content = `approval_policy = "never"\n` + content;
|
|
73
|
+
await fs.mkdir(path.dirname(configPath), { recursive: true });
|
|
74
|
+
await fs.writeFile(configPath, content, 'utf-8');
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Configure OpenAI Codex CLI for Contextium with parity to the Claude Code setup:
|
|
79
|
+
* MCP server, product-behaviour instructions, and the /ium: prompts.
|
|
80
|
+
*
|
|
81
|
+
* Codex reads:
|
|
82
|
+
* - ~/.codex/config.toml — `[mcp_servers.*]` tables register MCP servers
|
|
83
|
+
* - AGENTS.md — project instructions (repo root, or ~/.codex/AGENTS.md global)
|
|
84
|
+
* - ~/.codex/prompts/*.md — custom prompts, invoked as /name
|
|
85
|
+
*
|
|
86
|
+
* Codex approvals are global (no per-server allowlist), so --no-prompt is opt-in.
|
|
87
|
+
*/
|
|
88
|
+
export const setupCodexCommand = new Command('setup-codex')
|
|
89
|
+
.description('Configure OpenAI Codex for Contextium — MCP, instructions, and /ium: prompts')
|
|
90
|
+
.addHelpText('after', `
|
|
91
|
+
${chalk.dim('Registers the server in ~/.codex/config.toml, writes AGENTS.md instructions,')}
|
|
92
|
+
${chalk.dim('and installs /ium: prompts to ~/.codex/prompts/. Use --project to write')}
|
|
93
|
+
${chalk.dim('AGENTS.md to the current repo, --remote for the hosted server, or')}
|
|
94
|
+
${chalk.dim('--no-prompt to set Codex approval_policy = "never" globally.')}
|
|
95
|
+
`)
|
|
96
|
+
.option('--project', 'Write AGENTS.md to the current directory instead of ~/.codex')
|
|
97
|
+
.option('--remote', 'Use the hosted remote MCP server instead of local npx')
|
|
98
|
+
.option('--no-prompt', 'Also set global approval_policy = "never" (skips all Codex approvals)')
|
|
99
|
+
.option('--profile <name>', 'Contextium profile to use', 'default')
|
|
100
|
+
.action(async (options) => {
|
|
101
|
+
const codexDir = path.join(os.homedir(), '.codex');
|
|
102
|
+
const configPath = path.join(codexDir, 'config.toml');
|
|
103
|
+
const promptsDir = path.join(codexDir, 'prompts');
|
|
104
|
+
const agentsPath = options.project
|
|
105
|
+
? path.join(process.cwd(), 'AGENTS.md')
|
|
106
|
+
: path.join(codexDir, 'AGENTS.md');
|
|
107
|
+
const serverKey = contextiumServerKey(options.profile);
|
|
108
|
+
const spinner = ora('Configuring Codex for Contextium...').start();
|
|
109
|
+
try {
|
|
110
|
+
// 1. Register the MCP server (merge into config.toml)
|
|
111
|
+
const entry = contextiumMcpEntry({ remote: !!options.remote, profile: options.profile });
|
|
112
|
+
await upsertCodexServer(configPath, renderCodexServerToml(serverKey, entry));
|
|
113
|
+
// 2. Write the product-behaviour instructions to AGENTS.md
|
|
114
|
+
await writeInstructionsBlock(agentsPath);
|
|
115
|
+
// 3. Install the /ium: prompts
|
|
116
|
+
const commandCount = await installCommands(COMMANDS_SRC_DIR, promptsDir);
|
|
117
|
+
// 4. Optionally disable approval prompts globally
|
|
118
|
+
let noPromptSet = false;
|
|
119
|
+
// commander negates --no-prompt into options.prompt === false
|
|
120
|
+
if (options.prompt === false) {
|
|
121
|
+
noPromptSet = await setCodexNoPrompt(configPath);
|
|
122
|
+
}
|
|
123
|
+
spinner.succeed('Codex configured for Contextium!');
|
|
124
|
+
console.log();
|
|
125
|
+
console.log(chalk.green('✓') + ` MCP server registered: ${chalk.cyan(serverKey)}`);
|
|
126
|
+
console.log(chalk.green('✓') + ' Instructions written (Task Awareness + Workflow Engineering)');
|
|
127
|
+
if (commandCount > 0) {
|
|
128
|
+
console.log(chalk.green('✓') + ` /ium: prompts installed: ${chalk.cyan(String(commandCount))} files`);
|
|
129
|
+
}
|
|
130
|
+
if (options.prompt === false) {
|
|
131
|
+
console.log((noPromptSet ? chalk.green('✓') + ' approval_policy set to "never"' : chalk.yellow('⚠') + ' approval_policy already set — left unchanged'));
|
|
132
|
+
}
|
|
133
|
+
console.log(chalk.dim(` Server config: ${configPath}`));
|
|
134
|
+
console.log(chalk.dim(` Instructions: ${agentsPath}`));
|
|
135
|
+
if (commandCount > 0) {
|
|
136
|
+
console.log(chalk.dim(` Prompts dir: ${promptsDir}`));
|
|
137
|
+
}
|
|
138
|
+
console.log();
|
|
139
|
+
console.log(chalk.bold('Next steps in Codex:'));
|
|
140
|
+
console.log(chalk.white(' • Restart Codex (or start a new session) to pick up the new server'));
|
|
141
|
+
if (options.prompt !== false) {
|
|
142
|
+
console.log(chalk.white(' • Codex approves tool calls per-session; approve Contextium when prompted,'));
|
|
143
|
+
console.log(chalk.white(' or re-run with --no-prompt to skip approvals globally'));
|
|
144
|
+
}
|
|
145
|
+
if (!options.remote) {
|
|
146
|
+
console.log(chalk.dim(' • Local server runs via npx; run `contextium login` first if you haven\'t'));
|
|
147
|
+
}
|
|
148
|
+
console.log();
|
|
149
|
+
console.log(chalk.green('✓ Done!') + chalk.dim(' Codex can now use Contextium.'));
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
spinner.fail(`Failed to configure Codex: ${error.message}`);
|
|
153
|
+
console.log();
|
|
154
|
+
console.log(chalk.yellow('Manual setup:'));
|
|
155
|
+
console.log(chalk.dim(`Add to ${configPath}:`));
|
|
156
|
+
console.log(chalk.white(' ' + renderCodexServerToml(serverKey, contextiumMcpEntry({ remote: !!options.remote, profile: options.profile })).replace(/\n/g, '\n ')));
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=setup-codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-codex.js","sourceRoot":"","sources":["../../src/commands/setup-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjF,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAEhF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9D,0EAA0E;AAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AAE1E,MAAM,UAAU,GAAG,yFAAyF,CAAA;AAC5G,MAAM,QAAQ,GAAG,kBAAkB,CAAA;AAEnC;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,SAAiB,EAAE,KAAU;IAC1D,MAAM,KAAK,GAAG,CAAC,gBAAgB,SAAS,GAAG,CAAC,CAAA;IAC5C,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAClD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACxD,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACrF,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;iBAClC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9D,IAAI,CAAC,IAAI,CAAC,CAAA;YACb,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,wFAAwF;AACxF,KAAK,UAAU,iBAAiB,CAAC,UAAkB,EAAE,SAAiB;IACpE,MAAM,KAAK,GAAG,GAAG,UAAU,KAAK,SAAS,KAAK,QAAQ,EAAE,CAAA;IACxD,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAA;IAC1C,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAClF,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QAC3F,OAAO,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,CAAA;IACxC,CAAC;IACD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,+EAA+E;AAC/E,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IAChD,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAA;IAC1C,CAAC;IACD,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA,CAAC,2BAA2B;IACtF,+EAA+E;IAC/E,OAAO,GAAG,6BAA6B,GAAG,OAAO,CAAA;IACjD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAChD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;KACxD,WAAW,CAAC,8EAA8E,CAAC;KAC3F,WAAW,CAAC,OAAO,EAAE;EACtB,KAAK,CAAC,GAAG,CAAC,8EAA8E,CAAC;EACzF,KAAK,CAAC,GAAG,CAAC,yEAAyE,CAAC;EACpF,KAAK,CAAC,GAAG,CAAC,mEAAmE,CAAC;EAC9E,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC;CAC1E,CAAC;KACC,MAAM,CAAC,WAAW,EAAE,8DAA8D,CAAC;KACnF,MAAM,CAAC,UAAU,EAAE,uDAAuD,CAAC;KAC3E,MAAM,CAAC,aAAa,EAAE,uEAAuE,CAAC;KAC9F,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,SAAS,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO;QAChC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAEtD,MAAM,OAAO,GAAG,GAAG,CAAC,qCAAqC,CAAC,CAAC,KAAK,EAAE,CAAA;IAElE,IAAI,CAAC;QACH,sDAAsD;QACtD,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QACxF,MAAM,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;QAE5E,2DAA2D;QAC3D,MAAM,sBAAsB,CAAC,UAAU,CAAC,CAAA;QAExC,+BAA+B;QAC/B,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAA;QAExE,kDAAkD;QAClD,IAAI,WAAW,GAAG,KAAK,CAAA;QACvB,8DAA8D;QAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,WAAW,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAClD,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAA;QAEnD,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,2BAA2B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,+DAA+D,CAAC,CAAA;QAC/F,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,6BAA6B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAA;QACvG,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CACT,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,iCAAiC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,+CAA+C,CAAC,CAC3I,CAAA;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC,CAAA;QACxD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC,CAAA;QAC1D,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC,CAAA;QAChG,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC,CAAA;YACxG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC,CAAA;QACvF,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC,CAAA;QACvG,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;IACnF,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAA;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;QACpK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Guided connect for hosted assistants that support remote MCP connectors but
|
|
4
|
+
* have NO file-based config we can write (ChatGPT, DeepSeek, and similar web
|
|
5
|
+
* clients). We can't install anything for them, so we print:
|
|
6
|
+
* 1. step-by-step instructions to add the remote Contextium MCP connector, and
|
|
7
|
+
* 2. the same product-behaviour instructions every other operator gets, ready
|
|
8
|
+
* to paste into the assistant's custom-instructions / system prompt.
|
|
9
|
+
*/
|
|
10
|
+
export declare const setupConnectCommand: Command;
|
|
11
|
+
//# sourceMappingURL=setup-connect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-connect.d.ts","sourceRoot":"","sources":["../../src/commands/setup-connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,SAyC5B,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { chalk } from '../lib/output.js';
|
|
3
|
+
import { CONTEXTIUM_INSTRUCTIONS } from '../lib/instructions.js';
|
|
4
|
+
const REMOTE_MCP_URL = 'https://mcp.contextium.io/sse';
|
|
5
|
+
/**
|
|
6
|
+
* Guided connect for hosted assistants that support remote MCP connectors but
|
|
7
|
+
* have NO file-based config we can write (ChatGPT, DeepSeek, and similar web
|
|
8
|
+
* clients). We can't install anything for them, so we print:
|
|
9
|
+
* 1. step-by-step instructions to add the remote Contextium MCP connector, and
|
|
10
|
+
* 2. the same product-behaviour instructions every other operator gets, ready
|
|
11
|
+
* to paste into the assistant's custom-instructions / system prompt.
|
|
12
|
+
*/
|
|
13
|
+
export const setupConnectCommand = new Command('setup-connect')
|
|
14
|
+
.aliases(['setup-chatgpt', 'setup-deepseek'])
|
|
15
|
+
.description('Guided connect for ChatGPT, DeepSeek & other hosted assistants (no file setup)')
|
|
16
|
+
.addHelpText('after', `
|
|
17
|
+
${chalk.dim('These assistants have no config file to write, so this prints the remote MCP')}
|
|
18
|
+
${chalk.dim('connector URL plus the Contextium instructions to paste into their custom')}
|
|
19
|
+
${chalk.dim('instructions. Use --instructions-only to print just the pasteable block.')}
|
|
20
|
+
`)
|
|
21
|
+
.option('--instructions-only', 'Print only the pasteable instructions block (no connector steps)')
|
|
22
|
+
.action((options) => {
|
|
23
|
+
if (options.instructionsOnly) {
|
|
24
|
+
console.log(CONTEXTIUM_INSTRUCTIONS);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
console.log();
|
|
28
|
+
console.log(chalk.bold('Connect a hosted assistant to Contextium'));
|
|
29
|
+
console.log(chalk.dim('ChatGPT, DeepSeek, and similar web clients can\'t be configured from a file.'));
|
|
30
|
+
console.log(chalk.dim('Two manual steps, both done inside the assistant:'));
|
|
31
|
+
console.log();
|
|
32
|
+
console.log(chalk.bold('1. Add the Contextium MCP connector'));
|
|
33
|
+
console.log(chalk.white(' Remote MCP endpoint:'));
|
|
34
|
+
console.log(' ' + chalk.cyan(REMOTE_MCP_URL));
|
|
35
|
+
console.log();
|
|
36
|
+
console.log(chalk.white(' • ChatGPT: Settings → Connectors → Add → custom MCP server, paste the URL above'));
|
|
37
|
+
console.log(chalk.white(' • DeepSeek: Tools / MCP settings → Add server → paste the URL above'));
|
|
38
|
+
console.log(chalk.dim(' (Requires a plan/tier that supports custom MCP connectors. Authenticate'));
|
|
39
|
+
console.log(chalk.dim(' with your Contextium account when prompted.)'));
|
|
40
|
+
console.log();
|
|
41
|
+
console.log(chalk.bold('2. Paste the Contextium instructions'));
|
|
42
|
+
console.log(chalk.dim(' Add the block below to the assistant\'s custom instructions / system prompt'));
|
|
43
|
+
console.log(chalk.dim(' so it follows the same Task Awareness + Workflow Engineering protocol as'));
|
|
44
|
+
console.log(chalk.dim(' every other operator. (Pipe just this block with --instructions-only.)'));
|
|
45
|
+
console.log();
|
|
46
|
+
console.log(chalk.dim(' ──────────────────────────────────────────────────────────'));
|
|
47
|
+
console.log(CONTEXTIUM_INSTRUCTIONS);
|
|
48
|
+
console.log(chalk.dim(' ──────────────────────────────────────────────────────────'));
|
|
49
|
+
console.log();
|
|
50
|
+
console.log(chalk.green('✓ Done!') + chalk.dim(' Once both steps are complete, the assistant can use Contextium.'));
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=setup-connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-connect.js","sourceRoot":"","sources":["../../src/commands/setup-connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Configure GitHub Copilot (VS Code) for Contextium with parity to the Claude
|
|
4
|
+
* Code setup: MCP server, product-behaviour instructions, and the /ium: prompts.
|
|
5
|
+
*
|
|
6
|
+
* Copilot reads (project-scoped — there is no global Copilot instructions file):
|
|
7
|
+
* - .vscode/mcp.json — `servers` key registers MCP servers
|
|
8
|
+
* - .github/copilot-instructions.md — repo-wide custom instructions
|
|
9
|
+
* - .github/prompts/*.prompt.md — reusable prompt files, run as /name
|
|
10
|
+
*
|
|
11
|
+
* Copilot tool approval is a VS Code setting, so --auto-approve is opt-in.
|
|
12
|
+
*/
|
|
13
|
+
export declare const setupCopilotCommand: Command;
|
|
14
|
+
//# sourceMappingURL=setup-copilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-copilot.d.ts","sourceRoot":"","sources":["../../src/commands/setup-copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmCnC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,SAoF5B,CAAA"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { chalk, ora } from '../lib/output.js';
|
|
5
|
+
import { readJsonConfig, writeJsonConfig, contextiumServerKey } from '../lib/client-config.js';
|
|
6
|
+
import { writeInstructionsBlock, installCommands } from '../lib/instructions.js';
|
|
7
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
// skills/ium lives at the package root, two levels up from dist/commands/
|
|
9
|
+
const COMMANDS_SRC_DIR = path.join(__dirname, '..', '..', 'skills', 'ium');
|
|
10
|
+
/**
|
|
11
|
+
* Build the VS Code / Copilot MCP server entry. VS Code's mcp.json uses the
|
|
12
|
+
* `servers` key (not `mcpServers`) and a `type` discriminator: `stdio` for the
|
|
13
|
+
* local npx package, `sse` for the hosted remote endpoint.
|
|
14
|
+
*/
|
|
15
|
+
function copilotServerEntry(opts) {
|
|
16
|
+
if (opts.remote) {
|
|
17
|
+
return { type: 'sse', url: 'https://mcp.contextium.io/sse' };
|
|
18
|
+
}
|
|
19
|
+
const entry = {
|
|
20
|
+
type: 'stdio',
|
|
21
|
+
command: 'npx',
|
|
22
|
+
args: [
|
|
23
|
+
'-y',
|
|
24
|
+
'@contextium/mcp-server@latest',
|
|
25
|
+
...(opts.profile !== 'default' ? ['--profile', opts.profile] : []),
|
|
26
|
+
],
|
|
27
|
+
};
|
|
28
|
+
if (opts.profile !== 'default') {
|
|
29
|
+
entry.env = { CONTEXTIUM_PROFILE: opts.profile };
|
|
30
|
+
}
|
|
31
|
+
return entry;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Configure GitHub Copilot (VS Code) for Contextium with parity to the Claude
|
|
35
|
+
* Code setup: MCP server, product-behaviour instructions, and the /ium: prompts.
|
|
36
|
+
*
|
|
37
|
+
* Copilot reads (project-scoped — there is no global Copilot instructions file):
|
|
38
|
+
* - .vscode/mcp.json — `servers` key registers MCP servers
|
|
39
|
+
* - .github/copilot-instructions.md — repo-wide custom instructions
|
|
40
|
+
* - .github/prompts/*.prompt.md — reusable prompt files, run as /name
|
|
41
|
+
*
|
|
42
|
+
* Copilot tool approval is a VS Code setting, so --auto-approve is opt-in.
|
|
43
|
+
*/
|
|
44
|
+
export const setupCopilotCommand = new Command('setup-copilot')
|
|
45
|
+
.description('Configure GitHub Copilot for Contextium — MCP, instructions, and /ium: prompts')
|
|
46
|
+
.addHelpText('after', `
|
|
47
|
+
${chalk.dim('Writes .vscode/mcp.json (server), .github/copilot-instructions.md (instructions),')}
|
|
48
|
+
${chalk.dim('and .github/prompts/*.prompt.md (/ium: prompts) in the current repo.')}
|
|
49
|
+
${chalk.dim('Use --remote for the hosted server, or --auto-approve to also set')}
|
|
50
|
+
${chalk.dim('chat.tools.autoApprove in .vscode/settings.json.')}
|
|
51
|
+
`)
|
|
52
|
+
.option('--remote', 'Use the hosted remote MCP server (SSE) instead of local npx')
|
|
53
|
+
.option('--auto-approve', 'Also set chat.tools.autoApprove=true in .vscode/settings.json')
|
|
54
|
+
.option('--profile <name>', 'Contextium profile to use', 'default')
|
|
55
|
+
.action(async (options) => {
|
|
56
|
+
const cwd = process.cwd();
|
|
57
|
+
const mcpPath = path.join(cwd, '.vscode', 'mcp.json');
|
|
58
|
+
const settingsPath = path.join(cwd, '.vscode', 'settings.json');
|
|
59
|
+
const instructionsPath = path.join(cwd, '.github', 'copilot-instructions.md');
|
|
60
|
+
const promptsDir = path.join(cwd, '.github', 'prompts');
|
|
61
|
+
const serverKey = contextiumServerKey(options.profile);
|
|
62
|
+
const spinner = ora('Configuring Copilot for Contextium...').start();
|
|
63
|
+
try {
|
|
64
|
+
// 1. Register the MCP server under the `servers` key (merge, don't clobber)
|
|
65
|
+
const mcp = await readJsonConfig(mcpPath);
|
|
66
|
+
if (!mcp.servers || typeof mcp.servers !== 'object') {
|
|
67
|
+
mcp.servers = {};
|
|
68
|
+
}
|
|
69
|
+
mcp.servers[serverKey] = copilotServerEntry({ remote: !!options.remote, profile: options.profile });
|
|
70
|
+
await writeJsonConfig(mcpPath, mcp);
|
|
71
|
+
// 2. Write the product-behaviour instructions
|
|
72
|
+
await writeInstructionsBlock(instructionsPath);
|
|
73
|
+
// 3. Install the /ium: prompts (Copilot expects a .prompt.md suffix)
|
|
74
|
+
const commandCount = await installCommands(COMMANDS_SRC_DIR, promptsDir, {
|
|
75
|
+
rename: f => f.replace(/\.md$/, '.prompt.md'),
|
|
76
|
+
});
|
|
77
|
+
// 4. Optionally auto-approve tools via workspace settings
|
|
78
|
+
let autoApproveSet = false;
|
|
79
|
+
if (options.autoApprove) {
|
|
80
|
+
const settings = await readJsonConfig(settingsPath);
|
|
81
|
+
settings['chat.tools.autoApprove'] = true;
|
|
82
|
+
await writeJsonConfig(settingsPath, settings);
|
|
83
|
+
autoApproveSet = true;
|
|
84
|
+
}
|
|
85
|
+
spinner.succeed('Copilot configured for Contextium!');
|
|
86
|
+
console.log();
|
|
87
|
+
console.log(chalk.green('✓') + ` MCP server registered: ${chalk.cyan(serverKey)}`);
|
|
88
|
+
console.log(chalk.green('✓') + ' Instructions written (Task Awareness + Workflow Engineering)');
|
|
89
|
+
if (commandCount > 0) {
|
|
90
|
+
console.log(chalk.green('✓') + ` /ium: prompts installed: ${chalk.cyan(String(commandCount))} files`);
|
|
91
|
+
}
|
|
92
|
+
if (autoApproveSet) {
|
|
93
|
+
console.log(chalk.green('✓') + ' chat.tools.autoApprove enabled in .vscode/settings.json');
|
|
94
|
+
}
|
|
95
|
+
console.log(chalk.dim(` Server config: ${mcpPath}`));
|
|
96
|
+
console.log(chalk.dim(` Instructions: ${instructionsPath}`));
|
|
97
|
+
if (commandCount > 0) {
|
|
98
|
+
console.log(chalk.dim(` Prompts dir: ${promptsDir}`));
|
|
99
|
+
}
|
|
100
|
+
console.log();
|
|
101
|
+
console.log(chalk.bold('Next steps in VS Code:'));
|
|
102
|
+
console.log(chalk.white(' • Reload the window so Copilot picks up .vscode/mcp.json'));
|
|
103
|
+
console.log(chalk.white(' • Start the server from the mcp.json gutter "Start" action if prompted'));
|
|
104
|
+
if (!options.autoApprove) {
|
|
105
|
+
console.log(chalk.white(' • Approve Contextium tools when prompted, or re-run with --auto-approve'));
|
|
106
|
+
console.log(chalk.white(' to set chat.tools.autoApprove (skips per-tool confirmation)'));
|
|
107
|
+
}
|
|
108
|
+
if (!options.remote) {
|
|
109
|
+
console.log(chalk.dim(' • Local server runs via npx; run `contextium login` first if you haven\'t'));
|
|
110
|
+
}
|
|
111
|
+
console.log();
|
|
112
|
+
console.log(chalk.green('✓ Done!') + chalk.dim(' Copilot can now use Contextium.'));
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
spinner.fail(`Failed to configure Copilot: ${error.message}`);
|
|
116
|
+
console.log();
|
|
117
|
+
console.log(chalk.yellow('Manual setup:'));
|
|
118
|
+
console.log(chalk.dim(`Add to ${mcpPath}:`));
|
|
119
|
+
console.log(chalk.white(' ' + JSON.stringify({ servers: { [serverKey]: copilotServerEntry({ remote: !!options.remote, profile: options.profile }) } })));
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=setup-copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-copilot.js","sourceRoot":"","sources":["../../src/commands/setup-copilot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Configure Cursor for Contextium with full parity to the Claude Code setup:
|
|
4
|
+
* MCP server, no permission prompts, the product-behaviour instructions, and
|
|
5
|
+
* the /ium: commands.
|
|
6
|
+
*
|
|
7
|
+
* Cursor reads (verified against Cursor 3.6+ docs):
|
|
8
|
+
* - <base>/mcp.json — registers the server under `mcpServers`
|
|
9
|
+
* - <base>/permissions.json — `mcpAllowlist` auto-approves the tools
|
|
10
|
+
* - <base>/rules/contextium.mdc — always-applied project instructions
|
|
11
|
+
* - <base>/commands/*.md — the /ium: slash commands
|
|
12
|
+
* where <base> is ~/.cursor (global) or ./.cursor (project).
|
|
13
|
+
*/
|
|
14
|
+
export declare const setupCursorCommand: Command;
|
|
15
|
+
//# sourceMappingURL=setup-cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-cursor.d.ts","sourceRoot":"","sources":["../../src/commands/setup-cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBnC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,SA6F3B,CAAA"}
|