agentdial 1.0.0 → 1.0.2
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/README.md +69 -131
- package/dist/adapters/telegram.d.ts +18 -0
- package/dist/adapters/telegram.d.ts.map +1 -1
- package/dist/adapters/telegram.js +28 -1
- package/dist/adapters/telegram.js.map +1 -1
- package/dist/commands/channel-flows.d.ts +9 -0
- package/dist/commands/channel-flows.d.ts.map +1 -0
- package/dist/commands/channel-flows.js +238 -0
- package/dist/commands/channel-flows.js.map +1 -0
- package/dist/commands/channels.d.ts.map +1 -1
- package/dist/commands/channels.js +51 -47
- package/dist/commands/channels.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,34 +1,26 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Agent Identity Protocol (AIP)
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/agentdial)
|
|
4
|
+
[](#identitymd-spec)
|
|
4
5
|
[](https://opensource.org/licenses/MIT)
|
|
5
|
-
[](#supported-channels)
|
|
6
6
|
[](#tests)
|
|
7
7
|
[](https://www.npmjs.com/package/agentdial)
|
|
8
8
|
|
|
9
|
-
**
|
|
9
|
+
**MCP gave agents tools. A2A gave agents collaboration. AIP gives agents identity.**
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Agents are the new employees. They need phone numbers, inboxes, and handles -- not just API keys. Today every platform reinvents this: Twilio for SMS, Discord.js for chat, Slack SDK for work, SendGrid for email. Fifteen APIs to give one agent a presence.
|
|
12
|
+
|
|
13
|
+
AIP is a protocol. `IDENTITY.md` is the spec. `agentdial` is the CLI.
|
|
12
14
|
|
|
13
15
|
```bash
|
|
14
16
|
npx agentdial setup
|
|
15
17
|
```
|
|
16
18
|
|
|
17
19
|
```
|
|
18
|
-
___ __ ____ _ __
|
|
19
|
-
/ _ |___ ____ ___ ____/ / / __ \(_)___ _/ /
|
|
20
|
-
/ __ / _ `/ -_) _ \/ __/ / / / / / / _ `/ /
|
|
21
|
-
/_/ |_\_, /\__/_//_/\__/_/ /_/ /_/_/\_,_/_/
|
|
22
|
-
/___/
|
|
23
|
-
|
|
24
|
-
v1.0.0 One identity. Every channel.
|
|
25
|
-
|
|
26
20
|
┌────────────────────────────────────────┐
|
|
27
|
-
│ Agent
|
|
28
|
-
|
|
29
|
-
│
|
|
30
|
-
│ Tagline: Your AI concierge │
|
|
31
|
-
│ Backend: http://localhost:8080/agent │
|
|
21
|
+
│ Agent: Spark │
|
|
22
|
+
│ Tagline: Your AI concierge │
|
|
23
|
+
│ Backend: http://localhost:8080/agent │
|
|
32
24
|
└────────────────────────────────────────┘
|
|
33
25
|
|
|
34
26
|
Channel Status Cost Setup
|
|
@@ -37,10 +29,23 @@ npx agentdial setup
|
|
|
37
29
|
Discord Bot active Free 3 min
|
|
38
30
|
Slack App ready Free 5 min
|
|
39
31
|
SMS (Twilio) ---- ~$0.01 5 min
|
|
40
|
-
|
|
32
|
+
Voice (Twilio) ---- ~$0.01 5 min
|
|
41
33
|
```
|
|
42
34
|
|
|
43
|
-
|
|
35
|
+
One file. Seven channels. Your agent has an identity.
|
|
36
|
+
|
|
37
|
+
## The Protocol Stack
|
|
38
|
+
|
|
39
|
+
| Protocol | Solves | Spec | Reference Impl |
|
|
40
|
+
| -------- | ------------------- | ----------------------------- | ----------------- |
|
|
41
|
+
| **MCP** | Tool access | Tool schemas (JSON) | SDK + CLI |
|
|
42
|
+
| **A2A** | Agent collaboration | Agent Cards (JSON) | SDK + server |
|
|
43
|
+
| **AIP** | Agent identity | `IDENTITY.md` (YAML+Markdown) | SDK + `agentdial` |
|
|
44
|
+
|
|
45
|
+
AIP defines two primitives:
|
|
46
|
+
|
|
47
|
+
- **`IDENTITY.md`** -- a single markdown file with YAML frontmatter that declares who your agent is, where it lives, and which channels it speaks on. Human-readable. Machine-parseable. Portable.
|
|
48
|
+
- **`GatewayMessage`** -- a normalized message format (`{ id, channel, from, text, timestamp }`) that collapses Telegram, Discord, Slack, SMS, WhatsApp, email, and voice into one schema. Your agent handles one format. agentdial handles the rest.
|
|
44
49
|
|
|
45
50
|
## Install
|
|
46
51
|
|
|
@@ -54,63 +59,36 @@ Or run directly:
|
|
|
54
59
|
npx agentdial setup
|
|
55
60
|
```
|
|
56
61
|
|
|
57
|
-
**Requirements:** Node.js >= 18
|
|
62
|
+
**Requirements:** Node.js >= 18 | **Platforms:** macOS, Linux, Windows (WSL)
|
|
58
63
|
|
|
59
64
|
## Quick Start
|
|
60
65
|
|
|
61
|
-
Three steps. Two minutes.
|
|
62
|
-
|
|
63
66
|
```bash
|
|
64
|
-
# 1. Create
|
|
67
|
+
# 1. Create identity + pick channels
|
|
65
68
|
agentdial setup
|
|
66
69
|
|
|
67
|
-
# 2. Add a channel
|
|
70
|
+
# 2. Add a channel
|
|
68
71
|
agentdial channels add telegram
|
|
69
72
|
|
|
70
73
|
# 3. Start the gateway
|
|
71
74
|
agentdial serve --agent-url http://localhost:8080/agent
|
|
72
75
|
```
|
|
73
76
|
|
|
74
|
-
Your agent is
|
|
75
|
-
|
|
76
|
-
## Why agentdial?
|
|
77
|
+
Your agent is live on Telegram. Add more channels anytime with `agentdial channels add <channel>`.
|
|
77
78
|
|
|
78
|
-
|
|
79
|
+
## Channels
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
| Channel | Cost | Setup | Credentials |
|
|
82
|
+
| ----------------- | ----------- | ------ | -------------------------- |
|
|
83
|
+
| Telegram Bot | Free | 2 min | Bot token from @BotFather |
|
|
84
|
+
| Discord Bot | Free | 3 min | Bot token + application ID |
|
|
85
|
+
| Slack App | Free | 5 min | Bot token + signing secret |
|
|
86
|
+
| SMS (Twilio) | ~$0.008/msg | 5 min | Account SID + auth token |
|
|
87
|
+
| WhatsApp (Twilio) | ~$0.005/msg | 10 min | Account SID + auth token |
|
|
88
|
+
| Email (SendGrid) | Free trial | 3 min | API key + verified sender |
|
|
89
|
+
| Voice (Twilio) | ~$0.013/min | 5 min | Account SID + auth token |
|
|
84
90
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
- **One identity file** (`IDENTITY.md`) that defines your agent's name, personality, and channel config
|
|
88
|
-
- **One gateway** that normalizes all incoming messages to a single `GatewayMessage` format
|
|
89
|
-
- **One response format** (`GatewayResponse`) that agentdial translates per-channel (Markdown for Telegram, embeds for Discord, blocks for Slack)
|
|
90
|
-
- **Secure credential storage** in `~/.agentdial/credentials/` with 0600 permissions
|
|
91
|
-
- **Zero lock-in** -- your agent backend is a plain HTTP endpoint that receives JSON
|
|
92
|
-
|
|
93
|
-
## Supported Channels
|
|
94
|
-
|
|
95
|
-
| Channel | Cost | Setup Time | Credentials Needed |
|
|
96
|
-
| ----------------- | -------------- | ---------- | -------------------------- |
|
|
97
|
-
| Telegram Bot | Free | 2 min | Bot token from @BotFather |
|
|
98
|
-
| Discord Bot | Free | 3 min | Bot token + application ID |
|
|
99
|
-
| Slack App | Free | 5 min | Bot token + signing secret |
|
|
100
|
-
| SMS (Twilio) | ~$0.0079/msg | 5 min | Account SID + auth token |
|
|
101
|
-
| WhatsApp (Twilio) | ~$0.005/msg | 10 min | Account SID + auth token |
|
|
102
|
-
| Email (SendGrid) | 60-day trial\* | 3 min | API key + verified sender |
|
|
103
|
-
| Voice (Twilio) | ~$0.013/min | 5 min | Account SID + auth token |
|
|
104
|
-
|
|
105
|
-
Free channels (Telegram, Discord) need zero payment info. Paid channels use Twilio or SendGrid with usage-based pricing. \*SendGrid free tier was removed May 2025; 60-day trial (100 emails/day), then $19.95/mo.
|
|
106
|
-
|
|
107
|
-
### Coming Soon
|
|
108
|
-
|
|
109
|
-
| Channel | Status |
|
|
110
|
-
| ------------------ | ------- |
|
|
111
|
-
| Microsoft Teams | Planned |
|
|
112
|
-
| Facebook Messenger | Planned |
|
|
113
|
-
| Web Widget | Planned |
|
|
91
|
+
Telegram, Discord, and Slack need zero payment info.
|
|
114
92
|
|
|
115
93
|
## Architecture
|
|
116
94
|
|
|
@@ -123,23 +101,21 @@ Free channels (Telegram, Discord) need zero payment info. Paid channels use Twil
|
|
|
123
101
|
Email ──┤ │ :3141 │ │ (any HTTP) │
|
|
124
102
|
Voice ──┘ └────────────┘ └──────────────────┘
|
|
125
103
|
│
|
|
126
|
-
│
|
|
127
|
-
│
|
|
104
|
+
│ GatewayMessage (normalized)
|
|
105
|
+
│ { id, channel, from, text, timestamp }
|
|
128
106
|
│
|
|
129
|
-
│
|
|
130
|
-
│
|
|
131
|
-
│
|
|
132
|
-
│
|
|
133
|
-
└
|
|
107
|
+
│ GatewayResponse (per-channel)
|
|
108
|
+
│ Telegram: Markdown + inline keyboards
|
|
109
|
+
│ Discord: Embeds + components
|
|
110
|
+
│ Slack: Blocks + actions
|
|
111
|
+
└ Others: Plain text fallback
|
|
134
112
|
```
|
|
135
113
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
Your agent backend just needs one endpoint that accepts a JSON body and returns `{ text: "..." }`.
|
|
114
|
+
Your agent backend is a plain HTTP endpoint. It receives a JSON `GatewayMessage`, returns `{ text: "..." }`. That's the entire contract.
|
|
139
115
|
|
|
140
116
|
## IDENTITY.md Spec
|
|
141
117
|
|
|
142
|
-
|
|
118
|
+
The **Agent Identity Protocol v1.0** spec. YAML frontmatter is machine-readable. Markdown body is human-readable context (usable as a system prompt).
|
|
143
119
|
|
|
144
120
|
```yaml
|
|
145
121
|
---
|
|
@@ -168,26 +144,21 @@ channels:
|
|
|
168
144
|
|
|
169
145
|
- Friendly and knowledgeable
|
|
170
146
|
- Concise but thorough
|
|
171
|
-
- Uses casual tone with professional substance
|
|
172
147
|
|
|
173
148
|
## Capabilities
|
|
174
149
|
|
|
175
150
|
- Restaurant recommendations and reservations
|
|
176
151
|
- Event discovery and booking
|
|
177
|
-
- Local area knowledge
|
|
178
152
|
|
|
179
153
|
## Boundaries
|
|
180
154
|
|
|
181
155
|
- No financial transactions
|
|
182
156
|
- No medical or legal advice
|
|
183
|
-
- No personal data retention beyond the session
|
|
184
157
|
```
|
|
185
158
|
|
|
186
|
-
The YAML frontmatter is machine-readable. The markdown body is human-readable context your agent can use as a system prompt. The `channels` block declares which platforms your agent is active on.
|
|
187
|
-
|
|
188
159
|
## Claude Code Integration
|
|
189
160
|
|
|
190
|
-
agentdial ships as an MCP server for Claude Code
|
|
161
|
+
agentdial ships as an MCP server for Claude Code:
|
|
191
162
|
|
|
192
163
|
```json
|
|
193
164
|
{
|
|
@@ -200,90 +171,64 @@ agentdial ships as an MCP server for Claude Code. Add it to your project's `.mcp
|
|
|
200
171
|
}
|
|
201
172
|
```
|
|
202
173
|
|
|
203
|
-
This gives Claude Code tools to manage channels, test connections, and check agent status
|
|
204
|
-
|
|
205
|
-
Start the MCP server standalone:
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
agentdial mcp-serve
|
|
209
|
-
```
|
|
174
|
+
This gives Claude Code tools to manage channels, test connections, and check agent status.
|
|
210
175
|
|
|
211
176
|
## Voice
|
|
212
177
|
|
|
213
|
-
Voice channels use Twilio for telephony. Configure with:
|
|
214
|
-
|
|
215
178
|
```bash
|
|
216
179
|
agentdial voice setup
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
This prompts for your Twilio Account SID, Auth Token, and phone number. Test with:
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
180
|
agentdial voice test --number +15551234567
|
|
223
181
|
```
|
|
224
182
|
|
|
225
|
-
|
|
183
|
+
Calls are transcribed, routed through the same gateway as chat, and responses are synthesized back to speech via Twilio.
|
|
226
184
|
|
|
227
185
|
## Configuration
|
|
228
186
|
|
|
229
|
-
All config and credentials are stored locally:
|
|
230
|
-
|
|
231
187
|
```
|
|
232
188
|
~/.agentdial/
|
|
233
|
-
├── config.json # Gateway port, log level, identity
|
|
234
|
-
├── credentials/ # Per-channel
|
|
189
|
+
├── config.json # Gateway port, log level, identity path
|
|
190
|
+
├── credentials/ # Per-channel credentials (0600 permissions)
|
|
235
191
|
│ ├── telegram.json
|
|
236
192
|
│ ├── discord.json
|
|
237
|
-
│ ├── slack.json
|
|
238
193
|
│ └── twilio.json
|
|
239
194
|
├── templates/ # Identity file templates
|
|
240
195
|
└── logs/ # Gateway logs
|
|
241
196
|
```
|
|
242
197
|
|
|
243
|
-
|
|
198
|
+
Credentials never touch your project directory or git.
|
|
244
199
|
|
|
245
|
-
|
|
246
|
-
{
|
|
247
|
-
"identityFile": "IDENTITY.md",
|
|
248
|
-
"gatewayPort": 3141,
|
|
249
|
-
"logLevel": "info"
|
|
250
|
-
}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
Credentials are never stored in your project directory or committed to git. The `credentials/` directory is created with 0700 permissions, and individual credential files with 0600.
|
|
254
|
-
|
|
255
|
-
## All Commands
|
|
200
|
+
## Commands
|
|
256
201
|
|
|
257
202
|
```
|
|
258
203
|
SETUP
|
|
259
|
-
agentdial setup Interactive wizard
|
|
204
|
+
agentdial setup Interactive wizard
|
|
260
205
|
agentdial setup --file ./agent.md Use existing identity file
|
|
261
206
|
|
|
262
207
|
CHANNELS
|
|
263
|
-
agentdial channels add <channel>
|
|
208
|
+
agentdial channels add <channel> Add a channel
|
|
264
209
|
agentdial channels remove <channel> Remove a channel
|
|
265
|
-
agentdial channels list
|
|
266
|
-
agentdial channels test [channel] Test
|
|
210
|
+
agentdial channels list List all channels
|
|
211
|
+
agentdial channels test [channel] Test connectivity
|
|
267
212
|
|
|
268
213
|
VOICE
|
|
269
214
|
agentdial voice setup Configure Twilio voice
|
|
270
|
-
agentdial voice test -n <phone> Test call
|
|
215
|
+
agentdial voice test -n <phone> Test call
|
|
271
216
|
|
|
272
217
|
GATEWAY
|
|
273
|
-
agentdial serve Start
|
|
274
|
-
agentdial serve -p 8080
|
|
275
|
-
agentdial serve -a http://my-agent
|
|
218
|
+
agentdial serve Start gateway (port 3141)
|
|
219
|
+
agentdial serve -p 8080 Custom port
|
|
220
|
+
agentdial serve -a http://my-agent Custom backend
|
|
276
221
|
|
|
277
222
|
STATUS
|
|
278
|
-
agentdial status Show
|
|
223
|
+
agentdial status Show channel statuses
|
|
279
224
|
agentdial status --json Machine-readable output
|
|
280
225
|
|
|
281
226
|
TEST
|
|
282
|
-
agentdial test
|
|
227
|
+
agentdial test Test full pipeline
|
|
283
228
|
agentdial test -c telegram -m "hi" Test specific channel
|
|
284
229
|
|
|
285
230
|
MCP
|
|
286
|
-
agentdial mcp-serve Start as MCP server
|
|
231
|
+
agentdial mcp-serve Start as MCP server
|
|
287
232
|
```
|
|
288
233
|
|
|
289
234
|
## Tests
|
|
@@ -292,19 +237,12 @@ MCP
|
|
|
292
237
|
cd tools/agentdial && pnpm test
|
|
293
238
|
```
|
|
294
239
|
|
|
295
|
-
|
|
240
|
+
Covers identity parsing, gateway normalization, response formatting, adapter compliance, and Zod schema validation. All mocked -- no real API calls.
|
|
296
241
|
|
|
297
242
|
## Contributing
|
|
298
243
|
|
|
299
|
-
See [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
300
|
-
|
|
301
|
-
## See Also
|
|
302
|
-
|
|
303
|
-
- **[agentgrid](https://github.com/naman10parikh/agentgrid)** -- Spawn grids of AI coding agents in parallel terminal panes
|
|
304
|
-
- **[Energy](https://github.com/naman10parikh/Energy)** -- Self-improving agent platform. agentdial is part of the Energy toolkit
|
|
305
|
-
- **[Model Context Protocol](https://modelcontextprotocol.io)** -- The MCP standard agentdial integrates with
|
|
306
|
-
- **[Google A2A](https://google.github.io/A2A/)** -- Agent-to-Agent protocol for inter-agent communication
|
|
244
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
307
245
|
|
|
308
246
|
## License
|
|
309
247
|
|
|
310
|
-
MIT
|
|
248
|
+
MIT
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import type { ChannelAdapter, ChannelConfig, ChannelStatus, GatewayMessage, GatewayResponse } from "./types.js";
|
|
2
|
+
interface ValidateResult {
|
|
3
|
+
ok: true;
|
|
4
|
+
username: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
id: number;
|
|
7
|
+
}
|
|
8
|
+
interface ValidateError {
|
|
9
|
+
ok: false;
|
|
10
|
+
error: string;
|
|
11
|
+
}
|
|
12
|
+
type ValidateTokenResult = ValidateResult | ValidateError;
|
|
2
13
|
export declare class TelegramAdapter implements ChannelAdapter {
|
|
3
14
|
readonly name: "telegram";
|
|
4
15
|
readonly displayName: string;
|
|
@@ -12,6 +23,12 @@ export declare class TelegramAdapter implements ChannelAdapter {
|
|
|
12
23
|
private messageHandler;
|
|
13
24
|
private connectedAt;
|
|
14
25
|
private lastMessageAt;
|
|
26
|
+
/**
|
|
27
|
+
* Validate a Telegram bot token by calling /getMe.
|
|
28
|
+
* Returns bot info on success, error message on failure.
|
|
29
|
+
* Static so it can be used from the channels command without instantiating.
|
|
30
|
+
*/
|
|
31
|
+
static validateToken(token: string): Promise<ValidateTokenResult>;
|
|
15
32
|
private api;
|
|
16
33
|
setup(config: ChannelConfig): Promise<void>;
|
|
17
34
|
connect(): Promise<void>;
|
|
@@ -25,4 +42,5 @@ export declare class TelegramAdapter implements ChannelAdapter {
|
|
|
25
42
|
}>;
|
|
26
43
|
status(): Promise<ChannelStatus>;
|
|
27
44
|
}
|
|
45
|
+
export {};
|
|
28
46
|
//# sourceMappingURL=telegram.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EAChB,MAAM,YAAY,CAAC;AAsBpB,qBAAa,eAAgB,YAAW,cAAc;IACpD,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IACpC,QAAQ,CAAC,WAAW,SAAkC;IACtD,QAAQ,CAAC,IAAI,QAAQ;IACrB,QAAQ,CAAC,SAAS,SAAgC;IAElD,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAEN;IAChB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAuB;
|
|
1
|
+
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EAChB,MAAM,YAAY,CAAC;AAsBpB,UAAU,cAAc;IACtB,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED,KAAK,mBAAmB,GAAG,cAAc,GAAG,aAAa,CAAC;AAE1D,qBAAa,eAAgB,YAAW,cAAc;IACpD,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IACpC,QAAQ,CAAC,WAAW,SAAkC;IACtD,QAAQ,CAAC,IAAI,QAAQ;IACrB,QAAQ,CAAC,SAAS,SAAgC;IAElD,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAEN;IAChB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAuB;IAE5C;;;;OAIG;WACU,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;YA0BzD,GAAG;IAqBX,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAahB,QAAQ;IAsChB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBhE,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAIrE,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBhD,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;CAUvC"}
|
|
@@ -14,6 +14,33 @@ export class TelegramAdapter {
|
|
|
14
14
|
messageHandler = null;
|
|
15
15
|
connectedAt = null;
|
|
16
16
|
lastMessageAt = null;
|
|
17
|
+
/**
|
|
18
|
+
* Validate a Telegram bot token by calling /getMe.
|
|
19
|
+
* Returns bot info on success, error message on failure.
|
|
20
|
+
* Static so it can be used from the channels command without instantiating.
|
|
21
|
+
*/
|
|
22
|
+
static async validateToken(token) {
|
|
23
|
+
try {
|
|
24
|
+
const url = `${TELEGRAM_API}${token}/getMe`;
|
|
25
|
+
const res = await fetch(url);
|
|
26
|
+
const json = (await res.json());
|
|
27
|
+
if (!json.ok || !json.result) {
|
|
28
|
+
return { ok: false, error: json.description ?? "Invalid token" };
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
ok: true,
|
|
32
|
+
username: json.result.username ?? "unknown",
|
|
33
|
+
displayName: json.result.first_name,
|
|
34
|
+
id: json.result.id,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
return {
|
|
39
|
+
ok: false,
|
|
40
|
+
error: err instanceof Error ? err.message : "Network error",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
17
44
|
async api(method, body) {
|
|
18
45
|
if (!this.token)
|
|
19
46
|
throw new Error("Telegram bot token not configured");
|
|
@@ -131,7 +158,7 @@ export class TelegramAdapter {
|
|
|
131
158
|
return { ok: false, error: "No bot token configured" };
|
|
132
159
|
this.token = stored;
|
|
133
160
|
}
|
|
134
|
-
|
|
161
|
+
await this.api("getMe");
|
|
135
162
|
return { ok: true, error: undefined };
|
|
136
163
|
}
|
|
137
164
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/adapters/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAS7B,MAAM,YAAY,GAAG,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/adapters/telegram.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createInterface } from "node:readline/promises";
|
|
2
|
+
type RL = ReturnType<typeof createInterface>;
|
|
3
|
+
export declare function setupTelegram(rl: RL): Promise<boolean>;
|
|
4
|
+
export declare function setupDiscord(rl: RL): Promise<boolean>;
|
|
5
|
+
export declare function setupSlack(rl: RL): Promise<boolean>;
|
|
6
|
+
export declare function setupTwilio(rl: RL, channel: "sms" | "whatsapp" | "voice"): Promise<boolean>;
|
|
7
|
+
export declare function setupEmail(rl: RL): Promise<boolean>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=channel-flows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-flows.d.ts","sourceRoot":"","sources":["../../src/commands/channel-flows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAUzD,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAoB7C,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAyC5D;AAID,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAqD3D;AAID,wBAAsB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAuDzD;AAID,wBAAsB,WAAW,CAC/B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,KAAK,GAAG,UAAU,GAAG,OAAO,GACpC,OAAO,CAAC,OAAO,CAAC,CAiElB;AAID,wBAAsB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAsDzD"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { exec } from "node:child_process";
|
|
2
|
+
import { platform } from "node:os";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { saveCredential } from "../lib/credentials.js";
|
|
5
|
+
import { TelegramAdapter } from "../adapters/telegram.js";
|
|
6
|
+
import { success, error, info, warn, box } from "../lib/ui.js";
|
|
7
|
+
import { CHANNEL_DISPLAY_NAMES } from "../lib/constants.js";
|
|
8
|
+
function openBrowser(url) {
|
|
9
|
+
const cmd = platform() === "darwin" ? "open" : "xdg-open";
|
|
10
|
+
exec(`${cmd} "${url}"`, () => {
|
|
11
|
+
/* intentionally silent — browser open is best-effort */
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
async function ask(rl, prompt) {
|
|
15
|
+
return (await rl.question(` ${prompt} `)).trim();
|
|
16
|
+
}
|
|
17
|
+
async function confirm(rl, prompt) {
|
|
18
|
+
const answer = await ask(rl, `${prompt} (y/n)`);
|
|
19
|
+
return answer.toLowerCase().startsWith("y");
|
|
20
|
+
}
|
|
21
|
+
// ── Telegram ──
|
|
22
|
+
export async function setupTelegram(rl) {
|
|
23
|
+
info("Opening BotFather in your browser...");
|
|
24
|
+
openBrowser("https://t.me/BotFather");
|
|
25
|
+
box("Telegram Bot Setup", [
|
|
26
|
+
'1. Click "Start" in BotFather',
|
|
27
|
+
"2. Send: /newbot",
|
|
28
|
+
"3. Name your bot (e.g. My Agent)",
|
|
29
|
+
"4. Choose a username (must end in _bot)",
|
|
30
|
+
"",
|
|
31
|
+
"BotFather will reply with a token like:",
|
|
32
|
+
chalk.dim("7123456789:AAHdqTcvCH1vGWJxfSeofSAs0K5PA"),
|
|
33
|
+
].join("\n"));
|
|
34
|
+
const token = await ask(rl, "Paste your bot token:");
|
|
35
|
+
if (!token) {
|
|
36
|
+
warn("No token provided. Skipping.");
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
info("Validating token...");
|
|
40
|
+
const result = await TelegramAdapter.validateToken(token);
|
|
41
|
+
if (!result.ok) {
|
|
42
|
+
error(`Invalid token: ${result.error}`);
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
await saveCredential("telegram", "bot_token", token);
|
|
46
|
+
success(`Connected to @${result.username} (${result.displayName})`);
|
|
47
|
+
if (await confirm(rl, "Set up webhook for incoming messages?")) {
|
|
48
|
+
const url = await ask(rl, "Webhook URL:");
|
|
49
|
+
if (url) {
|
|
50
|
+
await saveCredential("telegram", "webhook_url", url);
|
|
51
|
+
success(`Webhook saved: ${url}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
// ── Discord ──
|
|
57
|
+
export async function setupDiscord(rl) {
|
|
58
|
+
info("Opening Discord Developer Portal...");
|
|
59
|
+
openBrowser("https://discord.com/developers/applications");
|
|
60
|
+
box("Discord Bot Setup", [
|
|
61
|
+
'1. Click "New Application" and name it',
|
|
62
|
+
'2. Go to "Bot" in the sidebar',
|
|
63
|
+
'3. Click "Reset Token" and copy it',
|
|
64
|
+
"4. Enable MESSAGE CONTENT intent (toggle ON)",
|
|
65
|
+
"5. Go to OAuth2 > URL Generator",
|
|
66
|
+
" Check: bot + Send Messages",
|
|
67
|
+
" Copy the invite URL to add bot to your server",
|
|
68
|
+
].join("\n"));
|
|
69
|
+
const token = await ask(rl, "Paste your bot token:");
|
|
70
|
+
if (!token) {
|
|
71
|
+
warn("No token provided. Skipping.");
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
info("Validating token...");
|
|
75
|
+
try {
|
|
76
|
+
const res = await fetch("https://discord.com/api/v10/users/@me", {
|
|
77
|
+
headers: { Authorization: `Bot ${token}` },
|
|
78
|
+
});
|
|
79
|
+
if (!res.ok) {
|
|
80
|
+
const body = (await res.json().catch(() => ({})));
|
|
81
|
+
error(`Invalid token: ${body.message ?? res.statusText}`);
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
const bot = (await res.json());
|
|
85
|
+
await saveCredential("discord", "bot_token", token);
|
|
86
|
+
await saveCredential("discord", "application_id", bot.id);
|
|
87
|
+
success(`Connected to ${bot.username} (ID: ${bot.id})`);
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
error(`Validation failed: ${err instanceof Error ? err.message : "network error"}`);
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const inviteUrl = await ask(rl, "Paste invite URL (optional, Enter to skip):");
|
|
94
|
+
if (inviteUrl) {
|
|
95
|
+
await saveCredential("discord", "invite_url", inviteUrl);
|
|
96
|
+
success("Invite URL saved.");
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
// ── Slack ──
|
|
101
|
+
export async function setupSlack(rl) {
|
|
102
|
+
info("Opening Slack App management...");
|
|
103
|
+
openBrowser("https://api.slack.com/apps");
|
|
104
|
+
box("Slack App Setup", [
|
|
105
|
+
'1. Click "Create New App" > "From scratch"',
|
|
106
|
+
"2. Name it and pick your workspace",
|
|
107
|
+
'3. Go to "OAuth & Permissions"',
|
|
108
|
+
" Add scopes: chat:write, channels:read, im:read",
|
|
109
|
+
"4. Install to workspace, copy Bot Token (xoxb-...)",
|
|
110
|
+
'5. Go to "Socket Mode", enable it',
|
|
111
|
+
" Create App-Level Token (xapp-...) with",
|
|
112
|
+
" scope: connections:write",
|
|
113
|
+
].join("\n"));
|
|
114
|
+
const botToken = await ask(rl, "Paste Bot Token (xoxb-...):");
|
|
115
|
+
if (!botToken) {
|
|
116
|
+
warn("No token provided. Skipping.");
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
info("Validating bot token...");
|
|
120
|
+
try {
|
|
121
|
+
const res = await fetch("https://slack.com/api/auth.test", {
|
|
122
|
+
method: "POST",
|
|
123
|
+
headers: { Authorization: `Bearer ${botToken}` },
|
|
124
|
+
});
|
|
125
|
+
const data = (await res.json());
|
|
126
|
+
if (!data.ok) {
|
|
127
|
+
error(`Invalid bot token: ${data.error ?? "unknown"}`);
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
success(`Connected to workspace: ${data.team} as ${data.user}`);
|
|
131
|
+
await saveCredential("slack", "bot_token", botToken);
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
error(`Validation failed: ${err instanceof Error ? err.message : "network error"}`);
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
const appToken = await ask(rl, "Paste App Token (xapp-...):");
|
|
138
|
+
if (appToken) {
|
|
139
|
+
await saveCredential("slack", "app_token", appToken);
|
|
140
|
+
success("App token saved.");
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
// ── Twilio (SMS / WhatsApp / Voice) ──
|
|
145
|
+
export async function setupTwilio(rl, channel) {
|
|
146
|
+
const label = CHANNEL_DISPLAY_NAMES[channel] ?? channel;
|
|
147
|
+
info("Opening Twilio Console...");
|
|
148
|
+
openBrowser("https://console.twilio.com");
|
|
149
|
+
box(`${label} Setup (Twilio)`, [
|
|
150
|
+
"1. Log in to your Twilio Console",
|
|
151
|
+
"2. Copy your Account SID from the dashboard",
|
|
152
|
+
"3. Copy your Auth Token (click to reveal)",
|
|
153
|
+
"4. Get a phone number from Phone Numbers > Manage",
|
|
154
|
+
...(channel === "whatsapp"
|
|
155
|
+
? ["5. Enable WhatsApp sandbox in Messaging > Try it Out"]
|
|
156
|
+
: []),
|
|
157
|
+
].join("\n"));
|
|
158
|
+
const sid = await ask(rl, "Paste Account SID (AC...):");
|
|
159
|
+
if (!sid) {
|
|
160
|
+
warn("No SID provided. Skipping.");
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
const authToken = await ask(rl, "Paste Auth Token:");
|
|
164
|
+
if (!authToken) {
|
|
165
|
+
warn("No auth token provided. Skipping.");
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
info("Validating credentials...");
|
|
169
|
+
try {
|
|
170
|
+
const res = await fetch(`https://api.twilio.com/2010-04-01/Accounts/${sid}.json`, {
|
|
171
|
+
headers: {
|
|
172
|
+
Authorization: `Basic ${Buffer.from(`${sid}:${authToken}`).toString("base64")}`,
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
if (!res.ok) {
|
|
176
|
+
error(`Invalid credentials: ${res.statusText}`);
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
const acct = (await res.json());
|
|
180
|
+
success(`Account: ${acct.friendly_name} (${acct.status})`);
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
error(`Validation failed: ${err instanceof Error ? err.message : "network error"}`);
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
await saveCredential(channel, "account_sid", sid);
|
|
187
|
+
await saveCredential(channel, "auth_token", authToken);
|
|
188
|
+
const phone = await ask(rl, "Paste phone number (+1234567890):");
|
|
189
|
+
if (phone) {
|
|
190
|
+
await saveCredential(channel, "phone_number", phone);
|
|
191
|
+
success(`Phone number saved: ${phone}`);
|
|
192
|
+
}
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
// ── Email (SendGrid) ──
|
|
196
|
+
export async function setupEmail(rl) {
|
|
197
|
+
info("Opening SendGrid API Keys...");
|
|
198
|
+
openBrowser("https://app.sendgrid.com/settings/api_keys");
|
|
199
|
+
box("Email Setup (SendGrid)", [
|
|
200
|
+
'1. Click "Create API Key"',
|
|
201
|
+
"2. Name: agentdial (or your agent name)",
|
|
202
|
+
'3. Permissions: "Restricted Access"',
|
|
203
|
+
" Enable: Mail Send > Full Access",
|
|
204
|
+
"4. Copy the key (starts with SG.)",
|
|
205
|
+
"",
|
|
206
|
+
chalk.dim("Free tier: 100 emails/day"),
|
|
207
|
+
].join("\n"));
|
|
208
|
+
const apiKey = await ask(rl, "Paste API Key (SG....):");
|
|
209
|
+
if (!apiKey) {
|
|
210
|
+
warn("No key provided. Skipping.");
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
info("Validating API key...");
|
|
214
|
+
try {
|
|
215
|
+
const res = await fetch("https://api.sendgrid.com/v3/user/profile", {
|
|
216
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
217
|
+
});
|
|
218
|
+
if (!res.ok) {
|
|
219
|
+
error(`Invalid API key: ${res.statusText}`);
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
const profile = (await res.json());
|
|
223
|
+
const name = `${profile.first_name ?? ""} ${profile.last_name ?? ""}`.trim();
|
|
224
|
+
success(name ? `Connected: ${name}` : "Account verified");
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
error(`Validation failed: ${err instanceof Error ? err.message : "network error"}`);
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
await saveCredential("email", "api_key", apiKey);
|
|
231
|
+
const fromEmail = await ask(rl, "Sender email address:");
|
|
232
|
+
if (fromEmail) {
|
|
233
|
+
await saveCredential("email", "from_email", fromEmail);
|
|
234
|
+
success(`Sender: ${fromEmail}`);
|
|
235
|
+
}
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=channel-flows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-flows.js","sourceRoot":"","sources":["../../src/commands/channel-flows.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AAqCA,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDrE;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxE;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBpD;AAED,wBAAsB,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgGvE"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import { createInterface } from "node:readline/promises";
|
|
2
|
+
import { stdin, stdout } from "node:process";
|
|
1
3
|
import chalk from "chalk";
|
|
2
4
|
import { ChannelTypeSchema } from "../adapters/types.js";
|
|
3
|
-
import {
|
|
5
|
+
import { listCredentials, listConfiguredChannels } from "../lib/credentials.js";
|
|
4
6
|
import { loadConfig, updateConfig } from "../lib/config.js";
|
|
5
7
|
import { hasAdapter, getAdapter } from "../adapters/index.js";
|
|
6
8
|
import { success, error, info, warn, heading, table } from "../lib/ui.js";
|
|
7
9
|
import { SUPPORTED_CHANNELS, FREE_CHANNELS, CHANNEL_DISPLAY_NAMES, CHANNEL_SETUP_TIMES, } from "../lib/constants.js";
|
|
10
|
+
import { setupTelegram, setupDiscord, setupSlack, setupTwilio, setupEmail, } from "./channel-flows.js";
|
|
11
|
+
// ── Helpers ──
|
|
8
12
|
function validateChannel(channel) {
|
|
9
13
|
const result = ChannelTypeSchema.safeParse(channel);
|
|
10
14
|
if (!result.success) {
|
|
@@ -14,36 +18,58 @@ function validateChannel(channel) {
|
|
|
14
18
|
}
|
|
15
19
|
return result.data;
|
|
16
20
|
}
|
|
21
|
+
// ── Commands ──
|
|
17
22
|
export async function cmdChannelAdd(rawChannel) {
|
|
18
23
|
const channel = validateChannel(rawChannel);
|
|
19
24
|
heading(`Add Channel: ${CHANNEL_DISPLAY_NAMES[channel] ?? channel}`);
|
|
20
25
|
const isFree = FREE_CHANNELS.has(channel);
|
|
21
26
|
info(`Setup time: ${CHANNEL_SETUP_TIMES[channel] ?? "unknown"}`);
|
|
22
27
|
info(`Cost: ${isFree ? chalk.green("Free") : chalk.yellow("Requires paid API")}`);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
console.log("");
|
|
29
|
+
const rl = createInterface({ input: stdin, output: stdout });
|
|
30
|
+
let added = false;
|
|
31
|
+
try {
|
|
32
|
+
switch (channel) {
|
|
33
|
+
case "telegram":
|
|
34
|
+
added = await setupTelegram(rl);
|
|
35
|
+
break;
|
|
36
|
+
case "discord":
|
|
37
|
+
added = await setupDiscord(rl);
|
|
38
|
+
break;
|
|
39
|
+
case "slack":
|
|
40
|
+
added = await setupSlack(rl);
|
|
41
|
+
break;
|
|
42
|
+
case "sms":
|
|
43
|
+
case "whatsapp":
|
|
44
|
+
case "voice":
|
|
45
|
+
added = await setupTwilio(rl, channel);
|
|
46
|
+
break;
|
|
47
|
+
case "email":
|
|
48
|
+
added = await setupEmail(rl);
|
|
49
|
+
break;
|
|
50
|
+
case "web":
|
|
51
|
+
success("Web widget requires no credentials. Enabled.");
|
|
52
|
+
added = true;
|
|
53
|
+
break;
|
|
54
|
+
case "teams":
|
|
55
|
+
case "messenger":
|
|
56
|
+
warn(`${CHANNEL_DISPLAY_NAMES[channel]} is coming soon.`);
|
|
57
|
+
return;
|
|
37
58
|
}
|
|
38
59
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
60
|
+
finally {
|
|
61
|
+
rl.close();
|
|
62
|
+
}
|
|
63
|
+
if (added) {
|
|
64
|
+
const config = await loadConfig();
|
|
65
|
+
const channels = config.channels ?? {};
|
|
66
|
+
channels[channel] = { channel, enabled: true };
|
|
67
|
+
await updateConfig({ channels });
|
|
68
|
+
console.log("");
|
|
69
|
+
success(`${CHANNEL_DISPLAY_NAMES[channel] ?? channel} is live.`);
|
|
70
|
+
info("Test it: agentdial channels test " + channel);
|
|
71
|
+
info("Start gateway: agentdial serve");
|
|
72
|
+
}
|
|
47
73
|
}
|
|
48
74
|
export async function cmdChannelRemove(rawChannel) {
|
|
49
75
|
const channel = validateChannel(rawChannel);
|
|
@@ -74,7 +100,7 @@ export async function cmdChannelList() {
|
|
|
74
100
|
? chalk.yellow("disabled")
|
|
75
101
|
: chalk.dim("not configured"),
|
|
76
102
|
Cost: isFree ? chalk.green("free") : chalk.dim("paid"),
|
|
77
|
-
Setup: CHANNEL_SETUP_TIMES[ch] ?? "
|
|
103
|
+
Setup: CHANNEL_SETUP_TIMES[ch] ?? "--",
|
|
78
104
|
};
|
|
79
105
|
});
|
|
80
106
|
table(["Channel", "Status", "Cost", "Setup"], rows);
|
|
@@ -89,7 +115,7 @@ export async function cmdChannelTest(rawChannel) {
|
|
|
89
115
|
return;
|
|
90
116
|
}
|
|
91
117
|
if (!hasAdapter(channel)) {
|
|
92
|
-
warn(`No adapter
|
|
118
|
+
warn(`No adapter for ${channel}. Credentials found: ${creds.join(", ")}`);
|
|
93
119
|
return;
|
|
94
120
|
}
|
|
95
121
|
const adapter = getAdapter(channel);
|
|
@@ -163,26 +189,4 @@ export async function cmdChannelTest(rawChannel) {
|
|
|
163
189
|
}
|
|
164
190
|
table(["Channel", "Status", "Details"], rows);
|
|
165
191
|
}
|
|
166
|
-
function getRequiredCredentials(channel) {
|
|
167
|
-
switch (channel) {
|
|
168
|
-
case "telegram":
|
|
169
|
-
return ["bot_token"];
|
|
170
|
-
case "discord":
|
|
171
|
-
return ["bot_token", "application_id"];
|
|
172
|
-
case "slack":
|
|
173
|
-
return ["bot_token", "app_token", "signing_secret"];
|
|
174
|
-
case "sms":
|
|
175
|
-
case "whatsapp":
|
|
176
|
-
case "voice":
|
|
177
|
-
return ["account_sid", "auth_token", "phone_number"];
|
|
178
|
-
case "email":
|
|
179
|
-
return ["api_key", "from_email"];
|
|
180
|
-
case "teams":
|
|
181
|
-
return ["app_id", "app_password"];
|
|
182
|
-
case "messenger":
|
|
183
|
-
return ["page_token", "verify_token", "app_secret"];
|
|
184
|
-
case "web":
|
|
185
|
-
return [];
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
192
|
//# sourceMappingURL=channels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,
|
|
1
|
+
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,EACX,UAAU,GACX,MAAM,oBAAoB,CAAC;AAE5B,gBAAgB;AAEhB,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,iBAAiB;AAEjB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,CAAC,gBAAgB,qBAAqB,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,eAAe,mBAAmB,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;IACjE,IAAI,CACF,SAAS,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAC5E,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,UAAU;gBACb,KAAK,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,SAAS;gBACZ,KAAK,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,OAAO;gBACV,KAAK,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK,CAAC;YACX,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO;gBACV,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,OAAO;gBACV,KAAK,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK;gBACR,OAAO,CAAC,8CAA8C,CAAC,CAAC;gBACxD,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACR,KAAK,OAAO,CAAC;YACb,KAAK,WAAW;gBACd,IAAI,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAC1D,OAAO;QACX,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/C,MAAM,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,OAAO,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,mCAAmC,GAAG,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACvD,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,OAAO,qBAAqB,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACtE,MAAM,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,WAAW,OAAO,YAAY,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IAE7C,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACzC,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC;QACvD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,OAAO;YACL,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE;YACxC,MAAM,EAAE,SAAS;gBACf,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;gBACxB,CAAC,CAAC,YAAY;oBACZ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC1B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACjC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YACtD,KAAK,EAAE,mBAAmB,CAAC,EAAE,CAAC,IAAI,IAAI;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAmB;IACtD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC5C,OAAO,CAAC,YAAY,qBAAqB,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;QAEjE,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,kBAAkB,OAAO,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,OAAO,aAAa,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,KAAK,CACH,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,MAAM,CAAC,KAAK,IAAI,aAAa,EAAE,CACjF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CACH,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACxG,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAElD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,IAAI,CACF,uEAAuE,CACxE,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAA2D,EAAE,CAAC;IAExE,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;QAExC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC;gBACR,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;gBAChC,OAAO,EAAE,8BAA8B;aACxC,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC;gBACR,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;gBAC/B,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB;aACtD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC;oBACR,OAAO,EAAE,WAAW;oBACpB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;oBACzB,OAAO,EAAE,WAAW;iBACrB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC;oBACR,OAAO,EAAE,WAAW;oBACpB,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;oBACzB,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC;gBACR,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC1B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentdial",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Dial your AI agent into every platform. One identity. Every channel.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"license": "MIT",
|
|
45
45
|
"repository": {
|
|
46
46
|
"type": "git",
|
|
47
|
-
"url": "https://github.com/naman10parikh/agentdial"
|
|
47
|
+
"url": "git+https://github.com/naman10parikh/agentdial.git"
|
|
48
48
|
},
|
|
49
49
|
"homepage": "https://github.com/naman10parikh/agentdial",
|
|
50
50
|
"bugs": {
|