@cleanslate/sdk 1.0.11 → 1.1.0
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 +29 -1
- package/dist/agent/cleanSlateAgentExtensions.d.ts +53 -0
- package/dist/agent/cleanSlateAgentExtensions.d.ts.map +1 -0
- package/dist/agent/cleanSlateAgentExtensions.js +74 -0
- package/dist/agent/cleanSlateAgentExtensions.js.map +1 -0
- package/dist/agent/cleanSlateAgentSession.d.ts +1 -0
- package/dist/agent/cleanSlateAgentSession.d.ts.map +1 -1
- package/dist/agent/cleanSlateAgentSession.js +17 -3
- package/dist/agent/cleanSlateAgentSession.js.map +1 -1
- package/dist/agent/cleanSlateExecutionQuery.d.ts.map +1 -1
- package/dist/agent/cleanSlateExecutionQuery.js +6 -3
- package/dist/agent/cleanSlateExecutionQuery.js.map +1 -1
- package/dist/externalAgents/externalAgentPresentation.d.ts +9 -0
- package/dist/externalAgents/externalAgentPresentation.d.ts.map +1 -0
- package/dist/externalAgents/externalAgentPresentation.js +104 -0
- package/dist/externalAgents/externalAgentPresentation.js.map +1 -0
- package/dist/externalAgents/externalAgentTypes.d.ts +31 -0
- package/dist/externalAgents/externalAgentTypes.d.ts.map +1 -1
- package/dist/externalAgents/handoff.d.ts.map +1 -1
- package/dist/externalAgents/handoff.js +2 -1
- package/dist/externalAgents/handoff.js.map +1 -1
- package/dist/externalAgents/index.d.ts +1 -0
- package/dist/externalAgents/index.d.ts.map +1 -1
- package/dist/externalAgents/index.js +1 -0
- package/dist/externalAgents/index.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/node/cleanSlateNodeAgentRuntime.d.ts +9 -0
- package/dist/node/cleanSlateNodeAgentRuntime.d.ts.map +1 -1
- package/dist/node/cleanSlateNodeAgentRuntime.js +50 -6
- package/dist/node/cleanSlateNodeAgentRuntime.js.map +1 -1
- package/dist/node/cleanSlateNodeMainService.d.ts.map +1 -1
- package/dist/node/cleanSlateNodeMainService.js +18 -0
- package/dist/node/cleanSlateNodeMainService.js.map +1 -1
- package/dist/node/externalAgents/externalAgentHistory.d.ts +12 -0
- package/dist/node/externalAgents/externalAgentHistory.d.ts.map +1 -0
- package/dist/node/externalAgents/externalAgentHistory.js +444 -0
- package/dist/node/externalAgents/externalAgentHistory.js.map +1 -0
- package/dist/node/externalAgents/externalAgentRegistry.js +1 -1
- package/dist/node/externalAgents/externalAgentRegistry.js.map +1 -1
- package/dist/node/externalAgents/externalAgentService.d.ts.map +1 -1
- package/dist/node/externalAgents/externalAgentService.js +9 -1
- package/dist/node/externalAgents/externalAgentService.js.map +1 -1
- package/dist/node/externalAgents/externalAgentSession.d.ts.map +1 -1
- package/dist/node/externalAgents/externalAgentSession.js +1 -1
- package/dist/node/externalAgents/externalAgentSession.js.map +1 -1
- package/dist/node/externalAgents/generatedSdkVersion.d.ts +1 -1
- package/dist/node/externalAgents/generatedSdkVersion.d.ts.map +1 -1
- package/dist/node/externalAgents/generatedSdkVersion.js +1 -1
- package/dist/node/externalAgents/generatedSdkVersion.js.map +1 -1
- package/dist/node/externalAgents/hostToolsBridge.d.ts.map +1 -1
- package/dist/node/externalAgents/hostToolsBridge.js +2 -1
- package/dist/node/externalAgents/hostToolsBridge.js.map +1 -1
- package/dist/node/externalAgents/index.d.ts +1 -0
- package/dist/node/externalAgents/index.d.ts.map +1 -1
- package/dist/node/externalAgents/index.js +1 -0
- package/dist/node/externalAgents/index.js.map +1 -1
- package/dist/node/externalAgents/transports/acp/acpClient.d.ts +1 -1
- package/dist/node/externalAgents/transports/acp/acpClient.d.ts.map +1 -1
- package/dist/node/externalAgents/transports/acp/acpClient.js +5 -2
- package/dist/node/externalAgents/transports/acp/acpClient.js.map +1 -1
- package/dist/node/externalAgents/transports/acp/acpEventMapper.d.ts.map +1 -1
- package/dist/node/externalAgents/transports/acp/acpEventMapper.js +169 -2
- package/dist/node/externalAgents/transports/acp/acpEventMapper.js.map +1 -1
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +1 -0
- package/dist/node/index.js.map +1 -1
- package/dist/protocol/cleanSlateAI.d.ts +1 -4
- package/dist/protocol/cleanSlateAI.d.ts.map +1 -1
- package/dist/protocol/cleanSlateService.d.ts.map +1 -1
- package/dist/protocol/cleanSlateService.js +15 -10
- package/dist/protocol/cleanSlateService.js.map +1 -1
- package/dist/protocol/cleanSlateTranscriptIntegrity.d.ts +12 -0
- package/dist/protocol/cleanSlateTranscriptIntegrity.d.ts.map +1 -0
- package/dist/protocol/cleanSlateTranscriptIntegrity.js +95 -0
- package/dist/protocol/cleanSlateTranscriptIntegrity.js.map +1 -0
- package/dist/tools/cleanSlateBrowserPolicy.d.ts +19 -0
- package/dist/tools/cleanSlateBrowserPolicy.d.ts.map +1 -0
- package/dist/tools/cleanSlateBrowserPolicy.js +40 -0
- package/dist/tools/cleanSlateBrowserPolicy.js.map +1 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +3 -1
- package/dist/tools/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ICleanSlatePersistedThreadMessage } from '../protocol/cleanSlateAI.js';
|
|
2
|
+
/** Imported agents store one protocol item per row. Present one assistant turn
|
|
3
|
+
* across those rows without changing the history used for agent handoffs. Also
|
|
4
|
+
* works on imports saved before this projection existed. */
|
|
5
|
+
export declare function coalesceExternalAgentTranscript(history: readonly ICleanSlatePersistedThreadMessage[]): ICleanSlatePersistedThreadMessage[];
|
|
6
|
+
/** Codex desktop navigation markers have no UI action in ACP. Hide them only
|
|
7
|
+
* in prose; code examples and the original provider transcript stay intact. */
|
|
8
|
+
export declare function externalAgentDisplayText(text: string, isStreaming?: boolean): string;
|
|
9
|
+
//# sourceMappingURL=externalAgentPresentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"externalAgentPresentation.d.ts","sourceRoot":"","sources":["../../src/externalAgents/externalAgentPresentation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAcrF;;4DAE4D;AAC5D,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,SAAS,iCAAiC,EAAE,GAAG,iCAAiC,EAAE,CA4B1I;AAED;+EAC+E;AAC/E,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,MAAM,CA4BlF"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) CleanSlate. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
function displayPayload(message) {
|
|
6
|
+
if (!message.renderPayload) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
const value = JSON.parse(message.renderPayload);
|
|
11
|
+
if (Array.isArray(value?.timeline) && value.timeline.every(block => block && typeof block.id === 'string' && typeof block.type === 'string')) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
catch { /* Keep malformed history as its original message. */ }
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
/** Imported agents store one protocol item per row. Present one assistant turn
|
|
19
|
+
* across those rows without changing the history used for agent handoffs. Also
|
|
20
|
+
* works on imports saved before this projection existed. */
|
|
21
|
+
export function coalesceExternalAgentTranscript(history) {
|
|
22
|
+
const transcript = [];
|
|
23
|
+
let segment = [];
|
|
24
|
+
const flush = () => {
|
|
25
|
+
if (segment.length > 1 && segment.some(item => item.payload?.timeline.some(block => block.externalTool))) {
|
|
26
|
+
const timeline = segment.flatMap(({ message, payload, index }) => payload?.timeline ?? (message.content.trim()
|
|
27
|
+
? [{ id: `external-text-${index}`, type: 'assistant_text', content: message.content }] : []));
|
|
28
|
+
const content = timeline.filter(block => block.type === 'assistant_text').map(block => block.content ?? '').join('\n\n');
|
|
29
|
+
transcript.push({
|
|
30
|
+
...segment[0].message, content,
|
|
31
|
+
renderPayload: JSON.stringify({ response: content, timeline, transcriptStatus: segment.some(item => item.payload?.transcriptStatus === 'interrupted') ? 'interrupted' : 'completed' })
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
transcript.push(...segment.map(item => item.message));
|
|
36
|
+
}
|
|
37
|
+
segment = [];
|
|
38
|
+
};
|
|
39
|
+
for (const [index, message] of history.entries()) {
|
|
40
|
+
if (message.role === 'user' && !message.images?.length && message.content.includes('<external_codex_apps_open_page>') && !externalAgentDisplayText(message.content).trim()) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const payload = displayPayload(message);
|
|
44
|
+
const eligible = (message.role === 'assistant' || message.role === 'cleanSlate')
|
|
45
|
+
&& !message.isInternalState && !message.images?.length && !message.id?.startsWith('hosted-')
|
|
46
|
+
&& !/^Conversation handed off to /.test(message.content)
|
|
47
|
+
&& (!message.renderPayload || !!payload && payload.timeline.length > 0 && !payload.planning_question
|
|
48
|
+
&& !payload.to_do?.length && !payload.code_snippet && !payload.timeline.some(block => block.type === 'turn'));
|
|
49
|
+
if (eligible) {
|
|
50
|
+
segment.push({ message, payload, index });
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
flush();
|
|
54
|
+
transcript.push(message);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
flush();
|
|
58
|
+
return transcript;
|
|
59
|
+
}
|
|
60
|
+
/** Codex desktop navigation markers have no UI action in ACP. Hide them only
|
|
61
|
+
* in prose; code examples and the original provider transcript stay intact. */
|
|
62
|
+
export function externalAgentDisplayText(text, isStreaming = false) {
|
|
63
|
+
if (!text.includes(isStreaming ? '<external_' : '<external_codex_apps_')) {
|
|
64
|
+
return text;
|
|
65
|
+
}
|
|
66
|
+
const opening = '<external_codex_apps_open_page>';
|
|
67
|
+
const closing = '</external_codex_apps_open_page>';
|
|
68
|
+
let fence;
|
|
69
|
+
let inMarker = false;
|
|
70
|
+
const visible = [];
|
|
71
|
+
const lines = text.split(/(?<=\n)/);
|
|
72
|
+
for (const [index, line] of lines.entries()) {
|
|
73
|
+
const delimiter = /^ {0,3}(`{3,}|~{3,})/.exec(line)?.[1];
|
|
74
|
+
if (!inMarker && delimiter) {
|
|
75
|
+
if (!fence) {
|
|
76
|
+
fence = delimiter;
|
|
77
|
+
}
|
|
78
|
+
else if (delimiter[0] === fence[0] && delimiter.length >= fence.length && /^\s*$/.test(line.slice(line.indexOf(delimiter) + delimiter.length))) {
|
|
79
|
+
fence = undefined;
|
|
80
|
+
}
|
|
81
|
+
visible.push(line);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (!inMarker && (fence || /^(?: {4}|\t)/.test(line))) {
|
|
85
|
+
visible.push(line);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (inMarker || line.trimStart().startsWith(opening)) {
|
|
89
|
+
const end = line.indexOf(closing);
|
|
90
|
+
inMarker = end < 0;
|
|
91
|
+
if (end >= 0) {
|
|
92
|
+
visible.push(line.slice(end + closing.length));
|
|
93
|
+
}
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
const partial = line.trim();
|
|
97
|
+
if (isStreaming && index === lines.length - 1 && partial.startsWith('<external_') && opening.startsWith(partial)) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
visible.push(line);
|
|
101
|
+
}
|
|
102
|
+
return visible.join('');
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=externalAgentPresentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"externalAgentPresentation.js","sourceRoot":"","sources":["../../src/externalAgents/externalAgentPresentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,37 @@ export interface IExternalAgentUsage {
|
|
|
18
18
|
export interface IExternalAgentConfig {
|
|
19
19
|
readonly transport: 'acp';
|
|
20
20
|
readonly agentId: string;
|
|
21
|
+
/** User-selected local account directory, retained when resuming imported history. */
|
|
22
|
+
readonly dataHome?: string;
|
|
23
|
+
}
|
|
24
|
+
export type ExternalAgentHistorySource = 'claude' | 'codex';
|
|
25
|
+
export interface IExternalAgentHistoryQuery {
|
|
26
|
+
readonly source?: ExternalAgentHistorySource;
|
|
27
|
+
readonly dataHome?: string;
|
|
28
|
+
/** Restrict results to this local project and its descendant directories. */
|
|
29
|
+
readonly projectRoot?: string;
|
|
30
|
+
/** Also scan the standard home when a different account is configured. */
|
|
31
|
+
readonly includeDefaultHomes?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface IExternalAgentHistoryEntry {
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly source: ExternalAgentHistorySource;
|
|
36
|
+
readonly sessionId: string;
|
|
37
|
+
readonly dataHome: string;
|
|
38
|
+
readonly path: string;
|
|
39
|
+
readonly title: string;
|
|
40
|
+
readonly cwd?: string;
|
|
41
|
+
readonly createdAt: number;
|
|
42
|
+
readonly updatedAt: number;
|
|
43
|
+
}
|
|
44
|
+
export interface IExternalAgentHistoryDiscovery {
|
|
45
|
+
readonly sessions: readonly IExternalAgentHistoryEntry[];
|
|
46
|
+
readonly warnings: readonly string[];
|
|
47
|
+
}
|
|
48
|
+
export interface IExternalAgentHistoryImportResult {
|
|
49
|
+
readonly id: string;
|
|
50
|
+
readonly imported: boolean;
|
|
51
|
+
readonly warnings: readonly string[];
|
|
21
52
|
}
|
|
22
53
|
export interface IExternalAgentDescriptor {
|
|
23
54
|
readonly id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"externalAgentTypes.d.ts","sourceRoot":"","sources":["../../src/externalAgents/externalAgentTypes.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,cAAc,CAAC;AACrG,MAAM,MAAM,gCAAgC,GAAG,WAAW,GAAG,SAAS,CAAC;AACvE,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClH;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"externalAgentTypes.d.ts","sourceRoot":"","sources":["../../src/externalAgents/externalAgentTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/externalAgents/handoff.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/externalAgents/handoff.ts"],"names":[],"mappings":"AAOA,8EAA8E;AAC9E,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,MAAM,CAGhI;AAED,mFAAmF;AACnF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAInG"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) CleanSlate. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { getCleanSlateBrowserHostPolicy } from '../tools/cleanSlateBrowserPolicy.js';
|
|
5
6
|
/** Transfer visible conversation data when entering a fresh agent session. */
|
|
6
7
|
export function createExternalAgentHandoffPrompt(message, history) {
|
|
7
8
|
if (!history.length) {
|
|
@@ -15,6 +16,6 @@ export function createExternalAgentHostPrompt(message, toolNames) {
|
|
|
15
16
|
if (!browserTools.includes('browser_open')) {
|
|
16
17
|
return message;
|
|
17
18
|
}
|
|
18
|
-
return `You are assisting inside CleanSlate. The connected cleanslate-ide MCP server provides the browser for this chat.
|
|
19
|
+
return `You are assisting inside CleanSlate. The connected cleanslate-ide MCP server provides the browser for this chat. ${getCleanSlateBrowserHostPolicy()} Use the same CleanSlate browser tools for navigation, inspection, screenshots, and interaction. Respect the user's explicit browser choice and all tool permissions.\nAvailable CleanSlate browser tools: ${browserTools.join(', ')}.\n\n${message}`;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=handoff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/externalAgents/handoff.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,8EAA8E;AAC9E,MAAM,UAAU,gCAAgC,CAAC,OAAe,EAAE,OAAsD;IACvH,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,OAAO,CAAC;IAAC,CAAC;IACxC,OAAO,+MAA+M,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sDAAsD,OAAO,EAAE,CAAC;AAC9S,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,6BAA6B,CAAC,OAAe,EAAE,SAA4B;IAC1F,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAAC,OAAO,OAAO,CAAC;IAAC,CAAC;IAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/externalAgents/handoff.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,8EAA8E;AAC9E,MAAM,UAAU,gCAAgC,CAAC,OAAe,EAAE,OAAsD;IACvH,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,OAAO,CAAC;IAAC,CAAC;IACxC,OAAO,+MAA+M,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sDAAsD,OAAO,EAAE,CAAC;AAC9S,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,6BAA6B,CAAC,OAAe,EAAE,SAA4B;IAC1F,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAAC,OAAO,OAAO,CAAC;IAAC,CAAC;IAC/D,OAAO,oHAAoH,8BAA8B,EAAE,8MAA8M,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,OAAO,EAAE,CAAC;AACnZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/externalAgents/index.ts"],"names":[],"mappings":"AAKA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/externalAgents/index.ts"],"names":[],"mappings":"AAKA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -4,4 +4,5 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
export * from './externalAgentTypes.js';
|
|
6
6
|
export { createExternalAgentHandoffPrompt } from './handoff.js';
|
|
7
|
+
export { coalesceExternalAgentTranscript, externalAgentDisplayText } from './externalAgentPresentation.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/externalAgents/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/externalAgents/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -32,10 +32,13 @@ export type { CleanSlateConversationKind, ICleanSlateConversationBranch } from '
|
|
|
32
32
|
export { CleanSlateExecutionQueryEngine } from './agent/cleanSlateExecutionQuery.js';
|
|
33
33
|
export { CLEANSLATE_CODING_PROFILE, CLEANSLATE_GENERAL_PROFILE } from './agent/cleanSlateDomainProfile.js';
|
|
34
34
|
export type { ICleanSlateDomainProfile } from './agent/cleanSlateDomainProfile.js';
|
|
35
|
+
export { CLEANSLATE_AGENT_EXTENSION_API_VERSION, CleanSlateAgentExtensionHost } from './agent/cleanSlateAgentExtensions.js';
|
|
36
|
+
export type { CleanSlateAgentExtensionPermission, CleanSlateAgentRunEntryPoint, ICleanSlateAgentExtensionHostOptions, ICleanSlateAgentExtensionRun, ICleanSlateAgentExtensionRunOutcome, ICleanSlateAgentExtensionV1 } from './agent/cleanSlateAgentExtensions.js';
|
|
35
37
|
export { CleanSlateEditService } from './services/cleanSlateEditService.js';
|
|
36
38
|
export { CleanSlateDiffService } from './services/cleanSlateDiffService.js';
|
|
37
39
|
export type { AIProvider, ICleanSlateManagedAccount, ICleanSlateManagedEntitlements, ICleanSlateManagedModel } from './protocol/cleanSlateAI.js';
|
|
38
40
|
export { CleanSlateCodeParser } from './protocol/cleanSlateCodeParser.js';
|
|
41
|
+
export { CleanSlateTranscriptIntegrityError } from './protocol/cleanSlateTranscriptIntegrity.js';
|
|
39
42
|
export type { ICleanSlateCodeChunk } from './protocol/cleanSlateCodeParser.js';
|
|
40
43
|
export { URI } from './core/uri.js';
|
|
41
44
|
export { Range } from './core/range.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -13,9 +13,11 @@ export { CleanSlateAgentCoordinator, formatCleanSlateChildAgentNotification } fr
|
|
|
13
13
|
export { CleanSlateConversationBranchService } from './services/cleanSlateConversationBranchService.js';
|
|
14
14
|
export { CleanSlateExecutionQueryEngine } from './agent/cleanSlateExecutionQuery.js';
|
|
15
15
|
export { CLEANSLATE_CODING_PROFILE, CLEANSLATE_GENERAL_PROFILE } from './agent/cleanSlateDomainProfile.js';
|
|
16
|
+
export { CLEANSLATE_AGENT_EXTENSION_API_VERSION, CleanSlateAgentExtensionHost } from './agent/cleanSlateAgentExtensions.js';
|
|
16
17
|
export { CleanSlateEditService } from './services/cleanSlateEditService.js';
|
|
17
18
|
export { CleanSlateDiffService } from './services/cleanSlateDiffService.js';
|
|
18
19
|
export { CleanSlateCodeParser } from './protocol/cleanSlateCodeParser.js';
|
|
20
|
+
export { CleanSlateTranscriptIntegrityError } from './protocol/cleanSlateTranscriptIntegrity.js';
|
|
19
21
|
//#endregion
|
|
20
22
|
//#region primitives the host contracts are expressed in
|
|
21
23
|
export { URI } from './core/uri.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAyBhG,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EACN,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA2B/C,YAAY;AAEZ,qBAAqB;AAErB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAE,0BAA0B,EAAE,sCAAsC,EAAE,MAAM,0CAA0C,CAAC;AAY9H,OAAO,EAAE,mCAAmC,EAAE,MAAM,mDAAmD,CAAC;AAMxG,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACN,yBAAyB,EACzB,0BAA0B,EAC1B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAQ5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAyBhG,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EACN,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA2B/C,YAAY;AAEZ,qBAAqB;AAErB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAE,0BAA0B,EAAE,sCAAsC,EAAE,MAAM,0CAA0C,CAAC;AAY9H,OAAO,EAAE,mCAAmC,EAAE,MAAM,mDAAmD,CAAC;AAMxG,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACN,yBAAyB,EACzB,0BAA0B,EAC1B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,sCAAsC,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAS5H,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAQ5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AAGjG,YAAY;AAEZ,wDAAwD;AAExD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGhF,YAAY"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ICleanSlateAgentExtensionHostOptions, type ICleanSlateAgentExtensionV1 } from '../agent/cleanSlateAgentExtensions.js';
|
|
1
2
|
import { CleanSlateStreamPart } from '../agent/cleanSlateAgentTypes.js';
|
|
2
3
|
import { AIProvider, CleanSlateEmbeddingProvider, ICleanSlateConfiguration, ICleanSlateAgentRuntimeSnapshot, ICleanSlateLogger, ICleanSlateMainService, ICleanSlateManagedEntitlements, ICleanSlatePendingAgentInteraction, IChatMessagePart } from '../protocol/cleanSlateAI.js';
|
|
3
4
|
import { CleanSlateManagedTokenCoordinator } from '../protocol/cleanSlateManagedTokenCoordinator.js';
|
|
@@ -52,6 +53,9 @@ export interface ICleanSlateNodeAgentRuntimeOptions {
|
|
|
52
53
|
sessionId?: string;
|
|
53
54
|
/** Deterministic host context such as project instructions and @mentioned files. */
|
|
54
55
|
additionalContext?: string | ((task: string) => string | Promise<string>);
|
|
56
|
+
/** Trusted in-process extensions. Each requested capability also requires an explicit host grant. */
|
|
57
|
+
extensions?: readonly ICleanSlateAgentExtensionV1[];
|
|
58
|
+
extensionHostOptions?: ICleanSlateAgentExtensionHostOptions;
|
|
55
59
|
/** Host-owned permission policy evaluated before every native tool. */
|
|
56
60
|
approveTool?: (request: {
|
|
57
61
|
toolName: string;
|
|
@@ -101,6 +105,8 @@ export declare class CleanSlateNodeAgentRuntime {
|
|
|
101
105
|
private readonly agentCoordinator;
|
|
102
106
|
private readonly sideChats;
|
|
103
107
|
private readonly sessionId;
|
|
108
|
+
private readonly extensionHost;
|
|
109
|
+
private activeExtensionRun;
|
|
104
110
|
private readonly contextService;
|
|
105
111
|
constructor(options: ICleanSlateNodeAgentRuntimeOptions);
|
|
106
112
|
run(task: string, signal?: AbortSignal): AsyncIterable<CleanSlateStreamPart>;
|
|
@@ -108,7 +114,9 @@ export declare class CleanSlateNodeAgentRuntime {
|
|
|
108
114
|
plan(task: string, signal?: AbortSignal): AsyncIterable<CleanSlateStreamPart>;
|
|
109
115
|
private runInPhase;
|
|
110
116
|
resumePendingQuestion(answer: string, signal?: AbortSignal): AsyncIterable<CleanSlateStreamPart>;
|
|
117
|
+
private resumePendingQuestionCore;
|
|
111
118
|
approvePlan(signal?: AbortSignal): AsyncIterable<CleanSlateStreamPart>;
|
|
119
|
+
private approvePlanCore;
|
|
112
120
|
getPendingQuestion(): ICleanSlatePendingAgentInteraction | undefined;
|
|
113
121
|
rejectPlan(): void;
|
|
114
122
|
getSessionSnapshot(): ICleanSlateNodeAgentSessionSnapshot;
|
|
@@ -125,6 +133,7 @@ export declare class CleanSlateNodeAgentRuntime {
|
|
|
125
133
|
closeSideChat(id: string): boolean;
|
|
126
134
|
getModels(): Promise<string[]>;
|
|
127
135
|
getManagedEntitlements(): Promise<ICleanSlateManagedEntitlements>;
|
|
136
|
+
private runWithExtensions;
|
|
128
137
|
private runMessages;
|
|
129
138
|
getAvailableToolCount(): number;
|
|
130
139
|
getResult(): import("./cleanSlateHeadlessRunner.js").ICleanSlateHeadlessRunResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanSlateNodeAgentRuntime.d.ts","sourceRoot":"","sources":["../../src/node/cleanSlateNodeAgentRuntime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cleanSlateNodeAgentRuntime.d.ts","sourceRoot":"","sources":["../../src/node/cleanSlateNodeAgentRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as fs from 'fs';
|
|
6
6
|
import * as path from 'path';
|
|
7
|
+
import { randomUUID } from 'crypto';
|
|
7
8
|
import { CleanSlateAgentExecutionSupport } from '../agent/cleanSlateAgentExecutionSupport.js';
|
|
8
9
|
import { CleanSlateAgentParsingSupport } from '../agent/cleanSlateAgentParsing.js';
|
|
9
10
|
import { CleanSlateAgentSession } from '../agent/cleanSlateAgentSession.js';
|
|
11
|
+
import { CleanSlateAgentExtensionHost } from '../agent/cleanSlateAgentExtensions.js';
|
|
10
12
|
import { CleanSlateExecutionBudget } from '../agent/cleanSlateExecutionBudget.js';
|
|
11
13
|
import { AgentPhase, parseSlashCommand } from '../agent/cleanSlatePrompts.js';
|
|
12
14
|
import { CleanSlateQueryRunner } from '../agent/cleanSlateQueryRunner.js';
|
|
@@ -162,6 +164,9 @@ export class CleanSlateNodeAgentRuntime {
|
|
|
162
164
|
};
|
|
163
165
|
this.rootPath = path.resolve(options.rootPath);
|
|
164
166
|
this.sessionId = options.sessionId?.trim() || `cli-${process.pid}-${Date.now()}`;
|
|
167
|
+
this.extensionHost = options.extensions?.length
|
|
168
|
+
? new CleanSlateAgentExtensionHost(options.extensions, options.extensionHostOptions ?? { grantedPermissions: {} })
|
|
169
|
+
: undefined;
|
|
165
170
|
this.mainService = options.mainService ?? new NodeCleanSlateMainService(this.rootPath);
|
|
166
171
|
this.configService = new NodeConfigurationService(options.configuration, this.mainService, options.onManagedTokenRefresh, options.managedSessionExpiredMessage, options.fetcher, options.managedTokenCoordinator);
|
|
167
172
|
this.managedTokenCoordinator = this.configService.managedTokenCoordinator;
|
|
@@ -228,7 +233,7 @@ export class CleanSlateNodeAgentRuntime {
|
|
|
228
233
|
});
|
|
229
234
|
}
|
|
230
235
|
async *run(task, signal) {
|
|
231
|
-
yield* this.runInPhase(task, AgentPhase.EXECUTION, signal);
|
|
236
|
+
yield* this.runWithExtensions('run', task, signal, () => this.runInPhase(task, AgentPhase.EXECUTION, signal));
|
|
232
237
|
}
|
|
233
238
|
async configureRun(configuration, agentDefinition) {
|
|
234
239
|
this.options.agentDefinition = agentDefinition;
|
|
@@ -236,7 +241,7 @@ export class CleanSlateNodeAgentRuntime {
|
|
|
236
241
|
this.options.configuration = this.configService.getConfiguration();
|
|
237
242
|
}
|
|
238
243
|
async *plan(task, signal) {
|
|
239
|
-
yield* this.runInPhase(task, AgentPhase.PLANNING, signal);
|
|
244
|
+
yield* this.runWithExtensions('plan', task, signal, () => this.runInPhase(task, AgentPhase.PLANNING, signal));
|
|
240
245
|
}
|
|
241
246
|
async *runInPhase(task, phase, signal) {
|
|
242
247
|
const objective = task.trim();
|
|
@@ -263,11 +268,14 @@ export class CleanSlateNodeAgentRuntime {
|
|
|
263
268
|
yield* this.runMessages(messages, objective, phase, signal);
|
|
264
269
|
}
|
|
265
270
|
async *resumePendingQuestion(answer, signal) {
|
|
271
|
+
const objective = this.agentSession.getSnapshot()?.objective?.trim() || 'Continue the current task.';
|
|
272
|
+
yield* this.runWithExtensions('resumePendingQuestion', objective, signal, () => this.resumePendingQuestionCore(answer, objective, signal));
|
|
273
|
+
}
|
|
274
|
+
async *resumePendingQuestionCore(answer, objective, signal) {
|
|
266
275
|
const pending = this.agentSession.resumePendingQuestion(answer);
|
|
267
276
|
if (!pending) {
|
|
268
277
|
throw new Error('There is no pending agent question to resume.');
|
|
269
278
|
}
|
|
270
|
-
const objective = pending.objective?.trim() || 'Continue the current task.';
|
|
271
279
|
this.threadService.addMessage('user', answer);
|
|
272
280
|
this.taskSessionService.resumeCurrentTask();
|
|
273
281
|
const phase = pending.phase === AgentPhase.PLANNING ? AgentPhase.PLANNING : AgentPhase.EXECUTION;
|
|
@@ -275,11 +283,13 @@ export class CleanSlateNodeAgentRuntime {
|
|
|
275
283
|
yield* this.runMessages(this.agentSession.getMutableMessages(), objective, phase, signal);
|
|
276
284
|
}
|
|
277
285
|
async *approvePlan(signal) {
|
|
286
|
+
const objective = this.agentSession.getSnapshot()?.objective?.trim() || 'Continue the current task.';
|
|
287
|
+
yield* this.runWithExtensions('approvePlan', objective, signal, () => this.approvePlanCore(objective, signal));
|
|
288
|
+
}
|
|
289
|
+
async *approvePlanCore(objective, signal) {
|
|
278
290
|
if (!this.taskSessionService.isAwaitingApproval()) {
|
|
279
291
|
throw new Error('There is no pending plan to approve.');
|
|
280
292
|
}
|
|
281
|
-
const snapshot = this.agentSession.getSnapshot();
|
|
282
|
-
const objective = snapshot?.objective?.trim() || 'Continue the current task.';
|
|
283
293
|
this.taskSessionService.approvePlan();
|
|
284
294
|
const approvalMessages = this.agentSession.continueWithLatestUserMessage([
|
|
285
295
|
{
|
|
@@ -373,6 +383,36 @@ export class CleanSlateNodeAgentRuntime {
|
|
|
373
383
|
getManagedEntitlements() {
|
|
374
384
|
return this.configService.getManagedEntitlements();
|
|
375
385
|
}
|
|
386
|
+
async *runWithExtensions(entryPoint, task, signal, streamFactory) {
|
|
387
|
+
const run = {
|
|
388
|
+
sessionId: this.sessionId,
|
|
389
|
+
runId: randomUUID(),
|
|
390
|
+
entryPoint,
|
|
391
|
+
task,
|
|
392
|
+
startedAt: Date.now()
|
|
393
|
+
};
|
|
394
|
+
this.activeExtensionRun = run;
|
|
395
|
+
let error;
|
|
396
|
+
await this.extensionHost?.start(run);
|
|
397
|
+
try {
|
|
398
|
+
for await (const part of streamFactory()) {
|
|
399
|
+
await this.extensionHost?.stream(run, part);
|
|
400
|
+
yield part;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
catch (caught) {
|
|
404
|
+
error = caught;
|
|
405
|
+
throw caught;
|
|
406
|
+
}
|
|
407
|
+
finally {
|
|
408
|
+
this.activeExtensionRun = undefined;
|
|
409
|
+
await this.extensionHost?.end(run, {
|
|
410
|
+
status: signal?.aborted ? 'cancelled' : error ? 'failed' : 'completed',
|
|
411
|
+
endedAt: Date.now(),
|
|
412
|
+
error: error instanceof Error ? error.message : error === undefined ? undefined : String(error)
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
}
|
|
376
416
|
async *runMessages(messages, objective, phase, signal) {
|
|
377
417
|
const parsingSupport = new CleanSlateAgentParsingSupport(this.configService);
|
|
378
418
|
const budget = new CleanSlateExecutionBudget(parsingSupport.getExecutionLoopSettings().maxTurns);
|
|
@@ -468,10 +508,14 @@ export class CleanSlateNodeAgentRuntime {
|
|
|
468
508
|
const additional = typeof this.options.additionalContext === 'function'
|
|
469
509
|
? await this.options.additionalContext(task)
|
|
470
510
|
: this.options.additionalContext;
|
|
511
|
+
const extensionContext = this.activeExtensionRun
|
|
512
|
+
? await this.extensionHost?.provideContext(this.activeExtensionRun)
|
|
513
|
+
: '';
|
|
471
514
|
return [
|
|
472
515
|
`Workspace root: ${this.rootPath}`,
|
|
473
516
|
instructions?.trim() ? `Agent instructions:\n${instructions.trim()}` : '',
|
|
474
|
-
additional?.trim()
|
|
517
|
+
additional?.trim(),
|
|
518
|
+
extensionContext?.trim()
|
|
475
519
|
].filter(Boolean).join('\n\n');
|
|
476
520
|
}
|
|
477
521
|
workspaceIsEmpty() {
|