agl 41.0.1 → 41.2.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 (87) hide show
  1. package/changelog.md +24 -0
  2. package/dist_serve/bundle.js +1448 -1448
  3. package/dist_serve/bundle.js.map +2 -2
  4. package/dist_ts/00_commitinfo_data.js +1 -1
  5. package/dist_ts/aglapi/aglapisurface.document.js +7 -3
  6. package/dist_ts/classes.authmodels.d.ts +15 -0
  7. package/dist_ts/classes.authmodels.js +78 -7
  8. package/dist_ts/classes.authstore.js +23 -6
  9. package/dist_ts/classes.cli.js +8 -3
  10. package/dist_ts/classes.controller.d.ts +13 -0
  11. package/dist_ts/classes.controller.js +51 -14
  12. package/dist_ts/classes.controllermanagement.d.ts +53 -6
  13. package/dist_ts/classes.controllermanagement.js +180 -72
  14. package/dist_ts/classes.inferencegateway.d.ts +6 -6
  15. package/dist_ts/classes.inferencegateway.js +28 -15
  16. package/dist_ts/classes.inferenceusage.d.ts +19 -7
  17. package/dist_ts/classes.inferenceusage.js +49 -13
  18. package/dist_ts/classes.inferenceusagetap.d.ts +15 -3
  19. package/dist_ts/classes.inferenceusagetap.js +16 -9
  20. package/dist_ts/classes.processinspection.d.ts +3 -1
  21. package/dist_ts/classes.processinspection.js +4 -2
  22. package/dist_ts/classes.proxycontrol.d.ts +22 -7
  23. package/dist_ts/classes.proxycontrol.js +5 -3
  24. package/dist_ts/classes.proxycontrolclient.d.ts +4 -3
  25. package/dist_ts/classes.proxycontrolclient.js +7 -5
  26. package/dist_ts/classes.proxydaemon.d.ts +6 -4
  27. package/dist_ts/classes.proxydaemon.js +42 -17
  28. package/dist_ts/classes.proxyleaseholder.d.ts +11 -2
  29. package/dist_ts/classes.proxyleaseholder.js +25 -2
  30. package/dist_ts/classes.proxystore.d.ts +3 -2
  31. package/dist_ts/classes.proxystore.js +5 -2
  32. package/dist_ts/classes.upgradecoordinator.d.ts +2 -1
  33. package/dist_ts/classes.upgradecoordinator.js +13 -10
  34. package/dist_ts/classes.upgradetransaction.d.ts +6 -0
  35. package/dist_ts/classes.upgradetransaction.js +38 -13
  36. package/dist_ts/classes.usagefeed.js +3 -2
  37. package/dist_ts/functions.controllermanagementsurface.d.ts +37 -0
  38. package/dist_ts/functions.controllermanagementsurface.js +110 -0
  39. package/dist_ts/functions.inferencecli.d.ts +6 -3
  40. package/dist_ts/functions.inferencecli.js +9 -5
  41. package/dist_ts/functions.inferencecliarguments.d.ts +1 -1
  42. package/dist_ts/functions.inferencecliarguments.js +19 -7
  43. package/dist_ts/functions.inferencelaunch.d.ts +30 -9
  44. package/dist_ts/functions.inferencelaunch.js +49 -23
  45. package/dist_ts/interfaces.auth.d.ts +14 -3
  46. package/dist_ts/interfaces.auth.js +4 -3
  47. package/dist_ts_interfaces/index.d.ts +1 -0
  48. package/dist_ts_interfaces/index.js +2 -1
  49. package/dist_ts_interfaces/interfaces.d.ts +6 -1
  50. package/dist_ts_interfaces/interfaces.js +2 -2
  51. package/dist_ts_interfaces/management.d.ts +33 -0
  52. package/dist_ts_interfaces/management.js +35 -0
  53. package/dist_ts_interfaces/metrics.d.ts +29 -7
  54. package/dist_ts_interfaces/metrics.js +14 -1
  55. package/package.json +6 -5
  56. package/readme.md +123 -28
  57. package/ts/00_commitinfo_data.ts +1 -1
  58. package/ts/aglapi/aglapisurface.document.ts +6 -2
  59. package/ts/classes.authmodels.ts +74 -5
  60. package/ts/classes.authstore.ts +24 -4
  61. package/ts/classes.cli.ts +9 -2
  62. package/ts/classes.controller.ts +98 -59
  63. package/ts/classes.controllermanagement.ts +284 -107
  64. package/ts/classes.inferencegateway.ts +31 -19
  65. package/ts/classes.inferenceusage.ts +58 -19
  66. package/ts/classes.inferenceusagetap.ts +27 -8
  67. package/ts/classes.processinspection.ts +2 -1
  68. package/ts/classes.proxycontrol.ts +25 -9
  69. package/ts/classes.proxycontrolclient.ts +7 -4
  70. package/ts/classes.proxydaemon.ts +43 -17
  71. package/ts/classes.proxyleaseholder.ts +36 -7
  72. package/ts/classes.proxystore.ts +8 -3
  73. package/ts/classes.upgradecoordinator.ts +20 -11
  74. package/ts/classes.upgradetransaction.ts +53 -2
  75. package/ts/classes.usagefeed.ts +2 -1
  76. package/ts/functions.controllermanagementsurface.ts +149 -0
  77. package/ts/functions.inferencecli.ts +15 -7
  78. package/ts/functions.inferencecliarguments.ts +16 -6
  79. package/ts/functions.inferencelaunch.ts +57 -23
  80. package/ts/interfaces.auth.ts +14 -3
  81. package/ts_interfaces/index.ts +1 -0
  82. package/ts_interfaces/interfaces.ts +6 -1
  83. package/ts_interfaces/management.ts +52 -0
  84. package/ts_interfaces/metrics.ts +34 -7
  85. package/ts_web/00_commitinfo_data.ts +1 -1
  86. package/ts_web/classes.controllersocketclient.ts +5 -2
  87. package/ts_web/elements.metricsboard.ts +68 -18
