@myagentroam/node 0.1.4 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/dist/capabilities.d.ts +2 -0
- package/dist/capabilities.js +15 -4
- package/dist/claude-agent-sdk.d.ts +3 -1
- package/dist/claude-agent-sdk.js +9 -2
- package/dist/claude-channel.js +0 -1
- package/dist/codex-app-server.d.ts +1 -0
- package/dist/codex-app-server.js +8 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.js +18 -2
- package/dist/connector/node-connector-options.d.ts +3 -0
- package/dist/connector/node-connector-options.js +0 -1
- package/dist/connector/node-operation-router.js +0 -1
- package/dist/connector.d.ts +3 -0
- package/dist/connector.js +109 -7
- package/dist/control-outbound-scheduler.js +0 -1
- package/dist/database.d.ts +4 -0
- package/dist/database.js +14 -9
- package/dist/event-buffer.js +0 -1
- package/dist/fake-runner.js +0 -1
- package/dist/health.js +0 -1
- package/dist/main.js +6 -1
- package/dist/migrations/v001.js +0 -1
- package/dist/migrations/v002.js +0 -1
- package/dist/migrations/v003.d.ts +4 -0
- package/dist/migrations/v003.js +44 -0
- package/dist/native-jsonl-reader.js +0 -1
- package/dist/native-session-history.d.ts +19 -1
- package/dist/native-session-history.js +65 -3
- package/dist/opencode-runtime.d.ts +33 -0
- package/dist/opencode-runtime.js +80 -0
- package/dist/opencode-server.d.ts +47 -0
- package/dist/opencode-server.js +250 -0
- package/dist/operational.js +10 -3
- package/dist/process-tree.js +0 -1
- package/dist/runner/abstract-runner.d.ts +7 -2
- package/dist/runner/abstract-runner.js +17 -2
- package/dist/runner/claude/managed-run-controller.js +20 -1
- package/dist/runner/claude-code-runner.d.ts +3 -1
- package/dist/runner/claude-code-runner.js +26 -8
- package/dist/runner/codex/conversation-parser.d.ts +1 -3
- package/dist/runner/codex/conversation-parser.js +174 -34
- package/dist/runner/codex/managed-run-controller.d.ts +2 -1
- package/dist/runner/codex/managed-run-controller.js +13 -4
- package/dist/runner/codex-runner.d.ts +4 -0
- package/dist/runner/codex-runner.js +27 -4
- package/dist/runner/fake-test-runner.js +0 -1
- package/dist/runner/opencode/conversation-parser.d.ts +27 -0
- package/dist/runner/opencode/conversation-parser.js +217 -0
- package/dist/runner/opencode/managed-run-controller.d.ts +76 -0
- package/dist/runner/opencode/managed-run-controller.js +451 -0
- package/dist/runner/opencode-runner.d.ts +60 -0
- package/dist/runner/opencode-runner.js +330 -0
- package/dist/runner/runner-registry.d.ts +3 -1
- package/dist/runner/runner-registry.js +12 -3
- package/dist/runner-command-engine.js +0 -1
- package/dist/runner-profiles.d.ts +4 -0
- package/dist/runner-profiles.js +76 -3
- package/dist/runner-usage.js +0 -1
- package/dist/runtime-state.js +20 -9
- package/dist/service/attachment-domain-state.js +0 -1
- package/dist/service/conversation-history-service.js +0 -1
- package/dist/service/external-session-resume-service.js +0 -1
- package/dist/service/fake-managed-run-service.js +0 -1
- package/dist/service/managed-runner-session-service.d.ts +3 -1
- package/dist/service/managed-runner-session-service.js +8 -4
- package/dist/service/native-session-projection-service.d.ts +2 -1
- package/dist/service/native-session-projection-service.js +8 -5
- package/dist/service/native-session-watch-service.js +0 -1
- package/dist/service/node-connection-lifecycle-service.js +3 -2
- package/dist/service/node-control-channel.d.ts +1 -1
- package/dist/service/node-control-channel.js +5 -4
- package/dist/service/node-control-message-service.js +0 -1
- package/dist/service/node-request-service.js +0 -1
- package/dist/service/node-run-event-bridge.d.ts +2 -0
- package/dist/service/node-run-event-bridge.js +4 -1
- package/dist/service/node-terminal-channel.js +16 -10
- package/dist/service/node-upgrade-coordinator.d.ts +29 -0
- package/dist/service/node-upgrade-coordinator.js +137 -0
- package/dist/service/node-workspace-coordinator.js +0 -1
- package/dist/service/run-attachment-service.js +0 -1
- package/dist/service/run-domain-state.js +0 -1
- package/dist/service/run-event-service.js +0 -1
- package/dist/service/run-workbench-service.js +0 -1
- package/dist/service/runner-channel-message-service.js +0 -1
- package/dist/service/runner-interaction-service.js +2 -1
- package/dist/service/runner-service.d.ts +5 -4
- package/dist/service/runner-service.js +19 -6
- package/dist/service/session-catalog-service.d.ts +16 -1
- package/dist/service/session-catalog-service.js +82 -3
- package/dist/service/session-command-service.js +0 -1
- package/dist/service/session-context-service.js +0 -1
- package/dist/service/session-domain-state.js +0 -1
- package/dist/service/session-identity-service.js +0 -1
- package/dist/service/session-lifecycle-service.js +13 -7
- package/dist/service/session-message-service.js +0 -1
- package/dist/service/session-presentation-service.js +0 -1
- package/dist/service/session-query-service.js +0 -1
- package/dist/service/terminal-relay-state.js +0 -1
- package/dist/service/terminal-service.js +0 -1
- package/dist/service/workbench-event-service.js +0 -1
- package/dist/service/workbench-manifest-service.d.ts +5 -4
- package/dist/service/workbench-manifest-service.js +3 -2
- package/dist/service/workspace-change-service.js +2 -2
- package/dist/service/workspace-content-search-service.d.ts +14 -0
- package/dist/service/workspace-content-search-service.js +477 -0
- package/dist/service/workspace-domain-state.js +0 -1
- package/dist/service/workspace-file-service.d.ts +3 -0
- package/dist/service/workspace-file-service.js +35 -3
- package/dist/service/workspace-queue-workbench-service.js +0 -1
- package/dist/service/workspace-service.js +23 -10
- package/dist/service/workspace-session-service.js +0 -1
- package/dist/service/workspace-upload-service.js +0 -1
- package/dist/service/workspace-watch-service.js +0 -1
- package/dist/service/workspace-workbench-service.d.ts +9 -0
- package/dist/service/workspace-workbench-service.js +69 -2
- package/dist/service.js +2 -3
- package/dist/storage.js +0 -1
- package/dist/supervisor.d.ts +1 -0
- package/dist/supervisor.js +154 -0
- package/dist/terminal.js +0 -1
- package/dist/util/node-operation-parsers.d.ts +1 -0
- package/dist/util/node-operation-parsers.js +3 -1
- package/dist/util/runner-native-session-parsers.js +117 -73
- package/dist/util/secret-environment.js +0 -1
- package/dist/workspace.d.ts +62 -2
- package/dist/workspace.js +539 -57
- package/package.json +3 -2
- package/dist/capabilities.js.map +0 -1
- package/dist/claude-agent-sdk.js.map +0 -1
- package/dist/claude-channel.js.map +0 -1
- package/dist/codex-app-server.js.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/connector/node-connector-options.js.map +0 -1
- package/dist/connector/node-operation-router.js.map +0 -1
- package/dist/connector.js.map +0 -1
- package/dist/control-outbound-scheduler.js.map +0 -1
- package/dist/database.js.map +0 -1
- package/dist/event-buffer.js.map +0 -1
- package/dist/fake-runner.js.map +0 -1
- package/dist/health.js.map +0 -1
- package/dist/main.js.map +0 -1
- package/dist/migrations/v001.js.map +0 -1
- package/dist/migrations/v002.js.map +0 -1
- package/dist/native-jsonl-reader.js.map +0 -1
- package/dist/native-session-history.js.map +0 -1
- package/dist/operational.js.map +0 -1
- package/dist/process-tree.js.map +0 -1
- package/dist/runner/abstract-runner.js.map +0 -1
- package/dist/runner/claude/managed-run-controller.js.map +0 -1
- package/dist/runner/claude-code-runner.js.map +0 -1
- package/dist/runner/codex/conversation-parser.js.map +0 -1
- package/dist/runner/codex/managed-run-controller.js.map +0 -1
- package/dist/runner/codex-runner.js.map +0 -1
- package/dist/runner/fake-test-runner.js.map +0 -1
- package/dist/runner/runner-registry.js.map +0 -1
- package/dist/runner-command-engine.js.map +0 -1
- package/dist/runner-profiles.js.map +0 -1
- package/dist/runner-usage.js.map +0 -1
- package/dist/runtime-state.js.map +0 -1
- package/dist/service/attachment-domain-state.js.map +0 -1
- package/dist/service/conversation-history-service.js.map +0 -1
- package/dist/service/external-session-resume-service.js.map +0 -1
- package/dist/service/fake-managed-run-service.js.map +0 -1
- package/dist/service/managed-runner-session-service.js.map +0 -1
- package/dist/service/native-session-projection-service.js.map +0 -1
- package/dist/service/native-session-watch-service.js.map +0 -1
- package/dist/service/node-connection-lifecycle-service.js.map +0 -1
- package/dist/service/node-control-channel.js.map +0 -1
- package/dist/service/node-control-message-service.js.map +0 -1
- package/dist/service/node-request-service.js.map +0 -1
- package/dist/service/node-run-event-bridge.js.map +0 -1
- package/dist/service/node-terminal-channel.js.map +0 -1
- package/dist/service/node-workspace-coordinator.js.map +0 -1
- package/dist/service/run-attachment-service.js.map +0 -1
- package/dist/service/run-domain-state.js.map +0 -1
- package/dist/service/run-event-service.js.map +0 -1
- package/dist/service/run-workbench-service.js.map +0 -1
- package/dist/service/runner-channel-message-service.js.map +0 -1
- package/dist/service/runner-interaction-service.js.map +0 -1
- package/dist/service/runner-service.js.map +0 -1
- package/dist/service/session-catalog-service.js.map +0 -1
- package/dist/service/session-command-service.js.map +0 -1
- package/dist/service/session-context-service.js.map +0 -1
- package/dist/service/session-domain-state.js.map +0 -1
- package/dist/service/session-identity-service.js.map +0 -1
- package/dist/service/session-lifecycle-service.js.map +0 -1
- package/dist/service/session-message-service.js.map +0 -1
- package/dist/service/session-presentation-service.js.map +0 -1
- package/dist/service/session-query-service.js.map +0 -1
- package/dist/service/terminal-relay-state.js.map +0 -1
- package/dist/service/terminal-service.js.map +0 -1
- package/dist/service/workbench-event-service.js.map +0 -1
- package/dist/service/workbench-manifest-service.js.map +0 -1
- package/dist/service/workspace-change-service.js.map +0 -1
- package/dist/service/workspace-domain-state.js.map +0 -1
- package/dist/service/workspace-file-service.js.map +0 -1
- package/dist/service/workspace-queue-workbench-service.js.map +0 -1
- package/dist/service/workspace-service.js.map +0 -1
- package/dist/service/workspace-session-service.js.map +0 -1
- package/dist/service/workspace-upload-service.js.map +0 -1
- package/dist/service/workspace-watch-service.js.map +0 -1
- package/dist/service/workspace-workbench-service.js.map +0 -1
- package/dist/service.js.map +0 -1
- package/dist/storage.js.map +0 -1
- package/dist/terminal.js.map +0 -1
- package/dist/util/node-operation-parsers.js.map +0 -1
- package/dist/util/runner-native-session-parsers.js.map +0 -1
- package/dist/util/secret-environment.js.map +0 -1
- package/dist/workspace.js.map +0 -1
|
@@ -2,6 +2,7 @@ import { removeNativeSession } from '../native-session-history.js';
|
|
|
2
2
|
import { isTerminalRunStatus, sessionPage } from '../util/node-operation-parsers.js';
|
|
3
3
|
export class SessionCatalogService {
|
|
4
4
|
options;
|
|
5
|
+
rewindQueue = Promise.resolve();
|
|
5
6
|
constructor(options) {
|
|
6
7
|
this.options = options;
|
|
7
8
|
}
|
|
@@ -9,7 +10,8 @@ export class SessionCatalogService {
|
|
|
9
10
|
return {
|
|
10
11
|
'session.list': (data) => this.list(record(data)),
|
|
11
12
|
'session.resume': (data) => this.resume(record(data)),
|
|
12
|
-
'session.remove': (data) => this.remove(record(data))
|
|
13
|
+
'session.remove': (data) => this.remove(record(data)),
|
|
14
|
+
'session.rewind': (data) => this.enqueueRewind(record(data))
|
|
13
15
|
};
|
|
14
16
|
}
|
|
15
17
|
async list(input) {
|
|
@@ -104,6 +106,65 @@ export class SessionCatalogService {
|
|
|
104
106
|
: {})
|
|
105
107
|
};
|
|
106
108
|
}
|
|
109
|
+
enqueueRewind(input) {
|
|
110
|
+
const result = this.rewindQueue.then(() => this.rewind(input));
|
|
111
|
+
this.rewindQueue = result.then(() => undefined, () => undefined);
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
async rewind(input) {
|
|
115
|
+
if (!validRewindId(input.sessionId, 128) ||
|
|
116
|
+
!validRewindId(input.turnId, 128) ||
|
|
117
|
+
(input.position !== 'BEFORE' && input.position !== 'AFTER') ||
|
|
118
|
+
(input.boundary !== null && !validRewindId(input.boundary, 256)))
|
|
119
|
+
throw new Error('SESSION_REWIND_INVALID');
|
|
120
|
+
const source = this.options.runtime.getAgentSession(input.sessionId) ??
|
|
121
|
+
(await this.options.projection.resolve(input.sessionId));
|
|
122
|
+
if (source === undefined)
|
|
123
|
+
throw new Error('SESSION_NOT_FOUND');
|
|
124
|
+
if (source.externalSessionId === null)
|
|
125
|
+
throw new Error('SESSION_REWIND_UNAVAILABLE');
|
|
126
|
+
const presented = this.options.present(source);
|
|
127
|
+
if (!presented.runtime?.capabilities?.includes('session.rewind'))
|
|
128
|
+
throw new Error('SESSION_REWIND_UNAVAILABLE');
|
|
129
|
+
const turn = await this.findTurn(source, input.turnId);
|
|
130
|
+
const expected = input.position === 'BEFORE' ? turn?.rewind?.before : turn?.rewind?.after;
|
|
131
|
+
if (turn === undefined || expected !== input.boundary)
|
|
132
|
+
throw new Error('SESSION_REWIND_TARGET_INVALID');
|
|
133
|
+
const title = rewindTitle(source.customTitle ?? source.runnerTitle ?? '未命名会话', this.options.runtime
|
|
134
|
+
.listAgentSessions()
|
|
135
|
+
.flatMap((candidate) => [candidate.customTitle ?? candidate.runnerTitle].filter(isString)));
|
|
136
|
+
const runner = this.options.runners.require(source.runner);
|
|
137
|
+
const nativeId = await runner.forkNative(source, input.boundary, title);
|
|
138
|
+
const session = this.options.runtime.createAgentSession({
|
|
139
|
+
workspaceId: source.workspaceId,
|
|
140
|
+
runner: source.runner,
|
|
141
|
+
cwd: source.cwd,
|
|
142
|
+
nativeControl: 'MAR_MANAGED',
|
|
143
|
+
...(nativeId === null ? {} : { externalSessionId: nativeId }),
|
|
144
|
+
...(source.model === null ? {} : { model: source.model }),
|
|
145
|
+
...(source.effort === null ? {} : { effort: source.effort }),
|
|
146
|
+
...(source.access === null ? {} : { access: source.access }),
|
|
147
|
+
title
|
|
148
|
+
});
|
|
149
|
+
if (nativeId !== null)
|
|
150
|
+
runner.rememberManagedNative(session, nativeId);
|
|
151
|
+
this.options.emitSession(session);
|
|
152
|
+
return { session: this.options.present(session) };
|
|
153
|
+
}
|
|
154
|
+
async findTurn(session, turnId) {
|
|
155
|
+
let cursor;
|
|
156
|
+
for (let pageIndex = 0; pageIndex < 100; pageIndex += 1) {
|
|
157
|
+
const page = await this.options.history(session, {
|
|
158
|
+
...(cursor === undefined ? {} : { cursor }),
|
|
159
|
+
limit: 100
|
|
160
|
+
});
|
|
161
|
+
const turn = page.turns.find((candidate) => candidate.id === turnId);
|
|
162
|
+
if (turn !== undefined || page.nextCursor === null)
|
|
163
|
+
return turn;
|
|
164
|
+
cursor = page.nextCursor;
|
|
165
|
+
}
|
|
166
|
+
throw new Error('SESSION_REWIND_TARGET_INVALID');
|
|
167
|
+
}
|
|
107
168
|
async remove(input) {
|
|
108
169
|
if (typeof input.sessionId !== 'string')
|
|
109
170
|
throw new Error('SESSION_INVALID');
|
|
@@ -123,9 +184,11 @@ export class SessionCatalogService {
|
|
|
123
184
|
throw new Error('SESSION_ACTIVE');
|
|
124
185
|
}
|
|
125
186
|
const nativeIds = this.options.nativeIds(session);
|
|
187
|
+
const runner = this.options.runners.require(session.runner);
|
|
126
188
|
for (const externalSessionId of nativeIds) {
|
|
127
189
|
try {
|
|
128
|
-
await
|
|
190
|
+
if (!(await runner.removeNative(session, externalSessionId)))
|
|
191
|
+
await removeNativeSession(session.runner, session.cwd, externalSessionId);
|
|
129
192
|
}
|
|
130
193
|
catch (error) {
|
|
131
194
|
if (!(error instanceof Error) || error.message !== 'NATIVE_TRANSCRIPT_UNAVAILABLE')
|
|
@@ -137,9 +200,25 @@ export class SessionCatalogService {
|
|
|
137
200
|
return { deleted: true };
|
|
138
201
|
}
|
|
139
202
|
}
|
|
203
|
+
export function rewindTitle(sourceTitle, existingTitles = []) {
|
|
204
|
+
const base = sourceTitle.replace(/ \(Copy \d+\)$/u, '');
|
|
205
|
+
const existing = new Set(existingTitles);
|
|
206
|
+
for (let sequence = 1; sequence < Number.MAX_SAFE_INTEGER; sequence += 1) {
|
|
207
|
+
const suffix = ` (Copy ${sequence})`;
|
|
208
|
+
const candidate = `${base.slice(0, 160 - suffix.length)}${suffix}`;
|
|
209
|
+
if (!existing.has(candidate))
|
|
210
|
+
return candidate;
|
|
211
|
+
}
|
|
212
|
+
throw new Error('SESSION_REWIND_TITLE_UNAVAILABLE');
|
|
213
|
+
}
|
|
214
|
+
function validRewindId(value, maximum) {
|
|
215
|
+
return typeof value === 'string' && value.length > 0 && value.length <= maximum;
|
|
216
|
+
}
|
|
217
|
+
function isString(value) {
|
|
218
|
+
return value !== null;
|
|
219
|
+
}
|
|
140
220
|
function record(value) {
|
|
141
221
|
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
142
222
|
return {};
|
|
143
223
|
return value;
|
|
144
224
|
}
|
|
145
|
-
//# sourceMappingURL=session-catalog-service.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { validSessionOption, validSessionTitle } from '../util/node-operation-parsers.js';
|
|
1
|
+
import { validSessionEffort, validSessionOption, validSessionTitle } from '../util/node-operation-parsers.js';
|
|
2
2
|
import { isPlainRecord } from '../util/node-operation-parsers.js';
|
|
3
3
|
export class SessionLifecycleService {
|
|
4
4
|
options;
|
|
@@ -68,21 +68,25 @@ export class SessionLifecycleService {
|
|
|
68
68
|
(input.externalSessionId !== undefined && typeof input.externalSessionId !== 'string') ||
|
|
69
69
|
!validSessionTitle(input.title) ||
|
|
70
70
|
!validSessionOption(input.model) ||
|
|
71
|
-
!
|
|
71
|
+
!validSessionEffort(input.effort) ||
|
|
72
72
|
!validSessionOption(input.access))
|
|
73
73
|
throw new Error('SESSION_INVALID');
|
|
74
74
|
const database = this.options.database();
|
|
75
|
+
const workspace = database.getWorkspace(input.workspaceId);
|
|
76
|
+
if (workspace === undefined)
|
|
77
|
+
throw new Error('WORKSPACE_NOT_FOUND');
|
|
75
78
|
const saved = database
|
|
76
79
|
.getRunnerDefaults()
|
|
77
|
-
.find((value) => value.runner === runner.name &&
|
|
78
|
-
|
|
80
|
+
.find((value) => value.runner === runner.name &&
|
|
81
|
+
this.options.runners.supportsConfiguration(value, workspace));
|
|
82
|
+
const fallback = runner.defaultConfiguration(workspace);
|
|
79
83
|
const configuration = {
|
|
80
84
|
runner: runner.name,
|
|
81
85
|
model: typeof input.model === 'string' ? input.model : (saved?.model ?? fallback.model),
|
|
82
86
|
effort: typeof input.effort === 'string' ? input.effort : (saved?.effort ?? fallback.effort),
|
|
83
87
|
access: typeof input.access === 'string' ? input.access : (saved?.access ?? fallback.access)
|
|
84
88
|
};
|
|
85
|
-
if (!this.options.runners.supportsConfiguration(configuration))
|
|
89
|
+
if (!this.options.runners.supportsConfiguration(configuration, workspace))
|
|
86
90
|
throw new Error('RUNNER_CONFIGURATION_UNSUPPORTED');
|
|
87
91
|
const session = this.options.runtime.createAgentSession({
|
|
88
92
|
workspaceId: input.workspaceId,
|
|
@@ -107,6 +111,7 @@ export class SessionLifecycleService {
|
|
|
107
111
|
if (typeof input.sessionId !== 'string' ||
|
|
108
112
|
typeof input.model !== 'string' ||
|
|
109
113
|
typeof input.effort !== 'string' ||
|
|
114
|
+
!validSessionEffort(input.effort) ||
|
|
110
115
|
typeof input.access !== 'string')
|
|
111
116
|
throw new Error('SESSION_INVALID');
|
|
112
117
|
const current = this.options.runtime.getAgentSession(input.sessionId) ??
|
|
@@ -119,7 +124,9 @@ export class SessionLifecycleService {
|
|
|
119
124
|
effort: input.effort,
|
|
120
125
|
access: input.access
|
|
121
126
|
};
|
|
122
|
-
|
|
127
|
+
const workspace = this.options.database().getWorkspace(current.workspaceId);
|
|
128
|
+
if (workspace === undefined ||
|
|
129
|
+
!this.options.runners.supportsConfiguration(configuration, workspace))
|
|
123
130
|
throw new Error('RUNNER_CONFIGURATION_UNSUPPORTED');
|
|
124
131
|
const session = this.options.runtime.updateAgentSessionConfiguration({
|
|
125
132
|
sessionId: current.id,
|
|
@@ -233,4 +240,3 @@ export class SessionLifecycleService {
|
|
|
233
240
|
function record(data) {
|
|
234
241
|
return data !== null && typeof data === 'object' ? data : {};
|
|
235
242
|
}
|
|
236
|
-
//# sourceMappingURL=session-lifecycle-service.js.map
|
|
@@ -27,7 +27,7 @@ export declare class WorkbenchManifestService {
|
|
|
27
27
|
maxPageSize: number;
|
|
28
28
|
};
|
|
29
29
|
runners: readonly {
|
|
30
|
-
runner: "codex" | "claude-code";
|
|
30
|
+
runner: "codex" | "claude-code" | "opencode";
|
|
31
31
|
capabilities: string[];
|
|
32
32
|
models: {
|
|
33
33
|
id: string;
|
|
@@ -40,14 +40,14 @@ export declare class WorkbenchManifestService {
|
|
|
40
40
|
description: string;
|
|
41
41
|
}[];
|
|
42
42
|
commands: {
|
|
43
|
+
id: string;
|
|
43
44
|
available: boolean;
|
|
44
|
-
runner: "codex" | "claude-code";
|
|
45
|
+
runner: "codex" | "claude-code" | "opencode";
|
|
45
46
|
reasonCode: string | null;
|
|
46
|
-
id: string;
|
|
47
47
|
label: string;
|
|
48
48
|
description: string;
|
|
49
49
|
inputHint: string;
|
|
50
|
-
source: "CODEX_APP_SERVER" | "CLAUDE_AGENT_SDK";
|
|
50
|
+
source: "CODEX_APP_SERVER" | "CLAUDE_AGENT_SDK" | "OPENCODE_SERVER";
|
|
51
51
|
interaction: "RUNNER_TEXT" | "IMMEDIATE_ACTION" | "TOGGLE" | "VALUE";
|
|
52
52
|
stateLabel?: string | undefined;
|
|
53
53
|
}[];
|
|
@@ -67,6 +67,7 @@ export declare class WorkbenchManifestService {
|
|
|
67
67
|
reasonCode: null;
|
|
68
68
|
supportsCurrentChanges: boolean;
|
|
69
69
|
supportsTurnChanges: boolean;
|
|
70
|
+
supportsHistory: boolean;
|
|
70
71
|
maxDiffBytes: number;
|
|
71
72
|
};
|
|
72
73
|
terminal: {
|
|
@@ -3,7 +3,8 @@ function revisionFor(capabilities) {
|
|
|
3
3
|
platform: capabilities.platform,
|
|
4
4
|
architecture: capabilities.architecture,
|
|
5
5
|
codex: capabilities.codex,
|
|
6
|
-
claudeCode: capabilities.claudeCode
|
|
6
|
+
claudeCode: capabilities.claudeCode,
|
|
7
|
+
openCode: capabilities.openCode
|
|
7
8
|
});
|
|
8
9
|
let hash = 2_166_136_261;
|
|
9
10
|
for (const character of source)
|
|
@@ -50,6 +51,7 @@ export class WorkbenchManifestService {
|
|
|
50
51
|
reasonCode: null,
|
|
51
52
|
supportsCurrentChanges: true,
|
|
52
53
|
supportsTurnChanges: true,
|
|
54
|
+
supportsHistory: true,
|
|
53
55
|
maxDiffBytes: 512 * 1024
|
|
54
56
|
},
|
|
55
57
|
terminal: {
|
|
@@ -66,4 +68,3 @@ export class WorkbenchManifestService {
|
|
|
66
68
|
};
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
|
-
//# sourceMappingURL=workbench-manifest-service.js.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { basename, posix } from 'node:path';
|
|
1
2
|
import { isWorkspaceChangeVisible, listInitializedSubmodulePaths, readCurrentChangesSummary, resolveGitRepository } from '../workspace.js';
|
|
2
3
|
const CACHE_TTL_MS = 5_000;
|
|
3
4
|
export class WorkspaceChangeService {
|
|
@@ -40,7 +41,7 @@ export class WorkspaceChangeService {
|
|
|
40
41
|
.map(({ change }) => change);
|
|
41
42
|
return {
|
|
42
43
|
repositoryPath,
|
|
43
|
-
repositoryName: repositoryPath === '' ?
|
|
44
|
+
repositoryName: repositoryPath === '' ? basename(repository) : posix.basename(repositoryPath),
|
|
44
45
|
branch: summary.branch,
|
|
45
46
|
changes
|
|
46
47
|
};
|
|
@@ -83,4 +84,3 @@ export class WorkspaceChangeService {
|
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
|
-
//# sourceMappingURL=workspace-change-service.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { WorkspaceContentSearch } from '@myagentroam/protocol';
|
|
2
|
+
import type { NodeWorkspace } from '../database.js';
|
|
3
|
+
import type { WorkspaceFileService } from './workspace-file-service.js';
|
|
4
|
+
export declare class WorkspaceContentSearchService {
|
|
5
|
+
private readonly files;
|
|
6
|
+
private readonly platform;
|
|
7
|
+
private readonly pending;
|
|
8
|
+
constructor(files: WorkspaceFileService, platform?: NodeJS.Platform);
|
|
9
|
+
search(workspace: NodeWorkspace, input: Record<string, unknown>): Promise<WorkspaceContentSearch>;
|
|
10
|
+
private perform;
|
|
11
|
+
private engines;
|
|
12
|
+
private candidates;
|
|
13
|
+
private nativeSearch;
|
|
14
|
+
}
|