digital-workers 0.1.1 → 2.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/.turbo/turbo-build.log +5 -0
- package/CHANGELOG.md +17 -0
- package/README.md +290 -106
- package/dist/actions.d.ts +95 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +437 -0
- package/dist/actions.js.map +1 -0
- package/dist/approve.d.ts +49 -0
- package/dist/approve.d.ts.map +1 -0
- package/dist/approve.js +235 -0
- package/dist/approve.js.map +1 -0
- package/dist/ask.d.ts +42 -0
- package/dist/ask.d.ts.map +1 -0
- package/dist/ask.js +227 -0
- package/dist/ask.js.map +1 -0
- package/dist/decide.d.ts +62 -0
- package/dist/decide.d.ts.map +1 -0
- package/dist/decide.js +245 -0
- package/dist/decide.js.map +1 -0
- package/dist/do.d.ts +63 -0
- package/dist/do.d.ts.map +1 -0
- package/dist/do.js +228 -0
- package/dist/do.js.map +1 -0
- package/dist/generate.d.ts +61 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +299 -0
- package/dist/generate.js.map +1 -0
- package/dist/goals.d.ts +89 -0
- package/dist/goals.d.ts.map +1 -0
- package/dist/goals.js +206 -0
- package/dist/goals.js.map +1 -0
- package/dist/index.d.ts +68 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/is.d.ts +54 -0
- package/dist/is.d.ts.map +1 -0
- package/dist/is.js +318 -0
- package/dist/is.js.map +1 -0
- package/dist/kpis.d.ts +103 -0
- package/dist/kpis.d.ts.map +1 -0
- package/dist/kpis.js +271 -0
- package/dist/kpis.js.map +1 -0
- package/dist/notify.d.ts +47 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.js +220 -0
- package/dist/notify.js.map +1 -0
- package/dist/role.d.ts +53 -0
- package/dist/role.d.ts.map +1 -0
- package/dist/role.js +111 -0
- package/dist/role.js.map +1 -0
- package/dist/team.d.ts +61 -0
- package/dist/team.d.ts.map +1 -0
- package/dist/team.js +131 -0
- package/dist/team.js.map +1 -0
- package/dist/transports.d.ts +164 -0
- package/dist/transports.d.ts.map +1 -0
- package/dist/transports.js +358 -0
- package/dist/transports.js.map +1 -0
- package/dist/types.d.ts +693 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +72 -0
- package/dist/types.js.map +1 -0
- package/package.json +27 -61
- package/src/actions.ts +615 -0
- package/src/approve.ts +317 -0
- package/src/ask.ts +304 -0
- package/src/decide.ts +295 -0
- package/src/do.ts +275 -0
- package/src/generate.ts +364 -0
- package/src/goals.ts +220 -0
- package/src/index.ts +118 -0
- package/src/is.ts +372 -0
- package/src/kpis.ts +348 -0
- package/src/notify.ts +303 -0
- package/src/role.ts +116 -0
- package/src/team.ts +142 -0
- package/src/transports.ts +504 -0
- package/src/types.ts +843 -0
- package/test/actions.test.ts +546 -0
- package/test/standalone.test.ts +299 -0
- package/test/types.test.ts +460 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Communication Transports Bridge
|
|
3
|
+
*
|
|
4
|
+
* Connects digital-workers contact channels to digital-tools
|
|
5
|
+
* communication providers (Message, Call).
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Channel to Transport Mapping
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Map contact channel to transport
|
|
14
|
+
*/
|
|
15
|
+
export function channelToTransport(channel) {
|
|
16
|
+
const mapping = {
|
|
17
|
+
email: 'email',
|
|
18
|
+
slack: 'slack',
|
|
19
|
+
teams: 'teams',
|
|
20
|
+
discord: 'discord',
|
|
21
|
+
phone: 'voice',
|
|
22
|
+
sms: 'sms',
|
|
23
|
+
whatsapp: 'whatsapp',
|
|
24
|
+
telegram: 'telegram',
|
|
25
|
+
web: 'web',
|
|
26
|
+
api: 'webhook',
|
|
27
|
+
webhook: 'webhook',
|
|
28
|
+
};
|
|
29
|
+
return mapping[channel] || 'webhook';
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get available transports for a worker
|
|
33
|
+
*/
|
|
34
|
+
export function getWorkerTransports(worker) {
|
|
35
|
+
const transports = [];
|
|
36
|
+
const contacts = worker.contacts;
|
|
37
|
+
if (contacts.email)
|
|
38
|
+
transports.push('email');
|
|
39
|
+
if (contacts.slack)
|
|
40
|
+
transports.push('slack');
|
|
41
|
+
if (contacts.teams)
|
|
42
|
+
transports.push('teams');
|
|
43
|
+
if (contacts.discord)
|
|
44
|
+
transports.push('discord');
|
|
45
|
+
if (contacts.phone)
|
|
46
|
+
transports.push('voice');
|
|
47
|
+
if (contacts.sms)
|
|
48
|
+
transports.push('sms');
|
|
49
|
+
if (contacts.whatsapp)
|
|
50
|
+
transports.push('whatsapp');
|
|
51
|
+
if (contacts.telegram)
|
|
52
|
+
transports.push('telegram');
|
|
53
|
+
if (contacts.web)
|
|
54
|
+
transports.push('web');
|
|
55
|
+
if (contacts.webhook)
|
|
56
|
+
transports.push('webhook');
|
|
57
|
+
return transports;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get team transports (union of all member transports + team contacts)
|
|
61
|
+
*/
|
|
62
|
+
export function getTeamTransports(team) {
|
|
63
|
+
const transports = new Set();
|
|
64
|
+
// Add team-level contacts
|
|
65
|
+
const contacts = team.contacts;
|
|
66
|
+
if (contacts.email)
|
|
67
|
+
transports.add('email');
|
|
68
|
+
if (contacts.slack)
|
|
69
|
+
transports.add('slack');
|
|
70
|
+
if (contacts.teams)
|
|
71
|
+
transports.add('teams');
|
|
72
|
+
if (contacts.discord)
|
|
73
|
+
transports.add('discord');
|
|
74
|
+
if (contacts.phone)
|
|
75
|
+
transports.add('voice');
|
|
76
|
+
if (contacts.sms)
|
|
77
|
+
transports.add('sms');
|
|
78
|
+
if (contacts.whatsapp)
|
|
79
|
+
transports.add('whatsapp');
|
|
80
|
+
if (contacts.telegram)
|
|
81
|
+
transports.add('telegram');
|
|
82
|
+
if (contacts.web)
|
|
83
|
+
transports.add('web');
|
|
84
|
+
if (contacts.webhook)
|
|
85
|
+
transports.add('webhook');
|
|
86
|
+
return Array.from(transports);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Resolve contact to address
|
|
90
|
+
*/
|
|
91
|
+
export function resolveAddress(contacts, channel) {
|
|
92
|
+
const contact = contacts[channel];
|
|
93
|
+
if (!contact)
|
|
94
|
+
return null;
|
|
95
|
+
const transport = channelToTransport(channel);
|
|
96
|
+
if (typeof contact === 'string') {
|
|
97
|
+
return { transport, value: contact };
|
|
98
|
+
}
|
|
99
|
+
// Handle structured contact types
|
|
100
|
+
switch (channel) {
|
|
101
|
+
case 'email':
|
|
102
|
+
const emailContact = contact;
|
|
103
|
+
return { transport, value: emailContact.address, name: emailContact.name };
|
|
104
|
+
case 'phone':
|
|
105
|
+
case 'sms':
|
|
106
|
+
case 'whatsapp':
|
|
107
|
+
const phoneContact = contact;
|
|
108
|
+
return { transport, value: phoneContact.number };
|
|
109
|
+
case 'slack':
|
|
110
|
+
const slackContact = contact;
|
|
111
|
+
return {
|
|
112
|
+
transport,
|
|
113
|
+
value: slackContact.user || slackContact.channel || '',
|
|
114
|
+
metadata: { workspace: slackContact.workspace },
|
|
115
|
+
};
|
|
116
|
+
case 'teams':
|
|
117
|
+
const teamsContact = contact;
|
|
118
|
+
return {
|
|
119
|
+
transport,
|
|
120
|
+
value: teamsContact.user || teamsContact.channel || '',
|
|
121
|
+
metadata: { team: teamsContact.team },
|
|
122
|
+
};
|
|
123
|
+
case 'discord':
|
|
124
|
+
const discordContact = contact;
|
|
125
|
+
return {
|
|
126
|
+
transport,
|
|
127
|
+
value: discordContact.user || discordContact.channel || '',
|
|
128
|
+
metadata: { server: discordContact.server },
|
|
129
|
+
};
|
|
130
|
+
case 'telegram':
|
|
131
|
+
const telegramContact = contact;
|
|
132
|
+
return { transport, value: telegramContact.user || telegramContact.chat || '' };
|
|
133
|
+
case 'web':
|
|
134
|
+
const webContact = contact;
|
|
135
|
+
return { transport, value: webContact.userId || '', metadata: { url: webContact.url } };
|
|
136
|
+
case 'webhook':
|
|
137
|
+
const webhookContact = contact;
|
|
138
|
+
return { transport, value: webhookContact.url, metadata: { secret: webhookContact.secret } };
|
|
139
|
+
case 'api':
|
|
140
|
+
const apiContact = contact;
|
|
141
|
+
return { transport, value: apiContact.endpoint, metadata: { auth: apiContact.auth } };
|
|
142
|
+
default:
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Resolve all addresses for a worker
|
|
148
|
+
*/
|
|
149
|
+
export function resolveWorkerAddresses(worker) {
|
|
150
|
+
const addresses = [];
|
|
151
|
+
const channels = [
|
|
152
|
+
'email', 'slack', 'teams', 'discord', 'phone', 'sms',
|
|
153
|
+
'whatsapp', 'telegram', 'web', 'api', 'webhook',
|
|
154
|
+
];
|
|
155
|
+
for (const channel of channels) {
|
|
156
|
+
const address = resolveAddress(worker.contacts, channel);
|
|
157
|
+
if (address)
|
|
158
|
+
addresses.push(address);
|
|
159
|
+
}
|
|
160
|
+
return addresses;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get primary address for a worker based on preferences
|
|
164
|
+
*/
|
|
165
|
+
export function getPrimaryAddress(worker) {
|
|
166
|
+
const preferences = worker.preferences;
|
|
167
|
+
if (preferences?.primary) {
|
|
168
|
+
return resolveAddress(worker.contacts, preferences.primary);
|
|
169
|
+
}
|
|
170
|
+
// Default priority: slack > email > teams > sms > phone
|
|
171
|
+
const defaultPriority = ['slack', 'email', 'teams', 'sms', 'phone'];
|
|
172
|
+
for (const channel of defaultPriority) {
|
|
173
|
+
const address = resolveAddress(worker.contacts, channel);
|
|
174
|
+
if (address)
|
|
175
|
+
return address;
|
|
176
|
+
}
|
|
177
|
+
// Fall back to any available
|
|
178
|
+
const addresses = resolveWorkerAddresses(worker);
|
|
179
|
+
return addresses[0] || null;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Transport registry
|
|
183
|
+
*/
|
|
184
|
+
const transportRegistry = new Map();
|
|
185
|
+
/**
|
|
186
|
+
* Register a transport handler
|
|
187
|
+
*/
|
|
188
|
+
export function registerTransport(transport, handler) {
|
|
189
|
+
transportRegistry.set(transport, handler);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get transport handler
|
|
193
|
+
*/
|
|
194
|
+
export function getTransportHandler(transport) {
|
|
195
|
+
return transportRegistry.get(transport);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Check if transport is registered
|
|
199
|
+
*/
|
|
200
|
+
export function hasTransport(transport) {
|
|
201
|
+
return transportRegistry.has(transport);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* List registered transports
|
|
205
|
+
*/
|
|
206
|
+
export function listTransports() {
|
|
207
|
+
return Array.from(transportRegistry.keys());
|
|
208
|
+
}
|
|
209
|
+
// =============================================================================
|
|
210
|
+
// Default Transport Handlers (Stubs - implemented by providers)
|
|
211
|
+
// =============================================================================
|
|
212
|
+
/**
|
|
213
|
+
* Send via transport
|
|
214
|
+
*/
|
|
215
|
+
export async function sendViaTransport(transport, payload, config) {
|
|
216
|
+
const handler = transportRegistry.get(transport);
|
|
217
|
+
if (!handler) {
|
|
218
|
+
return {
|
|
219
|
+
success: false,
|
|
220
|
+
transport,
|
|
221
|
+
error: `Transport '${transport}' not registered`,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
try {
|
|
225
|
+
return await handler(payload, config || { transport });
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
return {
|
|
229
|
+
success: false,
|
|
230
|
+
transport,
|
|
231
|
+
error: error instanceof Error ? error.message : String(error),
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Send to multiple transports (fan-out)
|
|
237
|
+
*/
|
|
238
|
+
export async function sendToMultipleTransports(transports, payload, configs) {
|
|
239
|
+
const results = await Promise.all(transports.map(transport => sendViaTransport(transport, payload, configs?.[transport])));
|
|
240
|
+
return results;
|
|
241
|
+
}
|
|
242
|
+
// =============================================================================
|
|
243
|
+
// Worker Action to Transport
|
|
244
|
+
// =============================================================================
|
|
245
|
+
/**
|
|
246
|
+
* Build message payload from notify action
|
|
247
|
+
*/
|
|
248
|
+
export function buildNotifyPayload(action) {
|
|
249
|
+
return {
|
|
250
|
+
to: resolveActionTarget(action.object),
|
|
251
|
+
body: action.message,
|
|
252
|
+
type: 'notification',
|
|
253
|
+
priority: action.priority || 'normal',
|
|
254
|
+
metadata: action.metadata,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Build message payload from ask action
|
|
259
|
+
*/
|
|
260
|
+
export function buildAskPayload(action) {
|
|
261
|
+
return {
|
|
262
|
+
to: resolveActionTarget(action.object),
|
|
263
|
+
body: action.question,
|
|
264
|
+
type: 'question',
|
|
265
|
+
schema: action.schema,
|
|
266
|
+
timeout: action.timeout,
|
|
267
|
+
metadata: action.metadata,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Build message payload from approve action
|
|
272
|
+
*/
|
|
273
|
+
export function buildApprovePayload(action) {
|
|
274
|
+
return {
|
|
275
|
+
to: resolveActionTarget(action.object),
|
|
276
|
+
body: action.request,
|
|
277
|
+
type: 'approval',
|
|
278
|
+
timeout: action.timeout,
|
|
279
|
+
actions: [
|
|
280
|
+
{ id: 'approve', label: 'Approve', style: 'primary', value: true },
|
|
281
|
+
{ id: 'reject', label: 'Reject', style: 'danger', value: false },
|
|
282
|
+
],
|
|
283
|
+
metadata: {
|
|
284
|
+
...action.metadata,
|
|
285
|
+
context: action.context,
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Resolve action target to address string
|
|
291
|
+
*/
|
|
292
|
+
function resolveActionTarget(target) {
|
|
293
|
+
if (typeof target === 'string')
|
|
294
|
+
return target;
|
|
295
|
+
if ('contacts' in target) {
|
|
296
|
+
const address = getPrimaryAddress(target);
|
|
297
|
+
return address?.value || target.id;
|
|
298
|
+
}
|
|
299
|
+
return target.id;
|
|
300
|
+
}
|
|
301
|
+
// =============================================================================
|
|
302
|
+
// Integration with digital-tools Message/Call types
|
|
303
|
+
// =============================================================================
|
|
304
|
+
/**
|
|
305
|
+
* Message type mapping (from digital-tools)
|
|
306
|
+
*/
|
|
307
|
+
export const MessageTypeMapping = {
|
|
308
|
+
email: 'email',
|
|
309
|
+
sms: 'text',
|
|
310
|
+
slack: 'chat',
|
|
311
|
+
teams: 'chat',
|
|
312
|
+
discord: 'chat',
|
|
313
|
+
whatsapp: 'text',
|
|
314
|
+
telegram: 'text',
|
|
315
|
+
voice: 'voicemail', // For voicemail messages
|
|
316
|
+
};
|
|
317
|
+
/**
|
|
318
|
+
* Call type mapping (from digital-tools)
|
|
319
|
+
*/
|
|
320
|
+
export const CallTypeMapping = {
|
|
321
|
+
phone: 'phone',
|
|
322
|
+
voice: 'phone',
|
|
323
|
+
web: 'web',
|
|
324
|
+
video: 'video',
|
|
325
|
+
};
|
|
326
|
+
/**
|
|
327
|
+
* Convert worker notification to digital-tools Message format
|
|
328
|
+
*/
|
|
329
|
+
export function toDigitalToolsMessage(payload, transport) {
|
|
330
|
+
const messageType = MessageTypeMapping[transport] || 'chat';
|
|
331
|
+
return {
|
|
332
|
+
type: messageType,
|
|
333
|
+
to: Array.isArray(payload.to) ? payload.to : [payload.to],
|
|
334
|
+
from: payload.from,
|
|
335
|
+
subject: payload.subject,
|
|
336
|
+
body: payload.body,
|
|
337
|
+
html: payload.html,
|
|
338
|
+
metadata: {
|
|
339
|
+
...payload.metadata,
|
|
340
|
+
workerActionType: payload.type,
|
|
341
|
+
priority: payload.priority,
|
|
342
|
+
},
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Convert digital-tools Message to worker notification format
|
|
347
|
+
*/
|
|
348
|
+
export function fromDigitalToolsMessage(message) {
|
|
349
|
+
return {
|
|
350
|
+
to: message.to,
|
|
351
|
+
from: message.from,
|
|
352
|
+
subject: message.subject,
|
|
353
|
+
body: message.body,
|
|
354
|
+
html: message.html,
|
|
355
|
+
metadata: message.metadata,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=transports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"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"}
|