@multiplayer-app/agent 0.1.7 → 0.1.9

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 (39) hide show
  1. package/dist/attribution.d.ts +17 -0
  2. package/dist/attribution.d.ts.map +1 -0
  3. package/dist/attribution.js +37 -0
  4. package/dist/attribution.js.map +1 -0
  5. package/dist/config.d.ts +6 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +5 -0
  8. package/dist/config.js.map +1 -1
  9. package/dist/idle-checkpoint.test.d.ts +2 -0
  10. package/dist/idle-checkpoint.test.d.ts.map +1 -0
  11. package/dist/idle-checkpoint.test.js +57 -0
  12. package/dist/idle-checkpoint.test.js.map +1 -0
  13. package/dist/loop.d.ts.map +1 -1
  14. package/dist/loop.js +2 -1
  15. package/dist/loop.js.map +1 -1
  16. package/dist/model.d.ts +3 -1
  17. package/dist/model.d.ts.map +1 -1
  18. package/dist/model.js +4 -2
  19. package/dist/model.js.map +1 -1
  20. package/dist/protocol.d.ts +8 -2
  21. package/dist/protocol.d.ts.map +1 -1
  22. package/dist/protocol.js +4 -0
  23. package/dist/protocol.js.map +1 -1
  24. package/dist/research/filingramp-tools.d.ts.map +1 -1
  25. package/dist/research/filingramp-tools.js +69 -22
  26. package/dist/research/filingramp-tools.js.map +1 -1
  27. package/dist/session-storage-sync.d.ts +15 -0
  28. package/dist/session-storage-sync.d.ts.map +1 -0
  29. package/dist/session-storage-sync.js +159 -0
  30. package/dist/session-storage-sync.js.map +1 -0
  31. package/dist/session-storage-sync.test.d.ts +2 -0
  32. package/dist/session-storage-sync.test.d.ts.map +1 -0
  33. package/dist/session-storage-sync.test.js +98 -0
  34. package/dist/session-storage-sync.test.js.map +1 -0
  35. package/dist/session.d.ts +4 -1
  36. package/dist/session.d.ts.map +1 -1
  37. package/dist/session.js +41 -12
  38. package/dist/session.js.map +1 -1
  39. package/package.json +6 -1
@@ -0,0 +1,17 @@
1
+ export declare const OPENROUTER_APP_DOMAIN = "filingramp.com";
2
+ /** Builder workloads that call OpenRouter; the dashboard shows one app per label. */
3
+ export declare const OPENROUTER_APPS: {
4
+ /** In-process agents behind the builder API: orchestrator chat, automations, artifact workers. */
5
+ readonly BUILDER_CHAT: "BUILDER_CHAT";
6
+ /** The research profile of a session VM. */
7
+ readonly DEEP_RESEARCH: "DEEP_RESEARCH";
8
+ /** The coding profile of a session VM. */
9
+ readonly SESSION_AGENT: "SESSION_AGENT";
10
+ /** One-shot task VMs (AGENT_TASK). */
11
+ readonly CODING_AGENT: "CODING_AGENT";
12
+ };
13
+ export type OpenRouterApp = (typeof OPENROUTER_APPS)[keyof typeof OPENROUTER_APPS];
14
+ export declare function openRouterAppReferer(app: string, domain?: string): string;
15
+ /** Request headers that attribute a call to `app` on the OpenRouter dashboard. */
16
+ export declare function openRouterAppHeaders(app: string, domain?: string): Record<string, string>;
17
+ //# sourceMappingURL=attribution.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ // OpenRouter "app" attribution, shared by the platform API and the VM guest so every builder
3
+ // model call lands under a named app on the OpenRouter dashboard instead of "Unknown".
4
+ //
5
+ // Mirrors ramp-platform's OpenRouterClient convention: OpenRouter groups requests by the
6
+ // HTTP-Referer origin and labels the group with X-Title, so each app gets its own origin
7
+ // (DEEP_RESEARCH -> https://deep-research.filingramp.com) under the same domain the platform
8
+ // services use. One label per workload, in the SCREAMING_SNAKE_CASE the platform's usage
9
+ // source types already use.
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.OPENROUTER_APPS = exports.OPENROUTER_APP_DOMAIN = void 0;
12
+ exports.openRouterAppReferer = openRouterAppReferer;
13
+ exports.openRouterAppHeaders = openRouterAppHeaders;
14
+ exports.OPENROUTER_APP_DOMAIN = 'filingramp.com';
15
+ /** Builder workloads that call OpenRouter; the dashboard shows one app per label. */
16
+ exports.OPENROUTER_APPS = {
17
+ /** In-process agents behind the builder API: orchestrator chat, automations, artifact workers. */
18
+ BUILDER_CHAT: 'BUILDER_CHAT',
19
+ /** The research profile of a session VM. */
20
+ DEEP_RESEARCH: 'DEEP_RESEARCH',
21
+ /** The coding profile of a session VM. */
22
+ SESSION_AGENT: 'SESSION_AGENT',
23
+ /** One-shot task VMs (AGENT_TASK). */
24
+ CODING_AGENT: 'CODING_AGENT',
25
+ };
26
+ function openRouterAppReferer(app, domain = exports.OPENROUTER_APP_DOMAIN) {
27
+ const slug = app
28
+ .toLowerCase()
29
+ .replace(/[^a-z0-9]+/g, '-')
30
+ .replace(/^-+|-+$/g, '');
31
+ return `https://${slug}.${domain}`;
32
+ }
33
+ /** Request headers that attribute a call to `app` on the OpenRouter dashboard. */
34
+ function openRouterAppHeaders(app, domain = exports.OPENROUTER_APP_DOMAIN) {
35
+ return { 'HTTP-Referer': openRouterAppReferer(app, domain), 'X-Title': app };
36
+ }
37
+ //# sourceMappingURL=attribution.js.map
@@ -0,0 +1 @@
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"}
package/dist/config.d.ts CHANGED
@@ -32,6 +32,11 @@ export interface ModelProviderConfig {
32
32
  openrouterApiKey?: string;
33
33
  anthropicApiKey?: string;
34
34
  }
