Add basic cron scheduler to goose-server (#2621)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
// This file is auto-generated by @hey-api/openapi-ts
|
||||
|
||||
import type { Options as ClientOptions, TDataShape, Client } from '@hey-api/client-fetch';
|
||||
import type { GetToolsData, GetToolsResponse, ReadAllConfigData, ReadAllConfigResponse, BackupConfigData, BackupConfigResponse, GetExtensionsData, GetExtensionsResponse, AddExtensionData, AddExtensionResponse, RemoveExtensionData, RemoveExtensionResponse, InitConfigData, InitConfigResponse, UpsertPermissionsData, UpsertPermissionsResponse, ProvidersData, ProvidersResponse2, ReadConfigData, RemoveConfigData, RemoveConfigResponse, UpsertConfigData, UpsertConfigResponse, ConfirmPermissionData, ManageContextData, ManageContextResponse, ListSessionsData, ListSessionsResponse, GetSessionHistoryData, GetSessionHistoryResponse } from './types.gen';
|
||||
import type { GetToolsData, GetToolsResponse, ReadAllConfigData, ReadAllConfigResponse, BackupConfigData, BackupConfigResponse, GetExtensionsData, GetExtensionsResponse, AddExtensionData, AddExtensionResponse, RemoveExtensionData, RemoveExtensionResponse, InitConfigData, InitConfigResponse, UpsertPermissionsData, UpsertPermissionsResponse, ProvidersData, ProvidersResponse2, ReadConfigData, RemoveConfigData, RemoveConfigResponse, UpsertConfigData, UpsertConfigResponse, ConfirmPermissionData, ManageContextData, ManageContextResponse, CreateScheduleData, CreateScheduleResponse, DeleteScheduleData, DeleteScheduleResponse, ListSchedulesData, ListSchedulesResponse2, RunNowHandlerData, RunNowHandlerResponse, SessionsHandlerData, SessionsHandlerResponse, ListSessionsData, ListSessionsResponse, GetSessionHistoryData, GetSessionHistoryResponse } from './types.gen';
|
||||
import { client as _heyApiClient } from './client.gen';
|
||||
|
||||
export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = ClientOptions<TData, ThrowOnError> & {
|
||||
@@ -144,6 +144,45 @@ export const manageContext = <ThrowOnError extends boolean = false>(options: Opt
|
||||
});
|
||||
};
|
||||
|
||||
export const createSchedule = <ThrowOnError extends boolean = false>(options: Options<CreateScheduleData, ThrowOnError>) => {
|
||||
return (options.client ?? _heyApiClient).post<CreateScheduleResponse, unknown, ThrowOnError>({
|
||||
url: '/schedule/create',
|
||||
...options,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
...options?.headers
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const deleteSchedule = <ThrowOnError extends boolean = false>(options: Options<DeleteScheduleData, ThrowOnError>) => {
|
||||
return (options.client ?? _heyApiClient).delete<DeleteScheduleResponse, unknown, ThrowOnError>({
|
||||
url: '/schedule/delete/{id}',
|
||||
...options
|
||||
});
|
||||
};
|
||||
|
||||
export const listSchedules = <ThrowOnError extends boolean = false>(options?: Options<ListSchedulesData, ThrowOnError>) => {
|
||||
return (options?.client ?? _heyApiClient).get<ListSchedulesResponse2, unknown, ThrowOnError>({
|
||||
url: '/schedule/list',
|
||||
...options
|
||||
});
|
||||
};
|
||||
|
||||
export const runNowHandler = <ThrowOnError extends boolean = false>(options: Options<RunNowHandlerData, ThrowOnError>) => {
|
||||
return (options.client ?? _heyApiClient).post<RunNowHandlerResponse, unknown, ThrowOnError>({
|
||||
url: '/schedule/{id}/run_now',
|
||||
...options
|
||||
});
|
||||
};
|
||||
|
||||
export const sessionsHandler = <ThrowOnError extends boolean = false>(options: Options<SessionsHandlerData, ThrowOnError>) => {
|
||||
return (options.client ?? _heyApiClient).get<SessionsHandlerResponse, unknown, ThrowOnError>({
|
||||
url: '/schedule/{id}/sessions',
|
||||
...options
|
||||
});
|
||||
};
|
||||
|
||||
export const listSessions = <ThrowOnError extends boolean = false>(options?: Options<ListSessionsData, ThrowOnError>) => {
|
||||
return (options?.client ?? _heyApiClient).get<ListSessionsResponse, unknown, ThrowOnError>({
|
||||
url: '/sessions',
|
||||
|
||||
@@ -62,6 +62,12 @@ export type ContextManageResponse = {
|
||||
tokenCounts: Array<number>;
|
||||
};
|
||||
|
||||
export type CreateScheduleRequest = {
|
||||
cron: string;
|
||||
id: string;
|
||||
recipe_source: string;
|
||||
};
|
||||
|
||||
export type EmbeddedResource = {
|
||||
annotations?: Annotations | null;
|
||||
resource: ResourceContents;
|
||||
@@ -166,6 +172,10 @@ export type ImageContent = {
|
||||
mimeType: string;
|
||||
};
|
||||
|
||||
export type ListSchedulesResponse = {
|
||||
jobs: Array<ScheduledJob>;
|
||||
};
|
||||
|
||||
/**
|
||||
* A message to or from an LLM
|
||||
*/
|
||||
@@ -228,14 +238,8 @@ export type PermissionLevel = 'always_allow' | 'ask_before' | 'never_allow';
|
||||
export type PrincipalType = 'Extension' | 'Tool';
|
||||
|
||||
export type ProviderDetails = {
|
||||
/**
|
||||
* Indicates whether the provider is fully configured
|
||||
*/
|
||||
is_configured: boolean;
|
||||
metadata: ProviderMetadata;
|
||||
/**
|
||||
* Unique identifier and name of the provider
|
||||
*/
|
||||
name: string;
|
||||
};
|
||||
|
||||
@@ -294,6 +298,32 @@ export type ResourceContents = {
|
||||
|
||||
export type Role = 'user' | 'assistant';
|
||||
|
||||
export type RunNowResponse = {
|
||||
session_id: string;
|
||||
};
|
||||
|
||||
export type ScheduledJob = {
|
||||
cron: string;
|
||||
id: string;
|
||||
last_run?: string | null;
|
||||
source: string;
|
||||
};
|
||||
|
||||
export type SessionDisplayInfo = {
|
||||
accumulatedInputTokens?: number | null;
|
||||
accumulatedOutputTokens?: number | null;
|
||||
accumulatedTotalTokens?: number | null;
|
||||
createdAt: string;
|
||||
id: string;
|
||||
inputTokens?: number | null;
|
||||
messageCount: number;
|
||||
name: string;
|
||||
outputTokens?: number | null;
|
||||
scheduleId?: string | null;
|
||||
totalTokens?: number | null;
|
||||
workingDir: string;
|
||||
};
|
||||
|
||||
export type SessionHistoryResponse = {
|
||||
/**
|
||||
* List of messages in the session conversation
|
||||
@@ -352,6 +382,10 @@ export type SessionMetadata = {
|
||||
* The number of output tokens used in the session. Retrieved from the provider's last usage.
|
||||
*/
|
||||
output_tokens?: number | null;
|
||||
/**
|
||||
* ID of the schedule that triggered this session, if any
|
||||
*/
|
||||
schedule_id?: string | null;
|
||||
/**
|
||||
* The total number of tokens used in the session. Retrieved from the provider's last usage.
|
||||
*/
|
||||
@@ -362,6 +396,10 @@ export type SessionMetadata = {
|
||||
working_dir: string;
|
||||
};
|
||||
|
||||
export type SessionsQuery = {
|
||||
limit?: number;
|
||||
};
|
||||
|
||||
export type SummarizationRequested = {
|
||||
msg: string;
|
||||
};
|
||||
@@ -464,9 +502,6 @@ export type ToolInfo = {
|
||||
|
||||
export type ToolPermission = {
|
||||
permission: PermissionLevel;
|
||||
/**
|
||||
* Unique identifier and name of the tool, format <extension_name>__<tool_name>
|
||||
*/
|
||||
tool_name: string;
|
||||
};
|
||||
|
||||
@@ -849,6 +884,146 @@ export type ManageContextResponses = {
|
||||
|
||||
export type ManageContextResponse = ManageContextResponses[keyof ManageContextResponses];
|
||||
|
||||
export type CreateScheduleData = {
|
||||
body: CreateScheduleRequest;
|
||||
path?: never;
|
||||
query?: never;
|
||||
url: '/schedule/create';
|
||||
};
|
||||
|
||||
export type CreateScheduleErrors = {
|
||||
/**
|
||||
* Internal server error
|
||||
*/
|
||||
500: unknown;
|
||||
};
|
||||
|
||||
export type CreateScheduleResponses = {
|
||||
/**
|
||||
* Scheduled job created successfully
|
||||
*/
|
||||
200: ScheduledJob;
|
||||
};
|
||||
|
||||
export type CreateScheduleResponse = CreateScheduleResponses[keyof CreateScheduleResponses];
|
||||
|
||||
export type DeleteScheduleData = {
|
||||
body?: never;
|
||||
path: {
|
||||
/**
|
||||
* ID of the schedule to delete
|
||||
*/
|
||||
id: string;
|
||||
};
|
||||
query?: never;
|
||||
url: '/schedule/delete/{id}';
|
||||
};
|
||||
|
||||
export type DeleteScheduleErrors = {
|
||||
/**
|
||||
* Scheduled job not found
|
||||
*/
|
||||
404: unknown;
|
||||
/**
|
||||
* Internal server error
|
||||
*/
|
||||
500: unknown;
|
||||
};
|
||||
|
||||
export type DeleteScheduleResponses = {
|
||||
/**
|
||||
* Scheduled job deleted successfully
|
||||
*/
|
||||
204: void;
|
||||
};
|
||||
|
||||
export type DeleteScheduleResponse = DeleteScheduleResponses[keyof DeleteScheduleResponses];
|
||||
|
||||
export type ListSchedulesData = {
|
||||
body?: never;
|
||||
path?: never;
|
||||
query?: never;
|
||||
url: '/schedule/list';
|
||||
};
|
||||
|
||||
export type ListSchedulesErrors = {
|
||||
/**
|
||||
* Internal server error
|
||||
*/
|
||||
500: unknown;
|
||||
};
|
||||
|
||||
export type ListSchedulesResponses = {
|
||||
/**
|
||||
* A list of scheduled jobs
|
||||
*/
|
||||
200: ListSchedulesResponse;
|
||||
};
|
||||
|
||||
export type ListSchedulesResponse2 = ListSchedulesResponses[keyof ListSchedulesResponses];
|
||||
|
||||
export type RunNowHandlerData = {
|
||||
body?: never;
|
||||
path: {
|
||||
/**
|
||||
* ID of the schedule to run
|
||||
*/
|
||||
id: string;
|
||||
};
|
||||
query?: never;
|
||||
url: '/schedule/{id}/run_now';
|
||||
};
|
||||
|
||||
export type RunNowHandlerErrors = {
|
||||
/**
|
||||
* Scheduled job not found
|
||||
*/
|
||||
404: unknown;
|
||||
/**
|
||||
* Internal server error when trying to run the job
|
||||
*/
|
||||
500: unknown;
|
||||
};
|
||||
|
||||
export type RunNowHandlerResponses = {
|
||||
/**
|
||||
* Scheduled job triggered successfully, returns new session ID
|
||||
*/
|
||||
200: RunNowResponse;
|
||||
};
|
||||
|
||||
export type RunNowHandlerResponse = RunNowHandlerResponses[keyof RunNowHandlerResponses];
|
||||
|
||||
export type SessionsHandlerData = {
|
||||
body?: never;
|
||||
path: {
|
||||
/**
|
||||
* ID of the schedule
|
||||
*/
|
||||
id: string;
|
||||
};
|
||||
query?: {
|
||||
limit?: number;
|
||||
};
|
||||
url: '/schedule/{id}/sessions';
|
||||
};
|
||||
|
||||
export type SessionsHandlerErrors = {
|
||||
/**
|
||||
* Internal server error
|
||||
*/
|
||||
500: unknown;
|
||||
};
|
||||
|
||||
export type SessionsHandlerResponses = {
|
||||
/**
|
||||
* A list of session display info
|
||||
*/
|
||||
200: Array<SessionDisplayInfo>;
|
||||
};
|
||||
|
||||
export type SessionsHandlerResponse = SessionsHandlerResponses[keyof SessionsHandlerResponses];
|
||||
|
||||
export type ListSessionsData = {
|
||||
body?: never;
|
||||
path?: never;
|
||||
|
||||
Reference in New Issue
Block a user