autodev-cli 1.4.131 → 1.4.133
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/LICENSE.md +21 -0
- package/media/profile/00b-self-verifiable-work.md +62 -0
- package/media/profile/00c-verifiable-threads.md +78 -0
- package/media/profile/00d-turn-end-retrospective.md +61 -0
- package/media/profile/00e-long-horizon-planning.md +83 -0
- package/out/commands/office.js +4 -0
- package/out/commands/office.js.map +1 -1
- package/out/commands/start.js +1 -1
- package/out/commands/start.js.map +1 -1
- package/out/core/claudeUsage.d.ts +1 -26
- package/out/core/claudeUsage.js +15 -91
- package/out/core/claudeUsage.js.map +1 -1
- package/out/core/modelInfo.d.ts +1 -28
- package/out/core/modelInfo.js +15 -94
- package/out/core/modelInfo.js.map +1 -1
- package/out/core/provider/BaseProvider.d.ts +1 -14
- package/out/core/provider/BaseProvider.js +15 -22
- package/out/core/provider/BaseProvider.js.map +1 -1
- package/out/core/provider/ProviderRegistry.d.ts +1 -12
- package/out/core/provider/ProviderRegistry.js +15 -38
- package/out/core/provider/ProviderRegistry.js.map +1 -1
- package/out/core/provider/contract.d.ts +1 -62
- package/out/core/provider/contract.js +15 -6
- package/out/core/provider/contract.js.map +1 -1
- package/out/core/provider/implementations.d.ts +1 -65
- package/out/core/provider/implementations.js +4 -169
- package/out/core/provider/implementations.js.map +1 -1
- package/out/dispatcher.js +7 -0
- package/out/dispatcher.js.map +1 -1
- package/out/hookEventNormalizer.d.ts +1 -33
- package/out/hookEventNormalizer.js +15 -424
- package/out/hookEventNormalizer.js.map +1 -1
- package/out/profileBuilder.js +32 -0
- package/out/profileBuilder.js.map +1 -1
- package/out/providers/base/BaseProvider.d.ts +14 -0
- package/out/providers/base/BaseProvider.js +25 -0
- package/out/providers/base/BaseProvider.js.map +1 -0
- package/out/providers/base/ProviderEvents.d.ts +12 -0
- package/out/providers/base/ProviderEvents.js +81 -0
- package/out/providers/base/ProviderEvents.js.map +1 -0
- package/out/providers/base/ProviderManager.d.ts +25 -0
- package/out/providers/base/ProviderManager.js +22 -0
- package/out/providers/base/ProviderManager.js.map +1 -0
- package/out/providers/base/ProviderModels.d.ts +28 -0
- package/out/providers/base/ProviderModels.js +89 -0
- package/out/providers/base/ProviderModels.js.map +1 -0
- package/out/providers/base/ProviderNormalizer.d.ts +42 -0
- package/out/providers/base/ProviderNormalizer.js +439 -0
- package/out/providers/base/ProviderNormalizer.js.map +1 -0
- package/out/providers/base/ProviderRegistry.d.ts +12 -0
- package/out/providers/base/ProviderRegistry.js +42 -0
- package/out/providers/base/ProviderRegistry.js.map +1 -0
- package/out/providers/base/ProviderSessions.d.ts +15 -0
- package/out/providers/base/ProviderSessions.js +15 -0
- package/out/providers/base/ProviderSessions.js.map +1 -0
- package/out/providers/base/ProviderState.d.ts +9 -0
- package/out/providers/base/ProviderState.js +16 -0
- package/out/providers/base/ProviderState.js.map +1 -0
- package/out/providers/base/ProviderUsage.d.ts +12 -0
- package/out/providers/base/ProviderUsage.js +33 -0
- package/out/providers/base/ProviderUsage.js.map +1 -0
- package/out/providers/base/contract.d.ts +62 -0
- package/out/providers/base/contract.js +9 -0
- package/out/providers/base/contract.js.map +1 -0
- package/out/providers/base/factories.d.ts +64 -0
- package/out/providers/base/factories.js +265 -0
- package/out/providers/base/factories.js.map +1 -0
- package/out/providers/base/implementations.d.ts +5 -0
- package/out/providers/base/implementations.js +23 -0
- package/out/providers/base/implementations.js.map +1 -0
- package/out/providers/base/index.d.ts +13 -0
- package/out/providers/base/index.js +29 -0
- package/out/providers/base/index.js.map +1 -0
- package/out/providers/base/types.d.ts +30 -0
- package/out/providers/base/types.js +8 -0
- package/out/providers/base/types.js.map +1 -0
- package/out/providers/claude/ProviderEvents.d.ts +5 -0
- package/out/providers/claude/ProviderEvents.js +18 -0
- package/out/providers/claude/ProviderEvents.js.map +1 -0
- package/out/providers/claude/ProviderManager.d.ts +39 -0
- package/out/providers/claude/ProviderManager.js +50 -0
- package/out/providers/claude/ProviderManager.js.map +1 -0
- package/out/providers/claude/ProviderModels.d.ts +8 -0
- package/out/providers/claude/ProviderModels.js +23 -0
- package/out/providers/claude/ProviderModels.js.map +1 -0
- package/out/providers/claude/ProviderNormalizer.d.ts +5 -0
- package/out/providers/claude/ProviderNormalizer.js +10 -0
- package/out/providers/claude/ProviderNormalizer.js.map +1 -0
- package/out/providers/claude/ProviderSessions.d.ts +14 -0
- package/out/providers/claude/ProviderSessions.js +35 -0
- package/out/providers/claude/ProviderSessions.js.map +1 -0
- package/out/providers/claude/ProviderState.d.ts +13 -0
- package/out/providers/claude/ProviderState.js +19 -0
- package/out/providers/claude/ProviderState.js.map +1 -0
- package/out/providers/claude/ProviderUsage.d.ts +13 -0
- package/out/providers/claude/ProviderUsage.js +59 -0
- package/out/providers/claude/ProviderUsage.js.map +1 -0
- package/out/providers/claude/cli.d.ts +95 -0
- package/out/providers/claude/cli.js +674 -0
- package/out/providers/claude/cli.js.map +1 -0
- package/out/providers/claude/index.d.ts +9 -0
- package/out/providers/claude/index.js +26 -0
- package/out/providers/claude/index.js.map +1 -0
- package/out/providers/claude/tui.d.ts +38 -0
- package/out/providers/claude/tui.js +346 -0
- package/out/providers/claude/tui.js.map +1 -0
- package/out/providers/claudeCliProvider.d.ts +1 -95
- package/out/providers/claudeCliProvider.js +4 -660
- package/out/providers/claudeCliProvider.js.map +1 -1
- package/out/providers/claudeTuiProvider.d.ts +1 -38
- package/out/providers/claudeTuiProvider.js +4 -332
- package/out/providers/claudeTuiProvider.js.map +1 -1
- package/out/providers/copilot/ProviderEvents.d.ts +6 -0
- package/out/providers/copilot/ProviderEvents.js +18 -0
- package/out/providers/copilot/ProviderEvents.js.map +1 -0
- package/out/providers/copilot/ProviderManager.d.ts +39 -0
- package/out/providers/copilot/ProviderManager.js +98 -0
- package/out/providers/copilot/ProviderManager.js.map +1 -0
- package/out/providers/copilot/ProviderModels.d.ts +7 -0
- package/out/providers/copilot/ProviderModels.js +18 -0
- package/out/providers/copilot/ProviderModels.js.map +1 -0
- package/out/providers/copilot/ProviderNormalizer.d.ts +5 -0
- package/out/providers/copilot/ProviderNormalizer.js +10 -0
- package/out/providers/copilot/ProviderNormalizer.js.map +1 -0
- package/out/providers/copilot/ProviderSessions.d.ts +12 -0
- package/out/providers/copilot/ProviderSessions.js +39 -0
- package/out/providers/copilot/ProviderSessions.js.map +1 -0
- package/out/providers/copilot/ProviderState.d.ts +11 -0
- package/out/providers/copilot/ProviderState.js +17 -0
- package/out/providers/copilot/ProviderState.js.map +1 -0
- package/out/providers/copilot/ProviderUsage.d.ts +12 -0
- package/out/providers/copilot/ProviderUsage.js +41 -0
- package/out/providers/copilot/ProviderUsage.js.map +1 -0
- package/out/providers/copilot/cli.d.ts +16 -0
- package/out/providers/copilot/cli.js +52 -0
- package/out/providers/copilot/cli.js.map +1 -0
- package/out/providers/copilot/index.d.ts +10 -0
- package/out/providers/copilot/index.js +27 -0
- package/out/providers/copilot/index.js.map +1 -0
- package/out/providers/copilot/sdk.d.ts +22 -0
- package/out/providers/copilot/sdk.js +489 -0
- package/out/providers/copilot/sdk.js.map +1 -0
- package/out/providers/copilot/sessions.d.ts +25 -0
- package/out/providers/copilot/sessions.js +214 -0
- package/out/providers/copilot/sessions.js.map +1 -0
- package/out/providers/copilotCliProvider.d.ts +1 -16
- package/out/providers/copilotCliProvider.js +15 -49
- package/out/providers/copilotCliProvider.js.map +1 -1
- package/out/providers/copilotSdkProvider.d.ts +1 -22
- package/out/providers/copilotSdkProvider.js +4 -475
- package/out/providers/copilotSdkProvider.js.map +1 -1
- package/out/providers/copilotSessions.d.ts +1 -25
- package/out/providers/copilotSessions.js +4 -200
- package/out/providers/copilotSessions.js.map +1 -1
- package/out/providers/dummy/ProviderEvents.d.ts +5 -0
- package/out/providers/dummy/ProviderEvents.js +16 -0
- package/out/providers/dummy/ProviderEvents.js.map +1 -0
- package/out/providers/dummy/ProviderManager.d.ts +31 -0
- package/out/providers/dummy/ProviderManager.js +115 -0
- package/out/providers/dummy/ProviderManager.js.map +1 -0
- package/out/providers/dummy/ProviderModels.d.ts +7 -0
- package/out/providers/dummy/ProviderModels.js +15 -0
- package/out/providers/dummy/ProviderModels.js.map +1 -0
- package/out/providers/dummy/ProviderNormalizer.d.ts +4 -0
- package/out/providers/dummy/ProviderNormalizer.js +9 -0
- package/out/providers/dummy/ProviderNormalizer.js.map +1 -0
- package/out/providers/dummy/ProviderSessions.d.ts +12 -0
- package/out/providers/dummy/ProviderSessions.js +105 -0
- package/out/providers/dummy/ProviderSessions.js.map +1 -0
- package/out/providers/dummy/ProviderState.d.ts +12 -0
- package/out/providers/dummy/ProviderState.js +23 -0
- package/out/providers/dummy/ProviderState.js.map +1 -0
- package/out/providers/dummy/ProviderUsage.d.ts +9 -0
- package/out/providers/dummy/ProviderUsage.js +27 -0
- package/out/providers/dummy/ProviderUsage.js.map +1 -0
- package/out/providers/dummy/commands.d.ts +9 -0
- package/out/providers/dummy/commands.js +48 -0
- package/out/providers/dummy/commands.js.map +1 -0
- package/out/providers/dummy/index.d.ts +10 -0
- package/out/providers/dummy/index.js +27 -0
- package/out/providers/dummy/index.js.map +1 -0
- package/out/providers/dummy/office.d.ts +23 -0
- package/out/providers/dummy/office.js +66 -0
- package/out/providers/dummy/office.js.map +1 -0
- package/out/providers/dummy/traces.d.ts +8 -0
- package/out/providers/dummy/traces.js +174 -0
- package/out/providers/dummy/traces.js.map +1 -0
- package/out/providers/grok/ProviderEvents.d.ts +6 -0
- package/out/providers/grok/ProviderEvents.js +17 -0
- package/out/providers/grok/ProviderEvents.js.map +1 -0
- package/out/providers/grok/ProviderManager.d.ts +42 -0
- package/out/providers/grok/ProviderManager.js +48 -0
- package/out/providers/grok/ProviderManager.js.map +1 -0
- package/out/providers/grok/ProviderModels.d.ts +7 -0
- package/out/providers/grok/ProviderModels.js +16 -0
- package/out/providers/grok/ProviderModels.js.map +1 -0
- package/out/providers/grok/ProviderNormalizer.d.ts +5 -0
- package/out/providers/grok/ProviderNormalizer.js +10 -0
- package/out/providers/grok/ProviderNormalizer.js.map +1 -0
- package/out/providers/grok/ProviderSessions.d.ts +12 -0
- package/out/providers/grok/ProviderSessions.js +27 -0
- package/out/providers/grok/ProviderSessions.js.map +1 -0
- package/out/providers/grok/ProviderState.d.ts +10 -0
- package/out/providers/grok/ProviderState.js +15 -0
- package/out/providers/grok/ProviderState.js.map +1 -0
- package/out/providers/grok/ProviderUsage.d.ts +7 -0
- package/out/providers/grok/ProviderUsage.js +20 -0
- package/out/providers/grok/ProviderUsage.js.map +1 -0
- package/out/providers/grok/index.d.ts +9 -0
- package/out/providers/grok/index.js +26 -0
- package/out/providers/grok/index.js.map +1 -0
- package/out/providers/grok/sessions.d.ts +27 -0
- package/out/providers/grok/sessions.js +246 -0
- package/out/providers/grok/sessions.js.map +1 -0
- package/out/providers/grok/tui.d.ts +38 -0
- package/out/providers/grok/tui.js +1630 -0
- package/out/providers/grok/tui.js.map +1 -0
- package/out/providers/grokSessions.d.ts +1 -27
- package/out/providers/grokSessions.js +4 -232
- package/out/providers/grokSessions.js.map +1 -1
- package/out/providers/grokTuiProvider.d.ts +1 -38
- package/out/providers/grokTuiProvider.js +4 -1616
- package/out/providers/grokTuiProvider.js.map +1 -1
- package/out/providers/opencode/ProviderEvents.d.ts +6 -0
- package/out/providers/opencode/ProviderEvents.js +18 -0
- package/out/providers/opencode/ProviderEvents.js.map +1 -0
- package/out/providers/opencode/ProviderManager.d.ts +39 -0
- package/out/providers/opencode/ProviderManager.js +90 -0
- package/out/providers/opencode/ProviderManager.js.map +1 -0
- package/out/providers/opencode/ProviderModels.d.ts +7 -0
- package/out/providers/opencode/ProviderModels.js +17 -0
- package/out/providers/opencode/ProviderModels.js.map +1 -0
- package/out/providers/opencode/ProviderNormalizer.d.ts +5 -0
- package/out/providers/opencode/ProviderNormalizer.js +10 -0
- package/out/providers/opencode/ProviderNormalizer.js.map +1 -0
- package/out/providers/opencode/ProviderSessions.d.ts +11 -0
- package/out/providers/opencode/ProviderSessions.js +28 -0
- package/out/providers/opencode/ProviderSessions.js.map +1 -0
- package/out/providers/opencode/ProviderState.d.ts +14 -0
- package/out/providers/opencode/ProviderState.js +20 -0
- package/out/providers/opencode/ProviderState.js.map +1 -0
- package/out/providers/opencode/ProviderUsage.d.ts +7 -0
- package/out/providers/opencode/ProviderUsage.js +20 -0
- package/out/providers/opencode/ProviderUsage.js.map +1 -0
- package/out/providers/opencode/cli.d.ts +29 -0
- package/out/providers/opencode/cli.js +199 -0
- package/out/providers/opencode/cli.js.map +1 -0
- package/out/providers/opencode/index.d.ts +9 -0
- package/out/providers/opencode/index.js +26 -0
- package/out/providers/opencode/index.js.map +1 -0
- package/out/providers/opencode/sdk.d.ts +32 -0
- package/out/providers/opencode/sdk.js +610 -0
- package/out/providers/opencode/sdk.js.map +1 -0
- package/out/providers/opencodeCliProvider.d.ts +1 -29
- package/out/providers/opencodeCliProvider.js +15 -196
- package/out/providers/opencodeCliProvider.js.map +1 -1
- package/out/providers/opencodeSdkProvider.d.ts +1 -32
- package/out/providers/opencodeSdkProvider.js +4 -596
- package/out/providers/opencodeSdkProvider.js.map +1 -1
- package/out/providers.d.ts +1 -1
- package/out/providers.js +5 -0
- package/out/providers.js.map +1 -1
- package/out/sdk/index.js +5 -0
- package/out/sdk/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// ---------------------------------------------------------------------------
|
|
3
|
-
// opencodeSdkProvider -- long-running OpenCode session via @opencode-ai/sdk.
|
|
4
|
-
//
|
|
5
|
-
// Uses createOpencode() to start the OpenCode server in-process and keeps it
|
|
6
|
-
// alive per workspace root. Each task calls session.promptAsync() and
|
|
7
|
-
// iterates the global event stream to collect streaming output, completing
|
|
8
|
-
// when session.idle fires for the active session.
|
|
9
|
-
//
|
|
10
|
-
// No terminal is spawned -- all I/O goes through the extension-host process.
|
|
11
|
-
// Mirrors the claude-tui provider pattern.
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
3
|
if (k2 === undefined) k2 = k;
|
|
15
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -21,590 +10,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
21
10
|
if (k2 === undefined) k2 = k;
|
|
22
11
|
o[k2] = m[k];
|
|
23
12
|
}));
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
-
var ownKeys = function(o) {
|
|
31
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
-
var ar = [];
|
|
33
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
-
return ar;
|
|
35
|
-
};
|
|
36
|
-
return ownKeys(o);
|
|
37
|
-
};
|
|
38
|
-
return function (mod) {
|
|
39
|
-
if (mod && mod.__esModule) return mod;
|
|
40
|
-
var result = {};
|
|
41
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
-
__setModuleDefault(result, mod);
|
|
43
|
-
return result;
|
|
44
|
-
};
|
|
45
|
-
})();
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
46
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
-
exports
|
|
48
|
-
exports.getOpencodeSdkActivity = getOpencodeSdkActivity;
|
|
49
|
-
exports.getOpencodeSdkLatestSessionId = getOpencodeSdkLatestSessionId;
|
|
50
|
-
exports.steerOpencodeSdk = steerOpencodeSdk;
|
|
51
|
-
exports.sendOpencodeSdkPrompt = sendOpencodeSdkPrompt;
|
|
52
|
-
exports.runOpencodeSdkCompact = runOpencodeSdkCompact;
|
|
53
|
-
exports.closeOpencodeSdkClient = closeOpencodeSdkClient;
|
|
54
|
-
exports.forceIdleOpencodeSdk = forceIdleOpencodeSdk;
|
|
55
|
-
exports.closeAllOpencodeSdkClients = closeAllOpencodeSdkClients;
|
|
56
|
-
const fs = __importStar(require("fs"));
|
|
57
|
-
const path = __importStar(require("path"));
|
|
58
|
-
const net = __importStar(require("net"));
|
|
59
|
-
const url_1 = require("url");
|
|
60
|
-
const hookEventNormalizer_1 = require("../hookEventNormalizer");
|
|
61
|
-
const liveNarration_1 = require("../core/liveNarration");
|
|
62
|
-
const _state = new Map();
|
|
63
|
-
const _latestSessionIds = new Map();
|
|
64
|
-
/** Latest log function per root — updated every dispatch so the background logger always writes to the active channel. */
|
|
65
|
-
const _loggers = new Map();
|
|
66
|
-
/** Current tool activity per root — set from tool.execute.before events, cleared on idle. */
|
|
67
|
-
const _activity = new Map();
|
|
68
|
-
/** Roots that currently have an opencode-sdk turn actively running. */
|
|
69
|
-
const _busyRoots = new Set();
|
|
70
|
-
/** True while an opencode-sdk turn is running for the given workspace root. */
|
|
71
|
-
function isOpencodeSdkBusy(root) {
|
|
72
|
-
return _busyRoots.has(root);
|
|
73
|
-
}
|
|
74
|
-
/** Current tool activity label for the given root (undefined = idle). */
|
|
75
|
-
function getOpencodeSdkActivity(root) {
|
|
76
|
-
return _activity.get(root);
|
|
77
|
-
}
|
|
78
|
-
function getOpencodeSdkLatestSessionId(root) {
|
|
79
|
-
return _latestSessionIds.get(root) ?? _state.get(root)?.sessionId;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Steer the live OpenCode SDK session MID-TURN. Unlike opencode-cli / grok /
|
|
83
|
-
* copilot-cli (one-shot subprocesses), the SDK keeps a persistent in-process
|
|
84
|
-
* server + session, so a new prompt sent to the live session while it's busy is
|
|
85
|
-
* picked up by the running turn (opencode interrupts and continues with the added
|
|
86
|
-
* message, keeping the conversation context). Returns true only when there's a
|
|
87
|
-
* live/busy session to inject into; false otherwise so the caller falls back to
|
|
88
|
-
* the durable TODO queue (at-least-once delivery preserved).
|
|
89
|
-
*/
|
|
90
|
-
async function steerOpencodeSdk(root, text, log) {
|
|
91
|
-
const st = _state.get(root);
|
|
92
|
-
if (!st || !_busyRoots.has(root)) {
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
try {
|
|
96
|
-
await st.client.session.promptAsync({ path: { id: st.sessionId }, body: { parts: [{ type: 'text', text }] } });
|
|
97
|
-
log('OpenCode SDK: steered mid-turn — injected into live session ' + st.sessionId);
|
|
98
|
-
return true;
|
|
99
|
-
}
|
|
100
|
-
catch (e) {
|
|
101
|
-
log('OpenCode SDK: mid-turn steer failed: ' + (e?.message ?? String(e)));
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// ---------------------------------------------------------------------------
|
|
106
|
-
// Lazy SDK loader — uses dynamic import() so esbuild resolves the ESM-only
|
|
107
|
-
// package using its "import" export condition at bundle time.
|
|
108
|
-
// ---------------------------------------------------------------------------
|
|
109
|
-
let _sdkCache = null;
|
|
110
|
-
// Walk up from __dirname to find @opencode-ai/sdk/dist/index.js.
|
|
111
|
-
// We import by absolute path to bypass the exports map resolution entirely —
|
|
112
|
-
// bare specifier import('@opencode-ai/sdk') uses CJS resolution in a CJS bundle
|
|
113
|
-
// and fails because the package only defines an "import" condition (no "require").
|
|
114
|
-
function _findSdkEntryPath() {
|
|
115
|
-
let dir = __dirname;
|
|
116
|
-
// eslint-disable-next-line no-constant-condition
|
|
117
|
-
while (true) {
|
|
118
|
-
const candidate = path.join(dir, 'node_modules', '@opencode-ai', 'sdk', 'dist', 'index.js');
|
|
119
|
-
if (fs.existsSync(candidate)) {
|
|
120
|
-
return candidate;
|
|
121
|
-
}
|
|
122
|
-
const parent = path.dirname(dir);
|
|
123
|
-
if (parent === dir) {
|
|
124
|
-
throw new Error('@opencode-ai/sdk not found in any node_modules above ' + __dirname);
|
|
125
|
-
}
|
|
126
|
-
dir = parent;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// Use new Function() to prevent esbuild from transforming import(path) to require(path).
|
|
130
|
-
// require() cannot load ESM files; a native ESM import() is required.
|
|
131
|
-
const _dynamicImport = new Function('p', 'return import(p)');
|
|
132
|
-
async function _getSdk() {
|
|
133
|
-
if (!_sdkCache) {
|
|
134
|
-
const sdkPath = _findSdkEntryPath();
|
|
135
|
-
// pathToFileURL handles Windows drive-letter paths (e.g. H:\...) which
|
|
136
|
-
// Node's ESM loader rejects as unknown URL schemes unless converted to file://
|
|
137
|
-
const sdkUrl = (0, url_1.pathToFileURL)(sdkPath).href;
|
|
138
|
-
_sdkCache = (await _dynamicImport(sdkUrl));
|
|
139
|
-
}
|
|
140
|
-
return _sdkCache;
|
|
141
|
-
}
|
|
142
|
-
// ---------------------------------------------------------------------------
|
|
143
|
-
// Free-port finder — tries ports starting at BASE_PORT, increments until one
|
|
144
|
-
// is not bound, so multiple VS Code instances on the same machine each get
|
|
145
|
-
// their own port.
|
|
146
|
-
// ---------------------------------------------------------------------------
|
|
147
|
-
const BASE_PORT = 4096;
|
|
148
|
-
const MAX_PORT = 4200;
|
|
149
|
-
function isFree(port) {
|
|
150
|
-
return new Promise(resolve => {
|
|
151
|
-
const srv = net.createServer();
|
|
152
|
-
srv.once('error', () => resolve(false));
|
|
153
|
-
srv.once('listening', () => { srv.close(() => resolve(true)); });
|
|
154
|
-
srv.listen(port, '127.0.0.1');
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
async function findFreePort() {
|
|
158
|
-
for (let p = BASE_PORT; p <= MAX_PORT; p++) {
|
|
159
|
-
if (await isFree(p)) {
|
|
160
|
-
return p;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return 0; // let the OS pick if everything in range is busy
|
|
164
|
-
}
|
|
165
|
-
/** Returns the cached state for this root, or starts a fresh server + session. */
|
|
166
|
-
async function getOrCreate(root, resumeSessionId, log) {
|
|
167
|
-
const existing = _state.get(root);
|
|
168
|
-
if (existing) {
|
|
169
|
-
_loggers.set(root, log); // refresh in case output channel changed
|
|
170
|
-
log(`OpenCode SDK: reusing live session (session=${existing.sessionId})`);
|
|
171
|
-
return existing;
|
|
172
|
-
}
|
|
173
|
-
log('OpenCode SDK: starting server…');
|
|
174
|
-
const sdk = await _getSdk();
|
|
175
|
-
const port = await findFreePort();
|
|
176
|
-
log(`OpenCode SDK: using port ${port}`);
|
|
177
|
-
const { client, server } = await sdk.createOpencode(port ? { port } : {});
|
|
178
|
-
log(`OpenCode SDK: server ready at ${server.url}`);
|
|
179
|
-
let sessionId;
|
|
180
|
-
if (resumeSessionId) {
|
|
181
|
-
sessionId = resumeSessionId;
|
|
182
|
-
log(`OpenCode SDK: resuming session ${sessionId}`);
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
const res = await client.session.create({ query: { directory: root } });
|
|
186
|
-
sessionId = res.data.id;
|
|
187
|
-
log(`OpenCode SDK: created session ${sessionId}`);
|
|
188
|
-
}
|
|
189
|
-
const st = { client, server, sessionId };
|
|
190
|
-
_state.set(root, st);
|
|
191
|
-
_latestSessionIds.set(root, sessionId);
|
|
192
|
-
// Start the persistent background event logger for this root.
|
|
193
|
-
void _startEventLogger(root, client);
|
|
194
|
-
return st;
|
|
195
|
-
}
|
|
196
|
-
// ---------------------------------------------------------------------------
|
|
197
|
-
// Background event logger — one persistent SSE connection per workspace root.
|
|
198
|
-
// Logs all events (except message.part.updated which is streamed as text)
|
|
199
|
-
// to the VS Code output channel via the stored logger for that root.
|
|
200
|
-
// ---------------------------------------------------------------------------
|
|
201
|
-
// Noisy / high-frequency / no-payload events that are NOT forwarded to
|
|
202
|
-
// pixel-office. Mirrors the skip set of the opencode-cli hooks plugin so the
|
|
203
|
-
// SDK and CLI provider emit the same event stream. `message.part.delta` is
|
|
204
|
-
// handled explicitly below (buffered into assistant text), not skipped here.
|
|
205
|
-
const _SKIP_LOG = new Set([
|
|
206
|
-
'message.part.updated', 'message.part.removed', 'message.updated', 'message.removed',
|
|
207
|
-
'session.diff', 'sync', 'server.heartbeat',
|
|
208
|
-
'session.next.step.started', 'session.next.reasoning.started', 'session.next.text.started',
|
|
209
|
-
'session.next.tool.input.started', 'session.next.tool.input.ended',
|
|
210
|
-
'session.next.tool.called', 'session.next.tool.success',
|
|
211
|
-
]);
|
|
212
|
-
/** Accumulated assistant text per root — flushed to the output channel on session.idle. */
|
|
213
|
-
const _textBuffer = new Map();
|
|
214
|
-
/**
|
|
215
|
-
* Per-root live-narration streamer: coalesces the SDK's streamed text deltas into
|
|
216
|
-
* periodic `Notification` hook events so the assistant's message shows up in the
|
|
217
|
-
* pixel-office chat LIVE, instead of only at session.idle (turn boundary).
|
|
218
|
-
*/
|
|
219
|
-
const _narrators = new Map();
|
|
220
|
-
/** Get (or lazily create) the live-narration streamer for a root. */
|
|
221
|
-
function _getNarrator(root) {
|
|
222
|
-
let n = _narrators.get(root);
|
|
223
|
-
if (!n) {
|
|
224
|
-
n = new liveNarration_1.LiveNarrationStreamer('opencode-sdk', root, ev => (0, liveNarration_1.appendHookEventLine)(root, ev));
|
|
225
|
-
_narrators.set(root, n);
|
|
226
|
-
}
|
|
227
|
-
return n;
|
|
228
|
-
}
|
|
229
|
-
// ---------------------------------------------------------------------------
|
|
230
|
-
// JSONL sink — normalizes raw SDK events to the unified hook schema and
|
|
231
|
-
// appends them to <root>/.autodev/hooks-events.jsonl for the WS poller.
|
|
232
|
-
// ---------------------------------------------------------------------------
|
|
233
|
-
function _appendHookEvent(root, rawEv) {
|
|
234
|
-
try {
|
|
235
|
-
const normalized = (0, hookEventNormalizer_1.normalizeEvent)('opencode-sdk', rawEv);
|
|
236
|
-
if (!normalized) {
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
const dir = path.join(root, '.autodev');
|
|
240
|
-
if (!fs.existsSync(dir)) {
|
|
241
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
242
|
-
}
|
|
243
|
-
fs.appendFileSync(path.join(dir, 'hooks-events.jsonl'), JSON.stringify(normalized) + '\n', 'utf8');
|
|
244
|
-
}
|
|
245
|
-
catch { /* ignore write errors — non-critical */ }
|
|
246
|
-
}
|
|
247
|
-
async function _startEventLogger(root, client) {
|
|
248
|
-
try {
|
|
249
|
-
const evResult = await client.global.event();
|
|
250
|
-
for await (const raw of evResult.stream) {
|
|
251
|
-
// Stop if this client is no longer the active one (eviction / close).
|
|
252
|
-
if (_state.get(root)?.client !== client) {
|
|
253
|
-
break;
|
|
254
|
-
}
|
|
255
|
-
const logger = _loggers.get(root);
|
|
256
|
-
if (!logger) {
|
|
257
|
-
break;
|
|
258
|
-
}
|
|
259
|
-
const ev = raw;
|
|
260
|
-
const payload = (ev?.payload ?? ev);
|
|
261
|
-
const type = payload?.type;
|
|
262
|
-
const props = payload?.properties;
|
|
263
|
-
if (!type || _SKIP_LOG.has(type)) {
|
|
264
|
-
continue;
|
|
265
|
-
}
|
|
266
|
-
// --- Stream text deltas into a per-root buffer ---
|
|
267
|
-
if (type === 'message.part.delta') {
|
|
268
|
-
const field = props?.field;
|
|
269
|
-
if (field === 'text') {
|
|
270
|
-
const delta = props?.delta;
|
|
271
|
-
if (delta) {
|
|
272
|
-
_textBuffer.set(root, (_textBuffer.get(root) ?? '') + delta);
|
|
273
|
-
// Stream this delta to the chat live (coalesced Notification events).
|
|
274
|
-
_getNarrator(root).push(delta);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
continue;
|
|
278
|
-
}
|
|
279
|
-
const st = _state.get(root);
|
|
280
|
-
// --- Permission auto-approval ---
|
|
281
|
-
if (type === 'permission.updated') {
|
|
282
|
-
const perm = props;
|
|
283
|
-
const permId = perm?.id;
|
|
284
|
-
const permSid = perm?.sessionID;
|
|
285
|
-
const permTitle = perm?.title;
|
|
286
|
-
if (permId && permSid && st) {
|
|
287
|
-
logger(`[OC] permission.updated — auto-approving: ${permTitle ?? permId}`);
|
|
288
|
-
try {
|
|
289
|
-
await st.client.session.postSessionIdPermissionsPermissionId({
|
|
290
|
-
path: { id: permSid, permissionID: permId },
|
|
291
|
-
body: { response: 'always' },
|
|
292
|
-
});
|
|
293
|
-
logger(`[OC] permission approved (always): ${permTitle ?? permId}`);
|
|
294
|
-
}
|
|
295
|
-
catch (e) {
|
|
296
|
-
logger(`[OC] permission approval failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
_appendHookEvent(root, {
|
|
300
|
-
type: 'permission.updated',
|
|
301
|
-
payload: { type: 'permission.updated', properties: { id: permId, sessionID: permSid, title: permTitle } },
|
|
302
|
-
});
|
|
303
|
-
continue; // already logged above
|
|
304
|
-
}
|
|
305
|
-
// --- Activity tracking + JSONL hook events ---
|
|
306
|
-
if (type === 'tool.execute.before') {
|
|
307
|
-
const toolName = (props?.toolID ?? props?.name ?? props?.tool);
|
|
308
|
-
if (toolName) {
|
|
309
|
-
_activity.set(root, `${toolName}`);
|
|
310
|
-
logger(`[OC] ▶ tool: ${toolName}`);
|
|
311
|
-
}
|
|
312
|
-
_appendHookEvent(root, { payload: { type: 'tool.execute.before', properties: props ?? {} } });
|
|
313
|
-
continue;
|
|
314
|
-
}
|
|
315
|
-
if (type === 'tool.execute.after') {
|
|
316
|
-
const toolName = (props?.toolID ?? props?.name ?? props?.tool);
|
|
317
|
-
_activity.delete(root);
|
|
318
|
-
logger(`[OC] ✓ tool done: ${toolName ?? '?'}`);
|
|
319
|
-
const rawOut = props?.output ?? props?.result ?? props?.text;
|
|
320
|
-
const outText = typeof rawOut === 'string' ? rawOut.slice(0, 400) : null;
|
|
321
|
-
_appendHookEvent(root, { payload: { type: 'tool.execute.after', properties: props ?? {} } });
|
|
322
|
-
continue;
|
|
323
|
-
}
|
|
324
|
-
// --- Session status / retry ---
|
|
325
|
-
if (type === 'session.status') {
|
|
326
|
-
const status = props;
|
|
327
|
-
const statusType = status?.type;
|
|
328
|
-
if (statusType === 'retry') {
|
|
329
|
-
logger(`[OC] ↻ retry (attempt ${status?.attempt ?? '?'}): ${status?.message ?? ''}`);
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
logger(`[OC] session.status: ${statusType ?? JSON.stringify(status)}`);
|
|
333
|
-
}
|
|
334
|
-
_appendHookEvent(root, { payload: { type: 'session.status', properties: props ?? {} } });
|
|
335
|
-
continue;
|
|
336
|
-
}
|
|
337
|
-
// --- Session compacted ---
|
|
338
|
-
if (type === 'session.compacted') {
|
|
339
|
-
logger(`[OC] 🗜 session compacted`);
|
|
340
|
-
_appendHookEvent(root, { payload: { type: 'session.compacted', properties: props ?? {} } });
|
|
341
|
-
continue;
|
|
342
|
-
}
|
|
343
|
-
// --- Session idle: flush buffered assistant text + clear activity ---
|
|
344
|
-
// Emit session.idle EXACTLY ONCE per turn (pixel-office keys turn-end on
|
|
345
|
-
// it). Attach the assistant text when present so the server can render the
|
|
346
|
-
// full message in the same event.
|
|
347
|
-
if (type === 'session.idle') {
|
|
348
|
-
_activity.delete(root);
|
|
349
|
-
const text = _textBuffer.get(root);
|
|
350
|
-
_textBuffer.delete(root);
|
|
351
|
-
// Flush the trailing streamed text so the turn's final words reach the chat.
|
|
352
|
-
// The assistant message was already streamed live as Notification events,
|
|
353
|
-
// so emit a PLAIN session.idle (→ Stop) here WITHOUT _assistantText —
|
|
354
|
-
// re-attaching the full text would duplicate it as one big trailing bubble.
|
|
355
|
-
_narrators.get(root)?.flush();
|
|
356
|
-
if (text?.trim()) {
|
|
357
|
-
logger(`[OC] ── Assistant ──────────────────────────`);
|
|
358
|
-
for (const line of text.split('\n')) {
|
|
359
|
-
logger(line);
|
|
360
|
-
}
|
|
361
|
-
logger(`[OC] ────────────────────────────────────────`);
|
|
362
|
-
}
|
|
363
|
-
else {
|
|
364
|
-
logger(`[OC] session.idle`);
|
|
365
|
-
}
|
|
366
|
-
_appendHookEvent(root, { payload: { type: 'session.idle', properties: props ?? {} } });
|
|
367
|
-
continue;
|
|
368
|
-
}
|
|
369
|
-
// --- Default: log + forward every non-noisy event to the JSONL sink so
|
|
370
|
-
// pixel-office receives the full event stream (parity with the opencode-cli
|
|
371
|
-
// hooks plugin). Previously only session.error was forwarded here, so
|
|
372
|
-
// lifecycle/file/message events from the SDK never reached the server. ---
|
|
373
|
-
const propsStr = props ? JSON.stringify(props) : '{}';
|
|
374
|
-
logger(`[OC] ${type} ${propsStr}`);
|
|
375
|
-
_appendHookEvent(root, { payload: { type, properties: props ?? {} } });
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
catch { /* server closed or client evicted — exit silently */ }
|
|
379
|
-
}
|
|
380
|
-
/** Kill and remove a stale server so the next call starts fresh. */
|
|
381
|
-
function _evictClient(root) {
|
|
382
|
-
const s = _state.get(root);
|
|
383
|
-
if (s) {
|
|
384
|
-
try {
|
|
385
|
-
s.server.close();
|
|
386
|
-
}
|
|
387
|
-
catch { /* ignore */ }
|
|
388
|
-
_state.delete(root);
|
|
389
|
-
_loggers.delete(root);
|
|
390
|
-
_textBuffer.delete(root);
|
|
391
|
-
_narrators.get(root)?.dispose();
|
|
392
|
-
_narrators.delete(root);
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
// ---------------------------------------------------------------------------
|
|
396
|
-
// sendOpencodeSdkPrompt
|
|
397
|
-
//
|
|
398
|
-
// Fire-and-forget: reads the combined prompt file, dispatches it to the
|
|
399
|
-
// persistent SDK session, streams output to stdoutFile + log(), writes the
|
|
400
|
-
// exit code to exitFile once session.idle fires.
|
|
401
|
-
// ---------------------------------------------------------------------------
|
|
402
|
-
function sendOpencodeSdkPrompt(root,
|
|
403
|
-
/** Absolute path to the combined agent-profile + message file. */
|
|
404
|
-
promptFilePath, resumeSessionId, stdoutFile, exitFile, log,
|
|
405
|
-
/** Optional model string "providerID/modelID" */
|
|
406
|
-
model,
|
|
407
|
-
/** Optional callback invoked once to reveal the output panel to the user. */
|
|
408
|
-
showOutput) {
|
|
409
|
-
showOutput?.();
|
|
410
|
-
// Keep the background event logger pointed at the freshest log function.
|
|
411
|
-
_loggers.set(root, log);
|
|
412
|
-
try {
|
|
413
|
-
fs.writeFileSync(stdoutFile, '', 'utf8');
|
|
414
|
-
}
|
|
415
|
-
catch { /* ignore */ }
|
|
416
|
-
try {
|
|
417
|
-
fs.writeFileSync(exitFile, '', 'utf8');
|
|
418
|
-
}
|
|
419
|
-
catch { /* ignore */ }
|
|
420
|
-
void (async () => {
|
|
421
|
-
_busyRoots.add(root);
|
|
422
|
-
try {
|
|
423
|
-
const promptText = fs.readFileSync(promptFilePath, 'utf8');
|
|
424
|
-
const { client, sessionId } = await getOrCreate(root, resumeSessionId, log);
|
|
425
|
-
// Parse optional model "providerID/modelID"
|
|
426
|
-
let modelSpec;
|
|
427
|
-
if (model) {
|
|
428
|
-
const slash = model.indexOf('/');
|
|
429
|
-
if (slash > 0) {
|
|
430
|
-
modelSpec = { providerID: model.slice(0, slash), modelID: model.slice(slash + 1) };
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
log(`OpenCode SDK: sending prompt to session ${sessionId} (${promptText.length} chars)`);
|
|
434
|
-
// Subscribe to events BEFORE sending the prompt so we don't miss early events.
|
|
435
|
-
const evResult = await client.global.event();
|
|
436
|
-
const evStream = evResult.stream;
|
|
437
|
-
// Fire-and-forget prompt — response arrives via event stream.
|
|
438
|
-
const promptPromise = client.session.promptAsync({
|
|
439
|
-
path: { id: sessionId },
|
|
440
|
-
body: {
|
|
441
|
-
parts: [{ type: 'text', text: promptText }],
|
|
442
|
-
...(modelSpec ? { model: modelSpec } : {}),
|
|
443
|
-
},
|
|
444
|
-
});
|
|
445
|
-
// Drain the event stream until session.idle for this session.
|
|
446
|
-
const deadline = Date.now() + 30 * 60_000; // 30-minute safety cap
|
|
447
|
-
let _lineBuf = '';
|
|
448
|
-
for await (const raw of evStream) {
|
|
449
|
-
if (Date.now() > deadline) {
|
|
450
|
-
log('OpenCode SDK: ⚠ 30-minute deadline exceeded — stopping event stream');
|
|
451
|
-
break;
|
|
452
|
-
}
|
|
453
|
-
// GlobalEvent shape: { directory: string; payload: Event }
|
|
454
|
-
const ev = raw;
|
|
455
|
-
const payload = (ev?.payload ?? ev);
|
|
456
|
-
const type = payload?.type;
|
|
457
|
-
const props = payload?.properties;
|
|
458
|
-
if (type === 'message.part.updated') {
|
|
459
|
-
const delta = props?.delta ?? '';
|
|
460
|
-
if (delta) {
|
|
461
|
-
try {
|
|
462
|
-
fs.appendFileSync(stdoutFile, delta, 'utf8');
|
|
463
|
-
}
|
|
464
|
-
catch { /* ignore */ }
|
|
465
|
-
_lineBuf += delta;
|
|
466
|
-
let nl;
|
|
467
|
-
while ((nl = _lineBuf.indexOf('\n')) !== -1) {
|
|
468
|
-
const line = _lineBuf.slice(0, nl).replace(/\r$/, '');
|
|
469
|
-
_lineBuf = _lineBuf.slice(nl + 1);
|
|
470
|
-
if (line) {
|
|
471
|
-
log(` ${line}`);
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
else if (type === 'session.idle') {
|
|
477
|
-
// Accept the event if its sessionID matches ours, OR if the event
|
|
478
|
-
// doesn't carry a sessionID at all (some SDK versions omit it on
|
|
479
|
-
// single-session servers — safe to assume it's ours).
|
|
480
|
-
const idleSid = (props?.sessionID ?? props?.id);
|
|
481
|
-
if (!idleSid || idleSid === sessionId) {
|
|
482
|
-
log('OpenCode SDK: session.idle — turn complete');
|
|
483
|
-
break;
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
else if (type === 'session.error') {
|
|
487
|
-
const sid = props?.sessionID;
|
|
488
|
-
if (!sid || sid === sessionId) {
|
|
489
|
-
const errObj = props?.error;
|
|
490
|
-
const errMsg = String(errObj?.message ?? errObj ?? 'unknown error');
|
|
491
|
-
log(`OpenCode SDK: session.error — ${errMsg}`);
|
|
492
|
-
try {
|
|
493
|
-
fs.appendFileSync(stdoutFile, `\n[ERROR] ${errMsg}\n`, 'utf8');
|
|
494
|
-
}
|
|
495
|
-
catch { /* ignore */ }
|
|
496
|
-
break;
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
else if (type === 'server.instance.disposed') {
|
|
500
|
-
// Server is shutting down — abort the wait and evict the stale client
|
|
501
|
-
// so the next dispatch starts a fresh server instance.
|
|
502
|
-
log('OpenCode SDK: server.instance.disposed — aborting wait');
|
|
503
|
-
_evictClient(root);
|
|
504
|
-
try {
|
|
505
|
-
fs.appendFileSync(stdoutFile, `\n[server disposed]\n`, 'utf8');
|
|
506
|
-
}
|
|
507
|
-
catch { /* ignore */ }
|
|
508
|
-
break;
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
// Flush any remaining partial line.
|
|
512
|
-
if (_lineBuf.trim()) {
|
|
513
|
-
log(` ${_lineBuf}`);
|
|
514
|
-
}
|
|
515
|
-
// Await the promptAsync call (should have resolved long ago).
|
|
516
|
-
try {
|
|
517
|
-
await promptPromise;
|
|
518
|
-
}
|
|
519
|
-
catch { /* errors surfaced via session.error event */ }
|
|
520
|
-
_latestSessionIds.set(root, sessionId);
|
|
521
|
-
log('OpenCode SDK: prompt complete');
|
|
522
|
-
try {
|
|
523
|
-
fs.writeFileSync(exitFile, '0\n', 'utf8');
|
|
524
|
-
}
|
|
525
|
-
catch { /* ignore */ }
|
|
526
|
-
}
|
|
527
|
-
catch (err) {
|
|
528
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
529
|
-
log(`OpenCode SDK: error — ${msg}`);
|
|
530
|
-
try {
|
|
531
|
-
fs.appendFileSync(stdoutFile, `\n[ERROR] ${msg}\n`, 'utf8');
|
|
532
|
-
}
|
|
533
|
-
catch { /* ignore */ }
|
|
534
|
-
try {
|
|
535
|
-
fs.writeFileSync(exitFile, '1\n', 'utf8');
|
|
536
|
-
}
|
|
537
|
-
catch { /* ignore */ }
|
|
538
|
-
// Evict the stale state so the next call starts fresh.
|
|
539
|
-
_evictClient(root);
|
|
540
|
-
}
|
|
541
|
-
finally {
|
|
542
|
-
_busyRoots.delete(root);
|
|
543
|
-
_activity.delete(root);
|
|
544
|
-
}
|
|
545
|
-
})();
|
|
546
|
-
}
|
|
547
|
-
// ---------------------------------------------------------------------------
|
|
548
|
-
// Compact (summarise) the active session to free context window space.
|
|
549
|
-
// ---------------------------------------------------------------------------
|
|
550
|
-
function runOpencodeSdkCompact(root, log) {
|
|
551
|
-
return new Promise((resolve) => {
|
|
552
|
-
const s = _state.get(root);
|
|
553
|
-
if (!s) {
|
|
554
|
-
resolve();
|
|
555
|
-
return;
|
|
556
|
-
}
|
|
557
|
-
const { client, sessionId } = s;
|
|
558
|
-
log(`OpenCode SDK: requesting /compact for session ${sessionId}`);
|
|
559
|
-
client.session.promptAsync({
|
|
560
|
-
path: { id: sessionId },
|
|
561
|
-
body: { parts: [{ type: 'text', text: '/compact' }] },
|
|
562
|
-
}).then(() => resolve()).catch(() => resolve());
|
|
563
|
-
});
|
|
564
|
-
}
|
|
565
|
-
// ---------------------------------------------------------------------------
|
|
566
|
-
// Shutdown — cleanly close the server when the task loop stops.
|
|
567
|
-
// ---------------------------------------------------------------------------
|
|
568
|
-
function closeOpencodeSdkClient(root, log) {
|
|
569
|
-
const s = _state.get(root);
|
|
570
|
-
if (s) {
|
|
571
|
-
log('OpenCode SDK: closing persistent session + server');
|
|
572
|
-
try {
|
|
573
|
-
s.server.close();
|
|
574
|
-
}
|
|
575
|
-
catch { /* ignore */ }
|
|
576
|
-
_state.delete(root);
|
|
577
|
-
_loggers.delete(root);
|
|
578
|
-
_activity.delete(root);
|
|
579
|
-
_textBuffer.delete(root);
|
|
580
|
-
_narrators.get(root)?.dispose();
|
|
581
|
-
_narrators.delete(root);
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
/**
|
|
585
|
-
* Force-clear the busy flag for a root — used by the task loop when it detects
|
|
586
|
-
* via hooks-events.jsonl that the server was disposed while the SDK async was
|
|
587
|
-
* still running (i.e. the for-await loop never received the disposed event).
|
|
588
|
-
*/
|
|
589
|
-
function forceIdleOpencodeSdk(root) {
|
|
590
|
-
_busyRoots.delete(root);
|
|
591
|
-
_activity.delete(root);
|
|
592
|
-
_evictClient(root);
|
|
593
|
-
}
|
|
594
|
-
/** Close all open SDK servers — called on extension deactivate to avoid orphaned processes. */
|
|
595
|
-
function closeAllOpencodeSdkClients() {
|
|
596
|
-
for (const [root, s] of _state) {
|
|
597
|
-
try {
|
|
598
|
-
s.server.close();
|
|
599
|
-
}
|
|
600
|
-
catch { /* ignore */ }
|
|
601
|
-
_state.delete(root);
|
|
602
|
-
_loggers.delete(root);
|
|
603
|
-
_activity.delete(root);
|
|
604
|
-
_textBuffer.delete(root);
|
|
605
|
-
_narrators.get(root)?.dispose();
|
|
606
|
-
_narrators.delete(root);
|
|
607
|
-
_busyRoots.delete(root);
|
|
608
|
-
}
|
|
609
|
-
}
|
|
17
|
+
__exportStar(require("./opencode/sdk"), exports);
|
|
610
18
|
//# sourceMappingURL=opencodeSdkProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencodeSdkProvider.js","sourceRoot":"","sources":["../../src/providers/opencodeSdkProvider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"opencodeSdkProvider.js","sourceRoot":"","sources":["../../src/providers/opencodeSdkProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B"}
|
package/out/providers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ProviderId = 'claude-cli' | 'claude-tui' | 'copilot-cli' | 'copilot-sdk' | 'opencode-cli' | 'opencode-sdk' | 'grok-cli' | 'grok-tui';
|
|
1
|
+
export type ProviderId = 'claude-cli' | 'claude-tui' | 'copilot-cli' | 'copilot-sdk' | 'opencode-cli' | 'opencode-sdk' | 'grok-cli' | 'grok-tui' | 'dummy';
|
|
2
2
|
export interface ProviderConfig {
|
|
3
3
|
label: string;
|
|
4
4
|
/** VS Code extension ID required for this provider (empty string for CLI providers). */
|