@juspay/neurolink 12.17.1 → 12.17.3
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/CHANGELOG.md +6 -2
- package/dist/browser/neurolink.min.js +430 -421
- package/dist/cli/commands/proxy.js +455 -259
- package/dist/constants/contextWindows.d.ts +2 -0
- package/dist/constants/contextWindows.js +4 -0
- package/dist/neurolink.js +8 -3
- package/dist/providers/openaiChatCompletionsBase.js +60 -51
- package/dist/proxy/anthropicBudgetResponse.d.ts +3 -0
- package/dist/proxy/anthropicBudgetResponse.js +153 -0
- package/dist/proxy/bodyCaptureProcessing.d.ts +1 -0
- package/dist/proxy/bodyCaptureProcessing.js +23 -4
- package/dist/proxy/bodyCaptureWorker.js +20 -2
- package/dist/proxy/codexFallback.d.ts +10 -0
- package/dist/proxy/codexFallback.js +108 -24
- package/dist/proxy/codexUsage.js +2 -0
- package/dist/proxy/globalInstaller.d.ts +32 -1
- package/dist/proxy/globalInstaller.js +386 -3
- package/dist/proxy/otelLogSink.d.ts +3 -3
- package/dist/proxy/otelLogSink.js +137 -144
- package/dist/proxy/otlpLogTransport.d.ts +3 -0
- package/dist/proxy/otlpLogTransport.js +334 -0
- package/dist/proxy/proxyActivity.d.ts +22 -2
- package/dist/proxy/proxyActivity.js +114 -9
- package/dist/proxy/proxyAnalysis.js +82 -52
- package/dist/proxy/proxyClientCancellation.d.ts +7 -0
- package/dist/proxy/proxyClientCancellation.js +23 -0
- package/dist/proxy/proxyContextPreflight.d.ts +25 -0
- package/dist/proxy/proxyContextPreflight.js +337 -0
- package/dist/proxy/proxyFailureDetails.d.ts +19 -0
- package/dist/proxy/proxyFailureDetails.js +96 -0
- package/dist/proxy/proxyLifecycle.js +7 -0
- package/dist/proxy/proxyRouteBodyCapture.d.ts +13 -0
- package/dist/proxy/proxyRouteBodyCapture.js +112 -0
- package/dist/proxy/proxyTokenBudget.d.ts +40 -0
- package/dist/proxy/proxyTokenBudget.js +523 -0
- package/dist/proxy/proxyTracer.d.ts +3 -2
- package/dist/proxy/proxyTracer.js +46 -20
- package/dist/proxy/proxyTranslationEngine.d.ts +8 -10
- package/dist/proxy/proxyTranslationEngine.js +736 -376
- package/dist/proxy/requestLogger.d.ts +1 -0
- package/dist/proxy/requestLogger.js +107 -5
- package/dist/proxy/restartControl.js +9 -4
- package/dist/proxy/rollingWorkerProcess.js +65 -0
- package/dist/proxy/rollingWorkerSupervisor.js +7 -0
- package/dist/proxy/updateCoordinator.d.ts +14 -1
- package/dist/proxy/updateCoordinator.js +57 -2
- package/dist/server/routes/claudeProxyRoutes.d.ts +4 -5
- package/dist/server/routes/claudeProxyRoutes.js +809 -577
- package/dist/server/routes/codexProxyRoutes.js +191 -9
- package/dist/server/routes/openaiProxyRoutes.d.ts +1 -1
- package/dist/server/routes/openaiProxyRoutes.js +261 -69
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/codex.d.ts +5 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/proxy.d.ts +148 -3
- package/dist/types/proxy.js +0 -15
- package/dist/types/proxyBudget.d.ts +74 -0
- package/dist/types/proxyBudget.js +1 -0
- package/dist/types/proxyContext.d.ts +35 -0
- package/dist/types/proxyContext.js +1 -0
- package/dist/utils/fileDetector.js +28 -7
- package/dist/utils/messageBuilder.js +51 -26
- package/dist/utils/pdfProcessor.js +26 -4
- package/docs/assets/dashboards/README.md +37 -0
- package/docs/assets/dashboards/neurolink-proxy-observability-dashboard.json +197 -89
- package/docs-site/static/search-index.json +1 -1
- package/package.json +7 -2
- package/scripts/observability/NATIVE-DURABLE.md +63 -0
- package/scripts/observability/otel-collector.proxy-native-durable.yaml +93 -0
- package/scripts/observability/proxy-telemetry-backend.mjs +32 -5
- package/scripts/observability/proxy-telemetry-check.mjs +396 -61
- package/scripts/observability/query-proxy-history.mjs +34 -5
|
@@ -589,10 +589,32 @@ export class PDFProcessor {
|
|
|
589
589
|
if (largestPixels > maxCanvasPixels) {
|
|
590
590
|
effectiveScale = scale * Math.sqrt(maxCanvasPixels / largestPixels);
|
|
591
591
|
}
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
592
|
+
// #258: map pdfjs's PasswordException to the same actionable typed error
|
|
593
|
+
// convertToImages raises — kept in sync per the class docstring above.
|
|
594
|
+
// Unlike the per-page loop below, a failure here happens before any page
|
|
595
|
+
// can be isolated, so it must reject the generator outright rather than
|
|
596
|
+
// being yielded as a page error.
|
|
597
|
+
let document;
|
|
598
|
+
try {
|
|
599
|
+
document = await pdf(pdfBuffer, {
|
|
600
|
+
scale: effectiveScale,
|
|
601
|
+
...(password ? { password } : {}),
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
catch (error) {
|
|
605
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
606
|
+
const pdfErr = error;
|
|
607
|
+
if (pdfErr?.name === "PasswordException" ||
|
|
608
|
+
/password/i.test(errorMessage)) {
|
|
609
|
+
const incorrect = pdfErr.code === 2 || /incorrect|invalid/i.test(errorMessage);
|
|
610
|
+
throw incorrect
|
|
611
|
+
? ErrorFactory.pdfIncorrectPassword()
|
|
612
|
+
: ErrorFactory.pdfPasswordRequired();
|
|
613
|
+
}
|
|
614
|
+
throw new Error(`PDF to image conversion failed: ${errorMessage}`, {
|
|
615
|
+
cause: error,
|
|
616
|
+
});
|
|
617
|
+
}
|
|
596
618
|
const totalPages = document.length;
|
|
597
619
|
let converted = 0;
|
|
598
620
|
for (let pageNum = 1; pageNum <= totalPages; pageNum++) {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Proxy dashboard accounting
|
|
2
|
+
|
|
3
|
+
Import `neurolink-proxy-observability-dashboard.json` into OpenObserve after
|
|
4
|
+
the matching proxy release emits the indexed accounting and pricing fields.
|
|
5
|
+
The template is an artifact; changing it does not update an installed dashboard
|
|
6
|
+
or activate a proxy release. Request panels query the metadata log stream.
|
|
7
|
+
Bulk body captures can use a separate stream.
|
|
8
|
+
|
|
9
|
+
Client traffic, errors, and latency belong to the outer request. An internal
|
|
10
|
+
bridge request owns provider usage when `proxy_usage_owner_request_id` names
|
|
11
|
+
that child; the parent contributes no second token charge. Cached input is
|
|
12
|
+
included once according to `ai_input_includes_cached_tokens`.
|
|
13
|
+
|
|
14
|
+
Log queries first collapse exact producer retries, ignoring ingestion-time
|
|
15
|
+
changes. The stable identity combines service instance and producer event ID;
|
|
16
|
+
older records fall back to request ID where available. Contradictory payloads
|
|
17
|
+
under one identity are excluded from aggregate totals. The Traffic & Health
|
|
18
|
+
conflict counter reports those exclusions. A nonzero counter means totals
|
|
19
|
+
cover only the verified subset; use telemetry doctor for the conflicting raw
|
|
20
|
+
payloads. Rows without any stable identity cannot establish retry deduplication.
|
|
21
|
+
|
|
22
|
+
Cost panels sum `ai_cost_api_equivalent_usd` only when
|
|
23
|
+
`ai_pricing_status='exact'`. These are estimates from this release's API price
|
|
24
|
+
table and complete provider usage, **not subscription charges or quota usage**.
|
|
25
|
+
Prefix-inferred prices, missing rates, partial token usage, and a bridge parent's
|
|
26
|
+
delegated usage do not receive an invented dollar amount. Pricing-gap panels
|
|
27
|
+
show the excluded usage owners; a blank known-cost total is not zero spending.
|
|
28
|
+
Cache savings compare cache reads with the same table's uncached input rate.
|
|
29
|
+
The offline analyzer's historical estimates separately retain their existing
|
|
30
|
+
`requestsPricedByPrefix` and `modelsPricedByPrefix` disclosures.
|
|
31
|
+
|
|
32
|
+
The deterministic capture-pipeline suite executes the shipped request, token,
|
|
33
|
+
cost, and conflict SQL on an in-memory database and records exact price-table,
|
|
34
|
+
partial-usage, and unknown-model OTLP fixtures. SQLite validates the standard SQL
|
|
35
|
+
logic; verify field availability and query compatibility in the target
|
|
36
|
+
OpenObserve version when installing the dashboard. Metric panels retain their
|
|
37
|
+
scrape/window semantics and are not a substitute for reconciled request logs.
|