sdlc-agent-4-enterprise-server 1.55.7 → 1.55.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/Dockerfile CHANGED
@@ -1,13 +1,13 @@
1
1
  # syntax=docker/dockerfile:1
2
2
  # =============================================================================
3
- # SA4E-335 Backend Dockerfile — Node.js 22 + Hono Code Intelligence MCP Server
3
+ # SA4E-335 Backend Dockerfile — Node.js 22.23.4 + Hono Code Intelligence MCP Server
4
4
  # -----------------------------------------------------------------------------
5
5
  # Multi-stage build (7 stages): base, deps, build, mcp-python, production,
6
6
  # development, test. `production` is the SOLE CI push target (TDD AD-2).
7
7
  # Build-only tooling never reaches the runtime image.
8
8
  #
9
9
  # Design decisions (TDD §3.2 / Security Review):
10
- # - AD-1 : base = node:22-slim (Debian/glibc) so native modules such as
10
+ # - AD-1 : base = node:22.23.4-slim (Debian/glibc) so native modules such as
11
11
  # onnxruntime-node link against glibc (musl/alpine is incompatible).
12
12
  # - SEC-02 (Critical): base image pinned by immutable sha256 DIGEST, not only
13
13
  # the mutable tag, to keep the build hermetic/reproducible. The human
@@ -29,10 +29,10 @@
29
29
  # =============================================================================
30
30
 
31
31
  # --- Build-time arguments (NO secrets — build args must never carry credentials, BR-17) ---
32
- ARG NODE_VERSION=22
33
- # node:22-slim — pin by digest for a reproducible supply chain (SEC-02).
32
+ ARG NODE_VERSION=22.23.4
33
+ # node:22.23.4-slim — pin by digest for a reproducible supply chain (SEC-02).
34
34
  # Tag kept for readability; the digest is the authoritative pin.
35
- ARG NODE_BASE_DIGEST=sha256:43ac6c60b8f89723f746e8a92ce91abd5017e627ce1ddfe4238355d3a30b772c
35
+ ARG NODE_BASE_DIGEST=sha256:de170b39439eb0e5a3444ad7d60b015614a381e10fecae2e30ec9e735122f38d
36
36
 
37
37
  # -----------------------------------------------------------------------------
38
38
  # base — shared workdir + build toolchain (glibc). Build-time only.
@@ -173,7 +173,7 @@ RUN python3 -m venv /opt/markdown-exporter-venv \
173
173
 
174
174
  # -----------------------------------------------------------------------------
175
175
  # production ★ — runtime image. SOLE CI push target. Minimal surface, non-root.
176
- # No git, no compilers (SEC-05). node:22-slim pinned by digest (SEC-02).
176
+ # No git, no compilers (SEC-05). node:22.23.4-slim pinned by digest (SEC-02).
177
177
  # -----------------------------------------------------------------------------
178
178
  FROM node:${NODE_VERSION}-slim@${NODE_BASE_DIGEST} AS production
179
179
  WORKDIR /app
@@ -182,7 +182,7 @@ WORKDIR /app
182
182
  # npm CLI that the base image bundles under /usr/local/lib/node_modules/npm.
183
183
  # Those copies (pacote, sigstore, brace-expansion, picomatch, ip-address,
184
184
  # undici) are NOT reachable from backend/package-lock.json, and the pinned
185
- # node:22-slim digest is already the latest — so the fix is to bump the CLI
185
+ # node:22.23.4-slim digest is already the latest — so the fix is to bump the CLI
186
186
  # itself (10.9.9 → NPM_VERSION: pacote/sigstore majors land on patched lines)
187
187
  # and refresh the two packages upstream has not re-released yet, using
188
188
  # same-major PATCH releases only (5.0.9→5.0.12, 6.28.0→6.28.1).
@@ -206,7 +206,7 @@ RUN npm install -g npm@${NPM_VERSION} --no-audit --no-fund --loglevel=error \
206
206
  # SEC-04: upgrade Debian packages to fix CVE-2026-103111 (libpcre2-8-0 HIGH)
207
207
  # and the perl CVE set found by Trivy on 2026-10-10 (CVE-2026-13221 CRITICAL,
208
208
  # CVE-2026-42497 HIGH, CVE-2026-42496, CVE-2026-8376, CVE-2026-48962,
