@contextium/cli 1.6.5 → 1.6.7

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.
Files changed (47) hide show
  1. package/dist/commands/edit-file.d.ts.map +1 -1
  2. package/dist/commands/edit-file.js +1 -0
  3. package/dist/commands/edit-file.js.map +1 -1
  4. package/dist/commands/links.d.ts +3 -0
  5. package/dist/commands/links.d.ts.map +1 -0
  6. package/dist/commands/links.js +58 -0
  7. package/dist/commands/links.js.map +1 -0
  8. package/dist/commands/new-file.d.ts.map +1 -1
  9. package/dist/commands/new-file.js +1 -0
  10. package/dist/commands/new-file.js.map +1 -1
  11. package/dist/commands/setup-codex.d.ts +14 -0
  12. package/dist/commands/setup-codex.d.ts.map +1 -0
  13. package/dist/commands/setup-codex.js +160 -0
  14. package/dist/commands/setup-codex.js.map +1 -0
  15. package/dist/commands/setup-connect.d.ts +11 -0
  16. package/dist/commands/setup-connect.d.ts.map +1 -0
  17. package/dist/commands/setup-connect.js +52 -0
  18. package/dist/commands/setup-connect.js.map +1 -0
  19. package/dist/commands/setup-copilot.d.ts +14 -0
  20. package/dist/commands/setup-copilot.d.ts.map +1 -0
  21. package/dist/commands/setup-copilot.js +123 -0
  22. package/dist/commands/setup-copilot.js.map +1 -0
  23. package/dist/commands/setup-cursor.d.ts +15 -0
  24. package/dist/commands/setup-cursor.d.ts.map +1 -0
  25. package/dist/commands/setup-cursor.js +109 -0
  26. package/dist/commands/setup-cursor.js.map +1 -0
  27. package/dist/commands/workflows.js +2 -2
  28. package/dist/commands/workflows.js.map +1 -1
  29. package/dist/index.js +13 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/lib/client-config.d.ts +26 -0
  32. package/dist/lib/client-config.d.ts.map +1 -0
  33. package/dist/lib/client-config.js +55 -0
  34. package/dist/lib/client-config.js.map +1 -0
  35. package/dist/lib/instructions.d.ts +49 -0
  36. package/dist/lib/instructions.d.ts.map +1 -0
  37. package/dist/lib/instructions.js +138 -0
  38. package/dist/lib/instructions.js.map +1 -0
  39. package/dist/lib/msal.js +4 -4
  40. package/dist/lib/output.d.ts +2 -0
  41. package/dist/lib/output.d.ts.map +1 -1
  42. package/dist/lib/output.js +3 -0
  43. package/dist/lib/output.js.map +1 -1
  44. package/package.json +1 -1
  45. package/skills/ium/contextium.md +12 -0
  46. package/skills/ium/new-project.md +287 -3
  47. package/skills/ium/workflow.md +9 -11
