@memnexus-ai/typescript-sdk 1.76.7 → 1.77.0

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/index.cjs CHANGED
@@ -79,6 +79,7 @@ __export(index_exports, {
79
79
  community: () => community,
80
80
  compileInstructionsRequest: () => compileInstructionsRequest,
81
81
  compileInstructionsResponse: () => compileInstructionsResponse,
82
+ conflictScoringIncomplete: () => conflictScoringIncomplete,
82
83
  conversation: () => conversation,
83
84
  createArtifactRequest: () => createArtifactRequest,
84
85
  createCheckoutSessionRequest: () => createCheckoutSessionRequest,
@@ -6982,6 +6983,12 @@ var searchRequest = import_zod.z.object({
6982
6983
  /** EXPERIMENTAL — dev-measurement only. Per-request override of the v2.74 Phase B assistant-claims serving flag (env ASSISTANT_CLAIMS_SERVING), used by the eval harness to run treatment (conditional serving) vs control (Phase A exclusion) arms in one pass. Honored ONLY when the server has ASSISTANT_CLAIMS_SERVING_PARAM_ENABLED=true (dev); otherwise silently ignored (no error). true enables Phase B conditional serving (the F20 trigger still decides per-query whether assistant-origin claims surface); false forces Phase A exclusion. Absent → server default. Not for production use. */
6983
6984
  assistantClaimsServing: import_zod.z.boolean().optional()
6984
6985
  });
6986
+ var conflictScoringIncomplete = import_zod.z.object({
6987
+ /** Ids of the claim groups covering this result whose conflict scoring did not complete. Each matches a claim_groups[].id in the same response, where conflict_status is 'partial' (some sampled pairs unscored) or 'unknown' (none scored). Never empty when this object is present. */
6988
+ groupIds: import_zod.z.array(import_zod.z.string()).min(1),
6989
+ /** Distinct ALIGNS_WITH claim pairs left unscored, summed across groupIds. Present only when > 0. Counted over the SAMPLED neighbor set (up to the top 20 edges per claim by embedding similarity), so it is a lower bound on unevaluated relationships, not a total. Absent when the group carries no count, which does not mean zero. */
6990
+ unscoredPairs: import_zod.z.number().min(1).optional()
6991
+ });
6985
6992
  var entity = import_zod.z.object({
6986
6993
  /** Entity name */
6987
6994
  name: import_zod.z.string().optional(),
@@ -7017,6 +7024,8 @@ var searchResult = import_zod.z.lazy(() => import_zod.z.object({
7017
7024
  effectiveState: import_zod.z.string().optional(),
7018
7025
  /** Human-readable caveat present ONLY on results with effectiveState='superseded' (v2.76, #4611). Supersession is session-granular: a memory is marked superseded when ANY fact in it was later updated, so most of its facts are typically still accurate. This notice says the session was partially updated; individual outdated lines in summary_facts are marked [SUPERSEDED] with the newer value quoted inline. Additive and optional — absent on current results, and absent entirely unless SUPERSEDED_RETRIEVAL_MODE='demote'. */
7019
7026
  supersessionNotice: import_zod.z.string().optional(),
7027
+ /** Present ONLY when at least one of this result's claims sits in a claim group whose conflict check did not complete (v2.91). Conflict detection scores ALIGNS_WITH claim pairs with an LLM judge on the search path; that scoring can be skipped because the judge was unavailable, the per-request pair cap was reached, the wall-clock budget expired, or a judge response failed to parse. When this field is present, the absence of a conflict marker in this result's summary_facts means NO CONFLICT WAS DEMONSTRATED — not that none exists. Cross-reference groupIds against claim_groups[].id for the group's conflict_status. ABSENT (not false, not an empty object) when every sampled pair covering this result was scored — a fully-scored response gains no new field. This field is emitted by the search responses that implement it; its absence on any other endpoint carries no assurance that conflict scoring completed there. */
7028
+ conflictScoringIncomplete: conflictScoringIncomplete.optional(),
7020
7029
  /** Confidence score (0-1) */
7021
7030
  confidenceScore: import_zod.z.number().min(0).max(1).optional(),
7022
7031
  /** Overall relevance score for this result */
@@ -7107,6 +7116,10 @@ var searchMeta = import_zod.z.lazy(() => import_zod.z.object({
7107
7116
  degraded: import_zod.z.boolean().optional(),
7108
7117
  /** The branches that did NOT complete, present only when degraded is true. Healthy branches are omitted, and the field is absent entirely on the healthy path. */
7109
7118
  branchFailures: import_zod.z.array(branchFailure).optional(),
7119
+ /** True when the fulltext-anchor gate discarded a non-empty candidate set for this query, so this page does NOT include everything the search found. Combine with total: total=0 alongside this flag means the empty result is an artefact of the gate, not a statement that no matching memory exists, and a larger limit may return results. DISTINCT from degraded, which is false here because every search branch succeeded. ABSENT (not false) when the gate suppressed nothing — an unsuppressed response gains no new fields. This field is emitted by the search and digest responses that implement it; its absence on any other endpoint carries no assurance that nothing was suppressed there. */
7120
+ anchorGateSuppressed: import_zod.z.boolean().optional(),
7121
+ /** How many fused candidates the fulltext-anchor gate discarded, summed across every hybrid search whose health this request captured; reformulation searches issued under `rewrite=true` are NOT included, so on such a request this count can under-report, and both fields can be absent entirely even though the gate did suppress. Present only alongside anchorGateSuppressed, and always > 0 when present. Treat it as an UPPER BOUND on what a larger limit could recover, not as a count of retrievable rows: the gate runs before the superseded/duplicate exclusion, so discarded candidates can include duplicate-state rows that are never served at any limit and superseded rows that are served only when the caller asks for them. This field is emitted by the search and digest responses that implement it; its absence on any other endpoint carries no assurance that nothing was suppressed there. */
7122
+ anchorGateDiscardedCount: import_zod.z.number().min(1).optional(),
7110
7123
  /** Temporal query metadata (present when temporal filters are used) */
7111
7124
  temporalMetadata: temporalMetadata.optional()
7112
7125
  }));
@@ -7139,13 +7152,13 @@ var claimGroupClaim = import_zod.z.object({
7139
7152
  var claimGroupSignals = import_zod.z.object({
7140
7153
  /** Number of claims in this group */
7141
7154
  n_claims: import_zod.z.number(),
7142
- /** Minimum LLM-judged alignment score among all pairs in the group (0=conflict, 1=corroborate) */
7155
+ /** Minimum LLM-judged alignment score among the SCORED pairs in the group (0=conflict, 1=corroborate). When conflict_status is 'unknown' no pair was scored and this is the placeholder 1.0 — read it as 'no evidence', NOT as measured corroboration; when conflict_status is 'partial' it is a minimum over the scored subset only. */
7143
7156
  alignment_min: import_zod.z.number(),
7144
7157
  /** Days between earliest and latest claim in the group */
7145
7158
  temporal_spread_days: import_zod.z.number(),
7146
- /** True if alignment_min < 0.85, indicating potential conflict */
7159
+ /** True if alignment_min < 0.85, indicating potential conflict. Like has_conflict, FALSE IS NOT A CLEAN BILL OF HEALTH unless conflict_status is 'conflict': this is derived from alignment_min, which is the 1.0 placeholder on an 'unknown' group (no pair was scored) and a minimum over the scored subset only on a 'partial' group — so on those groups false means no low-alignment pair was demonstrated among the pairs actually scored, which on an 'unknown' group is none of them. Results covered by such a group carry conflictScoringIncomplete. */
7147
7160
  has_low_alignment_pair: import_zod.z.boolean(),
7148
- /** True if alignment_min < 0.4 — claims directly conflict or one supersedes the other */
7161
+ /** True if alignment_min < 0.4 — claims directly conflict or one supersedes the other. FALSE IS NOT A CLEAN BILL OF HEALTH unless conflict_status is 'conflict': on a 'partial' or 'unknown' group it means no conflict was demonstrated among the pairs that were actually scored, which on an 'unknown' group is none of them. Results covered by such a group carry conflictScoringIncomplete. */
7149
7162
  has_conflict: import_zod.z.boolean(),
7150
7163
  /** True if temporal_spread_days > 30 */
7151
7164
  has_temporal_spread: import_zod.z.boolean()
@@ -7157,6 +7170,8 @@ var claimGroup = import_zod.z.lazy(() => import_zod.z.object({
7157
7170
  claims: import_zod.z.array(claimGroupClaim),
7158
7171
  /** Scoring completeness of the SAMPLED neighbor set (up to the top 20 ALIGNS_WITH edges per claim, by embedding similarity — edges beyond that sample are not evaluated): 'conflict' = all sampled edges scored and a conflict was detected, 'partial' = some sampled edges unscored, 'unknown' = all sampled edges unscored */
7159
7172
  conflict_status: import_zod.z.enum(["conflict", "partial", "unknown"]),
7173
+ /** How many distinct sampled ALIGNS_WITH pairs in this group were left unscored — the alignment judge was unavailable, the per-request pair cap was reached, the wall-clock scoring budget expired, or a judge response failed to parse. Present only when > 0, i.e. exactly when conflict_status is 'partial' or 'unknown'; ABSENT on a fully-scored group, which gains no new field. Counted over the sampled neighbor set only, so it is a lower bound on unevaluated relationships. This field is emitted by the search responses that implement it; its absence on any other endpoint carries no assurance that scoring completed there. */
7174
+ unscored_pair_count: import_zod.z.number().min(1).optional(),
7160
7175
  /** Computed signals about the claim cluster */
7161
7176
  signals: claimGroupSignals
7162
7177
  }));
@@ -7769,6 +7784,10 @@ var digestMetadata = import_zod.z.lazy(() => import_zod.z.object({
7769
7784
  narrowWindowFallback: import_zod.z.boolean().optional(),
7770
7785
  /** True when the digest is in the narrow-window band AND the source memories span 2+ distinct codeContext.product values (or none share a product). Indicates the synthesis is drawn from heterogeneous, possibly cross-project sources — likely the wrong project for the calling agent. See support#183. */
7771
7786
  crossProjectFallback: import_zod.z.boolean().optional(),
7787
+ /** v2.90 (#5450). True when the fulltext-anchor gate discarded a non-empty candidate set during the gather that produced this digest, so this digest does NOT include everything the search found. Combine with sourcesConsidered: sourcesConsidered=0 alongside this flag means the empty answer is an artefact of the gate, not a statement that the store holds nothing, and a wider maxSources may return results. ABSENT (not false) when the gate suppressed nothing — an unsuppressed response gains no new fields, so existing clients are unaffected. This is an EVENT record, not a verdict on emptiness. This field is emitted by the digest and search responses that implement it; its absence on any other endpoint carries no assurance that nothing was suppressed there. */
7788
+ anchorGateSuppressed: import_zod.z.boolean().optional(),
7789
+ /** v2.90 (#5450). How many fused candidates the fulltext-anchor gate discarded, summed across every hybrid search this gather ran. Present only alongside anchorGateSuppressed, and always > 0 when present. Treat it as an UPPER BOUND on what a wider maxSources could recover, not as a count of retrievable rows: the gate runs before the superseded/duplicate exclusion, so discarded candidates can include duplicate-state rows that are never served at any maxSources and superseded rows that are served only when the caller asks for them. This field is emitted by the digest and search responses that implement it; its absence on any other endpoint carries no assurance that nothing was suppressed there. */
7790
+ anchorGateDiscardedCount: import_zod.z.number().min(1).optional(),
7772
7791
  /** ISO 8601 timestamp when the digest was generated */
7773
7792
  generatedAt: import_zod.z.string().datetime(),
7774
7793
  /** Recursion stats (only present when recursive synthesis is used) */
@@ -8271,6 +8290,7 @@ var index_default = Memnexus;
8271
8290
  community,
8272
8291
  compileInstructionsRequest,
8273
8292
  compileInstructionsResponse,
8293
+ conflictScoringIncomplete,
8274
8294
  conversation,
8275
8295
  createArtifactRequest,
8276
8296
  createCheckoutSessionRequest,