35
+ export interface SessionStorageConfig {
36
+ url: string;
37
+ token: string;
38
+ dir: string;
39
+ }
35
40
  export interface AgentRuntimeConfig {
36
41
  sessionId: string;
37
42
  mode: AgentMode;
@@ -52,6 +57,7 @@ export interface AgentRuntimeConfig {
52
57
  filingRamp?: FilingRampConfig;
53
58
  researchScope?: ResearchScope;
54
59
  git?: GitSyncConfig;
60
+ sessionStorage?: SessionStorageConfig;
55
61
  }
56
62
  /** Reads the full run config from process.env — the guest's own contract, see AGENT_ENV in protocol.ts. */
57
63
  export declare function loadConfigFromEnv(env?: NodeJS.ProcessEnv): AgentRuntimeConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AAC1C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;IACrB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAA;IACvB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,mBAAmB,EAAE,CAAA;IACrC,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,GAAG,CAAC,EAAE,aAAa,CAAA;CACpB;AA+DD,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,kBAAkB,CAgC1F"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AAC1C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;IACrB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAA;IACvB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,mBAAmB,EAAE,CAAA;IACrC,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,cAAc,CAAC,EAAE,oBAAoB,CAAA;CACtC;AA+DD,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,kBAAkB,CAoC1F"}
