@framers/agentos 0.13.2 → 0.13.4

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 (133) hide show
  1. package/dist/api/AgentOS.d.ts +29 -0
  2. package/dist/api/AgentOS.d.ts.map +1 -1
  3. package/dist/api/AgentOS.js +137 -10
  4. package/dist/api/AgentOS.js.map +1 -1
  5. package/dist/api/runtime/AgentOSOrchestrator.d.ts +7 -0
  6. package/dist/api/runtime/AgentOSOrchestrator.d.ts.map +1 -1
  7. package/dist/api/runtime/AgentOSOrchestrator.js +7 -0
  8. package/dist/api/runtime/AgentOSOrchestrator.js.map +1 -1
  9. package/dist/cognition/emergent/EffectsStore.d.ts +6 -1
  10. package/dist/cognition/emergent/EffectsStore.d.ts.map +1 -1
  11. package/dist/cognition/emergent/EffectsStore.js.map +1 -1
  12. package/dist/cognition/emergent/EmergentCapabilityEngine.d.ts +8 -0
  13. package/dist/cognition/emergent/EmergentCapabilityEngine.d.ts.map +1 -1
  14. package/dist/cognition/emergent/EmergentCapabilityEngine.js +84 -9
  15. package/dist/cognition/emergent/EmergentCapabilityEngine.js.map +1 -1
  16. package/dist/cognition/emergent/EmergentJudge.d.ts.map +1 -1
  17. package/dist/cognition/emergent/EmergentJudge.js +8 -1
  18. package/dist/cognition/emergent/EmergentJudge.js.map +1 -1
  19. package/dist/cognition/emergent/ForgeToolMetaTool.d.ts +2 -1
  20. package/dist/cognition/emergent/ForgeToolMetaTool.d.ts.map +1 -1
  21. package/dist/cognition/emergent/ForgeToolMetaTool.js +27 -4
  22. package/dist/cognition/emergent/ForgeToolMetaTool.js.map +1 -1
  23. package/dist/cognition/emergent/SandboxedToolForge.d.ts +7 -3
  24. package/dist/cognition/emergent/SandboxedToolForge.d.ts.map +1 -1
  25. package/dist/cognition/emergent/SandboxedToolForge.js +21 -8
  26. package/dist/cognition/emergent/SandboxedToolForge.js.map +1 -1
  27. package/dist/cognition/emergent/broker/CapabilityBroker.d.ts +56 -18
  28. package/dist/cognition/emergent/broker/CapabilityBroker.d.ts.map +1 -1
  29. package/dist/cognition/emergent/broker/CapabilityBroker.js +309 -47
  30. package/dist/cognition/emergent/broker/CapabilityBroker.js.map +1 -1
  31. package/dist/cognition/emergent/broker/dry-run.d.ts +39 -0
  32. package/dist/cognition/emergent/broker/dry-run.d.ts.map +1 -0
  33. package/dist/cognition/emergent/broker/dry-run.js +88 -0
  34. package/dist/cognition/emergent/broker/dry-run.js.map +1 -0
  35. package/dist/cognition/emergent/broker/fetch.d.ts +30 -7
  36. package/dist/cognition/emergent/broker/fetch.d.ts.map +1 -1
  37. package/dist/cognition/emergent/broker/fetch.js +69 -9
  38. package/dist/cognition/emergent/broker/fetch.js.map +1 -1
  39. package/dist/cognition/emergent/broker/fs-write.d.ts +73 -0
  40. package/dist/cognition/emergent/broker/fs-write.d.ts.map +1 -0
  41. package/dist/cognition/emergent/broker/fs-write.js +268 -0
  42. package/dist/cognition/emergent/broker/fs-write.js.map +1 -0
  43. package/dist/cognition/emergent/broker/protected.d.ts +19 -0
  44. package/dist/cognition/emergent/broker/protected.d.ts.map +1 -0
  45. package/dist/cognition/emergent/broker/protected.js +89 -0
  46. package/dist/cognition/emergent/broker/protected.js.map +1 -0
  47. package/dist/cognition/emergent/capabilities.d.ts +2 -0
  48. package/dist/cognition/emergent/capabilities.d.ts.map +1 -1
  49. package/dist/cognition/emergent/capabilities.js +12 -2
  50. package/dist/cognition/emergent/capabilities.js.map +1 -1
  51. package/dist/cognition/emergent/ceiling.d.ts +38 -3
  52. package/dist/cognition/emergent/ceiling.d.ts.map +1 -1
  53. package/dist/cognition/emergent/ceiling.js +119 -2
  54. package/dist/cognition/emergent/ceiling.js.map +1 -1
  55. package/dist/cognition/emergent/executor/QuickJSExecutor.d.ts +1 -1
  56. package/dist/cognition/emergent/executor/QuickJSExecutor.d.ts.map +1 -1
  57. package/dist/cognition/emergent/executor/QuickJSExecutor.js +73 -22
  58. package/dist/cognition/emergent/executor/QuickJSExecutor.js.map +1 -1
  59. package/dist/cognition/emergent/executor/guest-prelude.d.ts.map +1 -1
  60. package/dist/cognition/emergent/executor/guest-prelude.js +54 -17
  61. package/dist/cognition/emergent/executor/guest-prelude.js.map +1 -1
  62. package/dist/cognition/emergent/executor/guest-surface.d.ts.map +1 -1
  63. package/dist/cognition/emergent/executor/guest-surface.js +28 -5
  64. package/dist/cognition/emergent/executor/guest-surface.js.map +1 -1
  65. package/dist/cognition/emergent/persisted-source.d.ts.map +1 -1
  66. package/dist/cognition/emergent/persisted-source.js +7 -1
  67. package/dist/cognition/emergent/persisted-source.js.map +1 -1
  68. package/dist/cognition/emergent/types.d.ts +117 -6
  69. package/dist/cognition/emergent/types.d.ts.map +1 -1
  70. package/dist/cognition/emergent/types.js.map +1 -1
  71. package/dist/cognition/substrate/GMI.d.ts.map +1 -1
  72. package/dist/cognition/substrate/GMI.js +6 -0
  73. package/dist/cognition/substrate/GMI.js.map +1 -1
  74. package/dist/cognition/substrate/personas/IPersonaDefinition.d.ts +6 -0
  75. package/dist/cognition/substrate/personas/IPersonaDefinition.d.ts.map +1 -1
  76. package/dist/cognition/substrate/personas/SoulLoader.js.map +1 -1
  77. package/dist/cognition/substrate/personas/hardLimits.d.ts +16 -0
  78. package/dist/cognition/substrate/personas/hardLimits.d.ts.map +1 -0
  79. package/dist/cognition/substrate/personas/hardLimits.js +21 -0
  80. package/dist/cognition/substrate/personas/hardLimits.js.map +1 -0
  81. package/dist/core/conversation/ConversationContext.d.ts +8 -0
  82. package/dist/core/conversation/ConversationContext.d.ts.map +1 -1
  83. package/dist/core/conversation/ConversationContext.js +17 -0
  84. package/dist/core/conversation/ConversationContext.js.map +1 -1
  85. package/dist/core/tools/ITool.d.ts +12 -2
  86. package/dist/core/tools/ITool.d.ts.map +1 -1
  87. package/dist/core/utils/errors.d.ts +2 -0
  88. package/dist/core/utils/errors.d.ts.map +1 -1
  89. package/dist/core/utils/errors.js +3 -0
  90. package/dist/core/utils/errors.js.map +1 -1
  91. package/dist/io/hearing/LiveKitTranscriptionOutput.d.ts +95 -0
  92. package/dist/io/hearing/LiveKitTranscriptionOutput.d.ts.map +1 -0
  93. package/dist/io/hearing/LiveKitTranscriptionOutput.js +108 -0
  94. package/dist/io/hearing/LiveKitTranscriptionOutput.js.map +1 -0
  95. package/dist/io/hearing/livekit.d.ts +15 -0
  96. package/dist/io/hearing/livekit.d.ts.map +1 -0
  97. package/dist/io/hearing/livekit.js +15 -0
  98. package/dist/io/hearing/livekit.js.map +1 -0
  99. package/dist/io/voice-pipeline/browser.d.ts +19 -0
  100. package/dist/io/voice-pipeline/browser.d.ts.map +1 -0
  101. package/dist/io/voice-pipeline/browser.js +20 -0
  102. package/dist/io/voice-pipeline/browser.js.map +1 -0
  103. package/dist/io/voice-pipeline/index.d.ts +1 -0
  104. package/dist/io/voice-pipeline/index.d.ts.map +1 -1
  105. package/dist/io/voice-pipeline/index.js +1 -0
  106. package/dist/io/voice-pipeline/index.js.map +1 -1
  107. package/dist/io/voice-pipeline/transcriptLedger.d.ts +139 -0
  108. package/dist/io/voice-pipeline/transcriptLedger.d.ts.map +1 -0
  109. package/dist/io/voice-pipeline/transcriptLedger.js +192 -0
  110. package/dist/io/voice-pipeline/transcriptLedger.js.map +1 -0
  111. package/dist/io/voice-pipeline/types.d.ts +27 -0
  112. package/dist/io/voice-pipeline/types.d.ts.map +1 -1
  113. package/dist/safety/guardrails/IGuardrailService.d.ts +11 -0
  114. package/dist/safety/guardrails/IGuardrailService.d.ts.map +1 -1
  115. package/dist/safety/guardrails/ParallelGuardrailDispatcher.d.ts.map +1 -1
  116. package/dist/safety/guardrails/ParallelGuardrailDispatcher.js +206 -80
  117. package/dist/safety/guardrails/ParallelGuardrailDispatcher.js.map +1 -1
  118. package/dist/safety/guardrails/builtin/PhraseListGuardrail.d.ts +109 -0
  119. package/dist/safety/guardrails/builtin/PhraseListGuardrail.d.ts.map +1 -0
  120. package/dist/safety/guardrails/builtin/PhraseListGuardrail.js +180 -0
  121. package/dist/safety/guardrails/builtin/PhraseListGuardrail.js.map +1 -0
  122. package/dist/safety/guardrails/guardrailDispatcher.d.ts +20 -0
  123. package/dist/safety/guardrails/guardrailDispatcher.d.ts.map +1 -1
  124. package/dist/safety/guardrails/guardrailDispatcher.js.map +1 -1
  125. package/dist/safety/guardrails/index.d.ts +3 -1
  126. package/dist/safety/guardrails/index.d.ts.map +1 -1
  127. package/dist/safety/guardrails/index.js +4 -0
  128. package/dist/safety/guardrails/index.js.map +1 -1
  129. package/dist/safety/guardrails/requiredGuardrails.d.ts +34 -0
  130. package/dist/safety/guardrails/requiredGuardrails.d.ts.map +1 -0
  131. package/dist/safety/guardrails/requiredGuardrails.js +68 -0
  132. package/dist/safety/guardrails/requiredGuardrails.js.map +1 -0
  133. package/package.json +11 -1
