@marktoflow/core 2.0.0-alpha.3

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 (125) hide show
  1. package/dist/bundle.d.ts +43 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +202 -0
  4. package/dist/bundle.js.map +1 -0
  5. package/dist/config.d.ts +33 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +27 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/costs.d.ts +182 -0
  10. package/dist/costs.d.ts.map +1 -0
  11. package/dist/costs.js +464 -0
  12. package/dist/costs.js.map +1 -0
  13. package/dist/credentials.d.ts +162 -0
  14. package/dist/credentials.d.ts.map +1 -0
  15. package/dist/credentials.js +646 -0
  16. package/dist/credentials.js.map +1 -0
  17. package/dist/engine.d.ts +137 -0
  18. package/dist/engine.d.ts.map +1 -0
  19. package/dist/engine.js +514 -0
  20. package/dist/engine.js.map +1 -0
  21. package/dist/env.d.ts +59 -0
  22. package/dist/env.d.ts.map +1 -0
  23. package/dist/env.js +256 -0
  24. package/dist/env.js.map +1 -0
  25. package/dist/failover.d.ts +43 -0
  26. package/dist/failover.d.ts.map +1 -0
  27. package/dist/failover.js +53 -0
  28. package/dist/failover.js.map +1 -0
  29. package/dist/filewatcher.d.ts +32 -0
  30. package/dist/filewatcher.d.ts.map +1 -0
  31. package/dist/filewatcher.js +92 -0
  32. package/dist/filewatcher.js.map +1 -0
  33. package/dist/index.d.ts +36 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +69 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/logging.d.ts +62 -0
  38. package/dist/logging.d.ts.map +1 -0
  39. package/dist/logging.js +211 -0
  40. package/dist/logging.js.map +1 -0
  41. package/dist/mcp-loader.d.ts +29 -0
  42. package/dist/mcp-loader.d.ts.map +1 -0
  43. package/dist/mcp-loader.js +60 -0
  44. package/dist/mcp-loader.js.map +1 -0
  45. package/dist/metrics.d.ts +19 -0
  46. package/dist/metrics.d.ts.map +1 -0
  47. package/dist/metrics.js +65 -0
  48. package/dist/metrics.js.map +1 -0
  49. package/dist/models.d.ts +419 -0
  50. package/dist/models.d.ts.map +1 -0
  51. package/dist/models.js +111 -0
  52. package/dist/models.js.map +1 -0
  53. package/dist/parser.d.ts +40 -0
  54. package/dist/parser.d.ts.map +1 -0
  55. package/dist/parser.js +287 -0
  56. package/dist/parser.js.map +1 -0
  57. package/dist/plugins.d.ts +105 -0
  58. package/dist/plugins.d.ts.map +1 -0
  59. package/dist/plugins.js +182 -0
  60. package/dist/plugins.js.map +1 -0
  61. package/dist/queue.d.ts +114 -0
  62. package/dist/queue.d.ts.map +1 -0
  63. package/dist/queue.js +385 -0
  64. package/dist/queue.js.map +1 -0
  65. package/dist/rollback.d.ts +117 -0
  66. package/dist/rollback.d.ts.map +1 -0
  67. package/dist/rollback.js +374 -0
  68. package/dist/rollback.js.map +1 -0
  69. package/dist/routing.d.ts +144 -0
  70. package/dist/routing.d.ts.map +1 -0
  71. package/dist/routing.js +457 -0
  72. package/dist/routing.js.map +1 -0
  73. package/dist/scheduler.d.ts +91 -0
  74. package/dist/scheduler.d.ts.map +1 -0
  75. package/dist/scheduler.js +259 -0
  76. package/dist/scheduler.js.map +1 -0
  77. package/dist/script-tool.d.ts +22 -0
  78. package/dist/script-tool.d.ts.map +1 -0
  79. package/dist/script-tool.js +90 -0
  80. package/dist/script-tool.js.map +1 -0
  81. package/dist/sdk-registry.d.ts +81 -0
  82. package/dist/sdk-registry.d.ts.map +1 -0
  83. package/dist/sdk-registry.js +264 -0
  84. package/dist/sdk-registry.js.map +1 -0
  85. package/dist/security.d.ts +155 -0
  86. package/dist/security.d.ts.map +1 -0
  87. package/dist/security.js +362 -0
  88. package/dist/security.js.map +1 -0
  89. package/dist/state.d.ts +67 -0
  90. package/dist/state.d.ts.map +1 -0
  91. package/dist/state.js +276 -0
  92. package/dist/state.js.map +1 -0
  93. package/dist/templates.d.ts +70 -0
  94. package/dist/templates.d.ts.map +1 -0
  95. package/dist/templates.js +244 -0
  96. package/dist/templates.js.map +1 -0
  97. package/dist/tool-base.d.ts +54 -0
  98. package/dist/tool-base.d.ts.map +1 -0
  99. package/dist/tool-base.js +43 -0
  100. package/dist/tool-base.js.map +1 -0
  101. package/dist/tool-registry.d.ts +24 -0
  102. package/dist/tool-registry.d.ts.map +1 -0
  103. package/dist/tool-registry.js +164 -0
  104. package/dist/tool-registry.js.map +1 -0
  105. package/dist/tools/custom-tool.d.ts +16 -0
  106. package/dist/tools/custom-tool.d.ts.map +1 -0
  107. package/dist/tools/custom-tool.js +85 -0
  108. package/dist/tools/custom-tool.js.map +1 -0
  109. package/dist/tools/mcp-tool.d.ts +16 -0
  110. package/dist/tools/mcp-tool.d.ts.map +1 -0
  111. package/dist/tools/mcp-tool.js +98 -0
  112. package/dist/tools/mcp-tool.js.map +1 -0
  113. package/dist/tools/openapi-tool.d.ts +17 -0
  114. package/dist/tools/openapi-tool.d.ts.map +1 -0
  115. package/dist/tools/openapi-tool.js +165 -0
  116. package/dist/tools/openapi-tool.js.map +1 -0
  117. package/dist/trigger-manager.d.ts +26 -0
  118. package/dist/trigger-manager.d.ts.map +1 -0
  119. package/dist/trigger-manager.js +107 -0
  120. package/dist/trigger-manager.js.map +1 -0
  121. package/dist/webhook.d.ts +95 -0
  122. package/dist/webhook.d.ts.map +1 -0
  123. package/dist/webhook.js +261 -0
  124. package/dist/webhook.js.map +1 -0
  125. package/package.json +60 -0
