promptopskit 0.9.1 → 0.10.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 +9 -7
- package/SKILL.md +5 -4
- package/dist/{chunk-QZHR2YMK.js → chunk-46Z64RVO.js} +61 -21
- package/dist/{chunk-QZHR2YMK.js.map → chunk-46Z64RVO.js.map} +1 -1
- package/dist/{chunk-EDHPVR2F.js → chunk-7XLJOH2K.js} +3 -3
- package/dist/{chunk-VOXMOGU5.js → chunk-ALBSFXYR.js} +2 -1
- package/dist/chunk-ALBSFXYR.js.map +1 -0
- package/dist/{chunk-C5HHTLZX.js → chunk-IGLKVT74.js} +2 -2
- package/dist/{chunk-7GMCNHXJ.js → chunk-PSQWMBKX.js} +21 -21
- package/dist/chunk-PSQWMBKX.js.map +1 -0
- package/dist/{chunk-O3SRIDTH.js → chunk-QVJTND5A.js} +2 -2
- package/dist/{chunk-QHAIOVQ3.js → chunk-UULXO5I6.js} +2 -2
- package/dist/{chunk-D23T3X4V.js → chunk-VUQEB5ML.js} +2 -2
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +81 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +11 -11
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.cjs +60 -19
- package/dist/providers/anthropic.cjs.map +1 -1
- package/dist/providers/anthropic.d.cts +1 -1
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/anthropic.js +3 -3
- package/dist/providers/gemini.cjs +60 -19
- package/dist/providers/gemini.cjs.map +1 -1
- package/dist/providers/gemini.d.cts +1 -1
- package/dist/providers/gemini.d.ts +1 -1
- package/dist/providers/gemini.js +3 -3
- package/dist/providers/llmasaservice.cjs +78 -38
- package/dist/providers/llmasaservice.cjs.map +1 -1
- package/dist/providers/llmasaservice.d.cts +6 -5
- package/dist/providers/llmasaservice.d.ts +6 -5
- package/dist/providers/llmasaservice.js +4 -6
- package/dist/providers/openai-responses.cjs +60 -19
- package/dist/providers/openai-responses.cjs.map +1 -1
- package/dist/providers/openai-responses.d.cts +1 -1
- package/dist/providers/openai-responses.d.ts +1 -1
- package/dist/providers/openai-responses.js +3 -3
- package/dist/providers/openai.cjs +60 -19
- package/dist/providers/openai.cjs.map +1 -1
- package/dist/providers/openai.d.cts +1 -1
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.js +3 -3
- package/dist/providers/openrouter.cjs +60 -19
- package/dist/providers/openrouter.cjs.map +1 -1
- package/dist/providers/openrouter.d.cts +1 -1
- package/dist/providers/openrouter.d.ts +1 -1
- package/dist/providers/openrouter.js +4 -4
- package/dist/testing.cjs +1 -0
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/{types-D6VJJo1x.d.ts → types-9Jv8eHhM.d.ts} +8 -1
- package/dist/{types-B4TWRzUY.d.cts → types-D3MemVmM.d.cts} +8 -1
- package/dist/usagetap/index.d.cts +1 -1
- package/dist/usagetap/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunk-7GMCNHXJ.js.map +0 -1
- package/dist/chunk-VOXMOGU5.js.map +0 -1
- /package/dist/{chunk-EDHPVR2F.js.map → chunk-7XLJOH2K.js.map} +0 -0
- /package/dist/{chunk-C5HHTLZX.js.map → chunk-IGLKVT74.js.map} +0 -0
- /package/dist/{chunk-O3SRIDTH.js.map → chunk-QVJTND5A.js.map} +0 -0
- /package/dist/{chunk-QHAIOVQ3.js.map → chunk-UULXO5I6.js.map} +0 -0
- /package/dist/{chunk-D23T3X4V.js.map → chunk-VUQEB5ML.js.map} +0 -0
package/dist/index.cjs
CHANGED
|
@@ -33,7 +33,6 @@ __export(src_exports, {
|
|
|
33
33
|
LLMASASERVICE_BASE_URL: () => LLMASASERVICE_BASE_URL,
|
|
34
34
|
LLMASASERVICE_DEFAULT_MODEL: () => LLMASASERVICE_DEFAULT_MODEL,
|
|
35
35
|
LLMASASERVICE_RESPONSE_HEADER_NAMES: () => LLMASASERVICE_RESPONSE_HEADER_NAMES,
|
|
36
|
-
LLMASASERVICE_SDK_PLACEHOLDER_API_KEY: () => LLMASASERVICE_SDK_PLACEHOLDER_API_KEY,
|
|
37
36
|
PromptAssetOverridesSchema: () => PromptAssetOverridesSchema,
|
|
38
37
|
PromptAssetSchema: () => PromptAssetSchema,
|
|
39
38
|
PromptOpsKit: () => PromptOpsKit,
|
|
@@ -1480,6 +1479,7 @@ var LLMAsAServiceCustomerSchema = import_zod.z.object({
|
|
|
1480
1479
|
});
|
|
1481
1480
|
var LLMAsAServiceProviderOptionsSchema = import_zod.z.object({
|
|
1482
1481
|
base_url: import_zod.z.string().url().optional(),
|
|
1482
|
+
// Deprecated compatibility fields; the gateway no longer requires project routing.
|
|
1483
1483
|
project_id: import_zod.z.string().optional(),
|
|
1484
1484
|
customer: LLMAsAServiceCustomerSchema.optional(),
|
|
1485
1485
|
conversationId: import_zod.z.string().optional(),
|
|
@@ -2536,6 +2536,7 @@ async function applyPromptCompressionForRender(asset, runtime) {
|
|
|
2536
2536
|
aggressiveness: theTokenCompanyConfig?.aggressiveness
|
|
2537
2537
|
});
|
|
2538
2538
|
promptTemplate = result.output;
|
|
2539
|
+
warnings.push(...result.warnings ?? []);
|
|
2539
2540
|
compression.push({
|
|
2540
2541
|
provider: "thetokencompany",
|
|
2541
2542
|
model,
|
|
@@ -2601,41 +2602,80 @@ function reportHeuristicCompressionWarnings2(warnings, compressionWarnings, scop
|
|
|
2601
2602
|
async function compressWithTheTokenCompany(input, options) {
|
|
2602
2603
|
const apiKey = options.apiKey ?? getEnv("THETOKENCOMPANY_API_KEY") ?? getEnv("TTC_API_KEY");
|
|
2603
2604
|
if (!apiKey) {
|
|
2604
|
-
|
|
2605
|
-
|
|
2605
|
+
return createTheTokenCompanyFallback(
|
|
2606
|
+
input,
|
|
2607
|
+
"no API key was provided"
|
|
2606
2608
|
);
|
|
2607
2609
|
}
|
|
2608
2610
|
const fetchImpl = options.fetch ?? globalThis.fetch;
|
|
2609
2611
|
if (!fetchImpl) {
|
|
2610
|
-
|
|
2612
|
+
return createTheTokenCompanyFallback(
|
|
2613
|
+
input,
|
|
2614
|
+
"fetch is unavailable in this runtime"
|
|
2615
|
+
);
|
|
2611
2616
|
}
|
|
2612
2617
|
const baseURL = (options.baseURL ?? THETOKENCOMPANY_DEFAULT_BASE_URL).replace(/\/+$/, "");
|
|
2613
2618
|
const compressionSettings = options.aggressiveness === void 0 ? void 0 : { aggressiveness: options.aggressiveness };
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2619
|
+
let response;
|
|
2620
|
+
try {
|
|
2621
|
+
response = await fetchImpl(`${baseURL}/v1/compress`, {
|
|
2622
|
+
method: "POST",
|
|
2623
|
+
headers: {
|
|
2624
|
+
Authorization: `Bearer ${apiKey}`,
|
|
2625
|
+
"Content-Type": "application/json"
|
|
2626
|
+
},
|
|
2627
|
+
body: JSON.stringify({
|
|
2628
|
+
model: options.model,
|
|
2629
|
+
input,
|
|
2630
|
+
...compressionSettings ? { compression_settings: compressionSettings } : {}
|
|
2631
|
+
})
|
|
2632
|
+
});
|
|
2633
|
+
} catch (error) {
|
|
2634
|
+
return createTheTokenCompanyFallback(
|
|
2622
2635
|
input,
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
}
|
|
2636
|
+
`request failed: ${toErrorMessage(error)}`
|
|
2637
|
+
);
|
|
2638
|
+
}
|
|
2626
2639
|
if (!response.ok) {
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
`
|
|
2640
|
+
return createTheTokenCompanyFallback(
|
|
2641
|
+
input,
|
|
2642
|
+
`service returned HTTP ${response.status}`
|
|
2643
|
+
);
|
|
2644
|
+
}
|
|
2645
|
+
let data;
|
|
2646
|
+
try {
|
|
2647
|
+
data = await response.json();
|
|
2648
|
+
} catch (error) {
|
|
2649
|
+
return createTheTokenCompanyFallback(
|
|
2650
|
+
input,
|
|
2651
|
+
`response body was not valid JSON: ${toErrorMessage(error)}`
|
|
2630
2652
|
);
|
|
2631
2653
|
}
|
|
2632
|
-
const data = await response.json();
|
|
2633
2654
|
const normalized = normalizeTheTokenCompanyCompressResponse(data);
|
|
2634
2655
|
if (!normalized) {
|
|
2635
|
-
|
|
2656
|
+
return createTheTokenCompanyFallback(
|
|
2657
|
+
input,
|
|
2658
|
+
"response payload was invalid"
|
|
2659
|
+
);
|
|
2636
2660
|
}
|
|
2637
2661
|
return normalized;
|
|
2638
2662
|
}
|
|
2663
|
+
function createTheTokenCompanyFallback(input, reason) {
|
|
2664
|
+
const tokens = estimateHeuristicTokens(input);
|
|
2665
|
+
return {
|
|
2666
|
+
output: input,
|
|
2667
|
+
output_tokens: tokens,
|
|
2668
|
+
input_tokens: tokens,
|
|
2669
|
+
tokens_saved: 0,
|
|
2670
|
+
compression_ratio: tokens === 0 ? 0 : 1,
|
|
2671
|
+
warnings: [
|
|
2672
|
+
`POK057: TheTokenCompany compression skipped; using uncompressed prompt with zero token savings (${reason}).`
|
|
2673
|
+
]
|
|
2674
|
+
};
|
|
2675
|
+
}
|
|
2676
|
+
function toErrorMessage(error) {
|
|
2677
|
+
return error instanceof Error && error.message ? error.message : "unknown error";
|
|
2678
|
+
}
|
|
2639
2679
|
function normalizeTheTokenCompanyCompressResponse(data) {
|
|
2640
2680
|
if (typeof data.output !== "string" || typeof data.output_tokens !== "number") {
|
|
2641
2681
|
return void 0;
|
|
@@ -3232,20 +3272,17 @@ var openrouterAdapter = withPromptInputSupport({
|
|
|
3232
3272
|
|
|
3233
3273
|
// src/providers/llmasaservice.ts
|
|
3234
3274
|
var LLMASASERVICE_BASE_URL = "https://gateway.llmasaservice.io";
|
|
3235
|
-
var LLMASASERVICE_SDK_PLACEHOLDER_API_KEY = "not-used-by-llm-gateway";
|
|
3236
3275
|
var LLMASASERVICE_DEFAULT_MODEL = "group:standard";
|
|
3237
3276
|
var LLMASASERVICE_RESPONSE_HEADER_NAMES = [
|
|
3238
3277
|
"x-request-id",
|
|
3239
3278
|
"x-llm-model-id",
|
|
3240
3279
|
"x-llm-model-group"
|
|
3241
3280
|
];
|
|
3242
|
-
function createLLMAsAServiceOpenAIConfig(options
|
|
3281
|
+
function createLLMAsAServiceOpenAIConfig(options) {
|
|
3243
3282
|
return {
|
|
3244
3283
|
baseURL: options.baseURL ?? LLMASASERVICE_BASE_URL,
|
|
3245
|
-
apiKey:
|
|
3246
|
-
defaultHeaders: {
|
|
3247
|
-
"x-project-id": options.projectId ?? ""
|
|
3248
|
-
}
|
|
3284
|
+
apiKey: options.apiKey,
|
|
3285
|
+
...options.projectId ? { defaultHeaders: { "x-project-id": options.projectId } } : {}
|
|
3249
3286
|
};
|
|
3250
3287
|
}
|
|
3251
3288
|
function isGPT5ModelSelector(model) {
|
|
@@ -3262,9 +3299,6 @@ function rawCustomerId(asset) {
|
|
|
3262
3299
|
const customer = isRecord(asset.raw?.llmasaservice?.customer) ? asset.raw.llmasaservice.customer : void 0;
|
|
3263
3300
|
return customer?.customer_id;
|
|
3264
3301
|
}
|
|
3265
|
-
function isGatewayRenderValidation(runtime) {
|
|
3266
|
-
return runtime?.runtime !== void 0;
|
|
3267
|
-
}
|
|
3268
3302
|
var llmasaserviceAdapter = withPromptInputSupport({
|
|
3269
3303
|
name: "llmasaservice",
|
|
3270
3304
|
validate(asset, runtime) {
|
|
@@ -3281,12 +3315,12 @@ var llmasaserviceAdapter = withPromptInputSupport({
|
|
|
3281
3315
|
);
|
|
3282
3316
|
const errors = [...validation.errors];
|
|
3283
3317
|
const gatewayOptions = resolvedAsset.provider_options?.llmasaservice;
|
|
3284
|
-
const
|
|
3318
|
+
const missingApiKey = !runtime?.llmasaservice?.apiKey;
|
|
3285
3319
|
const missingCustomerId = !gatewayOptions?.customer?.customer_id && typeof rawCustomerId(resolvedAsset) !== "string";
|
|
3286
|
-
const validateRenderMetadata =
|
|
3287
|
-
if (
|
|
3320
|
+
const validateRenderMetadata = runtime !== void 0;
|
|
3321
|
+
if (missingApiKey && validateRenderMetadata) {
|
|
3288
3322
|
errors.push(
|
|
3289
|
-
"LLMAsAService adapter requires
|
|
3323
|
+
"LLMAsAService adapter requires llmasaservice.apiKey for Authorization Bearer authentication."
|
|
3290
3324
|
);
|
|
3291
3325
|
}
|
|
3292
3326
|
if (missingCustomerId && validateRenderMetadata) {
|
|
@@ -3294,9 +3328,9 @@ var llmasaserviceAdapter = withPromptInputSupport({
|
|
|
3294
3328
|
"LLMAsAService adapter requires customer.customer_id in provider_options.llmasaservice.customer or raw.llmasaservice.customer."
|
|
3295
3329
|
);
|
|
3296
3330
|
}
|
|
3297
|
-
if ((
|
|
3331
|
+
if ((missingApiKey || missingCustomerId) && !validateRenderMetadata) {
|
|
3298
3332
|
warnings.push(
|
|
3299
|
-
"LLMAsAService
|
|
3333
|
+
"LLMAsAService apiKey and customer.customer_id must be supplied before rendering."
|
|
3300
3334
|
);
|
|
3301
3335
|
}
|
|
3302
3336
|
return {
|
|
@@ -3329,14 +3363,21 @@ var llmasaserviceAdapter = withPromptInputSupport({
|
|
|
3329
3363
|
if (options?.conversationTitle !== void 0) body.conversationTitle = options.conversationTitle;
|
|
3330
3364
|
if (options?.projectId !== void 0) body.projectId = options.projectId;
|
|
3331
3365
|
body = applyRawProviderBody(body, resolvedAsset, "llmasaservice");
|
|
3332
|
-
const
|
|
3366
|
+
const apiKey = runtime.llmasaservice?.apiKey;
|
|
3367
|
+
if (!apiKey) {
|
|
3368
|
+
throw new Error(
|
|
3369
|
+
"LLMAsAService adapter requires llmasaservice.apiKey for Authorization Bearer authentication."
|
|
3370
|
+
);
|
|
3371
|
+
}
|
|
3372
|
+
const projectId = options?.project_id;
|
|
3333
3373
|
return {
|
|
3334
3374
|
body,
|
|
3335
3375
|
provider: "llmasaservice",
|
|
3336
3376
|
model,
|
|
3337
3377
|
baseURL: options?.base_url ?? LLMASASERVICE_BASE_URL,
|
|
3338
3378
|
headers: {
|
|
3339
|
-
|
|
3379
|
+
Authorization: `Bearer ${apiKey}`,
|
|
3380
|
+
...projectId ? { "x-project-id": projectId } : {}
|
|
3340
3381
|
}
|
|
3341
3382
|
};
|
|
3342
3383
|
}
|
|
@@ -4188,7 +4229,8 @@ var PromptOpsKit = class {
|
|
|
4188
4229
|
}
|
|
4189
4230
|
const adapter = getAdapter(options.provider);
|
|
4190
4231
|
const validation = adapter.validate(resolved, {
|
|
4191
|
-
openaiResponses: options.openaiResponses
|
|
4232
|
+
openaiResponses: options.openaiResponses,
|
|
4233
|
+
llmasaservice: options.llmasaservice
|
|
4192
4234
|
});
|
|
4193
4235
|
if (!validation.valid) {
|
|
4194
4236
|
throw new Error(
|
|
@@ -4225,6 +4267,7 @@ var PromptOpsKit = class {
|
|
|
4225
4267
|
toolRegistry: options.toolRegistry,
|
|
4226
4268
|
strict: options.strict,
|
|
4227
4269
|
openaiResponses: options.openaiResponses,
|
|
4270
|
+
llmasaservice: options.llmasaservice,
|
|
4228
4271
|
theTokenCompany: options.theTokenCompany
|
|
4229
4272
|
});
|
|
4230
4273
|
const request = adapter.render(prepared.asset, prepared.runtime);
|
|
@@ -4298,7 +4341,6 @@ async function renderPrompt(options) {
|
|
|
4298
4341
|
LLMASASERVICE_BASE_URL,
|
|
4299
4342
|
LLMASASERVICE_DEFAULT_MODEL,
|
|
4300
4343
|
LLMASASERVICE_RESPONSE_HEADER_NAMES,
|
|
4301
|
-
LLMASASERVICE_SDK_PLACEHOLDER_API_KEY,
|
|
4302
4344
|
PromptAssetOverridesSchema,
|
|
4303
4345
|
PromptAssetSchema,
|
|
4304
4346
|
PromptOpsKit,
|