@resolveio/server-lib 20.15.0 → 20.15.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/methods/ai-terminal.d.ts +2 -0
- package/methods/ai-terminal.js +51 -19
- package/methods/ai-terminal.js.map +1 -1
- package/package.json +1 -1
package/methods/ai-terminal.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export type AiAssistantMongoReadInput = {
|
|
|
9
9
|
skip?: number;
|
|
10
10
|
includeTotal?: boolean;
|
|
11
11
|
includeIds?: boolean;
|
|
12
|
+
export?: boolean;
|
|
12
13
|
};
|
|
13
14
|
permissionView?: string;
|
|
14
15
|
id_client?: string;
|
|
@@ -29,6 +30,7 @@ export type AiAssistantMongoAggregateInput = {
|
|
|
29
30
|
maxTimeMS?: number;
|
|
30
31
|
limit?: number;
|
|
31
32
|
includeIds?: boolean;
|
|
33
|
+
export?: boolean;
|
|
32
34
|
};
|
|
33
35
|
permissionView?: string;
|
|
34
36
|
id_client?: string;
|
package/methods/ai-terminal.js
CHANGED
|
@@ -137,6 +137,7 @@ var DEFAULT_CODEX_MODEL = 'gpt-5.2-codex';
|
|
|
137
137
|
var DEFAULT_CODEX_TIMEOUT_MS = 180000;
|
|
138
138
|
var AI_ASSISTANT_MONGO_DEFAULT_LIMIT = 20;
|
|
139
139
|
var AI_ASSISTANT_MONGO_MAX_LIMIT = 200;
|
|
140
|
+
var AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT = 5000;
|
|
140
141
|
var AI_ASSISTANT_TOOL_MAX_STEPS = 1;
|
|
141
142
|
var AI_ASSISTANT_DISPLAY_MAX_COLUMNS = 12;
|
|
142
143
|
var AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS = 20;
|
|
@@ -159,6 +160,8 @@ var AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS = [
|
|
|
159
160
|
'updatedAt',
|
|
160
161
|
'date_updated',
|
|
161
162
|
'date_completed',
|
|
163
|
+
'date_invoice',
|
|
164
|
+
'date_invoiced',
|
|
162
165
|
'id_customer',
|
|
163
166
|
'id_client',
|
|
164
167
|
'id_user',
|
|
@@ -166,7 +169,9 @@ var AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS = [
|
|
|
166
169
|
];
|
|
167
170
|
var AI_ASSISTANT_DATE_FALLBACKS = {
|
|
168
171
|
date_created: 'createdAt',
|
|
169
|
-
createdAt: 'date_created'
|
|
172
|
+
createdAt: 'date_created',
|
|
173
|
+
date_invoice: 'date_invoiced',
|
|
174
|
+
date_invoiced: 'date_invoice'
|
|
170
175
|
};
|
|
171
176
|
var AI_ASSISTANT_BLOCKED_COLLECTIONS = new Set([
|
|
172
177
|
'user-groups',
|
|
@@ -890,7 +895,7 @@ function executeAiAssistantCodexRun(payload, context) {
|
|
|
890
895
|
workingDirectory: workspaceRoot,
|
|
891
896
|
sandboxMode: 'read-only',
|
|
892
897
|
skipGitRepoCheck: true,
|
|
893
|
-
modelReasoningEffort: '
|
|
898
|
+
modelReasoningEffort: 'medium',
|
|
894
899
|
networkAccessEnabled: false,
|
|
895
900
|
webSearchMode: 'disabled',
|
|
896
901
|
webSearchEnabled: false,
|
|
@@ -1100,7 +1105,7 @@ function executeAiAssistantMongoRead(payload, context) {
|
|
|
1100
1105
|
}
|
|
1101
1106
|
function executeAiAssistantMongoAggregate(payload, context) {
|
|
1102
1107
|
return __awaiter(this, void 0, void 0, function () {
|
|
1103
|
-
var input, collection, _a, user, isSuperAdmin, customerId, dbName, db, baseQuery, userId, normalizedClient, shouldScopeByClient, _b, clientScopedQuery, scopedQuery, normalizedPipeline, pipelineWithScope, normalizedOptions, limitedPipeline, documents, executedPipeline, fallbackMeta, fallback, fallbackPipeline, fallbackDocs, unwindFallback, fallbackPipeline, fallbackDocs, sanitizedDocuments, includeIds, display;
|
|
1108
|
+
var input, collection, _a, user, isSuperAdmin, customerId, dbName, db, baseQuery, userId, normalizedClient, shouldScopeByClient, _b, clientScopedQuery, scopedQuery, normalizedPipeline, pipelineWithScope, normalizedOptions, limitedPipeline, dateField, documents, executedPipeline, fallbackMeta, fallback, fallbackPipeline, fallbackDocs, createdFallback, createdPipeline, createdDocs, unwindFallback, fallbackPipeline, fallbackDocs, sanitizedDocuments, includeIds, display;
|
|
1104
1109
|
var _c, _d;
|
|
1105
1110
|
return __generator(this, function (_e) {
|
|
1106
1111
|
switch (_e.label) {
|
|
@@ -1147,7 +1152,8 @@ function executeAiAssistantMongoAggregate(payload, context) {
|
|
|
1147
1152
|
normalizedPipeline = normalizeAssistantAggregatePipeline(input.pipeline);
|
|
1148
1153
|
pipelineWithScope = buildAssistantAggregatePipeline(scopedQuery, normalizedPipeline);
|
|
1149
1154
|
normalizedOptions = normalizeAssistantAggregateOptions(input.options);
|
|
1150
|
-
limitedPipeline = applyAssistantAggregateLimit(pipelineWithScope, normalizedOptions.limit);
|
|
1155
|
+
limitedPipeline = applyAssistantAggregateLimit(pipelineWithScope, normalizedOptions.limit, normalizedOptions.maxLimit, normalizedOptions.defaultLimit);
|
|
1156
|
+
dateField = findAggregateDateField(limitedPipeline);
|
|
1151
1157
|
if (containsForbiddenMongoOperators(limitedPipeline)) {
|
|
1152
1158
|
throw new Error('AI assistant mongo aggregate: Pipeline contains restricted operators.');
|
|
1153
1159
|
}
|
|
@@ -1158,7 +1164,7 @@ function executeAiAssistantMongoAggregate(payload, context) {
|
|
|
1158
1164
|
documents = _e.sent();
|
|
1159
1165
|
executedPipeline = limitedPipeline;
|
|
1160
1166
|
fallbackMeta = {};
|
|
1161
|
-
if (
|
|
1167
|
+
if (!(!documents.length && dateField)) return [3 /*break*/, 9];
|
|
1162
1168
|
fallback = resolveAggregateDateFieldFallback(limitedPipeline);
|
|
1163
1169
|
if (!fallback) return [3 /*break*/, 7];
|
|
1164
1170
|
fallbackMeta.dateField = __assign(__assign({}, fallback), { attempted: true, used: false });
|
|
@@ -1176,24 +1182,41 @@ function executeAiAssistantMongoAggregate(payload, context) {
|
|
|
1176
1182
|
}
|
|
1177
1183
|
_e.label = 7;
|
|
1178
1184
|
case 7:
|
|
1179
|
-
if (!(documents.length
|
|
1185
|
+
if (!(!documents.length && dateField !== 'createdAt')) return [3 /*break*/, 9];
|
|
1186
|
+
createdFallback = { from: dateField, to: 'createdAt', attempted: true, used: false };
|
|
1187
|
+
createdPipeline = replaceAggregateDateField(limitedPipeline, dateField, 'createdAt');
|
|
1188
|
+
fallbackMeta.dateFieldCreatedAt = createdFallback;
|
|
1189
|
+
if (!!containsForbiddenMongoOperators(createdPipeline)) return [3 /*break*/, 9];
|
|
1190
|
+
return [4 /*yield*/, db.collection(collection)
|
|
1191
|
+
.aggregate(createdPipeline, normalizedOptions.aggregateOptions)
|
|
1192
|
+
.toArray()];
|
|
1193
|
+
case 8:
|
|
1194
|
+
createdDocs = _e.sent();
|
|
1195
|
+
if (createdDocs.length) {
|
|
1196
|
+
documents = createdDocs;
|
|
1197
|
+
executedPipeline = createdPipeline;
|
|
1198
|
+
fallbackMeta.dateFieldCreatedAt.used = true;
|
|
1199
|
+
}
|
|
1200
|
+
_e.label = 9;
|
|
1201
|
+
case 9:
|
|
1202
|
+
if (!(documents.length <= 1)) return [3 /*break*/, 11];
|
|
1180
1203
|
unwindFallback = resolveAggregateUnwindFallback(executedPipeline);
|
|
1181
|
-
if (!unwindFallback) return [3 /*break*/,
|
|
1204
|
+
if (!unwindFallback) return [3 /*break*/, 11];
|
|
1182
1205
|
fallbackMeta.unwind = { path: unwindFallback.path, attempted: true, used: false };
|
|
1183
1206
|
fallbackPipeline = buildAggregateUnwindFallbackPipeline(executedPipeline, unwindFallback);
|
|
1184
|
-
if (!!containsForbiddenMongoOperators(fallbackPipeline)) return [3 /*break*/,
|
|
1207
|
+
if (!!containsForbiddenMongoOperators(fallbackPipeline)) return [3 /*break*/, 11];
|
|
1185
1208
|
return [4 /*yield*/, db.collection(collection)
|
|
1186
1209
|
.aggregate(fallbackPipeline, normalizedOptions.aggregateOptions)
|
|
1187
1210
|
.toArray()];
|
|
1188
|
-
case
|
|
1211
|
+
case 10:
|
|
1189
1212
|
fallbackDocs = _e.sent();
|
|
1190
1213
|
if (fallbackDocs.length > documents.length) {
|
|
1191
1214
|
documents = fallbackDocs;
|
|
1192
1215
|
executedPipeline = fallbackPipeline;
|
|
1193
1216
|
fallbackMeta.unwind.used = true;
|
|
1194
1217
|
}
|
|
1195
|
-
_e.label =
|
|
1196
|
-
case
|
|
1218
|
+
_e.label = 11;
|
|
1219
|
+
case 11:
|
|
1197
1220
|
sanitizedDocuments = isSuperAdmin
|
|
1198
1221
|
? documents
|
|
1199
1222
|
: documents.map(function (doc) { return redactSensitiveFields((0, common_1.deepCopy)(doc)); });
|
|
@@ -1933,11 +1956,14 @@ function resolveAssistantDatabaseName(database, mongoConfig) {
|
|
|
1933
1956
|
}
|
|
1934
1957
|
function normalizeAssistantFindOptions(options) {
|
|
1935
1958
|
var normalized = options || {};
|
|
1959
|
+
var exportMode = normalized.export === true;
|
|
1960
|
+
var maxLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_MAX_LIMIT;
|
|
1961
|
+
var defaultLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_DEFAULT_LIMIT;
|
|
1936
1962
|
var projection = sanitizeAssistantProjection(normalized.projection);
|
|
1937
1963
|
var sort = normalized.sort && Object.keys(normalized.sort).length ? normalized.sort : undefined;
|
|
1938
1964
|
var limit = typeof normalized.limit === 'number'
|
|
1939
|
-
? Math.min(Math.max(normalized.limit, 0),
|
|
1940
|
-
:
|
|
1965
|
+
? Math.min(Math.max(normalized.limit, 0), maxLimit)
|
|
1966
|
+
: defaultLimit;
|
|
1941
1967
|
var skip = typeof normalized.skip === 'number' ? Math.max(normalized.skip, 0) : 0;
|
|
1942
1968
|
return {
|
|
1943
1969
|
findOptions: {
|
|
@@ -1998,13 +2024,16 @@ function buildAssistantAggregatePipeline(query, pipeline) {
|
|
|
1998
2024
|
}
|
|
1999
2025
|
function normalizeAssistantAggregateOptions(options) {
|
|
2000
2026
|
var normalized = options || {};
|
|
2027
|
+
var exportMode = normalized.export === true;
|
|
2028
|
+
var maxLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_MAX_LIMIT;
|
|
2029
|
+
var defaultLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_DEFAULT_LIMIT;
|
|
2001
2030
|
var allowDiskUse = normalized.allowDiskUse === true ? true : undefined;
|
|
2002
2031
|
var maxTimeMS = typeof normalized.maxTimeMS === 'number' && normalized.maxTimeMS > 0
|
|
2003
2032
|
? (0, common_1.round)(normalized.maxTimeMS)
|
|
2004
2033
|
: undefined;
|
|
2005
2034
|
var limit = typeof normalized.limit === 'number'
|
|
2006
|
-
? Math.min(Math.max((0, common_1.round)(normalized.limit), 0),
|
|
2007
|
-
:
|
|
2035
|
+
? Math.min(Math.max((0, common_1.round)(normalized.limit), 0), maxLimit)
|
|
2036
|
+
: defaultLimit;
|
|
2008
2037
|
var aggregateOptions = {};
|
|
2009
2038
|
if (allowDiskUse !== undefined) {
|
|
2010
2039
|
aggregateOptions.allowDiskUse = allowDiskUse;
|
|
@@ -2014,7 +2043,9 @@ function normalizeAssistantAggregateOptions(options) {
|
|
|
2014
2043
|
}
|
|
2015
2044
|
return {
|
|
2016
2045
|
aggregateOptions: aggregateOptions,
|
|
2017
|
-
limit: limit
|
|
2046
|
+
limit: limit,
|
|
2047
|
+
maxLimit: maxLimit,
|
|
2048
|
+
defaultLimit: defaultLimit
|
|
2018
2049
|
};
|
|
2019
2050
|
}
|
|
2020
2051
|
function findAggregateLimit(pipeline) {
|
|
@@ -2030,12 +2061,13 @@ function findAggregateLimit(pipeline) {
|
|
|
2030
2061
|
}
|
|
2031
2062
|
return null;
|
|
2032
2063
|
}
|
|
2033
|
-
function applyAssistantAggregateLimit(pipeline, limit) {
|
|
2064
|
+
function applyAssistantAggregateLimit(pipeline, limit, maxLimit, defaultLimit) {
|
|
2065
|
+
if (maxLimit === void 0) { maxLimit = AI_ASSISTANT_MONGO_MAX_LIMIT; }
|
|
2066
|
+
if (defaultLimit === void 0) { defaultLimit = AI_ASSISTANT_MONGO_DEFAULT_LIMIT; }
|
|
2034
2067
|
var normalizedPipeline = Array.isArray(pipeline) ? __spreadArray([], __read(pipeline), false) : [];
|
|
2035
|
-
var maxLimit = AI_ASSISTANT_MONGO_MAX_LIMIT;
|
|
2036
2068
|
var requestedLimit = typeof limit === 'number' && limit > 0
|
|
2037
2069
|
? Math.min(limit, maxLimit)
|
|
2038
|
-
:
|
|
2070
|
+
: defaultLimit;
|
|
2039
2071
|
var existingLimit = findAggregateLimit(normalizedPipeline);
|
|
2040
2072
|
if (existingLimit === null) {
|
|
2041
2073
|
normalizedPipeline.push({ $limit: requestedLimit });
|