@multiplayer-app/agent 0.0.7 → 0.1.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 (73) hide show
  1. package/dist/cli.js +15 -16
  2. package/dist/cli.js.map +1 -1
  3. package/dist/config.d.ts +43 -2
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +73 -11
  6. package/dist/config.js.map +1 -1
  7. package/dist/git-sync.d.ts +22 -0
  8. package/dist/git-sync.d.ts.map +1 -0
  9. package/dist/git-sync.js +107 -0
  10. package/dist/git-sync.js.map +1 -0
  11. package/dist/index.d.ts +6 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +26 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/lambda-microvm-entrypoint.js +74 -39
  16. package/dist/lambda-microvm-entrypoint.js.map +1 -1
  17. package/dist/link.d.ts +16 -0
  18. package/dist/link.d.ts.map +1 -0
  19. package/dist/link.js +76 -0
  20. package/dist/link.js.map +1 -0
  21. package/dist/loop.d.ts.map +1 -1
  22. package/dist/loop.js +8 -6
  23. package/dist/loop.js.map +1 -1
  24. package/dist/mcp/mcp-connection.js +1 -1
  25. package/dist/mcp/mcp-connection.js.map +1 -1
  26. package/dist/mcp/mcp-tools.js +1 -1
  27. package/dist/mcp/mcp-tools.js.map +1 -1
  28. package/dist/model.d.ts +4 -0
  29. package/dist/model.d.ts.map +1 -0
  30. package/dist/model.js +20 -0
  31. package/dist/model.js.map +1 -0
  32. package/dist/protocol.d.ts +174 -0
  33. package/dist/protocol.d.ts.map +1 -0
  34. package/dist/protocol.js +95 -0
  35. package/dist/protocol.js.map +1 -0
  36. package/dist/protocol.test.d.ts +2 -0
  37. package/dist/protocol.test.d.ts.map +1 -0
  38. package/dist/protocol.test.js +25 -0
  39. package/dist/protocol.test.js.map +1 -0
  40. package/dist/report.d.ts.map +1 -1
  41. package/dist/report.js +22 -44
  42. package/dist/report.js.map +1 -1
  43. package/dist/research/filingramp-client.d.ts +28 -0
  44. package/dist/research/filingramp-client.d.ts.map +1 -0
  45. package/dist/research/filingramp-client.js +124 -0
  46. package/dist/research/filingramp-client.js.map +1 -0
  47. package/dist/research/filingramp-tools.d.ts +10 -0
  48. package/dist/research/filingramp-tools.d.ts.map +1 -0
  49. package/dist/research/filingramp-tools.js +447 -0
  50. package/dist/research/filingramp-tools.js.map +1 -0
  51. package/dist/research/prompt.d.ts +13 -0
  52. package/dist/research/prompt.d.ts.map +1 -0
  53. package/dist/research/prompt.js +40 -0
  54. package/dist/research/prompt.js.map +1 -0
  55. package/dist/research/scope.d.ts +24 -0
  56. package/dist/research/scope.d.ts.map +1 -0
  57. package/dist/research/scope.js +103 -0
  58. package/dist/research/scope.js.map +1 -0
  59. package/dist/research/scope.test.d.ts +2 -0
  60. package/dist/research/scope.test.d.ts.map +1 -0
  61. package/dist/research/scope.test.js +45 -0
  62. package/dist/research/scope.test.js.map +1 -0
  63. package/dist/runtime.d.ts +10 -0
  64. package/dist/runtime.d.ts.map +1 -0
  65. package/dist/runtime.js +35 -0
  66. package/dist/runtime.js.map +1 -0
  67. package/dist/session.d.ts +38 -0
  68. package/dist/session.d.ts.map +1 -0
  69. package/dist/session.js +427 -0
  70. package/dist/session.js.map +1 -0
  71. package/dist/tools/fs-tools.js +1 -1
  72. package/dist/tools/fs-tools.js.map +1 -1
  73. package/package.json +8 -2