@@ -21,28 +21,42 @@ const claudeNativeLaunch = (optionsArg) => {
21
21
  } };
22
22
  };
23
23
  /**
24
- * Claude Code on a ChatGPT pool: the proxy's Anthropic Messages endpoint answered by the pool's models, the default model
25
- * for every model alias, the context window the catalog states for it, and the pool's models as the whole `/model`
26
- * picker. Its configuration lives in its own directory, never the host's, so the host's `settings.json` cannot route it
27
- * elsewhere; it sends nothing beyond its model requests: no experimental betas, no nonessential traffic, no attribution.
24
+ * The variables that put Claude Code on a ChatGPT pool: the proxy's Anthropic Messages endpoint and credential, the
25
+ * pool's default model for every model alias, the context window the catalog states for it, and nothing beyond its model
26
+ * requests: no experimental betas, no nonessential traffic, no attribution. `agl proxy run claude --provider openai` and a
27
+ * ChatGPT-pool confined run give Claude Code these alike.
28
28
  */
29
- export const claudeChatGptLaunch = (inputArg) => {
29
+ export const claudeChatGptEnvironment = (inputArg) => {
30
30
  const model = inputArg.models.find((entryArg) => entryArg.isDefault) ?? inputArg.models[0];
31
31
  if (!model)
32
32
  throw new Error('The ChatGPT pool offers no model Claude Code can run on.');
33
+ return {
34
+ ANTHROPIC_BASE_URL: inputArg.baseUrl,
35
+ ANTHROPIC_AUTH_TOKEN: inputArg.token,
36
+ ANTHROPIC_MODEL: model.modelId,
37
+ ANTHROPIC_DEFAULT_OPUS_MODEL: model.modelId,
38
+ ANTHROPIC_DEFAULT_SONNET_MODEL: model.modelId,
39
+ ANTHROPIC_DEFAULT_HAIKU_MODEL: model.modelId,
40
+ ...(model.contextWindow === undefined ? {} : { CLAUDE_CODE_MAX_CONTEXT_TOKENS: String(model.contextWindow) }),
41
+ CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: '1',
42
+ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: '1',
43
+ CLAUDE_CODE_ATTRIBUTION_HEADER: '0',
44
+ };
45
+ };
46
+ /** Every variable `claudeChatGptEnvironment` may set, the context window's included. */
47
+ const claudeChatGptVariables = ['ANTHROPIC_BASE_URL', 'ANTHROPIC_AUTH_TOKEN', 'ANTHROPIC_MODEL',
48
+ 'ANTHROPIC_DEFAULT_OPUS_MODEL', 'ANTHROPIC_DEFAULT_SONNET_MODEL', 'ANTHROPIC_DEFAULT_HAIKU_MODEL',
49
+ 'CLAUDE_CODE_MAX_CONTEXT_TOKENS', 'CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS', 'CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC',
50
+ 'CLAUDE_CODE_ATTRIBUTION_HEADER'];
51
+ /**
52
+ * Claude Code on a ChatGPT pool (`claudeChatGptEnvironment`), with the pool's models as the whole `/model` picker. Its
53
+ * configuration lives in its own directory, never the host's, so the host's `settings.json` cannot route it elsewhere.
54
+ */
55
+ export const claudeChatGptLaunch = (inputArg) => {
33
56
  return {
34
57
  environment: {
35
58
  CLAUDE_CONFIG_DIR: inputArg.configDirectory,
36
- ANTHROPIC_BASE_URL: inputArg.baseUrl,
37
- ANTHROPIC_AUTH_TOKEN: inputArg.token,
38
- ANTHROPIC_MODEL: model.modelId,
39
- ANTHROPIC_DEFAULT_OPUS_MODEL: model.modelId,
40
- ANTHROPIC_DEFAULT_SONNET_MODEL: model.modelId,
41
- ANTHROPIC_DEFAULT_HAIKU_MODEL: model.modelId,
42
- ...(model.contextWindow === undefined ? {} : { CLAUDE_CODE_MAX_CONTEXT_TOKENS: String(model.contextWindow) }),
43
- CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: '1',
44
- CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: '1',
45
- CLAUDE_CODE_ATTRIBUTION_HEADER: '0',
59
+ ...claudeChatGptEnvironment(inputArg),
46
60
  },
47
61
  args: ['--settings', JSON.stringify({
48
62
  modelPicker: {
@@ -125,11 +139,15 @@ export const inferenceHarnessLaunch = (optionsArg) => {
125
139
  * `aglProxyConfinedMountPoint` and Claude Code's settings for it added right after `run`, before the launcher's own
126
140
  * options and image. Claude Code inside reaches the proxy through the socket alone (`ANTHROPIC_UNIX_SOCKET`, which
127
141
  * Claude Code sends its API requests through as plain HTTP to `ANTHROPIC_BASE_URL`'s path), on the run's credential
128
- * (`ANTHROPIC_AUTH_TOKEN`), reads the pool's models from the proxy and sends nothing beyond its model requests. The
129
- * container gets each variable by name from the docker command's environment, so the credential never appears on a
130
- * command line; that environment drops every variable that would give Claude Code another login or route, so `-e NAME`
131
- * of one of them passes nothing. The mount is the socket's own directory, which holds nothing else and survives a proxy
132
- * restart, unlike a mount of the socket file. Only `docker run` and `docker container run` are taken.
142
+ * (`ANTHROPIC_AUTH_TOKEN`), and sends nothing beyond its model requests. On the Claude pool it reads the pool's models
143
+ * from the proxy; on the ChatGPT pool it gets the variables `agl proxy run claude --provider openai` gives it
144
+ * (`claudeChatGptEnvironment`: the pool's default model for every alias, its context window), but neither that command's
145
+ * configuration directory, which lies in the AGL home, nor its `/model` picker, an option of the container's command
146
+ * that the launcher does not touch. The container gets each variable by name from the docker command's environment, so
147
+ * the credential never appears on a command line; that environment drops every variable that would give Claude Code
148
+ * another login or route, and on the ChatGPT pool every model variable it sets, so `-e NAME` of one of them passes
149
+ * nothing. The mount is the socket's own directory, which holds nothing else and survives a proxy restart, unlike a
150
+ * mount of the socket file. Only `docker run` and `docker container run` are taken.
133
151
  */
134
152
  export const confinedDockerLaunch = (optionsArg) => {
135
153
  const [command, ...args] = optionsArg.args;
@@ -141,14 +159,22 @@ export const confinedDockerLaunch = (optionsArg) => {
141
159
  // `--mount` separates its fields with commas and reads quotes; a directory naming either cannot be passed safely.
142
160
  if (/[,"'\n]/u.test(directory))
143
161
  throw new Error(`The confined listener's directory ${directory} cannot be mounted: it holds a comma, quote or line break.`);
144
- const variables = {
162
+ const socket = `${aglProxyConfinedMountPoint}/${path.basename(optionsArg.socketPath)}`;
163
+ const variables = optionsArg.pool.provider === 'anthropic' ? {
145
164
  ...claudeProxyEnvironment(optionsArg.baseUrl),
146
- ANTHROPIC_UNIX_SOCKET: `${aglProxyConfinedMountPoint}/${path.basename(optionsArg.socketPath)}`,
165
+ ANTHROPIC_UNIX_SOCKET: socket,
147
166
  ANTHROPIC_AUTH_TOKEN: optionsArg.token,
167
+ } : {
168
+ ...claudeChatGptEnvironment({ baseUrl: `${optionsArg.baseUrl}/anthropic`, token: optionsArg.token,
169
+ models: optionsArg.pool.models }),
170
+ ANTHROPIC_UNIX_SOCKET: socket,
148
171
  };
149
172
  const environment = { ...optionsArg.environment };
150
173
  for (const name of claudeProxyReservedVariables)
151
174
  delete environment[name];
175
+ if (optionsArg.pool.provider === 'openai')
176
+ for (const name of claudeChatGptVariables)
177
+ delete environment[name];
152
178
  return {
153
179
  command,
154
180
  args: [...args.slice(0, runAt),
@@ -158,4 +184,4 @@ export const confinedDockerLaunch = (optionsArg) => {
158
184
  environment: { ...environment, ...variables },
159
185
  };
160
186
  };
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmluZmVyZW5jZWxhdW5jaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2Z1bmN0aW9ucy5pbmZlcmVuY2VsYXVuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFHbEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUMzSCxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBY3ZGOzs7OztHQUtHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFVBQTRFLEVBQXNELEVBQUU7SUFDOUosTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsRCxLQUFLLE1BQU0sSUFBSSxJQUFJLHNCQUFzQjtRQUFFLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLElBQUksVUFBVSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDekgsTUFBTSxJQUFJLEtBQUssQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxXQUFXO1lBQ2hFLEdBQUcsc0JBQXNCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUM3QyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsS0FBSztZ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
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmluZmVyZW5jZWxhdW5jaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2Z1bmN0aW9ucy5pbmZlcmVuY2VsYXVuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFHbEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUMzSCxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBY3ZGOzs7OztHQUtHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFVBQTRFLEVBQXNELEVBQUU7SUFDOUosTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsRCxLQUFLLE1BQU0sSUFBSSxJQUFJLHNCQUFzQjtRQUFFLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLElBQUksVUFBVSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDekgsTUFBTSxJQUFJLEtBQUssQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxXQUFXO1lBQ2hFLEdBQUcsc0JBQXNCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUM3QyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsS0FBSztZ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
@@ -6,9 +6,10 @@ export type TControllerAuthLifecycleState = 'setupRequired' | 'ready';
6
6
  export type TWebAuthnCeremonyKind = 'setup' | 'authentication';
7
7
  export type TWebAuthnCeremonyState = 'pending' | 'consumed';
8
8
  /**
9
- * Single source of the audit event vocabulary: the persisted-document
9
+ * Single source of the audit types this release writes: the persisted-document
10
10
  * assertion consumes this list at runtime, so a type added here is
11
- * automatically storable — the two can no longer drift apart.
11
+ * automatically storable with its type-specific checks — the two can no longer
12
+ * drift apart. Other well-formed types are a later release's and still read.
12
13
  */
13
14
  export declare const controllerAuditEventTypes: readonly ['controller.started', 'controller.stopped', 'setup.finish', 'authentication.finish', 'authentication.logout', 'temppassword.create', 'temppassword.login', 'auth.resume', 'auth.handoff', 'auth.signout', 'session.list', 'conversation.list', 'conversation.search', 'conversation.open', 'conversation.archive', 'conversation.reopen', 'session.read', 'session.auxiliary.read', 'session.model.update', 'session.mode.update', 'session.scratchpad.save', 'session.intelligence.ask', 'session.messages.page', 'session.message.read', 'session.create', 'session.delete', 'session.discard-empty', 'session.send', 'session.message', 'session.abort', 'session.harness.restart', 'opencode.restart', 'controller.restart', 'session.compaction.update', 'session.limitresume.update', 'session.promptqueue.release', 'session.heldprompt.release', 'session.pendingprompt.edit', 'session.pendingprompt.retract', 'session.rename', 'session.archive', 'session.yolo', 'session.builtin', 'slash.list', 'slash.execute', 'permission.reply', 'question.reply', 'project.list', 'project.create', 'project.remove', 'project.removal.retry', 'project.agentmessages.update', 'model.list', 'provider.list', 'provider.connection.list', 'provider.login.begin', 'authswitch.request', 'accounts.rename', 'accounts.maxusage', 'accounts.reserve.lift', 'accounts.apikey.add', 'accounts.spendlimit', 'accounts.remove', 'accounts.add', 'accounts.reauth', 'accounts.operation.cancel', 'accounts.preuse.start', 'accounts.preuse.cancel', 'accounts.claude.signin.start', 'accounts.claude.signin.cancel', 'accounts.claude.adopt', 'accounts.claude.release', 'accounts.claude.repair', 'accounts.codex.adopt', 'accounts.codex.release', 'provider.login.read', 'provider.login.cancel', 'provider.connection.logout', 'provider.connection.activate-opencode', 'provider.connection.ratelimits.read', 'provider.model.refresh.begin', 'provider.model.refresh.read', 'command.list', 'session.command', 'settings.read', 'settings.update', 'sessiongroups.read', 'sessiongroups.update', 'terminal.list', 'terminal.create', 'terminal.rename', 'terminal.remove', 'terminal.attach', 'resource.list', 'resource.create', 'resource.rename', 'resource.attach', 'resource.detach', 'resource.start', 'resource.stop', 'resource.retire', 'resource.workspace.base', 'resource.workspace.write', 'resource.workspace.mkdir', 'resource.workspace.remove', 'resource.workspace.rename', 'resource.workspace.copy', 'resource.workspace.reveal', 'configuration.target.bind', 'configuration.owner.issue', 'configuration.owner.revoke', 'configuration.state', 'configuration.master.get', 'configuration.master.save', 'configuration.project', 'configuration.review', 'configuration.apply', 'configuration.restore.review', 'configuration.restore', 'configuration.operation.retry', 'configuration.operation.recover', 'configuration.operation.abandon', 'resource.browser.operation', 'resource.browser.view.open', 'resource.browser.view.close', 'resource.browser.view.operate', 'resource.browser.paint.rearm'];
14
15
  export type TControllerAuditEventType = (typeof controllerAuditEventTypes)[number];
@@ -79,11 +80,16 @@ export interface ISetupAuthority {
79
80
  * BrowserRuntime qualifies it.
80
81
  */
81
82
  export type TControllerAuditSessionId = IControllerRuntimeId | plugins.browserRuntime.IBrowserClaudeSessionId;
83
+ /**
84
+ * A stored audit event. The audit log is shared with later releases, so a stored `type` is any audit type, also one
85
+ * this release does not know (a later release's, read back after a rollback). This release writes only its own types
86
+ * (`IRecordAuditEventInput`).
87
+ */
82
88
  export interface IControllerAuditEvent {
83
89
  id: string;
84
90
  controllerId: string;
85
91
  timestamp: Date;
86
- type: TControllerAuditEventType;
92
+ type: string;
87
93
  outcome: TControllerAuditOutcome;
88
94
  operationId?: string;
89
95
  peerId?: string;
@@ -93,6 +99,11 @@ export interface IControllerAuditEvent {
93
99
  /** The sender label an agent message declared (`session.message`). */
94
100
  senderLabel?: string;
95
101
  localCli?: IConfigurationLocalCliActor;
102
+ /**
103
+ * What a later release's type records beyond the envelope (bounded plain JSON). This release never writes or
104
+ * interprets it; it is declared so a rolled-back controller still reads and prunes such events.
105
+ */
106
+ details?: Record<string, unknown>;
96
107
  }
97
108
  export interface IControllerTempPasswordDocument {
98
109
  id: string;
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Single source of the audit event vocabulary: the persisted-document
2
+ * Single source of the audit types this release writes: the persisted-document
3
3
  * assertion consumes this list at runtime, so a type added here is
4
- * automatically storable — the two can no longer drift apart.
4
+ * automatically storable with its type-specific checks — the two can no longer
5
+ * drift apart. Other well-formed types are a later release's and still read.
5
6
  */
6
7
  export const controllerAuditEventTypes = [
7
8
  'controller.started',
@@ -141,4 +142,4 @@ export class AuthError extends Error {
141
142
  this.code = codeArg;
142
143
  }
143
144
  }
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvaW50ZXJmYWNlcy5hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLGNBQWM7SUFDZCx1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsYUFBYTtJQUNiLGNBQWM7SUFDZCxjQUFjO0lBQ2QsY0FBYztJQUNkLG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsY0FBYztJQUNkLHdCQUF3QjtJQUN4QixzQkFBc0I7SUFDdEIscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6QiwwQkFBMEI7SUFDMUIsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2QixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZix5QkFBeUI7SUFDekIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQiwyQkFBMkI7SUFDM0IsNEJBQTRCO0lBQzVCLDZCQUE2QjtJQUM3Qiw0QkFBNEI7SUFDNUIsNEJBQTRCO0lBQzVCLCtCQUErQjtJQUMvQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIsWUFBWTtJQUNaLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2Qiw4QkFBOEI7SUFDOUIsWUFBWTtJQUNaLGVBQWU7SUFDZiwwQkFBMEI7SUFDMUIsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLDJCQUEyQjtJQUMzQix1QkFBdUI7SUFDdkIsd0JBQXdCO0lBQ3hCLDhCQUE4QjtJQUM5QiwrQkFBK0I7SUFDL0Isb0hBQW9IO0lBQ3BILHVCQUF1QjtJQUN2Qix5QkFBeUI7SUFDekIsd0JBQXdCO0lBQ3hCLHNCQUFzQjtJQUN0Qix3QkFBd0I7SUFDeEIscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2Qiw0QkFBNEI7SUFDNUIsdUNBQXVDO0lBQ3ZDLHFDQUFxQztJQUNyQyw4QkFBOEI7SUFDOUIsNkJBQTZCO0lBQzdCLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixvQkFBb0I7SUFDcEIsc0JBQXNCO0lBQ3RCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBQzNCLHlCQUF5QjtJQUN6QiwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQiw0QkFBNEI7SUFDNUIscUJBQXFCO0lBQ3JCLDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsOEJBQThCO0lBQzlCLHVCQUF1QjtJQUN2QiwrQkFBK0I7SUFDL0IsaUNBQWlDO0lBQ2pDLGlDQUFpQztJQUNqQyw0QkFBNEI7SUFDNUIsNEJBQTRCO0lBQzVCLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsOEJBQThCO0NBQ3RCLENBQUM7QUE0QlgsTUFBTSxPQUFPLFNBQVUsU0FBUSxLQUFLO0lBQ2xCLElBQUksQ0FBaUI7SUFFckMsWUFBWSxPQUF1QixFQUFFLFVBQWtCLEVBQUUsVUFBeUI7UUFDaEYsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztJQUN0QixDQUFDO0NBQ0YifQ==
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvaW50ZXJmYWNlcy5hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUc7SUFDdkMsb0JBQW9CO0lBQ3BCLG9CQUFvQjtJQUNwQixjQUFjO0lBQ2QsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLGFBQWE7SUFDYixjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxtQkFBbUI7SUFDbkIscUJBQXFCO0lBQ3JCLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLHVCQUF1QjtJQUN2QixzQkFBc0I7SUFDdEIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixlQUFlO0lBQ2YseUJBQXlCO0lBQ3pCLGtCQUFrQjtJQUNsQixvQkFBb0I7SUFDcEIsMkJBQTJCO0lBQzNCLDRCQUE0QjtJQUM1Qiw2QkFBNkI7SUFDN0IsNEJBQTRCO0lBQzVCLDRCQUE0QjtJQUM1QiwrQkFBK0I7SUFDL0IsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWixlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsOEJBQThCO0lBQzlCLFlBQVk7SUFDWixlQUFlO0lBQ2YsMEJBQTBCO0lBQzFCLHNCQUFzQjtJQUN0QixvQkFBb0I7SUFDcEIsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQiwyQkFBMkI7SUFDM0IsdUJBQXVCO0lBQ3ZCLHdCQUF3QjtJQUN4Qiw4QkFBOEI7SUFDOUIsK0JBQStCO0lBQy9CLG9IQUFvSDtJQUNwSCx1QkFBdUI7SUFDdkIseUJBQXlCO0lBQ3pCLHdCQUF3QjtJQUN4QixzQkFBc0I7SUFDdEIsd0JBQXdCO0lBQ3hCLHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsNEJBQTRCO0lBQzVCLHVDQUF1QztJQUN2QyxxQ0FBcUM7SUFDckMsOEJBQThCO0lBQzlCLDZCQUE2QjtJQUM3QixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQix5QkFBeUI7SUFDekIsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0IsNEJBQTRCO0lBQzVCLHFCQUFxQjtJQUNyQiwwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLHVCQUF1QjtJQUN2QixzQkFBc0I7SUFDdEIscUJBQXFCO0lBQ3JCLDhCQUE4QjtJQUM5Qix1QkFBdUI7SUFDdkIsK0JBQStCO0lBQy9CLGlDQUFpQztJQUNqQyxpQ0FBaUM7SUFDakMsNEJBQTRCO0lBQzVCLDRCQUE0QjtJQUM1Qiw2QkFBNkI7SUFDN0IsK0JBQStCO0lBQy9CLDhCQUE4QjtDQUN0QixDQUFDO0FBNEJYLE1BQU0sT0FBTyxTQUFVLFNBQVEsS0FBSztJQUNsQixJQUFJLENBQWlCO0lBRXJDLFlBQVksT0FBdUIsRUFBRSxVQUFrQixFQUFFLFVBQXlCO1FBQ2hGLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGIn0=
@@ -9,6 +9,7 @@ export * from './functions.browserpaintcopy.js';
9
9
  export * from './devtools.js';
10
10
  export * from './requests.js';
11
11
  export * from './mcprequests.js';
12
+ export * from './management.js';
12
13
  export * from './codex.js';
13
14
  export * from './mcpworkspacerequests.js';
14
15
  export * from './mcpjobrequests.js';
@@ -9,6 +9,7 @@ export * from './functions.browserpaintcopy.js';
9
9
  export * from './devtools.js';
10
10
  export * from './requests.js';
11
11
  export * from './mcprequests.js';
12
+ export * from './management.js';
12
13
  export * from './codex.js';
13
14
  export * from './mcpworkspacerequests.js';
14
15
  export * from './mcpjobrequests.js';
@@ -29,4 +30,4 @@ export * from './requests.driver.js';
29
30
  export * from './sessionfeed.js';
30
31
  export * from './nativesessions.js';
31
32
  export * from './metrics.js';
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsY0FBYyxDQUFDIn0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUMifQ==
@@ -1,6 +1,6 @@
1
1
  import type { ILiveBrowserDialog, ILiveBrowserDialogResponse, ILiveVideoOffer, ILiveVideoDescription, ILiveVideoStatistics, ILiveVideoAcceleration } from '@push.rocks/smartbrowser/web';
2
2
  import type { IControllerBrowserPaintSource, IControllerBrowserPresentationState, TControllerBrowserPaintAvailability, TControllerBrowserPaintTermination } from './browserpaint.js';
3
- export declare const controllerProtocolVersion: 46;
3
+ export declare const controllerProtocolVersion: 47;
4
4
  export declare const controllerUpgradeManagementVersion: 2;
5
5
  export declare const controllerPackageName: 'agl';
6
6
  /** The systemd user unit `agl service install` writes; a controller it runs reports it in its status. */
@@ -274,6 +274,11 @@ export interface IControllerStatus {
274
274
  packageVersion: string;
275
275
  protocolVersion: typeof controllerProtocolVersion;
276
276
  upgradeManagementVersion: number;
277
+ /**
278
+ * The protocol of the controller's loopback management endpoint (`controllerManagementProtocolVersion`); absent
279
+ * from a controller older than the endpoint, which is reached over its socket.
280
+ */
281
+ managementProtocolVersion?: number;
277
282
  controllerPid: number;
278
283
  processGroupId: number;
279
284
  processFingerprint: string;
@@ -1,4 +1,4 @@
1
- export const controllerProtocolVersion = 46;
1
+ export const controllerProtocolVersion = 47;
2
2
  export const controllerUpgradeManagementVersion = 2;
3
3
  export const controllerPackageName = 'agl';
4
4
  /** The systemd user unit `agl service install` writes; a controller it runs reports it in its status. */
@@ -210,4 +210,4 @@ export const controllerEventTypes = [
210
210
  'sessionfeed.changed',
211
211
  'usage.changed',
212
212
  ];
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxFQUFXLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FBVSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEtBQWMsQ0FBQztBQUNwRCx5R0FBeUc7QUFDekcsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsd0JBQWlDLENBQUM7QUFDM0UsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsRUFBRSxDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLEdBQUcsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzNEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FDMUMsOERBQXVFLENBQUM7QUFDMUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbEUsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdkUsTUFBTSxD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
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxFQUFXLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FBVSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEtBQWMsQ0FBQztBQUNwRCx5R0FBeUc7QUFDekcsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsd0JBQWlDLENBQUM7QUFDM0UsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsRUFBRSxDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLEdBQUcsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzNEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FDMUMsOERBQXVFLENBQUM7QUFDMUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbEUsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdkUsTUFBTSxD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
@@ -0,0 +1,33 @@
1
+ import type { IReq_ControllerStatus } from './requests.status.js';
2
+ import type { IReq_ControllerUpgradeFinalize, IReq_ControllerUpgradeLaunch, IReq_ControllerUpgradePrepareBegin } from './requests.upgrade.js';
3
+ /**
4
+ * The controller's loopback management endpoint, on the controller's own port: one TypedRequest envelope
5
+ * (`method`, `request`, `response`, `correlation`, `requestInstanceId`) per HTTP POST of `application/json`, with
6
+ * `Host: 127.0.0.1:<port>`. The local CLI and the upgrade worker read the status and drive an upgrade through it,
7
+ * so an upgrade worker of one release can finalize the controller of the next whatever transport the browser
8
+ * speaks. Every later release keeps this path, these methods, their request and response shapes and the envelope
9
+ * (`test/test.controllermanagementwire.node.ts` pins the bytes an AGL 41 client sends and what it accepts).
10
+ */
11
+ export declare const controllerManagementTypedRequestPath: '/management/typedrequest';
12
+ /**
13
+ * The protocol of this loopback management endpoint: its path, methods, envelope and their request and response
14
+ * shapes. 1 is the endpoint as its first release ships it; only an incompatible change to that contract raises it.
15
+ * A release declares it twice: as `controllerManagementProtocolVersion` in its `package.json`, which a client reads
16
+ * before the release's controller runs, and as `managementProtocolVersion` in that controller's status. A client
17
+ * reaches a controller over this endpoint only when it declares 1 or more, and over the controller socket otherwise
18
+ * (an older release has no endpoint).
19
+ *
20
+ * It is not `controllerUpgradeManagementVersion` (2), the upgrade contract: every upgrade worker requires exactly
21
+ * that number in its target's `package.json` and status, and upgrade transactions record it, so it cannot move
22
+ * without breaking the online upgrade of every earlier release. This number says only how the management methods
23
+ * are reached.
24
+ */
25
+ export declare const controllerManagementProtocolVersion: 1;
26
+ /** The methods the endpoint answers; every other method is refused before it is routed. */
27
+ export declare const controllerManagementMethods: readonly ['controller.status', 'controller.upgrade.launch', 'controller.upgrade.prepare.begin', 'controller.upgrade.finalize'];
28
+ export type TControllerManagementMethod = typeof controllerManagementMethods[number];
29
+ export type TControllerManagementTypedRequest = IReq_ControllerStatus | IReq_ControllerUpgradeLaunch | IReq_ControllerUpgradePrepareBegin | IReq_ControllerUpgradeFinalize;
30
+ /** A management request carries a token, a version and a mode at most. */
31
+ export declare const controllerManagementRequestMaximumBodyBytes: number;
32
+ /** The status document with every harness profile and upgrade blocker it may report. */
33
+ export declare const controllerManagementResponseMaximumBytes: number;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The controller's loopback management endpoint, on the controller's own port: one TypedRequest envelope
3
+ * (`method`, `request`, `response`, `correlation`, `requestInstanceId`) per HTTP POST of `application/json`, with
4
+ * `Host: 127.0.0.1:<port>`. The local CLI and the upgrade worker read the status and drive an upgrade through it,
5
+ * so an upgrade worker of one release can finalize the controller of the next whatever transport the browser
6
+ * speaks. Every later release keeps this path, these methods, their request and response shapes and the envelope
7
+ * (`test/test.controllermanagementwire.node.ts` pins the bytes an AGL 41 client sends and what it accepts).
8
+ */
9
+ export const controllerManagementTypedRequestPath = '/management/typedrequest';
10
+ /**
11
+ * The protocol of this loopback management endpoint: its path, methods, envelope and their request and response
12
+ * shapes. 1 is the endpoint as its first release ships it; only an incompatible change to that contract raises it.
13
+ * A release declares it twice: as `controllerManagementProtocolVersion` in its `package.json`, which a client reads
14
+ * before the release's controller runs, and as `managementProtocolVersion` in that controller's status. A client
15
+ * reaches a controller over this endpoint only when it declares 1 or more, and over the controller socket otherwise
16
+ * (an older release has no endpoint).
17
+ *
18
+ * It is not `controllerUpgradeManagementVersion` (2), the upgrade contract: every upgrade worker requires exactly
19
+ * that number in its target's `package.json` and status, and upgrade transactions record it, so it cannot move
20
+ * without breaking the online upgrade of every earlier release. This number says only how the management methods
21
+ * are reached.
22
+ */
23
+ export const controllerManagementProtocolVersion = 1;
24
+ /** The methods the endpoint answers; every other method is refused before it is routed. */
25
+ export const controllerManagementMethods = [
26
+ 'controller.status',
27
+ 'controller.upgrade.launch',
28
+ 'controller.upgrade.prepare.begin',
29
+ 'controller.upgrade.finalize',
30
+ ];
31
+ /** A management request carries a token, a version and a mode at most. */
32
+ export const controllerManagementRequestMaximumBodyBytes = 16 * 1024;
33
+ /** The status document with every harness profile and upgrade blocker it may report. */
34
+ export const controllerManagementResponseMaximumBytes = 1024 * 1024;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsMEJBQW1DLENBQUM7QUFFeEY7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsQ0FBVSxDQUFDO0FBRTlELDJGQUEyRjtBQUMzRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRztJQUN6QyxtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLGtDQUFrQztJQUNsQyw2QkFBNkI7Q0FDckIsQ0FBQztBQVVYLDBFQUEwRTtBQUMxRSxNQUFNLENBQUMsTUFBTSwyQ0FBMkMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3JFLHdGQUF3RjtBQUN4RixNQUFNLENBQUMsTUFBTSx3Q0FBd0MsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDIn0=
@@ -8,8 +8,26 @@ export type TControllerUsageSpan = 'minute' | 'hour';
8
8
  export type TControllerUsageWindow = '1h' | '24h' | '7d';
9
9
  export declare const controllerUsageWindows: readonly TControllerUsageWindow[];
10
10
  export type TControllerUsageProvider = 'anthropic' | 'openai';
11
+ /**
12
+ * The tokens of the answers one bucket counts. Input counts only the tokens read neither from nor written to the
13
+ * provider's prompt cache. `cacheReadTokens` and `cacheWriteTokens` add up the cache reads and writes the answers
14
+ * stated; `cacheReadUnknownCalls` and `cacheWriteUnknownCalls` (each at most `calls`) count the answers that did not
15
+ * state theirs, which read or wrote an unknown number, not none. With either above 0 the stated sum is not the whole
16
+ * count, and `controllerUsageTotalIsLowerBound` of the bucket's provider says whether its total is then one. A bucket
17
+ * stored before these were counted reads with all its answers unknown.
18
+ */
19
+ export interface IControllerUsageCounts {
20
+ /** The answers counted. */
21
+ calls: number;
22
+ inputTokens: number;
23
+ outputTokens: number;
24
+ cacheReadTokens: number;
25
+ cacheWriteTokens: number;
26
+ cacheReadUnknownCalls: number;
27
+ cacheWriteUnknownCalls: number;
28
+ }
11
29
  /** One span of one model's tokens on one harness, account and session; never a prompt, a credential or an answer. */
12
- export interface IControllerUsageBucket {
30
+ export interface IControllerUsageBucket extends IControllerUsageCounts {
13
31
  /** The bucket's digest: SHA-256 of its span, start and dimensions. */
14
32
  id: string;
15
33
  span: TControllerUsageSpan;
@@ -23,13 +41,17 @@ export interface IControllerUsageBucket {
23
41
  accountId: string;
24
42
  /** The session id the client sent; `null` when it sent none. */
25
43
  session: string | null;
26
- /** The answers counted. */
27
- calls: number;
28
- inputTokens: number;
29
- outputTokens: number;
30
- cacheReadTokens: number;
31
- cacheWriteTokens: number;
32
44
  }
45
+ /**
46
+ * Whether a provider's answers state their input without the tokens read from or written to the cache, so that a bucket
47
+ * of that provider with unknown cache counts (`cacheReadUnknownCalls` or `cacheWriteUnknownCalls` above 0) has total
48
+ * tokens (input, output, cache reads and cache writes) that are a lower bound of what its answers used. An Anthropic
49
+ * account's answers leave the cache out of their input, so a cache count such an answer did not state is counted
50
+ * nowhere. An OpenAI account's answers state every input token in their input count, the Messages answers the proxy
51
+ * translates from them included, so their unknown cache counts lie inside the input and their total is exact. Every
52
+ * provider must be named here: a new one fails the type check instead of reading as exact.
53
+ */
54
+ export declare const controllerUsageTotalIsLowerBound: Readonly<Record<TControllerUsageProvider, boolean>>;
33
55
  /** The span each window reads and how many spans it shows, the current one included. */
34
56
  export declare const controllerUsageWindowSpans: Record<TControllerUsageWindow, {
35
57
  span: TControllerUsageSpan;
@@ -1,4 +1,17 @@
1
1
  export const controllerUsageWindows = ['1h', '24h', '7d'];
2
+ /**
3
+ * Whether a provider's answers state their input without the tokens read from or written to the cache, so that a bucket
4
+ * of that provider with unknown cache counts (`cacheReadUnknownCalls` or `cacheWriteUnknownCalls` above 0) has total
5
+ * tokens (input, output, cache reads and cache writes) that are a lower bound of what its answers used. An Anthropic
6
+ * account's answers leave the cache out of their input, so a cache count such an answer did not state is counted
7
+ * nowhere. An OpenAI account's answers state every input token in their input count, the Messages answers the proxy
8
+ * translates from them included, so their unknown cache counts lie inside the input and their total is exact. Every
9
+ * provider must be named here: a new one fails the type check instead of reading as exact.
10
+ */
11
+ export const controllerUsageTotalIsLowerBound = {
12
+ anthropic: true,
13
+ openai: false,
14
+ };
2
15
  const minuteMs = 60_000;
3
16
  const hourMs = 60 * minuteMs;
4
17
  /** The span each window reads and how many spans it shows, the current one included. */
@@ -32,4 +45,4 @@ export const applyControllerUsageDelta = (viewArg, deltaArg) => {
32
45
  viewArg.revision = deltaArg.revision;
33
46
  return 'applied';
34
47
  };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBc0MsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBMEI3RixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFDeEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQztBQUU3Qix3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQWtGO0lBQ3ZILElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtJQUNuQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7SUFDbEMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtDQUN0QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXlDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFFOUcsd0dBQXdHO0FBQ3hHLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsU0FBaUMsRUFBRSxNQUFjLEVBQVUsRUFBRTtJQUN0RyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNyRSxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBVyxDQUFDO0FBcUJyRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE9BQTZCLEVBQUUsUUFBK0IsRUFBNEIsRUFBRTtJQUNwSSxJQUFJLE9BQU8sSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU07V0FDNUYsUUFBUSxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUM7UUFBRSxPQUFPLFlBQVksQ0FBQztJQUNyRSxLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPO1FBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RSxPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDckMsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDIn0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBc0MsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBdUM3Rjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUF3RDtJQUNuRyxTQUFTLEVBQUUsSUFBSTtJQUNmLE1BQU0sRUFBRSxLQUFLO0NBQ2QsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUN4QixNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDO0FBRTdCLHdGQUF3RjtBQUN4RixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBa0Y7SUFDdkgsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO0lBQ25DLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtJQUNsQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO0NBQ3RDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBeUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUU5Ryx3R0FBd0c7QUFDeEcsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxTQUFpQyxFQUFFLE1BQWMsRUFBVSxFQUFFO0lBQ3RHLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3JFLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFXLENBQUM7QUFxQnJGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsT0FBNkIsRUFBRSxRQUErQixFQUE0QixFQUFFO0lBQ3BJLElBQUksT0FBTyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTTtXQUM1RixRQUFRLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQztRQUFFLE9BQU8sWUFBWSxDQUFDO0lBQ3JFLEtBQUssTUFBTSxNQUFNLElBQUksUUFBUSxDQUFDLE9BQU87UUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlFLE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNyQyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUMifQ==
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "agl",
3
- "version": "41.0.1",
3
+ "version": "41.2.0",
4
4
  "controllerUpgradeManagementVersion": 2,
5
+ "controllerManagementProtocolVersion": 1,
5
6
  "private": false,
6
7
  "description": "Agent Gateway Layer for OpenCode, FlexHarness, and Codex sessions",
7
8
  "main": "dist_ts/index.js",
@@ -33,10 +34,10 @@
33
34
  "@lossless.org/objectstorage": "10.7.1",
34
35
  "@modelcontextprotocol/sdk": "1.30.0",
35
36
  "@modelprofile.com/catalog": "^1.1.0",
36
- "@modelprofile.com/flexharness": "16.4.0",
37
- "@modelprofile.com/flexharness-agent": "16.4.0",
38
- "@modelprofile.com/flexharness-models": "16.4.0",
39
- "@modelprofile.com/flexharness-providers": "16.4.0",
37
+ "@modelprofile.com/flexharness": "17.0.0",
38
+ "@modelprofile.com/flexharness-agent": "17.0.0",
39
+ "@modelprofile.com/flexharness-models": "17.0.0",
40
+ "@modelprofile.com/flexharness-providers": "17.0.0",
40
41
  "@modelprofile.com/mcp-crossharness": "5.9.0",
41
42
  "@modelprofile.com/mcp-system": "3.1.0",
42
43
  "@opencode-ai/sdk": "1.18.15",