@multiplayer-app/agent 0.1.10 → 0.1.12

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 (106) hide show
  1. package/dist/agent/model-failure.d.ts +10 -0
  2. package/dist/agent/model-failure.d.ts.map +1 -0
  3. package/dist/agent/model-failure.js +50 -0
  4. package/dist/agent/model-failure.js.map +1 -0
  5. package/dist/agent/profiles/research.d.ts.map +1 -1
  6. package/dist/agent/profiles/research.js +21 -11
  7. package/dist/agent/profiles/research.js.map +1 -1
  8. package/dist/agent/progress-reminder.test.d.ts +2 -0
  9. package/dist/agent/progress-reminder.test.d.ts.map +1 -0
  10. package/dist/agent/progress-reminder.test.js +20 -0
  11. package/dist/agent/progress-reminder.test.js.map +1 -0
  12. package/dist/agent/turn-runner.d.ts +18 -1
  13. package/dist/agent/turn-runner.d.ts.map +1 -1
  14. package/dist/agent/turn-runner.js +60 -7
  15. package/dist/agent/turn-runner.js.map +1 -1
  16. package/dist/context-pruning.d.ts +13 -0
  17. package/dist/context-pruning.d.ts.map +1 -0
  18. package/dist/context-pruning.js +61 -0
  19. package/dist/context-pruning.js.map +1 -0
  20. package/dist/context-pruning.test.d.ts +2 -0
  21. package/dist/context-pruning.test.d.ts.map +1 -0
  22. package/dist/context-pruning.test.js +48 -0
  23. package/dist/context-pruning.test.js.map +1 -0
  24. package/dist/models/resolve-model.d.ts.map +1 -1
  25. package/dist/models/resolve-model.js +3 -1
  26. package/dist/models/resolve-model.js.map +1 -1
  27. package/dist/models/usage.d.ts +4 -0
  28. package/dist/models/usage.d.ts.map +1 -1
  29. package/dist/models/usage.js +8 -2
  30. package/dist/models/usage.js.map +1 -1
  31. package/dist/research/extract-texts.d.ts +41 -0
  32. package/dist/research/extract-texts.d.ts.map +1 -0
  33. package/dist/research/extract-texts.js +239 -0
  34. package/dist/research/extract-texts.js.map +1 -0
  35. package/dist/research/extract-texts.test.d.ts +2 -0
  36. package/dist/research/extract-texts.test.d.ts.map +1 -0
  37. package/dist/research/extract-texts.test.js +120 -0
  38. package/dist/research/extract-texts.test.js.map +1 -0
  39. package/dist/research/extraction-tool.d.ts +1 -1
  40. package/dist/research/extraction-tool.d.ts.map +1 -1
  41. package/dist/research/extraction-tool.js +24 -50
  42. package/dist/research/extraction-tool.js.map +1 -1
  43. package/dist/research/extraction-tool.test.js +2 -0
  44. package/dist/research/extraction-tool.test.js.map +1 -1
  45. package/dist/research/filingramp/attachment-tools.d.ts.map +1 -1
  46. package/dist/research/filingramp/attachment-tools.js +122 -23
  47. package/dist/research/filingramp/attachment-tools.js.map +1 -1
  48. package/dist/research/filingramp/document-search-tool.d.ts.map +1 -1
  49. package/dist/research/filingramp/document-search-tool.js +88 -30
  50. package/dist/research/filingramp/document-search-tool.js.map +1 -1
  51. package/dist/research/filingramp/filing-detail-tool.d.ts +4 -0
  52. package/dist/research/filingramp/filing-detail-tool.d.ts.map +1 -1
  53. package/dist/research/filingramp/filing-detail-tool.js +57 -10
  54. package/dist/research/filingramp/filing-detail-tool.js.map +1 -1
  55. package/dist/research/filingramp/shared.d.ts +16 -0
  56. package/dist/research/filingramp/shared.d.ts.map +1 -1
  57. package/dist/research/filingramp/shared.js +74 -2
  58. package/dist/research/filingramp/shared.js.map +1 -1
  59. package/dist/research/filingramp-contract.d.ts.map +1 -1
  60. package/dist/research/filingramp-contract.js +8 -2
  61. package/dist/research/filingramp-contract.js.map +1 -1
  62. package/dist/research/filingramp-tools.d.ts +1 -0
  63. package/dist/research/filingramp-tools.d.ts.map +1 -1
  64. package/dist/research/filingramp-tools.js +5 -0
  65. package/dist/research/filingramp-tools.js.map +1 -1
  66. package/dist/research/filingramp-tools.test.js +93 -0
  67. package/dist/research/filingramp-tools.test.js.map +1 -1
  68. package/dist/research/prompt.d.ts.map +1 -1
  69. package/dist/research/prompt.js +16 -7
  70. package/dist/research/prompt.js.map +1 -1
  71. package/dist/runtime/config.d.ts.map +1 -1
  72. package/dist/runtime/config.js +6 -5
  73. package/dist/runtime/config.js.map +1 -1
  74. package/dist/runtime/lambda-microvm.js +73 -25
  75. package/dist/runtime/lambda-microvm.js.map +1 -1
  76. package/dist/runtime/microvm-bootstrap.d.ts +18 -0
  77. package/dist/runtime/microvm-bootstrap.d.ts.map +1 -0
  78. package/dist/runtime/microvm-bootstrap.js +77 -0
  79. package/dist/runtime/microvm-bootstrap.js.map +1 -0
  80. package/dist/runtime/microvm-bootstrap.test.d.ts +2 -0
  81. package/dist/runtime/microvm-bootstrap.test.d.ts.map +1 -0
  82. package/dist/runtime/microvm-bootstrap.test.js +50 -0
  83. package/dist/runtime/microvm-bootstrap.test.js.map +1 -0
  84. package/dist/session/runtime.d.ts +8 -0
  85. package/dist/session/runtime.d.ts.map +1 -1
  86. package/dist/session/runtime.js +49 -8
  87. package/dist/session/runtime.js.map +1 -1
  88. package/dist/tool-call-repair.d.ts +11 -0
  89. package/dist/tool-call-repair.d.ts.map +1 -0
  90. package/dist/tool-call-repair.js +91 -0
  91. package/dist/tool-call-repair.js.map +1 -0
  92. package/dist/tool-call-repair.test.d.ts +2 -0
  93. package/dist/tool-call-repair.test.d.ts.map +1 -0
  94. package/dist/tool-call-repair.test.js +50 -0
  95. package/dist/tool-call-repair.test.js.map +1 -0
  96. package/dist/tools/exec-tools.d.ts +1 -0
  97. package/dist/tools/exec-tools.d.ts.map +1 -1
  98. package/dist/tools/exec-tools.js +23 -3
  99. package/dist/tools/exec-tools.js.map +1 -1
  100. package/dist/transport/protocol.d.ts +9 -4
  101. package/dist/transport/protocol.d.ts.map +1 -1
  102. package/dist/transport/protocol.js +6 -6
  103. package/dist/transport/protocol.js.map +1 -1
  104. package/dist/transport/protocol.test.js +1 -1
  105. package/dist/transport/protocol.test.js.map +1 -1
  106. package/package.json +1 -1
