@evolvingmachines/evolve 0.0.65 → 0.0.66

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 (152) hide show
  1. package/dist/{chunk-DK2MGUPB.js → chunk-RFLMRPGK.js} +5 -5
  2. package/dist/cli/index.cjs +39 -39
  3. package/dist/cli/index.d.cts +3 -3
  4. package/dist/cli/index.d.ts +3 -3
  5. package/dist/cli/index.js +30 -30
  6. package/dist/index.cjs +1 -1
  7. package/dist/index.d.cts +4 -4
  8. package/dist/index.d.ts +4 -4
  9. package/dist/index.js +1 -1
  10. package/dist/{types-B_qmzlMk.d.cts → types-84M4J_Vm.d.cts} +11 -44
  11. package/dist/{types-B_qmzlMk.d.ts → types-84M4J_Vm.d.ts} +11 -44
  12. package/package.json +4 -4
  13. package/skills/create-adapter/SKILL.md +71 -26
  14. package/skills/create-task/SKILL.md +124 -66
  15. package/skills/evolve/SKILL.md +37 -20
  16. package/skills/evolve-evals/SKILL.md +142 -69
  17. package/skills/evolve-evals/references/cli-reference/agent.md +76 -0
  18. package/skills/evolve-evals/references/cli-reference/analysis.md +78 -0
  19. package/skills/evolve-evals/references/cli-reference/analyze.md +95 -0
  20. package/skills/evolve-evals/references/cli-reference/auth.md +96 -0
  21. package/skills/evolve-evals/references/cli-reference/check.md +156 -0
  22. package/skills/evolve-evals/references/cli-reference/dataset.md +154 -0
  23. package/skills/evolve-evals/references/cli-reference/filesystem.md +168 -0
  24. package/skills/evolve-evals/references/cli-reference/index.md +149 -0
  25. package/skills/evolve-evals/references/cli-reference/job.md +198 -0
  26. package/skills/evolve-evals/references/cli-reference/run.md +187 -0
  27. package/skills/evolve-evals/references/cli-reference/secrets.md +77 -0
  28. package/skills/evolve-evals/references/cli-reference/session.md +56 -0
  29. package/skills/evolve-evals/references/cli-reference/skill.md +52 -0
  30. package/skills/evolve-evals/references/cli-reference/skills.md +85 -0
  31. package/skills/evolve-evals/references/cli-reference/trial.md +115 -0
  32. package/skills/evolve-evals/references/cli-reference/upload.md +72 -0
  33. package/skills/evolve-evals/references/core-concepts/agents.md +96 -0
  34. package/skills/evolve-evals/references/core-concepts/analyze.md +143 -0
  35. package/skills/evolve-evals/references/core-concepts/check.md +116 -0
  36. package/skills/evolve-evals/references/core-concepts/compatibility.md +39 -0
  37. package/skills/evolve-evals/references/core-concepts/compose.md +103 -0
  38. package/skills/evolve-evals/references/core-concepts/datasets.md +234 -0
  39. package/skills/evolve-evals/references/core-concepts/index.md +52 -0
  40. package/skills/evolve-evals/references/core-concepts/jobs.md +223 -0
  41. package/skills/evolve-evals/references/core-concepts/models.md +73 -0
  42. package/skills/evolve-evals/references/core-concepts/multi-step.md +93 -0
  43. package/skills/evolve-evals/references/core-concepts/rewardkit.md +341 -0
  44. package/skills/evolve-evals/references/core-concepts/sandboxes.md +73 -0
  45. package/skills/evolve-evals/references/core-concepts/secrets.md +86 -0
  46. package/skills/evolve-evals/references/core-concepts/sharing.md +81 -0
  47. package/skills/evolve-evals/references/core-concepts/skills.md +100 -0
  48. package/skills/evolve-evals/references/core-concepts/task-config.md +169 -0
  49. package/skills/evolve-evals/references/core-concepts/task-environment.md +127 -0
  50. package/skills/evolve-evals/references/core-concepts/task-reference.md +191 -0
  51. package/skills/evolve-evals/references/core-concepts/task-verifiers.md +209 -0
  52. package/skills/evolve-evals/references/core-concepts/tasks.md +90 -0
  53. package/skills/evolve-evals/references/core-concepts/teams.md +128 -0
  54. package/skills/evolve-evals/references/core-concepts/trial-outputs.md +225 -0
  55. package/skills/evolve-evals/references/core-concepts/trials.md +129 -0
  56. package/skills/evolve-evals/references/core-concepts/upload-sdk-session.md +240 -0
  57. package/skills/evolve-evals/references/core-concepts/upload.md +166 -0
  58. package/skills/evolve-evals/references/dashboard/checks.md +54 -0
  59. package/skills/evolve-evals/references/dashboard/datasets.md +65 -0
  60. package/skills/evolve-evals/references/dashboard/jobs.md +106 -0
  61. package/skills/evolve-evals/references/dashboard/traces.md +54 -0
  62. package/skills/evolve-evals/references/dashboard/trial-viewer.md +77 -0
  63. package/skills/evolve-evals/references/getting-started/first-task.md +228 -0
  64. package/skills/evolve-evals/references/getting-started/installation.md +79 -0
  65. package/skills/evolve-evals/references/getting-started/quick-start.md +100 -0
  66. package/skills/evolve-evals/references/index.md +58 -0
  67. package/skills/evolve-evals/references/sdk/http.md +110 -0
  68. package/skills/evolve-evals/references/sdk/python.md +108 -0
  69. package/skills/evolve-evals/references/sdk/typescript.md +104 -0
  70. package/skills/evolve-evals/references/sdk-reference/agents.md +75 -0
  71. package/skills/evolve-evals/references/sdk-reference/analyses.md +124 -0
  72. package/skills/evolve-evals/references/sdk-reference/auth.md +171 -0
  73. package/skills/evolve-evals/references/sdk-reference/checks.md +145 -0
  74. package/skills/evolve-evals/references/sdk-reference/datasets.md +170 -0
  75. package/skills/evolve-evals/references/sdk-reference/error-codes.md +231 -0
  76. package/skills/evolve-evals/references/sdk-reference/errors.md +98 -0
  77. package/skills/evolve-evals/references/sdk-reference/filesystem.md +166 -0
  78. package/skills/evolve-evals/references/sdk-reference/index.md +161 -0
  79. package/skills/evolve-evals/references/sdk-reference/jobs.md +250 -0
  80. package/skills/evolve-evals/references/sdk-reference/meta.md +54 -0
  81. package/skills/evolve-evals/references/sdk-reference/methods/agents.md +154 -0
  82. package/skills/evolve-evals/references/sdk-reference/methods/analyses.md +211 -0
  83. package/skills/evolve-evals/references/sdk-reference/methods/auth.md +257 -0
  84. package/skills/evolve-evals/references/sdk-reference/methods/checks.md +460 -0
  85. package/skills/evolve-evals/references/sdk-reference/methods/datasets.md +687 -0
  86. package/skills/evolve-evals/references/sdk-reference/methods/filesystem.md +527 -0
  87. package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +1021 -0
  88. package/skills/evolve-evals/references/sdk-reference/methods/meta.md +209 -0
  89. package/skills/evolve-evals/references/sdk-reference/methods/secrets.md +157 -0
  90. package/skills/evolve-evals/references/sdk-reference/methods/skills.md +125 -0
  91. package/skills/evolve-evals/references/sdk-reference/methods/trials.md +371 -0
  92. package/skills/evolve-evals/references/sdk-reference/secrets.md +104 -0
  93. package/skills/evolve-evals/references/sdk-reference/skills.md +66 -0
  94. package/skills/evolve-evals/references/sdk-reference/trials.md +164 -0
  95. package/skills/evolve-evals/references/sdk-reference/types.md +1249 -0
  96. package/skills/publish/SKILL.md +103 -79
  97. package/skills/rewardkit/SKILL.md +78 -23
  98. package/spec/openapi.yaml +19 -74
  99. package/skills/evolve-evals/references/cli-reference/agent.mdx +0 -79
  100. package/skills/evolve-evals/references/cli-reference/analysis.mdx +0 -160
  101. package/skills/evolve-evals/references/cli-reference/analyze.mdx +0 -84
  102. package/skills/evolve-evals/references/cli-reference/auth.mdx +0 -133
  103. package/skills/evolve-evals/references/cli-reference/check.mdx +0 -263
  104. package/skills/evolve-evals/references/cli-reference/dataset.mdx +0 -151
  105. package/skills/evolve-evals/references/cli-reference/index.mdx +0 -108
  106. package/skills/evolve-evals/references/cli-reference/job.mdx +0 -278
  107. package/skills/evolve-evals/references/cli-reference/run.mdx +0 -204
  108. package/skills/evolve-evals/references/cli-reference/secrets.mdx +0 -95
  109. package/skills/evolve-evals/references/cli-reference/skill.mdx +0 -61
  110. package/skills/evolve-evals/references/cli-reference/skills.mdx +0 -81
  111. package/skills/evolve-evals/references/cli-reference/trial.mdx +0 -181
  112. package/skills/evolve-evals/references/cli-reference/upload.mdx +0 -36
  113. package/skills/evolve-evals/references/core-concepts/agents.mdx +0 -106
  114. package/skills/evolve-evals/references/core-concepts/analyze.mdx +0 -86
  115. package/skills/evolve-evals/references/core-concepts/check.mdx +0 -64
  116. package/skills/evolve-evals/references/core-concepts/datasets.mdx +0 -138
  117. package/skills/evolve-evals/references/core-concepts/index.mdx +0 -42
  118. package/skills/evolve-evals/references/core-concepts/jobs.mdx +0 -151
  119. package/skills/evolve-evals/references/core-concepts/models.mdx +0 -68
  120. package/skills/evolve-evals/references/core-concepts/sandboxes.mdx +0 -52
  121. package/skills/evolve-evals/references/core-concepts/secrets.mdx +0 -41
  122. package/skills/evolve-evals/references/core-concepts/sharing.mdx +0 -35
  123. package/skills/evolve-evals/references/core-concepts/skills.mdx +0 -42
  124. package/skills/evolve-evals/references/core-concepts/tasks.mdx +0 -216
  125. package/skills/evolve-evals/references/core-concepts/teams.mdx +0 -36
  126. package/skills/evolve-evals/references/core-concepts/trial-outputs.mdx +0 -117
  127. package/skills/evolve-evals/references/core-concepts/trials.mdx +0 -103
  128. package/skills/evolve-evals/references/core-concepts/upload.mdx +0 -93
  129. package/skills/evolve-evals/references/dashboard/checks.mdx +0 -21
  130. package/skills/evolve-evals/references/dashboard/datasets.mdx +0 -24
  131. package/skills/evolve-evals/references/dashboard/jobs.mdx +0 -65
  132. package/skills/evolve-evals/references/dashboard/traces.mdx +0 -17
  133. package/skills/evolve-evals/references/dashboard/trial-viewer.mdx +0 -30
  134. package/skills/evolve-evals/references/getting-started/installation.mdx +0 -56
  135. package/skills/evolve-evals/references/getting-started/quick-start.mdx +0 -94
  136. package/skills/evolve-evals/references/index.mdx +0 -48
  137. package/skills/evolve-evals/references/sdk/python.mdx +0 -161
  138. package/skills/evolve-evals/references/sdk/typescript.mdx +0 -163
  139. package/skills/evolve-evals/references/sdk-reference/agents.mdx +0 -108
  140. package/skills/evolve-evals/references/sdk-reference/analyses.mdx +0 -222
  141. package/skills/evolve-evals/references/sdk-reference/auth.mdx +0 -116
  142. package/skills/evolve-evals/references/sdk-reference/checks.mdx +0 -300
  143. package/skills/evolve-evals/references/sdk-reference/datasets.mdx +0 -346
  144. package/skills/evolve-evals/references/sdk-reference/errors.mdx +0 -210
  145. package/skills/evolve-evals/references/sdk-reference/index.mdx +0 -60
  146. package/skills/evolve-evals/references/sdk-reference/jobs.mdx +0 -822
  147. package/skills/evolve-evals/references/sdk-reference/meta.mdx +0 -52
  148. package/skills/evolve-evals/references/sdk-reference/skills.mdx +0 -69
  149. package/skills/evolve-evals/references/sdk-reference/trials.mdx +0 -302
  150. package/skills/evolve-evals/references/sdk-reference/types.mdx +0 -274
  151. package/skills/evolve-evals/references/snippets/global-options.mdx +0 -13
  152. package/skills/evolve-evals/references/snippets/list-flags.mdx +0 -23
