@aiassesstech/grillo 0.1.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 (121) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/LICENSE +21 -0
  3. package/README.md +512 -0
  4. package/SKILL.md +87 -0
  5. package/dist/api/server.d.ts +68 -0
  6. package/dist/api/server.d.ts.map +1 -0
  7. package/dist/api/server.js +596 -0
  8. package/dist/api/server.js.map +1 -0
  9. package/dist/audit/audit-log.d.ts +88 -0
  10. package/dist/audit/audit-log.d.ts.map +1 -0
  11. package/dist/audit/audit-log.js +195 -0
  12. package/dist/audit/audit-log.js.map +1 -0
  13. package/dist/certification/certificate.d.ts +80 -0
  14. package/dist/certification/certificate.d.ts.map +1 -0
  15. package/dist/certification/certificate.js +176 -0
  16. package/dist/certification/certificate.js.map +1 -0
  17. package/dist/cli/bin.d.ts +8 -0
  18. package/dist/cli/bin.d.ts.map +1 -0
  19. package/dist/cli/bin.js +12 -0
  20. package/dist/cli/bin.js.map +1 -0
  21. package/dist/cli/config-loader.d.ts +66 -0
  22. package/dist/cli/config-loader.d.ts.map +1 -0
  23. package/dist/cli/config-loader.js +243 -0
  24. package/dist/cli/config-loader.js.map +1 -0
  25. package/dist/cli/runner.d.ts +27 -0
  26. package/dist/cli/runner.d.ts.map +1 -0
  27. package/dist/cli/runner.js +388 -0
  28. package/dist/cli/runner.js.map +1 -0
  29. package/dist/commands/grillo-commands.d.ts +50 -0
  30. package/dist/commands/grillo-commands.d.ts.map +1 -0
  31. package/dist/commands/grillo-commands.js +752 -0
  32. package/dist/commands/grillo-commands.js.map +1 -0
  33. package/dist/commands/inline-commands.d.ts +16 -0
  34. package/dist/commands/inline-commands.d.ts.map +1 -0
  35. package/dist/commands/inline-commands.js +277 -0
  36. package/dist/commands/inline-commands.js.map +1 -0
  37. package/dist/commands/router.d.ts +56 -0
  38. package/dist/commands/router.d.ts.map +1 -0
  39. package/dist/commands/router.js +154 -0
  40. package/dist/commands/router.js.map +1 -0
  41. package/dist/config/defaults.d.ts +9 -0
  42. package/dist/config/defaults.d.ts.map +1 -0
  43. package/dist/config/defaults.js +78 -0
  44. package/dist/config/defaults.js.map +1 -0
  45. package/dist/config/schema.d.ts +573 -0
  46. package/dist/config/schema.d.ts.map +1 -0
  47. package/dist/config/schema.js +142 -0
  48. package/dist/config/schema.js.map +1 -0
  49. package/dist/dashboard/metrics.d.ts +100 -0
  50. package/dist/dashboard/metrics.d.ts.map +1 -0
  51. package/dist/dashboard/metrics.js +282 -0
  52. package/dist/dashboard/metrics.js.map +1 -0
  53. package/dist/dashboard/ui.d.ts +19 -0
  54. package/dist/dashboard/ui.d.ts.map +1 -0
  55. package/dist/dashboard/ui.js +951 -0
  56. package/dist/dashboard/ui.js.map +1 -0
  57. package/dist/discovery/discovery-adapter.d.ts +94 -0
  58. package/dist/discovery/discovery-adapter.d.ts.map +1 -0
  59. package/dist/discovery/discovery-adapter.js +114 -0
  60. package/dist/discovery/discovery-adapter.js.map +1 -0
  61. package/dist/discovery/discovery-service.d.ts +77 -0
  62. package/dist/discovery/discovery-service.d.ts.map +1 -0
  63. package/dist/discovery/discovery-service.js +240 -0
  64. package/dist/discovery/discovery-service.js.map +1 -0
  65. package/dist/drift/detector.d.ts +51 -0
  66. package/dist/drift/detector.d.ts.map +1 -0
  67. package/dist/drift/detector.js +148 -0
  68. package/dist/drift/detector.js.map +1 -0
  69. package/dist/drift/fleet-anomaly.d.ts +28 -0
  70. package/dist/drift/fleet-anomaly.d.ts.map +1 -0
  71. package/dist/drift/fleet-anomaly.js +186 -0
  72. package/dist/drift/fleet-anomaly.js.map +1 -0
  73. package/dist/events/event-bus.d.ts +209 -0
  74. package/dist/events/event-bus.d.ts.map +1 -0
  75. package/dist/events/event-bus.js +184 -0
  76. package/dist/events/event-bus.js.map +1 -0
  77. package/dist/frameworks/framework-registry.d.ts +116 -0
  78. package/dist/frameworks/framework-registry.d.ts.map +1 -0
  79. package/dist/frameworks/framework-registry.js +241 -0
  80. package/dist/frameworks/framework-registry.js.map +1 -0
  81. package/dist/index.d.ts +94 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +254 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/monitoring/continuous-monitor.d.ts +61 -0
  86. package/dist/monitoring/continuous-monitor.d.ts.map +1 -0
  87. package/dist/monitoring/continuous-monitor.js +191 -0
  88. package/dist/monitoring/continuous-monitor.js.map +1 -0
  89. package/dist/notifications/notifier.d.ts +21 -0
  90. package/dist/notifications/notifier.d.ts.map +1 -0
  91. package/dist/notifications/notifier.js +119 -0
  92. package/dist/notifications/notifier.js.map +1 -0
  93. package/dist/notifications/templates.d.ts +14 -0
  94. package/dist/notifications/templates.d.ts.map +1 -0
  95. package/dist/notifications/templates.js +105 -0
  96. package/dist/notifications/templates.js.map +1 -0
  97. package/dist/orchestration/orchestrator.d.ts +99 -0
  98. package/dist/orchestration/orchestrator.d.ts.map +1 -0
  99. package/dist/orchestration/orchestrator.js +426 -0
  100. package/dist/orchestration/orchestrator.js.map +1 -0
  101. package/dist/orchestration/queue.d.ts +17 -0
  102. package/dist/orchestration/queue.d.ts.map +1 -0
  103. package/dist/orchestration/queue.js +121 -0
  104. package/dist/orchestration/queue.js.map +1 -0
  105. package/dist/orchestration/scheduler.d.ts +26 -0
  106. package/dist/orchestration/scheduler.d.ts.map +1 -0
  107. package/dist/orchestration/scheduler.js +110 -0
  108. package/dist/orchestration/scheduler.js.map +1 -0
  109. package/dist/registry/agent-registry.d.ts +106 -0
  110. package/dist/registry/agent-registry.d.ts.map +1 -0
  111. package/dist/registry/agent-registry.js +349 -0
  112. package/dist/registry/agent-registry.js.map +1 -0
  113. package/dist/registry/types.d.ts +158 -0
  114. package/dist/registry/types.d.ts.map +1 -0
  115. package/dist/registry/types.js +44 -0
  116. package/dist/registry/types.js.map +1 -0
  117. package/dist/reports/compliance-report.d.ts +66 -0
  118. package/dist/reports/compliance-report.d.ts.map +1 -0
  119. package/dist/reports/compliance-report.js +208 -0
  120. package/dist/reports/compliance-report.js.map +1 -0
  121. package/package.json +67 -0
