@deepraxis/sdk 0.1.1-dev.d25d171 → 0.1.1-dev.de0a917

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/METHODS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SDK methods
2
2
 
3
- Generated by `bun run generate`. 426 HTTP operations, plus product aliases. Version segments and path parameters are omitted from resource names. Inputs use typed `{ path, query, body, headers }` options. Collections form nested resource objects; POST actions retain their verb. Naming rules are documented in `scripts/resources.ts`; semantic exceptions and aliases with reasons are in `scripts/naming-overrides.ts`.
3
+ Generated by `bun run generate`. 485 HTTP operations, plus product aliases. Version segments and path parameters are omitted from resource names. Inputs use typed `{ path, query, body, headers }` options. Collections form nested resource objects; POST actions retain their verb. Naming rules are documented in `scripts/resources.ts`; semantic exceptions and aliases with reasons are in `scripts/naming-overrides.ts`.
4
4
 
5
5
  `always` returns an AsyncIterable; `optional` streams with `{ stream: true }`; `yes` pagination returns a Page. Only `{ data, next_cursor }` + `cursor` query contracts are automatically paginated.
6
6
 
@@ -16,8 +16,18 @@ Multipart request bodies expand plain objects into bracketed fields (for example
16
16
  | create | POST | `/agent/v1/agents` | no | no |
17
17
  | list | GET | `/agent/v1/agents` | no | no |
18
18
  | retrieve | GET | `/agent/v1/agents/{agent_id}` | no | no |
19
+ | retrieveAppearance | GET | `/agent/v1/agents/{agent_id}/appearance` | no | no |
19
20
  | update | POST | `/agent/v1/agents/{agent_id}` | no | no |
20
21
 
22
+ ### agent.agents.customers
23
+
24
+ | Method | HTTP | Path | Streaming | Pagination |
25
+ |---|---|---|---|---|
26
+ | delete | DELETE | `/agent/v1/agents/{agent_id}/customers/{customer_id}` | no | no |
27
+ | list | GET | `/agent/v1/agents/{agent_id}/customers` | no | no |
28
+ | retrieve | GET | `/agent/v1/agents/{agent_id}/customers/{customer_id}` | no | no |
29
+ | retrieveDeletion | GET | `/agent/v1/agents/{agent_id}/customers/{customer_id}/deletion` | no | no |
30
+
21
31
  ### agent.agents.customers.auth.accessTokens
22
32
 
23
33
  | Method | HTTP | Path | Streaming | Pagination |
@@ -37,32 +47,23 @@ Multipart request bodies expand plain objects into bracketed fields (for example
37
47
  |---|---|---|---|---|
38
48
  | create | POST | `/agent/v1/agents/{agent_id}/customers/auth/grant_codes` | no | no |
39
49
 
40
- ### agent.agents.endUsers
50
+ ### agent.agents.customers.block
41
51
 
42
52
  | Method | HTTP | Path | Streaming | Pagination |
43
53
  |---|---|---|---|---|
44
- | delete | DELETE | `/agent/v1/agents/{agent_id}/end_users/{external_user_id}` | no | no |
45
- | list | GET | `/agent/v1/agents/{agent_id}/end_users` | no | no |
46
- | retrieve | GET | `/agent/v1/agents/{agent_id}/end_users/{external_user_id}` | no | no |
47
- | retrieveDeletion | GET | `/agent/v1/agents/{agent_id}/end_users/{external_user_id}/deletion` | no | no |
54
+ | create | POST | `/agent/v1/agents/{agent_id}/customers/{customer_id}/block` | no | no |
48
55
 
49
- ### agent.agents.endUsers.block
56
+ ### agent.agents.customers.revokeTokens
50
57
 
51
58
  | Method | HTTP | Path | Streaming | Pagination |
52
59
  |---|---|---|---|---|
53
- | create | POST | `/agent/v1/agents/{agent_id}/end_users/{external_user_id}/block` | no | no |
60
+ | create | POST | `/agent/v1/agents/{agent_id}/customers/{customer_id}/revoke_tokens` | no | no |
54
61
 
55
- ### agent.agents.endUsers.revokeTokens
62
+ ### agent.agents.customers.unblock
56
63
 
57
64
  | Method | HTTP | Path | Streaming | Pagination |
58
65
  |---|---|---|---|---|
59
- | create | POST | `/agent/v1/agents/{agent_id}/end_users/{external_user_id}/revoke_tokens` | no | no |
60
-
61
- ### agent.agents.endUsers.unblock
62
-
63
- | Method | HTTP | Path | Streaming | Pagination |
64
- |---|---|---|---|---|
65
- | create | POST | `/agent/v1/agents/{agent_id}/end_users/{external_user_id}/unblock` | no | no |
66
+ | create | POST | `/agent/v1/agents/{agent_id}/customers/{customer_id}/unblock` | no | no |
66
67
 
67
68
  ### agent.agents.unarchive
68
69
 
@@ -144,37 +145,6 @@ Multipart request bodies expand plain objects into bracketed fields (for example
144
145
  |---|---|---|---|---|
145
146
  | create | POST | `/agent/v1/deployments/{deployment_id}/unpause` | no | no |
146
147
 
147
- ### agent.embed
148
-
149
- | Method | HTTP | Path | Streaming | Pagination |
150
- |---|---|---|---|---|
151
- | retrieveAppearance | GET | `/agent/v1/embed/appearance` | no | no |
152
-
153
- ### agent.embed.exchange
154
-
155
- | Method | HTTP | Path | Streaming | Pagination |
156
- |---|---|---|---|---|
157
- | create | POST | `/agent/v1/embed/exchange` | no | no |
158
-
159
- ### agent.embedTokens
160
-
161
- | Method | HTTP | Path | Streaming | Pagination |
162
- |---|---|---|---|---|
163
- | create | POST | `/agent/v1/embed_tokens` | no | no |
164
- | list | GET | `/agent/v1/embed_tokens` | no | no |
165
-
166
- ### agent.embedTokens.anonymous
167
-
168
- | Method | HTTP | Path | Streaming | Pagination |
169
- |---|---|---|---|---|
170
- | create | POST | `/agent/v1/embed_tokens/anonymous` | no | no |
171
-
172
- ### agent.embedTokens.revoke
173
-
174
- | Method | HTTP | Path | Streaming | Pagination |
175
- |---|---|---|---|---|
176
- | create | POST | `/agent/v1/embed_tokens/{id}/revoke` | no | no |
177
-
178
148
  ### agent.environments
179
149
 
180
150
  | Method | HTTP | Path | Streaming | Pagination |
@@ -404,6 +374,16 @@ Multipart request bodies expand plain objects into bracketed fields (for example
404
374
  |---|---|---|---|---|
405
375
  | send | POST | `/automation/v1/hooks/{trigger_id}/{token}` | no | no |
406
376
 
377
+ ### automation.humanTasks
378
+
379
+ | Method | HTTP | Path | Streaming | Pagination |
380
+ |---|---|---|---|---|
381
+ | cancel | POST | `/automation/v1/human-tasks/{id}/cancel` | no | no |
382
+ | delegate | POST | `/automation/v1/human-tasks/{id}/delegate` | no | no |
383
+ | list | GET | `/automation/v1/human-tasks` | no | yes |
384
+ | respond | POST | `/automation/v1/human-tasks/{id}/respond` | no | no |
385
+ | retrieve | GET | `/automation/v1/human-tasks/{id}` | no | no |
386
+
407
387
  ### automation.resolve
408
388
 
409
389
  | Method | HTTP | Path | Streaming | Pagination |
@@ -469,6 +449,14 @@ Multipart request bodies expand plain objects into bracketed fields (for example
469
449
  | list | GET | `/automation/v1/scripts/{ns}/{name}/dist-tags` | no | no |
470
450
  | set | PUT | `/automation/v1/scripts/{ns}/{name}/dist-tags/{tag}` | no | no |
471
451
 
452
+ ### automation.scripts.vaults
453
+
454
+ | Method | HTTP | Path | Streaming | Pagination |
455
+ |---|---|---|---|---|
456
+ | delete | DELETE | `/automation/v1/scripts/{ns}/{name}/vaults/{alias}` | no | no |
457
+ | list | GET | `/automation/v1/scripts/{ns}/{name}/vaults` | no | no |
458
+ | set | PUT | `/automation/v1/scripts/{ns}/{name}/vaults/{alias}` | no | no |
459
+
472
460
  ### automation.scripts.versions
473
461
 
474
462
  | Method | HTTP | Path | Streaming | Pagination |
@@ -530,6 +518,14 @@ Multipart request bodies expand plain objects into bracketed fields (for example
530
518
  | list | GET | `/automation/v1/workflows/{ns}/{name}/dist-tags` | no | no |
531
519
  | set | PUT | `/automation/v1/workflows/{ns}/{name}/dist-tags/{tag}` | no | no |
532
520
 
521
+ ### automation.workflows.vaults
522
+
523
+ | Method | HTTP | Path | Streaming | Pagination |
524
+ |---|---|---|---|---|
525
+ | delete | DELETE | `/automation/v1/workflows/{ns}/{name}/vaults/{alias}` | no | no |
526
+ | list | GET | `/automation/v1/workflows/{ns}/{name}/vaults` | no | no |
527
+ | set | PUT | `/automation/v1/workflows/{ns}/{name}/vaults/{alias}` | no | no |
528
+
533
529
  ### automation.workflows.versions
534
530
 
535
531
  | Method | HTTP | Path | Streaming | Pagination |
@@ -599,6 +595,117 @@ Multipart request bodies expand plain objects into bracketed fields (for example
599
595
  |---|---|---|---|---|
600
596
  | create | POST | `/browser/v1/sessions/{sessionId}/viewer` | no | no |
601
597
 
598
+ ## canvas
599
+
600
+ ### canvas.canvases
601
+
602
+ | Method | HTTP | Path | Streaming | Pagination |
603
+ |---|---|---|---|---|
604
+ | create | POST | `/canvas/v1/canvases` | no | no |
605
+ | delete | DELETE | `/canvas/v1/canvases/{canvas_id}` | no | no |
606
+ | execute | POST | `/canvas/v1/canvases/{canvas_id}:execute` | no | no |
607
+ | list | GET | `/canvas/v1/canvases` | no | yes |
608
+ | restore | POST | `/canvas/v1/canvases/{canvas_id}:restore` | no | no |
609
+ | retrieve | GET | `/canvas/v1/canvases/{canvas_id}` | no | no |
610
+ | update | PATCH | `/canvas/v1/canvases/{canvas_id}` | no | no |
611
+
612
+ ### canvas.canvases.images
613
+
614
+ | Method | HTTP | Path | Streaming | Pagination |
615
+ |---|---|---|---|---|
616
+ | list | GET | `/canvas/v1/canvases/{canvas_id}/images` | no | no |
617
+
618
+ ### canvas.canvases.nodes
619
+
620
+ | Method | HTTP | Path | Streaming | Pagination |
621
+ |---|---|---|---|---|
622
+ | list | GET | `/canvas/v1/canvases/{canvas_id}/nodes` | no | no |
623
+
624
+ ### canvas.canvases.versions
625
+
626
+ | Method | HTTP | Path | Streaming | Pagination |
627
+ |---|---|---|---|---|
628
+ | list | GET | `/canvas/v1/canvases/{canvas_id}/versions` | no | no |
629
+
630
+ ### canvas.collections
631
+
632
+ | Method | HTTP | Path | Streaming | Pagination |
633
+ |---|---|---|---|---|
634
+ | create | POST | `/canvas/v1/collections` | no | no |
635
+ | delete | DELETE | `/canvas/v1/collections/{collection_id}` | no | no |
636
+ | list | GET | `/canvas/v1/collections` | no | no |
637
+ | retrieve | GET | `/canvas/v1/collections/{collection_id}` | no | no |
638
+ | update | PATCH | `/canvas/v1/collections/{collection_id}` | no | no |
639
+
640
+ ## cut
641
+
642
+ ### cut.exports
643
+
644
+ | Method | HTTP | Path | Streaming | Pagination |
645
+ |---|---|---|---|---|
646
+ | cancel | POST | `/cut/v1/exports/{export_id}:cancel` | no | no |
647
+ | retrieve | GET | `/cut/v1/exports/{export_id}` | no | no |
648
+
649
+ ### cut.projects
650
+
651
+ | Method | HTTP | Path | Streaming | Pagination |
652
+ |---|---|---|---|---|
653
+ | create | POST | `/cut/v1/projects` | no | no |
654
+ | delete | DELETE | `/cut/v1/projects/{project_id}` | no | no |
655
+ | execute | POST | `/cut/v1/projects/{project_id}:execute` | no | no |
656
+ | list | GET | `/cut/v1/projects` | no | no |
657
+ | retrieve | GET | `/cut/v1/projects/{project_id}` | no | no |
658
+ | retrieveState | GET | `/cut/v1/projects/{project_id}/state` | no | no |
659
+ | retrieveTimeline | GET | `/cut/v1/projects/{project_id}/timeline` | no | no |
660
+ | undelete | POST | `/cut/v1/projects/{project_id}:undelete` | no | no |
661
+ | update | PATCH | `/cut/v1/projects/{project_id}` | no | no |
662
+
663
+ ### cut.projects.analysis
664
+
665
+ | Method | HTTP | Path | Streaming | Pagination |
666
+ |---|---|---|---|---|
667
+ | create | POST | `/cut/v1/projects/{project_id}/analysis` | no | no |
668
+
669
+ ### cut.projects.bindings
670
+
671
+ | Method | HTTP | Path | Streaming | Pagination |
672
+ |---|---|---|---|---|
673
+ | create | POST | `/cut/v1/projects/{project_id}/bindings` | no | no |
674
+ | delete | DELETE | `/cut/v1/projects/{project_id}/bindings/{name}` | no | no |
675
+ | list | GET | `/cut/v1/projects/{project_id}/bindings` | no | no |
676
+
677
+ ### cut.projects.exports
678
+
679
+ | Method | HTTP | Path | Streaming | Pagination |
680
+ |---|---|---|---|---|
681
+ | create | POST | `/cut/v1/projects/{project_id}/exports` | no | no |
682
+ | list | GET | `/cut/v1/projects/{project_id}/exports` | no | no |
683
+
684
+ ### cut.projects.frames
685
+
686
+ | Method | HTTP | Path | Streaming | Pagination |
687
+ |---|---|---|---|---|
688
+ | list | GET | `/cut/v1/projects/{project_id}/frames` | no | no |
689
+
690
+ ### cut.projects.media
691
+
692
+ | Method | HTTP | Path | Streaming | Pagination |
693
+ |---|---|---|---|---|
694
+ | import | POST | `/cut/v1/projects/{project_id}/media:import` | no | no |
695
+
696
+ ### cut.projects.versions
697
+
698
+ | Method | HTTP | Path | Streaming | Pagination |
699
+ |---|---|---|---|---|
700
+ | create | POST | `/cut/v1/projects/{project_id}/versions` | no | no |
701
+ | list | GET | `/cut/v1/projects/{project_id}/versions` | no | no |
702
+
703
+ ### cut.versions
704
+
705
+ | Method | HTTP | Path | Streaming | Pagination |
706
+ |---|---|---|---|---|
707
+ | restore | POST | `/cut/v1/versions/{version_id}:restore` | no | no |
708
+
602
709
  ## database
603
710
 
604
711
  ### database.databases
@@ -664,6 +771,18 @@ Multipart request bodies expand plain objects into bracketed fields (for example
664
771
  | retrieve | GET | `/file/v1/files/{file_id}` | no | no |
665
772
  | retrieveContent | GET | `/file/v1/files/{file_id}/content` | no | no |
666
773
 
774
+ ### file.files.contentLinks
775
+
776
+ | Method | HTTP | Path | Streaming | Pagination |
777
+ |---|---|---|---|---|
778
+ | revoke | POST | `/file/v1/files/{file_id}/content_links:revoke` | no | no |
779
+
780
+ ### file.files.contentUrl
781
+
782
+ | Method | HTTP | Path | Streaming | Pagination |
783
+ |---|---|---|---|---|
784
+ | create | POST | `/file/v1/files/{file_id}/content_url` | no | no |
785
+
667
786
  ### file.uploads
668
787
 
669
788
  | Method | HTTP | Path | Streaming | Pagination |
@@ -671,6 +790,7 @@ Multipart request bodies expand plain objects into bracketed fields (for example
671
790
  | cancel | POST | `/file/v1/uploads/{upload_id}/cancel` | no | no |
672
791
  | complete | POST | `/file/v1/uploads/{upload_id}/complete` | no | no |
673
792
  | create | POST | `/file/v1/uploads` | no | no |
793
+ | createSigned | POST | `/file/v1/uploads/signed` | no | no |
674
794
 
675
795
  ### file.uploads.parts
676
796
 
@@ -801,6 +921,12 @@ Multipart request bodies expand plain objects into bracketed fields (for example
801
921
  | create | POST | `/media/v1/libraries/{library_id}/batches` | no | no |
802
922
  | retrieve | GET | `/media/v1/libraries/{library_id}/batches/{job_id}` | no | no |
803
923
 
924
+ ### media.libraries.deliveryTokens
925
+
926
+ | Method | HTTP | Path | Streaming | Pagination |
927
+ |---|---|---|---|---|
928
+ | create | POST | `/media/v1/libraries/{library_id}/delivery_tokens` | no | no |
929
+
804
930
  ### media.libraries.events
805
931
 
806
932
  | Method | HTTP | Path | Streaming | Pagination |
@@ -851,6 +977,13 @@ Multipart request bodies expand plain objects into bracketed fields (for example
851
977
 
852
978
  ## meta
853
979
 
980
+ ### meta.docs
981
+
982
+ | Method | HTTP | Path | Streaming | Pagination |
983
+ |---|---|---|---|---|
984
+ | retrieve | GET | `/meta/v1/docs/{path}` | no | no |
985
+ | search | GET | `/meta/v1/docs/search` | no | no |
986
+
854
987
  ### meta.health
855
988
 
856
989
  | Method | HTTP | Path | Streaming | Pagination |
@@ -974,6 +1107,12 @@ Multipart request bodies expand plain objects into bracketed fields (for example
974
1107
  |---|---|---|---|---|
975
1108
  | create | POST | `/model/v1/responses/input_tokens` | no | no |
976
1109
 
1110
+ ### model.systemone
1111
+
1112
+ | Method | HTTP | Path | Streaming | Pagination |
1113
+ |---|---|---|---|---|
1114
+ | create | POST | `/model/v1/systemone` | no | no |
1115
+
977
1116
  ### model.videos
978
1117
 
979
1118
  | Method | HTTP | Path | Streaming | Pagination |
@@ -1109,7 +1248,36 @@ Multipart request bodies expand plain objects into bracketed fields (for example
1109
1248
 
1110
1249
  | Method | HTTP | Path | Streaming | Pagination |
1111
1250
  |---|---|---|---|---|
1251
+ | create | POST | `/sandbox/v1/templates` | no | no |
1252
+ | delete | DELETE | `/sandbox/v1/templates/{templateID}` | no | no |
1112
1253
  | list | GET | `/sandbox/v1/templates` | no | no |
1254
+ | retrieve | GET | `/sandbox/v1/templates/{templateID}` | no | no |
1255
+
1256
+ ### sandbox.templates.aliases
1257
+
1258
+ | Method | HTTP | Path | Streaming | Pagination |
1259
+ |---|---|---|---|---|
1260
+ | retrieve | GET | `/sandbox/v1/templates/aliases/{alias}` | no | no |
1261
+
1262
+ ### sandbox.templates.builds
1263
+
1264
+ | Method | HTTP | Path | Streaming | Pagination |
1265
+ |---|---|---|---|---|
1266
+ | update | POST | `/sandbox/v1/templates/{templateID}/builds/{buildID}` | no | no |
1267
+
1268
+ ### sandbox.templates.builds.status
1269
+
1270
+ | Method | HTTP | Path | Streaming | Pagination |
1271
+ |---|---|---|---|---|
1272
+ | list | GET | `/sandbox/v1/templates/{templateID}/builds/{buildID}/status` | no | no |
1273
+
1274
+ ### sandbox.templates.tags
1275
+
1276
+ | Method | HTTP | Path | Streaming | Pagination |
1277
+ |---|---|---|---|---|
1278
+ | create | POST | `/sandbox/v1/templates/tags` | no | no |
1279
+ | delete | DELETE | `/sandbox/v1/templates/tags` | no | no |
1280
+ | list | GET | `/sandbox/v1/templates/{templateID}/tags` | no | no |
1113
1281
 
1114
1282
  ### sandbox.volumes
1115
1283
 
@@ -1359,10 +1527,14 @@ Multipart request bodies expand plain objects into bracketed fields (for example
1359
1527
  | agent.sessions.events.send | Events submit session input; the product verb is send rather than create. |
1360
1528
  | automation.hooks.send | Delivers a payload to a trigger's secret webhook URL; it sends an event rather than updating a hook resource. |
1361
1529
  | automation.scripts.distTags.set | A dist-tag assigns a version to a name; use npm vocabulary set rather than update. |
1530
+ | automation.scripts.vaults.set | Assign a whole vault to a definition alias, independently of published versions. |
1362
1531
  | automation.scripts.versions.create / publish | Creating a script version publishes it; publish is a product alias of versions.create. |
1363
1532
  | automation.workflows.distTags.set | Workflow dist-tags use the same npm-style assignment vocabulary as script dist-tags. |
1533
+ | automation.workflows.vaults.set | Assign a whole vault to a definition alias, independently of published versions. |
1364
1534
  | automation.workflows.versions.create / publish | Creating a workflow version publishes it; publish is a product alias of versions.create. |
1365
1535
  | database.databases.rest.create | The final parameter identifies a table collection; POST inserts rows rather than updating the table. |
1536
+ | file.uploads.createSigned | Signed upload creation returns a one-time local PUT URL; ADR-039 names this operation uploads.createSigned. |
1537
+ | meta.docs.search | Documentation keyword search is an operation on docs, not a nested collection. |
1366
1538
  | sandbox.sandboxes.commands.run | Sandbox data operations use the E2B SDK verb while preserving URL resource nesting. |
1367
1539
  | sandbox.sandboxes.files.remove | Sandbox data operations use the E2B SDK verb while preserving URL resource nesting. |
1368
1540
  | sandbox.sandboxes.files.read | Sandbox data operations use the E2B SDK verb while preserving URL resource nesting. |
package/README.md CHANGED
@@ -55,7 +55,7 @@ server. You need a Praxis account; sign up at [deepraxis.com](https://deepraxis.
55
55
  const praxis = new Praxis({
56
56
  apiKey: process.env.PRAXIS_API_KEY!,
57
57
  baseUrl: 'https://api.deepraxis.com', // default
58
- timeoutMs: 60_000, // default; the whole call, body included
58
+ timeoutMs: 600_000, // default (10 minutes, as the OpenAI and Anthropic SDKs); the whole call, body included
59
59
  maxRetries: 2, // default
60
60
  // fetch: customFetch, // bring your own fetch
61
61
  });
@@ -23,6 +23,13 @@ export declare function createAutomationClient(options: PraxisOptions): {
23
23
  hooks: {
24
24
  send: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationHooksReceiveData>) => Promise<import("./generated/types.gen.js").AutomationFiring>;
25
25
  };
26
+ humanTasks: {
27
+ cancel: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationHumanTasksCancelData>) => Promise<import("./generated/types.gen.js").AutomationHumanTask>;
28
+ delegate: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationHumanTasksDelegateData>) => Promise<import("./generated/types.gen.js").AutomationHumanTask>;
29
+ list: (options?: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationHumanTasksListData> | undefined) => Promise<import("./automation.js").Page<import("./generated/types.gen.js").AutomationHumanTask>>;
30
+ respond: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationHumanTasksRespondData>) => Promise<import("./generated/types.gen.js").AutomationHumanTask>;
31
+ retrieve: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationHumanTasksGetData>) => Promise<import("./generated/types.gen.js").AutomationHumanTask>;
32
+ };
26
33
  resolve: {
27
34
  retrieve: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationResolveResolveData>) => Promise<import("./generated/types.gen.js").AutomationResolveResult>;
28
35
  };
@@ -89,6 +96,33 @@ export declare function createAutomationClient(options: PraxisOptions): {
89
96
  restore: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationScriptsRestoreData>) => Promise<import("./generated/types.gen.js").AutomationDefinition>;
90
97
  retrieve: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationScriptsGetData>) => Promise<import("./generated/types.gen.js").AutomationDefinitionDetail>;
91
98
  update: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationScriptsPatchData>) => Promise<import("./generated/types.gen.js").AutomationDefinitionDetail>;
99
+ vaults: {
100
+ delete: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationScriptsVaultsDeleteData>) => Promise<void>;
101
+ list: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationScriptsVaultsListData>) => Promise<{
102
+ data: Array<{
103
+ alias: string;
104
+ vault: {
105
+ id: string;
106
+ name: string;
107
+ };
108
+ secrets: Array<{
109
+ name: string;
110
+ }>;
111
+ secrets_unavailable?: true;
112
+ }>;
113
+ }>;
114
+ set: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationScriptsVaultsSetData>) => Promise<{
115
+ alias: string;
116
+ vault: {
117
+ id: string;
118
+ name: string;
119
+ };
120
+ secrets: Array<{
121
+ name: string;
122
+ }>;
123
+ secrets_unavailable?: true;
124
+ }>;
125
+ };
92
126
  versions: {
93
127
  create: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationScriptsPublishData>) => Promise<import("./generated/types.gen.js").AutomationVersion>;
94
128
  deprecate: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationScriptsDeprecateData>) => Promise<import("./generated/types.gen.js").AutomationVersion>;
@@ -136,6 +170,33 @@ export declare function createAutomationClient(options: PraxisOptions): {
136
170
  restore: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationWorkflowsRestoreData>) => Promise<import("./generated/types.gen.js").AutomationDefinition>;
137
171
  retrieve: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationWorkflowsGetData>) => Promise<import("./generated/types.gen.js").AutomationDefinitionDetail>;
138
172
  update: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationWorkflowsPatchData>) => Promise<import("./generated/types.gen.js").AutomationDefinitionDetail>;
173
+ vaults: {
174
+ delete: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationWorkflowsVaultsDeleteData>) => Promise<void>;
175
+ list: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationWorkflowsVaultsListData>) => Promise<{
176
+ data: Array<{
177
+ alias: string;
178
+ vault: {
179
+ id: string;
180
+ name: string;
181
+ };
182
+ secrets: Array<{
183
+ name: string;
184
+ }>;
185
+ secrets_unavailable?: true;
186
+ }>;
187
+ }>;
188
+ set: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationWorkflowsVaultsSetData>) => Promise<{
189
+ alias: string;
190
+ vault: {
191
+ id: string;
192
+ name: string;
193
+ };
194
+ secrets: Array<{
195
+ name: string;
196
+ }>;
197
+ secrets_unavailable?: true;
198
+ }>;
199
+ };
139
200
  versions: {
140
201
  create: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationWorkflowsPublishData>) => Promise<import("./generated/types.gen.js").AutomationVersion>;