package/dist/link.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { type AgentSessionCommand, type AgentSessionEvent } from './protocol';
2
+ export type OutboundEvent = AgentSessionEvent extends infer E ? E extends {
3
+ sessionId: string;
4
+ seq: number;
5
+ timestamp: string;
6
+ } ? Omit<E, 'sessionId' | 'seq' | 'timestamp'> : never : never;
7
+ export type CommandHandler = (command: AgentSessionCommand) => Promise<void> | void;
8
+ export interface SessionLink {
9
+ send(event: OutboundEvent): void;
10
+ onCommand(handler: CommandHandler): void;
11
+ /** Resolves once connected (or immediately when the link has no socket). Never rejects. */
12
+ ready(): Promise<void>;
13
+ close(): Promise<void>;
14
+ }
15
+ export declare function createSessionLink(sessionId: string, socketUrl: string | undefined, socketToken: string | undefined): SessionLink;
16
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"AAMA,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,CA8Db"}
package/dist/link.js ADDED
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSessionLink = createSessionLink;
4
+ // The guest's one connection to the platform: a Socket.IO client dialed into the gateway's
5
+ // agent-socket-server. Events go up (fire-and-forget, sequenced), commands come down
6
+ // (acknowledged). A missing socket URL degrades to console logging so the agent still runs
7
+ // standalone; a flaky connection never fails the work — socket.io buffers emits across
8
+ // reconnects and losing a progress event is a lesser problem than aborting a research run.
9
+ const socket_io_client_1 = require("socket.io-client");
10
+ const protocol_1 = require("./protocol");
11
+ // Grace period before disconnecting in close(), so the last emit (the 'done'/'error' event)
12
+ // actually reaches the gateway before the process exits.
13
+ const CLOSE_GRACE_MS = 200;
14
+ function stamp(sessionId, seq, event) {
15
+ return { ...event, sessionId, seq, timestamp: new Date().toISOString() };
16
+ }
17
+ function createSessionLink(sessionId, socketUrl, socketToken) {
18
+ let seq = 0;
19
+ let handler;
20
+ if (!socketUrl) {
21
+ return {
22
+ send(event) {
23
+ console.log('[link]', JSON.stringify(stamp(sessionId, ++seq, event)));
24
+ },
25
+ onCommand(next) {
26
+ handler = next;
27
+ },
28
+ async ready() { },
29
+ async close() { },
30
+ };
31
+ }
32
+ const socket = (0, socket_io_client_1.io)(socketUrl, {
33
+ auth: { sessionId, token: socketToken },
34
+ reconnection: true,
35
+ reconnectionDelayMax: 10000,
36
+ });
37
+ const connected = new Promise((resolve) => {
38
+ socket.once('connect', () => resolve());
39
+ socket.once('connect_error', (error) => {
40
+ console.error('[link] socket connect failed:', error.message);
41
+ resolve();
42
+ });
43
+ });
44
+ socket.on('connect_error', (error) => console.error('[link] connect error:', error.message));
45
+ socket.on('disconnect', (reason) => console.warn('[link] disconnected:', reason));
46
+ socket.on(protocol_1.AGENT_SESSION_COMMAND, (command, ack) => {
47
+ if (!handler) {
48
+ ack === null || ack === void 0 ? void 0 : ack({ ok: false, error: 'no command handler registered' });
49
+ return;
50
+ }
51
+ Promise.resolve()
52
+ .then(() => handler === null || handler === void 0 ? void 0 : handler(command))
53
+ .then(() => ack === null || ack === void 0 ? void 0 : ack({ ok: true }))
54
+ .catch((error) => {
55
+ const message = error instanceof Error ? error.message : String(error);
56
+ console.error('[link] command failed:', message);
57
+ ack === null || ack === void 0 ? void 0 : ack({ ok: false, error: message });
58
+ });
59
+ });
60
+ return {
61
+ send(event) {
62
+ socket.emit(protocol_1.AGENT_SESSION_EVENT, stamp(sessionId, ++seq, event));
63
+ },
64
+ onCommand(next) {
65
+ handler = next;
66
+ },
67
+ ready() {
68
+ return connected;
69
+ },
70
+ async close() {
71
+ await new Promise((resolve) => setTimeout(resolve, CLOSE_GRACE_MS));
72
+ socket.disconnect();
73
+ },
74
+ };
75
+ }
76
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAElD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAsBxC,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwC/G"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAGlD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAsBxC,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAyC/G"}
package/dist/loop.js CHANGED
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runAgentLoop = runAgentLoop;
4
- // The core agent loop — reimplemented directly on the Vercel AI SDK's generateText/
5
- // stepCountIs (the same primitives ai-agent-node uses underneath its ChatProcessor), not a
6
- // port of ChatProcessor itself: that class's only public entry point requires 4+ MongoDB
7
- // repositories and Socket.IO broadcast, none of which exist inside a guest VM.
8
- const anthropic_1 = require("@ai-sdk/anthropic");
4
+ // One-shot task mode — the original coding-agent loop, kept for the project VMs that start
5
+ // with AGENT_TASK. Built directly on the Vercel AI SDK's generateText/stepCountIs (the same
6
+ // primitives ai-agent-node uses underneath its ChatProcessor), not a port of ChatProcessor:
7
+ // that class needs MongoDB repositories and Socket.IO broadcast, none of which exist in a guest.
9
8
  const ai_1 = require("ai");
