@multiplayer-app/agent 0.1.8 → 0.1.10

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 (232) hide show
  1. package/README.md +106 -0
  2. package/dist/agent/definition.d.ts +22 -0
  3. package/dist/agent/definition.d.ts.map +1 -0
  4. package/dist/agent/definition.js +3 -0
  5. package/dist/agent/definition.js.map +1 -0
  6. package/dist/agent/definition.test.d.ts +2 -0
  7. package/dist/agent/definition.test.d.ts.map +1 -0
  8. package/dist/agent/definition.test.js +40 -0
  9. package/dist/agent/definition.test.js.map +1 -0
  10. package/dist/agent/profiles/coding.d.ts +4 -0
  11. package/dist/agent/profiles/coding.d.ts.map +1 -0
  12. package/dist/agent/profiles/coding.js +17 -0
  13. package/dist/agent/profiles/coding.js.map +1 -0
  14. package/dist/agent/profiles/index.d.ts +4 -0
  15. package/dist/agent/profiles/index.d.ts.map +1 -0
  16. package/dist/agent/profiles/index.js +9 -0
  17. package/dist/agent/profiles/index.js.map +1 -0
  18. package/dist/agent/profiles/research.d.ts +4 -0
  19. package/dist/agent/profiles/research.d.ts.map +1 -0
  20. package/dist/agent/profiles/research.js +43 -0
  21. package/dist/agent/profiles/research.js.map +1 -0
  22. package/dist/agent/turn-runner.d.ts +37 -0
  23. package/dist/agent/turn-runner.d.ts.map +1 -0
  24. package/dist/agent/turn-runner.js +94 -0
  25. package/dist/agent/turn-runner.js.map +1 -0
  26. package/dist/agent/turn-runner.test.d.ts +2 -0
  27. package/dist/agent/turn-runner.test.d.ts.map +1 -0
  28. package/dist/agent/turn-runner.test.js +181 -0
  29. package/dist/agent/turn-runner.test.js.map +1 -0
  30. package/dist/index.d.ts +11 -6
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +18 -10
  33. package/dist/index.js.map +1 -1
  34. package/dist/models/attribution.d.ts.map +1 -0
  35. package/dist/models/attribution.js.map +1 -0
  36. package/dist/{model.d.ts → models/resolve-model.d.ts} +2 -2
  37. package/dist/models/resolve-model.d.ts.map +1 -0
  38. package/dist/{model.js → models/resolve-model.js} +1 -1
  39. package/dist/models/resolve-model.js.map +1 -0
  40. package/dist/models/usage.d.ts +7 -0
  41. package/dist/models/usage.d.ts.map +1 -0
  42. package/dist/models/usage.js +13 -0
  43. package/dist/models/usage.js.map +1 -0
  44. package/dist/{git-sync.d.ts → persistence/git-sync.d.ts} +1 -1
  45. package/dist/persistence/git-sync.d.ts.map +1 -0
  46. package/dist/persistence/git-sync.js.map +1 -0
  47. package/dist/persistence/git-sync.test.d.ts.map +1 -0
  48. package/dist/{git-sync.test.js → persistence/git-sync.test.js} +2 -2
  49. package/dist/persistence/git-sync.test.js.map +1 -0
  50. package/dist/{session-storage-sync.d.ts → persistence/snapshot-sync.d.ts} +2 -2
  51. package/dist/persistence/snapshot-sync.d.ts.map +1 -0
  52. package/dist/{session-storage-sync.js → persistence/snapshot-sync.js} +1 -1
  53. package/dist/persistence/snapshot-sync.js.map +1 -0
  54. package/dist/persistence/snapshot-sync.test.d.ts +2 -0
  55. package/dist/persistence/snapshot-sync.test.d.ts.map +1 -0
  56. package/dist/{session-storage-sync.test.js → persistence/snapshot-sync.test.js} +3 -3
  57. package/dist/persistence/snapshot-sync.test.js.map +1 -0
  58. package/dist/persistence/workspace.d.ts +17 -0
  59. package/dist/persistence/workspace.d.ts.map +1 -0
  60. package/dist/persistence/workspace.js +26 -0
  61. package/dist/persistence/workspace.js.map +1 -0
  62. package/dist/persistence/workspace.test.d.ts +2 -0
  63. package/dist/persistence/workspace.test.d.ts.map +1 -0
  64. package/dist/persistence/workspace.test.js +38 -0
  65. package/dist/persistence/workspace.test.js.map +1 -0
  66. package/dist/research/extraction-tool.d.ts +6 -0
  67. package/dist/research/extraction-tool.d.ts.map +1 -0
  68. package/dist/research/extraction-tool.js +67 -0
  69. package/dist/research/extraction-tool.js.map +1 -0
  70. package/dist/research/extraction-tool.test.d.ts +2 -0
  71. package/dist/research/extraction-tool.test.d.ts.map +1 -0
  72. package/dist/research/extraction-tool.test.js +100 -0
  73. package/dist/research/extraction-tool.test.js.map +1 -0
  74. package/dist/research/filingramp/attachment-tools.d.ts +4 -0
  75. package/dist/research/filingramp/attachment-tools.d.ts.map +1 -0
  76. package/dist/research/filingramp/attachment-tools.js +99 -0
  77. package/dist/research/filingramp/attachment-tools.js.map +1 -0
  78. package/dist/research/filingramp/document-search-tool.d.ts +4 -0
  79. package/dist/research/filingramp/document-search-tool.d.ts.map +1 -0
  80. package/dist/research/filingramp/document-search-tool.js +173 -0
  81. package/dist/research/filingramp/document-search-tool.js.map +1 -0
  82. package/dist/research/filingramp/filing-detail-tool.d.ts +4 -0
  83. package/dist/research/filingramp/filing-detail-tool.d.ts.map +1 -0
  84. package/dist/research/filingramp/filing-detail-tool.js +114 -0
  85. package/dist/research/filingramp/filing-detail-tool.js.map +1 -0
  86. package/dist/research/filingramp/filing-search-tools.d.ts +4 -0
  87. package/dist/research/filingramp/filing-search-tools.d.ts.map +1 -0
  88. package/dist/research/filingramp/filing-search-tools.js +207 -0
  89. package/dist/research/filingramp/filing-search-tools.js.map +1 -0
  90. package/dist/research/filingramp/shared.d.ts +48 -0
  91. package/dist/research/filingramp/shared.d.ts.map +1 -0
  92. package/dist/research/filingramp/shared.js +58 -0
  93. package/dist/research/filingramp/shared.js.map +1 -0
  94. package/dist/research/filingramp-client.d.ts +1 -1
  95. package/dist/research/filingramp-client.d.ts.map +1 -1
  96. package/dist/research/filingramp-tools.d.ts +3 -8
  97. package/dist/research/filingramp-tools.d.ts.map +1 -1
  98. package/dist/research/filingramp-tools.js +14 -565
  99. package/dist/research/filingramp-tools.js.map +1 -1
  100. package/dist/research/filingramp-tools.test.js +45 -2
  101. package/dist/research/filingramp-tools.test.js.map +1 -1
  102. package/dist/research/prompt.d.ts +1 -1
  103. package/dist/research/prompt.d.ts.map +1 -1
  104. package/dist/research/scope.d.ts +1 -1
  105. package/dist/research/scope.d.ts.map +1 -1
  106. package/dist/runtime/cli.d.ts.map +1 -0
  107. package/dist/{cli.js → runtime/cli.js} +3 -3
  108. package/dist/runtime/cli.js.map +1 -0
  109. package/dist/{config.d.ts → runtime/config.d.ts} +1 -1
  110. package/dist/runtime/config.d.ts.map +1 -0
  111. package/dist/{config.js → runtime/config.js} +1 -1
  112. package/dist/runtime/config.js.map +1 -0
  113. package/dist/{runtime.d.ts → runtime/index.d.ts} +2 -2
  114. package/dist/runtime/index.d.ts.map +1 -0
  115. package/dist/{runtime.js → runtime/index.js} +7 -7
  116. package/dist/runtime/index.js.map +1 -0
  117. package/dist/runtime/lambda-microvm.d.ts +3 -0
  118. package/dist/runtime/lambda-microvm.d.ts.map +1 -0
  119. package/dist/{lambda-microvm-entrypoint.js → runtime/lambda-microvm.js} +4 -4
  120. package/dist/runtime/lambda-microvm.js.map +1 -0
  121. package/dist/runtime/lifecycle.test.d.ts.map +1 -0
  122. package/dist/{lifecycle.test.js → runtime/lifecycle.test.js} +5 -5
  123. package/dist/runtime/lifecycle.test.js.map +1 -0
  124. package/dist/session/checkpoint-timer.test.d.ts.map +1 -0
  125. package/dist/{checkpoint-timer.test.js → session/checkpoint-timer.test.js} +8 -8
  126. package/dist/session/checkpoint-timer.test.js.map +1 -0
  127. package/dist/session/conversation.d.ts +15 -0
  128. package/dist/session/conversation.d.ts.map +1 -0
  129. package/dist/session/conversation.js +61 -0
  130. package/dist/session/conversation.js.map +1 -0
  131. package/dist/session/conversation.test.d.ts +2 -0
  132. package/dist/session/conversation.test.d.ts.map +1 -0
  133. package/dist/session/conversation.test.js +53 -0
  134. package/dist/session/conversation.test.js.map +1 -0
  135. package/dist/session/idle-checkpoint.test.d.ts.map +1 -0
  136. package/dist/{idle-checkpoint.test.js → session/idle-checkpoint.test.js} +8 -4
  137. package/dist/session/idle-checkpoint.test.js.map +1 -0
  138. package/dist/session/index.d.ts +7 -0
  139. package/dist/session/index.d.ts.map +1 -0
  140. package/dist/session/index.js +16 -0
  141. package/dist/session/index.js.map +1 -0
  142. package/dist/{session.d.ts → session/runtime.d.ts} +20 -16
  143. package/dist/session/runtime.d.ts.map +1 -0
  144. package/dist/session/runtime.js +251 -0
  145. package/dist/session/runtime.js.map +1 -0
  146. package/dist/session/runtime.test.d.ts +2 -0
  147. package/dist/session/runtime.test.d.ts.map +1 -0
  148. package/dist/session/runtime.test.js +201 -0
  149. package/dist/session/runtime.test.js.map +1 -0
  150. package/dist/session/tool-context.d.ts +12 -0
  151. package/dist/session/tool-context.d.ts.map +1 -0
  152. package/dist/session/tool-context.js +3 -0
  153. package/dist/session/tool-context.js.map +1 -0
  154. package/dist/session/tools.d.ts +6 -0
  155. package/dist/session/tools.d.ts.map +1 -0
  156. package/dist/session/tools.js +97 -0
  157. package/dist/session/tools.js.map +1 -0
  158. package/dist/session/tools.test.d.ts +2 -0
  159. package/dist/session/tools.test.d.ts.map +1 -0
  160. package/dist/session/tools.test.js +55 -0
  161. package/dist/session/tools.test.js.map +1 -0
  162. package/dist/task/loop.d.ts +6 -0
  163. package/dist/task/loop.d.ts.map +1 -0
  164. package/dist/{loop.js → task/loop.js} +6 -6
  165. package/dist/task/loop.js.map +1 -0
  166. package/dist/transport/link.d.ts.map +1 -0
  167. package/dist/transport/link.js.map +1 -0
  168. package/dist/transport/protocol.d.ts.map +1 -0
  169. package/dist/transport/protocol.js.map +1 -0
  170. package/dist/transport/protocol.test.d.ts.map +1 -0
  171. package/dist/transport/protocol.test.js.map +1 -0
  172. package/dist/{report.d.ts → transport/reporter.d.ts} +1 -1
  173. package/dist/transport/reporter.d.ts.map +1 -0
  174. package/dist/{report.js → transport/reporter.js} +1 -1
  175. package/dist/transport/reporter.js.map +1 -0
  176. package/package.json +11 -11
  177. package/dist/attribution.d.ts.map +0 -1
  178. package/dist/attribution.js.map +0 -1
  179. package/dist/checkpoint-timer.test.d.ts.map +0 -1
  180. package/dist/checkpoint-timer.test.js.map +0 -1
  181. package/dist/cli.d.ts.map +0 -1
  182. package/dist/cli.js.map +0 -1
  183. package/dist/config.d.ts.map +0 -1
  184. package/dist/config.js.map +0 -1
  185. package/dist/git-sync.d.ts.map +0 -1
  186. package/dist/git-sync.js.map +0 -1
  187. package/dist/git-sync.test.d.ts.map +0 -1
  188. package/dist/git-sync.test.js.map +0 -1
  189. package/dist/idle-checkpoint.test.d.ts.map +0 -1
  190. package/dist/idle-checkpoint.test.js.map +0 -1
  191. package/dist/lambda-microvm-entrypoint.d.ts +0 -3
  192. package/dist/lambda-microvm-entrypoint.d.ts.map +0 -1
  193. package/dist/lambda-microvm-entrypoint.js.map +0 -1
  194. package/dist/lifecycle.test.d.ts.map +0 -1
  195. package/dist/lifecycle.test.js.map +0 -1
  196. package/dist/link.d.ts.map +0 -1
  197. package/dist/link.js.map +0 -1
  198. package/dist/loop.d.ts +0 -6
  199. package/dist/loop.d.ts.map +0 -1
  200. package/dist/loop.js.map +0 -1
  201. package/dist/model.d.ts.map +0 -1
  202. package/dist/model.js.map +0 -1
  203. package/dist/protocol.d.ts.map +0 -1
  204. package/dist/protocol.js.map +0 -1
  205. package/dist/protocol.test.d.ts.map +0 -1
  206. package/dist/protocol.test.js.map +0 -1
  207. package/dist/report.d.ts.map +0 -1
  208. package/dist/report.js.map +0 -1
  209. package/dist/runtime.d.ts.map +0 -1
  210. package/dist/runtime.js.map +0 -1
  211. package/dist/session-storage-sync.d.ts.map +0 -1
  212. package/dist/session-storage-sync.js.map +0 -1
  213. package/dist/session-storage-sync.test.d.ts +0 -2
  214. package/dist/session-storage-sync.test.d.ts.map +0 -1
  215. package/dist/session-storage-sync.test.js.map +0 -1
  216. package/dist/session.d.ts.map +0 -1
  217. package/dist/session.js +0 -512
  218. package/dist/session.js.map +0 -1
  219. /package/dist/{attribution.d.ts → models/attribution.d.ts} +0 -0
  220. /package/dist/{attribution.js → models/attribution.js} +0 -0
  221. /package/dist/{git-sync.js → persistence/git-sync.js} +0 -0
  222. /package/dist/{git-sync.test.d.ts → persistence/git-sync.test.d.ts} +0 -0
  223. /package/dist/{cli.d.ts → runtime/cli.d.ts} +0 -0
  224. /package/dist/{lifecycle.test.d.ts → runtime/lifecycle.test.d.ts} +0 -0
  225. /package/dist/{checkpoint-timer.test.d.ts → session/checkpoint-timer.test.d.ts} +0 -0
  226. /package/dist/{idle-checkpoint.test.d.ts → session/idle-checkpoint.test.d.ts} +0 -0
  227. /package/dist/{link.d.ts → transport/link.d.ts} +0 -0
  228. /package/dist/{link.js → transport/link.js} +0 -0
  229. /package/dist/{protocol.d.ts → transport/protocol.d.ts} +0 -0
  230. /package/dist/{protocol.js → transport/protocol.js} +0 -0
  231. /package/dist/{protocol.test.d.ts → transport/protocol.test.d.ts} +0 -0
  232. /package/dist/{protocol.test.js → transport/protocol.test.js} +0 -0
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_fs_1 = require("node:fs");
8
+ const node_os_1 = __importDefault(require("node:os"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const node_test_1 = require("node:test");
11
+ const index_1 = require("./index");
12
+ const runtime_1 = require("./runtime");
13
+ const conversation_1 = require("./conversation");
14
+ function deferred() {
15
+ let resolve;
16
+ const promise = new Promise((done) => {
17
+ resolve = done;
18
+ });
19
+ return { promise, resolve };
20
+ }
21
+ function completed(text = 'Answer') {
22
+ return { status: 'completed', text, partialText: text, askedUser: false, messages: [{ role: 'assistant', content: text }] };
23
+ }
24
+ async function fixture(t, options = {}) {
25
+ const dir = await node_fs_1.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), 'agent-runtime-'));
26
+ const events = [];
27
+ const calls = [];
28
+ const checkpoints = [];
29
+ let handle;
30
+ const config = {
31
+ sessionId: 'test', mode: 'session', profile: 'coding', workspaceDir: dir,
32
+ model: 'unused', extractionModel: 'unused', provider: {}, mcpConnections: [], tokenBudget: options.tokenBudget,
33
+ };
34
+ const runtime = new runtime_1.SessionRuntime(config, {
35
+ send: (event) => events.push(event), onCommand: (handler) => { handle = handler; },
36
+ async ready() { }, async close() { },
37
+ }, {
38
+ turnRunner: { async run(input) {
39
+ calls.push(input);
40
+ return options.run ? options.run(input) : completed();
41
+ } },
42
+ persistence: {
43
+ dir,
44
+ async restore() { return false; },
45
+ async checkpoint(reason) {
46
+ var _a;
47
+ checkpoints.push(reason);
48
+ await ((_a = options.checkpoint) === null || _a === void 0 ? void 0 : _a.call(options, reason, dir));
49
+ return { kind: 'snapshot', hash: 'snapshot-hash' };
50
+ },
51
+ },
52
+ });
53
+ t.after(async () => {
54
+ await runtime.stop();
55
+ await node_fs_1.promises.rm(dir, { recursive: true, force: true });
56
+ });
57
+ await runtime.start();
58
+ const send = async (messageId, text = messageId) => handle({ type: 'message', messageId, text });
59
+ const flush = async () => handle({ type: 'checkpoint', requestId: 'flush', waitForTurn: true });
60
+ return { runtime, events, calls, checkpoints, dir, send, flush };
61
+ }
62
+ (0, node_test_1.it)('preserves SessionAgent as an alias for SessionRuntime', () => {
63
+ strict_1.default.equal(index_1.SessionAgent, runtime_1.SessionRuntime);
64
+ });
65
+ (0, node_test_1.it)('queues messages behind durable completion and waits for accepted turns before acknowledging a checkpoint', async (t) => {
66
+ var _a;
67
+ const entered = deferred();
68
+ const release = deferred();
69
+ let first = true;
70
+ const { send, flush, calls, events, checkpoints, dir } = await fixture(t, {
71
+ checkpoint: async (reason, workspace) => {
72
+ var _a;
73
+ if (!first)
74
+ return;
75
+ first = false;
76
+ strict_1.default.equal(reason, 'checkpoint: turn finished');
77
+ strict_1.default.deepEqual((_a = (await (0, conversation_1.readConversation)(workspace))) === null || _a === void 0 ? void 0 : _a.messages.map((message) => message.role), ['user', 'assistant']);
78
+ entered.resolve();
79
+ await release.promise;
80
+ },
81
+ });
82
+ await send('first');
83
+ await entered.promise;
84
+ try {
85
+ await send('second');
86
+ strict_1.default.equal(calls.length, 1);
87
+ strict_1.default.equal(events.some((event) => event.type === 'done'), false);
88
+ }
89
+ finally {
90
+ release.resolve();
91
+ }
92
+ await flush();
93
+ strict_1.default.deepEqual(calls.map((call) => call.messageId), ['first', 'second']);
94
+ strict_1.default.deepEqual(events.filter((event) => event.type === 'done').map((event) => event.messageId), ['first', 'second']);
95
+ strict_1.default.deepEqual(checkpoints, ['checkpoint: turn finished', 'checkpoint: turn finished', 'checkpoint: requested']);
96
+ strict_1.default.equal((_a = (await (0, conversation_1.readConversation)(dir))) === null || _a === void 0 ? void 0 : _a.messages.length, 4);
97
+ strict_1.default.ok(events.filter((event) => event.type === 'checkpointed').every((event) => event.commit === undefined), 'snapshot hashes are not Git commits');
98
+ });
99
+ (0, node_test_1.it)('continues draining the queue after a budget rejection and persists the extended budget', async (t) => {
100
+ const started = deferred();
101
+ const release = deferred();
102
+ const { send, flush, calls, events, dir } = await fixture(t, {
103
+ tokenBudget: 10,
104
+ run: async (input) => {
105
+ if (input.messageId === 'first') {
106
+ started.resolve();
107
+ await release.promise;
108
+ }
109
+ input.recordUsage({ inputTokens: 5, outputTokens: 5, totalTokens: 10 });
110
+ return completed();
111
+ },
112
+ });
113
+ await send('first');
114
+ await started.promise;
115
+ try {
116
+ await send('rejected', 'Explain more');
117
+ await send('continued', 'continue');
118
+ }
119
+ finally {
120
+ release.resolve();
121
+ }
122
+ await flush();
123
+ strict_1.default.deepEqual(calls.map((call) => call.messageId), ['first', 'continued']);
124
+ strict_1.default.ok(events.some((event) => { var _a; return event.type === 'done' && event.messageId === 'rejected' && ((_a = event.summary) === null || _a === void 0 ? void 0 : _a.includes('budget is used up')); }));
125
+ const saved = await (0, conversation_1.readConversation)(dir);
126
+ strict_1.default.equal(saved === null || saved === void 0 ? void 0 : saved.usedTokens, 20);
127
+ strict_1.default.equal(saved === null || saved === void 0 ? void 0 : saved.budget, 20);
128
+ strict_1.default.equal(saved === null || saved === void 0 ? void 0 : saved.budgetPaused, true);
129
+ strict_1.default.equal(saved === null || saved === void 0 ? void 0 : saved.messages.length, 4);
130
+ });
131
+ (0, node_test_1.it)('reports a failed durable checkpoint without announcing completion or duplicating the response on retry', async (t) => {
132
+ var _a;
133
+ let fail = true;
134
+ const { send, flush, events, dir } = await fixture(t, {
135
+ checkpoint: async () => {
136
+ if (fail) {
137
+ fail = false;
138
+ throw new Error('Storage unavailable');
139
+ }
140
+ },
141
+ });
142
+ await send('first');
143
+ await flush();
144
+ strict_1.default.ok(events.some((event) => event.type === 'error' && event.message === 'Storage unavailable'));
145
+ strict_1.default.equal(events.some((event) => event.type === 'done'), false);
146
+ strict_1.default.equal((_a = (await (0, conversation_1.readConversation)(dir))) === null || _a === void 0 ? void 0 : _a.messages.length, 2);
147
+ strict_1.default.ok(events.some((event) => event.type === 'checkpointed' && event.requestId === 'flush'));
148
+ });
149
+ (0, node_test_1.it)('aborts the active turn, discards queued work, and checkpoints before shutdown resolves', async (t) => {
150
+ var _a;
151
+ const started = deferred();
152
+ const { runtime, send, calls, checkpoints, dir } = await fixture(t, {
153
+ run: async (input) => {
154
+ started.resolve();
155
+ await new Promise((resolve) => input.abortSignal.addEventListener('abort', () => resolve(), { once: true }));
156
+ return { status: 'aborted', partialText: 'Partial work', askedUser: false, messages: [{ role: 'assistant', content: 'Partial work' }] };
157
+ },
158
+ });
159
+ await send('first');
160
+ await started.promise;
161
+ await send('queued');
162
+ await runtime.stop();
163
+ strict_1.default.equal(calls.length, 1);
164
+ strict_1.default.deepEqual(checkpoints, ['checkpoint: turn interrupted', 'checkpoint: shutdown']);
165
+ strict_1.default.deepEqual((_a = (await (0, conversation_1.readConversation)(dir))) === null || _a === void 0 ? void 0 : _a.messages, [
166
+ { role: 'user', content: 'first' }, { role: 'assistant', content: 'Partial work' },
167
+ ]);
168
+ await strict_1.default.rejects(send('too-late'), /Session has stopped/);
169
+ });
170
+ (0, node_test_1.it)('serializes concurrent checkpoints and allows the next checkpoint to retry after failure', async (t) => {
171
+ const entered = deferred();
172
+ const release = deferred();
173
+ let active = 0;
174
+ let maximum = 0;
175
+ let attempts = 0;
176
+ const { runtime, events } = await fixture(t, {
177
+ checkpoint: async () => {
178
+ attempts += 1;
179
+ active += 1;
180
+ maximum = Math.max(maximum, active);
181
+ try {
182
+ if (attempts === 1) {
183
+ entered.resolve();
184
+ await release.promise;
185
+ throw new Error('First upload failed');
186
+ }
187
+ }
188
+ finally {
189
+ active -= 1;
190
+ }
191
+ },
192
+ });
193
+ const failed = strict_1.default.rejects(runtime.checkpoint('first', 'first'), /First upload failed/);
194
+ await entered.promise;
195
+ const retried = runtime.checkpoint('second', 'second');
196
+ release.resolve();
197
+ await Promise.all([failed, retried]);
198
+ strict_1.default.equal(maximum, 1);
199
+ strict_1.default.deepEqual(events.filter((event) => event.type === 'checkpointed').map((event) => event.requestId), ['second']);
200
+ });
201
+ //# sourceMappingURL=runtime.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.test.js","sourceRoot":"","sources":["../../src/session/runtime.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { AgentProgressStep, AgentSessionFile } from '../transport/protocol';
2
+ import type { TokenUsage } from '../models/usage';
3
+ /** Bound to one turn. Tools cannot access the queue, session state, or gateway connection. */
4
+ export interface SessionToolContext {
5
+ readonly workspaceDir: string;
6
+ readonly abortSignal: AbortSignal;
7
+ reportProgress(steps: AgentProgressStep[], toolCallId: string): void;
8
+ requestClarification(question: string, toolCallId: string): void;
9
+ publishFiles(files: AgentSessionFile[]): void;
10
+ recordUsage(usage: TokenUsage, model: string): void;
11
+ }
12
+ //# sourceMappingURL=tool-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-context.d.ts","sourceRoot":"","sources":["../../src/session/tool-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,8FAA8F;AAC9F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,cAAc,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACpE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAChE,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAA;IAC7C,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=tool-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-context.js","sourceRoot":"","sources":["../../src/session/tool-context.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { type Tool } from 'ai';
2
+ import type { McpConnectionRecord } from '../mcp/mcp-connection';
3
+ import type { SessionToolContext } from './tool-context';
4
+ /** Common tools for both profiles. Callbacks are bound to the turn that owns these tools. */
5
+ export declare function createSessionTools(context: SessionToolContext, mcpConnections: McpConnectionRecord[]): Record<string, Tool>;
6
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/session/tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAA;AAGpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAIhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAIxD,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAqF3H"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createSessionTools = createSessionTools;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const ai_1 = require("ai");
10
+ const zod_1 = require("zod");
11
+ const mcp_tools_1 = require("../mcp/mcp-tools");
12
+ const exec_tools_1 = require("../tools/exec-tools");
13
+ const fs_tools_1 = require("../tools/fs-tools");
14
+ const MAX_PUBLISHED_FILE_BYTES = 512 * 1024;
15
+ /** Common tools for both profiles. Callbacks are bound to the turn that owns these tools. */
16
+ function createSessionTools(context, mcpConnections) {
17
+ const { workspaceDir } = context;
18
+ return {
19
+ ...(0, fs_tools_1.createFsTools)(workspaceDir),
20
+ ...(0, exec_tools_1.createExecTools)(workspaceDir),
21
+ ...(0, mcp_tools_1.createMcpTools)(mcpConnections),
22
+ report_progress: (0, ai_1.tool)({
23
+ description: 'Show the user a checklist of the phases of the current work and their status. Call it when a phase starts or finishes.',
24
+ inputSchema: zod_1.z.object({
25
+ steps: zod_1.z
26
+ .array(zod_1.z.object({
27
+ key: zod_1.z.string().min(1).max(60),
28
+ label: zod_1.z.string().min(1).max(120),
29
+ status: zod_1.z.enum(['pending', 'active', 'done', 'failed']),
30
+ detail: zod_1.z.string().max(200).optional(),
31
+ }))
32
+ .min(1)
33
+ .max(20),
34
+ }),
35
+ execute: async ({ steps }, { toolCallId }) => {
36
+ context.reportProgress(steps, toolCallId);
37
+ return { ok: true };
38
+ },
39
+ }),
40
+ // Same name and input contract as the platform's own clarification tool, so the chat renders
41
+ // the question with its standard answer form and routes the answer back through approvals.
42
+ request_clarification: (0, ai_1.tool)({
43
+ description: 'Pause and ask the user one question you cannot answer yourself: confirm a large population, correct the scope, choose between readings, approve a codebook or more spending. Give 2–6 explicit options; set allowFreeText when they may not cover the answer. The turn ends after this call; the answer arrives as the next user message.',
44
+ inputSchema: zod_1.z.object({
45
+ question: zod_1.z.string().min(5).max(8000).describe('Clear, concise question with the context the user needs to decide; markdown allowed'),
46
+ selectionMode: zod_1.z.enum(['single', 'multiple']).describe('Whether the user picks one option or several'),
47
+ options: zod_1.z
48
+ .array(zod_1.z.object({
49
+ id: zod_1.z.string().min(1).max(60).describe('Stable option identifier'),
50
+ label: zod_1.z.string().min(1).max(300).describe('User-visible option label'),
51
+ description: zod_1.z.string().max(500).optional().describe('Optional explanation'),
52
+ }))
53
+ .min(2)
54
+ .max(6),
55
+ allowFreeText: zod_1.z.boolean().default(false).describe('Whether the user may answer in their own words instead'),
56
+ }),
57
+ execute: async ({ question }, { toolCallId }) => {
58
+ context.requestClarification(question, toolCallId);
59
+ return { asked: true };
60
+ },
61
+ }),
62
+ publish_results: (0, ai_1.tool)({
63
+ description: 'Store text files from the workspace as session artifacts the user sees in the session (findings.md, results.csv, evidence.json, notes). Call it whenever a deliverable changes. Max 512 KB per file.',
64
+ inputSchema: zod_1.z.object({ paths: zod_1.z.array(zod_1.z.string().min(1).max(500)).min(1).max(20) }),
65
+ execute: async ({ paths }) => {
66
+ const files = [];
67
+ const skipped = [];
68
+ for (const relative of paths) {
69
+ const target = node_path_1.default.resolve(workspaceDir, relative);
70
+ if (!target.startsWith(node_path_1.default.resolve(workspaceDir) + node_path_1.default.sep)) {
71
+ skipped.push({ path: relative, reason: 'outside the workspace' });
72
+ continue;
73
+ }
74
+ try {
75
+ const buffer = await node_fs_1.promises.readFile(target);
76
+ if (buffer.byteLength > MAX_PUBLISHED_FILE_BYTES) {
77
+ skipped.push({ path: relative, reason: `larger than ${MAX_PUBLISHED_FILE_BYTES} bytes` });
78
+ continue;
79
+ }
80
+ if (buffer.includes(0)) {
81
+ skipped.push({ path: relative, reason: 'binary file' });
82
+ continue;
83
+ }
84
+ files.push({ path: relative.replace(/^\/+/, ''), content: buffer.toString('utf8') });
85
+ }
86
+ catch (error) {
87
+ skipped.push({ path: relative, reason: error.message });
88
+ }
89
+ }
90
+ if (files.length)
91
+ context.publishFiles(files);
92
+ return { published: files.map((file) => file.path), skipped };
93
+ },
94
+ }),
95
+ };
96
+ }
97
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/session/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.d.ts","sourceRoot":"","sources":["../../src/session/tools.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_fs_1 = require("node:fs");
8
+ const node_os_1 = __importDefault(require("node:os"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const node_test_1 = require("node:test");
11
+ const tools_1 = require("./tools");
12
+ function fixture(workspaceDir, messageId = 'turn') {
13
+ const events = [];
14
+ const context = {
15
+ workspaceDir,
16
+ abortSignal: new AbortController().signal,
17
+ recordUsage() { },
18
+ reportProgress: (steps, toolCallId) => events.push({ type: 'progress', messageId, toolCallId, steps }),
19
+ requestClarification: (question, toolCallId) => events.push({ type: 'question', messageId, toolCallId, question }),
20
+ publishFiles: (files) => events.push({ type: 'files', messageId, files }),
21
+ };
22
+ return { context, events };
23
+ }
24
+ (0, node_test_1.it)('reports progress and clarification through the supplied turn context', async () => {
25
+ const { context, events } = fixture('/unused');
26
+ const tools = (0, tools_1.createSessionTools)(context, []);
27
+ const steps = [{ key: 'research', label: 'Research', status: 'active' }];
28
+ await tools.report_progress.execute({ steps }, { toolCallId: 'progress', messages: [] });
29
+ await tools.request_clarification.execute({ question: 'Which state?' }, { toolCallId: 'question', messages: [] });
30
+ strict_1.default.deepEqual(events, [
31
+ { type: 'progress', messageId: 'turn', toolCallId: 'progress', steps },
32
+ { type: 'question', messageId: 'turn', toolCallId: 'question', question: 'Which state?' },
33
+ ]);
34
+ });
35
+ (0, node_test_1.it)('publishes text artifacts and reports rejected paths without losing valid files', async (t) => {
36
+ const dir = await node_fs_1.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), 'agent-publish-'));
37
+ t.after(() => node_fs_1.promises.rm(dir, { recursive: true, force: true }));
38
+ const { context, events } = fixture(dir);
39
+ await node_fs_1.promises.writeFile(node_path_1.default.join(dir, 'findings.md'), '# Findings');
40
+ await node_fs_1.promises.writeFile(node_path_1.default.join(dir, 'binary'), Buffer.from([1, 0, 2]));
41
+ await node_fs_1.promises.writeFile(node_path_1.default.join(dir, 'large'), 'x'.repeat(512 * 1024 + 1));
42
+ const result = await (0, tools_1.createSessionTools)(context, []).publish_results.execute({
43
+ paths: ['findings.md', '../outside', 'binary', 'large'],
44
+ }, { toolCallId: 'publish', messages: [] });
45
+ strict_1.default.deepEqual(result, {
46
+ published: ['findings.md'],
47
+ skipped: [
48
+ { path: '../outside', reason: 'outside the workspace' },
49
+ { path: 'binary', reason: 'binary file' },
50
+ { path: 'large', reason: 'larger than 524288 bytes' },
51
+ ],
52
+ });
53
+ strict_1.default.deepEqual(events, [{ type: 'files', messageId: 'turn', files: [{ path: 'findings.md', content: '# Findings' }] }]);
54
+ });
55
+ //# sourceMappingURL=tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/session/tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AgentRuntimeConfig } from '../runtime/config';
2
+ import type { Reporter } from '../transport/reporter';
3
+ export declare function runAgentLoop(config: AgentRuntimeConfig, reporter: Reporter): Promise<{
4
+ summary: string;
5
+ }>;
6
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/task/loop.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAG3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAsBrD,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAyC/G"}
@@ -6,11 +6,11 @@ exports.runAgentLoop = runAgentLoop;
6
6
  // primitives ai-agent-node uses underneath its ChatProcessor), not a port of ChatProcessor:
