@happyvertical/smrt-ingestion 0.60.5 → 0.60.7

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.
@@ -52,7 +52,12 @@ export declare class IngestionProposalService {
52
52
  }): Promise<CandidatePage>;
53
53
  prepareGeneration(itemId: string, attemptId: string): Promise<GenerationStageConfiguration>;
54
54
  private extraction;
55
+ /**
56
+ * The provider-boundary authority re-check. Each part is its own read
57
+ * transaction, so a deadlock or serialization failure re-runs it (#4651).
58
+ */
55
59
  private live;
60
+ private liveOnce;
56
61
  private feedbackGate;
57
62
  /** Whether the analysis lease still covers `delay` plus another full stage deadline. */
58
63
  private retryFits;
@@ -1 +1 @@
1
- {"version":3,"file":"proposals.d.ts","sourceRoot":"","sources":["../src/proposals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proposals.d.ts","sourceRoot":"","sources":["../src/proposals.ts"],"names":[],"mappings":"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"}
package/dist/proposals.js CHANGED
@@ -1,8 +1,8 @@
1
- import { A as __toESM, D as generationSnapshotRead, E as discoveryTransaction, S as prepareFailureCapture, T as completeWithFailureCapture, _ as HandlerArgumentsInvalidError, b as FAILURE_CAPTURE_MAX_BYTES, d as schemaOwnedPath, f as require_ajv, h as GenerationSnapshotStaleError, i as intakeBindingDigest, n as IntakeExecutionService, u as describeArgumentRefusal, w as analysisLeaseRemaining, x as assertFailureCapture, y as FAILURE_CAPTURE_DEFAULT_MAX_BYTES } from "./chunks/execution-Clcmi0sj.js";
1
+ import { A as __toESM, D as generationSnapshotRead, E as discoveryTransaction, S as prepareFailureCapture, T as completeWithFailureCapture, _ as HandlerArgumentsInvalidError, b as FAILURE_CAPTURE_MAX_BYTES, d as schemaOwnedPath, f as require_ajv, h as GenerationSnapshotStaleError, i as intakeBindingDigest, n as IntakeExecutionService, u as describeArgumentRefusal, w as analysisLeaseRemaining, x as assertFailureCapture, y as FAILURE_CAPTURE_DEFAULT_MAX_BYTES } from "./chunks/execution-ySzcTXW3.js";
2
2
  import { c as storableJSONText, o as providerIdentity, s as normalizeObservedImageRegions } from "./chunks/extraction-providers-DoD7M-Lm.js";
3
3
  import { a as generationLimiter, c as shouldRetry, f as proposeDocumentSplits, l as SplitGroupError, n as assertProposalLimits, o as generationRetryPolicy, r as GenerationLimiter, s as retryDelay, t as proposalReadConfiguration } from "./chunks/proposal-contracts-DREPLG56.js";
4
- import { i as reviewerInstructionView } from "./chunks/reviewer-instruction-BeOYVCVk.js";
5
- import { n as IntakeFeedbackService, t as FeedbackRetrievalDeniedError } from "./chunks/feedback-hDSMYjiG.js";
4
+ import { i as reviewerInstructionView } from "./chunks/reviewer-instruction-Bst9wIak.js";
5
+ import { a as retryTransactionConflicts, i as isTransactionConflict, n as IntakeFeedbackService, t as FeedbackRetrievalDeniedError } from "./chunks/feedback-CSi5pVUI.js";
6
6
  import { executeDecision, isEmbeddedDatabase, withEmbeddedWriteTransaction } from "@happyvertical/smrt-core";
7
7
  import { AIError } from "@happyvertical/ai";
8
8
  //#region src/host-review.ts
@@ -1490,7 +1490,14 @@ var IngestionProposalService = class {
1490
1490
  }
1491
1491
  return results;
1492
1492
  }
1493
- async live(lease, catalogDigest, offered = [], feedback) {
1493
+ /**
1494
+ * The provider-boundary authority re-check. Each part is its own read
1495
+ * transaction, so a deadlock or serialization failure re-runs it (#4651).
1496
+ */
1497
+ live(lease, catalogDigest, offered = [], feedback) {
1498
+ return retryTransactionConflicts(() => this.liveOnce(lease, catalogDigest, offered, feedback));
1499
+ }
1500
+ async liveOnce(lease, catalogDigest, offered, feedback) {
1494
1501
  await this.service.getGenerationInput(lease);
1495
1502
  const catalog = await this.catalog(lease.itemId);
1496
1503
  if (intakeBindingDigest(catalog) !== catalogDigest) throw new Error("Generation catalog changed");
@@ -1603,12 +1610,12 @@ var IngestionProposalService = class {
1603
1610
  const query = evidence.flatMap((entry) => entry.segments.map((segment) => segment.text)).join("\n").slice(0, this.config.limits.maxQueryLength);
1604
1611
  for (const { handler } of catalog) {
1605
1612
  await this.live(lease, expected.catalogDigest);
1606
- const candidates = await this.findCandidates({
1613
+ const candidates = await retryTransactionConflicts(() => this.findCandidates({
1607
1614
  itemId: lease.itemId,
1608
1615
  handlerId: handler.id,
1609
1616
  handlerVersion: handler.version,
1610
1617
  query
1611
- });
1618
+ }));
1612
1619
  if (candidates.truncated) output.warnings.push("candidate_set_truncated");
1613
1620
  output.offered.push({
1614
1621
  handler,
@@ -1619,7 +1626,7 @@ var IngestionProposalService = class {
1619
1626
  if (this.options.feedback && !generation.configuration.humanCorrection && query.trim() && output.offered.length) {
1620
1627
  const feedbackQuery = query.slice(0, 4096);
1621
1628
  try {
1622
- feedbackSelection = await new IntakeFeedbackService(this.options, this.execution).retrieve({
1629
+ feedbackSelection = await retryTransactionConflicts(() => new IntakeFeedbackService(this.options, this.execution).retrieve({
1623
1630
  itemId: lease.itemId,
1624
1631
  query: feedbackQuery,
1625
1632
  offered: output.offered,
@@ -1627,7 +1634,7 @@ var IngestionProposalService = class {
1627
1634
  configurationVersion: this.config.version,
1628
1635
  model: this.identity,
1629
1636
  providers: [this.identity.provider, ...this.decisionIdentity ? [this.decisionIdentity.provider] : []]
1630
- });
1637
+ }));
1631
1638
  } catch (error) {
1632
1639
  if (!(error instanceof FeedbackRetrievalDeniedError)) throw error;
1633
1640
  }
@@ -1757,6 +1764,7 @@ var IngestionProposalService = class {
1757
1764
  }
1758
1765
  }
1759
1766
  } catch (error) {
1767
+ if (isTransactionConflict(error)) throw error;
1760
1768
  const candidate = captureCandidate;
1761
1769
  captureCandidate = void 0;
1762
1770
  await this.live(lease, expected.catalogDigest);