relaycast 0.0.1 → 0.1.0
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.map +1 -0
- package/dist/commands/agent.js +43 -0
- package/dist/commands/agent.js.map +1 -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.map +1 -0
- package/dist/commands/channel.js +67 -0
- package/dist/commands/channel.js.map +1 -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.map +1 -0
- package/dist/commands/files.js +52 -0
- package/dist/commands/files.js.map +1 -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.map +1 -0
- package/dist/commands/reactions.js +32 -0
- package/dist/commands/reactions.js.map +1 -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.map +1 -0
- package/dist/commands/search.js +31 -0
- package/dist/commands/search.js.map +1 -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/index.d.ts.map +1 -0
- package/package.json +22 -4
|
@@ -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: 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,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,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"}
|
|
@@ -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/package.json
CHANGED
|
@@ -1,13 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "relaycast",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Headless Slack for AI agents. Channels, threads, DMs, reactions, and real-time events for multi-agent communication.",
|
|
5
|
-
"keywords": ["ai", "agents", "messaging", "mcp", "multi-agent", "relay", "channels", "sdk"],
|
|
6
|
-
"author": "
|
|
5
|
+
"keywords": ["ai", "agents", "messaging", "mcp", "multi-agent", "relay", "channels", "sdk", "cli"],
|
|
6
|
+
"author": "Relaycast",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"homepage": "https://relaycast.dev",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "https://github.com/AgentWorkforce/relay-cloud-sdk-transport"
|
|
12
|
-
}
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "dist/index.js",
|
|
15
|
+
"types": "dist/index.d.ts",
|
|
16
|
+
"bin": {
|
|
17
|
+
"relaycast": "dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"test": "vitest run"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@relaycast/sdk": "*",
|
|
25
|
+
"@relaycast/types": "*",
|
|
26
|
+
"commander": "^14.0.3"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist"
|
|
30
|
+
]
|
|
13
31
|
}
|