@adecore/agents 0.38.0 → 0.40.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 (170) hide show
  1. package/dist/async.d.ts +5 -0
  2. package/dist/async.js +13 -5
  3. package/dist/chat/acp-protocol.js +3 -5
  4. package/dist/chat/chat-core.d.ts +1 -0
  5. package/dist/chat/chat-core.js +9 -2
  6. package/dist/chat/chat-process.d.ts +1 -0
  7. package/dist/chat/chat-process.js +1 -1
  8. package/dist/chat/chat-session.d.ts +2 -0
  9. package/dist/chat/chat-session.js +9 -10
  10. package/dist/chat/claude-protocol.js +1 -6
  11. package/dist/chat/claude-transcript.js +1 -3
  12. package/dist/chat/codex-protocol.js +1 -6
  13. package/dist/chat/projector.js +1 -3
  14. package/dist/chat/request-summary.js +1 -3
  15. package/dist/coded-error.js +1 -5
  16. package/dist/context/argv.js +1 -2
  17. package/dist/context/verb.js +1 -3
  18. package/dist/error-text.d.ts +1 -0
  19. package/dist/error-text.js +4 -0
  20. package/dist/fields.d.ts +3 -0
  21. package/dist/fields.js +12 -0
  22. package/dist/fs.d.ts +1 -0
  23. package/dist/fs.js +8 -4
  24. package/dist/lineage.js +11 -5
  25. package/dist/messages/notice-store.js +3 -4
  26. package/dist/providers/accounts/acp-account.js +3 -20
  27. package/dist/providers/accounts/service.d.ts +1 -2
  28. package/dist/providers/accounts/service.js +5 -9
  29. package/dist/providers/accounts/status.js +1 -3
  30. package/dist/providers/acp-agent-state.js +1 -3
  31. package/dist/providers/claude.js +0 -1
  32. package/dist/providers/codex.js +0 -1
  33. package/dist/providers/detect.js +1 -1
  34. package/dist/providers/shell-commands.js +1 -2
  35. package/dist/run-process.js +1 -3
  36. package/dist/skills.d.ts +1 -1
  37. package/dist/skills.js +5 -8
  38. package/dist/tasks/background-limit.js +3 -2
  39. package/dist/tasks/task-coordinator.js +11 -17
  40. package/dist/testing/watch.js +0 -1
  41. package/dist/usage/limits/monitor.js +1 -2
  42. package/dist/usage/readers/claude.js +3 -10
  43. package/dist/usage/readers/codex.js +2 -9
  44. package/dist/usage/readers/grok.js +3 -10
  45. package/dist/usage/readers/host-log.js +3 -10
  46. package/dist/usage/record.d.ts +2 -0
  47. package/dist/usage/record.js +13 -0
  48. package/package.json +6 -6
  49. package/src/async.ts +23 -5
  50. package/src/chat/acp-backend.ts +121 -0
  51. package/src/chat/acp-protocol.ts +172 -6
  52. package/src/chat/attachment-store.ts +21 -0
  53. package/src/chat/backend.ts +0 -2
  54. package/src/chat/bookmark-store.ts +23 -0
  55. package/src/chat/chat-core.ts +218 -7
  56. package/src/chat/chat-log.ts +19 -0
  57. package/src/chat/chat-process.ts +52 -1
  58. package/src/chat/chat-session.ts +414 -13
  59. package/src/chat/chat-store.ts +50 -0
  60. package/src/chat/chat-title.ts +9 -0
  61. package/src/chat/claude-backend.ts +50 -0
  62. package/src/chat/claude-protocol.ts +155 -8
  63. package/src/chat/claude-title.ts +10 -0
  64. package/src/chat/claude-transcript.ts +47 -4
  65. package/src/chat/codex-backend.ts +131 -0
  66. package/src/chat/codex-protocol.ts +180 -8
  67. package/src/chat/codex-thread.ts +23 -0
  68. package/src/chat/composer-preferences.ts +6 -0
  69. package/src/chat/context-breakdown.ts +11 -0
  70. package/src/chat/delta-coalescer.ts +8 -0
  71. package/src/chat/external-sessions.ts +28 -0
  72. package/src/chat/generated-image.ts +25 -0
  73. package/src/chat/index.ts +5 -0
  74. package/src/chat/input.ts +13 -0
  75. package/src/chat/json-rpc-transport.ts +28 -0
  76. package/src/chat/limit-resume.ts +13 -0
  77. package/src/chat/projector.ts +160 -4
  78. package/src/chat/readable-text.ts +3 -0
  79. package/src/chat/request-summary.ts +18 -4
  80. package/src/chat/subagent-projection.ts +3 -0
  81. package/src/chat/subagent-reader.ts +76 -0
  82. package/src/chat/subagent-settlement.ts +24 -0
  83. package/src/chat/thread-search.ts +13 -0
  84. package/src/chat/thread.ts +31 -0
  85. package/src/chat/ui-queries.ts +122 -0
  86. package/src/chat/ui-replies.ts +34 -0
  87. package/src/chat/visual-store.ts +49 -0
  88. package/src/chat/wake-chat.ts +3 -0
  89. package/src/client-sinks.ts +2 -0
  90. package/src/coded-error.ts +1 -5
  91. package/src/context/argv.ts +18 -2
  92. package/src/context/index.ts +1 -0
  93. package/src/context/refusal.ts +3 -0
  94. package/src/context/verb.ts +32 -4
  95. package/src/coordination/index.ts +10 -0
  96. package/src/error-text.ts +7 -0
  97. package/src/fields.ts +14 -0
  98. package/src/fs.ts +20 -4
  99. package/src/host/agent-host.ts +20 -0
  100. package/src/host/environment.ts +6 -0
  101. package/src/host/handlers.ts +18 -0
  102. package/src/host/memory-port.ts +4 -0
  103. package/src/host/wiring.ts +10 -0
  104. package/src/index.ts +1 -0
  105. package/src/lineage.ts +24 -5
  106. package/src/messages/deliver-message.ts +6 -0
  107. package/src/messages/deliver-notice.ts +13 -0
  108. package/src/messages/notice-store.ts +16 -4
  109. package/src/modes.ts +1 -0
  110. package/src/outbox/outbox-worker.ts +31 -0
  111. package/src/outbox/outbox.ts +5 -0
  112. package/src/providers/accounts/accounts.ts +36 -0
  113. package/src/providers/accounts/acp-account.ts +22 -27
  114. package/src/providers/accounts/launch.ts +4 -0
  115. package/src/providers/accounts/service.ts +110 -12
  116. package/src/providers/accounts/shadow-home.ts +10 -0
  117. package/src/providers/accounts/status.ts +13 -4
  118. package/src/providers/accounts/store.ts +25 -0
  119. package/src/providers/accounts/variables.ts +11 -1
  120. package/src/providers/acp-agent-state.ts +24 -3
  121. package/src/providers/acp-provider.ts +5 -0
  122. package/src/providers/acp-usage-log.ts +2 -0
  123. package/src/providers/catalog.ts +17 -0
  124. package/src/providers/claude.ts +10 -1
  125. package/src/providers/codex-rules.ts +3 -0
  126. package/src/providers/codex.ts +2 -1
  127. package/src/providers/detect.ts +6 -1
  128. package/src/providers/provider.ts +1 -1
  129. package/src/providers/registry.ts +18 -2
  130. package/src/providers/shell-commands.ts +37 -2
  131. package/src/record-directory.ts +19 -0
  132. package/src/run-process.ts +24 -3
  133. package/src/serializer.ts +3 -0
  134. package/src/skills.ts +73 -10
  135. package/src/tasks/background-limit.ts +9 -2
  136. package/src/tasks/end-children.ts +9 -0
  137. package/src/tasks/give-task.ts +8 -0
  138. package/src/tasks/task-coordinator.ts +81 -17
  139. package/src/tasks/task-store.ts +28 -0
  140. package/src/tasks/waiting-child.ts +21 -0
  141. package/src/tasks/wake-parent.ts +26 -0
  142. package/src/tasks/wiring.ts +22 -0
  143. package/src/testing/accounts.ts +2 -0
  144. package/src/testing/fake-acp-capture.ts +16 -0
  145. package/src/testing/fake-acp.ts +66 -0
  146. package/src/testing/fake-claude.ts +177 -0
  147. package/src/testing/fake-cli.ts +29 -0
  148. package/src/testing/fake-codex.ts +122 -0
  149. package/src/testing/manual-clock.ts +2 -0
  150. package/src/testing/watch.ts +7 -1
  151. package/src/title-file.ts +12 -0
  152. package/src/usage/accounts.ts +6 -0
  153. package/src/usage/aggregate.ts +19 -0
  154. package/src/usage/exchange.ts +12 -0
  155. package/src/usage/index-file.ts +27 -0
  156. package/src/usage/limits/monitor.ts +31 -3
  157. package/src/usage/limits/normalize.ts +30 -0
  158. package/src/usage/limits/probe.ts +17 -0
  159. package/src/usage/pricing.ts +35 -0
  160. package/src/usage/projects.ts +8 -0
  161. package/src/usage/readers/claude.ts +12 -9
  162. package/src/usage/readers/codex.ts +40 -8
  163. package/src/usage/readers/grok.ts +17 -9
  164. package/src/usage/readers/host-log.ts +9 -9
  165. package/src/usage/record.ts +22 -0
  166. package/src/usage/roots.ts +6 -0
  167. package/src/usage/scanner.ts +61 -0
  168. package/src/usage/usage-service.ts +14 -0
  169. package/src/watch-seam.ts +8 -0
  170. package/src/windows-command.ts +12 -0
