@blaxel/core 0.3.26-preview.311 → 0.3.26-preview.313

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 (29) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/client/sdk.gen.js +2 -2
  3. package/dist/cjs/common/settings.js +2 -2
  4. package/dist/cjs/sandbox/client/sdk.gen.js +44 -11
  5. package/dist/cjs/sandbox/filesystem/filesystem.js +1 -1
  6. package/dist/cjs/types/client/sdk.gen.d.ts +5 -2
  7. package/dist/cjs/types/client/types.gen.d.ts +80 -7
  8. package/dist/cjs/types/sandbox/client/sdk.gen.d.ts +34 -13
  9. package/dist/cjs/types/sandbox/client/types.gen.d.ts +66 -13
  10. package/dist/cjs-browser/.tsbuildinfo +1 -1
  11. package/dist/cjs-browser/client/sdk.gen.js +2 -2
  12. package/dist/cjs-browser/common/settings.js +2 -2
  13. package/dist/cjs-browser/sandbox/client/sdk.gen.js +44 -11
  14. package/dist/cjs-browser/sandbox/filesystem/filesystem.js +1 -1
  15. package/dist/cjs-browser/types/client/sdk.gen.d.ts +5 -2
  16. package/dist/cjs-browser/types/client/types.gen.d.ts +80 -7
  17. package/dist/cjs-browser/types/sandbox/client/sdk.gen.d.ts +34 -13
  18. package/dist/cjs-browser/types/sandbox/client/types.gen.d.ts +66 -13
  19. package/dist/esm/.tsbuildinfo +1 -1
  20. package/dist/esm/client/sdk.gen.js +2 -2
  21. package/dist/esm/common/settings.js +2 -2
  22. package/dist/esm/sandbox/client/sdk.gen.js +42 -10
  23. package/dist/esm/sandbox/filesystem/filesystem.js +1 -1
  24. package/dist/esm-browser/.tsbuildinfo +1 -1
  25. package/dist/esm-browser/client/sdk.gen.js +2 -2
  26. package/dist/esm-browser/common/settings.js +2 -2
  27. package/dist/esm-browser/sandbox/client/sdk.gen.js +42 -10
  28. package/dist/esm-browser/sandbox/filesystem/filesystem.js +1 -1
  29. package/package.json +1 -1
