@agent-native/core 0.34.0 → 0.35.2
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/agent/context-xray/actions/context-evict.d.ts +3 -0
- package/dist/agent/context-xray/actions/context-evict.d.ts.map +1 -0
- package/dist/agent/context-xray/actions/context-evict.js +35 -0
- package/dist/agent/context-xray/actions/context-evict.js.map +1 -0
- package/dist/agent/context-xray/actions/context-manifest-get.d.ts +3 -0
- package/dist/agent/context-xray/actions/context-manifest-get.d.ts.map +1 -0
- package/dist/agent/context-xray/actions/context-manifest-get.js +67 -0
- package/dist/agent/context-xray/actions/context-manifest-get.js.map +1 -0
- package/dist/agent/context-xray/actions/context-pin.d.ts +3 -0
- package/dist/agent/context-xray/actions/context-pin.d.ts.map +1 -0
- package/dist/agent/context-xray/actions/context-pin.js +35 -0
- package/dist/agent/context-xray/actions/context-pin.js.map +1 -0
- package/dist/agent/context-xray/actions/context-report.d.ts +3 -0
- package/dist/agent/context-xray/actions/context-report.d.ts.map +1 -0
- package/dist/agent/context-xray/actions/context-report.js +59 -0
- package/dist/agent/context-xray/actions/context-report.js.map +1 -0
- package/dist/agent/context-xray/actions/context-restore.d.ts +3 -0
- package/dist/agent/context-xray/actions/context-restore.d.ts.map +1 -0
- package/dist/agent/context-xray/actions/context-restore.js +33 -0
- package/dist/agent/context-xray/actions/context-restore.js.map +1 -0
- package/dist/agent/context-xray/actions/errors.d.ts +7 -0
- package/dist/agent/context-xray/actions/errors.d.ts.map +1 -0
- package/dist/agent/context-xray/actions/errors.js +15 -0
- package/dist/agent/context-xray/actions/errors.js.map +1 -0
- package/dist/agent/context-xray/apply-directives.d.ts +10 -0
- package/dist/agent/context-xray/apply-directives.d.ts.map +1 -0
- package/dist/agent/context-xray/apply-directives.js +100 -0
- package/dist/agent/context-xray/apply-directives.js.map +1 -0
- package/dist/agent/context-xray/directives-store.d.ts +26 -0
- package/dist/agent/context-xray/directives-store.d.ts.map +1 -0
- package/dist/agent/context-xray/directives-store.js +131 -0
- package/dist/agent/context-xray/directives-store.js.map +1 -0
- package/dist/agent/context-xray/identity.d.ts +5 -0
- package/dist/agent/context-xray/identity.d.ts.map +1 -0
- package/dist/agent/context-xray/identity.js +33 -0
- package/dist/agent/context-xray/identity.js.map +1 -0
- package/dist/agent/context-xray/manifest.d.ts +19 -0
- package/dist/agent/context-xray/manifest.d.ts.map +1 -0
- package/dist/agent/context-xray/manifest.js +115 -0
- package/dist/agent/context-xray/manifest.js.map +1 -0
- package/dist/agent/context-xray/migrations.d.ts +3 -0
- package/dist/agent/context-xray/migrations.d.ts.map +1 -0
- package/dist/agent/context-xray/migrations.js +31 -0
- package/dist/agent/context-xray/migrations.js.map +1 -0
- package/dist/agent/context-xray/plugin.d.ts +5 -0
- package/dist/agent/context-xray/plugin.d.ts.map +1 -0
- package/dist/agent/context-xray/plugin.js +15 -0
- package/dist/agent/context-xray/plugin.js.map +1 -0
- package/dist/agent/context-xray/schema.d.ts +249 -0
- package/dist/agent/context-xray/schema.d.ts.map +1 -0
- package/dist/agent/context-xray/schema.js +17 -0
- package/dist/agent/context-xray/schema.js.map +1 -0
- package/dist/agent/context-xray/segments.d.ts +19 -0
- package/dist/agent/context-xray/segments.d.ts.map +1 -0
- package/dist/agent/context-xray/segments.js +154 -0
- package/dist/agent/context-xray/segments.js.map +1 -0
- package/dist/agent/context-xray/tokenize.d.ts +10 -0
- package/dist/agent/context-xray/tokenize.d.ts.map +1 -0
- package/dist/agent/context-xray/tokenize.js +70 -0
- package/dist/agent/context-xray/tokenize.js.map +1 -0
- package/dist/agent/production-agent.d.ts +2 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +45 -5
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/context-xray-local.d.ts +16 -0
- package/dist/cli/context-xray-local.d.ts.map +1 -0
- package/dist/cli/context-xray-local.js +738 -0
- package/dist/cli/context-xray-local.js.map +1 -0
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +1 -0
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/skills.d.ts +3 -0
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +200 -73
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/templates-meta.js +5 -5
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +2 -1
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/components/ui/sheet.d.ts +16 -0
- package/dist/client/components/ui/sheet.d.ts.map +1 -0
- package/dist/client/components/ui/sheet.js +23 -0
- package/dist/client/components/ui/sheet.js.map +1 -0
- package/dist/client/context-xray/ContextMeter.d.ts +4 -0
- package/dist/client/context-xray/ContextMeter.d.ts.map +1 -0
- package/dist/client/context-xray/ContextMeter.js +76 -0
- package/dist/client/context-xray/ContextMeter.js.map +1 -0
- package/dist/client/context-xray/ContextSegmentRow.d.ts +9 -0
- package/dist/client/context-xray/ContextSegmentRow.d.ts.map +1 -0
- package/dist/client/context-xray/ContextSegmentRow.js +22 -0
- package/dist/client/context-xray/ContextSegmentRow.js.map +1 -0
- package/dist/client/context-xray/ContextTreemap.d.ts +6 -0
- package/dist/client/context-xray/ContextTreemap.d.ts.map +1 -0
- package/dist/client/context-xray/ContextTreemap.js +49 -0
- package/dist/client/context-xray/ContextTreemap.js.map +1 -0
- package/dist/client/context-xray/ContextXRayPanel.d.ts +11 -0
- package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -0
- package/dist/client/context-xray/ContextXRayPanel.js +87 -0
- package/dist/client/context-xray/ContextXRayPanel.js.map +1 -0
- package/dist/client/context-xray/SegmentProvenancePopover.d.ts +7 -0
- package/dist/client/context-xray/SegmentProvenancePopover.d.ts.map +1 -0
- package/dist/client/context-xray/SegmentProvenancePopover.js +7 -0
- package/dist/client/context-xray/SegmentProvenancePopover.js.map +1 -0
- package/dist/client/context-xray/format.d.ts +7 -0
- package/dist/client/context-xray/format.d.ts.map +1 -0
- package/dist/client/context-xray/format.js +47 -0
- package/dist/client/context-xray/format.js.map +1 -0
- package/dist/deploy/route-discovery.d.ts.map +1 -1
- package/dist/deploy/route-discovery.js +1 -0
- package/dist/deploy/route-discovery.js.map +1 -1
- package/dist/deploy/workspace-core.d.ts +1 -1
- package/dist/deploy/workspace-core.d.ts.map +1 -1
- package/dist/deploy/workspace-core.js +1 -0
- package/dist/deploy/workspace-core.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +20 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +2 -0
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/shared/context-xray.d.ts +58 -0
- package/dist/shared/context-xray.d.ts.map +1 -0
- package/dist/shared/context-xray.js +17 -0
- package/dist/shared/context-xray.js.map +1 -0
- package/dist/templates/default/package.json +3 -3
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +20 -0
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/package.json +15 -7
- package/src/templates/default/package.json +3 -3
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
export declare const contextDirectives: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
2
|
+
name: "context_directives";
|
|
3
|
+
schema: undefined;
|
|
4
|
+
columns: {
|
|
5
|
+
ownerEmail: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
6
|
+
name: "owner_email";
|
|
7
|
+
tableName: "context_directives";
|
|
8
|
+
dataType: "string";
|
|
9
|
+
columnType: "SQLiteText";
|
|
10
|
+
data: string;
|
|
11
|
+
driverParam: string;
|
|
12
|
+
notNull: true;
|
|
13
|
+
hasDefault: true;
|
|
14
|
+
isPrimaryKey: false;
|
|
15
|
+
isAutoincrement: false;
|
|
16
|
+
hasRuntimeDefault: false;
|
|
17
|
+
enumValues: [string, ...string[]];
|
|
18
|
+
baseColumn: never;
|
|
19
|
+
identity: undefined;
|
|
20
|
+
generated: undefined;
|
|
21
|
+
}, {}, {
|
|
22
|
+
length: number;
|
|
23
|
+
}>;
|
|
24
|
+
orgId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
25
|
+
name: "org_id";
|
|
26
|
+
tableName: "context_directives";
|
|
27
|
+
dataType: "string";
|
|
28
|
+
columnType: "SQLiteText";
|
|
29
|
+
data: string;
|
|
30
|
+
driverParam: string;
|
|
31
|
+
notNull: false;
|
|
32
|
+
hasDefault: false;
|
|
33
|
+
isPrimaryKey: false;
|
|
34
|
+
isAutoincrement: false;
|
|
35
|
+
hasRuntimeDefault: false;
|
|
36
|
+
enumValues: [string, ...string[]];
|
|
37
|
+
baseColumn: never;
|
|
38
|
+
identity: undefined;
|
|
39
|
+
generated: undefined;
|
|
40
|
+
}, {}, {
|
|
41
|
+
length: number;
|
|
42
|
+
}>;
|
|
43
|
+
visibility: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
44
|
+
name: "visibility";
|
|
45
|
+
tableName: "context_directives";
|
|
46
|
+
dataType: "string";
|
|
47
|
+
columnType: "SQLiteText";
|
|
48
|
+
data: "org" | "private" | "public";
|
|
49
|
+
driverParam: string;
|
|
50
|
+
notNull: true;
|
|
51
|
+
hasDefault: true;
|
|
52
|
+
isPrimaryKey: false;
|
|
53
|
+
isAutoincrement: false;
|
|
54
|
+
hasRuntimeDefault: false;
|
|
55
|
+
enumValues: ["private", "org", "public"];
|
|
56
|
+
baseColumn: never;
|
|
57
|
+
identity: undefined;
|
|
58
|
+
generated: undefined;
|
|
59
|
+
}, {}, {
|
|
60
|
+
length: number;
|
|
61
|
+
}>;
|
|
62
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
63
|
+
name: "id";
|
|
64
|
+
tableName: "context_directives";
|
|
65
|
+
dataType: "string";
|
|
66
|
+
columnType: "SQLiteText";
|
|
67
|
+
data: string;
|
|
68
|
+
driverParam: string;
|
|
69
|
+
notNull: true;
|
|
70
|
+
hasDefault: false;
|
|
71
|
+
isPrimaryKey: true;
|
|
72
|
+
isAutoincrement: false;
|
|
73
|
+
hasRuntimeDefault: false;
|
|
74
|
+
enumValues: [string, ...string[]];
|
|
75
|
+
baseColumn: never;
|
|
76
|
+
identity: undefined;
|
|
77
|
+
generated: undefined;
|
|
78
|
+
}, {}, {
|
|
79
|
+
length: number;
|
|
80
|
+
}>;
|
|
81
|
+
threadId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
82
|
+
name: "thread_id";
|
|
83
|
+
tableName: "context_directives";
|
|
84
|
+
dataType: "string";
|
|
85
|
+
columnType: "SQLiteText";
|
|
86
|
+
data: string;
|
|
87
|
+
driverParam: string;
|
|
88
|
+
notNull: true;
|
|
89
|
+
hasDefault: false;
|
|
90
|
+
isPrimaryKey: false;
|
|
91
|
+
isAutoincrement: false;
|
|
92
|
+
hasRuntimeDefault: false;
|
|
93
|
+
enumValues: [string, ...string[]];
|
|
94
|
+
baseColumn: never;
|
|
95
|
+
identity: undefined;
|
|
96
|
+
generated: undefined;
|
|
97
|
+
}, {}, {
|
|
98
|
+
length: number;
|
|
99
|
+
}>;
|
|
100
|
+
segmentId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
101
|
+
name: "segment_id";
|
|
102
|
+
tableName: "context_directives";
|
|
103
|
+
dataType: "string";
|
|
104
|
+
columnType: "SQLiteText";
|
|
105
|
+
data: string;
|
|
106
|
+
driverParam: string;
|
|
107
|
+
notNull: true;
|
|
108
|
+
hasDefault: false;
|
|
109
|
+
isPrimaryKey: false;
|
|
110
|
+
isAutoincrement: false;
|
|
111
|
+
hasRuntimeDefault: false;
|
|
112
|
+
enumValues: [string, ...string[]];
|
|
113
|
+
baseColumn: never;
|
|
114
|
+
identity: undefined;
|
|
115
|
+
generated: undefined;
|
|
116
|
+
}, {}, {
|
|
117
|
+
length: number;
|
|
118
|
+
}>;
|
|
119
|
+
action: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
120
|
+
name: "action";
|
|
121
|
+
tableName: "context_directives";
|
|
122
|
+
dataType: "string";
|
|
123
|
+
columnType: "SQLiteText";
|
|
124
|
+
data: "pin" | "evict" | "summarize";
|
|
125
|
+
driverParam: string;
|
|
126
|
+
notNull: true;
|
|
127
|
+
hasDefault: false;
|
|
128
|
+
isPrimaryKey: false;
|
|
129
|
+
isAutoincrement: false;
|
|
130
|
+
hasRuntimeDefault: false;
|
|
131
|
+
enumValues: ["pin", "evict", "summarize"];
|
|
132
|
+
baseColumn: never;
|
|
133
|
+
identity: undefined;
|
|
134
|
+
generated: undefined;
|
|
135
|
+
}, {}, {
|
|
136
|
+
length: number;
|
|
137
|
+
}>;
|
|
138
|
+
summaryText: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
139
|
+
name: "summary_text";
|
|
140
|
+
tableName: "context_directives";
|
|
141
|
+
dataType: "string";
|
|
142
|
+
columnType: "SQLiteText";
|
|
143
|
+
data: string;
|
|
144
|
+
driverParam: string;
|
|
145
|
+
notNull: false;
|
|
146
|
+
hasDefault: false;
|
|
147
|
+
isPrimaryKey: false;
|
|
148
|
+
isAutoincrement: false;
|
|
149
|
+
hasRuntimeDefault: false;
|
|
150
|
+
enumValues: [string, ...string[]];
|
|
151
|
+
baseColumn: never;
|
|
152
|
+
identity: undefined;
|
|
153
|
+
generated: undefined;
|
|
154
|
+
}, {}, {
|
|
155
|
+
length: number;
|
|
156
|
+
}>;
|
|
157
|
+
createdBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
158
|
+
name: "created_by";
|
|
159
|
+
tableName: "context_directives";
|
|
160
|
+
dataType: "string";
|
|
161
|
+
columnType: "SQLiteText";
|
|
162
|
+
data: "user" | "agent";
|
|
163
|
+
driverParam: string;
|
|
164
|
+
notNull: true;
|
|
165
|
+
hasDefault: true;
|
|
166
|
+
isPrimaryKey: false;
|
|
167
|
+
isAutoincrement: false;
|
|
168
|
+
hasRuntimeDefault: false;
|
|
169
|
+
enumValues: ["user", "agent"];
|
|
170
|
+
baseColumn: never;
|
|
171
|
+
identity: undefined;
|
|
172
|
+
generated: undefined;
|
|
173
|
+
}, {}, {
|
|
174
|
+
length: number;
|
|
175
|
+
}>;
|
|
176
|
+
active: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
177
|
+
name: "active";
|
|
178
|
+
tableName: "context_directives";
|
|
179
|
+
dataType: "boolean";
|
|
180
|
+
columnType: "SQLiteBoolean";
|
|
181
|
+
data: boolean;
|
|
182
|
+
driverParam: number;
|
|
183
|
+
notNull: true;
|
|
184
|
+
hasDefault: true;
|
|
185
|
+
isPrimaryKey: false;
|
|
186
|
+
isAutoincrement: false;
|
|
187
|
+
hasRuntimeDefault: false;
|
|
188
|
+
enumValues: undefined;
|
|
189
|
+
baseColumn: never;
|
|
190
|
+
identity: undefined;
|
|
191
|
+
generated: undefined;
|
|
192
|
+
}, {}, {}>;
|
|
193
|
+
originTurn: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
194
|
+
name: "origin_turn";
|
|
195
|
+
tableName: "context_directives";
|
|
196
|
+
dataType: "string";
|
|
197
|
+
columnType: "SQLiteText";
|
|
198
|
+
data: string;
|
|
199
|
+
driverParam: string;
|
|
200
|
+
notNull: false;
|
|
201
|
+
hasDefault: false;
|
|
202
|
+
isPrimaryKey: false;
|
|
203
|
+
isAutoincrement: false;
|
|
204
|
+
hasRuntimeDefault: false;
|
|
205
|
+
enumValues: [string, ...string[]];
|
|
206
|
+
baseColumn: never;
|
|
207
|
+
identity: undefined;
|
|
208
|
+
generated: undefined;
|
|
209
|
+
}, {}, {
|
|
210
|
+
length: number;
|
|
211
|
+
}>;
|
|
212
|
+
createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
213
|
+
name: "created_at";
|
|
214
|
+
tableName: "context_directives";
|
|
215
|
+
dataType: "number";
|
|
216
|
+
columnType: "SQLiteInteger";
|
|
217
|
+
data: number;
|
|
218
|
+
driverParam: number;
|
|
219
|
+
notNull: true;
|
|
220
|
+
hasDefault: false;
|
|
221
|
+
isPrimaryKey: false;
|
|
222
|
+
isAutoincrement: false;
|
|
223
|
+
hasRuntimeDefault: false;
|
|
224
|
+
enumValues: undefined;
|
|
225
|
+
baseColumn: never;
|
|
226
|
+
identity: undefined;
|
|
227
|
+
generated: undefined;
|
|
228
|
+
}, {}, {}>;
|
|
229
|
+
updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
230
|
+
name: "updated_at";
|
|
231
|
+
tableName: "context_directives";
|
|
232
|
+
dataType: "number";
|
|
233
|
+
columnType: "SQLiteInteger";
|
|
234
|
+
data: number;
|
|
235
|
+
driverParam: number;
|
|
236
|
+
notNull: true;
|
|
237
|
+
hasDefault: false;
|
|
238
|
+
isPrimaryKey: false;
|
|
239
|
+
isAutoincrement: false;
|
|
240
|
+
hasRuntimeDefault: false;
|
|
241
|
+
enumValues: undefined;
|
|
242
|
+
baseColumn: never;
|
|
243
|
+
identity: undefined;
|
|
244
|
+
generated: undefined;
|
|
245
|
+
}, {}, {}>;
|
|
246
|
+
};
|
|
247
|
+
dialect: "sqlite";
|
|
248
|
+
}>;
|
|
249
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/agent/context-xray/schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc5B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { table, text, integer, ownableColumns } from "../../db/schema.js";
|
|
2
|
+
export const contextDirectives = table("context_directives", {
|
|
3
|
+
id: text("id").primaryKey(),
|
|
4
|
+
threadId: text("thread_id").notNull(),
|
|
5
|
+
segmentId: text("segment_id").notNull(),
|
|
6
|
+
action: text("action", { enum: ["pin", "evict", "summarize"] }).notNull(),
|
|
7
|
+
summaryText: text("summary_text"),
|
|
8
|
+
createdBy: text("created_by", { enum: ["user", "agent"] })
|
|
9
|
+
.notNull()
|
|
10
|
+
.default("user"),
|
|
11
|
+
active: integer("active", { mode: "boolean" }).notNull().default(true),
|
|
12
|
+
originTurn: text("origin_turn"),
|
|
13
|
+
createdAt: integer("created_at").notNull(),
|
|
14
|
+
updatedAt: integer("updated_at").notNull(),
|
|
15
|
+
...ownableColumns(),
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/agent/context-xray/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,EAAE;IAC3D,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;IACzE,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IACjC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;SACvD,OAAO,EAAE;SACT,OAAO,CAAC,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,GAAG,cAAc,EAAE;CACpB,CAAC,CAAC","sourcesContent":["import { table, text, integer, ownableColumns } from \"../../db/schema.js\";\n\nexport const contextDirectives = table(\"context_directives\", {\n id: text(\"id\").primaryKey(),\n threadId: text(\"thread_id\").notNull(),\n segmentId: text(\"segment_id\").notNull(),\n action: text(\"action\", { enum: [\"pin\", \"evict\", \"summarize\"] }).notNull(),\n summaryText: text(\"summary_text\"),\n createdBy: text(\"created_by\", { enum: [\"user\", \"agent\"] })\n .notNull()\n .default(\"user\"),\n active: integer(\"active\", { mode: \"boolean\" }).notNull().default(true),\n originTurn: text(\"origin_turn\"),\n createdAt: integer(\"created_at\").notNull(),\n updatedAt: integer(\"updated_at\").notNull(),\n ...ownableColumns(),\n});\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { EngineContentPart, EngineMessage } from "../engine/types.js";
|
|
2
|
+
import type { ContextSegmentRole, ContextSegmentType } from "../../shared/context-xray.js";
|
|
3
|
+
export interface ContextSegment {
|
|
4
|
+
segmentId: string;
|
|
5
|
+
msgIndex: number;
|
|
6
|
+
partIndex: number;
|
|
7
|
+
role: ContextSegmentRole;
|
|
8
|
+
type: ContextSegmentType;
|
|
9
|
+
label: string;
|
|
10
|
+
group: string;
|
|
11
|
+
canonicalContent: string;
|
|
12
|
+
hash: string;
|
|
13
|
+
dupIndex: number;
|
|
14
|
+
pairKey?: string;
|
|
15
|
+
part: EngineContentPart;
|
|
16
|
+
}
|
|
17
|
+
export declare function computeSegments(messages: EngineMessage[]): ContextSegment[];
|
|
18
|
+
export declare function computeProtectedSegmentIds(messages: EngineMessage[]): Set<string>;
|
|
19
|
+
//# sourceMappingURL=segments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../../src/agent/context-xray/segments.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAQtC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAoED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CA0C3E;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,aAAa,EAAE,GACxB,GAAG,CAAC,MAAM,CAAC,CAoDb"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { normalizeToolCallInputForIdentity, parseToolInputForIdentity, stableStringify, toolPairKey, } from "./identity.js";
|
|
3
|
+
function sha256(value) {
|
|
4
|
+
return createHash("sha256").update(value).digest("hex");
|
|
5
|
+
}
|
|
6
|
+
function dataHash(data) {
|
|
7
|
+
return sha256(data || "");
|
|
8
|
+
}
|
|
9
|
+
function canonicalContent(part) {
|
|
10
|
+
if (part.type === "text")
|
|
11
|
+
return part.text;
|
|
12
|
+
if (part.type === "tool-call") {
|
|
13
|
+
return `${part.name}:${stableStringify(normalizeToolCallInputForIdentity(part.input))}`;
|
|
14
|
+
}
|
|
15
|
+
if (part.type === "tool-result") {
|
|
16
|
+
return `${part.toolName}:${stableStringify(normalizeToolCallInputForIdentity(parseToolInputForIdentity(part.toolInput)))}`;
|
|
17
|
+
}
|
|
18
|
+
if (part.type === "file") {
|
|
19
|
+
return `${dataHash(part.data)}:${part.mediaType}:${part.filename ?? ""}`;
|
|
20
|
+
}
|
|
21
|
+
if (part.type === "image") {
|
|
22
|
+
return `${dataHash(part.data)}:${part.mediaType}`;
|
|
23
|
+
}
|
|
24
|
+
return part.text;
|
|
25
|
+
}
|
|
26
|
+
function compactText(value, fallback) {
|
|
27
|
+
const normalized = value.replace(/\s+/g, " ").trim();
|
|
28
|
+
if (!normalized)
|
|
29
|
+
return fallback;
|
|
30
|
+
return normalized.length > 72 ? `${normalized.slice(0, 69)}...` : normalized;
|
|
31
|
+
}
|
|
32
|
+
function labelForPart(role, part) {
|
|
33
|
+
if (part.type === "text")
|
|
34
|
+
return `${role}: ${compactText(part.text, "text")}`;
|
|
35
|
+
if (part.type === "tool-call")
|
|
36
|
+
return `call ${part.name}`;
|
|
37
|
+
if (part.type === "tool-result")
|
|
38
|
+
return `${part.toolName} result`;
|
|
39
|
+
if (part.type === "file")
|
|
40
|
+
return part.filename ?? `file ${part.mediaType}`;
|
|
41
|
+
if (part.type === "image")
|
|
42
|
+
return `image ${part.mediaType}`;
|
|
43
|
+
return "thinking";
|
|
44
|
+
}
|
|
45
|
+
function groupForPart(part) {
|
|
46
|
+
if (part.type === "tool-call" || part.type === "tool-result") {
|
|
47
|
+
return "Tool results";
|
|
48
|
+
}
|
|
49
|
+
if (part.type === "file" || part.type === "image")
|
|
50
|
+
return "Files read";
|
|
51
|
+
if (part.type === "thinking")
|
|
52
|
+
return "Thinking";
|
|
53
|
+
return "Conversation";
|
|
54
|
+
}
|
|
55
|
+
function basePairKeyForPart(part) {
|
|
56
|
+
if (part.type === "tool-call")
|
|
57
|
+
return toolPairKey(part.name, part.input);
|
|
58
|
+
if (part.type === "tool-result") {
|
|
59
|
+
return toolPairKey(part.toolName, part.toolInput);
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
export function computeSegments(messages) {
|
|
64
|
+
const dupCounts = new Map();
|
|
65
|
+
const toolCallPairCounts = new Map();
|
|
66
|
+
const toolResultPairCounts = new Map();
|
|
67
|
+
const segments = [];
|
|
68
|
+
messages.forEach((message, msgIndex) => {
|
|
69
|
+
message.content.forEach((part, partIndex) => {
|
|
70
|
+
const canonical = canonicalContent(part);
|
|
71
|
+
const hash = sha256(canonical).slice(0, 16);
|
|
72
|
+
const role = message.role;
|
|
73
|
+
const type = part.type;
|
|
74
|
+
const dupKey = `${role}:${type}:${hash}`;
|
|
75
|
+
const dupIndex = dupCounts.get(dupKey) ?? 0;
|
|
76
|
+
dupCounts.set(dupKey, dupIndex + 1);
|
|
77
|
+
const basePairKey = basePairKeyForPart(part);
|
|
78
|
+
let pairKey;
|
|
79
|
+
if (basePairKey) {
|
|
80
|
+
const counts = part.type === "tool-call" ? toolCallPairCounts : toolResultPairCounts;
|
|
81
|
+
const pairIndex = counts.get(basePairKey) ?? 0;
|
|
82
|
+
counts.set(basePairKey, pairIndex + 1);
|
|
83
|
+
pairKey = `${basePairKey}:${pairIndex}`;
|
|
84
|
+
}
|
|
85
|
+
segments.push({
|
|
86
|
+
segmentId: `${role}:${type}:${hash}:${dupIndex}`,
|
|
87
|
+
msgIndex,
|
|
88
|
+
partIndex,
|
|
89
|
+
role,
|
|
90
|
+
type,
|
|
91
|
+
label: labelForPart(role, part),
|
|
92
|
+
group: groupForPart(part),
|
|
93
|
+
canonicalContent: canonical,
|
|
94
|
+
hash,
|
|
95
|
+
dupIndex,
|
|
96
|
+
...(pairKey ? { pairKey } : {}),
|
|
97
|
+
part,
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
return segments;
|
|
102
|
+
}
|
|
103
|
+
export function computeProtectedSegmentIds(messages) {
|
|
104
|
+
const protectedIds = new Set();
|
|
105
|
+
const segments = computeSegments(messages);
|
|
106
|
+
const byPosition = new Map(segments.map((segment) => [
|
|
107
|
+
`${segment.msgIndex}:${segment.partIndex}`,
|
|
108
|
+
segment,
|
|
109
|
+
]));
|
|
110
|
+
let latestUserIndex = -1;
|
|
111
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
112
|
+
if (messages[i]?.role === "user") {
|
|
113
|
+
latestUserIndex = i;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (latestUserIndex >= 0) {
|
|
118
|
+
messages[latestUserIndex]?.content.forEach((_part, partIndex) => {
|
|
119
|
+
const segment = byPosition.get(`${latestUserIndex}:${partIndex}`);
|
|
120
|
+
if (segment)
|
|
121
|
+
protectedIds.add(segment.segmentId);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
let latestAssistantIndex = -1;
|
|
125
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
126
|
+
if (messages[i]?.role === "assistant") {
|
|
127
|
+
latestAssistantIndex = i;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (latestAssistantIndex >= 0) {
|
|
132
|
+
messages[latestAssistantIndex]?.content.forEach((part, partIndex) => {
|
|
133
|
+
if (part.type !== "thinking")
|
|
134
|
+
return;
|
|
135
|
+
const segment = byPosition.get(`${latestAssistantIndex}:${partIndex}`);
|
|
136
|
+
if (segment)
|
|
137
|
+
protectedIds.add(segment.segmentId);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
const unresolvedToolCalls = new Map();
|
|
141
|
+
for (const segment of segments) {
|
|
142
|
+
if (segment.part.type === "tool-call") {
|
|
143
|
+
unresolvedToolCalls.set(segment.part.id, segment);
|
|
144
|
+
}
|
|
145
|
+
else if (segment.part.type === "tool-result") {
|
|
146
|
+
unresolvedToolCalls.delete(segment.part.toolCallId);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
for (const segment of unresolvedToolCalls.values()) {
|
|
150
|
+
protectedIds.add(segment.segmentId);
|
|
151
|
+
}
|
|
152
|
+
return protectedIds;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=segments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segments.js","sourceRoot":"","sources":["../../../src/agent/context-xray/segments.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { EngineContentPart, EngineMessage } from \"../engine/types.js\";\nimport type {\n ContextSegmentRole,\n ContextSegmentType,\n} from \"../../shared/context-xray.js\";\nimport {\n normalizeToolCallInputForIdentity,\n parseToolInputForIdentity,\n stableStringify,\n toolPairKey,\n} from \"./identity.js\";\n\nexport interface ContextSegment {\n segmentId: string;\n msgIndex: number;\n partIndex: number;\n role: ContextSegmentRole;\n type: ContextSegmentType;\n label: string;\n group: string;\n canonicalContent: string;\n hash: string;\n dupIndex: number;\n pairKey?: string;\n part: EngineContentPart;\n}\n\nfunction sha256(value: string): string {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nfunction dataHash(data: string): string {\n return sha256(data || \"\");\n}\n\nfunction canonicalContent(part: EngineContentPart): string {\n if (part.type === \"text\") return part.text;\n if (part.type === \"tool-call\") {\n return `${part.name}:${stableStringify(\n normalizeToolCallInputForIdentity(part.input),\n )}`;\n }\n if (part.type === \"tool-result\") {\n return `${part.toolName}:${stableStringify(\n normalizeToolCallInputForIdentity(\n parseToolInputForIdentity(part.toolInput),\n ),\n )}`;\n }\n if (part.type === \"file\") {\n return `${dataHash(part.data)}:${part.mediaType}:${part.filename ?? \"\"}`;\n }\n if (part.type === \"image\") {\n return `${dataHash(part.data)}:${part.mediaType}`;\n }\n return part.text;\n}\n\nfunction compactText(value: string, fallback: string): string {\n const normalized = value.replace(/\\s+/g, \" \").trim();\n if (!normalized) return fallback;\n return normalized.length > 72 ? `${normalized.slice(0, 69)}...` : normalized;\n}\n\nfunction labelForPart(\n role: ContextSegmentRole,\n part: EngineContentPart,\n): string {\n if (part.type === \"text\") return `${role}: ${compactText(part.text, \"text\")}`;\n if (part.type === \"tool-call\") return `call ${part.name}`;\n if (part.type === \"tool-result\") return `${part.toolName} result`;\n if (part.type === \"file\") return part.filename ?? `file ${part.mediaType}`;\n if (part.type === \"image\") return `image ${part.mediaType}`;\n return \"thinking\";\n}\n\nfunction groupForPart(part: EngineContentPart): string {\n if (part.type === \"tool-call\" || part.type === \"tool-result\") {\n return \"Tool results\";\n }\n if (part.type === \"file\" || part.type === \"image\") return \"Files read\";\n if (part.type === \"thinking\") return \"Thinking\";\n return \"Conversation\";\n}\n\nfunction basePairKeyForPart(part: EngineContentPart): string | undefined {\n if (part.type === \"tool-call\") return toolPairKey(part.name, part.input);\n if (part.type === \"tool-result\") {\n return toolPairKey(part.toolName, part.toolInput);\n }\n return undefined;\n}\n\nexport function computeSegments(messages: EngineMessage[]): ContextSegment[] {\n const dupCounts = new Map<string, number>();\n const toolCallPairCounts = new Map<string, number>();\n const toolResultPairCounts = new Map<string, number>();\n const segments: ContextSegment[] = [];\n\n messages.forEach((message, msgIndex) => {\n message.content.forEach((part, partIndex) => {\n const canonical = canonicalContent(part);\n const hash = sha256(canonical).slice(0, 16);\n const role = message.role;\n const type = part.type;\n const dupKey = `${role}:${type}:${hash}`;\n const dupIndex = dupCounts.get(dupKey) ?? 0;\n dupCounts.set(dupKey, dupIndex + 1);\n const basePairKey = basePairKeyForPart(part);\n let pairKey: string | undefined;\n if (basePairKey) {\n const counts =\n part.type === \"tool-call\" ? toolCallPairCounts : toolResultPairCounts;\n const pairIndex = counts.get(basePairKey) ?? 0;\n counts.set(basePairKey, pairIndex + 1);\n pairKey = `${basePairKey}:${pairIndex}`;\n }\n segments.push({\n segmentId: `${role}:${type}:${hash}:${dupIndex}`,\n msgIndex,\n partIndex,\n role,\n type,\n label: labelForPart(role, part),\n group: groupForPart(part),\n canonicalContent: canonical,\n hash,\n dupIndex,\n ...(pairKey ? { pairKey } : {}),\n part,\n });\n });\n });\n\n return segments;\n}\n\nexport function computeProtectedSegmentIds(\n messages: EngineMessage[],\n): Set<string> {\n const protectedIds = new Set<string>();\n const segments = computeSegments(messages);\n const byPosition = new Map(\n segments.map((segment) => [\n `${segment.msgIndex}:${segment.partIndex}`,\n segment,\n ]),\n );\n\n let latestUserIndex = -1;\n for (let i = messages.length - 1; i >= 0; i--) {\n if (messages[i]?.role === \"user\") {\n latestUserIndex = i;\n break;\n }\n }\n if (latestUserIndex >= 0) {\n messages[latestUserIndex]?.content.forEach((_part, partIndex) => {\n const segment = byPosition.get(`${latestUserIndex}:${partIndex}`);\n if (segment) protectedIds.add(segment.segmentId);\n });\n }\n\n let latestAssistantIndex = -1;\n for (let i = messages.length - 1; i >= 0; i--) {\n if (messages[i]?.role === \"assistant\") {\n latestAssistantIndex = i;\n break;\n }\n }\n if (latestAssistantIndex >= 0) {\n messages[latestAssistantIndex]?.content.forEach((part, partIndex) => {\n if (part.type !== \"thinking\") return;\n const segment = byPosition.get(`${latestAssistantIndex}:${partIndex}`);\n if (segment) protectedIds.add(segment.segmentId);\n });\n }\n\n const unresolvedToolCalls = new Map<string, ContextSegment>();\n for (const segment of segments) {\n if (segment.part.type === \"tool-call\") {\n unresolvedToolCalls.set(segment.part.id, segment);\n } else if (segment.part.type === \"tool-result\") {\n unresolvedToolCalls.delete(segment.part.toolCallId);\n }\n }\n for (const segment of unresolvedToolCalls.values()) {\n protectedIds.add(segment.segmentId);\n }\n\n return protectedIds;\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { EngineContentPart, EngineMessage } from "../engine/types.js";
|
|
2
|
+
import type { ContextTokenCountMethod } from "../../shared/context-xray.js";
|
|
3
|
+
export interface TokenCountResult {
|
|
4
|
+
tokens: number;
|
|
5
|
+
method: ContextTokenCountMethod;
|
|
6
|
+
}
|
|
7
|
+
export declare function countTextTokens(text: string): Promise<TokenCountResult>;
|
|
8
|
+
export declare function countPartTokens(part: EngineContentPart): Promise<TokenCountResult>;
|
|
9
|
+
export declare function countMessageTokens(messages: EngineMessage[]): Promise<TokenCountResult>;
|
|
10
|
+
//# sourceMappingURL=tokenize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../../../src/agent/context-xray/tokenize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAkC5E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAU7E;AASD,wBAAsB,eAAe,CACnC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAW3B;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,aAAa,EAAE,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAW3B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
let tokenizerPromise;
|
|
2
|
+
async function loadTokenizer() {
|
|
3
|
+
if (!tokenizerPromise) {
|
|
4
|
+
tokenizerPromise = import("@anthropic-ai/tokenizer")
|
|
5
|
+
.then((mod) => typeof mod.countTokens === "function"
|
|
6
|
+
? mod.countTokens
|
|
7
|
+
: null)
|
|
8
|
+
.catch(() => null);
|
|
9
|
+
}
|
|
10
|
+
return tokenizerPromise;
|
|
11
|
+
}
|
|
12
|
+
function estimateTextTokens(text) {
|
|
13
|
+
return Math.max(1, Math.ceil((text || "").length / 4));
|
|
14
|
+
}
|
|
15
|
+
function decodedByteLength(base64) {
|
|
16
|
+
const normalized = (base64 || "").replace(/\s+/g, "");
|
|
17
|
+
if (!normalized)
|
|
18
|
+
return 0;
|
|
19
|
+
const padding = normalized.endsWith("==")
|
|
20
|
+
? 2
|
|
21
|
+
: normalized.endsWith("=")
|
|
22
|
+
? 1
|
|
23
|
+
: 0;
|
|
24
|
+
return Math.max(0, Math.floor((normalized.length * 3) / 4) - padding);
|
|
25
|
+
}
|
|
26
|
+
export async function countTextTokens(text) {
|
|
27
|
+
const counter = await loadTokenizer();
|
|
28
|
+
if (counter) {
|
|
29
|
+
try {
|
|
30
|
+
return { tokens: Math.max(1, counter(text || "")), method: "exact" };
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Fall through to the documented char/4 estimate.
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return { tokens: estimateTextTokens(text), method: "estimate" };
|
|
37
|
+
}
|
|
38
|
+
function estimateBinaryTokens(part) {
|
|
39
|
+
const bytes = decodedByteLength(part.data);
|
|
40
|
+
return Math.max(1, Math.ceil(bytes / 4));
|
|
41
|
+
}
|
|
42
|
+
export async function countPartTokens(part) {
|
|
43
|
+
if (part.type === "text")
|
|
44
|
+
return countTextTokens(part.text);
|
|
45
|
+
if (part.type === "thinking")
|
|
46
|
+
return countTextTokens(part.text);
|
|
47
|
+
if (part.type === "tool-call") {
|
|
48
|
+
return countTextTokens(`${part.name}\n${JSON.stringify(part.input)}`);
|
|
49
|
+
}
|
|
50
|
+
if (part.type === "tool-result")
|
|
51
|
+
return countTextTokens(part.content);
|
|
52
|
+
if (part.type === "image" || part.type === "file") {
|
|
53
|
+
return { tokens: estimateBinaryTokens(part), method: "estimate" };
|
|
54
|
+
}
|
|
55
|
+
return { tokens: 1, method: "estimate" };
|
|
56
|
+
}
|
|
57
|
+
export async function countMessageTokens(messages) {
|
|
58
|
+
let tokens = 0;
|
|
59
|
+
let method = "exact";
|
|
60
|
+
for (const message of messages) {
|
|
61
|
+
for (const part of message.content) {
|
|
62
|
+
const count = await countPartTokens(part);
|
|
63
|
+
tokens += count.tokens;
|
|
64
|
+
if (count.method === "estimate")
|
|
65
|
+
method = "estimate";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return { tokens, method };
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=tokenize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../../../src/agent/context-xray/tokenize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EngineContentPart, EngineMessage } from \"../engine/types.js\";\nimport type { ContextTokenCountMethod } from \"../../shared/context-xray.js\";\n\ntype TokenCounter = (text: string) => number;\n\nlet tokenizerPromise: Promise<TokenCounter | null> | undefined;\n\nasync function loadTokenizer(): Promise<TokenCounter | null> {\n if (!tokenizerPromise) {\n tokenizerPromise = import(\"@anthropic-ai/tokenizer\")\n .then((mod) =>\n typeof mod.countTokens === \"function\"\n ? (mod.countTokens as TokenCounter)\n : null,\n )\n .catch(() => null);\n }\n return tokenizerPromise;\n}\n\nfunction estimateTextTokens(text: string): number {\n return Math.max(1, Math.ceil((text || \"\").length / 4));\n}\n\nfunction decodedByteLength(base64: string): number {\n const normalized = (base64 || \"\").replace(/\\s+/g, \"\");\n if (!normalized) return 0;\n const padding = normalized.endsWith(\"==\")\n ? 2\n : normalized.endsWith(\"=\")\n ? 1\n : 0;\n return Math.max(0, Math.floor((normalized.length * 3) / 4) - padding);\n}\n\nexport interface TokenCountResult {\n tokens: number;\n method: ContextTokenCountMethod;\n}\n\nexport async function countTextTokens(text: string): Promise<TokenCountResult> {\n const counter = await loadTokenizer();\n if (counter) {\n try {\n return { tokens: Math.max(1, counter(text || \"\")), method: \"exact\" };\n } catch {\n // Fall through to the documented char/4 estimate.\n }\n }\n return { tokens: estimateTextTokens(text), method: \"estimate\" };\n}\n\nfunction estimateBinaryTokens(\n part: Extract<EngineContentPart, { data: string }>,\n) {\n const bytes = decodedByteLength(part.data);\n return Math.max(1, Math.ceil(bytes / 4));\n}\n\nexport async function countPartTokens(\n part: EngineContentPart,\n): Promise<TokenCountResult> {\n if (part.type === \"text\") return countTextTokens(part.text);\n if (part.type === \"thinking\") return countTextTokens(part.text);\n if (part.type === \"tool-call\") {\n return countTextTokens(`${part.name}\\n${JSON.stringify(part.input)}`);\n }\n if (part.type === \"tool-result\") return countTextTokens(part.content);\n if (part.type === \"image\" || part.type === \"file\") {\n return { tokens: estimateBinaryTokens(part), method: \"estimate\" };\n }\n return { tokens: 1, method: \"estimate\" };\n}\n\nexport async function countMessageTokens(\n messages: EngineMessage[],\n): Promise<TokenCountResult> {\n let tokens = 0;\n let method: ContextTokenCountMethod = \"exact\";\n for (const message of messages) {\n for (const part of message.content) {\n const count = await countPartTokens(part);\n tokens += count.tokens;\n if (count.method === \"estimate\") method = \"estimate\";\n }\n }\n return { tokens, method };\n}\n"]}
|
|
@@ -253,6 +253,8 @@ export declare function runAgentLoop(opts: {
|
|
|
253
253
|
executionMode?: AgentExecutionMode;
|
|
254
254
|
maxIterations?: number;
|
|
255
255
|
finalResponseGuard?: AgentLoopFinalResponseGuard;
|
|
256
|
+
threadId?: string;
|
|
257
|
+
turnId?: string;
|
|
256
258
|
}): Promise<AgentLoopUsage>;
|
|
257
259
|
export declare function createProductionAgentHandler(options: ProductionAgentOptions): H3EventHandler;
|
|
258
260
|
export { getActiveRunForThread, getActiveRunForThreadAsync, getRun, abortRun, subscribeToRun, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EAEnB,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;AAc3B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAIhE,OAAO,EAEL,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,MAAM,EACN,QAAQ,EACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAoBlD,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
|