10
9
  const mcp_tools_1 = require("./mcp/mcp-tools");
10
+ const model_1 = require("./model");
11
11
  const exec_tools_1 = require("./tools/exec-tools");
12
12
  const fs_tools_1 = require("./tools/fs-tools");
13
13
  const MAX_STEPS = 40;
@@ -26,6 +26,8 @@ function isoNow() {
26
26
  return new Date().toISOString();
27
27
  }
28
28
  async function runAgentLoop(config, reporter) {
29
+ if (!config.task)
30
+ throw new Error('AGENT_TASK is required in task mode');
29
31
  const tools = {
30
32
  ...(0, fs_tools_1.createFsTools)(config.workspaceDir),
31
33
  ...(0, exec_tools_1.createExecTools)(config.workspaceDir),
@@ -33,7 +35,7 @@ async function runAgentLoop(config, reporter) {
33
35
  };
34
36
  try {
35
37
  const result = await (0, ai_1.generateText)({
36
- model: (0, anthropic_1.anthropic)(config.model),
38
+ model: (0, model_1.resolveLanguageModel)(config.provider, config.model),
37
39
  system: SYSTEM_PROMPT,
38
40
  prompt: config.task,
39
41
  tools,
package/dist/loop.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":";;AA8BA,oCAwCC;AAtED,oFAAoF;AACpF,2FAA2F;AAC3F,yFAAyF;AACzF,+EAA+E;AAC/E,iDAA6C;AAC7C,2BAAyD;AAEzD,+CAAgD;AAEhD,mDAAoD;AACpD,+CAAgD;AAEhD,MAAM,SAAS,GAAG,EAAE,CAAA;AAEpB,MAAM,aAAa,GAAG;;;;;;;;;;wEAUkD,CAAA;AAExE,SAAS,MAAM;IACb,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;AACjC,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,MAA0B,EAAE,QAAkB;IAC/E,MAAM,KAAK,GAAyB;QAClC,GAAG,IAAA,wBAAa,EAAC,MAAM,CAAC,YAAY,CAAC;QACrC,GAAG,IAAA,4BAAe,EAAC,MAAM,CAAC,YAAY,CAAC;QACvC,GAAG,IAAA,0BAAc,EAAC,MAAM,CAAC,cAAc,CAAC;KACzC,CAAA;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAY,EAAC;YAChC,KAAK,EAAE,IAAA,qBAAS,EAAC,MAAM,CAAC,KAAK,CAAC;YAC9B,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,KAAK;YACL,QAAQ,EAAE,IAAA,gBAAW,EAAC,SAAS,CAAC;YAChC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;oBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;oBAClC,MAAM,QAAQ,CAAC,IAAI,CAAC;wBAClB,IAAI,EAAE,WAAW;wBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,MAAM,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM;wBACtB,SAAS,EAAE,MAAM,EAAE;qBACpB,CAAC,CAAA;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;gBAC7G,CAAC;YACH,CAAC;SACF,CAAC,CAAA;QAEF,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QAC7G,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QACjG,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Vendored from libs/builder-api/src/lib/mcp-connections/mcp-connection.ts — kept in sync by
2
+ // Vendored from libs/models/src/mcp-connections/mcp-connection.ts — kept in sync by
3
3
  // hand. Only the fields this package actually reads are included; the source of truth for the
4
4
  // full connection record (create/update, OAuth consent) stays server-side.
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-connection.js","sourceRoot":"","sources":["../../src/mcp/mcp-connection.ts"],"names":[],"mappings":";AAAA,6FAA6F;AAC7F,8FAA8F;AAC9F,2EAA2E"}
1
+ {"version":3,"file":"mcp-connection.js","sourceRoot":"","sources":["../../src/mcp/mcp-connection.ts"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,8FAA8F;AAC9F,2EAA2E"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createMcpTools = createMcpTools;
4
4
  // The three-tool MCP indirection pattern from
5
- // libs/builder-api/src/agents/automation/automation.tools.ts (search_tools -> get_tool_details
5
+ // services/api/src/agents/automation/automation.tools.ts (search_tools -> get_tool_details
6
6
  // -> call_mcp_tool), adapted to resolve against an in-memory connection list instead of a
7
7
  // database-backed "attached to this automation" lookup — the env var already hands us the
8
8
  // full resolved connection list, so there's nothing to look up.
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../src/mcp/mcp-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../src/mcp/mcp-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { LanguageModel } from 'ai';
2
+ import type { ModelProviderConfig } from './config';
3
+ export declare function resolveLanguageModel(provider: ModelProviderConfig, modelId: string): LanguageModel;
4
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAWlG"}
package/dist/model.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveLanguageModel = resolveLanguageModel;
4
+ // Model resolution for the guest. The platform runs on OpenRouter ids ("anthropic/claude-…");
5
+ // a bare Anthropic id with an Anthropic key still works for the original one-shot coding VMs.
6
+ const anthropic_1 = require("@ai-sdk/anthropic");
7
+ const ai_sdk_provider_1 = require("@openrouter/ai-sdk-provider");
8
+ function resolveLanguageModel(provider, modelId) {
9
+ if (provider.openrouterApiKey) {
10
+ const openrouter = (0, ai_sdk_provider_1.createOpenRouter)({ apiKey: provider.openrouterApiKey });
11
+ return openrouter.chat(modelId);
12
+ }
13
+ if (provider.anthropicApiKey || process.env.ANTHROPIC_API_KEY) {
14
+ const anthropic = (0, anthropic_1.createAnthropic)({ apiKey: provider.anthropicApiKey });
15
+ // OpenRouter-style ids carry a vendor prefix the Anthropic API does not know.
16
+ return anthropic(modelId.replace(/^anthropic\//, ''));
17
+ }
18
+ throw new Error('No model provider configured: set OPENROUTER_API_KEY or ANTHROPIC_API_KEY');
19
+ }
20
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";;AAOA,oDAWC;AAlBD,8FAA8F;AAC9F,8FAA8F;AAC9F,iDAAmD;AACnD,iEAA8D;AAI9D,SAAgB,oBAAoB,CAAC,QAA6B,EAAE,OAAe;IACjF,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAA,kCAAgB,EAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAC1E,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IACD,IAAI,QAAQ,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAA,2BAAe,EAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAA;QACvE,8EAA8E;QAC9E,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAA;IACvD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;AAC9F,CAAC"}
@@ -0,0 +1,174 @@
1
+ export declare const AGENT_SESSION_EVENT: "agent-session:event";
2
+ export declare const AGENT_SESSION_COMMAND: "agent-session:command";
3
+ /** Socket.IO room the gateway joins every guest socket to, so the API can address one session. */
4
+ export declare function agentSessionRoom(sessionId: string): string;
5
+ export interface AgentSessionAttachment {
6
+ name: string;
7
+ url?: string;
8
+ mimeType?: string;
9
+ }
10
+ /** One stage of long work, same shape the chat UI renders for tool-call progress checklists. */
11
+ export interface AgentProgressStep {
12
+ key: string;
13
+ label: string;
14
+ status: 'pending' | 'active' | 'done' | 'failed';
15
+ detail?: string;
16
+ }
17
+ export interface AgentUsage {
18
+ inputTokens: number;
19
+ outputTokens: number;
20
+ totalTokens: number;
21
+ model: string;
22
+ }
23
+ /** A text file the guest wants stored as a session artifact (findings, result tables, evidence). */
24
+ export interface AgentSessionFile {
25
+ path: string;
26
+ content: string;
27
+ }
28
+ export type AgentSessionCommand =
29
+ /** A new user turn. `messageId` is the chat message id the platform already persisted. */
30
+ {
31
+ type: 'message';
32
+ messageId: string;
33
+ text: string;
34
+ attachments?: AgentSessionAttachment[];
35
+ }
36
+ /** Stop the running turn (the user pressed stop, or the session is being shut down). */
37
+ | {
38
+ type: 'abort';
39
+ }
40
+ /** Flush conversation + workspace to the git server now (before suspend / stop). */
41
+ | {
42
+ type: 'checkpoint';
43
+ };
44
+ export interface AgentSessionCommandAck {
45
+ ok: boolean;
46
+ error?: string;
47
+ }
48
+ interface BaseEvent {
49
+ sessionId: string;
50
+ /** Monotonic per process; lets the receiver de-duplicate and order events across replicas. */
51
+ seq: number;
52
+ timestamp: string;
53
+ }
54
+ export type AgentSessionEvent = BaseEvent & (
55
+ /** Guest connected and is ready for commands (also sent after a resume). */
56
+ {
57
+ type: 'ready';
58
+ mode: 'task' | 'session';
59
+ profile: string;
60
+ restored: boolean;
61
+ }
62
+ /** A turn for `messageId` started in the guest. */
63
+ | {
64
+ type: 'turn_start';
65
+ messageId: string;
66
+ } | {
67
+ type: 'text_delta';
68
+ messageId: string;
69
+ text: string;
70
+ } | {
71
+ type: 'reasoning_delta';
72
+ messageId: string;
73
+ text: string;
74
+ } | {
75
+ type: 'tool_call_start';
76
+ messageId: string;
77
+ toolCallId: string;
78
+ toolName: string;
79
+ input: unknown;
80
+ } | {
81
+ type: 'tool_call_result';
82
+ messageId: string;
83
+ toolCallId: string;
84
+ output?: unknown;
85
+ error?: string;
86
+ }
87
+ /** Live checklist for the current phase of work; `toolCallId` when it belongs to one call. */
88
+ | {
89
+ type: 'progress';
90
+ messageId: string;
91
+ toolCallId?: string;
92
+ steps: AgentProgressStep[];
93
+ }
94
+ /** The agent needs the user before it can continue (confirm a large population, pick a scope). */
95
+ | {
96
+ type: 'question';
97
+ messageId: string;
98
+ text: string;
99
+ options?: string[];
100
+ } | {
101
+ type: 'usage';
102
+ messageId: string;
103
+ usage: AgentUsage;
104
+ }
105
+ /** Text files to store as session artifacts. */
106
+ | {
107
+ type: 'files';
108
+ messageId?: string;
109
+ files: AgentSessionFile[];
110
+ }
111
+ /** Conversation + workspace committed to the git server. */
112
+ | {
113
+ type: 'checkpointed';
114
+ commit?: string;
115
+ } | {
116
+ type: 'done';
117
+ messageId: string;
118
+ summary: string;
119
+ } | {
120
+ type: 'error';
121
+ messageId?: string;
122
+ message: string;
123
+ } | {
124
+ type: 'tool_call';
125
+ toolName: string;
126
+ input: unknown;
127
+ output: unknown;
128
+ } | {
129
+ type: 'message';
130
+ text: string;
131
+ });
132
+ export type AgentSessionEventType = AgentSessionEvent['type'];
133
+ export declare const AGENT_SESSION_EVENT_TYPES: readonly AgentSessionEventType[];
134
+ export declare function isAgentSessionEvent(value: unknown): value is AgentSessionEvent;
135
+ export declare const AGENT_ENV: {
136
+ readonly SESSION_ID: "SESSION_ID";
137
+ /** 'task' (one AGENT_TASK run, then exit) or 'session' (stay up, serve chat turns). */
138
+ readonly AGENT_MODE: "AGENT_MODE";
139
+ /** 'coding' (default) or 'research'. */
140
+ readonly AGENT_PROFILE: "AGENT_PROFILE";
141
+ readonly AGENT_TASK: "AGENT_TASK";
142
+ readonly AGENT_MODEL: "AGENT_MODEL";
143
+ /** Cheaper model for bulk extraction over many documents. */
144
+ readonly AGENT_EXTRACTION_MODEL: "AGENT_EXTRACTION_MODEL";
145
+ /** Total tokens the session may spend before it pauses and asks whether to continue. */
146
+ readonly AGENT_TOKEN_BUDGET: "AGENT_TOKEN_BUDGET";
147
+ readonly AGENT_WORKSPACE_DIR: "AGENT_WORKSPACE_DIR";
148
+ readonly AGENT_SOCKET_URL: "AGENT_SOCKET_URL";
149
+ /** secret */
150
+ readonly AGENT_SOCKET_TOKEN: "AGENT_SOCKET_TOKEN";
151
+ /** secret: model provider keys (one of them) */
152
+ readonly OPENROUTER_API_KEY: "OPENROUTER_API_KEY";
153
+ readonly ANTHROPIC_API_KEY: "ANTHROPIC_API_KEY";
154
+ /** base64 JSON array of MCP connections */
155
+ readonly MCP_SERVERS_JSON: "MCP_SERVERS_JSON";
156
+ readonly FILINGRAMP_API_BASE_URL: "FILINGRAMP_API_BASE_URL";
157
+ readonly FILINGRAMP_CLIENT_ID: "FILINGRAMP_CLIENT_ID";
158
+ /** secret */
159
+ readonly FILINGRAMP_CLIENT_SECRET: "FILINGRAMP_CLIENT_SECRET";
160
+ /** 'true' when the account may query industry (public) filings. */
161
+ readonly FILINGRAMP_INDUSTRY_DATA: "FILINGRAMP_INDUSTRY_DATA";
162
+ /** JSON ResearchScope the session was created with. */
163
+ readonly RESEARCH_SCOPE_JSON: "RESEARCH_SCOPE_JSON";
164
+ readonly GIT_SERVER_URL: "GIT_SERVER_URL";
165
+ readonly GIT_REPOSITORY: "GIT_REPOSITORY";
166
+ readonly GIT_REPOSITORY_DIR: "GIT_REPOSITORY_DIR";
167
+ /** Branch the session's workspace is mirrored to (default session/<SESSION_ID>). */
168
+ readonly GIT_BRANCH: "GIT_BRANCH";
169
+ /** secret */
170
+ readonly GIT_ACCESS_TOKEN: "GIT_ACCESS_TOKEN";
171
+ };
172
+ export declare const AGENT_SECRET_ENV_KEYS: readonly string[];
173
+ export {};
174
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ // Wire contract between the in-VM agent and the platform. The guest is the owner of this
3
+ // format: the gateway (services/gateway/src/services/agent-socket-server.ts) forwards it and
4
+ // the API (services/api/src/services/agent-session-relay.service.ts) turns it into chat
5
+ // messages. Both import these names from `@multiplayer-app/agent/protocol`, a dependency-free
6
+ // entry so a server process never loads the AI SDK just to read a type.
7
+ //
8
+ // Two directions on one Socket.IO connection:
9
+ // guest -> platform AGENT_SESSION_EVENT (fire-and-forget, ordered by `seq`)
10
+ // platform -> guest AGENT_SESSION_COMMAND (acknowledged)
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AGENT_SECRET_ENV_KEYS = exports.AGENT_ENV = exports.AGENT_SESSION_EVENT_TYPES = exports.AGENT_SESSION_COMMAND = exports.AGENT_SESSION_EVENT = void 0;
13
+ exports.agentSessionRoom = agentSessionRoom;
14
+ exports.isAgentSessionEvent = isAgentSessionEvent;
15
+ exports.AGENT_SESSION_EVENT = 'agent-session:event';
16
+ exports.AGENT_SESSION_COMMAND = 'agent-session:command';
17
+ /** Socket.IO room the gateway joins every guest socket to, so the API can address one session. */
18
+ function agentSessionRoom(sessionId) {
19
+ return `agent-session:${sessionId}`;
20
+ }
21
+ exports.AGENT_SESSION_EVENT_TYPES = [
22
+ 'ready',
23
+ 'turn_start',
24
+ 'text_delta',
25
+ 'reasoning_delta',
26
+ 'tool_call_start',
27
+ 'tool_call_result',
28
+ 'progress',
29
+ 'question',
30
+ 'usage',
31
+ 'files',
32
+ 'checkpointed',
33
+ 'done',
34
+ 'error',
35
+ 'tool_call',
36
+ 'message',
37
+ ];
38
+ function isAgentSessionEvent(value) {
39
+ if (!value || typeof value !== 'object')
40
+ return false;
41
+ const event = value;
42
+ return (typeof event.sessionId === 'string' &&
43
+ typeof event.type === 'string' &&
44
+ exports.AGENT_SESSION_EVENT_TYPES.includes(event.type));
45
+ }
46
+ // ── Environment contract (VM env → guest) ──────────────────────────────────────────────────
47
+ // Documented here so the API's env builder (services/api/src/services/research-vm-env.ts) and
48
+ // the guest's config.ts agree on names. Values marked secret must never be persisted on the VM
49
+ // record; the API sends them to the worker only.
50
+ exports.AGENT_ENV = {
51
+ SESSION_ID: 'SESSION_ID',
52
+ /** 'task' (one AGENT_TASK run, then exit) or 'session' (stay up, serve chat turns). */
53
+ AGENT_MODE: 'AGENT_MODE',
54
+ /** 'coding' (default) or 'research'. */
55
+ AGENT_PROFILE: 'AGENT_PROFILE',
56
+ AGENT_TASK: 'AGENT_TASK',
57
+ AGENT_MODEL: 'AGENT_MODEL',
58
+ /** Cheaper model for bulk extraction over many documents. */
59
+ AGENT_EXTRACTION_MODEL: 'AGENT_EXTRACTION_MODEL',
60
+ /** Total tokens the session may spend before it pauses and asks whether to continue. */
61
+ AGENT_TOKEN_BUDGET: 'AGENT_TOKEN_BUDGET',
62
+ AGENT_WORKSPACE_DIR: 'AGENT_WORKSPACE_DIR',
63
+ AGENT_SOCKET_URL: 'AGENT_SOCKET_URL',
64
+ /** secret */
65
+ AGENT_SOCKET_TOKEN: 'AGENT_SOCKET_TOKEN',
66
+ /** secret: model provider keys (one of them) */
67
+ OPENROUTER_API_KEY: 'OPENROUTER_API_KEY',
68
+ ANTHROPIC_API_KEY: 'ANTHROPIC_API_KEY',
69
+ /** base64 JSON array of MCP connections */
70
+ MCP_SERVERS_JSON: 'MCP_SERVERS_JSON',
71
+ FILINGRAMP_API_BASE_URL: 'FILINGRAMP_API_BASE_URL',
72
+ FILINGRAMP_CLIENT_ID: 'FILINGRAMP_CLIENT_ID',
73
+ /** secret */
74
+ FILINGRAMP_CLIENT_SECRET: 'FILINGRAMP_CLIENT_SECRET',
75
+ /** 'true' when the account may query industry (public) filings. */
76
+ FILINGRAMP_INDUSTRY_DATA: 'FILINGRAMP_INDUSTRY_DATA',
77
+ /** JSON ResearchScope the session was created with. */
78
+ RESEARCH_SCOPE_JSON: 'RESEARCH_SCOPE_JSON',
79
+ GIT_SERVER_URL: 'GIT_SERVER_URL',
80
+ GIT_REPOSITORY: 'GIT_REPOSITORY',
81
+ GIT_REPOSITORY_DIR: 'GIT_REPOSITORY_DIR',
82
+ /** Branch the session's workspace is mirrored to (default session/<SESSION_ID>). */
83
+ GIT_BRANCH: 'GIT_BRANCH',
84
+ /** secret */
85
+ GIT_ACCESS_TOKEN: 'GIT_ACCESS_TOKEN',
86
+ };
87
+ exports.AGENT_SECRET_ENV_KEYS = [
88
+ exports.AGENT_ENV.AGENT_SOCKET_TOKEN,
89
+ exports.AGENT_ENV.OPENROUTER_API_KEY,
90
+ exports.AGENT_ENV.ANTHROPIC_API_KEY,
91
+ exports.AGENT_ENV.FILINGRAMP_CLIENT_SECRET,
92
+ exports.AGENT_ENV.GIT_ACCESS_TOKEN,
93
+ exports.AGENT_ENV.MCP_SERVERS_JSON,
94
+ ];
95
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":";AAAA,yFAAyF;AACzF,6FAA6F;AAC7F,wFAAwF;AACxF,8FAA8F;AAC9F,wEAAwE;AACxE,EAAE;AACF,8CAA8C;AAC9C,kFAAkF;AAClF,6DAA6D;;;AAM7D,4CAEC;AA+FD,kDAQC;AA7GY,QAAA,mBAAmB,GAAG,qBAA8B,CAAA;AACpD,QAAA,qBAAqB,GAAG,uBAAgC,CAAA;AAErE,kGAAkG;AAClG,SAAgB,gBAAgB,CAAC,SAAiB;IAChD,OAAO,iBAAiB,SAAS,EAAE,CAAA;AACrC,CAAC;AA6EY,QAAA,yBAAyB,GAAqC;IACzE,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,cAAc;IACd,MAAM;IACN,OAAO;IACP,WAAW;IACX,SAAS;CACV,CAAA;AAED,SAAgB,mBAAmB,CAAC,KAAc;IAChD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,KAAK,GAAG,KAAmC,CAAA;IACjD,OAAO,CACL,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC7B,iCAA+C,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACtE,CAAA;AACH,CAAC;AAED,8FAA8F;AAC9F,8FAA8F;AAC9F,+FAA+F;AAC/F,iDAAiD;AAEpC,QAAA,SAAS,GAAG;IACvB,UAAU,EAAE,YAAY;IACxB,uFAAuF;IACvF,UAAU,EAAE,YAAY;IACxB,wCAAwC;IACxC,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,6DAA6D;IAC7D,sBAAsB,EAAE,wBAAwB;IAChD,wFAAwF;IACxF,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,gBAAgB,EAAE,kBAAkB;IACpC,aAAa;IACb,kBAAkB,EAAE,oBAAoB;IACxC,gDAAgD;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB,EAAE,mBAAmB;IACtC,2CAA2C;IAC3C,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,aAAa;IACb,wBAAwB,EAAE,0BAA0B;IACpD,mEAAmE;IACnE,wBAAwB,EAAE,0BAA0B;IACpD,uDAAuD;IACvD,mBAAmB,EAAE,qBAAqB;IAC1C,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,oFAAoF;IACpF,UAAU,EAAE,YAAY;IACxB,aAAa;IACb,gBAAgB,EAAE,kBAAkB;CAC5B,CAAA;AAEG,QAAA,qBAAqB,GAAsB;IACtD,iBAAS,CAAC,kBAAkB;IAC5B,iBAAS,CAAC,kBAAkB;IAC5B,iBAAS,CAAC,iBAAiB;IAC3B,iBAAS,CAAC,wBAAwB;IAClC,iBAAS,CAAC,gBAAgB;IAC1B,iBAAS,CAAC,gBAAgB;CAC3B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=protocol.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.test.d.ts","sourceRoot":"","sources":["../src/protocol.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
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_test_1 = require("node:test");
8
+ const protocol_1 = require("./protocol");
9
+ (0, node_test_1.describe)('agent session protocol', () => {
10
+ (0, node_test_1.it)('recognizes well-formed events and rejects the rest', () => {
11
+ strict_1.default.equal((0, protocol_1.isAgentSessionEvent)({ sessionId: 's1', type: 'text_delta', seq: 1, timestamp: 't', messageId: 'm', text: 'x' }), true);
12
+ strict_1.default.equal((0, protocol_1.isAgentSessionEvent)({ sessionId: 's1', type: 'bogus' }), false);
13
+ strict_1.default.equal((0, protocol_1.isAgentSessionEvent)({ type: 'done' }), false);
14
+ strict_1.default.equal((0, protocol_1.isAgentSessionEvent)(null), false);
15
+ });
16
+ (0, node_test_1.it)('names the per-session room the gateway joins guests to', () => {
17
+ strict_1.default.equal((0, protocol_1.agentSessionRoom)('abc'), 'agent-session:abc');
18
+ });
19
+ (0, node_test_1.it)('lists every secret env key the platform must keep off the VM record', () => {
20
+ for (const key of [protocol_1.AGENT_ENV.FILINGRAMP_CLIENT_SECRET, protocol_1.AGENT_ENV.GIT_ACCESS_TOKEN, protocol_1.AGENT_ENV.AGENT_SOCKET_TOKEN, protocol_1.AGENT_ENV.OPENROUTER_API_KEY]) {
21
+ strict_1.default.ok(protocol_1.AGENT_SECRET_ENV_KEYS.includes(key), `${key} must be a secret`);
22
+ }
23
+ });
24
+ });
25
+ //# sourceMappingURL=protocol.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.test.js","sourceRoot":"","sources":["../src/protocol.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAuC;AACvC,yCAAwC;AACxC,yCAAoG;AAEpG,IAAA,oBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAgBA,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;AASD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB,QAAQ,CA8BV"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.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"}