@@ -0,0 +1,457 @@
1
+ /**
2
+ * Agent selection and routing module.
3
+ *
4
+ * Provides agent selection based on:
5
+ * - Capability requirements
6
+ * - Cost optimization
7
+ * - Quality/performance metrics
8
+ * - Load balancing
9
+ * - Budget constraints
10
+ */
11
+ export var SelectionStrategy;
12
+ (function (SelectionStrategy) {
13
+ SelectionStrategy["CAPABILITY_MATCH"] = "capability_match";
14
+ SelectionStrategy["LOWEST_COST"] = "lowest_cost";
15
+ SelectionStrategy["HIGHEST_QUALITY"] = "highest_quality";
16
+ SelectionStrategy["BALANCED"] = "balanced";
17
+ SelectionStrategy["ROUND_ROBIN"] = "round_robin";
18
+ SelectionStrategy["RANDOM"] = "random";
19
+ SelectionStrategy["PRIORITY"] = "priority";
20
+ SelectionStrategy["LEAST_LOADED"] = "least_loaded";
21
+ })(SelectionStrategy || (SelectionStrategy = {}));
22
+ export var RoutingDecision;
23
+ (function (RoutingDecision) {
24
+ RoutingDecision["USE_PRIMARY"] = "use_primary";
25
+ RoutingDecision["USE_FALLBACK"] = "use_fallback";
26
+ RoutingDecision["SWITCH_AGENT"] = "switch_agent";
27
+ RoutingDecision["REJECT"] = "reject";
28
+ RoutingDecision["QUEUE"] = "queue";
29
+ })(RoutingDecision || (RoutingDecision = {}));
30
+ const defaultWeights = {
31
+ capability: 0.3,
32
+ cost: 0.2,
33
+ quality: 0.25,
34
+ availability: 0.15,
35
+ load: 0.1,
36
+ };
37
+ export class AgentSelector {
38
+ strategy;
39
+ weights;
40
+ profiles = new Map();
41
+ loadInfo = new Map();
42
+ roundRobinIndex = 0;
43
+ constructor(profiles = [], strategy = SelectionStrategy.BALANCED, weights = defaultWeights) {
44
+ this.strategy = strategy;
45
+ this.weights = weights;
46
+ for (const profile of profiles) {
47
+ this.registerAgent(profile);
48
+ }
49
+ }
50
+ registerAgent(profile) {
51
+ this.profiles.set(profile.name, profile);
52
+ this.loadInfo.set(profile.name, {
53
+ agentName: profile.name,
54
+ currentRequests: 0,
55
+ requestsPerMinute: 0,
56
+ queueDepth: 0,
57
+ lastUpdated: new Date(),
58
+ });
59
+ }
60
+ unregisterAgent(name) {
61
+ const had = this.profiles.delete(name);
62
+ this.loadInfo.delete(name);
63
+ return had;
64
+ }
65
+ getProfile(name) {
66
+ return this.profiles.get(name);
67
+ }
68
+ listAgents() {
69
+ return Array.from(this.profiles.keys());
70
+ }
71
+ listProfiles() {
72
+ return Array.from(this.profiles.values());
73
+ }
74
+ updateLoad(agentName, load) {
75
+ this.loadInfo.set(agentName, load);
76
+ }
77
+ getLoad(agentName) {
78
+ return this.loadInfo.get(agentName);
79
+ }
80
+ capabilityScore(profile, required) {
81
+ if (!required || required.size === 0)
82
+ return 1;
83
+ for (const cap of required) {
84
+ if (!profile.capabilities.has(cap))
85
+ return 0;
86
+ }
87
+ const extra = Array.from(profile.capabilities).filter((c) => !required.has(c)).length;
88
+ return Math.min(1, 1 + extra * 0.05);
89
+ }
90
+ costScore(profile, all) {
91
+ if (all.length === 0)
92
+ return 1;
93
+ const costs = all.map((p) => p.costPer1kTokens);
94
+ const min = Math.min(...costs);
95
+ const max = Math.max(...costs);
96
+ if (max === min)
97
+ return 1;
98
+ const normalized = (profile.costPer1kTokens - min) / (max - min);
99
+ return 1 - normalized;
100
+ }
101
+ availabilityScore(profile) {
102
+ if (!profile.enabled)
103
+ return 0;
104
+ const load = this.loadInfo.get(profile.name);
105
+ if (load && load.requestsPerMinute >= profile.maxRequestsPerMinute) {
106
+ return 0.1;
107
+ }
108
+ return 1;
109
+ }
110
+ loadScore(profile) {
111
+ const load = this.loadInfo.get(profile.name);
112
+ if (!load)
113
+ return 1;
114
+ const loadFactor = load.currentRequests === 0 ? 0 : Math.min(1, load.currentRequests / 10);
115
+ return 1 - loadFactor;
116
+ }
117
+ scoreAgent(profile, context) {
118
+ const eligible = this.listProfiles().filter((p) => p.enabled);
119
+ const required = context.requiredCapabilities ?? new Set();
120
+ const score = {
121
+ agentName: profile.name,
122
+ capabilityScore: this.capabilityScore(profile, required),
123
+ costScore: this.costScore(profile, eligible),
124
+ qualityScore: (profile.accuracyScore + profile.reliabilityScore + profile.speedScore) / 3,
125
+ availabilityScore: this.availabilityScore(profile),
126
+ loadScore: this.loadScore(profile),
127
+ };
128
+ score.weightedScore = (weights) => score.capabilityScore * (weights.capability ?? defaultWeights.capability) +
129
+ score.costScore * (weights.cost ?? defaultWeights.cost) +
130
+ score.qualityScore * (weights.quality ?? defaultWeights.quality) +
131
+ score.availabilityScore * (weights.availability ?? defaultWeights.availability) +
132
+ score.loadScore * (weights.load ?? defaultWeights.load);
133
+ score.totalScore = score.weightedScore(this.weights);
134
+ return score;
135
+ }
136
+ select(context) {
137
+ const eligible = this.getEligible(context);
138
+ if (eligible.length === 0) {
139
+ return { decision: RoutingDecision.REJECT, fallbackAgents: [], reason: 'No eligible agents', scores: {} };
140
+ }
141
+ const scores = {};
142
+ for (const profile of eligible) {
143
+ scores[profile.name] = this.scoreAgent(profile, context);
144
+ }
145
+ const selected = this.selectByStrategy(eligible, scores);
146
+ if (!selected) {
147
+ return { decision: RoutingDecision.REJECT, fallbackAgents: [], reason: 'No agent matched selection', scores };
148
+ }
149
+ const fallbacks = this.buildFallbacks(eligible, selected, scores);
150
+ return {
151
+ decision: RoutingDecision.USE_PRIMARY,
152
+ selectedAgent: selected.name,
153
+ fallbackAgents: fallbacks.map((p) => p.name),
154
+ reason: `Selected by ${this.strategy} strategy`,
155
+ scores,
156
+ estimatedCost: selected.costPer1kTokens,
157
+ };
158
+ }
159
+ getEligible(context) {
160
+ const preferred = new Set(context.preferredAgents ?? []);
161
+ const excluded = new Set(context.excludedAgents ?? []);
162
+ const required = context.requiredCapabilities ?? new Set();
163
+ const maxCost = context.maxCost;
164
+ const eligible = this.listProfiles().filter((profile) => {
165
+ if (!profile.enabled)
166
+ return false;
167
+ if (excluded.has(profile.name))
168
+ return false;
169
+ for (const cap of required) {
170
+ if (!profile.capabilities.has(cap))
171
+ return false;
172
+ }
173
+ if (maxCost !== undefined && profile.costPer1kTokens > maxCost)
174
+ return false;
175
+ return true;
176
+ });
177
+ if (preferred.size > 0) {
178
+ eligible.sort((a, b) => {
179
+ const ap = preferred.has(a.name) ? 0 : 1;
180
+ const bp = preferred.has(b.name) ? 0 : 1;
181
+ if (ap !== bp)
182
+ return ap - bp;
183
+ return b.priority - a.priority;
184
+ });
185
+ }
186
+ return eligible;
187
+ }
188
+ selectByStrategy(eligible, scores) {
189
+ if (eligible.length === 0)
190
+ return null;
191
+ switch (this.strategy) {
192
+ case SelectionStrategy.CAPABILITY_MATCH:
193
+ return eligible.reduce((best, current) => scores[current.name].capabilityScore > scores[best.name].capabilityScore ? current : best);
194
+ case SelectionStrategy.LOWEST_COST:
195
+ return eligible.reduce((best, current) => current.costPer1kTokens < best.costPer1kTokens ? current : best);
196
+ case SelectionStrategy.HIGHEST_QUALITY:
197
+ return eligible.reduce((best, current) => current.accuracyScore + current.reliabilityScore + current.speedScore >
198
+ best.accuracyScore + best.reliabilityScore + best.speedScore
199
+ ? current
200
+ : best);
201
+ case SelectionStrategy.BALANCED:
202
+ return eligible.reduce((best, current) => (scores[current.name].weightedScore?.(this.weights) ?? 0) >
203
+ (scores[best.name].weightedScore?.(this.weights) ?? 0)
204
+ ? current
205
+ : best);
206
+ case SelectionStrategy.ROUND_ROBIN: {
207
+ const index = this.roundRobinIndex % eligible.length;
208
+ this.roundRobinIndex += 1;
209
+ return eligible[index];
210
+ }
211
+ case SelectionStrategy.RANDOM:
212
+ return eligible[Math.floor(Math.random() * eligible.length)];
213
+ case SelectionStrategy.PRIORITY:
214
+ return eligible.reduce((best, current) => (current.priority > best.priority ? current : best));
215
+ case SelectionStrategy.LEAST_LOADED:
216
+ return eligible.reduce((best, current) => scores[current.name].loadScore > scores[best.name].loadScore ? current : best);
217
+ default:
218
+ return eligible[0];
219
+ }
220
+ }
221
+ buildFallbacks(eligible, selected, scores) {
222
+ const others = eligible.filter((p) => p.name !== selected.name);
223
+ others.sort((a, b) => (scores[b.name].weightedScore?.(this.weights) ?? 0) - (scores[a.name].weightedScore?.(this.weights) ?? 0));
224
+ return others.slice(0, 3);
225
+ }
226
+ }
227
+ export class BudgetTracker {
228
+ config;
229
+ spent = 0;
230
+ workflowSpent = new Map();
231
+ periodStart = Date.now();
232
+ alertCallbacks = [];
233
+ constructor(config) {
234
+ this.config = config;
235
+ this.config.alertThresholds = this.config.alertThresholds ?? [0.5, 0.8, 0.95];
236
+ }
237
+ get remaining() {
238
+ this.checkPeriodReset();
239
+ return this.config.totalBudget - this.spent;
240
+ }
241
+ canAfford(cost) {
242
+ this.checkPeriodReset();
243
+ return this.spent + cost <= this.config.totalBudget;
244
+ }
245
+ recordCost(cost, workflowId) {
246
+ this.checkPeriodReset();
247
+ if (this.spent + cost > this.config.totalBudget)
248
+ return false;
249
+ if (workflowId && this.config.perWorkflowLimit !== undefined) {
250
+ const current = this.workflowSpent.get(workflowId) ?? 0;
251
+ if (current + cost > this.config.perWorkflowLimit)
252
+ return false;
253
+ }
254
+ const prev = this.spent;
255
+ this.spent += cost;
256
+ if (workflowId) {
257
+ this.workflowSpent.set(workflowId, (this.workflowSpent.get(workflowId) ?? 0) + cost);
258
+ }
259
+ this.checkAlerts(prev);
260
+ return true;
261
+ }
262
+ addAlertCallback(cb) {
263
+ this.alertCallbacks.push(cb);
264
+ }
265
+ reset() {
266
+ this.spent = 0;
267
+ this.workflowSpent.clear();
268
+ this.periodStart = Date.now();
269
+ }
270
+ checkPeriodReset() {
271
+ if (!this.config.periodMs)
272
+ return;
273
+ if (Date.now() - this.periodStart > this.config.periodMs) {
274
+ this.reset();
275
+ }
276
+ }
277
+ checkAlerts(prevSpent) {
278
+ if (!this.alertCallbacks.length)
279
+ return;
280
+ const total = this.config.totalBudget;
281
+ if (total === 0)
282
+ return;
283
+ const prevPct = prevSpent / total;
284
+ const currPct = this.spent / total;
285
+ for (const threshold of this.config.alertThresholds ?? []) {
286
+ if (prevPct < threshold && currPct >= threshold) {
287
+ for (const cb of this.alertCallbacks) {
288
+ try {
289
+ cb(currPct * 100, this.spent);
290
+ }
291
+ catch {
292
+ // ignore
293
+ }
294
+ }
295
+ }
296
+ }
297
+ }
298
+ }
299
+ export class AgentRouter {
300
+ selector;
301
+ budget;
302
+ history = [];
303
+ constructor(selector, budget) {
304
+ this.selector = selector;
305
+ this.budget = budget;
306
+ }
307
+ route(context) {
308
+ if (this.budget && context.budgetRemaining === undefined) {
309
+ context.budgetRemaining = this.budget.remaining;
310
+ }
311
+ let result = this.selector.select(context);
312
+ if (result.decision === RoutingDecision.USE_PRIMARY && this.budget) {
313
+ if (result.estimatedCost !== undefined && !this.budget.canAfford(result.estimatedCost)) {
314
+ for (const fallback of result.fallbackAgents) {
315
+ const profile = this.selector.getProfile(fallback);
316
+ if (profile && this.budget.canAfford(profile.costPer1kTokens)) {
317
+ result = {
318
+ decision: RoutingDecision.USE_FALLBACK,
319
+ selectedAgent: fallback,
320
+ fallbackAgents: result.fallbackAgents.filter((a) => a !== fallback),
321
+ reason: 'Primary exceeds budget, using fallback',
322
+ scores: result.scores,
323
+ estimatedCost: profile.costPer1kTokens,
324
+ };
325
+ break;
326
+ }
327
+ }
328
+ if (result.decision === RoutingDecision.USE_PRIMARY) {
329
+ result = { decision: RoutingDecision.REJECT, fallbackAgents: [], reason: 'No agents within budget', scores: result.scores };
330
+ }
331
+ }
332
+ }
333
+ this.history.push({ timestamp: new Date(), result });
334
+ if (this.history.length > 1000)
335
+ this.history = this.history.slice(-1000);
336
+ return result;
337
+ }
338
+ recordStart(agentName) {
339
+ const load = this.selector.getLoad(agentName);
340
+ if (load) {
341
+ load.currentRequests += 1;
342
+ load.lastUpdated = new Date();
343
+ }
344
+ }
345
+ recordCompletion(agentName, cost, workflowId) {
346
+ if (this.budget) {
347
+ this.budget.recordCost(cost, workflowId);
348
+ }
349
+ const load = this.selector.getLoad(agentName);
350
+ if (load) {
351
+ load.currentRequests = Math.max(0, load.currentRequests - 1);
352
+ load.lastUpdated = new Date();
353
+ }
354
+ }
355
+ getRoutingStats() {
356
+ if (!this.history.length) {
357
+ return { totalDecisions: 0, byDecision: {}, byAgent: {} };
358
+ }
359
+ const byDecision = {};
360
+ const byAgent = {};
361
+ for (const entry of this.history) {
362
+ byDecision[entry.result.decision] = (byDecision[entry.result.decision] ?? 0) + 1;
363
+ if (entry.result.selectedAgent) {
364
+ byAgent[entry.result.selectedAgent] = (byAgent[entry.result.selectedAgent] ?? 0) + 1;
365
+ }
366
+ }
367
+ return {
368
+ totalDecisions: this.history.length,
369
+ byDecision,
370
+ byAgent,
371
+ };
372
+ }
373
+ }
374
+ export const PREDEFINED_PROFILES = {
375
+ 'claude-code': {
376
+ name: 'claude-code',
377
+ provider: 'anthropic',
378
+ model: 'claude-3-5-sonnet',
379
+ capabilities: new Set([
380
+ 'tool_calling',
381
+ 'mcp_native',
382
+ 'extended_reasoning',
383
+ 'streaming',
384
+ 'code_generation',
385
+ 'code_review',
386
+ 'analysis',
387
+ ]),
388
+ costPer1kTokens: 0.015,
389
+ costPerRequest: 0,
390
+ accuracyScore: 0.95,
391
+ reliabilityScore: 0.95,
392
+ speedScore: 0.85,
393
+ maxTokens: 100000,
394
+ maxRequestsPerMinute: 60,
395
+ priority: 10,
396
+ tags: ['premium', 'coding'],
397
+ enabled: true,
398
+ },
399
+ 'opencode-gpt4o': {
400
+ name: 'opencode-gpt4o',
401
+ provider: 'openai',
402
+ model: 'gpt-4o',
403
+ capabilities: new Set(['tool_calling', 'streaming', 'code_generation', 'code_review', 'analysis', 'multi_model']),
404
+ costPer1kTokens: 0.0125,
405
+ costPerRequest: 0,
406
+ accuracyScore: 0.9,
407
+ reliabilityScore: 0.92,
408
+ speedScore: 0.9,
409
+ maxTokens: 100000,
410
+ maxRequestsPerMinute: 60,
411
+ priority: 8,
412
+ tags: ['standard', 'coding'],
413
+ enabled: true,
414
+ },
415
+ 'opencode-gpt4o-mini': {
416
+ name: 'opencode-gpt4o-mini',
417
+ provider: 'openai',
418
+ model: 'gpt-4o-mini',
419
+ capabilities: new Set(['tool_calling', 'streaming', 'code_generation', 'analysis', 'multi_model']),
420
+ costPer1kTokens: 0.00075,
421
+ costPerRequest: 0,
422
+ accuracyScore: 0.8,
423
+ reliabilityScore: 0.9,
424
+ speedScore: 0.95,
425
+ maxTokens: 100000,
426
+ maxRequestsPerMinute: 60,
427
+ priority: 5,
428
+ tags: ['economy', 'fast'],
429
+ enabled: true,
430
+ },
431
+ 'opencode-claude': {
432
+ name: 'opencode-claude',
433
+ provider: 'anthropic',
434
+ model: 'claude-3-5-sonnet',
435
+ capabilities: new Set(['tool_calling', 'streaming', 'code_generation', 'code_review', 'analysis', 'multi_model']),
436
+ costPer1kTokens: 0.015,
437
+ costPerRequest: 0,
438
+ accuracyScore: 0.92,
439
+ reliabilityScore: 0.93,
440
+ speedScore: 0.85,
441
+ maxTokens: 100000,
442
+ maxRequestsPerMinute: 60,
443
+ priority: 9,
444
+ tags: ['standard', 'coding'],
445
+ enabled: true,
446
+ },
447
+ };
448
+ export function createDefaultSelector() {
449
+ return new AgentSelector(Object.values(PREDEFINED_PROFILES), SelectionStrategy.BALANCED);
450
+ }
451
+ export function createCostOptimizedSelector() {
452
+ return new AgentSelector(Object.values(PREDEFINED_PROFILES), SelectionStrategy.LOWEST_COST);
453
+ }
454
+ export function createQualityOptimizedSelector() {
455
+ return new AgentSelector(Object.values(PREDEFINED_PROFILES), SelectionStrategy.HIGHEST_QUALITY);
456
+ }
457
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Scheduler for marktoflow v2.0
3
+ *
4
+ * Handles cron-based scheduling of workflow execution.
5
+ */
6
+ export interface ScheduledJob {
7
+ id: string;
8
+ workflowPath: string;
9
+ schedule: string;
10
+ timezone: string;
11
+ enabled: boolean;
12
+ lastRun: Date | null;
13
+ nextRun: Date | null;
14
+ runCount: number;
15
+ inputs: Record<string, unknown>;
16
+ }
17
+ export interface CronFields {
18
+ minute: number[];
19
+ hour: number[];
20
+ day: number[];
21
+ month: number[];
22
+ weekday: number[];
23
+ }
24
+ export type JobCallback = (job: ScheduledJob) => Promise<void>;
25
+ export declare class CronParser {
26
+ /**
27
+ * Parse a cron expression into component values.
28
+ * Format: minute hour day month weekday
29
+ * Special values: * (any), * /N (every N), N-M (range), N,M (list)
30
+ */
31
+ static parse(expression: string): CronFields;
32
+ private static parseField;
33
+ /**
34
+ * Check if a date matches a cron expression.
35
+ */
36
+ static matches(expression: string, date: Date): boolean;
37
+ /**
38
+ * Calculate the next run time for a cron expression.
39
+ */
40
+ static nextRun(expression: string, after?: Date): Date | null;
41
+ }
42
+ export declare class Scheduler {
43
+ private checkIntervalMs;
44
+ private jobs;
45
+ private running;
46
+ private intervalId;
47
+ private callbacks;
48
+ constructor(checkIntervalMs?: number);
49
+ /**
50
+ * Add a scheduled job.
51
+ */
52
+ addJob(job: ScheduledJob): void;
53
+ /**
54
+ * Remove a scheduled job.
55
+ */
56
+ removeJob(jobId: string): boolean;
57
+ /**
58
+ * Get a scheduled job by ID.
59
+ */
60
+ getJob(jobId: string): ScheduledJob | undefined;
61
+ /**
62
+ * List all scheduled jobs.
63
+ */
64
+ listJobs(): ScheduledJob[];
65
+ /**
66
+ * Register a callback for when a job is due.
67
+ */
68
+ onJobDue(callback: JobCallback): void;
69
+ /**
70
+ * Start the scheduler.
71
+ */
72
+ start(): void;
73
+ /**
74
+ * Stop the scheduler.
75
+ */
76
+ stop(): void;
77
+ /**
78
+ * Check and run due jobs.
79
+ */
80
+ private checkJobs;
81
+ /**
82
+ * Run due jobs once (non-blocking check).
83
+ */
84
+ runOnce(): Promise<Map<string, Date>>;
85
+ /**
86
+ * Check if scheduler is running.
87
+ */
88
+ isRunning(): boolean;
89
+ }
90
+ export declare function createJob(id: string, workflowPath: string, schedule: string, inputs?: Record<string, unknown>): ScheduledJob;
91
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAM/D,qBAAa,UAAU;IACrB;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;IAiC5C,OAAO,CAAC,MAAM,CAAC,UAAU;IAgCzB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IAgBvD;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;CA0B9D;AAMD,qBAAa,SAAS;IAMR,OAAO,CAAC,eAAe;IALnC,OAAO,CAAC,IAAI,CAAwC;IACpD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,SAAS,CAAqB;gBAElB,eAAe,GAAE,MAAc;IAEnD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAM/B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/C;;OAEG;IACH,QAAQ,IAAI,YAAY,EAAE;IAI1B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAIrC;;OAEG;IACH,KAAK,IAAI,IAAI;IAgBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;YACW,SAAS;IAuBvB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IA0B3C;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAMD,wBAAgB,SAAS,CACvB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,YAAY,CAYd"}