oblien 1.2.7 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/client.d.ts +31 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +33 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/error.d.ts +29 -0
  6. package/dist/error.d.ts.map +1 -0
  7. package/dist/error.js +52 -0
  8. package/dist/error.js.map +1 -0
  9. package/dist/http.d.ts +20 -0
  10. package/dist/http.d.ts.map +1 -0
  11. package/dist/http.js +108 -0
  12. package/dist/http.js.map +1 -0
  13. package/dist/index.d.ts +8 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +10 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/resources/api-access.d.ts +21 -0
  18. package/dist/resources/api-access.d.ts.map +1 -0
  19. package/dist/resources/api-access.js +32 -0
  20. package/dist/resources/api-access.js.map +1 -0
  21. package/dist/resources/base.d.ts +17 -0
  22. package/dist/resources/base.d.ts.map +1 -0
  23. package/dist/resources/base.js +21 -0
  24. package/dist/resources/base.js.map +1 -0
  25. package/dist/resources/images.d.ts +11 -0
  26. package/dist/resources/images.d.ts.map +1 -0
  27. package/dist/resources/images.js +16 -0
  28. package/dist/resources/images.js.map +1 -0
  29. package/dist/resources/lifecycle.d.ts +23 -0
  30. package/dist/resources/lifecycle.d.ts.map +1 -0
  31. package/dist/resources/lifecycle.js +32 -0
  32. package/dist/resources/lifecycle.js.map +1 -0
  33. package/dist/resources/logs.d.ts +25 -0
  34. package/dist/resources/logs.d.ts.map +1 -0
  35. package/dist/resources/logs.js +51 -0
  36. package/dist/resources/logs.js.map +1 -0
  37. package/dist/resources/metadata.d.ts +15 -0
  38. package/dist/resources/metadata.d.ts.map +1 -0
  39. package/dist/resources/metadata.js +20 -0
  40. package/dist/resources/metadata.js.map +1 -0
  41. package/dist/resources/metrics.d.ts +17 -0
  42. package/dist/resources/metrics.d.ts.map +1 -0
  43. package/dist/resources/metrics.js +27 -0
  44. package/dist/resources/metrics.js.map +1 -0
  45. package/dist/resources/network.d.ts +17 -0
  46. package/dist/resources/network.d.ts.map +1 -0
  47. package/dist/resources/network.js +20 -0
  48. package/dist/resources/network.js.map +1 -0
  49. package/dist/resources/public-access.d.ts +15 -0
  50. package/dist/resources/public-access.d.ts.map +1 -0
  51. package/dist/resources/public-access.js +21 -0
  52. package/dist/resources/public-access.js.map +1 -0
  53. package/dist/resources/resources.d.ts +15 -0
  54. package/dist/resources/resources.d.ts.map +1 -0
  55. package/dist/resources/resources.js +20 -0
  56. package/dist/resources/resources.js.map +1 -0
  57. package/dist/resources/snapshots.d.ts +27 -0
  58. package/dist/resources/snapshots.d.ts.map +1 -0
  59. package/dist/resources/snapshots.js +45 -0
  60. package/dist/resources/snapshots.js.map +1 -0
  61. package/dist/resources/ssh.d.ts +19 -0
  62. package/dist/resources/ssh.d.ts.map +1 -0
  63. package/dist/resources/ssh.js +28 -0
  64. package/dist/resources/ssh.js.map +1 -0
  65. package/dist/resources/usage.d.ts +25 -0
  66. package/dist/resources/usage.d.ts.map +1 -0
  67. package/dist/resources/usage.js +44 -0
  68. package/dist/resources/usage.js.map +1 -0
  69. package/dist/resources/workloads.d.ts +39 -0
  70. package/dist/resources/workloads.d.ts.map +1 -0
  71. package/dist/resources/workloads.js +83 -0
  72. package/dist/resources/workloads.js.map +1 -0
  73. package/dist/runtime/exec.d.ts +71 -0
  74. package/dist/runtime/exec.d.ts.map +1 -0
  75. package/dist/runtime/exec.js +163 -0
  76. package/dist/runtime/exec.js.map +1 -0
  77. package/dist/runtime/files.d.ts +39 -0
  78. package/dist/runtime/files.d.ts.map +1 -0
  79. package/dist/runtime/files.js +143 -0
  80. package/dist/runtime/files.js.map +1 -0
  81. package/dist/runtime/search.d.ts +23 -0
  82. package/dist/runtime/search.d.ts.map +1 -0
  83. package/dist/runtime/search.js +65 -0
  84. package/dist/runtime/search.js.map +1 -0
  85. package/dist/runtime/terminal.d.ts +29 -0
  86. package/dist/runtime/terminal.d.ts.map +1 -0
  87. package/dist/runtime/terminal.js +58 -0
  88. package/dist/runtime/terminal.js.map +1 -0
  89. package/dist/runtime/watcher.d.ts +27 -0
  90. package/dist/runtime/watcher.d.ts.map +1 -0
  91. package/dist/runtime/watcher.js +53 -0
  92. package/dist/runtime/watcher.js.map +1 -0
  93. package/dist/runtime/ws.d.ts +92 -0
  94. package/dist/runtime/ws.d.ts.map +1 -0
  95. package/dist/runtime/ws.js +228 -0
  96. package/dist/runtime/ws.js.map +1 -0
  97. package/dist/runtime-http.d.ts +35 -0
  98. package/dist/runtime-http.d.ts.map +1 -0
  99. package/dist/runtime-http.js +99 -0
  100. package/dist/runtime-http.js.map +1 -0
  101. package/dist/runtime.d.ts +77 -0
  102. package/dist/runtime.d.ts.map +1 -0
  103. package/dist/runtime.js +97 -0
  104. package/dist/runtime.js.map +1 -0
  105. package/dist/types/client.d.ts +7 -0
  106. package/dist/types/client.d.ts.map +1 -0
  107. package/dist/types/client.js +3 -0
  108. package/dist/types/client.js.map +1 -0
  109. package/dist/types/common.d.ts +13 -0
  110. package/dist/types/common.d.ts.map +1 -0
  111. package/dist/types/common.js +3 -0
  112. package/dist/types/common.js.map +1 -0
  113. package/dist/types/index.d.ts +8 -0
  114. package/dist/types/index.d.ts.map +1 -0
  115. package/dist/types/index.js +2 -0
  116. package/dist/types/index.js.map +1 -0
  117. package/dist/types/network.d.ts +15 -0
  118. package/dist/types/network.d.ts.map +1 -0
  119. package/dist/types/network.js +3 -0
  120. package/dist/types/network.js.map +1 -0
  121. package/dist/types/resources.d.ts +10 -0
  122. package/dist/types/resources.d.ts.map +1 -0
  123. package/dist/types/resources.js +3 -0
  124. package/dist/types/resources.js.map +1 -0
  125. package/dist/types/runtime.d.ts +302 -0
  126. package/dist/types/runtime.d.ts.map +1 -0
  127. package/dist/types/runtime.js +3 -0
  128. package/dist/types/runtime.js.map +1 -0
  129. package/dist/types/workspace-resources.d.ts +186 -0
  130. package/dist/types/workspace-resources.d.ts.map +1 -0
  131. package/dist/types/workspace-resources.js +3 -0
  132. package/dist/types/workspace-resources.js.map +1 -0
  133. package/dist/types/workspace.d.ts +41 -0
  134. package/dist/types/workspace.d.ts.map +1 -0
  135. package/dist/types/workspace.js +3 -0
  136. package/dist/types/workspace.js.map +1 -0
  137. package/dist/workspace.d.ts +135 -0
  138. package/dist/workspace.d.ts.map +1 -0
  139. package/dist/workspace.js +194 -0
  140. package/dist/workspace.js.map +1 -0
  141. package/package.json +31 -70
  142. package/LICENSE +0 -21
  143. package/README.md +0 -574
  144. package/agents.js +0 -14
  145. package/browser.js +0 -6
  146. package/cdn.js +0 -6
  147. package/chat.js +0 -21
  148. package/credits.js +0 -11
  149. package/icons.js +0 -11
  150. package/index.d.ts +0 -967
  151. package/index.js +0 -63
  152. package/namespaces.js +0 -12
  153. package/sandbox.js +0 -12
  154. package/search.js +0 -11
  155. package/src/agents/agent.js +0 -229
  156. package/src/agents/index.js +0 -212
  157. package/src/agents/settings.js +0 -100
  158. package/src/agents/tools.js +0 -155
  159. package/src/browser/index.js +0 -449
  160. package/src/cdn/index.js +0 -744
  161. package/src/chat/index.js +0 -704
  162. package/src/chat/session.js +0 -93
  163. package/src/client.js +0 -175
  164. package/src/credits/index.js +0 -480
  165. package/src/icons/index.js +0 -185
  166. package/src/namespaces/index.js +0 -225
  167. package/src/namespaces/namespace.js +0 -274
  168. package/src/sandbox/index.js +0 -185
  169. package/src/sandbox/sandbox.js +0 -124
  170. package/src/search/index.js +0 -191
  171. package/src/utils/guest-manager.js +0 -454
