@pensar/apex 0.0.28 → 0.0.29
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/build/benchmark.js +301 -62
- package/build/index.js +353 -74
- package/build/pentest.js +326 -63
- package/build/quicktest.js +207 -63
- package/build/swarm.js +180 -60
- package/package.json +1 -1
package/build/benchmark.js
CHANGED
|
@@ -62994,7 +62994,7 @@ var require_dist_cjs77 = __commonJS((exports) => {
|
|
|
62994
62994
|
|
|
62995
62995
|
// node_modules/@smithy/util-waiter/dist-cjs/index.js
|
|
62996
62996
|
var require_dist_cjs78 = __commonJS((exports) => {
|
|
62997
|
-
var
|
|
62997
|
+
var sleep2 = (seconds) => {
|
|
62998
62998
|
return new Promise((resolve3) => setTimeout(resolve3, seconds * 1000));
|
|
62999
62999
|
};
|
|
63000
63000
|
var waiterServiceDefaults = {
|
|
@@ -63061,7 +63061,7 @@ var require_dist_cjs78 = __commonJS((exports) => {
|
|
|
63061
63061
|
if (Date.now() + delay2 * 1000 > waitUntil) {
|
|
63062
63062
|
return { state: exports.WaiterState.TIMEOUT, observedResponses };
|
|
63063
63063
|
}
|
|
63064
|
-
await
|
|
63064
|
+
await sleep2(delay2);
|
|
63065
63065
|
const { state: state2, reason: reason2 } = await acceptorChecks(client, input);
|
|
63066
63066
|
if (reason2) {
|
|
63067
63067
|
const message = createMessageFromResponse(reason2);
|
|
@@ -121014,8 +121014,8 @@ function createAnthropic(options = {}) {
|
|
|
121014
121014
|
}
|
|
121015
121015
|
var anthropic = createAnthropic();
|
|
121016
121016
|
|
|
121017
|
-
// src/core/ai/models.ts
|
|
121018
|
-
var
|
|
121017
|
+
// src/core/ai/models/anthropic.ts
|
|
121018
|
+
var ANTHROPIC_MODELS = [
|
|
121019
121019
|
{
|
|
121020
121020
|
id: "claude-haiku-4-5",
|
|
121021
121021
|
name: "Claude Haiku 4.5",
|
|
@@ -121099,55 +121099,11 @@ var AVAILABLE_MODELS = [
|
|
|
121099
121099
|
name: "Claude 3 Haiku (2024-03-07)",
|
|
121100
121100
|
provider: "anthropic",
|
|
121101
121101
|
contextLength: 200000
|
|
121102
|
-
}
|
|
121103
|
-
|
|
121104
|
-
|
|
121105
|
-
|
|
121106
|
-
|
|
121107
|
-
contextLength: 128000
|
|
121108
|
-
},
|
|
121109
|
-
{
|
|
121110
|
-
id: "gpt-4o",
|
|
121111
|
-
name: "GPT-4o",
|
|
121112
|
-
provider: "openai",
|
|
121113
|
-
contextLength: 128000
|
|
121114
|
-
},
|
|
121115
|
-
{
|
|
121116
|
-
id: "gpt-4o-mini",
|
|
121117
|
-
name: "GPT-4o Mini",
|
|
121118
|
-
provider: "openai",
|
|
121119
|
-
contextLength: 128000
|
|
121120
|
-
},
|
|
121121
|
-
{
|
|
121122
|
-
id: "gpt-4-turbo",
|
|
121123
|
-
name: "GPT-4 Turbo",
|
|
121124
|
-
provider: "openai",
|
|
121125
|
-
contextLength: 128000
|
|
121126
|
-
},
|
|
121127
|
-
{
|
|
121128
|
-
id: "gpt-4",
|
|
121129
|
-
name: "GPT-4",
|
|
121130
|
-
provider: "openai",
|
|
121131
|
-
contextLength: 8192
|
|
121132
|
-
},
|
|
121133
|
-
{
|
|
121134
|
-
id: "gpt-3.5-turbo",
|
|
121135
|
-
name: "GPT-3.5 Turbo",
|
|
121136
|
-
provider: "openai",
|
|
121137
|
-
contextLength: 16385
|
|
121138
|
-
},
|
|
121139
|
-
{
|
|
121140
|
-
id: "o1",
|
|
121141
|
-
name: "O1",
|
|
121142
|
-
provider: "openai",
|
|
121143
|
-
contextLength: 200000
|
|
121144
|
-
},
|
|
121145
|
-
{
|
|
121146
|
-
id: "o1-mini",
|
|
121147
|
-
name: "O1 Mini",
|
|
121148
|
-
provider: "openai",
|
|
121149
|
-
contextLength: 128000
|
|
121150
|
-
},
|
|
121102
|
+
}
|
|
121103
|
+
];
|
|
121104
|
+
|
|
121105
|
+
// src/core/ai/models/openrouter.ts
|
|
121106
|
+
var OPENROUTER_MODELS = [
|
|
121151
121107
|
{
|
|
121152
121108
|
id: "anthropic/claude-haiku-4.5",
|
|
121153
121109
|
name: "Claude Haiku 4.5 (OpenRouter)",
|
|
@@ -121267,28 +121223,62 @@ var AVAILABLE_MODELS = [
|
|
|
121267
121223
|
name: "Qwen 3 32B Instruct",
|
|
121268
121224
|
provider: "openrouter",
|
|
121269
121225
|
contextLength: 256000
|
|
121226
|
+
}
|
|
121227
|
+
];
|
|
121228
|
+
|
|
121229
|
+
// src/core/ai/models/bedrock.ts
|
|
121230
|
+
var BEDROCK_MODELS = [
|
|
121231
|
+
{
|
|
121232
|
+
id: "anthropic.claude-3-haiku-20240307-v1:0",
|
|
121233
|
+
name: "Claude 3 Haiku (Bedrock)",
|
|
121234
|
+
provider: "bedrock",
|
|
121235
|
+
contextLength: 200000
|
|
121270
121236
|
},
|
|
121271
121237
|
{
|
|
121272
|
-
id: "anthropic.claude-3-5-
|
|
121273
|
-
name: "Claude 3.5
|
|
121238
|
+
id: "anthropic.claude-3-5-haiku-20241022-v1:0",
|
|
121239
|
+
name: "Claude 3.5 Haiku (Bedrock)",
|
|
121274
121240
|
provider: "bedrock",
|
|
121275
121241
|
contextLength: 200000
|
|
121276
121242
|
},
|
|
121277
121243
|
{
|
|
121278
|
-
id: "anthropic.claude-3-
|
|
121279
|
-
name: "Claude 3
|
|
121244
|
+
id: "anthropic.claude-3-7-sonnet-20250219-v1:0",
|
|
121245
|
+
name: "Claude 3.7 Sonnet (Bedrock)",
|
|
121280
121246
|
provider: "bedrock",
|
|
121281
121247
|
contextLength: 200000
|
|
121282
121248
|
},
|
|
121283
121249
|
{
|
|
121284
|
-
id: "anthropic.claude-
|
|
121285
|
-
name: "Claude
|
|
121250
|
+
id: "anthropic.claude-haiku-4-5-20251001-v1:0",
|
|
121251
|
+
name: "Claude Haiku 4.5 (Bedrock)",
|
|
121286
121252
|
provider: "bedrock",
|
|
121287
121253
|
contextLength: 200000
|
|
121288
121254
|
},
|
|
121289
121255
|
{
|
|
121290
|
-
id: "anthropic.claude-
|
|
121291
|
-
name: "Claude
|
|
121256
|
+
id: "anthropic.claude-opus-4-1-20250805-v1:0",
|
|
121257
|
+
name: "Claude Opus 4.1 (Bedrock)",
|
|
121258
|
+
provider: "bedrock",
|
|
121259
|
+
contextLength: 200000
|
|
121260
|
+
},
|
|
121261
|
+
{
|
|
121262
|
+
id: "anthropic.claude-opus-4-5-20251101-v1:0",
|
|
121263
|
+
name: "Claude Opus 4.5 (Bedrock)",
|
|
121264
|
+
provider: "bedrock",
|
|
121265
|
+
contextLength: 200000
|
|
121266
|
+
},
|
|
121267
|
+
{
|
|
121268
|
+
id: "anthropic.claude-opus-4-20250514-v1:0",
|
|
121269
|
+
name: "Claude Opus 4 (Bedrock)",
|
|
121270
|
+
provider: "bedrock",
|
|
121271
|
+
contextLength: 200000
|
|
121272
|
+
},
|
|
121273
|
+
{
|
|
121274
|
+
id: "anthropic.claude-sonnet-4-5-20250929-v1:0",
|
|
121275
|
+
name: "Claude Sonnet 4.5 (Bedrock)",
|
|
121276
|
+
provider: "bedrock",
|
|
121277
|
+
contextLength: 200000
|
|
121278
|
+
},
|
|
121279
|
+
{
|
|
121280
|
+
id: "anthropic.claude-sonnet-4-20250514-v1:0",
|
|
121281
|
+
name: "Claude Sonnet 4 (Bedrock)",
|
|
121292
121282
|
provider: "bedrock",
|
|
121293
121283
|
contextLength: 200000
|
|
121294
121284
|
},
|
|
@@ -121329,6 +121319,66 @@ var AVAILABLE_MODELS = [
|
|
|
121329
121319
|
contextLength: 128000
|
|
121330
121320
|
}
|
|
121331
121321
|
];
|
|
121322
|
+
|
|
121323
|
+
// src/core/ai/models/openai.ts
|
|
121324
|
+
var OPENAI_MODELS = [
|
|
121325
|
+
{
|
|
121326
|
+
id: "gpt-4.5-turbo",
|
|
121327
|
+
name: "GPT-4.5 Turbo",
|
|
121328
|
+
provider: "openai",
|
|
121329
|
+
contextLength: 128000
|
|
121330
|
+
},
|
|
121331
|
+
{
|
|
121332
|
+
id: "gpt-4o",
|
|
121333
|
+
name: "GPT-4o",
|
|
121334
|
+
provider: "openai",
|
|
121335
|
+
contextLength: 128000
|
|
121336
|
+
},
|
|
121337
|
+
{
|
|
121338
|
+
id: "gpt-4o-mini",
|
|
121339
|
+
name: "GPT-4o Mini",
|
|
121340
|
+
provider: "openai",
|
|
121341
|
+
contextLength: 128000
|
|
121342
|
+
},
|
|
121343
|
+
{
|
|
121344
|
+
id: "gpt-4-turbo",
|
|
121345
|
+
name: "GPT-4 Turbo",
|
|
121346
|
+
provider: "openai",
|
|
121347
|
+
contextLength: 128000
|
|
121348
|
+
},
|
|
121349
|
+
{
|
|
121350
|
+
id: "gpt-4",
|
|
121351
|
+
name: "GPT-4",
|
|
121352
|
+
provider: "openai",
|
|
121353
|
+
contextLength: 8192
|
|
121354
|
+
},
|
|
121355
|
+
{
|
|
121356
|
+
id: "gpt-3.5-turbo",
|
|
121357
|
+
name: "GPT-3.5 Turbo",
|
|
121358
|
+
provider: "openai",
|
|
121359
|
+
contextLength: 16385
|
|
121360
|
+
},
|
|
121361
|
+
{
|
|
121362
|
+
id: "o1",
|
|
121363
|
+
name: "O1",
|
|
121364
|
+
provider: "openai",
|
|
121365
|
+
contextLength: 200000
|
|
121366
|
+
},
|
|
121367
|
+
{
|
|
121368
|
+
id: "o1-mini",
|
|
121369
|
+
name: "O1 Mini",
|
|
121370
|
+
provider: "openai",
|
|
121371
|
+
contextLength: 128000
|
|
121372
|
+
}
|
|
121373
|
+
];
|
|
121374
|
+
|
|
121375
|
+
// src/core/ai/models/index.ts
|
|
121376
|
+
var AVAILABLE_MODELS = [
|
|
121377
|
+
...ANTHROPIC_MODELS,
|
|
121378
|
+
...OPENROUTER_MODELS,
|
|
121379
|
+
...BEDROCK_MODELS,
|
|
121380
|
+
...OPENAI_MODELS
|
|
121381
|
+
];
|
|
121332
121382
|
function getModelInfo(model) {
|
|
121333
121383
|
return AVAILABLE_MODELS.find((m) => m.id === model) ?? {
|
|
121334
121384
|
id: model,
|
|
@@ -121345,7 +121395,7 @@ function getProviderModel(model, authConfig) {
|
|
|
121345
121395
|
const openRouterAPIKey = authConfig?.openRouterAPIKey || process.env.OPENROUTER_API_KEY;
|
|
121346
121396
|
const bedrockAccessKeyId = authConfig?.bedrock?.accessKeyId || process.env.AWS_ACCESS_KEY_ID;
|
|
121347
121397
|
const bedrockSecretAccessKey = authConfig?.bedrock?.secretAccessKey || process.env.AWS_SECRET_ACCESS_KEY;
|
|
121348
|
-
const bedrockRegion = authConfig?.bedrock?.region || process.env.AWS_REGION
|
|
121398
|
+
const bedrockRegion = authConfig?.bedrock?.region || process.env.AWS_REGION;
|
|
121349
121399
|
const localBaseURL = authConfig?.local?.baseURL || process.env.LOCAL_MODEL_URL || "http://127.0.0.1:1234/v1";
|
|
121350
121400
|
let providerModel;
|
|
121351
121401
|
switch (provider) {
|
|
@@ -121929,6 +121979,66 @@ import {
|
|
|
121929
121979
|
} from "fs";
|
|
121930
121980
|
import { join } from "path";
|
|
121931
121981
|
import { homedir } from "os";
|
|
121982
|
+
|
|
121983
|
+
// src/core/services/rateLimiter/index.ts
|
|
121984
|
+
function sleep(ms) {
|
|
121985
|
+
return new Promise((resolve2) => setTimeout(resolve2, ms));
|
|
121986
|
+
}
|
|
121987
|
+
|
|
121988
|
+
class RateLimiter {
|
|
121989
|
+
tokens;
|
|
121990
|
+
lastRefillTime;
|
|
121991
|
+
rps;
|
|
121992
|
+
bucketSize;
|
|
121993
|
+
msPerToken;
|
|
121994
|
+
queue;
|
|
121995
|
+
constructor(config2) {
|
|
121996
|
+
this.rps = config2?.requestsPerSecond;
|
|
121997
|
+
this.bucketSize = this.rps ? 1 : 0;
|
|
121998
|
+
this.tokens = this.bucketSize;
|
|
121999
|
+
this.lastRefillTime = performance.now();
|
|
122000
|
+
this.msPerToken = this.rps ? 1000 / this.rps : undefined;
|
|
122001
|
+
this.queue = Promise.resolve();
|
|
122002
|
+
}
|
|
122003
|
+
async acquireSlot() {
|
|
122004
|
+
if (!this.rps || !this.msPerToken)
|
|
122005
|
+
return;
|
|
122006
|
+
const previousPromise = this.queue;
|
|
122007
|
+
let resolveCurrentRequest;
|
|
122008
|
+
this.queue = new Promise((resolve2) => {
|
|
122009
|
+
resolveCurrentRequest = resolve2;
|
|
122010
|
+
});
|
|
122011
|
+
await previousPromise;
|
|
122012
|
+
try {
|
|
122013
|
+
const now2 = performance.now();
|
|
122014
|
+
this.refill(now2);
|
|
122015
|
+
if (this.tokens < 1) {
|
|
122016
|
+
const waitTime = (1 - this.tokens) * this.msPerToken;
|
|
122017
|
+
await sleep(waitTime);
|
|
122018
|
+
const nowAfterSleep = performance.now();
|
|
122019
|
+
this.refill(nowAfterSleep);
|
|
122020
|
+
}
|
|
122021
|
+
this.tokens -= 1;
|
|
122022
|
+
} finally {
|
|
122023
|
+
resolveCurrentRequest();
|
|
122024
|
+
}
|
|
122025
|
+
}
|
|
122026
|
+
refill(now2) {
|
|
122027
|
+
if (this.tokens >= this.bucketSize) {
|
|
122028
|
+
this.lastRefillTime = now2;
|
|
122029
|
+
return;
|
|
122030
|
+
}
|
|
122031
|
+
const elapsed = now2 - this.lastRefillTime;
|
|
122032
|
+
const tokensToAdd = elapsed / this.msPerToken;
|
|
122033
|
+
this.tokens = Math.min(this.bucketSize, this.tokens + tokensToAdd);
|
|
122034
|
+
this.lastRefillTime = now2;
|
|
122035
|
+
}
|
|
122036
|
+
isEnabled() {
|
|
122037
|
+
return this.rps !== undefined;
|
|
122038
|
+
}
|
|
122039
|
+
}
|
|
122040
|
+
|
|
122041
|
+
// src/core/agent/sessions/index.ts
|
|
121932
122042
|
var DEFAULT_OFFENSIVE_HEADERS = {
|
|
121933
122043
|
"User-Agent": "pensar-apex"
|
|
121934
122044
|
};
|
|
@@ -121963,6 +122073,9 @@ function createSession(target, objective, prefix, config2) {
|
|
|
121963
122073
|
startTime: new Date().toISOString(),
|
|
121964
122074
|
config: config2
|
|
121965
122075
|
};
|
|
122076
|
+
if (config2?.rateLimiter) {
|
|
122077
|
+
session._rateLimiter = new RateLimiter(config2.rateLimiter);
|
|
122078
|
+
}
|
|
121966
122079
|
const metadataPath = join(rootPath, "session.json");
|
|
121967
122080
|
writeFileSync(metadataPath, JSON.stringify(session, null, 2));
|
|
121968
122081
|
const readmePath = join(rootPath, "README.md");
|
|
@@ -128691,6 +128804,7 @@ function wrapCommandWithHeaders(command, headers) {
|
|
|
128691
128804
|
}
|
|
128692
128805
|
function createPentestTools(session, model, toolOverride) {
|
|
128693
128806
|
const offensiveHeaders = getOffensiveHeaders(session);
|
|
128807
|
+
const rateLimiter = session._rateLimiter;
|
|
128694
128808
|
const executeCommand = tool({
|
|
128695
128809
|
name: "execute_command",
|
|
128696
128810
|
description: `Execute a shell command for penetration testing activities.
|
|
@@ -128735,6 +128849,9 @@ IMPORTANT: Always analyze results and adjust your approach based on findings.`,
|
|
|
128735
128849
|
inputSchema: ExecuteCommandInput,
|
|
128736
128850
|
execute: async ({ command, timeout = 30000, toolCallDescription }) => {
|
|
128737
128851
|
try {
|
|
128852
|
+
if (rateLimiter) {
|
|
128853
|
+
await rateLimiter.acquireSlot();
|
|
128854
|
+
}
|
|
128738
128855
|
if (toolOverride?.execute_command) {
|
|
128739
128856
|
return toolOverride.execute_command({
|
|
128740
128857
|
command,
|
|
@@ -128791,6 +128908,9 @@ COMMON TESTING PATTERNS:
|
|
|
128791
128908
|
inputSchema: HttpRequestInput,
|
|
128792
128909
|
execute: async ({ url: url2, method, headers, body, followRedirects, timeout, toolCallDescription }) => {
|
|
128793
128910
|
try {
|
|
128911
|
+
if (rateLimiter) {
|
|
128912
|
+
await rateLimiter.acquireSlot();
|
|
128913
|
+
}
|
|
128794
128914
|
if (toolOverride?.http_request) {
|
|
128795
128915
|
return toolOverride.http_request({
|
|
128796
128916
|
url: url2,
|
|
@@ -129028,6 +129148,125 @@ You MUST provide the details final report using create_attack_surface_report too
|
|
|
129028
129148
|
|
|
129029
129149
|
// src/core/messages/index.ts
|
|
129030
129150
|
import fs from "fs";
|
|
129151
|
+
|
|
129152
|
+
// src/core/messages/types.ts
|
|
129153
|
+
var ToolMessageObject = exports_external.object({
|
|
129154
|
+
role: exports_external.literal("tool"),
|
|
129155
|
+
status: exports_external.enum(["pending", "completed"]),
|
|
129156
|
+
toolCallId: exports_external.string(),
|
|
129157
|
+
content: exports_external.string(),
|
|
129158
|
+
args: exports_external.record(exports_external.string(), exports_external.any()),
|
|
129159
|
+
toolName: exports_external.string(),
|
|
129160
|
+
createdAt: exports_external.coerce.date()
|
|
129161
|
+
});
|
|
129162
|
+
var SystemModelMessageObject = exports_external.object({
|
|
129163
|
+
role: exports_external.literal("system"),
|
|
129164
|
+
content: exports_external.string(),
|
|
129165
|
+
createdAt: exports_external.coerce.date(),
|
|
129166
|
+
providerOptions: exports_external.record(exports_external.string(), exports_external.any()).optional()
|
|
129167
|
+
});
|
|
129168
|
+
var TextPartObject = exports_external.object({
|
|
129169
|
+
type: exports_external.literal("text"),
|
|
129170
|
+
text: exports_external.string(),
|
|
129171
|
+
providerOptions: exports_external.record(exports_external.string(), exports_external.any()).optional()
|
|
129172
|
+
});
|
|
129173
|
+
var FilePartObject = exports_external.object({
|
|
129174
|
+
type: exports_external.literal("file"),
|
|
129175
|
+
data: exports_external.union([
|
|
129176
|
+
exports_external.string(),
|
|
129177
|
+
exports_external.instanceof(Uint8Array),
|
|
129178
|
+
exports_external.instanceof(ArrayBuffer),
|
|
129179
|
+
exports_external.instanceof(Buffer),
|
|
129180
|
+
exports_external.url()
|
|
129181
|
+
]),
|
|
129182
|
+
filename: exports_external.string().optional(),
|
|
129183
|
+
mediaType: exports_external.string(),
|
|
129184
|
+
providerOptions: exports_external.record(exports_external.string(), exports_external.any()).optional()
|
|
129185
|
+
});
|
|
129186
|
+
var ReasoningPartObject = exports_external.object({
|
|
129187
|
+
type: exports_external.literal("reasoning"),
|
|
129188
|
+
text: exports_external.string(),
|
|
129189
|
+
providerOptions: exports_external.record(exports_external.string(), exports_external.any()).optional()
|
|
129190
|
+
});
|
|
129191
|
+
var ToolCallPartObject = exports_external.object({
|
|
129192
|
+
type: exports_external.literal("tool-call"),
|
|
129193
|
+
toolCallId: exports_external.string(),
|
|
129194
|
+
toolName: exports_external.string(),
|
|
129195
|
+
input: exports_external.unknown(),
|
|
129196
|
+
providerOptions: exports_external.record(exports_external.string(), exports_external.any()).optional(),
|
|
129197
|
+
providerExecuted: exports_external.boolean().optional()
|
|
129198
|
+
});
|
|
129199
|
+
var ToolResultOutputObject = exports_external.discriminatedUnion("type", [
|
|
129200
|
+
exports_external.object({
|
|
129201
|
+
type: exports_external.literal("text"),
|
|
129202
|
+
value: exports_external.string()
|
|
129203
|
+
}),
|
|
129204
|
+
exports_external.object({
|
|
129205
|
+
type: exports_external.literal("json"),
|
|
129206
|
+
value: exports_external.any()
|
|
129207
|
+
}),
|
|
129208
|
+
exports_external.object({
|
|
129209
|
+
type: exports_external.literal("error-text"),
|
|
129210
|
+
value: exports_external.string()
|
|
129211
|
+
}),
|
|
129212
|
+
exports_external.object({
|
|
129213
|
+
type: exports_external.literal("error-json"),
|
|
129214
|
+
value: exports_external.any()
|
|
129215
|
+
}),
|
|
129216
|
+
exports_external.object({
|
|
129217
|
+
type: exports_external.literal("content"),
|
|
129218
|
+
value: exports_external.array(exports_external.discriminatedUnion("type", [
|
|
129219
|
+
exports_external.object({
|
|
129220
|
+
type: exports_external.literal("text"),
|
|
129221
|
+
text: exports_external.string()
|
|
129222
|
+
}),
|
|
129223
|
+
exports_external.object({
|
|
129224
|
+
type: exports_external.literal("media"),
|
|
129225
|
+
data: exports_external.string(),
|
|
129226
|
+
mediaType: exports_external.string()
|
|
129227
|
+
})
|
|
129228
|
+
]))
|
|
129229
|
+
})
|
|
129230
|
+
]);
|
|
129231
|
+
var ToolResultPartObject = exports_external.object({
|
|
129232
|
+
type: exports_external.literal("tool-result"),
|
|
129233
|
+
toolCallId: exports_external.string(),
|
|
129234
|
+
toolName: exports_external.string(),
|
|
129235
|
+
output: ToolResultOutputObject,
|
|
129236
|
+
providerOptions: exports_external.record(exports_external.string(), exports_external.any()).optional()
|
|
129237
|
+
});
|
|
129238
|
+
var AssistantModelMessageObject = exports_external.object({
|
|
129239
|
+
role: exports_external.literal("assistant"),
|
|
129240
|
+
content: exports_external.union([
|
|
129241
|
+
exports_external.string(),
|
|
129242
|
+
exports_external.array(exports_external.discriminatedUnion("type", [
|
|
129243
|
+
TextPartObject,
|
|
129244
|
+
FilePartObject,
|
|
129245
|
+
ReasoningPartObject,
|
|
129246
|
+
ToolCallPartObject,
|
|
129247
|
+
ToolResultPartObject
|
|
129248
|
+
]))
|
|
129249
|
+
]),
|
|
129250
|
+
createdAt: exports_external.coerce.date(),
|
|
129251
|
+
providerOptions: exports_external.record(exports_external.string(), exports_external.any()).optional()
|
|
129252
|
+
});
|
|
129253
|
+
var UserModelMessageObject = exports_external.object({
|
|
129254
|
+
role: exports_external.literal("user"),
|
|
129255
|
+
content: exports_external.union([
|
|
129256
|
+
exports_external.string(),
|
|
129257
|
+
exports_external.array(exports_external.discriminatedUnion("type", [TextPartObject, FilePartObject]))
|
|
129258
|
+
]),
|
|
129259
|
+
createdAt: exports_external.coerce.date(),
|
|
129260
|
+
providerOptions: exports_external.record(exports_external.string(), exports_external.any()).optional()
|
|
129261
|
+
});
|
|
129262
|
+
var ModelMessageObject = exports_external.discriminatedUnion("role", [
|
|
129263
|
+
SystemModelMessageObject,
|
|
129264
|
+
UserModelMessageObject,
|
|
129265
|
+
AssistantModelMessageObject,
|
|
129266
|
+
ToolMessageObject
|
|
129267
|
+
]);
|
|
129268
|
+
|
|
129269
|
+
// src/core/messages/index.ts
|
|
129031
129270
|
function saveSubagentMessages(orchestratorSession, subagentId, messages) {
|
|
129032
129271
|
const subagentDir = `${orchestratorSession.rootPath}/subagents/${subagentId}`;
|
|
129033
129272
|
if (!fs.existsSync(`${orchestratorSession.rootPath}/subagents`)) {
|