@the-40-thieves/obsidian-tc-shared 1.23.2 → 1.23.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/errors.d.ts CHANGED
@@ -16,6 +16,33 @@ export declare class ObsidianTcError extends Error {
16
16
  constructor(code: ErrorCode, message: string, details?: Record<string, unknown>);
17
17
  toJSON(): ErrorJSON;
18
18
  }
19
+ /**
20
+ * THE-926: does `e` represent a failure that a per-leg/per-variant fan-out isolation layer (THE-448's
21
+ * multiQueryGraphSearch, THE-630's runFederatedLegs) must NOT silently swallow into an empty result
22
+ * set for that leg?
23
+ *
24
+ * The obvious first attempt — "rethrow when `!e.retryable`" — does NOT work: `retryable` says
25
+ * whether *retrying the same call* is worth trying, which is orthogonal to whether a fan-out layer
26
+ * may treat the failure as "this one leg found nothing" and move on. `chunk_fts.ts`'s
27
+ * `assertContentlessChunkFts` (THE-750) is the case that proves it — it throws `code: "internal"`,
28
+ * which `RETRYABLE` lists (a generic "unexpected failure, retryable once" default), yet it is
29
+ * exactly the deliberate, permanent refusal this predicate exists to let through: re-running the
30
+ * same query re-hits the same pre-migration table shape and refuses identically every time.
31
+ *
32
+ * So the actual split is: an ObsidianTcError with code `"internal"` (the generic bucket for
33
+ * "something the caller could not have anticipated went wrong," which in this codebase only ever
34
+ * covers unexpected/structural failures — never a domain-specific transient one, which gets its own
35
+ * code) OR one that is `retryable === false` (a domain-specific permanent refusal — validation,
36
+ * ACL, budget-exceeded, poison-scan, ...) must propagate. Only the domain-specific RETRYABLE codes
37
+ * (`embedding_provider_error`, `operation_timeout`, `plugin_unreachable`, `concurrent_modification`,
38
+ * `idempotency_in_flight`, `throttled`, `aborted`) describe a genuinely transient per-leg hiccup
39
+ * that a fan-out may swallow and still make forward progress on the other legs.
40
+ *
41
+ * A non-`ObsidianTcError` (a bare `Error`, a rejected promise from something outside this error
42
+ * taxonomy) is never "loud" by this predicate — it is exactly the unmodeled, per-leg transient case
43
+ * the existing swallow-and-continue behavior was built for.
44
+ */
45
+ export declare function isLoudRefusal(e: unknown): e is ObsidianTcError;
19
46
  type Mk = (message?: string, details?: Record<string, unknown>) => ObsidianTcError;
