ryco-cli 0.1.6 → 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/dist/{AzureDevOpsSourceControlProvider-6holYS_D.cjs → AzureDevOpsSourceControlProvider-5exivY-1.cjs} +2 -2
- package/dist/{AzureDevOpsSourceControlProvider-CC2_COxP.mjs → AzureDevOpsSourceControlProvider-CF5LuCHp.mjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-a0IsNFyG.cjs → BitbucketSourceControlProvider-1GWENqcl.cjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-CYR_BD1d.mjs → BitbucketSourceControlProvider-CKH09tfT.mjs} +2 -2
- package/dist/{ClaudeDriver-C6tQNEWO.cjs → ClaudeDriver-BXLdjrht.cjs} +177 -4
- package/dist/{ClaudeDriver-D3nsxwH9.mjs → ClaudeDriver-WwWFTu61.mjs} +178 -5
- package/dist/{CodexDriver-BILrJG8o.mjs → CodexDriver-93-TmCrO.mjs} +6 -5
- package/dist/{CodexDriver-ms_YgFD7.cjs → CodexDriver-BboMT9uk.cjs} +5 -4
- package/dist/{CodexTextGeneration-CHEgoANm.cjs → CodexTextGeneration-0pRbJji3.cjs} +2 -2
- package/dist/{CodexTextGeneration-BIKHl7E3.mjs → CodexTextGeneration-BU9Myn87.mjs} +3 -3
- package/dist/{CopilotDriver-CmD3Ffyl.mjs → CopilotDriver-BASi8pJ0.mjs} +4 -4
- package/dist/{CopilotDriver-B0--ZwIK.cjs → CopilotDriver-DCsv-17W.cjs} +3 -3
- package/dist/{CursorDriver-DTVPXZ-R.cjs → CursorDriver-BTSiM3A8.cjs} +161 -14
- package/dist/{CursorDriver-CbeaIbdb.mjs → CursorDriver-D5LvIqUk.mjs} +162 -15
- package/dist/{ForgejoSourceControlProvider-DwAog76b.cjs → ForgejoSourceControlProvider-BTXRDCGB.cjs} +2 -2
- package/dist/{ForgejoSourceControlProvider-DX6d9gvz.mjs → ForgejoSourceControlProvider-e-4hvvZ_.mjs} +2 -2
- package/dist/{GitHubSourceControlProvider-C-LGwho3.mjs → GitHubSourceControlProvider-26IofDAO.mjs} +2 -2
- package/dist/{GitHubSourceControlProvider-9lJFzjsu.cjs → GitHubSourceControlProvider-DWmwkA_y.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-CvKA74lg.cjs → GitLabSourceControlProvider-D-YHnxRe.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-CkeT2aEx.mjs → GitLabSourceControlProvider-DePct78W.mjs} +2 -2
- package/dist/{OpenCodeDriver-ClWtCk0j.mjs → OpenCodeDriver-BhvLOmvn.mjs} +325 -38
- package/dist/{OpenCodeDriver-CXUsnl5o.cjs → OpenCodeDriver-CVeZ4n9-.cjs} +324 -37
- package/dist/{SourceControlProviderDiscoveryCatalog-_rg0mc1o.cjs → SourceControlProviderDiscoveryCatalog-DeFR5xH3.cjs} +1 -64
- package/dist/{SourceControlProviderDiscoveryCatalog-yMDer_Yh.mjs → SourceControlProviderDiscoveryCatalog-mJV_Xitr.mjs} +3 -48
- package/dist/bin.cjs +1280 -519
- package/dist/bin.mjs +1234 -474
- package/dist/client/assets/{AnimatedHeight-DgItDSis.js → AnimatedHeight-BSU0lzYs.js} +1 -1
- package/dist/client/assets/AppearanceSettings-D7q0ujGK.js +1 -0
- package/dist/client/assets/{BranchToolbar.logic-C_xHEt9C.js → BranchToolbar.logic-CZIFSvhd.js} +1 -1
- package/dist/client/assets/ChatRightPanel-CWHOIuiQ.js +188 -0
- package/dist/client/assets/{ChatThreadRouteView-CV6ETYG5.js → ChatThreadRouteView-bA7xWXzc.js} +1 -1
- package/dist/client/assets/{CommandPaletteDialog-C_H7R8S5.js → CommandPaletteDialog-DNYaVOZO.js} +1 -1
- 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-B340S_mq.js → DiagnosticsSettings-DtzPCb6N.js} +1 -1
- package/dist/client/assets/{DialogHandle-BJY7cHCV.js → DialogHandle-DuHnmWoE.js} +1 -1
- package/dist/client/assets/{DialogRoot-Ej1FVk-_.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-DvjAl76K.js → DialogViewport-CMV_BePU.js} +1 -1
- package/dist/client/assets/{DraftChatThreadRouteView-pOkyeKPS.js → DraftChatThreadRouteView-BoiKnrii.js} +1 -1
- package/dist/client/assets/{JetBrainsIcons-DTTF47I0.js → JetBrainsIcons-BcPxJlMf.js} +1 -1
- package/dist/client/assets/{KeybindingsSettings-CW3RRi-7.js → KeybindingsSettings-LuI98pdF.js} +1 -1
- package/dist/client/assets/McpServersSettings-BFMuWYVV.js +6 -0
- package/dist/client/assets/{NoActiveThreadState-DVHwrkCp.js → NoActiveThreadState-C2q_O1kP.js} +1 -1
- package/dist/client/assets/{OpinionatedPluginsSettings-Cjj23Fs4.js → OpinionatedPluginsSettings-Bqwct37O.js} +1 -1
- package/dist/client/assets/{ProjectFavicon-TDP7HRfn.js → ProjectFavicon-D2imiJ8M.js} +1 -1
- package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-6TpFsmiI.js → ProviderUpdateLaunchNotification.logic-CJgA--nK.js} +1 -1
- package/dist/client/assets/ProvidersSettingsPanel-B97vbeu6.js +1 -0
- package/dist/client/assets/{RedactedSensitiveText-BfoVjPsE.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-B0leIJGD.js → ThreadStatusIndicators-Cw_jLVQf.js} +1 -1
- package/dist/client/assets/{ThreadTerminalDrawer-COq2Fk17.js → ThreadTerminalDrawer-D1WnSemH.js} +17 -17
- package/dist/client/assets/ThreadWorkspacePanel-L4qCPTOA.js +166 -0
- package/dist/client/assets/{alert-dialog-lMfKpG2t.js → alert-dialog-CNmKa0BK.js} +1 -1
- package/dist/client/assets/chart-column-BWSKYZ_a.js +1 -0
- package/dist/client/assets/{chatThreadActions-PPyTj_x0.js → chatThreadActions-TtDsiwDC.js} +1 -1
- package/dist/client/assets/chevron-up-zopJ_99l.js +1 -0
- package/dist/client/assets/{clamp-JiD4IZ0Z.js → clamp-Ds6WJu8j.js} +1 -1
- package/dist/client/assets/{clipboard-copy-CYBLSG2q.js → clipboard-copy-BoJGpdmJ.js} +1 -1
- package/dist/client/assets/clock-CzUHThzk.js +1 -0
- package/dist/client/assets/{commandPaletteStore-uVfCD7zE.js → commandPaletteStore-KebG835b.js} +1 -1
- package/dist/client/assets/composerDraftStore-DpPEQ6BN.js +21 -0
- package/dist/client/assets/{desktopUpdateAtoms-X6uM5SoD.js → desktopUpdateAtoms-BQ0GGEfM.js} +1 -1
- package/dist/client/assets/{download-DLBlpp4h.js → download-CUiRE0N9.js} +1 -1
- package/dist/client/assets/{draft-input-dLlVMl5P.js → draft-input-CwpGDtoT.js} +1 -1
- package/dist/client/assets/editorPreferences-jN7DKbyt.js +1 -0
- package/dist/client/assets/{empty-DlLY-Hhj.js → empty-CBuXePtg.js} +1 -1
- package/dist/client/assets/{group-zDBPF7rR.js → group-BpZvxjG5.js} +1 -1
- package/dist/client/assets/{index-Dq8sT2lF.js → index-BKzXTNJ_.js} +2 -2
- package/dist/client/assets/{input-B9-RWT56.js → input-CgDawd6k.js} +1 -1
- package/dist/client/assets/kbd-QYSL97CK.js +1 -0
- package/dist/client/assets/{keybindings-Dx4Nc1vY.js → keybindings-CUTRYI_A.js} +1 -1
- package/dist/client/assets/{keyboard-DDTWQkr0.js → keyboard-DFFiI7JY.js} +1 -1
- package/dist/client/assets/{keyedQuery-Ds4OGhX2.js → keyedQuery-DiOCbGH0.js} +0 -0
- package/dist/client/assets/{main-DxfpmoKJ.js → main-BgFGju3e.js} +3 -3
- package/dist/client/assets/main-D0UFdwts.css +2 -0
- package/dist/client/assets/{palette-BQcz-ZYV.js → palette-BXCL909c.js} +1 -1
- package/dist/client/assets/{play-QloDGe4R.js → play-DI2LZohg.js} +1 -1
- 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-DkBMGllm.js → refresh-cw-BsQTNBXl.js} +1 -1
- package/dist/client/assets/{resolveAriaLabelledBy-DDfIbj05.js → resolveAriaLabelledBy-CRHo_s16.js} +1 -1
- package/dist/client/assets/{rightPanelRouteSearch-DfuWVvXN.js → rightPanelRouteSearch-CfmZ7osj.js} +1 -1
- package/dist/client/assets/{scale-BActunFu.js → scale-DDEJ-tvn.js} +1 -1
- package/dist/client/assets/{scroll-area-D-YOUG02.js → scroll-area-HgsI-ErG.js} +1 -1
- package/dist/client/assets/{separator-TInKeIDo.js → separator-ClnL4mUB.js} +1 -1
- package/dist/client/assets/{server-BtEG3NAw.js → server-Bbs3L-6_.js} +1 -1
- package/dist/client/assets/{session-logic-DNf1aXq_.js → session-logic-CKQkgIwo.js} +1 -1
- package/dist/client/assets/settingsDialogStore-SG-W1q0A.js +1 -0
- package/dist/client/assets/{settingsLayout-D22Mm0u3.js → settingsLayout-G5xVm-ZT.js} +1 -1
- package/dist/client/assets/sidebar-_u7SGgmC.js +1 -0
- package/dist/client/assets/sidebarStatusText-BTYnwflG.js +1 -0
- package/dist/client/assets/{skeleton-DWaac_qp.js → skeleton-CmUvhZGP.js} +1 -1
- package/dist/client/assets/{storeSelectors-Cx1IYPA4.js → storeSelectors-DhJRpdiw.js} +1 -1
- 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-CnLjaHSL.js → toggle-group-Dtv1ZUFW.js} +1 -1
- package/dist/client/assets/{tokenModePresentation-BSYdIvBm.js → tokenModePresentation-Dor1DnBx.js} +1 -1
- package/dist/client/assets/{trash-2-BI5xcbsm.js → trash-2-C2G3VGoV.js} +1 -1
- package/dist/client/assets/{triangle-alert-DJef_Uvh.js → triangle-alert-Bpz3xGu5.js} +1 -1
- package/dist/client/assets/{undo-2-DeZ2cMGS.js → undo-2-C3rtxuqZ.js} +1 -1
- package/dist/client/assets/{useHandleNewThread-XB82O6SA.js → useHandleNewThread-ypSbzG0P.js} +1 -1
- package/dist/client/assets/useLabelableId-Bc7KEnHU.js +1 -0
- package/dist/client/assets/{useNavigate-B2tgshhW.js → useNavigate-_4hWGSey.js} +1 -1
- package/dist/client/assets/useTheme-HcKmBfpF.js +1 -0
- package/dist/client/assets/{vscode-icons-DM9qFoEr.js → vscode-icons-DdSTtxYd.js} +1 -1
- package/dist/client/assets/{wrench-je4QOyG-.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-C2z5Y8tF.mjs → collectUint8StreamText-Lv4GGI79.mjs} +269 -14
- package/dist/{collectUint8StreamText-TCG6xW_P.cjs → collectUint8StreamText-uNXVRHOf.cjs} +291 -12
- package/dist/{makeManagedServerProvider-DPFw9gV_.cjs → makeManagedServerProvider-3SD-Q5xh.cjs} +1 -1
- package/dist/{makeManagedServerProvider-BXO8QvzC.mjs → makeManagedServerProvider-CkPEptun.mjs} +1 -1
- package/package.json +1 -1
- package/dist/client/assets/AppearanceSettings-BlsMFBvJ.js +0 -1
- package/dist/client/assets/ChatRightPanel-CThudBb1.js +0 -188
- package/dist/client/assets/CompositeRoot-DjnzUIwC.js +0 -1
- package/dist/client/assets/ConnectionsSettings-hArR4Oe3.js +0 -1
- package/dist/client/assets/DialogTitle-H1yIMmA9.js +0 -1
- package/dist/client/assets/DialogTrigger-BHMq_K2G.js +0 -1
- package/dist/client/assets/McpServersSettings-dQ3BzOWY.js +0 -6
- package/dist/client/assets/ProvidersSettingsPanel-D15EeWAq.js +0 -1
- package/dist/client/assets/RootAppShell-CWBPSA2w.js +0 -12
- package/dist/client/assets/SettingsDialog-oJCE5foT.js +0 -2
- package/dist/client/assets/SourceControlSettings-CPnlMxNm.js +0 -1
- package/dist/client/assets/ThreadWorkspacePanel-qF9y6QT9.js +0 -166
- package/dist/client/assets/composerDraftStore-D12lUSfh.js +0 -21
- package/dist/client/assets/editorPreferences-BLeEBSD_.js +0 -1
- package/dist/client/assets/folder-open-DMjz0lpx.js +0 -1
- package/dist/client/assets/kbd-aeSsjiPI.js +0 -1
- package/dist/client/assets/main-C57RhHZ_.css +0 -2
- package/dist/client/assets/plus-4Oy56d-3.js +0 -1
- package/dist/client/assets/projectAtoms-DUEBb7Zz.js +0 -1
- package/dist/client/assets/providerDriverMeta-Dwi6Zqgd.js +0 -1
- package/dist/client/assets/providerIconUtils-uhWb4bdg.js +0 -47
- package/dist/client/assets/radio-group-DHyQlLeX.js +0 -1
- package/dist/client/assets/settingsDialogStore-BINi7pdD.js +0 -1
- package/dist/client/assets/sidebar-DHwNQmWp.js +0 -1
- package/dist/client/assets/threadSelectionStore-C0ig4405.js +0 -1
- package/dist/client/assets/toast-DE7a4wkW.js +0 -1
- package/dist/client/assets/toggle-BIW4AyPY.js +0 -1
- package/dist/client/assets/useLabelableId-DBAgv9qQ.js +0 -1
- package/dist/client/assets/useTheme-Dv42Z8uy.js +0 -1
- package/dist/client/assets/x-fI9snvD3.js +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Bn as ProviderInstanceId, Sr as TurnId, V as OpenCodeSettings, _r as RuntimeRequestId, gr as RuntimeItemId, hr as ProviderItemId, lr as EventId, vr as RuntimeSubagentId, x as TextGenerationError, zn as ProviderDriverKind } from "./collectUint8StreamText-Lv4GGI79.mjs";
|
|
4
4
|
import { U as sanitizeBranchFragment, W as sanitizeFeatureBranchName, Y as ServerConfig } from "./Metrics-6Xj17Se3.mjs";
|
|
5
|
-
import { A as nonEmptyTrimmed, E as buildServerProvider, F as ProviderAdapterRequestError, I as ProviderAdapterSessionClosedError, L as ProviderAdapterSessionNotFoundError, M as providerModelsFromSettings, P as ProviderAdapterProcessError, Qt as makePackageManagedProviderMaintenanceResolver, R as ProviderAdapterValidationError, Xt as enrichProviderSnapshotWithVersionAdvisory, a as OpenCodeRuntime, c as openCodeQuestionId, d as runOpenCodeSdk, f as toOpenCodeFileParts, g as makeEventNdjsonLogger, h as ProviderEventLoggers, in as
|
|
6
|
-
import { a as buildIssueContentTitlePrompt, c as extractJsonObject, d as sanitizePrTitle, f as sanitizeThreadTitle, i as buildIssueContentPolishPrompt, n as buildBranchNamePrompt, o as buildPrContentPrompt, r as buildCommitMessagePrompt, s as buildThreadTitlePrompt, t as makeManagedServerProvider, u as sanitizeCommitSubject } from "./makeManagedServerProvider-
|
|
5
|
+
import { A as nonEmptyTrimmed, E as buildServerProvider, F as ProviderAdapterRequestError, I as ProviderAdapterSessionClosedError, L as ProviderAdapterSessionNotFoundError, M as providerModelsFromSettings, P as ProviderAdapterProcessError, Qt as makePackageManagedProviderMaintenanceResolver, R as ProviderAdapterValidationError, Xt as enrichProviderSnapshotWithVersionAdvisory, a as OpenCodeRuntime, an as resolveAttachmentPath, c as openCodeQuestionId, cn as createModelCapabilities, d as runOpenCodeSdk, f as toOpenCodeFileParts, g as makeEventNdjsonLogger, h as ProviderEventLoggers, in as ServerSettingsService, j as parseGenericCliVersion, l as openCodeRuntimeErrorDetail, m as toOpenCodeQuestionAnswers, nn as resolveProviderMaintenanceCapabilitiesEffect, o as OpenCodeRuntimeError, p as toOpenCodePermissionReply, rn as compareCliVersions, s as buildOpenCodePermissionRules, t as makeServerQueueMetrics, tn as normalizeCommandPath, u as parseOpenCodeModelSlug, un as getModelSelectionStringOptionValue, y as mergeProviderInstanceEnvironment, z as ProviderDriverError } from "./bin.mjs";
|
|
6
|
+
import { a as buildIssueContentTitlePrompt, c as extractJsonObject, d as sanitizePrTitle, f as sanitizeThreadTitle, i as buildIssueContentPolishPrompt, n as buildBranchNamePrompt, o as buildPrContentPrompt, r as buildCommitMessagePrompt, s as buildThreadTitlePrompt, t as makeManagedServerProvider, u as sanitizeCommitSubject } from "./makeManagedServerProvider-CkPEptun.mjs";
|
|
7
7
|
import { t as formatSourceControlContextsForAgent } from "./sourceControlContextFormatter-DEwpnVAH.mjs";
|
|
8
8
|
import { t as defaultProviderContinuationIdentity } from "./ProviderDriver-kCV60GKk.mjs";
|
|
9
9
|
import { Cause, Data, Effect, Exit, Fiber, Queue, Random, Ref, Schema, Scope, Stream } from "effect";
|
|
@@ -279,6 +279,68 @@ const PROVIDER$1 = ProviderDriverKind.make("opencode");
|
|
|
279
279
|
function nowIso() {
|
|
280
280
|
return (/* @__PURE__ */ new Date()).toISOString();
|
|
281
281
|
}
|
|
282
|
+
function nonEmptyString(value) {
|
|
283
|
+
const trimmed = value?.trim();
|
|
284
|
+
return trimmed && trimmed.length > 0 ? trimmed : void 0;
|
|
285
|
+
}
|
|
286
|
+
function scopedOpenCodeId(sessionId, id) {
|
|
287
|
+
return `${sessionId}:${id}`;
|
|
288
|
+
}
|
|
289
|
+
function openCodeSubagentId(kind, id) {
|
|
290
|
+
return RuntimeSubagentId.make(`opencode:${kind}:${id}`);
|
|
291
|
+
}
|
|
292
|
+
function subagentKey(subagentId) {
|
|
293
|
+
return String(subagentId);
|
|
294
|
+
}
|
|
295
|
+
function statusFromOpenCodeSubagentState(status) {
|
|
296
|
+
return status;
|
|
297
|
+
}
|
|
298
|
+
function subagentCompletionStatus(status) {
|
|
299
|
+
return status;
|
|
300
|
+
}
|
|
301
|
+
function metadataWithEntries(entries) {
|
|
302
|
+
const metadata = Object.fromEntries(entries.filter(([, value]) => value !== void 0 && value !== null && value !== ""));
|
|
303
|
+
return Object.keys(metadata).length > 0 ? metadata : void 0;
|
|
304
|
+
}
|
|
305
|
+
function makeSubtaskSubagentRef(part) {
|
|
306
|
+
const description = nonEmptyString(part.description) ?? nonEmptyString(part.prompt);
|
|
307
|
+
const label = nonEmptyString(part.agent) ?? nonEmptyString(part.command) ?? (description ? "OpenCode subtask" : void 0);
|
|
308
|
+
return {
|
|
309
|
+
subagentId: openCodeSubagentId("subtask", part.id),
|
|
310
|
+
origin: "native",
|
|
311
|
+
capability: "summary",
|
|
312
|
+
...label ? { label } : {},
|
|
313
|
+
...description ? { description } : {},
|
|
314
|
+
parentProviderItemId: ProviderItemId.make(part.id),
|
|
315
|
+
metadata: metadataWithEntries([
|
|
316
|
+
["source", "opencode.subtask"],
|
|
317
|
+
["prompt", nonEmptyString(part.prompt)],
|
|
318
|
+
["agent", nonEmptyString(part.agent)],
|
|
319
|
+
["command", nonEmptyString(part.command)],
|
|
320
|
+
["model", part.model]
|
|
321
|
+
])
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
function mergeOpenCodeChildSessionRef(existing, session, parentSessionId) {
|
|
325
|
+
const label = nonEmptyString(session.title) ?? existing?.label ?? "OpenCode subagent";
|
|
326
|
+
return {
|
|
327
|
+
subagentId: existing?.subagentId ?? openCodeSubagentId("session", session.id),
|
|
328
|
+
origin: "native",
|
|
329
|
+
capability: "transcript",
|
|
330
|
+
label,
|
|
331
|
+
...existing?.description ? { description: existing.description } : {},
|
|
332
|
+
providerSessionId: session.id,
|
|
333
|
+
providerThreadId: session.id,
|
|
334
|
+
...existing?.parentProviderItemId && { parentProviderItemId: existing.parentProviderItemId },
|
|
335
|
+
metadata: {
|
|
336
|
+
...existing?.metadata,
|
|
337
|
+
source: "opencode.session",
|
|
338
|
+
parentSessionId,
|
|
339
|
+
slug: session.slug,
|
|
340
|
+
directory: session.directory
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
}
|
|
282
344
|
/**
|
|
283
345
|
* Map a tagged OpenCodeRuntimeError produced by {@link runOpenCodeSdk} into
|
|
284
346
|
* the adapter-boundary `ProviderAdapterRequestError`. SDK-method-level call
|
|
@@ -422,7 +484,7 @@ function isoFromEpochMs(value) {
|
|
|
422
484
|
return new Date(value).toISOString();
|
|
423
485
|
}
|
|
424
486
|
function messageRoleForPart(context, part) {
|
|
425
|
-
const known = context.messageRoleById.get(part.messageID);
|
|
487
|
+
const known = context.messageRoleById.get(scopedOpenCodeId(part.sessionID, part.messageID));
|
|
426
488
|
if (known) return known;
|
|
427
489
|
return part.type === "tool" ? "assistant" : void 0;
|
|
428
490
|
}
|
|
@@ -493,6 +555,122 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
493
555
|
const emit = (event) => Queue.offer(runtimeEvents, event).pipe(Effect.andThen(runtimeEventQueueMetrics.recordEnqueued()), Effect.asVoid);
|
|
494
556
|
const writeNativeEvent = (threadId, event) => nativeEventLogger ? nativeEventLogger.write(event, threadId) : Effect.void;
|
|
495
557
|
const writeNativeEventBestEffort = (threadId, event) => writeNativeEvent(threadId, event).pipe(Effect.catchCause(() => Effect.void));
|
|
558
|
+
const emitOpenCodeSubagentStarted = Effect.fn("emitOpenCodeSubagentStarted")(function* (context, subagent, raw) {
|
|
559
|
+
const key = subagentKey(subagent.subagentId);
|
|
560
|
+
if (context.startedSubagentIds.has(key)) return;
|
|
561
|
+
context.startedSubagentIds.add(key);
|
|
562
|
+
yield* emit({
|
|
563
|
+
...yield* buildEventBase({
|
|
564
|
+
threadId: context.session.threadId,
|
|
565
|
+
turnId: context.activeTurnId,
|
|
566
|
+
raw
|
|
567
|
+
}),
|
|
568
|
+
type: "subagent.started",
|
|
569
|
+
payload: { subagent }
|
|
570
|
+
});
|
|
571
|
+
});
|
|
572
|
+
const emitOpenCodeSubagentUpdated = Effect.fn("emitOpenCodeSubagentUpdated")(function* (context, input) {
|
|
573
|
+
yield* emitOpenCodeSubagentStarted(context, input.subagent, input.raw);
|
|
574
|
+
yield* emit({
|
|
575
|
+
...yield* buildEventBase({
|
|
576
|
+
threadId: context.session.threadId,
|
|
577
|
+
turnId: context.activeTurnId,
|
|
578
|
+
raw: input.raw
|
|
579
|
+
}),
|
|
580
|
+
type: "subagent.updated",
|
|
581
|
+
payload: {
|
|
582
|
+
subagent: input.subagent,
|
|
583
|
+
...input.status ? { status: input.status } : {},
|
|
584
|
+
...input.summary ? { summary: input.summary } : {},
|
|
585
|
+
...input.detail ? { detail: input.detail } : {}
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
});
|
|
589
|
+
const emitOpenCodeSubagentCompleted = Effect.fn("emitOpenCodeSubagentCompleted")(function* (context, input) {
|
|
590
|
+
const key = subagentKey(input.subagent.subagentId);
|
|
591
|
+
if (context.completedSubagentIds.has(key)) return;
|
|
592
|
+
yield* emitOpenCodeSubagentStarted(context, input.subagent, input.raw);
|
|
593
|
+
context.completedSubagentIds.add(key);
|
|
594
|
+
yield* emit({
|
|
595
|
+
...yield* buildEventBase({
|
|
596
|
+
threadId: context.session.threadId,
|
|
597
|
+
turnId: context.activeTurnId,
|
|
598
|
+
raw: input.raw
|
|
599
|
+
}),
|
|
600
|
+
type: "subagent.completed",
|
|
601
|
+
payload: {
|
|
602
|
+
subagent: input.subagent,
|
|
603
|
+
status: input.status,
|
|
604
|
+
...input.summary ? { summary: input.summary } : {}
|
|
605
|
+
}
|
|
606
|
+
});
|
|
607
|
+
});
|
|
608
|
+
const bindOpenCodeSubtaskPart = Effect.fn("bindOpenCodeSubtaskPart")(function* (context, part, raw) {
|
|
609
|
+
const partKey = scopedOpenCodeId(part.sessionID, part.id);
|
|
610
|
+
const existing = context.subagentBySubtaskPartId.get(partKey);
|
|
611
|
+
const subagent = existing ?? makeSubtaskSubagentRef(part);
|
|
612
|
+
context.subagentBySubtaskPartId.set(partKey, subagent);
|
|
613
|
+
if (!existing && !context.unboundSubtaskPartIds.includes(partKey)) context.unboundSubtaskPartIds.push(partKey);
|
|
614
|
+
yield* emitOpenCodeSubagentUpdated(context, {
|
|
615
|
+
subagent,
|
|
616
|
+
status: statusFromOpenCodeSubagentState("starting"),
|
|
617
|
+
summary: nonEmptyString(part.description) ?? nonEmptyString(part.prompt),
|
|
618
|
+
detail: nonEmptyString(part.prompt),
|
|
619
|
+
raw
|
|
620
|
+
});
|
|
621
|
+
return subagent;
|
|
622
|
+
});
|
|
623
|
+
const takeUnboundOpenCodeSubtask = (context) => {
|
|
624
|
+
const partKey = context.unboundSubtaskPartIds.shift();
|
|
625
|
+
if (!partKey) return;
|
|
626
|
+
return context.subagentBySubtaskPartId.get(partKey);
|
|
627
|
+
};
|
|
628
|
+
const registerOpenCodeChildSession = Effect.fn("registerOpenCodeChildSession")(function* (context, session, raw) {
|
|
629
|
+
if (session.parentID !== context.openCodeSessionId) return;
|
|
630
|
+
const subagent = mergeOpenCodeChildSessionRef(context.subagentBySessionId.get(session.id) ?? takeUnboundOpenCodeSubtask(context), session, context.openCodeSessionId);
|
|
631
|
+
const known = context.childSessionIds.has(session.id);
|
|
632
|
+
context.childSessionIds.add(session.id);
|
|
633
|
+
context.subagentBySessionId.set(session.id, subagent);
|
|
634
|
+
if (known) {
|
|
635
|
+
yield* emitOpenCodeSubagentUpdated(context, {
|
|
636
|
+
subagent,
|
|
637
|
+
status: statusFromOpenCodeSubagentState("running"),
|
|
638
|
+
raw
|
|
639
|
+
});
|
|
640
|
+
return subagent;
|
|
641
|
+
}
|
|
642
|
+
const wasStartedFromSubtask = context.startedSubagentIds.has(subagentKey(subagent.subagentId));
|
|
643
|
+
yield* emitOpenCodeSubagentStarted(context, subagent, raw);
|
|
644
|
+
if (wasStartedFromSubtask) yield* emitOpenCodeSubagentUpdated(context, {
|
|
645
|
+
subagent,
|
|
646
|
+
status: statusFromOpenCodeSubagentState("running"),
|
|
647
|
+
raw
|
|
648
|
+
});
|
|
649
|
+
return subagent;
|
|
650
|
+
});
|
|
651
|
+
const hydrateOpenCodeChildSessions = Effect.fn("hydrateOpenCodeChildSessions")(function* (context) {
|
|
652
|
+
const children = yield* runOpenCodeSdk("session.children", () => context.client.session.children({ sessionID: context.openCodeSessionId })).pipe(Effect.map((response) => {
|
|
653
|
+
const value = response;
|
|
654
|
+
if (Array.isArray(value)) return value;
|
|
655
|
+
const data = value.data;
|
|
656
|
+
return Array.isArray(data) ? data : [];
|
|
657
|
+
}), Effect.catchCause((cause) => Effect.gen(function* () {
|
|
658
|
+
const error = Cause.squash(cause);
|
|
659
|
+
yield* emit({
|
|
660
|
+
...yield* buildEventBase({ threadId: context.session.threadId }),
|
|
661
|
+
type: "runtime.warning",
|
|
662
|
+
payload: {
|
|
663
|
+
message: "OpenCode child session hydration failed.",
|
|
664
|
+
detail: OpenCodeRuntimeError.is(error) ? error.detail : openCodeRuntimeErrorDetail(error)
|
|
665
|
+
}
|
|
666
|
+
});
|
|
667
|
+
return [];
|
|
668
|
+
})));
|
|
669
|
+
for (const child of children) yield* registerOpenCodeChildSession(context, child, {
|
|
670
|
+
method: "session.children",
|
|
671
|
+
child
|
|
672
|
+
});
|
|
673
|
+
});
|
|
496
674
|
const emitUnexpectedExit = Effect.fn("emitUnexpectedExit")(function* (context, message) {
|
|
497
675
|
if (yield* Ref.getAndSet(context.stopped, true)) return;
|
|
498
676
|
const turnId = context.activeTurnId;
|
|
@@ -527,29 +705,52 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
527
705
|
const emitAssistantTextDelta = Effect.fn("emitAssistantTextDelta")(function* (context, part, turnId, raw) {
|
|
528
706
|
const text = textFromPart(part);
|
|
529
707
|
if (text === void 0) return;
|
|
530
|
-
const
|
|
531
|
-
context.emittedTextByPartId.
|
|
532
|
-
|
|
708
|
+
const partKey = scopedOpenCodeId(part.sessionID, part.id);
|
|
709
|
+
const { latestText, deltaToEmit } = mergeOpenCodeAssistantText(context.emittedTextByPartId.get(partKey), text);
|
|
710
|
+
context.emittedTextByPartId.set(partKey, latestText);
|
|
711
|
+
if (latestText !== text) context.partById.set(partKey, part.type === "text" || part.type === "reasoning" ? {
|
|
533
712
|
...part,
|
|
534
713
|
text: latestText
|
|
535
714
|
} : part);
|
|
536
|
-
if (deltaToEmit.length > 0)
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
715
|
+
if (deltaToEmit.length > 0) {
|
|
716
|
+
const subagent = context.subagentBySessionId.get(part.sessionID);
|
|
717
|
+
if (subagent) yield* emit({
|
|
718
|
+
...yield* buildEventBase({
|
|
719
|
+
threadId: context.session.threadId,
|
|
720
|
+
turnId,
|
|
721
|
+
itemId: part.id,
|
|
722
|
+
createdAt: part.type === "text" || part.type === "reasoning" ? isoFromEpochMs(part.time?.start) : void 0,
|
|
723
|
+
raw
|
|
724
|
+
}),
|
|
725
|
+
type: "subagent.message.delta",
|
|
726
|
+
payload: {
|
|
727
|
+
subagentId: subagent.subagentId,
|
|
728
|
+
delta: deltaToEmit,
|
|
729
|
+
streamKind: resolveTextStreamKind(part),
|
|
730
|
+
role: "assistant",
|
|
731
|
+
providerSessionId: part.sessionID,
|
|
732
|
+
providerThreadId: part.sessionID,
|
|
733
|
+
providerMessageId: part.messageID
|
|
734
|
+
}
|
|
735
|
+
});
|
|
736
|
+
else yield* emit({
|
|
737
|
+
...yield* buildEventBase({
|
|
738
|
+
threadId: context.session.threadId,
|
|
739
|
+
turnId,
|
|
740
|
+
itemId: part.id,
|
|
741
|
+
createdAt: part.type === "text" || part.type === "reasoning" ? isoFromEpochMs(part.time?.start) : void 0,
|
|
742
|
+
raw
|
|
743
|
+
}),
|
|
744
|
+
type: "content.delta",
|
|
745
|
+
payload: {
|
|
746
|
+
streamKind: resolveTextStreamKind(part),
|
|
747
|
+
delta: deltaToEmit
|
|
748
|
+
}
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
if (part.type === "text" && part.time?.end !== void 0 && !context.completedAssistantPartIds.has(partKey)) {
|
|
752
|
+
context.completedAssistantPartIds.add(partKey);
|
|
753
|
+
if (!context.subagentBySessionId.get(part.sessionID)) yield* emit({
|
|
553
754
|
...yield* buildEventBase({
|
|
554
755
|
threadId: context.session.threadId,
|
|
555
756
|
turnId,
|
|
@@ -568,45 +769,73 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
568
769
|
}
|
|
569
770
|
});
|
|
570
771
|
const handleSubscribedEvent = Effect.fn("handleSubscribedEvent")(function* (context, event) {
|
|
571
|
-
|
|
772
|
+
const payloadSessionId = "properties" in event ? event.properties.sessionID : void 0;
|
|
773
|
+
const eventSessionId = typeof payloadSessionId === "string" ? payloadSessionId : void 0;
|
|
774
|
+
const isRootSessionEvent = eventSessionId === context.openCodeSessionId;
|
|
775
|
+
const isKnownChildSessionEvent = eventSessionId !== void 0 && context.childSessionIds.has(eventSessionId);
|
|
776
|
+
const isChildSessionCreatedEvent = event.type === "session.created" && event.properties.info.parentID === context.openCodeSessionId;
|
|
777
|
+
if (!isRootSessionEvent && !isKnownChildSessionEvent && !isChildSessionCreatedEvent) return;
|
|
572
778
|
const turnId = context.activeTurnId;
|
|
573
779
|
yield* writeNativeEventBestEffort(context.session.threadId, {
|
|
574
780
|
observedAt: nowIso(),
|
|
575
781
|
event: {
|
|
576
782
|
provider: PROVIDER$1,
|
|
577
783
|
threadId: context.session.threadId,
|
|
578
|
-
providerThreadId: context.openCodeSessionId,
|
|
784
|
+
providerThreadId: eventSessionId ?? context.openCodeSessionId,
|
|
579
785
|
type: event.type,
|
|
580
786
|
...turnId ? { turnId } : {},
|
|
581
787
|
payload: event
|
|
582
788
|
}
|
|
583
789
|
});
|
|
584
790
|
switch (event.type) {
|
|
791
|
+
case "session.created":
|
|
792
|
+
yield* registerOpenCodeChildSession(context, event.properties.info, event);
|
|
793
|
+
break;
|
|
585
794
|
case "message.updated":
|
|
586
|
-
context.messageRoleById.set(event.properties.info.id, event.properties.info.role);
|
|
795
|
+
context.messageRoleById.set(scopedOpenCodeId(event.properties.sessionID, event.properties.info.id), event.properties.info.role);
|
|
587
796
|
if (event.properties.info.role === "assistant") for (const part of context.partById.values()) {
|
|
588
|
-
if (part.messageID !== event.properties.info.id) continue;
|
|
797
|
+
if (part.sessionID !== event.properties.sessionID || part.messageID !== event.properties.info.id) continue;
|
|
589
798
|
yield* emitAssistantTextDelta(context, part, turnId, event);
|
|
590
799
|
}
|
|
591
800
|
break;
|
|
592
801
|
case "message.removed":
|
|
593
|
-
context.messageRoleById.delete(event.properties.messageID);
|
|
802
|
+
context.messageRoleById.delete(scopedOpenCodeId(event.properties.sessionID, event.properties.messageID));
|
|
594
803
|
break;
|
|
595
804
|
case "message.part.delta": {
|
|
596
|
-
const
|
|
805
|
+
const partKey = scopedOpenCodeId(event.properties.sessionID, event.properties.partID);
|
|
806
|
+
const existingPart = context.partById.get(partKey);
|
|
597
807
|
if (!existingPart) break;
|
|
598
808
|
if (messageRoleForPart(context, existingPart) !== "assistant") break;
|
|
599
809
|
const streamKind = resolveTextStreamKind(existingPart);
|
|
600
810
|
const delta = event.properties.delta;
|
|
601
811
|
if (delta.length === 0) break;
|
|
602
|
-
const { nextText, deltaToEmit } = appendOpenCodeAssistantTextDelta(context.emittedTextByPartId.get(
|
|
812
|
+
const { nextText, deltaToEmit } = appendOpenCodeAssistantTextDelta(context.emittedTextByPartId.get(partKey) ?? textFromPart(existingPart) ?? "", delta);
|
|
603
813
|
if (deltaToEmit.length === 0) break;
|
|
604
|
-
context.emittedTextByPartId.set(
|
|
605
|
-
if (existingPart.type === "text" || existingPart.type === "reasoning") context.partById.set(
|
|
814
|
+
context.emittedTextByPartId.set(partKey, nextText);
|
|
815
|
+
if (existingPart.type === "text" || existingPart.type === "reasoning") context.partById.set(partKey, {
|
|
606
816
|
...existingPart,
|
|
607
817
|
text: nextText
|
|
608
818
|
});
|
|
609
|
-
|
|
819
|
+
const subagent = context.subagentBySessionId.get(event.properties.sessionID);
|
|
820
|
+
if (subagent) yield* emit({
|
|
821
|
+
...yield* buildEventBase({
|
|
822
|
+
threadId: context.session.threadId,
|
|
823
|
+
turnId,
|
|
824
|
+
itemId: event.properties.partID,
|
|
825
|
+
raw: event
|
|
826
|
+
}),
|
|
827
|
+
type: "subagent.message.delta",
|
|
828
|
+
payload: {
|
|
829
|
+
subagentId: subagent.subagentId,
|
|
830
|
+
delta: deltaToEmit,
|
|
831
|
+
streamKind,
|
|
832
|
+
role: "assistant",
|
|
833
|
+
providerSessionId: event.properties.sessionID,
|
|
834
|
+
providerThreadId: event.properties.sessionID,
|
|
835
|
+
providerMessageId: event.properties.messageID
|
|
836
|
+
}
|
|
837
|
+
});
|
|
838
|
+
else yield* emit({
|
|
610
839
|
...yield* buildEventBase({
|
|
611
840
|
threadId: context.session.threadId,
|
|
612
841
|
turnId,
|
|
@@ -623,12 +852,24 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
623
852
|
}
|
|
624
853
|
case "message.part.updated": {
|
|
625
854
|
const part = event.properties.part;
|
|
626
|
-
context.partById.set(part.id, part);
|
|
855
|
+
context.partById.set(scopedOpenCodeId(part.sessionID, part.id), part);
|
|
627
856
|
if (messageRoleForPart(context, part) === "assistant") yield* emitAssistantTextDelta(context, part, turnId, event);
|
|
857
|
+
if (part.type === "subtask" && part.sessionID === context.openCodeSessionId) yield* bindOpenCodeSubtaskPart(context, part, event);
|
|
628
858
|
if (part.type === "tool") {
|
|
629
859
|
const itemType = toToolLifecycleItemType(part.tool);
|
|
630
860
|
const title = part.state.status === "running" ? part.state.title ?? part.tool : part.tool;
|
|
631
861
|
const detail = detailFromToolPart(part);
|
|
862
|
+
const childSubagent = context.subagentBySessionId.get(part.sessionID);
|
|
863
|
+
if (childSubagent) {
|
|
864
|
+
yield* emitOpenCodeSubagentUpdated(context, {
|
|
865
|
+
subagent: childSubagent,
|
|
866
|
+
status: statusFromOpenCodeSubagentState("running"),
|
|
867
|
+
summary: title,
|
|
868
|
+
detail,
|
|
869
|
+
raw: event
|
|
870
|
+
});
|
|
871
|
+
break;
|
|
872
|
+
}
|
|
632
873
|
const payload = {
|
|
633
874
|
itemType,
|
|
634
875
|
...part.state.status === "error" ? { status: "failed" } : part.state.status === "completed" ? { status: "completed" } : { status: "inProgress" },
|
|
@@ -730,7 +971,25 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
730
971
|
payload: { answers: {} }
|
|
731
972
|
});
|
|
732
973
|
break;
|
|
733
|
-
case "session.status":
|
|
974
|
+
case "session.status": {
|
|
975
|
+
const childSubagent = context.subagentBySessionId.get(event.properties.sessionID);
|
|
976
|
+
if (childSubagent) {
|
|
977
|
+
if (event.properties.status.type === "idle") {
|
|
978
|
+
yield* emitOpenCodeSubagentCompleted(context, {
|
|
979
|
+
subagent: childSubagent,
|
|
980
|
+
status: subagentCompletionStatus("completed"),
|
|
981
|
+
raw: event
|
|
982
|
+
});
|
|
983
|
+
break;
|
|
984
|
+
}
|
|
985
|
+
yield* emitOpenCodeSubagentUpdated(context, {
|
|
986
|
+
subagent: childSubagent,
|
|
987
|
+
status: statusFromOpenCodeSubagentState("running"),
|
|
988
|
+
...event.properties.status.type === "retry" ? { detail: event.properties.status.message } : {},
|
|
989
|
+
raw: event
|
|
990
|
+
});
|
|
991
|
+
break;
|
|
992
|
+
}
|
|
734
993
|
if (event.properties.status.type === "busy") updateProviderSession(context, {
|
|
735
994
|
status: "running",
|
|
736
995
|
activeTurnId: turnId
|
|
@@ -764,8 +1023,28 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
764
1023
|
});
|
|
765
1024
|
}
|
|
766
1025
|
break;
|
|
1026
|
+
}
|
|
1027
|
+
case "session.idle": {
|
|
1028
|
+
const childSubagent = context.subagentBySessionId.get(event.properties.sessionID);
|
|
1029
|
+
if (childSubagent) yield* emitOpenCodeSubagentCompleted(context, {
|
|
1030
|
+
subagent: childSubagent,
|
|
1031
|
+
status: subagentCompletionStatus("completed"),
|
|
1032
|
+
raw: event
|
|
1033
|
+
});
|
|
1034
|
+
break;
|
|
1035
|
+
}
|
|
767
1036
|
case "session.error": {
|
|
768
1037
|
const message = sessionErrorMessage(event.properties.error);
|
|
1038
|
+
const childSubagent = event.properties.sessionID !== void 0 ? context.subagentBySessionId.get(event.properties.sessionID) : void 0;
|
|
1039
|
+
if (childSubagent) {
|
|
1040
|
+
yield* emitOpenCodeSubagentCompleted(context, {
|
|
1041
|
+
subagent: childSubagent,
|
|
1042
|
+
status: subagentCompletionStatus("failed"),
|
|
1043
|
+
summary: message,
|
|
1044
|
+
raw: event
|
|
1045
|
+
});
|
|
1046
|
+
break;
|
|
1047
|
+
}
|
|
769
1048
|
const activeTurnId = context.activeTurnId;
|
|
770
1049
|
context.activeTurnId = void 0;
|
|
771
1050
|
updateProviderSession(context, {
|
|
@@ -893,6 +1172,12 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
893
1172
|
emittedTextByPartId: /* @__PURE__ */ new Map(),
|
|
894
1173
|
messageRoleById: /* @__PURE__ */ new Map(),
|
|
895
1174
|
completedAssistantPartIds: /* @__PURE__ */ new Set(),
|
|
1175
|
+
childSessionIds: /* @__PURE__ */ new Set(),
|
|
1176
|
+
subagentBySessionId: /* @__PURE__ */ new Map(),
|
|
1177
|
+
subagentBySubtaskPartId: /* @__PURE__ */ new Map(),
|
|
1178
|
+
unboundSubtaskPartIds: [],
|
|
1179
|
+
startedSubagentIds: /* @__PURE__ */ new Set(),
|
|
1180
|
+
completedSubagentIds: /* @__PURE__ */ new Set(),
|
|
896
1181
|
turns: [],
|
|
897
1182
|
activeTurnId: void 0,
|
|
898
1183
|
activeAgent: void 0,
|
|
@@ -901,7 +1186,6 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
901
1186
|
sessionScope: started.sessionScope
|
|
902
1187
|
};
|
|
903
1188
|
sessions.set(input.threadId, context);
|
|
904
|
-
yield* startEventPump(context);
|
|
905
1189
|
yield* emit({
|
|
906
1190
|
...yield* buildEventBase({ threadId: input.threadId }),
|
|
907
1191
|
type: "session.started",
|
|
@@ -912,6 +1196,8 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
|
|
|
912
1196
|
type: "thread.started",
|
|
913
1197
|
payload: { providerThreadId: started.openCodeSession.id }
|
|
914
1198
|
});
|
|
1199
|
+
yield* startEventPump(context);
|
|
1200
|
+
yield* hydrateOpenCodeChildSessions(context).pipe(Effect.forkIn(context.sessionScope));
|
|
915
1201
|
return session;
|
|
916
1202
|
});
|
|
917
1203
|
const sendTurn = Effect.fn("sendTurn")(function* (input) {
|
|
@@ -1434,6 +1720,7 @@ const OpenCodeDriver = {
|
|
|
1434
1720
|
const openCodeRuntime = yield* OpenCodeRuntime;
|
|
1435
1721
|
const serverConfig = yield* ServerConfig;
|
|
1436
1722
|
const httpClient = yield* HttpClient.HttpClient;
|
|
1723
|
+
const serverSettings = yield* ServerSettingsService;
|
|
1437
1724
|
const eventLoggers = yield* ProviderEventLoggers;
|
|
1438
1725
|
const processEnv = mergeProviderInstanceEnvironment(environment);
|
|
1439
1726
|
const continuationIdentity = defaultProviderContinuationIdentity({
|
|
@@ -1475,7 +1762,7 @@ const OpenCodeDriver = {
|
|
|
1475
1762
|
haveSettingsChanged: () => false,
|
|
1476
1763
|
initialSnapshot: (settings) => stampIdentity(makePendingOpenCodeProvider(settings)),
|
|
1477
1764
|
checkProvider,
|
|
1478
|
-
enrichSnapshot: ({ snapshot, publishSnapshot }) => enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(Effect.provideService(HttpClient.HttpClient, httpClient), Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
|
|
1765
|
+
enrichSnapshot: ({ snapshot, publishSnapshot }) => enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(Effect.provideService(HttpClient.HttpClient, httpClient), Effect.provideService(ServerSettingsService, serverSettings), Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
|
|
1479
1766
|
refreshInterval: null
|
|
1480
1767
|
}).pipe(Effect.mapError((cause) => new ProviderDriverError({
|
|
1481
1768
|
driver: DRIVER_KIND,
|