package/dist/config.js CHANGED
@@ -77,6 +77,10 @@ function loadConfigFromEnv(env = process.env) {
77
77
  throw new Error('AGENT_TASK is required in task mode');
78
78
  const workspaceDir = env[protocol_1.AGENT_ENV.AGENT_WORKSPACE_DIR] || DEFAULT_WORKSPACE_DIR;
79
79
  const model = env[protocol_1.AGENT_ENV.AGENT_MODEL] || DEFAULT_MODEL;
80
+ const storageUrl = env[protocol_1.AGENT_ENV.SESSION_STORAGE_URL];
81
+ const storageToken = env[protocol_1.AGENT_ENV.SESSION_STORAGE_TOKEN];
82
+ if (Boolean(storageUrl) !== Boolean(storageToken))
83
+ throw new Error('Session storage settings are incomplete');
80
84
  return {
81
85
  sessionId,
82
86
  mode,
@@ -96,6 +100,7 @@ function loadConfigFromEnv(env = process.env) {
96
100
  filingRamp: filingRampFromEnv(env),
97
101
  researchScope: parseScope(env[protocol_1.AGENT_ENV.FILINGRAMP_RESEARCH_SCOPE_JSON]),
98
102
  git: gitFromEnv(env, sessionId, workspaceDir),
103
+ sessionStorage: storageUrl && storageToken ? { url: storageUrl, token: storageToken, dir: workspaceDir } : undefined,
99
104
  };
100
105
  }
101
106
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=idle-checkpoint.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle-checkpoint.test.d.ts","sourceRoot":"","sources":["../src/idle-checkpoint.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
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 session_1 = require("./session");
9
+ function fixture(withGit = true) {
10
+ const events = [];
11
+ const agent = new session_1.SessionAgent({
12
+ sessionId: 'test', workspaceDir: '/unused',
13
+ ...(withGit ? { git: { serverUrl: 'https://example.test', repository: 'sessions', branch: 'session/test', token: 'test', dir: '/unused' } } : {}),
14
+ }, {
15
+ send: (event) => { events.push(event); },
16
+ onCommand: () => { }, ready: async () => { }, close: async () => { },
17
+ });
18
+ const state = agent;
19
+ state.lastActivityAt = 0;
20
+ return { agent, state, events };
21
+ }
22
+ (0, node_test_1.describe)('idle agent checkpoint', () => {
23
+ (0, node_test_1.it)('requires a successful Git checkpoint before confirming idle', async (t) => {
24
+ const { agent, events } = fixture();
25
+ const checkpoint = t.mock.method(agent, 'checkpoint', async () => {
26
+ strict_1.default.equal(events.length, 0);
27
+ });
28
+ await agent.checkpointIfIdle(1000, 'request');
29
+ strict_1.default.equal(checkpoint.mock.callCount(), 1);
30
+ strict_1.default.deepEqual(events, [{ type: 'checkpointed', requestId: 'request', skipped: false, idleConfirmed: true }]);
31
+ });
32
+ (0, node_test_1.it)('does not interrupt active or queued turns, or stop agents without Git', async (t) => {
33
+ for (const reason of ['active', 'queued', 'recent', 'no-git']) {
34
+ const { agent, state, events } = fixture(reason !== 'no-git');
35
+ if (reason === 'active')
36
+ state.current = {};
37
+ if (reason === 'queued')
38
+ state.queue.push({});
39
+ if (reason === 'recent')
40
+ state.lastActivityAt = Date.now();
41
+ const checkpoint = t.mock.method(agent, 'checkpoint', async () => { });
42
+ await agent.checkpointIfIdle(1000, 'request');
43
+ strict_1.default.equal(checkpoint.mock.callCount(), 0, reason);
44
+ strict_1.default.deepEqual(events, [{ type: 'checkpointed', requestId: 'request', skipped: true }]);
45
+ }
46
+ });
47
+ (0, node_test_1.it)('rejects a failed push and cancels when a turn starts during the push', async (t) => {
48
+ const { agent, state, events } = fixture();
49
+ const checkpoint = t.mock.method(agent, 'checkpoint', async () => { throw new Error('Git unavailable'); });
50
+ await strict_1.default.rejects(agent.checkpointIfIdle(1000, 'request'), /Git unavailable/);
51
+ strict_1.default.equal(events.length, 0);
52
+ checkpoint.mock.mockImplementation(async () => { state.current = {}; });
53
+ await agent.checkpointIfIdle(1000, 'request');
54
+ strict_1.default.deepEqual(events, [{ type: 'checkpointed', requestId: 'request', skipped: true, idleConfirmed: false }]);
55
+ });
56
+ });
57
+ //# sourceMappingURL=idle-checkpoint.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle-checkpoint.test.js","sourceRoot":"","sources":["../src/idle-checkpoint.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAuC;AACvC,yCAAwC;AACxC,uCAAwC;AAIxC,SAAS,OAAO,CAAC,OAAO,GAAG,IAAI;IAC7B,MAAM,MAAM,GAAoB,EAAE,CAAA;IAClC,MAAM,KAAK,GAAG,IAAI,sBAAY,CAAC;QAC7B,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS;QAC1C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5H,EAAE;QACvB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;QACvC,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;KAClE,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,KAAmF,CAAA;IACjG,KAAK,CAAC,cAAc,GAAG,CAAC,CAAA;IACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACjC,CAAC;AAED,IAAA,oBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAA,cAAE,EAAC,6DAA6D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAA;QACnC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE;YAC/D,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QACF,MAAM,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAC7C,gBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;QAC5C,gBAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACjH,CAAC,CAAC,CAAA;IAEF,IAAA,cAAE,EAAC,uEAAuE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACtF,KAAK,MAAM,MAAM,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC9D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAA;YAC7D,IAAI,MAAM,KAAK,QAAQ;gBAAE,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA;YAC3C,IAAI,MAAM,KAAK,QAAQ;gBAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC7C,IAAI,MAAM,KAAK,QAAQ;gBAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC1D,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAA;YACrE,MAAM,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YAC7C,gBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;YACpD,gBAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAA,cAAE,EAAC,sEAAsE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAA;QAC1C,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QACzG,MAAM,gBAAM,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC,CAAA;QAChF,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC9B,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;QACtE,MAAM,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAC7C,gBAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACjH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAMA,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
@@ -6,6 +6,7 @@ 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");
9
10
  const mcp_tools_1 = require("./mcp/mcp-tools");
10
11
  const model_1 = require("./model");
11
12
  const exec_tools_1 = require("./tools/exec-tools");
@@ -35,7 +36,7 @@ async function runAgentLoop(config, reporter) {
35
36
  };
36
37
  try {
37
38
  const result = await (0, ai_1.generateText)({
38
- model: (0, model_1.resolveLanguageModel)(config.provider, config.model),
39
+ model: (0, model_1.resolveLanguageModel)(config.provider, config.model, attribution_1.OPENROUTER_APPS.CODING_AGENT),
39
40
  system: SYSTEM_PROMPT,
40
41
  prompt: config.task,
41
42
  tools,
package/dist/loop.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
package/dist/model.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import type { LanguageModel } from 'ai';
2
+ import { type OpenRouterApp } from './attribution';
2
3
  import type { ModelProviderConfig } from './config';
3
- export declare function resolveLanguageModel(provider: ModelProviderConfig, modelId: string): LanguageModel;
4
+ /** `app` names the workload on the OpenRouter dashboard; without it the calls show as "Unknown". */
5
+ export declare function resolveLanguageModel(provider: ModelProviderConfig, modelId: string, app: OpenRouterApp): LanguageModel;
4
6
  //# sourceMappingURL=model.d.ts.map
@@ -1 +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"}
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,EAAwB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD,oGAAoG;AACpG,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,aAAa,CAWtH"}
package/dist/model.js CHANGED
@@ -5,9 +5,11 @@ exports.resolveLanguageModel = resolveLanguageModel;
5
5
  // a bare Anthropic id with an Anthropic key still works for the original one-shot coding VMs.
6
6
  const anthropic_1 = require("@ai-sdk/anthropic");
7
7
  const ai_sdk_provider_1 = require("@openrouter/ai-sdk-provider");
8
- function resolveLanguageModel(provider, modelId) {
8
+ const attribution_1 = require("./attribution");
9
+ /** `app` names the workload on the OpenRouter dashboard; without it the calls show as "Unknown". */
10
+ function resolveLanguageModel(provider, modelId, app) {
9
11
  if (provider.openrouterApiKey) {
10
- const openrouter = (0, ai_sdk_provider_1.createOpenRouter)({ apiKey: provider.openrouterApiKey });
12
+ const openrouter = (0, ai_sdk_provider_1.createOpenRouter)({ apiKey: provider.openrouterApiKey, headers: (0, attribution_1.openRouterAppHeaders)(app) });
11
13
  return openrouter.chat(modelId);
12
14
  }
13
15
  if (provider.anthropicApiKey || process.env.ANTHROPIC_API_KEY) {
package/dist/model.js.map CHANGED
@@ -1 +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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";;AASA,oDAWC;AApBD,8FAA8F;AAC9F,8FAA8F;AAC9F,iDAAmD;AACnD,iEAA8D;AAE9D,+CAAwE;AAGxE,oGAAoG;AACpG,SAAgB,oBAAoB,CAAC,QAA6B,EAAE,OAAe,EAAE,GAAkB;IACrG,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAA,kCAAgB,EAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAA,kCAAoB,EAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9G,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"}
@@ -37,11 +37,12 @@ export type AgentSessionCommand =
37
37
  | {
38
38
  type: 'abort';
39
39
  }
40
- /** Flush conversation + workspace to the git server now (before suspend / stop). */
40
+ /** Flush conversation + workspace to durable storage now (before suspend / stop). */
41
41
  | {
42
42
  type: 'checkpoint';
43
43
  requestId?: string;
44
44
  waitForTurn?: boolean;
45
+ onlyIfIdleForMs?: number;
45
46
  };
46
47
  export interface AgentSessionCommandAck {
47
48
  ok: boolean;
@@ -116,11 +117,13 @@ export type AgentSessionEvent = BaseEvent & (
116
117
  messageId?: string;
117
118
  files: AgentSessionFile[];
118
119
  }
119
- /** Conversation + workspace committed to the git server. */
120
+ /** Conversation + workspace persisted (project Git commit or session snapshot). */
120
121
  | {
121
122
  type: 'checkpointed';
122
123
  commit?: string;
123
124
  requestId?: string;
125
+ skipped?: boolean;
126
+ idleConfirmed?: boolean;
124
127
  } | {
125
128
  type: 'done';
126
129
  messageId: string;
@@ -181,6 +184,9 @@ export declare const AGENT_ENV: {
181
184
  readonly GIT_BRANCH: "GIT_BRANCH";
182
185
  /** secret */
183
186
  readonly GIT_ACCESS_TOKEN: "GIT_ACCESS_TOKEN";
187
+ readonly SESSION_STORAGE_URL: "SESSION_STORAGE_URL";
188
+ /** secret: scoped to this session's snapshots */
189
+ readonly SESSION_STORAGE_TOKEN: "SESSION_STORAGE_TOKEN";
184
190
  };
185
191
  export declare const AGENT_SECRET_ENV_KEYS: readonly string[];
186
192
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
package/dist/protocol.js CHANGED
@@ -92,6 +92,9 @@ exports.AGENT_ENV = {
92
92
  GIT_BRANCH: 'GIT_BRANCH',
93
93
  /** secret */
94
94
  GIT_ACCESS_TOKEN: 'GIT_ACCESS_TOKEN',
95
+ SESSION_STORAGE_URL: 'SESSION_STORAGE_URL',
96
+ /** secret: scoped to this session's snapshots */
97
+ SESSION_STORAGE_TOKEN: 'SESSION_STORAGE_TOKEN',
95
98
  };
96
99
  exports.AGENT_SECRET_ENV_KEYS = [
97
100
  exports.AGENT_ENV.AGENT_SOCKET_TOKEN,
@@ -100,6 +103,7 @@ exports.AGENT_SECRET_ENV_KEYS = [
100
103
  exports.AGENT_ENV.FILINGRAMP_AUTH_TOKEN,
101
104
  exports.AGENT_ENV.FILINGRAMP_CLIENT_SECRET,
102
105
  exports.AGENT_ENV.GIT_ACCESS_TOKEN,
106
+ exports.AGENT_ENV.SESSION_STORAGE_TOKEN,
103
107
  exports.AGENT_ENV.MCP_SERVERS_JSON,
104
108
  ];
105
109
  //# sourceMappingURL=protocol.js.map
@@ -1 +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;AAmFD,oDAGC;AAoBD,kDAQC;AAxHY,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;AAmFD,SAAgB,oBAAoB,CAAC,KAAwB;;IAC3D,mFAAmF;IACnF,OAAO,qBAAqB,KAAK,CAAC,SAAS,IAAI,MAAA,KAAK,CAAC,UAAU,mCAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,EAAE,CAAA;AACnG,CAAC;AAEY,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,wFAAwF;IACxF,qBAAqB,EAAE,uBAAuB;IAC9C,qFAAqF;IACrF,oBAAoB,EAAE,sBAAsB;IAC5C,aAAa;IACb,wBAAwB,EAAE,0BAA0B;IACpD,mEAAmE;IACnE,wBAAwB,EAAE,0BAA0B;IACpD,uDAAuD;IACvD,8BAA8B,EAAE,gCAAgC;IAChE,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,qBAAqB;IAC/B,iBAAS,CAAC,wBAAwB;IAClC,iBAAS,CAAC,gBAAgB;IAC1B,iBAAS,CAAC,gBAAgB;CAC3B,CAAA"}
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;AAmFD,oDAGC;AAoBD,kDAQC;AAxHY,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;AAmFD,SAAgB,oBAAoB,CAAC,KAAwB;;IAC3D,mFAAmF;IACnF,OAAO,qBAAqB,KAAK,CAAC,SAAS,IAAI,MAAA,KAAK,CAAC,UAAU,mCAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,EAAE,CAAA;AACnG,CAAC;AAEY,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,wFAAwF;IACxF,qBAAqB,EAAE,uBAAuB;IAC9C,qFAAqF;IACrF,oBAAoB,EAAE,sBAAsB;IAC5C,aAAa;IACb,wBAAwB,EAAE,0BAA0B;IACpD,mEAAmE;IACnE,wBAAwB,EAAE,0BAA0B;IACpD,uDAAuD;IACvD,8BAA8B,EAAE,gCAAgC;IAChE,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,oFAAoF;IACpF,UAAU,EAAE,YAAY;IACxB,aAAa;IACb,gBAAgB,EAAE,kBAAkB;IACpC,mBAAmB,EAAE,qBAAqB;IAC1C,iDAAiD;IACjD,qBAAqB,EAAE,uBAAuB;CACtC,CAAA;AAEG,QAAA,qBAAqB,GAAsB;IACtD,iBAAS,CAAC,kBAAkB;IAC5B,iBAAS,CAAC,kBAAkB;IAC5B,iBAAS,CAAC,iBAAiB;IAC3B,iBAAS,CAAC,qBAAqB;IAC/B,iBAAS,CAAC,wBAAwB;IAClC,iBAAS,CAAC,gBAAgB;IAC1B,iBAAS,CAAC,qBAAqB;IAC/B,iBAAS,CAAC,gBAAgB;CAC3B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"filingramp-tools.d.ts","sourceRoot":"","sources":["../../src/research/filingramp-tools.ts"],"names":[],"mappings":"AAQA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAA;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAwJhF,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAiZ3F"}
1
+ {"version":3,"file":"filingramp-tools.d.ts","sourceRoot":"","sources":["../../src/research/filingramp-tools.ts"],"names":[],"mappings":"AAQA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAA;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAwJhF,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA2c3F"}
@@ -290,16 +290,40 @@ function createFilingRampTools(options) {
290
290
  return { rows, totalRows: items.length, truncated: (_c = payload === null || payload === void 0 ? void 0 : payload.truncated) !== null && _c !== void 0 ? _c : false, appliedFilters: filters, saved };
291
291
  },
292
292
  });
293
+ // GET /v1/filings/:id takes the Mongo id only; a SERFF tracking number is resolved through
294
+ // the scoped filing search first, so the model can read a filing straight from a document hit.
295
+ const OBJECT_ID = /^[0-9a-f]{24}$/i;
296
+ const resolveFilingId = async (id) => {
297
+ if (OBJECT_ID.test(id))
298
+ return id;
299
+ const searchType = (0, scope_1.resolveSearchType)(scope, industryData);
300
+ const filters = (0, scope_1.scopeFilingsFilters)(scope, [{ field: 'trackingNumbers', comparisonOperator: 'in', value: [id] }]);
301
+ const payload = searchType === 'INDUSTRY'
302
+ ? await client.request('/v1/search/filings', {
303
+ method: 'POST',
304
+ body: { filters, limit: 1, offset: 0, searchType, sortKey: '_id', sortDirection: 1 },
305
+ })
306
+ : await client.request('/v2/search/filings', {
307
+ method: 'POST',
308
+ body: { filters, fields: ['_id', 'trackingNumber'], limit: 1, sortKey: '_id', sortDirection: 1, searchType },
309
+ });
310
+ const match = asRecordList(payload)[0];
311
+ if (!(match === null || match === void 0 ? void 0 : match._id)) {
312
+ throw new Error(`No filing with tracking number ${id} inside the session scope. Use the filing _id (filingId on search_documents hits, _id on search_filings rows).`);
313
+ }
314
+ return String(match._id);
315
+ };
293
316
  const getFiling = (0, ai_1.tool)({
294
317
  description: 'One filing in full: general information, forms, rates, supporting documents, objection letters, dispositions and every attachment (with the `key` download_attachment needs). Large: ask for `include` sections only when you need them.',
295
318
  inputSchema: zod_1.z.object({
296
- id: zod_1.z.string().min(1).max(100).describe('Filing _id or SERFF tracking number'),
319
+ id: zod_1.z.string().min(1).max(100).describe('Filing _id (filingId on search_documents hits) or SERFF tracking number'),
297
320
  include: zod_1.z.array(zod_1.z.enum(['general', 'forms', 'rates', 'supportings', 'objections', 'dispositions', 'attachments'])).optional(),
298
321
  saveAs: zod_1.z.string().max(200).optional().describe('Write the full filing JSON to this workspace path'),
299
322
  }),
300
323
  execute: async (input) => {
301
324
  var _b;
302
- const filing = await client.request(`/v1/filings/${encodeURIComponent(input.id)}`);
325
+ const filingId = await resolveFilingId(input.id);
326
+ const filing = await client.request(`/v1/filings/${encodeURIComponent(filingId)}`);
303
327
  const saved = input.saveAs ? await writeWorkspaceFile(workspaceDir, input.saveAs, JSON.stringify(filing, null, 2)) : undefined;
304
328
  const include = new Set((_b = input.include) !== null && _b !== void 0 ? _b : ['general', 'attachments']);
305
329
  const out = {
@@ -390,7 +414,7 @@ function createFilingRampTools(options) {
390
414
  .array(zod_1.z.enum(filingramp_contract_1.DOCUMENT_INDEXES))
391
415
  .min(1)
392
416
  .optional()
393
- .describe('Which document collections; default ["filings"]'),
417
+ .describe('Which document collections; default ["filings"]. A collection this deployment has no index for fails on its own (requests[].failed) while the others still answer.'),
394
418
  matchMode: zod_1.z.enum(['EXACT', 'ANY_WORD', 'PROXIMITY', 'PREFIX', 'FUZZY', 'BOOLEAN']).optional(),
395
419
  filters: zod_1.z.array(filterInputSchema).max(20).optional().describe('See the tool description for fields and operators'),
396
420
  scope: zod_1.z.enum(['ACCOUNT', 'INDUSTRY']).optional(),
@@ -398,7 +422,7 @@ function createFilingRampTools(options) {
398
422
  saveText: zod_1.z.boolean().optional(),
399
423
  }),
400
424
  execute: async (input) => {
401
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
425
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
402
426
  const searchType = (_b = input.searchType) !== null && _b !== void 0 ? _b : 'KEYWORD';
403
427
  const suffix = searchType === 'KEYWORD' ? 'keyword_index' : 'semantic_index';
404
428
  const matchMode = (_c = input.matchMode) !== null && _c !== void 0 ? _c : (searchType === 'KEYWORD' ? 'EXACT' : 'ANY_WORD');
@@ -406,8 +430,11 @@ function createFilingRampTools(options) {
406
430
  const labels = await scopeLineLabels(scopeValue);
407
431
  const requests = [];
408
432
  const hits = [];
433
+ const failures = [];
434
+ let answered = 0;
409
435
  // One request per index group: each group has its own filter vocabulary, and one filter
410
- // outside it fails the whole request.
436
+ // outside it fails the whole request. A group whose indexes an environment does not have
437
+ // (circulars on most deployments) fails alone; the other groups still answer.
411
438
  for (const group of (0, filingramp_contract_1.documentIndexGroups)((_d = input.indexes) !== null && _d !== void 0 ? _d : ['filings'])) {
412
439
  const own = (0, filingramp_contract_1.normalizeDocumentFilters)(input.filters, group);
413
440
  const scoped = (0, scope_1.scopeDocumentFilters)(scope, own.filters, group.fields, labels);
@@ -416,27 +443,46 @@ function createFilingRampTools(options) {
416
443
  requests.push({ ...entry, skipped: "no filing in scope carries the scope's lines, so no document in these indexes can match" });
417
444
  continue;
418
445
  }
419
- const payload = await requestDocuments({
420
- searchType,
421
- searchText: input.query,
422
- matchMode,
423
- indexNames: group.indexes.map((index) => `${index}_${suffix}`),
424
- scope: scopeValue,
425
- limit: (_e = input.limit) !== null && _e !== void 0 ? _e : 50,
426
- filters: scoped.filters,
427
- });
428
- hits.push(...payload);
429
- requests.push(entry);
446
+ try {
447
+ const payload = await requestDocuments({
448
+ searchType,
449
+ searchText: input.query,
450
+ matchMode,
451
+ indexNames: group.indexes.map((index) => `${index}_${suffix}`),
452
+ scope: scopeValue,
453
+ limit: (_e = input.limit) !== null && _e !== void 0 ? _e : 50,
454
+ filters: scoped.filters,
455
+ });
456
+ hits.push(...payload);
457
+ requests.push(entry);
458
+ answered += 1;
459
+ }
460
+ catch (error) {
461
+ const failure = error instanceof Error ? error : new Error(String(error));
462
+ failures.push(failure);
463
+ requests.push({ ...entry, failed: failure.message });
464
+ }
430
465
  }
466
+ // Every group failed: the first failure carries the right instruction (fix the filter,
467
+ // or fall back to downloads). A partial failure is reported per group instead.
468
+ if (answered === 0 && failures.length > 0)
469
+ throw failures[0];
431
470
  hits.sort((a, b) => { var _b, _c; return Number((_b = b._score) !== null && _b !== void 0 ? _b : 0) - Number((_c = a._score) !== null && _c !== void 0 ? _c : 0); });
432
471
  const results = [];
433
472
  for (const hit of hits.slice(0, MAX_DOC_HITS)) {
434
473
  const source = ((_f = hit._source) !== null && _f !== void 0 ? _f : {});
435
474
  const highlight = ((_g = hit.highlight) !== null && _g !== void 0 ? _g : {});
436
475
  const fragments = Object.values(highlight).flat().slice(0, MAX_HIGHLIGHTS);
437
- const text = typeof source.attachmentText === 'string' ? source.attachmentText : undefined;
438
- const trackingNumber = String((_l = (_k = (_j = (_h = source.trackingNumber) !== null && _h !== void 0 ? _h : source.filingTrackingNumber) !== null && _j !== void 0 ? _j : source.resourceId) !== null && _k !== void 0 ? _k : hit._id) !== null && _l !== void 0 ? _l : 'unknown');
439
- const name = String((_r = (_q = (_p = (_o = (_m = source.name) !== null && _m !== void 0 ? _m : source.attachmentName) !== null && _o !== void 0 ? _o : source.formNumber) !== null && _p !== void 0 ? _p : source.title) !== null && _q !== void 0 ? _q : hit._id) !== null && _r !== void 0 ? _r : 'document');
476
+ // An indexed document is the filing's metadata at the top level plus one sub-object
477
+ // for the document itself (form, rate, supporting, attachment, disposition …) that
478
+ // carries attachmentKey / attachmentText; objection letters keep their text top-level.
479
+ const document = Object.values(source).find((value) => !!value && typeof value === 'object' && !Array.isArray(value) && ('attachmentText' in value || 'attachmentKey' in value));
480
+ const textValue = (_j = (_h = document === null || document === void 0 ? void 0 : document.attachmentText) !== null && _h !== void 0 ? _h : source.attachmentText) !== null && _j !== void 0 ? _j : source.allMetadataText;
481
+ const text = typeof textValue === 'string' && textValue.length > 0 ? textValue : undefined;
482
+ const keyValue = (_l = (_k = document === null || document === void 0 ? void 0 : document.attachmentKey) !== null && _k !== void 0 ? _k : source.attachmentKey) !== null && _l !== void 0 ? _l : source.key;
483
+ const attachmentKey = typeof keyValue === 'string' ? keyValue : undefined;
484
+ const trackingNumber = String((_q = (_p = (_o = (_m = source.trackingNumber) !== null && _m !== void 0 ? _m : source.filingTrackingNumber) !== null && _o !== void 0 ? _o : source.resourceId) !== null && _p !== void 0 ? _p : hit._id) !== null && _q !== void 0 ? _q : 'unknown');
485
+ const name = String((_x = (_w = (_v = (_u = (_t = (_s = (_r = (attachmentKey ? decodeURIComponent(attachmentKey.slice(attachmentKey.lastIndexOf('/') + 1)) : undefined)) !== null && _r !== void 0 ? _r : document === null || document === void 0 ? void 0 : document.formNumber) !== null && _s !== void 0 ? _s : source.name) !== null && _t !== void 0 ? _t : source.attachmentName) !== null && _u !== void 0 ? _u : source.formNumber) !== null && _v !== void 0 ? _v : source.title) !== null && _w !== void 0 ? _w : hit._id) !== null && _x !== void 0 ? _x : 'document');
440
486
  let textPath;
441
487
  if (input.saveText && text) {
442
488
  textPath = `data/text/${safeName(trackingNumber)}/${safeName(name)}.txt`;
@@ -447,14 +493,15 @@ function createFilingRampTools(options) {
447
493
  index: hit._index,
448
494
  score: hit._score,
449
495
  resourceType: source.resourceType,
496
+ filingId: source.filingId,
450
497
  trackingNumber,
451
498
  state: source.state,
452
499
  filingType: source.filingType,
453
500
  dateSubmitted: source.dateSubmitted,
454
501
  name,
455
- formNumber: source.formNumber,
456
- attachmentKey: (_s = source.key) !== null && _s !== void 0 ? _s : source.attachmentKey,
457
- textChars: (_t = text === null || text === void 0 ? void 0 : text.length) !== null && _t !== void 0 ? _t : 0,
502
+ formNumber: (_y = document === null || document === void 0 ? void 0 : document.formNumber) !== null && _y !== void 0 ? _y : source.formNumber,
503
+ attachmentKey,
504
+ textChars: (_z = text === null || text === void 0 ? void 0 : text.length) !== null && _z !== void 0 ? _z : 0,
458
505
  textPath,
459
506
  highlights: fragments.map((fragment) => fragment.replace(/<\/?em>/g, '**').slice(0, 300)),
460
507
  });