feat(companion): add typed canvas RPC helpers for runtime clients
This commit is contained in:
@@ -185,6 +185,56 @@ export interface SetNodeLocationInput extends Omit<NodeLocationSetParams, 'conne
|
||||
|
||||
export interface SetNodePushTokenInput extends Omit<NodePushTokenSetParams, 'connectionId'> {}
|
||||
|
||||
export interface CanvasArtifact {
|
||||
id: string;
|
||||
type: string;
|
||||
title?: string;
|
||||
content: unknown;
|
||||
metadata?: Record<string, unknown>;
|
||||
createdAt: number;
|
||||
updatedAt: number;
|
||||
}
|
||||
|
||||
export interface PutCanvasArtifactInput {
|
||||
sessionId: string;
|
||||
artifactId?: string;
|
||||
type: string;
|
||||
title?: string;
|
||||
content: unknown;
|
||||
metadata?: Record<string, unknown>;
|
||||
}
|
||||
|
||||
export interface GetCanvasArtifactInput {
|
||||
sessionId: string;
|
||||
artifactId: string;
|
||||
}
|
||||
|
||||
export interface DeleteCanvasArtifactInput {
|
||||
sessionId: string;
|
||||
artifactId: string;
|
||||
}
|
||||
|
||||
export interface CanvasPutResult {
|
||||
artifact: CanvasArtifact;
|
||||
upserted: boolean;
|
||||
}
|
||||
|
||||
export interface CanvasGetResult {
|
||||
artifact: CanvasArtifact;
|
||||
}
|
||||
|
||||
export interface CanvasListResult {
|
||||
artifacts: CanvasArtifact[];
|
||||
}
|
||||
|
||||
export interface CanvasDeleteResult {
|
||||
deleted: boolean;
|
||||
}
|
||||
|
||||
export interface CanvasClearResult {
|
||||
cleared: number;
|
||||
}
|
||||
|
||||
export class GatewayRpcError extends Error {
|
||||
readonly code: number;
|
||||
|
||||
@@ -378,6 +428,39 @@ export class CompanionRuntimeClient {
|
||||
});
|
||||
}
|
||||
|
||||
putCanvasArtifact(input: PutCanvasArtifactInput): Promise<CanvasPutResult> {
|
||||
return this.call<CanvasPutResult>('canvas.put', {
|
||||
sessionId: input.sessionId,
|
||||
artifactId: input.artifactId,
|
||||
type: input.type,
|
||||
title: input.title,
|
||||
content: input.content,
|
||||
metadata: input.metadata,
|
||||
});
|
||||
}
|
||||
|
||||
getCanvasArtifact(input: GetCanvasArtifactInput): Promise<CanvasGetResult> {
|
||||
return this.call<CanvasGetResult>('canvas.get', {
|
||||
sessionId: input.sessionId,
|
||||
artifactId: input.artifactId,
|
||||
});
|
||||
}
|
||||
|
||||
listCanvasArtifacts(sessionId: string): Promise<CanvasListResult> {
|
||||
return this.call<CanvasListResult>('canvas.list', { sessionId });
|
||||
}
|
||||
|
||||
deleteCanvasArtifact(input: DeleteCanvasArtifactInput): Promise<CanvasDeleteResult> {
|
||||
return this.call<CanvasDeleteResult>('canvas.delete', {
|
||||
sessionId: input.sessionId,
|
||||
artifactId: input.artifactId,
|
||||
});
|
||||
}
|
||||
|
||||
clearCanvasArtifacts(sessionId: string): Promise<CanvasClearResult> {
|
||||
return this.call<CanvasClearResult>('canvas.clear', { sessionId });
|
||||
}
|
||||
|
||||
private handleMessage(raw: string): void {
|
||||
let parsed: RpcMessage;
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user