agl 22.0.4 → 23.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.
@@ -1,9 +1,10 @@
1
1
  import * as plugins from './plugins.js';
2
- export declare const controllerProtocolVersion: 22;
2
+ export declare const controllerProtocolVersion: 23;
3
3
  export declare const controllerUpgradeManagementVersion: 2;
4
4
  export declare const controllerPackageName: "agl";
5
5
  export declare const controllerMaxToolEventBytes: number;
6
6
  export declare const controllerMaxLiveMessageEventBytes: number;
7
+ export declare const controllerLiveMessageDeltaTargetBytes: number;
7
8
  export declare const controllerInitialMessageBundleLimit = 20;
8
9
  export declare const controllerMaximumMessageBundles = 200;
9
10
  export declare const controllerMaximumTranscriptBytes: number;
@@ -453,6 +454,32 @@ export interface IControllerTextUpdate {
453
454
  revision: number;
454
455
  streamEpoch: number;
455
456
  }
457
+ export interface IControllerReasoningDelta {
458
+ sessionId: IControllerRuntimeId;
459
+ messageId: IControllerRuntimeId;
460
+ partId: IControllerRuntimeId;
461
+ delta: string;
462
+ baseTextUtf8Bytes: number;
463
+ textUtf8Bytes: number;
464
+ /** Authoritative source coordinates; required for Flex and absent for OpenCode. */
465
+ order?: IControllerTranscriptOrder;
466
+ sourceUpdatedAt: number;
467
+ revision: number;
468
+ streamEpoch: number;
469
+ }
470
+ export interface IControllerTextDelta {
471
+ sessionId: IControllerRuntimeId;
472
+ messageId: IControllerRuntimeId;
473
+ partId: IControllerRuntimeId;
474
+ delta: string;
475
+ baseTextUtf8Bytes: number;
476
+ textUtf8Bytes: number;
477
+ /** Authoritative source coordinates; required for Flex and absent for OpenCode. */
478
+ order?: IControllerTranscriptOrder;
479
+ sourceUpdatedAt: number;
480
+ revision: number;
481
+ streamEpoch: number;
482
+ }
456
483
  export interface IControllerToolStreamCursor {
457
484
  streamEpoch: number;
458
485
  revision: number;
@@ -718,7 +745,7 @@ export interface IControllerModelRefreshJob {
718
745
  * client validates incoming events against this list at runtime, so a type
719
746
  * added here is automatically deliverable — the two cannot drift apart.
720
747
  */
721
- export declare const controllerEventTypes: readonly ["sessions.changed", "session.changed", "session.draft.changed", "session.history.changed", "session.tool.updated", "session.reasoning.updated", "session.text.updated", "permissions.changed", "harness.changed", "projects.changed", "settings.changed", "sessiongroups.changed", "resources.changed", "terminals.changed", "upgrade.changed"];
748
+ export declare const controllerEventTypes: readonly ["sessions.changed", "session.changed", "session.draft.changed", "session.history.changed", "session.tool.updated", "session.reasoning.updated", "session.reasoning.delta", "session.text.updated", "session.text.delta", "permissions.changed", "harness.changed", "projects.changed", "settings.changed", "sessiongroups.changed", "resources.changed", "terminals.changed", "upgrade.changed"];
722
749
  export type TControllerEventType = (typeof controllerEventTypes)[number];
723
750
  export interface IControllerEvent {
724
751
  type: TControllerEventType;
@@ -733,8 +760,12 @@ export interface IControllerEvent {
733
760
  toolExecution?: IControllerToolExecution;
734
761
  /** Present only on a live OpenCode or Flex reasoning snapshot. */
735
762
  reasoningUpdate?: IControllerReasoningUpdate;
763
+ /** Present only on an exact live OpenCode or Flex reasoning delta. */
764
+ reasoningDelta?: IControllerReasoningDelta;
736
765
  /** Present only on a live OpenCode or Flex text snapshot. */
737
766
  textUpdate?: IControllerTextUpdate;
767
+ /** Present only on an exact live OpenCode or Flex text delta. */
768
+ textDelta?: IControllerTextDelta;
738
769
  /** Present only on a session.draft.changed event. */
739
770
  sessionDraftUpdate?: IControllerSessionDraftUpdate;
740
771
  /** Ordered harness stream barrier carried by harness.changed. */
@@ -1,9 +1,10 @@
1
1
  import * as plugins from './plugins.js';
2
- export const controllerProtocolVersion = 22;
2
+ export const controllerProtocolVersion = 23;
3
3
  export const controllerUpgradeManagementVersion = 2;
4
4
  export const controllerPackageName = 'agl';
5
5
  export const controllerMaxToolEventBytes = 48 * 1024;
6
6
  export const controllerMaxLiveMessageEventBytes = 128 * 1024;
7
+ export const controllerLiveMessageDeltaTargetBytes = 16 * 1024;
7
8
  export const controllerInitialMessageBundleLimit = 20;
8
9
  export const controllerMaximumMessageBundles = 200;
9
10
  export const controllerMaximumTranscriptBytes = 512 * 1024;
@@ -34,7 +35,9 @@ export const controllerEventTypes = [
34
35
  'session.history.changed',
35
36
  'session.tool.updated',
36
37
  'session.reasoning.updated',
38
+ 'session.reasoning.delta',
37
39
  'session.text.updated',
40
+ 'session.text.delta',
38
41
  'permissions.changed',
39
42
  'harness.changed',
40
43
  'projects.changed',
@@ -44,4 +47,4 @@ export const controllerEventTypes = [
44
47
  'terminals.changed',
45
48
  'upgrade.changed',
46
49
  ];
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX2ludGVyZmFjZXMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxFQUFXLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FBVSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEtBQWMsQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDN0QsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsRUFBRSxDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLEdBQUcsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUMxQyw4REFBdUUsQ0FBQztBQUMxRSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN2RSxNQUFNLENBQUMsTUFBTSx3Q0FBd0MsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQVUsQ0FBQztBQUNoRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQVUsQ0FBQztBQW1CekUsNkVBQTZFO0FBQzdFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsWUFBa0MsRUFBVSxFQUFFLENBQ25GLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBVWxFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFVLENBQUM7QUFvdEJ0Rjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIseUJBQXlCO0lBQ3pCLHNCQUFzQjtJQUN0QiwyQkFBMkI7SUFDM0Isc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQix1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixpQkFBaUI7Q0FDVCxDQUFDIn0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX2ludGVyZmFjZXMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxFQUFXLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FBVSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEtBQWMsQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDN0QsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxFQUFFLENBQUM7QUFDdEQsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsR0FBRyxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDM0QsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQzFDLDhEQUF1RSxDQUFDO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFbEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBVSxDQUFDO0FBQ2hGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBVSxDQUFDO0FBbUJ6RSw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxZQUFrQyxFQUFVLEVBQUUsQ0FDbkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFVbEU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQVUsQ0FBQztBQWd2QnRGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRztJQUNsQyxrQkFBa0I7SUFDbEIsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2Qix5QkFBeUI7SUFDekIsc0JBQXNCO0lBQ3RCLDJCQUEyQjtJQUMzQix5QkFBeUI7SUFDekIsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsaUJBQWlCO0NBQ1QsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agl",
3
- "version": "22.0.4",
3
+ "version": "23.0.0",
4
4
  "controllerUpgradeManagementVersion": 2,
5
5
  "private": false,
6
6
  "description": "Agent Gateway Layer for OpenCode and FlexHarness sessions",
@@ -20,11 +20,11 @@
20
20
  "@api.global/typedrequest-interfaces": "7.1.0",
21
21
  "@api.global/typedserver": "11.1.0",
22
22
  "@api.global/typedsocket": "8.0.0",
23
- "@design.estate/dees-catalog": "6.10.2",
23
+ "@design.estate/dees-catalog": "6.12.1",
24
24
  "@design.estate/dees-element": "2.4.0",
25
25
  "@modelprofile.com/browser-runtime": "3.0.1",
26
26
  "@modelprofile.com/crossharness-mcp": "4.1.1",
27
- "@modelprofile.com/flexharness": "4.1.2",
27
+ "@modelprofile.com/flexharness": "5.0.0",
28
28
  "@opencode-ai/sdk": "1.18.15",
29
29
  "@push.rocks/smartagent": "5.0.1",
30
30
  "@push.rocks/smartai": "6.0.0",
package/readme.md CHANGED
@@ -43,6 +43,12 @@ OpenCode and FlexHarness are supervised independently. Flex can restart without
43
43
 
44
44
  The browser receives normalized AGL data. It never receives the OpenCode server password, provider credentials, private database descriptors, raw provider responses, or Flex private snapshots.
45
45
 
46
+ ### Live Transcript Delivery
47
+
48
+ Controller protocol v23 sends bounded live Assistant text and reasoning deltas when the browser already owns the exact preceding transcript revision. Every delta carries its stream epoch, revision, and UTF-8 coordinates; Flex deltas also carry the harness's authoritative transcript order. The browser applies only contiguous, correctly sized updates to the canonical transcript; a gap, stale owner, invalid coordinate, or queue overflow blocks further deltas from that epoch and requests authoritative session-detail hydration instead. Only adjacent compatible pending deltas may be coalesced, so interleaved updates retain their original order.
49
+
50
+ Streaming text is rendered without Markdown parsing. AGL refreshes the affected messages and enables normal Markdown rendering after the harness reports terminal state or authoritative hydration settles the transcript. This keeps long responses responsive without creating a second browser-side message graph.
51
+
46
52
  ## Requirements
47
53
 
48
54
  - Node.js 24 or newer.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: 'agl',
6
- version: '22.0.4',
6
+ version: '23.0.0',
7
7
  description: 'Agent Gateway Layer for OpenCode and FlexHarness sessions'
8
8
  }