@modelprofile.com/flexharness 10.24.0 → 11.0.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 (135) hide show
  1. package/dist_ts/00_commitinfo_data.js +2 -2
  2. package/dist_ts/classes.codesandbox.js +1 -1
  3. package/dist_ts/classes.flexharness.admission.d.ts +17 -0
  4. package/dist_ts/classes.flexharness.admission.js +263 -0
  5. package/dist_ts/classes.flexharness.callbacks.d.ts +38 -0
  6. package/dist_ts/classes.flexharness.callbacks.js +313 -0
  7. package/dist_ts/classes.flexharness.compaction.d.ts +25 -0
  8. package/dist_ts/classes.flexharness.compaction.js +87 -0
  9. package/dist_ts/classes.flexharness.configurations.d.ts +11 -0
  10. package/dist_ts/classes.flexharness.configurations.js +137 -0
  11. package/dist_ts/classes.flexharness.core.d.ts +143 -0
  12. package/dist_ts/classes.flexharness.core.js +1538 -0
  13. package/dist_ts/classes.flexharness.d.ts +2 -437
  14. package/dist_ts/classes.flexharness.deletion.d.ts +31 -0
  15. package/dist_ts/classes.flexharness.deletion.js +396 -0
  16. package/dist_ts/classes.flexharness.imports.d.ts +24 -0
  17. package/dist_ts/classes.flexharness.imports.js +345 -0
  18. package/dist_ts/classes.flexharness.js +119 -9776
  19. package/dist_ts/classes.flexharness.lifecycle.d.ts +47 -0
  20. package/dist_ts/classes.flexharness.lifecycle.js +625 -0
  21. package/dist_ts/classes.flexharness.permissions.d.ts +19 -0
  22. package/dist_ts/classes.flexharness.permissions.js +450 -0
  23. package/dist_ts/classes.flexharness.projects.d.ts +55 -0
  24. package/dist_ts/classes.flexharness.projects.js +575 -0
  25. package/dist_ts/classes.flexharness.prompts.d.ts +44 -0
  26. package/dist_ts/classes.flexharness.prompts.js +659 -0
  27. package/dist_ts/classes.flexharness.providers.d.ts +18 -0
  28. package/dist_ts/classes.flexharness.providers.js +267 -0
  29. package/dist_ts/classes.flexharness.results.d.ts +26 -0
  30. package/dist_ts/classes.flexharness.results.js +89 -0
  31. package/dist_ts/classes.flexharness.reversions.d.ts +52 -0
  32. package/dist_ts/classes.flexharness.reversions.js +1306 -0
  33. package/dist_ts/classes.flexharness.runs.d.ts +63 -0
  34. package/dist_ts/classes.flexharness.runs.js +1058 -0
  35. package/dist_ts/classes.flexharness.sessions.d.ts +20 -0
  36. package/dist_ts/classes.flexharness.sessions.js +381 -0
  37. package/dist_ts/classes.flexharness.slashcommands.d.ts +40 -0
  38. package/dist_ts/classes.flexharness.slashcommands.js +458 -0
  39. package/dist_ts/classes.flexharness.subagents.d.ts +31 -0
  40. package/dist_ts/classes.flexharness.subagents.js +690 -0
  41. package/dist_ts/classes.flexharness.tooldispatch.d.ts +53 -0
  42. package/dist_ts/classes.flexharness.tooldispatch.js +418 -0
  43. package/dist_ts/classes.stores.js +1 -1
  44. package/dist_ts/classes.toolcatalog.js +1 -1
  45. package/dist_ts/errors.js +1 -1
  46. package/dist_ts/functions.toolpermissions.js +1 -1
  47. package/dist_ts/interfaces.d.ts +3 -3
  48. package/dist_ts/interfaces.flexharness.d.ts +455 -0
  49. package/dist_ts/interfaces.flexharness.js +2 -0
  50. package/dist_ts/utils.flexharness.d.ts +19 -0
  51. package/dist_ts/utils.flexharness.js +83 -0
  52. package/dist_ts/utils.harnessoptions.js +1 -1
  53. package/dist_ts/utils.json.js +1 -1
  54. package/dist_ts/utils.schemadeclarations.js +1 -1
  55. package/dist_ts/utils.sessionimport.js +1 -1
  56. package/dist_ts/utils.sessionmetrics.d.ts +1 -1
  57. package/dist_ts_chat/classes.chatsession.js +1 -1
  58. package/dist_ts_chat_harness/classes.transcript.js +1 -1
  59. package/dist_ts_chat_harness/functions.intents.js +1 -1
  60. package/dist_ts_chat_harness/functions.mapping.d.ts +1 -1
  61. package/dist_ts_chat_harness/functions.mapping.js +1 -1
  62. package/dist_ts_chat_harness_server/classes.chathub.d.ts +18 -7
  63. package/dist_ts_chat_harness_server/classes.chathub.js +65 -62
  64. package/dist_ts_chat_harness_server/classes.chatsubscription.d.ts +5 -3
  65. package/dist_ts_chat_harness_server/classes.chatsubscription.js +4 -4
  66. package/dist_ts_chat_harness_server/classes.scopedirectory.d.ts +17 -0
  67. package/dist_ts_chat_harness_server/classes.scopedirectory.js +49 -0
  68. package/dist_ts_chat_harness_server/classes.sessionlists.d.ts +3 -5
  69. package/dist_ts_chat_harness_server/classes.sessionlists.js +11 -12
  70. package/dist_ts_chat_harness_server/classes.turngate.d.ts +8 -2
  71. package/dist_ts_chat_harness_server/classes.turngate.js +22 -21
  72. package/dist_ts_chat_harness_server/functions.errorprojector.js +1 -1
  73. package/dist_ts_chat_harness_server/index.d.ts +3 -2
  74. package/dist_ts_chat_harness_server/index.js +3 -2
  75. package/dist_ts_chat_harness_server/interfaces.d.ts +35 -2
  76. package/dist_ts_chat_harness_server/plugins.d.ts +1 -1
  77. package/dist_ts_chat_harness_typedsocket/classes.clienttransport.d.ts +28 -3
  78. package/dist_ts_chat_harness_typedsocket/classes.clienttransport.js +71 -15
  79. package/dist_ts_chat_harness_typedsocket/classes.serverbinding.d.ts +5 -3
  80. package/dist_ts_chat_harness_typedsocket/classes.serverbinding.js +79 -16
  81. package/dist_ts_chat_harness_typedsocket/index.d.ts +2 -2
  82. package/dist_ts_chat_harness_typedsocket/index.js +1 -1
  83. package/dist_ts_chat_harness_typedsocket/interfaces.requests.d.ts +20 -11
  84. package/dist_ts_chat_web/flexchat-input.js +1 -1
  85. package/dist_ts_chat_web/flexchat-message.js +1 -1
  86. package/dist_ts_chat_web/flexchat-window.js +1 -1
  87. package/dist_ts_compaction/smartagent.compaction.js +1 -1
  88. package/dist_ts_kvm/ocr.js +1 -1
  89. package/dist_ts_ocr/classes.imageocr.js +1 -1
  90. package/dist_ts_ocr/ocr.mistral.js +1 -1
  91. package/dist_ts_stores_nosqldb/classes.nosqldbstores.js +1 -1
  92. package/dist_ts_tools/tool.browser.js +1 -1
  93. package/dist_ts_tools/tool.filesystem.js +1 -1
  94. package/dist_ts_tools/tool.shell.js +1 -1
  95. package/dist_ts_tools_node/tool.context.js +1 -1
  96. package/dist_ts_typedrequest/catalog.d.ts +2 -2
  97. package/dist_ts_typedrequest/catalog.js +1 -1
  98. package/package.json +3 -3
  99. package/ts/00_commitinfo_data.ts +1 -1
  100. package/ts/classes.flexharness.admission.ts +331 -0
  101. package/ts/classes.flexharness.callbacks.ts +352 -0
  102. package/ts/classes.flexharness.compaction.ts +167 -0
  103. package/ts/classes.flexharness.configurations.ts +167 -0
  104. package/ts/classes.flexharness.core.ts +1830 -0
  105. package/ts/classes.flexharness.deletion.ts +616 -0
  106. package/ts/classes.flexharness.imports.ts +414 -0
  107. package/ts/classes.flexharness.lifecycle.ts +786 -0
  108. package/ts/classes.flexharness.permissions.ts +535 -0
  109. package/ts/classes.flexharness.projects.ts +1006 -0
  110. package/ts/classes.flexharness.prompts.ts +857 -0
  111. package/ts/classes.flexharness.providers.ts +322 -0
  112. package/ts/classes.flexharness.results.ts +98 -0
  113. package/ts/classes.flexharness.reversions.ts +1684 -0
  114. package/ts/classes.flexharness.runs.ts +1204 -0
  115. package/ts/classes.flexharness.sessions.ts +483 -0
  116. package/ts/classes.flexharness.slashcommands.ts +705 -0
  117. package/ts/classes.flexharness.subagents.ts +860 -0
  118. package/ts/classes.flexharness.tooldispatch.ts +475 -0
  119. package/ts/classes.flexharness.ts +147 -12567
  120. package/ts/interfaces.flexharness.ts +517 -0
  121. package/ts/utils.flexharness.ts +121 -0
  122. package/ts_chat_harness_server/classes.chathub.ts +68 -61
  123. package/ts_chat_harness_server/classes.chatsubscription.ts +7 -5
  124. package/ts_chat_harness_server/classes.scopedirectory.ts +67 -0
  125. package/ts_chat_harness_server/classes.sessionlists.ts +11 -19
  126. package/ts_chat_harness_server/classes.turngate.ts +28 -21
  127. package/ts_chat_harness_server/index.ts +4 -5
  128. package/ts_chat_harness_server/interfaces.ts +35 -2
  129. package/ts_chat_harness_server/plugins.ts +0 -3
  130. package/ts_chat_harness_server/readme.md +6 -4
  131. package/ts_chat_harness_typedsocket/classes.clienttransport.ts +92 -23
  132. package/ts_chat_harness_typedsocket/classes.serverbinding.ts +88 -16
  133. package/ts_chat_harness_typedsocket/index.ts +4 -2
  134. package/ts_chat_harness_typedsocket/interfaces.requests.ts +15 -11
  135. package/ts_chat_harness_typedsocket/readme.md +7 -3
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@modelprofile.com/flexharness',
6
- version: '10.24.0',
6
+ version: '11.0.0',
7
7
  description: 'The FlexHarness toolbox source repository and shared dependency catalog.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSwrQkFBK0I7SUFDckMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSwrQkFBK0I7SUFDckMsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