7
7
  // that class needs MongoDB repositories and Socket.IO broadcast, none of which exist in a guest.
8
8
  const ai_1 = require("ai");
9
- const attribution_1 = require("./attribution");
10
- const mcp_tools_1 = require("./mcp/mcp-tools");
11
- const model_1 = require("./model");
12
- const exec_tools_1 = require("./tools/exec-tools");
13
- const fs_tools_1 = require("./tools/fs-tools");
9
+ const attribution_1 = require("../models/attribution");
10
+ const mcp_tools_1 = require("../mcp/mcp-tools");
11
+ const resolve_model_1 = require("../models/resolve-model");
12
+ const exec_tools_1 = require("../tools/exec-tools");
13
+ const fs_tools_1 = require("../tools/fs-tools");
14
14
  const MAX_STEPS = 40;
15
15
  const SYSTEM_PROMPT = `You are a coding agent running inside an isolated session workspace VM. You have direct
16
16
  tools to read/write files and run shell commands in the workspace, plus (if any MCP servers are
@@ -36,7 +36,7 @@ async function runAgentLoop(config, reporter) {
36
36
  };
37
37
  try {
38
38
  const result = await (0, ai_1.generateText)({
39
- model: (0, model_1.resolveLanguageModel)(config.provider, config.model, attribution_1.OPENROUTER_APPS.CODING_AGENT),
39
+ model: (0, resolve_model_1.resolveLanguageModel)(config.provider, config.model, attribution_1.OPENROUTER_APPS.CODING_AGENT),
40
40
  system: SYSTEM_PROMPT,
41
41
  prompt: config.task,
42
42
  tools,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/task/loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/transport/link.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,mBAAmB,EAExB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAA;AAMnB,MAAM,MAAM,aAAa,GAAG,iBAAiB,SAAS,MAAM,CAAC,GACzD,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7D,IAAI,CAAC,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,WAAW,CAAC,GAC1C,KAAK,GACP,KAAK,CAAA;AAET,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAEnF,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;IAChC,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IACxC,2FAA2F;IAC3F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAMD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,WAAW,CAqEb"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/transport/link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/transport/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/transport/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.test.d.ts","sourceRoot":"","sources":["../../src/transport/protocol.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.test.js","sourceRoot":"","sources":["../../src/transport/protocol.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAuC;AACvC,yCAAwC;AACxC,yCAAkJ;AAElJ,IAAA,oBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAA,cAAE,EAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,KAAK,GAAsB,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QAC9K,gBAAM,CAAC,KAAK,CAAC,IAAA,+BAAoB,EAAC,KAAK,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;QAC7E,gBAAM,CAAC,QAAQ,CAAC,IAAA,+BAAoB,EAAC,KAAK,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;QAC5G,gBAAM,CAAC,QAAQ,CAAC,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACxJ,CAAC,CAAC,CAAA;IACF,IAAA,cAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACnI,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;QAC5E,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;QAC1D,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAA,cAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,gBAAM,CAAC,KAAK,CAAC,IAAA,2BAAgB,EAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,IAAA,cAAE,EAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,KAAK,MAAM,GAAG,IAAI,CAAC,oBAAS,CAAC,wBAAwB,EAAE,oBAAS,CAAC,gBAAgB,EAAE,oBAAS,CAAC,kBAAkB,EAAE,oBAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC/I,gBAAM,CAAC,EAAE,CAAC,gCAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,mBAAmB,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -27,4 +27,4 @@ export interface Reporter {
27
27
  close(): Promise<void>;
28
28
  }
29
29
  export declare function createReporter(socketUrl: string | undefined, socketToken: string | undefined, sessionId: string): Reporter;
30
- //# sourceMappingURL=report.d.ts.map
30
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/transport/reporter.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9G;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5E,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,yFAAyF;IACzF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB,QAAQ,CAwBV"}
@@ -30,4 +30,4 @@ function createReporter(socketUrl, socketToken, sessionId) {
30
30
  },
31
31
  };
32
32
  }
33
- //# sourceMappingURL=report.js.map
33
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/transport/reporter.ts"],"names":[],"mappings":";;AAiBA,wCA4BC;AA7CD,4FAA4F;AAC5F,2FAA2F;AAC3F,wEAAwE;AACxE,iCAA4D;AAc5D,SAAgB,cAAc,CAC5B,SAA6B,EAC7B,WAA+B,EAC/B,SAAiB;IAEjB,MAAM,IAAI,GAAgB,IAAA,wBAAiB,EAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;IAC9E,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,KAAK;YACd,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,WAAW;oBACd,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;oBACpG,MAAK;gBACP,KAAK,SAAS;oBACZ,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;oBAChD,MAAK;gBACP,KAAK,MAAM;oBACT,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;oBACtE,MAAK;gBACP,KAAK,OAAO;oBACV,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;oBACpD,MAAK;YACT,CAAC;QACH,CAAC;QACD,KAAK;YACH,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;KACF,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplayer-app/agent",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "Agent that runs inside a session VM — one-shot coding tasks or long-lived research sessions driven over the gateway socket; local file/exec tools, FilingRamp research tools, MCP over env-var config",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -11,19 +11,19 @@
11
11
  "default": "./dist/index.js"
12
12
  },
13
13
  "./protocol": {
14
- "types": "./dist/protocol.d.ts",
15
- "require": "./dist/protocol.js",
16
- "default": "./dist/protocol.js"
14
+ "types": "./dist/transport/protocol.d.ts",
15
+ "require": "./dist/transport/protocol.js",
16
+ "default": "./dist/transport/protocol.js"
17
17
  },
18
18
  "./attribution": {
19
- "types": "./dist/attribution.d.ts",
20
- "require": "./dist/attribution.js",
21
- "default": "./dist/attribution.js"
19
+ "types": "./dist/models/attribution.d.ts",
20
+ "require": "./dist/models/attribution.js",
21
+ "default": "./dist/models/attribution.js"
22
22
  }
23
23
  },
24
24
  "bin": {
25
- "agent": "dist/cli.js",
26
- "agent-microvm": "dist/lambda-microvm-entrypoint.js"
25
+ "agent": "dist/runtime/cli.js",
26
+ "agent-microvm": "dist/runtime/lambda-microvm.js"
27
27
  },
28
28
  "files": [
29
29
  "dist"
@@ -48,8 +48,8 @@
48
48
  "build": "tsc --build --force",
49
49
  "clean": "rm -rf ./dist tsconfig.tsbuildinfo",
50
50
  "typecheck": "tsc --noEmit",
51
- "lint": "eslint src/**/*.ts --config ../../eslint.config.js",
51
+ "lint": "eslint 'src/**/*.ts' --config ../../eslint.config.js",
52
52
  "test": "tsc --build --force && node --test 'dist/**/*.test.js'",
53
- "postversion": "node scripts/sync-base-image-version.mjs && git commit -m \"agent v$npm_package_version\" -- package.json ../sandbox/src/base-images/agent/Dockerfile ../../scripts/setup-vm-images.sh && git tag \"agent-v$npm_package_version\" && git push && git push --tags"
53
+ "postversion": "node scripts/sync-base-image-version.mjs && git commit -m \"agent v$npm_package_version\" -- package.json ../sandbox/base-images/agent/container/Dockerfile && git tag \"agent-v$npm_package_version\" && git push && git push --tags"
54
54
  }
55
55
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../src/attribution.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AAErD,qFAAqF;AACrF,eAAO,MAAM,eAAe;IAC1B,kGAAkG;;IAElG,4CAA4C;;IAE5C,0CAA0C;;IAE1C,sCAAsC;;CAE9B,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAElF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAwB,GAAG,MAAM,CAMxF;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"attribution.js","sourceRoot":"","sources":["../src/attribution.ts"],"names":[],"mappings":";AAAA,6FAA6F;AAC7F,uFAAuF;AACvF,EAAE;AACF,yFAAyF;AACzF,yFAAyF;AACzF,6FAA6F;AAC7F,yFAAyF;AACzF,4BAA4B;;;AAkB5B,oDAMC;AAGD,oDAEC;AA3BY,QAAA,qBAAqB,GAAG,gBAAgB,CAAA;AAErD,qFAAqF;AACxE,QAAA,eAAe,GAAG;IAC7B,kGAAkG;IAClG,YAAY,EAAE,cAAc;IAC5B,4CAA4C;IAC5C,aAAa,EAAE,eAAe;IAC9B,0CAA0C;IAC1C,aAAa,EAAE,eAAe;IAC9B,sCAAsC;IACtC,YAAY,EAAE,cAAc;CACpB,CAAA;AAIV,SAAgB,oBAAoB,CAAC,GAAW,EAAE,MAAM,GAAG,6BAAqB;IAC9E,MAAM,IAAI,GAAG,GAAG;SACb,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC1B,OAAO,WAAW,IAAI,IAAI,MAAM,EAAE,CAAA;AACpC,CAAC;AAED,kFAAkF;AAClF,SAAgB,oBAAoB,CAAC,GAAW,EAAE,MAAM,GAAG,6BAAqB;IAC9E,OAAO,EAAE,cAAc,EAAE,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;AAC9E,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkpoint-timer.test.d.ts","sourceRoot":"","sources":["../src/checkpoint-timer.test.ts"],"names":[],"mappings":""}