@markus-global/cli 0.7.3-rc.2 → 0.7.3

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 (109) hide show
  1. package/dist/commands/agent.d.ts.map +1 -1
  2. package/dist/commands/agent.js +2 -149
  3. package/dist/commands/agent.js.map +1 -1
  4. package/dist/commands/doctor.js +1 -1
  5. package/dist/commands/doctor.js.map +1 -1
  6. package/dist/commands/init.js +2 -2
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/install-agent.d.ts.map +1 -1
  9. package/dist/commands/install-agent.js +4 -5
  10. package/dist/commands/install-agent.js.map +1 -1
  11. package/dist/commands/system.d.ts.map +1 -1
  12. package/dist/commands/system.js +3 -124
  13. package/dist/commands/system.js.map +1 -1
  14. package/dist/index.js +4 -57
  15. package/dist/index.js.map +1 -1
  16. package/dist/markus.mjs +580 -3213
  17. package/dist/tray.js +6 -2
  18. package/dist/tray.js.map +1 -1
  19. package/dist/tray.mjs +4 -2
  20. package/dist/utils/logger.d.ts +1 -1
  21. package/dist/utils/logger.js +1 -1
  22. package/dist/web-ui/assets/{browser-CIXBeJ4H.js → browser-hOSqGAXu.js} +1 -1
  23. package/dist/web-ui/assets/index-ThJZw2FP.js +706 -0
  24. package/dist/web-ui/assets/index-r_zg4Nsa.css +1 -0
  25. package/dist/web-ui/index.html +2 -2
  26. package/package.json +1 -1
  27. package/templates/skills/markus-admin-cli/SKILL.md +23 -96
  28. package/dist/commands/approval.d.ts +0 -3
  29. package/dist/commands/approval.d.ts.map +0 -1
  30. package/dist/commands/approval.js +0 -59
  31. package/dist/commands/approval.js.map +0 -1
  32. package/dist/commands/audit.d.ts +0 -3
  33. package/dist/commands/audit.d.ts.map +0 -1
  34. package/dist/commands/audit.js +0 -92
  35. package/dist/commands/audit.js.map +0 -1
  36. package/dist/commands/builder.d.ts +0 -3
  37. package/dist/commands/builder.d.ts.map +0 -1
  38. package/dist/commands/builder.js +0 -85
  39. package/dist/commands/builder.js.map +0 -1
  40. package/dist/commands/channel.d.ts +0 -3
  41. package/dist/commands/channel.d.ts.map +0 -1
  42. package/dist/commands/channel.js +0 -259
  43. package/dist/commands/channel.js.map +0 -1
  44. package/dist/commands/connect.d.ts +0 -3
  45. package/dist/commands/connect.d.ts.map +0 -1
  46. package/dist/commands/connect.js +0 -267
  47. package/dist/commands/connect.js.map +0 -1
  48. package/dist/commands/deliverable.d.ts +0 -3
  49. package/dist/commands/deliverable.d.ts.map +0 -1
  50. package/dist/commands/deliverable.js +0 -127
  51. package/dist/commands/deliverable.js.map +0 -1
  52. package/dist/commands/external-agent.d.ts +0 -3
  53. package/dist/commands/external-agent.d.ts.map +0 -1
  54. package/dist/commands/external-agent.js +0 -79
  55. package/dist/commands/external-agent.js.map +0 -1
  56. package/dist/commands/gateway.d.ts +0 -3
  57. package/dist/commands/gateway.d.ts.map +0 -1
  58. package/dist/commands/gateway.js +0 -91
  59. package/dist/commands/gateway.js.map +0 -1
  60. package/dist/commands/key.d.ts +0 -3
  61. package/dist/commands/key.d.ts.map +0 -1
  62. package/dist/commands/key.js +0 -68
  63. package/dist/commands/key.js.map +0 -1
  64. package/dist/commands/project.d.ts +0 -3
  65. package/dist/commands/project.d.ts.map +0 -1
  66. package/dist/commands/project.js +0 -164
  67. package/dist/commands/project.js.map +0 -1
  68. package/dist/commands/report.d.ts +0 -3
  69. package/dist/commands/report.d.ts.map +0 -1
  70. package/dist/commands/report.js +0 -99
  71. package/dist/commands/report.js.map +0 -1
  72. package/dist/commands/requirement.d.ts +0 -3
  73. package/dist/commands/requirement.d.ts.map +0 -1
  74. package/dist/commands/requirement.js +0 -197
  75. package/dist/commands/requirement.js.map +0 -1
  76. package/dist/commands/review.d.ts +0 -3
  77. package/dist/commands/review.d.ts.map +0 -1
  78. package/dist/commands/review.js +0 -71
  79. package/dist/commands/review.js.map +0 -1
  80. package/dist/commands/role.d.ts +0 -3
  81. package/dist/commands/role.d.ts.map +0 -1
  82. package/dist/commands/role.js +0 -39
  83. package/dist/commands/role.js.map +0 -1
  84. package/dist/commands/settings.d.ts +0 -3
  85. package/dist/commands/settings.d.ts.map +0 -1
  86. package/dist/commands/settings.js +0 -53
  87. package/dist/commands/settings.js.map +0 -1
  88. package/dist/commands/skill.d.ts +0 -3
  89. package/dist/commands/skill.d.ts.map +0 -1
  90. package/dist/commands/skill.js +0 -136
  91. package/dist/commands/skill.js.map +0 -1
  92. package/dist/commands/task.d.ts +0 -3
  93. package/dist/commands/task.d.ts.map +0 -1
  94. package/dist/commands/task.js +0 -510
  95. package/dist/commands/task.js.map +0 -1
  96. package/dist/commands/team.d.ts +0 -3
  97. package/dist/commands/team.d.ts.map +0 -1
  98. package/dist/commands/team.js +0 -312
  99. package/dist/commands/team.js.map +0 -1
  100. package/dist/commands/template.d.ts +0 -3
  101. package/dist/commands/template.d.ts.map +0 -1
  102. package/dist/commands/template.js +0 -77
  103. package/dist/commands/template.js.map +0 -1
  104. package/dist/commands/user.d.ts +0 -3
  105. package/dist/commands/user.d.ts.map +0 -1
  106. package/dist/commands/user.js +0 -68
  107. package/dist/commands/user.js.map +0 -1
  108. package/dist/web-ui/assets/index-BUO-8jKv.js +0 -706
  109. package/dist/web-ui/assets/index-DxTg9YFr.css +0 -1