@@ -540,4 +540,4 @@ class CodeRun {
540
540
  }
541
541
  }
542
542
  }
543
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb2Rlc2FuZGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuY29kZXNhbmRib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBeUJ6RCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDakMsbUdBQW1HO0FBQ25HLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQztBQUkxQixNQUFNLGFBQWEsR0FBRywrQ0FBK0MsQ0FBQztBQUN0RSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFFN0I7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrRmYsQ0FBQztBQUVGLElBQUksYUFBOEQsQ0FBQztBQUVuRTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDVztJQUFyQyxZQUFxQyxNQUFrQztRQUFsQyxXQUFNLEdBQU4sTUFBTSxDQUE0QjtJQUFHLENBQUM7SUFFM0UsaURBQWlEO0lBQzFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTtRQUN0QixhQUFhLEtBQUssT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDM0UsYUFBYSxHQUFHLFNBQVMsQ0FBQztZQUMxQixNQUFNLElBQUksMEJBQTBCLENBQ2xDLDhEQUE4RDtrQkFDMUQsbURBQW1ELEVBQ3ZELEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksZUFBZSxDQUFDLE1BQU0sYUFBYSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVN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
543
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb2Rlc2FuZGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuY29kZXNhbmRib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBeUJ6RCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDakMsbUdBQW1HO0FBQ25HLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQztBQUkxQixNQUFNLGFBQWEsR0FBRywrQ0FBK0MsQ0FBQztBQUN0RSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFFN0I7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrRmYsQ0FBQztBQUVGLElBQUksYUFBOEQsQ0FBQztBQUVuRTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDVyxNQUFNO0lBQTNDLFlBQXFDLE1BQWtDO3NCQUFsQyxNQUFNO0lBQStCLENBQUM7SUFFM0UsaURBQWlEO0lBQzFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTtRQUN0QixhQUFhLEtBQUssT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDM0UsYUFBYSxHQUFHLFNBQVMsQ0FBQztZQUMxQixNQUFNLElBQUksMEJBQTBCLENBQ2xDLDhEQUE4RDtrQkFDMUQsbURBQW1ELEVBQ3ZELEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksZUFBZSxDQUFDLE1BQU0sYUFBYSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEdBQUcsQ0FD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
@@ -0,0 +1,17 @@
1
+ import type { IFlexSession, IFlexSubagentDefinition } from './interfaces.js';
2
+ import type { IStoredSessionState, IStorageState, IActiveRun, IDelegatedRunAdmissionSeed, IDelegatedRunAdmissionOwner, IQueuedPrompt } from './interfaces.flexharness.js';
3
+ import type { FlexHarnessCore } from './classes.flexharness.core.js';
4
+ /** Admission of delegated runs through the delegated run admission provider. */
5
+ export declare class FlexHarnessDelegatedRunAdmission<TScope> {
6
+ private readonly core;
7
+ constructor(core: FlexHarnessCore<TScope>);
8
+ assertDelegatedRunAdmissionOwnership(seed: IDelegatedRunAdmissionSeed, state: IStorageState, childStored: IStoredSessionState, scopeId: string): void;
9
+ acquireDelegatedRunAdmission(queued: IQueuedPrompt, run: IActiveRun): Promise<void>;
10
+ private normalizeDelegatedRunAdmissionLease;
11
+ private requestDelegatedRunAdmissionClose;
12
+ private startDelegatedRunAdmissionCloseAttempt;
13
+ closeRunDelegatedRunAdmission(run: IActiveRun, awaitSettlement?: boolean): Promise<void>;
14
+ createDelegatedRunAdmissionSeed(run: IActiveRun, child: IStoredSessionState, definition: Readonly<IFlexSubagentDefinition>, toolCallId: string): IDelegatedRunAdmissionSeed;
15
+ delegatedRunAdmissionOwnersForGeneration(state: IStorageState, session: Readonly<Pick<IFlexSession, 'sessionId' | 'sessionGenerationId' | 'sessionGenerationSequence'>>): IDelegatedRunAdmissionOwner[];
16
+ settleDelegatedRunAdmissionOwners(owners: readonly IDelegatedRunAdmissionOwner[]): Promise<Error[]>;
17
+ }
@@ -0,0 +1,263 @@
1
+ import { FlexHarnessAbortError, FlexHarnessValidationError } from './errors.js';
2
+ import { requireSessionGeneration } from './utils.flexharness.js';
3
+ /** Admission of delegated runs through the delegated run admission provider. */
4
+ export class FlexHarnessDelegatedRunAdmission {
5
+ core;
6
+ constructor(core) {
7
+ this.core = core;
8
+ }
9
+ assertDelegatedRunAdmissionOwnership(seed, state, childStored, scopeId) {
10
+ const child = childStored.session;
11
+ const parentRun = seed.parentRun;
12
+ const parent = seed.parentStored.session;
13
+ const parentPartId = parentRun.toolPartIds.get(seed.parentToolCallId);
14
+ const parentPart = parentRun.callbackParts.find((part) => part.type === 'tool'
15
+ && part.partId === parentPartId
16
+ && part.toolCallId === seed.parentToolCallId);
17
+ if (seed.state !== state
18
+ || seed.storageKey !== state.storageKey
19
+ || seed.scopeId !== scopeId
20
+ || seed.childStored !== childStored
21
+ || childStored.storageKey !== seed.storageKey
22
+ || state.sessions.get(seed.sessionId) !== childStored
23
+ || state.tombstones.has(seed.sessionId)
24
+ || state.initializingSessions.has(seed.sessionId)
25
+ || child.sessionId !== seed.sessionId
26
+ || child.sessionGenerationId !== seed.sessionGenerationId
27
+ || child.sessionGenerationSequence !== seed.sessionGenerationSequence
28
+ || child.parentSessionId !== seed.parentSessionId
29
+ || child.parentRunId !== seed.originParentRunId
30
+ || child.parentToolCallId !== seed.originParentToolCallId
31
+ || child.agent !== seed.agent
32
+ || child.depth !== seed.depth
33
+ || seed.parentStored !== parentRun.stored
34
+ || seed.parentStored.storageKey !== seed.storageKey
35
+ || parentRun.state !== state
36
+ || parentRun.scopeId !== seed.scopeId
37
+ || parentRun.scope !== seed.scope
38
+ || parentRun.sessionId !== seed.parentSessionId
39
+ || parentRun.queueId !== seed.parentQueueId
40
+ || parentRun.runId !== seed.parentRunId
41
+ || state.sessions.get(seed.parentSessionId) !== seed.parentStored
42
+ || state.tombstones.has(seed.parentSessionId)
43
+ || parent.sessionId !== seed.parentSessionId
44
+ || parent.sessionGenerationId !== seed.parentSessionGenerationId
45
+ || parent.sessionGenerationSequence !== seed.parentSessionGenerationSequence
46
+ || state.activeRuns.get(seed.parentSessionId) !== parentRun
47
+ || parentRun.callbacksClosed
48
+ || parentRun.controller.signal.aborted
49
+ || parentPart?.status !== 'running') {
50
+ throw this.core.trustInternalError(new FlexHarnessAbortError('The delegated prompt lost its exact parent or child ownership.'));
51
+ }
52
+ }
53
+ async acquireDelegatedRunAdmission(queued, run) {
54
+ const seed = queued.delegationSeed;
55
+ const provider = this.core.delegatedRunAdmissionProvider;
56
+ if (!seed || !provider)
57
+ return;
58
+ const context = Object.freeze({
59
+ scopeId: seed.scopeId,
60
+ scope: seed.scope,
61
+ storageKey: seed.storageKey,
62
+ sessionId: seed.sessionId,
63
+ sessionGenerationId: seed.sessionGenerationId,
64
+ sessionGenerationSequence: seed.sessionGenerationSequence,
65
+ queueId: queued.queueId,
66
+ runId: run.runId,
67
+ parentSessionId: seed.parentSessionId,
68
+ parentSessionGenerationId: seed.parentSessionGenerationId,
69
+ parentSessionGenerationSequence: seed.parentSessionGenerationSequence,
70
+ parentQueueId: seed.parentQueueId,
71
+ parentRunId: seed.parentRunId,
72
+ parentToolCallId: seed.parentToolCallId,
73
+ originParentRunId: seed.originParentRunId,
74
+ originParentToolCallId: seed.originParentToolCallId,
75
+ agent: seed.agent,
76
+ depth: seed.depth,
77
+ signal: run.controller.signal,
78
+ });
79
+ const owner = {
80
+ storageState: run.state,
81
+ run,
82
+ context,
83
+ status: 'acquiring',
84
+ acquisitionSettled: false,
85
+ acquisitionDetached: false,
86
+ closeAttemptSequence: 0,
87
+ };
88
+ run.state.delegatedRunAdmissionOwners.add(owner);
89
+ run.delegatedRunAdmissionOwner = owner;
90
+ const acquisition = Promise.resolve()
91
+ .then(() => provider.acquireDelegatedRunAdmission(context))
92
+ .then((lease) => this.normalizeDelegatedRunAdmissionLease(lease))
93
+ .then((lease) => {
94
+ owner.lease = lease;
95
+ owner.acquisitionSettled = true;
96
+ if (owner.status === 'acquiring')
97
+ owner.status = 'acquired';
98
+ if (owner.status === 'close-requested') {
99
+ void this.startDelegatedRunAdmissionCloseAttempt(owner).catch(() => undefined);
100
+ }
101
+ }, (error) => {
102
+ owner.acquisitionError = this.core.projectExternalError(run, error, 'delegatedRunAdmissionProvider');
103
+ owner.acquisitionSettled = true;
104
+ owner.status = 'closed';
105
+ run.state.delegatedRunAdmissionOwners.delete(owner);
106
+ });
107
+ owner.acquisitionCompletion = acquisition;
108
+ let resolveAbort;
109
+ const abort = new Promise((resolve) => {
110
+ resolveAbort = () => resolve('aborted');
111
+ });
112
+ run.controller.signal.addEventListener('abort', resolveAbort, { once: true });
113
+ if (run.controller.signal.aborted)
114
+ resolveAbort();
115
+ try {
116
+ const outcome = await Promise.race([
117
+ acquisition.then(() => 'settled'),
118
+ abort,
119
+ ]);
120
+ if (outcome === 'aborted') {
121
+ owner.acquisitionDetached = true;
122
+ throw run.controller.signal.reason ?? this.core.trustInternalError(new FlexHarnessAbortError());
123
+ }
124
+ if (run.controller.signal.aborted) {
125
+ throw run.controller.signal.reason ?? this.core.trustInternalError(new FlexHarnessAbortError());
126
+ }
127
+ if (owner.acquisitionError)
128
+ throw owner.acquisitionError;
129
+ if (owner.status !== 'acquired' || !owner.lease) {
130
+ throw this.core.trustInternalError(new FlexHarnessAbortError('The delegated run admission was retired during acquisition.'));
131
+ }
132
+ }
133
+ finally {
134
+ run.controller.signal.removeEventListener('abort', resolveAbort);
135
+ }
136
+ }
137
+ normalizeDelegatedRunAdmissionLease(value) {
138
+ if (!value || (typeof value !== 'object' && typeof value !== 'function')) {
139
+ throw new FlexHarnessValidationError('Delegated run admission provider returned an invalid lease.');
140
+ }
141
+ const close = value.close;
142
+ if (typeof close !== 'function') {
143
+ throw new FlexHarnessValidationError('Delegated run admission provider returned an invalid lease.');
144
+ }
145
+ return Object.freeze({ close: () => close.call(value) });
146
+ }
147
+ requestDelegatedRunAdmissionClose(owner) {
148
+ const priorAttemptSequence = owner.closeAttemptSequence;
149
+ const joinedAttempt = owner.closeAttempt;
150
+ if (owner.status === 'closed')
151
+ return Promise.resolve();
152
+ if (owner.status !== 'retrying')
153
+ owner.status = 'close-requested';
154
+ return (async () => {
155
+ await owner.acquisitionCompletion;
156
+ if (owner.status === 'closed')
157
+ return;
158
+ if (joinedAttempt) {
159
+ await joinedAttempt;
160
+ return;
161
+ }
162
+ if (owner.closeAttempt) {
163
+ await owner.closeAttempt;
164
+ return;
165
+ }
166
+ if (owner.closeFailure && owner.closeFailure.sequence > priorAttemptSequence) {
167
+ throw owner.closeFailure.error;
168
+ }
169
+ await this.startDelegatedRunAdmissionCloseAttempt(owner);
170
+ })();
171
+ }
172
+ startDelegatedRunAdmissionCloseAttempt(owner) {
173
+ if (owner.closeAttempt)
174
+ return owner.closeAttempt;
175
+ if (!owner.lease) {
176
+ throw new Error('Acquired delegated run admission has no lease.');
177
+ }
178
+ owner.status = 'retrying';
179
+ owner.closeFailure = undefined;
180
+ const sequence = ++owner.closeAttemptSequence;
181
+ let attempt;
182
+ attempt = Promise.resolve()
183
+ .then(() => owner.lease.close())
184
+ .then(() => {
185
+ owner.status = 'closed';
186
+ delete owner.lease;
187
+ owner.storageState.delegatedRunAdmissionOwners.delete(owner);
188
+ }, (error) => {
189
+ const projected = this.core.projectExternalError(owner.run, error, 'delegatedRunAdmissionProvider');
190
+ owner.closeFailure = { sequence, error: projected };
191
+ owner.status = 'close-requested';
192
+ throw projected;
193
+ })
194
+ .finally(() => {
195
+ if (owner.closeAttempt === attempt)
196
+ owner.closeAttempt = undefined;
197
+ });
198
+ owner.closeAttempt = attempt;
199
+ return attempt;
200
+ }
201
+ async closeRunDelegatedRunAdmission(run, awaitSettlement = true) {
202
+ const owner = run.delegatedRunAdmissionOwner;
203
+ if (!owner)
204
+ return;
205
+ if (!run.delegatedRunAdmissionClose) {
206
+ run.delegatedRunAdmissionClose = this.requestDelegatedRunAdmissionClose(owner);
207
+ void run.delegatedRunAdmissionClose.catch(() => undefined);
208
+ }
209
+ if (awaitSettlement)
210
+ await run.delegatedRunAdmissionClose;
211
+ }
212
+ createDelegatedRunAdmissionSeed(run, child, definition, toolCallId) {
213
+ const childGeneration = requireSessionGeneration(child.session);
214
+ const parentGeneration = requireSessionGeneration(run.stored.session);
215
+ if (!child.session.parentRunId || !child.session.parentToolCallId) {
216
+ throw new FlexHarnessValidationError('Subagent session origin metadata is missing.');
217
+ }
218
+ const seed = Object.freeze({
219
+ state: run.state,
220
+ childStored: child,
221
+ parentRun: run,
222
+ parentStored: run.stored,
223
+ scopeId: run.scopeId,
224
+ scope: run.scope,
225
+ storageKey: run.state.storageKey,
226
+ sessionId: child.session.sessionId,
227
+ ...childGeneration,
228
+ originParentRunId: child.session.parentRunId,
229
+ originParentToolCallId: child.session.parentToolCallId,
230
+ parentSessionId: run.sessionId,
231
+ parentSessionGenerationId: parentGeneration.sessionGenerationId,
232
+ parentSessionGenerationSequence: parentGeneration.sessionGenerationSequence,
233
+ parentQueueId: run.queueId,
234
+ parentRunId: run.runId,
235
+ parentToolCallId: toolCallId,
236
+ ...(run.stored.session.configurationRef === undefined
237
+ ? {}
238
+ : { configurationRef: run.stored.session.configurationRef }),
239
+ agent: definition.name,
240
+ depth: (run.stored.session.depth ?? 0) + 1,
241
+ });
242
+ this.assertDelegatedRunAdmissionOwnership(seed, run.state, child, run.scopeId);
243
+ return seed;
244
+ }
245
+ delegatedRunAdmissionOwnersForGeneration(state, session) {
246
+ return [...state.delegatedRunAdmissionOwners].filter((owner) => owner.storageState === state
247
+ && owner.context.sessionId === session.sessionId
248
+ && owner.context.sessionGenerationId === session.sessionGenerationId
249
+ && owner.context.sessionGenerationSequence === session.sessionGenerationSequence);
250
+ }
251
+ async settleDelegatedRunAdmissionOwners(owners) {
252
+ const results = await Promise.allSettled(owners.map((owner) => this.requestDelegatedRunAdmissionClose(owner)));
253
+ return results.flatMap((result, index) => {
254
+ if (result.status === 'fulfilled')
255
+ return [];
256
+ const error = result.reason instanceof Error
257
+ ? result.reason
258
+ : this.core.projectExternalError(owners[index].run, result.reason, 'delegatedRunAdmissionProvider');
259
+ return [error];
260
+ });
261
+ }
262
+ }
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5mbGV4aGFybmVzcy5hZG1pc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmZsZXhoYXJuZXNzLmFkbWlzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFlaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHbEUsZ0ZBQWdGO0FBQ2hGLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDZCxJQUFJO0lBQWpDLFlBQTZCLElBQTZCO29CQUE3QixJQUFJO0lBQTRCLENBQUM7SUFFdkQsb0NBQW9DLENBQ3pDLElBQWdDLEVBQ2hDLEtBQW9CLEVBQ3BCLFdBQWdDLEVBQ2hDLE9BQWU7UUFFZixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDekMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdEUsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQWdDLEVBQUUsQ0FDckYsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNO2VBQ2pCLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWTtlQUM1QixJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hELElBQ0UsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLO2VBQ2pCLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDLFVBQVU7ZUFDcEMsSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPO2VBQ3hCLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVztlQUNoQyxXQUFXLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxVQUFVO2VBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxXQUFXO2VBQ2xELEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7ZUFDcEMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2VBQzlDLEtBQUssQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLFNBQVM7ZUFDbEMsS0FBSyxDQUFDLG1CQUFtQixLQUFLLElBQUksQ0FBQyxtQkFBbUI7ZUFDdEQsS0FBSyxDQUFDLHlCQUF5QixLQUFLLElBQUksQ0FBQyx5QkFBeUI7ZUFDbEUsS0FBSyxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsZUFBZTtlQUM5QyxLQUFLLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxpQkFBaUI7ZUFDNUMsS0FBSyxDQUFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxzQkFBc0I7ZUFDdEQsS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSztlQUMxQixLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLO2VBQzFCLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxDQUFDLE1BQU07ZUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVU7ZUFDaEQsU0FBUyxDQUFDLEtBQUssS0FBSyxLQUFLO2VBQ3pCLFNBQVMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU87ZUFDbEMsU0FBUyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSztlQUM5QixTQUFTLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxlQUFlO2VBQzVDLFNBQVMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLGFBQWE7ZUFDeEMsU0FBUyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVztlQUNwQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxDQUFDLFlBQVk7ZUFDOUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztlQUMxQyxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxlQUFlO2VBQ3pDLE1BQU0sQ0FBQyxtQkFBbUIsS0FBSyxJQUFJLENBQUMseUJBQXlCO2VBQzdELE1BQU0sQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLENBQUMsK0JBQStCO2VBQ3pFLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxTQUFTO2VBQ3hELFNBQVMsQ0FBQyxlQUFlO2VBQ3pCLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU87ZUFDbkMsVUFBVSxFQUFFLE1BQU0sS0FBSyxTQUFTLEVBQ25DLENBQUM7WUFDRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQ2hDLElBQUkscUJBQXFCLENBQUMsZ0VBQWdFLENBQUMsQ0FDNUYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLDRCQUE0QixDQUN2QyxNQUFxQixFQUNyQixHQUFlO1FBRWYsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDO1FBQ3pELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMvQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQWU7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQzdDLHlCQUF5QixFQUFFLElBQUksQ0FBQyx5QkFBeUI7WUFDekQsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3ZCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztZQUNoQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtZQUN6RCwrQkFBK0IsRUFBRSxJQUFJLENBQUMsK0JBQStCO1lBQ3JFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3pDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDbkQsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNO1NBQzlCLENBQUMsQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFnQztZQUN6QyxZQUFZLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDdkIsR0FBRztZQUNILE9BQU87WUFDUCxNQUFNLEVBQUUsV0FBVztZQUNuQixrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsb0JBQW9CLEVBQUUsQ0FBQztTQUN4QixDQUFDO1FBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsR0FBRyxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFO2FBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDMUQsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEUsSUFBSSxDQUNILENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNwQixLQUFLLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxXQUFXO2dCQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1lBQzVELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN2QyxLQUFLLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakYsQ0FBQztRQUNILENBQUMsRUFDRCxDQUFDLEtBQWMsRUFBRSxFQUFFO1lBQ2pCLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUNyRCxHQUFHLEVBQ0gsS0FBSyxFQUNMLCtCQUErQixDQUNoQyxDQUFDO1lBQ0YsS0FBSyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUNoQyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztZQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQ0YsQ0FBQztRQUNKLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxXQUFXLENBQUM7UUFFMUMsSUFBSSxZQUF5QixDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxDQUFZLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0MsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU87WUFBRSxZQUFZLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBa0IsQ0FBQztnQkFDMUMsS0FBSzthQUNOLENBQUMsQ0FBQztZQUNILElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMxQixLQUFLLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUNqQyxNQUFNLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1lBQ2xHLENBQUM7WUFDRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNsQyxNQUFNLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1lBQ2xHLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxnQkFBZ0I7Z0JBQUUsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUM7WUFDekQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUNoQyxJQUFJLHFCQUFxQixDQUFDLDZEQUE2RCxDQUFDLENBQ3pGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRU8sbUNBQW1DLENBQ3pDLEtBQXNDO1FBRXRDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN6RSxNQUFNLElBQUksMEJBQTBCLENBQ2xDLDZEQUE2RCxDQUM5RCxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksMEJBQTBCLENBQ2xDLDZEQUE2RCxDQUM5RCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8saUNBQWlDLENBQ3ZDLEtBQWtDO1FBRWxDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDO1FBQ3hELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDekMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFFBQVE7WUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4RCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssVUFBVTtZQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLENBQUM7UUFDbEUsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2pCLE1BQU0sS0FBSyxDQUFDLHFCQUFxQixDQUFDO1lBQ2xDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRO2dCQUFFLE9BQU87WUFDdEMsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxhQUFhLENBQUM7Z0JBQ3BCLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDekIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztnQkFDN0UsTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNqQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLENBQUMsc0NBQXNDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLENBQUM7SUFFTyxzQ0FBc0MsQ0FDNUMsS0FBa0M7UUFFbEMsSUFBSSxLQUFLLENBQUMsWUFBWTtZQUFFLE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDMUIsS0FBSyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDOUMsSUFBSSxPQUF1QixDQUFDO1FBQzVCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFO2FBQ3hCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2hDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztZQUN4QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDbkIsS0FBSyxDQUFDLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FDOUMsS0FBSyxDQUFDLEdBQUcsRUFDVCxLQUFLLEVBQ0wsK0JBQStCLENBQ2hDLENBQUM7WUFDRixLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUNwRCxLQUFLLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDO1lBQ2pDLE1BQU0sU0FBUyxDQUFDO1FBQ2xCLENBQUMsQ0FBQzthQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssT0FBTztnQkFBRSxLQUFLLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUNMLEtBQUssQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxLQUFLLENBQUMsNkJBQTZCLENBQ3hDLEdBQWUsRUFDZixlQUFlLEdBQUcsSUFBSTtRQUV0QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsMEJBQTBCLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwQyxHQUFHLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9FLEtBQUssR0FBRyxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxlQUFlO1lBQUUsTUFBTSxHQUFHLENBQUMsMEJBQTBCLENBQUM7SUFDNUQsQ0FBQztJQUVNLCtCQUErQixDQUNwQyxHQUFlLEVBQ2YsS0FBMEIsRUFDMUIsVUFBNkMsRUFDN0MsVUFBa0I7UUFFbEIsTUFBTSxlQUFlLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbEUsTUFBTSxJQUFJLDBCQUEwQixDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDekIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ2hCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFNBQVMsRUFBRSxHQUFHO1lBQ2QsWUFBWSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1lBQ3hCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztZQUNwQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDaEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVTtZQUNoQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2xDLEdBQUcsZUFBZTtZQUNsQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDNUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDdEQsZUFBZSxFQUFFLEdBQUcsQ0FBQyxTQUFTO1lBQzlCLHlCQUF5QixFQUFFLGdCQUFnQixDQUFDLG1CQUFtQjtZQUMvRCwrQkFBK0IsRUFBRSxnQkFBZ0IsQ0FBQyx5QkFBeUI7WUFDM0UsYUFBYSxFQUFFLEdBQUcsQ0FBQyxPQUFPO1lBQzFCLFdBQVcsRUFBRSxHQUFHLENBQUMsS0FBSztZQUN0QixnQkFBZ0IsRUFBRSxVQUFVO1lBQzVCLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO2dCQUNuRCxDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlELEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSTtZQUN0QixLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUMzQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsb0NBQW9DLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSx3Q0FBd0MsQ0FDN0MsS0FBb0IsRUFDcEIsT0FHRTtRQUVGLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQzdELEtBQUssQ0FBQyxZQUFZLEtBQUssS0FBSztlQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsU0FBUztlQUM3QyxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQixLQUFLLE9BQU8sQ0FBQyxtQkFBbUI7ZUFDakUsS0FBSyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsS0FBSyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU0sS0FBSyxDQUFDLGlDQUFpQyxDQUM1QyxNQUE4QztRQUU5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNyRSxDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxXQUFXO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzdDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLFlBQVksS0FBSztnQkFDMUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO2dCQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUM1QixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUNqQixNQUFNLENBQUMsTUFBTSxFQUNiLCtCQUErQixDQUNoQyxDQUFDO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=
@@ -0,0 +1,38 @@
1
+ import * as plugins from './plugins.js';
2
+ import { type TFlexAgentToolCallUpdateEvent, type TFlexAgentToolCallFinishEvent } from './interfaces.js';
3
+ import { type ISessionMetricsOperation } from './utils.sessionmetrics.js';
4
+ import type { IStoredSessionState, IStorageState, IActiveRun } from './interfaces.flexharness.js';
5
+ import type { FlexHarnessCore } from './classes.flexharness.core.js';
6
+ /** The model stream callbacks of a run: text, reasoning, tool, retry and usage events. */
7
+ export declare class FlexHarnessRunCallbacks<TScope> {
8
+ private readonly core;
9
+ constructor(core: FlexHarnessCore<TScope>);
10
+ onTextDelta(state: IStorageState, sessionId: string, delta: string): void;
11
+ onReasoningStart(state: IStorageState, sessionId: string, id: string): void;
12
+ onReasoningDelta(state: IStorageState, sessionId: string, id: string, delta: string): void;
13
+ onReasoningEnd(state: IStorageState, sessionId: string, id: string, text: string): void;
14
+ private textAppendAccounting;
15
+ onToolStart(state: IStorageState, sessionId: string, event: {
16
+ toolCallId: string;
17
+ toolName: string;
18
+ input: unknown;
19
+ parentToolCallId?: string;
20
+ }): void;
21
+ onToolFinish(state: IStorageState, sessionId: string, event: TFlexAgentToolCallFinishEvent): void;
22
+ onToolUpdate(state: IStorageState, sessionId: string, event: TFlexAgentToolCallUpdateEvent): void;
23
+ onRetry(state: IStorageState, sessionId: string, retry: plugins.IAgentRetryEvent): void;
24
+ /**
25
+ * Emits the usage of every model call and adds reported usage to its run. A run executes a
26
+ * transactional generation, and `AgentSession.generate()` settles a transactional generation only
27
+ * after it has reported each of its model calls, also when it is aborted. `executeRun()` awaits
28
+ * that settlement before it builds the terminal, so the run is still active for each of its
29
+ * events: they all reach `run.usage` and precede its `run.finished`. The events bypass the
30
+ * callback limits and a failed callback: their number is bounded by the run's model calls, and
31
+ * the usage of a run that exhausted its callback budget or failed in a callback must not be lost.
32
+ */
33
+ onModelCallUsage(state: IStorageState, stored: IStoredSessionState, event: plugins.TAgentModelCallUsageEvent): void;
34
+ settleMetricsOperation(state: IStorageState, stored: IStoredSessionState, operation: ISessionMetricsOperation): Promise<void>;
35
+ private callbackRun;
36
+ reserveCallbackCapacity(run: IActiveRun, eventCount: number, outputBytes: number, partCount: number): boolean;
37
+ private failCallback;
38
+ }