@modelprofile.com/flexharness 8.2.0 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.flexharness.d.ts +1 -0
- package/dist_ts/classes.flexharness.js +34 -10
- package/dist_ts/errors.d.ts +4 -1
- package/dist_ts/errors.js +20 -1
- package/dist_ts/interfaces.d.ts +19 -1
- package/dist_ts/interfaces.js +1 -1
- package/dist_ts/plugins.d.ts +4 -1
- package/dist_ts/plugins.js +3 -1
- package/dist_ts/utils.json.js +11 -2
- package/dist_ts/utils.validation.js +23 -15
- package/package.json +3 -3
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.flexharness.ts +34 -8
- package/ts/errors.ts +22 -1
- package/ts/interfaces.ts +20 -0
- package/ts/plugins.ts +7 -0
- package/ts/utils.json.ts +11 -1
- package/ts/utils.validation.ts +22 -16
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
1
2
|
import { FlexHarnessValidationError } from './errors.js';
|
|
2
3
|
import { FLEX_PROJECT_MANAGEMENT_LIMITS, FLEX_SESSION_GENERATION_COHORT_MAX_ENTRIES, FLEX_SESSION_GENERATION_ID_MAX_BYTES, } from './interfaces.js';
|
|
3
4
|
const maxProjectedErrorNameBytes = 128;
|
|
@@ -87,25 +88,27 @@ export function validateDeleteSessionGenerationCohortInput(value) {
|
|
|
87
88
|
}
|
|
88
89
|
return { root, authorizedBySessionId };
|
|
89
90
|
}
|
|
90
|
-
|
|
91
|
+
/** A plain object whose own properties are all string-keyed data properties, so reading them runs no code. */
|
|
92
|
+
function isPlainDataObject(value) {
|
|
91
93
|
if (!value
|
|
92
94
|
|| typeof value !== 'object'
|
|
93
95
|
|| Array.isArray(value)
|
|
94
|
-
|| ![Object.prototype, null].includes(Object.getPrototypeOf(value)))
|
|
96
|
+
|| ![Object.prototype, null].includes(Object.getPrototypeOf(value)))
|
|
97
|
+
return false;
|
|
98
|
+
return Reflect.ownKeys(value).every((key) => {
|
|
99
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
100
|
+
return typeof key === 'string' && descriptor !== undefined && 'value' in descriptor;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
export function validateProjectedErrorInfo(value) {
|
|
104
|
+
if (!isPlainDataObject(value)) {
|
|
95
105
|
throw new FlexHarnessValidationError('External error projection is invalid.');
|
|
96
106
|
}
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
const name =
|
|
100
|
-
const message = descriptors.message?.value;
|
|
101
|
-
const code = descriptors.code?.value;
|
|
107
|
+
const unsupportedKey = Object.getOwnPropertyNames(value)
|
|
108
|
+
.find((key) => !['name', 'message', 'code', 'limit'].includes(key));
|
|
109
|
+
const { name, message, code, limit } = value;
|
|
102
110
|
if (unsupportedKey
|
|
103
|
-
||
|
|
104
|
-
|| descriptors.name?.set !== undefined
|
|
105
|
-
|| descriptors.message?.get !== undefined
|
|
106
|
-
|| descriptors.message?.set !== undefined
|
|
107
|
-
|| descriptors.code?.get !== undefined
|
|
108
|
-
|| descriptors.code?.set !== undefined
|
|
111
|
+
|| (limit !== undefined && !(isPlainDataObject(limit) && plugins.isModelLimitInfo(limit)))
|
|
109
112
|
|| typeof name !== 'string'
|
|
110
113
|
|| !name
|
|
111
114
|
|| Buffer.byteLength(name, 'utf8') > maxProjectedErrorNameBytes
|
|
@@ -118,7 +121,12 @@ export function validateProjectedErrorInfo(value) {
|
|
|
118
121
|
|| Buffer.byteLength(code, 'utf8') > maxProjectedErrorCodeBytes))) {
|
|
119
122
|
throw new FlexHarnessValidationError('External error projection is invalid.');
|
|
120
123
|
}
|
|
121
|
-
return Object.freeze({
|
|
124
|
+
return Object.freeze({
|
|
125
|
+
name,
|
|
126
|
+
message,
|
|
127
|
+
...(code === undefined ? {} : { code }),
|
|
128
|
+
...(limit === undefined ? {} : { limit: Object.freeze({ ...limit }) }),
|
|
129
|
+
});
|
|
122
130
|
}
|
|
123
131
|
export function validateUpdateSessionOptions(options) {
|
|
124
132
|
if (!options || typeof options !== 'object' || Array.isArray(options)) {
|
|
@@ -227,4 +235,4 @@ export function validateSlashCommandExecutionOptions(options) {
|
|
|
227
235
|
validatePromptOptions(promptOptions, false);
|
|
228
236
|
return promptOptions;
|
|
229
237
|
}
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMudmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3V0aWxzLnZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsMENBQTBDLEVBQzFDLG9DQUFvQyxHQUNyQyxNQUFNLGlCQUFpQixDQUFDO0FBY3pCLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBQ3ZDLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDO0FBQzNDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBQ3ZDLE1BQU0sdUJBQXVCLEdBQUcsd0JBQXdCLENBQUM7QUFFekQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWEsRUFBRSxJQUFZO0lBQzVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEQsTUFBTSxJQUFJLDBCQUEwQixDQUFDLEdBQUcsSUFBSSw4QkFBOEIsQ0FBQyxDQUFDO0lBQzlFLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxLQUFjLEVBQ2QsSUFBWSxFQUNaLFFBQWdCLEVBQ2hCLFFBQVEsR0FBRyxLQUFLO0lBRWhCLElBQ0UsT0FBTyxLQUFLLEtBQUssUUFBUTtXQUN0QixDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztXQUMzQixNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxRQUFRLEVBQzlDLENBQUM7UUFDRCxNQUFNLElBQUksMEJBQTBCLENBQ2xDLEdBQUcsSUFBSSxZQUFZLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLHFCQUFxQixRQUFRLGVBQWUsQ0FDaEcsQ0FBQztJ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
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMudmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3V0aWxzLnZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsMENBQTBDLEVBQzFDLG9DQUFvQyxHQUNyQyxNQUFNLGlCQUFpQixDQUFDO0FBY3pCLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBQ3ZDLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDO0FBQzNDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBQ3ZDLE1BQU0sdUJBQXVCLEdBQUcsd0JBQXdCLENBQUM7QUFFekQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWEsRUFBRSxJQUFZO0lBQzVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEQsTUFBTSxJQUFJLDBCQUEwQixDQUFDLEdBQUcsSUFBSSw4QkFBOEIsQ0FBQyxDQUFDO0lBQzlFLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxLQUFjLEVBQ2QsSUFBWSxFQUNaLFFBQWdCLEVBQ2hCLFFBQVEsR0FBRyxLQUFLO0lBRWhCLElBQ0UsT0FBTyxLQUFLLEtBQUssUUFBUTtXQUN0QixDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztXQUMzQixNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxRQUFRLEVBQzlDLENBQUM7UUFDRCxNQUFNLElBQUksMEJBQTBCLENBQ2xDLEdBQUcsSUFBSSxZQUFZLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FB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
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"author": "Task Venture Capital GmbH",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"name": "@modelprofile.com/flexharness",
|
|
5
|
-
"version": "8.
|
|
5
|
+
"version": "8.3.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"description": "Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.",
|
|
8
8
|
"main": "./dist_ts/index.js",
|
|
@@ -62,8 +62,8 @@
|
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@modelprofile.com/flexharness-agent": "8.
|
|
66
|
-
"@modelprofile.com/flexharness-models": "8.
|
|
65
|
+
"@modelprofile.com/flexharness-agent": "8.3.0",
|
|
66
|
+
"@modelprofile.com/flexharness-models": "8.3.0",
|
|
67
67
|
"@push.rocks/smartrequest": "^5.0.1",
|
|
68
68
|
"ai": "^7.0.79",
|
|
69
69
|
"zod": "^4.4.1"
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
FlexHarnessStoreCommitUncertainError,
|
|
17
17
|
FlexHarnessValidationError,
|
|
18
18
|
errorToInfo,
|
|
19
|
+
modelLimitErrorInfo,
|
|
19
20
|
} from './errors.js';
|
|
20
21
|
import {
|
|
21
22
|
FLEX_PROJECT_MANAGEMENT_LIMITS,
|
|
@@ -79,6 +80,7 @@ import type {
|
|
|
79
80
|
IFlexSchedulePromptOptions,
|
|
80
81
|
IFlexScopeSnapshot,
|
|
81
82
|
IFlexSession,
|
|
83
|
+
IFlexSessionActivity,
|
|
82
84
|
IFlexSessionGeneration,
|
|
83
85
|
IFlexSessionGenerationCohortEntry,
|
|
84
86
|
IFlexSessionReversionGroup,
|
|
@@ -658,6 +660,14 @@ function combineErrors(errors: unknown[]): unknown {
|
|
|
658
660
|
return Object.freeze(combined);
|
|
659
661
|
}
|
|
660
662
|
|
|
663
|
+
/** The error and model limit a finished run leaves on its session activity. */
|
|
664
|
+
function terminalActivityError(message: IFlexMessage): Pick<IFlexSessionActivity, 'error' | 'limit'> {
|
|
665
|
+
return {
|
|
666
|
+
...(message.error ? { error: message.error } : {}),
|
|
667
|
+
...(message.limit ? { limit: message.limit } : {}),
|
|
668
|
+
};
|
|
669
|
+
}
|
|
670
|
+
|
|
661
671
|
function isAbortError(error: unknown): boolean {
|
|
662
672
|
return error instanceof FlexHarnessAbortError
|
|
663
673
|
|| (error instanceof DOMException && error.name === 'AbortError')
|
|
@@ -5677,8 +5687,11 @@ export class FlexHarness<TScope = unknown> {
|
|
|
5677
5687
|
assistantMessage.usage = cloneSerializable(result.usage);
|
|
5678
5688
|
} else {
|
|
5679
5689
|
const message = truncateUtf8(error?.message ?? externalErrorFallback.message, maxTransferMetadataBytes);
|
|
5680
|
-
|
|
5681
|
-
assistantMessage
|
|
5690
|
+
const limit = error instanceof FlexHarnessExternalError ? error.limit : undefined;
|
|
5691
|
+
for (const failedMessage of [userMessage, assistantMessage]) {
|
|
5692
|
+
failedMessage.error = message;
|
|
5693
|
+
if (limit) failedMessage.limit = cloneSerializable(limit);
|
|
5694
|
+
}
|
|
5682
5695
|
}
|
|
5683
5696
|
return {
|
|
5684
5697
|
runId: run.runId,
|
|
@@ -6766,7 +6779,7 @@ export class FlexHarness<TScope = unknown> {
|
|
|
6766
6779
|
status: activityStatus,
|
|
6767
6780
|
startedAt: run.stored.session.activity.startedAt,
|
|
6768
6781
|
completedAt: timestamp,
|
|
6769
|
-
...(terminal.assistantMessage
|
|
6782
|
+
...terminalActivityError(terminal.assistantMessage),
|
|
6770
6783
|
};
|
|
6771
6784
|
run.stored.session.updatedAt = timestamp;
|
|
6772
6785
|
}, true);
|
|
@@ -7025,6 +7038,19 @@ export class FlexHarness<TScope = unknown> {
|
|
|
7025
7038
|
}
|
|
7026
7039
|
}
|
|
7027
7040
|
|
|
7041
|
+
private onRetry(state: IStorageState, sessionId: string, retry: plugins.IAgentRetryEvent): void {
|
|
7042
|
+
const run = this.callbackRun(state, sessionId);
|
|
7043
|
+
if (!run || !this.reserveCallbackCapacity(run, 1, 0, 0)) return;
|
|
7044
|
+
this.emitEvent(run.scopeId, run.stored.session, {
|
|
7045
|
+
type: 'run.retrying',
|
|
7046
|
+
runId: run.runId,
|
|
7047
|
+
attempt: retry.attempt,
|
|
7048
|
+
maxAttempts: retry.maxAttempts,
|
|
7049
|
+
delayMs: retry.delayMs,
|
|
7050
|
+
reason: retry.reason,
|
|
7051
|
+
});
|
|
7052
|
+
}
|
|
7053
|
+
|
|
7028
7054
|
private callbackRun(state: IStorageState, sessionId: string): IActiveRun | undefined {
|
|
7029
7055
|
const run = state.activeRuns.get(sessionId);
|
|
7030
7056
|
return !run || run.callbacksClosed || run.callbackError ? undefined : run;
|
|
@@ -7777,7 +7803,8 @@ export class FlexHarness<TScope = unknown> {
|
|
|
7777
7803
|
if ((typeof error === 'object' && error !== null) && this.trustedInternalErrors.has(error)) {
|
|
7778
7804
|
return error as Error;
|
|
7779
7805
|
}
|
|
7780
|
-
|
|
7806
|
+
const defaultInfo = modelLimitErrorInfo(error) ?? externalErrorFallback;
|
|
7807
|
+
let info = defaultInfo;
|
|
7781
7808
|
if (this.externalErrorProjector) {
|
|
7782
7809
|
try {
|
|
7783
7810
|
info = validateProjectedErrorInfo(this.externalErrorProjector(error, {
|
|
@@ -7787,7 +7814,7 @@ export class FlexHarness<TScope = unknown> {
|
|
|
7787
7814
|
runId,
|
|
7788
7815
|
}));
|
|
7789
7816
|
} catch {
|
|
7790
|
-
info =
|
|
7817
|
+
info = defaultInfo;
|
|
7791
7818
|
}
|
|
7792
7819
|
}
|
|
7793
7820
|
return this.trustInternalError(new FlexHarnessExternalError(info));
|
|
@@ -8233,6 +8260,7 @@ export class FlexHarness<TScope = unknown> {
|
|
|
8233
8260
|
onToolCallStart: (event) => this.onToolStart(state, sessionId, event),
|
|
8234
8261
|
onToolCallUpdate: (event) => this.onToolUpdate(state, sessionId, event),
|
|
8235
8262
|
onToolCallFinish: (event) => this.onToolFinish(state, sessionId, event),
|
|
8263
|
+
onRetry: (event) => this.onRetry(state, sessionId, event),
|
|
8236
8264
|
};
|
|
8237
8265
|
stored.agentSession = await this.withCompactorContext(
|
|
8238
8266
|
compactorContext,
|
|
@@ -8405,9 +8433,7 @@ export class FlexHarness<TScope = unknown> {
|
|
|
8405
8433
|
runId: latestTerminal.runId,
|
|
8406
8434
|
status: latestTerminal.status === 'completed' ? 'idle' : latestTerminal.status,
|
|
8407
8435
|
completedAt,
|
|
8408
|
-
...(latestTerminal.assistantMessage
|
|
8409
|
-
? { error: latestTerminal.assistantMessage.error }
|
|
8410
|
-
: {}),
|
|
8436
|
+
...terminalActivityError(latestTerminal.assistantMessage),
|
|
8411
8437
|
};
|
|
8412
8438
|
stored.session.updatedAt = completedAt;
|
|
8413
8439
|
} else if (['scheduled', 'running', 'waiting_permission'].includes(stored.session.status)) {
|
package/ts/errors.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import type { IFlexErrorInfo, TFlexModelLimit } from './interfaces.js';
|
|
3
|
+
|
|
4
|
+
const modelLimitErrorCodes: Record<TFlexModelLimit['kind'], string> = {
|
|
5
|
+
usage_limit: 'FLEX_USAGE_LIMIT',
|
|
6
|
+
rate_limit: 'FLEX_RATE_LIMIT',
|
|
7
|
+
};
|
|
2
8
|
|
|
3
9
|
export class FlexHarnessError extends Error {
|
|
4
10
|
public readonly code: string;
|
|
@@ -85,9 +91,12 @@ export class FlexHarnessCallbackOverflowError extends FlexHarnessError {
|
|
|
85
91
|
}
|
|
86
92
|
|
|
87
93
|
export class FlexHarnessExternalError extends FlexHarnessError {
|
|
94
|
+
public readonly limit: TFlexModelLimit | undefined;
|
|
95
|
+
|
|
88
96
|
constructor(info: IFlexErrorInfo) {
|
|
89
97
|
super(info.code ?? 'FLEX_EXTERNAL_ERROR', info.message);
|
|
90
98
|
this.name = info.name;
|
|
99
|
+
this.limit = info.limit;
|
|
91
100
|
}
|
|
92
101
|
}
|
|
93
102
|
|
|
@@ -164,6 +173,7 @@ export function errorToInfo(error: unknown): IFlexErrorInfo {
|
|
|
164
173
|
name: error.name,
|
|
165
174
|
message: error.message,
|
|
166
175
|
code: error.code,
|
|
176
|
+
...(error instanceof FlexHarnessExternalError && error.limit ? { limit: error.limit } : {}),
|
|
167
177
|
};
|
|
168
178
|
}
|
|
169
179
|
if (error instanceof Error) {
|
|
@@ -179,6 +189,17 @@ export function errorToInfo(error: unknown): IFlexErrorInfo {
|
|
|
179
189
|
};
|
|
180
190
|
}
|
|
181
191
|
|
|
192
|
+
/** The public projection of a model limit error, which names the limit and its reset time. */
|
|
193
|
+
export function modelLimitErrorInfo(error: unknown): IFlexErrorInfo | undefined {
|
|
194
|
+
if (!plugins.isModelLimitError(error)) return undefined;
|
|
195
|
+
return {
|
|
196
|
+
name: 'FlexHarnessExternalError',
|
|
197
|
+
message: error.message,
|
|
198
|
+
code: modelLimitErrorCodes[error.limit.kind],
|
|
199
|
+
limit: error.limit,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
|
|
182
203
|
export function errorMessage(error: unknown): string {
|
|
183
204
|
return error instanceof Error ? error.message : String(error);
|
|
184
205
|
}
|
package/ts/interfaces.ts
CHANGED
|
@@ -22,6 +22,9 @@ export type TFlexAgentToolCallUpdateEvent = Parameters<
|
|
|
22
22
|
export type TFlexAgentToolCallFinishEvent = Parameters<
|
|
23
23
|
NonNullable<TFlexAgentSessionOptions['onToolCallFinish']>
|
|
24
24
|
>[0];
|
|
25
|
+
/** A usage or rate limit a model provider reported; `resetsAt` is in epoch milliseconds. */
|
|
26
|
+
export type TFlexModelLimit = plugins.IModelLimitInfo;
|
|
27
|
+
export type TFlexRetryReason = plugins.TAgentRetryReason;
|
|
25
28
|
|
|
26
29
|
export interface IFlexTextPromptPart {
|
|
27
30
|
type: 'text';
|
|
@@ -125,6 +128,8 @@ export interface IFlexMessage {
|
|
|
125
128
|
model?: IFlexModelIdentity;
|
|
126
129
|
usage?: IFlexUsage;
|
|
127
130
|
error?: string;
|
|
131
|
+
/** The model limit that failed this run, next to its error. */
|
|
132
|
+
limit?: TFlexModelLimit;
|
|
128
133
|
}
|
|
129
134
|
|
|
130
135
|
export interface IFlexSessionActivity {
|
|
@@ -133,6 +138,8 @@ export interface IFlexSessionActivity {
|
|
|
133
138
|
startedAt?: string;
|
|
134
139
|
completedAt?: string;
|
|
135
140
|
error?: string;
|
|
141
|
+
/** The model limit that failed the last run, next to its error. */
|
|
142
|
+
limit?: TFlexModelLimit;
|
|
136
143
|
}
|
|
137
144
|
|
|
138
145
|
export interface IFlexSession {
|
|
@@ -1227,6 +1234,16 @@ export interface IFlexRunFinishedEvent extends IFlexEventBase {
|
|
|
1227
1234
|
readonly error?: IFlexErrorInfo;
|
|
1228
1235
|
}
|
|
1229
1236
|
|
|
1237
|
+
/** The run waits `delayMs` before retrying a rate-limited or unavailable model call. */
|
|
1238
|
+
export interface IFlexRunRetryingEvent extends IFlexEventBase {
|
|
1239
|
+
readonly type: 'run.retrying';
|
|
1240
|
+
readonly runId: string;
|
|
1241
|
+
readonly attempt: number;
|
|
1242
|
+
readonly maxAttempts: number;
|
|
1243
|
+
readonly delayMs: number;
|
|
1244
|
+
readonly reason: TFlexRetryReason;
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1230
1247
|
export interface IFlexPromptQueueEvent extends IFlexEventBase {
|
|
1231
1248
|
readonly type: 'prompt.queued' | 'prompt.started' | 'prompt.running' | 'prompt.finished';
|
|
1232
1249
|
readonly queueId: string;
|
|
@@ -1244,6 +1261,8 @@ export interface IFlexErrorInfo {
|
|
|
1244
1261
|
name: string;
|
|
1245
1262
|
message: string;
|
|
1246
1263
|
code?: string;
|
|
1264
|
+
/** Set when a model usage or rate limit caused the error. */
|
|
1265
|
+
limit?: TFlexModelLimit;
|
|
1247
1266
|
}
|
|
1248
1267
|
|
|
1249
1268
|
export type TFlexHarnessEvent =
|
|
@@ -1256,6 +1275,7 @@ export type TFlexHarnessEvent =
|
|
|
1256
1275
|
| IFlexPermissionRequestedEvent
|
|
1257
1276
|
| IFlexPermissionResolvedEvent
|
|
1258
1277
|
| IFlexRunFinishedEvent
|
|
1278
|
+
| IFlexRunRetryingEvent
|
|
1259
1279
|
| IFlexPromptQueueEvent
|
|
1260
1280
|
| IFlexSessionHistoryChangedEvent;
|
|
1261
1281
|
|
package/ts/plugins.ts
CHANGED
|
@@ -44,6 +44,7 @@ export type {
|
|
|
44
44
|
IAgentGenerateResult,
|
|
45
45
|
IAgentGenerationHandle,
|
|
46
46
|
IAgentGenerationLease,
|
|
47
|
+
IAgentRetryEvent,
|
|
47
48
|
IAgentRunResult,
|
|
48
49
|
IAgentSession,
|
|
49
50
|
IAgentSessionOptions,
|
|
@@ -62,6 +63,12 @@ export type {
|
|
|
62
63
|
TAgentContextCompactor,
|
|
63
64
|
TAgentEvent,
|
|
64
65
|
TAgentGenerationOutcome,
|
|
66
|
+
TAgentRetryReason,
|
|
65
67
|
TAgentToolCallFinishEvent,
|
|
66
68
|
TAgentToolExecutionReconciliationOptions,
|
|
67
69
|
} from '@modelprofile.com/flexharness-agent';
|
|
70
|
+
|
|
71
|
+
import { isModelLimitError, isModelLimitInfo } from '@modelprofile.com/flexharness-models';
|
|
72
|
+
|
|
73
|
+
export { isModelLimitError, isModelLimitInfo };
|
|
74
|
+
export type { IModelLimitInfo } from '@modelprofile.com/flexharness-models';
|
package/ts/utils.json.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
1
2
|
import { FlexHarnessStoreFormatError, FlexHarnessValidationError } from './errors.js';
|
|
2
3
|
import {
|
|
3
4
|
FLEX_REVERSION_MAX_AFFECTED_WORKSPACES,
|
|
@@ -406,6 +407,12 @@ function requireOptionalString(value: unknown, path: string): string | undefined
|
|
|
406
407
|
return value === undefined ? undefined : requireString(value, path);
|
|
407
408
|
}
|
|
408
409
|
|
|
410
|
+
function requireOptionalModelLimit(value: unknown, path: string): void {
|
|
411
|
+
if (value !== undefined && !plugins.isModelLimitInfo(value)) {
|
|
412
|
+
throw new FlexHarnessStoreFormatError(`${path} is invalid.`);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
409
416
|
function requireNonNegativeNumber(value: unknown, path: string): void {
|
|
410
417
|
if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
|
|
411
418
|
throw new FlexHarnessStoreFormatError(`${path} must be a non-negative finite number.`);
|
|
@@ -501,7 +508,7 @@ function validateSession(value: unknown, path: string): IValidatedSessionIdentit
|
|
|
501
508
|
throw new FlexHarnessStoreFormatError(`${path}.status is invalid.`);
|
|
502
509
|
}
|
|
503
510
|
const activity = requireRecord(session.activity, `${path}.activity`);
|
|
504
|
-
requireOnlyKeys(activity, ['runId', 'status', 'startedAt', 'completedAt', 'error'], `${path}.activity`);
|
|
511
|
+
requireOnlyKeys(activity, ['runId', 'status', 'startedAt', 'completedAt', 'error', 'limit'], `${path}.activity`);
|
|
505
512
|
if (!activityStatuses.includes(activity.status as (typeof activityStatuses)[number])) {
|
|
506
513
|
throw new FlexHarnessStoreFormatError(`${path}.activity.status is invalid.`);
|
|
507
514
|
}
|
|
@@ -509,6 +516,7 @@ function validateSession(value: unknown, path: string): IValidatedSessionIdentit
|
|
|
509
516
|
requireOptionalString(activity.startedAt, `${path}.activity.startedAt`);
|
|
510
517
|
requireOptionalString(activity.completedAt, `${path}.activity.completedAt`);
|
|
511
518
|
requireOptionalString(activity.error, `${path}.activity.error`);
|
|
519
|
+
requireOptionalModelLimit(activity.limit, `${path}.activity.limit`);
|
|
512
520
|
const relationship = [
|
|
513
521
|
session.parentSessionId,
|
|
514
522
|
session.parentRunId,
|
|
@@ -667,6 +675,7 @@ function validateMessage(value: unknown, path: string): IValidatedMessageIdentit
|
|
|
667
675
|
'model',
|
|
668
676
|
'usage',
|
|
669
677
|
'error',
|
|
678
|
+
'limit',
|
|
670
679
|
],
|
|
671
680
|
path,
|
|
672
681
|
);
|
|
@@ -682,6 +691,7 @@ function validateMessage(value: unknown, path: string): IValidatedMessageIdentit
|
|
|
682
691
|
requireString(message.createdAt, `${path}.createdAt`);
|
|
683
692
|
requireOptionalString(message.completedAt, `${path}.completedAt`);
|
|
684
693
|
requireOptionalString(message.error, `${path}.error`);
|
|
694
|
+
requireOptionalModelLimit(message.limit, `${path}.limit`);
|
|
685
695
|
if (message.model !== undefined) validateModel(message.model, `${path}.model`);
|
|
686
696
|
if (message.usage !== undefined) validateUsage(message.usage, `${path}.usage`);
|
|
687
697
|
if (!Array.isArray(message.parts)) {
|
package/ts/utils.validation.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
1
2
|
import { FlexHarnessValidationError } from './errors.js';
|
|
2
3
|
import {
|
|
3
4
|
FLEX_PROJECT_MANAGEMENT_LIMITS,
|
|
@@ -162,30 +163,30 @@ export function validateDeleteSessionGenerationCohortInput(
|
|
|
162
163
|
return { root, authorizedBySessionId };
|
|
163
164
|
}
|
|
164
165
|
|
|
165
|
-
|
|
166
|
+
/** A plain object whose own properties are all string-keyed data properties, so reading them runs no code. */
|
|
167
|
+
function isPlainDataObject(value: unknown): value is Record<string, unknown> {
|
|
166
168
|
if (
|
|
167
169
|
!value
|
|
168
170
|
|| typeof value !== 'object'
|
|
169
171
|
|| Array.isArray(value)
|
|
170
172
|
|| ![Object.prototype, null].includes(Object.getPrototypeOf(value))
|
|
171
|
-
)
|
|
173
|
+
) return false;
|
|
174
|
+
return Reflect.ownKeys(value).every((key) => {
|
|
175
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
176
|
+
return typeof key === 'string' && descriptor !== undefined && 'value' in descriptor;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export function validateProjectedErrorInfo(value: unknown): IFlexErrorInfo {
|
|
181
|
+
if (!isPlainDataObject(value)) {
|
|
172
182
|
throw new FlexHarnessValidationError('External error projection is invalid.');
|
|
173
183
|
}
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
);
|
|
178
|
-
const name = descriptors.name?.value;
|
|
179
|
-
const message = descriptors.message?.value;
|
|
180
|
-
const code = descriptors.code?.value;
|
|
184
|
+
const unsupportedKey = Object.getOwnPropertyNames(value)
|
|
185
|
+
.find((key) => !['name', 'message', 'code', 'limit'].includes(key));
|
|
186
|
+
const { name, message, code, limit } = value;
|
|
181
187
|
if (
|
|
182
188
|
unsupportedKey
|
|
183
|
-
||
|
|
184
|
-
|| descriptors.name?.set !== undefined
|
|
185
|
-
|| descriptors.message?.get !== undefined
|
|
186
|
-
|| descriptors.message?.set !== undefined
|
|
187
|
-
|| descriptors.code?.get !== undefined
|
|
188
|
-
|| descriptors.code?.set !== undefined
|
|
189
|
+
|| (limit !== undefined && !(isPlainDataObject(limit) && plugins.isModelLimitInfo(limit)))
|
|
189
190
|
|| typeof name !== 'string'
|
|
190
191
|
|| !name
|
|
191
192
|
|| Buffer.byteLength(name, 'utf8') > maxProjectedErrorNameBytes
|
|
@@ -199,7 +200,12 @@ export function validateProjectedErrorInfo(value: unknown): IFlexErrorInfo {
|
|
|
199
200
|
) {
|
|
200
201
|
throw new FlexHarnessValidationError('External error projection is invalid.');
|
|
201
202
|
}
|
|
202
|
-
return Object.freeze({
|
|
203
|
+
return Object.freeze({
|
|
204
|
+
name,
|
|
205
|
+
message,
|
|
206
|
+
...(code === undefined ? {} : { code }),
|
|
207
|
+
...(limit === undefined ? {} : { limit: Object.freeze({ ...limit }) }),
|
|
208
|
+
});
|
|
203
209
|
}
|
|
204
210
|
|
|
205
211
|
export function validateUpdateSessionOptions(options: IFlexUpdateSessionOptions): void {
|