@@ -10,9 +10,12 @@ const node_path_1 = __importDefault(require("node:path"));
10
10
  const node_util_1 = require("node:util");
11
11
  const ai_1 = require("ai");
12
12
  const zod_1 = require("zod");
13
+ const filing_detail_tool_1 = require("./filing-detail-tool");
13
14
  const shared_1 = require("./shared");
14
15
  const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
15
16
  const MAX_INLINE_TEXT_CHARS = 4000;
17
+ const MAX_FETCH_ATTACHMENTS = 2000;
18
+ const FETCH_CONCURRENCY = 4;
16
19
  /** PDF → text with whatever the image has (mupdf first, poppler second). Empty text = scanned or protected. */
17
20
  async function extractPdfText(file, output) {
18
21
  const attempts = [
@@ -32,9 +35,40 @@ async function extractPdfText(file, output) {
32
35
  return 0;
33
36
  }
34
37
  function createAttachmentTools(options) {
35
- const { client, workspaceDir } = options;
38
+ const { client, workspaceDir, onProgress } = options;
39
+ const resolveFilingId = (0, filing_detail_tool_1.createFilingIdResolver)(options);
40
+ /** One attachment to data/attachments/, PDF text to data/text/. With `reuse`, a file already on disk is not fetched again. */
41
+ const saveAttachment = async (input) => {
42
+ var _a, _b, _c;
43
+ const folder = (0, shared_1.safeName)((_a = input.trackingNumber) !== null && _a !== void 0 ? _a : 'misc');
44
+ const fileName = (0, shared_1.safeName)((_c = (_b = input.name) !== null && _b !== void 0 ? _b : input.key.split('/').pop()) !== null && _c !== void 0 ? _c : 'attachment');
45
+ const filePath = `data/attachments/${folder}/${fileName}`;
46
+ const absoluteFile = node_path_1.default.resolve(workspaceDir, filePath);
47
+ const isPdfName = /\.pdf$/i.test(fileName);
48
+ const textPathFor = () => `data/text/${folder}/${fileName.replace(/\.pdf$/i, '')}.txt`;
49
+ if (input.reuse && (await (0, shared_1.exists)(absoluteFile))) {
50
+ const bytes = (await node_fs_1.promises.stat(absoluteFile)).size;
51
+ const textFile = node_path_1.default.resolve(workspaceDir, textPathFor());
52
+ const textChars = (await (0, shared_1.exists)(textFile)) ? (await node_fs_1.promises.stat(textFile)).size : 0;
53
+ return { path: filePath, bytes, isPdf: isPdfName, textPath: textChars > 0 ? textPathFor() : undefined, textChars, reused: true };
54
+ }
55
+ const bytes = await client.downloadAttachment(input.key);
56
+ const written = await (0, shared_1.writeWorkspaceFile)(workspaceDir, filePath, bytes);
57
+ const isPdf = isPdfName || bytes.subarray(0, 4).toString() === '%PDF';
58
+ let textPath;
59
+ let textChars = 0;
60
+ if (isPdf && input.extractText !== false) {
61
+ textPath = textPathFor();
62
+ const absoluteText = node_path_1.default.resolve(workspaceDir, textPath);
63
+ await node_fs_1.promises.mkdir(node_path_1.default.dirname(absoluteText), { recursive: true });
64
+ textChars = await extractPdfText(absoluteFile, absoluteText);
65
+ if (textChars === 0)
66
+ textPath = undefined;
67
+ }
68
+ return { path: written.path, bytes: written.bytes, isPdf, textPath, textChars, reused: false };
69
+ };
36
70
  const downloadAttachment = (0, ai_1.tool)({
37
- description: 'Download one attachment by key into data/attachments/<trackingNumber>/<name> and, for PDFs, extract its text to data/text/<trackingNumber>/<name>.txt. Use when search_documents has no text for a document (large or scanned PDFs) or you need the original file. Returns paths and sizes, never the content.',
71
+ description: 'Download ONE attachment by key into data/attachments/<trackingNumber>/<name> and, for PDFs, extract its text to data/text/<trackingNumber>/<name>.txt. For more than a few documents use fetch_attachments instead. Returns paths and sizes, never the content.',
38
72
  inputSchema: zod_1.z.object({
39
73
  key: zod_1.z.string().min(1).max(2000),
40
74
  trackingNumber: zod_1.z.string().max(100).optional(),
@@ -42,29 +76,94 @@ function createAttachmentTools(options) {
42
76
  extractText: zod_1.z.boolean().optional().describe('default true for PDFs'),
43
77
  }),
44
78
  execute: async (input) => {
79
+ const saved = await saveAttachment(input);
80
+ return {
81
+ ...saved,
82
+ note: saved.isPdf && saved.textChars === 0 ? 'No extractable text (scanned or protected PDF) — record it as unreadable in findings.' : undefined,
83
+ };
84
+ },
85
+ });
86
+ const fetchAttachments = (0, ai_1.tool)({
87
+ description: 'Download many attachments in one call, with PDF text extracted to data/text/<trackingNumber>/. Give either a manifest (JSONL rows with `key`, optional `trackingNumber` and `name` — get_filing writes one, and search hits saved with saveHits work too) or filingIds (their attachments are listed for you). Files already on disk are kept, so a repeated call resumes. Writes one row per attachment (path, textPath, textChars, readable, error) to outputManifest and returns only counts. This is the only way to read more than a handful of documents: never call download_attachment in a loop.',
88
+ inputSchema: zod_1.z.object({
89
+ manifest: zod_1.z.string().min(1).max(300).optional().describe('Workspace JSONL/JSON manifest of attachments'),
90
+ filingIds: zod_1.z.array(zod_1.z.string().min(1).max(100)).min(1).max(50).optional().describe('Filing _ids or tracking numbers whose attachments to fetch'),
91
+ sections: zod_1.z.array(zod_1.z.enum(['forms', 'rates', 'supportings', 'objections', 'dispositions'])).optional().describe('Only attachments in these filing sections'),
92
+ nameMatch: zod_1.z.string().max(200).optional().describe('Case-insensitive regex on the attachment name, e.g. "\\\\.pdf$" or "rule|manual"'),
93
+ limit: zod_1.z.number().int().min(1).max(MAX_FETCH_ATTACHMENTS).optional(),
94
+ outputManifest: zod_1.z.string().max(300).optional().describe('Default data/manifests/fetched-<n>.jsonl'),
95
+ }),
96
+ execute: async (input, { toolCallId }) => {
45
97
  var _a, _b, _c;
46
- const bytes = await client.downloadAttachment(input.key);
47
- const folder = (0, shared_1.safeName)((_a = input.trackingNumber) !== null && _a !== void 0 ? _a : 'misc');
48
- const fileName = (0, shared_1.safeName)((_c = (_b = input.name) !== null && _b !== void 0 ? _b : input.key.split('/').pop()) !== null && _c !== void 0 ? _c : 'attachment');
49
- const filePath = `data/attachments/${folder}/${fileName}`;
50
- const written = await (0, shared_1.writeWorkspaceFile)(workspaceDir, filePath, bytes);
51
- const isPdf = /\.pdf$/i.test(fileName) || bytes.subarray(0, 4).toString() === '%PDF';
52
- let textPath;
53
- let textChars = 0;
54
- if (isPdf && input.extractText !== false) {
55
- textPath = `data/text/${folder}/${fileName.replace(/\.pdf$/i, '')}.txt`;
56
- const absoluteText = node_path_1.default.resolve(workspaceDir, textPath);
57
- await node_fs_1.promises.mkdir(node_path_1.default.dirname(absoluteText), { recursive: true });
58
- textChars = await extractPdfText(node_path_1.default.resolve(workspaceDir, filePath), absoluteText);
59
- if (textChars === 0)
60
- textPath = undefined;
98
+ if (!input.manifest === !input.filingIds)
99
+ throw new Error('Pass exactly one of manifest or filingIds.');
100
+ let rows;
101
+ if (input.manifest) {
102
+ rows = await (0, shared_1.readManifest)(workspaceDir, input.manifest);
103
+ }
104
+ else {
105
+ rows = [];
106
+ for (const id of (_a = input.filingIds) !== null && _a !== void 0 ? _a : []) {
107
+ const filingId = await resolveFilingId(id);
108
+ const filing = await client.request(`/v1/filings/${encodeURIComponent(filingId)}`);
109
+ for (const attachment of (0, filing_detail_tool_1.collectAttachments)(filing))
110
+ rows.push({ filingId, trackingNumber: filing.trackingNumber, ...attachment });
111
+ }
61
112
  }
113
+ const pattern = input.nameMatch ? new RegExp(input.nameMatch, 'i') : undefined;
114
+ const selected = rows
115
+ .map((row) => {
116
+ var _a, _b, _c, _d, _e;
117
+ return ({
118
+ ...row,
119
+ key: (_a = row.key) !== null && _a !== void 0 ? _a : row.attachmentKey,
120
+ name: (_b = row.name) !== null && _b !== void 0 ? _b : (typeof ((_c = row.key) !== null && _c !== void 0 ? _c : row.attachmentKey) === 'string' ? decodeURIComponent((_e = String((_d = row.key) !== null && _d !== void 0 ? _d : row.attachmentKey).split('/').pop()) !== null && _e !== void 0 ? _e : '') : undefined),
121
+ });
122
+ })
123
+ .filter((row) => typeof row.key === 'string' && row.key.length > 0)
124
+ .filter((row) => !input.sections || input.sections.includes(row.section))
125
+ .filter((row) => { var _a; return !pattern || pattern.test(String((_a = row.name) !== null && _a !== void 0 ? _a : '')); });
126
+ // The same document can be listed twice (two hits on one attachment, a manifest merged from searches).
127
+ const unique = [...new Map(selected.map((row) => [String(row.key), row])).values()];
128
+ const limit = (_b = input.limit) !== null && _b !== void 0 ? _b : MAX_FETCH_ATTACHMENTS;
129
+ const batch = unique.slice(0, limit);
130
+ let done = 0;
131
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress(toolCallId, 0, batch.length, 'Downloading attachments');
132
+ const results = await (0, shared_1.mapPool)(batch, FETCH_CONCURRENCY, async (row) => {
133
+ try {
134
+ const saved = await saveAttachment({
135
+ key: String(row.key),
136
+ trackingNumber: row.trackingNumber === undefined ? undefined : String(row.trackingNumber),
137
+ name: row.name === undefined ? undefined : String(row.name),
138
+ reuse: true,
139
+ });
140
+ return { ...row, path: saved.path, bytes: saved.bytes, textPath: saved.textPath, textChars: saved.textChars, readable: !saved.isPdf || saved.textChars > 0, reused: saved.reused };
141
+ }
142
+ catch (error) {
143
+ return { ...row, error: error.message };
144
+ }
145
+ finally {
146
+ done += 1;
147
+ if (done % 10 === 0 || done === batch.length)
148
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress(toolCallId, done, batch.length, 'Downloading attachments');
149
+ }
150
+ });
151
+ const outputPath = (_c = input.outputManifest) !== null && _c !== void 0 ? _c : `data/manifests/fetched-${Date.now()}.jsonl`;
152
+ const written = await (0, shared_1.writeWorkspaceFile)(workspaceDir, outputPath, results.map((row) => JSON.stringify(row)).join('\n') + (results.length ? '\n' : ''));
153
+ const failed = results.filter((row) => 'error' in row);
154
+ const unreadable = results.filter((row) => !('error' in row) && row.readable === false);
62
155
  return {
63
- path: written.path,
64
- bytes: written.bytes,
65
- textPath,
66
- textChars,
67
- note: isPdf && textChars === 0 ? 'No extractable text (scanned or protected PDF) — record it as unreadable in findings.' : undefined,
156
+ outputManifest: written.path,
157
+ requested: unique.length,
158
+ fetched: results.length - failed.length,
159
+ reused: results.filter((row) => row.reused).length,
160
+ failed: failed.length,
161
+ unreadable: unreadable.length,
162
+ notFetched: unique.length - batch.length,
163
+ duplicatesDropped: selected.length - unique.length,
164
+ textChars: results.reduce((sum, row) => sum + (typeof row.textChars === 'number' ? row.textChars : 0), 0),
165
+ failures: failed.slice(0, 5).map((row) => ({ name: row.name, error: row.error })),
166
+ next: 'Analyze the texts with extract_from_texts (manifest = outputManifest) or run_command; do not read whole documents into the chat.',
68
167
  };
69
168
  },
70
169
  });
@@ -94,6 +193,6 @@ function createAttachmentTools(options) {
94
193
  };
95
194
  },
96
195
  });
97
- return { download_attachment: downloadAttachment, read_text: readText };
196
+ return { download_attachment: downloadAttachment, fetch_attachments: fetchAttachments, read_text: readText };
98
197
  }
99
198
  //# sourceMappingURL=attachment-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-tools.js","sourceRoot":"","sources":["../../../src/research/filingramp/attachment-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachment-tools.js","sourceRoot":"","sources":["../../../src/research/filingramp/attachment-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"document-search-tool.d.ts","sourceRoot":"","sources":["../../../src/research/filingramp/document-search-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAA;AAKpC,OAAO,EAAiE,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAKrH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CA2K9E"}
1
+ {"version":3,"file":"document-search-tool.d.ts","sourceRoot":"","sources":["../../../src/research/filingramp/document-search-tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAA;AAKpC,OAAO,EAA6G,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAA;AASjK,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CA0N9E"}
@@ -1,18 +1,26 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.createDocumentSearchTool = createDocumentSearchTool;
4
7
  // Document indexes have different filter vocabularies. Search each group independently so
5
8
  // an unavailable index does not discard successful results from the other groups.
9
+ const node_path_1 = __importDefault(require("node:path"));
6
10
  const ai_1 = require("ai");
7
11
  const zod_1 = require("zod");
8
12
  const filingramp_client_1 = require("../filingramp-client");
9
13
  const filingramp_contract_1 = require("../filingramp-contract");
10
14
  const scope_1 = require("../scope");
11
15
  const shared_1 = require("./shared");
12
- const MAX_DOC_HITS = 100;
16
+ /** Hits returned inline; more go to a saveHits file. */
17
+ const MAX_DOC_HITS = 50;
13
18
  const MAX_HIGHLIGHTS = 3;
19
+ /** OpenSearch result window: offset + limit never exceeds it (ramp-model pagination.builder). */
20
+ const SEARCH_RESULT_WINDOW = 10000;
21
+ const SEARCH_PAGE_SIZE = 200;
14
22
  function createDocumentSearchTool(options) {
15
- const { client, workspaceDir, scope } = options;
23
+ const { client, workspaceDir, scope, onProgress } = options;
16
24
  const industryData = client.industryData;
17
25
  // Document search matches typeOfInsurance exactly, while the scope holds names or codes
18
26
  // ("Homeowners", "04.0"); the filings summary says which exact labels those stand for in this
@@ -39,6 +47,7 @@ function createDocumentSearchTool(options) {
39
47
  }));
40
48
  return lineLabels;
41
49
  };
