digital-workers 2.1.1 → 2.3.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/CHANGELOG.md +23 -0
- package/README.md +136 -180
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +34 -21
- package/dist/actions.js.map +1 -1
- package/dist/agent-comms.d.ts +438 -0
- package/dist/agent-comms.d.ts.map +1 -0
- package/dist/agent-comms.js +677 -0
- package/dist/agent-comms.js.map +1 -0
- package/dist/approve.d.ts +40 -8
- package/dist/approve.d.ts.map +1 -1
- package/dist/approve.js +86 -20
- package/dist/approve.js.map +1 -1
- package/dist/ask.d.ts +38 -7
- package/dist/ask.d.ts.map +1 -1
- package/dist/ask.js +85 -25
- package/dist/ask.js.map +1 -1
- package/dist/browse.d.ts +223 -0
- package/dist/browse.d.ts.map +1 -0
- package/dist/browse.js +392 -0
- package/dist/browse.js.map +1 -0
- package/dist/capability-tiers.d.ts +230 -0
- package/dist/capability-tiers.d.ts.map +1 -0
- package/dist/capability-tiers.js +388 -0
- package/dist/capability-tiers.js.map +1 -0
- package/dist/cascade-context.d.ts +523 -0
- package/dist/cascade-context.d.ts.map +1 -0
- package/dist/cascade-context.js +494 -0
- package/dist/cascade-context.js.map +1 -0
- package/dist/client.d.ts +162 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +64 -0
- package/dist/client.js.map +1 -0
- package/dist/decide.d.ts +42 -6
- package/dist/decide.d.ts.map +1 -1
- package/dist/decide.js +54 -11
- package/dist/decide.js.map +1 -1
- package/dist/do.d.ts +36 -7
- package/dist/do.d.ts.map +1 -1
- package/dist/do.js +82 -39
- package/dist/do.js.map +1 -1
- package/dist/error-escalation.d.ts +416 -0
- package/dist/error-escalation.d.ts.map +1 -0
- package/dist/error-escalation.js +656 -0
- package/dist/error-escalation.js.map +1 -0
- package/dist/generate.d.ts +48 -7
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +49 -8
- package/dist/generate.js.map +1 -1
- package/dist/goals.d.ts +10 -9
- package/dist/goals.d.ts.map +1 -1
- package/dist/goals.js +30 -24
- package/dist/goals.js.map +1 -1
- package/dist/image.d.ts +189 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +528 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +59 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92 -2
- package/dist/index.js.map +1 -1
- package/dist/is.d.ts +45 -10
- package/dist/is.d.ts.map +1 -1
- package/dist/is.js +56 -21
- package/dist/is.js.map +1 -1
- package/dist/kpis.d.ts +24 -15
- package/dist/kpis.d.ts.map +1 -1
- package/dist/kpis.js +16 -14
- package/dist/kpis.js.map +1 -1
- package/dist/load-balancing.d.ts +395 -0
- package/dist/load-balancing.d.ts.map +1 -0
- package/dist/load-balancing.js +991 -0
- package/dist/load-balancing.js.map +1 -0
- package/dist/logger.d.ts +76 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +39 -0
- package/dist/logger.js.map +1 -0
- package/dist/notify.d.ts +38 -9
- package/dist/notify.d.ts.map +1 -1
- package/dist/notify.js +72 -17
- package/dist/notify.js.map +1 -1
- package/dist/role.d.ts +5 -4
- package/dist/role.d.ts.map +1 -1
- package/dist/role.js +13 -10
- package/dist/role.js.map +1 -1
- package/dist/runtime.d.ts +310 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +510 -0
- package/dist/runtime.js.map +1 -0
- package/dist/team.d.ts +11 -6
- package/dist/team.d.ts.map +1 -1
- package/dist/team.js +22 -15
- package/dist/team.js.map +1 -1
- package/dist/transports/email.d.ts +318 -0
- package/dist/transports/email.d.ts.map +1 -0
- package/dist/transports/email.js +779 -0
- package/dist/transports/email.js.map +1 -0
- package/dist/transports/slack.d.ts +515 -0
- package/dist/transports/slack.d.ts.map +1 -0
- package/dist/transports/slack.js +844 -0
- package/dist/transports/slack.js.map +1 -0
- package/dist/transports.d.ts.map +1 -1
- package/dist/transports.js +44 -25
- package/dist/transports.js.map +1 -1
- package/dist/types.d.ts +149 -19
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/id.d.ts +19 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +21 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/video.d.ts +203 -0
- package/dist/video.d.ts.map +1 -0
- package/dist/video.js +528 -0
- package/dist/video.js.map +1 -0
- package/dist/worker.d.ts +343 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +698 -0
- package/dist/worker.js.map +1 -0
- package/package.json +24 -5
- package/src/actions.ts +48 -38
- package/src/agent-comms.ts +1200 -0
- package/src/approve.ts +91 -20
- package/src/ask.ts +99 -25
- package/src/browse.ts +627 -0
- package/src/capability-tiers.ts +545 -0
- package/src/cascade-context.ts +648 -0
- package/src/client.ts +221 -0
- package/src/decide.ts +81 -35
- package/src/do.ts +98 -52
- package/src/error-escalation.ts +1123 -0
- package/src/generate.ts +52 -18
- package/src/goals.ts +36 -27
- package/src/image.ts +816 -0
- package/src/index.ts +410 -2
- package/src/is.ts +59 -25
- package/src/kpis.ts +41 -36
- package/src/load-balancing.ts +1467 -0
- package/src/logger.ts +93 -0
- package/src/notify.ts +78 -17
- package/src/role.ts +30 -20
- package/src/runtime.ts +796 -0
- package/src/team.ts +24 -19
- package/src/transports/email.ts +1160 -0
- package/src/transports/slack.ts +1320 -0
- package/src/transports.ts +58 -43
- package/src/types.ts +182 -46
- package/src/utils/id.ts +21 -0
- package/src/video.ts +906 -0
- package/src/worker.ts +1007 -0
- package/test/agent-comms.test.ts +1397 -0
- package/test/approve.test.ts +305 -0
- package/test/ask.test.ts +274 -0
- package/test/browse.test.ts +361 -0
- package/test/capability-tiers.test.ts +631 -0
- package/test/cascade-context.test.ts +692 -0
- package/test/decide.test.ts +252 -0
- package/test/do.test.ts +144 -0
- package/test/error-escalation.test.ts +1205 -0
- package/test/error-logging.test.ts +357 -0
- package/test/generate.test.ts +319 -0
- package/test/image.test.ts +398 -0
- package/test/is.test.ts +287 -0
- package/test/load-balancing-safety.test.ts +404 -0
- package/test/load-balancing-thread-safety.test.ts +464 -0
- package/test/load-balancing.test.ts +1145 -0
- package/test/notify.test.ts +434 -0
- package/test/primitives.test.ts +320 -0
- package/test/runtime-integration.test.ts +892 -0
- package/test/transports/crypto.test.ts +230 -0
- package/test/transports/email.test.ts +866 -0
- package/test/transports/id-generation.test.ts +91 -0
- package/test/transports/slack.test.ts +760 -0
- package/test/type-safety.test.ts +834 -0
- package/test/types.test.ts +95 -2
- package/test/video.test.ts +530 -0
- package/test/worker.test.ts +1433 -0
- package/tsconfig.json +4 -1
- package/vitest.config.ts +42 -0
- package/wrangler.jsonc +36 -0
- package/.turbo/turbo-build.log +0 -5
- package/src/actions.js +0 -436
- package/src/approve.js +0 -234
- package/src/ask.js +0 -226
- package/src/decide.js +0 -244
- package/src/do.js +0 -227
- package/src/generate.js +0 -298
- package/src/goals.js +0 -205
- package/src/index.js +0 -68
- package/src/is.js +0 -317
- package/src/kpis.js +0 -270
- package/src/notify.js +0 -219
- package/src/role.js +0 -110
- package/src/team.js +0 -130
- package/src/transports.js +0 -357
- package/src/types.js +0 -71
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for ID generation utilities used across transports
|
|
3
|
+
*
|
|
4
|
+
* This tests the generateRequestId function that creates unique IDs
|
|
5
|
+
* for tracking requests across Slack, Email, and other transports.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { describe, it, expect } from 'vitest'
|
|
9
|
+
import { generateRequestId } from '../../src/utils/id.js'
|
|
10
|
+
|
|
11
|
+
describe('generateRequestId', () => {
|
|
12
|
+
describe('format', () => {
|
|
13
|
+
it('should generate ID with default "req" prefix', () => {
|
|
14
|
+
const id = generateRequestId()
|
|
15
|
+
expect(id).toMatch(/^req_\d+_[a-z0-9]+$/)
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
it('should generate ID with custom prefix', () => {
|
|
19
|
+
const id = generateRequestId('apr')
|
|
20
|
+
expect(id).toMatch(/^apr_\d+_[a-z0-9]+$/)
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it('should include timestamp in the middle segment', () => {
|
|
24
|
+
const before = Date.now()
|
|
25
|
+
const id = generateRequestId()
|
|
26
|
+
const after = Date.now()
|
|
27
|
+
|
|
28
|
+
const parts = id.split('_')
|
|
29
|
+
const timestamp = parseInt(parts[1], 10)
|
|
30
|
+
|
|
31
|
+
expect(timestamp).toBeGreaterThanOrEqual(before)
|
|
32
|
+
expect(timestamp).toBeLessThanOrEqual(after)
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it('should have random portion of exactly 9 characters', () => {
|
|
36
|
+
const id = generateRequestId()
|
|
37
|
+
const parts = id.split('_')
|
|
38
|
+
const randomPart = parts[2]
|
|
39
|
+
|
|
40
|
+
expect(randomPart).toHaveLength(9)
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('should use base36 encoding for random portion', () => {
|
|
44
|
+
const id = generateRequestId()
|
|
45
|
+
const parts = id.split('_')
|
|
46
|
+
const randomPart = parts[2]
|
|
47
|
+
|
|
48
|
+
// Base36 only contains lowercase letters and digits
|
|
49
|
+
expect(randomPart).toMatch(/^[a-z0-9]+$/)
|
|
50
|
+
})
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
describe('uniqueness', () => {
|
|
54
|
+
it('should generate unique IDs across multiple calls', () => {
|
|
55
|
+
const ids = new Set<string>()
|
|
56
|
+
const iterations = 1000
|
|
57
|
+
|
|
58
|
+
for (let i = 0; i < iterations; i++) {
|
|
59
|
+
ids.add(generateRequestId())
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
expect(ids.size).toBe(iterations)
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
it('should generate unique IDs even when called rapidly', () => {
|
|
66
|
+
const ids = Array.from({ length: 100 }, () => generateRequestId())
|
|
67
|
+
const uniqueIds = new Set(ids)
|
|
68
|
+
|
|
69
|
+
expect(uniqueIds.size).toBe(100)
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
describe('string length', () => {
|
|
74
|
+
it('should have consistent structure (prefix + timestamp + random)', () => {
|
|
75
|
+
const id = generateRequestId()
|
|
76
|
+
const parts = id.split('_')
|
|
77
|
+
|
|
78
|
+
expect(parts).toHaveLength(3)
|
|
79
|
+
expect(parts[0]).toBe('req') // prefix
|
|
80
|
+
expect(parts[1]).toMatch(/^\d+$/) // timestamp
|
|
81
|
+
expect(parts[2]).toHaveLength(9) // random (base36)
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it('should produce IDs of reasonable length for storage', () => {
|
|
85
|
+
const id = generateRequestId()
|
|
86
|
+
// req (3) + _ (1) + timestamp (~13) + _ (1) + random (9) = ~27 chars
|
|
87
|
+
expect(id.length).toBeGreaterThanOrEqual(20)
|
|
88
|
+
expect(id.length).toBeLessThanOrEqual(35)
|
|
89
|
+
})
|
|
90
|
+
})
|
|
91
|
+
})
|