@@ -1 +1 @@
1
- {"version":3,"file":"edit-file.d.ts","sourceRoot":"","sources":["../../src/commands/edit-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,eAAe,SAsDxB,CAAA"}
1
+ {"version":3,"file":"edit-file.d.ts","sourceRoot":"","sources":["../../src/commands/edit-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,eAAe,SAuDxB,CAAA"}
@@ -15,6 +15,7 @@ export const editFileCommand = new Command('edit')
15
15
  .option('--version', 'Create a new version (default when content changes)')
16
16
  .option('--folder <id>', 'Move to folder ID (use "root" for root)')
17
17
  .option('--library <id>', 'Move to a different context library (project) by ID')
18
+ .addHelpText('after', '\nFile linking: put //<fileId> inline in content to link to another file in the same workspace (use the target\'s UUID, not its title). Re-indexed on save; backlinks are automatic. Remove a link by deleting its //<id> token. See "contextium links <fileId>".')
18
19
  .action(async (fileId, options) => {
19
20
  const spinner = ora('Updating file...').start();
20
21
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"edit-file.js","sourceRoot":"","sources":["../../src/commands/edit-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit-file.js","sourceRoot":"","sources":["../../src/commands/edit-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const linksCommand: Command;
3
+ //# sourceMappingURL=links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,eAAO,MAAM,YAAY,SAqDrB,CAAA"}
@@ -0,0 +1,58 @@
1
+ import { Command } from 'commander';
2
+ import { ApiClient } from '../lib/api-client.js';
3
+ import { loadConfig } from '../lib/config.js';
4
+ import { chalk, ora } from '../lib/output.js';
5
+ export const linksCommand = new Command('links')
6
+ .description('Show a file\'s links — outgoing (// links) and backlinks (files that link here)')
7
+ .argument('<fileId>', 'File ID')
8
+ .option('-d, --direction <direction>', 'Which links to show: forward | backward | both', 'both')
9
+ .action(async (fileId, options) => {
10
+ const spinner = ora('Loading links...').start();
11
+ try {
12
+ const config = await loadConfig();
13
+ const client = new ApiClient(config.api_key, config.api_url);
14
+ const direction = ['forward', 'backward', 'both'].includes(options.direction) ? options.direction : 'both';
15
+ const { data } = await client.get(`/files/${fileId}/links?direction=${direction}`);
16
+ const result = data.data || data;
17
+ const forward = result.forward || [];
18
+ const backward = result.backward || [];
19
+ spinner.stop();
20
+ if (direction === 'forward' || direction === 'both') {
21
+ console.log(chalk.bold(`\nOutgoing links (${forward.length}):`));
22
+ if (forward.length === 0) {
23
+ console.log(chalk.dim(' None — add a link by putting //<fileId> in this file\'s content.'));
24
+ }
25
+ else {
26
+ for (const l of forward) {
27
+ if (l.resolved && l.targetFileId) {
28
+ const label = l.displayText || l.targetTitle || l.linkText;
29
+ console.log(chalk.cyan(` → ${label}`), chalk.dim(l.targetPath ? `(${l.targetPath})` : ''));
30
+ console.log(chalk.gray(` ${l.targetFileId}`));
31
+ }
32
+ else {
33
+ console.log(chalk.yellow(` → ${l.linkText}`), chalk.dim('(dangling — no matching file)'));
34
+ }
35
+ }
36
+ }
37
+ console.log();
38
+ }
39
+ if (direction === 'backward' || direction === 'both') {
40
+ console.log(chalk.bold(`Backlinks (${backward.length}):`));
41
+ if (backward.length === 0) {
42
+ console.log(chalk.dim(' None — no files link here yet.'));
43
+ }
44
+ else {
45
+ for (const l of backward) {
46
+ console.log(chalk.cyan(` ← ${l.sourceTitle}`), chalk.dim(l.sourcePath ? `(${l.sourcePath})` : ''));
47
+ console.log(chalk.gray(` ${l.sourceFileId}`));
48
+ }
49
+ }
50
+ console.log();
51
+ }
52
+ }
53
+ catch (error) {
54
+ spinner.fail(`Failed to load links: ${error.message}`);
55
+ process.exit(1);
56
+ }
57
+ });
58
+ //# sourceMappingURL=links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"new-file.d.ts","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,cAAc,SA+FvB,CAAA"}
1
+ {"version":3,"file":"new-file.d.ts","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,cAAc,SAgGvB,CAAA"}
@@ -13,6 +13,7 @@ export const newFileCommand = new Command('new')
13
13
  .option('--stdin', 'Read content from stdin (pipe content in)')
14
14
  .option('-w, --workspace <slug>', 'Workspace name or slug')
15
15
  .option('--folder <id>', 'Folder ID to place file in')
16
+ .addHelpText('after', '\nFile linking: put //<fileId> inline in content to link to another file in the same workspace (use the target\'s UUID, not its title). It renders as the target\'s title and the target gains a backlink automatically. See "contextium links <fileId>".')
16
17
  .action(async (libraryName, options) => {
17
18
  const spinner = ora('Creating file...').start();
18
19
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"new-file.js","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new-file.js","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,MAAM,aAAa,CAAA;AAE5B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KAC7C,WAAW,CAAC,kDAAkD,CAAC;KAC/D,QAAQ,CAAC,WAAW,EAAE,sCAAsC,CAAC;KAC7D,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC;KACnD,cAAc,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;KAClE,MAAM,CAAC,sBAAsB,EAAE,iFAAiF,CAAC;KACjH,MAAM,CAAC,4BAA4B,EAAE,gCAAgC,CAAC;KACtE,MAAM,CAAC,SAAS,EAAE,2CAA2C,CAAC;KAC9D,MAAM,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;KAC1D,MAAM,CAAC,eAAe,EAAE,4BAA4B,CAAC;KACrD,WAAW,CAAC,OAAO,EAAE,2PAA2P,CAAC;KACjR,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,OAAO,EAAE,EAAE;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAA;IAE/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAE5D,gCAAgC;QAChC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAChE,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,IAAI,cAAc,CAAA;QAExD,IAAI,kBAAkB,GAAG,UAAU,CAAA;QACnC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CACpC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;gBACxD,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CACzD,CAAA;YACD,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,SAAS,aAAa,CAAC,CAAA;gBAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,kBAAkB,GAAG,CAAC,EAAE,CAAC,CAAA;QAC3B,CAAC;QAED,IAAI,YAAY,GAAQ,IAAI,CAAA;QAC5B,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;YACpC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;YAChF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,IAAI,YAAY,IAAI,EAAE,CAAA;YACxD,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CACtC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAC7B,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;gBAClD,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CACnD,CACF,CAAA;YACD,IAAI,YAAY;gBAAE,MAAK;QACzB,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,oBAAoB,WAAW,aAAa,CAAC,CAAA;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,wDAAwD;QACxD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAA;QACnC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,OAAO,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtD,MAAM,MAAM,GAAa,EAAE,CAAA;gBAC3B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;gBACvD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBAC/E,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACnC,CAAC,CAAC,CAAA;YACF,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAA;YACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,IAAI,GAAQ;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO;SACR,CAAA;QACD,IAAI,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAA;QAElD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;QACxF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAA;QAEtC,OAAO,CAAC,IAAI,EAAE,CAAA;QAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAA;QAC1D,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QACrC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,YAAY,CAAC,IAAI,EAAE,CAAC,CAAA;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA"}
@@ -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":"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"}
@@ -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"}