209
- # CVE-2026-57432, CVE-2026-57433 — perl-base/perl-modules in node:XX-slim)
209
+ # CVE-2026-57432, CVE-2026-57433 — perl-base/perl-modules in node:22.23.4-slim)
210
210
  && apt-get update \
211
211
  && apt-get upgrade -y --no-install-recommends libpcre2-8-0 perl-base perl-modules-5.36 \
212
212
  && apt-get clean \
@@ -265,7 +265,7 @@ ENV INDEX_CONCURRENCY_LIMIT=8
265
265
 
266
266
  EXPOSE 48721
267
267
 
268
- # Dependency-free health probe (SEC-12): node:22-slim does not ship `wget`, so a
268
+ # Dependency-free health probe (SEC-12): node:22.23.4-slim does not ship `wget`, so a
269
269
  # wget-based probe would silently fail. Use node's built-in http client instead.
270
270
  HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
271
271
  CMD node -e "require('http').get('http://localhost:'+(process.env.PORT||48721)+'/health',r=>process.exit(r.statusCode===200?0:1)).on('error',()=>process.exit(1))"
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  </p>
7
7
 
8
8
  <p align="center">
9
- <img src="https://img.shields.io/badge/version-1.55.3-blue?style=for-the-badge" alt="Version">
9
+ <img src="https://img.shields.io/badge/version-1.55.8-blue?style=for-the-badge" alt="Version">
10
10
  <img src="https://img.shields.io/badge/tools-66+-teal?style=for-the-badge" alt="Tools">
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D18-green?style=for-the-badge" alt="Node">
12
12
  </p>
@@ -30,9 +30,26 @@ export interface ContentProxyOverride {
30
30
  /** Disable the adapter entirely for this tool. */
31
31
  enabled?: boolean;
32
32
  }
33
- /** Artifact output roots — dedicated sinks for orphaned artifact files. */
34
- export declare function artifactOutputRoots(): readonly string[];
35
- /** Check whether a real path falls inside one of the artifact roots. */
33
+ /**
34
+ * Artifact output roots — the dedicated sinks for orphaned artifact files
35
+ * (SA4E-380 F-01/F-05). Shared single source for OI-14 (immediate cleanup +
36
+ * read confinement) and OI-15 (periodic sweep). The raw OS temp root and the
37
+ * agent workspace are NEVER roots.
38
+ *
39
+ * Resolution order:
40
+ * 1. `ARTIFACT_OUTPUT_ROOTS` env override — `path.delimiter`-separated list
41
+ * (operator trust; see SA-08 for the recommended defense-in-depth checks).
42
+ * 2. Defaults: the dedicated `%TEMP%/sa4e-artifacts` sink, the workspace
43
+ * `tmp/artifacts` directory, and the markdown-exporter child's own
44
+ * artifact home (F-01: without it every local-path read fails confinement).
45
+ */
46
+ export declare function artifactOutputRoots(env?: NodeJS.ProcessEnv): readonly string[];
47
+ /**
48
+ * F-01 containment: is `candidate` (already realpath-canonicalised by the
49
+ * caller) located inside `root`? Compares with `path.relative` — case-folded
50
+ * on win32, cross-device resolves to an absolute path → rejected. Separator
51
+ * boundary is honoured (`<root>-evil` is NOT inside `<root>`).
52
+ */
36
53
  export declare function isPathWithinRoot(root: string, candidate: string): boolean;
37
54
  /** Per-tool escape hatch for tools that defy the naming/description convention. */
38
55
  export declare const CONTENT_PROXY_OVERRIDES: Record<string, ContentProxyOverride>;
@@ -11,7 +11,8 @@
11
11
  *
12
12
  * Overrides exist only for tools that do not follow the convention.
13
13
  */
14
- import * as fs from 'fs';
14
+ import * as os from 'os';
15
+ import * as path from 'path';
15
16
  /** Tool-name prefixes whose result is a file written by the child server. */
16
17
  export const FILE_TOOL_NAME_PREFIXES = ['export_', 'render_', 'generate_'];
17
18
  /** Description fallback: "Convert ... to PDF/DOCX/…" (target must be a file format). */
