promptopskit 0.0.1 → 0.1.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.
- package/README.md +88 -15
- package/dist/{chunk-X64JII57.js → chunk-HMYPMHTG.js} +91 -4
- package/dist/chunk-HMYPMHTG.js.map +1 -0
- package/dist/cli/index.js +593 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +1049 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +191 -0
- package/dist/index.d.ts +18 -6
- package/dist/index.js +28 -4
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.cjs +151 -0
- package/dist/providers/anthropic.cjs.map +1 -0
- package/dist/providers/anthropic.d.cts +11 -0
- package/dist/providers/anthropic.d.ts +2 -2
- package/dist/providers/gemini.cjs +155 -0
- package/dist/providers/gemini.cjs.map +1 -0
- package/dist/providers/gemini.d.cts +11 -0
- package/dist/providers/gemini.d.ts +2 -2
- package/dist/providers/openai.cjs +146 -0
- package/dist/providers/openai.cjs.map +1 -0
- package/dist/providers/openai.d.cts +11 -0
- package/dist/providers/openai.d.ts +2 -2
- package/dist/providers/openrouter.cjs +161 -0
- package/dist/providers/openrouter.cjs.map +1 -0
- package/dist/providers/openrouter.d.cts +13 -0
- package/dist/providers/openrouter.d.ts +2 -2
- package/dist/{schema-DHRI5Mzl.d.ts → schema-C6smABrt.d.cts} +3 -3
- package/dist/schema-C6smABrt.d.ts +695 -0
- package/dist/testing.cjs +236 -0
- package/dist/testing.cjs.map +1 -0
- package/dist/testing.d.cts +17 -0
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +1 -1
- package/dist/{types-D9hquVja.d.ts → types-D7lW5IYT.d.ts} +1 -1
- package/dist/types-S_c-ZEfK.d.cts +40 -0
- package/package.json +54 -16
- package/dist/chunk-X64JII57.js.map +0 -1
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/providers/openrouter.ts
|
|
21
|
+
var openrouter_exports = {};
|
|
22
|
+
__export(openrouter_exports, {
|
|
23
|
+
openrouterAdapter: () => openrouterAdapter
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(openrouter_exports);
|
|
26
|
+
|
|
27
|
+
// src/renderer/interpolate.ts
|
|
28
|
+
var VARIABLE_RE = /\{\{\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\}\}/g;
|
|
29
|
+
var ESCAPED_OPEN = /\\\{\\\{/g;
|
|
30
|
+
var ESCAPE_PLACEHOLDER = "\0ESCAPED_OPEN\0";
|
|
31
|
+
function interpolate(template, variables, options = {}) {
|
|
32
|
+
const { strict = false } = options;
|
|
33
|
+
let result = template.replace(ESCAPED_OPEN, ESCAPE_PLACEHOLDER);
|
|
34
|
+
result = result.replace(VARIABLE_RE, (match, name) => {
|
|
35
|
+
if (name in variables) {
|
|
36
|
+
return variables[name];
|
|
37
|
+
}
|
|
38
|
+
if (strict) {
|
|
39
|
+
throw new Error(`Missing required variable: "${name}"`);
|
|
40
|
+
}
|
|
41
|
+
return match;
|
|
42
|
+
});
|
|
43
|
+
result = result.replaceAll(ESCAPE_PLACEHOLDER, "{{");
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// src/renderer/renderer.ts
|
|
48
|
+
function renderSections(asset, options = {}) {
|
|
49
|
+
const { variables = {}, strict = false } = options;
|
|
50
|
+
const result = {};
|
|
51
|
+
if (asset.sections.system_instructions) {
|
|
52
|
+
result.system_instructions = interpolate(
|
|
53
|
+
asset.sections.system_instructions,
|
|
54
|
+
variables,
|
|
55
|
+
{ strict }
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
if (asset.sections.prompt_template) {
|
|
59
|
+
result.prompt_template = interpolate(
|
|
60
|
+
asset.sections.prompt_template,
|
|
61
|
+
variables,
|
|
62
|
+
{ strict }
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// src/providers/openai.ts
|
|
69
|
+
var openaiAdapter = {
|
|
70
|
+
name: "openai",
|
|
71
|
+
validate(asset) {
|
|
72
|
+
const errors = [];
|
|
73
|
+
const warnings = [];
|
|
74
|
+
if (!asset.model) {
|
|
75
|
+
errors.push("OpenAI adapter requires a model to be specified.");
|
|
76
|
+
}
|
|
77
|
+
if (asset.reasoning?.budget_tokens !== void 0) {
|
|
78
|
+
warnings.push("OpenAI uses reasoning_effort, not budget_tokens. budget_tokens will be ignored.");
|
|
79
|
+
}
|
|
80
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
81
|
+
},
|
|
82
|
+
render(asset, runtime) {
|
|
83
|
+
const sections = renderSections(asset, {
|
|
84
|
+
variables: runtime.variables,
|
|
85
|
+
strict: runtime.strict
|
|
86
|
+
});
|
|
87
|
+
const messages = [];
|
|
88
|
+
if (sections.system_instructions) {
|
|
89
|
+
messages.push({ role: "system", content: sections.system_instructions });
|
|
90
|
+
}
|
|
91
|
+
if (runtime.history) {
|
|
92
|
+
for (const msg of runtime.history) {
|
|
93
|
+
messages.push({ role: msg.role, content: msg.content });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (sections.prompt_template) {
|
|
97
|
+
messages.push({ role: "user", content: sections.prompt_template });
|
|
98
|
+
}
|
|
99
|
+
const body = {
|
|
100
|
+
model: asset.model,
|
|
101
|
+
messages
|
|
102
|
+
};
|
|
103
|
+
if (asset.sampling?.temperature !== void 0) body.temperature = asset.sampling.temperature;
|
|
104
|
+
if (asset.sampling?.top_p !== void 0) body.top_p = asset.sampling.top_p;
|
|
105
|
+
if (asset.sampling?.frequency_penalty !== void 0) body.frequency_penalty = asset.sampling.frequency_penalty;
|
|
106
|
+
if (asset.sampling?.presence_penalty !== void 0) body.presence_penalty = asset.sampling.presence_penalty;
|
|
107
|
+
if (asset.sampling?.stop !== void 0) body.stop = asset.sampling.stop;
|
|
108
|
+
if (asset.sampling?.max_output_tokens !== void 0) body.max_tokens = asset.sampling.max_output_tokens;
|
|
109
|
+
if (asset.reasoning?.effort) {
|
|
110
|
+
body.reasoning_effort = asset.reasoning.effort;
|
|
111
|
+
}
|
|
112
|
+
if (asset.response?.format === "json") {
|
|
113
|
+
body.response_format = { type: "json_object" };
|
|
114
|
+
}
|
|
115
|
+
if (asset.response?.stream !== void 0) {
|
|
116
|
+
body.stream = asset.response.stream;
|
|
117
|
+
}
|
|
118
|
+
if (asset.tools && asset.tools.length > 0) {
|
|
119
|
+
body.tools = asset.tools.map((tool) => {
|
|
120
|
+
if (typeof tool === "string") {
|
|
121
|
+
const def = runtime.toolRegistry?.[tool];
|
|
122
|
+
if (def) return def;
|
|
123
|
+
return { type: "function", function: { name: tool } };
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
type: "function",
|
|
127
|
+
function: {
|
|
128
|
+
name: tool.name,
|
|
129
|
+
description: tool.description,
|
|
130
|
+
parameters: tool.input_schema
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
body,
|
|
137
|
+
provider: "openai",
|
|
138
|
+
model: asset.model ?? "unknown"
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
// src/providers/openrouter.ts
|
|
144
|
+
var openrouterAdapter = {
|
|
145
|
+
name: "openrouter",
|
|
146
|
+
validate(asset) {
|
|
147
|
+
return openaiAdapter.validate(asset);
|
|
148
|
+
},
|
|
149
|
+
render(asset, runtime) {
|
|
150
|
+
const result = openaiAdapter.render(asset, runtime);
|
|
151
|
+
return {
|
|
152
|
+
...result,
|
|
153
|
+
provider: "openrouter"
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
158
|
+
0 && (module.exports = {
|
|
159
|
+
openrouterAdapter
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=openrouter.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/providers/openrouter.ts","../../src/renderer/interpolate.ts","../../src/renderer/renderer.ts","../../src/providers/openai.ts"],"sourcesContent":["import { openaiAdapter } from './openai.js';\r\nimport type { ResolvedPromptAsset } from '../schema/index.js';\r\nimport type {\r\n ProviderAdapter,\r\n ProviderRequest,\r\n ValidationResult,\r\n RuntimeRenderOptions,\r\n} from './types.js';\r\n\r\n/**\r\n * OpenRouter provider adapter.\r\n * Thin preset over the OpenAI adapter — body format is identical,\r\n * only the provider label differs. The app handles the different\r\n * base URL and extra headers (HTTP-Referer, X-Title).\r\n */\r\nexport const openrouterAdapter: ProviderAdapter = {\r\n name: 'openrouter',\r\n\r\n validate(asset: ResolvedPromptAsset): ValidationResult {\r\n return openaiAdapter.validate(asset);\r\n },\r\n\r\n render(asset: ResolvedPromptAsset, runtime: RuntimeRenderOptions): ProviderRequest {\r\n const result = openaiAdapter.render(asset, runtime);\r\n return {\r\n ...result,\r\n provider: 'openrouter',\r\n };\r\n },\r\n};\r\n","export interface InterpolateOptions {\r\n strict?: boolean;\r\n}\r\n\r\nconst VARIABLE_RE = /\\{\\{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/g;\r\nconst ESCAPED_OPEN = /\\\\\\{\\\\\\{/g;\r\nconst ESCAPE_PLACEHOLDER = '\\x00ESCAPED_OPEN\\x00';\r\n\r\n/**\r\n * Interpolate variables into a template string.\r\n *\r\n * Syntax: {{ variable_name }}\r\n * Escape: \\{\\{ produces literal {{\r\n *\r\n * In strict mode, throws on missing variables.\r\n * In permissive mode, leaves {{ placeholder }} intact.\r\n */\r\nexport function interpolate(\r\n template: string,\r\n variables: Record<string, string>,\r\n options: InterpolateOptions = {},\r\n): string {\r\n const { strict = false } = options;\r\n\r\n // Replace escaped sequences with placeholder\r\n let result = template.replace(ESCAPED_OPEN, ESCAPE_PLACEHOLDER);\r\n\r\n result = result.replace(VARIABLE_RE, (match, name: string) => {\r\n if (name in variables) {\r\n return variables[name];\r\n }\r\n if (strict) {\r\n throw new Error(`Missing required variable: \"${name}\"`);\r\n }\r\n return match; // leave placeholder intact in permissive mode\r\n });\r\n\r\n // Restore escaped sequences\r\n result = result.replaceAll(ESCAPE_PLACEHOLDER, '{{');\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Extract all variable names referenced in a template.\r\n */\r\nexport function extractVariables(template: string): string[] {\r\n const vars = new Set<string>();\r\n let match: RegExpExecArray | null;\r\n const re = new RegExp(VARIABLE_RE.source, 'g');\r\n while ((match = re.exec(template)) !== null) {\r\n vars.add(match[1]);\r\n }\r\n return [...vars];\r\n}\r\n","import type { ResolvedPromptAsset } from '../schema/index.js';\r\nimport { interpolate, extractVariables } from './interpolate.js';\r\n\r\nexport interface RenderOptions {\r\n variables?: Record<string, string>;\r\n strict?: boolean;\r\n}\r\n\r\nexport interface RenderedSections {\r\n system_instructions?: string;\r\n prompt_template?: string;\r\n}\r\n\r\n/**\r\n * Render the sections of a resolved prompt asset with variable interpolation.\r\n */\r\nexport function renderSections(\r\n asset: ResolvedPromptAsset,\r\n options: RenderOptions = {},\r\n): RenderedSections {\r\n const { variables = {}, strict = false } = options;\r\n\r\n const result: RenderedSections = {};\r\n\r\n if (asset.sections.system_instructions) {\r\n result.system_instructions = interpolate(\r\n asset.sections.system_instructions,\r\n variables,\r\n { strict },\r\n );\r\n }\r\n\r\n if (asset.sections.prompt_template) {\r\n result.prompt_template = interpolate(\r\n asset.sections.prompt_template,\r\n variables,\r\n { strict },\r\n );\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Get all variable names used across all sections.\r\n */\r\nexport function getRequiredVariables(asset: ResolvedPromptAsset): string[] {\r\n const vars = new Set<string>();\r\n\r\n if (asset.sections.system_instructions) {\r\n for (const v of extractVariables(asset.sections.system_instructions)) {\r\n vars.add(v);\r\n }\r\n }\r\n\r\n if (asset.sections.prompt_template) {\r\n for (const v of extractVariables(asset.sections.prompt_template)) {\r\n vars.add(v);\r\n }\r\n }\r\n\r\n return [...vars];\r\n}\r\n","import type { ResolvedPromptAsset } from '../schema/index.js';\r\nimport type {\r\n ProviderAdapter,\r\n ProviderRequest,\r\n ValidationResult,\r\n RuntimeRenderOptions,\r\n} from './types.js';\r\nimport { renderSections } from '../renderer/index.js';\r\n\r\n/**\r\n * OpenAI provider adapter.\r\n * Produces request bodies compatible with the OpenAI Chat Completions API.\r\n */\r\nexport const openaiAdapter: ProviderAdapter = {\r\n name: 'openai',\r\n\r\n validate(asset: ResolvedPromptAsset): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n if (!asset.model) {\r\n errors.push('OpenAI adapter requires a model to be specified.');\r\n }\r\n\r\n if (asset.reasoning?.budget_tokens !== undefined) {\r\n warnings.push('OpenAI uses reasoning_effort, not budget_tokens. budget_tokens will be ignored.');\r\n }\r\n\r\n return { valid: errors.length === 0, errors, warnings };\r\n },\r\n\r\n render(asset: ResolvedPromptAsset, runtime: RuntimeRenderOptions): ProviderRequest {\r\n const sections = renderSections(asset, {\r\n variables: runtime.variables,\r\n strict: runtime.strict,\r\n });\r\n\r\n const messages: Array<Record<string, unknown>> = [];\r\n\r\n // System message\r\n if (sections.system_instructions) {\r\n messages.push({ role: 'system', content: sections.system_instructions });\r\n }\r\n\r\n // History\r\n if (runtime.history) {\r\n for (const msg of runtime.history) {\r\n messages.push({ role: msg.role, content: msg.content });\r\n }\r\n }\r\n\r\n // User message (prompt template)\r\n if (sections.prompt_template) {\r\n messages.push({ role: 'user', content: sections.prompt_template });\r\n }\r\n\r\n const body: Record<string, unknown> = {\r\n model: asset.model,\r\n messages,\r\n };\r\n\r\n // Sampling params\r\n if (asset.sampling?.temperature !== undefined) body.temperature = asset.sampling.temperature;\r\n if (asset.sampling?.top_p !== undefined) body.top_p = asset.sampling.top_p;\r\n if (asset.sampling?.frequency_penalty !== undefined) body.frequency_penalty = asset.sampling.frequency_penalty;\r\n if (asset.sampling?.presence_penalty !== undefined) body.presence_penalty = asset.sampling.presence_penalty;\r\n if (asset.sampling?.stop !== undefined) body.stop = asset.sampling.stop;\r\n if (asset.sampling?.max_output_tokens !== undefined) body.max_tokens = asset.sampling.max_output_tokens;\r\n\r\n // Reasoning\r\n if (asset.reasoning?.effort) {\r\n body.reasoning_effort = asset.reasoning.effort;\r\n }\r\n\r\n // Response format\r\n if (asset.response?.format === 'json') {\r\n body.response_format = { type: 'json_object' };\r\n }\r\n\r\n // Streaming\r\n if (asset.response?.stream !== undefined) {\r\n body.stream = asset.response.stream;\r\n }\r\n\r\n // Tools\r\n if (asset.tools && asset.tools.length > 0) {\r\n body.tools = asset.tools.map((tool) => {\r\n if (typeof tool === 'string') {\r\n // Look up from registry\r\n const def = runtime.toolRegistry?.[tool];\r\n if (def) return def;\r\n return { type: 'function', function: { name: tool } };\r\n }\r\n return {\r\n type: 'function',\r\n function: {\r\n name: tool.name,\r\n description: tool.description,\r\n parameters: tool.input_schema,\r\n },\r\n };\r\n });\r\n }\r\n\r\n return {\r\n body,\r\n provider: 'openai',\r\n model: asset.model ?? 'unknown',\r\n };\r\n },\r\n};\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { P as ProviderAdapter } from '../types-S_c-ZEfK.cjs';
|
|
2
|
+
import '../schema-C6smABrt.cjs';
|
|
3
|
+
import 'zod';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* OpenRouter provider adapter.
|
|
7
|
+
* Thin preset over the OpenAI adapter — body format is identical,
|
|
8
|
+
* only the provider label differs. The app handles the different
|
|
9
|
+
* base URL and extra headers (HTTP-Referer, X-Title).
|
|
10
|
+
*/
|
|
11
|
+
declare const openrouterAdapter: ProviderAdapter;
|
|
12
|
+
|
|
13
|
+
export { openrouterAdapter };
|
|
@@ -112,7 +112,7 @@ declare const PromptAssetSchema: z.ZodObject<{
|
|
|
112
112
|
id: z.ZodString;
|
|
113
113
|
schema_version: z.ZodDefault<z.ZodNumber>;
|
|
114
114
|
description: z.ZodOptional<z.ZodString>;
|
|
115
|
-
provider: z.ZodOptional<z.ZodEnum<["openai", "anthropic", "google", "openrouter", "any"]>>;
|
|
115
|
+
provider: z.ZodOptional<z.ZodEnum<["openai", "anthropic", "google", "gemini", "openrouter", "any"]>>;
|
|
116
116
|
model: z.ZodOptional<z.ZodString>;
|
|
117
117
|
fallback_models: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
118
118
|
reasoning: z.ZodOptional<z.ZodObject<{
|
|
@@ -470,7 +470,7 @@ declare const PromptAssetSchema: z.ZodObject<{
|
|
|
470
470
|
id: string;
|
|
471
471
|
schema_version: number;
|
|
472
472
|
description?: string | undefined;
|
|
473
|
-
provider?: "openai" | "anthropic" | "google" | "openrouter" | "any" | undefined;
|
|
473
|
+
provider?: "openai" | "anthropic" | "google" | "gemini" | "openrouter" | "any" | undefined;
|
|
474
474
|
model?: string | undefined;
|
|
475
475
|
includes?: string[] | undefined;
|
|
476
476
|
fallback_models?: string[] | undefined;
|
|
@@ -576,7 +576,7 @@ declare const PromptAssetSchema: z.ZodObject<{
|
|
|
576
576
|
id: string;
|
|
577
577
|
schema_version?: number | undefined;
|
|
578
578
|
description?: string | undefined;
|
|
579
|
-
provider?: "openai" | "anthropic" | "google" | "openrouter" | "any" | undefined;
|
|
579
|
+
provider?: "openai" | "anthropic" | "google" | "gemini" | "openrouter" | "any" | undefined;
|
|
580
580
|
model?: string | undefined;
|
|
581
581
|
includes?: string[] | undefined;
|
|
582
582
|
fallback_models?: string[] | undefined;
|