@@ -801,7 +801,7 @@ const listImages = (options) => {
801
801
  exports.listImages = listImages;
802
802
  /**
803
803
  * Build a container image
804
- * Builds a container image without creating a deployment. Returns a presigned URL for uploading source code. After upload, the image will be built and stored in the registry, but no agent, function, sandbox, or job will be created or updated.
804
+ * Builds or imports a container image without creating a deployment. Provide a registry image reference to download and convert an existing image, or omit image to receive a presigned URL for uploading source code. Registry imports can specify memoryMb and volumeMb for the import worker. These settings do not change the resources of workloads using the image.
805
805
  */
806
806
  const createImage = (options) => {
807
807
  return (options.client ?? client_gen_1.client).post({
@@ -2448,7 +2448,7 @@ const getTemplate = (options) => {
2448
2448
  exports.getTemplate = getTemplate;
2449
2449
  /**
2450
2450
  * List workspace team members
2451
- * Returns all team members in the workspace including their roles (admin or member) and invitation status.
2451
+ * Returns all team members in the workspace including their roles (admin, member or viewer) and invitation status.
2452
2452
  */
2453
2453
  const listWorkspaceUsers = (options) => {
2454
2454
  return (options?.client ?? client_gen_1.client).get({
@@ -30,8 +30,8 @@ function missingCredentialsMessage() {
30
30
  return "No Blaxel credentials found. Set the BL_API_KEY and BL_WORKSPACE environment variables, or run `bl login`.";
31
31
  }
32
32
  // Build info - these placeholders are replaced at build time by build:replace-imports
33
- const BUILD_VERSION = "0.3.26-preview.311";
34
- const BUILD_COMMIT = "a62496fa4537136926770cdd0d6e48ceb8506491";
33
+ const BUILD_VERSION = "0.3.26-preview.313";
34
+ const BUILD_COMMIT = "74b7740c0709370950088f3244fe2eeb2e970fca";
35
35
  const BUILD_SENTRY_DSN = "https://fd5e60e1c9820e1eef5ccebb84a07127@o4508714045276160.ingest.us.sentry.io/4510465864564736";
36
36
  const BLAXEL_API_VERSION = "2026-09-22";
37
37
  // Bun < 1.3.11 never sends connection-level WINDOW_UPDATE: the pooled h2
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
  // This file is auto-generated by @hey-api/openapi-ts
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getWatchFilesystemByPath = exports.postUpgrade = exports.postProcessByIdentifierStdin = exports.deleteProcessByIdentifierStdin = exports.getProcessByIdentifierLogsStream = exports.getProcessByIdentifierLogs = exports.deleteProcessByIdentifierKill = exports.getProcessByIdentifier = exports.deleteProcessByIdentifier = exports.postProcess = exports.getProcess = exports.putNetworkTunnelConfig = exports.deleteNetworkTunnel = exports.getNetworkProcessByPidPorts = exports.postNetworkProcessByPidMonitor = exports.deleteNetworkProcessByPidMonitor = exports.getHealth = exports.putFilesystemTreeByPath = exports.getFilesystemTreeByPath = exports.deleteFilesystemTreeByPath = exports.putFilesystemByPath = exports.getFilesystemByPath = exports.deleteFilesystemByPath = exports.getFilesystemSearchByPath = exports.postFilesystemMultipartInitiateByPath = exports.getFilesystemMultipartByUploadIdParts = exports.putFilesystemMultipartByUploadIdPart = exports.postFilesystemMultipartByUploadIdComplete = exports.deleteFilesystemMultipartByUploadIdAbort = exports.getFilesystemMultipart = exports.getFilesystemFindByPath = exports.getFilesystemContentSearchByPath = exports.postEnvironmentReload = exports.deleteDrivesMountByMountPath = exports.postDrivesMount = exports.getDrivesMount = exports.getCodegenRerankingByPath = exports.putCodegenFastapplyByPath = exports.getArchiveStatus = exports.postArchiveResume = exports.postArchiveExport = void 0;
4
+ exports.getWatchFilesystemByPath = exports.postUpgrade = exports.postProcessByIdentifierStdin = exports.deleteProcessByIdentifierStdin = exports.getProcessByIdentifierLogsStream = exports.getProcessByIdentifierLogs = exports.deleteProcessByIdentifierKill = exports.getProcessByIdentifier = exports.deleteProcessByIdentifier = exports.postProcess = exports.getProcess = exports.putNetworkTunnelConfig = exports.deleteNetworkTunnel = exports.getNetworkProcessByPidPorts = exports.postNetworkProcessByPidMonitor = exports.deleteNetworkProcessByPidMonitor = exports.getHealth = exports.putFilesystemTreeByPath = exports.getFilesystemTreeByPath = exports.deleteFilesystemTreeByPath = exports.putFilesystemByPath = exports.headFilesystemByPath = exports.getFilesystemByPath = exports.deleteFilesystemByPath = exports.getFilesystemSearchByPath = exports.postFilesystemMultipartInitiateByPath = exports.getFilesystemMultipartByUploadIdParts = exports.putFilesystemMultipartByUploadIdPart = exports.postFilesystemMultipartByUploadIdComplete = exports.deleteFilesystemMultipartByUploadIdAbort = exports.getFilesystemMultipart = exports.getFilesystemFindByPath = exports.getFilesystemContentSearchByPath = exports.postEnvironmentReload = exports.deleteDrivesMountByMountPath = exports.postDrivesMount = exports.getDrivesMount = exports.getCodegenRerankingByPath = exports.putCodegenFastapplyByPath = exports.getArchiveStatus = exports.postArchiveResume = exports.postArchiveExport = void 0;
5
5
  const client_fetch_1 = require("@hey-api/client-fetch");
6
6
  const client_gen_1 = require("./client.gen");
7
7
  /**
8
8
  * Export the filesystem changes to a presigned URL
9
9
  * Archives everything the sandbox changed on top of its base image and streams it, uncompressed, to a presigned S3 PUT URL. The memory of the sandbox is not archived.
10
10
  * The sandbox is quiesced first: the process list is saved (unless saveProcesses is false), every process is stopped, and the API then refuses the calls that would write to the filesystem. The freeze is not lifted afterwards, since an exported sandbox is meant to be restored elsewhere; call POST /archive/resume to lift it.
11
+ * A sandbox still frozen by an earlier export is exported as it is, with the process list that export saved.
11
12
  * Use dryRun to get the archive's content and exact size without stopping anything and without uploading.
12
13
  * Set async to start the export and answer immediately, which is what archiving a large filesystem needs: the export then reports itself through GET /archive/status.
13
14
  */
@@ -205,7 +206,7 @@ const postEnvironmentReload = (options) => {
205
206
  exports.postEnvironmentReload = postEnvironmentReload;
206
207
  /**
207
208
  * Search for text content in files
208
- * Searches for text content inside files using ripgrep. Returns matching lines with context.
209
+ * Searches for text content inside files. Returns each matching line, with the lines around it when contextLines is set.
209
210
  */
210
211
  const getFilesystemContentSearchByPath = (options) => {
211
212
  return (options.client ?? client_gen_1.client).get({
@@ -294,7 +295,7 @@ const postFilesystemMultipartByUploadIdComplete = (options) => {
294
295
  exports.postFilesystemMultipartByUploadIdComplete = postFilesystemMultipartByUploadIdComplete;
295
296
  /**
296
297
  * Upload part
297
- * Upload a single part of a multipart upload
298
+ * Upload a single part of a multipart upload. Re-uploading a part number replaces that part. Wait for the previous request for that part to finish before retrying.
298
299
  */
299
300
  const putFilesystemMultipartByUploadIdPart = (options) => {
300
301
  return (options.client ?? client_gen_1.client).put({
@@ -354,7 +355,8 @@ const postFilesystemMultipartInitiateByPath = (options) => {
354
355
  exports.postFilesystemMultipartInitiateByPath = postFilesystemMultipartInitiateByPath;
355
356
  /**
356
357
  * Fuzzy search for files and directories
357
- * Performs fuzzy search on filesystem paths using fuzzy matching algorithm. Optimized alternative to find and grep commands.
358
+ * Ranks the files and directories under a path by how well their relative path fuzzy-matches `query` (fzf algorithm: the query's characters must appear in order, not necessarily next to each other), best match first.
359
+ * Fuzzy search is for "jump to file" lookups from a partial name. The `patterns` parameter is currently ignored by this endpoint; use find for exact glob filtering.
358
360
  */
359
361
  const getFilesystemSearchByPath = (options) => {
360
362
  return (options.client ?? client_gen_1.client).get({
@@ -403,9 +405,30 @@ const getFilesystemByPath = (options) => {
403
405
  });
404
406
  };
405
407
  exports.getFilesystemByPath = getFilesystemByPath;
408
+ /**
409
+ * Stat a file or directory
410
+ * Returns the metadata of a file or directory as headers, with no body. This checks stat availability, not permission to read file contents or list a directory. When the path does not exist or its metadata cannot be accessed, the response is an empty 200 without the X-File-Type header.
411
+ */
412
+ const headFilesystemByPath = (options) => {
413
+ return (options.client ?? client_gen_1.client).head({
414
+ security: [
415
+ {
416
+ scheme: 'bearer',
417
+ type: 'http'
418
+ }
419
+ ],
420
+ url: '/filesystem/{path}',
421
+ ...options
422
+ });
423
+ };
424
+ exports.headFilesystemByPath = headFilesystemByPath;
406
425
  /**
407
426
  * Create or update a file or directory
408
- * Create or update a file or directory
427
+ * Create or update a file or directory.
428
+ *
429
+ * Idempotent: an existing file is overwritten (truncated, not appended to) and an existing directory is kept, so retrying the same request is safe.
430
+ *
431
+ * Send either a JSON body (FileRequest) or `multipart/form-data` for binary files. Multipart fields, in any order: `file` (required, the file content), `permissions` (optional octal mode such as `0755`, applied when the file is created, default `0644`; an existing file keeps its mode), `path` (optional, ignored: the target is always the URL path).
409
432
  */
410
433
  const putFilesystemByPath = (options) => {
411
434
  return (options.client ?? client_gen_1.client).put({
@@ -460,7 +483,7 @@ const getFilesystemTreeByPath = (options) => {
460
483
  exports.getFilesystemTreeByPath = getFilesystemTreeByPath;
461
484
  /**
462
485
  * Create or update directory tree
463
- * Create or update multiple files within a directory tree structure
486
+ * Create or update multiple files within a directory tree structure. Idempotent: existing files are overwritten, so retrying the same request is safe.
464
487
  */
465
488
  const putFilesystemTreeByPath = (options) => {
466
489
  return (options.client ?? client_gen_1.client).put({
@@ -609,7 +632,10 @@ const getProcess = (options) => {
609
632
  exports.getProcess = getProcess;
610
633
  /**
611
634
  * Execute a command
612
- * Execute a command and return process information. If Accept header is text/event-stream, streams logs in SSE format and returns the process response as a final event.
635
+ * Execute a command and return process information.
636
+ *
637
+ * Streaming: with `Accept: application/x-ndjson` (or `Accept: text/event-stream`, kept for compatibility) the response is NDJSON (`Content-Type: application/x-ndjson`), not SSE: one JSON object per line, `{"type": "...", "data": "..."}`.
638
+ * `type` is `stdout` or `stderr` (`data` is a raw output chunk, sent as soon as the process writes it, newlines included; if the process finished before any chunk was streamed, its output is sent instead as one event per line, without the newline), `keepalive` (every 5 seconds, no data), `error` (`data` is the message, ends the stream) or `result` (last event, `data` is the ProcessResponse as a JSON string).
613
639
  */
614
640
  const postProcess = (options) => {
615
641
  return (options.client ?? client_gen_1.client).post({
@@ -630,7 +656,7 @@ const postProcess = (options) => {
630
656
  exports.postProcess = postProcess;
631
657
  /**
632
658
  * Stop a process
633
- * Gracefully stop a running process
659
+ * Request graceful termination. Poll GET /process/{identifier} until terminal status confirms the managed process has exited.
634
660
  */
635
661
  const deleteProcessByIdentifier = (options) => {
636
662
  return (options.client ?? client_gen_1.client).delete({
@@ -664,7 +690,7 @@ const getProcessByIdentifier = (options) => {
664
690
  exports.getProcessByIdentifier = getProcessByIdentifier;
665
691
  /**
666
692
  * Kill a process
667
- * Forcefully kill a running process
693
+ * Request forceful termination. Poll GET /process/{identifier} until terminal status confirms the managed process has exited.
668
694
  */
669
695
  const deleteProcessByIdentifierKill = (options) => {
670
696
  return (options.client ?? client_gen_1.client).delete({
@@ -698,7 +724,11 @@ const getProcessByIdentifierLogs = (options) => {
698
724
  exports.getProcessByIdentifierLogs = getProcessByIdentifierLogs;
699
725
  /**
700
726
  * Stream process logs in real time
701
- * Streams the stdout and stderr output of a process in real time, one line per log, prefixed with 'stdout:' or 'stderr:'. Closes when the process exits or the client disconnects.
727
+ * Streams the stdout and stderr output of a process in real time: the output so far, then live output as the process writes it. Closes when the process exits or the client disconnects.
728
+ * By default, output is plain text with `stdout:` or `stderr:` prefixes at the start of each source stream's lines. Partial lines (e.g. prompts) are sent without waiting for a newline; their continuations have no new prefix. The other stream is not held back while a line is incomplete, and chronological order across stdout and stderr is not guaranteed.
729
+ * This format does not provide unambiguous framing: output from the other stream, or a `[keepalive]` marker sent every 30 seconds, can appear inside an unfinished line. A later continuation can therefore lack a prefix identifying its source. Do not rely on this text stream to reconstruct stdout and stderr separately; request NDJSON for source-preserving streaming, or use GET /process/{identifier}/logs for separate output snapshots.
730
+ * With `Accept: application/x-ndjson`, each line is a JSON object with `type` (`stdout`, `stderr`, `keepalive`, `restart`, `truncated`, or `error`) and optional `data`. Output records retain source identity and original bytes, including partial lines and newlines, for both retained history and live output. For `encoding: "base64"`, decode `data` before concatenating bytes per source; this occurs for binary data or a UTF-8 character split across chunks. Chunk boundaries are arbitrary and ordering is collection order, not a strict chronology across streams.
731
+ * `keepalive` has no output data. A quiet active stream sends an initial keepalive after attachment so clients can receive the response before sending stdin; subsequent keepalives are sent every 30 seconds. `restart` carries a supervisor restart notice, not process output. `truncated` reports a retention or slow-reader gap and must not be appended to stdout/stderr. `error` reports a streaming failure. The connection ends after the final process exit, including automatic restarts; there is no `result` record. Older processes without structured history return HTTP 409 for NDJSON; their text stream remains available.
702
732
  */
703
733
  const getProcessByIdentifierLogsStream = (options) => {
704
734
  return (options.client ?? client_gen_1.client).get({
@@ -778,7 +808,10 @@ const postUpgrade = (options) => {
778
808
  exports.postUpgrade = postUpgrade;
779
809
  /**
780
810
  * Stream file modification events in a directory
781
- * Streams the path of modified files (one per line) in the given directory. Closes when the client disconnects.
811
+ * Streams change events for a directory until the client disconnects.
812
+ *
813
+ * The body is JSON lines (sent with `Content-Type: text/plain`): one event object per line, e.g. `{"op":"WRITE","name":"main.go","path":"/app/src","error":null}`. `op` is the fsnotify operation (CREATE, WRITE, REMOVE, RENAME or CHMOD, several can be joined with `|`), `name` the base name of the changed entry, `path` the directory containing it, and `error` is always null. A `[keepalive]` line (not JSON) is sent every 30 seconds.
814
+ * Only the directory's direct entries are watched. To also watch every subdirectory, including ones created later, end the path with `**`. The stream reports subsequent changes without an initial snapshot. When a new directory is detected, synthetic CREATE events are emitted for entries already present inside it to cover changes before its watch was registered.
782
815
  */
783
816
  const getWatchFilesystemByPath = (options) => {
784
817
  return (options.client ?? client_gen_1.client).get({
@@ -266,7 +266,7 @@ class SandboxFileSystem extends action_js_1.SandboxAction {
266
266
  }
267
267
  async search(query, path = "/", options) {
268
268
  const formattedPath = this.formatPath(path);
269
- const queryParams = {};
269
+ const queryParams = { query };
270
270
  if (options?.maxResults !== undefined) {
271
271
  queryParams.maxResults = options.maxResults;
272
272
  }
@@ -262,7 +262,7 @@ export declare const listImages: <ThrowOnError extends boolean = false>(options?
262
262
  }, unknown, ThrowOnError>;
263
263
  /**
264
264
  * Build a container image
265
- * Builds a container image without creating a deployment. Returns a presigned URL for uploading source code. After upload, the image will be built and stored in the registry, but no agent, function, sandbox, or job will be created or updated.
265
+ * Builds or imports a container image without creating a deployment. Provide a registry image reference to download and convert an existing image, or omit image to receive a presigned URL for uploading source code. Registry imports can specify memoryMb and volumeMb for the import worker. These settings do not change the resources of workloads using the image.
266
266
  */
267
267
  export declare const createImage: <ThrowOnError extends boolean = false>(options: Options<CreateImageData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<{
268
268
  image?: string;
@@ -664,6 +664,7 @@ export declare const getWorkspaceServiceAccounts: <ThrowOnError extends boolean
664
664
  created_at?: string;
665
665
  description?: string;
666
666
  name?: string;
667
+ role?: string;
667
668
  updated_at?: string;
668
669
  }[], unknown, ThrowOnError>;
669
670
  /**
@@ -676,6 +677,7 @@ export declare const createWorkspaceServiceAccount: <ThrowOnError extends boolea
676
677
  created_at?: string;
677
678
  description?: string;
678
679
  name?: string;
680
+ role?: string;
679
681
  updated_at?: string;
680
682
  }, unknown, ThrowOnError>;
681
683
  /**
@@ -698,6 +700,7 @@ export declare const updateWorkspaceServiceAccount: <ThrowOnError extends boolea
698
700
  created_at?: string;
699
701
  description?: string;
700
702
  name?: string;
703
+ role?: string;
701
704
  updated_at?: string;
702
705
  }, unknown, ThrowOnError>;
703
706
  /**
@@ -752,7 +755,7 @@ export declare const listTemplates: <ThrowOnError extends boolean = false>(optio
752
755
  export declare const getTemplate: <ThrowOnError extends boolean = false>(options: Options<GetTemplateData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen.js").Template, unknown, ThrowOnError>;
753
756
  /**
754
757
  * List workspace team members
755
- * Returns all team members in the workspace including their roles (admin or member) and invitation status.
758
+ * Returns all team members in the workspace including their roles (admin, member or viewer) and invitation status.
756
759
  */
757
760
  export declare const listWorkspaceUsers: <ThrowOnError extends boolean = false>(options?: Options<ListWorkspaceUsersData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen.js").WorkspaceUser[], unknown, ThrowOnError>;
758
761
  /**
@@ -1041,7 +1041,7 @@ export type ExpirationPolicy = {
1041
1041
  */
1042
1042
  type?: 'ttl-idle' | 'ttl-max-age' | 'date';
1043
1043
  /**
1044
- * Duration value for TTL policies (e.g., '30m', '24h', '7d') or ISO 8601 date for date policies
1044
+ * Duration value for TTL policies (e.g., '30m', '24h', '7d', minimum '5m') or ISO 8601 date for date policies
1045
1045
  */
1046
1046
  value?: string;
1047
1047
  };
@@ -1223,9 +1223,9 @@ export type GroupWorkspaceMapping = {
1223
1223
  */
1224
1224
  groupName?: string;
1225
1225
  /**
1226
- * Role to assign in this workspace (admin or member)
1226
+ * Role to assign in this workspace (admin, member or viewer)
1227
1227
  */
1228
- role?: 'admin' | 'member';
1228
+ role?: 'admin' | 'member' | 'viewer';
1229
1229
  };
1230
1230
  export type Image = {
1231
1231
  metadata: ImageMetadata;
@@ -1715,10 +1715,18 @@ export type JobExecutionSpec = {
1715
1715
  * Number of parallel tasks
1716
1716
  */
1717
1717
  parallelism?: number;
1718
+ /**
1719
+ * Number of tasks of this execution
1720
+ */
1721
+ taskCount?: number;
1718
1722
  /**
1719
1723
  * List of execution tasks
1720
1724
  */
1721
1725
  tasks?: Array<JobExecutionTask>;
1726
+ /**
1727
+ * Where this execution's task list is stored (server-managed)
1728
+ */
1729
+ readonly tasksRef?: string;
1722
1730
  /**
1723
1731
  * Job timeout in seconds (captured at execution creation time)
1724
1732
  */
@@ -1742,6 +1750,10 @@ export type JobExecutionSpecWritable = {
1742
1750
  * Number of parallel tasks
1743
1751
  */
1744
1752
  parallelism?: number;
1753
+ /**
1754
+ * Number of tasks of this execution
1755
+ */
1756
+ taskCount?: number;
1745
1757
  /**
1746
1758
  * List of execution tasks
1747
1759
  */
@@ -3666,6 +3678,14 @@ export type SandboxDefinition = {
3666
3678
  * Icon of the definition
3667
3679
  */
3668
3680
  icon?: string;
3681
+ /**
3682
+ * Nonempty dark-mode icon URL in responses. Blank inputs use the resolved light-mode icon.
3683
+ */
3684
+ iconDark?: string;
3685
+ /**
3686
+ * Nonempty light-mode icon URL in responses. Blank inputs use icon, iconDark, then the default Hub icon.
3687
+ */
3688
+ iconLight?: string;
3669
3689
  /**
3670
3690
  * Image of the Sandbox definition
3671
3691
  */
@@ -3743,6 +3763,7 @@ export type SandboxForkRequest = {
3743
3763
  * Environment variables the fork runs with, on top of the ones the source has. A variable the source already carries takes this value in the fork, one it does not is added, and every other variable of the source is kept.
3744
3764
  */
3745
3765
  envs?: Array<Env>;
3766
+ lifecycle?: SandboxLifecycle;
3746
3767
  /**
3747
3768
  * Port to expose from the sandbox
3748
3769
  */
@@ -3889,7 +3910,7 @@ export type SandboxRuntime = {
3889
3910
  */
3890
3911
  expires?: string;
3891
3912
  /**
3892
- * Extra arguments for kernel selection. Supported keys: 'iptables', 'nfs' (mk3.0), 'tun' and 'android' (mk3.1). The android variant includes tun and iptables and cannot be combined with nfs. Android requests are rejected if routing selects mk3.0. Values: 'enabled' or 'disabled'. Determines which kernel variant the workload runs on. Immutable after creation.
3913
+ * Extra arguments for kernel selection. Supported keys: 'iptables', 'nfs' (mk3.0), 'tun', 'android' and 'landlock' (mk3.1). The android variant includes tun and iptables and cannot be combined with nfs. The landlock variant enables the Landlock LSM, includes tun and iptables, and cannot be combined with android or nfs. Android and landlock requests are rejected if routing selects mk3.0. Values: 'enabled' or 'disabled'. Determines which kernel variant the workload runs on. Immutable after creation.
3893
3914
  */
3894
3915
  extraArgs?: {
3895
3916
  [key: string]: string;
@@ -3908,7 +3929,7 @@ export type SandboxRuntime = {
3908
3929
  */
3909
3930
  terminationGracePeriodSeconds?: number;
3910
3931
  /**
3911
- * Max-age from creation: the sandbox is deleted this long after it is created, regardless of activity (not an idle timeout). Units s, m, h, d, w (e.g., '30m', '24h', '7d', '2w'). For idle-based cleanup, use a lifecycle expiration policy of type ttl-idle.
3932
+ * Max-age from creation: the sandbox is deleted this long after it is created, regardless of activity (not an idle timeout). Units s, m, h, d, w (e.g., '30m', '24h', '7d', '2w'), minimum '5m'. For idle-based cleanup, use a lifecycle expiration policy of type ttl-idle.
3912
3933
  */
3913
3934
  ttl?: string;
3914
3935
  };
@@ -4501,6 +4522,10 @@ export type TriggerConfiguration = {
4501
4522
  * The tasks configuration of the cronjob
4502
4523
  */
4503
4524
  tasks?: Array<TriggerConfigurationTask>;
4525
+ /**
4526
+ * Where this trigger's task list is stored (server-managed)
4527
+ */
4528
+ readonly tasksRef?: string;
4504
4529
  /**
4505
4530
  * The timeout in seconds for async triggers (max 900s, MK3 only)
4506
4531
  */
@@ -4813,6 +4838,10 @@ export type Workspace = TimeFields & OwnerFields & {
4813
4838
  * Workspace account id
4814
4839
  */
4815
4840
  accountId?: string;
4841
+ /**
4842
+ * Baseten team this workspace was provisioned for; absent on native workspaces
4843
+ */
4844
+ readonly basetenTeamId?: string;
4816
4845
  /**
4817
4846
  * Workspace display name
4818
4847
  */
@@ -4993,6 +5022,10 @@ export type WorkspaceUser = {
4993
5022
  * Workspace user given name
4994
5023
  */
4995
5024
  given_name?: string;
5025
+ /**
5026
+ * Whether the user has at least one verified MFA factor. Omitted when the caller is not entitled to see it (only workspace admins and owners see other members' MFA status) and for pending invitations, which have no account yet.
5027
+ */
5028
+ mfa_enabled?: boolean;
4996
5029
  /**
4997
5030
  * Workspace user role
4998
5031
  */
@@ -6353,14 +6386,22 @@ export type ListImagesResponses = {
6353
6386
  export type ListImagesResponse = ListImagesResponses[keyof ListImagesResponses];
6354
6387
  export type CreateImageData = {
6355
6388
  body: {
6389
+ /**
6390
+ * Docker configuration JSON containing credentials for the source registry.
6391
+ */
6392
+ dockerConfig?: string;
6356
6393
  /**
6357
6394
  * Runtime generation (e.g., mk3). Defaults to mk3 if not specified.
6358
6395
  */
6359
6396
  generation?: string;
6360
6397
  /**
6361
- * A pre-built Docker image reference (e.g., docker.io/myorg/myimage:latest). When provided, the build step is skipped and the image is used directly as the source for the resource runtime.
6398
+ * A pre-built Docker image reference (e.g., docker.io/myorg/myimage:latest). References with a registry hostname start an asynchronous import that downloads and converts the image for the resource runtime.
6362
6399
  */
6363
6400
  image?: string;
6401
+ /**
6402
+ * Memory for the registry import worker in MiB. Only supported when image is a registry reference. When omitted, the platform default is used.
6403
+ */
6404
+ memoryMb?: number;
6364
6405
  /**
6365
6406
  * Name of the image to build
6366
6407
  */
@@ -6369,6 +6410,14 @@ export type CreateImageData = {
6369
6410
  * Resource type (agent, function, sandbox, job)
6370
6411
  */
6371
6412
  resourceType: string;
6413
+ /**
6414
+ * Tag for the imported image. Only supported when image is a registry reference. When omitted, a tag is derived from the build inputs. Tags are immutable, so a tag that already exists is rejected. latest, pending and failed are reserved.
6415
+ */
6416
+ tag?: string;
6417
+ /**
6418
+ * Temporary scratch disk for the registry import worker in MiB. Only supported when image is a registry reference. When omitted, the platform default is used. Set to 0 to use memory-backed scratch. Positive values are not supported for HIPAA workspaces.
6419
+ */
6420
+ volumeMb?: number;
6372
6421
  };
6373
6422
  path?: never;
6374
6423
  query?: never;
@@ -6379,6 +6428,10 @@ export type CreateImageErrors = {
6379
6428
  * invalid request
6380
6429
  */
6381
6430
  400: unknown;
6431
+ /**
6432
+ * the requested tag already exists
6433
+ */
6434
+ 409: unknown;
6382
6435
  };
6383
6436
  export type CreateImageResponses = {
6384
6437
  /**
@@ -7804,7 +7857,7 @@ export type CreateSandboxData = {
7804
7857
  path?: never;
7805
7858
  query?: {
7806
7859
  /**
7807
- * If true, return existing sandbox instead of 409 error when sandbox exists and is not in FAILED/TERMINATED/TERMINATING state
7860
+ * If true, return the existing sandbox instead of a 409 when one with this name is alive. A name held by a FAILED or TERMINATED sandbox is reused, and a deletion or a concurrent creation still in flight is waited for (with backoff) so the response is the sandbox, not a conflict to retry.
7808
7861
  */
7809
7862
  createIfNotExist?: boolean;
7810
7863
  };
@@ -8713,6 +8766,10 @@ export type GetWorkspaceServiceAccountsResponses = {
8713
8766
  * Service account name
8714
8767
  */
8715
8768
  name?: string;
8769
+ /**
8770
+ * Role of the service account in the workspace
8771
+ */
8772
+ role?: string;
8716
8773
  /**
8717
8774
  * Last update timestamp
8718
8775
  */
@@ -8730,6 +8787,10 @@ export type CreateWorkspaceServiceAccountData = {
8730
8787
  * Service account name
8731
8788
  */
8732
8789
  name: string;
8790
+ /**
8791
+ * Role of the service account in the workspace. Defaults to admin on creation; unchanged on update when omitted.
8792
+ */
8793
+ role?: 'viewer' | 'member' | 'admin';
8733
8794
  };
8734
8795
  path?: never;
8735
8796
  query?: never;
@@ -8760,6 +8821,10 @@ export type CreateWorkspaceServiceAccountResponses = {
8760
8821
  * Service account name
8761
8822
  */
8762
8823
  name?: string;
8824
+ /**
8825
+ * Role of the service account in the workspace
8826
+ */
8827
+ role?: string;
8763
8828
  /**
8764
8829
  * Last update timestamp
8765
8830
  */
@@ -8816,6 +8881,10 @@ export type UpdateWorkspaceServiceAccountData = {
8816
8881
  * Service account name
8817
8882
  */
8818
8883
  name?: string;
8884
+ /**
8885
+ * Role of the service account in the workspace. Defaults to admin on creation; unchanged on update when omitted.
8886
+ */
8887
+ role?: 'viewer' | 'member' | 'admin';
8819
8888
  };
8820
8889
  path: {
8821
8890
  /**
@@ -8847,6 +8916,10 @@ export type UpdateWorkspaceServiceAccountResponses = {
8847
8916
  * Service account name
8848
8917
  */
8849
8918
  name?: string;
8919
+ /**
8920
+ * Role of the service account in the workspace
8921
+ */
8922
+ role?: string;
8850
8923
  /**
8851
8924
  * Last update timestamp
8852
8925
  */
@@ -1,5 +1,5 @@
1
1
  import { type Options as ClientOptions, type TDataShape, type Client } from '@hey-api/client-fetch';
2
- import type { PostArchiveExportData, PostArchiveExportResponse, PostArchiveResumeData, GetArchiveStatusData, PutCodegenFastapplyByPathData, GetCodegenRerankingByPathData, GetDrivesMountData, PostDrivesMountData, DeleteDrivesMountByMountPathData, PostEnvironmentReloadData, GetFilesystemContentSearchByPathData, GetFilesystemFindByPathData, GetFilesystemMultipartData, DeleteFilesystemMultipartByUploadIdAbortData, PostFilesystemMultipartByUploadIdCompleteData, PutFilesystemMultipartByUploadIdPartData, GetFilesystemMultipartByUploadIdPartsData, PostFilesystemMultipartInitiateByPathData, GetFilesystemSearchByPathData, DeleteFilesystemByPathData, GetFilesystemByPathData, PutFilesystemByPathData, DeleteFilesystemTreeByPathData, GetFilesystemTreeByPathData, PutFilesystemTreeByPathData, GetHealthData, DeleteNetworkProcessByPidMonitorData, PostNetworkProcessByPidMonitorData, GetNetworkProcessByPidPortsData, DeleteNetworkTunnelData, PutNetworkTunnelConfigData, GetProcessData, PostProcessData, DeleteProcessByIdentifierData, GetProcessByIdentifierData, DeleteProcessByIdentifierKillData, GetProcessByIdentifierLogsData, GetProcessByIdentifierLogsStreamData, DeleteProcessByIdentifierStdinData, PostProcessByIdentifierStdinData, PostUpgradeData, GetWatchFilesystemByPathData } from './types.gen';
2
+ import type { PostArchiveExportData, PostArchiveExportResponse, PostArchiveResumeData, GetArchiveStatusData, PutCodegenFastapplyByPathData, GetCodegenRerankingByPathData, GetDrivesMountData, PostDrivesMountData, DeleteDrivesMountByMountPathData, PostEnvironmentReloadData, GetFilesystemContentSearchByPathData, GetFilesystemFindByPathData, GetFilesystemMultipartData, DeleteFilesystemMultipartByUploadIdAbortData, PostFilesystemMultipartByUploadIdCompleteData, PutFilesystemMultipartByUploadIdPartData, GetFilesystemMultipartByUploadIdPartsData, PostFilesystemMultipartInitiateByPathData, GetFilesystemSearchByPathData, DeleteFilesystemByPathData, GetFilesystemByPathData, HeadFilesystemByPathData, PutFilesystemByPathData, DeleteFilesystemTreeByPathData, GetFilesystemTreeByPathData, PutFilesystemTreeByPathData, GetHealthData, DeleteNetworkProcessByPidMonitorData, PostNetworkProcessByPidMonitorData, GetNetworkProcessByPidPortsData, DeleteNetworkTunnelData, PutNetworkTunnelConfigData, GetProcessData, PostProcessData, DeleteProcessByIdentifierData, GetProcessByIdentifierData, DeleteProcessByIdentifierKillData, GetProcessByIdentifierLogsData, GetProcessByIdentifierLogsStreamData, DeleteProcessByIdentifierStdinData, PostProcessByIdentifierStdinData, PostUpgradeData, GetWatchFilesystemByPathData } from './types.gen';
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = ClientOptions<TData, ThrowOnError> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -17,6 +17,7 @@ export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends
17
17
  * Export the filesystem changes to a presigned URL
18
18
  * Archives everything the sandbox changed on top of its base image and streams it, uncompressed, to a presigned S3 PUT URL. The memory of the sandbox is not archived.
19
19
  * The sandbox is quiesced first: the process list is saved (unless saveProcesses is false), every process is stopped, and the API then refuses the calls that would write to the filesystem. The freeze is not lifted afterwards, since an exported sandbox is meant to be restored elsewhere; call POST /archive/resume to lift it.
20
+ * A sandbox still frozen by an earlier export is exported as it is, with the process list that export saved.
20
21
  * Use dryRun to get the archive's content and exact size without stopping anything and without uploading.
21
22
  * Set async to start the export and answer immediately, which is what archiving a large filesystem needs: the export then reports itself through GET /archive/status.
22
23
  */
@@ -94,7 +95,7 @@ export declare const deleteDrivesMountByMountPath: <ThrowOnError extends boolean
94
95
  export declare const postEnvironmentReload: <ThrowOnError extends boolean = false>(options?: Options<PostEnvironmentReloadData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").HandlerReloadResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
95
96
  /**
96
97
  * Search for text content in files
97
- * Searches for text content inside files using ripgrep. Returns matching lines with context.
98
+ * Searches for text content inside files. Returns each matching line, with the lines around it when contextLines is set.
98
99
  */
99
100
  export declare const getFilesystemContentSearchByPath: <ThrowOnError extends boolean = false>(options: Options<GetFilesystemContentSearchByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").ContentSearchResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
100
101
  /**
@@ -119,7 +120,7 @@ export declare const deleteFilesystemMultipartByUploadIdAbort: <ThrowOnError ext
119
120
  export declare const postFilesystemMultipartByUploadIdComplete: <ThrowOnError extends boolean = false>(options: Options<PostFilesystemMultipartByUploadIdCompleteData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").SuccessResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
120
121
  /**
121
122
  * Upload part
122
- * Upload a single part of a multipart upload
123
+ * Upload a single part of a multipart upload. Re-uploading a part number replaces that part. Wait for the previous request for that part to finish before retrying.
123
124
  */
124
125
  export declare const putFilesystemMultipartByUploadIdPart: <ThrowOnError extends boolean = false>(options: Options<PutFilesystemMultipartByUploadIdPartData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").MultipartUploadPartResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
125
126
  /**
@@ -134,7 +135,8 @@ export declare const getFilesystemMultipartByUploadIdParts: <ThrowOnError extend
134
135
  export declare const postFilesystemMultipartInitiateByPath: <ThrowOnError extends boolean = false>(options: Options<PostFilesystemMultipartInitiateByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").MultipartInitiateResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
135
136
  /**
136
137
  * Fuzzy search for files and directories
137
- * Performs fuzzy search on filesystem paths using fuzzy matching algorithm. Optimized alternative to find and grep commands.
138
+ * Ranks the files and directories under a path by how well their relative path fuzzy-matches `query` (fzf algorithm: the query's characters must appear in order, not necessarily next to each other), best match first.
139
+ * Fuzzy search is for "jump to file" lookups from a partial name. The `patterns` parameter is currently ignored by this endpoint; use find for exact glob filtering.
138
140
  */
139
141
  export declare const getFilesystemSearchByPath: <ThrowOnError extends boolean = false>(options: Options<GetFilesystemSearchByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").FuzzySearchResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
140
142
  /**
@@ -147,9 +149,18 @@ export declare const deleteFilesystemByPath: <ThrowOnError extends boolean = fal
147
149
  * Get content of a file or listing of a directory. Use Accept header to control response format for files.
148
150
  */
149
151
  export declare const getFilesystemByPath: <ThrowOnError extends boolean = false>(options: Options<GetFilesystemByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").File | import("./types.gen").Directory | import("./types.gen").FileWithContent | Blob, import("./types.gen").ErrorResponse, ThrowOnError>;
152
+ /**
153
+ * Stat a file or directory
154
+ * Returns the metadata of a file or directory as headers, with no body. This checks stat availability, not permission to read file contents or list a directory. When the path does not exist or its metadata cannot be accessed, the response is an empty 200 without the X-File-Type header.
155
+ */
156
+ export declare const headFilesystemByPath: <ThrowOnError extends boolean = false>(options: Options<HeadFilesystemByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<unknown, unknown, ThrowOnError>;
150
157
  /**
151
158
  * Create or update a file or directory
152
- * Create or update a file or directory
159
+ * Create or update a file or directory.
160
+ *
161
+ * Idempotent: an existing file is overwritten (truncated, not appended to) and an existing directory is kept, so retrying the same request is safe.
162
+ *
163
+ * Send either a JSON body (FileRequest) or `multipart/form-data` for binary files. Multipart fields, in any order: `file` (required, the file content), `permissions` (optional octal mode such as `0755`, applied when the file is created, default `0644`; an existing file keeps its mode), `path` (optional, ignored: the target is always the URL path).
153
164
  */
154
165
  export declare const putFilesystemByPath: <ThrowOnError extends boolean = false>(options: Options<PutFilesystemByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").SuccessResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
155
166
  /**
@@ -161,12 +172,12 @@ export declare const deleteFilesystemTreeByPath: <ThrowOnError extends boolean =
161
172
  * Get directory tree
162
173
  * Get a recursive directory tree structure starting from the specified path
163
174
  */
164
- export declare const getFilesystemTreeByPath: <ThrowOnError extends boolean = false>(options: Options<GetFilesystemTreeByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").File | import("./types.gen").Directory | import("./types.gen").FileWithContent | Blob, import("./types.gen").ErrorResponse, ThrowOnError>;
175
+ export declare const getFilesystemTreeByPath: <ThrowOnError extends boolean = false>(options: Options<GetFilesystemTreeByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").Directory, import("./types.gen").ErrorResponse, ThrowOnError>;
165
176
  /**
166
177
  * Create or update directory tree
167
- * Create or update multiple files within a directory tree structure
178
+ * Create or update multiple files within a directory tree structure. Idempotent: existing files are overwritten, so retrying the same request is safe.
168
179
  */
169
- export declare const putFilesystemTreeByPath: <ThrowOnError extends boolean = false>(options: Options<PutFilesystemTreeByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").File | import("./types.gen").Directory | import("./types.gen").FileWithContent | Blob, import("./types.gen").ErrorResponse, ThrowOnError>;
180
+ export declare const putFilesystemTreeByPath: <ThrowOnError extends boolean = false>(options: Options<PutFilesystemTreeByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").Directory, import("./types.gen").ErrorResponse, ThrowOnError>;
170
181
  /**
171
182
  * Health check
172
183
  * Returns health status and system information including upgrade count and binary details
@@ -211,12 +222,15 @@ export declare const putNetworkTunnelConfig: <ThrowOnError extends boolean = fal
211
222
  export declare const getProcess: <ThrowOnError extends boolean = false>(options?: Options<GetProcessData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").ProcessResponse[], unknown, ThrowOnError>;
212
223
  /**
213
224
  * Execute a command
214
- * Execute a command and return process information. If Accept header is text/event-stream, streams logs in SSE format and returns the process response as a final event.
225
+ * Execute a command and return process information.
226
+ *
227
+ * Streaming: with `Accept: application/x-ndjson` (or `Accept: text/event-stream`, kept for compatibility) the response is NDJSON (`Content-Type: application/x-ndjson`), not SSE: one JSON object per line, `{"type": "...", "data": "..."}`.
228
+ * `type` is `stdout` or `stderr` (`data` is a raw output chunk, sent as soon as the process writes it, newlines included; if the process finished before any chunk was streamed, its output is sent instead as one event per line, without the newline), `keepalive` (every 5 seconds, no data), `error` (`data` is the message, ends the stream) or `result` (last event, `data` is the ProcessResponse as a JSON string).
215
229
  */
216
230
  export declare const postProcess: <ThrowOnError extends boolean = false>(options: Options<PostProcessData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").ProcessResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
217
231
  /**
218
232
  * Stop a process
219
- * Gracefully stop a running process
233
+ * Request graceful termination. Poll GET /process/{identifier} until terminal status confirms the managed process has exited.
220
234
  */
221
235
  export declare const deleteProcessByIdentifier: <ThrowOnError extends boolean = false>(options: Options<DeleteProcessByIdentifierData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").SuccessResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
222
236
  /**
@@ -226,7 +240,7 @@ export declare const deleteProcessByIdentifier: <ThrowOnError extends boolean =
226
240
  export declare const getProcessByIdentifier: <ThrowOnError extends boolean = false>(options: Options<GetProcessByIdentifierData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").ProcessResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
227
241
  /**
228
242
  * Kill a process
229
- * Forcefully kill a running process
243
+ * Request forceful termination. Poll GET /process/{identifier} until terminal status confirms the managed process has exited.
230
244
  */
231
245
  export declare const deleteProcessByIdentifierKill: <ThrowOnError extends boolean = false>(options: Options<DeleteProcessByIdentifierKillData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").SuccessResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
232
246
  /**
@@ -236,7 +250,11 @@ export declare const deleteProcessByIdentifierKill: <ThrowOnError extends boolea
236
250
  export declare const getProcessByIdentifierLogs: <ThrowOnError extends boolean = false>(options: Options<GetProcessByIdentifierLogsData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").ProcessLogs, import("./types.gen").ErrorResponse, ThrowOnError>;
237
251
  /**
238
252
  * Stream process logs in real time
239
- * Streams the stdout and stderr output of a process in real time, one line per log, prefixed with 'stdout:' or 'stderr:'. Closes when the process exits or the client disconnects.
253
+ * Streams the stdout and stderr output of a process in real time: the output so far, then live output as the process writes it. Closes when the process exits or the client disconnects.
254
+ * By default, output is plain text with `stdout:` or `stderr:` prefixes at the start of each source stream's lines. Partial lines (e.g. prompts) are sent without waiting for a newline; their continuations have no new prefix. The other stream is not held back while a line is incomplete, and chronological order across stdout and stderr is not guaranteed.
255
+ * This format does not provide unambiguous framing: output from the other stream, or a `[keepalive]` marker sent every 30 seconds, can appear inside an unfinished line. A later continuation can therefore lack a prefix identifying its source. Do not rely on this text stream to reconstruct stdout and stderr separately; request NDJSON for source-preserving streaming, or use GET /process/{identifier}/logs for separate output snapshots.
256
+ * With `Accept: application/x-ndjson`, each line is a JSON object with `type` (`stdout`, `stderr`, `keepalive`, `restart`, `truncated`, or `error`) and optional `data`. Output records retain source identity and original bytes, including partial lines and newlines, for both retained history and live output. For `encoding: "base64"`, decode `data` before concatenating bytes per source; this occurs for binary data or a UTF-8 character split across chunks. Chunk boundaries are arbitrary and ordering is collection order, not a strict chronology across streams.
257
+ * `keepalive` has no output data. A quiet active stream sends an initial keepalive after attachment so clients can receive the response before sending stdin; subsequent keepalives are sent every 30 seconds. `restart` carries a supervisor restart notice, not process output. `truncated` reports a retention or slow-reader gap and must not be appended to stdout/stderr. `error` reports a streaming failure. The connection ends after the final process exit, including automatic restarts; there is no `result` record. Older processes without structured history return HTTP 409 for NDJSON; their text stream remains available.
240
258
  */
241
259
  export declare const getProcessByIdentifierLogsStream: <ThrowOnError extends boolean = false>(options: Options<GetProcessByIdentifierLogsStreamData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<string, import("./types.gen").ErrorResponse, ThrowOnError>;
242
260
  /**
@@ -260,6 +278,9 @@ export declare const postProcessByIdentifierStdin: <ThrowOnError extends boolean
260
278
  export declare const postUpgrade: <ThrowOnError extends boolean = false>(options?: Options<PostUpgradeData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").SuccessResponse, import("./types.gen").ErrorResponse, ThrowOnError>;
261
279
  /**
262
280
  * Stream file modification events in a directory
263
- * Streams the path of modified files (one per line) in the given directory. Closes when the client disconnects.
281
+ * Streams change events for a directory until the client disconnects.
282
+ *
283
+ * The body is JSON lines (sent with `Content-Type: text/plain`): one event object per line, e.g. `{"op":"WRITE","name":"main.go","path":"/app/src","error":null}`. `op` is the fsnotify operation (CREATE, WRITE, REMOVE, RENAME or CHMOD, several can be joined with `|`), `name` the base name of the changed entry, `path` the directory containing it, and `error` is always null. A `[keepalive]` line (not JSON) is sent every 30 seconds.
284
+ * Only the directory's direct entries are watched. To also watch every subdirectory, including ones created later, end the path with `**`. The stream reports subsequent changes without an initial snapshot. When a new directory is detected, synthetic CREATE events are emitted for entries already present inside it to cover changes before its watch was registered.
264
285
  */
265
286
  export declare const getWatchFilesystemByPath: <ThrowOnError extends boolean = false>(options: Options<GetWatchFilesystemByPathData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<string, import("./types.gen").ErrorResponse, ThrowOnError>;