50
+ /** One page of document hits; `total` is every match (it can exceed the 10,000-hit window), `count` what paging reaches. */
42
51
  const requestDocuments = async (body) => {
43
52
  try {
44
53
  // ramp-web-api mounts the OpenSearch router at /content-search (POST /global).
@@ -47,7 +56,10 @@ function createDocumentSearchTool(options) {
47
56
  body,
48
57
  timeoutMs: 120000,
49
58
  });
50
- return Array.isArray(payload) ? payload : (0, shared_1.asRecordList)(payload);
59
+ if (Array.isArray(payload))
60
+ return { items: payload };
61
+ const number = (value) => (typeof value === 'number' ? value : undefined);
62
+ return { items: (0, shared_1.asRecordList)(payload), total: number(payload === null || payload === void 0 ? void 0 : payload.total), count: number(payload === null || payload === void 0 ? void 0 : payload.count) };
51
63
  }
52
64
  catch (error) {
53
65
  if (error instanceof filingramp_client_1.FilingRampHttpError && error.status === 403) {
@@ -66,7 +78,7 @@ function createDocumentSearchTool(options) {
66
78
  }
67
79
  };
68
80
  return (0, ai_1.tool)({
69
- description: 'Full-text or semantic search INSIDE documents (extracted PDF text of forms, rate and supporting documents, objection letters, responses, library forms and rates, circulars). This is how you find which filings contain a clause. Returns hits with highlights; set saveText=true to write each hit\'s full extracted text to data/text/<trackingNumber>/<name>.txt for grep and analysis — never read whole documents into the chat. Filters use OpenSearch\'s vocabulary: states, typeOfInsurance, subTypeOfInsurance, filingTypes, statuses, resourceTypes, productIds, projectIds take exact string arrays ("in"); authors, contacts, reviewers match a substring ("cn"); dateSubmitted, createdAt, updatedAt take one date (eq/gt/gte/lt/lte). The session scope is added for you. Library and circular indexes accept only their own fields (resourceTypes, formNumbers, editionDates, circularNumbers…), so neither the scope nor filing filters apply to them; the result reports what was not applied.',
81
+ description: 'Full-text or semantic search INSIDE documents (extracted PDF text of forms, rate and supporting documents, objection letters, responses, library forms and rates, circulars). This is how you find which filings contain a clause. Without saveHits it returns up to 50 hits inline with highlights. With saveHits it pages through every hit (KEYWORD and HYBRID reach up to 10,000 per query; SEMANTIC ranks only the top candidates, so do not use it to list a population), writes one JSONL row per hit (filingId, trackingNumber, state, name, attachmentKey, textPath…) and returns totals plus a few samples; the file works as a fetch_attachments / extract_from_texts manifest. Several calls with the same saveHits path add to it without duplicates. Set saveText=true to write each hit\'s full extracted text to data/text/<trackingNumber>/<name>.txt for grep and analysis — never read whole documents into the chat. Filters use OpenSearch\'s vocabulary: states, typeOfInsurance, subTypeOfInsurance, filingTypes, statuses, resourceTypes, productIds, projectIds take exact string arrays ("in"); authors, contacts, reviewers match a substring ("cn"); dateSubmitted, createdAt, updatedAt take one date (eq/gt/gte/lt/lte). The session scope is added for you. Library and circular indexes accept only their own fields (resourceTypes, formNumbers, editionDates, circularNumbers…), so neither the scope nor filing filters apply to them; the result reports what was not applied.',
70
82
  inputSchema: zod_1.z.object({
71
83
  query: zod_1.z.string().min(1).max(2000),
72
84
  searchType: zod_1.z.enum(['KEYWORD', 'SEMANTIC', 'HYBRID']).optional().describe('KEYWORD for exact phrases (default), SEMANTIC for meaning, HYBRID for both'),
@@ -78,11 +90,12 @@ function createDocumentSearchTool(options) {
78
90
  matchMode: zod_1.z.enum(['EXACT', 'ANY_WORD', 'PROXIMITY', 'PREFIX', 'FUZZY', 'BOOLEAN']).optional(),
79
91
  filters: zod_1.z.array(shared_1.filterInputSchema).max(20).optional().describe('See the tool description for fields and operators'),
80
92
  scope: zod_1.z.enum(['ACCOUNT', 'INDUSTRY']).optional(),
81
- limit: zod_1.z.number().int().min(1).max(1000).optional(),
93
+ limit: zod_1.z.number().int().min(1).max(SEARCH_RESULT_WINDOW).optional().describe('Hits to collect: up to 50 inline; with saveHits up to 10,000 (default 2,000)'),
82
94
  saveText: zod_1.z.boolean().optional(),
95
+ saveHits: zod_1.z.string().min(1).max(300).optional().describe('Workspace JSONL path for every hit, e.g. data/hits/water-valve.jsonl'),
83
96
  }),
84
- execute: async (input) => {
85
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
97
+ execute: async (input, { toolCallId }) => {
98
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
86
99
  const searchType = (_a = input.searchType) !== null && _a !== void 0 ? _a : 'KEYWORD';
87
100
  const suffix = searchType === 'KEYWORD' ? 'keyword_index' : 'semantic_index';
88
101
  const matchMode = (_b = input.matchMode) !== null && _b !== void 0 ? _b : (searchType === 'KEYWORD' ? 'EXACT' : 'ANY_WORD');
@@ -92,10 +105,11 @@ function createDocumentSearchTool(options) {
92
105
  const hits = [];
93
106
  const failures = [];
94
107
  let answered = 0;
108
+ const wanted = input.saveHits ? Math.min((_c = input.limit) !== null && _c !== void 0 ? _c : 2000, SEARCH_RESULT_WINDOW) : Math.min((_d = input.limit) !== null && _d !== void 0 ? _d : MAX_DOC_HITS, 1000);
95
109
  // One request per index group: each group has its own filter vocabulary, and one filter
96
110
  // outside it fails the whole request. A group whose indexes an environment does not have
97
111
  // (circulars on most deployments) fails alone; the other groups still answer.
98
- for (const group of (0, filingramp_contract_1.documentIndexGroups)((_c = input.indexes) !== null && _c !== void 0 ? _c : ['filings'])) {
112
+ for (const group of (0, filingramp_contract_1.documentIndexGroups)((_e = input.indexes) !== null && _e !== void 0 ? _e : ['filings'])) {
99
113
  const own = (0, filingramp_contract_1.normalizeDocumentFilters)(input.filters, group);
100
114
  const scoped = (0, scope_1.scopeDocumentFilters)(scope, own.filters, group.fields, labels);
101
115
  const entry = { indexes: group.indexes, filters: scoped.filters, unscoped: scoped.unscoped, ignoredFilters: own.ignored };
@@ -104,17 +118,29 @@ function createDocumentSearchTool(options) {
104
118
  continue;
105
119
  }
106
120
  try {
107
- const payload = await requestDocuments({
108
- searchType,
109
- searchText: input.query,
110
- matchMode,
111
- indexNames: group.indexes.map((index) => `${index}_${suffix}`),
112
- scope: scopeValue,
113
- limit: (_d = input.limit) !== null && _d !== void 0 ? _d : 50,
114
- filters: scoped.filters,
115
- });
116
- hits.push(...payload);
117
- requests.push(entry);
121
+ // Inline: one page. saveHits: page by offset until `wanted` hits, a short page or the result window.
122
+ const pageSize = input.saveHits ? Math.min(SEARCH_PAGE_SIZE, wanted) : wanted;
123
+ let total;
124
+ for (let offset = 0, collected = 0; collected < wanted && offset + pageSize <= SEARCH_RESULT_WINDOW; offset += pageSize) {
125
+ const page = await requestDocuments({
126
+ searchType,
127
+ searchText: input.query,
128
+ matchMode,
129
+ indexNames: group.indexes.map((index) => `${index}_${suffix}`),
130
+ scope: scopeValue,
131
+ limit: pageSize,
132
+ ...(offset > 0 ? { offset } : {}),
133
+ filters: scoped.filters,
134
+ });
135
+ total !== null && total !== void 0 ? total : (total = page.total);
136
+ hits.push(...page.items);
137
+ collected += page.items.length;
138
+ if (input.saveHits)
139
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress(toolCallId, collected, Math.min(wanted, total !== null && total !== void 0 ? total : wanted), 'Collecting search hits');
140
+ if (!input.saveHits || page.items.length < pageSize || (total !== undefined && offset + pageSize >= total))
141
+ break;
142
+ }
143
+ requests.push({ ...entry, total });
118
144
  answered += 1;
119
145
  }
120
146
  catch (error) {
@@ -129,23 +155,24 @@ function createDocumentSearchTool(options) {
129
155
  throw failures[0];
130
156
  hits.sort((a, b) => { var _a, _b; return Number((_a = b._score) !== null && _a !== void 0 ? _a : 0) - Number((_b = a._score) !== null && _b !== void 0 ? _b : 0); });
131
157
  const results = [];
132
- for (const hit of hits.slice(0, MAX_DOC_HITS)) {
133
- const source = ((_e = hit._source) !== null && _e !== void 0 ? _e : {});
134
- const highlight = ((_f = hit.highlight) !== null && _f !== void 0 ? _f : {});
158
+ for (const hit of input.saveHits ? hits : hits.slice(0, MAX_DOC_HITS)) {
159
+ const source = ((_f = hit._source) !== null && _f !== void 0 ? _f : {});
160
+ const highlight = ((_g = hit.highlight) !== null && _g !== void 0 ? _g : {});
135
161
  const fragments = Object.values(highlight).flat().slice(0, MAX_HIGHLIGHTS);
136
162
  // An indexed document is the filing's metadata at the top level plus one sub-object
137
163
  // for the document itself (form, rate, supporting, attachment, disposition …) that
138
164
  // carries attachmentKey / attachmentText; objection letters keep their text top-level.
139
165
  const document = Object.values(source).find((value) => !!value && typeof value === 'object' && !Array.isArray(value) && ('attachmentText' in value || 'attachmentKey' in value));
140
- const textValue = (_h = (_g = document === null || document === void 0 ? void 0 : document.attachmentText) !== null && _g !== void 0 ? _g : source.attachmentText) !== null && _h !== void 0 ? _h : source.allMetadataText;
166
+ 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;
141
167
  const text = typeof textValue === 'string' && textValue.length > 0 ? textValue : undefined;
142
- const keyValue = (_k = (_j = document === null || document === void 0 ? void 0 : document.attachmentKey) !== null && _j !== void 0 ? _j : source.attachmentKey) !== null && _k !== void 0 ? _k : source.key;
168
+ 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;
143
169
  const attachmentKey = typeof keyValue === 'string' ? keyValue : undefined;
144
- const trackingNumber = String((_p = (_o = (_m = (_l = source.trackingNumber) !== null && _l !== void 0 ? _l : source.filingTrackingNumber) !== null && _m !== void 0 ? _m : source.resourceId) !== null && _o !== void 0 ? _o : hit._id) !== null && _p !== void 0 ? _p : 'unknown');
145
- const name = String((_w = (_v = (_u = (_t = (_s = (_r = (_q = (attachmentKey ? decodeURIComponent(attachmentKey.slice(attachmentKey.lastIndexOf('/') + 1)) : undefined)) !== null && _q !== void 0 ? _q : document === null || document === void 0 ? void 0 : document.formNumber) !== null && _r !== void 0 ? _r : source.name) !== null && _s !== void 0 ? _s : source.attachmentName) !== null && _t !== void 0 ? _t : source.formNumber) !== null && _u !== void 0 ? _u : source.title) !== null && _v !== void 0 ? _v : hit._id) !== null && _w !== void 0 ? _w : 'document');
170
+ 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');
171
+ 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');
146
172
  let textPath;
147
173
  if (input.saveText && text) {
148
- textPath = `data/text/${(0, shared_1.safeName)(trackingNumber)}/${(0, shared_1.safeName)(name)}.txt`;
174
+ // Same path download_attachment / fetch_attachments use, so a later fetch finds it.
175
+ textPath = `data/text/${(0, shared_1.safeName)(trackingNumber)}/${(0, shared_1.safeName)(name).replace(/\.pdf$/i, '')}.txt`;
149
176
  await (0, shared_1.writeWorkspaceFile)(workspaceDir, textPath, text);
150
177
  }
151
178
  results.push({
@@ -159,14 +186,45 @@ function createDocumentSearchTool(options) {
159
186
  filingType: source.filingType,
160
187
  dateSubmitted: source.dateSubmitted,
161
188
  name,
162
- formNumber: (_x = document === null || document === void 0 ? void 0 : document.formNumber) !== null && _x !== void 0 ? _x : source.formNumber,
189
+ formNumber: (_y = document === null || document === void 0 ? void 0 : document.formNumber) !== null && _y !== void 0 ? _y : source.formNumber,
163
190
  attachmentKey,
164
- textChars: (_y = text === null || text === void 0 ? void 0 : text.length) !== null && _y !== void 0 ? _y : 0,
191
+ textChars: (_z = text === null || text === void 0 ? void 0 : text.length) !== null && _z !== void 0 ? _z : 0,
165
192
  textPath,
166
193
  highlights: fragments.map((fragment) => fragment.replace(/<\/?em>/g, '**').slice(0, 300)),
167
194
  });
168
195
  }
169
- return { hits: results, total: hits.length, truncated: hits.length > MAX_DOC_HITS, requests };
196
+ const matches = requests.reduce((sum, request) => { var _a; return sum + ((_a = request.total) !== null && _a !== void 0 ? _a : 0); }, 0);
197
+ if (!input.saveHits) {
198
+ return {
199
+ hits: results,
200
+ collected: hits.length,
201
+ totalMatches: matches || undefined,
202
+ truncated: hits.length > MAX_DOC_HITS || matches > results.length,
203
+ next: matches > results.length ? 'More hits exist: repeat with saveHits to collect them into a file.' : undefined,
204
+ requests,
205
+ };
206
+ }
207
+ // Merge into the hits file: a document already there (from an earlier query) keeps its row.
208
+ const target = node_path_1.default.resolve(workspaceDir, input.saveHits);
209
+ const previous = (await (0, shared_1.exists)(target)) ? await (0, shared_1.readManifest)(workspaceDir, input.saveHits) : [];
210
+ const known = new Set(previous.map((row) => String(row.id)));
211
+ const added = results.filter((row) => !known.has(String(row.id)));
212
+ const merged = [...previous, ...added.map((row) => ({ ...row, query: input.query }))];
213
+ const saved = await (0, shared_1.writeWorkspaceFile)(workspaceDir, input.saveHits, merged.map((row) => JSON.stringify(row)).join('\n') + (merged.length ? '\n' : ''));
214
+ return {
215
+ saveHits: saved.path,
216
+ collected: results.length,
217
+ added: added.length,
218
+ rowsInFile: merged.length,
219
+ totalMatches: matches || undefined,
220
+ // Past the 10,000-hit window the rest is unreachable for this query: split it by state or company.
221
+ beyondWindow: matches > SEARCH_RESULT_WINDOW ? matches - SEARCH_RESULT_WINDOW : undefined,
222
+ filings: new Set(results.map((row) => { var _a; return (_a = row.filingId) !== null && _a !== void 0 ? _a : row.trackingNumber; })).size,
223
+ byState: (0, shared_1.countBy)(results, (row) => row.state),
224
+ withText: results.filter((row) => Number(row.textChars) > 0).length,
225
+ sample: results.slice(0, shared_1.SAMPLE_ROWS).map((row) => ({ trackingNumber: row.trackingNumber, name: row.name, highlights: row.highlights.slice(0, 1) })),
226
+ requests,
227
+ };
170
228
  },
171
229
  });
172
230
  }
@@ -1 +1 @@
1
- {"version":3,"file":"document-search-tool.js","sourceRoot":"","sources":["../../../src/research/filingramp/document-search-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-search-tool.js","sourceRoot":"","sources":["../../../src/research/filingramp/document-search-tool.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import { type Tool } from 'ai';
2
2
  import { type FilingRampToolsOptions } from './shared';
3
+ /** Walks a filing record and lists every attachment with where it sits in the filing. */
4
+ export declare function collectAttachments(filing: Record<string, unknown>): Array<Record<string, unknown>>;
5
+ /** Filing _id for an id or a SERFF tracking number, resolved inside the session scope. */
6
+ export declare function createFilingIdResolver(options: FilingRampToolsOptions): (id: string) => Promise<string>;
3
7
  export declare function createFilingDetailTool(options: FilingRampToolsOptions): Tool;
4
8
  //# sourceMappingURL=filing-detail-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filing-detail-tool.d.ts","sourceRoot":"","sources":["../../../src/research/filingramp/filing-detail-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAA;AAGpC,OAAO,EAAoC,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAuCxF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAmE5E"}
1
+ {"version":3,"file":"filing-detail-tool.d.ts","sourceRoot":"","sources":["../../../src/research/filingramp/filing-detail-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAA;AAGpC,OAAO,EAAoF,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAKxI,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkClG;AAED,0FAA0F;AAC1F,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CA6BvG;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAgF5E"}