@cyanheads/secedgar-mcp-server 0.15.11 → 0.15.13
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/AGENTS.md +14 -12
- package/CLAUDE.md +14 -12
- package/Dockerfile +4 -4
- package/README.md +39 -39
- package/changelog/0.15.x/0.15.12.md +33 -0
- package/changelog/0.15.x/0.15.13.md +33 -0
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +47 -0
- package/dist/config/server-config.js.map +1 -1
- package/dist/mcp-server/prompts/definitions/company-analysis.prompt.js +1 -1
- package/dist/mcp-server/prompts/definitions/company-analysis.prompt.js.map +1 -1
- package/dist/mcp-server/tools/definitions/company-search.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/company-search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/company-search.tool.js +76 -19
- package/dist/mcp-server/tools/definitions/company-search.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-companies.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/compare-companies.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-companies.tool.js +132 -38
- package/dist/mcp-server/tools/definitions/compare-companies.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.d.ts +10 -4
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.js +11 -4
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-frames.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/fetch-frames.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-frames.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/fetch-frames.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-holders.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/find-holders.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/find-holders.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/find-holders.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-beneficial-owners.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-beneficial-owners.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-beneficial-owners.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/get-beneficial-owners.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-filing.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/get-filing.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-filing.tool.js +308 -54
- package/dist/mcp-server/tools/definitions/get-filing.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-financials.tool.d.ts +10 -3
- package/dist/mcp-server/tools/definitions/get-financials.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-financials.tool.js +110 -41
- package/dist/mcp-server/tools/definitions/get-financials.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-fund-holdings.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-fund-holdings.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-fund-holdings.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/get-fund-holdings.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-material-events.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-material-events.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-material-events.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/get-material-events.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +104 -7
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-filings.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/search-filings.tool.js.map +1 -1
- package/dist/services/canvas-bridge/canvas-bridge.d.ts +2 -2
- package/dist/services/canvas-bridge/canvas-bridge.js +2 -2
- package/dist/services/edgar/concept-series.d.ts +20 -8
- package/dist/services/edgar/concept-series.d.ts.map +1 -1
- package/dist/services/edgar/concept-series.js +74 -23
- package/dist/services/edgar/concept-series.js.map +1 -1
- package/dist/services/edgar/edgar-api-service.d.ts +21 -11
- package/dist/services/edgar/edgar-api-service.d.ts.map +1 -1
- package/dist/services/edgar/edgar-api-service.js +133 -34
- package/dist/services/edgar/edgar-api-service.js.map +1 -1
- package/dist/services/edgar/filing-to-text.d.ts +106 -6
- package/dist/services/edgar/filing-to-text.d.ts.map +1 -1
- package/dist/services/edgar/filing-to-text.js +570 -66
- package/dist/services/edgar/filing-to-text.js.map +1 -1
- package/package.json +9 -9
- package/server.json +4 -4
|
@@ -94,18 +94,13 @@ function isYearLong(fact) {
|
|
|
94
94
|
/** Annual reports — `10-K`, the transition-period `10-KT`, `20-F`, and `40-F`, with amendments. */
|
|
95
95
|
const ANNUAL_REPORT_FORM = /^(10-KT?|20-F|40-F)(\/A)?$/;
|
|
96
96
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* forward-looking year-long figure (Walmart and P&G each carry one). Taking
|
|
102
|
-
* every year-long fact from an annual report instead would admit off-cycle ends
|
|
103
|
-
* that sit on quarter ends (Merck's and P&G's 09-30, Toyota's 06-30) and keep a
|
|
104
|
-
* trailing-twelve-month figure ending there (#148). Units served as anything but
|
|
105
|
-
* an array are skipped (#141).
|
|
97
|
+
* For every annual report accession, the ends of its year-long facts that ended
|
|
98
|
+
* before it was filed, across every tag and unit. The before-filing guard drops a
|
|
99
|
+
* forward-looking year-long figure (Walmart and P&G each carry one). Units served
|
|
100
|
+
* as anything but an array are skipped (#141).
|
|
106
101
|
*/
|
|
107
|
-
|
|
108
|
-
const
|
|
102
|
+
function annualReportYearEnds(unitMaps) {
|
|
103
|
+
const endsByAccession = new Map();
|
|
109
104
|
for (const units of unitMaps) {
|
|
110
105
|
for (const facts of Object.values(units)) {
|
|
111
106
|
if (!Array.isArray(facts))
|
|
@@ -114,28 +109,84 @@ export function fiscalYearEnds(unitMaps) {
|
|
|
114
109
|
if (!ANNUAL_REPORT_FORM.test(fact.form) || fact.end >= fact.filed || !isYearLong(fact)) {
|
|
115
110
|
continue;
|
|
116
111
|
}
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
112
|
+
const ends = endsByAccession.get(fact.accn) ?? new Set();
|
|
113
|
+
ends.add(fact.end);
|
|
114
|
+
endsByAccession.set(fact.accn, ends);
|
|
120
115
|
}
|
|
121
116
|
}
|
|
122
117
|
}
|
|
123
|
-
return
|
|
118
|
+
return endsByAccession;
|
|
119
|
+
}
|
|
120
|
+
/** The latest of a report's year-long ends — its own fiscal year. */
|
|
121
|
+
function ownYearEnd(ends) {
|
|
122
|
+
return [...ends].reduce((latest, end) => (end > latest ? end : latest));
|
|
123
|
+
}
|
|
124
|
+
/** Each report's own year end, sorted and each listed once. */
|
|
125
|
+
function ownYearEnds(endsByAccession) {
|
|
126
|
+
return [...new Set([...endsByAccession.values()].map(ownYearEnd))].sort();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* A filer's fiscal-year ends, sorted and each listed once: for every annual
|
|
130
|
+
* report accession, the latest end among its year-long facts that ended before
|
|
131
|
+
* it was filed ({@link annualReportYearEnds}). That is the report's own fiscal
|
|
132
|
+
* year — the comparatives end earlier. Taking every year-long fact from an
|
|
133
|
+
* annual report instead would admit off-cycle ends that sit on quarter ends
|
|
134
|
+
* (Merck's and P&G's 09-30, Toyota's 06-30) and keep a trailing-twelve-month
|
|
135
|
+
* figure ending there (#148).
|
|
136
|
+
*/
|
|
137
|
+
export function fiscalYearEnds(unitMaps) {
|
|
138
|
+
return ownYearEnds(annualReportYearEnds(unitMaps));
|
|
139
|
+
}
|
|
140
|
+
/** {@link annualReportYearEnds} per companyfacts payload, so one payload is scanned at most once. */
|
|
141
|
+
const reportYearEndsByPayload = new WeakMap();
|
|
142
|
+
function payloadReportYearEnds(facts) {
|
|
143
|
+
let ends = reportYearEndsByPayload.get(facts);
|
|
144
|
+
if (!ends) {
|
|
145
|
+
ends = annualReportYearEnds(Object.values(facts.facts).flatMap((namespace) => Object.values(namespace).map((concept) => concept.units)));
|
|
146
|
+
reportYearEndsByPayload.set(facts, ends);
|
|
147
|
+
}
|
|
148
|
+
return ends;
|
|
124
149
|
}
|
|
125
|
-
/** {@link fiscalYearEnds} per companyfacts payload, so one payload is scanned at most once. */
|
|
126
|
-
const yearEndsByPayload = new WeakMap();
|
|
127
150
|
/**
|
|
128
151
|
* The fiscal-year ends a companyfacts payload shows ({@link fiscalYearEnds}),
|
|
129
|
-
*
|
|
152
|
+
* scanned once per payload — `get_snapshot` resolves every catalog concept from
|
|
130
153
|
* the same one.
|
|
131
154
|
*/
|
|
132
155
|
export function filerFiscalYearEnds(facts) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
156
|
+
return ownYearEnds(payloadReportYearEnds(facts));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Whether `end` falls a whole number of years before `yearEnd`, give or take a
|
|
160
|
+
* week — zero years included, so a 52/53-week year end a few days before the
|
|
161
|
+
* report's own counts as a year end in its own right.
|
|
162
|
+
*/
|
|
163
|
+
function onEarlierYearEnd(end, yearEnd) {
|
|
164
|
+
const days = (Date.parse(yearEnd) - Date.parse(end)) / 86_400_000;
|
|
165
|
+
const drift = days - Math.round(days / 365.25) * 365.25;
|
|
166
|
+
return days > 0 && Math.abs(drift) <= FISCAL_YEAR_END_TOLERANCE_DAYS;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Every fiscal year a companyfacts payload closes, by its end date, sorted and
|
|
170
|
+
* each listed once: each annual report's own year ({@link filerFiscalYearEnds})
|
|
171
|
+
* plus the comparative years it restates — its year-long facts ending a whole
|
|
172
|
+
* number of years before its own end, within a week — so the prior years of a
|
|
173
|
+
* filer's first XBRL report count too (Microsoft's fiscal 2010 10-K closes 2009
|
|
174
|
+
* and 2008 as well). A year-long figure ending anywhere else in the report's
|
|
175
|
+
* year (a trailing twelve months to 09-30 in a December filer's 10-K) is no
|
|
176
|
+
* fiscal-year end and stays out. This is the set a balance-sheet value is
|
|
177
|
+
* selected on for an annual view (#167, #171). The 10-Q test of #148 keeps
|
|
178
|
+
* {@link filerFiscalYearEnds}: it matches day of year only, where a comparative
|
|
179
|
+
* year adds nothing but a wider tolerance.
|
|
180
|
+
*/
|
|
181
|
+
export function filerFiscalYearEndsWithComparatives(facts) {
|
|
182
|
+
const ends = new Set();
|
|
183
|
+
for (const reported of payloadReportYearEnds(facts).values()) {
|
|
184
|
+
const own = ownYearEnd(reported);
|
|
185
|
+
for (const end of reported)
|
|
186
|
+
if (end === own || onEarlierYearEnd(end, own))
|
|
187
|
+
ends.add(end);
|
|
137
188
|
}
|
|
138
|
-
return ends;
|
|
189
|
+
return [...ends].sort();
|
|
139
190
|
}
|
|
140
191
|
/**
|
|
141
192
|
* Whether a quarterly report's year-long fact covers a closed fiscal year. It
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concept-series.js","sourceRoot":"","sources":["../../../src/services/edgar/concept-series.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"concept-series.js","sourceRoot":"","sources":["../../../src/services/edgar/concept-series.ts"],"names":[],"mappings":"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"}
|
|
@@ -274,20 +274,29 @@ declare class EdgarApiService {
|
|
|
274
274
|
*/
|
|
275
275
|
private mirrorOrLive;
|
|
276
276
|
/**
|
|
277
|
-
* Paced fetch with retry/backoff. Returns the response on 2xx or 404
|
|
278
|
-
*
|
|
279
|
-
*
|
|
277
|
+
* Paced fetch with retry/backoff. Returns the response on 2xx or 404. A 5xx, and
|
|
278
|
+
* an attempt that got no HTTP response, retry up to `MAX_RETRIES` attempts; then
|
|
279
|
+
* the 5xx throws its status-classified `McpError` and the no-response case throws
|
|
280
|
+
* `sec_unreachable`. Other non-OK statuses throw at once, as does the local
|
|
281
|
+
* refusal while SEC's rate-limit block is active, and the pacer's
|
|
282
|
+
* `RequestCancelled` — those are `McpError`s from `send()`, never retried.
|
|
280
283
|
*/
|
|
281
284
|
private rawFetch;
|
|
282
285
|
/**
|
|
283
|
-
* One
|
|
284
|
-
* before the response is handed back, so no call admitted after it sends.
|
|
286
|
+
* One attempt through the block gate and the pacer. A 429 closes the gate
|
|
287
|
+
* before the response is handed back, so no call admitted after it sends. A
|
|
288
|
+
* `fetch` rejection comes back as an unanswered attempt, and so does a probe
|
|
289
|
+
* this call waited on that got no HTTP response; the gate's refusal and the
|
|
290
|
+
* pacer's `RequestCancelled` throw.
|
|
285
291
|
*/
|
|
286
292
|
private send;
|
|
287
293
|
/**
|
|
288
294
|
* Wait until this call may send, or throw the local refusal while the
|
|
289
295
|
* cool-down runs. The first call after the cool-down becomes the probe; every
|
|
290
|
-
* call behind it waits for the probe to resolve and then reads the gate again
|
|
296
|
+
* call behind it waits for the probe to resolve and then reads the gate again —
|
|
297
|
+
* unless the probe got no HTTP response, which each waiter takes as its own
|
|
298
|
+
* unanswered attempt. Otherwise calls queued behind a silent SEC would probe one
|
|
299
|
+
* at a time, 15 s each, and the last of N would wait about 45·N s (#173).
|
|
291
300
|
*/
|
|
292
301
|
private admit;
|
|
293
302
|
/** The error for a call made while the cool-down runs — nothing was sent. */
|
|
@@ -319,11 +328,12 @@ declare class EdgarApiService {
|
|
|
319
328
|
/**
|
|
320
329
|
* Fetch company_tickers_mf.json (ETFs and mutual funds) as fund rows carrying
|
|
321
330
|
* series and class IDs. Never throws: operating-company resolution must not
|
|
322
|
-
* depend on the fund file. A failed load — any HTTP failure,
|
|
323
|
-
* or the block gate's local refusal — returns
|
|
324
|
-
* index without funds stands for the retry
|
|
325
|
-
* (#119). The window is at least the error's
|
|
326
|
-
* by the rate-limit gate is not retried until
|
|
331
|
+
* depend on the fund file. A failed load — any HTTP failure, no HTTP response
|
|
332
|
+
* at all (#173), a malformed body, or the block gate's local refusal — returns
|
|
333
|
+
* no rows and a `retryAt`, so the index without funds stands for the retry
|
|
334
|
+
* window rather than the whole TTL (#119). The window is at least the error's
|
|
335
|
+
* `retryAfter`, so a load refused by the rate-limit gate is not retried until
|
|
336
|
+
* the cool-down ends.
|
|
327
337
|
*/
|
|
328
338
|
private loadMfTickers;
|
|
329
339
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edgar-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/edgar/edgar-api-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,QAAQ,EACR,sBAAsB,EAEtB,oBAAoB,EAEpB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,mBAAmB,EAEpB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"edgar-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/edgar/edgar-api-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,9 +19,28 @@ const BASE_BACKOFF_MS = 1000;
|
|
|
19
19
|
* Statuses worth a retry. 429 is deliberately absent: SEC holds a rate-limit block
|
|
20
20
|
* until the request rate has stayed under the threshold for ten minutes, so the
|
|
21
21
|
* ~3s retry budget cannot outlast it and every retry restarts the clock the caller
|
|
22
|
-
* is waiting on (#112).
|
|
22
|
+
* is waiting on (#112). An attempt that gets no HTTP response at all retries on the
|
|
23
|
+
* same ladder (#173).
|
|
23
24
|
*/
|
|
24
25
|
const RETRYABLE_STATUSES = new Set([500, 502, 503, 504]);
|
|
26
|
+
/**
|
|
27
|
+
* How long one attempt may wait for response headers, counted from dispatch, before
|
|
28
|
+
* it is aborted and retried as a no-response failure (#173). Bun applies no connect
|
|
29
|
+
* timeout of its own — an unanswered connect waits out the OS TCP timeout, 75 s on
|
|
30
|
+
* macOS — and neither runtime bounds a server that accepts and never answers, so one
|
|
31
|
+
* attempt could outlast the MCP client's 60 s request timeout alone. Three capped
|
|
32
|
+
* attempts plus the 1 s and 2 s backoffs come to 48 s. The clock starts once the
|
|
33
|
+
* pacer dispatches the request, so queue time never counts, and stops at headers,
|
|
34
|
+
* so a multi-megabyte body is never cut off. SEC's slowest reads sampled send
|
|
35
|
+
* headers in under 2 s.
|
|
36
|
+
*/
|
|
37
|
+
const ATTEMPT_HEADERS_TIMEOUT_MS = 15_000;
|
|
38
|
+
/**
|
|
39
|
+
* `data.reason` once every attempt got no HTTP response (#173). Declared retryable
|
|
40
|
+
* on every tool that reaches SEC; set on `data.retryable` here for the same reason
|
|
41
|
+
* as `rate_limited` (#122).
|
|
42
|
+
*/
|
|
43
|
+
const SEC_UNREACHABLE_REASON = 'sec_unreachable';
|
|
25
44
|
/**
|
|
26
45
|
* `data.reason` on every SEC rate-limit failure — the upstream 429 and a call
|
|
27
46
|
* refused locally while the cool-down after one runs — so a caller branches the
|
|
@@ -686,22 +705,30 @@ class EdgarApiService {
|
|
|
686
705
|
}
|
|
687
706
|
// --- Internals ---
|
|
688
707
|
/**
|
|
689
|
-
* Paced fetch with retry/backoff. Returns the response on 2xx or 404
|
|
690
|
-
*
|
|
691
|
-
*
|
|
708
|
+
* Paced fetch with retry/backoff. Returns the response on 2xx or 404. A 5xx, and
|
|
709
|
+
* an attempt that got no HTTP response, retry up to `MAX_RETRIES` attempts; then
|
|
710
|
+
* the 5xx throws its status-classified `McpError` and the no-response case throws
|
|
711
|
+
* `sec_unreachable`. Other non-OK statuses throw at once, as does the local
|
|
712
|
+
* refusal while SEC's rate-limit block is active, and the pacer's
|
|
713
|
+
* `RequestCancelled` — those are `McpError`s from `send()`, never retried.
|
|
692
714
|
*/
|
|
693
715
|
async rawFetch(url, acceptJson) {
|
|
694
716
|
const headers = { 'User-Agent': getServerConfig().userAgent };
|
|
695
717
|
if (acceptJson)
|
|
696
718
|
headers.Accept = 'application/json';
|
|
697
|
-
for (let attempt = 0
|
|
698
|
-
const
|
|
699
|
-
if (response.ok || response.status === 404)
|
|
700
|
-
return response;
|
|
701
|
-
|
|
719
|
+
for (let attempt = 0;; attempt++) {
|
|
720
|
+
const outcome = await this.send(url, headers);
|
|
721
|
+
if (outcome.kind === 'answered' && (outcome.response.ok || outcome.response.status === 404)) {
|
|
722
|
+
return outcome.response;
|
|
723
|
+
}
|
|
724
|
+
const transient = outcome.kind === 'unanswered' || RETRYABLE_STATUSES.has(outcome.response.status);
|
|
725
|
+
if (transient && attempt < MAX_RETRIES - 1) {
|
|
702
726
|
await sleep(BASE_BACKOFF_MS * 2 ** attempt);
|
|
703
727
|
continue;
|
|
704
728
|
}
|
|
729
|
+
if (outcome.kind === 'unanswered')
|
|
730
|
+
throw secUnreachable(url, outcome);
|
|
731
|
+
const { response } = outcome;
|
|
705
732
|
const data = { url };
|
|
706
733
|
if (response.status === 403) {
|
|
707
734
|
const host = new URL(url).hostname;
|
|
@@ -725,39 +752,43 @@ class EdgarApiService {
|
|
|
725
752
|
captureBody: response.status !== 429,
|
|
726
753
|
});
|
|
727
754
|
}
|
|
728
|
-
throw serviceUnavailable('SEC EDGAR API request failed after retries', { url });
|
|
729
755
|
}
|
|
730
756
|
/**
|
|
731
|
-
* One
|
|
732
|
-
* before the response is handed back, so no call admitted after it sends.
|
|
757
|
+
* One attempt through the block gate and the pacer. A 429 closes the gate
|
|
758
|
+
* before the response is handed back, so no call admitted after it sends. A
|
|
759
|
+
* `fetch` rejection comes back as an unanswered attempt, and so does a probe
|
|
760
|
+
* this call waited on that got no HTTP response; the gate's refusal and the
|
|
761
|
+
* pacer's `RequestCancelled` throw.
|
|
733
762
|
*/
|
|
734
763
|
async send(url, headers) {
|
|
735
764
|
const admission = await this.admit();
|
|
736
|
-
|
|
765
|
+
if ('kind' in admission)
|
|
766
|
+
return admission;
|
|
767
|
+
let outcome;
|
|
737
768
|
try {
|
|
738
|
-
|
|
769
|
+
outcome = await this.pacer.run(() => {
|
|
739
770
|
// Re-read at dispatch: a 429 may have landed while this call waited for its
|
|
740
771
|
// slot, and a call queued before the block must not go out inside it.
|
|
741
772
|
if (this.gate !== admission.gate)
|
|
742
773
|
throw this.cooldownRefusal();
|
|
743
|
-
return
|
|
774
|
+
return fetchUntilHeaders(url, headers);
|
|
744
775
|
});
|
|
745
|
-
if (response.status === 429) {
|
|
776
|
+
if (outcome.kind === 'answered' && outcome.response.status === 429) {
|
|
746
777
|
this.gate = { state: 'closed', reopensAt: Date.now() + this.cooldownMs };
|
|
747
778
|
}
|
|
748
|
-
|
|
749
|
-
answered = true;
|
|
750
|
-
}
|
|
751
|
-
return response;
|
|
779
|
+
return outcome;
|
|
752
780
|
}
|
|
753
781
|
finally {
|
|
754
|
-
admission.releaseProbe?.(
|
|
782
|
+
admission.releaseProbe?.(outcome);
|
|
755
783
|
}
|
|
756
784
|
}
|
|
757
785
|
/**
|
|
758
786
|
* Wait until this call may send, or throw the local refusal while the
|
|
759
787
|
* cool-down runs. The first call after the cool-down becomes the probe; every
|
|
760
|
-
* call behind it waits for the probe to resolve and then reads the gate again
|
|
788
|
+
* call behind it waits for the probe to resolve and then reads the gate again —
|
|
789
|
+
* unless the probe got no HTTP response, which each waiter takes as its own
|
|
790
|
+
* unanswered attempt. Otherwise calls queued behind a silent SEC would probe one
|
|
791
|
+
* at a time, 15 s each, and the last of N would wait about 45·N s (#173).
|
|
761
792
|
*/
|
|
762
793
|
async admit() {
|
|
763
794
|
for (;;) {
|
|
@@ -765,7 +796,9 @@ class EdgarApiService {
|
|
|
765
796
|
if (gate.state === 'open')
|
|
766
797
|
return { gate };
|
|
767
798
|
if (gate.state === 'probing') {
|
|
768
|
-
await gate.settled;
|
|
799
|
+
const unanswered = await gate.settled;
|
|
800
|
+
if (unanswered)
|
|
801
|
+
return unanswered;
|
|
769
802
|
continue;
|
|
770
803
|
}
|
|
771
804
|
if (gate.reopensAt > Date.now())
|
|
@@ -775,16 +808,18 @@ class EdgarApiService {
|
|
|
775
808
|
this.gate = probe;
|
|
776
809
|
return {
|
|
777
810
|
gate: probe,
|
|
778
|
-
releaseProbe: (
|
|
811
|
+
releaseProbe: (outcome) => {
|
|
779
812
|
/**
|
|
780
813
|
* A probe 429 has already closed the gate for a full cool-down. Any other
|
|
781
|
-
* reply means SEC is serving again; no reply at all (a network error
|
|
782
|
-
*
|
|
814
|
+
* reply means SEC is serving again; no reply at all (a network error, or
|
|
815
|
+
* no headers within the per-attempt cap) proves nothing about the block,
|
|
816
|
+
* so the gate stays shut for the next call to probe in its place.
|
|
783
817
|
*/
|
|
784
818
|
if (this.gate === probe) {
|
|
785
|
-
this.gate =
|
|
819
|
+
this.gate =
|
|
820
|
+
outcome?.kind === 'answered' ? OPEN_GATE : { state: 'closed', reopensAt: Date.now() };
|
|
786
821
|
}
|
|
787
|
-
settle();
|
|
822
|
+
settle(outcome?.kind === 'unanswered' ? outcome : undefined);
|
|
788
823
|
},
|
|
789
824
|
};
|
|
790
825
|
}
|
|
@@ -876,11 +911,12 @@ class EdgarApiService {
|
|
|
876
911
|
/**
|
|
877
912
|
* Fetch company_tickers_mf.json (ETFs and mutual funds) as fund rows carrying
|
|
878
913
|
* series and class IDs. Never throws: operating-company resolution must not
|
|
879
|
-
* depend on the fund file. A failed load — any HTTP failure,
|
|
880
|
-
* or the block gate's local refusal — returns
|
|
881
|
-
* index without funds stands for the retry
|
|
882
|
-
* (#119). The window is at least the error's
|
|
883
|
-
* by the rate-limit gate is not retried until
|
|
914
|
+
* depend on the fund file. A failed load — any HTTP failure, no HTTP response
|
|
915
|
+
* at all (#173), a malformed body, or the block gate's local refusal — returns
|
|
916
|
+
* no rows and a `retryAt`, so the index without funds stands for the retry
|
|
917
|
+
* window rather than the whole TTL (#119). The window is at least the error's
|
|
918
|
+
* `retryAfter`, so a load refused by the rate-limit gate is not retried until
|
|
919
|
+
* the cool-down ends.
|
|
884
920
|
*/
|
|
885
921
|
async loadMfTickers() {
|
|
886
922
|
let retryAfterMs = 0;
|
|
@@ -904,7 +940,7 @@ class EdgarApiService {
|
|
|
904
940
|
// Background index maintenance with no request of its own to attach to, so the
|
|
905
941
|
// global logger carries it (#43).
|
|
906
942
|
logger.warning('Fund-ticker file (company_tickers_mf.json) failed to load; ETF and mutual-fund tickers stay unresolved until it is retried.', withExtra(requestContextService.createRequestContext({ operation: 'loadMfTickers' }), {
|
|
907
|
-
|
|
943
|
+
endpoint: 'company_tickers_mf',
|
|
908
944
|
retryInSeconds: Math.ceil(retryMs / 1000),
|
|
909
945
|
...cause,
|
|
910
946
|
}));
|
|
@@ -1191,6 +1227,69 @@ export function pickPreferredTicker(a, b) {
|
|
|
1191
1227
|
function sleep(ms) {
|
|
1192
1228
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
1193
1229
|
}
|
|
1230
|
+
/**
|
|
1231
|
+
* One `fetch`, aborted when no response headers arrive within
|
|
1232
|
+
* {@link ATTEMPT_HEADERS_TIMEOUT_MS}. The timer is cleared once `fetch` settles, so
|
|
1233
|
+
* the body read is never bounded by it. `fetch` rejects with whatever reason the
|
|
1234
|
+
* signal carries, so the abort is recognized by the reason's identity. A
|
|
1235
|
+
* controller and `setTimeout` rather than `AbortSignal.timeout()`, as the
|
|
1236
|
+
* framework's `fetchWithTimeout` does: the latter can fail on a realm mismatch
|
|
1237
|
+
* under Bun.
|
|
1238
|
+
*/
|
|
1239
|
+
async function fetchUntilHeaders(url, headers) {
|
|
1240
|
+
const controller = new AbortController();
|
|
1241
|
+
const deadline = new DOMException(`No response headers within ${ATTEMPT_HEADERS_TIMEOUT_MS}ms.`, 'TimeoutError');
|
|
1242
|
+
const timer = setTimeout(() => controller.abort(deadline), ATTEMPT_HEADERS_TIMEOUT_MS);
|
|
1243
|
+
try {
|
|
1244
|
+
const response = await globalThis.fetch(url, { headers, signal: controller.signal });
|
|
1245
|
+
return { kind: 'answered', response };
|
|
1246
|
+
}
|
|
1247
|
+
catch (rejection) {
|
|
1248
|
+
return { kind: 'unanswered', rejection, timedOut: controller.signal.reason === deadline };
|
|
1249
|
+
}
|
|
1250
|
+
finally {
|
|
1251
|
+
clearTimeout(timer);
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1254
|
+
/**
|
|
1255
|
+
* The failure once the last attempt got no HTTP response (#173). The earlier
|
|
1256
|
+
* attempts may have drawn a 5xx: a 503, a 502, then a reset ends here too, so
|
|
1257
|
+
* the message claims only the last. Message and `data` are composed here from
|
|
1258
|
+
* the host, the attempt count, and the last attempt's transport code or
|
|
1259
|
+
* timeout: the runtime's own text is developer-facing (Bun's advice to pass
|
|
1260
|
+
* `verbose: true`, its "Is the computer able to access the url?"), and Bun's
|
|
1261
|
+
* rejection carries the full request URL on `path`. The rejection rides
|
|
1262
|
+
* `cause`, which the log records and the caller never sees.
|
|
1263
|
+
*/
|
|
1264
|
+
function secUnreachable(url, last) {
|
|
1265
|
+
const host = new URL(url).hostname;
|
|
1266
|
+
const ending = last.timedOut
|
|
1267
|
+
? `got no response headers within ${ATTEMPT_HEADERS_TIMEOUT_MS / 1000} s`
|
|
1268
|
+
: `ended with ${transportCode(last.rejection) ?? 'a network error that carried no code'}`;
|
|
1269
|
+
return serviceUnavailable(`No HTTP response from SEC EDGAR (${host}) on the last of ${MAX_RETRIES} attempts, which ${ending}.`, {
|
|
1270
|
+
reason: SEC_UNREACHABLE_REASON,
|
|
1271
|
+
retryable: true,
|
|
1272
|
+
url,
|
|
1273
|
+
recovery: {
|
|
1274
|
+
hint: `SEC EDGAR (${host}) sent no HTTP response to the last attempt — a network failure between this server and SEC, not a problem with the request. Retry the same call in a minute.`,
|
|
1275
|
+
},
|
|
1276
|
+
}, { cause: last.rejection });
|
|
1277
|
+
}
|
|
1278
|
+
/** An identifier-shaped transport code: `ECONNRESET`, `EAI_AGAIN`, `UND_ERR_CONNECT_TIMEOUT`. */
|
|
1279
|
+
const TRANSPORT_CODE = /^[A-Za-z][A-Za-z0-9_]*$/;
|
|
1280
|
+
/**
|
|
1281
|
+
* The transport code on a `fetch` rejection. Bun sets it on the rejection itself
|
|
1282
|
+
* (`code: 'ECONNRESET'`, no `cause`); Node's undici rejects with
|
|
1283
|
+
* `TypeError('fetch failed')` and sets it on `cause`. Read from the field, never
|
|
1284
|
+
* the message, whose wording differs by runtime and version.
|
|
1285
|
+
*/
|
|
1286
|
+
function transportCode(rejection) {
|
|
1287
|
+
const codeOf = (value) => {
|
|
1288
|
+
const code = typeof value === 'object' && value !== null && 'code' in value && value.code;
|
|
1289
|
+
return typeof code === 'string' && TRANSPORT_CODE.test(code) ? code : undefined;
|
|
1290
|
+
};
|
|
1291
|
+
return codeOf(rejection) ?? (rejection instanceof Error ? codeOf(rejection.cause) : undefined);
|
|
1292
|
+
}
|
|
1194
1293
|
// Init/accessor pattern
|
|
1195
1294
|
let _service;
|
|
1196
1295
|
export function initEdgarApiService() {
|