141
202
  deprecate: (options: import("./core/transport.js").CallOptions<import("./generated/types.gen.js").AutomationWorkflowsDeprecateData>) => Promise<import("./generated/types.gen.js").AutomationVersion>;
@@ -1,12 +1,22 @@
1
+ import { type SandboxTemplateBuildInput, type SandboxTemplateBuildResult } from "../helpers/sandbox-templates.js";
1
2
  import { type UploadFileOptions, type UploadedFile } from '../helpers/file-upload.js';
2
3
  import { resourceFactories } from '../resources.generated.js';
3
4
  import { type PraxisOptions } from './transport.js';
4
5
  import { type PublishInput, type PublishResult } from '../helpers/application-publish.js';
6
+ import { type BrowserConnectOptions, type PraxisBrowser } from '../helpers/browser-connect.js';
5
7
  import { type CountInput, type CountResult } from '../helpers/database-count.js';
6
8
  type Resources = {
7
9
  readonly [K in keyof typeof resourceFactories]: ReturnType<(typeof resourceFactories)[K]>;
8
10
  };
9
- export interface Praxis extends Omit<Resources, 'application' | 'database' | 'file'> {
11
+ export interface Praxis extends Omit<Resources, 'application' | 'browser' | 'database' | 'file' | 'sandbox'> {
12
+ readonly sandbox: Omit<Resources['sandbox'], 'templates'> & {
13
+ templates: Resources['sandbox']['templates'] & {
14
+ build(input: SandboxTemplateBuildInput): Promise<SandboxTemplateBuildResult>;
15
+ };
16
+ };
17
+ readonly browser: Resources['browser'] & {
18
+ connect(options?: BrowserConnectOptions): Promise<PraxisBrowser>;
19
+ };
10
20
  readonly file: Resources['file'] & {
11
21
  uploadFile(file: Blob | File, options: UploadFileOptions): Promise<UploadedFile>;
12
22
  };
@@ -1,7 +1,9 @@
1
+ import { buildSandboxTemplate } from "../helpers/sandbox-templates.js";
1
2
  import { uploadFile } from "../helpers/file-upload.js";
2
3
  import { resourceFactories } from "../resources.generated.js";
3
4
  import { Transport } from "./transport.js";
4
5
  import { publish } from "../helpers/application-publish.js";
6
+ import { connectBrowser } from "../helpers/browser-connect.js";
5
7
  import { count } from "../helpers/database-count.js";
6
8
  export class Praxis {
7
9
  constructor(options) {
@@ -9,10 +11,21 @@ export class Praxis {
9
11
  for (const [name, create] of Object.entries(resourceFactories)) {
10
12
  const resource = create(transport);
11
13
  // Assemble before sealing the resource property; never replace a readonly SDK resource.
14
+ if (name === 'sandbox')
15
+ Object.assign(resource.templates, { build: (input) => buildSandboxTemplate(this, input) });
12
16
  if (name === 'file')
13
17
  Object.assign(resource, { uploadFile: (file, options) => uploadFile(this, file, options) });
14
18
  if (name === 'database')
15
19
  Object.assign(resource, { count: (input) => count(transport, input) });
20
+ if (name === 'browser') {
21
+ // The npm build has no Node globals in scope; name the process shape this helper reads.
22
+ const host = globalThis.process;
23
+ Object.assign(resource, { connect: (options) => connectBrowser({
24
+ contexts: resource.contexts,
25
+ env: host?.env ?? {},
26
+ builtin: host?.getBuiltinModule?.bind(host),
27
+ }, options) });
28
+ }
16
29
  if (name === 'application')
17
30
  Object.assign(resource, { publish: (input) => publish(this, input) });
18
31
  Object.defineProperty(this, name, { value: resource, enumerable: true });
@@ -25,6 +25,15 @@ type InternalOptions = RequestOptions & {
25
25
  query?: unknown;
26
26
  lastEventId?: string;
27
27
  };
28
+ /** Margin over a server-side execution deadline: the response still has to travel back after it. */
29
+ export declare const SERVER_DEADLINE_MARGIN_MS = 30000;
30
+ /**
31
+ * A request body that carries its own execution deadline (`timeoutMs`, as in sandbox commands.run) is
32
+ * waited for at least that long plus a margin, so the client never gives up before the server answers.
33
+ */
34
+ export declare function serverDeadlineMs(options: {
35
+ body?: unknown;
36
+ }): number;
28
37
  export declare class Transport {
29
38
  private readonly config;
30
39
  constructor(options: PraxisOptions);
@@ -32,10 +32,21 @@ function assertKnownOptions(options) {
32
32
  detail: `Unrecognised option ${stray.length > 1 ? 'keys' : 'key'} ${names}. Request parameters are not flat: put each under \`query\` (GET/DELETE: filters, pagination), \`path\` (URL segments) or \`body\` (POST/PATCH/PUT payload), e.g. call({ query: { ${stray[0]} } }) or call({ body: { ${stray[0]} } }). Common top-level keys: path, query, body, headers, signal, timeoutMs, maxRetries.`,
33
33
  });
34
34
  }
35
+ /** Margin over a server-side execution deadline: the response still has to travel back after it. */
36
+ export const SERVER_DEADLINE_MARGIN_MS = 30_000;
37
+ /**
38
+ * A request body that carries its own execution deadline (`timeoutMs`, as in sandbox commands.run) is
39
+ * waited for at least that long plus a margin, so the client never gives up before the server answers.
40
+ */
41
+ export function serverDeadlineMs(options) {
42
+ const body = options.body;
43
+ const deadline = body && typeof body === 'object' ? body.timeoutMs : undefined;
44
+ return typeof deadline === 'number' && Number.isFinite(deadline) && deadline > 0 ? deadline + SERVER_DEADLINE_MARGIN_MS : 0;
45
+ }
35
46
  export class Transport {
36
47
  config;
37
48
  constructor(options) {
38
- this.config = { timeoutMs: 60_000, maxRetries: 2, fetch: globalThis.fetch, ...options };
49
+ this.config = { timeoutMs: 600_000, maxRetries: 2, fetch: globalThis.fetch, ...options };
39
50
  this.validate(this.config.timeoutMs, this.config.maxRetries);
40
51
  }
41
52
  validate(timeout, retries) {
@@ -46,7 +57,7 @@ export class Transport {
46
57
  }
47
58
  scope(options, streaming) {
48
59
  assertKnownOptions(options);
49
- const timeoutMs = options.timeoutMs ?? this.config.timeoutMs;
60
+ const timeoutMs = options.timeoutMs ?? Math.max(this.config.timeoutMs, serverDeadlineMs(options));
50
61
  const maxRetries = options.maxRetries ?? this.config.maxRetries;
51
62
  this.validate(timeoutMs, maxRetries);
52
63
  const controller = new AbortController();