@happyvertical/smrt-ingestion 0.57.26 → 0.57.28

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.
Files changed (49) hide show
  1. package/FEEDBACK.md +7 -0
  2. package/PROPOSALS.md +69 -3
  3. package/README.md +4 -1
  4. package/REVIEW.md +50 -11
  5. package/agents/execution.md +4 -2
  6. package/dist/argument-issues.d.ts +29 -0
  7. package/dist/argument-issues.d.ts.map +1 -0
  8. package/dist/chunks/{execution-BzVQax0n.js → execution-Dv3G0d62.js} +102 -12
  9. package/dist/chunks/execution-Dv3G0d62.js.map +1 -0
  10. package/dist/chunks/{feedback-D3UTF8fm.js → feedback-PLOZth0a.js} +3 -3
  11. package/dist/chunks/{feedback-D3UTF8fm.js.map → feedback-PLOZth0a.js.map} +1 -1
  12. package/dist/chunks/{reviewer-instruction-CEc3AOuU.js → reviewer-instruction-zn11aVA5.js} +2 -2
  13. package/dist/chunks/{reviewer-instruction-CEc3AOuU.js.map → reviewer-instruction-zn11aVA5.js.map} +1 -1
  14. package/dist/execution.d.ts +8 -5
  15. package/dist/execution.d.ts.map +1 -1
  16. package/dist/execution.js +1 -1
  17. package/dist/manifest.json +1 -1
  18. package/dist/models.js +1 -1
  19. package/dist/models.js.map +1 -1
  20. package/dist/proposal-dto.d.ts +14 -0
  21. package/dist/proposal-dto.d.ts.map +1 -1
  22. package/dist/proposal-errors.d.ts +8 -1
  23. package/dist/proposal-errors.d.ts.map +1 -1
  24. package/dist/proposal-validation.d.ts +19 -8
  25. package/dist/proposal-validation.d.ts.map +1 -1
  26. package/dist/proposals.d.ts +1 -1
  27. package/dist/proposals.d.ts.map +1 -1
  28. package/dist/proposals.js +50 -49
  29. package/dist/proposals.js.map +1 -1
  30. package/dist/review-dto.d.ts +26 -2
  31. package/dist/review-dto.d.ts.map +1 -1
  32. package/dist/review-host.d.ts.map +1 -1
  33. package/dist/server.d.ts +2 -0
  34. package/dist/server.d.ts.map +1 -1
  35. package/dist/server.js +4 -4
  36. package/dist/server.js.map +1 -1
  37. package/dist/smrt-knowledge.json +21 -21
  38. package/dist/svelte/components/ReviewView.svelte +67 -8
  39. package/dist/svelte/components/ReviewView.svelte.d.ts.map +1 -1
  40. package/dist/svelte/i18n.d.ts +2 -0
  41. package/dist/svelte/i18n.d.ts.map +1 -1
  42. package/dist/svelte/i18n.js +2 -0
  43. package/dist/svelte/index.d.ts +1 -1
  44. package/dist/svelte/index.d.ts.map +1 -1
  45. package/dist/svelte/view-utils.d.ts +5 -1
  46. package/dist/svelte/view-utils.d.ts.map +1 -1
  47. package/dist/svelte/view-utils.js +5 -1
  48. package/package.json +13 -13
  49. package/dist/chunks/execution-BzVQax0n.js.map +0 -1
@@ -172,6 +172,8 @@ $effect(() => {
172
172
  startHandler = '';
173
173
  startArgs = '';
174
174
  startReason = '';
175
+ startRejected = false;
176
+ startIssues = [];
175
177
  splits = {};
176
178
  resolveReason = '';
177
179
  });
@@ -575,6 +577,10 @@ let startHandler = $state(''),
575
577
  startArgs = $state(''),
576
578
  startReason = $state(''),
577
579
  startInvalid = $state(false),
580
+ // The handler refused the reviewer's arguments: the form and draft stay;
581
+ // `startIssues` holds the bounded, value-free field paths when known.
582
+ startRejected = $state(false),
583
+ startIssues = $state<string[]>([]),
578
584
  resolveReason = $state('');
