autodev-cli 1.4.132 → 1.4.134
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/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/media/profile/00f-swarm-orchestration.md +101 -0
- package/media/profile/00g-swarm-living-documents.md +76 -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 +41 -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
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildOpenCodeCliCommand = buildOpenCodeCliCommand;
|
|
4
|
+
exports.listOpenCodeSessions = listOpenCodeSessions;
|
|
5
|
+
exports.getLatestOpenCodeSessionId = getLatestOpenCodeSessionId;
|
|
6
|
+
exports.runOpenCodeCompact = runOpenCodeCompact;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// OpenCode CLI command builder
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/**
|
|
13
|
+
* Build the shell command string for the opencode-cli provider.
|
|
14
|
+
* Accepts a pre-combined file written by the dispatcher and passes it as a
|
|
15
|
+
* single `@file` reference so opencode reads it directly.
|
|
16
|
+
*/
|
|
17
|
+
function buildOpenCodeCliCommand(combinedFile, sessionId, model, sessionName) {
|
|
18
|
+
// Resume an explicit session with `-s <id>`. On a FRESH run (no session id)
|
|
19
|
+
// do NOT pass `-c`/`--continue`: opencode's "continue the last session" is
|
|
20
|
+
// global, not workspace-scoped, so on the first run it attaches to a stale or
|
|
21
|
+
// non-existent session and emits no output (the task never really runs). A
|
|
22
|
+
// bare `opencode run` starts a new session; the dispatcher then captures its
|
|
23
|
+
// id and resumes it with `-s` on subsequent iterations.
|
|
24
|
+
const session = sessionId ? ` -s ${sessionId}` : '';
|
|
25
|
+
const modelFlag = model ? ` --model ${JSON.stringify(model)}` : '';
|
|
26
|
+
// Only title a FRESH session (resuming keeps the existing title).
|
|
27
|
+
const titleFlag = (!sessionId && sessionName) ? ` --title ${JSON.stringify(sessionName)}` : '';
|
|
28
|
+
const fileRef = JSON.stringify(`@${combinedFile}`);
|
|
29
|
+
return `opencode run${session}${modelFlag}${titleFlag} ${fileRef}`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* List all OpenCode sessions for this workspace directory (newest first, capped at 20).
|
|
33
|
+
* Uses `opencode session list --format json`. Returns empty array on timeout/error.
|
|
34
|
+
*/
|
|
35
|
+
function listOpenCodeSessions(cwd) {
|
|
36
|
+
return new Promise(resolve => {
|
|
37
|
+
let done = false;
|
|
38
|
+
let stdout = '';
|
|
39
|
+
const child = (0, child_process_1.spawn)('opencode', ['session', 'list', '-n', '20', '--format', 'json'], {
|
|
40
|
+
cwd,
|
|
41
|
+
detached: true,
|
|
42
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
43
|
+
});
|
|
44
|
+
child.unref();
|
|
45
|
+
const timer = setTimeout(() => {
|
|
46
|
+
if (done) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
done = true;
|
|
50
|
+
try {
|
|
51
|
+
if (child.pid !== undefined) {
|
|
52
|
+
process.kill(-child.pid, 'SIGKILL');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch { /* ignore */ }
|
|
56
|
+
resolve([]);
|
|
57
|
+
}, 10_000);
|
|
58
|
+
child.stdout?.on('data', (chunk) => { stdout += chunk.toString('utf8'); });
|
|
59
|
+
child.on('close', () => {
|
|
60
|
+
if (done) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
done = true;
|
|
64
|
+
clearTimeout(timer);
|
|
65
|
+
try {
|
|
66
|
+
const raw = JSON.parse(stdout);
|
|
67
|
+
// Realpath-aware match (same reasoning as getLatestOpenCodeSessionId) so
|
|
68
|
+
// symlinked/realpath cwds don't drop every session.
|
|
69
|
+
const norm = (p) => {
|
|
70
|
+
let resolved = p;
|
|
71
|
+
try {
|
|
72
|
+
resolved = (0, fs_1.realpathSync)(p);
|
|
73
|
+
}
|
|
74
|
+
catch { /* keep lexical */ }
|
|
75
|
+
return resolved.toLowerCase().replace(/\\/g, '/').replace(/\/+$/, '');
|
|
76
|
+
};
|
|
77
|
+
const cwdNorm = norm(cwd);
|
|
78
|
+
const filtered = raw
|
|
79
|
+
.filter(s => norm(s.directory) === cwdNorm)
|
|
80
|
+
.sort((a, b) => b.updated - a.updated)
|
|
81
|
+
.slice(0, 20)
|
|
82
|
+
.map(s => ({ id: s.id, mtime: s.updated ?? s.created ?? 0 }));
|
|
83
|
+
resolve(filtered);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
resolve([]);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
child.on('error', () => { if (done) {
|
|
90
|
+
return;
|
|
91
|
+
} done = true; clearTimeout(timer); resolve([]); });
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the latest OpenCode session ID for this workspace directory by querying
|
|
96
|
+
* `opencode session list`. No tokens consumed — purely a metadata read.
|
|
97
|
+
*
|
|
98
|
+
* @param notBefore Epoch-ms timestamp — ignore sessions created before this
|
|
99
|
+
* time (used after "New Session" to skip the old session).
|
|
100
|
+
*/
|
|
101
|
+
function getLatestOpenCodeSessionId(cwd, log, notBefore = 0) {
|
|
102
|
+
return new Promise(resolve => {
|
|
103
|
+
let done = false;
|
|
104
|
+
let stdout = '';
|
|
105
|
+
// Use spawn with detached=true so the child gets its own process group.
|
|
106
|
+
// On timeout we kill the entire group (SIGKILL) to avoid leaving the
|
|
107
|
+
// opencode binary alive as a zombie when the shell wrapper exits.
|
|
108
|
+
const child = (0, child_process_1.spawn)('opencode', ['session', 'list', '-n', '10', '--format', 'json'], {
|
|
109
|
+
cwd,
|
|
110
|
+
detached: true,
|
|
111
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
112
|
+
});
|
|
113
|
+
child.unref(); // don't prevent extension host from exiting
|
|
114
|
+
const timer = setTimeout(() => {
|
|
115
|
+
if (done) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
done = true;
|
|
119
|
+
try {
|
|
120
|
+
if (child.pid !== undefined) {
|
|
121
|
+
process.kill(-child.pid, 'SIGKILL');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch { /* process may have already exited */ }
|
|
125
|
+
resolve(undefined);
|
|
126
|
+
}, 10_000);
|
|
127
|
+
child.stdout?.on('data', (chunk) => { stdout += chunk.toString('utf8'); });
|
|
128
|
+
child.on('close', () => {
|
|
129
|
+
if (done) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
done = true;
|
|
133
|
+
clearTimeout(timer);
|
|
134
|
+
try {
|
|
135
|
+
const sessions = JSON.parse(stdout);
|
|
136
|
+
// Normalise a path for comparison, resolving symlinks/realpath when the
|
|
137
|
+
// path exists (opencode may record a realpath, e.g. /tmp → /private/tmp,
|
|
138
|
+
// while the loop passes the raw cwd — an exact string match then misses
|
|
139
|
+
// every session). Fall back to the lexical normalisation when realpath
|
|
140
|
+
// fails (path gone / permission).
|
|
141
|
+
const norm = (p) => {
|
|
142
|
+
let resolved = p;
|
|
143
|
+
try {
|
|
144
|
+
resolved = (0, fs_1.realpathSync)(p);
|
|
145
|
+
}
|
|
146
|
+
catch { /* keep lexical */ }
|
|
147
|
+
return resolved.toLowerCase().replace(/\\/g, '/').replace(/\/+$/, '');
|
|
148
|
+
};
|
|
149
|
+
const cwdNorm = norm(cwd);
|
|
150
|
+
const inWindow = (s) => !notBefore || (s.created ?? 0) > notBefore;
|
|
151
|
+
const byRecency = (a, b) => b.updated - a.updated;
|
|
152
|
+
// Primary: sessions whose directory resolves to this workspace.
|
|
153
|
+
let match = sessions.filter(s => norm(s.directory) === cwdNorm).filter(inWindow).sort(byRecency)[0];
|
|
154
|
+
// Fallback: a directory that is a prefix of, or contained by, this cwd
|
|
155
|
+
// (handles nested-root / worktree differences) — still scoped, never global.
|
|
156
|
+
if (!match) {
|
|
157
|
+
match = sessions
|
|
158
|
+
.filter(s => { const d = norm(s.directory); return d && (cwdNorm.startsWith(d + '/') || d.startsWith(cwdNorm + '/')); })
|
|
159
|
+
.filter(inWindow).sort(byRecency)[0];
|
|
160
|
+
}
|
|
161
|
+
const id = match?.id;
|
|
162
|
+
log(`OpenCode session list: ${id ?? 'none found for this directory'} (of ${sessions.length} total)${notBefore ? ` (notBefore=${new Date(notBefore).toISOString()})` : ''}`);
|
|
163
|
+
resolve(id);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
resolve(undefined);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
child.on('error', () => {
|
|
170
|
+
if (done) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
done = true;
|
|
174
|
+
clearTimeout(timer);
|
|
175
|
+
resolve(undefined);
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Run `/compact` on an existing OpenCode session to summarise conversation
|
|
181
|
+
* history and free up context window space. Returns a promise that resolves
|
|
182
|
+
* when the compact command exits (success or failure — caller decides whether
|
|
183
|
+
* to treat an error as fatal).
|
|
184
|
+
*/
|
|
185
|
+
function runOpenCodeCompact(sessionId, cwd, log) {
|
|
186
|
+
return new Promise((resolve, reject) => {
|
|
187
|
+
const cmd = `opencode run -s ${sessionId} /compact`;
|
|
188
|
+
log(`OpenCode compact: ${cmd}`);
|
|
189
|
+
(0, child_process_1.exec)(cmd, { cwd, encoding: 'utf8', timeout: 120_000 }, (err) => {
|
|
190
|
+
if (err) {
|
|
191
|
+
reject(err);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
resolve();
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/providers/opencode/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './cli';
|
|
2
|
+
export * from './sdk';
|
|
3
|
+
export * from './ProviderEvents';
|
|
4
|
+
export * from './ProviderModels';
|
|
5
|
+
export * from './ProviderSessions';
|
|
6
|
+
export * from './ProviderState';
|
|
7
|
+
export * from './ProviderNormalizer';
|
|
8
|
+
export * from './ProviderUsage';
|
|
9
|
+
export * from './ProviderManager';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
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
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./cli"), exports);
|
|
18
|
+
__exportStar(require("./sdk"), exports);
|
|
19
|
+
__exportStar(require("./ProviderEvents"), exports);
|
|
20
|
+
__exportStar(require("./ProviderModels"), exports);
|
|
21
|
+
__exportStar(require("./ProviderSessions"), exports);
|
|
22
|
+
__exportStar(require("./ProviderState"), exports);
|
|
23
|
+
__exportStar(require("./ProviderNormalizer"), exports);
|
|
24
|
+
__exportStar(require("./ProviderUsage"), exports);
|
|
25
|
+
__exportStar(require("./ProviderManager"), exports);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/opencode/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,wCAAsB;AACtB,mDAAiC;AACjC,mDAAiC;AACjC,qDAAmC;AACnC,kDAAgC;AAChC,uDAAqC;AACrC,kDAAgC;AAChC,oDAAkC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** True while an opencode-sdk turn is running for the given workspace root. */
|
|
2
|
+
export declare function isOpencodeSdkBusy(root: string): boolean;
|
|
3
|
+
/** Current tool activity label for the given root (undefined = idle). */
|
|
4
|
+
export declare function getOpencodeSdkActivity(root: string): string | undefined;
|
|
5
|
+
export declare function getOpencodeSdkLatestSessionId(root: string): string | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Steer the live OpenCode SDK session MID-TURN. Unlike opencode-cli / grok /
|
|
8
|
+
* copilot-cli (one-shot subprocesses), the SDK keeps a persistent in-process
|
|
9
|
+
* server + session, so a new prompt sent to the live session while it's busy is
|
|
10
|
+
* picked up by the running turn (opencode interrupts and continues with the added
|
|
11
|
+
* message, keeping the conversation context). Returns true only when there's a
|
|
12
|
+
* live/busy session to inject into; false otherwise so the caller falls back to
|
|
13
|
+
* the durable TODO queue (at-least-once delivery preserved).
|
|
14
|
+
*/
|
|
15
|
+
export declare function steerOpencodeSdk(root: string, text: string, log: (msg: string) => void): Promise<boolean>;
|
|
16
|
+
export declare function sendOpencodeSdkPrompt(root: string,
|
|
17
|
+
/** Absolute path to the combined agent-profile + message file. */
|
|
18
|
+
promptFilePath: string, resumeSessionId: string | undefined, stdoutFile: string, exitFile: string, log: (msg: string) => void,
|
|
19
|
+
/** Optional model string "providerID/modelID" */
|
|
20
|
+
model?: string,
|
|
21
|
+
/** Optional callback invoked once to reveal the output panel to the user. */
|
|
22
|
+
showOutput?: () => void): void;
|
|
23
|
+
export declare function runOpencodeSdkCompact(root: string, log: (msg: string) => void): Promise<void>;
|
|
24
|
+
export declare function closeOpencodeSdkClient(root: string, log: (msg: string) => void): void;
|
|
25
|
+
/**
|
|
26
|
+
* Force-clear the busy flag for a root — used by the task loop when it detects
|
|
27
|
+
* via hooks-events.jsonl that the server was disposed while the SDK async was
|
|
28
|
+
* still running (i.e. the for-await loop never received the disposed event).
|
|
29
|
+
*/
|
|
30
|
+
export declare function forceIdleOpencodeSdk(root: string): void;
|
|
31
|
+
/** Close all open SDK servers — called on extension deactivate to avoid orphaned processes. */
|
|
32
|
+
export declare function closeAllOpencodeSdkClients(): void;
|