agl 40.6.0 → 41.0.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/changelog.md +33 -0
- package/dist_serve/bundle.js +3514 -3357
- package/dist_serve/bundle.js.map +2 -2
- package/dist_serve/bundle.js.third-party-notices.json +58 -32
- package/dist_serve/bundle.js.third-party-notices.txt +108 -33
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/aglapi/aglapisurface.document.js +64 -37
- package/dist_ts/classes.controller.d.ts +8 -0
- package/dist_ts/classes.controller.js +109 -21
- package/dist_ts/classes.controllereventdelivery.d.ts +72 -0
- package/dist_ts/classes.controllereventdelivery.js +233 -0
- package/dist_ts/classes.flexmodels.public.js +4 -1
- package/dist_ts/classes.flexprojectionreader.d.ts +6 -0
- package/dist_ts/classes.flexprojectionreader.js +29 -5
- package/dist_ts/classes.flexservice.d.ts +2 -1
- package/dist_ts/classes.flexservice.js +34 -6
- package/dist_ts/classes.flexstore.d.ts +41 -4
- package/dist_ts/classes.flexstore.js +266 -203
- package/dist_ts/classes.ticketnotifier.js +4 -2
- package/dist_ts/classes.ticketstore.d.ts +50 -2
- package/dist_ts/classes.ticketstore.js +195 -78
- package/dist_ts/driver/classes.drivereventrelay.d.ts +13 -1
- package/dist_ts/driver/classes.drivereventrelay.js +99 -6
- package/dist_ts/driver/functions.driverinstructions.d.ts +1 -1
- package/dist_ts/driver/functions.driverinstructions.js +1 -1
- package/dist_ts/driver/functions.drivertools.d.ts +11 -2
- package/dist_ts/driver/functions.drivertools.js +19 -9
- package/dist_ts/fleet/classes.boardpump.d.ts +8 -2
- package/dist_ts/fleet/classes.boardpump.js +38 -20
- package/dist_ts/fleet/classes.ticketeffects.d.ts +17 -2
- package/dist_ts/fleet/classes.ticketeffects.js +16 -10
- package/dist_ts/fleet/classes.workers.d.ts +4 -0
- package/dist_ts/fleet/classes.workers.js +37 -17
- package/dist_ts/fleet/functions.workervalidation.js +2 -2
- package/dist_ts/functions.flexprivatesnapshot.d.ts +102 -0
- package/dist_ts/functions.flexprivatesnapshot.js +461 -0
- package/dist_ts/functions.mcptickettools.d.ts +3 -0
- package/dist_ts/functions.mcptickettools.js +2 -2
- package/dist_ts/functions.ticketcli.d.ts +1 -1
- package/dist_ts/functions.ticketcli.js +8 -4
- package/dist_ts/functions.ticketvalidation.d.ts +3 -0
- package/dist_ts/functions.ticketvalidation.js +7 -4
- package/dist_ts/interfaces.flexipc.d.ts +21 -2
- package/dist_ts/interfaces.flexipc.js +33 -16
- package/dist_ts_interfaces/fleetworkers.d.ts +6 -0
- package/dist_ts_interfaces/interfaces.d.ts +1 -1
- package/dist_ts_interfaces/interfaces.js +1 -1
- package/dist_ts_interfaces/requests.tickets.d.ts +8 -12
- package/dist_ts_interfaces/tickets.d.ts +37 -9
- package/dist_ts_interfaces/tickets.js +7 -1
- package/package.json +7 -7
- package/readme.md +54 -10
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/aglapi/aglapisurface.document.ts +63 -36
- package/ts/classes.controller.ts +131 -31
- package/ts/classes.controllereventdelivery.ts +289 -0
- package/ts/classes.flexmodels.public.ts +10 -0
- package/ts/classes.flexprojectionreader.ts +30 -3
- package/ts/classes.flexservice.ts +33 -5
- package/ts/classes.flexstore.ts +381 -246
- package/ts/classes.ticketnotifier.ts +3 -1
- package/ts/classes.ticketstore.ts +201 -75
- package/ts/driver/classes.drivereventrelay.ts +89 -4
- package/ts/driver/functions.driverinstructions.ts +1 -1
- package/ts/driver/functions.drivertools.ts +22 -8
- package/ts/fleet/classes.boardpump.ts +51 -19
- package/ts/fleet/classes.ticketeffects.ts +25 -11
- package/ts/fleet/classes.workers.ts +28 -16
- package/ts/fleet/functions.workervalidation.ts +1 -1
- package/ts/functions.flexprivatesnapshot.ts +601 -0
- package/ts/functions.mcptickettools.ts +1 -1
- package/ts/functions.ticketcli.ts +7 -3
- package/ts/functions.ticketvalidation.ts +7 -3
- package/ts/interfaces.flexipc.ts +50 -21
- package/ts_interfaces/fleetworkers.ts +6 -0
- package/ts_interfaces/interfaces.ts +1 -1
- package/ts_interfaces/requests.tickets.ts +9 -6
- package/ts_interfaces/tickets.ts +32 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements.harnesscontrollerapp.ts +19 -8
- package/ts_web/elements.ticketboard.ts +16 -4
- package/ts_web/settings.general.ts +10 -4
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
readOnlyFlexRequestMethods,
|
|
74
74
|
type IFlexDriverResolution,
|
|
75
75
|
} from './interfaces.flexipc.js';
|
|
76
|
-
import {
|
|
76
|
+
import { driverNotesContext, driverToolDefinitions } from './driver/functions.drivertools.js';
|
|
77
77
|
import { flexClaudePoolConnectionId, parseFlexAuthorityConnectionId } from '../ts_interfaces/functions.authorityscope.js';
|
|
78
78
|
import { createFailureReference, describeFailure } from './functions.failuredescription.js';
|
|
79
79
|
import { resolveConfiguredFlexMcpServers } from './configuration/functions.flexmcp.js';
|
|
@@ -92,6 +92,13 @@ type TFlexAuthorityAccessTarget = { scopeId: string } | { purpose: TFlexInstalla
|
|
|
92
92
|
type TFlexDelegatedRunAdmissionProviderContext =
|
|
93
93
|
plugins.flexharness.IFlexDelegatedRunAdmissionContext<IFlexProjectScope>;
|
|
94
94
|
|
|
95
|
+
/**
|
|
96
|
+
* The driver's cache setting on Anthropic: one-hour breakpoints. The controller keeps the driver's cache warm for an
|
|
97
|
+
* hour after its board last changed (`fleet.driver.keepCacheWarm`), and FlexHarness times its warm turns by the TTL a
|
|
98
|
+
* call wrote, so an idle hour costs one warm turn instead of one every four minutes. Other providers keep their
|
|
99
|
+
* default: the ChatGPT backend caches in memory and takes no retention.
|
|
100
|
+
*/
|
|
101
|
+
const flexDriverAnthropicCache: plugins.flexharness.TFlexAgentCacheSetting = { retention: '1h' };
|
|
95
102
|
const flexFailureStatusTimeoutMs = 1_000;
|
|
96
103
|
|
|
97
104
|
export const flexHarnessTimeoutPolicy = Object.freeze({
|
|
@@ -359,6 +366,7 @@ const projectSerializedMethods: ReadonlySet<TFlexRequestMethod> = new Set([
|
|
|
359
366
|
'session.reversion.info',
|
|
360
367
|
'slash.list',
|
|
361
368
|
'message.page',
|
|
369
|
+
'message.metadata.page',
|
|
362
370
|
'message.get',
|
|
363
371
|
'prompt.start',
|
|
364
372
|
'prompt.continue',
|
|
@@ -403,6 +411,7 @@ const projectScopedMethods: ReadonlySet<TFlexRequestMethod> = new Set([
|
|
|
403
411
|
'slash.list',
|
|
404
412
|
'slash.execute',
|
|
405
413
|
'message.page',
|
|
414
|
+
'message.metadata.page',
|
|
406
415
|
'message.get',
|
|
407
416
|
'prompt.start',
|
|
408
417
|
'prompt.continue',
|
|
@@ -1403,6 +1412,16 @@ export class FlexService {
|
|
|
1403
1412
|
}),
|
|
1404
1413
|
};
|
|
1405
1414
|
}
|
|
1415
|
+
case 'message.metadata.page': {
|
|
1416
|
+
const payload = payloadArg as IFlexRequestMap['message.metadata.page']['request'];
|
|
1417
|
+
return {
|
|
1418
|
+
result: await harness.listMessageMetadataPage(payload.scopeId, payload.sessionId, {
|
|
1419
|
+
...(payload.limit !== undefined ? { limit: payload.limit } : {}),
|
|
1420
|
+
...(payload.before !== undefined ? { before: payload.before } : {}),
|
|
1421
|
+
...(payload.includeUndone === undefined ? {} : { includeUndone: payload.includeUndone }),
|
|
1422
|
+
}),
|
|
1423
|
+
};
|
|
1424
|
+
}
|
|
1406
1425
|
case 'message.get': {
|
|
1407
1426
|
const payload = payloadArg as IFlexRequestMap['message.get']['request'];
|
|
1408
1427
|
return {
|
|
@@ -2340,11 +2359,18 @@ export class FlexService {
|
|
|
2340
2359
|
private async resolveConfiguredRunModel(
|
|
2341
2360
|
contextArg: Readonly<plugins.flexharness.IFlexModelResolverContext<IFlexProjectScope>>,
|
|
2342
2361
|
): Promise<TFlexResolvedModel> {
|
|
2343
|
-
const
|
|
2362
|
+
const model = await this.resolveModel(
|
|
2344
2363
|
contextArg.scopeId, contextArg.signal, contextArg.modelHint, contextArg, contextArg.sessionId,
|
|
2345
2364
|
);
|
|
2346
2365
|
const driver = await this.resolveDriver(contextArg);
|
|
2347
|
-
|
|
2366
|
+
// The driver's system prompt holds its stable instructions only; its notes are a pinned
|
|
2367
|
+
// context, so a notes update never rewrites the cached prefix.
|
|
2368
|
+
const resolved: TFlexResolvedModel = driver ? {
|
|
2369
|
+
...model,
|
|
2370
|
+
...(model.identity.provider === 'anthropic' ? { cache: flexDriverAnthropicCache } : {}),
|
|
2371
|
+
pinnedContext: driverNotesContext(driver.notes, driver.notesRevision),
|
|
2372
|
+
} : model;
|
|
2373
|
+
const driverSystem = driver?.instructions.trim();
|
|
2348
2374
|
const key = this.configurationSessionKey(contextArg);
|
|
2349
2375
|
const projection = this.configuredSessions.get(key);
|
|
2350
2376
|
if (!projection) {
|
|
@@ -2363,7 +2389,8 @@ export class FlexService {
|
|
|
2363
2389
|
|
|
2364
2390
|
/**
|
|
2365
2391
|
* The controller says whether a root run belongs to the host's driver session, with the driver's
|
|
2366
|
-
* instructions and notes. A run reads them once, so its system
|
|
2392
|
+
* instructions and its notes with their scratchpad revision. A run reads them once, so its system
|
|
2393
|
+
* prompt and pinned notes stay stable while it runs.
|
|
2367
2394
|
*/
|
|
2368
2395
|
private resolveDriver(contextArg: Readonly<{
|
|
2369
2396
|
scopeId: string;
|
|
@@ -4114,7 +4141,8 @@ export class FlexService {
|
|
|
4114
4141
|
baseTextUtf8Bytes: eventArg.baseTextUtf8Bytes,
|
|
4115
4142
|
textUtf8Bytes: eventArg.textUtf8Bytes,
|
|
4116
4143
|
});
|
|
4117
|
-
|
|
4144
|
+
// Content progress travels only as the delta: the part's start and completion, and the
|
|
4145
|
+
// run's lifecycle, carry the session change (updated time, preview, status).
|
|
4118
4146
|
return;
|
|
4119
4147
|
}
|
|
4120
4148
|
if (
|