@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.
Files changed (90) hide show
  1. package/README.md +17 -0
  2. package/dist/HappyAgentApiError.d.ts +41 -0
  3. package/dist/HappyAgentApiError.d.ts.map +1 -0
  4. package/dist/HappyAgentApiError.js +57 -0
  5. package/dist/HappyAgentApiError.js.map +1 -0
  6. package/dist/HappyAgentClient.d.ts +256 -0
  7. package/dist/HappyAgentClient.d.ts.map +1 -0
  8. package/dist/HappyAgentClient.js +739 -0
  9. package/dist/HappyAgentClient.js.map +1 -0
  10. package/dist/endpointUrl.d.ts +14 -0
  11. package/dist/endpointUrl.d.ts.map +1 -0
  12. package/dist/endpointUrl.js +27 -0
  13. package/dist/endpointUrl.js.map +1 -0
  14. package/dist/index.d.ts +26 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +22 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/protocol/agents.d.ts +116 -0
  19. package/dist/protocol/agents.d.ts.map +1 -0
  20. package/dist/protocol/agents.js +3 -0
  21. package/dist/protocol/agents.js.map +1 -0
  22. package/dist/protocol/bootstrap.d.ts +28 -0
  23. package/dist/protocol/bootstrap.d.ts.map +1 -0
  24. package/dist/protocol/bootstrap.js +3 -0
  25. package/dist/protocol/bootstrap.js.map +1 -0
  26. package/dist/protocol/common.d.ts +104 -0
  27. package/dist/protocol/common.d.ts.map +1 -0
  28. package/dist/protocol/common.js +92 -0
  29. package/dist/protocol/common.js.map +1 -0
  30. package/dist/protocol/daemon.d.ts +486 -0
  31. package/dist/protocol/daemon.d.ts.map +1 -0
  32. package/dist/protocol/daemon.js +210 -0
  33. package/dist/protocol/daemon.js.map +1 -0
  34. package/dist/protocol/events.d.ts +208 -0
  35. package/dist/protocol/events.d.ts.map +1 -0
  36. package/dist/protocol/events.js +9 -0
  37. package/dist/protocol/events.js.map +1 -0
  38. package/dist/protocol/files.d.ts +74 -0
  39. package/dist/protocol/files.d.ts.map +1 -0
  40. package/dist/protocol/files.js +8 -0
  41. package/dist/protocol/files.js.map +1 -0
  42. package/dist/protocol/git.d.ts +55 -0
  43. package/dist/protocol/git.d.ts.map +1 -0
  44. package/dist/protocol/git.js +3 -0
  45. package/dist/protocol/git.js.map +1 -0
  46. package/dist/protocol/messages.d.ts +210 -0
  47. package/dist/protocol/messages.d.ts.map +1 -0
  48. package/dist/protocol/messages.js +8 -0
  49. package/dist/protocol/messages.js.map +1 -0
  50. package/dist/protocol/processes.d.ts +26 -0
  51. package/dist/protocol/processes.d.ts.map +1 -0
  52. package/dist/protocol/processes.js +3 -0
  53. package/dist/protocol/processes.js.map +1 -0
  54. package/dist/protocol/profile.d.ts +40 -0
  55. package/dist/protocol/profile.d.ts.map +1 -0
  56. package/dist/protocol/profile.js +23 -0
  57. package/dist/protocol/profile.js.map +1 -0
  58. package/dist/protocol/projects.d.ts +377 -0
  59. package/dist/protocol/projects.d.ts.map +1 -0
  60. package/dist/protocol/projects.js +107 -0
  61. package/dist/protocol/projects.js.map +1 -0
  62. package/dist/protocol/questions.d.ts +54 -0
  63. package/dist/protocol/questions.d.ts.map +1 -0
  64. package/dist/protocol/questions.js +3 -0
  65. package/dist/protocol/questions.js.map +1 -0
  66. package/dist/protocol/terminals.d.ts +50 -0
  67. package/dist/protocol/terminals.d.ts.map +1 -0
  68. package/dist/protocol/terminals.js +3 -0
  69. package/dist/protocol/terminals.js.map +1 -0
  70. package/dist/protocol/usage.d.ts +27 -0
  71. package/dist/protocol/usage.d.ts.map +1 -0
  72. package/dist/protocol/usage.js +9 -0
  73. package/dist/protocol/usage.js.map +1 -0
  74. package/dist/protocol/workspaces.d.ts +216 -0
  75. package/dist/protocol/workspaces.d.ts.map +1 -0
  76. package/dist/protocol/workspaces.js +87 -0
  77. package/dist/protocol/workspaces.js.map +1 -0
  78. package/dist/readEventStream.d.ts +19 -0
  79. package/dist/readEventStream.d.ts.map +1 -0
  80. package/dist/readEventStream.js +46 -0
  81. package/dist/readEventStream.js.map +1 -0
  82. package/dist/readSseFrames.d.ts +20 -0
  83. package/dist/readSseFrames.d.ts.map +1 -0
  84. package/dist/readSseFrames.js +77 -0
  85. package/dist/readSseFrames.js.map +1 -0
  86. package/dist/requestOptions.d.ts +44 -0
  87. package/dist/requestOptions.d.ts.map +1 -0
  88. package/dist/requestOptions.js +9 -0
  89. package/dist/requestOptions.js.map +1 -0
  90. 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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"}