@@ -0,0 +1,527 @@
1
+ ---
2
+ title: "Filesystem methods"
3
+ description: "Read run files, captured changes, sandbox logs, and live processes."
4
+ ---
5
+
6
+ A `RunFilesystem` belongs to a trial, analysis, or task check. Each exposes the same methods.
7
+
8
+ ```ts TypeScript
9
+ const fs = trials().filesystem(trialId);
10
+ // Or: analyses().filesystem(analysisId)
11
+ // Or: checks().taskFilesystem(checkId, taskCheckId)
12
+ ```
13
+
14
+ ```python Python
15
+ fs = trials().filesystem(trial_id)
16
+ # Or: analyses().filesystem(analysis_id)
17
+ # Or: checks().task_filesystem(check_id, task_check_id)
18
+ ```
19
+
20
+ Read [filesystem states](/sdk-reference/filesystem) before choosing a source. Omit `source` to use the available source; pass `live` or `capture` to request one explicitly.
21
+
22
+ | Files | Live observation |
23
+ | --- | --- |
24
+ | [status](#status), [list](#list), [read](#read), [search](#search), [changes](#changes), [archive](#archive) | [watch](#watch), [events](#events), [logs](#logs), [logEvents](#logevents), [procs](#procs) |
25
+
26
+ [Task package files](#task-package-files) provide a smaller, read-only interface.
27
+
28
+ ## status
29
+
30
+ Return `FilesystemStatus`: state, live box, watcher type, root, work directory, and capture record.
31
+
32
+ ### Signature
33
+
34
+ ```ts TypeScript signature
35
+ status(): Promise<FilesystemStatus>;
36
+ ```
37
+
38
+ ```python Python signature
39
+ async def status() -> FilesystemStatus: ...
40
+ ```
41
+
42
+ ```ts TypeScript
43
+ const status = await fs.status();
44
+ ```
45
+
46
+ ```python Python
47
+ status = await fs.status()
48
+ ```
49
+
50
+ States: `live`, `capturing`, `captured`, `none`. A null `capture` means no settled capture record. A capture can be incomplete: inspect `left_out` before assuming every file was retained. See [filesystem result fields](/sdk-reference/types#filesystem-results).
51
+
52
+ ## list
53
+
54
+ Read one directory page, sorted by name. Returns `FilesystemListing`.
55
+
56
+ ### Signature
57
+
58
+ ```ts TypeScript signature
59
+ list(
60
+ options?: FilesystemListOptions
61
+ ): Promise<FilesystemListing>;
62
+ ```
63
+
64
+ ```python Python signature
65
+ async def list(
66
+ *,
67
+ path: str = '/',
68
+ source: Optional[FilesystemSource] = None,
69
+ cursor: Optional[str] = None,
70
+ limit: Optional[int] = None,
71
+ ) -> FilesystemListing: ...
72
+ ```
73
+
74
+ ```ts TypeScript
75
+ const page = await fs.list({
76
+ path: "/app",
77
+ limit: 100
78
+ });
79
+ ```
80
+
81
+ ```python Python
82
+ page = await fs.list(
83
+ path='/app',
84
+ limit=100,
85
+ )
86
+ ```
87
+
88
+ Optional `path` defaults to `/`; `source` selects `live` or `capture`; `cursor` continues the page; `limit` defaults to 500 (maximum 1,000).
89
+
90
+ Returns `path`, `source`, `entries`, `next_cursor`, and elapsed `ms`. Both languages use `next_cursor` here. An entry with `captured: false` has no retained bytes. Read `left_out` for an omitted or failed capture; otherwise it may be an untouched image file. A missing directory returns `not_found`.
91
+
92
+ ## read
93
+
94
+ Read raw bytes from an absolute sandbox path. Returns `Buffer` / `bytes`.
95
+
96
+ ### Signature
97
+
98
+ ```ts TypeScript signature
99
+ read(
100
+ path: string,
101
+ options?: FilesystemReadOptions
102
+ ): Promise<Buffer>;
103
+ ```
104
+
105
+ ```python Python signature
106
+ async def read(
107
+ path: str,
108
+ *,
109
+ source: Optional[FilesystemSource] = None,
110
+ start: Optional[int] = None,
111
+ end: Optional[int] = None,
112
+ suffix: Optional[int] = None,
113
+ ) -> bytes: ...
114
+ ```
115
+
116
+ ```ts TypeScript
117
+ const bytes = await fs.read("/app/result.txt", {
118
+ range: {
119
+ suffix: 4096
120
+ }
121
+ });
122
+ ```
123
+
124
+ ```python Python
125
+ data = await fs.read(
126
+ '/app/result.txt',
127
+ suffix=4096,
128
+ )
129
+ ```
130
+
131
+ Optional `source` chooses `live` or `capture`. For ranges, TypeScript uses `{ range: { start, end } }`; Python uses `start=` and `end=`. End is inclusive. Use `start` alone through EOF or `suffix` alone for the last N bytes. An oversized whole-file read returns 413; read slices instead.
132
+
133
+ ## search
134
+
135
+ Search file contents. Returns `FilesystemSearchResult`, including hits and whether results were truncated.
136
+
137
+ ### Signature
138
+
139
+ ```ts TypeScript signature
140
+ search(
141
+ options: FilesystemSearchOptions
142
+ ): Promise<FilesystemSearchResult>;
143
+ ```
144
+
145
+ ```python Python signature
146
+ async def search(
147
+ q: str,
148
+ *,
149
+ path: str = '/',
150
+ regex: bool = False,
151
+ limit: Optional[int] = None,
152
+ source: Optional[FilesystemSource] = None,
153
+ ) -> FilesystemSearchResult: ...
154
+ ```
155
+
156
+ ```ts TypeScript
157
+ const result = await fs.search({
158
+ q: "TODO",
159
+ path: "/app"
160
+ });
161
+ ```
162
+
163
+ ```python Python
164
+ result = await fs.search(
165
+ 'TODO',
166
+ path='/app',
167
+ )
168
+ ```
169
+
170
+ Required `q` is text; `regex: true` / `regex=True` interprets it as a regular expression. Optional `path` defaults to `/`; `limit` defaults to 200 (maximum 1,000); `source` selects `live` or `capture`.
171
+
172
+ Returns `hits[]` with `path`, `line`, `snippet`; plus `truncated`, `scope`, `source`, `ms`, and optional `image_files_excluded`. A whole-box search can take seconds. Captured search cannot inspect untouched image files.
173
+
174
+ ## changes
175
+
176
+ Read created, modified, and removed paths by phase. Returns one `FilesystemChanges` page.
177
+
178
+ ### Signature
179
+
180
+ ```ts TypeScript signature
181
+ changes(
182
+ options?: FilesystemChangesOptions
183
+ ): Promise<FilesystemChanges>;
184
+ ```
185
+
186
+ ```python Python signature
187
+ async def changes(
188
+ *,
189
+ source: Optional[FilesystemSource] = None,
190
+ phase: Optional[Literal['setup', 'agent', 'verifier', 'all']] = None,
191
+ cursor: Optional[str] = None,
192
+ limit: Optional[int] = None,
193
+ ) -> FilesystemChanges: ...
194
+ ```
195
+
196
+ ```ts TypeScript
197
+ const page = await fs.changes({
198
+ phase: "agent",
199
+ limit: 100
200
+ });
201
+ ```
202
+
203
+ ```python Python
204
+ page = await fs.changes(
205
+ phase='agent',
206
+ limit=100,
207
+ )
208
+ ```
209
+
210
+ Optional `phase`: `setup`, `agent`, `verifier`, or `all` (default); `source`: `live` or `capture`; `limit`: default 500, maximum 1,000; `cursor`: next page. Returns `source`, whole-list `total` and `changed_bytes`, page `items`, and `next_cursor`. Live changes require a recorded initial listing; otherwise the server returns `feature_unsupported`. For captured changes, `left_out` explains missing retained bytes.
211
+
212
+ ## archive
213
+
214
+ Download a subtree as `.tar.gz`. The default path `/` requests the whole tree.
215
+
216
+ ### Signature
217
+
218
+ ```ts TypeScript signature
219
+ archive(
220
+ options?: FilesystemArchiveOptions
221
+ ): Promise<Buffer>;
222
+ archive(
223
+ options: FilesystemArchiveOptions & { to: string }
224
+ ): Promise<string>;
225
+ archive(
226
+ options: FilesystemArchiveOptions & { stream: true },
227
+ ): Promise<ReadableStream<Uint8Array>>;
228
+ ```
229
+
230
+ ```python Python signature
231
+ async def archive(
232
+ *,
233
+ path: str = '/',
234
+ source: Optional[FilesystemSource] = None,
235
+ to: Optional[str] = None,
236
+ ) -> bytes | str: ...
237
+ ```
238
+
239
+ ```ts TypeScript
240
+ const path = await fs.archive({
241
+ path: "/app",
242
+ to: "./results"
243
+ });
244
+ ```
245
+
246
+ ```python Python
247
+ path = await fs.archive(
248
+ path='/app',
249
+ to='./results',
250
+ )
251
+ ```
252
+
253
+ Optional `source` selects `live` or `capture`. No `to` returns `Buffer` / `bytes`; `to` saves into a directory and returns the file path. TypeScript also accepts `stream: true`; Python does not expose streaming. A live subtree too large to read within provider limits returns `feature_unsupported`.
254
+
255
+ ## watch
256
+
257
+ Declare the folders currently open in your viewer. Replaces the watched set, with at most eight paths.
258
+
259
+ ### Signature
260
+
261
+ ```ts TypeScript signature
262
+ watch(paths: string[]): Promise<FilesystemWatchResult>;
263
+ ```
264
+
265
+ ```python Python signature
266
+ async def watch(
267
+ paths: List[str]
268
+ ) -> FilesystemWatchResult: ...
269
+ ```
270
+
271
+ ```ts TypeScript
272
+ const result = await fs.watch(["/app", "/logs"]);
273
+ ```
274
+
275
+ ```python Python
276
+ result = await fs.watch(
277
+ ['/app', '/logs'],
278
+ )
279
+ ```
280
+
281
+ Required `paths: string[]`. Returns `watcher: "native" | "poll"` and `paths: string[]`. Poll-based change detection uses this set. This method registers folders; `events()` reads their changes.
282
+
283
+ ## events
284
+
285
+ Iterate filesystem state and changes until the filesystem settles. Returns async `FilesystemStreamEvent` frames.
286
+
287
+ ### Signature
288
+
289
+ ```ts TypeScript signature
290
+ events(
291
+ options?: FilesystemStreamOptions
292
+ ): AsyncIterableIterator<FilesystemStreamEvent>;
293
+ ```
294
+
295
+ ```python Python signature
296
+ async def events(
297
+ *,
298
+ last_event_id: Optional[str] = None,
299
+ ) -> 'AsyncIterator[FilesystemStreamEvent]': ...
300
+ ```
301
+
302
+ ```ts TypeScript
303
+ for await (const event of fs.events()) {
304
+ console.log(event.event, event.data);
305
+ }
306
+ ```
307
+
308
+ ```python Python
309
+ async for event in fs.events():
310
+ print(event.event, event.data)
311
+ ```
312
+
313
+ Optional `lastEventId` / `last_event_id` resumes after a stored event id. TypeScript also accepts `signal`. A `state` frame after a resume request means relist the folder. Frames are `state`, `fs`, or `ping`; [event fields](/sdk-reference/types#filesystem-results) define the payloads.
314
+
315
+ ## logs
316
+
317
+ Read one page of one sandbox log stream. Returns `SandboxLogLines`.
318
+
319
+ ### Signature
320
+
321
+ ```ts TypeScript signature
322
+ logs(
323
+ options: SandboxLogOptions
324
+ ): Promise<SandboxLogLines>;
325
+ ```
326
+
327
+ ```python Python signature
328
+ async def logs(
329
+ stream: SandboxLogStream,
330
+ *,
331
+ cursor: Optional[str] = None,
332
+ limit: Optional[int] = None,
333
+ ) -> SandboxLogLines: ...
334
+ ```
335
+
336
+ ```ts TypeScript
337
+ const page = await fs.logs({
338
+ stream: "agent",
339
+ limit: 100
340
+ });
341
+ ```
342
+
343
+ ```python Python
344
+ page = await fs.logs(
345
+ 'agent',
346
+ limit=100,
347
+ )
348
+ ```
349
+
350
+ Required `stream`: `agent`, `verifier`, `setup`, `system`, or `metrics`. Optional `cursor` continues the stream; `limit` defaults to and is capped at 1,000. Returns `stream`, `lines`, `next_cursor`, and optional `reason` when no lines were retained. Each line has `seq`, nullable `t`, `fd` (`out` or `err`), and `line`.
351
+
352
+ ## logEvents
353
+
354
+ Python: `log_events`. Iterate all sandbox log streams together. Ends after the box is gone and stored lines are drained.
355
+
356
+ ### Signature
357
+
358
+ ```ts TypeScript signature
359
+ logEvents(
360
+ options?: FilesystemStreamOptions
361
+ ): AsyncIterableIterator<SandboxLogEvent>;
362
+ ```
363
+
364
+ ```python Python signature
365
+ async def log_events(
366
+ *,
367
+ last_event_id: Optional[str] = None,
368
+ ) -> 'AsyncIterator[SandboxLogEvent]': ...
369
+ ```
370
+
371
+ ```ts TypeScript
372
+ for await (const event of fs.logEvents()) {
373
+ if (event.event === "line")
374
+ console.log(event.data.line);
375
+ }
376
+ ```
377
+
378
+ ```python Python
379
+ async for event in fs.log_events():
380
+ if event.event == "line":
381
+ print(event.data["line"])
382
+ ```
383
+
384
+ Optional `lastEventId` / `last_event_id` is `<stream>:<seq>`. TypeScript also accepts `signal`. Returns `SandboxLogEvent`: `line`, `state`, or `ping`. A line payload adds `stream` to `SandboxLogLine`.
385
+
386
+ ## procs
387
+
388
+ Read the live sandbox’s process list. Returns `SandboxProcs`.
389
+
390
+ ### Signature
391
+
392
+ ```ts TypeScript signature
393
+ procs(): Promise<SandboxProcs>;
394
+ ```
395
+
396
+ ```python Python signature
397
+ async def procs() -> SandboxProcs: ...
398
+ ```
399
+
400
+ ```ts TypeScript
401
+ const processes = await fs.procs();
402
+ console.log(processes.text);
403
+ ```
404
+
405
+ ```python Python
406
+ processes = await fs.procs()
407
+ print(processes.text)
408
+ ```
409
+
410
+ No arguments. `text` is the process listing; `ms` is elapsed server time. Once the box is gone, this returns 409 `filesystem_state`; a captured filesystem cannot supply live processes.
411
+
412
+ ## Task package files
413
+
414
+ `datasets().taskFiles(ref, taskName)` / `task_files(ref, task_name)` returns `TaskPackageFiles`. Pin `ref` as `name@version`. This reads the retained task package, not a sandbox.
415
+
416
+ ```ts TypeScript
417
+ const files = datasets().taskFiles(
418
+ "my-tasks@1.0",
419
+ "hello-world"
420
+ );
421
+ ```
422
+
423
+ ```python Python
424
+ files = datasets().task_files(
425
+ "my-tasks@1.0",
426
+ "hello-world"
427
+ )
428
+ ```
429
+
430
+ ## package.status
431
+
432
+ Read `TaskPackageFilesystemStatus`, the normal filesystem status plus `source: "package"` and `package_retained: boolean`. Its `state` is always `none`.
433
+
434
+ ### Signature
435
+
436
+ ```ts TypeScript signature
437
+ status(): Promise<TaskPackageFilesystemStatus>;
438
+ ```
439
+
440
+ ```python Python signature
441
+ async def status() -> TaskPackageFilesystemStatus: ...
442
+ ```
443
+
444
+ ```ts TypeScript
445
+ const status = await files.status();
446
+ ```
447
+
448
+ ```python Python
449
+ status = await files.status()
450
+ ```
451
+
452
+ A false `package_retained` means package bytes are unavailable; file reads return `task_package_not_retained`.
453
+
454
+ ## package.list
455
+
456
+ Read a page from the task directory. Returns `FilesystemListing` with `source: "package"`.
457
+
458
+ ### Signature
459
+
460
+ ```ts TypeScript signature
461
+ list(
462
+ options?: Omit<FilesystemListOptions, "source">
463
+ ): Promise<FilesystemListing>;
464
+ ```
465
+
466
+ ```python Python signature
467
+ async def list(
468
+ *,
469
+ path: str = '/',
470
+ cursor: Optional[str] = None,
471
+ limit: Optional[int] = None,
472
+ ) -> FilesystemListing: ...
473
+ ```
474
+
475
+ ```ts TypeScript
476
+ const page = await files.list({
477
+ path: "/tests"
478
+ });
479
+ ```
480
+
481
+ ```python Python
482
+ page = await files.list(path="/tests")
483
+ ```
484
+
485
+ Optional `path` defaults to `/`; `limit` defaults to 500 (maximum 1,000); `cursor` continues the page. There is no `source` selector.
486
+
487
+ ## package.read
488
+
489
+ Read exact bytes from a retained task file. Returns `Buffer` / `bytes`.
490
+
491
+ ### Signature
492
+
493
+ ```ts TypeScript signature
494
+ read(
495
+ path: string,
496
+ options?: { range?: TrialFileRange }
497
+ ): Promise<Buffer>;
498
+ ```
499
+
500
+ ```python Python signature
501
+ async def read(
502
+ path: str,
503
+ *,
504
+ start: Optional[int] = None,
505
+ end: Optional[int] = None,
506
+ suffix: Optional[int] = None,
507
+ ) -> bytes: ...
508
+ ```
509
+
510
+ ```ts TypeScript
511
+ const bytes = await files.read("/instruction.md", {
512
+ range: {
513
+ start: 0,
514
+ end: 1023
515
+ }
516
+ });
517
+ ```
518
+
519
+ ```python Python
520
+ data = await files.read(
521
+ '/instruction.md',
522
+ start=0,
523
+ end=1023,
524
+ )
525
+ ```
526
+
527
+ The same inclusive byte-range forms as `RunFilesystem.read` apply. This interface has no search, archive, watch, event, log, or process methods.