promptopskit 0.3.0 → 0.3.1
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 +23 -0
- package/SKILL.md +49 -0
- package/dist/{chunk-PU3UPUND.js → chunk-DDXFDVA6.js} +4 -4
- package/dist/{chunk-PU3UPUND.js.map → chunk-DDXFDVA6.js.map} +1 -1
- package/dist/chunk-DGFBS7YW.js +101 -0
- package/dist/chunk-DGFBS7YW.js.map +1 -0
- package/dist/{chunk-5BI5FP5L.js → chunk-LNZS3TIJ.js} +21 -18
- package/dist/chunk-LNZS3TIJ.js.map +1 -0
- package/dist/{chunk-VYVEVJC3.js → chunk-LRRSI4ON.js} +25 -22
- package/dist/chunk-LRRSI4ON.js.map +1 -0
- package/dist/chunk-Y2YYEGOY.js +86 -0
- package/dist/chunk-Y2YYEGOY.js.map +1 -0
- package/dist/cli/index.js +44 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +80 -59
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -4
- package/dist/index.d.ts +7 -4
- package/dist/index.js +12 -39
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.cjs +64 -19
- package/dist/providers/anthropic.cjs.map +1 -1
- package/dist/providers/anthropic.d.cts +2 -2
- package/dist/providers/anthropic.d.ts +2 -2
- package/dist/providers/anthropic.js +2 -2
- package/dist/providers/gemini.cjs +60 -15
- package/dist/providers/gemini.cjs.map +1 -1
- package/dist/providers/gemini.d.cts +2 -2
- package/dist/providers/gemini.d.ts +2 -2
- package/dist/providers/gemini.js +2 -2
- package/dist/providers/openai.cjs +64 -19
- package/dist/providers/openai.cjs.map +1 -1
- package/dist/providers/openai.d.cts +2 -2
- package/dist/providers/openai.d.ts +2 -2
- package/dist/providers/openai.js +2 -2
- package/dist/providers/openrouter.cjs +66 -21
- package/dist/providers/openrouter.cjs.map +1 -1
- package/dist/providers/openrouter.d.cts +2 -2
- package/dist/providers/openrouter.d.ts +2 -2
- package/dist/providers/openrouter.js +3 -3
- package/dist/testing.d.cts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/{types-1zDDD-Ij.d.cts → types-BsYdPHTU.d.ts} +5 -2
- package/dist/{types-CQhlfAnR.d.ts → types-DC-jI6iV.d.cts} +5 -2
- package/dist/usagetap/index.d.cts +2 -2
- package/dist/usagetap/index.d.ts +2 -2
- package/package.json +1 -1
- package/dist/chunk-5BI5FP5L.js.map +0 -1
- package/dist/chunk-6KGBPHSY.js +0 -56
- package/dist/chunk-6KGBPHSY.js.map +0 -1
- package/dist/chunk-UYTUGV7Z.js +0 -83
- package/dist/chunk-UYTUGV7Z.js.map +0 -1
- package/dist/chunk-VYVEVJC3.js.map +0 -1
- package/dist/{schema-DIOA4OiO.d.cts → schema-Dq0jKest.d.cts} +42 -42
- package/dist/{schema-DIOA4OiO.d.ts → schema-Dq0jKest.d.ts} +42 -42
package/dist/index.cjs
CHANGED
|
@@ -443,22 +443,36 @@ function renderSections(asset, options = {}) {
|
|
|
443
443
|
return result;
|
|
444
444
|
}
|
|
445
445
|
|
|
446
|
+
// src/providers/resolve-asset.ts
|
|
447
|
+
function resolveAssetForProvider(asset, runtime = {}) {
|
|
448
|
+
if (!runtime.environment && !runtime.tier && !runtime.runtime) {
|
|
449
|
+
return asset;
|
|
450
|
+
}
|
|
451
|
+
return applyOverrides(asset, {
|
|
452
|
+
environment: runtime.environment,
|
|
453
|
+
tier: runtime.tier,
|
|
454
|
+
runtime: runtime.runtime
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
|
|
446
458
|
// src/providers/openai.ts
|
|
447
459
|
var openaiAdapter = {
|
|
448
460
|
name: "openai",
|
|
449
|
-
validate(asset) {
|
|
461
|
+
validate(asset, runtime) {
|
|
462
|
+
const resolvedAsset = resolveAssetForProvider(asset, runtime);
|
|
450
463
|
const errors = [];
|
|
451
464
|
const warnings = [];
|
|
452
|
-
if (!
|
|
465
|
+
if (!resolvedAsset.model) {
|
|
453
466
|
errors.push("OpenAI adapter requires a model to be specified.");
|
|
454
467
|
}
|
|
455
|
-
if (
|
|
468
|
+
if (resolvedAsset.reasoning?.budget_tokens !== void 0) {
|
|
456
469
|
warnings.push("OpenAI uses reasoning_effort, not budget_tokens. budget_tokens will be ignored.");
|
|
457
470
|
}
|
|
458
471
|
return { valid: errors.length === 0, errors, warnings };
|
|
459
472
|
},
|
|
460
473
|
render(asset, runtime) {
|
|
461
|
-
const
|
|
474
|
+
const resolvedAsset = resolveAssetForProvider(asset, runtime);
|
|
475
|
+
const sections = renderSections(resolvedAsset, {
|
|
462
476
|
variables: runtime.variables,
|
|
463
477
|
strict: runtime.strict
|
|
464
478
|
});
|
|
@@ -475,26 +489,26 @@ var openaiAdapter = {
|
|
|
475
489
|
messages.push({ role: "user", content: sections.prompt_template });
|
|
476
490
|
}
|
|
477
491
|
const body = {
|
|
478
|
-
model:
|
|
492
|
+
model: resolvedAsset.model,
|
|
479
493
|
messages
|
|
480
494
|
};
|
|
481
|
-
if (
|
|
482
|
-
if (
|
|
483
|
-
if (
|
|
484
|
-
if (
|
|
485
|
-
if (
|
|
486
|
-
if (
|
|
487
|
-
if (
|
|
488
|
-
body.reasoning_effort =
|
|
489
|
-
}
|
|
490
|
-
if (
|
|
495
|
+
if (resolvedAsset.sampling?.temperature !== void 0) body.temperature = resolvedAsset.sampling.temperature;
|
|
496
|
+
if (resolvedAsset.sampling?.top_p !== void 0) body.top_p = resolvedAsset.sampling.top_p;
|
|
497
|
+
if (resolvedAsset.sampling?.frequency_penalty !== void 0) body.frequency_penalty = resolvedAsset.sampling.frequency_penalty;
|
|
498
|
+
if (resolvedAsset.sampling?.presence_penalty !== void 0) body.presence_penalty = resolvedAsset.sampling.presence_penalty;
|
|
499
|
+
if (resolvedAsset.sampling?.stop !== void 0) body.stop = resolvedAsset.sampling.stop;
|
|
500
|
+
if (resolvedAsset.sampling?.max_output_tokens !== void 0) body.max_tokens = resolvedAsset.sampling.max_output_tokens;
|
|
501
|
+
if (resolvedAsset.reasoning?.effort) {
|
|
502
|
+
body.reasoning_effort = resolvedAsset.reasoning.effort;
|
|
503
|
+
}
|
|
504
|
+
if (resolvedAsset.response?.format === "json") {
|
|
491
505
|
body.response_format = { type: "json_object" };
|
|
492
506
|
}
|
|
493
|
-
if (
|
|
494
|
-
body.stream =
|
|
507
|
+
if (resolvedAsset.response?.stream !== void 0) {
|
|
508
|
+
body.stream = resolvedAsset.response.stream;
|
|
495
509
|
}
|
|
496
|
-
if (
|
|
497
|
-
body.tools =
|
|
510
|
+
if (resolvedAsset.tools && resolvedAsset.tools.length > 0) {
|
|
511
|
+
body.tools = resolvedAsset.tools.map((tool) => {
|
|
498
512
|
if (typeof tool === "string") {
|
|
499
513
|
const def = runtime.toolRegistry?.[tool];
|
|
500
514
|
if (def) return def;
|
|
@@ -513,7 +527,7 @@ var openaiAdapter = {
|
|
|
513
527
|
return {
|
|
514
528
|
body,
|
|
515
529
|
provider: "openai",
|
|
516
|
-
model:
|
|
530
|
+
model: resolvedAsset.model ?? "unknown"
|
|
517
531
|
};
|
|
518
532
|
}
|
|
519
533
|
};
|
|
@@ -521,25 +535,27 @@ var openaiAdapter = {
|
|
|
521
535
|
// src/providers/anthropic.ts
|
|
522
536
|
var anthropicAdapter = {
|
|
523
537
|
name: "anthropic",
|
|
524
|
-
validate(asset) {
|
|
538
|
+
validate(asset, runtime) {
|
|
539
|
+
const resolvedAsset = resolveAssetForProvider(asset, runtime);
|
|
525
540
|
const errors = [];
|
|
526
541
|
const warnings = [];
|
|
527
|
-
if (!
|
|
542
|
+
if (!resolvedAsset.model) {
|
|
528
543
|
errors.push("Anthropic adapter requires a model to be specified.");
|
|
529
544
|
}
|
|
530
|
-
if (
|
|
545
|
+
if (resolvedAsset.sampling?.frequency_penalty !== void 0) {
|
|
531
546
|
warnings.push("Anthropic does not support frequency_penalty. It will be ignored.");
|
|
532
547
|
}
|
|
533
|
-
if (
|
|
548
|
+
if (resolvedAsset.sampling?.presence_penalty !== void 0) {
|
|
534
549
|
warnings.push("Anthropic does not support presence_penalty. It will be ignored.");
|
|
535
550
|
}
|
|
536
|
-
if (
|
|
551
|
+
if (resolvedAsset.reasoning?.effort !== void 0) {
|
|
537
552
|
warnings.push("Anthropic uses budget_tokens for thinking, not effort. effort will be mapped approximately.");
|
|
538
553
|
}
|
|
539
554
|
return { valid: errors.length === 0, errors, warnings };
|
|
540
555
|
},
|
|
541
556
|
render(asset, runtime) {
|
|
542
|
-
const
|
|
557
|
+
const resolvedAsset = resolveAssetForProvider(asset, runtime);
|
|
558
|
+
const sections = renderSections(resolvedAsset, {
|
|
543
559
|
variables: runtime.variables,
|
|
544
560
|
strict: runtime.strict
|
|
545
561
|
});
|
|
@@ -553,31 +569,31 @@ var anthropicAdapter = {
|
|
|
553
569
|
messages.push({ role: "user", content: sections.prompt_template });
|
|
554
570
|
}
|
|
555
571
|
const body = {
|
|
556
|
-
model:
|
|
572
|
+
model: resolvedAsset.model,
|
|
557
573
|
messages
|
|
558
574
|
};
|
|
559
575
|
if (sections.system_instructions) {
|
|
560
576
|
body.system = sections.system_instructions;
|
|
561
577
|
}
|
|
562
|
-
if (
|
|
563
|
-
if (
|
|
564
|
-
if (
|
|
565
|
-
if (
|
|
566
|
-
body.max_tokens =
|
|
578
|
+
if (resolvedAsset.sampling?.temperature !== void 0) body.temperature = resolvedAsset.sampling.temperature;
|
|
579
|
+
if (resolvedAsset.sampling?.top_p !== void 0) body.top_p = resolvedAsset.sampling.top_p;
|
|
580
|
+
if (resolvedAsset.sampling?.stop !== void 0) body.stop_sequences = resolvedAsset.sampling.stop;
|
|
581
|
+
if (resolvedAsset.sampling?.max_output_tokens !== void 0) {
|
|
582
|
+
body.max_tokens = resolvedAsset.sampling.max_output_tokens;
|
|
567
583
|
} else {
|
|
568
584
|
body.max_tokens = 4096;
|
|
569
585
|
}
|
|
570
|
-
if (
|
|
586
|
+
if (resolvedAsset.reasoning?.budget_tokens) {
|
|
571
587
|
body.thinking = {
|
|
572
588
|
type: "enabled",
|
|
573
|
-
budget_tokens:
|
|
589
|
+
budget_tokens: resolvedAsset.reasoning.budget_tokens
|
|
574
590
|
};
|
|
575
591
|
}
|
|
576
|
-
if (
|
|
577
|
-
body.stream =
|
|
592
|
+
if (resolvedAsset.response?.stream !== void 0) {
|
|
593
|
+
body.stream = resolvedAsset.response.stream;
|
|
578
594
|
}
|
|
579
|
-
if (
|
|
580
|
-
body.tools =
|
|
595
|
+
if (resolvedAsset.tools && resolvedAsset.tools.length > 0) {
|
|
596
|
+
body.tools = resolvedAsset.tools.map((tool) => {
|
|
581
597
|
if (typeof tool === "string") {
|
|
582
598
|
const def = runtime.toolRegistry?.[tool];
|
|
583
599
|
if (def) return def;
|
|
@@ -593,7 +609,7 @@ var anthropicAdapter = {
|
|
|
593
609
|
return {
|
|
594
610
|
body,
|
|
595
611
|
provider: "anthropic",
|
|
596
|
-
model:
|
|
612
|
+
model: resolvedAsset.model ?? "unknown"
|
|
597
613
|
};
|
|
598
614
|
}
|
|
599
615
|
};
|
|
@@ -601,22 +617,24 @@ var anthropicAdapter = {
|
|
|
601
617
|
// src/providers/gemini.ts
|
|
602
618
|
var geminiAdapter = {
|
|
603
619
|
name: "gemini",
|
|
604
|
-
validate(asset) {
|
|
620
|
+
validate(asset, runtime) {
|
|
621
|
+
const resolvedAsset = resolveAssetForProvider(asset, runtime);
|
|
605
622
|
const errors = [];
|
|
606
623
|
const warnings = [];
|
|
607
|
-
if (!
|
|
624
|
+
if (!resolvedAsset.model) {
|
|
608
625
|
errors.push("Gemini adapter requires a model to be specified.");
|
|
609
626
|
}
|
|
610
|
-
if (
|
|
627
|
+
if (resolvedAsset.sampling?.frequency_penalty !== void 0) {
|
|
611
628
|
warnings.push("Gemini does not support frequency_penalty. It will be ignored.");
|
|
612
629
|
}
|
|
613
|
-
if (
|
|
630
|
+
if (resolvedAsset.sampling?.presence_penalty !== void 0) {
|
|
614
631
|
warnings.push("Gemini does not support presence_penalty. It will be ignored.");
|
|
615
632
|
}
|
|
616
633
|
return { valid: errors.length === 0, errors, warnings };
|
|
617
634
|
},
|
|
618
635
|
render(asset, runtime) {
|
|
619
|
-
const
|
|
636
|
+
const resolvedAsset = resolveAssetForProvider(asset, runtime);
|
|
637
|
+
const sections = renderSections(resolvedAsset, {
|
|
620
638
|
variables: runtime.variables,
|
|
621
639
|
strict: runtime.strict
|
|
622
640
|
});
|
|
@@ -644,23 +662,23 @@ var geminiAdapter = {
|
|
|
644
662
|
};
|
|
645
663
|
}
|
|
646
664
|
const generationConfig = {};
|
|
647
|
-
if (
|
|
648
|
-
if (
|
|
649
|
-
if (
|
|
650
|
-
if (
|
|
651
|
-
if (
|
|
665
|
+
if (resolvedAsset.sampling?.temperature !== void 0) generationConfig.temperature = resolvedAsset.sampling.temperature;
|
|
666
|
+
if (resolvedAsset.sampling?.top_p !== void 0) generationConfig.topP = resolvedAsset.sampling.top_p;
|
|
667
|
+
if (resolvedAsset.sampling?.max_output_tokens !== void 0) generationConfig.maxOutputTokens = resolvedAsset.sampling.max_output_tokens;
|
|
668
|
+
if (resolvedAsset.sampling?.stop !== void 0) generationConfig.stopSequences = resolvedAsset.sampling.stop;
|
|
669
|
+
if (resolvedAsset.response?.format === "json") {
|
|
652
670
|
generationConfig.responseMimeType = "application/json";
|
|
653
671
|
}
|
|
654
|
-
if (
|
|
672
|
+
if (resolvedAsset.reasoning?.effort) {
|
|
655
673
|
body.thinkingConfig = {
|
|
656
|
-
thinkingBudget:
|
|
674
|
+
thinkingBudget: resolvedAsset.reasoning.effort === "high" ? 8192 : resolvedAsset.reasoning.effort === "medium" ? 4096 : 1024
|
|
657
675
|
};
|
|
658
676
|
}
|
|
659
677
|
if (Object.keys(generationConfig).length > 0) {
|
|
660
678
|
body.generationConfig = generationConfig;
|
|
661
679
|
}
|
|
662
|
-
if (
|
|
663
|
-
const functionDeclarations =
|
|
680
|
+
if (resolvedAsset.tools && resolvedAsset.tools.length > 0) {
|
|
681
|
+
const functionDeclarations = resolvedAsset.tools.map((tool) => {
|
|
664
682
|
if (typeof tool === "string") {
|
|
665
683
|
const def = runtime.toolRegistry?.[tool];
|
|
666
684
|
if (def) return def;
|
|
@@ -677,7 +695,7 @@ var geminiAdapter = {
|
|
|
677
695
|
return {
|
|
678
696
|
body,
|
|
679
697
|
provider: "gemini",
|
|
680
|
-
model:
|
|
698
|
+
model: resolvedAsset.model ?? "unknown"
|
|
681
699
|
};
|
|
682
700
|
}
|
|
683
701
|
};
|
|
@@ -685,8 +703,8 @@ var geminiAdapter = {
|
|
|
685
703
|
// src/providers/openrouter.ts
|
|
686
704
|
var openrouterAdapter = {
|
|
687
705
|
name: "openrouter",
|
|
688
|
-
validate(asset) {
|
|
689
|
-
return openaiAdapter.validate(asset);
|
|
706
|
+
validate(asset, runtime) {
|
|
707
|
+
return openaiAdapter.validate(asset, runtime);
|
|
690
708
|
},
|
|
691
709
|
render(asset, runtime) {
|
|
692
710
|
const result = openaiAdapter.render(asset, runtime);
|
|
@@ -1417,7 +1435,8 @@ ${paths.map((p) => ` - ${p}`).join("\n")}`
|
|
|
1417
1435
|
}
|
|
1418
1436
|
asset = applyOverrides(asset, {
|
|
1419
1437
|
environment: options.environment,
|
|
1420
|
-
tier: options.tier
|
|
1438
|
+
tier: options.tier,
|
|
1439
|
+
runtime: options.runtime
|
|
1421
1440
|
});
|
|
1422
1441
|
return asset;
|
|
1423
1442
|
}
|
|
@@ -1430,13 +1449,15 @@ ${paths.map((p) => ` - ${p}`).join("\n")}`
|
|
|
1430
1449
|
const { asset } = parsePrompt(options.source);
|
|
1431
1450
|
const overridden = applyOverrides(asset, {
|
|
1432
1451
|
environment: options.environment,
|
|
1433
|
-
tier: options.tier
|
|
1452
|
+
tier: options.tier,
|
|
1453
|
+
runtime: options.runtime
|
|
1434
1454
|
});
|
|
1435
1455
|
resolved = overridden;
|
|
1436
1456
|
} else if (options.path) {
|
|
1437
1457
|
resolved = await this.resolvePrompt(options.path, {
|
|
1438
1458
|
environment: options.environment,
|
|
1439
|
-
tier: options.tier
|
|
1459
|
+
tier: options.tier,
|
|
1460
|
+
runtime: options.runtime
|
|
1440
1461
|
});
|
|
1441
1462
|
} else {
|
|
1442
1463
|
throw new Error('Either "path" or "source" must be provided to renderPrompt()');
|