@@ -32,24 +33,49 @@ export const CONTENT_PARAM_ALIASES = [
32
33
  export const NON_CONTENT_PARAM = /^(content_base64|.*_base64|file_path|.*_path|path|url|uri|dir|.*_id|id|name|.*_name|key|.*_key|token|secret|password|mime|.*_type|type|format|mode|encoding)$/i;
33
34
  /** Maximum artifact size inlined as base64 (mirrors the extension pre-read cap). */
34
35
  export const MAX_ARTIFACT_BYTES = 25 * 1024 * 1024;
35
- /** Artifact output roots — dedicated sinks for orphaned artifact files. */
36
- export function artifactOutputRoots() {
37
- // Convention: ARTIFACT_OUTPUT_ROOTS env var, or default per-workspace roots
38
- const env = process.env.ARTIFACT_OUTPUT_ROOTS;
39
- if (env)
40
- return env.split(':').map((s) => s.trim()).filter(Boolean);
41
- // Default: no roots configured → sweep will find nothing (safe no-op)
42
- return [];
36
+ /**
37
+ * Artifact output roots — the dedicated sinks for orphaned artifact files
38
+ * (SA4E-380 F-01/F-05). Shared single source for OI-14 (immediate cleanup +
39
+ * read confinement) and OI-15 (periodic sweep). The raw OS temp root and the
40
+ * agent workspace are NEVER roots.
41
+ *
42
+ * Resolution order:
43
+ * 1. `ARTIFACT_OUTPUT_ROOTS` env override — `path.delimiter`-separated list
44
+ * (operator trust; see SA-08 for the recommended defense-in-depth checks).
45
+ * 2. Defaults: the dedicated `%TEMP%/sa4e-artifacts` sink, the workspace
46
+ * `tmp/artifacts` directory, and the markdown-exporter child's own
47
+ * artifact home (F-01: without it every local-path read fails confinement).
48
+ */
49
+ export function artifactOutputRoots(env = process.env) {
50
+ const override = parseArtifactRootsEnv(env.ARTIFACT_OUTPUT_ROOTS);
51
+ if (override)
52
+ return override;
53
+ const workspace = path.resolve(process.cwd());
54
+ const childHome = process.platform === 'win32'
55
+ ? path.join(process.env.LOCALAPPDATA ?? '', 'markdown-exporter-mcp', 'artifacts')
56
+ : path.join(process.env.HOME ?? os.homedir(), '.cache', 'markdown-exporter-mcp', 'artifacts');
57
+ return [
58
+ path.join(os.tmpdir(), 'sa4e-artifacts'),
59
+ path.join(workspace, 'tmp', 'artifacts'),
60
+ path.resolve(childHome),
61
+ ];
43
62
  }
44
- /** Check whether a real path falls inside one of the artifact roots. */
63
+ /** SA-08 surface: parse the env override; empty/garbage → fall back to defaults. */
64
+ function parseArtifactRootsEnv(raw) {
65
+ if (!raw)
66
+ return undefined;
67
+ const roots = raw.split(path.delimiter).map((s) => s.trim()).filter(Boolean);
68
+ return roots.length ? roots : undefined;
69
+ }
70
+ /**
71
+ * F-01 containment: is `candidate` (already realpath-canonicalised by the
72
+ * caller) located inside `root`? Compares with `path.relative` — case-folded
73
+ * on win32, cross-device resolves to an absolute path → rejected. Separator
74
+ * boundary is honoured (`<root>-evil` is NOT inside `<root>`).
75
+ */
45
76
  export function isPathWithinRoot(root, candidate) {
46
- try {
47
- const real = fs.realpathSync(candidate);
48
- return artifactOutputRoots().some((r) => real.startsWith(r));
49
- }
50
- catch {
51
- return false;
52
- }
77
+ const rel = path.relative(path.resolve(root), path.resolve(candidate));
78
+ return rel === '' || (rel !== '..' && !rel.startsWith(`..${path.sep}`) && !path.isAbsolute(rel));
53
79
  }
54
80
  /** Per-tool escape hatch for tools that defy the naming/description convention. */
55
81
  export const CONTENT_PROXY_OVERRIDES = {};
@@ -1 +1 @@
1
- {"version":3,"file":"ContentProxy.js","sourceRoot":"","sources":["../../src/config/ContentProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAE9F,wFAAwF;AACxF,MAAM,CAAC,MAAM,uBAAuB,GAAG,gEAAgE,CAAC;AAExG,qEAAqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,UAAU;IACV,kBAAkB;IAClB,SAAS;IACT,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,UAAU;CACX,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAC5B,gKAAgK,CAAC;AAEnK,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAYnD,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB;IACjC,4EAA4E;IAC5E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC9C,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,sEAAsE;IACtE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,SAAiB;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,uBAAuB,GAAyC,EAAE,CAAC"}
1
+ {"version":3,"file":"ContentProxy.js","sourceRoot":"","sources":["../../src/config/ContentProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAE9F,wFAAwF;AACxF,MAAM,CAAC,MAAM,uBAAuB,GAAG,gEAAgE,CAAC;AAExG,qEAAqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,UAAU;IACV,kBAAkB;IAClB,SAAS;IACT,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,UAAU;CACX,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAC5B,gKAAgK,CAAC;AAEnK,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAYnD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,GACb,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,EAAE,uBAAuB,EAAE,WAAW,CAAC;QACjF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC;IAClG,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;KACxB,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,SAAS,qBAAqB,CAAC,GAAuB;IACpD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,SAAiB;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACnG,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,uBAAuB,GAAyC,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -105,6 +105,20 @@ async function main() {
105
105
  };
106
106
  process.on('SIGTERM', () => shutdown('SIGTERM'));
107
107
  process.on('SIGINT', () => shutdown('SIGINT'));
108
+ // Global crash guards: a single rejected/uncaught error on an async path (e.g.
109
+ // Pega ingest) must NOT silently kill the process. Without these, Node tears the
110
+ // process down and EVERY in-flight HTTP socket fails at once as
111
+ // `UND_ERR_SOCKET "other side closed"` on the client — the exact Pega-ingest symptom.
112
+ // We log with full context so the real throw site is attributable instead of invisible.
113
+ process.on('unhandledRejection', (reason) => {
114
+ const err = reason instanceof Error ? { message: reason.message, stack: reason.stack } : { reason };
115
+ logger.error(err, '[fatal] Unhandled promise rejection — process kept alive for diagnosis');
116
+ });
117
+ process.on('uncaughtException', (err) => {
118
+ logger.error({ message: err.message, stack: err.stack }, '[fatal] Uncaught exception — process kept alive for diagnosis');
119
+ // Intentionally NOT exiting: an isolated ingest-path throw should not drop all
120
+ // concurrent connections. Fatal startup errors are still caught by main().catch.
121
+ });
108
122
  logger.info({ pid: process.pid, port: config.port, version: VERSION }, 'Backend MCP Server ready');
109
123
  }
110
124
  main().catch((err) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,MAAM,OAAO,GAAG,OAAO,CAAC;AACxB,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAE7C,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,MAAM,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC,QAAQ;QACtB,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;KAChE,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,6BAA6B,CAAC,CAAC;IAEnH,6BAA6B;IAC7B,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAClC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE/C,iCAAiC;IACjC,MAAM,YAAY,EAAE,CAAC;IAErB,uEAAuE;IACvE,IAAI,CAAC;QACH,MAAM,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,sDAAsD,CAAC,CAAC;IAChF,CAAC;IAED,iEAAiE;IACjE,6DAA6D;IAC7D,mEAAmE;IACnE,IAAI,CAAC;QACH,MAAM,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,yEAAyE,CAAC,CAAC;IACnG,CAAC;IAED,mFAAmF;IACnF,IAAI,CAAC;QACH,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,gEAAgE,CAAC,CAAC;IAC1F,CAAC;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;QAClD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,aAAa;QACxC,OAAO,EAAE,OAAO;KACjB,EAAE,SAAS,CAAC,CAAC;IAEd,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAE/B,wEAAwE;IACxE,6DAA6D;IAC7D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAElG,2BAA2B;IAC3B,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/B,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAE9E,MAAM,CAAC,IAAI,CACT,EAAE,YAAY,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,EAClF,qBAAqB,CACtB,CAAC;IAEF,sBAAsB;IACtB,oDAAoD;IACpD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,8BAA8B,CAAC,CAAC;IAChE,CAAC;IAED,oEAAoE;IACpE,4EAA4E;IAC5E,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAErC,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACtE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAErB,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC;QACpD,0EAA0E;QAC1E,4EAA4E;QAC5E,yDAAyD;QACzD,IAAI,CAAC;YACH,MAAM,EAAE,iCAAiC,EAAE,GAAG,MAAM,MAAM,CAAC,gDAAgD,CAAC,CAAC;YAC7G,MAAM,iCAAiC,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,2DAA2D,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/C,+EAA+E;IAC/E,iFAAiF;IACjF,gEAAgE;IAChE,sFAAsF;IACtF,wFAAwF;IACxF,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAe,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QACpG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,wEAAwE,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAU,EAAE,EAAE;QAC7C,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,+DAA+D,CAAC,CAAC;QAC1H,+EAA+E;QAC/E,iFAAiF;IACnF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAC;AACrG,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -11,11 +11,19 @@
11
11
  * live on another machine. That case is reported as a tool error by the caller,
12
12
  * never silently downgraded to a path.
13
13
  */
14
+ import * as fs from 'fs';
14
15
  export interface ArtifactDeps {
15
16
  /** Read a resource from the child server (works across hosts). */
16
17
  readResource?: (uri: string) => Promise<Buffer | null>;
17
18
  /** Fetch an http(s) URL. Overridable for tests; defaults to global fetch. */
18
19
  fetchUrl?: (url: string) => Promise<Buffer | null>;
20
+ /**
21
+ * OI-14 local-read cleanup hook. Receives the absolute path and the
22
+ * pre-read stat; the default (no hook) deletes the artifact after its
23
+ * bytes are inlined. Only local reads invoke it — resource/URL/blob
24
+ * resolutions never do (UT-46).
25
+ */
26
+ cleanup?: (filePath: string, stat: fs.Stats) => void;
19
27
  }
20
28
  export interface FetchedArtifact {
21
29
  buffer: Buffer;
@@ -15,6 +15,7 @@ import * as fs from 'fs';
15
15
  import * as path from 'path';
16
16
  import { fileURLToPath, pathToFileURL } from 'url';
17
17
  import { MAX_ARTIFACT_BYTES } from '../../../config/ContentProxy.js';
18
+ import { isWithinArtifactRoots } from '../artifact-cleanup/artifact-roots.js';
18
19
  import { nameFromLocation, nameFromMime, safeName } from './artifact-name.js';
19
20
  /** Resolve one `artifacts[]` entry to bytes, or null when nothing is readable. */
20
21
  export async function resolveArtifact(artifact, deps) {
@@ -67,7 +68,7 @@ export async function readLocation(location, deps) {
67
68
  return (deps.fetchUrl ?? fetchHttp)(location);
68
69
  const fileUri = location.startsWith('file:') ? location : toFileUri(location);
69
70
  if (location.startsWith('file:')) {
70
- const local = readLocalFileUri(location);
71
+ const local = readLocalFileUri(location, deps);
71
72
  if (local)
72
73
  return local;
73
74
  return deps.readResource ? deps.readResource(location) : null;
@@ -76,7 +77,7 @@ export async function readLocation(location, deps) {
76
77
  // Any other scheme (artifact://, mcp://, …) is server-owned — ask the server.
77
78
  return deps.readResource ? deps.readResource(location) : null;
78
79
  }
79
- const local = readLocalFile(path.resolve(location));
80
+ const local = readLocalFile(path.resolve(location), deps);
80
81
  if (local)
81
82
  return local;
82
83
  return deps.readResource && fileUri ? deps.readResource(fileUri) : null;
@@ -94,27 +95,71 @@ function fromBase64(value, name, mime) {
94
95
  return null;
95
96
  return { buffer, file_name: name ?? nameFromMime(mime), mime_type: mime };
96
97
  }
97
- /** Read a file on the backend host: regular file only, size-capped, no symlinks. */
98
- function readLocalFile(filePath) {
98
+ /**
99
+ * Read a file on the backend host: regular file only, size-capped, no symlinks.
100
+ *
101
+ * SA4E-380 F-01 (binding): the path's real location (symlinks/junctions/`..`
102
+ * resolved) must fall inside the dedicated ARTIFACT_OUTPUT_ROOTS BEFORE any
103
+ * filesystem access — an out-of-root path is never read and never deleted.
104
+ *
105
+ * SA4E-380 OI-14: once the bytes are inlined the local artifact is garbage —
106
+ * the cleanup hook (default: delete with F-06 stat-identity re-verification)
107
+ * runs after the successful read. A failed read never deletes anything.
108
+ */
109
+ function readLocalFile(filePath, deps) {
110
+ if (!isWithinArtifactRoots(filePath))
111
+ return null;
99
112
  try {
100
113
  const stat = fs.lstatSync(filePath);
101
114
  if (!stat.isFile() || stat.isSymbolicLink() || stat.size > MAX_ARTIFACT_BYTES)
102
115
  return null;
103
116
  const buffer = fs.readFileSync(filePath);
104
- return buffer.length <= MAX_ARTIFACT_BYTES ? buffer : null;
117
+ if (buffer.length > MAX_ARTIFACT_BYTES)
118
+ return null;
119
+ try {
120
+ (deps.cleanup ?? deleteLocalArtifact)(filePath, stat);
121
+ }
122
+ catch {
123
+ // Cleanup failure never fails the tool call (UT-45) — bytes are safe.
124
+ console.warn(`[artifact-source] cleanup hook failed for '${path.basename(filePath)}'`);
125
+ }
126
+ return buffer;
105
127
  }
106
128
  catch {
107
129
  return null;
108
130
  }
109
131
  }
110
- function readLocalFileUri(uri) {
132
+ function readLocalFileUri(uri, deps) {
111
133
  try {
112
- return readLocalFile(fileURLToPath(uri));
134
+ return readLocalFile(fileURLToPath(uri), deps);
113
135
  }
114
136
  catch {
115
137
  return null;
116
138
  }
117
139
  }
140
+ /**
141
+ * Default OI-14 cleanup: delete the artifact whose bytes were just inlined.
142
+ * F-06 TOCTOU guard — re-stat and verify identity (ino/size/mtimeMs) before
143
+ * unlink so a path swapped between read and delete is never removed.
144
+ */
145
+ function deleteLocalArtifact(filePath, before) {
146
+ let now;
147
+ try {
148
+ now = fs.lstatSync(filePath);
149
+ }
150
+ catch {
151
+ return; // already gone — nothing to delete
152
+ }
153
+ if (now.ino !== before.ino || now.size !== before.size || now.mtimeMs !== before.mtimeMs)
154
+ return;
155
+ try {
156
+ fs.unlinkSync(filePath);
157
+ }
158
+ catch {
159
+ // I-3: basename only — never leak host paths into logs.
160
+ console.warn(`[artifact-source] could not delete local artifact '${path.basename(filePath)}'`);
161
+ }
162
+ }
118
163
  /** Cross-platform file:// URI — a POSIX path stays POSIX even on a Windows host. */
119
164
  function toFileUri(location) {
120
165
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-source.js","sourceRoot":"","sources":["../../../../src/modules/orchestration/content-proxy/artifact-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact-source.js","sourceRoot":"","sources":["../../../../src/modules/orchestration/content-proxy/artifact-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Classify ingest-path errors into a safe, structured envelope so the extension
3
+ * can decide retry-vs-skip and show the user a cause WITHOUT reading server logs.
4
+ *
5
+ * SEC: we expose a stable `code`, a category, a retryable flag, and the error's
6
+ * class name — but NEVER the raw stack, SQL text, or internal paths (those stay
7
+ * in the server log only). The message is a classified, non-leaky summary.
8
+ */
9
+ /** Stable error codes returned to the extension (contract — do not rename lightly). */
10
+ export type IngestErrorCode = 'VALIDATION_ERROR' | 'MISSING_CHECKSUM' | 'DB_TRANSIENT' | 'DB_PERMANENT' | 'EXTRACTION_ERROR' | 'INTERNAL_ERROR';
11
+ /** Coarse category for UI grouping. */
12
+ export type IngestErrorCategory = 'validation' | 'database' | 'extraction' | 'unknown';
13
+ /**
14
+ * Structured, log-free error detail for the response envelope.
15
+ * `retryable` lets the extension distinguish a transient fault (retry with
16
+ * backoff) from a permanent one (skip the rule, don't hammer the backend).
17
+ */
18
+ export interface IngestErrorDetails {
19
+ category: IngestErrorCategory;
20
+ retryable: boolean;
21
+ /** Error constructor name (e.g. "MissingChecksumError") — safe, no payload. */
22
+ errorName: string;
23
+ }
24
+ /** Full classified result the route turns into `{ code, message, details }`. */
25
+ export interface ClassifiedIngestError {
26
+ code: IngestErrorCode;
27
+ message: string;
28
+ details: IngestErrorDetails;
29
+ }
30
+ /**
31
+ * Classify an unknown thrown value into a safe envelope error.
32
+ * @param err - The caught error (any shape).
33
+ * @returns A classified, log-free error contract for the response body.
34
+ */
35
+ export declare function classifyIngestError(err: unknown): ClassifiedIngestError;
36
+ /** Classify a post-ingest extraction-phase failure (schema map / RelativeExtractor). */
37
+ export declare function classifyExtractionError(err: unknown): ClassifiedIngestError;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Classify ingest-path errors into a safe, structured envelope so the extension
3
+ * can decide retry-vs-skip and show the user a cause WITHOUT reading server logs.
4
+ *
5
+ * SEC: we expose a stable `code`, a category, a retryable flag, and the error's
6
+ * class name — but NEVER the raw stack, SQL text, or internal paths (those stay
7
+ * in the server log only). The message is a classified, non-leaky summary.
8
+ */
9
+ /** Postgres SQLSTATE classes/codes that are transient (worth a client retry). */
10
+ const TRANSIENT_PG_CODES = new Set([
11
+ '08000', // connection_exception
12
+ '08003', // connection_does_not_exist
13
+ '08006', // connection_failure
14
+ '40001', // serialization_failure
15
+ '40P01', // deadlock_detected
16
+ '53300', // too_many_connections
17
+ '57P01', // admin_shutdown
18
+ '57P03', // cannot_connect_now
19
+ ]);
20
+ /** Node socket/network error codes that are transient. */
21
+ const TRANSIENT_NET_CODES = new Set([
22
+ 'ECONNRESET', 'ETIMEDOUT', 'ECONNREFUSED', 'EPIPE', 'ENOTFOUND', 'EAI_AGAIN',
23
+ ]);
24
+ /**
25
+ * Classify an unknown thrown value into a safe envelope error.
26
+ * @param err - The caught error (any shape).
27
+ * @returns A classified, log-free error contract for the response body.
28
+ */
29
+ export function classifyIngestError(err) {
30
+ const name = err instanceof Error ? err.constructor.name : typeof err;
31
+ const code = extractErrorCode(err);
32
+ // 1. Known domain error: missing checksum → caller must upgrade (permanent).
33
+ if (name === 'MissingChecksumError' || code === 'MISSING_CHECKSUM') {
34
+ return build('MISSING_CHECKSUM', 'Rule rejected: missing client-computed checksum. Upgrade the extension.', 'validation', false, name);
35
+ }
36
+ // 2. Database faults — split transient (retry) vs permanent (skip).
37
+ if (code && (TRANSIENT_PG_CODES.has(code) || TRANSIENT_NET_CODES.has(code))) {
38
+ return build('DB_TRANSIENT', `Transient database/network fault (${code}). Safe to retry.`, 'database', true, name);
39
+ }
40
+ if (isLikelyDbError(err, name)) {
41
+ return build('DB_PERMANENT', 'Database rejected the write (non-transient). Do not retry without a fix.', 'database', false, name);
42
+ }
43
+ // 3. Fallback: unclassified internal error (treated as retryable-once by the
44
+ // extension is acceptable, but marked non-retryable here to avoid loops).
45
+ return build('INTERNAL_ERROR', 'Ingest failed due to an internal error. See the error code and category.', 'unknown', false, name);
46
+ }
47
+ /** Classify a post-ingest extraction-phase failure (schema map / RelativeExtractor). */
48
+ export function classifyExtractionError(err) {
49
+ const name = err instanceof Error ? err.constructor.name : typeof err;
50
+ return build('EXTRACTION_ERROR', 'Rule was ingested but dependency extraction failed. Rule stored; relatives unknown.', 'extraction', false, name);
51
+ }
52
+ // ─── Helpers ──────────────────────────────────────────────────────────────
53
+ function build(code, message, category, retryable, errorName) {
54
+ return { code, message, details: { category, retryable, errorName } };
55
+ }
56
+ /** Read a `.code` property (pg errors + Node syscall errors both expose one). */
57
+ function extractErrorCode(err) {
58
+ if (err && typeof err === 'object' && 'code' in err) {
59
+ const c = err.code;
60
+ if (typeof c === 'string' && c.length > 0)
61
+ return c;
62
+ }
63
+ return undefined;
64
+ }
65
+ /** Heuristic: does this look like a DB error (has pg-style fields or name)? */
66
+ function isLikelyDbError(err, name) {
67
+ if (/postgres|database|query|sql/i.test(name))
68
+ return true;
69
+ if (err && typeof err === 'object') {
70
+ const e = err;
71
+ // node-postgres errors carry severity/routine/schema fields.
72
+ if ('severity' in e || 'routine' in e || 'sqlState' in e)
73
+ return true;
74
+ }
75
+ return false;
76
+ }
77
+ //# sourceMappingURL=ingest-error-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-error-classifier.js","sourceRoot":"","sources":["../../../src/modules/pega/ingest-error-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiCH,iFAAiF;AACjF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,OAAO,EAAE,uBAAuB;IAChC,OAAO,EAAE,4BAA4B;IACrC,OAAO,EAAE,qBAAqB;IAC9B,OAAO,EAAE,wBAAwB;IACjC,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,uBAAuB;IAChC,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,qBAAqB;CAC/B,CAAC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;CAC7E,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,MAAM,IAAI,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;IACtE,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEnC,6EAA6E;IAC7E,IAAI,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC,kBAAkB,EAC7B,yEAAyE,EACzE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,oEAAoE;IACpE,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC,cAAc,EACzB,qCAAqC,IAAI,mBAAmB,EAC5D,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,cAAc,EACzB,0EAA0E,EAC1E,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,OAAO,KAAK,CAAC,gBAAgB,EAC3B,0EAA0E,EAC1E,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,MAAM,IAAI,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;IACtE,OAAO,KAAK,CAAC,kBAAkB,EAC7B,qFAAqF,EACrF,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,6EAA6E;AAE7E,SAAS,KAAK,CACZ,IAAqB,EAAE,OAAe,EACtC,QAA6B,EAAE,SAAkB,EAAE,SAAiB;IAEpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC;AACxE,CAAC;AAED,iFAAiF;AACjF,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,CAAC,GAAI,GAA0B,CAAC,IAAI,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,SAAS,eAAe,CAAC,GAAY,EAAE,IAAY;IACjD,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,GAA8B,CAAC;QACzC,6DAA6D;QAC7D,IAAI,UAAU,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -37,6 +37,17 @@ export class HttpServer {
37
37
  fetch: this.app.fetch,
38
38
  port: this.port,
39
39
  hostname: this.host,
40
+ // Fix 5/UND_ERR_SOCKET: Node's default keepAliveTimeout (~5s) closes an idle
41
+ // socket mid-pipeline when an ingest request is queued behind the DB under
42
+ // load — the client sees "other side closed". Raise the timeouts so a slow
43
+ // request waiting on Postgres is never dropped without a response.
44
+ // serverOptions is forwarded to node:http.createServer (@hono/node-server).
45
+ // Invariant: headersTimeout > keepAliveTimeout, requestTimeout ≥ both.
46
+ serverOptions: {
47
+ keepAliveTimeout: 60_000, // keep idle sockets alive across batched POSTs
48
+ headersTimeout: 65_000, // > keepAliveTimeout (Node requirement)
49
+ requestTimeout: 120_000, // allow a slow DB-bound ingest to finish
50
+ },
40
51
  }, async (info) => {
41
52
  this._isRunning = true;
42
53
  this.logger.info({ port: info.port, host: this.host }, 'Backend server started');
@@ -1 +1 @@
1
- {"version":3,"file":"HttpServer.js","sourceRoot":"","sources":["../../src/server/HttpServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HttpServer.js","sourceRoot":"","sources":["../../src/server/HttpServer.ts"],"names":[],"mappings":"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"}