579
585
  const startEntry = $derived.by((): ProposalCatalogEntry | undefined =>
580
586
  view?.catalog?.find(
@@ -593,6 +599,8 @@ const startMissing = $derived.by((): string[] => {
593
599
  });
594
600
  function draftStart() {
595
601
  startInvalid = false;
602
+ startRejected = false;
603
+ startIssues = [];
596
604
  const entry = view?.catalog?.find(
597
605
  (candidate) => `${candidate.id}@${candidate.version}` === startHandler,
598
606
  );
@@ -608,16 +616,38 @@ function draftStart() {
608
616
  )
609
617
  : '';
610
618
  }
611
- function startAction() {
619
+ /**
620
+ * Distinct schema-owned field paths of a typed refusal; never values. A root
621
+ * path `/name` shows as the bare (unescaped) name, like `missingFields`;
622
+ * nested paths stay escaped pointers and `/` (the whole object) stays `/`.
623
+ */
624
+ function refusedFields(issues: unknown): string[] {
625
+ if (!Array.isArray(issues)) return [];
626
+ const paths = new Set<string>();
627
+ for (const issue of issues.slice(0, 20)) {
628
+ const path = (issue as { path?: unknown } | null)?.path;
629
+ if (typeof path !== 'string' || !path || path.length > 160) continue;
630
+ paths.add(
631
+ /^\/[^/]+$/.test(path)
632
+ ? path.slice(1).replace(/~1/g, '/').replace(/~0/g, '~')
633
+ : path,
634
+ );
635
+ }
636
+ return [...paths];
637
+ }
638
+ async function startAction() {
612
639
  const entry = startEntry;
613
- if (!entry || !view?.analysis || !host.startAction) return;
640
+ if (!entry || !view?.analysis || !host.startAction || pending) return;
614
641
  let args: Record<string, unknown>;
642
+ startRejected = false;
643
+ startIssues = [];
615
644
  try {
616
645
  args = argumentsObject(startArgs);
617
646
  } catch {
618
647
  startInvalid = true;
619
648
  return;
620
649
  }
650
+ startInvalid = false;
621
651
  const input = {
622
652
  itemId,
623
653
  handlerId: entry.id,
@@ -627,12 +657,40 @@ function startAction() {
627
657
  ...(startReason ? { reason: startReason } : {}),
628
658
  };
629
659
  const start = host.startAction;
630
- void run(async () => {
631
- await start(input);
632
- startHandler = '';
633
- startArgs = '';
634
- startReason = '';
635
- });
660
+ // Like `preview`: only the handler's refusal of the arguments (a resolved
661
+ // `{ rejected: 'invalid' }` or a thrown `HandlerArgumentsInvalidError`)
662
+ // keeps the view, form and draft inline. Anything else fails closed.
663
+ const ticket = ++epoch;
664
+ clearTimeout(poll);
665
+ pending = true;
666
+ error = false;
667
+ let refusal: unknown;
668
+ try {
669
+ const outcome = await start(input);
670
+ if (!alive || ticket !== epoch) return;
671
+ if (outcome?.rejected === 'invalid') refusal = outcome;
672
+ } catch (caught) {
673
+ if (!alive || ticket !== epoch) return;
674
+ if (
675
+ (caught as { name?: unknown } | null)?.name !==
676
+ 'HandlerArgumentsInvalidError'
677
+ ) {
678
+ deny();
679
+ return;
680
+ }
681
+ refusal = caught;
682
+ }
683
+ if (refusal) {
684
+ startRejected = true;
685
+ startIssues = refusedFields((refusal as { issues?: unknown }).issues);
686
+ pending = false;
687
+ schedulePoll(ticket);
688
+ return;
689
+ }
690
+ startHandler = '';
691
+ startArgs = '';
692
+ startReason = '';
693
+ await load();
636
694
  }
637
695
  function resolve() {
638
696
  if (!host.resolve) return;
@@ -801,6 +859,7 @@ onMount(() => {
801
859
  <Input aria-label={t(M['ingestion.reason'])} bind:value={startReason} />
802
860
  <p>{t(M['ingestion.startHelp'])}</p>
803
861
  {#if startInvalid}<p role="alert">{t(M['ingestion.invalid'])}</p>{/if}
862
+ {#if startRejected}<div role="alert" data-testid="start-rejected"><p>{t(M['ingestion.startRejected'])}</p>{#if startIssues.length}<p>{t(M['ingestion.refusedFields'])}</p><ul>{#each startIssues as field (field)}<li><code>{field}</code></li>{/each}</ul>{/if}</div>{/if}
804
863
  <Button disabled={pending || !view.analysis} onclick={startAction}>{t(M['ingestion.start'])}</Button>
805
864
  {/if}
806
865
  </fieldset>
@@ -1 +1 @@
1
- {"version":3,"file":"ReviewView.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ReviewView.svelte.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAa5E,OAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAIzE,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,KACX,IAAI,CAAC;IACV,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,mFAAmF;IACnF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;CACpE;AAqxBD,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ReviewView.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ReviewView.svelte.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAa5E,OAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAIzE,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,KACX,IAAI,CAAC;IACV,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,mFAAmF;IACnF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;CACpE;AAg1BD,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
@@ -45,6 +45,8 @@ export declare const M: {
45
45
  readonly 'ingestion.args': "ingestion.args";
46
46
  readonly 'ingestion.suggestionArgs': "ingestion.suggestionArgs";
47
47
  readonly 'ingestion.previewRejected': "ingestion.previewRejected";
48
+ readonly 'ingestion.startRejected': "ingestion.startRejected";
49
+ readonly 'ingestion.refusedFields': "ingestion.refusedFields";
48
50
  readonly 'ingestion.completeSuggestion': "ingestion.completeSuggestion";
49
51
  readonly 'ingestion.effects': "ingestion.effects";
50
52
  readonly 'ingestion.approve': "ingestion.approve";
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/svelte/i18n.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+IZ,CAAC"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/svelte/i18n.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJZ,CAAC"}
@@ -46,6 +46,8 @@ export const M = defineMessages({
46
46
  'ingestion.args': 'Exact arguments (JSON)',
47
47
  'ingestion.suggestionArgs': 'Suggested arguments (JSON)',
48
48
  'ingestion.previewRejected': 'These arguments did not pass the handler validation. Correct them and prepare review again.',
49
+ 'ingestion.startRejected': 'These arguments did not pass the handler validation. Correct them and start the action again.',
50
+ 'ingestion.refusedFields': 'Fields to check',
49
51
  'ingestion.completeSuggestion': 'This suggestion needs review. Complete or confirm its arguments, then prepare review.',
50
52
  'ingestion.effects': 'Proposed effects',
51
53
  'ingestion.approve': 'Approve',
@@ -1,4 +1,4 @@
1
- export type { Assignment, EvidenceView, InboxEntry, InboxEvidence, InboxState, IntakeReviewHost, ItemReviewView, LogicalSplitInput, PreviewRejection, ReviewAction, ReviewerInstruction, ReviewerInstructionInput, ReviewerInstructionView, ReviewPage, } from '../review-dto.js';
1
+ export type { Assignment, EvidenceView, HandlerArgumentIssue, InboxEntry, InboxEvidence, InboxState, IntakeReviewHost, ItemReviewView, LogicalSplitInput, PreviewRejection, ReviewAction, ReviewerInstruction, ReviewerInstructionInput, ReviewerInstructionView, ReviewPage, } from '../review-dto.js';
2
2
  export { default as EvidenceViewer } from './components/EvidenceViewer.svelte';
3
3
  export { default as IntakeInbox } from './components/IntakeInbox.svelte';
4
4
  export { default as IntakeReview } from './components/IntakeReview.svelte';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/svelte/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/svelte/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC"}
@@ -12,7 +12,11 @@ export declare function missingArguments(entry: ProposalCatalogEntry, args: Reco
12
12
  /** Only host-authorized same-origin HTTP URLs may reach original media elements. */
13
13
  export declare function evidenceUrl(value?: string, origin?: string): string | undefined;
14
14
  export declare function argumentsObject(value: string): Record<string, unknown>;
15
- /** Required top-level handler arguments missing from a JSON draft; unparsable drafts report none. */
15
+ /**
16
+ * Required top-level handler arguments missing from a JSON draft; unparsable
17
+ * drafts report none. Nested misses (JSON Pointer `missingFields`) are left to
18
+ * the server's revalidation, which refuses with `HandlerArgumentsInvalidError`.
19
+ */
16
20
  export declare function missingRequired(schema: Record<string, unknown>, draft: string): string[];
17
21
  export declare function pageGroups(value: string): number[][];
18
22
  /** Project useful extraction content; never present internal configuration/provenance JSON. */
@@ -1 +1 @@
1
- {"version":3,"file":"view-utils.d.ts","sourceRoot":"","sources":["../../src/svelte/view-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,SAAS,mBAAmB,EAAE,EAC3C,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB;AACD,gEAAgE;AAChE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,EAAE,CAQV;AACD,oFAAoF;AACpF,wBAAgB,WAAW,CACzB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAmBpB;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKtE;AACD,qGAAqG;AACrG,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAWV;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAcpD;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAsED;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAQxE;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzC,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAU3D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAyC7D;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAK5D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAkB3D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB1E"}
1
+ {"version":3,"file":"view-utils.d.ts","sourceRoot":"","sources":["../../src/svelte/view-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,SAAS,mBAAmB,EAAE,EAC3C,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB;AACD,gEAAgE;AAChE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,EAAE,CAQV;AACD,oFAAoF;AACpF,wBAAgB,WAAW,CACzB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAmBpB;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKtE;AACD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAWV;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAcpD;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAsED;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAQxE;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzC,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAU3D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAyC7D;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAK5D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAkB3D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB1E"}
@@ -52,7 +52,11 @@ export function argumentsObject(value) {
52
52
  throw new Error('Invalid arguments');
53
53
  return result;
54
54
  }
55
- /** Required top-level handler arguments missing from a JSON draft; unparsable drafts report none. */
55
+ /**
56
+ * Required top-level handler arguments missing from a JSON draft; unparsable
57
+ * drafts report none. Nested misses (JSON Pointer `missingFields`) are left to
58
+ * the server's revalidation, which refuses with `HandlerArgumentsInvalidError`.
59
+ */
56
60
  export function missingRequired(schema, draft) {
57
61
  if (!Array.isArray(schema.required))
58
62
  return [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-ingestion",
3
- "version": "0.57.26",
3
+ "version": "0.57.28",
4
4
  "description": "Durable tenant-scoped intake and evidence foundations",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -50,32 +50,32 @@
50
50
  }
51
51
  },
52
52
  "dependencies": {
53
- "@happyvertical/smrt-core": "0.57.26",
54
- "@happyvertical/smrt-types": "0.57.26",
55
- "@happyvertical/smrt-tenancy": "0.57.26",
56
- "@happyvertical/smrt-assets": "0.57.26",
57
- "@happyvertical/smrt-jobs": "0.57.26",
53
+ "@happyvertical/smrt-core": "0.57.28",
54
+ "@happyvertical/smrt-types": "0.57.28",
55
+ "@happyvertical/smrt-tenancy": "0.57.28",
56
+ "@happyvertical/smrt-assets": "0.57.28",
57
+ "@happyvertical/smrt-jobs": "0.57.28",
58
58
  "@happyvertical/sql": "^0.106.0",
59
59
  "@happyvertical/pdf": "^0.65.9",
60
60
  "@happyvertical/ocr": "^0.62.1",
61
61
  "@happyvertical/speech": "^0.106.0",
62
62
  "@happyvertical/ai": "^0.106.0",
63
63
  "sharp": "^0.35.5",
64
- "@happyvertical/smrt-agents": "0.57.26",
65
- "@happyvertical/smrt-playbooks": "0.57.26",
64
+ "@happyvertical/smrt-agents": "0.57.28",
65
+ "@happyvertical/smrt-playbooks": "0.57.28",
66
66
  "ajv": "8.20.0",
67
- "@happyvertical/smrt-ui": "0.57.26"
67
+ "@happyvertical/smrt-ui": "0.57.28"
68
68
  },
69
69
  "devDependencies": {
70
- "@happyvertical/smrt-vitest": "0.57.26",
70
+ "@happyvertical/smrt-vitest": "0.57.28",
71
71
  "@types/node": "24.13.6",
72
72
  "typescript": "6.0.3",
73
73
  "vite": "8.1.6",
74
74
  "vitest": "4.1.10",
75
- "@happyvertical/smrt-content": "0.57.26",
76
- "@happyvertical/smrt-messages": "0.57.26",
75
+ "@happyvertical/smrt-content": "0.57.28",
76
+ "@happyvertical/smrt-messages": "0.57.28",
77
77
  "@happyvertical/email": "^0.106.0",
78
- "@happyvertical/smrt-users": "0.57.26",
78
+ "@happyvertical/smrt-users": "0.57.28",
79
79
  "@sveltejs/package": "^2.5.8",
80
80
  "@sveltejs/vite-plugin-svelte": "^7.3.0",
81
81
  "svelte": "^5.57.1",