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.
Files changed (197) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +136 -180
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +34 -21
  5. package/dist/actions.js.map +1 -1
  6. package/dist/agent-comms.d.ts +438 -0
  7. package/dist/agent-comms.d.ts.map +1 -0
  8. package/dist/agent-comms.js +677 -0
  9. package/dist/agent-comms.js.map +1 -0
  10. package/dist/approve.d.ts +40 -8
  11. package/dist/approve.d.ts.map +1 -1
  12. package/dist/approve.js +86 -20
  13. package/dist/approve.js.map +1 -1
  14. package/dist/ask.d.ts +38 -7
  15. package/dist/ask.d.ts.map +1 -1
  16. package/dist/ask.js +85 -25
  17. package/dist/ask.js.map +1 -1
  18. package/dist/browse.d.ts +223 -0
  19. package/dist/browse.d.ts.map +1 -0
  20. package/dist/browse.js +392 -0
  21. package/dist/browse.js.map +1 -0
  22. package/dist/capability-tiers.d.ts +230 -0
  23. package/dist/capability-tiers.d.ts.map +1 -0
  24. package/dist/capability-tiers.js +388 -0
  25. package/dist/capability-tiers.js.map +1 -0
  26. package/dist/cascade-context.d.ts +523 -0
  27. package/dist/cascade-context.d.ts.map +1 -0
  28. package/dist/cascade-context.js +494 -0
  29. package/dist/cascade-context.js.map +1 -0
  30. package/dist/client.d.ts +162 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +64 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/decide.d.ts +42 -6
  35. package/dist/decide.d.ts.map +1 -1
  36. package/dist/decide.js +54 -11
  37. package/dist/decide.js.map +1 -1
  38. package/dist/do.d.ts +36 -7
  39. package/dist/do.d.ts.map +1 -1
  40. package/dist/do.js +82 -39
  41. package/dist/do.js.map +1 -1
  42. package/dist/error-escalation.d.ts +416 -0
  43. package/dist/error-escalation.d.ts.map +1 -0
  44. package/dist/error-escalation.js +656 -0
  45. package/dist/error-escalation.js.map +1 -0
  46. package/dist/generate.d.ts +48 -7
  47. package/dist/generate.d.ts.map +1 -1
  48. package/dist/generate.js +49 -8
  49. package/dist/generate.js.map +1 -1
  50. package/dist/goals.d.ts +10 -9
  51. package/dist/goals.d.ts.map +1 -1
  52. package/dist/goals.js +30 -24
  53. package/dist/goals.js.map +1 -1
  54. package/dist/image.d.ts +189 -0
  55. package/dist/image.d.ts.map +1 -0
  56. package/dist/image.js +528 -0
  57. package/dist/image.js.map +1 -0
  58. package/dist/index.d.ts +59 -2
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +92 -2
  61. package/dist/index.js.map +1 -1
  62. package/dist/is.d.ts +45 -10
  63. package/dist/is.d.ts.map +1 -1
  64. package/dist/is.js +56 -21
  65. package/dist/is.js.map +1 -1
  66. package/dist/kpis.d.ts +24 -15
  67. package/dist/kpis.d.ts.map +1 -1
  68. package/dist/kpis.js +16 -14
  69. package/dist/kpis.js.map +1 -1
  70. package/dist/load-balancing.d.ts +395 -0
  71. package/dist/load-balancing.d.ts.map +1 -0
  72. package/dist/load-balancing.js +991 -0
  73. package/dist/load-balancing.js.map +1 -0
  74. package/dist/logger.d.ts +76 -0
  75. package/dist/logger.d.ts.map +1 -0
  76. package/dist/logger.js +39 -0
  77. package/dist/logger.js.map +1 -0
  78. package/dist/notify.d.ts +38 -9
  79. package/dist/notify.d.ts.map +1 -1
  80. package/dist/notify.js +72 -17
  81. package/dist/notify.js.map +1 -1
  82. package/dist/role.d.ts +5 -4
  83. package/dist/role.d.ts.map +1 -1
  84. package/dist/role.js +13 -10
  85. package/dist/role.js.map +1 -1
  86. package/dist/runtime.d.ts +310 -0
  87. package/dist/runtime.d.ts.map +1 -0
  88. package/dist/runtime.js +510 -0
  89. package/dist/runtime.js.map +1 -0
  90. package/dist/team.d.ts +11 -6
  91. package/dist/team.d.ts.map +1 -1
  92. package/dist/team.js +22 -15
  93. package/dist/team.js.map +1 -1
  94. package/dist/transports/email.d.ts +318 -0
  95. package/dist/transports/email.d.ts.map +1 -0
  96. package/dist/transports/email.js +779 -0
  97. package/dist/transports/email.js.map +1 -0
  98. package/dist/transports/slack.d.ts +515 -0
  99. package/dist/transports/slack.d.ts.map +1 -0
  100. package/dist/transports/slack.js +844 -0
  101. package/dist/transports/slack.js.map +1 -0
  102. package/dist/transports.d.ts.map +1 -1
  103. package/dist/transports.js +44 -25
  104. package/dist/transports.js.map +1 -1
  105. package/dist/types.d.ts +149 -19
  106. package/dist/types.d.ts.map +1 -1
  107. package/dist/types.js +6 -0
  108. package/dist/types.js.map +1 -1
  109. package/dist/utils/id.d.ts +19 -0
  110. package/dist/utils/id.d.ts.map +1 -0
  111. package/dist/utils/id.js +21 -0
  112. package/dist/utils/id.js.map +1 -0
  113. package/dist/video.d.ts +203 -0
  114. package/dist/video.d.ts.map +1 -0
  115. package/dist/video.js +528 -0
  116. package/dist/video.js.map +1 -0
  117. package/dist/worker.d.ts +343 -0
  118. package/dist/worker.d.ts.map +1 -0
  119. package/dist/worker.js +698 -0
  120. package/dist/worker.js.map +1 -0
  121. package/package.json +24 -5
  122. package/src/actions.ts +48 -38
  123. package/src/agent-comms.ts +1200 -0
  124. package/src/approve.ts +91 -20
  125. package/src/ask.ts +99 -25
  126. package/src/browse.ts +627 -0
  127. package/src/capability-tiers.ts +545 -0
  128. package/src/cascade-context.ts +648 -0
  129. package/src/client.ts +221 -0
  130. package/src/decide.ts +81 -35
  131. package/src/do.ts +98 -52
  132. package/src/error-escalation.ts +1123 -0
  133. package/src/generate.ts +52 -18
  134. package/src/goals.ts +36 -27
  135. package/src/image.ts +816 -0
  136. package/src/index.ts +410 -2
  137. package/src/is.ts +59 -25
  138. package/src/kpis.ts +41 -36
  139. package/src/load-balancing.ts +1467 -0
  140. package/src/logger.ts +93 -0
  141. package/src/notify.ts +78 -17
  142. package/src/role.ts +30 -20
  143. package/src/runtime.ts +796 -0
  144. package/src/team.ts +24 -19
  145. package/src/transports/email.ts +1160 -0
  146. package/src/transports/slack.ts +1320 -0
  147. package/src/transports.ts +58 -43
  148. package/src/types.ts +182 -46
  149. package/src/utils/id.ts +21 -0
  150. package/src/video.ts +906 -0
  151. package/src/worker.ts +1007 -0
  152. package/test/agent-comms.test.ts +1397 -0
  153. package/test/approve.test.ts +305 -0
  154. package/test/ask.test.ts +274 -0
  155. package/test/browse.test.ts +361 -0
  156. package/test/capability-tiers.test.ts +631 -0
  157. package/test/cascade-context.test.ts +692 -0
  158. package/test/decide.test.ts +252 -0
  159. package/test/do.test.ts +144 -0
  160. package/test/error-escalation.test.ts +1205 -0
  161. package/test/error-logging.test.ts +357 -0
  162. package/test/generate.test.ts +319 -0
  163. package/test/image.test.ts +398 -0
  164. package/test/is.test.ts +287 -0
  165. package/test/load-balancing-safety.test.ts +404 -0
  166. package/test/load-balancing-thread-safety.test.ts +464 -0
  167. package/test/load-balancing.test.ts +1145 -0
  168. package/test/notify.test.ts +434 -0
  169. package/test/primitives.test.ts +320 -0
  170. package/test/runtime-integration.test.ts +892 -0
  171. package/test/transports/crypto.test.ts +230 -0
  172. package/test/transports/email.test.ts +866 -0
  173. package/test/transports/id-generation.test.ts +91 -0
  174. package/test/transports/slack.test.ts +760 -0
  175. package/test/type-safety.test.ts +834 -0
  176. package/test/types.test.ts +95 -2
  177. package/test/video.test.ts +530 -0
  178. package/test/worker.test.ts +1433 -0
  179. package/tsconfig.json +4 -1
  180. package/vitest.config.ts +42 -0
  181. package/wrangler.jsonc +36 -0
  182. package/.turbo/turbo-build.log +0 -5
  183. package/src/actions.js +0 -436
  184. package/src/approve.js +0 -234
  185. package/src/ask.js +0 -226
  186. package/src/decide.js +0 -244
  187. package/src/do.js +0 -227
  188. package/src/generate.js +0 -298
  189. package/src/goals.js +0 -205
  190. package/src/index.js +0 -68
  191. package/src/is.js +0 -317
  192. package/src/kpis.js +0 -270
  193. package/src/notify.js +0 -219
  194. package/src/role.js +0 -110
  195. package/src/team.js +0 -130
  196. package/src/transports.js +0 -357
  197. package/src/types.js +0 -71
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Capability Tiers
3
+ *
4
+ * Agent capability tiers with complexity levels and toolsets.
5
+ * Follows the cascade pattern: code < generative < agentic < human
6
+ *
7
+ * ## Tier Hierarchy
8
+ *
9
+ * 1. **Code** (complexity 1-2): Deterministic, pure functions
10
+ * - Tools: calculate, lookup, validate, transform
11
+ * - No AI, predictable outputs
12
+ *
13
+ * 2. **Generative** (complexity 3-5): LLM-powered generation
14
+ * - Tools: generate, summarize, analyze, classify
15
+ * - Uses AI but no autonomous actions
16
+ *
17
+ * 3. **Agentic** (complexity 6-8): Autonomous AI agents
18
+ * - Tools: browse, execute, plan, delegate
19
+ * - Can take actions, make decisions
20
+ *
21
+ * 4. **Human** (complexity 9-10): Human-in-the-loop
22
+ * - Tools: approve, review, decide, escalate
23
+ * - Requires human judgment
24
+ *
25
+ * @packageDocumentation
26
+ */
27
+ /**
28
+ * Capability tier levels following cascade pattern
29
+ */
30
+ export type CapabilityTier = 'code' | 'generative' | 'agentic' | 'human';
31
+ /**
32
+ * Task complexity rating (1-10 scale)
33
+ */
34
+ export type TaskComplexity = number;
35
+ /**
36
+ * Capability profile defining an agent's abilities
37
+ */
38
+ export interface CapabilityProfile {
39
+ /** Unique profile name */
40
+ name: string;
41
+ /** Tier level */
42
+ tier: CapabilityTier;
43
+ /** Complexity rating this profile can handle (1-10) */
44
+ complexityRating: number;
45
+ /** Available tools for this profile */
46
+ tools: string[];
47
+ /** Optional description */
48
+ description?: string;
49
+ /** Optional constraints */
50
+ constraints?: ProfileConstraints;
51
+ }
52
+ /**
53
+ * Profile constraints
54
+ */
55
+ export interface ProfileConstraints {
56
+ maxTokens?: number;
57
+ allowedDomains?: string[];
58
+ requiresApproval?: boolean;
59
+ timeout?: number;
60
+ maxRetries?: number;
61
+ }
62
+ /**
63
+ * Tier configuration
64
+ */
65
+ export interface TierConfig {
66
+ tier: CapabilityTier;
67
+ minComplexity: number;
68
+ maxComplexity: number;
69
+ description: string;
70
+ allowedTools: string[];
71
+ defaultTimeout: number;
72
+ }
73
+ /**
74
+ * Toolset for a tier
75
+ */
76
+ export interface TierToolset {
77
+ tier: CapabilityTier;
78
+ tools: string[];
79
+ includesLowerTiers: boolean;
80
+ }
81
+ /**
82
+ * Result of matching a tier to complexity
83
+ */
84
+ export interface TierMatchResult {
85
+ tier: CapabilityTier;
86
+ confidence: number;
87
+ suggestedTools: string[];
88
+ }
89
+ /**
90
+ * Tier escalation request
91
+ */
92
+ export interface TierEscalation {
93
+ fromTier: CapabilityTier;
94
+ toTier: CapabilityTier;
95
+ reason: string;
96
+ skipJustification?: string;
97
+ allowDeescalation?: boolean;
98
+ }
99
+ /**
100
+ * Escalation validation result
101
+ */
102
+ export interface EscalationValidationResult {
103
+ valid: boolean;
104
+ error?: string;
105
+ }
106
+ /**
107
+ * All capability tiers in order
108
+ */
109
+ export declare const CAPABILITY_TIERS: readonly CapabilityTier[];
110
+ /**
111
+ * Tier order for comparison
112
+ */
113
+ export declare const TIER_ORDER: Record<CapabilityTier, number>;
114
+ /**
115
+ * Compare two tiers
116
+ * @returns negative if a < b, positive if a > b, 0 if equal
117
+ */
118
+ export declare function compareTiers(a: CapabilityTier, b: CapabilityTier): number;
119
+ /**
120
+ * Check if tier A is higher than tier B
121
+ */
122
+ export declare function isHigherTier(a: CapabilityTier, b: CapabilityTier): boolean;
123
+ /**
124
+ * Check if tier A is lower than tier B
125
+ */
126
+ export declare function isLowerTier(a: CapabilityTier, b: CapabilityTier): boolean;
127
+ /**
128
+ * Get the next tier in escalation order
129
+ * @returns next tier or null if at highest tier
130
+ */
131
+ export declare function getNextTier(tier: CapabilityTier): CapabilityTier | null;
132
+ /**
133
+ * Get the previous tier in de-escalation order
134
+ * @returns previous tier or null if at lowest tier
135
+ */
136
+ export declare function getPreviousTier(tier: CapabilityTier): CapabilityTier | null;
137
+ /**
138
+ * Get configuration for a tier
139
+ */
140
+ export declare function getTierConfig(tier: CapabilityTier): TierConfig;
141
+ /**
142
+ * Get tools available for a tier (includes inherited tools from lower tiers)
143
+ */
144
+ export declare function getToolsForTier(tier: CapabilityTier): string[];
145
+ /**
146
+ * Match a complexity rating to the appropriate tier
147
+ */
148
+ export declare function matchTierToComplexity(complexity: TaskComplexity): TierMatchResult;
149
+ /**
150
+ * Check if a tier can execute a task of given complexity
151
+ */
152
+ export declare function canExecuteAtTier(tier: CapabilityTier, complexity: TaskComplexity): boolean;
153
+ /**
154
+ * Validate a tier escalation request
155
+ */
156
+ export declare function validateTierEscalation(escalation: TierEscalation): EscalationValidationResult;
157
+ /**
158
+ * Create a capability profile with validation
159
+ */
160
+ export declare function createCapabilityProfile(input: {
161
+ name: string;
162
+ tier: CapabilityTier;
163
+ complexityRating: number;
164
+ tools: string[];
165
+ description?: string;
166
+ constraints?: ProfileConstraints;
167
+ }): CapabilityProfile;
168
+ /**
169
+ * Registry for managing capability profiles
170
+ */
171
+ export declare class TierRegistry {
172
+ private profiles;
173
+ /**
174
+ * Register a capability profile
175
+ */
176
+ register(input: {
177
+ name: string;
178
+ tier: CapabilityTier;
179
+ complexityRating: number;
180
+ tools: string[];
181
+ description?: string;
182
+ constraints?: ProfileConstraints;
183
+ }): void;
184
+ /**
185
+ * Get a profile by name
186
+ */
187
+ get(name: string): CapabilityProfile | undefined;
188
+ /**
189
+ * Unregister a profile
190
+ */
191
+ unregister(name: string): boolean;
192
+ /**
193
+ * List all profiles for a tier
194
+ */
195
+ listByTier(tier: CapabilityTier): CapabilityProfile[];
196
+ /**
197
+ * Find profiles that can handle a given complexity
198
+ */
199
+ findByComplexity(complexity: TaskComplexity): CapabilityProfile[];
200
+ /**
201
+ * Find profiles with the required tools
202
+ */
203
+ findByTools(requiredTools: string[]): CapabilityProfile[];
204
+ /**
205
+ * List all registered profiles
206
+ */
207
+ listAll(): CapabilityProfile[];
208
+ /**
209
+ * Clear all profiles
210
+ */
211
+ clear(): void;
212
+ }
213
+ declare const _default: {
214
+ CAPABILITY_TIERS: readonly CapabilityTier[];
215
+ TIER_ORDER: Record<CapabilityTier, number>;
216
+ compareTiers: typeof compareTiers;
217
+ isHigherTier: typeof isHigherTier;
218
+ isLowerTier: typeof isLowerTier;
219
+ getNextTier: typeof getNextTier;
220
+ getPreviousTier: typeof getPreviousTier;
221
+ getTierConfig: typeof getTierConfig;
222
+ getToolsForTier: typeof getToolsForTier;
223
+ matchTierToComplexity: typeof matchTierToComplexity;
224
+ canExecuteAtTier: typeof canExecuteAtTier;
225
+ validateTierEscalation: typeof validateTierEscalation;
226
+ createCapabilityProfile: typeof createCapabilityProfile;
227
+ TierRegistry: typeof TierRegistry;
228
+ };
229
+ export default _default;
230
+ //# sourceMappingURL=capability-tiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-tiers.d.ts","sourceRoot":"","sources":["../src/capability-tiers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,388 @@
1
+ /**
2
+ * Capability Tiers
3
+ *
4
+ * Agent capability tiers with complexity levels and toolsets.
5
+ * Follows the cascade pattern: code < generative < agentic < human
6
+ *
7
+ * ## Tier Hierarchy
8
+ *
9
+ * 1. **Code** (complexity 1-2): Deterministic, pure functions
10
+ * - Tools: calculate, lookup, validate, transform
11
+ * - No AI, predictable outputs
12
+ *
13
+ * 2. **Generative** (complexity 3-5): LLM-powered generation
14
+ * - Tools: generate, summarize, analyze, classify
15
+ * - Uses AI but no autonomous actions
16
+ *
17
+ * 3. **Agentic** (complexity 6-8): Autonomous AI agents
18
+ * - Tools: browse, execute, plan, delegate
19
+ * - Can take actions, make decisions
20
+ *
21
+ * 4. **Human** (complexity 9-10): Human-in-the-loop
22
+ * - Tools: approve, review, decide, escalate
23
+ * - Requires human judgment
24
+ *
25
+ * @packageDocumentation
26
+ */
27
+ // ============================================================================
28
+ // Constants
29
+ // ============================================================================
30
+ /**
31
+ * All capability tiers in order
32
+ */
33
+ export const CAPABILITY_TIERS = [
34
+ 'code',
35
+ 'generative',
36
+ 'agentic',
37
+ 'human',
38
+ ];
39
+ /**
40
+ * Tier order for comparison
41
+ */
42
+ export const TIER_ORDER = {
43
+ code: 0,
44
+ generative: 1,
45
+ agentic: 2,
46
+ human: 3,
47
+ };
48
+ /**
49
+ * Tools specific to each tier (not including inherited tools)
50
+ */
51
+ const TIER_SPECIFIC_TOOLS = {
52
+ code: ['calculate', 'lookup', 'validate', 'transform'],
53
+ generative: ['generate', 'summarize', 'analyze', 'classify'],
54
+ agentic: ['browse', 'execute', 'plan', 'delegate'],
55
+ human: ['approve', 'review', 'decide', 'escalate'],
56
+ };
57
+ /**
58
+ * Tier configurations
59
+ */
60
+ const TIER_CONFIGS = {
61
+ code: {
62
+ tier: 'code',
63
+ minComplexity: 1,
64
+ maxComplexity: 2,
65
+ description: 'Deterministic code execution with predictable outputs',
66
+ allowedTools: TIER_SPECIFIC_TOOLS.code,
67
+ defaultTimeout: 5000, // 5 seconds
68
+ },
69
+ generative: {
70
+ tier: 'generative',
71
+ minComplexity: 3,
72
+ maxComplexity: 5,
73
+ description: 'LLM-powered generation and analysis without autonomous actions',
74
+ allowedTools: [...TIER_SPECIFIC_TOOLS.code, ...TIER_SPECIFIC_TOOLS.generative],
75
+ defaultTimeout: 30000, // 30 seconds
76
+ },
77
+ agentic: {
78
+ tier: 'agentic',
79
+ minComplexity: 6,
80
+ maxComplexity: 8,
81
+ description: 'Autonomous AI agents that can take actions and make decisions',
82
+ allowedTools: [
83
+ ...TIER_SPECIFIC_TOOLS.code,
84
+ ...TIER_SPECIFIC_TOOLS.generative,
85
+ ...TIER_SPECIFIC_TOOLS.agentic,
86
+ ],
87
+ defaultTimeout: 300000, // 5 minutes
88
+ },
89
+ human: {
90
+ tier: 'human',
91
+ minComplexity: 9,
92
+ maxComplexity: 10,
93
+ description: 'Human-in-the-loop for tasks requiring human judgment',
94
+ allowedTools: [
95
+ ...TIER_SPECIFIC_TOOLS.code,
96
+ ...TIER_SPECIFIC_TOOLS.generative,
97
+ ...TIER_SPECIFIC_TOOLS.agentic,
98
+ ...TIER_SPECIFIC_TOOLS.human,
99
+ ],
100
+ defaultTimeout: 86400000, // 24 hours
101
+ },
102
+ };
103
+ // ============================================================================
104
+ // Tier Comparison Functions
105
+ // ============================================================================
106
+ /**
107
+ * Compare two tiers
108
+ * @returns negative if a < b, positive if a > b, 0 if equal
109
+ */
110
+ export function compareTiers(a, b) {
111
+ return TIER_ORDER[a] - TIER_ORDER[b];
112
+ }
113
+ /**
114
+ * Check if tier A is higher than tier B
115
+ */
116
+ export function isHigherTier(a, b) {
117
+ return TIER_ORDER[a] > TIER_ORDER[b];
118
+ }
119
+ /**
120
+ * Check if tier A is lower than tier B
121
+ */
122
+ export function isLowerTier(a, b) {
123
+ return TIER_ORDER[a] < TIER_ORDER[b];
124
+ }
125
+ /**
126
+ * Get the next tier in escalation order
127
+ * @returns next tier or null if at highest tier
128
+ */
129
+ export function getNextTier(tier) {
130
+ const index = TIER_ORDER[tier];
131
+ if (index >= CAPABILITY_TIERS.length - 1) {
132
+ return null;
133
+ }
134
+ return CAPABILITY_TIERS[index + 1] ?? null;
135
+ }
136
+ /**
137
+ * Get the previous tier in de-escalation order
138
+ * @returns previous tier or null if at lowest tier
139
+ */
140
+ export function getPreviousTier(tier) {
141
+ const index = TIER_ORDER[tier];
142
+ if (index <= 0) {
143
+ return null;
144
+ }
145
+ return CAPABILITY_TIERS[index - 1] ?? null;
146
+ }
147
+ // ============================================================================
148
+ // Tier Configuration Functions
149
+ // ============================================================================
150
+ /**
151
+ * Get configuration for a tier
152
+ */
153
+ export function getTierConfig(tier) {
154
+ return TIER_CONFIGS[tier];
155
+ }
156
+ /**
157
+ * Get tools available for a tier (includes inherited tools from lower tiers)
158
+ */
159
+ export function getToolsForTier(tier) {
160
+ return TIER_CONFIGS[tier].allowedTools;
161
+ }
162
+ // ============================================================================
163
+ // Complexity Matching Functions
164
+ // ============================================================================
165
+ /**
166
+ * Match a complexity rating to the appropriate tier
167
+ */
168
+ export function matchTierToComplexity(complexity) {
169
+ // Validate complexity is in range
170
+ const clampedComplexity = Math.max(1, Math.min(10, complexity));
171
+ // Find the matching tier
172
+ for (const tier of CAPABILITY_TIERS) {
173
+ const config = TIER_CONFIGS[tier];
174
+ if (clampedComplexity >= config.minComplexity && clampedComplexity <= config.maxComplexity) {
175
+ // Calculate confidence based on how centered in the range
176
+ const range = config.maxComplexity - config.minComplexity;
177
+ const center = config.minComplexity + range / 2;
178
+ const distance = Math.abs(clampedComplexity - center);
179
+ const confidence = 1 - (distance / (range + 1)) * 0.2; // 0.8-1.0 range
180
+ return {
181
+ tier,
182
+ confidence,
183
+ suggestedTools: config.allowedTools,
184
+ };
185
+ }
186
+ }
187
+ // Handle boundary cases (between tiers)
188
+ // Find which tier is closest
189
+ let bestTier = 'code';
190
+ let bestDistance = Infinity;
191
+ for (const tier of CAPABILITY_TIERS) {
192
+ const config = TIER_CONFIGS[tier];
193
+ const center = (config.minComplexity + config.maxComplexity) / 2;
194
+ const distance = Math.abs(clampedComplexity - center);
195
+ if (distance < bestDistance) {
196
+ bestDistance = distance;
197
+ bestTier = tier;
198
+ }
199
+ }
200
+ return {
201
+ tier: bestTier,
202
+ confidence: 0.7, // Lower confidence for boundary cases
203
+ suggestedTools: TIER_CONFIGS[bestTier].allowedTools,
204
+ };
205
+ }
206
+ /**
207
+ * Check if a tier can execute a task of given complexity
208
+ */
209
+ export function canExecuteAtTier(tier, complexity) {
210
+ const config = TIER_CONFIGS[tier];
211
+ // A tier can handle its own complexity range or any lower complexity
212
+ return complexity <= config.maxComplexity;
213
+ }
214
+ // ============================================================================
215
+ // Escalation Functions
216
+ // ============================================================================
217
+ /**
218
+ * Validate a tier escalation request
219
+ */
220
+ export function validateTierEscalation(escalation) {
221
+ const { fromTier, toTier, reason, skipJustification, allowDeescalation } = escalation;
222
+ // Require a reason
223
+ if (!reason || reason.trim() === '') {
224
+ return {
225
+ valid: false,
226
+ error: 'Escalation reason is required',
227
+ };
228
+ }
229
+ const fromOrder = TIER_ORDER[fromTier];
230
+ const toOrder = TIER_ORDER[toTier];
231
+ // Check for de-escalation
232
+ if (toOrder < fromOrder) {
233
+ if (!allowDeescalation) {
234
+ return {
235
+ valid: false,
236
+ error: 'de-escalation not allowed without explicit allowDeescalation flag',
237
+ };
238
+ }
239
+ return { valid: true };
240
+ }
241
+ // Check for same tier (no-op)
242
+ if (fromOrder === toOrder) {
243
+ return { valid: true };
244
+ }
245
+ // Check for multi-level escalation (skipping tiers)
246
+ const tierDifference = toOrder - fromOrder;
247
+ if (tierDifference > 1) {
248
+ if (!skipJustification || skipJustification.trim() === '') {
249
+ return {
250
+ valid: false,
251
+ error: 'skipJustification is required when skipping tiers',
252
+ };
253
+ }
254
+ }
255
+ return { valid: true };
256
+ }
257
+ // ============================================================================
258
+ // Profile Creation and Validation
259
+ // ============================================================================
260
+ /**
261
+ * Create a capability profile with validation
262
+ */
263
+ export function createCapabilityProfile(input) {
264
+ const { name, tier, complexityRating, tools, description, constraints } = input;
265
+ const config = TIER_CONFIGS[tier];
266
+ // Validate complexity rating is within tier bounds
267
+ if (complexityRating < config.minComplexity || complexityRating > config.maxComplexity) {
268
+ throw new Error(`Complexity rating ${complexityRating} is outside bounds for ${tier} tier ` +
269
+ `(${config.minComplexity}-${config.maxComplexity})`);
270
+ }
271
+ // Validate tools are appropriate for tier
272
+ const allowedTools = new Set(config.allowedTools);
273
+ for (const tool of tools) {
274
+ if (!allowedTools.has(tool)) {
275
+ throw new Error(`Tool '${tool}' is not allowed at ${tier} tier. ` +
276
+ `Allowed tools: ${config.allowedTools.join(', ')}`);
277
+ }
278
+ }
279
+ return {
280
+ name,
281
+ tier,
282
+ complexityRating,
283
+ tools,
284
+ ...(description !== undefined && { description }),
285
+ ...(constraints !== undefined && { constraints }),
286
+ };
287
+ }
288
+ // ============================================================================
289
+ // Tier Registry
290
+ // ============================================================================
291
+ /**
292
+ * Registry for managing capability profiles
293
+ */
294
+ export class TierRegistry {
295
+ profiles = new Map();
296
+ /**
297
+ * Register a capability profile
298
+ */
299
+ register(input) {
300
+ if (this.profiles.has(input.name)) {
301
+ throw new Error(`Profile '${input.name}' is already registered`);
302
+ }
303
+ const profile = createCapabilityProfile(input);
304
+ this.profiles.set(profile.name, profile);
305
+ }
306
+ /**
307
+ * Get a profile by name
308
+ */
309
+ get(name) {
310
+ return this.profiles.get(name);
311
+ }
312
+ /**
313
+ * Unregister a profile
314
+ */
315
+ unregister(name) {
316
+ return this.profiles.delete(name);
317
+ }
318
+ /**
319
+ * List all profiles for a tier
320
+ */
321
+ listByTier(tier) {
322
+ const result = [];
323
+ for (const profile of this.profiles.values()) {
324
+ if (profile.tier === tier) {
325
+ result.push(profile);
326
+ }
327
+ }
328
+ return result;
329
+ }
330
+ /**
331
+ * Find profiles that can handle a given complexity
332
+ */
333
+ findByComplexity(complexity) {
334
+ const result = [];
335
+ for (const profile of this.profiles.values()) {
336
+ if (canExecuteAtTier(profile.tier, complexity)) {
337
+ result.push(profile);
338
+ }
339
+ }
340
+ return result;
341
+ }
342
+ /**
343
+ * Find profiles with the required tools
344
+ */
345
+ findByTools(requiredTools) {
346
+ const result = [];
347
+ for (const profile of this.profiles.values()) {
348
+ const profileTools = new Set(profile.tools);
349
+ const hasAllTools = requiredTools.every((tool) => profileTools.has(tool));
350
+ if (hasAllTools) {
351
+ result.push(profile);
352
+ }
353
+ }
354
+ return result;
355
+ }
356
+ /**
357
+ * List all registered profiles
358
+ */
359
+ listAll() {
360
+ return Array.from(this.profiles.values());
361
+ }
362
+ /**
363
+ * Clear all profiles
364
+ */
365
+ clear() {
366
+ this.profiles.clear();
367
+ }
368
+ }
369
+ // ============================================================================
370
+ // Default Export
371
+ // ============================================================================
372
+ export default {
373
+ CAPABILITY_TIERS,
374
+ TIER_ORDER,
375
+ compareTiers,
376
+ isHigherTier,
377
+ isLowerTier,
378
+ getNextTier,
379
+ getPreviousTier,
380
+ getTierConfig,
381
+ getToolsForTier,
382
+ matchTierToComplexity,
383
+ canExecuteAtTier,
384
+ validateTierEscalation,
385
+ createCapabilityProfile,
386
+ TierRegistry,
387
+ };
388
+ //# sourceMappingURL=capability-tiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-tiers.js","sourceRoot":"","sources":["../src/capability-tiers.ts"],"names":[],"mappings":"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"}