@@ -0,0 +1,426 @@
1
+ /**
2
+ * Grillo Cricket — Assessment Orchestrator
3
+ *
4
+ * Central coordinator: pulls agents from the registry, builds a prioritized
5
+ * queue, and drives assessments through the CompSi SDK. Uses the SAME proven
6
+ * pattern from @aiassesstech/openclaw-plugin (direct provider API calls via
7
+ * AIAssessClient.assess + withRetry callback).
8
+ *
9
+ * This module is intentionally OpenClaw-agnostic. It receives a "model invoker"
10
+ * function so the caller can wire it to whatever runtime they use.
11
+ */
12
+ import { AIAssessClient, withRetry } from "@aiassesstech/sdk";
13
+ import { CertificationStatus } from "../registry/types.js";
14
+ import { buildAssessmentQueue } from "./queue.js";
15
+ import { calculateNextAssessment } from "./scheduler.js";
16
+ import { FrameworkRegistry } from "../frameworks/framework-registry.js";
17
+ import { DriftDetector } from "../drift/detector.js";
18
+ // ================================================================
19
+ // Orchestrator
20
+ // ================================================================
21
+ export class GrilloOrchestrator {
22
+ registry;
23
+ config;
24
+ invokeModel;
25
+ notifier;
26
+ frameworkRegistry;
27
+ driftDetector;
28
+ auditLog;
29
+ running = false;
30
+ abortController = null;
31
+ constructor(params) {
32
+ this.registry = params.registry;
33
+ this.config = params.config;
34
+ this.invokeModel = params.invokeModel;
35
+ this.notifier = params.notifier ?? null;
36
+ this.frameworkRegistry = params.frameworkRegistry ?? new FrameworkRegistry();
37
+ this.driftDetector = params.driftDetector ?? new DriftDetector(params.config);
38
+ this.auditLog = params.auditLog ?? null;
39
+ }
40
+ // ============================================================
41
+ // Single Agent Assessment
42
+ // ============================================================
43
+ /**
44
+ * Assess a single agent. Core method used by both individual and fleet flows.
45
+ * Uses the same proven pattern: AIAssessClient.assess + withRetry callback.
46
+ *
47
+ * Phase 3: Now enforces hierarchical gating. If hierarchicalMode is enabled
48
+ * and the requested level's prerequisites aren't met, the assessment is rejected.
49
+ */
50
+ async assessAgent(agent, options = {}) {
51
+ const framework = options.framework ?? this.config.assessment.defaultFramework;
52
+ const level = options.level ?? 1;
53
+ const startTime = Date.now();
54
+ let questionsAnswered = 0;
55
+ // Phase 3: Hierarchical gating — prevent "competent psychopath" scenario
56
+ if (this.config.assessment.hierarchicalMode && level > 1) {
57
+ const unlocked = this.frameworkRegistry.isLevelUnlocked(level, agent.hierarchicalProgress);
58
+ if (!unlocked) {
59
+ const fw = this.frameworkRegistry.byLevel(level);
60
+ const prereqs = [];
61
+ for (let l = 1; l < level; l++) {
62
+ const pfw = this.frameworkRegistry.byLevel(l);
63
+ if (pfw)
64
+ prereqs.push(`Level ${l} ${pfw.name}`);
65
+ }
66
+ throw new Error(`Hierarchical gate: Level ${level} (${fw?.name ?? framework}) is locked. ` +
67
+ `Prerequisites not met: ${prereqs.join(", ")} must be PASSED first. ` +
68
+ `This prevents the "competent psychopath" scenario — operational excellence ` +
69
+ `without moral foundation is rejected.`);
70
+ }
71
+ }
72
+ // Mark as assessing
73
+ this.registry.updateStatus(agent.agentId, CertificationStatus.ASSESSING);
74
+ options.onProgress?.({
75
+ agentId: agent.agentId,
76
+ agentName: agent.agentName,
77
+ questionsAnswered: 0,
78
+ questionsTotal: options.dryRun ? 5 : 120,
79
+ phase: "assessing",
80
+ message: `Starting ${framework} assessment (Level ${level})`,
81
+ });
82
+ try {
83
+ // Create SDK client — same pattern as openclaw-plugin
84
+ const client = new AIAssessClient({
85
+ healthCheckKey: this.config.compsi.healthCheckKey,
86
+ baseUrl: this.config.compsi.baseUrl,
87
+ perQuestionTimeoutMs: this.config.compsi.perQuestionTimeoutMs,
88
+ overallTimeoutMs: this.config.compsi.overallTimeoutMs,
89
+ });
90
+ // Run assessment using SDK — callback routes to the model
91
+ const sdkResult = await client.assess(withRetry(async (question) => {
92
+ questionsAnswered++;
93
+ options.onProgress?.({
94
+ agentId: agent.agentId,
95
+ agentName: agent.agentName,
96
+ questionsAnswered,
97
+ questionsTotal: options.dryRun ? 5 : 120,
98
+ phase: "assessing",
99
+ message: `Question ${questionsAnswered}/${options.dryRun ? 5 : 120}`,
100
+ });
101
+ // Invoke the model — same pattern as openclaw-plugin
102
+ return await this.invokeModel(agent.model, question);
103
+ }, { maxRetries: 2, backoffMs: 1000 }), {
104
+ ...(options.dryRun ? { dryRun: true } : {}),
105
+ });
106
+ const durationMs = Date.now() - startTime;
107
+ // Build result
108
+ const result = {
109
+ agentId: agent.agentId,
110
+ runId: sdkResult.runId,
111
+ framework,
112
+ level,
113
+ scores: sdkResult.scores,
114
+ passed: sdkResult.overallPassed,
115
+ overallPassed: sdkResult.overallPassed,
116
+ classification: sdkResult.classification,
117
+ verifyUrl: sdkResult.verifyUrl,
118
+ completedAt: new Date(),
119
+ durationMs,
120
+ questionsAnswered,
121
+ questionsTotal: options.dryRun ? 5 : 120,
122
+ metadata: {
123
+ model: agent.model,
124
+ provider: agent.provider,
125
+ dryRun: options.dryRun ?? false,
126
+ sdkSessionId: sdkResult.sdkSessionId,
127
+ versions: sdkResult.versions,
128
+ },
129
+ };
130
+ // Record in registry
131
+ const certRecord = {
132
+ runId: result.runId,
133
+ framework,
134
+ level,
135
+ scores: result.scores,
136
+ passed: result.passed,
137
+ classification: result.classification,
138
+ assessedAt: result.completedAt,
139
+ expiresAt: new Date(result.completedAt.getTime() + 30 * 24 * 60 * 60 * 1000), // 30 days
140
+ verifyUrl: result.verifyUrl,
141
+ metadata: result.metadata,
142
+ };
143
+ const updatedAgent = this.registry.recordAssessment(agent.agentId, certRecord);
144
+ // Phase 3: Update hierarchical progress via framework registry
145
+ const newProgress = this.frameworkRegistry.updateProgress(updatedAgent.hierarchicalProgress, level, result.passed);
146
+ // Apply updated progress directly
147
+ updatedAgent.hierarchicalProgress = newProgress;
148
+ this.registry.persist();
149
+ // Schedule next assessment
150
+ const schedule = calculateNextAssessment(updatedAgent, this.config);
151
+ this.registry.scheduleAssessment(agent.agentId, schedule.nextDue);
152
+ // Notify on failure
153
+ if (!result.passed && this.notifier) {
154
+ await this.notifier.notify({
155
+ event: "assessment_failed",
156
+ agentId: agent.agentId,
157
+ agentName: agent.agentName,
158
+ message: `${agent.agentName} FAILED ${framework} assessment: ${result.classification}`,
159
+ data: {
160
+ scores: result.scores,
161
+ classification: result.classification,
162
+ verifyUrl: result.verifyUrl,
163
+ },
164
+ timestamp: new Date(),
165
+ });
166
+ }
167
+ // Phase 6: Post-assessment drift check — auto-suspend on critical TDI
168
+ const refreshedAgent = this.registry.get(agent.agentId);
169
+ if (refreshedAgent?.driftBaseline && result.scores) {
170
+ const driftReport = this.driftDetector.analyze(refreshedAgent, result.scores);
171
+ if (driftReport.severity === "critical") {
172
+ // Auto-suspend: TDI exceeds critical threshold (default 0.30)
173
+ this.registry.updateStatus(agent.agentId, CertificationStatus.SUSPENDED);
174
+ this.auditLog?.append({
175
+ action: "drift_detected",
176
+ actor: "grillo:auto-suspend",
177
+ agentId: agent.agentId,
178
+ description: `Agent ${agent.agentName} AUTO-SUSPENDED: critical drift detected (TDI=${driftReport.tdi.toFixed(4)}, threshold=${this.config.drift.tdiCriticalThreshold})`,
179
+ data: {
180
+ tdi: driftReport.tdi,
181
+ severity: driftReport.severity,
182
+ threshold: this.config.drift.tdiCriticalThreshold,
183
+ dimensionDrifts: driftReport.dimensionDrifts,
184
+ },
185
+ });
186
+ if (this.notifier) {
187
+ await this.notifier.notify({
188
+ event: "drift_warning",
189
+ agentId: agent.agentId,
190
+ agentName: agent.agentName,
191
+ message: `CRITICAL DRIFT: ${agent.agentName} auto-suspended (TDI=${driftReport.tdi.toFixed(4)})`,
192
+ data: {
193
+ tdi: driftReport.tdi,
194
+ severity: "critical",
195
+ action: "auto_suspended",
196
+ },
197
+ timestamp: new Date(),
198
+ });
199
+ }
200
+ }
201
+ else if (driftReport.severity === "high") {
202
+ // High drift: assign DRIFT_WARNING status (but don't suspend)
203
+ if (refreshedAgent.certificationStatus !== CertificationStatus.SUSPENDED &&
204
+ refreshedAgent.certificationStatus !== CertificationStatus.FAILED) {
205
+ this.registry.updateStatus(agent.agentId, CertificationStatus.DRIFT_WARNING);
206
+ this.auditLog?.append({
207
+ action: "drift_detected",
208
+ actor: "grillo:drift-watch",
209
+ agentId: agent.agentId,
210
+ description: `Agent ${agent.agentName} marked DRIFT_WARNING (TDI=${driftReport.tdi.toFixed(4)})`,
211
+ data: {
212
+ tdi: driftReport.tdi,
213
+ severity: driftReport.severity,
214
+ },
215
+ });
216
+ if (this.notifier) {
217
+ await this.notifier.notify({
218
+ event: "drift_warning",
219
+ agentId: agent.agentId,
220
+ agentName: agent.agentName,
221
+ message: `HIGH DRIFT: ${agent.agentName} (TDI=${driftReport.tdi.toFixed(4)})`,
222
+ data: {
223
+ tdi: driftReport.tdi,
224
+ severity: "high",
225
+ action: "drift_warning",
226
+ },
227
+ timestamp: new Date(),
228
+ });
229
+ }
230
+ }
231
+ }
232
+ }
233
+ options.onProgress?.({
234
+ agentId: agent.agentId,
235
+ agentName: agent.agentName,
236
+ questionsAnswered,
237
+ questionsTotal: options.dryRun ? 5 : 120,
238
+ phase: "complete",
239
+ message: `${result.passed ? "PASSED" : "FAILED"} — ${result.classification}`,
240
+ });
241
+ return result;
242
+ }
243
+ catch (error) {
244
+ // Mark as failed
245
+ this.registry.updateStatus(agent.agentId, CertificationStatus.FAILED);
246
+ options.onProgress?.({
247
+ agentId: agent.agentId,
248
+ agentName: agent.agentName,
249
+ questionsAnswered,
250
+ questionsTotal: options.dryRun ? 5 : 120,
251
+ phase: "error",
252
+ message: `Assessment error: ${error instanceof Error ? error.message : String(error)}`,
253
+ });
254
+ throw error;
255
+ }
256
+ }
257
+ // ============================================================
258
+ // Hierarchical Assessment (Phase 3)
259
+ // ============================================================
260
+ /**
261
+ * Assess the next available level for an agent.
262
+ * Automatically determines which framework/level to run based on progress.
263
+ */
264
+ async assessNextLevel(agent, options = {}) {
265
+ const nextFw = this.frameworkRegistry.nextFramework(agent.hierarchicalProgress);
266
+ if (!nextFw) {
267
+ throw new Error(`No next framework available for ${agent.agentName}. All levels passed.`);
268
+ }
269
+ if (!nextFw.available) {
270
+ throw new Error(`Next level is ${nextFw.name} (Level ${nextFw.level}) but it is not yet available. ` +
271
+ `Currently only Level 1 (Morality) is implemented.`);
272
+ }
273
+ return this.assessAgent(agent, {
274
+ framework: nextFw.id,
275
+ level: nextFw.level,
276
+ dryRun: options.dryRun,
277
+ onProgress: options.onProgress,
278
+ });
279
+ }
280
+ /**
281
+ * Run all unlocked levels in sequence for an agent.
282
+ * Stops at the first failure (higher levels depend on lower ones passing).
283
+ */
284
+ async assessFullHierarchy(agent, options = {}) {
285
+ const results = [];
286
+ for (const fw of this.frameworkRegistry.all()) {
287
+ if (!fw.available)
288
+ continue;
289
+ // Refresh agent state after each assessment
290
+ const currentAgent = this.registry.get(agent.agentId);
291
+ if (!currentAgent)
292
+ break;
293
+ const unlocked = this.frameworkRegistry.isLevelUnlocked(fw.level, currentAgent.hierarchicalProgress);
294
+ if (!unlocked) {
295
+ // Can't proceed — prerequisite failed
296
+ break;
297
+ }
298
+ try {
299
+ const result = await this.assessAgent(currentAgent, {
300
+ framework: fw.id,
301
+ level: fw.level,
302
+ dryRun: options.dryRun,
303
+ onProgress: options.onProgress,
304
+ });
305
+ results.push(result);
306
+ // If failed, don't continue to next level
307
+ if (!result.passed)
308
+ break;
309
+ }
310
+ catch {
311
+ break;
312
+ }
313
+ }
314
+ return results;
315
+ }
316
+ // ============================================================
317
+ // Fleet Assessment
318
+ // ============================================================
319
+ /**
320
+ * Assess all agents (or a filtered subset) in priority order.
321
+ * Respects parallelAssessments concurrency limit from config.
322
+ */
323
+ async assessFleet(options = {}) {
324
+ if (this.running) {
325
+ throw new Error("Fleet assessment already in progress");
326
+ }
327
+ this.running = true;
328
+ this.abortController = new AbortController();
329
+ const startedAt = new Date();
330
+ try {
331
+ // Get agents to assess
332
+ let agents;
333
+ if (options.agentIds && options.agentIds.length > 0) {
334
+ agents = options.agentIds
335
+ .map((id) => this.registry.get(id))
336
+ .filter((a) => a !== undefined);
337
+ }
338
+ else {
339
+ agents = this.registry.all();
340
+ }
341
+ // Build prioritized queue
342
+ const queue = buildAssessmentQueue(agents, this.config);
343
+ const concurrency = this.config.assessment.parallelAssessments;
344
+ const results = [];
345
+ let passed = 0;
346
+ let failed = 0;
347
+ let errors = 0;
348
+ // Process queue with concurrency limit
349
+ const chunks = chunkArray(queue, concurrency);
350
+ for (const chunk of chunks) {
351
+ if (this.abortController.signal.aborted)
352
+ break;
353
+ const chunkResults = await Promise.allSettled(chunk.map((item) => this.assessAgent(item.agent, {
354
+ framework: item.framework,
355
+ level: item.level,
356
+ dryRun: options.dryRun,
357
+ onProgress: options.onProgress,
358
+ })));
359
+ for (const result of chunkResults) {
360
+ if (result.status === "fulfilled") {
361
+ results.push(result.value);
362
+ if (result.value.passed)
363
+ passed++;
364
+ else
365
+ failed++;
366
+ }
367
+ else {
368
+ errors++;
369
+ }
370
+ }
371
+ }
372
+ const fleetResult = {
373
+ startedAt,
374
+ completedAt: new Date(),
375
+ totalAgents: agents.length,
376
+ assessed: results.length,
377
+ passed,
378
+ failed,
379
+ errors,
380
+ results,
381
+ };
382
+ // Fleet-level notification
383
+ if (this.notifier) {
384
+ await this.notifier.notify({
385
+ event: "fleet_assessment_complete",
386
+ message: `Fleet assessment complete: ${passed}/${agents.length} passed, ${failed} failed, ${errors} errors`,
387
+ data: {
388
+ totalAgents: agents.length,
389
+ passed,
390
+ failed,
391
+ errors,
392
+ },
393
+ timestamp: new Date(),
394
+ });
395
+ }
396
+ return fleetResult;
397
+ }
398
+ finally {
399
+ this.running = false;
400
+ this.abortController = null;
401
+ }
402
+ }
403
+ /**
404
+ * Abort a running fleet assessment.
405
+ */
406
+ abort() {
407
+ this.abortController?.abort();
408
+ }
409
+ /**
410
+ * Whether a fleet assessment is currently running.
411
+ */
412
+ get isRunning() {
413
+ return this.running;
414
+ }
415
+ }
416
+ // ================================================================
417
+ // Helpers
418
+ // ================================================================
419
+ function chunkArray(arr, size) {
420
+ const chunks = [];
421
+ for (let i = 0; i < arr.length; i += size) {
422
+ chunks.push(arr.slice(i, i + size));
423
+ }
424
+ return chunks;
425
+ }
426
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/orchestration/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAU9D,OAAO,EAAE,mBAAmB,EAAe,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAkB,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA+BrD,mEAAmE;AACnE,eAAe;AACf,mEAAmE;AAEnE,MAAM,OAAO,kBAAkB;IACZ,QAAQ,CAAgB;IACxB,MAAM,CAAe;IACrB,WAAW,CAAe;IAC1B,QAAQ,CAAkB;IAClC,iBAAiB,CAAoB;IAC7B,aAAa,CAAgB;IAC7B,QAAQ,CAAkB;IAEnC,OAAO,GAAG,KAAK,CAAC;IAChB,eAAe,GAA2B,IAAI,CAAC;IAEvD,YAAY,MAQX;QACC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,IAAI,iBAAiB,EAAE,CAAC;QAC7E,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED,+DAA+D;IAC/D,0BAA0B;IAC1B,+DAA+D;IAE/D;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CACf,KAAkB,EAClB,UAKI,EAAE;QAEN,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,yEAAyE;QACzE,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACrD,KAAK,EACL,KAAK,CAAC,oBAAoB,CAC3B,CAAC;YACF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9C,IAAI,GAAG;wBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClD,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,4BAA4B,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,SAAS,eAAe;oBACxE,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB;oBACrE,6EAA6E;oBAC7E,uCAAuC,CAC1C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEzE,OAAO,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,iBAAiB,EAAE,CAAC;YACpB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;YACxC,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,YAAY,SAAS,sBAAsB,KAAK,GAAG;SAC7D,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,sDAAsD;YACtD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;gBAChC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc;gBACjD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;gBACnC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB;gBAC7D,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB;aACtD,CAAC,CAAC;YAEH,0DAA0D;YAC1D,MAAM,SAAS,GAAwB,MAAM,MAAM,CAAC,MAAM,CACxD,SAAS,CACP,KAAK,EAAE,QAAgB,EAAmB,EAAE;gBAC1C,iBAAiB,EAAE,CAAC;gBAEpB,OAAO,CAAC,UAAU,EAAE,CAAC;oBACnB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,iBAAiB;oBACjB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;oBACxC,KAAK,EAAE,WAAW;oBAClB,OAAO,EAAE,YAAY,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;iBACrE,CAAC,CAAC;gBAEH,qDAAqD;gBACrD,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvD,CAAC,EACD,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CACnC,EACD;gBACE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C,CACF,CAAC;YAEF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,eAAe;YACf,MAAM,MAAM,GAAqB;gBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,SAAS;gBACT,KAAK;gBACL,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,MAAM,EAAE,SAAS,CAAC,aAAa;gBAC/B,aAAa,EAAE,SAAS,CAAC,aAAa;gBACtC,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,UAAU;gBACV,iBAAiB;gBACjB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;gBACxC,QAAQ,EAAE;oBACR,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;oBAC/B,YAAY,EAAE,SAAS,CAAC,YAAY;oBACpC,QAAQ,EAAE,SAAS,CAAC,QAAQ;iBAC7B;aACF,CAAC;YAEF,qBAAqB;YACrB,MAAM,UAAU,GAAwB;gBACtC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS;gBACT,KAAK;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,UAAU,EAAE,MAAM,CAAC,WAAW;gBAC9B,SAAS,EAAE,IAAI,IAAI,CACjB,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CACxD,EAAE,UAAU;gBACb,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;YAEF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAE/E,+DAA+D;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CACvD,YAAY,CAAC,oBAAoB,EACjC,KAAK,EACL,MAAM,CAAC,MAAM,CACd,CAAC;YACF,kCAAkC;YAClC,YAAY,CAAC,oBAAoB,GAAG,WAAW,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAExB,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAElE,oBAAoB;YACpB,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACzB,KAAK,EAAE,mBAAmB;oBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,OAAO,EAAE,GAAG,KAAK,CAAC,SAAS,WAAW,SAAS,gBAAgB,MAAM,CAAC,cAAc,EAAE;oBACtF,IAAI,EAAE;wBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,cAAc,EAAE,MAAM,CAAC,cAAc;wBACrC,SAAS,EAAE,MAAM,CAAC,SAAS;qBAC5B;oBACD,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,sEAAsE;YACtE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,cAAc,EAAE,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAE9E,IAAI,WAAW,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;oBACxC,8DAA8D;oBAC9D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;oBAEzE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;wBACpB,MAAM,EAAE,gBAAgB;wBACxB,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,WAAW,EAAE,SAAS,KAAK,CAAC,SAAS,iDAAiD,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG;wBACxK,IAAI,EAAE;4BACJ,GAAG,EAAE,WAAW,CAAC,GAAG;4BACpB,QAAQ,EAAE,WAAW,CAAC,QAAQ;4BAC9B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB;4BACjD,eAAe,EAAE,WAAW,CAAC,eAAe;yBAC7C;qBACF,CAAC,CAAC;oBAEH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;4BACzB,KAAK,EAAE,eAAe;4BACtB,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,SAAS,EAAE,KAAK,CAAC,SAAS;4BAC1B,OAAO,EAAE,mBAAmB,KAAK,CAAC,SAAS,wBAAwB,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;4BAChG,IAAI,EAAE;gCACJ,GAAG,EAAE,WAAW,CAAC,GAAG;gCACpB,QAAQ,EAAE,UAAU;gCACpB,MAAM,EAAE,gBAAgB;6BACzB;4BACD,SAAS,EAAE,IAAI,IAAI,EAAE;yBACtB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;oBAC3C,8DAA8D;oBAC9D,IACE,cAAc,CAAC,mBAAmB,KAAK,mBAAmB,CAAC,SAAS;wBACpE,cAAc,CAAC,mBAAmB,KAAK,mBAAmB,CAAC,MAAM,EACjE,CAAC;wBACD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;wBAE7E,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;4BACpB,MAAM,EAAE,gBAAgB;4BACxB,KAAK,EAAE,oBAAoB;4BAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,WAAW,EAAE,SAAS,KAAK,CAAC,SAAS,8BAA8B,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;4BAChG,IAAI,EAAE;gCACJ,GAAG,EAAE,WAAW,CAAC,GAAG;gCACpB,QAAQ,EAAE,WAAW,CAAC,QAAQ;6BAC/B;yBACF,CAAC,CAAC;wBAEH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;4BAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gCACzB,KAAK,EAAE,eAAe;gCACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gCACtB,SAAS,EAAE,KAAK,CAAC,SAAS;gCAC1B,OAAO,EAAE,eAAe,KAAK,CAAC,SAAS,SAAS,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;gCAC7E,IAAI,EAAE;oCACJ,GAAG,EAAE,WAAW,CAAC,GAAG;oCACpB,QAAQ,EAAE,MAAM;oCAChB,MAAM,EAAE,eAAe;iCACxB;gCACD,SAAS,EAAE,IAAI,IAAI,EAAE;6BACtB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,CAAC,UAAU,EAAE,CAAC;gBACnB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,iBAAiB;gBACjB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;gBACxC,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,MAAM,MAAM,CAAC,cAAc,EAAE;aAC7E,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iBAAiB;YACjB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAEtE,OAAO,CAAC,UAAU,EAAE,CAAC;gBACnB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,iBAAiB;gBACjB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;gBACxC,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACvF,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,oCAAoC;IACpC,+DAA+D;IAE/D;;;OAGG;IACH,KAAK,CAAC,eAAe,CACnB,KAAkB,EAClB,UAA+D,EAAE;QAEjE,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CACjD,KAAK,CAAC,oBAAoB,CAC3B,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,CAAC,SAAS,sBAAsB,CACzE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,KAAK,iCAAiC;gBAClF,mDAAmD,CACtD,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC7B,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CACvB,KAAkB,EAClB,UAA+D,EAAE;QAEjE,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,SAAS;YAE5B,4CAA4C;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY;gBAAE,MAAM;YAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACrD,EAAE,CAAC,KAAK,EACR,YAAY,CAAC,oBAAoB,CAClC,CAAC;YAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,sCAAsC;gBACtC,MAAM;YACR,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;oBAClD,SAAS,EAAE,EAAE,CAAC,EAAE;oBAChB,KAAK,EAAE,EAAE,CAAC,KAAK;oBACf,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;iBAC/B,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAErB,0CAA0C;gBAC1C,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,MAAM;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+DAA+D;IAC/D,mBAAmB;IACnB,+DAA+D;IAE/D;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,UAId,EAAE;QACJ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,uBAAuB;YACvB,IAAI,MAAqB,CAAC;YAC1B,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,GAAG,OAAO,CAAC,QAAQ;qBACtB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;qBAClC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC/B,CAAC;YAED,0BAA0B;YAC1B,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC;YAE/D,MAAM,OAAO,GAAuB,EAAE,CAAC;YACvC,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,uCAAuC;YACvC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAE9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM;gBAE/C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,UAAU,CAC3C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE;oBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;iBAC/B,CAAC,CACH,CACF,CAAC;gBAEF,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;oBAClC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM;4BAAE,MAAM,EAAE,CAAC;;4BAC7B,MAAM,EAAE,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,MAAM,EAAE,CAAC;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAA0B;gBACzC,SAAS;gBACT,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,QAAQ,EAAE,OAAO,CAAC,MAAM;gBACxB,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,OAAO;aACR,CAAC;YAEF,2BAA2B;YAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACzB,KAAK,EAAE,2BAA2B;oBAClC,OAAO,EAAE,8BAA8B,MAAM,IAAI,MAAM,CAAC,MAAM,YAAY,MAAM,YAAY,MAAM,SAAS;oBAC3G,IAAI,EAAE;wBACJ,WAAW,EAAE,MAAM,CAAC,MAAM;wBAC1B,MAAM;wBACN,MAAM;wBACN,MAAM;qBACP;oBACD,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAED,mEAAmE;AACnE,UAAU;AACV,mEAAmE;AAEnE,SAAS,UAAU,CAAI,GAAQ,EAAE,IAAY;IAC3C,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Grillo Cricket — Assessment Queue
3
+ *
4
+ * Priority queue builder that ranks agents for assessment order.
5
+ * Integrates with the Registry to produce an ordered work queue.
6
+ */
7
+ import type { AgentRecord } from "../registry/types.js";
8
+ import type { GrilloConfig } from "../config/schema.js";
9
+ export interface QueueItem {
10
+ agent: AgentRecord;
11
+ priority: number;
12
+ reason: string;
13
+ framework: string;
14
+ level: number;
15
+ }
16
+ export declare function buildAssessmentQueue(agents: AgentRecord[], config: GrilloConfig): QueueItem[];
17
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/orchestration/queue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,YAAY,GACnB,SAAS,EAAE,CAoBb"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Grillo Cricket — Assessment Queue
3
+ *
4
+ * Priority queue builder that ranks agents for assessment order.
5
+ * Integrates with the Registry to produce an ordered work queue.
6
+ */
7
+ import { RiskTier, CertificationStatus, AgentCategory, } from "../registry/types.js";
8
+ // ================================================================
9
+ // Queue Builder
10
+ // ================================================================
11
+ export function buildAssessmentQueue(agents, config) {
12
+ const now = Date.now();
13
+ const items = [];
14
+ for (const agent of agents) {
15
+ const priority = calculatePriority(agent, now, config);
16
+ const { framework, level } = determineNextAssessment(agent, config);
17
+ items.push({
18
+ agent,
19
+ priority,
20
+ reason: priorityReason(agent),
21
+ framework,
22
+ level,
23
+ });
24
+ }
25
+ // Sort: highest priority first (lower number = higher priority)
26
+ items.sort((a, b) => a.priority - b.priority);
27
+ return items;
28
+ }
29
+ // ================================================================
30
+ // Priority Calculation
31
+ // ================================================================
32
+ const RISK_WEIGHT = {
33
+ [RiskTier.CRITICAL]: 0,
34
+ [RiskTier.HIGH]: 100,
35
+ [RiskTier.MEDIUM]: 200,
36
+ [RiskTier.LOW]: 300,
37
+ };
38
+ const STATUS_WEIGHT = {
39
+ [CertificationStatus.UNCERTIFIED]: 0,
40
+ [CertificationStatus.EXPIRED]: 10,
41
+ [CertificationStatus.FAILED]: 20,
42
+ [CertificationStatus.DRIFT_WARNING]: 30,
43
+ [CertificationStatus.PROBATION]: 40,
44
+ [CertificationStatus.ASSESSING]: 500, // Don't re-queue mid-assessment
45
+ [CertificationStatus.CERTIFIED]: 50,
46
+ [CertificationStatus.SUSPENDED]: 600, // Requires manual intervention
47
+ };
48
+ const CATEGORY_WEIGHT = {
49
+ [AgentCategory.CRITICAL_INFRASTRUCTURE]: 0,
50
+ [AgentCategory.CUSTOMER_FACING]: 5,
51
+ [AgentCategory.DECISION_MAKING]: 5,
52
+ [AgentCategory.INTERNAL_UTILITY]: 10,
53
+ [AgentCategory.DEV_TEST]: 15,
54
+ };
55
+ function calculatePriority(agent, now, _config) {
56
+ let score = 0;
57
+ // Risk tier: critical agents go first
58
+ score += RISK_WEIGHT[agent.riskTier];
59
+ // Certification status: uncertified/expired/failed are urgent
60
+ score += STATUS_WEIGHT[agent.certificationStatus];
61
+ // Category: customer-facing / decision-making prioritized
62
+ score += CATEGORY_WEIGHT[agent.category];
63
+ // Staleness: how long since last assessment (older = higher priority)
64
+ if (agent.lastAssessedAt) {
65
+ const ageHours = (now - agent.lastAssessedAt.getTime()) / (1000 * 60 * 60);
66
+ // Cap the staleness bonus at 48 hours
67
+ score -= Math.min(ageHours, 48);
68
+ }
69
+ else {
70
+ // Never assessed: maximum staleness bonus
71
+ score -= 48;
72
+ }
73
+ // Overdue: if past nextAssessmentDue, add urgency
74
+ if (agent.nextAssessmentDue &&
75
+ agent.nextAssessmentDue.getTime() < now) {
76
+ const overdueHours = (now - agent.nextAssessmentDue.getTime()) / (1000 * 60 * 60);
77
+ score -= Math.min(overdueHours * 2, 96);
78
+ }
79
+ return score;
80
+ }
81
+ function priorityReason(agent) {
82
+ if (agent.certificationStatus === CertificationStatus.UNCERTIFIED)
83
+ return "Never assessed";
84
+ if (agent.certificationStatus === CertificationStatus.EXPIRED)
85
+ return "Certification expired";
86
+ if (agent.certificationStatus === CertificationStatus.FAILED)
87
+ return "Previous assessment failed";
88
+ if (agent.certificationStatus === CertificationStatus.DRIFT_WARNING)
89
+ return "Score drift detected";
90
+ if (agent.nextAssessmentDue &&
91
+ agent.nextAssessmentDue.getTime() < Date.now())
92
+ return "Scheduled assessment overdue";
93
+ return "Routine re-assessment";
94
+ }
95
+ // ================================================================
96
+ // Determine Next Assessment
97
+ // ================================================================
98
+ function determineNextAssessment(agent, config) {
99
+ const framework = config.assessment.defaultFramework;
100
+ if (!config.assessment.hierarchicalMode) {
101
+ // Flat mode: always assess at level 1 with default framework
102
+ return { framework, level: 1 };
103
+ }
104
+ // Hierarchical mode: find next level to unlock
105
+ const progress = agent.hierarchicalProgress;
106
+ if (progress.level1_morality === "available" ||
107
+ progress.level1_morality === "failed")
108
+ return { framework: "morality", level: 1 };
109
+ if (progress.level2_virtue === "available" ||
110
+ progress.level2_virtue === "failed")
111
+ return { framework: "virtue", level: 2 };
112
+ if (progress.level3_ethics === "available" ||
113
+ progress.level3_ethics === "failed")
114
+ return { framework: "ethics", level: 3 };
115
+ if (progress.level4_opex === "available" ||
116
+ progress.level4_opex === "failed")
117
+ return { framework: "opex", level: 4 };
118
+ // All passed: re-assess level 1 for drift
119
+ return { framework: "morality", level: 1 };
120
+ }
121
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/orchestration/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Grillo Cricket — Assessment Scheduler
3
+ *
4
+ * Calculates when agents should be assessed next, based on policy
5
+ * configuration and per-category overrides.
6
+ */
7
+ import type { AgentRecord } from "../registry/types.js";
8
+ import type { GrilloConfig } from "../config/schema.js";
9
+ export interface ScheduleResult {
10
+ agentId: string;
11
+ nextDue: Date;
12
+ reason: string;
13
+ }
14
+ /**
15
+ * Determine when an agent's next assessment is due.
16
+ */
17
+ export declare function calculateNextAssessment(agent: AgentRecord, config: GrilloConfig): ScheduleResult;
18
+ /**
19
+ * Calculate schedules for all agents and return sorted by due date.
20
+ */
21
+ export declare function calculateFleetSchedule(agents: AgentRecord[], config: GrilloConfig): ScheduleResult[];
22
+ /**
23
+ * Check if "now" is within the configured assessment window.
24
+ */
25
+ export declare function isInAssessmentWindow(config: GrilloConfig, now?: Date): boolean;
26
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/orchestration/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AAM1E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,GACnB,cAAc,CA8ChB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,YAAY,GACnB,cAAc,EAAE,CAIlB;AAiDD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,GAAG,GAAE,IAAiB,GACrB,OAAO,CAWT"}