@naturali/cli 0.115.1 → 0.117.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.mjs +166 -8
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -14,7 +14,7 @@ var __exportAll = (all, no_symbols) => {
|
|
|
14
14
|
};
|
|
15
15
|
//#endregion
|
|
16
16
|
//#region package.json
|
|
17
|
-
var version = "0.
|
|
17
|
+
var version = "0.117.0";
|
|
18
18
|
//#endregion
|
|
19
19
|
//#region ../sdk/src/generated/core/bodySerializer.gen.ts
|
|
20
20
|
const serializeFormDataPair = (data, key, value) => {
|
|
@@ -3376,7 +3376,7 @@ var Orchestrations = class {
|
|
|
3376
3376
|
/**
|
|
3377
3377
|
* List orchestration runs
|
|
3378
3378
|
*
|
|
3379
|
-
* Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, or by whether the run has a parent at all.
|
|
3379
|
+
* Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, by status, or by whether the run has a parent at all.
|
|
3380
3380
|
*
|
|
3381
3381
|
* Note when aggregating: a run's `usage` covers its whole subtree, so summing it over a list that contains both a parent and its children counts the children more than once. Pass `nested=false` to sum over runs a caller started.
|
|
3382
3382
|
*/
|
|
@@ -3413,6 +3413,24 @@ var Orchestrations = class {
|
|
|
3413
3413
|
});
|
|
3414
3414
|
}
|
|
3415
3415
|
/**
|
|
3416
|
+
* Pause an orchestration run
|
|
3417
|
+
*
|
|
3418
|
+
* Parks a run in flight as `awaiting_input` at its next checkpoint, with a `required_action` of type `paused` naming the pause as operator-initiated rather than a node's. Unlike cancel, the run keeps its last checkpoint and resume-orchestration-run re-drives it from there — so work already done is deferred rather than discarded.
|
|
3419
|
+
* A `queued` or `sleeping` run is parked immediately (a sleeping run keeps the wake it was due, and resuming hands it back to the scheduler at that instant). A `running` run keeps running until the round in flight reaches its checkpoint, so the response may still read `running` while `pause_requested_at` is set. A run already parked on a human, webhook or approval node keeps that node's `required_action`; the pause is still recorded, which is what makes submit-human-input refuse until the run is resumed.
|
|
3420
|
+
* The pause fans out to the run's `loop` / `sub_orchestration` descendants — each parks at its own next checkpoint — because otherwise a parent's pause would bound nothing. Resuming does not fan out: each parked descendant is resumed by its own id.
|
|
3421
|
+
* Idempotent: pausing an already-paused run answers with it unchanged.
|
|
3422
|
+
*/
|
|
3423
|
+
static pauseOrchestrationRun(options) {
|
|
3424
|
+
return (options.client ?? client).post({
|
|
3425
|
+
url: "/v1/projects/{project_id}/orchestration-runs/{orchestration_run_id}/pause",
|
|
3426
|
+
...options,
|
|
3427
|
+
headers: {
|
|
3428
|
+
"Content-Type": "application/json",
|
|
3429
|
+
...options.headers
|
|
3430
|
+
}
|
|
3431
|
+
});
|
|
3432
|
+
}
|
|
3433
|
+
/**
|
|
3416
3434
|
* Submit human input
|
|
3417
3435
|
*
|
|
3418
3436
|
* Provides human input to a run that is awaiting_input at a human node.
|
|
@@ -3431,6 +3449,7 @@ var Orchestrations = class {
|
|
|
3431
3449
|
* Resume an orchestration run
|
|
3432
3450
|
*
|
|
3433
3451
|
* Re-drives an awaiting_input orchestration run from its last checkpoint. This does not satisfy the pause itself — it carries no node_id or payload, so a run parked on a human or webhook-receive node re-parks on the same node. Use submit-human-input to supply the awaited payload and advance the run.
|
|
3452
|
+
* It is also the only thing that lifts an operator pause (pause-orchestration-run): a run parked with `required_action.type` of `paused` re-drives the frontier that had not run yet, and one paused mid-timer goes back to `sleeping` for the wake it was already due.
|
|
3434
3453
|
*/
|
|
3435
3454
|
static resumeOrchestrationRun(options) {
|
|
3436
3455
|
return (options.client ?? client).post({
|
|
@@ -3572,7 +3591,7 @@ var Quotas = class {
|
|
|
3572
3591
|
/**
|
|
3573
3592
|
* Create a quota
|
|
3574
3593
|
*
|
|
3575
|
-
* Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A duplicate quota (same project, scope, scope_ref, metric, window) is rejected with 409.
|
|
3594
|
+
* Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A `cost_usd` quota may name one `meter_type` to cap; omitting it caps every priced meter. A duplicate quota (same project, scope, scope_ref, metric, window, meter_type) is rejected with 409.
|
|
3576
3595
|
*/
|
|
3577
3596
|
static createQuota(options) {
|
|
3578
3597
|
return (options.client ?? client).post({
|
|
@@ -3879,7 +3898,7 @@ var Tasks = class {
|
|
|
3879
3898
|
/**
|
|
3880
3899
|
* List tasks
|
|
3881
3900
|
*
|
|
3882
|
-
* Lists tasks (the board query). Filter by workflow, state, status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
|
|
3901
|
+
* Lists tasks (the board query). Filter by workflow, state, status, automation status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.
|
|
3883
3902
|
*/
|
|
3884
3903
|
static listTasks(options) {
|
|
3885
3904
|
return (options.client ?? client).get({
|
|
@@ -3955,6 +3974,36 @@ var Tasks = class {
|
|
|
3955
3974
|
});
|
|
3956
3975
|
}
|
|
3957
3976
|
/**
|
|
3977
|
+
* Pause a task
|
|
3978
|
+
*
|
|
3979
|
+
* Pauses a task's automation. While a pause is in force no state's `on_enter` dispatches and no retry chain continues — an agent generation, a tool call and a sub-orchestration alike — so the task stops spending without losing its place.
|
|
3980
|
+
* A workflow has no run object, so this is the workflow half of pause-orchestration-run: the pause lands on the instance, which is the task. Transitions are deliberately still allowed — a move costs nothing while every dispatch it would start is suppressed — so a board stays usable under a pause. Entering a state whose dispatch is suppressed records `automation_status: paused`, which resume-task reads to know that state still owes its work.
|
|
3981
|
+
* A dispatch already in flight is left to finish, and its outcome still routes; only what would start after it is suppressed.
|
|
3982
|
+
* Idempotent: pausing an already-paused task answers with it unchanged.
|
|
3983
|
+
*/
|
|
3984
|
+
static pauseTask(options) {
|
|
3985
|
+
return (options.client ?? client).post({
|
|
3986
|
+
url: "/v1/projects/{project_id}/tasks/{task_id}/pause",
|
|
3987
|
+
...options,
|
|
3988
|
+
headers: {
|
|
3989
|
+
"Content-Type": "application/json",
|
|
3990
|
+
...options.headers
|
|
3991
|
+
}
|
|
3992
|
+
});
|
|
3993
|
+
}
|
|
3994
|
+
/**
|
|
3995
|
+
* Resume a task
|
|
3996
|
+
*
|
|
3997
|
+
* Lifts a task's pause. When the pause suppressed the current state's `on_enter` — `automation_status: paused` — that dispatch is started now, as the caller resuming rather than as whoever last moved the task. A state whose dispatch had already completed, or that declares none, is left alone, so a resume never re-spends work the pause did not stop.
|
|
3998
|
+
* This is the only way a pause is lifted; a task that is merely idle is advanced by firing a transition instead.
|
|
3999
|
+
*/
|
|
4000
|
+
static resumeTask(options) {
|
|
4001
|
+
return (options.client ?? client).post({
|
|
4002
|
+
url: "/v1/projects/{project_id}/tasks/{task_id}/resume",
|
|
4003
|
+
...options
|
|
4004
|
+
});
|
|
4005
|
+
}
|
|
4006
|
+
/**
|
|
3958
4007
|
* Get task history
|
|
3959
4008
|
*
|
|
3960
4009
|
* Returns the append-only transition history of a task.
|
|
@@ -12934,7 +12983,7 @@ const routes = {
|
|
|
12934
12983
|
"list-orchestration-runs": {
|
|
12935
12984
|
serviceClass: "Orchestrations",
|
|
12936
12985
|
operationId: "listOrchestrationRuns",
|
|
12937
|
-
description: "Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, or by whether the run has a parent at all. Note when aggregating: a run's `usage` covers its whole subtree, so summing it over a list that contains both a parent and its children counts the children more than once. Pass `nested=false` to sum over runs a caller started.",
|
|
12986
|
+
description: "Returns orchestration runs the caller can access, optionally filtered by orchestration, by parent run, by status, or by whether the run has a parent at all. Note when aggregating: a run's `usage` covers its whole subtree, so summing it over a list that contains both a parent and its children counts the children more than once. Pass `nested=false` to sum over runs a caller started.",
|
|
12938
12987
|
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/orchestrations",
|
|
12939
12988
|
httpMethod: "get",
|
|
12940
12989
|
pathParams: ["project_id"],
|
|
@@ -12942,6 +12991,7 @@ const routes = {
|
|
|
12942
12991
|
"orchestration_id",
|
|
12943
12992
|
"parent_orchestration_run_id",
|
|
12944
12993
|
"nested",
|
|
12994
|
+
"status",
|
|
12945
12995
|
"limit",
|
|
12946
12996
|
"offset"
|
|
12947
12997
|
],
|
|
@@ -12974,6 +13024,13 @@ const routes = {
|
|
|
12974
13024
|
"type": "boolean",
|
|
12975
13025
|
"in": "query"
|
|
12976
13026
|
},
|
|
13027
|
+
{
|
|
13028
|
+
"name": "status",
|
|
13029
|
+
"description": "Filter by run status. Repeat the parameter to OR values — `status=queued&status=running&status=sleeping&status=awaiting_input` is the set still driving, which is how a caller finds live work without paging every run the project ever started.\n\nThere is no `non_terminal` shorthand on purpose: which statuses count as live is the caller's policy. A value outside the enum, empty string included, is a `400`.",
|
|
13030
|
+
"required": false,
|
|
13031
|
+
"type": "array",
|
|
13032
|
+
"in": "query"
|
|
13033
|
+
},
|
|
12977
13034
|
{
|
|
12978
13035
|
"name": "limit",
|
|
12979
13036
|
"description": "Maximum number of results to return",
|
|
@@ -13065,6 +13122,38 @@ const routes = {
|
|
|
13065
13122
|
"in": "path"
|
|
13066
13123
|
}]
|
|
13067
13124
|
},
|
|
13125
|
+
"pause-orchestration-run": {
|
|
13126
|
+
serviceClass: "Orchestrations",
|
|
13127
|
+
operationId: "pauseOrchestrationRun",
|
|
13128
|
+
description: "Parks a run in flight as `awaiting_input` at its next checkpoint, with a `required_action` of type `paused` naming the pause as operator-initiated rather than a node's. Unlike cancel, the run keeps its last checkpoint and resume-orchestration-run re-drives it from there — so work already done is deferred rather than discarded. A `queued` or `sleeping` run is parked immediately (a sleeping run keeps the wake it was due, and resuming hands it back to the scheduler at that instant). A `running` run keeps running until the round in flight reaches its checkpoint, so the response may still read `running` while `pause_requested_at` is set. A run already parked on a human, webhook or approval node keeps that node's `required_action`; the pause is still recorded, which is what makes submit-human-input refuse until the run is resumed. The pause fans out to the run's `loop` / `sub_orchestration` descendants — each parks at its own next checkpoint — because otherwise a parent's pause would bound nothing. Resuming does not fan out: each parked descendant is resumed by its own id. Idempotent: pausing an already-paused run answers with it unchanged.",
|
|
13129
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/orchestrations",
|
|
13130
|
+
httpMethod: "post",
|
|
13131
|
+
pathParams: ["project_id", "orchestration_run_id"],
|
|
13132
|
+
queryParams: [],
|
|
13133
|
+
flags: [
|
|
13134
|
+
{
|
|
13135
|
+
"name": "project_id",
|
|
13136
|
+
"description": "Project public ID (proj_ prefix).",
|
|
13137
|
+
"required": true,
|
|
13138
|
+
"type": "string",
|
|
13139
|
+
"in": "path"
|
|
13140
|
+
},
|
|
13141
|
+
{
|
|
13142
|
+
"name": "orchestration_run_id",
|
|
13143
|
+
"description": "Public ID of the run (run_...)",
|
|
13144
|
+
"required": true,
|
|
13145
|
+
"type": "string",
|
|
13146
|
+
"in": "path"
|
|
13147
|
+
},
|
|
13148
|
+
{
|
|
13149
|
+
"name": "reason",
|
|
13150
|
+
"description": "Why the run is being paused, surfaced on the parked run's `required_action.reason` and on `pause_reason`.",
|
|
13151
|
+
"required": false,
|
|
13152
|
+
"type": "string",
|
|
13153
|
+
"in": "body"
|
|
13154
|
+
}
|
|
13155
|
+
]
|
|
13156
|
+
},
|
|
13068
13157
|
"submit-human-input": {
|
|
13069
13158
|
serviceClass: "Orchestrations",
|
|
13070
13159
|
operationId: "submitHumanInput",
|
|
@@ -13107,7 +13196,7 @@ const routes = {
|
|
|
13107
13196
|
"resume-orchestration-run": {
|
|
13108
13197
|
serviceClass: "Orchestrations",
|
|
13109
13198
|
operationId: "resumeOrchestrationRun",
|
|
13110
|
-
description: "Re-drives an awaiting_input orchestration run from its last checkpoint. This does not satisfy the pause itself — it carries no node_id or payload, so a run parked on a human or webhook-receive node re-parks on the same node. Use submit-human-input to supply the awaited payload and advance the run.",
|
|
13199
|
+
description: "Re-drives an awaiting_input orchestration run from its last checkpoint. This does not satisfy the pause itself — it carries no node_id or payload, so a run parked on a human or webhook-receive node re-parks on the same node. Use submit-human-input to supply the awaited payload and advance the run. It is also the only thing that lifts an operator pause (pause-orchestration-run): a run parked with `required_action.type` of `paused` re-drives the frontier that had not run yet, and one paused mid-timer goes back to `sleeping` for the wake it was already due.",
|
|
13111
13200
|
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/orchestrations",
|
|
13112
13201
|
httpMethod: "post",
|
|
13113
13202
|
pathParams: ["project_id", "orchestration_run_id"],
|
|
@@ -13388,7 +13477,7 @@ const routes = {
|
|
|
13388
13477
|
"create-quota": {
|
|
13389
13478
|
serviceClass: "Quotas",
|
|
13390
13479
|
operationId: "createQuota",
|
|
13391
|
-
description: "Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A duplicate quota (same project, scope, scope_ref, metric, window) is rejected with 409.",
|
|
13480
|
+
description: "Creates a project-scoped quota. `requests` is valid for `scope: project`/`api_key`; `tokens` and `cost_usd` are valid for `scope: project`/`agent`/`actor`. Any other scope/metric pair is rejected with 400 (no attribution exists to enforce it). An `actor` quota caps one end user's spend, matched from the generation's session; a null `scope_ref` means one budget *per* actor rather than a pooled project total. A `cost_usd` quota may name one `meter_type` to cap; omitting it caps every priced meter. A duplicate quota (same project, scope, scope_ref, metric, window, meter_type) is rejected with 409.",
|
|
13392
13481
|
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/quotas",
|
|
13393
13482
|
httpMethod: "post",
|
|
13394
13483
|
pathParams: ["project_id"],
|
|
@@ -13449,6 +13538,13 @@ const routes = {
|
|
|
13449
13538
|
"required": false,
|
|
13450
13539
|
"type": "string",
|
|
13451
13540
|
"in": "body"
|
|
13541
|
+
},
|
|
13542
|
+
{
|
|
13543
|
+
"name": "meter_type",
|
|
13544
|
+
"description": "Only for metric cost_usd (400 on any other metric). The meter this cap answers for. Omit it and the cap sums every priced meter, which is the existing behaviour; name one and only that meter's cost counts, so an AI spend cap is not consumed by platform meters the operator prices (and vice versa). Part of the quota's identity, so two meter scopes can share a scope/metric/window and neither conflicts with an unscoped cap. Immutable after creation — replace the quota to change it.",
|
|
13545
|
+
"required": false,
|
|
13546
|
+
"type": "string",
|
|
13547
|
+
"in": "body"
|
|
13452
13548
|
}
|
|
13453
13549
|
]
|
|
13454
13550
|
},
|
|
@@ -14232,7 +14328,7 @@ const routes = {
|
|
|
14232
14328
|
"list-tasks": {
|
|
14233
14329
|
serviceClass: "Tasks",
|
|
14234
14330
|
operationId: "listTasks",
|
|
14235
|
-
description: "Lists tasks (the board query). Filter by workflow, state, status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.",
|
|
14331
|
+
description: "Lists tasks (the board query). Filter by workflow, state, status, automation status, or assignee — `GET /tasks?workflow_id=...&state=...` is one board column.",
|
|
14236
14332
|
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/tasks",
|
|
14237
14333
|
httpMethod: "get",
|
|
14238
14334
|
pathParams: ["project_id"],
|
|
@@ -14240,6 +14336,7 @@ const routes = {
|
|
|
14240
14336
|
"workflow_id",
|
|
14241
14337
|
"state",
|
|
14242
14338
|
"status",
|
|
14339
|
+
"automation_status",
|
|
14243
14340
|
"assignee",
|
|
14244
14341
|
"limit",
|
|
14245
14342
|
"offset"
|
|
@@ -14273,6 +14370,13 @@ const routes = {
|
|
|
14273
14370
|
"type": "string",
|
|
14274
14371
|
"in": "query"
|
|
14275
14372
|
},
|
|
14373
|
+
{
|
|
14374
|
+
"name": "automation_status",
|
|
14375
|
+
"description": "Filter by the current state's dispatch status. Repeat the parameter to OR values. `none` selects the tasks whose `automation_status` is `null` — the ones that never entered a state with an automation. It is a value a task really holds, so it is a value of the filter too; the parameter's own absence already means \"every task\".\n\nA value outside the enum, empty string included, is a `400`.",
|
|
14376
|
+
"required": false,
|
|
14377
|
+
"type": "array",
|
|
14378
|
+
"in": "query"
|
|
14379
|
+
},
|
|
14276
14380
|
{
|
|
14277
14381
|
"name": "assignee",
|
|
14278
14382
|
"description": "",
|
|
@@ -14499,6 +14603,60 @@ const routes = {
|
|
|
14499
14603
|
}
|
|
14500
14604
|
]
|
|
14501
14605
|
},
|
|
14606
|
+
"pause-task": {
|
|
14607
|
+
serviceClass: "Tasks",
|
|
14608
|
+
operationId: "pauseTask",
|
|
14609
|
+
description: "Pauses a task's automation. While a pause is in force no state's `on_enter` dispatches and no retry chain continues — an agent generation, a tool call and a sub-orchestration alike — so the task stops spending without losing its place. A workflow has no run object, so this is the workflow half of pause-orchestration-run: the pause lands on the instance, which is the task. Transitions are deliberately still allowed — a move costs nothing while every dispatch it would start is suppressed — so a board stays usable under a pause. Entering a state whose dispatch is suppressed records `automation_status: paused`, which resume-task reads to know that state still owes its work. A dispatch already in flight is left to finish, and its outcome still routes; only what would start after it is suppressed. Idempotent: pausing an already-paused task answers with it unchanged.",
|
|
14610
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/tasks",
|
|
14611
|
+
httpMethod: "post",
|
|
14612
|
+
pathParams: ["project_id", "task_id"],
|
|
14613
|
+
queryParams: [],
|
|
14614
|
+
flags: [
|
|
14615
|
+
{
|
|
14616
|
+
"name": "project_id",
|
|
14617
|
+
"description": "Project public ID (proj_ prefix).",
|
|
14618
|
+
"required": true,
|
|
14619
|
+
"type": "string",
|
|
14620
|
+
"in": "path"
|
|
14621
|
+
},
|
|
14622
|
+
{
|
|
14623
|
+
"name": "task_id",
|
|
14624
|
+
"description": "",
|
|
14625
|
+
"required": true,
|
|
14626
|
+
"type": "string",
|
|
14627
|
+
"in": "path"
|
|
14628
|
+
},
|
|
14629
|
+
{
|
|
14630
|
+
"name": "reason",
|
|
14631
|
+
"description": "Why the task is being paused, surfaced on `pause_reason`.",
|
|
14632
|
+
"required": false,
|
|
14633
|
+
"type": "string",
|
|
14634
|
+
"in": "body"
|
|
14635
|
+
}
|
|
14636
|
+
]
|
|
14637
|
+
},
|
|
14638
|
+
"resume-task": {
|
|
14639
|
+
serviceClass: "Tasks",
|
|
14640
|
+
operationId: "resumeTask",
|
|
14641
|
+
description: "Lifts a task's pause. When the pause suppressed the current state's `on_enter` — `automation_status: paused` — that dispatch is started now, as the caller resuming rather than as whoever last moved the task. A state whose dispatch had already completed, or that declares none, is left alone, so a resume never re-spends work the pause did not stop. This is the only way a pause is lifted; a task that is merely idle is advanced by firing a transition instead.",
|
|
14642
|
+
moduleDocsUrl: "https://docs.naturali.ai/docs/modules/tasks",
|
|
14643
|
+
httpMethod: "post",
|
|
14644
|
+
pathParams: ["project_id", "task_id"],
|
|
14645
|
+
queryParams: [],
|
|
14646
|
+
flags: [{
|
|
14647
|
+
"name": "project_id",
|
|
14648
|
+
"description": "Project public ID (proj_ prefix).",
|
|
14649
|
+
"required": true,
|
|
14650
|
+
"type": "string",
|
|
14651
|
+
"in": "path"
|
|
14652
|
+
}, {
|
|
14653
|
+
"name": "task_id",
|
|
14654
|
+
"description": "",
|
|
14655
|
+
"required": true,
|
|
14656
|
+
"type": "string",
|
|
14657
|
+
"in": "path"
|
|
14658
|
+
}]
|
|
14659
|
+
},
|
|
14502
14660
|
"get-task-history": {
|
|
14503
14661
|
serviceClass: "Tasks",
|
|
14504
14662
|
operationId: "getTaskHistory",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naturali/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.117.0",
|
|
4
4
|
"description": "Command-line interface for the naturali.ai API, generated from its OpenAPI specs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"tsx": "^4.23.1",
|
|
31
31
|
"typescript": "~6.0.3",
|
|
32
32
|
"vitest": "^4.1.10",
|
|
33
|
-
"@naturali/sdk": "0.
|
|
33
|
+
"@naturali/sdk": "0.117.0"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"generate": "tsx scripts/generate.ts",
|