relaycast 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +43 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/billing.d.ts +3 -0
- package/dist/commands/billing.d.ts.map +1 -0
- package/dist/commands/billing.js +37 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/channel.d.ts +3 -0
- package/dist/commands/channel.d.ts.map +1 -0
- package/dist/commands/channel.js +67 -0
- package/dist/commands/channel.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +23 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/files.d.ts +3 -0
- package/dist/commands/files.d.ts.map +1 -0
- package/dist/commands/files.js +52 -0
- package/dist/commands/files.js.map +1 -0
- package/dist/commands/messaging.d.ts +3 -0
- package/dist/commands/messaging.d.ts.map +1 -0
- package/dist/commands/messaging.js +54 -0
- package/dist/commands/messaging.js.map +1 -0
- package/dist/commands/reactions.d.ts +3 -0
- package/dist/commands/reactions.d.ts.map +1 -0
- package/dist/commands/reactions.js +32 -0
- package/dist/commands/reactions.js.map +1 -0
- package/dist/commands/read.d.ts +3 -0
- package/dist/commands/read.d.ts.map +1 -0
- package/dist/commands/read.js +80 -0
- package/dist/commands/read.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +31 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/workspace.d.ts +3 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +35 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +29 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/package.json +36 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8B5D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Relay } from '@relaycast/sdk';
|
|
2
|
+
import { loadConfig } from '../config.js';
|
|
3
|
+
function createRelay() {
|
|
4
|
+
const cfg = loadConfig();
|
|
5
|
+
if (!cfg.apiKey) {
|
|
6
|
+
throw new Error('Missing API key. Run: relay config set api-key <value>');
|
|
7
|
+
}
|
|
8
|
+
return new Relay({ apiKey: cfg.apiKey, baseUrl: cfg.endpoint });
|
|
9
|
+
}
|
|
10
|
+
function agentsTable(agents) {
|
|
11
|
+
const header = ['NAME', 'STATUS', 'PERSONA'].join('\t');
|
|
12
|
+
const rows = agents.map((a) => [a.name, a.status ?? '', a.persona ?? ''].join('\t'));
|
|
13
|
+
return [header, ...rows].join('\n');
|
|
14
|
+
}
|
|
15
|
+
export function registerAgentCommands(program) {
|
|
16
|
+
const agent = program.command('agent').description('Agent management');
|
|
17
|
+
agent
|
|
18
|
+
.command('register <name>')
|
|
19
|
+
.description('Register a new agent')
|
|
20
|
+
.option('--persona <persona>', 'Agent persona')
|
|
21
|
+
.action(async (name, options) => {
|
|
22
|
+
const relay = createRelay();
|
|
23
|
+
const res = await relay.agents.register({ name, ...(options.persona ? { persona: options.persona } : {}) });
|
|
24
|
+
console.log(res.token);
|
|
25
|
+
});
|
|
26
|
+
agent
|
|
27
|
+
.command('list')
|
|
28
|
+
.description('List agents')
|
|
29
|
+
.action(async () => {
|
|
30
|
+
const relay = createRelay();
|
|
31
|
+
const agents = await relay.agents.list();
|
|
32
|
+
console.log(agentsTable(agents));
|
|
33
|
+
});
|
|
34
|
+
agent
|
|
35
|
+
.command('status <name> <status>')
|
|
36
|
+
.description('Show current agent status (status updates not supported)')
|
|
37
|
+
.action(async (name) => {
|
|
38
|
+
const relay = createRelay();
|
|
39
|
+
const a = await relay.agents.get(name);
|
|
40
|
+
console.log(`${a.name}: ${a.status}`);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,WAAW;IAClB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,MAAyE;IAC5F,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEvE,KAAK;SACF,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,qBAAqB,EAAE,eAAe,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA6B,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5G,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,aAAa,CAAC;SAC1B,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,wBAAwB,CAAC;SACjC,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6B9D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Relay } from '@relaycast/sdk';
|
|
2
|
+
import { loadConfig } from '../config.js';
|
|
3
|
+
function getRelay() {
|
|
4
|
+
const config = loadConfig();
|
|
5
|
+
if (!config.apiKey) {
|
|
6
|
+
throw new Error('No API key configured. Run: relay config set api-key <key>');
|
|
7
|
+
}
|
|
8
|
+
return new Relay({ apiKey: config.apiKey, baseUrl: config.endpoint });
|
|
9
|
+
}
|
|
10
|
+
export function registerBillingCommands(program) {
|
|
11
|
+
const billing = program.command('billing').description('Billing management');
|
|
12
|
+
billing
|
|
13
|
+
.command('usage')
|
|
14
|
+
.description('Show usage info')
|
|
15
|
+
.action(async () => {
|
|
16
|
+
const relay = getRelay();
|
|
17
|
+
const usage = await relay.billing.usage();
|
|
18
|
+
console.log(JSON.stringify(usage, null, 2));
|
|
19
|
+
});
|
|
20
|
+
billing
|
|
21
|
+
.command('subscription')
|
|
22
|
+
.description('Show subscription info')
|
|
23
|
+
.action(async () => {
|
|
24
|
+
const relay = getRelay();
|
|
25
|
+
const sub = await relay.billing.subscription();
|
|
26
|
+
console.log(JSON.stringify(sub, null, 2));
|
|
27
|
+
});
|
|
28
|
+
billing
|
|
29
|
+
.command('portal')
|
|
30
|
+
.description('Get billing portal URL')
|
|
31
|
+
.action(async () => {
|
|
32
|
+
const relay = getRelay();
|
|
33
|
+
const result = await relay.billing.portal();
|
|
34
|
+
console.log(`Billing portal: ${result.url}`);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=billing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,QAAQ;IACf,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAE7E,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/commands/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0D9D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Relay } from '@relaycast/sdk';
|
|
2
|
+
import { loadConfig } from '../config.js';
|
|
3
|
+
function getAgent() {
|
|
4
|
+
const config = loadConfig();
|
|
5
|
+
if (!config.apiKey) {
|
|
6
|
+
throw new Error('No API key configured. Run: relay config set api-key <key>');
|
|
7
|
+
}
|
|
8
|
+
if (!config.agentToken) {
|
|
9
|
+
throw new Error('No agent token configured. Run: relay config set agent-token <token>');
|
|
10
|
+
}
|
|
11
|
+
const relay = new Relay({ apiKey: config.apiKey, baseUrl: config.endpoint });
|
|
12
|
+
return relay.as(config.agentToken);
|
|
13
|
+
}
|
|
14
|
+
export function registerChannelCommands(program) {
|
|
15
|
+
const ch = program.command('channel').description('Channel management');
|
|
16
|
+
ch.command('create <name>')
|
|
17
|
+
.description('Create a channel')
|
|
18
|
+
.option('--topic <topic>', 'Channel topic')
|
|
19
|
+
.action(async (name, opts) => {
|
|
20
|
+
const agent = getAgent();
|
|
21
|
+
const channel = await agent.channels.create({ name, topic: opts.topic });
|
|
22
|
+
console.log(`Channel created: #${channel.name}`);
|
|
23
|
+
});
|
|
24
|
+
ch.command('list')
|
|
25
|
+
.description('List channels')
|
|
26
|
+
.action(async () => {
|
|
27
|
+
const agent = getAgent();
|
|
28
|
+
const channels = await agent.channels.list();
|
|
29
|
+
if (channels.length === 0) {
|
|
30
|
+
console.log('No channels.');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
for (const c of channels) {
|
|
34
|
+
const topic = c.topic ? ` — ${c.topic}` : '';
|
|
35
|
+
console.log(`#${c.name}${topic}`);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
ch.command('join <name>')
|
|
39
|
+
.description('Join a channel')
|
|
40
|
+
.action(async (name) => {
|
|
41
|
+
const agent = getAgent();
|
|
42
|
+
await agent.channels.join(name);
|
|
43
|
+
console.log(`Joined #${name}`);
|
|
44
|
+
});
|
|
45
|
+
ch.command('leave <name>')
|
|
46
|
+
.description('Leave a channel')
|
|
47
|
+
.action(async (name) => {
|
|
48
|
+
const agent = getAgent();
|
|
49
|
+
await agent.channels.leave(name);
|
|
50
|
+
console.log(`Left #${name}`);
|
|
51
|
+
});
|
|
52
|
+
ch.command('topic <name> <topic>')
|
|
53
|
+
.description('Set channel topic')
|
|
54
|
+
.action(async (name, topic) => {
|
|
55
|
+
const agent = getAgent();
|
|
56
|
+
await agent.channels.setTopic(name, topic);
|
|
57
|
+
console.log(`Topic set for #${name}: ${topic}`);
|
|
58
|
+
});
|
|
59
|
+
ch.command('archive <name>')
|
|
60
|
+
.description('Archive a channel')
|
|
61
|
+
.action(async (name) => {
|
|
62
|
+
const agent = getAgent();
|
|
63
|
+
await agent.channels.archive(name);
|
|
64
|
+
console.log(`Archived #${name}`);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/commands/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAW7D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { loadConfig, saveConfig } from '../config.js';
|
|
2
|
+
function setConfigValue(key, value) {
|
|
3
|
+
const cfg = loadConfig();
|
|
4
|
+
if (key === 'api-key')
|
|
5
|
+
cfg.apiKey = value;
|
|
6
|
+
if (key === 'agent-token')
|
|
7
|
+
cfg.agentToken = value;
|
|
8
|
+
if (key === 'endpoint')
|
|
9
|
+
cfg.endpoint = value;
|
|
10
|
+
saveConfig(cfg);
|
|
11
|
+
}
|
|
12
|
+
export function registerConfigCommands(program) {
|
|
13
|
+
const cfg = program.command('config').description('CLI configuration');
|
|
14
|
+
cfg.command('set <key> <value>')
|
|
15
|
+
.description('Set a config value (api-key, agent-token, endpoint)')
|
|
16
|
+
.action((key, value) => {
|
|
17
|
+
if (key !== 'api-key' && key !== 'agent-token' && key !== 'endpoint') {
|
|
18
|
+
throw new Error(`Invalid key: ${key}. Expected one of: api-key, agent-token, endpoint`);
|
|
19
|
+
}
|
|
20
|
+
setConfigValue(key, value);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAItD,SAAS,cAAc,CAAC,GAAc,EAAE,KAAa;IACnD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,GAAG,KAAK,SAAS;QAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;IAC1C,IAAI,GAAG,KAAK,aAAa;QAAE,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;IAClD,IAAI,GAAG,KAAK,UAAU;QAAE,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC7C,UAAU,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAEvE,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;SAC7B,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;QACrC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,mDAAmD,CAAC,CAAC;QAC1F,CAAC;QACD,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoC3D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { Relay } from '@relaycast/sdk';
|
|
4
|
+
import { loadConfig } from '../config.js';
|
|
5
|
+
function getAgent() {
|
|
6
|
+
const config = loadConfig();
|
|
7
|
+
if (!config.apiKey) {
|
|
8
|
+
throw new Error('No API key configured. Run: relay config set api-key <key>');
|
|
9
|
+
}
|
|
10
|
+
if (!config.agentToken) {
|
|
11
|
+
throw new Error('No agent token configured. Run: relay config set agent-token <token>');
|
|
12
|
+
}
|
|
13
|
+
const relay = new Relay({ apiKey: config.apiKey, baseUrl: config.endpoint });
|
|
14
|
+
return relay.as(config.agentToken);
|
|
15
|
+
}
|
|
16
|
+
export function registerFileCommands(program) {
|
|
17
|
+
program
|
|
18
|
+
.command('upload <file> <target> [text]')
|
|
19
|
+
.description('Upload a file and send to channel/agent')
|
|
20
|
+
.action(async (file, target, text) => {
|
|
21
|
+
const agent = getAgent();
|
|
22
|
+
const stat = fs.statSync(file);
|
|
23
|
+
const filename = path.basename(file);
|
|
24
|
+
const upload = await agent.files.upload({
|
|
25
|
+
filename,
|
|
26
|
+
content_type: 'application/octet-stream',
|
|
27
|
+
size_bytes: stat.size,
|
|
28
|
+
});
|
|
29
|
+
console.log(`Upload initiated: ${upload.file_id}`);
|
|
30
|
+
console.log(`Upload URL: ${upload.upload_url}`);
|
|
31
|
+
if (text) {
|
|
32
|
+
await agent.send(target, text, { attachments: [upload.file_id] });
|
|
33
|
+
console.log(`Message sent to ${target} with attachment`);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
program
|
|
37
|
+
.command('files')
|
|
38
|
+
.description('List files')
|
|
39
|
+
.option('--channel <channel>', 'Filter by channel')
|
|
40
|
+
.action(async () => {
|
|
41
|
+
const agent = getAgent();
|
|
42
|
+
const files = await agent.files.list();
|
|
43
|
+
if (files.length === 0) {
|
|
44
|
+
console.log('No files.');
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
for (const f of files) {
|
|
48
|
+
console.log(`${f.file_id} ${f.filename} ${f.size} bytes`);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,QAAQ;IACf,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,+BAA+B,CAAC;SACxC,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,MAAc,EAAE,IAAa,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,QAAQ;YACR,YAAY,EAAE,0BAA0B;YACxC,UAAU,EAAE,IAAI,CAAC,IAAI;SACtB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,kBAAkB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,YAAY,CAAC;SACzB,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;SAClD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/commands/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwChE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Relay } from '@relaycast/sdk';
|
|
2
|
+
import { loadConfig } from '../config.js';
|
|
3
|
+
function getAgent() {
|
|
4
|
+
const config = loadConfig();
|
|
5
|
+
if (!config.apiKey) {
|
|
6
|
+
throw new Error('No API key configured. Run: relay config set api-key <key>');
|
|
7
|
+
}
|
|
8
|
+
if (!config.agentToken) {
|
|
9
|
+
throw new Error('No agent token configured. Run: relay config set agent-token <token>');
|
|
10
|
+
}
|
|
11
|
+
const relay = new Relay({ apiKey: config.apiKey, baseUrl: config.endpoint });
|
|
12
|
+
return relay.as(config.agentToken);
|
|
13
|
+
}
|
|
14
|
+
export function registerMessagingCommands(program) {
|
|
15
|
+
program
|
|
16
|
+
.command('send <target> <text>')
|
|
17
|
+
.description('Send a message (use #channel or @agent)')
|
|
18
|
+
.action(async (target, text) => {
|
|
19
|
+
const agent = getAgent();
|
|
20
|
+
if (target.startsWith('@')) {
|
|
21
|
+
const name = target.slice(1);
|
|
22
|
+
await agent.dm(name, text);
|
|
23
|
+
console.log(`DM sent to ${name}`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const result = await agent.send(target, text);
|
|
27
|
+
console.log(`Message sent: ${result.id}`);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
program
|
|
31
|
+
.command('reply <msg_id> <text>')
|
|
32
|
+
.description('Reply to a message in a thread')
|
|
33
|
+
.action(async (msgId, text) => {
|
|
34
|
+
const agent = getAgent();
|
|
35
|
+
const result = await agent.reply(msgId, text);
|
|
36
|
+
console.log(`Reply sent: ${result.id}`);
|
|
37
|
+
});
|
|
38
|
+
program
|
|
39
|
+
.command('group-dm')
|
|
40
|
+
.argument('<agents...>', 'Agent names')
|
|
41
|
+
.option('--name <name>', 'Group name')
|
|
42
|
+
.option('--text <text>', 'Initial message')
|
|
43
|
+
.description('Create a group DM')
|
|
44
|
+
.action(async (agents, opts) => {
|
|
45
|
+
const agent = getAgent();
|
|
46
|
+
await agent.dms.createGroup({
|
|
47
|
+
participants: agents,
|
|
48
|
+
name: opts.name,
|
|
49
|
+
text: opts.text ?? '',
|
|
50
|
+
});
|
|
51
|
+
console.log(`Group DM created with: ${agents.join(', ')}`);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=messaging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/commands/messaging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,QAAQ;IACf,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAY,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;SACtC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC;SACrC,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC;SAC1C,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAsC,EAAE,EAAE;QACzE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;YAC1B,YAAY,EAAE,MAAM;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../src/commands/reactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkB/D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Relay } from '@relaycast/sdk';
|
|
2
|
+
import { loadConfig } from '../config.js';
|
|
3
|
+
function getAgent() {
|
|
4
|
+
const config = loadConfig();
|
|
5
|
+
if (!config.apiKey) {
|
|
6
|
+
throw new Error('No API key configured. Run: relay config set api-key <key>');
|
|
7
|
+
}
|
|
8
|
+
if (!config.agentToken) {
|
|
9
|
+
throw new Error('No agent token configured. Run: relay config set agent-token <token>');
|
|
10
|
+
}
|
|
11
|
+
const relay = new Relay({ apiKey: config.apiKey, baseUrl: config.endpoint });
|
|
12
|
+
return relay.as(config.agentToken);
|
|
13
|
+
}
|
|
14
|
+
export function registerReactionCommands(program) {
|
|
15
|
+
program
|
|
16
|
+
.command('react <msg_id> <emoji>')
|
|
17
|
+
.description('React to a message')
|
|
18
|
+
.action(async (msgId, emoji) => {
|
|
19
|
+
const agent = getAgent();
|
|
20
|
+
await agent.react(msgId, emoji);
|
|
21
|
+
console.log(`Reacted with :${emoji}: on ${msgId}`);
|
|
22
|
+
});
|
|
23
|
+
program
|
|
24
|
+
.command('unreact <msg_id> <emoji>')
|
|
25
|
+
.description('Remove a reaction')
|
|
26
|
+
.action(async (msgId, emoji) => {
|
|
27
|
+
const agent = getAgent();
|
|
28
|
+
await agent.unreact(msgId, emoji);
|
|
29
|
+
console.log(`Removed :${emoji}: from ${msgId}`);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=reactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/commands/reactions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,QAAQ;IACf,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,wBAAwB,CAAC;SACjC,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,KAAa,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,QAAQ,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,0BAA0B,CAAC;SACnC,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,KAAa,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,UAAU,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE3D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Relay } from '@relaycast/sdk';
|
|
2
|
+
import { loadConfig } from '../config.js';
|
|
3
|
+
function getAgent() {
|
|
4
|
+
const config = loadConfig();
|
|
5
|
+
if (!config.apiKey) {
|
|
6
|
+
throw new Error('No API key configured. Run: relay config set api-key <key>');
|
|
7
|
+
}
|
|
8
|
+
if (!config.agentToken) {
|
|
9
|
+
throw new Error('No agent token configured. Run: relay config set agent-token <token>');
|
|
10
|
+
}
|
|
11
|
+
const relay = new Relay({ apiKey: config.apiKey, baseUrl: config.endpoint });
|
|
12
|
+
return relay.as(config.agentToken);
|
|
13
|
+
}
|
|
14
|
+
export function registerReadCommands(program) {
|
|
15
|
+
program
|
|
16
|
+
.command('messages <channel>')
|
|
17
|
+
.description('List messages in a channel')
|
|
18
|
+
.option('--limit <n>', 'Message limit', '50')
|
|
19
|
+
.action(async (channel, opts) => {
|
|
20
|
+
const agent = getAgent();
|
|
21
|
+
const msgs = await agent.messages(channel, { limit: parseInt(opts.limit, 10) });
|
|
22
|
+
if (msgs.length === 0) {
|
|
23
|
+
console.log('No messages.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
for (const m of msgs) {
|
|
27
|
+
console.log(`[${m.id}] ${m.agent_name}: ${m.text}`);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
program
|
|
31
|
+
.command('thread <msg_id>')
|
|
32
|
+
.description('Show thread for a message')
|
|
33
|
+
.action(async (msgId) => {
|
|
34
|
+
const agent = getAgent();
|
|
35
|
+
const result = await agent.thread(msgId);
|
|
36
|
+
console.log(`[${result.parent.id}] ${result.parent.agent_name}: ${result.parent.text}`);
|
|
37
|
+
for (const r of result.replies) {
|
|
38
|
+
console.log(` [${r.id}] ${r.agent_name}: ${r.text}`);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
program
|
|
42
|
+
.command('inbox')
|
|
43
|
+
.description('Show inbox')
|
|
44
|
+
.action(async () => {
|
|
45
|
+
const agent = getAgent();
|
|
46
|
+
const inbox = await agent.inbox();
|
|
47
|
+
console.log(JSON.stringify(inbox, null, 2));
|
|
48
|
+
});
|
|
49
|
+
program
|
|
50
|
+
.command('dms <agent>')
|
|
51
|
+
.description('Show DMs with an agent')
|
|
52
|
+
.action(async (agentName) => {
|
|
53
|
+
const agent = getAgent();
|
|
54
|
+
const convos = await agent.dms.conversations();
|
|
55
|
+
const convo = convos.find((c) => c.participants?.some((p) => p === agentName) ?? false);
|
|
56
|
+
if (!convo) {
|
|
57
|
+
console.log(`No DM conversation found with ${agentName}`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const msgs = await agent.dms.messages(convo.id);
|
|
61
|
+
for (const m of msgs) {
|
|
62
|
+
console.log(`[${m.id}] ${m.agent_name}: ${m.text}`);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
program
|
|
66
|
+
.command('readers <msg_id>')
|
|
67
|
+
.description('Show who read a message')
|
|
68
|
+
.action(async (msgId) => {
|
|
69
|
+
const agent = getAgent();
|
|
70
|
+
const readers = await agent.readers(msgId);
|
|
71
|
+
if (readers.length === 0) {
|
|
72
|
+
console.log('No readers yet.');
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
for (const r of readers) {
|
|
76
|
+
console.log(`${r.agent_name} — read at ${r.read_at}`);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgB7D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Relay } from '@relaycast/sdk';
|
|
2
|
+
import { loadConfig } from '../config.js';
|
|
3
|
+
function getAgent() {
|
|
4
|
+
const config = loadConfig();
|
|
5
|
+
if (!config.apiKey) {
|
|
6
|
+
throw new Error('No API key configured. Run: relay config set api-key <key>');
|
|
7
|
+
}
|
|
8
|
+
if (!config.agentToken) {
|
|
9
|
+
throw new Error('No agent token configured. Run: relay config set agent-token <token>');
|
|
10
|
+
}
|
|
11
|
+
const relay = new Relay({ apiKey: config.apiKey, baseUrl: config.endpoint });
|
|
12
|
+
return relay.as(config.agentToken);
|
|
13
|
+
}
|
|
14
|
+
export function registerSearchCommands(program) {
|
|
15
|
+
program
|
|
16
|
+
.command('search <query>')
|
|
17
|
+
.description('Search messages')
|
|
18
|
+
.option('--channel <channel>', 'Filter by channel')
|
|
19
|
+
.action(async (query, opts) => {
|
|
20
|
+
const agent = getAgent();
|
|
21
|
+
const results = await agent.search(query, { channel: opts.channel });
|
|
22
|
+
if (results.length === 0) {
|
|
23
|
+
console.log('No results.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
for (const r of results) {
|
|
27
|
+
console.log(JSON.stringify(r));
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,QAAQ;IACf,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAA0B,EAAE,EAAE;QAC1D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwBhE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Relay } from '@relaycast/sdk';
|
|
2
|
+
import { loadConfig } from '../config.js';
|
|
3
|
+
function createRelay() {
|
|
4
|
+
const cfg = loadConfig();
|
|
5
|
+
if (!cfg.apiKey) {
|
|
6
|
+
throw new Error('Missing API key. Run: relay config set api-key <value>');
|
|
7
|
+
}
|
|
8
|
+
return new Relay({ apiKey: cfg.apiKey, baseUrl: cfg.endpoint });
|
|
9
|
+
}
|
|
10
|
+
function printJson(value) {
|
|
11
|
+
console.log(JSON.stringify(value, null, 2));
|
|
12
|
+
}
|
|
13
|
+
export function registerWorkspaceCommands(program) {
|
|
14
|
+
const ws = program.command('workspace').description('Workspace management');
|
|
15
|
+
ws.command('create <name>')
|
|
16
|
+
.description('Create workspace (updates current workspace name)')
|
|
17
|
+
.action(async (name) => {
|
|
18
|
+
const relay = createRelay();
|
|
19
|
+
const workspace = await relay.workspace.update({ name });
|
|
20
|
+
printJson(workspace);
|
|
21
|
+
});
|
|
22
|
+
ws.command('info')
|
|
23
|
+
.description('Show workspace info')
|
|
24
|
+
.action(async () => {
|
|
25
|
+
const relay = createRelay();
|
|
26
|
+
const workspace = await relay.workspace.info();
|
|
27
|
+
printJson(workspace);
|
|
28
|
+
});
|
|
29
|
+
ws.command('delete')
|
|
30
|
+
.description('Delete workspace')
|
|
31
|
+
.action(() => {
|
|
32
|
+
console.log('Workspace deletion must be done via the dashboard.');
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,WAAW;IAClB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAE5E,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,SAAS,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC/C,SAAS,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface RelayConfig {
|
|
2
|
+
apiKey?: string;
|
|
3
|
+
agentToken?: string;
|
|
4
|
+
endpoint?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function getConfigPath(): string;
|
|
7
|
+
export declare function loadConfig(): RelayConfig;
|
|
8
|
+
export declare function saveConfig(config: RelayConfig): void;
|
|
9
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,UAAU,IAAI,WAAW,CAYxC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAKpD"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
export function getConfigPath() {
|
|
5
|
+
return path.join(os.homedir(), '.relay', 'config.json');
|
|
6
|
+
}
|
|
7
|
+
export function loadConfig() {
|
|
8
|
+
const configPath = getConfigPath();
|
|
9
|
+
try {
|
|
10
|
+
const raw = fs.readFileSync(configPath, 'utf8');
|
|
11
|
+
const parsed = JSON.parse(raw);
|
|
12
|
+
if (parsed && typeof parsed === 'object')
|
|
13
|
+
return parsed;
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
const e = err;
|
|
18
|
+
if (e && e.code === 'ENOENT')
|
|
19
|
+
return {};
|
|
20
|
+
throw err;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function saveConfig(config) {
|
|
24
|
+
const configPath = getConfigPath();
|
|
25
|
+
const dir = path.dirname(configPath);
|
|
26
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
27
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAqB,CAAC;QACvE,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA4B,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QACxC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC5C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAcA,eAAO,MAAM,WAAW,EAAG,OAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { registerWorkspaceCommands } from './commands/workspace.js';
|
|
4
|
+
import { registerAgentCommands } from './commands/agent.js';
|
|
5
|
+
import { registerConfigCommands } from './commands/config.js';
|
|
6
|
+
import { registerChannelCommands } from './commands/channel.js';
|
|
7
|
+
import { registerMessagingCommands } from './commands/messaging.js';
|
|
8
|
+
import { registerReadCommands } from './commands/read.js';
|
|
9
|
+
import { registerSearchCommands } from './commands/search.js';
|
|
10
|
+
import { registerReactionCommands } from './commands/reactions.js';
|
|
11
|
+
import { registerFileCommands } from './commands/files.js';
|
|
12
|
+
import { registerBillingCommands } from './commands/billing.js';
|
|
13
|
+
export const CLI_VERSION = '0.1.0';
|
|
14
|
+
const program = new Command();
|
|
15
|
+
program
|
|
16
|
+
.name('relay')
|
|
17
|
+
.description('Relay — agent-to-agent messaging CLI')
|
|
18
|
+
.version(CLI_VERSION);
|
|
19
|
+
registerWorkspaceCommands(program);
|
|
20
|
+
registerAgentCommands(program);
|
|
21
|
+
registerConfigCommands(program);
|
|
22
|
+
registerChannelCommands(program);
|
|
23
|
+
registerMessagingCommands(program);
|
|
24
|
+
registerReadCommands(program);
|
|
25
|
+
registerSearchCommands(program);
|
|
26
|
+
registerReactionCommands(program);
|
|
27
|
+
registerFileCommands(program);
|
|
28
|
+
registerBillingCommands(program);
|
|
29
|
+
program.parse();
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,OAAgB,CAAC;AAE5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,sCAAsC,CAAC;KACnD,OAAO,CAAC,WAAW,CAAC,CAAC;AAExB,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "relaycast",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Headless Slack for AI agents. Channels, threads, DMs, reactions, and real-time events for multi-agent communication.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ai",
|
|
7
|
+
"agents",
|
|
8
|
+
"messaging",
|
|
9
|
+
"mcp",
|
|
10
|
+
"multi-agent",
|
|
11
|
+
"relay",
|
|
12
|
+
"channels",
|
|
13
|
+
"sdk",
|
|
14
|
+
"cli"
|
|
15
|
+
],
|
|
16
|
+
"author": "Relaycast",
|
|
17
|
+
"license": "Apache-2.0",
|
|
8
18
|
"homepage": "https://relaycast.dev",
|
|
9
19
|
"repository": {
|
|
10
20
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/AgentWorkforce/
|
|
12
|
-
|
|
21
|
+
"url": "https://github.com/AgentWorkforce/relaycast",
|
|
22
|
+
"directory": "packages/cli"
|
|
23
|
+
},
|
|
24
|
+
"type": "module",
|
|
25
|
+
"main": "dist/index.js",
|
|
26
|
+
"types": "dist/index.d.ts",
|
|
27
|
+
"bin": {
|
|
28
|
+
"relaycast": "dist/index.js"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsc",
|
|
32
|
+
"test": "vitest run",
|
|
33
|
+
"lint": "eslint src/"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@relaycast/sdk": "0.1.1",
|
|
37
|
+
"@relaycast/types": "0.1.1",
|
|
38
|
+
"commander": "^14.0.3"
|
|
39
|
+
},
|
|
40
|
+
"files": [
|
|
41
|
+
"dist"
|
|
42
|
+
]
|
|
13
43
|
}
|