@vybestack/llxprt-code-core 0.10.0 → 0.11.0-nightly.260728.ffaa8d5d7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/config/config.d.ts +20 -0
- package/dist/src/config/config.js +143 -23
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/configBaseCore.d.ts +6 -2
- package/dist/src/config/configBaseCore.js +8 -0
- package/dist/src/config/configBaseCore.js.map +1 -1
- package/dist/src/config/configConstructor.d.ts +2 -0
- package/dist/src/config/configConstructor.js +9 -1
- package/dist/src/config/configConstructor.js.map +1 -1
- package/dist/src/config/configTestHarness.d.ts +8 -6
- package/dist/src/config/configTestHarness.js +10 -4
- package/dist/src/config/configTestHarness.js.map +1 -1
- package/dist/src/config/configTypes.d.ts +7 -2
- package/dist/src/config/configTypes.js +2 -0
- package/dist/src/config/configTypes.js.map +1 -1
- package/dist/src/config/liveTrustTransitionLifecycle.d.ts +35 -0
- package/dist/src/config/liveTrustTransitionLifecycle.js +180 -0
- package/dist/src/config/liveTrustTransitionLifecycle.js.map +1 -0
- package/dist/src/config/schedulerSingleton.d.ts +2 -2
- package/dist/src/config/schedulerSingleton.js.map +1 -1
- package/dist/src/core/compression/types.d.ts +48 -1
- package/dist/src/core/compression/types.js +41 -0
- package/dist/src/core/compression/types.js.map +1 -1
- package/dist/src/core/model-limits.json +96 -0
- package/dist/src/core/model-limits.schema.d.ts +123 -0
- package/dist/src/core/model-limits.schema.js +75 -0
- package/dist/src/core/model-limits.schema.js.map +1 -0
- package/dist/src/core/tokenLimits.d.ts +6 -8
- package/dist/src/core/tokenLimits.js +56 -132
- package/dist/src/core/tokenLimits.js.map +1 -1
- package/dist/src/core/turn.d.ts +20 -3
- package/dist/src/core/turn.js +20 -3
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/hooks/hookRegistry.d.ts +1 -1
- package/dist/src/hooks/hookRegistry.js +3 -1
- package/dist/src/hooks/hookRegistry.js.map +1 -1
- package/dist/src/hooks/hookRunner.d.ts +6 -0
- package/dist/src/hooks/hookRunner.js +22 -6
- package/dist/src/hooks/hookRunner.js.map +1 -1
- package/dist/src/hooks/hookSystem.d.ts +10 -1
- package/dist/src/hooks/hookSystem.js +69 -12
- package/dist/src/hooks/hookSystem.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/llm-types/geminiContent.d.ts +3 -0
- package/dist/src/policy/config.d.ts +4 -2
- package/dist/src/policy/config.js +22 -18
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/recording/ReplayEngine.js +39 -2
- package/dist/src/recording/ReplayEngine.js.map +1 -1
- package/dist/src/recording/SessionDiscovery.d.ts +8 -0
- package/dist/src/recording/SessionDiscovery.js +88 -3
- package/dist/src/recording/SessionDiscovery.js.map +1 -1
- package/dist/src/recording/SessionLockManager.d.ts +3 -0
- package/dist/src/recording/SessionLockManager.js +9 -3
- package/dist/src/recording/SessionLockManager.js.map +1 -1
- package/dist/src/recording/SessionRecordingService.d.ts +14 -1
- package/dist/src/recording/SessionRecordingService.js +27 -3
- package/dist/src/recording/SessionRecordingService.js.map +1 -1
- package/dist/src/recording/index.d.ts +4 -3
- package/dist/src/recording/index.js +4 -3
- package/dist/src/recording/index.js.map +1 -1
- package/dist/src/recording/replay-test-helpers.d.ts +5 -0
- package/dist/src/recording/replay-test-helpers.js +13 -0
- package/dist/src/recording/replay-test-helpers.js.map +1 -1
- package/dist/src/recording/resumeNotFoundMessages.d.ts +56 -0
- package/dist/src/recording/resumeNotFoundMessages.js +64 -0
- package/dist/src/recording/resumeNotFoundMessages.js.map +1 -0
- package/dist/src/recording/resumeSession.js +3 -2
- package/dist/src/recording/resumeSession.js.map +1 -1
- package/dist/src/recording/sessionManagement.d.ts +3 -0
- package/dist/src/recording/sessionManagement.js +38 -19
- package/dist/src/recording/sessionManagement.js.map +1 -1
- package/dist/src/recording/types.d.ts +42 -3
- package/dist/src/recording/types.js +1 -1
- package/dist/src/recording/types.js.map +1 -1
- package/dist/src/runtime/AgentRuntimeLoader.js +2 -1
- package/dist/src/runtime/AgentRuntimeLoader.js.map +1 -1
- package/dist/src/scheduler/liveOutput.d.ts +10 -19
- package/dist/src/scheduler/liveOutput.js +21 -21
- package/dist/src/scheduler/liveOutput.js.map +1 -1
- package/dist/src/scheduler/types.d.ts +2 -2
- package/dist/src/services/history/ContentConverters.d.ts +4 -0
- package/dist/src/services/history/ContentConverters.js +77 -59
- package/dist/src/services/history/ContentConverters.js.map +1 -1
- package/dist/src/services/history/HistoryService.d.ts +13 -1
- package/dist/src/services/history/HistoryService.js +71 -0
- package/dist/src/services/history/HistoryService.js.map +1 -1
- package/dist/src/services/history/IContent.d.ts +10 -0
- package/dist/src/services/history/IContent.js.map +1 -1
- package/dist/src/skills/skillManager.d.ts +11 -1
- package/dist/src/skills/skillManager.js +21 -1
- package/dist/src/skills/skillManager.js.map +1 -1
- package/dist/src/test-utils/mock-tool.d.ts +3 -3
- package/dist/src/test-utils/mock-tool.js.map +1 -1
- package/dist/src/test-utils/tools.d.ts +2 -2
- package/dist/src/test-utils/tools.js.map +1 -1
- package/dist/src/tools-adapters/CoreShellToolHostAdapter.js +1 -6
- package/dist/src/tools-adapters/CoreShellToolHostAdapter.js.map +1 -1
- package/dist/src/utils/browser-profile-discovery.d.ts +40 -0
- package/dist/src/utils/browser-profile-discovery.js +251 -0
- package/dist/src/utils/browser-profile-discovery.js.map +1 -0
- package/dist/src/utils/env.d.ts +12 -0
- package/dist/src/utils/env.js +15 -0
- package/dist/src/utils/env.js.map +1 -0
- package/dist/src/utils/events.d.ts +10 -1
- package/dist/src/utils/events.js +22 -0
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/fileUtils.js +8 -1
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/retry.js +3 -4
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/secure-browser-launcher.d.ts +35 -1
- package/dist/src/utils/secure-browser-launcher.js +341 -1
- package/dist/src/utils/secure-browser-launcher.js.map +1 -1
- package/dist/src/utils/terminalSerializer.d.ts +12 -0
- package/dist/src/utils/terminalSerializer.js.map +1 -1
- package/dist/src/utils/thoughtUtils.d.ts +2 -0
- package/dist/src/utils/thoughtUtils.js.map +1 -1
- package/package.json +13 -9
- package/src/config/config.ts +161 -22
- package/src/config/configBaseCore.ts +10 -2
- package/src/config/configConstructor.ts +11 -0
- package/src/config/configTestHarness.ts +10 -4
- package/src/config/configTypes.ts +6 -1
- package/src/config/liveTrustTransitionLifecycle.ts +250 -0
- package/src/config/schedulerSingleton.ts +2 -5
- package/src/core/compression/types.ts +81 -1
- package/src/core/legacy-model-limits.expected.txt +96 -0
- package/src/core/model-limits.json +96 -0
- package/src/core/model-limits.schema.ts +87 -0
- package/src/core/tokenLimits.ts +73 -147
- package/src/core/turn.ts +20 -3
- package/src/hooks/hookRegistry.ts +3 -1
- package/src/hooks/hookRunner.ts +24 -7
- package/src/hooks/hookSystem.ts +73 -13
- package/src/index.ts +1 -0
- package/src/llm-types/geminiContent.ts +3 -0
- package/src/policy/config.ts +32 -19
- package/src/recording/ReplayEngine.ts +51 -2
- package/src/recording/SessionDiscovery.ts +99 -4
- package/src/recording/SessionLockManager.ts +10 -3
- package/src/recording/SessionRecordingService.ts +36 -3
- package/src/recording/index.ts +19 -2
- package/src/recording/replay-test-helpers.ts +14 -0
- package/src/recording/resumeNotFoundMessages.ts +75 -0
- package/src/recording/resumeSession.ts +3 -1
- package/src/recording/sessionManagement.ts +51 -21
- package/src/recording/types.ts +44 -2
- package/src/runtime/AgentRuntimeLoader.ts +3 -1
- package/src/scheduler/liveOutput.ts +25 -22
- package/src/scheduler/types.ts +5 -2
- package/src/services/history/ContentConverters.ts +91 -68
- package/src/services/history/HistoryService.ts +92 -1
- package/src/services/history/IContent.ts +13 -0
- package/src/skills/skillManager.ts +26 -1
- package/src/test-utils/mock-tool.ts +4 -3
- package/src/test-utils/tools.ts +4 -3
- package/src/tools-adapters/CoreShellToolHostAdapter.ts +1 -7
- package/src/utils/browser-profile-discovery.ts +358 -0
- package/src/utils/env.ts +15 -0
- package/src/utils/events.ts +31 -0
- package/src/utils/fileUtils.ts +11 -1
- package/src/utils/retry.ts +3 -4
- package/src/utils/secure-browser-launcher.ts +500 -2
- package/src/utils/terminalSerializer.ts +9 -0
- package/src/utils/thoughtUtils.ts +2 -0
|
@@ -143,6 +143,19 @@ export function _directoriesChangedLine(seq, directories) {
|
|
|
143
143
|
payload: { directories },
|
|
144
144
|
});
|
|
145
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Build a valid JSONL line for a session_metadata event (issue #1611).
|
|
148
|
+
* The title is either a concrete string or explicit null.
|
|
149
|
+
*/
|
|
150
|
+
export function sessionMetadataLine(seq, title) {
|
|
151
|
+
return JSON.stringify({
|
|
152
|
+
v: 1,
|
|
153
|
+
seq,
|
|
154
|
+
ts: new Date().toISOString(),
|
|
155
|
+
type: 'session_metadata',
|
|
156
|
+
payload: { title },
|
|
157
|
+
});
|
|
158
|
+
}
|
|
146
159
|
/**
|
|
147
160
|
* Write raw JSONL lines to a file.
|
|
148
161
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay-test-helpers.js","sourceRoot":"","sources":["../../../src/recording/replay-test-helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"replay-test-helpers.js","sourceRoot":"","sources":["../../../src/recording/replay-test-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 Vybestack LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* The "session not found"-style messages the resume/discovery flow emits, as
|
|
18
|
+
* shared constants so downstream classifiers (e.g. the Zed ACP loadSession
|
|
19
|
+
* error mapper) can match them WITHOUT string-literal coupling that would
|
|
20
|
+
* silently break if the wording changed. The emitting sites
|
|
21
|
+
* (resumeSession.ts, SessionDiscovery.ts) and every matcher must reference
|
|
22
|
+
* these — never inline copies of the sentences.
|
|
23
|
+
*/
|
|
24
|
+
/** Emitted by resumeSession when the project has no recorded sessions at all. */
|
|
25
|
+
export declare const RESUME_NO_SESSIONS_FOUND = "No sessions found for this project";
|
|
26
|
+
/**
|
|
27
|
+
* Prefix (including the trailing colon) of the
|
|
28
|
+
* SessionDiscovery.resolveSessionRef message for an unknown session reference;
|
|
29
|
+
* the full message appends ` <ref>` (space + ref) after it — see
|
|
30
|
+
* {@link resumeSessionNotFoundMessage}.
|
|
31
|
+
*/
|
|
32
|
+
export declare const RESUME_SESSION_NOT_FOUND_PREFIX = "Session not found for this project:";
|
|
33
|
+
/**
|
|
34
|
+
* Builds the full SessionDiscovery.resolveSessionRef not-found message for a
|
|
35
|
+
* specific reference.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resumeSessionNotFoundMessage(ref: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Prefix of the SessionDiscovery.resolveSessionRef message for a numeric
|
|
40
|
+
* session index outside the listing range; the full message is
|
|
41
|
+
* `Session index <n> out of range (1-<m>)`.
|
|
42
|
+
*/
|
|
43
|
+
export declare const RESUME_SESSION_INDEX_OUT_OF_RANGE_PREFIX = "Session index ";
|
|
44
|
+
/**
|
|
45
|
+
* Builds the full SessionDiscovery.resolveSessionRef out-of-range message for
|
|
46
|
+
* a specific index and session count. `ref` must render as digits (a number,
|
|
47
|
+
* or the digit-only string the caller already validated with /^\d+$/) so the
|
|
48
|
+
* produced message stays matchable by
|
|
49
|
+
* {@link RESUME_SESSION_INDEX_OUT_OF_RANGE_RE}.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resumeSessionIndexOutOfRangeMessage(ref: number | `${number}`, count: number): string;
|
|
52
|
+
/**
|
|
53
|
+
* Matches the out-of-range message shape for classifiers that only have the
|
|
54
|
+
* final (envelope-wrapped) detail string to inspect.
|
|
55
|
+
*/
|
|
56
|
+
export declare const RESUME_SESSION_INDEX_OUT_OF_RANGE_RE: RegExp;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 Vybestack LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* The "session not found"-style messages the resume/discovery flow emits, as
|
|
18
|
+
* shared constants so downstream classifiers (e.g. the Zed ACP loadSession
|
|
19
|
+
* error mapper) can match them WITHOUT string-literal coupling that would
|
|
20
|
+
* silently break if the wording changed. The emitting sites
|
|
21
|
+
* (resumeSession.ts, SessionDiscovery.ts) and every matcher must reference
|
|
22
|
+
* these — never inline copies of the sentences.
|
|
23
|
+
*/
|
|
24
|
+
/** Emitted by resumeSession when the project has no recorded sessions at all. */
|
|
25
|
+
export const RESUME_NO_SESSIONS_FOUND = 'No sessions found for this project';
|
|
26
|
+
/**
|
|
27
|
+
* Prefix (including the trailing colon) of the
|
|
28
|
+
* SessionDiscovery.resolveSessionRef message for an unknown session reference;
|
|
29
|
+
* the full message appends ` <ref>` (space + ref) after it — see
|
|
30
|
+
* {@link resumeSessionNotFoundMessage}.
|
|
31
|
+
*/
|
|
32
|
+
export const RESUME_SESSION_NOT_FOUND_PREFIX = 'Session not found for this project:';
|
|
33
|
+
/**
|
|
34
|
+
* Builds the full SessionDiscovery.resolveSessionRef not-found message for a
|
|
35
|
+
* specific reference.
|
|
36
|
+
*/
|
|
37
|
+
export function resumeSessionNotFoundMessage(ref) {
|
|
38
|
+
return `${RESUME_SESSION_NOT_FOUND_PREFIX} ${ref}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Prefix of the SessionDiscovery.resolveSessionRef message for a numeric
|
|
42
|
+
* session index outside the listing range; the full message is
|
|
43
|
+
* `Session index <n> out of range (1-<m>)`.
|
|
44
|
+
*/
|
|
45
|
+
export const RESUME_SESSION_INDEX_OUT_OF_RANGE_PREFIX = 'Session index ';
|
|
46
|
+
/**
|
|
47
|
+
* Builds the full SessionDiscovery.resolveSessionRef out-of-range message for
|
|
48
|
+
* a specific index and session count. `ref` must render as digits (a number,
|
|
49
|
+
* or the digit-only string the caller already validated with /^\d+$/) so the
|
|
50
|
+
* produced message stays matchable by
|
|
51
|
+
* {@link RESUME_SESSION_INDEX_OUT_OF_RANGE_RE}.
|
|
52
|
+
*/
|
|
53
|
+
export function resumeSessionIndexOutOfRangeMessage(ref, count) {
|
|
54
|
+
if (count <= 0) {
|
|
55
|
+
return RESUME_NO_SESSIONS_FOUND;
|
|
56
|
+
}
|
|
57
|
+
return `${RESUME_SESSION_INDEX_OUT_OF_RANGE_PREFIX}${ref} out of range (1-${count})`;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Matches the out-of-range message shape for classifiers that only have the
|
|
61
|
+
* final (envelope-wrapped) detail string to inspect.
|
|
62
|
+
*/
|
|
63
|
+
export const RESUME_SESSION_INDEX_OUT_OF_RANGE_RE = /^(?:Failed to resume session: )?Session index \d+ out of range \(1-\d+\)$/;
|
|
64
|
+
//# sourceMappingURL=resumeNotFoundMessages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumeNotFoundMessages.js","sourceRoot":"","sources":["../../../src/recording/resumeNotFoundMessages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;GAOG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,wBAAwB,GAAG,oCAAoC,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,qCAAqC,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAW;IACtD,OAAO,GAAG,+BAA+B,IAAI,GAAG,EAAE,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,gBAAgB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,UAAU,mCAAmC,CACjD,GAAyB,EACzB,KAAa;IAEb,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,wCAAwC,GAAG,GAAG,oBAAoB,KAAK,GAAG,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAC/C,2EAA2E,CAAC"}
|
|
@@ -26,6 +26,7 @@ import { SessionRecordingService } from './SessionRecordingService.js';
|
|
|
26
26
|
import { SessionDiscovery } from './SessionDiscovery.js';
|
|
27
27
|
import { SessionLockManager } from './SessionLockManager.js';
|
|
28
28
|
import { replaySession } from './ReplayEngine.js';
|
|
29
|
+
import { RESUME_NO_SESSIONS_FOUND } from './resumeNotFoundMessages.js';
|
|
29
30
|
/**
|
|
30
31
|
* Sentinel constant for "resume most recent session".
|
|
31
32
|
*/
|
|
@@ -74,7 +75,7 @@ function initializeRecordingForResume(lockedSession, request, replayResult) {
|
|
|
74
75
|
provider: request.currentProvider,
|
|
75
76
|
model: request.currentModel,
|
|
76
77
|
});
|
|
77
|
-
recording.initializeForResume(lockedSession.targetFilePath, replayResult.lastSeq);
|
|
78
|
+
recording.initializeForResume(lockedSession.targetFilePath, replayResult.lastSeq, replayResult.metadata.title);
|
|
78
79
|
if (request.currentProvider !== replayResult.metadata.provider ||
|
|
79
80
|
request.currentModel !== replayResult.metadata.model) {
|
|
80
81
|
recording.recordSessionEvent('warning', `Provider/model changed from ${replayResult.metadata.provider}/${replayResult.metadata.model} to ${request.currentProvider}/${request.currentModel}`);
|
|
@@ -95,7 +96,7 @@ export async function resumeSession(request) {
|
|
|
95
96
|
// Step 1: Discover sessions
|
|
96
97
|
const sessions = await SessionDiscovery.listSessions(request.chatsDir, request.projectHash);
|
|
97
98
|
if (sessions.length === 0) {
|
|
98
|
-
return { ok: false, error:
|
|
99
|
+
return { ok: false, error: RESUME_NO_SESSIONS_FOUND };
|
|
99
100
|
}
|
|
100
101
|
// Step 2: Resolve which session to resume
|
|
101
102
|
let lockedSession = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumeSession.js","sourceRoot":"","sources":["../../../src/recording/resumeSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;GAOG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAmB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"resumeSession.js","sourceRoot":"","sources":["../../../src/recording/resumeSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;GAOG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAmB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,qBAA8B,CAAC;AAyC9D;;;GAGG;AACH,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAClC,OAAsB,EACtB,QAA0B;IAE1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,iBAAiB,CACjD,OAAO,CAAC,WAAW,EACnB,QAAQ,CACT,CAAC;IACF,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;IACjD,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,OAAO,CACjD,OAAO,CAAC,QAAQ,EAChB,MAAM,CACP,CAAC;QACF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,4BAA4B,CACnC,aAA4B,EAC5B,OAAsB,EACtB,YAA4D;IAE5D,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAC;QAC5C,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS;QAC1C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE,OAAO,CAAC,eAAe;QACjC,KAAK,EAAE,OAAO,CAAC,YAAY;KAC5B,CAAC,CAAC;IACH,SAAS,CAAC,mBAAmB,CAC3B,aAAa,CAAC,cAAc,EAC5B,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAC5B,CAAC;IAEF,IACE,OAAO,CAAC,eAAe,KAAK,YAAY,CAAC,QAAQ,CAAC,QAAQ;QAC1D,OAAO,CAAC,YAAY,KAAK,YAAY,CAAC,QAAQ,CAAC,KAAK,EACpD,CAAC;QACD,SAAS,CAAC,kBAAkB,CAC1B,SAAS,EACT,+BAA+B,YAAY,CAAC,QAAQ,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,OAAO,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,YAAY,EAAE,CACrJ,CAAC;QACF,SAAS,CAAC,oBAAoB,CAC5B,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,YAAY,CACrB,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,kBAAkB,CAC1B,MAAM,EACN,uCAAuC,YAAY,CAAC,QAAQ,CAAC,SAAS,GAAG,CAC1E,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAsB;IAEtB,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAClD,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,WAAW,CACpB,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;IACxD,CAAC;IAED,0CAA0C;IAC1C,IAAI,aAAa,GAAyB,IAAI,CAAC;IAE/C,IAAI,OAAO,CAAC,WAAW,KAAK,eAAe,EAAE,CAAC;QAC5C,aAAa,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3E,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,0CAA0C;aAClD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC,gBAAgB,IAAI,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACjD,aAAa,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,yBAAyB;IACzB,MAAM,YAAY,GAAG,MAAM,aAAa,CACtC,aAAa,CAAC,cAAc,EAC5B,OAAO,CAAC,WAAW,CACpB,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACzC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,6BAA6B,YAAY,CAAC,KAAK,EAAE;SACzD,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,MAAM,SAAS,GAAG,4BAA4B,CAC5C,aAAa,EACb,OAAO,EACP,YAAY,CACb,CAAC;IAEF,wBAAwB;IACxB,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,SAAS;QACT,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,QAAQ,EAAE,YAAY,CAAC,QAAQ;KAChC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,QAAgB,EAChB,MAAc;IAEd,IAAI,CAAC;QACH,OAAO,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,wBAAwB,CACrC,QAAgB,EAChB,QAA0B;IAE1B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,MAAM;YAAE,SAAS;QAErB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -55,3 +55,6 @@ export declare function listSessions(chatsDir: string, projectHash: string): Pro
|
|
|
55
55
|
* @pseudocode session-management.md lines 105-150
|
|
56
56
|
*/
|
|
57
57
|
export declare function deleteSession(ref: string, chatsDir: string, projectHash: string): Promise<DeleteSessionResult | DeleteSessionError>;
|
|
58
|
+
export declare const SESSION_NOT_FOUND_PREFIX = "Session not found:";
|
|
59
|
+
/** Delete a session only when the supplied identifier is an exact match. */
|
|
60
|
+
export declare function deleteSessionById(sessionId: string, chatsDir: string, projectHash: string): Promise<DeleteSessionResult | DeleteSessionError>;
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { SessionDiscovery } from './SessionDiscovery.js';
|
|
17
|
-
import { SessionLockManager } from './SessionLockManager.js';
|
|
17
|
+
import { SessionLockManager, SessionLockedError, } from './SessionLockManager.js';
|
|
18
|
+
import { RESUME_NO_SESSIONS_FOUND } from './resumeNotFoundMessages.js';
|
|
18
19
|
/**
|
|
19
20
|
* List all sessions matching the given project hash, sorted newest-first.
|
|
20
21
|
*
|
|
@@ -33,43 +34,61 @@ export async function listSessions(chatsDir, projectHash) {
|
|
|
33
34
|
export async function deleteSession(ref, chatsDir, projectHash) {
|
|
34
35
|
const sessions = await SessionDiscovery.listSessions(chatsDir, projectHash);
|
|
35
36
|
if (sessions.length === 0) {
|
|
36
|
-
return { ok: false, error:
|
|
37
|
+
return { ok: false, error: RESUME_NO_SESSIONS_FOUND };
|
|
37
38
|
}
|
|
38
39
|
const resolved = SessionDiscovery.resolveSessionRef(ref, sessions);
|
|
39
40
|
if ('error' in resolved) {
|
|
40
41
|
return { ok: false, error: resolved.error };
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
return deleteResolvedSession(resolved.session, chatsDir);
|
|
44
|
+
}
|
|
45
|
+
export const SESSION_NOT_FOUND_PREFIX = 'Session not found:';
|
|
46
|
+
/** Delete a session only when the supplied identifier is an exact match. */
|
|
47
|
+
export async function deleteSessionById(sessionId, chatsDir, projectHash) {
|
|
48
|
+
const sessions = await SessionDiscovery.listSessions(chatsDir, projectHash);
|
|
49
|
+
const target = sessions.find((session) => session.sessionId === sessionId);
|
|
50
|
+
if (target === undefined) {
|
|
51
|
+
return {
|
|
52
|
+
ok: false,
|
|
53
|
+
error: `${SESSION_NOT_FOUND_PREFIX} ${sessionId}`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return deleteResolvedSession(target, chatsDir);
|
|
57
|
+
}
|
|
58
|
+
async function deleteResolvedSession(target, chatsDir) {
|
|
59
|
+
let lock;
|
|
60
|
+
try {
|
|
61
|
+
lock = await SessionLockManager.acquire(chatsDir, target.sessionId);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error instanceof SessionLockedError) {
|
|
50
65
|
return {
|
|
51
66
|
ok: false,
|
|
52
67
|
error: 'Cannot delete: session is in use by another process',
|
|
53
68
|
};
|
|
54
69
|
}
|
|
70
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
71
|
+
return {
|
|
72
|
+
ok: false,
|
|
73
|
+
error: `Failed to lock session for deletion: ${detail}`,
|
|
74
|
+
};
|
|
55
75
|
}
|
|
56
76
|
const { unlink } = await import('node:fs/promises');
|
|
77
|
+
let result;
|
|
57
78
|
try {
|
|
58
79
|
await unlink(target.filePath);
|
|
80
|
+
result = { ok: true, deletedSessionId: target.sessionId };
|
|
59
81
|
}
|
|
60
82
|
catch (error) {
|
|
61
|
-
|
|
83
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
84
|
+
result = {
|
|
62
85
|
ok: false,
|
|
63
|
-
error: `Failed to delete session: ${
|
|
86
|
+
error: `Failed to delete session: ${detail}`,
|
|
64
87
|
};
|
|
65
88
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
await unlink(lockPath);
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
// Lock file may not exist
|
|
89
|
+
finally {
|
|
90
|
+
await lock.release().catch(() => undefined);
|
|
72
91
|
}
|
|
73
|
-
return
|
|
92
|
+
return result;
|
|
74
93
|
}
|
|
75
94
|
//# sourceMappingURL=sessionManagement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionManagement.js","sourceRoot":"","sources":["../../../src/recording/sessionManagement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"sessionManagement.js","sourceRoot":"","sources":["../../../src/recording/sessionManagement.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,10 +22,11 @@
|
|
|
22
22
|
* management.
|
|
23
23
|
*/
|
|
24
24
|
import { type IContent } from '../services/history/IContent.js';
|
|
25
|
+
export declare const SESSION_TITLE_MAX_LENGTH = 120;
|
|
25
26
|
/**
|
|
26
|
-
* The
|
|
27
|
+
* The event types that can appear in a session JSONL file.
|
|
27
28
|
*/
|
|
28
|
-
export type SessionEventType = 'session_start' | 'content' | 'compressed' | 'rewind' | 'provider_switch' | 'session_event' | 'directories_changed';
|
|
29
|
+
export type SessionEventType = 'session_start' | 'content' | 'compressed' | 'rewind' | 'provider_switch' | 'session_event' | 'session_metadata' | 'directories_changed';
|
|
29
30
|
/**
|
|
30
31
|
* Every line in a session JSONL file follows this envelope format.
|
|
31
32
|
* The `v` field is the sole schema version indicator.
|
|
@@ -50,6 +51,8 @@ export interface SessionStartPayload {
|
|
|
50
51
|
sessionId: string;
|
|
51
52
|
projectHash: string;
|
|
52
53
|
workspaceDirs: string[];
|
|
54
|
+
/** Effective absolute working directory, when recorded by newer clients. */
|
|
55
|
+
cwd?: string;
|
|
53
56
|
provider: string;
|
|
54
57
|
model: string;
|
|
55
58
|
/** ISO-8601 timestamp of when the session started. */
|
|
@@ -92,6 +95,18 @@ export interface SessionEventPayload {
|
|
|
92
95
|
severity: 'info' | 'warning' | 'error';
|
|
93
96
|
message: string;
|
|
94
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Payload for the `session_metadata` event — session-level metadata updates
|
|
100
|
+
* (currently only the human-readable title). The title is tri-state:
|
|
101
|
+
* - `undefined` (field absent): legacy event, no title assertion.
|
|
102
|
+
* - `null`: explicit untitled (the caller asserts there is no meaningful title).
|
|
103
|
+
* - `string`: a concrete title.
|
|
104
|
+
*
|
|
105
|
+
* This is a typed first-class recording event, NOT a `session_event` sentinel.
|
|
106
|
+
*/
|
|
107
|
+
export interface SessionMetadataPayload {
|
|
108
|
+
readonly title?: string | null;
|
|
109
|
+
}
|
|
95
110
|
/**
|
|
96
111
|
* Payload for the `directories_changed` event.
|
|
97
112
|
*/
|
|
@@ -106,12 +121,21 @@ export interface SessionRecordingServiceConfig {
|
|
|
106
121
|
projectHash: string;
|
|
107
122
|
chatsDir: string;
|
|
108
123
|
workspaceDirs: string[];
|
|
124
|
+
/** Effective absolute working directory for lifecycle discovery. */
|
|
125
|
+
cwd?: string;
|
|
109
126
|
provider: string;
|
|
110
127
|
model: string;
|
|
111
128
|
}
|
|
112
129
|
/**
|
|
113
130
|
* Metadata extracted from a session's `session_start` event and updated
|
|
114
|
-
* by subsequent `provider_switch` / `directories_changed`
|
|
131
|
+
* by subsequent `provider_switch` / `directories_changed` / `session_metadata`
|
|
132
|
+
* events.
|
|
133
|
+
*
|
|
134
|
+
* The title is tri-state:
|
|
135
|
+
* - `undefined`: no `session_metadata` event seen (legacy file). Callers fall
|
|
136
|
+
* back to first-human-text heuristics.
|
|
137
|
+
* - `null`: explicit untitled (`session_metadata` asserted no title).
|
|
138
|
+
* - `string`: a concrete title.
|
|
115
139
|
*/
|
|
116
140
|
export interface SessionMetadata {
|
|
117
141
|
sessionId: string;
|
|
@@ -119,7 +143,9 @@ export interface SessionMetadata {
|
|
|
119
143
|
provider: string;
|
|
120
144
|
model: string;
|
|
121
145
|
workspaceDirs: string[];
|
|
146
|
+
cwd?: string;
|
|
122
147
|
startTime: string;
|
|
148
|
+
title?: string | null;
|
|
123
149
|
}
|
|
124
150
|
/**
|
|
125
151
|
* Discriminated union result from the replay engine.
|
|
@@ -151,4 +177,17 @@ export interface SessionSummary {
|
|
|
151
177
|
fileSize: number;
|
|
152
178
|
provider: string;
|
|
153
179
|
model: string;
|
|
180
|
+
cwd?: string;
|
|
181
|
+
/**
|
|
182
|
+
* Tri-state title from a persisted `session_metadata` event:
|
|
183
|
+
* - `undefined`: no `session_metadata` event seen (legacy fallback).
|
|
184
|
+
* - `null`: explicit untitled.
|
|
185
|
+
* - `string`: a concrete title.
|
|
186
|
+
*/
|
|
187
|
+
title?: string | null;
|
|
188
|
+
/**
|
|
189
|
+
* Immutable creation timestamp extracted from `session_start.startTime`.
|
|
190
|
+
* Used for stable ordering independent of file `lastModified` mutations.
|
|
191
|
+
*/
|
|
192
|
+
createdAt?: string;
|
|
154
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/recording/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/recording/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC"}
|
|
@@ -36,6 +36,7 @@ function buildToolGovernance(profile) {
|
|
|
36
36
|
const excludedRaw = profile.config.getExcludeTools() ?? [];
|
|
37
37
|
return {
|
|
38
38
|
allowed: new Set((allowedRaw ?? []).map((tool) => normalizeToolName(tool) ?? tool)),
|
|
39
|
+
allowedExplicit: allowedRaw !== undefined,
|
|
39
40
|
disabled: new Set((disabledRaw ?? []).map((tool) => normalizeToolName(tool) ?? tool)),
|
|
40
41
|
excluded: new Set(excludedRaw.map((tool) => normalizeToolName(tool) ?? tool)),
|
|
41
42
|
};
|
|
@@ -48,7 +49,7 @@ function isToolPermitted(toolName, governance) {
|
|
|
48
49
|
if (governance.disabled.has(canonical)) {
|
|
49
50
|
return false;
|
|
50
51
|
}
|
|
51
|
-
if (governance.
|
|
52
|
+
if (governance.allowedExplicit && !governance.allowed.has(canonical)) {
|
|
52
53
|
return false;
|
|
53
54
|
}
|
|
54
55
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentRuntimeLoader.js","sourceRoot":"","sources":["../../../src/runtime/AgentRuntimeLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAEvE,OAAO,EACL,aAAa,EACb,sBAAsB,EAEtB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,gCAAgC,EAChC,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EACL,sBAAsB,GAGvB,MAAM,6BAA6B,CAAC;AA4CrC,MAAM,8BAA8B,GAA4B,CAC9D,aAAa,EACb,MAAM,EACN,SAAS,EACT,EAAE,CAAC,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAE9D,SAAS,6BAA6B,CACpC,OAAoC,EACpC,aAAqC;IAErC,MAAM,eAAe,GACnB,aAAa,CAAC,eAAe;QAC7B,OAAO,CAAC,eAAe;QACvB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IACtC,MAAM,aAAa,GACjB,eAAe,IAAI,IAAI;QACrB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IAClD,MAAM,uBAAuB,GAC3B,aAAa,CAAC,uBAAuB,IAAI,aAAa,CAAC;IAEzD,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO;QACL,GAAG,aAAa;QAChB,eAAe;QACf,GAAG,CAAC,uBAAuB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentRuntimeLoader.js","sourceRoot":"","sources":["../../../src/runtime/AgentRuntimeLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,28 +3,19 @@
|
|
|
3
3
|
* Copyright 2025 Vybestack LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import type { AnsiOutput } from '../utils/terminalSerializer.js';
|
|
6
|
+
import type { AnsiOutput, LiveOutputUpdate } from '../utils/terminalSerializer.js';
|
|
7
7
|
/**
|
|
8
|
-
* Accumulates a live-output
|
|
8
|
+
* Accumulates a live-output update onto an existing accumulated value using
|
|
9
|
+
* the explicit tagged {@link LiveOutputUpdate} protocol.
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* - **`
|
|
14
|
-
* Each chunk supersedes the previous one, so the latest snapshot replaces
|
|
15
|
-
* the old value.
|
|
16
|
-
* - **`string`** (e.g. the task tool streaming subagent text) — an incremental
|
|
17
|
-
* delta. Each chunk must be appended to the existing text so the display
|
|
18
|
-
* grows rather than showing only the latest token.
|
|
11
|
+
* - **`append`** (text deltas) — concatenated onto the existing value when it
|
|
12
|
+
* is a string; otherwise the prior non-string value is dropped and the
|
|
13
|
+
* delta starts a fresh string.
|
|
14
|
+
* - **`replace`** (terminal-buffer snapshots) — supersedes any prior value.
|
|
19
15
|
*
|
|
20
16
|
* The `existing` parameter is typed `unknown` because callers may pass values
|
|
21
17
|
* drawn from a broader display union (e.g. `ToolResultDisplay`, which also
|
|
22
|
-
* includes `FileDiff` / `FileRead`).
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* Note: the append-vs-replace distinction is currently inferred from the
|
|
26
|
-
* payload type. Migrating to an explicit tagged update protocol (e.g.
|
|
27
|
-
* `{ mode: 'append'; data: string } | { mode: 'replace'; data: AnsiOutput }`)
|
|
28
|
-
* is tracked in follow-up #2586.
|
|
18
|
+
* includes `FileDiff` / `FileRead`). The returned type is the narrow
|
|
19
|
+
* `string | AnsiOutput` union the live-output channel actually produces.
|
|
29
20
|
*/
|
|
30
|
-
export declare function accumulateLiveOutput(existing: unknown,
|
|
21
|
+
export declare function accumulateLiveOutput(existing: unknown, update: LiveOutputUpdate): string | AnsiOutput;
|
|
@@ -4,31 +4,31 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* Accumulates a live-output
|
|
7
|
+
* Accumulates a live-output update onto an existing accumulated value using
|
|
8
|
+
* the explicit tagged {@link LiveOutputUpdate} protocol.
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* - **`
|
|
13
|
-
* Each chunk supersedes the previous one, so the latest snapshot replaces
|
|
14
|
-
* the old value.
|
|
15
|
-
* - **`string`** (e.g. the task tool streaming subagent text) — an incremental
|
|
16
|
-
* delta. Each chunk must be appended to the existing text so the display
|
|
17
|
-
* grows rather than showing only the latest token.
|
|
10
|
+
* - **`append`** (text deltas) — concatenated onto the existing value when it
|
|
11
|
+
* is a string; otherwise the prior non-string value is dropped and the
|
|
12
|
+
* delta starts a fresh string.
|
|
13
|
+
* - **`replace`** (terminal-buffer snapshots) — supersedes any prior value.
|
|
18
14
|
*
|
|
19
15
|
* The `existing` parameter is typed `unknown` because callers may pass values
|
|
20
16
|
* drawn from a broader display union (e.g. `ToolResultDisplay`, which also
|
|
21
|
-
* includes `FileDiff` / `FileRead`).
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* Note: the append-vs-replace distinction is currently inferred from the
|
|
25
|
-
* payload type. Migrating to an explicit tagged update protocol (e.g.
|
|
26
|
-
* `{ mode: 'append'; data: string } | { mode: 'replace'; data: AnsiOutput }`)
|
|
27
|
-
* is tracked in follow-up #2586.
|
|
17
|
+
* includes `FileDiff` / `FileRead`). The returned type is the narrow
|
|
18
|
+
* `string | AnsiOutput` union the live-output channel actually produces.
|
|
28
19
|
*/
|
|
29
|
-
export function accumulateLiveOutput(existing,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
20
|
+
export function accumulateLiveOutput(existing, update) {
|
|
21
|
+
switch (update.mode) {
|
|
22
|
+
case 'append':
|
|
23
|
+
return typeof existing === 'string'
|
|
24
|
+
? existing + update.data
|
|
25
|
+
: update.data;
|
|
26
|
+
case 'replace':
|
|
27
|
+
return update.data;
|
|
28
|
+
default: {
|
|
29
|
+
const _exhaustive = update;
|
|
30
|
+
return _exhaustive;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
33
|
}
|
|
34
34
|
//# sourceMappingURL=liveOutput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveOutput.js","sourceRoot":"","sources":["../../../src/scheduler/liveOutput.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"liveOutput.js","sourceRoot":"","sources":["../../../src/scheduler/liveOutput.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAiB,EACjB,MAAwB;IAExB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,OAAO,QAAQ,KAAK,QAAQ;gBACjC,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI;gBACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,MAAM,CAAC;YAClC,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import type { AnyDeclarativeTool, AnyToolInvocation, ToolCallConfirmationDetails } from '@vybestack/llxprt-code-tools';
|
|
14
14
|
import type { ToolCallRequestInfo, ToolCallResponseInfo } from '../core/turn.js';
|
|
15
15
|
import type { ToolConfirmationOutcome } from '@vybestack/llxprt-code-tools';
|
|
16
|
-
import type { AnsiOutput } from '../utils/terminalSerializer.js';
|
|
16
|
+
import type { AnsiOutput, LiveOutputUpdate } from '../utils/terminalSerializer.js';
|
|
17
17
|
import type { SerializableConfirmationDetails } from '../confirmation-bus/types.js';
|
|
18
18
|
/**
|
|
19
19
|
* @requirement TS-TYPE-001
|
|
@@ -101,7 +101,7 @@ export type Status = ToolCall['status'];
|
|
|
101
101
|
* Handler Types - Callback function signatures for tool execution events
|
|
102
102
|
*/
|
|
103
103
|
export type ConfirmHandler = (toolCall: WaitingToolCall) => Promise<ToolConfirmationOutcome>;
|
|
104
|
-
export type OutputUpdateHandler = (toolCallId: string,
|
|
104
|
+
export type OutputUpdateHandler = (toolCallId: string, update: LiveOutputUpdate) => void;
|
|
105
105
|
export type AllToolCallsCompleteHandler = (completedToolCalls: CompletedToolCall[]) => Promise<void>;
|
|
106
106
|
export type ToolCallsUpdateHandler = (toolCalls: ToolCall[]) => void;
|
|
107
107
|
/**
|
|
@@ -24,6 +24,10 @@ export declare class ContentConverters {
|
|
|
24
24
|
private static hasLegacyTruthyValue;
|
|
25
25
|
/** Resolve the Gemini role from an IContent speaker. */
|
|
26
26
|
private static resolveRole;
|
|
27
|
+
private static toolCallBlockToPart;
|
|
28
|
+
private static toolResponseBlockToPart;
|
|
29
|
+
private static thinkingBlockToPart;
|
|
30
|
+
private static codeBlockToPart;
|
|
27
31
|
/** Convert a single IContent block to a Gemini Part. */
|
|
28
32
|
private static blockToPart;
|
|
29
33
|
/**
|