@@ -1,4 +1,4 @@
1
- import { AgentOSResponseChunkType, } from '../../api/types/AgentOSResponse.js';
1
+ import { AgentOSResponseChunkType, isActionableToolCallRequestChunk, } from '../../api/types/AgentOSResponse.js';
2
2
  import { GuardrailAction, } from './IGuardrailService.js';
3
3
  import { serializeEvaluation, withGuardrailMetadata, createGuardrailBlockedStream, hasEvaluateOutput, } from './guardrailDispatcher.js';
4
4
  // ---------------------------------------------------------------------------
@@ -320,6 +320,103 @@ export class ParallelGuardrailDispatcher {
320
320
  // also carries the same sources. Track them here so per-chunk
321
321
  // evaluateOutput calls see the live state, not just the initial option.
322
322
  let currentRagSources = options.ragSources;
323
+ // -- Hold mode: the reply's text deltas wait for the final verdict ----
324
+ // With `holdUntilFinal`, no TEXT_DELTA reaches the caller before the
325
+ // final guards have passed the whole reply: the deltas are buffered and
326
+ // flushed only when the final chunk is allowed (or flagged). A block or a
327
+ // sanitize drops them, since they carry the text the guards refused.
328
+ const hold = options.holdUntilFinal === true;
329
+ let held = [];
330
+ const notify = async (verdict) => {
331
+ if (!options.onVerdict)
332
+ return;
333
+ try {
334
+ await options.onVerdict(verdict);
335
+ }
336
+ catch (error) {
337
+ console.warn('[AgentOS][Guardrails] onVerdict threw; the verdict stands.', error);
338
+ }
339
+ };
340
+ /**
341
+ * The final guards over one final chunk: Phase 1 sanitizers in order,
342
+ * then Phase 2 classifiers in parallel. Returns the first BLOCK, or the
343
+ * chunk as the sanitizers left it with every evaluation attached.
344
+ */
345
+ const evaluateFinal = async (chunkIn) => {
346
+ const outputEvaluations = [];
347
+ let workingChunk = chunkIn;
348
+ let sanitized = false;
349
+ // Phase 1: sequential final sanitizers
350
+ for (const svc of finalSanitizers) {
351
+ if (!svc.evaluateOutput) {
352
+ continue;
353
+ }
354
+ const timeoutMs = svc.config?.timeoutMs;
355
+ const raw = await callWithTimeout(() => svc.evaluateOutput({ context, chunk: workingChunk, ragSources: currentRagSources }), timeoutMs, svc.config?.failClosed);
356
+ if (!raw) {
357
+ continue;
358
+ }
359
+ const evaluation = stampGuardrailId(raw, svc);
360
+ outputEvaluations.push(evaluation);
361
+ // BLOCK terminates the stream
362
+ if (evaluation.action === GuardrailAction.BLOCK) {
363
+ return { outcome: 'block', evaluation };
364
+ }
365
+ // SANITIZE: modify every text field of the final response, or the textDelta
366
+ if (evaluation.action === GuardrailAction.SANITIZE && evaluation.modifiedText !== undefined) {
367
+ sanitized = true;
368
+ if (workingChunk.type === AgentOSResponseChunkType.FINAL_RESPONSE) {
369
+ workingChunk = {
370
+ ...workingChunk,
371
+ finalResponseText: evaluation.modifiedText,
372
+ finalResponseTextPlain: evaluation.modifiedText,
373
+ };
374
+ }
375
+ else {
376
+ workingChunk = {
377
+ ...workingChunk,
378
+ textDelta: evaluation.modifiedText,
379
+ };
380
+ }
381
+ }
382
+ }
383
+ // Phase 2: parallel final classifiers
384
+ if (finalParallel.length > 0) {
385
+ const tasks = finalParallel.map(({ svc, registrationIndex }) => {
386
+ if (!svc.evaluateOutput) {
387
+ return Promise.resolve({ evaluation: null, registrationIndex, svc });
388
+ }
389
+ const timeoutMs = svc.config?.timeoutMs;
390
+ return callWithTimeout(() => svc.evaluateOutput({ context, chunk: workingChunk, ragSources: currentRagSources }), timeoutMs, svc.config?.failClosed).then((evaluation) => ({ evaluation, registrationIndex, svc }));
391
+ });
392
+ const results = await Promise.allSettled(tasks);
393
+ for (const result of results) {
394
+ if (result.status === 'rejected') {
395
+ console.warn('[AgentOS][Guardrails] Phase 2 final evaluateOutput rejected.', result.reason);
396
+ continue;
397
+ }
398
+ const { evaluation: rawEvaluation, registrationIndex, svc } = result.value;
399
+ if (!rawEvaluation) {
400
+ continue;
401
+ }
402
+ // Downgrade SANITIZE → FLAG in Phase 2
403
+ const evaluation = stampGuardrailId(downgradePhase2Sanitize(rawEvaluation, registrationIndex), svc);
404
+ outputEvaluations.push(evaluation);
405
+ // BLOCK terminates the stream
406
+ if (evaluation.action === GuardrailAction.BLOCK) {
407
+ return { outcome: 'block', evaluation };
408
+ }
409
+ }
410
+ }
411
+ // Attach output evaluation metadata
412
+ if (outputEvaluations.length > 0) {
413
+ workingChunk = withGuardrailMetadata(workingChunk, {
414
+ output: outputEvaluations.map(serializeEvaluation),
415
+ });
416
+ }
417
+ return { outcome: 'pass', chunk: workingChunk, sanitized, worst: worstAction(outputEvaluations) };
418
+ };
419
+ const finalTextOf = (chunk) => chunk.type === AgentOSResponseChunkType.FINAL_RESPONSE ? (chunk.finalResponseText ?? null) : null;
323
420
  // -- Main stream loop ----------------------------------------------
324
421
  for await (const chunk of stream) {
325
422
  let currentChunk = chunk;
@@ -354,7 +451,7 @@ export class ParallelGuardrailDispatcher {
354
451
  let workingChunk = currentChunk;
355
452
  // Phase 1: sequential streaming sanitizers
356
453
  for (const svc of streamingSanitizers) {
357
- const svcId = svc.id || 'unknown';
454
+ const svcId = svc.id || svc.id || 'unknown';
358
455
  const currentCount = streamingEvaluationCounts.get(svcId) || 0;
359
456
  const maxEvals = svc.config?.maxStreamingEvaluations;
360
457
  // Skip if this service has hit its rate limit
@@ -362,15 +459,18 @@ export class ParallelGuardrailDispatcher {
362
459
  continue;
363
460
  }
364
461
  const timeoutMs = svc.config?.timeoutMs;
365
- const evaluation = await callWithTimeout(() => svc.evaluateOutput({ context, chunk: workingChunk, ragSources: currentRagSources }), timeoutMs, svc.config?.failClosed);
462
+ const raw = await callWithTimeout(() => svc.evaluateOutput({ context, chunk: workingChunk, ragSources: currentRagSources }), timeoutMs, svc.config?.failClosed);
366
463
  streamingEvaluationCounts.set(svcId, currentCount + 1);
367
- if (!evaluation) {
464
+ if (!raw) {
368
465
  continue;
369
466
  }
467
+ const evaluation = stampGuardrailId(raw, svc);
370
468
  outputEvaluations.push(evaluation);
371
469
  // BLOCK terminates the stream immediately
372
470
  if (evaluation.action === GuardrailAction.BLOCK) {
373
- yield* createGuardrailBlockedStream(context, evaluation, options);
471
+ held = [];
472
+ await notify({ streamId: options.streamId, action: GuardrailAction.BLOCK, guardrailId: guardrailIdOf(evaluation), reasonCode: evaluation.reasonCode, finalText: evaluation.replacementText ?? null, originalText: null });
473
+ yield* blockedOutput(context, evaluation, options);
374
474
  return;
375
475
  }
376
476
  // SANITIZE: modify the textDelta for downstream services
@@ -384,17 +484,17 @@ export class ParallelGuardrailDispatcher {
384
484
  // Phase 2: parallel streaming classifiers
385
485
  if (streamingParallel.length > 0) {
386
486
  const tasks = streamingParallel.map(({ svc, registrationIndex }) => {
387
- const svcId = svc.id || `svc-${registrationIndex}`;
487
+ const svcId = svc.id || svc.id || `svc-${registrationIndex}`;
388
488
  const currentCount = streamingEvaluationCounts.get(svcId) || 0;
389
489
  const maxEvals = svc.config?.maxStreamingEvaluations;
390
490
  // Rate-limited services return null immediately
391
491
  if (maxEvals !== undefined && currentCount >= maxEvals) {
392
- return Promise.resolve({ evaluation: null, registrationIndex, svcId });
492
+ return Promise.resolve({ evaluation: null, registrationIndex, svcId, svc });
393
493
  }
394
494
  const timeoutMs = svc.config?.timeoutMs;
395
495
  return callWithTimeout(() => svc.evaluateOutput({ context, chunk: workingChunk, ragSources: currentRagSources }), timeoutMs, svc.config?.failClosed).then((evaluation) => {
396
496
  streamingEvaluationCounts.set(svcId, currentCount + 1);
397
- return { evaluation, registrationIndex, svcId };
497
+ return { evaluation, registrationIndex, svcId, svc };
398
498
  });
399
499
  });
400
500
  const results = await Promise.allSettled(tasks);
@@ -403,16 +503,18 @@ export class ParallelGuardrailDispatcher {
403
503
  console.warn('[AgentOS][Guardrails] Phase 2 streaming evaluateOutput rejected.', result.reason);
404
504
  continue;
405
505
  }
406
- const { evaluation: rawEvaluation, registrationIndex } = result.value;
506
+ const { evaluation: rawEvaluation, registrationIndex, svc } = result.value;
407
507
  if (!rawEvaluation) {
408
508
  continue;
409
509
  }
410
510
  // Downgrade SANITIZE → FLAG in Phase 2
411
- const evaluation = downgradePhase2Sanitize(rawEvaluation, registrationIndex);
511
+ const evaluation = stampGuardrailId(downgradePhase2Sanitize(rawEvaluation, registrationIndex), svc);
412
512
  outputEvaluations.push(evaluation);
413
513
  // BLOCK terminates the stream immediately
414
514
  if (evaluation.action === GuardrailAction.BLOCK) {
415
- yield* createGuardrailBlockedStream(context, evaluation, options);
515
+ held = [];
516
+ await notify({ streamId: options.streamId, action: GuardrailAction.BLOCK, guardrailId: guardrailIdOf(evaluation), reasonCode: evaluation.reasonCode, finalText: evaluation.replacementText ?? null, originalText: null });
517
+ yield* blockedOutput(context, evaluation, options);
416
518
  return;
417
519
  }
418
520
  }
@@ -425,85 +527,109 @@ export class ParallelGuardrailDispatcher {
425
527
  }
426
528
  currentChunk = workingChunk;
427
529
  }
530
+ // In hold mode a text delta waits for the final verdict.
531
+ if (hold && chunk.type === AgentOSResponseChunkType.TEXT_DELTA && !chunk.isFinal) {
532
+ held.push(currentChunk);
533
+ continue;
534
+ }
535
+ // An actionable tool call ends the turn's text for now: in hold mode the
536
+ // text so far is judged as a final reply before the tool call goes out.
537
+ if (hold && isActionableToolCallRequestChunk(chunk) && held.length > 0) {
538
+ const text = held.map((h) => String(h.textDelta ?? '')).join('');
539
+ const synthetic = {
540
+ type: AgentOSResponseChunkType.FINAL_RESPONSE,
541
+ streamId: chunk.streamId,
542
+ gmiInstanceId: chunk.gmiInstanceId,
543
+ personaId: chunk.personaId,
544
+ isFinal: true,
545
+ timestamp: chunk.timestamp,
546
+ finalResponseText: text,
547
+ finalResponseTextPlain: text,
548
+ };
549
+ const verdict = await evaluateFinal(synthetic);
550
+ if (verdict.outcome === 'block') {
551
+ held = [];
552
+ await notify({ streamId: options.streamId, action: GuardrailAction.BLOCK, guardrailId: guardrailIdOf(verdict.evaluation), reasonCode: verdict.evaluation.reasonCode, finalText: verdict.evaluation.replacementText ?? null, originalText: text });
553
+ yield* blockedOutput(context, verdict.evaluation, options);
554
+ return;
555
+ }
556
+ if (verdict.sanitized) {
557
+ held = [{ ...held[0], textDelta: finalTextOf(verdict.chunk) ?? '' }];
558
+ }
559
+ for (const h of held)
560
+ yield h;
561
+ held = [];
562
+ yield currentChunk;
563
+ continue;
564
+ }
428
565
  // ---------------------------------------------------------------
429
566
  // isFinal chunks: all guardrails participate
430
567
  // ---------------------------------------------------------------
431
568
  if (chunk.isFinal &&
432
569
  (finalSanitizers.length > 0 || finalParallel.length > 0)) {
433
- const outputEvaluations = [];
434
- let workingChunk = currentChunk;
435
- // Phase 1: sequential final sanitizers
436
- for (const svc of finalSanitizers) {
437
- if (!svc.evaluateOutput) {
438
- continue;
439
- }
440
- const timeoutMs = svc.config?.timeoutMs;
441
- const evaluation = await callWithTimeout(() => svc.evaluateOutput({ context, chunk: workingChunk, ragSources: currentRagSources }), timeoutMs, svc.config?.failClosed);
442
- if (!evaluation) {
443
- continue;
444
- }
445
- outputEvaluations.push(evaluation);
446
- // BLOCK terminates the stream
447
- if (evaluation.action === GuardrailAction.BLOCK) {
448
- yield* createGuardrailBlockedStream(context, evaluation, options);
449
- return;
450
- }
451
- // SANITIZE: modify finalResponseText or textDelta
452
- if (evaluation.action === GuardrailAction.SANITIZE &&
453
- evaluation.modifiedText !== undefined) {
454
- if (workingChunk.type === AgentOSResponseChunkType.FINAL_RESPONSE) {
455
- workingChunk = {
456
- ...workingChunk,
457
- finalResponseText: evaluation.modifiedText,
458
- };
459
- }
460
- else {
461
- workingChunk = {
462
- ...workingChunk,
463
- textDelta: evaluation.modifiedText,
464
- };
465
- }
466
- }
570
+ const originalText = finalTextOf(currentChunk);
571
+ const verdict = await evaluateFinal(currentChunk);
572
+ if (verdict.outcome === 'block') {
573
+ held = [];
574
+ await notify({ streamId: options.streamId, action: GuardrailAction.BLOCK, guardrailId: guardrailIdOf(verdict.evaluation), reasonCode: verdict.evaluation.reasonCode, finalText: verdict.evaluation.replacementText ?? null, originalText });
575
+ yield* blockedOutput(context, verdict.evaluation, options);
576
+ return;
467
577
  }
468
- // Phase 2: parallel final classifiers
469
- if (finalParallel.length > 0) {
470
- const tasks = finalParallel.map(({ svc, registrationIndex }) => {
471
- if (!svc.evaluateOutput) {
472
- return Promise.resolve({ evaluation: null, registrationIndex });
473
- }
474
- const timeoutMs = svc.config?.timeoutMs;
475
- return callWithTimeout(() => svc.evaluateOutput({ context, chunk: workingChunk, ragSources: currentRagSources }), timeoutMs, svc.config?.failClosed).then((evaluation) => ({ evaluation, registrationIndex }));
476
- });
477
- const results = await Promise.allSettled(tasks);
478
- for (const result of results) {
479
- if (result.status === 'rejected') {
480
- console.warn('[AgentOS][Guardrails] Phase 2 final evaluateOutput rejected.', result.reason);
481
- continue;
482
- }
483
- const { evaluation: rawEvaluation, registrationIndex } = result.value;
484
- if (!rawEvaluation) {
485
- continue;
486
- }
487
- // Downgrade SANITIZE → FLAG in Phase 2
488
- const evaluation = downgradePhase2Sanitize(rawEvaluation, registrationIndex);
489
- outputEvaluations.push(evaluation);
490
- // BLOCK terminates the stream
491
- if (evaluation.action === GuardrailAction.BLOCK) {
492
- yield* createGuardrailBlockedStream(context, evaluation, options);
493
- return;
494
- }
495
- }
496
- }
497
- // Attach output evaluation metadata
498
- if (outputEvaluations.length > 0) {
499
- workingChunk = withGuardrailMetadata(workingChunk, {
500
- output: outputEvaluations.map(serializeEvaluation),
501
- });
578
+ // the deltas carry the text a sanitizer changed: only the final chunk's text stands
579
+ if (verdict.sanitized)
580
+ held = [];
581
+ await notify({
582
+ streamId: options.streamId,
583
+ action: verdict.sanitized ? GuardrailAction.SANITIZE : verdict.worst,
584
+ finalText: finalTextOf(verdict.chunk),
585
+ originalText,
586
+ });
587
+ currentChunk = verdict.chunk;
588
+ }
589
+ if (chunk.isFinal && held.length > 0) {
590
+ // held text is sent only beside the final response the guards judged; a turn that ended in an error drops it unjudged
591
+ if (currentChunk.type === AgentOSResponseChunkType.FINAL_RESPONSE) {
592
+ for (const h of held)
593
+ yield h;
502
594
  }
503
- currentChunk = workingChunk;
595
+ held = [];
504
596
  }
505
597
  yield currentChunk;
506
598
  }
599
+ // A stream that ended without a final chunk leaves its held text unjudged; it is dropped, never sent.
600
+ }
601
+ }
602
+ /** The id of the guard that produced an evaluation, when it had one. */
603
+ function guardrailIdOf(evaluation) {
604
+ const id = evaluation.metadata?.guardrailId;
605
+ return typeof id === 'string' ? id : undefined;
606
+ }
607
+ /** The evaluation with its guard's id in `metadata.guardrailId`, when the guard has an id. */
608
+ function stampGuardrailId(evaluation, svc) {
609
+ if (!svc.id)
610
+ return evaluation;
611
+ return { ...evaluation, metadata: { ...(evaluation.metadata ?? {}), guardrailId: svc.id } };
612
+ }
613
+ /**
614
+ * What the caller receives in place of a blocked reply: the guard's fixed reply as a final response that records the
615
+ * block, when the guard gave one; otherwise the error chunk.
616
+ */
617
+ async function* blockedOutput(context, evaluation, options) {
618
+ if (typeof evaluation.replacementText === 'string' && evaluation.replacementText.length > 0) {
619
+ const replacement = {
620
+ type: AgentOSResponseChunkType.FINAL_RESPONSE,
621
+ streamId: options.streamId,
622
+ gmiInstanceId: 'guardrail',
623
+ personaId: options.personaId ?? context.personaId ?? 'unknown_persona',
624
+ isFinal: true,
625
+ timestamp: new Date().toISOString(),
626
+ finalResponseText: evaluation.replacementText,
627
+ finalResponseTextPlain: evaluation.replacementText,
628
+ metadata: { guardrail: { output: [serializeEvaluation(evaluation)] } },
629
+ };
630
+ yield replacement;
631
+ return;
507
632
  }
633
+ yield* createGuardrailBlockedStream(context, evaluation, options);
508
634
  }
509
635
  //# sourceMappingURL=ParallelGuardrailDispatcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelGuardrailDispatcher.js","sourceRoot":"","sources":["../../../src/safety/guardrails/ParallelGuardrailDispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParallelGuardrailDispatcher.js","sourceRoot":"","sources":["../../../src/safety/guardrails/ParallelGuardrailDispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @module guardrails/builtin/PhraseListGuardrail
3
+ *
4
+ * A guard over a reviewed list of phrases. Each entry blocks on a match, or asks a judge whether the match, read in
5
+ * its context, crosses the rule. A blocked reply can be answered with a fixed replacement per rule, so a product's
6
+ * safety templates reach the person in place of the model's words.
7
+ *
8
+ * The text is normalised before matching (NFKC, case folded, zero-width characters and combining marks removed,
9
+ * common Cyrillic and Greek look-alikes mapped to Latin letters, curly quotes straightened, whitespace collapsed), so
10
+ * a phrase cannot slip past by a lookalike letter or an invisible joiner.
11
+ *
12
+ * The guard fails closed: a judge that throws, answers nothing usable, or answers with too little confidence blocks.
13
+ */
14
+ import type { ExtensionPack } from '../../../extensions/manifest';
15
+ import type { FallbackProviderEntry } from '../../../api/generateText';
16
+ import { type JudgeLlmConfig } from '../../../core/llm/providers/judge-config';
17
+ import { type GuardrailConfig, type GuardrailContext, type GuardrailEvaluationResult, type GuardrailInputPayload, type GuardrailOutputPayload, type IGuardrailService } from '../IGuardrailService';
18
+ export interface PhraseEntry {
19
+ phrase: string;
20
+ /**
21
+ * `word`: the phrase between word boundaries; `substring`: anywhere; `regex`: the phrase is a regular expression.
22
+ * Every entry runs over the normalised text (lower case, marks and zero-width characters removed, look-alike
23
+ * letters mapped to Latin, quotes straightened): a word or substring phrase is normalised the same way before it is
24
+ * compiled, while a regex source is compiled as written, so write a regex in that normalised form.
25
+ */
26
+ match: 'word' | 'substring' | 'regex';
27
+ /** `block`: a match blocks; `judge`: the judge decides whether the match, in context, crosses the rule. */
28
+ onMatch: 'block' | 'judge';
29
+ /** The rule the entry belongs to: the block's `reasonCode` and the key of its replacement. */
30
+ ruleId?: string;
31
+ }
32
+ export interface PhraseListSnapshot {
33
+ version: string;
34
+ reviewedAt: string;
35
+ reviewedBy: string;
36
+ entries: PhraseEntry[];
37
+ }
38
+ export interface PhraseListSource {
39
+ load(): Promise<PhraseListSnapshot>;
40
+ }
41
+ export interface PhraseJudgeVerdict {
42
+ block: boolean;
43
+ confidence: number;
44
+ reason?: string;
45
+ }
46
+ export interface PhraseJudge {
47
+ judge(text: string, matched: readonly PhraseEntry[], context: GuardrailContext): Promise<PhraseJudgeVerdict>;
48
+ }
49
+ export interface PhraseListGuardrailOptions {
50
+ id: string;
51
+ source: PhraseListSource;
52
+ /** Required when any entry is `judge`. */
53
+ judge?: PhraseJudge;
54
+ /** A judge's block counts only at or above this confidence; a lower one blocks all the same (fail closed). Default 0.7. */
55
+ judgeThreshold?: number;
56
+ /** The stages the guard evaluates. Default both. */
57
+ stages?: Array<'input' | 'output'>;
58
+ /** The reply a block is answered with when no rule's own replacement applies. */
59
+ replacementText?: string;
60
+ /** The reply for a rule's block. */
61
+ replacementFor?(ruleId: string): string | undefined;
62
+ /** The deadline for one evaluation, judge included. Default 8 seconds. */
63
+ timeoutMs?: number;
64
+ /** Replaces the built-in normalisation. */
65
+ normalize?(text: string): string;
66
+ }
67
+ /** The built-in normalisation, applied alike to the list and to every text judged. */
68
+ export declare function normalizePhraseText(text: string): string;
69
+ /** A list held in code or built from the product's own files. */
70
+ export declare class StaticPhraseListSource implements PhraseListSource {
71
+ private readonly snapshot;
72
+ constructor(snapshot: PhraseListSnapshot);
73
+ load(): Promise<PhraseListSnapshot>;
74
+ }
75
+ export declare class PhraseListGuardrail implements IGuardrailService {
76
+ private readonly opts;
77
+ readonly id: string;
78
+ readonly config: GuardrailConfig;
79
+ private compiled;
80
+ private loaded;
81
+ private readonly normalize;
82
+ private readonly stages;
83
+ private constructor();
84
+ /** Loads the list and compiles it. Refuses a list that does not load, is empty, or has judge entries and no judge. */
85
+ static create(opts: PhraseListGuardrailOptions): Promise<PhraseListGuardrail>;
86
+ /** The list in force: its version and when and by whom it was reviewed. */
87
+ get snapshot(): PhraseListSnapshot | null;
88
+ /**
89
+ * Loads the list again and swaps it in whole. A list that fails to load or compile leaves the last good one in force
90
+ * (and throws, so the caller hears of it).
91
+ */
92
+ reload(): Promise<void>;
93
+ evaluateInput({ input, context }: GuardrailInputPayload): Promise<GuardrailEvaluationResult | null>;
94
+ evaluateOutput({ chunk, context }: GuardrailOutputPayload): Promise<GuardrailEvaluationResult | null>;
95
+ private block;
96
+ private evaluateText;
97
+ }
98
+ /** A judge on a language model: asked whether the matched phrases, read in the text, cross the rule's criteria. */
99
+ export declare function createLlmPhraseJudge(opts: JudgeLlmConfig & {
100
+ criteria: string;
101
+ apiKey?: string;
102
+ baseUrl?: string;
103
+ /** The providers the call may fall back to. Default none: an undefined chain would reach any provider whose key the host holds. */
104
+ fallbackProviders?: FallbackProviderEntry[];
105
+ timeoutMs?: number;
106
+ }): PhraseJudge;
107
+ /** The guard as an extension pack, for `extensionManifest.packs: [{ factory: () => createPhraseListPack(guard) }]`. */
108
+ export declare function createPhraseListPack(guard: PhraseListGuardrail): ExtensionPack;
109
+ //# sourceMappingURL=PhraseListGuardrail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhraseListGuardrail.d.ts","sourceRoot":"","sources":["../../../../src/safety/guardrails/builtin/PhraseListGuardrail.ts"],"names":[],"mappings":"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"}