@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.
- package/dist/attribution.d.ts +17 -0
- package/dist/attribution.d.ts.map +1 -0
- package/dist/attribution.js +37 -0
- package/dist/attribution.js.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/idle-checkpoint.test.d.ts +2 -0
- package/dist/idle-checkpoint.test.d.ts.map +1 -0
- package/dist/idle-checkpoint.test.js +57 -0
- package/dist/idle-checkpoint.test.js.map +1 -0
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +2 -1
- package/dist/loop.js.map +1 -1
- package/dist/model.d.ts +3 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +4 -2
- package/dist/model.js.map +1 -1
- package/dist/protocol.d.ts +8 -2
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +4 -0
- package/dist/protocol.js.map +1 -1
- package/dist/research/filingramp-tools.d.ts.map +1 -1
- package/dist/research/filingramp-tools.js +69 -22
- package/dist/research/filingramp-tools.js.map +1 -1
- package/dist/session-storage-sync.d.ts +15 -0
- package/dist/session-storage-sync.d.ts.map +1 -0
- package/dist/session-storage-sync.js +159 -0
- package/dist/session-storage-sync.js.map +1 -0
- package/dist/session-storage-sync.test.d.ts +2 -0
- package/dist/session-storage-sync.test.d.ts.map +1 -0
- package/dist/session-storage-sync.test.js +98 -0
- package/dist/session-storage-sync.test.js.map +1 -0
- package/dist/session.d.ts +4 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +41 -12
- package/dist/session.js.map +1 -1
- 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;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"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"}
|
package/dist/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"
|
|
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":";;
|
|
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
|
-
|
|
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
|
package/dist/model.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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":";;
|
|
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"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -37,11 +37,12 @@ export type AgentSessionCommand =
|
|
|
37
37
|
| {
|
|
38
38
|
type: 'abort';
|
|
39
39
|
}
|
|
40
|
-
/** Flush conversation + workspace to
|
|
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
|
|
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 {};
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,mBAAmB,EAAG,qBAA8B,CAAA;AACjE,eAAO,MAAM,qBAAqB,EAAG,uBAAgC,CAAA;AAErE,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAA;IAChD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,oGAAoG;AACpG,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,mBAAmB;AAC7B,0FAA0F;AACxF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAA;CAAE;AAC9F,wFAAwF;GACtF;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE;AACnB,
|
|
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
|
package/dist/protocol.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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
|
|
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
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
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
|
-
|
|
438
|
-
|
|
439
|
-
|
|
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
|
|
457
|
-
textChars: (
|
|
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
|
});
|