@semiont/gateway 0.5.29 → 0.5.31
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.js +275 -61
- package/dist/index.js.map +1 -1
- package/dist/openapi.json +216 -24
- package/package.json +5 -5
package/dist/openapi.json
CHANGED
|
@@ -1688,10 +1688,13 @@
|
|
|
1688
1688
|
"description": "Web Annotation creator — the entity that initiated the annotation. For human-driven work this is a Person; for autonomous-agent work this is a Software peer."
|
|
1689
1689
|
},
|
|
1690
1690
|
"created": {
|
|
1691
|
-
"type": "string"
|
|
1691
|
+
"type": "string",
|
|
1692
|
+
"format": "date-time",
|
|
1693
|
+
"description": "When the annotation was MADE — the authoring moment, carried from the event that created it. Not when a projection happened to write it: a store that rebuilds from the log must preserve this value, never restamp it."
|
|
1692
1694
|
},
|
|
1693
1695
|
"modified": {
|
|
1694
|
-
"type": "string"
|
|
1696
|
+
"type": "string",
|
|
1697
|
+
"format": "date-time"
|
|
1695
1698
|
},
|
|
1696
1699
|
"generator": {
|
|
1697
1700
|
"oneOf": [
|
|
@@ -1729,7 +1732,8 @@
|
|
|
1729
1732
|
"type",
|
|
1730
1733
|
"id",
|
|
1731
1734
|
"motivation",
|
|
1732
|
-
"target"
|
|
1735
|
+
"target",
|
|
1736
|
+
"created"
|
|
1733
1737
|
]
|
|
1734
1738
|
},
|
|
1735
1739
|
"AnnotationAddedPayload": {
|
|
@@ -1930,7 +1934,7 @@
|
|
|
1930
1934
|
},
|
|
1931
1935
|
"token": {
|
|
1932
1936
|
"type": "string",
|
|
1933
|
-
"description": "Short-lived access token
|
|
1937
|
+
"description": "Short-lived access token. Use as Authorization: Bearer header on API calls. The TTL is deliberately NOT restated here — docs/system/administration/AUTHENTICATION.md holds the one table of token lifetimes, and a second copy is how this description came to claim an hour for a ten-minute token. A client must refresh from the refresh token rather than assume any particular window."
|
|
1934
1938
|
},
|
|
1935
1939
|
"refreshToken": {
|
|
1936
1940
|
"type": "string",
|
|
@@ -2767,18 +2771,13 @@
|
|
|
2767
2771
|
},
|
|
2768
2772
|
"BrowseAnchoredTextResult": {
|
|
2769
2773
|
"type": "object",
|
|
2770
|
-
"description": "A resource's
|
|
2774
|
+
"description": "A resource's coordinate map, a stored decline, or a named reason there is none (SMELTER-OWNS-OCR P1). Never null: absence used to be a bare null covering four different facts — barrier expired, settled-skipped, no content identity, fold disposed — two of which a caller should retry and two of which it should not.",
|
|
2771
2775
|
"properties": {
|
|
2772
2776
|
"correlationId": {
|
|
2773
2777
|
"type": "string"
|
|
2774
2778
|
},
|
|
2775
2779
|
"response": {
|
|
2776
|
-
"
|
|
2777
|
-
"allOf": [
|
|
2778
|
-
{
|
|
2779
|
-
"$ref": "#/components/schemas/ExtractionOutcome"
|
|
2780
|
-
}
|
|
2781
|
-
]
|
|
2780
|
+
"$ref": "#/components/schemas/AnchoredTextAnswer"
|
|
2782
2781
|
}
|
|
2783
2782
|
},
|
|
2784
2783
|
"required": [
|
|
@@ -2786,20 +2785,46 @@
|
|
|
2786
2785
|
"response"
|
|
2787
2786
|
]
|
|
2788
2787
|
},
|
|
2789
|
-
"
|
|
2788
|
+
"AnchoredTextAnswer": {
|
|
2789
|
+
"description": "What a reader gets when it asks for a resource's coordinate map: the map, a stored decline, or a named absence.\n\nDistinct from `ExtractionOutcome` on purpose. That type is what the STORE holds and what an extractor RETURNS — neither of which can ever be 'not yet'. This is the read answer, which can, so widening ExtractionOutcome itself would have put an impossible state into the store's own type.\n\nFlat, one discriminant: every member carries `kind`, rather than nesting an outcome inside a status envelope and giving the wire two `kind` fields at different depths.",
|
|
2790
|
+
"oneOf": [
|
|
2791
|
+
{
|
|
2792
|
+
"$ref": "#/components/schemas/ExtractedText"
|
|
2793
|
+
},
|
|
2794
|
+
{
|
|
2795
|
+
"$ref": "#/components/schemas/ExtractionDeclined"
|
|
2796
|
+
},
|
|
2797
|
+
{
|
|
2798
|
+
"$ref": "#/components/schemas/AnchoredTextAbsent"
|
|
2799
|
+
}
|
|
2800
|
+
],
|
|
2801
|
+
"discriminator": {
|
|
2802
|
+
"propertyName": "kind",
|
|
2803
|
+
"mapping": {
|
|
2804
|
+
"extracted": "#/components/schemas/ExtractedText",
|
|
2805
|
+
"declined": "#/components/schemas/ExtractionDeclined",
|
|
2806
|
+
"not-yet": "#/components/schemas/AnchoredTextAbsent",
|
|
2807
|
+
"no-map": "#/components/schemas/AnchoredTextAbsent",
|
|
2808
|
+
"unknown": "#/components/schemas/AnchoredTextAbsent"
|
|
2809
|
+
}
|
|
2810
|
+
}
|
|
2811
|
+
},
|
|
2812
|
+
"AnchoredTextAbsent": {
|
|
2790
2813
|
"type": "object",
|
|
2791
|
-
"description": "
|
|
2814
|
+
"description": "There is no coordinate map to serve, and WHY — the distinction a bare null could not carry (SMELTER-OWNS-OCR P1).\n\nOne member covers all three absences because none carries a payload; `kind` alone is the fact. Retryability is legible from the name, deliberately: a caller must not need a lookup table to decide whether to come back.",
|
|
2792
2815
|
"properties": {
|
|
2793
|
-
"
|
|
2794
|
-
"type": "string"
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2816
|
+
"kind": {
|
|
2817
|
+
"type": "string",
|
|
2818
|
+
"enum": [
|
|
2819
|
+
"not-yet",
|
|
2820
|
+
"no-map",
|
|
2821
|
+
"unknown"
|
|
2822
|
+
],
|
|
2823
|
+
"description": "Discriminant, sharing the `kind` field with the ExtractedText/ExtractionDeclined members so the whole answer is one flat union (D6).\n\n`not-yet` — the Smelter has not settled this content generation: the settle barrier expired, the progress fold was disposed, or it settled indexed and the artifact is missing (the reconcile planner's third drift class, which heals). RETRY.\n\n`no-map` — the Smelter settled this resource as skipped: its media type derives no geometry, so a map will never exist. TERMINAL.\n\n`unknown` — no content identity to look up: the resource is not in the view store, or its primary representation carries no checksum. TERMINAL."
|
|
2798
2824
|
}
|
|
2799
2825
|
},
|
|
2800
2826
|
"required": [
|
|
2801
|
-
"
|
|
2802
|
-
"checksum"
|
|
2827
|
+
"kind"
|
|
2803
2828
|
]
|
|
2804
2829
|
},
|
|
2805
2830
|
"BrowseResourceRequest": {
|
|
@@ -2951,6 +2976,10 @@
|
|
|
2951
2976
|
"type": "string",
|
|
2952
2977
|
"description": "Optional resource scope for broadcast channels (e.g. resourceId). Publishers only — clients must never set this.",
|
|
2953
2978
|
"minLength": 1
|
|
2979
|
+
},
|
|
2980
|
+
"clientId": {
|
|
2981
|
+
"type": "string",
|
|
2982
|
+
"description": "Routing address for this request's reply (CORRELATED-REPLY-ROUTING D1/D2): the emit doubles as a claim on the correlationId, and delivery matches BOTH this and the emitting principal. Top-level, not inside `payload` — a wire concern like `scope`, so it never enters a channel's domain type. Optional in the schema because a plain broadcast needs no return address; the route requires it when the channel is a registered request channel and the payload carries a correlationId."
|
|
2954
2983
|
}
|
|
2955
2984
|
},
|
|
2956
2985
|
"required": [
|
|
@@ -3005,9 +3034,16 @@
|
|
|
3005
3034
|
}
|
|
3006
3035
|
}
|
|
3007
3036
|
}
|
|
3037
|
+
},
|
|
3038
|
+
"clientId": {
|
|
3039
|
+
"type": "string",
|
|
3040
|
+
"description": "Routing address for correlated replies (CORRELATED-REPLY-ROUTING D1): a UUID minted once per bus-client lifetime — per actor, NOT per connection, so it survives a make-before-break reconnect and both overlap connections share it. Required: a subscriber without one could never receive a correlated frame, and that must fail loudly here rather than silently at delivery. Not authentication — the JWT stays that; this is an unguessable routing address, never echoed into any payload or broadcast frame."
|
|
3008
3041
|
}
|
|
3009
3042
|
},
|
|
3010
|
-
"additionalProperties": false
|
|
3043
|
+
"additionalProperties": false,
|
|
3044
|
+
"required": [
|
|
3045
|
+
"clientId"
|
|
3046
|
+
]
|
|
3011
3047
|
},
|
|
3012
3048
|
"CloneResourceWithTokenResponse": {
|
|
3013
3049
|
"type": "object",
|
|
@@ -3822,6 +3858,10 @@
|
|
|
3822
3858
|
"type": "object",
|
|
3823
3859
|
"description": "Progress payload emitted on the gather:annotation-progress SSE channel during LLM context gathering.",
|
|
3824
3860
|
"properties": {
|
|
3861
|
+
"correlationId": {
|
|
3862
|
+
"type": "string",
|
|
3863
|
+
"description": "The request this progress belongs to (CORRELATED-REPLY-ROUTING D3). Required: `CORRELATED_CHANNELS` derives every operation's progress channel into the delivery filter, so a frame without it cannot be matched to a claim and is silently dropped."
|
|
3864
|
+
},
|
|
3825
3865
|
"message": {
|
|
3826
3866
|
"type": "string"
|
|
3827
3867
|
},
|
|
@@ -3830,7 +3870,10 @@
|
|
|
3830
3870
|
"minimum": 0,
|
|
3831
3871
|
"maximum": 100
|
|
3832
3872
|
}
|
|
3833
|
-
}
|
|
3873
|
+
},
|
|
3874
|
+
"required": [
|
|
3875
|
+
"correlationId"
|
|
3876
|
+
]
|
|
3834
3877
|
},
|
|
3835
3878
|
"GatherResourceComplete": {
|
|
3836
3879
|
"type": "object",
|
|
@@ -4584,21 +4627,58 @@
|
|
|
4584
4627
|
},
|
|
4585
4628
|
"JobCancelRequest": {
|
|
4586
4629
|
"type": "object",
|
|
4587
|
-
"description": "Request to cancel a job",
|
|
4630
|
+
"description": "Request to cancel a job. Target one running or pending job by `jobId` (JOB-RESTART-SAFETY P4), or a whole category of pending jobs by `jobType`. A `jobId`-targeted request that names a RUNNING job is honoured cooperatively by the owning worker, which stops at its next unit boundary and emits JobCancelCommand — the queue is never made to yank a running job out from under a live worker.",
|
|
4588
4631
|
"properties": {
|
|
4589
4632
|
"correlationId": {
|
|
4590
4633
|
"type": "string",
|
|
4591
4634
|
"description": "Correlation id for request/reply matching, set by the SDK's busRequest so the confirmed-write ack/failure routes back. Absent for the local cancelRequest UI signal."
|
|
4592
4635
|
},
|
|
4636
|
+
"jobId": {
|
|
4637
|
+
"type": "string",
|
|
4638
|
+
"description": "Cancel this one job. A pending job is cancelled immediately by the gateway; a running job is cancelled cooperatively by its worker. Takes precedence over jobType."
|
|
4639
|
+
},
|
|
4593
4640
|
"jobType": {
|
|
4594
4641
|
"type": "string",
|
|
4595
4642
|
"enum": [
|
|
4596
4643
|
"annotation",
|
|
4597
4644
|
"generation"
|
|
4598
|
-
]
|
|
4645
|
+
],
|
|
4646
|
+
"description": "Cancel all PENDING jobs in this category — the bulk UI signal. Ignored when jobId is present."
|
|
4647
|
+
}
|
|
4648
|
+
}
|
|
4649
|
+
},
|
|
4650
|
+
"JobCancelCommand": {
|
|
4651
|
+
"type": "object",
|
|
4652
|
+
"description": "A worker's confirmation that it has cooperatively stopped a running job at a unit boundary (JOB-RESTART-SAFETY P4) — the queue moves the job to cancelled/. Distinct from JobCancelRequest (the client→worker REQUEST to stop): this is the worker announcing it did, so the running job is never yanked to cancelled/ out from under a live worker (the roach-motel race).",
|
|
4653
|
+
"properties": {
|
|
4654
|
+
"_userId": {
|
|
4655
|
+
"type": "string",
|
|
4656
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
4657
|
+
},
|
|
4658
|
+
"resourceId": {
|
|
4659
|
+
"type": "string"
|
|
4660
|
+
},
|
|
4661
|
+
"jobId": {
|
|
4662
|
+
"type": "string"
|
|
4663
|
+
},
|
|
4664
|
+
"jobType": {
|
|
4665
|
+
"$ref": "#/components/schemas/JobType"
|
|
4666
|
+
},
|
|
4667
|
+
"annotationId": {
|
|
4668
|
+
"type": "string",
|
|
4669
|
+
"description": "Annotation this job is attached to, when applicable. Lets the UI route cancellation feedback to a specific annotation."
|
|
4670
|
+
},
|
|
4671
|
+
"completedUnits": {
|
|
4672
|
+
"type": "array",
|
|
4673
|
+
"items": {
|
|
4674
|
+
"type": "string"
|
|
4675
|
+
},
|
|
4676
|
+
"description": "Entity-type units whose annotations were fully emitted before cancellation. Recorded on the cancelled job's metadata so the work already done stays visible."
|
|
4599
4677
|
}
|
|
4600
4678
|
},
|
|
4601
4679
|
"required": [
|
|
4680
|
+
"resourceId",
|
|
4681
|
+
"jobId",
|
|
4602
4682
|
"jobType"
|
|
4603
4683
|
]
|
|
4604
4684
|
},
|
|
@@ -4789,6 +4869,25 @@
|
|
|
4789
4869
|
},
|
|
4790
4870
|
"error": {
|
|
4791
4871
|
"type": "string"
|
|
4872
|
+
},
|
|
4873
|
+
"completedUnits": {
|
|
4874
|
+
"type": "array",
|
|
4875
|
+
"items": {
|
|
4876
|
+
"type": "string"
|
|
4877
|
+
},
|
|
4878
|
+
"description": "Entity-type units whose annotations were fully emitted before this failure (checkpointed resume). The queue records them on the retried job's metadata; a retried claim skips them so completed work is neither redone nor duplicated."
|
|
4879
|
+
},
|
|
4880
|
+
"failureClass": {
|
|
4881
|
+
"type": "string",
|
|
4882
|
+
"enum": [
|
|
4883
|
+
"transient",
|
|
4884
|
+
"deterministic"
|
|
4885
|
+
],
|
|
4886
|
+
"description": "Worker-side classification of the failure, made where the error is still typed. 'deterministic' — the same request cannot succeed on a second attempt — skips the retry budget; absent or 'transient' retries as before. Only KNOWN-deterministic failures carry the class."
|
|
4887
|
+
},
|
|
4888
|
+
"willRetry": {
|
|
4889
|
+
"type": "boolean",
|
|
4890
|
+
"description": "Whether the queue will re-queue this job for another attempt. Computed by the worker from the SAME predicate the queue applies at failJob (one decision site, `willRetryAfter` in @semiont/jobs) using the retry budget carried on the claimed record. FALSE (or absent) means this failure is TERMINAL: a client's job-watch stream ends here. TRUE means the work continues on a fresh attempt — the failure is an event, not the end, and a stream that terminated on it would report a recovering run as a failed one (JOB-RESTART-SAFETY P5)."
|
|
4792
4891
|
}
|
|
4793
4892
|
},
|
|
4794
4893
|
"required": [
|
|
@@ -4798,6 +4897,30 @@
|
|
|
4798
4897
|
"error"
|
|
4799
4898
|
]
|
|
4800
4899
|
},
|
|
4900
|
+
"JobCheckpointCommand": {
|
|
4901
|
+
"type": "object",
|
|
4902
|
+
"description": "Command to persist a running job's completed-unit checkpoint AT unit completion (JOB-RESTART-SAFETY P2). Distinct from JobFailCommand's checkpoint, which lands only on a clean failure: a worker that dies (crash/OOM/kill) never emits job:fail, so this durable, unthrottled write is what lets the janitor's stale-running recovery resume a dead worker's job rather than redo its finished units.",
|
|
4903
|
+
"properties": {
|
|
4904
|
+
"_userId": {
|
|
4905
|
+
"type": "string",
|
|
4906
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
4907
|
+
},
|
|
4908
|
+
"jobId": {
|
|
4909
|
+
"type": "string"
|
|
4910
|
+
},
|
|
4911
|
+
"completedUnits": {
|
|
4912
|
+
"type": "array",
|
|
4913
|
+
"items": {
|
|
4914
|
+
"type": "string"
|
|
4915
|
+
},
|
|
4916
|
+
"description": "Entity-type units whose annotations have been fully emitted so far. Unioned into the running job's metadata checkpoint; a retry after recovery skips them."
|
|
4917
|
+
}
|
|
4918
|
+
},
|
|
4919
|
+
"required": [
|
|
4920
|
+
"jobId",
|
|
4921
|
+
"completedUnits"
|
|
4922
|
+
]
|
|
4923
|
+
},
|
|
4801
4924
|
"JobDeclinedResult": {
|
|
4802
4925
|
"type": "object",
|
|
4803
4926
|
"description": "Result of a job that completed without doing its work because the resource could not be read. Distinct from a failure: nothing went wrong, there was simply no text to work with — an encrypted or damaged PDF, a scan whose text could not be recognized, or a document that yielded nothing. The reasons are the extraction vocabulary the Smelter reports on `smelt:settled`, MINUS `no-extractor`: a media type that can never yield text (a zip, an image) is a bad request rather than a decline, so a worker asked to detect over one throws and the job reports `job:fail`. Everything here is a resource-specific outcome — the same media type would have succeeded on a different document.",
|
|
@@ -4983,6 +5106,10 @@
|
|
|
4983
5106
|
"foundCount": {
|
|
4984
5107
|
"type": "integer",
|
|
4985
5108
|
"description": "Annotations found for it."
|
|
5109
|
+
},
|
|
5110
|
+
"persistedCount": {
|
|
5111
|
+
"type": "integer",
|
|
5112
|
+
"description": "Annotations actually persisted for it — post-dedupe and post-durability-acknowledgement, so it counts what the event log holds, not what the model proposed. Beside foundCount this is the per-unit yield the sizing work is judged by. Present on flows whose units persist as they complete (reference-annotation); the tagging flow reports the same fact as byCategory on its result, because its annotations are built after the per-category loop."
|
|
4986
5113
|
}
|
|
4987
5114
|
},
|
|
4988
5115
|
"required": [
|
|
@@ -5800,6 +5927,71 @@
|
|
|
5800
5927
|
"response"
|
|
5801
5928
|
]
|
|
5802
5929
|
},
|
|
5930
|
+
"MarkCommitCommand": {
|
|
5931
|
+
"type": "object",
|
|
5932
|
+
"description": "Bus command to persist a detection unit's annotations as one acknowledged batch (JOB-RESTART-SAFETY P6). Unlike mark:create, which is fire-and-forget and resolves when the bus accepts it, this command is answered only after every annotation is in the event log — so a worker can gate unit completion on durability rather than on emission. The batch is the unit: a partial commit is reported as a failure, and the worker retries the whole unit, which is safe because annotation ids are deterministic (P3).",
|
|
5933
|
+
"properties": {
|
|
5934
|
+
"_userId": {
|
|
5935
|
+
"type": "string",
|
|
5936
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
5937
|
+
},
|
|
5938
|
+
"correlationId": {
|
|
5939
|
+
"type": "string",
|
|
5940
|
+
"description": "Correlation id set by busRequest so the mark:commit-ok / mark:commit-failed reply routes back to the awaiting worker."
|
|
5941
|
+
},
|
|
5942
|
+
"resourceId": {
|
|
5943
|
+
"type": "string",
|
|
5944
|
+
"description": "Resource every annotation in this batch targets."
|
|
5945
|
+
},
|
|
5946
|
+
"annotations": {
|
|
5947
|
+
"type": "array",
|
|
5948
|
+
"description": "The unit's annotations, already built with deterministic ids. Re-committing an identical batch is a no-op rather than a duplicate.",
|
|
5949
|
+
"items": {
|
|
5950
|
+
"$ref": "#/components/schemas/Annotation"
|
|
5951
|
+
}
|
|
5952
|
+
}
|
|
5953
|
+
},
|
|
5954
|
+
"required": [
|
|
5955
|
+
"correlationId",
|
|
5956
|
+
"resourceId",
|
|
5957
|
+
"annotations"
|
|
5958
|
+
]
|
|
5959
|
+
},
|
|
5960
|
+
"MarkCommitOk": {
|
|
5961
|
+
"type": "object",
|
|
5962
|
+
"description": "Durability acknowledgement for a mark:commit batch: every annotation named by the command is in the event log at the moment this is emitted.",
|
|
5963
|
+
"properties": {
|
|
5964
|
+
"correlationId": {
|
|
5965
|
+
"type": "string",
|
|
5966
|
+
"description": "Correlation id echoed from the mark:commit command so busRequest can match the reply."
|
|
5967
|
+
},
|
|
5968
|
+
"response": {
|
|
5969
|
+
"type": "object",
|
|
5970
|
+
"description": "What the commit persisted.",
|
|
5971
|
+
"properties": {
|
|
5972
|
+
"persisted": {
|
|
5973
|
+
"type": "integer",
|
|
5974
|
+
"description": "Annotations this commit appended to the event log. Equals the batch size on success — a retry re-appends what already landed rather than counting it out, because the annotation fold is idempotent by id and the log is append-only. Not a dedupe count."
|
|
5975
|
+
},
|
|
5976
|
+
"annotationIds": {
|
|
5977
|
+
"type": "array",
|
|
5978
|
+
"description": "Ids the batch covers, whether appended now or already present.",
|
|
5979
|
+
"items": {
|
|
5980
|
+
"type": "string"
|
|
5981
|
+
}
|
|
5982
|
+
}
|
|
5983
|
+
},
|
|
5984
|
+
"required": [
|
|
5985
|
+
"persisted",
|
|
5986
|
+
"annotationIds"
|
|
5987
|
+
]
|
|
5988
|
+
}
|
|
5989
|
+
},
|
|
5990
|
+
"required": [
|
|
5991
|
+
"correlationId",
|
|
5992
|
+
"response"
|
|
5993
|
+
]
|
|
5994
|
+
},
|
|
5803
5995
|
"MarkCreateRequest": {
|
|
5804
5996
|
"type": "object",
|
|
5805
5997
|
"description": "Raw annotation creation intent — bus handler assembles the W3C annotation",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semiont/gateway",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.31",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Semiont gateway server - pre-built for npm consumption",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"@hono/swagger-ui": "^0.6.1",
|
|
31
31
|
"@prisma/adapter-pg": "^7.10.0",
|
|
32
32
|
"@prisma/client": "^7.10.0",
|
|
33
|
-
"@semiont/core": "0.5.
|
|
34
|
-
"@semiont/make-meaning": "0.5.
|
|
35
|
-
"@semiont/observability": "0.5.
|
|
33
|
+
"@semiont/core": "0.5.31",
|
|
34
|
+
"@semiont/make-meaning": "0.5.31",
|
|
35
|
+
"@semiont/observability": "0.5.31",
|
|
36
36
|
"ajv": "^8.20.0",
|
|
37
37
|
"ajv-formats": "^3.0.1",
|
|
38
38
|
"argon2": "^0.45.1",
|
|
@@ -40,6 +40,6 @@
|
|
|
40
40
|
"jsonwebtoken": "^9.0.2",
|
|
41
41
|
"prisma": "^7.10.0",
|
|
42
42
|
"winston": "^3.19.0",
|
|
43
|
-
"zod": "^4.4
|
|
43
|
+
"zod": "^4.5.4"
|
|
44
44
|
}
|
|
45
45
|
}
|