@@ -0,0 +1,83 @@
1
+ /** Managed workloads (long-running processes). */
2
+ export class WorkloadsResource {
3
+ _http;
4
+ constructor(_http) {
5
+ this._http = _http;
6
+ }
7
+ /** Create a workload. */
8
+ async create(workspaceId, params) {
9
+ const res = await this._http.request({ method: 'POST', path: `/workspace/${workspaceId}/workloads`, body: params });
10
+ return res.workload;
11
+ }
12
+ /** List workloads. */
13
+ async list(workspaceId, params = {}) {
14
+ const res = await this._http.request({
15
+ method: 'GET',
16
+ path: `/workspace/${workspaceId}/workloads`,
17
+ query: params,
18
+ });
19
+ return res.workloads ?? [];
20
+ }
21
+ /** Get a workload. */
22
+ async get(workspaceId, workloadId) {
23
+ return this._http.request({ method: 'GET', path: `/workspace/${workspaceId}/workloads/${workloadId}` });
24
+ }
25
+ /** Update a workload. */
26
+ async update(workspaceId, workloadId, params) {
27
+ return this._http.request({ method: 'PUT', path: `/workspace/${workspaceId}/workloads/${workloadId}`, body: params });
28
+ }
29
+ /** Partial update a workload (PATCH alias). */
30
+ async patch(workspaceId, workloadId, params) {
31
+ return this._http.request({ method: 'PATCH', path: `/workspace/${workspaceId}/workloads/${workloadId}`, body: params });
32
+ }
33
+ /** Delete a workload. */
34
+ async delete(workspaceId, workloadId) {
35
+ return this._http.request({ method: 'DELETE', path: `/workspace/${workspaceId}/workloads/${workloadId}` });
36
+ }
37
+ /** Delete all workloads. */
38
+ async deleteAll(workspaceId) {
39
+ return this._http.request({ method: 'DELETE', path: `/workspace/${workspaceId}/workloads` });
40
+ }
41
+ /** Start a workload. */
42
+ async start(workspaceId, workloadId) {
43
+ return this._http.request({ method: 'POST', path: `/workspace/${workspaceId}/workloads/${workloadId}/start` });
44
+ }
45
+ /** Stop a workload. */
46
+ async stop(workspaceId, workloadId) {
47
+ return this._http.request({ method: 'POST', path: `/workspace/${workspaceId}/workloads/${workloadId}/stop` });
48
+ }
49
+ /** Get workload status. */
50
+ async status(workspaceId, workloadId) {
51
+ return this._http.request({ method: 'GET', path: `/workspace/${workspaceId}/workloads/${workloadId}/status` });
52
+ }
53
+ /** Get workload logs. */
54
+ async logs(workspaceId, workloadId) {
55
+ return this._http.request({ method: 'GET', path: `/workspace/${workspaceId}/workloads/${workloadId}/logs` });
56
+ }
57
+ /** Get workload stats. */
58
+ async stats(workspaceId, workloadId) {
59
+ return this._http.request({ method: 'GET', path: `/workspace/${workspaceId}/workloads/${workloadId}/stats` });
60
+ }
61
+ /** Stream workload stats (SSE). */
62
+ async *statsStream(workspaceId, workloadId) {
63
+ yield* this._http.requestSSE({
64
+ method: 'GET',
65
+ path: `/workspace/${workspaceId}/workloads/${workloadId}/stats/stream`,
66
+ });
67
+ }
68
+ /** Stream workload logs (SSE). */
69
+ async *logsStream(workspaceId, workloadId) {
70
+ yield* this._http.requestSSE({
71
+ method: 'GET',
72
+ path: `/workspace/${workspaceId}/workloads/${workloadId}/logs/stream`,
73
+ });
74
+ }
75
+ /** Stream stats for ALL workloads (SSE). */
76
+ async *allStatsStream(workspaceId) {
77
+ yield* this._http.requestSSE({
78
+ method: 'GET',
79
+ path: `/workspace/${workspaceId}/workloads/stats/stream`,
80
+ });
81
+ }
82
+ }
83
+ //# sourceMappingURL=workloads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workloads.js","sourceRoot":"","sources":["../../src/resources/workloads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { RuntimeHttpClient } from '../runtime-http.js';
2
+ import type { ExecRunParams, ExecTask, ExecStreamEvent } from '../types/runtime.js';
3
+ /**
4
+ * Command execution inside the workspace runtime.
5
+ *
6
+ * ```ts
7
+ * const result = await rt.exec.run(['echo', 'hello']);
8
+ * console.log(result.stdout); // "hello\n"
9
+ *
10
+ * // Stream output
11
+ * for await (const ev of rt.exec.stream(['npm', 'test'])) {
12
+ * if (ev.event === 'stdout') process.stdout.write(atob(ev.data));
13
+ * }
14
+ *
15
+ * await rt.exec.kill('task_id');
16
+ * ```
17
+ */
18
+ export declare class ExecResource {
19
+ private readonly _http;
20
+ constructor(_http: RuntimeHttpClient);
21
+ /** Run a command synchronously — returns when the process exits. */
22
+ run(cmd: string[], params?: ExecRunParams): Promise<ExecTask>;
23
+ /**
24
+ * Stream command output via SSE — yields events as the process runs.
25
+ *
26
+ * Events: `task_id`, `stdout` (base64), `stderr` (base64), `exit`.
27
+ *
28
+ * ```ts
29
+ * for await (const ev of rt.exec.stream(['npm', 'test'])) {
30
+ * if (ev.event === 'stdout') process.stdout.write(atob(ev.data));
31
+ * if (ev.event === 'exit') console.log('Exit code:', ev.exit_code);
32
+ * }
33
+ * ```
34
+ */
35
+ stream(cmd: string[], params?: ExecRunParams): AsyncGenerator<ExecStreamEvent>;
36
+ /**
37
+ * Subscribe to an existing task's output via SSE.
38
+ * If the task already finished, replays output + exit immediately.
39
+ *
40
+ * ```ts
41
+ * for await (const ev of rt.exec.subscribe('3')) {
42
+ * console.log(ev);
43
+ * }
44
+ * ```
45
+ */
46
+ subscribe(taskId: string): AsyncGenerator<ExecStreamEvent>;
47
+ /** List all tracked tasks. */
48
+ list(): Promise<ExecTask[]>;
49
+ /** Get a specific task by ID. */
50
+ get(taskId: string): Promise<ExecTask>;
51
+ /** Kill / remove a task. */
52
+ kill(taskId: string): Promise<{
53
+ success: boolean;
54
+ }>;
55
+ /** Delete all tasks. */
56
+ deleteAll(): Promise<{
57
+ success: boolean;
58
+ deleted: number;
59
+ }>;
60
+ /** Send stdin to a running task. */
61
+ input(taskId: string, data: string): Promise<{
62
+ success: boolean;
63
+ bytes_written: number;
64
+ }>;
65
+ /**
66
+ * Parse SSE named events from a Response stream.
67
+ * Server sends `event: <name>\ndata: <json>\n\n`.
68
+ */
69
+ private parseSSE;
70
+ }
71
+ //# sourceMappingURL=exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/runtime/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EAER,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,iBAAiB;IAErD,oEAAoE;IAC9D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcvE;;;;;;;;;;;OAWG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,aAAkB,GAAG,cAAc,CAAC,eAAe,CAAC;IAiBzF;;;;;;;;;OASG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC;IAWjE,8BAA8B;IACxB,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQjC,iCAAiC;IAC3B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAO5C,4BAA4B;IACtB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAOzD,wBAAwB;IAClB,SAAS,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAOjE,oCAAoC;IAC9B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAM/F;;;OAGG;YACY,QAAQ;CAsCxB"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Command execution inside the workspace runtime.
3
+ *
4
+ * ```ts
5
+ * const result = await rt.exec.run(['echo', 'hello']);
6
+ * console.log(result.stdout); // "hello\n"
7
+ *
8
+ * // Stream output
9
+ * for await (const ev of rt.exec.stream(['npm', 'test'])) {
10
+ * if (ev.event === 'stdout') process.stdout.write(atob(ev.data));
11
+ * }
12
+ *
13
+ * await rt.exec.kill('task_id');
14
+ * ```
15
+ */
16
+ export class ExecResource {
17
+ _http;
18
+ constructor(_http) {
19
+ this._http = _http;
20
+ }
21
+ /** Run a command synchronously — returns when the process exits. */
22
+ async run(cmd, params = {}) {
23
+ return this._http.request({
24
+ method: 'POST',
25
+ path: '/exec',
26
+ body: {
27
+ cmd,
28
+ exec_mode: params.execMode,
29
+ timeout_seconds: params.timeoutSeconds,
30
+ ttl_seconds: params.ttlSeconds,
31
+ keep_logs: params.keepLogs,
32
+ },
33
+ });
34
+ }
35
+ /**
36
+ * Stream command output via SSE — yields events as the process runs.
37
+ *
38
+ * Events: `task_id`, `stdout` (base64), `stderr` (base64), `exit`.
39
+ *
40
+ * ```ts
41
+ * for await (const ev of rt.exec.stream(['npm', 'test'])) {
42
+ * if (ev.event === 'stdout') process.stdout.write(atob(ev.data));
43
+ * if (ev.event === 'exit') console.log('Exit code:', ev.exit_code);
44
+ * }
45
+ * ```
46
+ */
47
+ async *stream(cmd, params = {}) {
48
+ const res = await this._http.requestStream({
49
+ method: 'POST',
50
+ path: '/exec/stream',
51
+ body: {
52
+ cmd,
53
+ exec_mode: params.execMode,
54
+ timeout_seconds: params.timeoutSeconds,
55
+ ttl_seconds: params.ttlSeconds,
56
+ keep_logs: params.keepLogs,
57
+ },
58
+ });
59
+ if (!res.body)
60
+ throw new Error('No response body for exec stream');
61
+ yield* this.parseSSE(res);
62
+ }
63
+ /**
64
+ * Subscribe to an existing task's output via SSE.
65
+ * If the task already finished, replays output + exit immediately.
66
+ *
67
+ * ```ts
68
+ * for await (const ev of rt.exec.subscribe('3')) {
69
+ * console.log(ev);
70
+ * }
71
+ * ```
72
+ */
73
+ async *subscribe(taskId) {
74
+ const res = await this._http.requestStream({
75
+ method: 'GET',
76
+ path: '/exec/stream',
77
+ query: { task_id: taskId },
78
+ });
79
+ if (!res.body)
80
+ throw new Error('No response body for exec subscribe');
81
+ yield* this.parseSSE(res);
82
+ }
83
+ /** List all tracked tasks. */
84
+ async list() {
85
+ const res = await this._http.request({
86
+ method: 'GET',
87
+ path: '/exec',
88
+ });
89
+ return res.tasks;
90
+ }
91
+ /** Get a specific task by ID. */
92
+ async get(taskId) {
93
+ return this._http.request({
94
+ method: 'GET',
95
+ path: `/exec/${taskId}`,
96
+ });
97
+ }
98
+ /** Kill / remove a task. */
99
+ async kill(taskId) {
100
+ return this._http.request({
101
+ method: 'DELETE',
102
+ path: `/exec/${taskId}`,
103
+ });
104
+ }
105
+ /** Delete all tasks. */
106
+ async deleteAll() {
107
+ return this._http.request({
108
+ method: 'DELETE',
109
+ path: '/exec',
110
+ });
111
+ }
112
+ /** Send stdin to a running task. */
113
+ async input(taskId, data) {
114
+ return this._http.requestRaw(`/exec/${taskId}/input`, data);
115
+ }
116
+ // ── SSE Parser (shared by stream + subscribe) ───────────────────
117
+ /**
118
+ * Parse SSE named events from a Response stream.
119
+ * Server sends `event: <name>\ndata: <json>\n\n`.
120
+ */
121
+ async *parseSSE(res) {
122
+ const reader = res.body.getReader();
123
+ const decoder = new TextDecoder();
124
+ let buffer = '';
125
+ let currentEvent = '';
126
+ try {
127
+ while (true) {
128
+ const { done, value } = await reader.read();
129
+ if (done)
130
+ break;
131
+ buffer += decoder.decode(value, { stream: true });
132
+ const lines = buffer.split('\n');
133
+ buffer = lines.pop() ?? '';
134
+ for (const line of lines) {
135
+ if (line.startsWith('event: ')) {
136
+ currentEvent = line.slice(7).trim();
137
+ }
138
+ else if (line.startsWith('data: ')) {
139
+ const data = line.slice(6).trim();
140
+ if (!data || data === '[DONE]')
141
+ continue;
142
+ try {
143
+ const parsed = JSON.parse(data);
144
+ yield { event: currentEvent || 'message', ...parsed };
145
+ }
146
+ catch {
147
+ // Skip non-JSON data lines
148
+ }
149
+ currentEvent = '';
150
+ }
151
+ else if (line === '') {
152
+ // Empty line = event boundary, reset
153
+ currentEvent = '';
154
+ }
155
+ }
156
+ }
157
+ }
158
+ finally {
159
+ reader.releaseLock();
160
+ }
161
+ }
162
+ }
163
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/runtime/exec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { RuntimeHttpClient } from '../runtime-http.js';
2
+ import type { FileListParams, FileListResponse, FileReadParams, FileReadResponse, FileWriteParams, FileWriteResponse, FileMkdirParams, FileStatParams, FileStatResponse, FileDeleteParams, FileEntry } from '../types/runtime.js';
3
+ /**
4
+ * File operations inside the workspace runtime.
5
+ *
6
+ * ```ts
7
+ * const entries = await rt.files.list({ dirPath: '/app/src' });
8
+ * const file = await rt.files.read({ filePath: '/app/index.js' });
9
+ * await rt.files.write({ fullPath: '/app/hello.txt', content: 'hi' });
10
+ * ```
11
+ */
12
+ export declare class FilesResource {
13
+ private readonly _http;
14
+ constructor(_http: RuntimeHttpClient);
15
+ /** List directory contents. */
16
+ list(params?: FileListParams): Promise<FileListResponse>;
17
+ /**
18
+ * Stream directory entries as an async iterator (NDJSON).
19
+ * Ideal for large directories — entries arrive as they're discovered.
20
+ */
21
+ stream(params?: FileListParams): AsyncGenerator<FileEntry>;
22
+ /** Read file content. Supports line ranges. */
23
+ read(params: FileReadParams): Promise<FileReadResponse>;
24
+ /** Write or overwrite a file. */
25
+ write(params: FileWriteParams): Promise<FileWriteResponse>;
26
+ /** Create a directory (and parents). */
27
+ mkdir(params: FileMkdirParams): Promise<{
28
+ success: boolean;
29
+ path: string;
30
+ }>;
31
+ /** Get file/directory metadata. */
32
+ stat(params: FileStatParams): Promise<FileStatResponse>;
33
+ /** Delete a file or directory. Accepts path in body or query. */
34
+ delete(params: FileDeleteParams): Promise<{
35
+ success: boolean;
36
+ path: string;
37
+ }>;
38
+ }
39
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/runtime/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,iBAAiB;IAErD,+BAA+B;IACzB,IAAI,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBlE;;;OAGG;IACI,MAAM,CAAC,MAAM,GAAE,cAAmB,GAAG,cAAc,CAAC,SAAS,CAAC;IAkDrE,+CAA+C;IACzC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAa7D,iCAAiC;IAC3B,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAchE,wCAAwC;IAClC,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAQjF,mCAAmC;IAC7B,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQ7D,iEAAiE;IAC3D,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAOpF"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * File operations inside the workspace runtime.
3
+ *
4
+ * ```ts
5
+ * const entries = await rt.files.list({ dirPath: '/app/src' });
6
+ * const file = await rt.files.read({ filePath: '/app/index.js' });
7
+ * await rt.files.write({ fullPath: '/app/hello.txt', content: 'hi' });
8
+ * ```
9
+ */
10
+ export class FilesResource {
11
+ _http;
12
+ constructor(_http) {
13
+ this._http = _http;
14
+ }
15
+ /** List directory contents. */
16
+ async list(params = {}) {
17
+ return this._http.request({
18
+ method: 'GET',
19
+ path: '/files',
20
+ query: {
21
+ path: params.dirPath,
22
+ nested: params.nested,
23
+ flatten: params.flatten,
24
+ light: params.light,
25
+ include_hash: params.includeHash,
26
+ include_content: params.includeContent,
27
+ include_extensions: params.includeExtensions,
28
+ code_files_only: params.codeFilesOnly,
29
+ use_gitignore: params.useGitignore,
30
+ max_depth: params.maxDepth,
31
+ path_filter: params.pathFilter,
32
+ include_ext: params.includeExt,
33
+ ignore_patterns: params.ignorePatterns,
34
+ max_content_budget: params.maxContentBudget,
35
+ },
36
+ });
37
+ }
38
+ /**
39
+ * Stream directory entries as an async iterator (NDJSON).
40
+ * Ideal for large directories — entries arrive as they're discovered.
41
+ */
42
+ async *stream(params = {}) {
43
+ const res = await this._http.requestStream({
44
+ method: 'GET',
45
+ path: '/files/stream',
46
+ query: {
47
+ path: params.dirPath,
48
+ nested: params.nested,
49
+ flatten: params.flatten,
50
+ light: params.light,
51
+ include_hash: params.includeHash,
52
+ include_content: params.includeContent,
53
+ include_extensions: params.includeExtensions,
54
+ code_files_only: params.codeFilesOnly,
55
+ use_gitignore: params.useGitignore,
56
+ max_depth: params.maxDepth,
57
+ path_filter: params.pathFilter,
58
+ include_ext: params.includeExt,
59
+ ignore_patterns: params.ignorePatterns,
60
+ max_content_budget: params.maxContentBudget,
61
+ },
62
+ });
63
+ if (!res.body)
64
+ throw new Error('No response body for file stream');
65
+ const reader = res.body.getReader();
66
+ const decoder = new TextDecoder();
67
+ let buffer = '';
68
+ try {
69
+ while (true) {
70
+ const { done, value } = await reader.read();
71
+ if (done)
72
+ break;
73
+ buffer += decoder.decode(value, { stream: true });
74
+ const lines = buffer.split('\n');
75
+ buffer = lines.pop() ?? '';
76
+ for (const line of lines) {
77
+ if (!line.trim())
78
+ continue;
79
+ const obj = JSON.parse(line);
80
+ // Skip control events (start, done)
81
+ if (obj.event)
82
+ continue;
83
+ yield obj;
84
+ }
85
+ }
86
+ }
87
+ finally {
88
+ reader.releaseLock();
89
+ }
90
+ }
91
+ /** Read file content. Supports line ranges. */
92
+ async read(params) {
93
+ return this._http.request({
94
+ method: 'GET',
95
+ path: '/files/read',
96
+ query: {
97
+ path: params.filePath,
98
+ start_line: params.startLine,
99
+ end_line: params.endLine,
100
+ with_line_numbers: params.withLineNumbers,
101
+ },
102
+ });
103
+ }
104
+ /** Write or overwrite a file. */
105
+ async write(params) {
106
+ return this._http.request({
107
+ method: 'POST',
108
+ path: '/files/write',
109
+ body: {
110
+ path: params.fullPath,
111
+ content: params.content,
112
+ create_dirs: params.createDirs,
113
+ append: params.append,
114
+ mode: params.mode,
115
+ },
116
+ });
117
+ }
118
+ /** Create a directory (and parents). */
119
+ async mkdir(params) {
120
+ return this._http.request({
121
+ method: 'POST',
122
+ path: '/files/mkdir',
123
+ body: { path: params.path, mode: params.mode },
124
+ });
125
+ }
126
+ /** Get file/directory metadata. */
127
+ async stat(params) {
128
+ return this._http.request({
129
+ method: 'GET',
130
+ path: '/files/stat',
131
+ query: { path: params.path },
132
+ });
133
+ }
134
+ /** Delete a file or directory. Accepts path in body or query. */
135
+ async delete(params) {
136
+ return this._http.request({
137
+ method: 'POST',
138
+ path: '/files/delete',
139
+ body: { path: params.path },
140
+ });
141
+ }
142
+ }
143
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/runtime/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { RuntimeHttpClient } from '../runtime-http.js';
2
+ import type { ContentSearchParams, ContentSearchResponse, FileSearchParams, FileSearchResponse, SearchStatusResponse, SearchInitResponse } from '../types/runtime.js';
3
+ /**
4
+ * Content and filename search inside the workspace runtime.
5
+ *
6
+ * ```ts
7
+ * const results = await rt.search.content({ query: 'handleRequest', path: '/app' });
8
+ * const files = await rt.search.files({ query: 'controller' });
9
+ * ```
10
+ */
11
+ export declare class SearchResource {
12
+ private readonly _http;
13
+ constructor(_http: RuntimeHttpClient);
14
+ /** Search file contents (powered by ripgrep). */
15
+ content(params: ContentSearchParams): Promise<ContentSearchResponse>;
16
+ /** Search by filename/path. */
17
+ files(params: FileSearchParams): Promise<FileSearchResponse>;
18
+ /** Check if ripgrep is installed. */
19
+ status(): Promise<SearchStatusResponse>;
20
+ /** Install ripgrep (one-time setup). */
21
+ init(): Promise<SearchInitResponse>;
22
+ }
23
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/runtime/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;GAOG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,iBAAiB;IAErD,iDAAiD;IAC3C,OAAO,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAqB1E,+BAA+B;IACzB,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAelE,qCAAqC;IAC/B,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAO7C,wCAAwC;IAClC,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAM1C"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Content and filename search inside the workspace runtime.
3
+ *
4
+ * ```ts
5
+ * const results = await rt.search.content({ query: 'handleRequest', path: '/app' });
6
+ * const files = await rt.search.files({ query: 'controller' });
7
+ * ```
8
+ */
9
+ export class SearchResource {
10
+ _http;
11
+ constructor(_http) {
12
+ this._http = _http;
13
+ }
14
+ /** Search file contents (powered by ripgrep). */
15
+ async content(params) {
16
+ return this._http.request({
17
+ method: 'GET',
18
+ path: '/files/search',
19
+ query: {
20
+ q: params.query,
21
+ path: params.path,
22
+ case_sensitive: params.caseSensitive,
23
+ regex: params.regex,
24
+ whole_word: params.wholeWord,
25
+ max_results: params.maxResults,
26
+ timeout: params.timeout,
27
+ context_lines: params.contextLines,
28
+ file_types: params.fileTypes,
29
+ include_hidden: params.includeHidden,
30
+ no_gitignore: params.noGitignore,
31
+ ignore_patterns: params.ignorePatterns,
32
+ },
33
+ });
34
+ }
35
+ /** Search by filename/path. */
36
+ async files(params) {
37
+ return this._http.request({
38
+ method: 'GET',
39
+ path: '/files/search/files',
40
+ query: {
41
+ q: params.query,
42
+ path: params.path,
43
+ case_sensitive: params.caseSensitive,
44
+ include_hidden: params.includeHidden,
45
+ max_results: params.maxResults,
46
+ ignore_patterns: params.ignorePatterns,
47
+ },
48
+ });
49
+ }
50
+ /** Check if ripgrep is installed. */
51
+ async status() {
52
+ return this._http.request({
53
+ method: 'GET',
54
+ path: '/files/search/init',
55
+ });
56
+ }
57
+ /** Install ripgrep (one-time setup). */
58
+ async init() {
59
+ return this._http.request({
60
+ method: 'POST',
61
+ path: '/files/search/init',
62
+ });
63
+ }
64
+ }
65
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/runtime/search.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,KAAwB;QAAxB,UAAK,GAAL,KAAK,CAAmB;IAAG,CAAC;IAEzD,iDAAiD;IACjD,KAAK,CAAC,OAAO,CAAC,MAA2B;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAwB;YAC/C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE;gBACL,CAAC,EAAE,MAAM,CAAC,KAAK;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,cAAc,EAAE,MAAM,CAAC,aAAa;gBACpC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,WAAW,EAAE,MAAM,CAAC,UAAU;gBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,aAAa,EAAE,MAAM,CAAC,YAAY;gBAClC,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,cAAc,EAAE,MAAM,CAAC,aAAa;gBACpC,YAAY,EAAE,MAAM,CAAC,WAAW;gBAChC,eAAe,EAAE,MAAM,CAAC,cAAc;aACvC;SACF,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,KAAK,CAAC,MAAwB;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE;gBACL,CAAC,EAAE,MAAM,CAAC,KAAK;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,cAAc,EAAE,MAAM,CAAC,aAAa;gBACpC,cAAc,EAAE,MAAM,CAAC,aAAa;gBACpC,WAAW,EAAE,MAAM,CAAC,UAAU;gBAC9B,eAAe,EAAE,MAAM,CAAC,cAAc;aACvC;SACF,CAAC,CAAC;IACL,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB;YAC9C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,oBAAoB;SAC3B,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import type { RuntimeHttpClient } from '../runtime-http.js';
2
+ import type { TerminalCreateParams, TerminalSession, TerminalScrollbackResponse } from '../types/runtime.js';
3
+ /**
4
+ * Terminal sessions inside the workspace runtime.
5
+ *
6
+ * ```ts
7
+ * const term = await rt.terminal.create({ shell: '/bin/bash', cols: 120, rows: 40 });
8
+ * const sessions = await rt.terminal.list();
9
+ * await rt.terminal.close(term.id);
10
+ * ```
11
+ */
12
+ export declare class TerminalResource {
13
+ private readonly _http;
14
+ constructor(_http: RuntimeHttpClient);
15
+ /** Create a new terminal session. */
16
+ create(params?: TerminalCreateParams): Promise<TerminalSession>;
17
+ /** List active terminal sessions. */
18
+ list(): Promise<TerminalSession[]>;
19
+ /** Close a terminal session. */
20
+ close(sessionId: string): Promise<{
21
+ success: boolean;
22
+ terminal_id: string;
23
+ }>;
24
+ /** Get scrollback buffer for a session. */
25
+ scrollback(sessionId: string, params?: {
26
+ bytes?: number;
27
+ }): Promise<TerminalScrollbackResponse>;
28
+ }
29
+ //# sourceMappingURL=terminal.d.ts.map