@@ -1,259 +0,0 @@
1
- import * as readline from 'node:readline';
2
- import { loadConfig, saveConfig } from '@markus/shared';
3
- const C = { GREEN: '\x1b[32m', RED: '\x1b[31m', YELLOW: '\x1b[33m', CYAN: '\x1b[36m', DIM: '\x1b[2m', RESET: '\x1b[0m', BOLD: '\x1b[1m' };
4
- const ok = (t, d = '') => console.log(` ${C.GREEN}✓${C.RESET} ${t}${d ? ` ${C.DIM}${d}${C.RESET}` : ''}`);
5
- const fail = (t, d = '') => console.log(` ${C.RED}✗${C.RESET} ${t}${d ? ` ${C.DIM}${d}${C.RESET}` : ''}`);
6
- const warn = (t, d = '') => console.log(` ${C.YELLOW}⚠${C.RESET} ${t}${d ? ` ${C.DIM}${d}${C.RESET}` : ''}`);
7
- const info = (t) => console.log(` ${C.CYAN}→${C.RESET} ${t}`);
8
- const section = (t) => console.log(`\n${C.BOLD}◆ ${t}${C.RESET}`);
9
- function createAsk() {
10
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
11
- const ask = (q, def) => new Promise(r => rl.question(`${q}${def ? ` [${def}]` : ''}: `, ans => r(ans.trim() || def || '')));
12
- return { rl, ask };
13
- }
14
- const CHANNELS = [
15
- {
16
- id: 'feishu',
17
- label: '飞书 (Feishu)',
18
- description: 'Lark/Feishu open platform integration',
19
- webhookPort: 9000,
20
- fields: [
21
- { key: 'appId', label: 'App ID', envKey: 'FEISHU_APP_ID', placeholder: 'cli_xxxxxxxxxxxx' },
22
- { key: 'appSecret', label: 'App Secret', envKey: 'FEISHU_APP_SECRET', secret: true, placeholder: 'xxxxxxxxxxxxxxxx' },
23
- { key: 'encryptKey', label: 'Encrypt Key', envKey: 'FEISHU_ENCRYPT_KEY', secret: true, placeholder: 'Optional — for encrypted mode' },
24
- { key: 'verificationToken', label: 'Verification Token', envKey: 'FEISHU_VERIFICATION_TOKEN', secret: true },
25
- ],
26
- isConfigured: cfg => !!(cfg?.appId && cfg?.appSecret),
27
- },
28
- {
29
- id: 'telegram',
30
- label: 'Telegram',
31
- description: 'Telegram Bot API integration',
32
- webhookPort: 8443,
33
- fields: [
34
- { key: 'botToken', label: 'Bot Token', envKey: 'TELEGRAM_BOT_TOKEN', secret: true, placeholder: '123456:ABC-DefGhIJKlmno...' },
35
- ],
36
- isConfigured: cfg => !!(cfg?.botToken),
37
- },
38
- {
39
- id: 'whatsapp',
40
- label: 'WhatsApp',
41
- description: 'WhatsApp Business API (Meta Graph API)',
42
- webhookPort: 3001,
43
- fields: [
44
- { key: 'phoneNumberId', label: 'Phone Number ID', envKey: 'WHATSAPP_PHONE_NUMBER_ID', placeholder: '1234567890' },
45
- { key: 'accessToken', label: 'Access Token', envKey: 'WHATSAPP_ACCESS_TOKEN', secret: true, placeholder: 'EAAAG...xxxx' },
46
- { key: 'businessAccountId', label: 'Business Account ID', envKey: 'WHATSAPP_BUSINESS_ACCOUNT_ID', placeholder: '123456789' },
47
- { key: 'appSecret', label: 'App Secret', envKey: 'WHATSAPP_APP_SECRET', secret: true, placeholder: 'xxxxxxxxxxxxxxxx' },
48
- ],
49
- isConfigured: cfg => !!(cfg?.phoneNumberId && cfg?.accessToken),
50
- },
51
- {
52
- id: 'slack',
53
- label: 'Slack',
54
- description: 'Slack Bot with Events API webhook',
55
- webhookPort: 3000,
56
- fields: [
57
- { key: 'botToken', label: 'Bot Token (xoxb-)', envKey: 'SLACK_BOT_TOKEN', secret: true, placeholder: 'xoxb-...' },
58
- { key: 'signingSecret', label: 'Signing Secret', envKey: 'SLACK_SIGNING_SECRET', secret: true, placeholder: 'xxxxxxxxxxxxxxxx' },
59
- ],
60
- isConfigured: cfg => !!(cfg?.botToken && cfg?.signingSecret),
61
- },
62
- {
63
- id: 'dingtalk',
64
- label: '钉钉 (DingTalk)',
65
- description: 'DingTalk enterprise messaging',
66
- fields: [
67
- { key: 'clientId', label: 'Client ID', envKey: 'DINGTALK_CLIENT_ID' },
68
- { key: 'clientSecret', label: 'Client Secret', envKey: 'DINGTALK_CLIENT_SECRET', secret: true },
69
- ],
70
- isConfigured: cfg => !!(cfg?.clientId && cfg?.clientSecret),
71
- },
72
- {
73
- id: 'wecom',
74
- label: '企业微信 (WeCom)',
75
- description: 'WeCom (WeChat Work) enterprise messaging',
76
- fields: [
77
- { key: 'corpId', label: 'Corp ID', envKey: 'WECOM_CORP_ID' },
78
- { key: 'agentId', label: 'Agent ID', envKey: 'WECOM_AGENT_ID' },
79
- { key: 'corpSecret', label: 'Corp Secret', envKey: 'WECOM_CORP_SECRET', secret: true },
80
- ],
81
- isConfigured: cfg => !!(cfg?.corpId && cfg?.agentId && cfg?.corpSecret),
82
- },
83
- ];
84
- // ─── Interactive channel setup ────────────────────────────────────────────────
85
- async function interactiveSetup(channelId) {
86
- const { rl, ask } = createAsk();
87
- const config = loadConfig(undefined);
88
- const integrations = config.integrations ?? {};
89
- if (channelId) {
90
- const ch = CHANNELS.find(c => c.id === channelId);
91
- if (!ch) {
92
- console.log(`Unknown channel: ${channelId}`);
93
- console.log(`Available: ${CHANNELS.map(c => c.id).join(', ')}`);
94
- rl.close();
95
- return;
96
- }
97
- await setupChannel(ch, ask, config, integrations);
98
- rl.close();
99
- return;
100
- }
101
- // Show channel status
102
- console.log(`\n${C.BOLD}╔══════════════════════════════════════════════════════════════╗
103
- ║ ${C.CYAN}Markus Channel Setup${C.RESET}${C.BOLD} ║
104
- ╚══════════════════════════════════════════════════════════════╝${C.RESET}\n`);
105
- section('Communication Channels');
106
- for (const ch of CHANNELS) {
107
- const chConfig = integrations[ch.id] ?? {};
108
- const configured = ch.isConfigured(chConfig);
109
- const port = ch.webhookPort ? ` port ${ch.webhookPort}` : '';
110
- if (configured) {
111
- ok(ch.label, `${C.DIM}${ch.description}${C.RESET}`);
112
- if (ch.webhookPort)
113
- info(`Webhook: http://localhost:${ch.webhookPort}/webhook/${ch.id}`);
114
- }
115
- else {
116
- fail(ch.label, `${C.DIM}${ch.description}${C.RESET}`);
117
- }
118
- }
119
- console.log(`\n ${C.BOLD}[1-${CHANNELS.length}]${C.RESET} Configure a channel`);
120
- console.log(` ${C.BOLD}[A]${C.RESET} Configure all channels`);
121
- console.log(` ${C.BOLD}[Q]${C.RESET} Quit\n`);
122
- const choice = await ask('Select option', '1');
123
- if (choice.toLowerCase() === 'q') {
124
- rl.close();
125
- return;
126
- }
127
- if (choice.toLowerCase() === 'a') {
128
- for (const ch of CHANNELS) {
129
- await setupChannel(ch, ask, config, integrations);
130
- }
131
- }
132
- else {
133
- const idx = parseInt(choice, 10) - 1;
134
- if (!isNaN(idx) && idx >= 0 && idx < CHANNELS.length) {
135
- await setupChannel(CHANNELS[idx], ask, config, integrations);
136
- }
137
- }
138
- rl.close();
139
- }
140
- async function setupChannel(ch, ask, config, integrations) {
141
- console.log(`\n${C.BOLD}── ${ch.label} Setup${C.RESET}\n`);
142
- if (ch.webhookPort) {
143
- console.log(` ${C.DIM}Webhook URL: http://localhost:${ch.webhookPort}/webhook/${ch.id}${C.RESET}`);
144
- console.log(` ${C.DIM}Configure this URL in your ${ch.label} developer portal → Webhooks${C.RESET}\n`);
145
- }
146
- const chConfig = integrations[ch.id] ?? {};
147
- const fieldValues = { ...chConfig };
148
- for (const field of ch.fields) {
149
- // Check env first
150
- if (field.envKey && process.env[field.envKey] && !chConfig[field.key]) {
151
- info(`${field.label}: found in ${field.envKey} — using environment`);
152
- fieldValues[field.key] = process.env[field.envKey];
153
- continue;
154
- }
155
- const current = chConfig[field.key] ?? '';
156
- const envNote = field.envKey ? ` (env: ${field.envKey})` : '';
157
- const input = await ask(`${field.label}${envNote}`, current || field.placeholder);
158
- if (input)
159
- fieldValues[field.key] = input;
160
- }
161
- const newIntegrations = {
162
- ...integrations,
163
- [ch.id]: fieldValues,
164
- };
165
- saveConfig({ ...config, integrations: newIntegrations });
166
- console.log(`\n ${C.GREEN}✓${C.RESET} ${ch.label} saved!`);
167
- if (ch.webhookPort) {
168
- console.log(` ${C.DIM}Restart markus server for changes to take effect${C.RESET}\n`);
169
- }
170
- }
171
- // ─── List status ───────────────────────────────────────────────────────────────
172
- async function listStatus() {
173
- const config = loadConfig(undefined);
174
- const integrations = config.integrations ?? {};
175
- console.log(`\n${C.BOLD}╔══════════════════════════════════════════════════════════════╗
176
- ║ ${C.CYAN}Markus Channel Status${C.RESET}${C.BOLD} ║
177
- ╚══════════════════════════════════════════════════════════════╝${C.RESET}\n`);
178
- for (const ch of CHANNELS) {
179
- const chConfig = integrations[ch.id] ?? {};
180
- const configured = ch.isConfigured(chConfig);
181
- const port = ch.webhookPort ? ` port ${ch.webhookPort}` : '';
182
- const webhooks = ch.webhookPort ? ` → http://localhost:${ch.webhookPort}/webhook/${ch.id}` : '';
183
- if (configured) {
184
- ok(`${ch.label}${C.DIM}${port}${webhooks}${C.RESET}`);
185
- // Show which fields are set
186
- const fieldLabels = ch.fields.filter(f => chConfig[f.key]).map(f => f.label.toLowerCase());
187
- info(`${fieldLabels.join(', ')} configured`);
188
- }
189
- else {
190
- fail(`${ch.label}`, `${C.DIM}not configured — run: markus channel setup ${ch.id}${C.RESET}`);
191
- }
192
- }
193
- console.log('');
194
- }
195
- // ─── Test webhook ─────────────────────────────────────────────────────────────
196
- async function testWebhook(channelId) {
197
- const config = loadConfig(undefined);
198
- const chConfig = config.integrations?.[channelId];
199
- if (!chConfig) {
200
- fail(`Channel ${channelId} not configured`);
201
- return;
202
- }
203
- const ch = CHANNELS.find(c => c.id === channelId);
204
- if (!ch?.webhookPort) {
205
- warn(`No webhook for ${ch?.label ?? channelId}`);
206
- return;
207
- }
208
- const port = ch.webhookPort;
209
- const path = `/webhook/${channelId}`;
210
- try {
211
- const res = await fetch(`http://localhost:${port}${path}`, {
212
- method: 'GET',
213
- signal: AbortSignal.timeout(3000),
214
- });
215
- ok(`${ch.label} webhook reachable`, `HTTP ${res.status}`);
216
- }
217
- catch (e) {
218
- fail(`${ch.label} webhook not reachable`, `http://localhost:${port}${path}`);
219
- info('Start server with markus start or check if channel is enabled');
220
- }
221
- }
222
- // ─── CLI registration ─────────────────────────────────────────────────────────
223
- export function registerChannelCommand(program) {
224
- const channel = program
225
- .command('channel')
226
- .description('Configure and manage communication channels (飞书/Telegram/WhatsApp/Slack/钉钉/企业微信)');
227
- channel
228
- .command('setup [channel]')
229
- .description('Interactive channel setup (or specify channel id)')
230
- .option('--non-interactive', 'Use environment variables only')
231
- .action(async (channelId, opts) => {
232
- if (opts.nonInteractive) {
233
- const config = loadConfig(undefined);
234
- console.log(JSON.stringify(config.integrations ?? {}, null, 2));
235
- return;
236
- }
237
- await interactiveSetup(channelId);
238
- });
239
- channel
240
- .command('status')
241
- .description('Show channel configuration status')
242
- .action(async () => { await listStatus(); });
243
- channel
244
- .command('test <channel>')
245
- .description('Test webhook connectivity for a channel')
246
- .action(async (channelId) => { await testWebhook(channelId); });
247
- channel
248
- .command('list')
249
- .description('List all supported channels')
250
- .action(() => {
251
- console.log(`\n${C.BOLD}Supported Channels:${C.RESET}\n`);
252
- for (const ch of CHANNELS) {
253
- const webhooks = ch.webhookPort ? ` ${C.CYAN}webhook:${ch.webhookPort}${C.RESET}` : '';
254
- console.log(` ${C.BOLD}${ch.label.padEnd(14)}${C.RESET} ${ch.id.padEnd(12)} ${C.DIM}${ch.description}${webhooks}${C.RESET}`);
255
- }
256
- console.log(`\n ${C.DIM}Run: markus channel setup [channel-id]${C.RESET}\n`);
257
- });
258
- }
259
- //# sourceMappingURL=channel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/commands/channel.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerConnectCommands(program: Command): void;
3
- //# sourceMappingURL=connect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QA6RvD"}
@@ -1,267 +0,0 @@
1
- import { randomBytes } from 'node:crypto';
2
- import { createClient, ApiError } from '../api-client.js';
3
- import { success, fail, table } from '../output.js';
4
- import { loadConnectors, findConnector, scanInstalledPlatforms, writePlatformConfig, installSkillTemplate, } from '../connector-service.js';
5
- export function registerConnectCommands(program) {
6
- const root = program.command('connect').description('Connect / disconnect external agent platforms');
7
- // ── markus connect scan ─────────────────────────────────────────────────────
8
- root
9
- .command('scan')
10
- .description('Scan for installed agent platforms that can be connected')
11
- .action(async (_opts, cmd) => {
12
- const g = cmd.optsWithGlobals();
13
- const out = { json: !!g.json };
14
- const results = scanInstalledPlatforms();
15
- if (out.json) {
16
- console.log(JSON.stringify(results, null, 2));
17
- return;
18
- }
19
- if (results.length === 0) {
20
- console.log(' No connector descriptors found.');
21
- console.log(' Place connector JSON files in ~/.markus/connectors/');
22
- return;
23
- }
24
- table(results, [
25
- { key: 'displayName', header: 'Platform', width: 20 },
26
- { key: 'platform', header: 'ID', width: 15 },
27
- { key: 'installed', header: 'Installed', width: 10 },
28
- { key: 'binaryFound', header: 'Binary', width: 8 },
29
- { key: 'running', header: 'Running', width: 8 },
30
- { key: 'configPath', header: 'Config', width: 40 },
31
- ], { title: 'Detected agent platforms' });
32
- const installed = results.filter(r => r.installed);
33
- if (installed.length > 0) {
34
- console.log(`\n To connect: markus connect <platform>`);
35
- console.log(` Available: ${installed.map(r => r.platform).join(', ')}`);
36
- }
37
- });
38
- // ── markus connect list ─────────────────────────────────────────────────────
39
- root
40
- .command('list')
41
- .description('List all available connector descriptors')
42
- .action(async (_opts, cmd) => {
43
- const g = cmd.optsWithGlobals();
44
- const out = { json: !!g.json };
45
- const connectors = loadConnectors();
46
- if (out.json) {
47
- console.log(JSON.stringify(connectors, null, 2));
48
- return;
49
- }
50
- table(connectors.map(c => ({
51
- platform: c.platform,
52
- displayName: c.displayName,
53
- description: c.description,
54
- type: c.integration.type,
55
- })), [
56
- { key: 'platform', header: 'ID', width: 15 },
57
- { key: 'displayName', header: 'Name', width: 20 },
58
- { key: 'description', header: 'Description', width: 45 },
59
- { key: 'type', header: 'Type', width: 10 },
60
- ], { title: 'Available connectors' });
61
- });
62
- // ── markus connect <platform> ───────────────────────────────────────────────
63
- root
64
- .command('add <platform>')
65
- .description('Connect an external agent platform to Markus')
66
- .option('--agent-id <id>', 'External agent ID (auto-generated if omitted)')
67
- .option('--agent-name <name>', 'Agent display name')
68
- .option('--org-id <id>', 'Organization ID', 'default')
69
- .option('--capabilities <csv>', 'Comma-separated capabilities')
70
- .option('--no-config-write', 'Skip writing token/URL to platform config')
71
- .option('--no-skill-install', 'Skip installing integration skill template')
72
- .option('--agent-card-url <url>', 'Agent Card URL for custom platforms')
73
- .action(async (platform, opts, cmd) => {
74
- const g = cmd.optsWithGlobals();
75
- const out = { json: !!g.json };
76
- const connector = findConnector(platform);
77
- if (!connector) {
78
- fail(`Unknown platform "${platform}". Run \`markus connect list\` to see available connectors.`);
79
- return;
80
- }
81
- const agentId = opts.agentId || `${platform}-${randomBytes(4).toString('hex')}`;
82
- const agentName = opts.agentName || connector.defaultAgentName || `${connector.displayName} Agent`;
83
- const capabilities = opts.capabilities
84
- ? String(opts.capabilities).split(',').map((s) => s.trim()).filter(Boolean)
85
- : connector.defaultCapabilities ?? [];
86
- const client = createClient(g);
87
- const serverUrl = g.server || process.env['MARKUS_API_URL'] || 'http://localhost:8056';
88
- try {
89
- // Step 1: Register via gateway
90
- console.log(`\n Connecting ${connector.displayName} to Markus...\n`);
91
- console.log(` [1/4] Registering external agent...`);
92
- const reg = await client.post('/gateway/register', {
93
- agentId,
94
- agentName,
95
- orgId: opts.orgId,
96
- capabilities,
97
- platform: connector.platform,
98
- agentCardUrl: opts.agentCardUrl || connector.detection.agentCardUrl,
99
- });
100
- const markusAgentId = reg['markusAgentId'];
101
- console.log(` Agent registered: ${agentId} → Markus agent ${markusAgentId ?? '(none)'}`);
102
- // Step 2: Authenticate to get token
103
- console.log(` [2/4] Generating authentication token...`);
104
- let token;
105
- try {
106
- const infoRes = await client.get('/gateway/info');
107
- const secret = infoRes['orgSecretFull'];
108
- const authRes = await client.post('/gateway/auth', {
109
- agentId,
110
- orgId: opts.orgId,
111
- secret,
112
- });
113
- token = authRes['token'];
114
- console.log(` Token generated (${token ? token.slice(0, 20) + '...' : 'none'})`);
115
- }
116
- catch {
117
- console.log(` Warning: Could not auto-generate token. You may need to authenticate manually.`);
118
- }
119
- // Step 3: Write config to platform
120
- let configUpdated = false;
121
- if (opts.configWrite !== false && token) {
122
- console.log(` [3/4] Writing connection config to ${connector.displayName}...`);
123
- configUpdated = writePlatformConfig(connector, serverUrl, token);
124
- if (configUpdated) {
125
- console.log(` Updated: ${connector.integration.configPath}`);
126
- }
127
- else {
128
- console.log(` Skipped: could not write config (file may not exist yet)`);
129
- }
130
- }
131
- else {
132
- console.log(` [3/4] Config write skipped.`);
133
- }
134
- // Step 4: Install skill template
135
- let skillInstalled = false;
136
- if (opts.skillInstall !== false && connector.integration.skillTemplateName) {
137
- console.log(` [4/4] Installing integration skill template...`);
138
- skillInstalled = installSkillTemplate(connector);
139
- if (skillInstalled) {
140
- console.log(` Installed: ${connector.integration.skillTemplateName}`);
141
- }
142
- else {
143
- console.log(` Skipped: skill template not found or target dir missing`);
144
- }
145
- }
146
- else {
147
- console.log(` [4/4] Skill install skipped.`);
148
- }
149
- // Summary
150
- const result = {
151
- platform: connector.platform,
152
- externalAgentId: agentId,
153
- markusAgentId,
154
- markusUrl: serverUrl,
155
- token: token ? `${token.slice(0, 20)}...` : undefined,
156
- configUpdated,
157
- skillInstalled,
158
- };
159
- if (out.json) {
160
- console.log(JSON.stringify({ ...result, token }, null, 2));
161
- }
162
- else {
163
- console.log(`\n ┌─────────────────────────────────────┐`);
164
- console.log(` │ Connection Successful! │`);
165
- console.log(` └─────────────────────────────────────┘`);
166
- console.log(`\n Platform: ${connector.displayName}`);
167
- console.log(` External Agent ID: ${agentId}`);
168
- console.log(` Markus Agent ID: ${markusAgentId ?? 'N/A'}`);
169
- console.log(` Markus URL: ${serverUrl}`);
170
- console.log(` Config Updated: ${configUpdated ? 'Yes' : 'No'}`);
171
- console.log(` Skill Installed: ${skillInstalled ? 'Yes' : 'No'}`);
172
- if (token && !configUpdated) {
173
- console.log(`\n Manual setup required:`);
174
- console.log(` Set the following in your ${connector.displayName} config:`);
175
- console.log(` ${connector.integration.urlField}: ${serverUrl}`);
176
- console.log(` ${connector.integration.tokenField}: ${token}`);
177
- }
178
- if (!token) {
179
- console.log(`\n Next step: authenticate the agent manually:`);
180
- console.log(` markus admin gateway auth --agent-id ${agentId} --secret <gateway-secret>`);
181
- }
182
- console.log('');
183
- }
184
- }
185
- catch (e) {
186
- if (e instanceof ApiError) {
187
- fail(`Failed to connect: ${e.message}`);
188
- }
189
- else {
190
- throw e;
191
- }
192
- }
193
- });
194
- // ── markus connect remove <platform-or-id> ──────────────────────────────────
195
- root
196
- .command('remove <platformOrId>')
197
- .description('Disconnect an external agent platform from Markus')
198
- .option('--org-id <id>', 'Organization ID', 'default')
199
- .action(async (platformOrId, opts, cmd) => {
200
- const g = cmd.optsWithGlobals();
201
- const out = { json: !!g.json };
202
- const client = createClient(g);
203
- try {
204
- // Try to list external agents and find matching one
205
- const agents = await client.get('/external-agents', { orgId: opts.orgId });
206
- const rows = agents.registrations ?? agents.agents ?? [];
207
- const match = rows.find((r) => r['platform'] === platformOrId ||
208
- r['externalAgentId'] === platformOrId ||
209
- r['externalAgentId']?.startsWith(platformOrId + '-'));
210
- if (!match) {
211
- fail(`No connected agent found for "${platformOrId}". Run \`markus admin external-agent list\` to see all.`);
212
- return;
213
- }
214
- const extId = match['externalAgentId'];
215
- const agentId = match['id'] ?? match['markusAgentId'];
216
- // Delete via external-agents endpoint
217
- if (agentId) {
218
- await client.delete(`/external-agents/${encodeURIComponent(agentId)}`, { orgId: opts.orgId });
219
- }
220
- success(`Disconnected ${platformOrId} (agent: ${extId})`, match, out);
221
- }
222
- catch (e) {
223
- if (e instanceof ApiError)
224
- fail(e.message);
225
- else
226
- throw e;
227
- }
228
- });
229
- // ── markus connect status ───────────────────────────────────────────────────
230
- root
231
- .command('status')
232
- .description('Show connection status of all external agents')
233
- .option('--org-id <id>', 'Organization ID', 'default')
234
- .action(async (opts, cmd) => {
235
- const g = cmd.optsWithGlobals();
236
- const out = { json: !!g.json };
237
- const client = createClient(g);
238
- try {
239
- const data = await client.get('/external-agents', { orgId: opts.orgId });
240
- const rows = (data['registrations'] ?? data['agents'] ?? data['rows'] ?? []);
241
- if (out.json) {
242
- console.log(JSON.stringify(rows, null, 2));
243
- return;
244
- }
245
- if (rows.length === 0) {
246
- console.log(' No external agents connected.');
247
- console.log(' Run `markus connect scan` to find installable platforms.');
248
- return;
249
- }
250
- table(rows, [
251
- { key: 'externalAgentId', header: 'External ID', width: 24 },
252
- { key: 'agentName', header: 'Name', width: 20 },
253
- { key: 'platform', header: 'Platform', width: 12 },
254
- { key: 'connected', header: 'Online', width: 8 },
255
- { key: 'markusAgentId', header: 'Markus Agent', width: 28 },
256
- { key: 'lastHeartbeat', header: 'Last Seen', width: 20 },
257
- ], { title: 'Connected external agents' });
258
- }
259
- catch (e) {
260
- if (e instanceof ApiError)
261
- fail(e.message);
262
- else
263
- throw e;
264
- }
265
- });
266
- }
267
- //# sourceMappingURL=connect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerDeliverableCommands(program: Command): void;
3
- //# sourceMappingURL=deliverable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deliverable.d.ts","sourceRoot":"","sources":["../../src/commands/deliverable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,QAiH3D"}