@slopus/happy-agent-client 0.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.
- package/README.md +17 -0
- package/dist/HappyAgentApiError.d.ts +41 -0
- package/dist/HappyAgentApiError.d.ts.map +1 -0
- package/dist/HappyAgentApiError.js +57 -0
- package/dist/HappyAgentApiError.js.map +1 -0
- package/dist/HappyAgentClient.d.ts +256 -0
- package/dist/HappyAgentClient.d.ts.map +1 -0
- package/dist/HappyAgentClient.js +739 -0
- package/dist/HappyAgentClient.js.map +1 -0
- package/dist/endpointUrl.d.ts +14 -0
- package/dist/endpointUrl.d.ts.map +1 -0
- package/dist/endpointUrl.js +27 -0
- package/dist/endpointUrl.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol/agents.d.ts +116 -0
- package/dist/protocol/agents.d.ts.map +1 -0
- package/dist/protocol/agents.js +3 -0
- package/dist/protocol/agents.js.map +1 -0
- package/dist/protocol/bootstrap.d.ts +28 -0
- package/dist/protocol/bootstrap.d.ts.map +1 -0
- package/dist/protocol/bootstrap.js +3 -0
- package/dist/protocol/bootstrap.js.map +1 -0
- package/dist/protocol/common.d.ts +104 -0
- package/dist/protocol/common.d.ts.map +1 -0
- package/dist/protocol/common.js +92 -0
- package/dist/protocol/common.js.map +1 -0
- package/dist/protocol/daemon.d.ts +486 -0
- package/dist/protocol/daemon.d.ts.map +1 -0
- package/dist/protocol/daemon.js +210 -0
- package/dist/protocol/daemon.js.map +1 -0
- package/dist/protocol/events.d.ts +208 -0
- package/dist/protocol/events.d.ts.map +1 -0
- package/dist/protocol/events.js +9 -0
- package/dist/protocol/events.js.map +1 -0
- package/dist/protocol/files.d.ts +74 -0
- package/dist/protocol/files.d.ts.map +1 -0
- package/dist/protocol/files.js +8 -0
- package/dist/protocol/files.js.map +1 -0
- package/dist/protocol/git.d.ts +55 -0
- package/dist/protocol/git.d.ts.map +1 -0
- package/dist/protocol/git.js +3 -0
- package/dist/protocol/git.js.map +1 -0
- package/dist/protocol/messages.d.ts +210 -0
- package/dist/protocol/messages.d.ts.map +1 -0
- package/dist/protocol/messages.js +8 -0
- package/dist/protocol/messages.js.map +1 -0
- package/dist/protocol/processes.d.ts +26 -0
- package/dist/protocol/processes.d.ts.map +1 -0
- package/dist/protocol/processes.js +3 -0
- package/dist/protocol/processes.js.map +1 -0
- package/dist/protocol/profile.d.ts +40 -0
- package/dist/protocol/profile.d.ts.map +1 -0
- package/dist/protocol/profile.js +23 -0
- package/dist/protocol/profile.js.map +1 -0
- package/dist/protocol/projects.d.ts +377 -0
- package/dist/protocol/projects.d.ts.map +1 -0
- package/dist/protocol/projects.js +107 -0
- package/dist/protocol/projects.js.map +1 -0
- package/dist/protocol/questions.d.ts +54 -0
- package/dist/protocol/questions.d.ts.map +1 -0
- package/dist/protocol/questions.js +3 -0
- package/dist/protocol/questions.js.map +1 -0
- package/dist/protocol/terminals.d.ts +50 -0
- package/dist/protocol/terminals.d.ts.map +1 -0
- package/dist/protocol/terminals.js +3 -0
- package/dist/protocol/terminals.js.map +1 -0
- package/dist/protocol/usage.d.ts +27 -0
- package/dist/protocol/usage.d.ts.map +1 -0
- package/dist/protocol/usage.js +9 -0
- package/dist/protocol/usage.js.map +1 -0
- package/dist/protocol/workspaces.d.ts +216 -0
- package/dist/protocol/workspaces.d.ts.map +1 -0
- package/dist/protocol/workspaces.js +87 -0
- package/dist/protocol/workspaces.js.map +1 -0
- package/dist/readEventStream.d.ts +19 -0
- package/dist/readEventStream.d.ts.map +1 -0
- package/dist/readEventStream.js +46 -0
- package/dist/readEventStream.js.map +1 -0
- package/dist/readSseFrames.d.ts +20 -0
- package/dist/readSseFrames.d.ts.map +1 -0
- package/dist/readSseFrames.js +77 -0
- package/dist/readSseFrames.js.map +1 -0
- package/dist/requestOptions.d.ts +44 -0
- package/dist/requestOptions.d.ts.map +1 -0
- package/dist/requestOptions.js +9 -0
- package/dist/requestOptions.js.map +1 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# `@slopus/happy-agent-client`
|
|
2
|
+
|
|
3
|
+
The client library for the Happy agent API. It replaces `rig-connect` for the new
|
|
4
|
+
`happy-agent` API: it connects to an endpoint, follows the stream, keeps live state in
|
|
5
|
+
memory, and hands it to a user interface as ordered values plus a stream of deltas.
|
|
6
|
+
|
|
7
|
+
Built on plain Web APIs so the same build runs in Node and in a browser.
|
|
8
|
+
|
|
9
|
+
What exists today is `HappyAgentClient`: a thin, faithful client for the HTTP API
|
|
10
|
+
specified in `packages/happy-agent/API.md`. It is built from an endpoint and a bearer
|
|
11
|
+
token, has one typed method per request-response route, and opens the event stream as a
|
|
12
|
+
typed async iterator that a caller cancels with an `AbortSignal`. It keeps no state:
|
|
13
|
+
caching, version reconciliation, optimistic mutations, reconnection, and the live chat
|
|
14
|
+
state land on top of it as the API takes shape.
|
|
15
|
+
|
|
16
|
+
Protocol values are declared once as TypeBox schemas, with their TypeScript types
|
|
17
|
+
derived from those schemas.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A failed request, carrying what the daemon said about it.
|
|
3
|
+
*
|
|
4
|
+
* The daemon answers a failure with a human-readable `error` and a stable
|
|
5
|
+
* machine-readable `code`. Clients branch on `code`; the set grows with the
|
|
6
|
+
* product, and an unrecognized code is treated by its status class. The message
|
|
7
|
+
* text is for display and logs and must never be matched on.
|
|
8
|
+
*/
|
|
9
|
+
export declare class HappyAgentApiError extends Error {
|
|
10
|
+
/** The HTTP status the daemon answered with. */
|
|
11
|
+
readonly status: number;
|
|
12
|
+
/** The stable snake_case failure name, when the daemon named one. */
|
|
13
|
+
readonly code: string | null;
|
|
14
|
+
/**
|
|
15
|
+
* The whole error body.
|
|
16
|
+
*
|
|
17
|
+
* Endpoints document extra fields alongside `error` and `code`: the
|
|
18
|
+
* `If-Match` conflict carries `currentVersion` and the authoritative
|
|
19
|
+
* resource, a lost event cursor carries the cursor to resume from, and a
|
|
20
|
+
* file-write conflict carries the file's current `hash`.
|
|
21
|
+
*/
|
|
22
|
+
readonly body: ApiErrorBody | null;
|
|
23
|
+
constructor(status: number, message: string, code: string | null, body: ApiErrorBody | null);
|
|
24
|
+
}
|
|
25
|
+
/** The JSON body of a failed request. */
|
|
26
|
+
export interface ApiErrorBody {
|
|
27
|
+
/** A human-readable English message, for display and logs. */
|
|
28
|
+
error?: string;
|
|
29
|
+
/** A stable, machine-readable snake_case name for the failure. */
|
|
30
|
+
code?: string;
|
|
31
|
+
[field: string]: unknown;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Reads a failed response into an error.
|
|
35
|
+
*
|
|
36
|
+
* A daemon that failed before it could write JSON — or a proxy in front of it
|
|
37
|
+
* that answered instead — still produces a usable error, so the body is read
|
|
38
|
+
* defensively rather than assumed.
|
|
39
|
+
*/
|
|
40
|
+
export declare function readApiError(response: Response): Promise<HappyAgentApiError>;
|
|
41
|
+
//# sourceMappingURL=HappyAgentApiError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HappyAgentApiError.d.ts","sourceRoot":"","sources":["../sources/HappyAgentApiError.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAEnC,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,EAM1F;CACJ;AAED,yCAAyC;AACzC,MAAM,WAAW,YAAY;IACzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQlF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A failed request, carrying what the daemon said about it.
|
|
3
|
+
*
|
|
4
|
+
* The daemon answers a failure with a human-readable `error` and a stable
|
|
5
|
+
* machine-readable `code`. Clients branch on `code`; the set grows with the
|
|
6
|
+
* product, and an unrecognized code is treated by its status class. The message
|
|
7
|
+
* text is for display and logs and must never be matched on.
|
|
8
|
+
*/
|
|
9
|
+
export class HappyAgentApiError extends Error {
|
|
10
|
+
/** The HTTP status the daemon answered with. */
|
|
11
|
+
status;
|
|
12
|
+
/** The stable snake_case failure name, when the daemon named one. */
|
|
13
|
+
code;
|
|
14
|
+
/**
|
|
15
|
+
* The whole error body.
|
|
16
|
+
*
|
|
17
|
+
* Endpoints document extra fields alongside `error` and `code`: the
|
|
18
|
+
* `If-Match` conflict carries `currentVersion` and the authoritative
|
|
19
|
+
* resource, a lost event cursor carries the cursor to resume from, and a
|
|
20
|
+
* file-write conflict carries the file's current `hash`.
|
|
21
|
+
*/
|
|
22
|
+
body;
|
|
23
|
+
constructor(status, message, code, body) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = "HappyAgentApiError";
|
|
26
|
+
this.status = status;
|
|
27
|
+
this.code = code;
|
|
28
|
+
this.body = body;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Reads a failed response into an error.
|
|
33
|
+
*
|
|
34
|
+
* A daemon that failed before it could write JSON — or a proxy in front of it
|
|
35
|
+
* that answered instead — still produces a usable error, so the body is read
|
|
36
|
+
* defensively rather than assumed.
|
|
37
|
+
*/
|
|
38
|
+
export async function readApiError(response) {
|
|
39
|
+
const body = await readErrorBody(response);
|
|
40
|
+
const code = typeof body?.code === "string" ? body.code : null;
|
|
41
|
+
const message = typeof body?.error === "string" && body.error.length > 0
|
|
42
|
+
? body.error
|
|
43
|
+
: `The Happy agent answered ${String(response.status)}.`;
|
|
44
|
+
return new HappyAgentApiError(response.status, message, code, body);
|
|
45
|
+
}
|
|
46
|
+
async function readErrorBody(response) {
|
|
47
|
+
try {
|
|
48
|
+
const parsed = await response.json();
|
|
49
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
|
|
50
|
+
return null;
|
|
51
|
+
return parsed;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=HappyAgentApiError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HappyAgentApiError.js","sourceRoot":"","sources":["../sources/HappyAgentApiError.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACzC,gDAAgD;IACvC,MAAM,CAAS;IACxB,qEAAqE;IAC5D,IAAI,CAAgB;IAC7B;;;;;;;OAOG;IACM,IAAI,CAAsB;IAEnC,YAAY,MAAc,EAAE,OAAe,EAAE,IAAmB,EAAE,IAAyB;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAWD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAkB;IACjD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,OAAO,GACT,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACpD,CAAC,CAAC,IAAI,CAAC,KAAK;QACZ,CAAC,CAAC,4BAA4B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;IACjE,OAAO,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAkB;IAC3C,IAAI,CAAC;QACD,MAAM,MAAM,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACxF,OAAO,MAAsB,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import type { Cuid2 } from "./protocol/common.js";
|
|
2
|
+
import type { BinaryContent, ConditionalRequestOptions, ImageUpload, OptionallyVersionedRequestOptions, RequestOptions, VersionedRequestOptions } from "./requestOptions.js";
|
|
3
|
+
import type { AbortAgentRequest, AgentAbortResponse, AgentActivityResponse, AgentCompactResponse, AgentResponse, CreateAgentRequest, MutationOnlyRequest, ReorderAgentRequest, SaveAgentDraftRequest } from "./protocol/agents.js";
|
|
4
|
+
import type { DesktopBootstrapResponse } from "./protocol/bootstrap.js";
|
|
5
|
+
import type { ConfigPatch, ConfigResponse, GreetingResponse, HealthResponse, InspectorStartedResponse, InspectorStoppedResponse, InstructionsResponse, OnboardingCompletedResponse, OnboardingState, SecurityPolicyResponse, ShutdownResponse } from "./protocol/daemon.js";
|
|
6
|
+
import type { EventPageQuery, EventPageResponse, EventStreamFrame, EventStreamOptions } from "./protocol/events.js";
|
|
7
|
+
import type { FileContentResponse, FileRevisionQuery, FileRevisionResponse, FileSearchQuery, FileSearchResponse, FileTreeQuery, FileTreeResponse, WriteFileRequest, WriteFileResponse } from "./protocol/files.js";
|
|
8
|
+
import type { GitStateResponse, WatchGitRequest, WatchGitResponse } from "./protocol/git.js";
|
|
9
|
+
import type { MessageHistoryQuery, MessageHistoryResponse, SendMessageRequest, SendMessageResponse } from "./protocol/messages.js";
|
|
10
|
+
import type { BackgroundProcessResponse } from "./protocol/processes.js";
|
|
11
|
+
import type { ProfileResponse, ProfileUpdateRequest } from "./protocol/profile.js";
|
|
12
|
+
import type { ArchiveProjectRequest, CloneProjectRequest, ProjectListResponse, ProjectResponse, ProjectSettingsResponse, RegisterProjectRequest, RenameProjectRequest, ReorderProjectRequest, ReplaceProjectSettingsRequest } from "./protocol/projects.js";
|
|
13
|
+
import type { AnswerQuestionRequest, PendingQuestionResponse, QuestionResponse } from "./protocol/questions.js";
|
|
14
|
+
import type { OpenTerminalRequest, ResizeTerminalRequest, TerminalListResponse, TerminalResponse } from "./protocol/terminals.js";
|
|
15
|
+
import type { AgentUsageResponse, DaemonUsageResponse } from "./protocol/usage.js";
|
|
16
|
+
import type { ArchiveWorkspaceRequest, CreateWorkspaceRequest, ListWorkspacesQuery, RenameWorkspaceRequest, ReorderWorkspaceRequest, WorkspaceListResponse, WorkspaceResponse } from "./protocol/workspaces.js";
|
|
17
|
+
/** What the client needs to reach a daemon. */
|
|
18
|
+
export interface HappyAgentClientOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Where the daemon answers.
|
|
21
|
+
*
|
|
22
|
+
* The daemon serves HTTP over a Unix domain socket and ignores the `Host`
|
|
23
|
+
* header, so the authority is whatever the transport needs; only the path
|
|
24
|
+
* and query matter. A path prefix here is preserved and every route is
|
|
25
|
+
* resolved beneath it.
|
|
26
|
+
*/
|
|
27
|
+
endpoint: string | URL;
|
|
28
|
+
/** The bearer token; every route, health included, requires one. */
|
|
29
|
+
token: string;
|
|
30
|
+
/**
|
|
31
|
+
* The `fetch` to make requests with. Defaults to the global one.
|
|
32
|
+
*
|
|
33
|
+
* A caller reaching a Unix socket supplies its own runtime's `fetch` here;
|
|
34
|
+
* nothing else in this package knows how the bytes travel.
|
|
35
|
+
*/
|
|
36
|
+
fetch?: typeof globalThis.fetch;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A thin, faithful client for the Happy agent HTTP API.
|
|
40
|
+
*
|
|
41
|
+
* Every request-response route of `packages/happy-agent/API.md` is one method,
|
|
42
|
+
* and the event journal is available both as pages and as the live stream. The
|
|
43
|
+
* client keeps no state beyond the endpoint and the token: it does not cache
|
|
44
|
+
* resources, reconcile versions, retry, or reconnect. Those are decisions for
|
|
45
|
+
* whatever builds a live view on top of it.
|
|
46
|
+
*
|
|
47
|
+
* It is built on `fetch`, streams, `AbortController`, and standard timers
|
|
48
|
+
* alone, so one build runs unchanged in Node and in a browser. Nothing is
|
|
49
|
+
* validated at runtime; the types are a promise about what the specification
|
|
50
|
+
* says the daemon sends.
|
|
51
|
+
*/
|
|
52
|
+
export declare class HappyAgentClient {
|
|
53
|
+
#private;
|
|
54
|
+
constructor(options: HappyAgentClientOptions);
|
|
55
|
+
/** Where this client talks, as it was given. */
|
|
56
|
+
get endpoint(): string;
|
|
57
|
+
/** `GET /` — a greeting confirming the caller reached a Happy agent. */
|
|
58
|
+
getGreeting(options?: RequestOptions): Promise<GreetingResponse>;
|
|
59
|
+
/**
|
|
60
|
+
* `GET /v0/health` — whether the daemon is alive and ready to serve.
|
|
61
|
+
*
|
|
62
|
+
* The only route guaranteed to answer during startup; a client polls it
|
|
63
|
+
* until `ready` is `true` before using the rest of the API.
|
|
64
|
+
*/
|
|
65
|
+
getHealth(options?: RequestOptions): Promise<HealthResponse>;
|
|
66
|
+
/** `GET /v0/config` — the sanitized effective configuration. */
|
|
67
|
+
getConfig(options?: RequestOptions): Promise<ConfigResponse>;
|
|
68
|
+
/**
|
|
69
|
+
* `PATCH /v0/config` — requests a runtime settings change.
|
|
70
|
+
*
|
|
71
|
+
* A daemon that cannot reconfigure itself at runtime answers `409`.
|
|
72
|
+
*/
|
|
73
|
+
patchConfig(patch: ConfigPatch, options?: RequestOptions): Promise<ConfigResponse>;
|
|
74
|
+
/** `GET /v0/config/instructions` — the global instructions document. */
|
|
75
|
+
getInstructions(options?: RequestOptions): Promise<InstructionsResponse>;
|
|
76
|
+
/** `PUT /v0/config/instructions` — replaces it; the maximum size is 256 KB. */
|
|
77
|
+
putInstructions(instructions: string, options?: RequestOptions): Promise<InstructionsResponse>;
|
|
78
|
+
/** `GET /v0/config/security` — the security policy document. */
|
|
79
|
+
getSecurityPolicy(options?: RequestOptions): Promise<SecurityPolicyResponse>;
|
|
80
|
+
/** `PUT /v0/config/security` — replaces it; the maximum size is 32 KB. */
|
|
81
|
+
putSecurityPolicy(policy: string, options?: RequestOptions): Promise<SecurityPolicyResponse>;
|
|
82
|
+
/** `POST /v0/shutdown` — asks the daemon to shut down; it answers first. */
|
|
83
|
+
shutdown(options?: RequestOptions): Promise<ShutdownResponse>;
|
|
84
|
+
/** `POST /v0/debug/inspector` — starts the Node.js inspector on the daemon. */
|
|
85
|
+
startInspector(options?: RequestOptions): Promise<InspectorStartedResponse>;
|
|
86
|
+
/** `DELETE /v0/debug/inspector` — stops it. */
|
|
87
|
+
stopInspector(options?: RequestOptions): Promise<InspectorStoppedResponse>;
|
|
88
|
+
/** `GET /v0/profile` — always succeeds; an untouched profile is all `null`. */
|
|
89
|
+
getProfile(options?: RequestOptions): Promise<ProfileResponse>;
|
|
90
|
+
/** `PATCH /v0/profile` — a partial update; a field set to `null` is cleared. */
|
|
91
|
+
updateProfile(request: ProfileUpdateRequest, options: VersionedRequestOptions): Promise<ProfileResponse>;
|
|
92
|
+
/** `GET /v0/profile/photo` — the photo bytes; `null` when unchanged. */
|
|
93
|
+
getProfilePhoto(options?: ConditionalRequestOptions): Promise<BinaryContent | null>;
|
|
94
|
+
/** `PUT /v0/profile/photo` — the daemon computes the ThumbHash. */
|
|
95
|
+
setProfilePhoto(image: ImageUpload, options?: OptionallyVersionedRequestOptions): Promise<ProfileResponse>;
|
|
96
|
+
/** `DELETE /v0/profile/photo` */
|
|
97
|
+
deleteProfilePhoto(options?: OptionallyVersionedRequestOptions): Promise<ProfileResponse>;
|
|
98
|
+
/** `GET /v0/onboarding` — what a fresh installation still needs. */
|
|
99
|
+
getOnboarding(options?: RequestOptions): Promise<OnboardingState>;
|
|
100
|
+
/** `POST /v0/onboarding/complete` — idempotent. */
|
|
101
|
+
completeOnboarding(options?: RequestOptions): Promise<OnboardingCompletedResponse>;
|
|
102
|
+
/** `GET /v0/projects` — every project, archived ones included. */
|
|
103
|
+
listProjects(options?: RequestOptions): Promise<ProjectListResponse>;
|
|
104
|
+
/** `POST /v0/projects` — registers an existing local folder. */
|
|
105
|
+
registerProject(request: RegisterProjectRequest, options?: RequestOptions): Promise<ProjectResponse>;
|
|
106
|
+
/** `POST /v0/projects/clone` — the clone itself runs in the background. */
|
|
107
|
+
cloneProject(request: CloneProjectRequest, options?: RequestOptions): Promise<ProjectResponse>;
|
|
108
|
+
/** `GET /v0/projects/:projectId` */
|
|
109
|
+
getProject(projectId: Cuid2, options?: RequestOptions): Promise<ProjectResponse>;
|
|
110
|
+
/** `PATCH /v0/projects/:projectId` — renames it; `nameSource` becomes `"user"`. */
|
|
111
|
+
renameProject(projectId: Cuid2, request: RenameProjectRequest, options: VersionedRequestOptions): Promise<ProjectResponse>;
|
|
112
|
+
/** `PUT /v0/projects/:projectId/settings` — replaces the settings. */
|
|
113
|
+
replaceProjectSettings(projectId: Cuid2, request: ReplaceProjectSettingsRequest, options: VersionedRequestOptions): Promise<ProjectSettingsResponse>;
|
|
114
|
+
/** `POST /v0/projects/:projectId/refresh` — re-runs project setup. */
|
|
115
|
+
refreshProject(projectId: Cuid2, options?: RequestOptions): Promise<ProjectResponse>;
|
|
116
|
+
/** `POST /v0/projects/:projectId/reorder` — neighbours move through events. */
|
|
117
|
+
reorderProject(projectId: Cuid2, request: ReorderProjectRequest, options: VersionedRequestOptions): Promise<ProjectResponse>;
|
|
118
|
+
/** `POST /v0/projects/:projectId/archive` — idempotent; cleanup is background work. */
|
|
119
|
+
archiveProject(projectId: Cuid2, options: VersionedRequestOptions & ArchiveProjectRequest): Promise<ProjectResponse>;
|
|
120
|
+
/** `GET /v0/projects/:projectId/avatar` — the picture bytes; `null` when unchanged. */
|
|
121
|
+
getProjectAvatar(projectId: Cuid2, options?: ConditionalRequestOptions): Promise<BinaryContent | null>;
|
|
122
|
+
/** `PUT /v0/projects/:projectId/avatar` — the limit is 8 MB. */
|
|
123
|
+
setProjectAvatar(projectId: Cuid2, image: ImageUpload, options: VersionedRequestOptions): Promise<ProjectResponse>;
|
|
124
|
+
/** `DELETE /v0/projects/:projectId/avatar` */
|
|
125
|
+
deleteProjectAvatar(projectId: Cuid2, options: VersionedRequestOptions): Promise<ProjectResponse>;
|
|
126
|
+
/** `GET /v0/workspaces` — a flat array; clients build the tree from `parentId`. */
|
|
127
|
+
listWorkspaces(query?: ListWorkspacesQuery, options?: RequestOptions): Promise<WorkspaceListResponse>;
|
|
128
|
+
/** `POST /v0/workspaces` — the checkout builds in the background. */
|
|
129
|
+
createWorkspace(request: CreateWorkspaceRequest, options?: RequestOptions): Promise<WorkspaceResponse>;
|
|
130
|
+
/** `GET /v0/workspaces/:workspaceId` — a project ID answers with its root workspace. */
|
|
131
|
+
getWorkspace(workspaceId: Cuid2, options?: RequestOptions): Promise<WorkspaceResponse>;
|
|
132
|
+
/** `PATCH /v0/workspaces/:workspaceId` — the Git branch moves in the background. */
|
|
133
|
+
renameWorkspace(workspaceId: Cuid2, request: RenameWorkspaceRequest, options: VersionedRequestOptions): Promise<WorkspaceResponse>;
|
|
134
|
+
/** `POST /v0/workspaces/:workspaceId/archive` — archives it and everything beneath. */
|
|
135
|
+
archiveWorkspace(workspaceId: Cuid2, options: VersionedRequestOptions & ArchiveWorkspaceRequest): Promise<WorkspaceResponse>;
|
|
136
|
+
/** `POST /v0/workspaces/:workspaceId/reorder` — moves it among its siblings. */
|
|
137
|
+
reorderWorkspace(workspaceId: Cuid2, request: ReorderWorkspaceRequest, options: VersionedRequestOptions): Promise<WorkspaceResponse>;
|
|
138
|
+
/** `GET /v0/workspaces/:workspaceId/terminals` */
|
|
139
|
+
listTerminals(workspaceId: Cuid2, options?: RequestOptions): Promise<TerminalListResponse>;
|
|
140
|
+
/** `POST /v0/workspaces/:workspaceId/terminals` — a workspace holds at most 32. */
|
|
141
|
+
openTerminal(workspaceId: Cuid2, request?: OpenTerminalRequest, options?: RequestOptions): Promise<TerminalResponse>;
|
|
142
|
+
/** `PATCH /v0/workspaces/:workspaceId/terminals/:terminalId` */
|
|
143
|
+
resizeTerminal(workspaceId: Cuid2, terminalId: Cuid2, request: ResizeTerminalRequest, options?: RequestOptions): Promise<TerminalResponse>;
|
|
144
|
+
/** `DELETE /v0/workspaces/:workspaceId/terminals/:terminalId` — stops it and its process. */
|
|
145
|
+
stopTerminal(workspaceId: Cuid2, terminalId: Cuid2, options?: RequestOptions): Promise<TerminalResponse>;
|
|
146
|
+
/**
|
|
147
|
+
* The URL of `GET /v0/workspaces/:workspaceId/terminals/:terminalId/attach`.
|
|
148
|
+
*
|
|
149
|
+
* The attachment is a WebSocket upgrade carrying binary terminal frames,
|
|
150
|
+
* which `fetch` cannot open. This client hands back the address so a caller
|
|
151
|
+
* can attach with whatever WebSocket its runtime provides; the bearer token
|
|
152
|
+
* goes on that request the same way it does here.
|
|
153
|
+
*/
|
|
154
|
+
terminalAttachUrl(workspaceId: Cuid2, terminalId: Cuid2): string;
|
|
155
|
+
/**
|
|
156
|
+
* The URL of `CONNECT /v0/workspaces/:workspaceId/proxy`.
|
|
157
|
+
*
|
|
158
|
+
* The tunnel is a raw byte stream that `fetch` cannot open either, so the
|
|
159
|
+
* address is what this client offers.
|
|
160
|
+
*/
|
|
161
|
+
workspaceProxyUrl(workspaceId: Cuid2): string;
|
|
162
|
+
/** `GET /v0/workspaces/:workspaceId/files` — case-insensitive filename search. */
|
|
163
|
+
searchFiles(workspaceId: Cuid2, query: FileSearchQuery, options?: RequestOptions): Promise<FileSearchResponse>;
|
|
164
|
+
/** `GET /v0/workspaces/:workspaceId/file-tree` — one directory level, paginated. */
|
|
165
|
+
getFileTree(workspaceId: Cuid2, query?: FileTreeQuery, options?: RequestOptions): Promise<FileTreeResponse>;
|
|
166
|
+
/** `GET /v0/workspaces/:workspaceId/file` — base64 content and its sha256. */
|
|
167
|
+
readFile(workspaceId: Cuid2, path: string, options?: RequestOptions): Promise<FileContentResponse>;
|
|
168
|
+
/** `PUT /v0/workspaces/:workspaceId/file` — `expectedHash` is the compare-and-swap. */
|
|
169
|
+
writeFile(workspaceId: Cuid2, request: WriteFileRequest, options?: RequestOptions): Promise<WriteFileResponse>;
|
|
170
|
+
/** `GET /v0/workspaces/:workspaceId/file-revision` — one file as of a revision. */
|
|
171
|
+
readFileRevision(workspaceId: Cuid2, query: FileRevisionQuery, options?: RequestOptions): Promise<FileRevisionResponse>;
|
|
172
|
+
/** `GET /v0/workspaces/:workspaceId/git` — scans if nothing fresh is cached. */
|
|
173
|
+
getWorkspaceGit(workspaceId: Cuid2, options?: RequestOptions): Promise<GitStateResponse>;
|
|
174
|
+
/**
|
|
175
|
+
* `POST /v0/git/watch` — subscribes workspaces to the live git watcher.
|
|
176
|
+
*
|
|
177
|
+
* Registrations are held per subscription set: a client re-posts its
|
|
178
|
+
* current interest, and workspaces it stops naming age out of the watcher.
|
|
179
|
+
*/
|
|
180
|
+
watchGit(request: WatchGitRequest, options?: RequestOptions): Promise<WatchGitResponse>;
|
|
181
|
+
/** `POST /v0/agents` — creation always makes a top-level agent. */
|
|
182
|
+
createAgent(request: CreateAgentRequest, options?: RequestOptions): Promise<AgentResponse>;
|
|
183
|
+
/** `GET /v0/agents/:agentId` */
|
|
184
|
+
getAgent(agentId: Cuid2, options?: RequestOptions): Promise<AgentResponse>;
|
|
185
|
+
/**
|
|
186
|
+
* `POST /v0/agents/:agentId/send` — queues a message, or steers the run.
|
|
187
|
+
*
|
|
188
|
+
* The message is pending until inference accepts it; the acceptance travels
|
|
189
|
+
* as a `message.updated` event, and the `runId` it brings is the handle for
|
|
190
|
+
* `abortAgent`.
|
|
191
|
+
*/
|
|
192
|
+
sendMessage(agentId: Cuid2, request: SendMessageRequest, options?: RequestOptions): Promise<SendMessageResponse>;
|
|
193
|
+
/**
|
|
194
|
+
* `GET /v0/agents/:agentId/messages` — history, grouped by run.
|
|
195
|
+
*
|
|
196
|
+
* `limit` is a lower bound: a page always contains whole runs and may
|
|
197
|
+
* overflow well past it, so buffers are sized for the runs received.
|
|
198
|
+
*/
|
|
199
|
+
getMessages(agentId: Cuid2, query?: MessageHistoryQuery, options?: RequestOptions): Promise<MessageHistoryResponse>;
|
|
200
|
+
/** `GET /v0/agents/:agentId/question` — the open question, or `null`. */
|
|
201
|
+
getPendingQuestion(agentId: Cuid2, options?: RequestOptions): Promise<PendingQuestionResponse>;
|
|
202
|
+
/**
|
|
203
|
+
* `POST /v0/agents/:agentId/question/:questionId/answer` — the run resumes.
|
|
204
|
+
*
|
|
205
|
+
* Answering is first-write-wins across clients: a second answer is `409`
|
|
206
|
+
* carrying the question as it now stands.
|
|
207
|
+
*/
|
|
208
|
+
answerQuestion(agentId: Cuid2, questionId: Cuid2, request: AnswerQuestionRequest, options?: RequestOptions): Promise<QuestionResponse>;
|
|
209
|
+
/** `POST /v0/agents/:agentId/abort` — stops the current run. */
|
|
210
|
+
abortAgent(agentId: Cuid2, request?: AbortAgentRequest, options?: RequestOptions): Promise<AgentAbortResponse>;
|
|
211
|
+
/** `POST /v0/agents/:agentId/compact` — summarizes older context for the model. */
|
|
212
|
+
compactAgent(agentId: Cuid2, request?: MutationOnlyRequest, options?: RequestOptions): Promise<AgentCompactResponse>;
|
|
213
|
+
/** `POST /v0/agents/:agentId/read` — clears `unread`. */
|
|
214
|
+
markAgentRead(agentId: Cuid2, request?: MutationOnlyRequest, options?: RequestOptions): Promise<AgentResponse>;
|
|
215
|
+
/** `POST /v0/agents/:agentId/archive` — keeps the history; aborts a running turn. */
|
|
216
|
+
archiveAgent(agentId: Cuid2, request?: MutationOnlyRequest, options?: RequestOptions): Promise<AgentResponse>;
|
|
217
|
+
/** `POST /v0/agents/:agentId/unarchive` — idempotent. */
|
|
218
|
+
unarchiveAgent(agentId: Cuid2, request?: MutationOnlyRequest, options?: RequestOptions): Promise<AgentResponse>;
|
|
219
|
+
/** `POST /v0/agents/:agentId/reorder` — moves the agent in the list order. */
|
|
220
|
+
reorderAgent(agentId: Cuid2, request: ReorderAgentRequest, options?: RequestOptions): Promise<AgentResponse>;
|
|
221
|
+
/** `PUT /v0/agents/:agentId/draft` — saves or clears the composer draft. */
|
|
222
|
+
saveAgentDraft(agentId: Cuid2, request: SaveAgentDraftRequest, options?: RequestOptions): Promise<AgentResponse>;
|
|
223
|
+
/** `GET /v0/agents/:agentId/usage` — the agent's whole life, subagents included. */
|
|
224
|
+
getAgentUsage(agentId: Cuid2, options?: RequestOptions): Promise<AgentUsageResponse>;
|
|
225
|
+
/** `GET /v0/agents/:agentId/activity` — every subagent and process it set in motion. */
|
|
226
|
+
getAgentActivity(agentId: Cuid2, options?: RequestOptions): Promise<AgentActivityResponse>;
|
|
227
|
+
/** `DELETE /v0/agents/:agentId/processes/:processId` — stops a running process. */
|
|
228
|
+
stopProcess(agentId: Cuid2, processId: Cuid2, options?: RequestOptions): Promise<BackgroundProcessResponse>;
|
|
229
|
+
/** `GET /v0/usage` — the whole daemon, in rolling windows ending now. */
|
|
230
|
+
getUsage(options?: RequestOptions): Promise<DaemonUsageResponse>;
|
|
231
|
+
/**
|
|
232
|
+
* `GET /v0/events` — pulls events, oldest first.
|
|
233
|
+
*
|
|
234
|
+
* A cursor that fell out of the bounded journal answers `409` with code
|
|
235
|
+
* `cursor_unavailable`, carrying the cursor to resync from.
|
|
236
|
+
*/
|
|
237
|
+
getEvents(query?: EventPageQuery, options?: RequestOptions): Promise<EventPageResponse>;
|
|
238
|
+
/**
|
|
239
|
+
* `GET /v0/events/stream` — the same journal, live.
|
|
240
|
+
*
|
|
241
|
+
* The iteration yields the opening `hello` frame and then every event, and
|
|
242
|
+
* ends when the daemon closes the stream or the signal aborts. One
|
|
243
|
+
* connection is one iteration: reconnecting is the caller's decision, made
|
|
244
|
+
* with the last cursor it received and honored through `after` or
|
|
245
|
+
* `lastEventId`.
|
|
246
|
+
*/
|
|
247
|
+
streamEvents(options?: EventStreamOptions): AsyncGenerator<EventStreamFrame>;
|
|
248
|
+
/**
|
|
249
|
+
* `GET /v0/bootstrap/desktop` — one request that gets a client on screen.
|
|
250
|
+
*
|
|
251
|
+
* The `cursor` it carries is the newest event as of the snapshot, so a
|
|
252
|
+
* stream opened from it leaves no window for a change to fall through.
|
|
253
|
+
*/
|
|
254
|
+
getDesktopBootstrap(options?: RequestOptions): Promise<DesktopBootstrapResponse>;
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=HappyAgentClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HappyAgentClient.d.ts","sourceRoot":"","sources":["../sources/HappyAgentClient.ts"],"names":[],"mappings":"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"}
|