agl 22.0.4 → 24.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.
Files changed (44) hide show
  1. package/changelog.md +21 -0
  2. package/dist_serve/bundle.js +2418 -2408
  3. package/dist_serve/bundle.js.map +1 -0
  4. package/dist_ts/00_commitinfo_data.js +1 -1
  5. package/dist_ts/classes.authstore.js +2 -2
  6. package/dist_ts/classes.browserresourcehost.d.ts +1 -0
  7. package/dist_ts/classes.browserresourcehost.js +7 -1
  8. package/dist_ts/classes.controller.d.ts +37 -5
  9. package/dist_ts/classes.controller.js +1491 -249
  10. package/dist_ts/classes.flexservice.d.ts +5 -0
  11. package/dist_ts/classes.flexservice.js +131 -4
  12. package/dist_ts/classes.opencodeclient.d.ts +2 -0
  13. package/dist_ts/classes.opencodeclient.js +23 -1
  14. package/dist_ts/classes.validation.d.ts +9 -1
  15. package/dist_ts/classes.validation.js +62 -7
  16. package/dist_ts/interfaces.flexipc.d.ts +18 -1
  17. package/dist_ts/interfaces.flexipc.js +42 -8
  18. package/dist_ts_interfaces/browsertransport.d.ts +72 -0
  19. package/dist_ts_interfaces/browsertransport.js +47 -0
  20. package/dist_ts_interfaces/index.d.ts +1 -0
  21. package/dist_ts_interfaces/index.js +2 -1
  22. package/dist_ts_interfaces/interfaces.d.ts +42 -7
  23. package/dist_ts_interfaces/interfaces.js +5 -3
  24. package/dist_ts_interfaces/requests.d.ts +20 -21
  25. package/package.json +7 -7
  26. package/readme.md +12 -2
  27. package/ts/00_commitinfo_data.ts +1 -1
  28. package/ts/classes.authstore.ts +1 -1
  29. package/ts/classes.browserresourcehost.ts +7 -0
  30. package/ts/classes.controller.ts +1960 -305
  31. package/ts/classes.flexservice.ts +132 -2
  32. package/ts/classes.opencodeclient.ts +19 -0
  33. package/ts/classes.validation.ts +77 -6
  34. package/ts/interfaces.flexipc.ts +65 -7
  35. package/ts_interfaces/browsertransport.ts +126 -0
  36. package/ts_interfaces/index.ts +1 -0
  37. package/ts_interfaces/interfaces.ts +46 -11
  38. package/ts_interfaces/requests.ts +23 -30
  39. package/ts_web/00_commitinfo_data.ts +1 -1
  40. package/ts_web/classes.browserviewtransport.ts +532 -0
  41. package/ts_web/classes.controllersocketclient.ts +119 -29
  42. package/ts_web/elements.harnesscontrollerapp.ts +1727 -287
  43. package/ts_web/index.ts +1 -0
  44. package/ts_web/plugins.ts +2 -0
@@ -1,10 +1,9 @@
1
- import * as plugins from './plugins.js';
2
-
3
- export const controllerProtocolVersion = 22 as const;
1
+ export const controllerProtocolVersion = 24 as const;
4
2
  export const controllerUpgradeManagementVersion = 2 as const;
5
3
  export const controllerPackageName = 'agl' as const;
6
4
  export const controllerMaxToolEventBytes = 48 * 1024;
7
5
  export const controllerMaxLiveMessageEventBytes = 128 * 1024;
6
+ export const controllerLiveMessageDeltaTargetBytes = 16 * 1024;
8
7
  export const controllerInitialMessageBundleLimit = 20;
9
8
  export const controllerMaximumMessageBundles = 200;
10
9
  export const controllerMaximumTranscriptBytes = 512 * 1024;
@@ -222,6 +221,8 @@ export interface IControllerBrowserTabState {
222
221
  }
223
222
 