20
47
  export declare const err: {
21
48
  readonly unauthorized: Mk;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAEjB,cAAc,GACd,WAAW,GACX,kBAAkB,GAClB,WAAW,GACX,iBAAiB,GACjB,UAAU,GACV,0BAA0B,GAC1B,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,WAAW,GACX,oBAAoB,GACpB,UAAU,GAEV,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,aAAa,GACb,yBAAyB,GACzB,eAAe,GACf,gBAAgB,GAEhB,0BAA0B,GAC1B,mBAAmB,GACnB,WAAW,GACX,iBAAiB,GACjB,gBAAgB,GAChB,oBAAoB,GAEpB,oBAAoB,GACpB,yBAAyB,GAEzB,0BAA0B,GAC1B,yBAAyB,GAEzB,wBAAwB,GAGxB,yBAAyB,GAGzB,qBAAqB,GAIrB,uBAAuB,GAIvB,SAAS,GAKT,kBAAkB,CAAC;AAmIvB,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAE/D;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,YAAY,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAO9E;IAED,MAAM,IAAI,SAAS,CASlB;CACF;AAED,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,eAAe,CAAC;AAMnF,eAAO,MAAM,GAAG;aAEd,YAAY;aACZ,SAAS;aACT,UAAU;aACV,QAAQ;aACR,aAAa;aACb,QAAQ;aACR,cAAc;aACd,aAAa;aACb,QAAQ;aACR,SAAS;aACT,QAAQ;aACR,QAAQ;aAER,YAAY;aACZ,WAAW;aACX,aAAa;aACb,SAAS;aACT,YAAY;aACZ,UAAU;aACV,sBAAsB;aACtB,YAAY;aACZ,aAAa;aAEb,sBAAsB;aACtB,gBAAgB;aAChB,QAAQ;aACR,cAAc;aACd,aAAa;aACb,iBAAiB;aAEjB,gBAAgB;aAChB,qBAAqB;aAKrB,sBAAsB;aAItB,qBAAqB;aAErB,oBAAoB;aAKpB,qBAAqB;aAErB,kBAAkB;aAKlB,OAAO;aAEP,eAAe;CACP,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAEjB,cAAc,GACd,WAAW,GACX,kBAAkB,GAClB,WAAW,GACX,iBAAiB,GACjB,UAAU,GACV,0BAA0B,GAC1B,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,WAAW,GACX,oBAAoB,GACpB,UAAU,GAEV,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,aAAa,GACb,yBAAyB,GACzB,eAAe,GACf,gBAAgB,GAEhB,0BAA0B,GAC1B,mBAAmB,GACnB,WAAW,GACX,iBAAiB,GACjB,gBAAgB,GAChB,oBAAoB,GAEpB,oBAAoB,GACpB,yBAAyB,GAEzB,0BAA0B,GAC1B,yBAAyB,GAEzB,wBAAwB,GAGxB,yBAAyB,GAGzB,qBAAqB,GAIrB,uBAAuB,GAIvB,SAAS,GAKT,kBAAkB,CAAC;AAmIvB,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAE/D;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,YAAY,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAO9E;IAED,MAAM,IAAI,SAAS,CASlB;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,eAAe,CAE9D;AAED,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,eAAe,CAAC;AAMnF,eAAO,MAAM,GAAG;aAEd,YAAY;aACZ,SAAS;aACT,UAAU;aACV,QAAQ;aACR,aAAa;aACb,QAAQ;aACR,cAAc;aACd,aAAa;aACb,QAAQ;aACR,SAAS;aACT,QAAQ;aACR,QAAQ;aAER,YAAY;aACZ,WAAW;aACX,aAAa;aACb,SAAS;aACT,YAAY;aACZ,UAAU;aACV,sBAAsB;aACtB,YAAY;aACZ,aAAa;aAEb,sBAAsB;aACtB,gBAAgB;aAChB,QAAQ;aACR,cAAc;aACd,aAAa;aACb,iBAAiB;aAEjB,gBAAgB;aAChB,qBAAqB;aAKrB,sBAAsB;aAItB,qBAAqB;aAErB,oBAAoB;aAKpB,qBAAqB;aAErB,kBAAkB;aAKlB,OAAO;aAEP,eAAe;CACP,CAAC"}
package/dist/errors.js CHANGED
@@ -113,6 +113,35 @@ export class ObsidianTcError extends Error {
113
113
  };
114
114
  }
115
115
  }
116
+ /**
117
+ * THE-926: does `e` represent a failure that a per-leg/per-variant fan-out isolation layer (THE-448's
118
+ * multiQueryGraphSearch, THE-630's runFederatedLegs) must NOT silently swallow into an empty result
119
+ * set for that leg?
120
+ *
121
+ * The obvious first attempt — "rethrow when `!e.retryable`" — does NOT work: `retryable` says
122
+ * whether *retrying the same call* is worth trying, which is orthogonal to whether a fan-out layer
123
+ * may treat the failure as "this one leg found nothing" and move on. `chunk_fts.ts`'s
124
+ * `assertContentlessChunkFts` (THE-750) is the case that proves it — it throws `code: "internal"`,
125
+ * which `RETRYABLE` lists (a generic "unexpected failure, retryable once" default), yet it is
126
+ * exactly the deliberate, permanent refusal this predicate exists to let through: re-running the
127
+ * same query re-hits the same pre-migration table shape and refuses identically every time.
128
+ *
129
+ * So the actual split is: an ObsidianTcError with code `"internal"` (the generic bucket for
130
+ * "something the caller could not have anticipated went wrong," which in this codebase only ever
131
+ * covers unexpected/structural failures — never a domain-specific transient one, which gets its own
132
+ * code) OR one that is `retryable === false` (a domain-specific permanent refusal — validation,
133
+ * ACL, budget-exceeded, poison-scan, ...) must propagate. Only the domain-specific RETRYABLE codes
134
+ * (`embedding_provider_error`, `operation_timeout`, `plugin_unreachable`, `concurrent_modification`,
135
+ * `idempotency_in_flight`, `throttled`, `aborted`) describe a genuinely transient per-leg hiccup
136
+ * that a fan-out may swallow and still make forward progress on the other legs.
137
+ *
138
+ * A non-`ObsidianTcError` (a bare `Error`, a rejected promise from something outside this error
139
+ * taxonomy) is never "loud" by this predicate — it is exactly the unmodeled, per-leg transient case
140
+ * the existing swallow-and-continue behavior was built for.
141
+ */
142
+ export function isLoudRefusal(e) {
143
+ return e instanceof ObsidianTcError && (e.code === "internal" || !e.retryable);
144
+ }
116
145
  const mk = (code, fallback) => (message = fallback, details) => new ObsidianTcError(code, message, details);