@@ -44,40 +44,49 @@ export interface InProcessCli {
44
44
  export function inProcess(cli: FakeCli): InProcessCli {
45
45
  const started: StartedFake[] = [];
46
46
  let nextPid = 900_000;
47
+
47
48
  const spawn = (options: ChatSpawnOptions): ChatProcess => {
48
49
  const encoder = new TextEncoder();
49
50
  const chunks: Uint8Array[] = [];
50
51
  let stderrController: ReadableStreamDefaultController<Uint8Array> | null = null;
52
+
51
53
  const stderr = new ReadableStream<Uint8Array>({
52
54
  start: (controller) => {
53
55
  stderrController = controller;
54
56
  }
55
57
  });
58
+
56
59
  const deferred: Array<() => void> = [];
57
60
  let ended = false;
58
61
  let exitCode: number | null = null;
59
62
  let inputClosed = false;
60
63
  let pending = '';
61
64
  let wake: (() => void) | null = null;
65
+
62
66
  let settleExited: (code: number | null) => void = () => undefined;
67
+
63
68
  const exited = new Promise<number | null>((resolve) => {
64
69
  settleExited = resolve;
65
70
  });
71
+
66
72
  const nudge = (): void => {
67
73
  const waiting = wake;
68
74
  wake = null;
69
75
  waiting?.();
70
76
  };
77
+
71
78
  const exit = (code: number | null): void => {
72
79
  if (ended) {
73
80
  return;
74
81
  }
82
+
75
83
  ended = true;
76
84
  exitCode = code;
77
85
  // A pipe closes with the process that held it.
78
86
  stderrController?.close();
79
87
  nudge();
80
88
  };
89
+
81
90
  const program = cli({
82
91
  argv: options.command.slice(1),
83
92
  cwd: options.cwd,
@@ -85,6 +94,7 @@ export function inProcess(cli: FakeCli): InProcessCli {
85
94
  if (ended) {
86
95
  return;
87
96
  }
97
+
88
98
  chunks.push(encoder.encode(`${JSON.stringify(frame)}\n`));
89
99
  nudge();
90
100
  },
@@ -98,6 +108,7 @@ export function inProcess(cli: FakeCli): InProcessCli {
98
108
  deferred.push(work);
99
109
  }
100
110
  });
111
+
101
112
  const stdout = new ReadableStream<Uint8Array>(
102
113
  {
103
114
  pull: async (controller) => {
@@ -106,11 +117,15 @@ export function inProcess(cli: FakeCli): InProcessCli {
106
117
  wake = resolve;
107
118
  });
108
119
  }
120
+
109
121
  const chunk = chunks.shift();
122
+
110
123
  if (chunk) {
111
124
  controller.enqueue(chunk);
125
+
112
126
  return;
113
127
  }
128
+
114
129
  controller.close();
115
130
  options.onExit(exitCode);
116
131
  settleExited(exitCode);
@@ -118,21 +133,26 @@ export function inProcess(cli: FakeCli): InProcessCli {
118
133
  },
119
134
  { highWaterMark: 0 }
120
135
  );
136
+
121
137
  const stdin = {
122
138
  write: (chunk: string): number => {
123
139
  if (ended || inputClosed) {
124
140
  return 0;
125
141
  }
142
+
126
143
  pending += chunk;
127
144
  let newline = pending.indexOf('\n');
145
+
128
146
  while (newline >= 0 && !ended) {
129
147
  const line = pending.slice(0, newline);
130
148
  pending = pending.slice(newline + 1);
131
149
  newline = pending.indexOf('\n');
150
+
132
151
  if (line.trim() !== '') {
133
152
  program.onLine(line);
134
153
  }
135
154
  }
155
+
136
156
  return chunk.length;
137
157
  },
138
158
  flush: (): number => 0,
@@ -140,9 +160,11 @@ export function inProcess(cli: FakeCli): InProcessCli {
140
160
  end: (): number => {
141
161
  inputClosed = true;
142
162
  exit(0);
163
+
143
164
  return 0;
144
165
  }
145
166
  };
167
+
146
168
  started.push({
147
169
  argv: options.command.slice(1),
148
170
  runLater: () => {
@@ -153,6 +175,7 @@ export function inProcess(cli: FakeCli): InProcessCli {
153
175
  crash: (code) => exit(code),
154
176
  exited
155
177
  });
178
+
156
179
  return {
157
180
  pid: nextPid++,
158
181
  stdin,
@@ -162,6 +185,7 @@ export function inProcess(cli: FakeCli): InProcessCli {
162
185
  kill: () => exit(null)
163
186
  };
164
187
  };
188
+
165
189
  return { spawn, started };
166
190
  }
167
191
 
@@ -181,19 +205,24 @@ export async function runOverStdio(cli: FakeCli): Promise<void> {
181
205
  setImmediate(work);
182
206
  }
183
207
  });
208
+
184
209
  const decoder = new TextDecoder();
185
210
  let buffered = '';
211
+
186
212
  for await (const chunk of process.stdin as AsyncIterable<Uint8Array>) {
187
213
  buffered += decoder.decode(chunk, { stream: true });
188
214
  let newline = buffered.indexOf('\n');
215
+
189
216
  while (newline >= 0) {
190
217
  const line = buffered.slice(0, newline);
191
218
  buffered = buffered.slice(newline + 1);
192
219
  newline = buffered.indexOf('\n');
220
+
193
221
  if (line.trim() !== '') {
194
222
  program.onLine(line);
195
223
  }
196
224
  }
197
225
  }
226
+
198
227
  process.exit(0);
199
228
  }