From 7d04dcad401def7b1561ace5127b749d86157679 Mon Sep 17 00:00:00 2001 From: Win Cheng Date: Mon, 8 Sep 2025 13:41:28 -0700 Subject: [PATCH 1/7] added prompt engine back in --- src/core.ts | 3 ++ src/prompt_engine/index.ts | 50 ++++++++++++++++++++++++ src/prompt_engine/interfaces.ts | 69 +++++++++++++++++++++++++++++++++ 3 files changed, 122 insertions(+) create mode 100644 src/prompt_engine/index.ts create mode 100644 src/prompt_engine/interfaces.ts diff --git a/src/core.ts b/src/core.ts index f456478..d5237ae 100644 --- a/src/core.ts +++ b/src/core.ts @@ -8,6 +8,7 @@ import { File } from "./store/file"; import Validate from "./validate"; import Vision from "./vision/vision"; import Web from "./web/web"; +import PromptEngine from "./prompt_engine"; type BoundMethod = T extends (...args: any[]) => any ? T : never; @@ -29,6 +30,7 @@ export const JigsawStack = (config?: BaseConfig) => { const audio = new AudioApis(client); const file = new File(client); const validate = new Validate(client); + const promptengine = new PromptEngine(client); const store = { upload: file.upload, retrieve: file.retrieve, @@ -58,6 +60,7 @@ export const JigsawStack = (config?: BaseConfig) => { }, store, validate, + prompt_engine: promptengine, classification: classification.classify, }; }; diff --git a/src/prompt_engine/index.ts b/src/prompt_engine/index.ts new file mode 100644 index 0000000..811e635 --- /dev/null +++ b/src/prompt_engine/index.ts @@ -0,0 +1,50 @@ +import { Stream } from "../lib/streaming"; +import { RequestClient } from "../request"; +import { + PromptCreateParams, + PromptExecuteParams, + PromptGetResponse, + PromptListParams, + PromptListResponse, + PromptRunParams, + RunPromptDirectResponse, + RunPromptResponse, + RunPromptResponseStream, +} from "./interfaces"; + +class PromptEngine { + constructor(private readonly client: RequestClient) {} + create = async (params: PromptCreateParams): Promise<{ prompt_engine_id: string }> => { + return await this.client.fetchJSS("/prompt_engine", "POST", params); + }; + + run_prompt_direct(params: PromptRunParams & { stream: true }): Promise>; + run_prompt_direct(params: PromptRunParams & { stream?: false }): Promise; + async run_prompt_direct(params: PromptRunParams): Promise> { + const resp = await this.client.fetchJSS(`/prompt_engine/run`, "POST", params); + if (!params.stream) { + return resp as RunPromptDirectResponse; + } + return Stream.fromReadableStream(resp.body) as RunPromptResponseStream; + } + get = async (id: string): Promise => { + return await this.client.fetchJSS(`/prompt_engine/${id}`, "GET", {}); + }; + list = async (params: PromptListParams = { limit: 20, page: 0 }): Promise => { + return await this.client.fetchJSS("/prompt_engine", "GET", {}, params); + }; + delete = async (id: string): Promise<{ prompt_engine_id: string }> => { + return await this.client.fetchJSS(`/prompt_engine/${id}`, "DELETE", {}); + }; + run(params: PromptExecuteParams & { stream: true }): Promise>; + run(params: PromptExecuteParams & { stream?: false }): Promise; + async run(params: PromptExecuteParams): Promise | RunPromptResponse> { + const resp = await this.client.fetchJSS(`/prompt_engine/${params.id}`, "POST", params); + if (!params.stream) { + return resp as RunPromptResponse; + } + return Stream.fromReadableStream(resp.body) as RunPromptResponseStream; + } +} + +export default PromptEngine; diff --git a/src/prompt_engine/interfaces.ts b/src/prompt_engine/interfaces.ts new file mode 100644 index 0000000..bb450f9 --- /dev/null +++ b/src/prompt_engine/interfaces.ts @@ -0,0 +1,69 @@ +import { Stream } from "../lib/streaming"; + +export interface PromptCreateParams { + prompt: string; + return_prompt?: string | Array> | Record; + inputs?: Array<{ + key: string; + optional?: boolean; + initial_value?: string; + }>; + use_internet?: boolean; + optimize_prompt?: boolean; + prompt_guard?: Array< + | "defamation" + | "specialized_advice" + | "privacy" + | "intellectual_property" + | "indiscriminate_weapons" + | "hate" + | "sexual_content" + | "elections" + | "code_interpreter_abuse" + >; +} + +export interface PromptRunParams extends Omit { + input_values?: Record; + stream?: boolean; +} + +export interface PromptExecuteParams { + id: string; + input_values?: Record; + stream?: boolean; +} + +export interface PromptListParams { + page?: number; + limit?: number; +} + +export interface PromptResult { + id: string; + prompt: string; + inputs: Array<{ + key: string; + optional: boolean; + }>; + return_prompt: string; + created_at: string; +} + +export interface PromptGetResponse extends PromptResult { + success: boolean; +} + +export interface PromptListResponse extends PromptResult { + prompt_engines: PromptResult[]; +} + +export interface RunPromptResponse { + result: any; + success: boolean; + message?: string; +} + +export interface RunPromptResponseStream extends Stream {} + +export interface RunPromptDirectResponse extends RunPromptResponse {} From 8acc352758ecabb588c7e483be5f782cf0f9d2b2 Mon Sep 17 00:00:00 2001 From: Win Cheng Date: Mon, 8 Sep 2025 13:44:42 -0700 Subject: [PATCH 2/7] linting --- src/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core.ts b/src/core.ts index d5237ae..6e2961c 100644 --- a/src/core.ts +++ b/src/core.ts @@ -3,12 +3,12 @@ import { BaseConfig } from "../types"; import AudioApis from "./audio/audio"; import Classification from "./classification/index"; import General from "./general"; +import PromptEngine from "./prompt_engine"; import { RequestClient } from "./request"; import { File } from "./store/file"; import Validate from "./validate"; import Vision from "./vision/vision"; import Web from "./web/web"; -import PromptEngine from "./prompt_engine"; type BoundMethod = T extends (...args: any[]) => any ? T : never; From 3fd0b196736345bae5a3c8457b6df96fb30a1756 Mon Sep 17 00:00:00 2001 From: Win Cheng Date: Mon, 8 Sep 2025 14:02:43 -0700 Subject: [PATCH 3/7] updating types --- src/prompt_engine/interfaces.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/prompt_engine/interfaces.ts b/src/prompt_engine/interfaces.ts index bb450f9..dda7fd8 100644 --- a/src/prompt_engine/interfaces.ts +++ b/src/prompt_engine/interfaces.ts @@ -1,5 +1,5 @@ import { Stream } from "../lib/streaming"; - +import { BaseResponse } from "../../types"; export interface PromptCreateParams { prompt: string; return_prompt?: string | Array> | Record; @@ -58,12 +58,16 @@ export interface PromptListResponse extends PromptResult { prompt_engines: PromptResult[]; } -export interface RunPromptResponse { +export interface RunPromptResponse extends BaseResponse { result: any; - success: boolean; - message?: string; + message: string; } export interface RunPromptResponseStream extends Stream {} export interface RunPromptDirectResponse extends RunPromptResponse {} + +export interface PromptEngineCreateResponse extends BaseResponse { + prompt_engine_id: string; + optimized_prompt?: string; +} From bc2acdfd4ddbead549365b822435c1ccd636dd57 Mon Sep 17 00:00:00 2001 From: Win Cheng Date: Mon, 8 Sep 2025 15:23:56 -0700 Subject: [PATCH 4/7] update path --- src/prompt_engine/index.ts | 12 ++++++------ src/prompt_engine/interfaces.ts | 10 ++++++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/prompt_engine/index.ts b/src/prompt_engine/index.ts index 811e635..12a6b62 100644 --- a/src/prompt_engine/index.ts +++ b/src/prompt_engine/index.ts @@ -15,31 +15,31 @@ import { class PromptEngine { constructor(private readonly client: RequestClient) {} create = async (params: PromptCreateParams): Promise<{ prompt_engine_id: string }> => { - return await this.client.fetchJSS("/prompt_engine", "POST", params); + return await this.client.fetchJSS("/v1/prompt_engine", "POST", params); }; run_prompt_direct(params: PromptRunParams & { stream: true }): Promise>; run_prompt_direct(params: PromptRunParams & { stream?: false }): Promise; async run_prompt_direct(params: PromptRunParams): Promise> { - const resp = await this.client.fetchJSS(`/prompt_engine/run`, "POST", params); + const resp = await this.client.fetchJSS(`/v1/prompt_engine/run`, "POST", params); if (!params.stream) { return resp as RunPromptDirectResponse; } return Stream.fromReadableStream(resp.body) as RunPromptResponseStream; } get = async (id: string): Promise => { - return await this.client.fetchJSS(`/prompt_engine/${id}`, "GET", {}); + return await this.client.fetchJSS(`/v1/prompt_engine/${id}`, "GET", {}); }; list = async (params: PromptListParams = { limit: 20, page: 0 }): Promise => { - return await this.client.fetchJSS("/prompt_engine", "GET", {}, params); + return await this.client.fetchJSS("/v1/prompt_engine", "GET", {}, params); }; delete = async (id: string): Promise<{ prompt_engine_id: string }> => { - return await this.client.fetchJSS(`/prompt_engine/${id}`, "DELETE", {}); + return await this.client.fetchJSS(`/v1/prompt_engine/${id}`, "DELETE", {}); }; run(params: PromptExecuteParams & { stream: true }): Promise>; run(params: PromptExecuteParams & { stream?: false }): Promise; async run(params: PromptExecuteParams): Promise | RunPromptResponse> { - const resp = await this.client.fetchJSS(`/prompt_engine/${params.id}`, "POST", params); + const resp = await this.client.fetchJSS(`/v1/prompt_engine/${params.id}`, "POST", params); if (!params.stream) { return resp as RunPromptResponse; } diff --git a/src/prompt_engine/interfaces.ts b/src/prompt_engine/interfaces.ts index dda7fd8..7cb0560 100644 --- a/src/prompt_engine/interfaces.ts +++ b/src/prompt_engine/interfaces.ts @@ -46,15 +46,21 @@ export interface PromptResult { key: string; optional: boolean; }>; - return_prompt: string; + return_prompt: string | null | undefined; + return_prompt_type: "json" | "string"; created_at: string; } export interface PromptGetResponse extends PromptResult { success: boolean; + _usage: { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; + }; } -export interface PromptListResponse extends PromptResult { +export interface PromptListResponse extends BaseResponse { prompt_engines: PromptResult[]; } From e2438b1e824cc3c6ec44b183aa75328935d18be4 Mon Sep 17 00:00:00 2001 From: Win Cheng Date: Mon, 8 Sep 2025 15:27:41 -0700 Subject: [PATCH 5/7] create works --- src/prompt_engine/index.ts | 3 ++- src/prompt_engine/interfaces.ts | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/prompt_engine/index.ts b/src/prompt_engine/index.ts index 12a6b62..f248196 100644 --- a/src/prompt_engine/index.ts +++ b/src/prompt_engine/index.ts @@ -10,11 +10,12 @@ import { RunPromptDirectResponse, RunPromptResponse, RunPromptResponseStream, + CreatePromptResponse, } from "./interfaces"; class PromptEngine { constructor(private readonly client: RequestClient) {} - create = async (params: PromptCreateParams): Promise<{ prompt_engine_id: string }> => { + create = async (params: PromptCreateParams): Promise => { return await this.client.fetchJSS("/v1/prompt_engine", "POST", params); }; diff --git a/src/prompt_engine/interfaces.ts b/src/prompt_engine/interfaces.ts index 7cb0560..24cb56d 100644 --- a/src/prompt_engine/interfaces.ts +++ b/src/prompt_engine/interfaces.ts @@ -69,6 +69,11 @@ export interface RunPromptResponse extends BaseResponse { message: string; } +export interface CreatePromptResponse extends BaseResponse { + prompt_engine_id: string; + optimized_prompt: string; +} + export interface RunPromptResponseStream extends Stream {} export interface RunPromptDirectResponse extends RunPromptResponse {} From 94ef3cd5e955b20aa801aaff2a6d308575c29f53 Mon Sep 17 00:00:00 2001 From: Win Cheng Date: Mon, 8 Sep 2025 16:06:09 -0700 Subject: [PATCH 6/7] up --- src/prompt_engine/interfaces.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/prompt_engine/interfaces.ts b/src/prompt_engine/interfaces.ts index 24cb56d..d56500a 100644 --- a/src/prompt_engine/interfaces.ts +++ b/src/prompt_engine/interfaces.ts @@ -66,7 +66,6 @@ export interface PromptListResponse extends BaseResponse { export interface RunPromptResponse extends BaseResponse { result: any; - message: string; } export interface CreatePromptResponse extends BaseResponse { From 812cd983fd7b630cc2fb2b6b36be85fb63594065 Mon Sep 17 00:00:00 2001 From: Win Cheng Date: Mon, 8 Sep 2025 18:40:14 -0700 Subject: [PATCH 7/7] adding prompt engine back exactly --- src/prompt_engine/index.ts | 15 +++++++-------- src/prompt_engine/interfaces.ts | 26 ++++++-------------------- 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/src/prompt_engine/index.ts b/src/prompt_engine/index.ts index f248196..811e635 100644 --- a/src/prompt_engine/index.ts +++ b/src/prompt_engine/index.ts @@ -10,37 +10,36 @@ import { RunPromptDirectResponse, RunPromptResponse, RunPromptResponseStream, - CreatePromptResponse, } from "./interfaces"; class PromptEngine { constructor(private readonly client: RequestClient) {} - create = async (params: PromptCreateParams): Promise => { - return await this.client.fetchJSS("/v1/prompt_engine", "POST", params); + create = async (params: PromptCreateParams): Promise<{ prompt_engine_id: string }> => { + return await this.client.fetchJSS("/prompt_engine", "POST", params); }; run_prompt_direct(params: PromptRunParams & { stream: true }): Promise>; run_prompt_direct(params: PromptRunParams & { stream?: false }): Promise; async run_prompt_direct(params: PromptRunParams): Promise> { - const resp = await this.client.fetchJSS(`/v1/prompt_engine/run`, "POST", params); + const resp = await this.client.fetchJSS(`/prompt_engine/run`, "POST", params); if (!params.stream) { return resp as RunPromptDirectResponse; } return Stream.fromReadableStream(resp.body) as RunPromptResponseStream; } get = async (id: string): Promise => { - return await this.client.fetchJSS(`/v1/prompt_engine/${id}`, "GET", {}); + return await this.client.fetchJSS(`/prompt_engine/${id}`, "GET", {}); }; list = async (params: PromptListParams = { limit: 20, page: 0 }): Promise => { - return await this.client.fetchJSS("/v1/prompt_engine", "GET", {}, params); + return await this.client.fetchJSS("/prompt_engine", "GET", {}, params); }; delete = async (id: string): Promise<{ prompt_engine_id: string }> => { - return await this.client.fetchJSS(`/v1/prompt_engine/${id}`, "DELETE", {}); + return await this.client.fetchJSS(`/prompt_engine/${id}`, "DELETE", {}); }; run(params: PromptExecuteParams & { stream: true }): Promise>; run(params: PromptExecuteParams & { stream?: false }): Promise; async run(params: PromptExecuteParams): Promise | RunPromptResponse> { - const resp = await this.client.fetchJSS(`/v1/prompt_engine/${params.id}`, "POST", params); + const resp = await this.client.fetchJSS(`/prompt_engine/${params.id}`, "POST", params); if (!params.stream) { return resp as RunPromptResponse; } diff --git a/src/prompt_engine/interfaces.ts b/src/prompt_engine/interfaces.ts index d56500a..bb450f9 100644 --- a/src/prompt_engine/interfaces.ts +++ b/src/prompt_engine/interfaces.ts @@ -1,5 +1,5 @@ import { Stream } from "../lib/streaming"; -import { BaseResponse } from "../../types"; + export interface PromptCreateParams { prompt: string; return_prompt?: string | Array> | Record; @@ -46,38 +46,24 @@ export interface PromptResult { key: string; optional: boolean; }>; - return_prompt: string | null | undefined; - return_prompt_type: "json" | "string"; + return_prompt: string; created_at: string; } export interface PromptGetResponse extends PromptResult { success: boolean; - _usage: { - prompt_tokens: number; - completion_tokens: number; - total_tokens: number; - }; } -export interface PromptListResponse extends BaseResponse { +export interface PromptListResponse extends PromptResult { prompt_engines: PromptResult[]; } -export interface RunPromptResponse extends BaseResponse { +export interface RunPromptResponse { result: any; -} - -export interface CreatePromptResponse extends BaseResponse { - prompt_engine_id: string; - optimized_prompt: string; + success: boolean; + message?: string; } export interface RunPromptResponseStream extends Stream {} export interface RunPromptDirectResponse extends RunPromptResponse {} - -export interface PromptEngineCreateResponse extends BaseResponse { - prompt_engine_id: string; - optimized_prompt?: string; -}