@paneui/core 0.0.3 → 0.0.5
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/dist/client.d.ts +37 -1
- package/dist/client.js +49 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/register.d.ts +7 -0
- package/dist/register.js +3 -0
- package/dist/schemas.d.ts +14 -0
- package/dist/schemas.js +12 -0
- package/dist/types.d.ts +21 -0
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ArtifactRecord, ArtifactSummary, ArtifactType, ArtifactVersion, CreateArtifactResponse, CreateSessionRequest, CreateSessionResponse, EventsPage, KeyInfo, PaneEvent, SessionState, TasteInfo } from "./types.js";
|
|
1
|
+
import type { ArtifactRecord, ArtifactSummary, ArtifactType, ArtifactVersion, CreateArtifactResponse, CreateSessionRequest, CreateSessionResponse, EventsPage, FeedbackPage, FeedbackSubmission, FeedbackType, KeyInfo, PaneEvent, SessionState, TasteInfo } from "./types.js";
|
|
2
2
|
export interface ClientOptions {
|
|
3
3
|
/** Relay base URL, e.g. https://pane.example.com. Trailing slash is trimmed. */
|
|
4
4
|
url: string;
|
|
@@ -6,6 +6,15 @@ export interface ClientOptions {
|
|
|
6
6
|
apiKey: string;
|
|
7
7
|
/** Optional fetch override (defaults to global fetch). */
|
|
8
8
|
fetch?: typeof fetch;
|
|
9
|
+
/**
|
|
10
|
+
* Optional client version string sent as `x-pane-cli-version` on every
|
|
11
|
+
* request. The CLI passes its own `VERSION` constant here so a relay can
|
|
12
|
+
* detect version skew and respond with a `cli_upgrade_required` error
|
|
13
|
+
* (HTTP 426) when the CLI is below the relay's minimum supported version.
|
|
14
|
+
* Library callers (non-CLI) can leave this unset — the header is omitted
|
|
15
|
+
* and the relay treats the request as version-unknown.
|
|
16
|
+
*/
|
|
17
|
+
cliVersion?: string;
|
|
9
18
|
}
|
|
10
19
|
/** Low-level relay response: ok flag, HTTP status, parsed JSON body. */
|
|
11
20
|
export interface RelayResponse {
|
|
@@ -72,6 +81,7 @@ export declare class PaneClient {
|
|
|
72
81
|
private readonly base;
|
|
73
82
|
private readonly apiKey;
|
|
74
83
|
private readonly fetchImpl;
|
|
84
|
+
private readonly cliVersion;
|
|
75
85
|
constructor(opts: ClientOptions);
|
|
76
86
|
/** Relay base URL (trailing slash trimmed). */
|
|
77
87
|
get baseUrl(): string;
|
|
@@ -174,9 +184,35 @@ export declare class PaneClient {
|
|
|
174
184
|
* no body.
|
|
175
185
|
*/
|
|
176
186
|
clearTaste(): Promise<void>;
|
|
187
|
+
/**
|
|
188
|
+
* POST /v1/feedback — submit a one-shot bug report, feature request, or
|
|
189
|
+
* note to the relay operator. Returns the new row's id, type, and
|
|
190
|
+
* created_at; the message is not echoed.
|
|
191
|
+
*/
|
|
192
|
+
submitFeedback(req: {
|
|
193
|
+
type: FeedbackType;
|
|
194
|
+
message: string;
|
|
195
|
+
sessionId?: string;
|
|
196
|
+
}): Promise<FeedbackSubmission>;
|
|
197
|
+
/**
|
|
198
|
+
* GET /v1/feedback — the calling agent's own submissions, newest first.
|
|
199
|
+
* `before` is an opaque cursor from a previous page's `next_before`.
|
|
200
|
+
*/
|
|
201
|
+
listFeedback(opts?: {
|
|
202
|
+
limit?: number;
|
|
203
|
+
before?: string;
|
|
204
|
+
}): Promise<FeedbackPage>;
|
|
177
205
|
/**
|
|
178
206
|
* DELETE /v1/sessions/:id — close/delete a session. Idempotent on the relay
|
|
179
207
|
* side (an already-closed session still returns 204 with no body).
|
|
180
208
|
*/
|
|
181
209
|
deleteSession(id: string): Promise<void>;
|
|
210
|
+
/**
|
|
211
|
+
* DELETE /v1/artifacts/:id — remove an artifact and (server-side) all its
|
|
212
|
+
* versions. Strict cascade: the relay refuses with 409 conflict if any
|
|
213
|
+
* session in any state still references one of the artifact's versions —
|
|
214
|
+
* surface that as a typed PaneApiError so the CLI can render a hint
|
|
215
|
+
* instead of swallowing it.
|
|
216
|
+
*/
|
|
217
|
+
deleteArtifact(idOrSlug: string): Promise<void>;
|
|
182
218
|
}
|
package/dist/client.js
CHANGED
|
@@ -31,10 +31,12 @@ export class PaneClient {
|
|
|
31
31
|
base;
|
|
32
32
|
apiKey;
|
|
33
33
|
fetchImpl;
|
|
34
|
+
cliVersion;
|
|
34
35
|
constructor(opts) {
|
|
35
36
|
this.base = opts.url.replace(/\/$/, "");
|
|
36
37
|
this.apiKey = opts.apiKey;
|
|
37
38
|
this.fetchImpl = opts.fetch ?? fetch;
|
|
39
|
+
this.cliVersion = opts.cliVersion;
|
|
38
40
|
}
|
|
39
41
|
/** Relay base URL (trailing slash trimmed). */
|
|
40
42
|
get baseUrl() {
|
|
@@ -60,6 +62,10 @@ export class PaneClient {
|
|
|
60
62
|
headers: {
|
|
61
63
|
authorization: "Bearer " + this.apiKey,
|
|
62
64
|
...(body ? { "content-type": "application/json" } : {}),
|
|
65
|
+
// x-pane-cli-version drives the relay's version-skew check. Header
|
|
66
|
+
// is omitted entirely when no version was supplied so the relay
|
|
67
|
+
// can distinguish "old CLI" from "non-CLI caller".
|
|
68
|
+
...(this.cliVersion ? { "x-pane-cli-version": this.cliVersion } : {}),
|
|
63
69
|
},
|
|
64
70
|
body: body ? JSON.stringify(body) : undefined,
|
|
65
71
|
});
|
|
@@ -304,6 +310,37 @@ export class PaneClient {
|
|
|
304
310
|
if (!r.ok)
|
|
305
311
|
this.fail(r);
|
|
306
312
|
}
|
|
313
|
+
/**
|
|
314
|
+
* POST /v1/feedback — submit a one-shot bug report, feature request, or
|
|
315
|
+
* note to the relay operator. Returns the new row's id, type, and
|
|
316
|
+
* created_at; the message is not echoed.
|
|
317
|
+
*/
|
|
318
|
+
async submitFeedback(req) {
|
|
319
|
+
const r = await this.call("POST", "/v1/feedback", {
|
|
320
|
+
type: req.type,
|
|
321
|
+
message: req.message,
|
|
322
|
+
session_id: req.sessionId,
|
|
323
|
+
});
|
|
324
|
+
if (!r.ok)
|
|
325
|
+
this.fail(r);
|
|
326
|
+
return this.asObject(r);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* GET /v1/feedback — the calling agent's own submissions, newest first.
|
|
330
|
+
* `before` is an opaque cursor from a previous page's `next_before`.
|
|
331
|
+
*/
|
|
332
|
+
async listFeedback(opts = {}) {
|
|
333
|
+
const q = new URLSearchParams();
|
|
334
|
+
if (opts.limit != null)
|
|
335
|
+
q.set("limit", String(opts.limit));
|
|
336
|
+
if (opts.before != null && opts.before !== "")
|
|
337
|
+
q.set("before", opts.before);
|
|
338
|
+
const qs = q.toString();
|
|
339
|
+
const r = await this.call("GET", `/v1/feedback${qs ? "?" + qs : ""}`);
|
|
340
|
+
if (!r.ok)
|
|
341
|
+
this.fail(r);
|
|
342
|
+
return this.asObject(r);
|
|
343
|
+
}
|
|
307
344
|
/**
|
|
308
345
|
* DELETE /v1/sessions/:id — close/delete a session. Idempotent on the relay
|
|
309
346
|
* side (an already-closed session still returns 204 with no body).
|
|
@@ -313,4 +350,16 @@ export class PaneClient {
|
|
|
313
350
|
if (!r.ok)
|
|
314
351
|
this.fail(r);
|
|
315
352
|
}
|
|
353
|
+
/**
|
|
354
|
+
* DELETE /v1/artifacts/:id — remove an artifact and (server-side) all its
|
|
355
|
+
* versions. Strict cascade: the relay refuses with 409 conflict if any
|
|
356
|
+
* session in any state still references one of the artifact's versions —
|
|
357
|
+
* surface that as a typed PaneApiError so the CLI can render a hint
|
|
358
|
+
* instead of swallowing it.
|
|
359
|
+
*/
|
|
360
|
+
async deleteArtifact(idOrSlug) {
|
|
361
|
+
const r = await this.call("DELETE", `/v1/artifacts/${encodeURIComponent(idOrSlug)}`);
|
|
362
|
+
if (!r.ok)
|
|
363
|
+
this.fail(r);
|
|
364
|
+
}
|
|
316
365
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { openStream } from "./stream.js";
|
|
|
4
4
|
export type { OpenStreamOptions, StreamHandlers, StreamHandle, } from "./stream.js";
|
|
5
5
|
export { registerAgent } from "./register.js";
|
|
6
6
|
export type { RegisterAgentOptions, RegisterAgentResult } from "./register.js";
|
|
7
|
-
export { artifactSchema, callbackSchema, createSessionSchema, artifactTypeSchema, createArtifactSchema, createArtifactVersionSchema, patchArtifactMetadataSchema, } from "./schemas.js";
|
|
7
|
+
export { artifactSchema, callbackSchema, createSessionSchema, artifactTypeSchema, createArtifactSchema, createArtifactVersionSchema, patchArtifactMetadataSchema, feedbackTypeSchema, submitFeedbackSchema, } from "./schemas.js";
|
|
8
8
|
export type { CreateSessionInput } from "./schemas.js";
|
|
9
9
|
export { MAX_EVENT_TYPE_LENGTH, MAX_IDEMPOTENCY_KEY_LENGTH, MAX_RESPONSE_SNIPPET_LENGTH, MAX_FRAME_SNIPPET_LENGTH, } from "./limits.js";
|
|
10
|
-
export type { AuthorKind, PaneEvent, Artifact, ArtifactType, ArtifactVersion, ArtifactRecord, ArtifactSummary, CreateArtifactResponse, KeyInfo, TasteInfo, Callback, CreateSessionRequest, CreateSessionResponse, SessionState, EventsPage, RelayError, } from "./types.js";
|
|
10
|
+
export type { AuthorKind, PaneEvent, Artifact, ArtifactType, ArtifactVersion, ArtifactRecord, ArtifactSummary, CreateArtifactResponse, KeyInfo, TasteInfo, FeedbackType, FeedbackSubmission, FeedbackRecord, FeedbackPage, Callback, CreateSessionRequest, CreateSessionResponse, SessionState, EventsPage, RelayError, } from "./types.js";
|
package/dist/index.js
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
export { PaneClient, PaneApiError } from "./client.js";
|
|
4
4
|
export { openStream } from "./stream.js";
|
|
5
5
|
export { registerAgent } from "./register.js";
|
|
6
|
-
export { artifactSchema, callbackSchema, createSessionSchema, artifactTypeSchema, createArtifactSchema, createArtifactVersionSchema, patchArtifactMetadataSchema, } from "./schemas.js";
|
|
6
|
+
export { artifactSchema, callbackSchema, createSessionSchema, artifactTypeSchema, createArtifactSchema, createArtifactVersionSchema, patchArtifactMetadataSchema, feedbackTypeSchema, submitFeedbackSchema, } from "./schemas.js";
|
|
7
7
|
export { MAX_EVENT_TYPE_LENGTH, MAX_IDEMPOTENCY_KEY_LENGTH, MAX_RESPONSE_SNIPPET_LENGTH, MAX_FRAME_SNIPPET_LENGTH, } from "./limits.js";
|
package/dist/register.d.ts
CHANGED
|
@@ -11,6 +11,13 @@ export interface RegisterAgentOptions {
|
|
|
11
11
|
secret?: string;
|
|
12
12
|
/** Optional fetch override (defaults to global fetch). */
|
|
13
13
|
fetch?: typeof fetch;
|
|
14
|
+
/**
|
|
15
|
+
* Optional client version string. Sent as `x-pane-cli-version` so the
|
|
16
|
+
* relay's version-skew check can flag a too-old CLI even on the
|
|
17
|
+
* un-authenticated register endpoint. See `PaneClient`'s `cliVersion`
|
|
18
|
+
* option for the parent contract.
|
|
19
|
+
*/
|
|
20
|
+
cliVersion?: string;
|
|
14
21
|
}
|
|
15
22
|
export interface RegisterAgentResult {
|
|
16
23
|
agent_id: string;
|
package/dist/register.js
CHANGED
|
@@ -26,6 +26,9 @@ export async function registerAgent(opts) {
|
|
|
26
26
|
if (opts.secret !== undefined && opts.secret !== "") {
|
|
27
27
|
headers["authorization"] = `Bearer ${opts.secret}`;
|
|
28
28
|
}
|
|
29
|
+
if (opts.cliVersion !== undefined && opts.cliVersion !== "") {
|
|
30
|
+
headers["x-pane-cli-version"] = opts.cliVersion;
|
|
31
|
+
}
|
|
29
32
|
let res;
|
|
30
33
|
try {
|
|
31
34
|
res = await fetchImpl(base + "/v1/register", {
|
package/dist/schemas.d.ts
CHANGED
|
@@ -193,5 +193,19 @@ export declare const patchArtifactMetadataSchema: z.ZodObject<{
|
|
|
193
193
|
description?: string | undefined;
|
|
194
194
|
tags?: string[] | undefined;
|
|
195
195
|
}>;
|
|
196
|
+
export declare const feedbackTypeSchema: z.ZodEnum<["bug", "feature", "note"]>;
|
|
197
|
+
export declare const submitFeedbackSchema: z.ZodObject<{
|
|
198
|
+
type: z.ZodEnum<["bug", "feature", "note"]>;
|
|
199
|
+
message: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
|
|
200
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
201
|
+
}, "strip", z.ZodTypeAny, {
|
|
202
|
+
type: "bug" | "feature" | "note";
|
|
203
|
+
message: string;
|
|
204
|
+
session_id?: string | undefined;
|
|
205
|
+
}, {
|
|
206
|
+
type: "bug" | "feature" | "note";
|
|
207
|
+
message: string;
|
|
208
|
+
session_id?: string | undefined;
|
|
209
|
+
}>;
|
|
196
210
|
/** @deprecated use `CreateSessionRequest` from ./types.js (same type). */
|
|
197
211
|
export type CreateSessionInput = z.infer<typeof createSessionSchema>;
|
package/dist/schemas.js
CHANGED
|
@@ -80,3 +80,15 @@ export const patchArtifactMetadataSchema = z.object({
|
|
|
80
80
|
description: z.string().optional(),
|
|
81
81
|
tags: z.array(z.string().min(1)).optional(),
|
|
82
82
|
});
|
|
83
|
+
// POST /v1/feedback — an agent submits a bug report, feature request, or note
|
|
84
|
+
// to the relay operator. Message is trimmed before length check so whitespace
|
|
85
|
+
// padding cannot bypass the 1..4000 cap.
|
|
86
|
+
export const feedbackTypeSchema = z.enum(["bug", "feature", "note"]);
|
|
87
|
+
export const submitFeedbackSchema = z.object({
|
|
88
|
+
type: feedbackTypeSchema,
|
|
89
|
+
message: z
|
|
90
|
+
.string()
|
|
91
|
+
.transform((s) => s.trim())
|
|
92
|
+
.pipe(z.string().min(1).max(4000)),
|
|
93
|
+
session_id: z.string().min(1).optional(),
|
|
94
|
+
});
|
package/dist/types.d.ts
CHANGED
|
@@ -142,6 +142,27 @@ export interface TasteInfo {
|
|
|
142
142
|
updated_at: string | null;
|
|
143
143
|
bytes: number;
|
|
144
144
|
}
|
|
145
|
+
/** A feedback `type` discriminant accepted by POST /v1/feedback. */
|
|
146
|
+
export type FeedbackType = "bug" | "feature" | "note";
|
|
147
|
+
/** Response from POST /v1/feedback — id, type, created_at only (no message echo). */
|
|
148
|
+
export interface FeedbackSubmission {
|
|
149
|
+
id: string;
|
|
150
|
+
type: FeedbackType;
|
|
151
|
+
created_at: string;
|
|
152
|
+
}
|
|
153
|
+
/** A row from GET /v1/feedback — full record including message. */
|
|
154
|
+
export interface FeedbackRecord {
|
|
155
|
+
id: string;
|
|
156
|
+
type: FeedbackType;
|
|
157
|
+
message: string;
|
|
158
|
+
session_id: string | null;
|
|
159
|
+
created_at: string;
|
|
160
|
+
}
|
|
161
|
+
/** Response from GET /v1/feedback — page of the calling agent's own submissions. */
|
|
162
|
+
export interface FeedbackPage {
|
|
163
|
+
items: FeedbackRecord[];
|
|
164
|
+
next_before?: string;
|
|
165
|
+
}
|
|
145
166
|
/** A relay error envelope. */
|
|
146
167
|
export interface RelayError {
|
|
147
168
|
code: string;
|