* Queue metadata to be merged into the next run created for this workspace. * * This bridges the timing gap between policy resolution in AIService (before * any provider call) and lazy run creation in DevTools middleware (on first * provider invocation). Metadata is consumed exactly once
(
workspaceId: string,
metadataId: string,
metadata: Partial<Pick<DevToolsRun, "toolPolicy">>
)
| 113 | * provider invocation). Metadata is consumed exactly once by createRun. |
| 114 | */ |
| 115 | setPendingRunMetadata( |
| 116 | workspaceId: string, |
| 117 | metadataId: string, |
| 118 | metadata: Partial<Pick<DevToolsRun, "toolPolicy">> |
| 119 | ): void { |
| 120 | assert( |
| 121 | workspaceId.trim().length > 0, |
| 122 | "DevToolsService.setPendingRunMetadata requires a workspaceId" |
| 123 | ); |
| 124 | assert( |
| 125 | metadataId.trim().length > 0, |
| 126 | "DevToolsService.setPendingRunMetadata requires a metadataId" |
| 127 | ); |
| 128 | |
| 129 | if (!this.enabled) { |
| 130 | return; |
| 131 | } |
| 132 | |
| 133 | const byWorkspace = |
| 134 | this.pendingRunMetadata.get(workspaceId) ?? new Map<string, PendingRunMetadata>(); |
| 135 | byWorkspace.set(metadataId, metadata); |
| 136 | this.pendingRunMetadata.set(workspaceId, byWorkspace); |
| 137 | } |
| 138 | |
| 139 | /** |
| 140 | * Drop queued run metadata for a workspace. |
no test coverage detected