224
223
  export interface IControllerBrowserViewState {
224
+ /** Monotonic for the complete lifetime of one browser view. */
225
+ revision: number;
225
226
  status: 'stopped' | 'starting' | 'running' | 'stopping';
226
227
  activeTabId: string | null;
227
228
  viewportRevision: number;
@@ -230,9 +231,7 @@ export interface IControllerBrowserViewState {
230
231
  lastError?: { code: string; message: string; fatal: boolean; tabId?: string };
231
232
  }
232
233
 
233
- export interface IControllerBrowserFrame<
234
- TDirection extends plugins.typedrequestInterfaces.TVirtualStreamDirection,
235
- > {
234
+ export interface IControllerBrowserFrameMetadata {
236
235
  tabId: string;
237
236
  sequence: number;
238
237
  generation: number;
@@ -251,14 +250,16 @@ export interface IControllerBrowserFrame<
251
250
  scrollOffsetY: number;
252
251
  timestamp?: number;
253
252
  };
254
- dataStream: plugins.typedrequestInterfaces.TVirtualStream<TDirection>;
253
+ dataByteLength: number;
255
254
  }
256
255
 
257
- export type TControllerBrowserViewEvent<
258
- TDirection extends plugins.typedrequestInterfaces.TVirtualStreamDirection,
259
- > =
256
+ export interface IControllerBrowserFrame extends Omit<IControllerBrowserFrameMetadata, 'dataByteLength'> {
257
+ data: Uint8Array;
258
+ }
259
+
260
+ export type TControllerBrowserViewEvent =
260
261
  | { type: 'state'; state: IControllerBrowserViewState }
261
- | { type: 'frame'; frame: IControllerBrowserFrame<TDirection> }
262
+ | { type: 'frame'; frame: IControllerBrowserFrame }
262
263
  | { type: 'error'; error: { code: string; message: string; fatal: boolean; tabId?: string } };
263
264
 
264
265
  export interface IControllerBrowserFrameAcknowledgement {
@@ -475,6 +476,34 @@ export interface IControllerTextUpdate {
475
476
  streamEpoch: number;
476
477
  }
477
478
 
479
+ export interface IControllerReasoningDelta {
480
+ sessionId: IControllerRuntimeId;
481
+ messageId: IControllerRuntimeId;
482
+ partId: IControllerRuntimeId;
483
+ delta: string;
484
+ baseTextUtf8Bytes: number;
485
+ textUtf8Bytes: number;
486
+ /** Authoritative source coordinates; required for Flex and absent for OpenCode. */
487
+ order?: IControllerTranscriptOrder;
488
+ sourceUpdatedAt: number;
489
+ revision: number;
490
+ streamEpoch: number;
491
+ }
492
+
493
+ export interface IControllerTextDelta {
494
+ sessionId: IControllerRuntimeId;
495
+ messageId: IControllerRuntimeId;
496
+ partId: IControllerRuntimeId;
497
+ delta: string;
498
+ baseTextUtf8Bytes: number;
499
+ textUtf8Bytes: number;
500
+ /** Authoritative source coordinates; required for Flex and absent for OpenCode. */
501
+ order?: IControllerTranscriptOrder;
502
+ sourceUpdatedAt: number;
503
+ revision: number;
504
+ streamEpoch: number;
505
+ }
506
+
478
507
  export interface IControllerToolStreamCursor {
479
508
  streamEpoch: number;
480
509
  revision: number;
@@ -788,7 +817,9 @@ export const controllerEventTypes = [
788
817
  'session.history.changed',
789
818
  'session.tool.updated',
790
819
  'session.reasoning.updated',
820
+ 'session.reasoning.delta',
791
821
  'session.text.updated',
822
+ 'session.text.delta',
792
823
  'permissions.changed',
793
824
  'harness.changed',
794
825
  'projects.changed',
@@ -813,8 +844,12 @@ export interface IControllerEvent {
813
844
  toolExecution?: IControllerToolExecution;
814
845
  /** Present only on a live OpenCode or Flex reasoning snapshot. */
815
846
  reasoningUpdate?: IControllerReasoningUpdate;
847
+ /** Present only on an exact live OpenCode or Flex reasoning delta. */
848
+ reasoningDelta?: IControllerReasoningDelta;
816
849
  /** Present only on a live OpenCode or Flex text snapshot. */
817
850
  textUpdate?: IControllerTextUpdate;
851
+ /** Present only on an exact live OpenCode or Flex text delta. */
852
+ textDelta?: IControllerTextDelta;
818
853
  /** Present only on a session.draft.changed event. */
819
854
  sessionDraftUpdate?: IControllerSessionDraftUpdate;
820
855
  /** Ordered harness stream barrier carried by harness.changed. */
@@ -10,8 +10,6 @@ import type {
10
10
  TControllerResource,
11
11
  TControllerResourceKind,
12
12
  IControllerBrowserViewState,
13
- TControllerBrowserViewEvent,
14
- TControllerBrowserViewOperation,
15
13
  IControllerProvider,
16
14
  IControllerProviderAccountRateLimits,
17
15
  IControllerProviderConnection,
@@ -927,6 +925,9 @@ export interface IReq_ControllerBrowserViewOpen extends plugins.typedrequestInte
927
925
  viewId: string;
928
926
  resourceId: string;
929
927
  attachmentRevision: number;
928
+ streamGeneration: number;
929
+ events: plugins.typedrequestInterfaces.TVirtualStream<'receive'>;
930
+ operations: plugins.typedrequestInterfaces.TVirtualStream<'send'>;
930
931
  state: IControllerBrowserViewState;
931
932
  };
932
933
  }
@@ -936,41 +937,34 @@ export interface IReq_ControllerBrowserViewActivate extends plugins.typedrequest
936
937
  IReq_ControllerBrowserViewActivate
937
938
  > {
938
939
  method: 'controller.browser.view.activate';
939
- request: { viewId: string };
940
+ request: { viewId: string; streamGeneration: number };
940
941
  response: { activated: true };
941
942
  }
942
943
 
943
- export interface IReq_ControllerBrowserViewClose extends plugins.typedrequestInterfaces.implementsTR<
944
- plugins.typedrequestInterfaces.ITypedRequest,
945
- IReq_ControllerBrowserViewClose
946
- > {
947
- method: 'controller.browser.view.close';
948
- request: { viewId: string };
949
- response: { closed: true };
950
- }
951
-
952
- export interface IReq_ControllerBrowserViewOperate extends plugins.typedrequestInterfaces.implementsTR<
953
- plugins.typedrequestInterfaces.ITypedRequest,
954
- IReq_ControllerBrowserViewOperate
955
- > {
956
- method: 'controller.browser.view.operate';
957
- request: { viewId: string; operation: TControllerBrowserViewOperation };
958
- response: { accepted: boolean; state: IControllerBrowserViewState };
959
- }
960
-
961
- /** Server to client push for one exact human browser view. */
962
- export interface IReq_ControllerBrowserViewEvent extends plugins.typedrequestInterfaces.implementsTR<
944
+ export interface IReq_ControllerBrowserViewRecover extends plugins.typedrequestInterfaces.implementsTR<
963
945
  plugins.typedrequestInterfaces.ITypedRequest,
964
- IReq_ControllerBrowserViewEvent
946
+ IReq_ControllerBrowserViewRecover
965
947
  > {
966
- method: 'controller.browser.view.event';
967
- request: {
948
+ method: 'controller.browser.view.recover';
949
+ request: { viewId: string; expectedStreamGeneration: number };
950
+ response: {
968
951
  viewId: string;
969
952
  resourceId: string;
970
953
  attachmentRevision: number;
971
- event: TControllerBrowserViewEvent<'send'>;
954
+ streamGeneration: number;
955
+ events: plugins.typedrequestInterfaces.TVirtualStream<'receive'>;
956
+ operations: plugins.typedrequestInterfaces.TVirtualStream<'send'>;
957
+ state: IControllerBrowserViewState;
972
958
  };
973
- response: Record<string, never>;
959
+ }
960
+
961
+ export interface IReq_ControllerBrowserViewClose extends plugins.typedrequestInterfaces.implementsTR<
962
+ plugins.typedrequestInterfaces.ITypedRequest,
963
+ IReq_ControllerBrowserViewClose
964
+ > {
965
+ method: 'controller.browser.view.close';
966
+ request: { viewId: string; expectedStreamGeneration: number };
967
+ response: { closed: boolean };
974
968
  }
975
969
 
976
970
  export interface IReq_ControllerTerminalCreate extends plugins.typedrequestInterfaces.implementsTR<
@@ -1171,8 +1165,8 @@ export type TControllerRequest =
1171
1165
  | IReq_ControllerResourceStop
1172
1166
  | IReq_ControllerBrowserViewOpen
1173
1167
  | IReq_ControllerBrowserViewActivate
1168
+ | IReq_ControllerBrowserViewRecover
1174
1169
  | IReq_ControllerBrowserViewClose
1175
- | IReq_ControllerBrowserViewOperate
1176
1170
  | IReq_ControllerTerminalList
1177
1171
  | IReq_ControllerTerminalCreate
1178
1172
  | IReq_ControllerTerminalRename
@@ -1182,5 +1176,4 @@ export type TControllerRequest =
1182
1176
  | IReq_ControllerTerminalInput
1183
1177
  | IReq_ControllerTerminalResize
1184
1178
  | IReq_ControllerTerminalOutput
1185
- | IReq_ControllerBrowserViewEvent
1186
1179
  | IReq_ControllerEvent;
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: 'agl',
6
- version: '22.0.4',
6
+ version: '24.0.0',
7
7
  description: 'Agent Gateway Layer for OpenCode and FlexHarness sessions'
8
8
  }