ryco-cli 0.1.5 → 0.1.7
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.
- package/README.md +50 -2
- package/dist/{AzureDevOpsSourceControlProvider-CdgNqZ5j.cjs → AzureDevOpsSourceControlProvider-5exivY-1.cjs} +2 -2
- package/dist/{AzureDevOpsSourceControlProvider-OsyDSESj.mjs → AzureDevOpsSourceControlProvider-CF5LuCHp.mjs} +3 -3
- package/dist/{BitbucketSourceControlProvider-DBTH98i4.cjs → BitbucketSourceControlProvider-1GWENqcl.cjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-SQ3gKdFs.mjs → BitbucketSourceControlProvider-CKH09tfT.mjs} +3 -3
- package/dist/{BunPTY-B_vjRZN4.mjs → BunPTY-BWhtEA50.mjs} +1 -1
- package/dist/{ClaudeDriver-D9yC2F0b.cjs → ClaudeDriver-BXLdjrht.cjs} +187 -8
- package/dist/{ClaudeDriver-2dTtrsFD.mjs → ClaudeDriver-WwWFTu61.mjs} +188 -9
- package/dist/{CodexDriver-CIDYevQX.mjs → CodexDriver-93-TmCrO.mjs} +16 -8
- package/dist/{CodexDriver-BC2B-qpT.cjs → CodexDriver-BboMT9uk.cjs} +15 -7
- package/dist/{CodexTextGeneration-DNeO-8GE.cjs → CodexTextGeneration-0pRbJji3.cjs} +3 -3
- package/dist/{CodexTextGeneration-CjknB1Xl.mjs → CodexTextGeneration-BU9Myn87.mjs} +4 -4
- package/dist/{CopilotDriver-NPhlLrk2.mjs → CopilotDriver-BASi8pJ0.mjs} +15 -8
- package/dist/{CopilotDriver-BGChrP5c.cjs → CopilotDriver-DCsv-17W.cjs} +14 -7
- package/dist/{CursorDriver-CYxn4_c1.cjs → CursorDriver-BTSiM3A8.cjs} +163 -16
- package/dist/{CursorDriver-BcAVbT8D.mjs → CursorDriver-D5LvIqUk.mjs} +164 -17
- package/dist/{ForgejoSourceControlProvider-D3wP2Cav.cjs → ForgejoSourceControlProvider-BTXRDCGB.cjs} +2 -2
- package/dist/{ForgejoSourceControlProvider-BjCE3730.mjs → ForgejoSourceControlProvider-e-4hvvZ_.mjs} +3 -3
- package/dist/{GitHubSourceControlProvider-DByZ_cnw.mjs → GitHubSourceControlProvider-26IofDAO.mjs} +3 -3
- package/dist/{GitHubSourceControlProvider-DU_7IvMa.cjs → GitHubSourceControlProvider-DWmwkA_y.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-BVJ5IqTS.cjs → GitLabSourceControlProvider-D-YHnxRe.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-BdMCIjXb.mjs → GitLabSourceControlProvider-DePct78W.mjs} +3 -3
- package/dist/{Metrics-BCOc3Ml2.mjs → Metrics-6Xj17Se3.mjs} +94 -2
- package/dist/{Metrics-DNOriWhP.cjs → Metrics-CIW1QH7M.cjs} +128 -0
- package/dist/{NodePTY-_u3kQLvd.mjs → NodePTY-C_cR3Ayy.mjs} +1 -1
- package/dist/{OpenCodeDriver-fwqXoVyH.mjs → OpenCodeDriver-BhvLOmvn.mjs} +336 -43
- package/dist/{OpenCodeDriver-DyR83FcY.cjs → OpenCodeDriver-CVeZ4n9-.cjs} +335 -42
- package/dist/{SourceControlProviderDiscoveryCatalog-DqQVhwYM.cjs → SourceControlProviderDiscoveryCatalog-DeFR5xH3.cjs} +98 -161
- package/dist/{SourceControlProviderDiscoveryCatalog-CQiMyDCC.mjs → SourceControlProviderDiscoveryCatalog-mJV_Xitr.mjs} +100 -145
- package/dist/bin.cjs +30639 -28744
- package/dist/bin.mjs +30602 -28709
- package/dist/client/assets/{AnimatedHeight-CYuVQOpY.js → AnimatedHeight-BSU0lzYs.js} +1 -1
- package/dist/client/assets/AppearanceSettings-D7q0ujGK.js +1 -0
- package/dist/client/assets/BranchToolbar.logic-CZIFSvhd.js +1 -0
- package/dist/client/assets/ChatRightPanel-CWHOIuiQ.js +188 -0
- package/dist/client/assets/ChatThreadRouteView-bA7xWXzc.js +1 -0
- package/dist/client/assets/CommandPaletteDialog-DNYaVOZO.js +1 -0
- package/dist/client/assets/CompositeRoot-B_KEfCUE.js +1 -0
- package/dist/client/assets/ConnectionsSettings-CLZPbx_K.js +1 -0
- package/dist/client/assets/DiagnosticsSettings-DtzPCb6N.js +1 -0
- package/dist/client/assets/DialogHandle-DuHnmWoE.js +1 -0
- package/dist/client/assets/{DialogRoot-DaMwpoP_.js → DialogRoot-BV25qAcA.js} +1 -1
- package/dist/client/assets/DialogTitle-DQsi-RTa.js +1 -0
- package/dist/client/assets/DialogTrigger-D0fA01C6.js +1 -0
- package/dist/client/assets/DialogViewport-CMV_BePU.js +1 -0
- package/dist/client/assets/DraftChatThreadRouteView-BoiKnrii.js +1 -0
- package/dist/client/assets/JetBrainsIcons-BcPxJlMf.js +1 -0
- package/dist/client/assets/KeybindingsSettings-LuI98pdF.js +7 -0
- package/dist/client/assets/McpServersSettings-BFMuWYVV.js +6 -0
- package/dist/client/assets/NoActiveThreadState-C2q_O1kP.js +1 -0
- package/dist/client/assets/OpinionatedPluginsSettings-Bqwct37O.js +1 -0
- package/dist/client/assets/ProjectFavicon-D2imiJ8M.js +1 -0
- package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-BFzNCo3I.js → ProviderUpdateLaunchNotification.logic-CJgA--nK.js} +1 -1
- package/dist/client/assets/ProvidersSettingsPanel-B97vbeu6.js +1 -0
- package/dist/client/assets/{RedactedSensitiveText-UnZZJnFF.js → RedactedSensitiveText-B2GFTyfq.js} +1 -1
- package/dist/client/assets/RootAppShell-C1xTR98P.js +12 -0
- package/dist/client/assets/SettingsDialog-Q0Q8O5oH.js +2 -0
- package/dist/client/assets/SourceControlSettings-KAvoPTNi.js +1 -0
- package/dist/client/assets/StatisticsPanel-BzsQ444K.js +64 -0
- package/dist/client/assets/ThreadStatusIndicators-Cw_jLVQf.js +1 -0
- package/dist/client/assets/{ThreadTerminalDrawer-BXoXAbsR.js → ThreadTerminalDrawer-D1WnSemH.js} +17 -17
- package/dist/client/assets/ThreadWorkspacePanel-L4qCPTOA.js +166 -0
- package/dist/client/assets/{alert-dialog-BJQbh5gX.js → alert-dialog-CNmKa0BK.js} +1 -1
- package/dist/client/assets/chart-column-BWSKYZ_a.js +1 -0
- package/dist/client/assets/{chatThreadActions--n7v5mnB.js → chatThreadActions-TtDsiwDC.js} +1 -1
- package/dist/client/assets/chevron-up-zopJ_99l.js +1 -0
- package/dist/client/assets/{clamp-NYtK3f5s.js → clamp-Ds6WJu8j.js} +1 -1
- package/dist/client/assets/clipboard-copy-BoJGpdmJ.js +1 -0
- package/dist/client/assets/clock-CzUHThzk.js +1 -0
- package/dist/client/assets/commandPaletteStore-KebG835b.js +1 -0
- package/dist/client/assets/composerDraftStore-DpPEQ6BN.js +21 -0
- package/dist/client/assets/desktopUpdateAtoms-BQ0GGEfM.js +2 -0
- package/dist/client/assets/{download-Bi4-cFbc.js → download-CUiRE0N9.js} +1 -1
- package/dist/client/assets/{draft-input-BGSRgOW7.js → draft-input-CwpGDtoT.js} +1 -1
- package/dist/client/assets/editorPreferences-jN7DKbyt.js +1 -0
- package/dist/client/assets/empty-CBuXePtg.js +1 -0
- package/dist/client/assets/{group-Dwm-OV-r.js → group-BpZvxjG5.js} +1 -1
- package/dist/client/assets/{index-BI5yFj9n.js → index-BKzXTNJ_.js} +2 -2
- package/dist/client/assets/{input-BfUa3JUD.js → input-CgDawd6k.js} +1 -1
- package/dist/client/assets/kbd-QYSL97CK.js +1 -0
- package/dist/client/assets/{keybindings--G1bkIjA.js → keybindings-CUTRYI_A.js} +1 -1
- package/dist/client/assets/{keyboard-B87VTfPa.js → keyboard-DFFiI7JY.js} +1 -1
- package/dist/client/assets/keyedQuery-DiOCbGH0.js +0 -0
- package/dist/client/assets/main-BgFGju3e.js +9 -0
- package/dist/client/assets/main-D0UFdwts.css +2 -0
- package/dist/client/assets/palette-BXCL909c.js +1 -0
- package/dist/client/assets/play-DI2LZohg.js +1 -0
- package/dist/client/assets/plus-DzgIfHUF.js +1 -0
- package/dist/client/assets/projectAtoms-DXXpuERK.js +1 -0
- package/dist/client/assets/providerDriverMeta-CRNNp0q3.js +1 -0
- package/dist/client/assets/providerIconUtils-D-DFhem2.js +47 -0
- package/dist/client/assets/radio-group-_PPYg3YY.js +1 -0
- package/dist/client/assets/{refresh-cw-CRxaXR0E.js → refresh-cw-BsQTNBXl.js} +1 -1
- package/dist/client/assets/{resolveAriaLabelledBy-D4fWpj84.js → resolveAriaLabelledBy-CRHo_s16.js} +1 -1
- package/dist/client/assets/rightPanelRouteSearch-CfmZ7osj.js +1 -0
- package/dist/client/assets/scale-DDEJ-tvn.js +1 -0
- package/dist/client/assets/scroll-area-HgsI-ErG.js +1 -0
- package/dist/client/assets/separator-ClnL4mUB.js +1 -0
- package/dist/client/assets/{server-tdx7WxLI.js → server-Bbs3L-6_.js} +1 -1
- package/dist/client/assets/session-logic-CKQkgIwo.js +4 -0
- package/dist/client/assets/settingsDialogStore-SG-W1q0A.js +1 -0
- package/dist/client/assets/settingsLayout-G5xVm-ZT.js +1 -0
- package/dist/client/assets/shallow-Dmd-gez1.js +1 -0
- package/dist/client/assets/sidebar-_u7SGgmC.js +1 -0
- package/dist/client/assets/sidebarStatusText-BTYnwflG.js +1 -0
- package/dist/client/assets/skeleton-CmUvhZGP.js +1 -0
- package/dist/client/assets/storeSelectors-DhJRpdiw.js +1 -0
- package/dist/client/assets/threadSelectionStore-ygmA4DNA.js +1 -0
- package/dist/client/assets/toast-DmA_ziPT.js +1 -0
- package/dist/client/assets/toggle-DGS7tKuj.js +1 -0
- package/dist/client/assets/{toggle-group-DdKXHoT3.js → toggle-group-Dtv1ZUFW.js} +1 -1
- package/dist/client/assets/tokenModePresentation-Dor1DnBx.js +1 -0
- package/dist/client/assets/{trash-2-CZQem-sz.js → trash-2-C2G3VGoV.js} +1 -1
- package/dist/client/assets/triangle-alert-Bpz3xGu5.js +1 -0
- package/dist/client/assets/undo-2-C3rtxuqZ.js +1 -0
- package/dist/client/assets/useHandleNewThread-ypSbzG0P.js +1 -0
- package/dist/client/assets/useLabelableId-Bc7KEnHU.js +1 -0
- package/dist/client/assets/useNavigate-_4hWGSey.js +1 -0
- package/dist/client/assets/useTheme-HcKmBfpF.js +1 -0
- package/dist/client/assets/{vscode-icons-E8NUFd62.js → vscode-icons-DdSTtxYd.js} +1 -1
- package/dist/client/assets/{wrench-DEteICtk.js → wrench-C4jdis40.js} +1 -1
- package/dist/client/assets/x-CG2WU63t.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/{collectUint8StreamText-DuFJyaQh.mjs → collectUint8StreamText-Lv4GGI79.mjs} +488 -16
- package/dist/{collectUint8StreamText-DbCOJom3.cjs → collectUint8StreamText-uNXVRHOf.cjs} +510 -14
- package/dist/{makeManagedServerProvider-C3cQUDkZ.cjs → makeManagedServerProvider-3SD-Q5xh.cjs} +1 -1
- package/dist/{makeManagedServerProvider-wFGZ2-vd.mjs → makeManagedServerProvider-CkPEptun.mjs} +2 -2
- package/package.json +1 -1
- package/dist/client/assets/AppearanceSettings-BBbC8CV5.js +0 -1
- package/dist/client/assets/BranchToolbar.logic-Di2EkKiO.js +0 -1
- package/dist/client/assets/ChatRightPanel-BJ_cVP66.js +0 -188
- package/dist/client/assets/ChatThreadRouteView-DmxD3m2U.js +0 -1
- package/dist/client/assets/CommandPaletteDialog-CAzz6bsT.js +0 -1
- package/dist/client/assets/CompositeRoot-BvXCwn2c.js +0 -1
- package/dist/client/assets/ConnectionsSettings-Cmxm0y2u.js +0 -1
- package/dist/client/assets/DialogHandle-CXNAm3QY.js +0 -1
- package/dist/client/assets/DialogTitle-KXmfgzP3.js +0 -1
- package/dist/client/assets/DialogTrigger-NHyQnW3X.js +0 -1
- package/dist/client/assets/DialogViewport-CL0WR9a5.js +0 -1
- package/dist/client/assets/DraftChatThreadRouteView-C_hqauF6.js +0 -1
- package/dist/client/assets/JetBrainsIcons-BcR8pCma.js +0 -1
- package/dist/client/assets/KeybindingsSettings-m2AteGOl.js +0 -7
- package/dist/client/assets/McpServersSettings-DndIDxgA.js +0 -6
- package/dist/client/assets/NoActiveThreadState-Bt-Wkv-C.js +0 -1
- package/dist/client/assets/OpinionatedPluginsSettings-oDtdE6qx.js +0 -1
- package/dist/client/assets/ProjectFavicon-j9IX_7-B.js +0 -1
- package/dist/client/assets/ProvidersSettingsPanel-CvlIBNVJ.js +0 -1
- package/dist/client/assets/QueryClientProvider-BZxRKpeb.js +0 -1
- package/dist/client/assets/RootAppShell-CyHZ_F5P.js +0 -12
- package/dist/client/assets/SettingsDialog-BYJ8AhQp.js +0 -2
- package/dist/client/assets/SourceControlSettings-7xU6VH6N.js +0 -1
- package/dist/client/assets/ThreadStatusIndicators-M9FWDEex.js +0 -1
- package/dist/client/assets/ThreadWorkspacePanel-D1J63TVD.js +0 -166
- package/dist/client/assets/codexUsageLimits-BJQiZCqn.js +0 -1
- package/dist/client/assets/commandPaletteStore-oFMPKPmp.js +0 -1
- package/dist/client/assets/composerDraftStore-xu3n5gdX.js +0 -21
- package/dist/client/assets/desktopUpdateReactQuery-YSCkifKp.js +0 -2
- package/dist/client/assets/empty-BTxheW4B.js +0 -1
- package/dist/client/assets/environmentApi-BFHi_M02.js +0 -1
- package/dist/client/assets/folder-open-DJmHEPv9.js +0 -1
- package/dist/client/assets/kbd-Dd57M8OY.js +0 -1
- package/dist/client/assets/main-BQf5U-fz.js +0 -9
- package/dist/client/assets/main-DrwkwNo9.css +0 -2
- package/dist/client/assets/mutation-DJZgOJRu.js +0 -1
- package/dist/client/assets/plus-B10j9MbZ.js +0 -1
- package/dist/client/assets/providerDriverMeta-B6xuq7ij.js +0 -1
- package/dist/client/assets/providerIconUtils-Ch6hejVW.js +0 -47
- package/dist/client/assets/rightPanelRouteSearch-CTMFCS6R.js +0 -1
- package/dist/client/assets/scroll-area-BgFq7GRd.js +0 -1
- package/dist/client/assets/separator-CB3Ctlvi.js +0 -1
- package/dist/client/assets/session-logic-CaiGe4hy.js +0 -4
- package/dist/client/assets/settingsDialogStore-9vo22xKp.js +0 -1
- package/dist/client/assets/settingsLayout-B5o13iGO.js +0 -1
- package/dist/client/assets/sidebar-Bbdql7Af.js +0 -1
- package/dist/client/assets/skeleton-C8OZcsPq.js +0 -1
- package/dist/client/assets/storeSelectors-DBRyhCGm.js +0 -1
- package/dist/client/assets/threadRoutes-CfldSp4X.js +0 -1
- package/dist/client/assets/threadSelectionStore-BggKwzmQ.js +0 -1
- package/dist/client/assets/toast-DE-WwLMa.js +0 -1
- package/dist/client/assets/toggle-BFMa0a0Y.js +0 -1
- package/dist/client/assets/useHandleNewThread-DOPZAFqE.js +0 -1
- package/dist/client/assets/useLabelableId-BzWaBebJ.js +0 -1
- package/dist/client/assets/useNavigate-B1qgM5mt.js +0 -1
- package/dist/client/assets/useTheme-C7Ji7x06.js +0 -1
- package/dist/client/assets/x-b9324xm-.js +0 -1
- package/dist/{NodeSqliteClient-BXy61fAd.mjs → NodeSqliteClient-A1TEgwj_.mjs} +1 -1
- package/dist/{NodeSqliteClient-homCO8-6.cjs → NodeSqliteClient-B5aDHbNc.cjs} +2 -2
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
const require_chunk = require("./chunk-jM1PLTSZ.cjs");
|
|
4
|
-
const require_collectUint8StreamText = require("./collectUint8StreamText-
|
|
5
|
-
const require_Metrics = require("./Metrics-
|
|
4
|
+
const require_collectUint8StreamText = require("./collectUint8StreamText-uNXVRHOf.cjs");
|
|
5
|
+
const require_Metrics = require("./Metrics-CIW1QH7M.cjs");
|
|
6
6
|
const require_bin = require("./bin.cjs");
|
|
7
|
-
const require_makeManagedServerProvider = require("./makeManagedServerProvider-
|
|
7
|
+
const require_makeManagedServerProvider = require("./makeManagedServerProvider-3SD-Q5xh.cjs");
|
|
8
8
|
const require_sourceControlContextFormatter = require("./sourceControlContextFormatter-BDZqn-4T.cjs");
|
|
9
9
|
const require_ProviderDriver = require("./ProviderDriver--rNeAi3B.cjs");
|
|
10
10
|
let effect = require("effect");
|
|
11
11
|
let effect_unstable_http = require("effect/unstable/http");
|
|
12
|
+
require("effect/unstable/process");
|
|
12
13
|
let effect_Semaphore = require("effect/Semaphore");
|
|
13
14
|
effect_Semaphore = require_chunk.__toESM(effect_Semaphore, 1);
|
|
14
|
-
require("effect/unstable/process");
|
|
15
15
|
//#region src/textGeneration/OpenCodeTextGeneration.ts
|
|
16
16
|
const OPENCODE_TEXT_GENERATION_IDLE_TTL = "30 seconds";
|
|
17
17
|
function getOpenCodePromptErrorMessage(error) {
|
|
@@ -281,6 +281,68 @@ const PROVIDER$1 = require_collectUint8StreamText.ProviderDriverKind.make("openc
|
|
|
281
281
|
function nowIso() {
|
|
282
282
|
return (/* @__PURE__ */ new Date()).toISOString();
|
|
283
283
|
}
|
|
284
|
+
function nonEmptyString(value) {
|
|
285
|
+
const trimmed = value?.trim();
|
|
286
|
+
return trimmed && trimmed.length > 0 ? trimmed : void 0;
|
|
287
|
+
}
|
|
288
|
+
function scopedOpenCodeId(sessionId, id) {
|
|
289
|
+
return `${sessionId}:${id}`;
|
|
290
|
+
}
|
|
291
|
+
function openCodeSubagentId(kind, id) {
|
|
292
|
+
return require_collectUint8StreamText.RuntimeSubagentId.make(`opencode:${kind}:${id}`);
|
|
293
|
+
}
|
|
294
|
+
function subagentKey(subagentId) {
|
|
295
|
+
return String(subagentId);
|
|
296
|
+
}
|
|
297
|
+
function statusFromOpenCodeSubagentState(status) {
|
|
298
|
+
return status;
|
|
299
|
+
}
|
|
300
|
+
function subagentCompletionStatus(status) {
|
|
301
|
+
return status;
|
|
302
|
+
}
|
|
303
|
+
function metadataWithEntries(entries) {
|
|
304
|
+
const metadata = Object.fromEntries(entries.filter(([, value]) => value !== void 0 && value !== null && value !== ""));
|
|
305
|
+
return Object.keys(metadata).length > 0 ? metadata : void 0;
|
|
306
|
+
}
|
|
307
|
+
function makeSubtaskSubagentRef(part) {
|
|
308
|
+
const description = nonEmptyString(part.description) ?? nonEmptyString(part.prompt);
|
|
309
|
+
const label = nonEmptyString(part.agent) ?? nonEmptyString(part.command) ?? (description ? "OpenCode subtask" : void 0);
|
|
310
|
+
return {
|
|
311
|
+
subagentId: openCodeSubagentId("subtask", part.id),
|
|
312
|
+
origin: "native",
|
|
313
|
+
capability: "summary",
|
|
314
|
+
...label ? { label } : {},
|
|
315
|
+
...description ? { description } : {},
|
|
316
|
+
parentProviderItemId: require_collectUint8StreamText.ProviderItemId.make(part.id),
|
|
317
|
+
metadata: metadataWithEntries([
|
|
318
|
+
["source", "opencode.subtask"],
|
|
319
|
+
["prompt", nonEmptyString(part.prompt)],
|
|
320
|
+
["agent", nonEmptyString(part.agent)],
|
|
321
|
+
["command", nonEmptyString(part.command)],
|
|
322
|
+
["model", part.model]
|
|
323
|
+
])
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
function mergeOpenCodeChildSessionRef(existing, session, parentSessionId) {
|
|
327
|
+
const label = nonEmptyString(session.title) ?? existing?.label ?? "OpenCode subagent";
|
|
328
|
+
return {
|
|
329
|
+
subagentId: existing?.subagentId ?? openCodeSubagentId("session", session.id),
|
|
330
|
+
origin: "native",
|
|
331
|
+
capability: "transcript",
|
|
332
|
+
label,
|
|
333
|
+
...existing?.description ? { description: existing.description } : {},
|
|
334
|
+
providerSessionId: session.id,
|
|
335
|
+
providerThreadId: session.id,
|
|
336
|
+
...existing?.parentProviderItemId && { parentProviderItemId: existing.parentProviderItemId },
|
|
337
|
+
metadata: {
|
|
338
|
+
...existing?.metadata,
|
|
339
|
+
source: "opencode.session",
|
|
340
|
+
parentSessionId,
|
|
341
|
+
slug: session.slug,
|
|
342
|
+
directory: session.directory
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
}
|
|
284
346
|
/**
|
|
285
347
|
* Map a tagged OpenCodeRuntimeError produced by {@link runOpenCodeSdk} into
|
|
286
348
|
* the adapter-boundary `ProviderAdapterRequestError`. SDK-method-level call
|
|
@@ -424,7 +486,7 @@ function isoFromEpochMs(value) {
|
|
|
424
486
|
return new Date(value).toISOString();
|
|
425
487
|
}
|
|
426
488
|
function messageRoleForPart(context, part) {
|
|
427
|
-
const known = context.messageRoleById.get(part.messageID);
|
|
489
|
+
const known = context.messageRoleById.get(scopedOpenCodeId(part.sessionID, part.messageID));
|
|
428
490
|
if (known) return known;
|
|
429
491
|
return part.type === "tool" ? "assistant" : void 0;
|
|
430
492
|
}
|
|
@@ -476,6 +538,12 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
476
538
|
const nativeEventLogger = options?.nativeEventLogger ?? (options?.nativeEventLogPath !== void 0 ? yield* require_bin.makeEventNdjsonLogger(options.nativeEventLogPath, { stream: "native" }) : void 0);
|
|
477
539
|
const managedNativeEventLogger = options?.nativeEventLogger === void 0 ? nativeEventLogger : void 0;
|
|
478
540
|
const runtimeEvents = yield* effect.Queue.unbounded();
|
|
541
|
+
const runtimeEventQueueMetrics = yield* require_bin.makeServerQueueMetrics({
|
|
542
|
+
queue: "provider.adapter.runtimeEvents",
|
|
543
|
+
component: "OpenCodeAdapter",
|
|
544
|
+
provider: PROVIDER$1,
|
|
545
|
+
providerInstanceId: boundInstanceId
|
|
546
|
+
});
|
|
479
547
|
const sessions = /* @__PURE__ */ new Map();
|
|
480
548
|
yield* effect.Effect.addFinalizer(() => effect.Effect.gen(function* () {
|
|
481
549
|
const contexts = [...sessions.values()];
|
|
@@ -485,10 +553,126 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
485
553
|
discard: true
|
|
486
554
|
});
|
|
487
555
|
if (managedNativeEventLogger !== void 0) yield* managedNativeEventLogger.close();
|
|
488
|
-
}).pipe(effect.Effect.ensuring(effect.Queue.shutdown(runtimeEvents))));
|
|
489
|
-
const emit = (event) => effect.Queue.offer(runtimeEvents, event).pipe(effect.Effect.asVoid);
|
|
556
|
+
}).pipe(effect.Effect.ensuring(runtimeEventQueueMetrics.reset), effect.Effect.ensuring(effect.Queue.shutdown(runtimeEvents))));
|
|
557
|
+
const emit = (event) => effect.Queue.offer(runtimeEvents, event).pipe(effect.Effect.andThen(runtimeEventQueueMetrics.recordEnqueued()), effect.Effect.asVoid);
|
|
490
558
|
const writeNativeEvent = (threadId, event) => nativeEventLogger ? nativeEventLogger.write(event, threadId) : effect.Effect.void;
|
|
491
559
|
const writeNativeEventBestEffort = (threadId, event) => writeNativeEvent(threadId, event).pipe(effect.Effect.catchCause(() => effect.Effect.void));
|
|
560
|
+
const emitOpenCodeSubagentStarted = effect.Effect.fn("emitOpenCodeSubagentStarted")(function* (context, subagent, raw) {
|
|
561
|
+
const key = subagentKey(subagent.subagentId);
|
|
562
|
+
if (context.startedSubagentIds.has(key)) return;
|
|
563
|
+
context.startedSubagentIds.add(key);
|
|
564
|
+
yield* emit({
|
|
565
|
+
...yield* buildEventBase({
|
|
566
|
+
threadId: context.session.threadId,
|
|
567
|
+
turnId: context.activeTurnId,
|
|
568
|
+
raw
|
|
569
|
+
}),
|
|
570
|
+
type: "subagent.started",
|
|
571
|
+
payload: { subagent }
|
|
572
|
+
});
|
|
573
|
+
});
|
|
574
|
+
const emitOpenCodeSubagentUpdated = effect.Effect.fn("emitOpenCodeSubagentUpdated")(function* (context, input) {
|
|
575
|
+
yield* emitOpenCodeSubagentStarted(context, input.subagent, input.raw);
|
|
576
|
+
yield* emit({
|
|
577
|
+
...yield* buildEventBase({
|
|
578
|
+
threadId: context.session.threadId,
|
|
579
|
+
turnId: context.activeTurnId,
|
|
580
|
+
raw: input.raw
|
|
581
|
+
}),
|
|
582
|
+
type: "subagent.updated",
|
|
583
|
+
payload: {
|
|
584
|
+
subagent: input.subagent,
|
|
585
|
+
...input.status ? { status: input.status } : {},
|
|
586
|
+
...input.summary ? { summary: input.summary } : {},
|
|
587
|
+
...input.detail ? { detail: input.detail } : {}
|
|
588
|
+
}
|
|
589
|
+
});
|
|
590
|
+
});
|
|
591
|
+
const emitOpenCodeSubagentCompleted = effect.Effect.fn("emitOpenCodeSubagentCompleted")(function* (context, input) {
|
|
592
|
+
const key = subagentKey(input.subagent.subagentId);
|
|
593
|
+
if (context.completedSubagentIds.has(key)) return;
|
|
594
|
+
yield* emitOpenCodeSubagentStarted(context, input.subagent, input.raw);
|
|
595
|
+
context.completedSubagentIds.add(key);
|
|
596
|
+
yield* emit({
|
|
597
|
+
...yield* buildEventBase({
|
|
598
|
+
threadId: context.session.threadId,
|
|
599
|
+
turnId: context.activeTurnId,
|
|
600
|
+
raw: input.raw
|
|
601
|
+
}),
|
|
602
|
+
type: "subagent.completed",
|
|
603
|
+
payload: {
|
|
604
|
+
subagent: input.subagent,
|
|
605
|
+
status: input.status,
|
|
606
|
+
...input.summary ? { summary: input.summary } : {}
|
|
607
|
+
}
|
|
608
|
+
});
|
|
609
|
+
});
|
|
610
|
+
const bindOpenCodeSubtaskPart = effect.Effect.fn("bindOpenCodeSubtaskPart")(function* (context, part, raw) {
|
|
611
|
+
const partKey = scopedOpenCodeId(part.sessionID, part.id);
|
|
612
|
+
const existing = context.subagentBySubtaskPartId.get(partKey);
|
|
613
|
+
const subagent = existing ?? makeSubtaskSubagentRef(part);
|
|
614
|
+
context.subagentBySubtaskPartId.set(partKey, subagent);
|
|
615
|
+
if (!existing && !context.unboundSubtaskPartIds.includes(partKey)) context.unboundSubtaskPartIds.push(partKey);
|
|
616
|
+
yield* emitOpenCodeSubagentUpdated(context, {
|
|
617
|
+
subagent,
|
|
618
|
+
status: statusFromOpenCodeSubagentState("starting"),
|
|
619
|
+
summary: nonEmptyString(part.description) ?? nonEmptyString(part.prompt),
|
|
620
|
+
detail: nonEmptyString(part.prompt),
|
|
621
|
+
raw
|
|
622
|
+
});
|
|
623
|
+
return subagent;
|
|
624
|
+
});
|
|
625
|
+
const takeUnboundOpenCodeSubtask = (context) => {
|
|
626
|
+
const partKey = context.unboundSubtaskPartIds.shift();
|
|
627
|
+
if (!partKey) return;
|
|
628
|
+
return context.subagentBySubtaskPartId.get(partKey);
|
|
629
|
+
};
|
|
630
|
+
const registerOpenCodeChildSession = effect.Effect.fn("registerOpenCodeChildSession")(function* (context, session, raw) {
|
|
631
|
+
if (session.parentID !== context.openCodeSessionId) return;
|
|
632
|
+
const subagent = mergeOpenCodeChildSessionRef(context.subagentBySessionId.get(session.id) ?? takeUnboundOpenCodeSubtask(context), session, context.openCodeSessionId);
|
|
633
|
+
const known = context.childSessionIds.has(session.id);
|
|
634
|
+
context.childSessionIds.add(session.id);
|
|
635
|
+
context.subagentBySessionId.set(session.id, subagent);
|
|
636
|
+
if (known) {
|
|
637
|
+
yield* emitOpenCodeSubagentUpdated(context, {
|
|
638
|
+
subagent,
|
|
639
|
+
status: statusFromOpenCodeSubagentState("running"),
|
|
640
|
+
raw
|
|
641
|
+
});
|
|
642
|
+
return subagent;
|
|
643
|
+
}
|
|
644
|
+
const wasStartedFromSubtask = context.startedSubagentIds.has(subagentKey(subagent.subagentId));
|
|
645
|
+
yield* emitOpenCodeSubagentStarted(context, subagent, raw);
|
|
646
|
+
if (wasStartedFromSubtask) yield* emitOpenCodeSubagentUpdated(context, {
|
|
647
|
+
subagent,
|
|
648
|
+
status: statusFromOpenCodeSubagentState("running"),
|
|
649
|
+
raw
|
|
650
|
+
});
|
|
651
|
+
return subagent;
|
|
652
|
+
});
|
|
653
|
+
const hydrateOpenCodeChildSessions = effect.Effect.fn("hydrateOpenCodeChildSessions")(function* (context) {
|
|
654
|
+
const children = yield* require_bin.runOpenCodeSdk("session.children", () => context.client.session.children({ sessionID: context.openCodeSessionId })).pipe(effect.Effect.map((response) => {
|
|
655
|
+
const value = response;
|
|
656
|
+
if (Array.isArray(value)) return value;
|
|
657
|
+
const data = value.data;
|
|
658
|
+
return Array.isArray(data) ? data : [];
|
|
659
|
+
}), effect.Effect.catchCause((cause) => effect.Effect.gen(function* () {
|
|
660
|
+
const error = effect.Cause.squash(cause);
|
|
661
|
+
yield* emit({
|
|
662
|
+
...yield* buildEventBase({ threadId: context.session.threadId }),
|
|
663
|
+
type: "runtime.warning",
|
|
664
|
+
payload: {
|
|
665
|
+
message: "OpenCode child session hydration failed.",
|
|
666
|
+
detail: require_bin.OpenCodeRuntimeError.is(error) ? error.detail : require_bin.openCodeRuntimeErrorDetail(error)
|
|
667
|
+
}
|
|
668
|
+
});
|
|
669
|
+
return [];
|
|
670
|
+
})));
|
|
671
|
+
for (const child of children) yield* registerOpenCodeChildSession(context, child, {
|
|
672
|
+
method: "session.children",
|
|
673
|
+
child
|
|
674
|
+
});
|
|
675
|
+
});
|
|
492
676
|
const emitUnexpectedExit = effect.Effect.fn("emitUnexpectedExit")(function* (context, message) {
|
|
493
677
|
if (yield* effect.Ref.getAndSet(context.stopped, true)) return;
|
|
494
678
|
const turnId = context.activeTurnId;
|
|
@@ -523,29 +707,52 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
523
707
|
const emitAssistantTextDelta = effect.Effect.fn("emitAssistantTextDelta")(function* (context, part, turnId, raw) {
|
|
524
708
|
const text = textFromPart(part);
|
|
525
709
|
if (text === void 0) return;
|
|
526
|
-
const
|
|
527
|
-
context.emittedTextByPartId.
|
|
528
|
-
|
|
710
|
+
const partKey = scopedOpenCodeId(part.sessionID, part.id);
|
|
711
|
+
const { latestText, deltaToEmit } = mergeOpenCodeAssistantText(context.emittedTextByPartId.get(partKey), text);
|
|
712
|
+
context.emittedTextByPartId.set(partKey, latestText);
|
|
713
|
+
if (latestText !== text) context.partById.set(partKey, part.type === "text" || part.type === "reasoning" ? {
|
|
529
714
|
...part,
|
|
530
715
|
text: latestText
|
|
531
716
|
} : part);
|
|
532
|
-
if (deltaToEmit.length > 0)
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
717
|
+
if (deltaToEmit.length > 0) {
|
|
718
|
+
const subagent = context.subagentBySessionId.get(part.sessionID);
|
|
719
|
+
if (subagent) yield* emit({
|
|
720
|
+
...yield* buildEventBase({
|
|
721
|
+
threadId: context.session.threadId,
|
|
722
|
+
turnId,
|
|
723
|
+
itemId: part.id,
|
|
724
|
+
createdAt: part.type === "text" || part.type === "reasoning" ? isoFromEpochMs(part.time?.start) : void 0,
|
|
725
|
+
raw
|
|
726
|
+
}),
|
|
727
|
+
type: "subagent.message.delta",
|
|
728
|
+
payload: {
|
|
729
|
+
subagentId: subagent.subagentId,
|
|
730
|
+
delta: deltaToEmit,
|
|
731
|
+
streamKind: resolveTextStreamKind(part),
|
|
732
|
+
role: "assistant",
|
|
733
|
+
providerSessionId: part.sessionID,
|
|
734
|
+
providerThreadId: part.sessionID,
|
|
735
|
+
providerMessageId: part.messageID
|
|
736
|
+
}
|
|
737
|
+
});
|
|
738
|
+
else yield* emit({
|
|
739
|
+
...yield* buildEventBase({
|
|
740
|
+
threadId: context.session.threadId,
|
|
741
|
+
turnId,
|
|
742
|
+
itemId: part.id,
|
|
743
|
+
createdAt: part.type === "text" || part.type === "reasoning" ? isoFromEpochMs(part.time?.start) : void 0,
|
|
744
|
+
raw
|
|
745
|
+
}),
|
|
746
|
+
type: "content.delta",
|
|
747
|
+
payload: {
|
|
748
|
+
streamKind: resolveTextStreamKind(part),
|
|
749
|
+
delta: deltaToEmit
|
|
750
|
+
}
|
|
751
|
+
});
|
|
752
|
+
}
|
|
753
|
+
if (part.type === "text" && part.time?.end !== void 0 && !context.completedAssistantPartIds.has(partKey)) {
|
|
754
|
+
context.completedAssistantPartIds.add(partKey);
|
|
755
|
+
if (!context.subagentBySessionId.get(part.sessionID)) yield* emit({
|
|
549
756
|
...yield* buildEventBase({
|
|
550
757
|
threadId: context.session.threadId,
|
|
551
758
|
turnId,
|
|
@@ -564,45 +771,73 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
564
771
|
}
|
|
565
772
|
});
|
|
566
773
|
const handleSubscribedEvent = effect.Effect.fn("handleSubscribedEvent")(function* (context, event) {
|
|
567
|
-
|
|
774
|
+
const payloadSessionId = "properties" in event ? event.properties.sessionID : void 0;
|
|
775
|
+
const eventSessionId = typeof payloadSessionId === "string" ? payloadSessionId : void 0;
|
|
776
|
+
const isRootSessionEvent = eventSessionId === context.openCodeSessionId;
|
|
777
|
+
const isKnownChildSessionEvent = eventSessionId !== void 0 && context.childSessionIds.has(eventSessionId);
|
|
778
|
+
const isChildSessionCreatedEvent = event.type === "session.created" && event.properties.info.parentID === context.openCodeSessionId;
|
|
779
|
+
if (!isRootSessionEvent && !isKnownChildSessionEvent && !isChildSessionCreatedEvent) return;
|
|
568
780
|
const turnId = context.activeTurnId;
|
|
569
781
|
yield* writeNativeEventBestEffort(context.session.threadId, {
|
|
570
782
|
observedAt: nowIso(),
|
|
571
783
|
event: {
|
|
572
784
|
provider: PROVIDER$1,
|
|
573
785
|
threadId: context.session.threadId,
|
|
574
|
-
providerThreadId: context.openCodeSessionId,
|
|
786
|
+
providerThreadId: eventSessionId ?? context.openCodeSessionId,
|
|
575
787
|
type: event.type,
|
|
576
788
|
...turnId ? { turnId } : {},
|
|
577
789
|
payload: event
|
|
578
790
|
}
|
|
579
791
|
});
|
|
580
792
|
switch (event.type) {
|
|
793
|
+
case "session.created":
|
|
794
|
+
yield* registerOpenCodeChildSession(context, event.properties.info, event);
|
|
795
|
+
break;
|
|
581
796
|
case "message.updated":
|
|
582
|
-
context.messageRoleById.set(event.properties.info.id, event.properties.info.role);
|
|
797
|
+
context.messageRoleById.set(scopedOpenCodeId(event.properties.sessionID, event.properties.info.id), event.properties.info.role);
|
|
583
798
|
if (event.properties.info.role === "assistant") for (const part of context.partById.values()) {
|
|
584
|
-
if (part.messageID !== event.properties.info.id) continue;
|
|
799
|
+
if (part.sessionID !== event.properties.sessionID || part.messageID !== event.properties.info.id) continue;
|
|
585
800
|
yield* emitAssistantTextDelta(context, part, turnId, event);
|
|
586
801
|
}
|
|
587
802
|
break;
|
|
588
803
|
case "message.removed":
|
|
589
|
-
context.messageRoleById.delete(event.properties.messageID);
|
|
804
|
+
context.messageRoleById.delete(scopedOpenCodeId(event.properties.sessionID, event.properties.messageID));
|
|
590
805
|
break;
|
|
591
806
|
case "message.part.delta": {
|
|
592
|
-
const
|
|
807
|
+
const partKey = scopedOpenCodeId(event.properties.sessionID, event.properties.partID);
|
|
808
|
+
const existingPart = context.partById.get(partKey);
|
|
593
809
|
if (!existingPart) break;
|
|
594
810
|
if (messageRoleForPart(context, existingPart) !== "assistant") break;
|
|
595
811
|
const streamKind = resolveTextStreamKind(existingPart);
|
|
596
812
|
const delta = event.properties.delta;
|
|
597
813
|
if (delta.length === 0) break;
|
|
598
|
-
const { nextText, deltaToEmit } = appendOpenCodeAssistantTextDelta(context.emittedTextByPartId.get(
|
|
814
|
+
const { nextText, deltaToEmit } = appendOpenCodeAssistantTextDelta(context.emittedTextByPartId.get(partKey) ?? textFromPart(existingPart) ?? "", delta);
|
|
599
815
|
if (deltaToEmit.length === 0) break;
|
|
600
|
-
context.emittedTextByPartId.set(
|
|
601
|
-
if (existingPart.type === "text" || existingPart.type === "reasoning") context.partById.set(
|
|
816
|
+
context.emittedTextByPartId.set(partKey, nextText);
|
|
817
|
+
if (existingPart.type === "text" || existingPart.type === "reasoning") context.partById.set(partKey, {
|
|
602
818
|
...existingPart,
|
|
603
819
|
text: nextText
|
|
604
820
|
});
|
|
605
|
-
|
|
821
|
+
const subagent = context.subagentBySessionId.get(event.properties.sessionID);
|
|
822
|
+
if (subagent) yield* emit({
|
|
823
|
+
...yield* buildEventBase({
|
|
824
|
+
threadId: context.session.threadId,
|
|
825
|
+
turnId,
|
|
826
|
+
itemId: event.properties.partID,
|
|
827
|
+
raw: event
|
|
828
|
+
}),
|
|
829
|
+
type: "subagent.message.delta",
|
|
830
|
+
payload: {
|
|
831
|
+
subagentId: subagent.subagentId,
|
|
832
|
+
delta: deltaToEmit,
|
|
833
|
+
streamKind,
|
|
834
|
+
role: "assistant",
|
|
835
|
+
providerSessionId: event.properties.sessionID,
|
|
836
|
+
providerThreadId: event.properties.sessionID,
|
|
837
|
+
providerMessageId: event.properties.messageID
|
|
838
|
+
}
|
|
839
|
+
});
|
|
840
|
+
else yield* emit({
|
|
606
841
|
...yield* buildEventBase({
|
|
607
842
|
threadId: context.session.threadId,
|
|
608
843
|
turnId,
|
|
@@ -619,12 +854,24 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
619
854
|
}
|
|
620
855
|
case "message.part.updated": {
|
|
621
856
|
const part = event.properties.part;
|
|
622
|
-
context.partById.set(part.id, part);
|
|
857
|
+
context.partById.set(scopedOpenCodeId(part.sessionID, part.id), part);
|
|
623
858
|
if (messageRoleForPart(context, part) === "assistant") yield* emitAssistantTextDelta(context, part, turnId, event);
|
|
859
|
+
if (part.type === "subtask" && part.sessionID === context.openCodeSessionId) yield* bindOpenCodeSubtaskPart(context, part, event);
|
|
624
860
|
if (part.type === "tool") {
|
|
625
861
|
const itemType = toToolLifecycleItemType(part.tool);
|
|
626
862
|
const title = part.state.status === "running" ? part.state.title ?? part.tool : part.tool;
|
|
627
863
|
const detail = detailFromToolPart(part);
|
|
864
|
+
const childSubagent = context.subagentBySessionId.get(part.sessionID);
|
|
865
|
+
if (childSubagent) {
|
|
866
|
+
yield* emitOpenCodeSubagentUpdated(context, {
|
|
867
|
+
subagent: childSubagent,
|
|
868
|
+
status: statusFromOpenCodeSubagentState("running"),
|
|
869
|
+
summary: title,
|
|
870
|
+
detail,
|
|
871
|
+
raw: event
|
|
872
|
+
});
|
|
873
|
+
break;
|
|
874
|
+
}
|
|
628
875
|
const payload = {
|
|
629
876
|
itemType,
|
|
630
877
|
...part.state.status === "error" ? { status: "failed" } : part.state.status === "completed" ? { status: "completed" } : { status: "inProgress" },
|
|
@@ -726,7 +973,25 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
726
973
|
payload: { answers: {} }
|
|
727
974
|
});
|
|
728
975
|
break;
|
|
729
|
-
case "session.status":
|
|
976
|
+
case "session.status": {
|
|
977
|
+
const childSubagent = context.subagentBySessionId.get(event.properties.sessionID);
|
|
978
|
+
if (childSubagent) {
|
|
979
|
+
if (event.properties.status.type === "idle") {
|
|
980
|
+
yield* emitOpenCodeSubagentCompleted(context, {
|
|
981
|
+
subagent: childSubagent,
|
|
982
|
+
status: subagentCompletionStatus("completed"),
|
|
983
|
+
raw: event
|
|
984
|
+
});
|
|
985
|
+
break;
|
|
986
|
+
}
|
|
987
|
+
yield* emitOpenCodeSubagentUpdated(context, {
|
|
988
|
+
subagent: childSubagent,
|
|
989
|
+
status: statusFromOpenCodeSubagentState("running"),
|
|
990
|
+
...event.properties.status.type === "retry" ? { detail: event.properties.status.message } : {},
|
|
991
|
+
raw: event
|
|
992
|
+
});
|
|
993
|
+
break;
|
|
994
|
+
}
|
|
730
995
|
if (event.properties.status.type === "busy") updateProviderSession(context, {
|
|
731
996
|
status: "running",
|
|
732
997
|
activeTurnId: turnId
|
|
@@ -760,8 +1025,28 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
760
1025
|
});
|
|
761
1026
|
}
|
|
762
1027
|
break;
|
|
1028
|
+
}
|
|
1029
|
+
case "session.idle": {
|
|
1030
|
+
const childSubagent = context.subagentBySessionId.get(event.properties.sessionID);
|
|
1031
|
+
if (childSubagent) yield* emitOpenCodeSubagentCompleted(context, {
|
|
1032
|
+
subagent: childSubagent,
|
|
1033
|
+
status: subagentCompletionStatus("completed"),
|
|
1034
|
+
raw: event
|
|
1035
|
+
});
|
|
1036
|
+
break;
|
|
1037
|
+
}
|
|
763
1038
|
case "session.error": {
|
|
764
1039
|
const message = sessionErrorMessage(event.properties.error);
|
|
1040
|
+
const childSubagent = event.properties.sessionID !== void 0 ? context.subagentBySessionId.get(event.properties.sessionID) : void 0;
|
|
1041
|
+
if (childSubagent) {
|
|
1042
|
+
yield* emitOpenCodeSubagentCompleted(context, {
|
|
1043
|
+
subagent: childSubagent,
|
|
1044
|
+
status: subagentCompletionStatus("failed"),
|
|
1045
|
+
summary: message,
|
|
1046
|
+
raw: event
|
|
1047
|
+
});
|
|
1048
|
+
break;
|
|
1049
|
+
}
|
|
765
1050
|
const activeTurnId = context.activeTurnId;
|
|
766
1051
|
context.activeTurnId = void 0;
|
|
767
1052
|
updateProviderSession(context, {
|
|
@@ -889,6 +1174,12 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
889
1174
|
emittedTextByPartId: /* @__PURE__ */ new Map(),
|
|
890
1175
|
messageRoleById: /* @__PURE__ */ new Map(),
|
|
891
1176
|
completedAssistantPartIds: /* @__PURE__ */ new Set(),
|
|
1177
|
+
childSessionIds: /* @__PURE__ */ new Set(),
|
|
1178
|
+
subagentBySessionId: /* @__PURE__ */ new Map(),
|
|
1179
|
+
subagentBySubtaskPartId: /* @__PURE__ */ new Map(),
|
|
1180
|
+
unboundSubtaskPartIds: [],
|
|
1181
|
+
startedSubagentIds: /* @__PURE__ */ new Set(),
|
|
1182
|
+
completedSubagentIds: /* @__PURE__ */ new Set(),
|
|
892
1183
|
turns: [],
|
|
893
1184
|
activeTurnId: void 0,
|
|
894
1185
|
activeAgent: void 0,
|
|
@@ -897,7 +1188,6 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
897
1188
|
sessionScope: started.sessionScope
|
|
898
1189
|
};
|
|
899
1190
|
sessions.set(input.threadId, context);
|
|
900
|
-
yield* startEventPump(context);
|
|
901
1191
|
yield* emit({
|
|
902
1192
|
...yield* buildEventBase({ threadId: input.threadId }),
|
|
903
1193
|
type: "session.started",
|
|
@@ -908,6 +1198,8 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
908
1198
|
type: "thread.started",
|
|
909
1199
|
payload: { providerThreadId: started.openCodeSession.id }
|
|
910
1200
|
});
|
|
1201
|
+
yield* startEventPump(context);
|
|
1202
|
+
yield* hydrateOpenCodeChildSessions(context).pipe(effect.Effect.forkIn(context.sessionScope));
|
|
911
1203
|
return session;
|
|
912
1204
|
});
|
|
913
1205
|
const sendTurn = effect.Effect.fn("sendTurn")(function* (input) {
|
|
@@ -1097,7 +1389,7 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
1097
1389
|
rollbackThread,
|
|
1098
1390
|
stopAll,
|
|
1099
1391
|
get streamEvents() {
|
|
1100
|
-
return effect.Stream.fromQueue(runtimeEvents);
|
|
1392
|
+
return effect.Stream.fromQueue(runtimeEvents).pipe(effect.Stream.tap(() => runtimeEventQueueMetrics.recordDequeued()));
|
|
1101
1393
|
}
|
|
1102
1394
|
};
|
|
1103
1395
|
});
|
|
@@ -1430,6 +1722,7 @@ const OpenCodeDriver = {
|
|
|
1430
1722
|
const openCodeRuntime = yield* require_bin.OpenCodeRuntime;
|
|
1431
1723
|
const serverConfig = yield* require_Metrics.ServerConfig;
|
|
1432
1724
|
const httpClient = yield* effect_unstable_http.HttpClient.HttpClient;
|
|
1725
|
+
const serverSettings = yield* require_bin.ServerSettingsService;
|
|
1433
1726
|
const eventLoggers = yield* require_bin.ProviderEventLoggers;
|
|
1434
1727
|
const processEnv = require_bin.mergeProviderInstanceEnvironment(environment);
|
|
1435
1728
|
const continuationIdentity = require_ProviderDriver.defaultProviderContinuationIdentity({
|
|
@@ -1471,7 +1764,7 @@ const OpenCodeDriver = {
|
|
|
1471
1764
|
haveSettingsChanged: () => false,
|
|
1472
1765
|
initialSnapshot: (settings) => stampIdentity(makePendingOpenCodeProvider(settings)),
|
|
1473
1766
|
checkProvider,
|
|
1474
|
-
enrichSnapshot: ({ snapshot, publishSnapshot }) => require_bin.enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(effect.Effect.provideService(effect_unstable_http.HttpClient.HttpClient, httpClient), effect.Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
|
|
1767
|
+
enrichSnapshot: ({ snapshot, publishSnapshot }) => require_bin.enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(effect.Effect.provideService(effect_unstable_http.HttpClient.HttpClient, httpClient), effect.Effect.provideService(require_bin.ServerSettingsService, serverSettings), effect.Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
|
|
1475
1768
|
refreshInterval: null
|
|
1476
1769
|
}).pipe(effect.Effect.mapError((cause) => new require_bin.ProviderDriverError({
|
|
1477
1770
|
driver: DRIVER_KIND,
|