@dexto/core 1.8.10 → 1.8.11
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/context/content-audit.cjs +118 -0
- package/dist/context/content-audit.d.ts +21 -0
- package/dist/context/content-audit.d.ts.map +1 -0
- package/dist/context/content-audit.js +93 -0
- package/dist/context/index.cjs +2 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -0
- package/dist/context/manager.cjs +2 -9
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +2 -9
- package/dist/llm/executor/turn-executor.cjs +29 -5
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +32 -5
- package/dist/session/chat-session.cjs +29 -0
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +32 -0
- package/package.json +2 -2
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var content_audit_exports = {};
|
|
20
|
+
__export(content_audit_exports, {
|
|
21
|
+
describeContentInputForAudit: () => describeContentInputForAudit,
|
|
22
|
+
describeContentPartsForAudit: () => describeContentPartsForAudit,
|
|
23
|
+
describeInternalMessageTailForAudit: () => describeInternalMessageTailForAudit
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(content_audit_exports);
|
|
26
|
+
var import_node_util = require("node:util");
|
|
27
|
+
async function describeContentInputForAudit(content) {
|
|
28
|
+
if (typeof content === "string") {
|
|
29
|
+
return describeContentPartsForAudit([{ type: "text", text: content }]);
|
|
30
|
+
}
|
|
31
|
+
return describeContentPartsForAudit(content);
|
|
32
|
+
}
|
|
33
|
+
async function describeContentPartsForAudit(content) {
|
|
34
|
+
let textParts = 0;
|
|
35
|
+
let imageParts = 0;
|
|
36
|
+
let fileParts = 0;
|
|
37
|
+
let resourceParts = 0;
|
|
38
|
+
let uiResourceParts = 0;
|
|
39
|
+
const textSegments = [];
|
|
40
|
+
for (const part of content) {
|
|
41
|
+
switch (part.type) {
|
|
42
|
+
case "text":
|
|
43
|
+
textParts += 1;
|
|
44
|
+
textSegments.push(part.text);
|
|
45
|
+
break;
|
|
46
|
+
case "image":
|
|
47
|
+
imageParts += 1;
|
|
48
|
+
break;
|
|
49
|
+
case "file":
|
|
50
|
+
fileParts += 1;
|
|
51
|
+
break;
|
|
52
|
+
case "resource":
|
|
53
|
+
resourceParts += 1;
|
|
54
|
+
break;
|
|
55
|
+
case "ui-resource":
|
|
56
|
+
uiResourceParts += 1;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const textLength = textSegments.reduce((total, text) => total + text.length, 0);
|
|
61
|
+
const textSha256 = textLength > 0 ? await sha256Hex(textSegments.join("\n")) : void 0;
|
|
62
|
+
return {
|
|
63
|
+
totalParts: content.length,
|
|
64
|
+
textParts,
|
|
65
|
+
imageParts,
|
|
66
|
+
fileParts,
|
|
67
|
+
resourceParts,
|
|
68
|
+
uiResourceParts,
|
|
69
|
+
textLength,
|
|
70
|
+
...textSha256 !== void 0 && { textSha256 }
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
async function describeInternalMessageTailForAudit(messages, limit) {
|
|
74
|
+
const tailStart = Math.max(0, messages.length - Math.max(0, limit));
|
|
75
|
+
const tail = messages.slice(tailStart);
|
|
76
|
+
return Promise.all(
|
|
77
|
+
tail.map(async (message) => {
|
|
78
|
+
const summary = Array.isArray(message.content) ? await describeContentPartsForAudit(message.content) : emptyContentAuditSummary();
|
|
79
|
+
return {
|
|
80
|
+
role: message.role,
|
|
81
|
+
contentPresent: message.content !== null,
|
|
82
|
+
...summary,
|
|
83
|
+
...message.id !== void 0 && { messageId: message.id },
|
|
84
|
+
...message.timestamp !== void 0 && { timestamp: message.timestamp }
|
|
85
|
+
};
|
|
86
|
+
})
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
function emptyContentAuditSummary() {
|
|
90
|
+
return {
|
|
91
|
+
totalParts: 0,
|
|
92
|
+
textParts: 0,
|
|
93
|
+
imageParts: 0,
|
|
94
|
+
fileParts: 0,
|
|
95
|
+
resourceParts: 0,
|
|
96
|
+
uiResourceParts: 0,
|
|
97
|
+
textLength: 0
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
async function sha256Hex(input) {
|
|
101
|
+
const subtle = globalThis.crypto?.subtle;
|
|
102
|
+
if (subtle === void 0) {
|
|
103
|
+
return void 0;
|
|
104
|
+
}
|
|
105
|
+
const bytes = new import_node_util.TextEncoder().encode(input);
|
|
106
|
+
const buffer = new ArrayBuffer(bytes.byteLength);
|
|
107
|
+
new Uint8Array(buffer).set(bytes);
|
|
108
|
+
const digest = await subtle.digest("SHA-256", buffer);
|
|
109
|
+
return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(
|
|
110
|
+
""
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
114
|
+
0 && (module.exports = {
|
|
115
|
+
describeContentInputForAudit,
|
|
116
|
+
describeContentPartsForAudit,
|
|
117
|
+
describeInternalMessageTailForAudit
|
|
118
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ContentPart, InternalMessage } from './types.js';
|
|
2
|
+
export type ContentAuditSummary = {
|
|
3
|
+
readonly totalParts: number;
|
|
4
|
+
readonly textParts: number;
|
|
5
|
+
readonly imageParts: number;
|
|
6
|
+
readonly fileParts: number;
|
|
7
|
+
readonly resourceParts: number;
|
|
8
|
+
readonly uiResourceParts: number;
|
|
9
|
+
readonly textLength: number;
|
|
10
|
+
readonly textSha256?: string;
|
|
11
|
+
};
|
|
12
|
+
export type MessageAuditSummary = ContentAuditSummary & {
|
|
13
|
+
readonly role: InternalMessage['role'];
|
|
14
|
+
readonly contentPresent: boolean;
|
|
15
|
+
readonly messageId?: string;
|
|
16
|
+
readonly timestamp?: number;
|
|
17
|
+
};
|
|
18
|
+
export declare function describeContentInputForAudit(content: string | readonly ContentPart[]): Promise<ContentAuditSummary>;
|
|
19
|
+
export declare function describeContentPartsForAudit(content: readonly ContentPart[]): Promise<ContentAuditSummary>;
|
|
20
|
+
export declare function describeInternalMessageTailForAudit(messages: readonly InternalMessage[], limit: number): Promise<MessageAuditSummary[]>;
|
|
21
|
+
//# sourceMappingURL=content-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-audit.d.ts","sourceRoot":"","sources":["../../src/context/content-audit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,GAAG;IACpD,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,wBAAsB,4BAA4B,CAC9C,OAAO,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,GACzC,OAAO,CAAC,mBAAmB,CAAC,CAM9B;AAED,wBAAsB,4BAA4B,CAC9C,OAAO,EAAE,SAAS,WAAW,EAAE,GAChC,OAAO,CAAC,mBAAmB,CAAC,CA0C9B;AAED,wBAAsB,mCAAmC,CACrD,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAmBhC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
2
|
+
import { TextEncoder } from "node:util";
|
|
3
|
+
async function describeContentInputForAudit(content) {
|
|
4
|
+
if (typeof content === "string") {
|
|
5
|
+
return describeContentPartsForAudit([{ type: "text", text: content }]);
|
|
6
|
+
}
|
|
7
|
+
return describeContentPartsForAudit(content);
|
|
8
|
+
}
|
|
9
|
+
async function describeContentPartsForAudit(content) {
|
|
10
|
+
let textParts = 0;
|
|
11
|
+
let imageParts = 0;
|
|
12
|
+
let fileParts = 0;
|
|
13
|
+
let resourceParts = 0;
|
|
14
|
+
let uiResourceParts = 0;
|
|
15
|
+
const textSegments = [];
|
|
16
|
+
for (const part of content) {
|
|
17
|
+
switch (part.type) {
|
|
18
|
+
case "text":
|
|
19
|
+
textParts += 1;
|
|
20
|
+
textSegments.push(part.text);
|
|
21
|
+
break;
|
|
22
|
+
case "image":
|
|
23
|
+
imageParts += 1;
|
|
24
|
+
break;
|
|
25
|
+
case "file":
|
|
26
|
+
fileParts += 1;
|
|
27
|
+
break;
|
|
28
|
+
case "resource":
|
|
29
|
+
resourceParts += 1;
|
|
30
|
+
break;
|
|
31
|
+
case "ui-resource":
|
|
32
|
+
uiResourceParts += 1;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const textLength = textSegments.reduce((total, text) => total + text.length, 0);
|
|
37
|
+
const textSha256 = textLength > 0 ? await sha256Hex(textSegments.join("\n")) : void 0;
|
|
38
|
+
return {
|
|
39
|
+
totalParts: content.length,
|
|
40
|
+
textParts,
|
|
41
|
+
imageParts,
|
|
42
|
+
fileParts,
|
|
43
|
+
resourceParts,
|
|
44
|
+
uiResourceParts,
|
|
45
|
+
textLength,
|
|
46
|
+
...textSha256 !== void 0 && { textSha256 }
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
async function describeInternalMessageTailForAudit(messages, limit) {
|
|
50
|
+
const tailStart = Math.max(0, messages.length - Math.max(0, limit));
|
|
51
|
+
const tail = messages.slice(tailStart);
|
|
52
|
+
return Promise.all(
|
|
53
|
+
tail.map(async (message) => {
|
|
54
|
+
const summary = Array.isArray(message.content) ? await describeContentPartsForAudit(message.content) : emptyContentAuditSummary();
|
|
55
|
+
return {
|
|
56
|
+
role: message.role,
|
|
57
|
+
contentPresent: message.content !== null,
|
|
58
|
+
...summary,
|
|
59
|
+
...message.id !== void 0 && { messageId: message.id },
|
|
60
|
+
...message.timestamp !== void 0 && { timestamp: message.timestamp }
|
|
61
|
+
};
|
|
62
|
+
})
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
function emptyContentAuditSummary() {
|
|
66
|
+
return {
|
|
67
|
+
totalParts: 0,
|
|
68
|
+
textParts: 0,
|
|
69
|
+
imageParts: 0,
|
|
70
|
+
fileParts: 0,
|
|
71
|
+
resourceParts: 0,
|
|
72
|
+
uiResourceParts: 0,
|
|
73
|
+
textLength: 0
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async function sha256Hex(input) {
|
|
77
|
+
const subtle = globalThis.crypto?.subtle;
|
|
78
|
+
if (subtle === void 0) {
|
|
79
|
+
return void 0;
|
|
80
|
+
}
|
|
81
|
+
const bytes = new TextEncoder().encode(input);
|
|
82
|
+
const buffer = new ArrayBuffer(bytes.byteLength);
|
|
83
|
+
new Uint8Array(buffer).set(bytes);
|
|
84
|
+
const digest = await subtle.digest("SHA-256", buffer);
|
|
85
|
+
return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join(
|
|
86
|
+
""
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
export {
|
|
90
|
+
describeContentInputForAudit,
|
|
91
|
+
describeContentPartsForAudit,
|
|
92
|
+
describeInternalMessageTailForAudit
|
|
93
|
+
};
|
package/dist/context/index.cjs
CHANGED
|
@@ -26,6 +26,7 @@ module.exports = __toCommonJS(context_exports);
|
|
|
26
26
|
__reExport(context_exports, require("./manager.js"), module.exports);
|
|
27
27
|
__reExport(context_exports, require("./schemas.js"), module.exports);
|
|
28
28
|
__reExport(context_exports, require("./types.js"), module.exports);
|
|
29
|
+
__reExport(context_exports, require("./content-audit.js"), module.exports);
|
|
29
30
|
var import_media_helpers = require("./media-helpers.js");
|
|
30
31
|
__reExport(context_exports, require("./compaction/index.js"), module.exports);
|
|
31
32
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -35,5 +36,6 @@ __reExport(context_exports, require("./compaction/index.js"), module.exports);
|
|
|
35
36
|
...require("./manager.js"),
|
|
36
37
|
...require("./schemas.js"),
|
|
37
38
|
...require("./types.js"),
|
|
39
|
+
...require("./content-audit.js"),
|
|
38
40
|
...require("./compaction/index.js")
|
|
39
41
|
});
|
package/dist/context/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './manager.js';
|
|
2
2
|
export * from './schemas.js';
|
|
3
3
|
export * from './types.js';
|
|
4
|
+
export * from './content-audit.js';
|
|
4
5
|
export { getFileMediaKind, getResourceKind } from './media-helpers.js';
|
|
5
6
|
export * from './compaction/index.js';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACvE,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACvE,cAAc,uBAAuB,CAAC"}
|
package/dist/context/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import "../chunk-C6A6W6XS.js";
|
|
|
2
2
|
export * from "./manager.js";
|
|
3
3
|
export * from "./schemas.js";
|
|
4
4
|
export * from "./types.js";
|
|
5
|
+
export * from "./content-audit.js";
|
|
5
6
|
import { getFileMediaKind, getResourceKind } from "./media-helpers.js";
|
|
6
7
|
export * from "./compaction/index.js";
|
|
7
8
|
export {
|
package/dist/context/manager.cjs
CHANGED
|
@@ -37,6 +37,7 @@ var import_types2 = require("../logger/v2/types.js");
|
|
|
37
37
|
var import_utils = require("./utils.js");
|
|
38
38
|
var import_errors = require("./errors.js");
|
|
39
39
|
var import_media_helpers = require("./media-helpers.js");
|
|
40
|
+
var import_content_audit = require("./content-audit.js");
|
|
40
41
|
class ContextManager {
|
|
41
42
|
static PROMPT_MEDIA_RETENTION_MESSAGES = 2;
|
|
42
43
|
/**
|
|
@@ -649,16 +650,8 @@ ${prompt}`);
|
|
|
649
650
|
processedParts.push(persisted);
|
|
650
651
|
}
|
|
651
652
|
}
|
|
652
|
-
const textParts = processedParts.filter((p) => p.type === "text");
|
|
653
|
-
const imageParts = processedParts.filter((p) => p.type === "image");
|
|
654
|
-
const fileParts = processedParts.filter((p) => p.type === "file");
|
|
655
|
-
const resourceParts = processedParts.filter((p) => p.type === "resource");
|
|
656
653
|
this.logger.info("User message received", {
|
|
657
|
-
|
|
658
|
-
imageParts: imageParts.length,
|
|
659
|
-
fileParts: fileParts.length,
|
|
660
|
-
resourceParts: resourceParts.length,
|
|
661
|
-
totalParts: processedParts.length
|
|
654
|
+
...await (0, import_content_audit.describeContentPartsForAudit)(processedParts)
|
|
662
655
|
});
|
|
663
656
|
await this.addMessage({ role: "user", content: processedParts });
|
|
664
657
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/context/manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAUpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/context/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/context/manager.js
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
} from "./utils.js";
|
|
13
13
|
import { ContextError } from "./errors.js";
|
|
14
14
|
import { getResourceKind } from "./media-helpers.js";
|
|
15
|
+
import { describeContentPartsForAudit } from "./content-audit.js";
|
|
15
16
|
class ContextManager {
|
|
16
17
|
static PROMPT_MEDIA_RETENTION_MESSAGES = 2;
|
|
17
18
|
/**
|
|
@@ -624,16 +625,8 @@ ${prompt}`);
|
|
|
624
625
|
processedParts.push(persisted);
|
|
625
626
|
}
|
|
626
627
|
}
|
|
627
|
-
const textParts = processedParts.filter((p) => p.type === "text");
|
|
628
|
-
const imageParts = processedParts.filter((p) => p.type === "image");
|
|
629
|
-
const fileParts = processedParts.filter((p) => p.type === "file");
|
|
630
|
-
const resourceParts = processedParts.filter((p) => p.type === "resource");
|
|
631
628
|
this.logger.info("User message received", {
|
|
632
|
-
|
|
633
|
-
imageParts: imageParts.length,
|
|
634
|
-
fileParts: fileParts.length,
|
|
635
|
-
resourceParts: resourceParts.length,
|
|
636
|
-
totalParts: processedParts.length
|
|
629
|
+
...await describeContentPartsForAudit(processedParts)
|
|
637
630
|
});
|
|
638
631
|
await this.addMessage({ role: "user", content: processedParts });
|
|
639
632
|
}
|
|
@@ -48,6 +48,7 @@ var import_error_conversion = require("../../utils/error-conversion.js");
|
|
|
48
48
|
var import_codex_base_url = require("../providers/codex-base-url.js");
|
|
49
49
|
var import_tool_definitions = require("./tool-definitions.js");
|
|
50
50
|
var import_types3 = require("../../approval/types.js");
|
|
51
|
+
var import_content_audit = require("../../context/content-audit.js");
|
|
51
52
|
const MCP_TOOL_PREFIX = "mcp--";
|
|
52
53
|
const MODEL_REQUEST_MAX_RETRIES = 2;
|
|
53
54
|
const LLMFinishReasonStateSchema = import_zod.z.enum([
|
|
@@ -387,6 +388,7 @@ class TurnExecutor {
|
|
|
387
388
|
() => this.prepareNextModelRequest({
|
|
388
389
|
contributorContext,
|
|
389
390
|
supportsTools: turn.supportsTools,
|
|
391
|
+
stepCount,
|
|
390
392
|
streaming: options.streaming
|
|
391
393
|
}),
|
|
392
394
|
this.logger
|
|
@@ -425,6 +427,7 @@ class TurnExecutor {
|
|
|
425
427
|
() => this.prepareNextModelRequest({
|
|
426
428
|
contributorContext,
|
|
427
429
|
supportsTools: turn.supportsTools,
|
|
430
|
+
stepCount,
|
|
428
431
|
streaming: options.streaming
|
|
429
432
|
}),
|
|
430
433
|
this.logger
|
|
@@ -785,10 +788,12 @@ class TurnExecutor {
|
|
|
785
788
|
originalMessageIds: coalesced.messages.map((m) => m.id)
|
|
786
789
|
}
|
|
787
790
|
});
|
|
788
|
-
this.logger.info(
|
|
791
|
+
this.logger.info("Queued turn input injected into context", {
|
|
789
792
|
count: coalesced.messages.length,
|
|
790
793
|
firstQueued: coalesced.firstQueuedAt,
|
|
791
|
-
lastQueued: coalesced.lastQueuedAt
|
|
794
|
+
lastQueued: coalesced.lastQueuedAt,
|
|
795
|
+
originalMessageIds: coalesced.messages.map((message) => message.id),
|
|
796
|
+
content: await (0, import_content_audit.describeContentPartsForAudit)(coalesced.combinedContent)
|
|
792
797
|
});
|
|
793
798
|
}
|
|
794
799
|
/**
|
|
@@ -865,9 +870,11 @@ class TurnExecutor {
|
|
|
865
870
|
}
|
|
866
871
|
}
|
|
867
872
|
async prepareNextModelRequest(input) {
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
873
|
+
if (input.stepCount > 0) {
|
|
874
|
+
const coalesced = await this.steerQueue.dequeueAll();
|
|
875
|
+
if (coalesced) {
|
|
876
|
+
await this.injectQueuedMessages(coalesced);
|
|
877
|
+
}
|
|
871
878
|
}
|
|
872
879
|
await this.pruneOldToolOutputs();
|
|
873
880
|
let systemPrompt = await (0, import_operation_span.recordOperationSpan)(
|
|
@@ -930,6 +937,7 @@ class TurnExecutor {
|
|
|
930
937
|
),
|
|
931
938
|
this.logger
|
|
932
939
|
);
|
|
940
|
+
let compacted = false;
|
|
933
941
|
if (this.shouldCompact(estimatedInputTokens)) {
|
|
934
942
|
this.logger.debug(
|
|
935
943
|
`Pre-check: estimated ${estimatedInputTokens} tokens exceeds threshold, compacting`
|
|
@@ -948,6 +956,7 @@ class TurnExecutor {
|
|
|
948
956
|
this.logger
|
|
949
957
|
);
|
|
950
958
|
if (didCompact) {
|
|
959
|
+
compacted = true;
|
|
951
960
|
systemPrompt = await (0, import_operation_span.recordOperationSpan)(
|
|
952
961
|
{
|
|
953
962
|
name: "system_prompt.build",
|
|
@@ -1038,6 +1047,21 @@ class TurnExecutor {
|
|
|
1038
1047
|
...reasoningVariant !== void 0 && { reasoningVariant },
|
|
1039
1048
|
...reasoningBudgetTokens !== void 0 && { reasoningBudgetTokens }
|
|
1040
1049
|
} : void 0;
|
|
1050
|
+
this.logger.info("Model request context prepared", {
|
|
1051
|
+
sessionId: this.sessionId,
|
|
1052
|
+
provider: this.llmContext.provider,
|
|
1053
|
+
model: this.llmContext.model,
|
|
1054
|
+
streaming: input.streaming,
|
|
1055
|
+
estimatedInputTokens,
|
|
1056
|
+
toolCount: Object.keys(toolDefinitions).length,
|
|
1057
|
+
formattedMessageCount: formattedMessages.length,
|
|
1058
|
+
preparedHistoryCount: preparedHistory.length,
|
|
1059
|
+
compacted,
|
|
1060
|
+
...this.runContext?.hostRuntime?.ids !== void 0 && {
|
|
1061
|
+
hostRuntimeIds: this.runContext.hostRuntime.ids
|
|
1062
|
+
},
|
|
1063
|
+
historyTail: await (0, import_content_audit.describeInternalMessageTailForAudit)(preparedHistory, 8)
|
|
1064
|
+
});
|
|
1041
1065
|
return {
|
|
1042
1066
|
messages: formattedMessages,
|
|
1043
1067
|
tools: input.supportsTools ? (0, import_tool_definitions.createModelToolDefinitions)(toolDefinitions) : {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-executor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/turn-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAMb,KAAK,YAAY,EAEpB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAa,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAS1D,OAAO,EACH,WAAW,EAId,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAMpD,OAAO,KAAK,EAAE,cAAc,EAAiB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEvF,OAAO,KAAK,EACR,UAAU,EACV,kBAAkB,EAClB,UAAU,EAGb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAIxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAQ1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"turn-executor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/turn-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,10 @@ import { toError } from "../../utils/error-conversion.js";
|
|
|
22
22
|
import { isCodexBaseURL } from "../providers/codex-base-url.js";
|
|
23
23
|
import { createModelToolDefinitions } from "./tool-definitions.js";
|
|
24
24
|
import { ApprovalStatus } from "../../approval/types.js";
|
|
25
|
+
import {
|
|
26
|
+
describeContentPartsForAudit,
|
|
27
|
+
describeInternalMessageTailForAudit
|
|
28
|
+
} from "../../context/content-audit.js";
|
|
25
29
|
const MCP_TOOL_PREFIX = "mcp--";
|
|
26
30
|
const MODEL_REQUEST_MAX_RETRIES = 2;
|
|
27
31
|
const LLMFinishReasonStateSchema = z.enum([
|
|
@@ -361,6 +365,7 @@ class TurnExecutor {
|
|
|
361
365
|
() => this.prepareNextModelRequest({
|
|
362
366
|
contributorContext,
|
|
363
367
|
supportsTools: turn.supportsTools,
|
|
368
|
+
stepCount,
|
|
364
369
|
streaming: options.streaming
|
|
365
370
|
}),
|
|
366
371
|
this.logger
|
|
@@ -399,6 +404,7 @@ class TurnExecutor {
|
|
|
399
404
|
() => this.prepareNextModelRequest({
|
|
400
405
|
contributorContext,
|
|
401
406
|
supportsTools: turn.supportsTools,
|
|
407
|
+
stepCount,
|
|
402
408
|
streaming: options.streaming
|
|
403
409
|
}),
|
|
404
410
|
this.logger
|
|
@@ -759,10 +765,12 @@ class TurnExecutor {
|
|
|
759
765
|
originalMessageIds: coalesced.messages.map((m) => m.id)
|
|
760
766
|
}
|
|
761
767
|
});
|
|
762
|
-
this.logger.info(
|
|
768
|
+
this.logger.info("Queued turn input injected into context", {
|
|
763
769
|
count: coalesced.messages.length,
|
|
764
770
|
firstQueued: coalesced.firstQueuedAt,
|
|
765
|
-
lastQueued: coalesced.lastQueuedAt
|
|
771
|
+
lastQueued: coalesced.lastQueuedAt,
|
|
772
|
+
originalMessageIds: coalesced.messages.map((message) => message.id),
|
|
773
|
+
content: await describeContentPartsForAudit(coalesced.combinedContent)
|
|
766
774
|
});
|
|
767
775
|
}
|
|
768
776
|
/**
|
|
@@ -839,9 +847,11 @@ class TurnExecutor {
|
|
|
839
847
|
}
|
|
840
848
|
}
|
|
841
849
|
async prepareNextModelRequest(input) {
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
850
|
+
if (input.stepCount > 0) {
|
|
851
|
+
const coalesced = await this.steerQueue.dequeueAll();
|
|
852
|
+
if (coalesced) {
|
|
853
|
+
await this.injectQueuedMessages(coalesced);
|
|
854
|
+
}
|
|
845
855
|
}
|
|
846
856
|
await this.pruneOldToolOutputs();
|
|
847
857
|
let systemPrompt = await recordOperationSpan(
|
|
@@ -904,6 +914,7 @@ class TurnExecutor {
|
|
|
904
914
|
),
|
|
905
915
|
this.logger
|
|
906
916
|
);
|
|
917
|
+
let compacted = false;
|
|
907
918
|
if (this.shouldCompact(estimatedInputTokens)) {
|
|
908
919
|
this.logger.debug(
|
|
909
920
|
`Pre-check: estimated ${estimatedInputTokens} tokens exceeds threshold, compacting`
|
|
@@ -922,6 +933,7 @@ class TurnExecutor {
|
|
|
922
933
|
this.logger
|
|
923
934
|
);
|
|
924
935
|
if (didCompact) {
|
|
936
|
+
compacted = true;
|
|
925
937
|
systemPrompt = await recordOperationSpan(
|
|
926
938
|
{
|
|
927
939
|
name: "system_prompt.build",
|
|
@@ -1012,6 +1024,21 @@ class TurnExecutor {
|
|
|
1012
1024
|
...reasoningVariant !== void 0 && { reasoningVariant },
|
|
1013
1025
|
...reasoningBudgetTokens !== void 0 && { reasoningBudgetTokens }
|
|
1014
1026
|
} : void 0;
|
|
1027
|
+
this.logger.info("Model request context prepared", {
|
|
1028
|
+
sessionId: this.sessionId,
|
|
1029
|
+
provider: this.llmContext.provider,
|
|
1030
|
+
model: this.llmContext.model,
|
|
1031
|
+
streaming: input.streaming,
|
|
1032
|
+
estimatedInputTokens,
|
|
1033
|
+
toolCount: Object.keys(toolDefinitions).length,
|
|
1034
|
+
formattedMessageCount: formattedMessages.length,
|
|
1035
|
+
preparedHistoryCount: preparedHistory.length,
|
|
1036
|
+
compacted,
|
|
1037
|
+
...this.runContext?.hostRuntime?.ids !== void 0 && {
|
|
1038
|
+
hostRuntimeIds: this.runContext.hostRuntime.ids
|
|
1039
|
+
},
|
|
1040
|
+
historyTail: await describeInternalMessageTailForAudit(preparedHistory, 8)
|
|
1041
|
+
});
|
|
1015
1042
|
return {
|
|
1016
1043
|
messages: formattedMessages,
|
|
1017
1044
|
tools: input.supportsTools ? createModelToolDefinitions(toolDefinitions) : {},
|
|
@@ -23,6 +23,7 @@ __export(chat_session_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(chat_session_exports);
|
|
24
24
|
var import_crypto = require("crypto");
|
|
25
25
|
var import_factory = require("../llm/services/factory.js");
|
|
26
|
+
var import_content_audit = require("../context/content-audit.js");
|
|
26
27
|
var import_events = require("../events/index.js");
|
|
27
28
|
var import_types = require("../logger/v2/types.js");
|
|
28
29
|
var import_errors = require("../errors/index.js");
|
|
@@ -427,6 +428,15 @@ class ChatSession {
|
|
|
427
428
|
const detachForwarders = this.attachRunEventForwarders(input.runContext);
|
|
428
429
|
try {
|
|
429
430
|
if (input.kind === "start") {
|
|
431
|
+
this.logger.info("ChatSession turn input received", {
|
|
432
|
+
sessionId: this.id,
|
|
433
|
+
turnKind: input.kind,
|
|
434
|
+
streaming: input.streaming ?? true,
|
|
435
|
+
...input.runContext?.hostRuntime?.ids !== void 0 && {
|
|
436
|
+
hostRuntimeIds: input.runContext.hostRuntime.ids
|
|
437
|
+
},
|
|
438
|
+
content: await (0, import_content_audit.describeContentInputForAudit)(input.content)
|
|
439
|
+
});
|
|
430
440
|
const modifiedParts = await (0, import_operation_span.recordOperationSpan)(
|
|
431
441
|
{
|
|
432
442
|
name: "chat_session.prepare_turn_input",
|
|
@@ -450,6 +460,25 @@ class ChatSession {
|
|
|
450
460
|
() => this.llmService.getContextManager().addUserMessage(modifiedParts),
|
|
451
461
|
this.logger
|
|
452
462
|
);
|
|
463
|
+
this.logger.info("ChatSession turn input persisted", {
|
|
464
|
+
sessionId: this.id,
|
|
465
|
+
turnKind: input.kind,
|
|
466
|
+
...input.runContext?.hostRuntime?.ids !== void 0 && {
|
|
467
|
+
hostRuntimeIds: input.runContext.hostRuntime.ids
|
|
468
|
+
},
|
|
469
|
+
content: await (0, import_content_audit.describeContentPartsForAudit)(modifiedParts)
|
|
470
|
+
});
|
|
471
|
+
} else {
|
|
472
|
+
this.logger.info("ChatSession turn resume requested", {
|
|
473
|
+
sessionId: this.id,
|
|
474
|
+
turnKind: input.kind,
|
|
475
|
+
streaming: input.streaming ?? true,
|
|
476
|
+
phase: input.state.phase,
|
|
477
|
+
stepCount: input.state.stepCount,
|
|
478
|
+
...input.runContext?.hostRuntime?.ids !== void 0 && {
|
|
479
|
+
hostRuntimeIds: input.runContext.hostRuntime.ids
|
|
480
|
+
}
|
|
481
|
+
});
|
|
453
482
|
}
|
|
454
483
|
const streaming = input.streaming ?? true;
|
|
455
484
|
const driver = await (0, import_operation_span.recordOperationSpan)(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import "../chunk-C6A6W6XS.js";
|
|
2
2
|
import { randomUUID } from "crypto";
|
|
3
3
|
import { createLLMService } from "../llm/services/factory.js";
|
|
4
|
+
import {
|
|
5
|
+
describeContentInputForAudit,
|
|
6
|
+
describeContentPartsForAudit
|
|
7
|
+
} from "../context/content-audit.js";
|
|
4
8
|
import {
|
|
5
9
|
SessionEventBus,
|
|
6
10
|
forwardSessionEventsToAgentBus
|
|
@@ -412,6 +416,15 @@ class ChatSession {
|
|
|
412
416
|
const detachForwarders = this.attachRunEventForwarders(input.runContext);
|
|
413
417
|
try {
|
|
414
418
|
if (input.kind === "start") {
|
|
419
|
+
this.logger.info("ChatSession turn input received", {
|
|
420
|
+
sessionId: this.id,
|
|
421
|
+
turnKind: input.kind,
|
|
422
|
+
streaming: input.streaming ?? true,
|
|
423
|
+
...input.runContext?.hostRuntime?.ids !== void 0 && {
|
|
424
|
+
hostRuntimeIds: input.runContext.hostRuntime.ids
|
|
425
|
+
},
|
|
426
|
+
content: await describeContentInputForAudit(input.content)
|
|
427
|
+
});
|
|
415
428
|
const modifiedParts = await recordOperationSpan(
|
|
416
429
|
{
|
|
417
430
|
name: "chat_session.prepare_turn_input",
|
|
@@ -435,6 +448,25 @@ class ChatSession {
|
|
|
435
448
|
() => this.llmService.getContextManager().addUserMessage(modifiedParts),
|
|
436
449
|
this.logger
|
|
437
450
|
);
|
|
451
|
+
this.logger.info("ChatSession turn input persisted", {
|
|
452
|
+
sessionId: this.id,
|
|
453
|
+
turnKind: input.kind,
|
|
454
|
+
...input.runContext?.hostRuntime?.ids !== void 0 && {
|
|
455
|
+
hostRuntimeIds: input.runContext.hostRuntime.ids
|
|
456
|
+
},
|
|
457
|
+
content: await describeContentPartsForAudit(modifiedParts)
|
|
458
|
+
});
|
|
459
|
+
} else {
|
|
460
|
+
this.logger.info("ChatSession turn resume requested", {
|
|
461
|
+
sessionId: this.id,
|
|
462
|
+
turnKind: input.kind,
|
|
463
|
+
streaming: input.streaming ?? true,
|
|
464
|
+
phase: input.state.phase,
|
|
465
|
+
stepCount: input.state.stepCount,
|
|
466
|
+
...input.runContext?.hostRuntime?.ids !== void 0 && {
|
|
467
|
+
hostRuntimeIds: input.runContext.hostRuntime.ids
|
|
468
|
+
}
|
|
469
|
+
});
|
|
438
470
|
}
|
|
439
471
|
const streaming = input.streaming ?? true;
|
|
440
472
|
const driver = await recordOperationSpan(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dexto/core",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.11",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
"nanoid": "^5.1.6",
|
|
158
158
|
"winston": "^3.17.0",
|
|
159
159
|
"yaml": "^2.8.3",
|
|
160
|
-
"@dexto/llm": "1.8.
|
|
160
|
+
"@dexto/llm": "1.8.11"
|
|
161
161
|
},
|
|
162
162
|
"devDependencies": {
|
|
163
163
|
"@opentelemetry/context-async-hooks": "^1.28.0",
|