117
146
  export const err = {
118
147
  // M0
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Best-effort cause code for a rejected `fetch`, so a caller can tell a TLS trust failure apart
3
+ * from ECONNREFUSED/ENOTFOUND/an abort instead of collapsing every unreachable cause into one
4
+ * opaque failure. Node puts the code on `e.cause.code`; Bun puts it on `e` itself — check both.
5
+ * An `AggregateError` cause (e.g. Node's Happy Eyeballs dual-stack failure) yields its first
6
+ * member. Code string only, and shape-checked: the message/cause object may embed a URL or other
7
+ * free text that must never reach an error payload, so a non-conforming runtime or injected fetch
8
+ * must not smuggle one through `.code`.
9
+ */
10
+ export declare function extractCauseCode(e: unknown): string | undefined;
11
+ //# sourceMappingURL=fetch-cause.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-cause.d.ts","sourceRoot":"","sources":["../src/fetch-cause.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAU/D"}
@@ -0,0 +1,26 @@
1
+ // THE-923: extracted from bridge/transport.ts (THE-922), which had the only copy of this
2
+ // unwrapper even though every fetch-based transport in the server (bridge, embeddings, gateway)
3
+ // hits the identical Node/Bun cause-shape split. Kept dependency-free so it stays usable from the
4
+ // isomorphic shared package, same as net-host.ts.
5
+ const CAUSE_CODE_SHAPE = /^[A-Za-z0-9_]{1,64}$/;
6
+ /**
7
+ * Best-effort cause code for a rejected `fetch`, so a caller can tell a TLS trust failure apart
8
+ * from ECONNREFUSED/ENOTFOUND/an abort instead of collapsing every unreachable cause into one
9
+ * opaque failure. Node puts the code on `e.cause.code`; Bun puts it on `e` itself — check both.
10
+ * An `AggregateError` cause (e.g. Node's Happy Eyeballs dual-stack failure) yields its first
11
+ * member. Code string only, and shape-checked: the message/cause object may embed a URL or other
12
+ * free text that must never reach an error payload, so a non-conforming runtime or injected fetch
13
+ * must not smuggle one through `.code`.
14
+ */
15
+ export function extractCauseCode(e) {
16
+ const cause = e instanceof Error ? e.cause : undefined;
17
+ const first = cause instanceof AggregateError ? cause.errors[0] : undefined;
18
+ const raw = first?.code ??
19
+ cause?.code ??
20
+ e?.code;
21
+ if (typeof raw === "string" && CAUSE_CODE_SHAPE.test(raw))
22
+ return raw;
23
+ const name = e instanceof Error ? e.name : undefined;
24
+ return name === "AbortError" || name === "TimeoutError" ? "ABORT_ERR" : undefined;
25
+ }
26
+ //# sourceMappingURL=fetch-cause.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-cause.js","sourceRoot":"","sources":["../src/fetch-cause.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,gGAAgG;AAChG,kGAAkG;AAClG,kDAAkD;AAClD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,KAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,MAAM,KAAK,GAAG,KAAK,YAAY,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,GAAG,GACN,KAAwC,EAAE,IAAI;QAC9C,KAAwC,EAAE,IAAI;QAC9C,CAAoC,EAAE,IAAI,CAAC;IAC9C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACtE,MAAM,IAAI,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,OAAO,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./config.schema";
2
2
  export * from "./errors";
3
+ export * from "./fetch-cause";
3
4
  export * from "./morgiana.schema";
4
5
  export * from "./net-host";
5
6
  export * from "./result";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./config.schema";
2
2
  export * from "./errors";
3
+ export * from "./fetch-cause";
3
4
  export * from "./morgiana.schema";
4
5
  export * from "./net-host";
5
6
  export * from "./result";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@the-40-thieves/obsidian-tc-shared",
3
- "version": "1.23.2",
3
+ "version": "1.23.4",
4
4
  "description": "Shared Zod schemas and types for obsidian-tc",
5
5
  "license": "AGPL-3.0-only",
6
6
  "type": "module",