@managoat/fountain-sdk 1.27.0 → 1.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/client.d.ts +28 -6
- package/dist/client.js +28 -5
- package/dist/client.js.map +1 -1
- package/dist/generated/openapi.d.ts +747 -79
- package/dist/http.d.ts +1 -1
- package/dist/http.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schemas.d.ts +4 -0
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,18 @@ server releases.
|
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
+
## [1.28.0] - 2026-09-10
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Wire types for the OAuth client registry (#1125): `/api/oauth/clients` and
|
|
19
|
+
`/api/oauth/clients/{id}`, plus `OAuthClient`, `OAuthClientRequest`,
|
|
20
|
+
`OAuthClientUpdateRequest` and `OAuthClientListResponse`. The hand-written
|
|
21
|
+
layer does not model these; registering an app is a once-per-app setup step
|
|
22
|
+
a person does in the console or with `fountain oauth-client`, and the SDK's
|
|
23
|
+
work starts with the API key the flow mints. Reach them through the raw
|
|
24
|
+
client if you need them.
|
|
25
|
+
|
|
14
26
|
## [1.27.0] — 2026-09-10
|
|
15
27
|
|
|
16
28
|
### Added
|
package/dist/client.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Conversation } from "./conversation.ts";
|
|
|
5
5
|
import { Agents, Connections, Environments, Vaults } from "./resources.ts";
|
|
6
6
|
import { Team } from "./team.ts";
|
|
7
7
|
import { type StreamRequest } from "./sse.ts";
|
|
8
|
-
import type { AuthMe, Catalog, ConversationRecord, LogEvent, SandboxDiff, SandboxFile, SandboxListing, SandboxRecord, SearchHit } from "./types.ts";
|
|
8
|
+
import type { AuthMe, Catalog, ConversationRecord, LogEvent, SandboxDiff, SandboxFile, SandboxListing, SandboxStatus, SandboxRecord, SearchHit } from "./types.ts";
|
|
9
9
|
export interface FountainOptions extends ConfigOptions {
|
|
10
10
|
/** Swap the fetch implementation — a test server, a proxy, an instrumented one. */
|
|
11
11
|
fetch?: FetchLike;
|
|
@@ -146,9 +146,9 @@ export declare class Fountain {
|
|
|
146
146
|
* name (ADR 0039). `path` is absolute or relative to the agent's working
|
|
147
147
|
* directory; omit it for that directory itself.
|
|
148
148
|
*
|
|
149
|
-
* The
|
|
150
|
-
* whole of what the API offers on a disk; there is
|
|
151
|
-
* command you send a prompt. They need a `full`-scope key, answer only for
|
|
149
|
+
* The four disk reads — this, `sandboxFile`, `sandboxGitStatus` and
|
|
150
|
+
* `sandboxDiff` — are the whole of what the API offers on a disk; there is
|
|
151
|
+
* no exec, and to run a command you send a prompt. They need a `full`-scope key, answer only for
|
|
152
152
|
* a `ready` sandbox (a parked one is not woken: `sandbox_not_ready`), are
|
|
153
153
|
* confined to `/home/sprite` and the runtime's workspace
|
|
154
154
|
* (`path_outside_sandbox`), and come back redacted — the sandbox's
|
|
@@ -158,15 +158,37 @@ export declare class Fountain {
|
|
|
158
158
|
/**
|
|
159
159
|
* One file on a sandbox. `content` is the text when `encoding` is `utf-8`
|
|
160
160
|
* and base64 otherwise; `size` is the whole file and `truncated` says
|
|
161
|
-
* whether `content`
|
|
161
|
+
* whether `content` is short of it. That is true when the file is longer
|
|
162
|
+
* than `maxBytes` (default 256 KiB, at most 4 MiB), and also when redaction
|
|
163
|
+
* grows what was read past that cap.
|
|
162
164
|
*/
|
|
163
165
|
sandboxFile(id: string, path: string, opts?: {
|
|
164
166
|
maxBytes?: number;
|
|
165
167
|
}): Promise<SandboxFile>;
|
|
168
|
+
/**
|
|
169
|
+
* `git status` of the repository containing `path` on a sandbox (default:
|
|
170
|
+
* the agent's working directory), one entry per changed path.
|
|
171
|
+
*
|
|
172
|
+
* This is the read that shows a file the agent made and never staged:
|
|
173
|
+
* `sandboxDiff` compares tracked content, so an untracked file is invisible
|
|
174
|
+
* to it whatever options it is given. Entries cover the whole repository
|
|
175
|
+
* whatever `path` names inside it, and each entry's `path` is relative to
|
|
176
|
+
* `repoRoot` rather than to the sandbox home, so do not hand one straight
|
|
177
|
+
* back to `sandboxFile` without joining it.
|
|
178
|
+
*
|
|
179
|
+
* `untracked` is `normal` (the default, an untracked directory collapses to
|
|
180
|
+
* one entry), `all` (every file under it) or `no`.
|
|
181
|
+
*/
|
|
182
|
+
sandboxGitStatus(id: string, opts?: {
|
|
183
|
+
path?: string;
|
|
184
|
+
untracked?: "normal" | "all" | "no";
|
|
185
|
+
}): Promise<SandboxStatus>;
|
|
166
186
|
/**
|
|
167
187
|
* `git diff` of the repository containing `path` on a sandbox (default:
|
|
168
188
|
* the agent's working directory). `staged` diffs the index; `ref` diffs
|
|
169
|
-
* against a commit, branch or tag
|
|
189
|
+
* against a commit, branch or tag. With neither, the comparison is the
|
|
190
|
+
* working tree against the index, so work the agent staged is absent from
|
|
191
|
+
* it — pass `ref: "HEAD"` to see staged and unstaged together.
|
|
170
192
|
*/
|
|
171
193
|
sandboxDiff(id: string, opts?: {
|
|
172
194
|
path?: string;
|
package/dist/client.js
CHANGED
|
@@ -171,9 +171,9 @@ export class Fountain {
|
|
|
171
171
|
* name (ADR 0039). `path` is absolute or relative to the agent's working
|
|
172
172
|
* directory; omit it for that directory itself.
|
|
173
173
|
*
|
|
174
|
-
* The
|
|
175
|
-
* whole of what the API offers on a disk; there is
|
|
176
|
-
* command you send a prompt. They need a `full`-scope key, answer only for
|
|
174
|
+
* The four disk reads — this, `sandboxFile`, `sandboxGitStatus` and
|
|
175
|
+
* `sandboxDiff` — are the whole of what the API offers on a disk; there is
|
|
176
|
+
* no exec, and to run a command you send a prompt. They need a `full`-scope key, answer only for
|
|
177
177
|
* a `ready` sandbox (a parked one is not woken: `sandbox_not_ready`), are
|
|
178
178
|
* confined to `/home/sprite` and the runtime's workspace
|
|
179
179
|
* (`path_outside_sandbox`), and come back redacted — the sandbox's
|
|
@@ -185,17 +185,40 @@ export class Fountain {
|
|
|
185
185
|
/**
|
|
186
186
|
* One file on a sandbox. `content` is the text when `encoding` is `utf-8`
|
|
187
187
|
* and base64 otherwise; `size` is the whole file and `truncated` says
|
|
188
|
-
* whether `content`
|
|
188
|
+
* whether `content` is short of it. That is true when the file is longer
|
|
189
|
+
* than `maxBytes` (default 256 KiB, at most 4 MiB), and also when redaction
|
|
190
|
+
* grows what was read past that cap.
|
|
189
191
|
*/
|
|
190
192
|
async sandboxFile(id, path, opts = {}) {
|
|
191
193
|
return this.api.data("GET", `/api/sandboxes/${id}/file`, {
|
|
192
194
|
query: { path, max_bytes: opts.maxBytes },
|
|
193
195
|
});
|
|
194
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* `git status` of the repository containing `path` on a sandbox (default:
|
|
199
|
+
* the agent's working directory), one entry per changed path.
|
|
200
|
+
*
|
|
201
|
+
* This is the read that shows a file the agent made and never staged:
|
|
202
|
+
* `sandboxDiff` compares tracked content, so an untracked file is invisible
|
|
203
|
+
* to it whatever options it is given. Entries cover the whole repository
|
|
204
|
+
* whatever `path` names inside it, and each entry's `path` is relative to
|
|
205
|
+
* `repoRoot` rather than to the sandbox home, so do not hand one straight
|
|
206
|
+
* back to `sandboxFile` without joining it.
|
|
207
|
+
*
|
|
208
|
+
* `untracked` is `normal` (the default, an untracked directory collapses to
|
|
209
|
+
* one entry), `all` (every file under it) or `no`.
|
|
210
|
+
*/
|
|
211
|
+
async sandboxGitStatus(id, opts = {}) {
|
|
212
|
+
return this.api.data("GET", `/api/sandboxes/${id}/git-status`, {
|
|
213
|
+
query: { path: opts.path, untracked: opts.untracked },
|
|
214
|
+
});
|
|
215
|
+
}
|
|
195
216
|
/**
|
|
196
217
|
* `git diff` of the repository containing `path` on a sandbox (default:
|
|
197
218
|
* the agent's working directory). `staged` diffs the index; `ref` diffs
|
|
198
|
-
* against a commit, branch or tag
|
|
219
|
+
* against a commit, branch or tag. With neither, the comparison is the
|
|
220
|
+
* working tree against the index, so work the agent staged is absent from
|
|
221
|
+
* it — pass `ref: "HEAD"` to see staged and unstaged together.
|
|
199
222
|
*/
|
|
200
223
|
async sandboxDiff(id, opts = {}) {
|
|
201
224
|
return this.api.data("GET", `/api/sandboxes/${id}/diff`, {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuC,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,aAAa,EAA2C,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,GAAG,EAAmB,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,UAAU,EAAsB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|