@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
|
@@ -1538,6 +1538,55 @@ export interface paths {
|
|
|
1538
1538
|
patch?: never;
|
|
1539
1539
|
trace?: never;
|
|
1540
1540
|
};
|
|
1541
|
+
"/api/oauth/clients": {
|
|
1542
|
+
parameters: {
|
|
1543
|
+
query?: never;
|
|
1544
|
+
header?: never;
|
|
1545
|
+
path?: never;
|
|
1546
|
+
cookie?: never;
|
|
1547
|
+
};
|
|
1548
|
+
/**
|
|
1549
|
+
* List OAuth clients
|
|
1550
|
+
* @description The OAuth clients this account registered. Each one is in development mode until an operator publishes it, which means it signs in its owner and refuses every other account.
|
|
1551
|
+
*/
|
|
1552
|
+
get: operations["FountainWeb.OAuthClientController.index"];
|
|
1553
|
+
put?: never;
|
|
1554
|
+
/**
|
|
1555
|
+
* Register an OAuth client
|
|
1556
|
+
* @description Register an app that can offer "Sign in with Fountain". The response carries the generated `client_id` to put in the app. Redirect URIs match exactly, must be https unless they are loopback, and a loopback URI matches on any port. The client starts in development mode, so it signs in nobody but you. A sandbox's public HTTPS URL is valid.
|
|
1557
|
+
*/
|
|
1558
|
+
post: operations["FountainWeb.OAuthClientController.create"];
|
|
1559
|
+
delete?: never;
|
|
1560
|
+
options?: never;
|
|
1561
|
+
head?: never;
|
|
1562
|
+
patch?: never;
|
|
1563
|
+
trace?: never;
|
|
1564
|
+
};
|
|
1565
|
+
"/api/oauth/clients/{id}": {
|
|
1566
|
+
parameters: {
|
|
1567
|
+
query?: never;
|
|
1568
|
+
header?: never;
|
|
1569
|
+
path?: never;
|
|
1570
|
+
cookie?: never;
|
|
1571
|
+
};
|
|
1572
|
+
/** Get an OAuth client */
|
|
1573
|
+
get: operations["FountainWeb.OAuthClientController.show"];
|
|
1574
|
+
put?: never;
|
|
1575
|
+
post?: never;
|
|
1576
|
+
/**
|
|
1577
|
+
* Unregister an OAuth client
|
|
1578
|
+
* @description Deleting a client stops new sign-ins through it. Keys it already issued are ordinary API keys and outlive it — revoke those under the API keys endpoint. A published client can only be removed by an operator, because every account signs in through it.
|
|
1579
|
+
*/
|
|
1580
|
+
delete: operations["FountainWeb.OAuthClientController.delete"];
|
|
1581
|
+
options?: never;
|
|
1582
|
+
head?: never;
|
|
1583
|
+
/**
|
|
1584
|
+
* Change an OAuth client
|
|
1585
|
+
* @description Rename the client or replace its redirect URIs. `client_id` never changes. Publishing is not a self-serve operation, and a published client can only be changed by an operator.
|
|
1586
|
+
*/
|
|
1587
|
+
patch: operations["FountainWeb.OAuthClientController.update"];
|
|
1588
|
+
trace?: never;
|
|
1589
|
+
};
|
|
1541
1590
|
"/api/oauth/revoke": {
|
|
1542
1591
|
parameters: {
|
|
1543
1592
|
query?: never;
|
|
@@ -1708,7 +1757,7 @@ export interface paths {
|
|
|
1708
1757
|
};
|
|
1709
1758
|
/**
|
|
1710
1759
|
* Read a file on a sandbox
|
|
1711
|
-
* @description The bytes of one file, redacted: every value of the sandbox's environment and vault is replaced with `[REDACTED]`, as in the transcript. `content` is the text when it is valid UTF-8 (`encoding: utf-8`) and base64 otherwise (`encoding: base64`). `size` is the whole file; `truncated` says whether `content`
|
|
1760
|
+
* @description The bytes of one file, redacted: every value of the sandbox's environment and vault is replaced with `[REDACTED]`, as in the transcript. `content` is the text when it is valid UTF-8 (`encoding: utf-8`) and base64 otherwise (`encoding: base64`). `size` is the whole file; `truncated` says whether `content` is short of it, which happens when the file is longer than `max_bytes` and also when redaction grows what was read past that cap. Full scope.
|
|
1712
1761
|
*/
|
|
1713
1762
|
get: operations["FountainWeb.SandboxFilesController.show"];
|
|
1714
1763
|
put?: never;
|
|
@@ -1739,6 +1788,26 @@ export interface paths {
|
|
|
1739
1788
|
patch?: never;
|
|
1740
1789
|
trace?: never;
|
|
1741
1790
|
};
|
|
1791
|
+
"/api/sandboxes/{sandbox_id}/git-status": {
|
|
1792
|
+
parameters: {
|
|
1793
|
+
query?: never;
|
|
1794
|
+
header?: never;
|
|
1795
|
+
path?: never;
|
|
1796
|
+
cookie?: never;
|
|
1797
|
+
};
|
|
1798
|
+
/**
|
|
1799
|
+
* git status on a sandbox
|
|
1800
|
+
* @description `git status` of the repository containing `path` (default: the agent's working directory), one entry per changed path. This is the view that shows a file the agent created and never staged: `/diff` compares tracked content, so an untracked file is invisible to it whatever flags it is given. Entries cover the whole repository whatever `path` names inside it, and each entry's `path` is relative to `repo_root`. `index` and `worktree` are git's two porcelain columns read separately, so a file staged and then edited again reports a state in both; an untracked file reads `untracked` in both. `renamed_from` is set only where that side is a rename or a copy. `branch` is null on a detached HEAD. A directory outside any repository is `422 not_a_repository`. Full scope.
|
|
1801
|
+
*/
|
|
1802
|
+
get: operations["FountainWeb.SandboxFilesController.git_status"];
|
|
1803
|
+
put?: never;
|
|
1804
|
+
post?: never;
|
|
1805
|
+
delete?: never;
|
|
1806
|
+
options?: never;
|
|
1807
|
+
head?: never;
|
|
1808
|
+
patch?: never;
|
|
1809
|
+
trace?: never;
|
|
1810
|
+
};
|
|
1742
1811
|
"/api/search": {
|
|
1743
1812
|
parameters: {
|
|
1744
1813
|
query?: never;
|
|
@@ -2615,9 +2684,12 @@ export interface components {
|
|
|
2615
2684
|
model: string | null;
|
|
2616
2685
|
name: string;
|
|
2617
2686
|
/** @description Per-tool permission policy: a map of key to verdict, plus an optional "default" key. A key is matched against the tool card's title first and then ACP's kind (execute, edit, read, fetch, …); prefer a kind, because claude titles a tool call with the command it is about to run. Unset keys fall back to the default, and an unset default is auto_allow — today's behaviour. "ask" holds the tool until a human answers it on the conversation stream, and denies if nobody does before the timeout. A runtime that never asks (opencode) refuses anything stricter than auto_allow with 422 permission_policy_unenforceable. */
|
|
2618
|
-
permission_policy?: {
|
|
2619
|
-
|
|
2620
|
-
|
|
2687
|
+
permission_policy?: ({
|
|
2688
|
+
/** @description Seconds a permission request that outlived its turn waits before it is denied (#1635). Names no tool, so it is the one key whose value is a number rather than a verdict, which is why the value schema below is a union. Absent leaves the global ask timeout. A request may shorten it with `_meta.fountain.timeout` on its own session/request_permission, and may not lengthen it. A launch may only shorten what the agent set, or the global ask timeout where the agent set nothing. Capped at a year, which is where the deadline stops fitting in a timestamp rather than a limit on how long a wait is useful. */
|
|
2689
|
+
ask_timeout?: number;
|
|
2690
|
+
} & {
|
|
2691
|
+
[key: string]: ("auto_allow" | "ask" | "auto_deny") | number;
|
|
2692
|
+
}) | null;
|
|
2621
2693
|
/** @enum {string} */
|
|
2622
2694
|
runtime: "claude" | "codex" | "gemini" | "opencode" | "acp" | "fountain-fixture";
|
|
2623
2695
|
/** @description The command the acp runtime launches inside the sandbox, as a shell line resolved there (for example `chant acp`). Required when runtime is acp, and rejected on every other runtime, which resolves its own executable. A free string by design: it runs under the same isolation as an environment's setup script. */
|
|
@@ -2670,9 +2742,12 @@ export interface components {
|
|
|
2670
2742
|
model?: string | null;
|
|
2671
2743
|
name: string;
|
|
2672
2744
|
/** @description Per-tool permission policy: a map of key to verdict, plus an optional "default" key. A key is matched against the tool card's title first and then ACP's kind (execute, edit, read, fetch, …); prefer a kind, because claude titles a tool call with the command it is about to run. Unset keys fall back to the default, and an unset default is auto_allow. "ask" holds the tool until a human answers it on the conversation stream, and denies if nobody does before the timeout. A conversation may narrow this at launch, never widen it. A runtime that never asks (opencode) refuses anything stricter than auto_allow with 422 permission_policy_unenforceable. */
|
|
2673
|
-
permission_policy?: {
|
|
2674
|
-
|
|
2675
|
-
|
|
2745
|
+
permission_policy?: ({
|
|
2746
|
+
/** @description Seconds a permission request that outlived its turn waits before it is denied (#1635). Names no tool, so it is the one key whose value is a number rather than a verdict, which is why the value schema below is a union. Absent leaves the global ask timeout. A request may shorten it with `_meta.fountain.timeout` on its own session/request_permission, and may not lengthen it. A launch may only shorten what the agent set, or the global ask timeout where the agent set nothing. Capped at a year, which is where the deadline stops fitting in a timestamp rather than a limit on how long a wait is useful. */
|
|
2747
|
+
ask_timeout?: number;
|
|
2748
|
+
} & {
|
|
2749
|
+
[key: string]: ("auto_allow" | "ask" | "auto_deny") | number;
|
|
2750
|
+
}) | null;
|
|
2676
2751
|
/** @enum {string} */
|
|
2677
2752
|
runtime: "claude" | "codex" | "gemini" | "opencode" | "acp" | "fountain-fixture";
|
|
2678
2753
|
/** @description The command the acp runtime launches inside the sandbox, as a shell line resolved there (for example `chant acp`). Required when runtime is acp, and rejected on every other runtime, which resolves its own executable. A free string by design: it runs under the same isolation as an environment's setup script. */
|
|
@@ -2722,9 +2797,12 @@ export interface components {
|
|
|
2722
2797
|
model?: string | null;
|
|
2723
2798
|
name?: string;
|
|
2724
2799
|
/** @description Per-tool permission policy: a map of key to verdict, plus an optional "default" key. A key is matched against the tool card's title first and then ACP's kind (execute, edit, read, fetch, …); prefer a kind, because claude titles a tool call with the command it is about to run. Unset keys fall back to the default, and an unset default is auto_allow. "ask" holds the tool until a human answers it on the conversation stream, and denies if nobody does before the timeout. A conversation may narrow this at launch, never widen it. A runtime that never asks (opencode) refuses anything stricter than auto_allow with 422 permission_policy_unenforceable. */
|
|
2725
|
-
permission_policy?: {
|
|
2726
|
-
|
|
2727
|
-
|
|
2800
|
+
permission_policy?: ({
|
|
2801
|
+
/** @description Seconds a permission request that outlived its turn waits before it is denied (#1635). Names no tool, so it is the one key whose value is a number rather than a verdict, which is why the value schema below is a union. Absent leaves the global ask timeout. A request may shorten it with `_meta.fountain.timeout` on its own session/request_permission, and may not lengthen it. A launch may only shorten what the agent set, or the global ask timeout where the agent set nothing. Capped at a year, which is where the deadline stops fitting in a timestamp rather than a limit on how long a wait is useful. */
|
|
2802
|
+
ask_timeout?: number;
|
|
2803
|
+
} & {
|
|
2804
|
+
[key: string]: ("auto_allow" | "ask" | "auto_deny") | number;
|
|
2805
|
+
}) | null;
|
|
2728
2806
|
/** @enum {string} */
|
|
2729
2807
|
runtime?: "claude" | "codex" | "gemini" | "opencode" | "acp" | "fountain-fixture";
|
|
2730
2808
|
/** @description The command the acp runtime launches inside the sandbox, as a shell line resolved there (for example `chant acp`). Required when runtime is acp, and rejected on every other runtime, which resolves its own executable. A free string by design: it runs under the same isolation as an environment's setup script. */
|
|
@@ -3541,9 +3619,12 @@ export interface components {
|
|
|
3541
3619
|
/** Format: uuid */
|
|
3542
3620
|
parent_conversation_id?: string | null;
|
|
3543
3621
|
/** @description The per-launch permission override this conversation was started with, or null if it had none. The policy actually in force is this merged with the agent's, taking the stricter of the two per tool. */
|
|
3544
|
-
permission_policy?: {
|
|
3545
|
-
|
|
3546
|
-
|
|
3622
|
+
permission_policy?: ({
|
|
3623
|
+
/** @description Seconds a permission request that outlived its turn waits before it is denied (#1635). Names no tool, so it is the one key whose value is a number rather than a verdict, which is why the value schema below is a union. Absent leaves the global ask timeout. A request may shorten it with `_meta.fountain.timeout` on its own session/request_permission, and may not lengthen it. A launch may only shorten what the agent set, or the global ask timeout where the agent set nothing. Capped at a year, which is where the deadline stops fitting in a timestamp rather than a limit on how long a wait is useful. */
|
|
3624
|
+
ask_timeout?: number;
|
|
3625
|
+
} & {
|
|
3626
|
+
[key: string]: ("auto_allow" | "ask" | "auto_deny") | number;
|
|
3627
|
+
}) | null;
|
|
3547
3628
|
/** @enum {string} */
|
|
3548
3629
|
runtime: "claude" | "codex" | "gemini" | "opencode" | "acp" | "fountain-fixture";
|
|
3549
3630
|
runtime_session_id?: string | null;
|
|
@@ -3583,18 +3664,23 @@ export interface components {
|
|
|
3583
3664
|
environment_id?: string | null;
|
|
3584
3665
|
/** @description With channel_id: skip the resume and open a new conversation (201), which then becomes the channel's binding. Sent by a chat harness relaying its owner's rotate command. Ignored without channel_id. */
|
|
3585
3666
|
fresh?: boolean | null;
|
|
3586
|
-
/** @description Optional images to attach to the initial prompt. */
|
|
3667
|
+
/** @description Optional images to attach to the initial prompt. They require that prompt: images with no opening text are refused with 422 invalid_prompt, and an image whose media_type is unsupported or whose decoded bytes are empty or over the 10MB ceiling is refused with 422 invalid_images. Both refusals happen before a sandbox is reserved. */
|
|
3587
3668
|
images?: components["schemas"]["ImageInput"][] | null;
|
|
3588
3669
|
/** @description Key/value strings to stamp on the conversation. At most 32 entries; a key is at most 64 bytes and a value at most 256 bytes, and a 422 names the offending key under `errors.labels`. With channel_id, a resume merges these into the conversation it hands back rather than dropping them. */
|
|
3589
3670
|
labels?: {
|
|
3590
3671
|
[key: string]: string;
|
|
3591
3672
|
} | null;
|
|
3592
3673
|
/** @description Per-launch permission override (#939). Keys are matched against the tool card's title first and then ACP's kind (execute, edit, read, fetch, …); "default" covers the rest. Prefer a kind: claude titles a tool call with the command it is about to run, so a title matches one invocation only. Merged with the agent's own policy, taking the stricter of the two. It may only narrow: a policy that would loosen any tool is refused with 422 permission_policy_widens rather than silently clamped, and one the runtime never consults is refused with 422 permission_policy_unenforceable. */
|
|
3593
|
-
permission_policy?: {
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3674
|
+
permission_policy?: ({
|
|
3675
|
+
/** @description Seconds a permission request that outlived its turn waits before it is denied (#1635). Names no tool, so it is the one key whose value is a number rather than a verdict, which is why the value schema below is a union. Absent leaves the global ask timeout. A request may shorten it with `_meta.fountain.timeout` on its own session/request_permission, and may not lengthen it. A launch may only shorten what the agent set, or the global ask timeout where the agent set nothing. Capped at a year, which is where the deadline stops fitting in a timestamp rather than a limit on how long a wait is useful. */
|
|
3676
|
+
ask_timeout?: number;
|
|
3677
|
+
} & {
|
|
3678
|
+
[key: string]: ("auto_allow" | "ask" | "auto_deny") | number;
|
|
3679
|
+
}) | null;
|
|
3680
|
+
/** @description Optional first turn prompt. A launch may open with no prompt at all, but a prompt that is present must carry words: blank and whitespace-only text is refused with 422 invalid_prompt, before the launch reserves a sandbox. */
|
|
3597
3681
|
prompt?: string;
|
|
3682
|
+
/** @description When a fresh start reaches the tenant or the fleet concurrency ceiling, wait in the bounded sandbox queue and return 202 with a SandboxRequest instead of 429 or 503 (ADR 0042). Starts carrying images or an explicit sandbox_id are never queued, and a full queue keeps the immediate error. */
|
|
3683
|
+
queue?: boolean | null;
|
|
3598
3684
|
/**
|
|
3599
3685
|
* @description none omits the sandbox Fountain credential on provision and every wake. Requires a fresh ephemeral sandbox; unavailable on attach or policy-changing channel resume.
|
|
3600
3686
|
* @enum {string}
|
|
@@ -3997,6 +4083,56 @@ export interface components {
|
|
|
3997
4083
|
detail: string;
|
|
3998
4084
|
};
|
|
3999
4085
|
};
|
|
4086
|
+
/**
|
|
4087
|
+
* OAuthClient
|
|
4088
|
+
* @description A tenant-owned OAuth client. Unpublished clients are in development mode and can sign in only their owner. Their redirect origins are also admitted by CORS.
|
|
4089
|
+
*/
|
|
4090
|
+
OAuthClient: {
|
|
4091
|
+
/** @description The client_id sent to /oauth/authorize. */
|
|
4092
|
+
client_id: string;
|
|
4093
|
+
/** Format: date-time */
|
|
4094
|
+
created_at: string;
|
|
4095
|
+
/** Format: uuid */
|
|
4096
|
+
id: string;
|
|
4097
|
+
/** @description Shown on the consent page. */
|
|
4098
|
+
name: string;
|
|
4099
|
+
/** @description Origins derived from redirect_uris and admitted by CORS. A loopback origin is admitted on any port, not only the port shown here. */
|
|
4100
|
+
origins: string[];
|
|
4101
|
+
/** @description False means development mode with owner-only sign-in. */
|
|
4102
|
+
published: boolean;
|
|
4103
|
+
/** @description Exact match, except that an unpublished loopback URI matches on any port. */
|
|
4104
|
+
redirect_uris: string[];
|
|
4105
|
+
/** Format: date-time */
|
|
4106
|
+
updated_at: string;
|
|
4107
|
+
};
|
|
4108
|
+
/** OAuthClientListResponse */
|
|
4109
|
+
OAuthClientListResponse: {
|
|
4110
|
+
data: components["schemas"]["OAuthClient"][];
|
|
4111
|
+
};
|
|
4112
|
+
/**
|
|
4113
|
+
* OAuthClientRequest
|
|
4114
|
+
* @example {
|
|
4115
|
+
* "name": "Notes",
|
|
4116
|
+
* "redirect_uris": [
|
|
4117
|
+
* "https://abc123.sprites.app/callback",
|
|
4118
|
+
* "http://localhost:5173/callback"
|
|
4119
|
+
* ]
|
|
4120
|
+
* }
|
|
4121
|
+
*/
|
|
4122
|
+
OAuthClientRequest: {
|
|
4123
|
+
name: string;
|
|
4124
|
+
redirect_uris: string[];
|
|
4125
|
+
};
|
|
4126
|
+
/**
|
|
4127
|
+
* OAuthClientUpdateRequest
|
|
4128
|
+
* @example {
|
|
4129
|
+
* "name": "Notes for Fountain"
|
|
4130
|
+
* }
|
|
4131
|
+
*/
|
|
4132
|
+
OAuthClientUpdateRequest: {
|
|
4133
|
+
name?: string;
|
|
4134
|
+
redirect_uris?: string[];
|
|
4135
|
+
};
|
|
4000
4136
|
/** OAuthTokenRequest */
|
|
4001
4137
|
OAuthTokenRequest: {
|
|
4002
4138
|
client_id: string;
|
|
@@ -4211,6 +4347,26 @@ export interface components {
|
|
|
4211
4347
|
/** Format: uuid */
|
|
4212
4348
|
vault_id?: string | null;
|
|
4213
4349
|
};
|
|
4350
|
+
/**
|
|
4351
|
+
* SandboxChange
|
|
4352
|
+
* @description One path `git status` reports, relative to `repo_root` (ADR 0039). An untracked file reads `untracked` on both sides, which is what git reports for it and the one state a diff cannot show.
|
|
4353
|
+
*/
|
|
4354
|
+
SandboxChange: {
|
|
4355
|
+
/**
|
|
4356
|
+
* @description The staged side: what a commit would record.
|
|
4357
|
+
* @enum {string}
|
|
4358
|
+
*/
|
|
4359
|
+
index: "added" | "copied" | "deleted" | "ignored" | "modified" | "renamed" | "type_changed" | "unchanged" | "unmerged" | "untracked";
|
|
4360
|
+
/** @description Relative to `repo_root`. */
|
|
4361
|
+
path: string;
|
|
4362
|
+
/** @description The old path, when that side is a rename or a copy; null otherwise. */
|
|
4363
|
+
renamed_from?: string | null;
|
|
4364
|
+
/**
|
|
4365
|
+
* @description The unstaged side: what the disk holds beyond the index.
|
|
4366
|
+
* @enum {string}
|
|
4367
|
+
*/
|
|
4368
|
+
worktree: "added" | "copied" | "deleted" | "ignored" | "modified" | "renamed" | "type_changed" | "unchanged" | "unmerged" | "untracked";
|
|
4369
|
+
};
|
|
4214
4370
|
/**
|
|
4215
4371
|
* SandboxConversation
|
|
4216
4372
|
* @description A conversation on a sandbox, as the sandbox lists it.
|
|
@@ -4292,13 +4448,13 @@ export interface components {
|
|
|
4292
4448
|
diff: string;
|
|
4293
4449
|
/** @description The directory the diff was asked for, absolute. */
|
|
4294
4450
|
path: string;
|
|
4295
|
-
/** @description The revision diffed against, or null
|
|
4451
|
+
/** @description The revision diffed against, or null when the caller named none. */
|
|
4296
4452
|
ref?: string | null;
|
|
4297
4453
|
/** @description The repository's top-level directory. */
|
|
4298
4454
|
repo_root: string;
|
|
4299
4455
|
/** @description True when the index was diffed (`--cached`). */
|
|
4300
4456
|
staged: boolean;
|
|
4301
|
-
/** @description True when `diff`
|
|
4457
|
+
/** @description True when `diff` is not the whole diff: either it is longer than `max_bytes`, or redaction grew what was read past it. False means `diff` is everything. */
|
|
4302
4458
|
truncated: boolean;
|
|
4303
4459
|
};
|
|
4304
4460
|
/** SandboxDiffResponse */
|
|
@@ -4331,7 +4487,7 @@ export interface components {
|
|
|
4331
4487
|
path: string;
|
|
4332
4488
|
/** @description The whole file, in bytes. */
|
|
4333
4489
|
size: number;
|
|
4334
|
-
/** @description True when `content`
|
|
4490
|
+
/** @description True when `content` is not the whole file: either the file is longer than `max_bytes`, or redaction grew what was read past it. False means `content` is everything. */
|
|
4335
4491
|
truncated: boolean;
|
|
4336
4492
|
};
|
|
4337
4493
|
/** SandboxFileResponse */
|
|
@@ -4357,10 +4513,63 @@ export interface components {
|
|
|
4357
4513
|
SandboxListingResponse: {
|
|
4358
4514
|
data: components["schemas"]["SandboxListing"];
|
|
4359
4515
|
};
|
|
4516
|
+
/**
|
|
4517
|
+
* SandboxRequest
|
|
4518
|
+
* @description Work waiting for sandbox capacity (ADR 0042).
|
|
4519
|
+
*/
|
|
4520
|
+
SandboxRequest: {
|
|
4521
|
+
/** Format: uuid */
|
|
4522
|
+
agent_id: string;
|
|
4523
|
+
/**
|
|
4524
|
+
* Format: uuid
|
|
4525
|
+
* @description The conversation the request became, once it started.
|
|
4526
|
+
*/
|
|
4527
|
+
conversation_id?: string | null;
|
|
4528
|
+
error?: string | null;
|
|
4529
|
+
/** Format: uuid */
|
|
4530
|
+
id: string;
|
|
4531
|
+
/** Format: date-time */
|
|
4532
|
+
inserted_at?: string;
|
|
4533
|
+
/** @enum {string} */
|
|
4534
|
+
kind: "start" | "schedule_run";
|
|
4535
|
+
/** @description One-based place in the tenant's queue; null once it stops waiting. */
|
|
4536
|
+
position?: number | null;
|
|
4537
|
+
source?: string | null;
|
|
4538
|
+
/** @enum {string} */
|
|
4539
|
+
status: "queued" | "starting" | "started" | "cancelled" | "expired" | "failed";
|
|
4540
|
+
};
|
|
4541
|
+
/** SandboxRequestResponse */
|
|
4542
|
+
SandboxRequestResponse: {
|
|
4543
|
+
data: components["schemas"]["SandboxRequest"];
|
|
4544
|
+
};
|
|
4360
4545
|
/** SandboxResponse */
|
|
4361
4546
|
SandboxResponse: {
|
|
4362
4547
|
data: components["schemas"]["SandboxDetail"];
|
|
4363
4548
|
};
|
|
4549
|
+
/**
|
|
4550
|
+
* SandboxStatus
|
|
4551
|
+
* @description `git status` of a repository on a sandbox, one entry per changed path.
|
|
4552
|
+
*/
|
|
4553
|
+
SandboxStatus: {
|
|
4554
|
+
/** @description The checked-out branch, or null on a detached HEAD. */
|
|
4555
|
+
branch?: string | null;
|
|
4556
|
+
entries: components["schemas"]["SandboxChange"][];
|
|
4557
|
+
/** @description The directory the status was asked for, absolute. */
|
|
4558
|
+
path: string;
|
|
4559
|
+
/** @description The repository's top-level directory. */
|
|
4560
|
+
repo_root: string;
|
|
4561
|
+
/** @description True when the repository holds more changes than were returned. */
|
|
4562
|
+
truncated: boolean;
|
|
4563
|
+
/**
|
|
4564
|
+
* @description What was asked about untracked paths.
|
|
4565
|
+
* @enum {string}
|
|
4566
|
+
*/
|
|
4567
|
+
untracked: "normal" | "all" | "no";
|
|
4568
|
+
};
|
|
4569
|
+
/** SandboxStatusResponse */
|
|
4570
|
+
SandboxStatusResponse: {
|
|
4571
|
+
data: components["schemas"]["SandboxStatus"];
|
|
4572
|
+
};
|
|
4364
4573
|
/**
|
|
4365
4574
|
* SearchHit
|
|
4366
4575
|
* @description One search hit: what matched, and where to jump.
|
|
@@ -10248,6 +10457,15 @@ export interface operations {
|
|
|
10248
10457
|
"application/json": components["schemas"]["ConversationResponse"];
|
|
10249
10458
|
};
|
|
10250
10459
|
};
|
|
10460
|
+
/** @description Queued for sandbox capacity */
|
|
10461
|
+
202: {
|
|
10462
|
+
headers: {
|
|
10463
|
+
[name: string]: unknown;
|
|
10464
|
+
};
|
|
10465
|
+
content: {
|
|
10466
|
+
"application/json": components["schemas"]["SandboxRequestResponse"];
|
|
10467
|
+
};
|
|
10468
|
+
};
|
|
10251
10469
|
/** @description Invalid request */
|
|
10252
10470
|
400: {
|
|
10253
10471
|
headers: {
|
|
@@ -10323,7 +10541,7 @@ export interface operations {
|
|
|
10323
10541
|
"application/json": components["schemas"]["UnprocessableEntityError"];
|
|
10324
10542
|
};
|
|
10325
10543
|
};
|
|
10326
|
-
/** @description
|
|
10544
|
+
/** @description Tenant concurrency cap reached */
|
|
10327
10545
|
429: {
|
|
10328
10546
|
headers: {
|
|
10329
10547
|
[name: string]: unknown;
|
|
@@ -12122,7 +12340,7 @@ export interface operations {
|
|
|
12122
12340
|
};
|
|
12123
12341
|
};
|
|
12124
12342
|
};
|
|
12125
|
-
"FountainWeb.
|
|
12343
|
+
"FountainWeb.OAuthClientController.index": {
|
|
12126
12344
|
parameters: {
|
|
12127
12345
|
query?: never;
|
|
12128
12346
|
header?: never;
|
|
@@ -12131,14 +12349,16 @@ export interface operations {
|
|
|
12131
12349
|
};
|
|
12132
12350
|
requestBody?: never;
|
|
12133
12351
|
responses: {
|
|
12134
|
-
/** @description
|
|
12135
|
-
|
|
12352
|
+
/** @description Clients */
|
|
12353
|
+
200: {
|
|
12136
12354
|
headers: {
|
|
12137
12355
|
[name: string]: unknown;
|
|
12138
12356
|
};
|
|
12139
|
-
content
|
|
12357
|
+
content: {
|
|
12358
|
+
"application/json": components["schemas"]["OAuthClientListResponse"];
|
|
12359
|
+
};
|
|
12140
12360
|
};
|
|
12141
|
-
/** @description
|
|
12361
|
+
/** @description Missing or invalid key */
|
|
12142
12362
|
401: {
|
|
12143
12363
|
headers: {
|
|
12144
12364
|
[name: string]: unknown;
|
|
@@ -12147,7 +12367,7 @@ export interface operations {
|
|
|
12147
12367
|
"application/json": components["schemas"]["Error"];
|
|
12148
12368
|
};
|
|
12149
12369
|
};
|
|
12150
|
-
/** @description
|
|
12370
|
+
/** @description Insufficient scope */
|
|
12151
12371
|
403: {
|
|
12152
12372
|
headers: {
|
|
12153
12373
|
[name: string]: unknown;
|
|
@@ -12176,31 +12396,40 @@ export interface operations {
|
|
|
12176
12396
|
};
|
|
12177
12397
|
};
|
|
12178
12398
|
};
|
|
12179
|
-
"FountainWeb.
|
|
12399
|
+
"FountainWeb.OAuthClientController.create": {
|
|
12180
12400
|
parameters: {
|
|
12181
12401
|
query?: never;
|
|
12182
12402
|
header?: never;
|
|
12183
12403
|
path?: never;
|
|
12184
12404
|
cookie?: never;
|
|
12185
12405
|
};
|
|
12186
|
-
/** @description
|
|
12187
|
-
requestBody
|
|
12406
|
+
/** @description Client */
|
|
12407
|
+
requestBody: {
|
|
12188
12408
|
content: {
|
|
12189
|
-
"application/json": components["schemas"]["
|
|
12409
|
+
"application/json": components["schemas"]["OAuthClientRequest"];
|
|
12190
12410
|
};
|
|
12191
12411
|
};
|
|
12192
12412
|
responses: {
|
|
12193
|
-
/** @description
|
|
12194
|
-
|
|
12413
|
+
/** @description Client */
|
|
12414
|
+
201: {
|
|
12195
12415
|
headers: {
|
|
12196
12416
|
[name: string]: unknown;
|
|
12197
12417
|
};
|
|
12198
12418
|
content: {
|
|
12199
|
-
"application/json": components["schemas"]["
|
|
12419
|
+
"application/json": components["schemas"]["OAuthClient"];
|
|
12200
12420
|
};
|
|
12201
12421
|
};
|
|
12202
|
-
/** @description
|
|
12203
|
-
|
|
12422
|
+
/** @description Missing or invalid key */
|
|
12423
|
+
401: {
|
|
12424
|
+
headers: {
|
|
12425
|
+
[name: string]: unknown;
|
|
12426
|
+
};
|
|
12427
|
+
content: {
|
|
12428
|
+
"application/json": components["schemas"]["Error"];
|
|
12429
|
+
};
|
|
12430
|
+
};
|
|
12431
|
+
/** @description Insufficient scope */
|
|
12432
|
+
403: {
|
|
12204
12433
|
headers: {
|
|
12205
12434
|
[name: string]: unknown;
|
|
12206
12435
|
};
|
|
@@ -12217,24 +12446,45 @@ export interface operations {
|
|
|
12217
12446
|
"application/json": components["schemas"]["NegotiationError"];
|
|
12218
12447
|
};
|
|
12219
12448
|
};
|
|
12449
|
+
/** @description Validation error */
|
|
12450
|
+
422: {
|
|
12451
|
+
headers: {
|
|
12452
|
+
[name: string]: unknown;
|
|
12453
|
+
};
|
|
12454
|
+
content: {
|
|
12455
|
+
"application/json": components["schemas"]["Error"];
|
|
12456
|
+
};
|
|
12457
|
+
};
|
|
12458
|
+
/** @description Too Many Requests */
|
|
12459
|
+
429: {
|
|
12460
|
+
headers: {
|
|
12461
|
+
[name: string]: unknown;
|
|
12462
|
+
};
|
|
12463
|
+
content: {
|
|
12464
|
+
"application/json": components["schemas"]["Error"];
|
|
12465
|
+
};
|
|
12466
|
+
};
|
|
12220
12467
|
};
|
|
12221
12468
|
};
|
|
12222
|
-
"FountainWeb.
|
|
12469
|
+
"FountainWeb.OAuthClientController.show": {
|
|
12223
12470
|
parameters: {
|
|
12224
12471
|
query?: never;
|
|
12225
12472
|
header?: never;
|
|
12226
|
-
path
|
|
12473
|
+
path: {
|
|
12474
|
+
/** @description Client record id */
|
|
12475
|
+
id: string;
|
|
12476
|
+
};
|
|
12227
12477
|
cookie?: never;
|
|
12228
12478
|
};
|
|
12229
12479
|
requestBody?: never;
|
|
12230
12480
|
responses: {
|
|
12231
|
-
/** @description
|
|
12481
|
+
/** @description Client */
|
|
12232
12482
|
200: {
|
|
12233
12483
|
headers: {
|
|
12234
12484
|
[name: string]: unknown;
|
|
12235
12485
|
};
|
|
12236
12486
|
content: {
|
|
12237
|
-
"application/json": components["schemas"]["
|
|
12487
|
+
"application/json": components["schemas"]["OAuthClient"];
|
|
12238
12488
|
};
|
|
12239
12489
|
};
|
|
12240
12490
|
/** @description Missing or invalid key */
|
|
@@ -12246,7 +12496,7 @@ export interface operations {
|
|
|
12246
12496
|
"application/json": components["schemas"]["Error"];
|
|
12247
12497
|
};
|
|
12248
12498
|
};
|
|
12249
|
-
/** @description
|
|
12499
|
+
/** @description Insufficient scope */
|
|
12250
12500
|
403: {
|
|
12251
12501
|
headers: {
|
|
12252
12502
|
[name: string]: unknown;
|
|
@@ -12255,6 +12505,15 @@ export interface operations {
|
|
|
12255
12505
|
"application/json": components["schemas"]["Error"];
|
|
12256
12506
|
};
|
|
12257
12507
|
};
|
|
12508
|
+
/** @description No such client */
|
|
12509
|
+
404: {
|
|
12510
|
+
headers: {
|
|
12511
|
+
[name: string]: unknown;
|
|
12512
|
+
};
|
|
12513
|
+
content: {
|
|
12514
|
+
"application/json": components["schemas"]["Error"];
|
|
12515
|
+
};
|
|
12516
|
+
};
|
|
12258
12517
|
/** @description No acceptable representation */
|
|
12259
12518
|
406: {
|
|
12260
12519
|
headers: {
|
|
@@ -12275,34 +12534,27 @@ export interface operations {
|
|
|
12275
12534
|
};
|
|
12276
12535
|
};
|
|
12277
12536
|
};
|
|
12278
|
-
"FountainWeb.
|
|
12537
|
+
"FountainWeb.OAuthClientController.delete": {
|
|
12279
12538
|
parameters: {
|
|
12280
|
-
query
|
|
12281
|
-
/** @description The runner's name (lowercase, unique per account). */
|
|
12282
|
-
name: string;
|
|
12283
|
-
hostname?: string;
|
|
12284
|
-
os?: string;
|
|
12285
|
-
arch?: string;
|
|
12286
|
-
/** @description Daemon version. */
|
|
12287
|
-
version?: string;
|
|
12288
|
-
/** @description Sandbox root on the host. */
|
|
12289
|
-
root?: string;
|
|
12290
|
-
};
|
|
12539
|
+
query?: never;
|
|
12291
12540
|
header?: never;
|
|
12292
|
-
path
|
|
12541
|
+
path: {
|
|
12542
|
+
/** @description Client record id */
|
|
12543
|
+
id: string;
|
|
12544
|
+
};
|
|
12293
12545
|
cookie?: never;
|
|
12294
12546
|
};
|
|
12295
12547
|
requestBody?: never;
|
|
12296
12548
|
responses: {
|
|
12297
|
-
/** @description
|
|
12298
|
-
|
|
12549
|
+
/** @description Deleted */
|
|
12550
|
+
204: {
|
|
12299
12551
|
headers: {
|
|
12300
12552
|
[name: string]: unknown;
|
|
12301
12553
|
};
|
|
12302
12554
|
content?: never;
|
|
12303
12555
|
};
|
|
12304
|
-
/** @description
|
|
12305
|
-
|
|
12556
|
+
/** @description Missing or invalid key */
|
|
12557
|
+
401: {
|
|
12306
12558
|
headers: {
|
|
12307
12559
|
[name: string]: unknown;
|
|
12308
12560
|
};
|
|
@@ -12310,8 +12562,8 @@ export interface operations {
|
|
|
12310
12562
|
"application/json": components["schemas"]["Error"];
|
|
12311
12563
|
};
|
|
12312
12564
|
};
|
|
12313
|
-
/** @description
|
|
12314
|
-
|
|
12565
|
+
/** @description Insufficient scope */
|
|
12566
|
+
403: {
|
|
12315
12567
|
headers: {
|
|
12316
12568
|
[name: string]: unknown;
|
|
12317
12569
|
};
|
|
@@ -12319,8 +12571,8 @@ export interface operations {
|
|
|
12319
12571
|
"application/json": components["schemas"]["Error"];
|
|
12320
12572
|
};
|
|
12321
12573
|
};
|
|
12322
|
-
/** @description
|
|
12323
|
-
|
|
12574
|
+
/** @description No such client */
|
|
12575
|
+
404: {
|
|
12324
12576
|
headers: {
|
|
12325
12577
|
[name: string]: unknown;
|
|
12326
12578
|
};
|
|
@@ -12328,17 +12580,17 @@ export interface operations {
|
|
|
12328
12580
|
"application/json": components["schemas"]["Error"];
|
|
12329
12581
|
};
|
|
12330
12582
|
};
|
|
12331
|
-
/** @description
|
|
12332
|
-
|
|
12583
|
+
/** @description No acceptable representation */
|
|
12584
|
+
406: {
|
|
12333
12585
|
headers: {
|
|
12334
12586
|
[name: string]: unknown;
|
|
12335
12587
|
};
|
|
12336
12588
|
content: {
|
|
12337
|
-
"application/json": components["schemas"]["
|
|
12589
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
12338
12590
|
};
|
|
12339
12591
|
};
|
|
12340
|
-
/** @description
|
|
12341
|
-
|
|
12592
|
+
/** @description Refused */
|
|
12593
|
+
422: {
|
|
12342
12594
|
headers: {
|
|
12343
12595
|
[name: string]: unknown;
|
|
12344
12596
|
};
|
|
@@ -12357,24 +12609,31 @@ export interface operations {
|
|
|
12357
12609
|
};
|
|
12358
12610
|
};
|
|
12359
12611
|
};
|
|
12360
|
-
"FountainWeb.
|
|
12612
|
+
"FountainWeb.OAuthClientController.update": {
|
|
12361
12613
|
parameters: {
|
|
12362
12614
|
query?: never;
|
|
12363
12615
|
header?: never;
|
|
12364
12616
|
path: {
|
|
12365
|
-
/** @description
|
|
12617
|
+
/** @description Client record id */
|
|
12366
12618
|
id: string;
|
|
12367
12619
|
};
|
|
12368
12620
|
cookie?: never;
|
|
12369
12621
|
};
|
|
12370
|
-
|
|
12622
|
+
/** @description Client changes */
|
|
12623
|
+
requestBody: {
|
|
12624
|
+
content: {
|
|
12625
|
+
"application/json": components["schemas"]["OAuthClientUpdateRequest"];
|
|
12626
|
+
};
|
|
12627
|
+
};
|
|
12371
12628
|
responses: {
|
|
12372
|
-
/** @description
|
|
12373
|
-
|
|
12629
|
+
/** @description Client */
|
|
12630
|
+
200: {
|
|
12374
12631
|
headers: {
|
|
12375
12632
|
[name: string]: unknown;
|
|
12376
12633
|
};
|
|
12377
|
-
content
|
|
12634
|
+
content: {
|
|
12635
|
+
"application/json": components["schemas"]["OAuthClient"];
|
|
12636
|
+
};
|
|
12378
12637
|
};
|
|
12379
12638
|
/** @description Missing or invalid key */
|
|
12380
12639
|
401: {
|
|
@@ -12385,7 +12644,7 @@ export interface operations {
|
|
|
12385
12644
|
"application/json": components["schemas"]["Error"];
|
|
12386
12645
|
};
|
|
12387
12646
|
};
|
|
12388
|
-
/** @description
|
|
12647
|
+
/** @description Insufficient scope */
|
|
12389
12648
|
403: {
|
|
12390
12649
|
headers: {
|
|
12391
12650
|
[name: string]: unknown;
|
|
@@ -12394,7 +12653,7 @@ export interface operations {
|
|
|
12394
12653
|
"application/json": components["schemas"]["Error"];
|
|
12395
12654
|
};
|
|
12396
12655
|
};
|
|
12397
|
-
/** @description No such
|
|
12656
|
+
/** @description No such client */
|
|
12398
12657
|
404: {
|
|
12399
12658
|
headers: {
|
|
12400
12659
|
[name: string]: unknown;
|
|
@@ -12412,8 +12671,318 @@ export interface operations {
|
|
|
12412
12671
|
"application/json": components["schemas"]["NegotiationError"];
|
|
12413
12672
|
};
|
|
12414
12673
|
};
|
|
12415
|
-
/** @description
|
|
12416
|
-
|
|
12674
|
+
/** @description Validation error */
|
|
12675
|
+
422: {
|
|
12676
|
+
headers: {
|
|
12677
|
+
[name: string]: unknown;
|
|
12678
|
+
};
|
|
12679
|
+
content: {
|
|
12680
|
+
"application/json": components["schemas"]["Error"];
|
|
12681
|
+
};
|
|
12682
|
+
};
|
|
12683
|
+
/** @description Too Many Requests */
|
|
12684
|
+
429: {
|
|
12685
|
+
headers: {
|
|
12686
|
+
[name: string]: unknown;
|
|
12687
|
+
};
|
|
12688
|
+
content: {
|
|
12689
|
+
"application/json": components["schemas"]["Error"];
|
|
12690
|
+
};
|
|
12691
|
+
};
|
|
12692
|
+
};
|
|
12693
|
+
};
|
|
12694
|
+
"FountainWeb.OAuthTokenController.revoke": {
|
|
12695
|
+
parameters: {
|
|
12696
|
+
query?: never;
|
|
12697
|
+
header?: never;
|
|
12698
|
+
path?: never;
|
|
12699
|
+
cookie?: never;
|
|
12700
|
+
};
|
|
12701
|
+
requestBody?: never;
|
|
12702
|
+
responses: {
|
|
12703
|
+
/** @description Revoked */
|
|
12704
|
+
204: {
|
|
12705
|
+
headers: {
|
|
12706
|
+
[name: string]: unknown;
|
|
12707
|
+
};
|
|
12708
|
+
content?: never;
|
|
12709
|
+
};
|
|
12710
|
+
/** @description Unauthorized */
|
|
12711
|
+
401: {
|
|
12712
|
+
headers: {
|
|
12713
|
+
[name: string]: unknown;
|
|
12714
|
+
};
|
|
12715
|
+
content: {
|
|
12716
|
+
"application/json": components["schemas"]["Error"];
|
|
12717
|
+
};
|
|
12718
|
+
};
|
|
12719
|
+
/** @description Forbidden */
|
|
12720
|
+
403: {
|
|
12721
|
+
headers: {
|
|
12722
|
+
[name: string]: unknown;
|
|
12723
|
+
};
|
|
12724
|
+
content: {
|
|
12725
|
+
"application/json": components["schemas"]["Error"];
|
|
12726
|
+
};
|
|
12727
|
+
};
|
|
12728
|
+
/** @description No acceptable representation */
|
|
12729
|
+
406: {
|
|
12730
|
+
headers: {
|
|
12731
|
+
[name: string]: unknown;
|
|
12732
|
+
};
|
|
12733
|
+
content: {
|
|
12734
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
12735
|
+
};
|
|
12736
|
+
};
|
|
12737
|
+
/** @description Too Many Requests */
|
|
12738
|
+
429: {
|
|
12739
|
+
headers: {
|
|
12740
|
+
[name: string]: unknown;
|
|
12741
|
+
};
|
|
12742
|
+
content: {
|
|
12743
|
+
"application/json": components["schemas"]["Error"];
|
|
12744
|
+
};
|
|
12745
|
+
};
|
|
12746
|
+
};
|
|
12747
|
+
};
|
|
12748
|
+
"FountainWeb.OAuthTokenController.token": {
|
|
12749
|
+
parameters: {
|
|
12750
|
+
query?: never;
|
|
12751
|
+
header?: never;
|
|
12752
|
+
path?: never;
|
|
12753
|
+
cookie?: never;
|
|
12754
|
+
};
|
|
12755
|
+
/** @description Token request */
|
|
12756
|
+
requestBody?: {
|
|
12757
|
+
content: {
|
|
12758
|
+
"application/json": components["schemas"]["OAuthTokenRequest"];
|
|
12759
|
+
};
|
|
12760
|
+
};
|
|
12761
|
+
responses: {
|
|
12762
|
+
/** @description Token */
|
|
12763
|
+
200: {
|
|
12764
|
+
headers: {
|
|
12765
|
+
[name: string]: unknown;
|
|
12766
|
+
};
|
|
12767
|
+
content: {
|
|
12768
|
+
"application/json": components["schemas"]["OAuthTokenResponse"];
|
|
12769
|
+
};
|
|
12770
|
+
};
|
|
12771
|
+
/** @description invalid_grant / unsupported_grant_type */
|
|
12772
|
+
400: {
|
|
12773
|
+
headers: {
|
|
12774
|
+
[name: string]: unknown;
|
|
12775
|
+
};
|
|
12776
|
+
content: {
|
|
12777
|
+
"application/json": components["schemas"]["Error"];
|
|
12778
|
+
};
|
|
12779
|
+
};
|
|
12780
|
+
/** @description No acceptable representation */
|
|
12781
|
+
406: {
|
|
12782
|
+
headers: {
|
|
12783
|
+
[name: string]: unknown;
|
|
12784
|
+
};
|
|
12785
|
+
content: {
|
|
12786
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
12787
|
+
};
|
|
12788
|
+
};
|
|
12789
|
+
};
|
|
12790
|
+
};
|
|
12791
|
+
"FountainWeb.RunnerController.index": {
|
|
12792
|
+
parameters: {
|
|
12793
|
+
query?: never;
|
|
12794
|
+
header?: never;
|
|
12795
|
+
path?: never;
|
|
12796
|
+
cookie?: never;
|
|
12797
|
+
};
|
|
12798
|
+
requestBody?: never;
|
|
12799
|
+
responses: {
|
|
12800
|
+
/** @description Runners */
|
|
12801
|
+
200: {
|
|
12802
|
+
headers: {
|
|
12803
|
+
[name: string]: unknown;
|
|
12804
|
+
};
|
|
12805
|
+
content: {
|
|
12806
|
+
"application/json": components["schemas"]["RunnerListResponse"];
|
|
12807
|
+
};
|
|
12808
|
+
};
|
|
12809
|
+
/** @description Missing or invalid key */
|
|
12810
|
+
401: {
|
|
12811
|
+
headers: {
|
|
12812
|
+
[name: string]: unknown;
|
|
12813
|
+
};
|
|
12814
|
+
content: {
|
|
12815
|
+
"application/json": components["schemas"]["Error"];
|
|
12816
|
+
};
|
|
12817
|
+
};
|
|
12818
|
+
/** @description Forbidden */
|
|
12819
|
+
403: {
|
|
12820
|
+
headers: {
|
|
12821
|
+
[name: string]: unknown;
|
|
12822
|
+
};
|
|
12823
|
+
content: {
|
|
12824
|
+
"application/json": components["schemas"]["Error"];
|
|
12825
|
+
};
|
|
12826
|
+
};
|
|
12827
|
+
/** @description No acceptable representation */
|
|
12828
|
+
406: {
|
|
12829
|
+
headers: {
|
|
12830
|
+
[name: string]: unknown;
|
|
12831
|
+
};
|
|
12832
|
+
content: {
|
|
12833
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
12834
|
+
};
|
|
12835
|
+
};
|
|
12836
|
+
/** @description Too Many Requests */
|
|
12837
|
+
429: {
|
|
12838
|
+
headers: {
|
|
12839
|
+
[name: string]: unknown;
|
|
12840
|
+
};
|
|
12841
|
+
content: {
|
|
12842
|
+
"application/json": components["schemas"]["Error"];
|
|
12843
|
+
};
|
|
12844
|
+
};
|
|
12845
|
+
};
|
|
12846
|
+
};
|
|
12847
|
+
"FountainWeb.RunnerController.connect": {
|
|
12848
|
+
parameters: {
|
|
12849
|
+
query: {
|
|
12850
|
+
/** @description The runner's name (lowercase, unique per account). */
|
|
12851
|
+
name: string;
|
|
12852
|
+
hostname?: string;
|
|
12853
|
+
os?: string;
|
|
12854
|
+
arch?: string;
|
|
12855
|
+
/** @description Daemon version. */
|
|
12856
|
+
version?: string;
|
|
12857
|
+
/** @description Sandbox root on the host. */
|
|
12858
|
+
root?: string;
|
|
12859
|
+
};
|
|
12860
|
+
header?: never;
|
|
12861
|
+
path?: never;
|
|
12862
|
+
cookie?: never;
|
|
12863
|
+
};
|
|
12864
|
+
requestBody?: never;
|
|
12865
|
+
responses: {
|
|
12866
|
+
/** @description Upgraded */
|
|
12867
|
+
101: {
|
|
12868
|
+
headers: {
|
|
12869
|
+
[name: string]: unknown;
|
|
12870
|
+
};
|
|
12871
|
+
content?: never;
|
|
12872
|
+
};
|
|
12873
|
+
/** @description Not a WebSocket upgrade, or a bad name */
|
|
12874
|
+
400: {
|
|
12875
|
+
headers: {
|
|
12876
|
+
[name: string]: unknown;
|
|
12877
|
+
};
|
|
12878
|
+
content: {
|
|
12879
|
+
"application/json": components["schemas"]["Error"];
|
|
12880
|
+
};
|
|
12881
|
+
};
|
|
12882
|
+
/** @description Missing or invalid key */
|
|
12883
|
+
401: {
|
|
12884
|
+
headers: {
|
|
12885
|
+
[name: string]: unknown;
|
|
12886
|
+
};
|
|
12887
|
+
content: {
|
|
12888
|
+
"application/json": components["schemas"]["Error"];
|
|
12889
|
+
};
|
|
12890
|
+
};
|
|
12891
|
+
/** @description The presented key lacks full scope */
|
|
12892
|
+
403: {
|
|
12893
|
+
headers: {
|
|
12894
|
+
[name: string]: unknown;
|
|
12895
|
+
};
|
|
12896
|
+
content: {
|
|
12897
|
+
"application/json": components["schemas"]["Error"];
|
|
12898
|
+
};
|
|
12899
|
+
};
|
|
12900
|
+
/** @description Runners are disabled on this instance */
|
|
12901
|
+
404: {
|
|
12902
|
+
headers: {
|
|
12903
|
+
[name: string]: unknown;
|
|
12904
|
+
};
|
|
12905
|
+
content: {
|
|
12906
|
+
"application/json": components["schemas"]["Error"];
|
|
12907
|
+
};
|
|
12908
|
+
};
|
|
12909
|
+
/** @description A runner with this name is already connected */
|
|
12910
|
+
409: {
|
|
12911
|
+
headers: {
|
|
12912
|
+
[name: string]: unknown;
|
|
12913
|
+
};
|
|
12914
|
+
content: {
|
|
12915
|
+
"application/json": components["schemas"]["Error"];
|
|
12916
|
+
};
|
|
12917
|
+
};
|
|
12918
|
+
/** @description Too Many Requests */
|
|
12919
|
+
429: {
|
|
12920
|
+
headers: {
|
|
12921
|
+
[name: string]: unknown;
|
|
12922
|
+
};
|
|
12923
|
+
content: {
|
|
12924
|
+
"application/json": components["schemas"]["Error"];
|
|
12925
|
+
};
|
|
12926
|
+
};
|
|
12927
|
+
};
|
|
12928
|
+
};
|
|
12929
|
+
"FountainWeb.RunnerController.delete": {
|
|
12930
|
+
parameters: {
|
|
12931
|
+
query?: never;
|
|
12932
|
+
header?: never;
|
|
12933
|
+
path: {
|
|
12934
|
+
/** @description Runner id. */
|
|
12935
|
+
id: string;
|
|
12936
|
+
};
|
|
12937
|
+
cookie?: never;
|
|
12938
|
+
};
|
|
12939
|
+
requestBody?: never;
|
|
12940
|
+
responses: {
|
|
12941
|
+
/** @description Forgotten */
|
|
12942
|
+
204: {
|
|
12943
|
+
headers: {
|
|
12944
|
+
[name: string]: unknown;
|
|
12945
|
+
};
|
|
12946
|
+
content?: never;
|
|
12947
|
+
};
|
|
12948
|
+
/** @description Missing or invalid key */
|
|
12949
|
+
401: {
|
|
12950
|
+
headers: {
|
|
12951
|
+
[name: string]: unknown;
|
|
12952
|
+
};
|
|
12953
|
+
content: {
|
|
12954
|
+
"application/json": components["schemas"]["Error"];
|
|
12955
|
+
};
|
|
12956
|
+
};
|
|
12957
|
+
/** @description Forbidden */
|
|
12958
|
+
403: {
|
|
12959
|
+
headers: {
|
|
12960
|
+
[name: string]: unknown;
|
|
12961
|
+
};
|
|
12962
|
+
content: {
|
|
12963
|
+
"application/json": components["schemas"]["Error"];
|
|
12964
|
+
};
|
|
12965
|
+
};
|
|
12966
|
+
/** @description No such runner */
|
|
12967
|
+
404: {
|
|
12968
|
+
headers: {
|
|
12969
|
+
[name: string]: unknown;
|
|
12970
|
+
};
|
|
12971
|
+
content: {
|
|
12972
|
+
"application/json": components["schemas"]["Error"];
|
|
12973
|
+
};
|
|
12974
|
+
};
|
|
12975
|
+
/** @description No acceptable representation */
|
|
12976
|
+
406: {
|
|
12977
|
+
headers: {
|
|
12978
|
+
[name: string]: unknown;
|
|
12979
|
+
};
|
|
12980
|
+
content: {
|
|
12981
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
12982
|
+
};
|
|
12983
|
+
};
|
|
12984
|
+
/** @description Too Many Requests */
|
|
12985
|
+
429: {
|
|
12417
12986
|
headers: {
|
|
12418
12987
|
[name: string]: unknown;
|
|
12419
12988
|
};
|
|
@@ -12648,7 +13217,7 @@ export interface operations {
|
|
|
12648
13217
|
path?: string;
|
|
12649
13218
|
/** @description Diff the index (`--cached`). */
|
|
12650
13219
|
staged?: boolean;
|
|
12651
|
-
/** @description A commit, branch or tag to diff against
|
|
13220
|
+
/** @description A commit, branch or tag to diff against. Without it the comparison is the working tree against the index, or with `staged`, the index against HEAD. */
|
|
12652
13221
|
ref?: string;
|
|
12653
13222
|
/** @description How many bytes to return, at most 4194304 (default 262144). `truncated` says whether the content stopped short. */
|
|
12654
13223
|
max_bytes?: number;
|
|
@@ -12940,6 +13509,105 @@ export interface operations {
|
|
|
12940
13509
|
};
|
|
12941
13510
|
};
|
|
12942
13511
|
};
|
|
13512
|
+
"FountainWeb.SandboxFilesController.git_status": {
|
|
13513
|
+
parameters: {
|
|
13514
|
+
query?: {
|
|
13515
|
+
/** @description In-sandbox path, absolute or relative to the agent's working directory (`/home/sprite` for claude and codex, `/tmp/gemini-workspace` and `/tmp/opencode-workspace` for the others). Confined to those directories: anything else is `422 path_outside_sandbox`. */
|
|
13516
|
+
path?: string;
|
|
13517
|
+
/** @description What to do about untracked paths: collapse an untracked directory to one entry (`normal`), list every file under it (`all`), or leave them out (`no`). */
|
|
13518
|
+
untracked?: "normal" | "all" | "no";
|
|
13519
|
+
};
|
|
13520
|
+
header?: never;
|
|
13521
|
+
path: {
|
|
13522
|
+
sandbox_id: string;
|
|
13523
|
+
};
|
|
13524
|
+
cookie?: never;
|
|
13525
|
+
};
|
|
13526
|
+
requestBody?: never;
|
|
13527
|
+
responses: {
|
|
13528
|
+
/** @description Status */
|
|
13529
|
+
200: {
|
|
13530
|
+
headers: {
|
|
13531
|
+
[name: string]: unknown;
|
|
13532
|
+
};
|
|
13533
|
+
content: {
|
|
13534
|
+
"application/json": components["schemas"]["SandboxStatusResponse"];
|
|
13535
|
+
};
|
|
13536
|
+
};
|
|
13537
|
+
/** @description Unauthorized */
|
|
13538
|
+
401: {
|
|
13539
|
+
headers: {
|
|
13540
|
+
[name: string]: unknown;
|
|
13541
|
+
};
|
|
13542
|
+
content: {
|
|
13543
|
+
"application/json": components["schemas"]["Error"];
|
|
13544
|
+
};
|
|
13545
|
+
};
|
|
13546
|
+
/** @description Insufficient scope */
|
|
13547
|
+
403: {
|
|
13548
|
+
headers: {
|
|
13549
|
+
[name: string]: unknown;
|
|
13550
|
+
};
|
|
13551
|
+
content: {
|
|
13552
|
+
"application/json": components["schemas"]["Error"];
|
|
13553
|
+
};
|
|
13554
|
+
};
|
|
13555
|
+
/** @description No such sandbox or path */
|
|
13556
|
+
404: {
|
|
13557
|
+
headers: {
|
|
13558
|
+
[name: string]: unknown;
|
|
13559
|
+
};
|
|
13560
|
+
content: {
|
|
13561
|
+
"application/json": components["schemas"]["Error"];
|
|
13562
|
+
};
|
|
13563
|
+
};
|
|
13564
|
+
/** @description No acceptable representation */
|
|
13565
|
+
406: {
|
|
13566
|
+
headers: {
|
|
13567
|
+
[name: string]: unknown;
|
|
13568
|
+
};
|
|
13569
|
+
content: {
|
|
13570
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
13571
|
+
};
|
|
13572
|
+
};
|
|
13573
|
+
/** @description Sandbox is not ready */
|
|
13574
|
+
409: {
|
|
13575
|
+
headers: {
|
|
13576
|
+
[name: string]: unknown;
|
|
13577
|
+
};
|
|
13578
|
+
content: {
|
|
13579
|
+
"application/json": components["schemas"]["Error"];
|
|
13580
|
+
};
|
|
13581
|
+
};
|
|
13582
|
+
/** @description Not a repository, or outside the sandbox */
|
|
13583
|
+
422: {
|
|
13584
|
+
headers: {
|
|
13585
|
+
[name: string]: unknown;
|
|
13586
|
+
};
|
|
13587
|
+
content: {
|
|
13588
|
+
"application/json": components["schemas"]["Error"];
|
|
13589
|
+
};
|
|
13590
|
+
};
|
|
13591
|
+
/** @description Too Many Requests */
|
|
13592
|
+
429: {
|
|
13593
|
+
headers: {
|
|
13594
|
+
[name: string]: unknown;
|
|
13595
|
+
};
|
|
13596
|
+
content: {
|
|
13597
|
+
"application/json": components["schemas"]["Error"];
|
|
13598
|
+
};
|
|
13599
|
+
};
|
|
13600
|
+
/** @description Sandbox provider unreachable */
|
|
13601
|
+
503: {
|
|
13602
|
+
headers: {
|
|
13603
|
+
[name: string]: unknown;
|
|
13604
|
+
};
|
|
13605
|
+
content: {
|
|
13606
|
+
"application/json": components["schemas"]["Error"];
|
|
13607
|
+
};
|
|
13608
|
+
};
|
|
13609
|
+
};
|
|
13610
|
+
};
|
|
12943
13611
|
"FountainWeb.SearchController.index": {
|
|
12944
13612
|
parameters: {
|
|
12945
13613
|
query: {
|