@mzhub/promptc 0.1.0 → 0.1.2
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 +6 -5
- package/dist/examples/load-compiled.d.ts +7 -0
- package/dist/examples/load-compiled.d.ts.map +1 -0
- package/dist/examples/load-compiled.js +44 -0
- package/dist/examples/load-compiled.js.map +1 -0
- package/dist/examples/multi-provider.d.ts +7 -0
- package/dist/examples/multi-provider.d.ts.map +1 -0
- package/dist/examples/multi-provider.js +63 -0
- package/dist/examples/multi-provider.js.map +1 -0
- package/dist/examples/name-extractor.d.ts +11 -0
- package/dist/examples/name-extractor.d.ts.map +1 -0
- package/dist/examples/name-extractor.js +85 -0
- package/dist/examples/name-extractor.js.map +1 -0
- package/dist/examples/qa-system.d.ts +8 -0
- package/dist/examples/qa-system.d.ts.map +1 -0
- package/dist/examples/qa-system.js +73 -0
- package/dist/examples/qa-system.js.map +1 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +111 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/compiler/BootstrapFewShot.d.ts +13 -0
- package/dist/src/compiler/BootstrapFewShot.d.ts.map +1 -0
- package/dist/src/compiler/BootstrapFewShot.js +93 -0
- package/dist/src/compiler/BootstrapFewShot.js.map +1 -0
- package/dist/src/compiler/CandidatePool.d.ts +10 -0
- package/dist/src/compiler/CandidatePool.d.ts.map +1 -0
- package/dist/src/compiler/CandidatePool.js +29 -0
- package/dist/src/compiler/CandidatePool.js.map +1 -0
- package/dist/src/compiler/CompiledProgram.d.ts +43 -0
- package/dist/src/compiler/CompiledProgram.d.ts.map +1 -0
- package/dist/src/compiler/CompiledProgram.js +41 -0
- package/dist/src/compiler/CompiledProgram.js.map +1 -0
- package/dist/src/compiler/InstructionRewrite.d.ts +19 -0
- package/dist/src/compiler/InstructionRewrite.d.ts.map +1 -0
- package/dist/src/compiler/InstructionRewrite.js +117 -0
- package/dist/src/compiler/InstructionRewrite.js.map +1 -0
- package/dist/src/compiler/index.d.ts +8 -0
- package/dist/src/compiler/index.d.ts.map +1 -0
- package/dist/src/compiler/index.js +5 -0
- package/dist/src/compiler/index.js.map +1 -0
- package/dist/src/compiler/types.d.ts +41 -0
- package/dist/src/compiler/types.d.ts.map +1 -0
- package/dist/src/compiler/types.js +2 -0
- package/dist/src/compiler/types.js.map +1 -0
- package/dist/src/eval/exactMatch.d.ts +5 -0
- package/dist/src/eval/exactMatch.d.ts.map +1 -0
- package/dist/src/eval/exactMatch.js +58 -0
- package/dist/src/eval/exactMatch.js.map +1 -0
- package/dist/src/eval/index.d.ts +5 -0
- package/dist/src/eval/index.d.ts.map +1 -0
- package/dist/src/eval/index.js +3 -0
- package/dist/src/eval/index.js.map +1 -0
- package/dist/src/eval/llmJudge.d.ts +9 -0
- package/dist/src/eval/llmJudge.d.ts.map +1 -0
- package/dist/src/eval/llmJudge.js +33 -0
- package/dist/src/eval/llmJudge.js.map +1 -0
- package/dist/src/eval/types.d.ts +2 -0
- package/dist/src/eval/types.d.ts.map +1 -0
- package/dist/src/eval/types.js +2 -0
- package/dist/src/eval/types.js.map +1 -0
- package/dist/src/index.d.ts +14 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +8 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/program/ChainOfThought.d.ts +6 -0
- package/dist/src/program/ChainOfThought.d.ts.map +1 -0
- package/dist/src/program/ChainOfThought.js +44 -0
- package/dist/src/program/ChainOfThought.js.map +1 -0
- package/dist/src/program/Predict.d.ts +6 -0
- package/dist/src/program/Predict.d.ts.map +1 -0
- package/dist/src/program/Predict.js +33 -0
- package/dist/src/program/Predict.js.map +1 -0
- package/dist/src/program/Program.d.ts +33 -0
- package/dist/src/program/Program.d.ts.map +1 -0
- package/dist/src/program/Program.js +28 -0
- package/dist/src/program/Program.js.map +1 -0
- package/dist/src/program/index.d.ts +5 -0
- package/dist/src/program/index.d.ts.map +1 -0
- package/dist/src/program/index.js +4 -0
- package/dist/src/program/index.js.map +1 -0
- package/dist/src/providers/anthropic.d.ts +10 -0
- package/dist/src/providers/anthropic.d.ts.map +1 -0
- package/dist/src/providers/anthropic.js +40 -0
- package/dist/src/providers/anthropic.js.map +1 -0
- package/dist/src/providers/cerebras.d.ts +10 -0
- package/dist/src/providers/cerebras.d.ts.map +1 -0
- package/dist/src/providers/cerebras.js +39 -0
- package/dist/src/providers/cerebras.js.map +1 -0
- package/dist/src/providers/google.d.ts +10 -0
- package/dist/src/providers/google.d.ts.map +1 -0
- package/dist/src/providers/google.js +42 -0
- package/dist/src/providers/google.js.map +1 -0
- package/dist/src/providers/groq.d.ts +10 -0
- package/dist/src/providers/groq.d.ts.map +1 -0
- package/dist/src/providers/groq.js +42 -0
- package/dist/src/providers/groq.js.map +1 -0
- package/dist/src/providers/index.d.ts +11 -0
- package/dist/src/providers/index.d.ts.map +1 -0
- package/dist/src/providers/index.js +31 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/src/providers/ollama.d.ts +9 -0
- package/dist/src/providers/ollama.d.ts.map +1 -0
- package/dist/src/providers/ollama.js +39 -0
- package/dist/src/providers/ollama.js.map +1 -0
- package/dist/src/providers/openai.d.ts +10 -0
- package/dist/src/providers/openai.d.ts.map +1 -0
- package/dist/src/providers/openai.js +42 -0
- package/dist/src/providers/openai.js.map +1 -0
- package/dist/src/providers/types.d.ts +25 -0
- package/dist/src/providers/types.d.ts.map +1 -0
- package/dist/src/providers/types.js +2 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/runtime/cache.d.ts +18 -0
- package/dist/src/runtime/cache.d.ts.map +1 -0
- package/dist/src/runtime/cache.js +45 -0
- package/dist/src/runtime/cache.js.map +1 -0
- package/dist/src/runtime/concurrency.d.ts +7 -0
- package/dist/src/runtime/concurrency.d.ts.map +1 -0
- package/dist/src/runtime/concurrency.js +14 -0
- package/dist/src/runtime/concurrency.js.map +1 -0
- package/dist/src/runtime/costTracker.d.ts +24 -0
- package/dist/src/runtime/costTracker.d.ts.map +1 -0
- package/dist/src/runtime/costTracker.js +37 -0
- package/dist/src/runtime/costTracker.js.map +1 -0
- package/dist/src/runtime/index.d.ts +9 -0
- package/dist/src/runtime/index.d.ts.map +1 -0
- package/dist/src/runtime/index.js +5 -0
- package/dist/src/runtime/index.js.map +1 -0
- package/dist/src/runtime/retry.d.ts +10 -0
- package/dist/src/runtime/retry.d.ts.map +1 -0
- package/dist/src/runtime/retry.js +39 -0
- package/dist/src/runtime/retry.js.map +1 -0
- package/dist/src/schema/defineSchema.d.ts +18 -0
- package/dist/src/schema/defineSchema.d.ts.map +1 -0
- package/dist/src/schema/defineSchema.js +27 -0
- package/dist/src/schema/defineSchema.js.map +1 -0
- package/dist/src/schema/index.d.ts +3 -0
- package/dist/src/schema/index.d.ts.map +1 -0
- package/dist/src/schema/index.js +2 -0
- package/dist/src/schema/index.js.map +1 -0
- package/examples/README.md +1 -1
- package/package.json +3 -3
- package/src/cli.ts +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface CacheOptions {
|
|
2
|
+
maxSize?: number;
|
|
3
|
+
ttlMs?: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class PromptCache<T> {
|
|
6
|
+
private cache;
|
|
7
|
+
private maxSize;
|
|
8
|
+
private ttlMs;
|
|
9
|
+
constructor(options?: CacheOptions);
|
|
10
|
+
private makeKey;
|
|
11
|
+
get(prompt: string, input: unknown): T | undefined;
|
|
12
|
+
set(prompt: string, input: unknown, value: T): void;
|
|
13
|
+
has(prompt: string, input: unknown): boolean;
|
|
14
|
+
clear(): void;
|
|
15
|
+
get size(): number;
|
|
16
|
+
}
|
|
17
|
+
export declare function createCache<T>(options?: CacheOptions): PromptCache<T>;
|
|
18
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/runtime/cache.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,qBAAa,WAAW,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,GAAE,YAAiB;IAKtC,OAAO,CAAC,OAAO;IAIf,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS;IAclD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAWnD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAI5C,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CAAC,CAAC,CAAC,CAEzE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export class PromptCache {
|
|
2
|
+
cache = new Map();
|
|
3
|
+
maxSize;
|
|
4
|
+
ttlMs;
|
|
5
|
+
constructor(options = {}) {
|
|
6
|
+
this.maxSize = options.maxSize ?? 1000;
|
|
7
|
+
this.ttlMs = options.ttlMs ?? 0;
|
|
8
|
+
}
|
|
9
|
+
makeKey(prompt, input) {
|
|
10
|
+
return `${prompt}::${JSON.stringify(input)}`;
|
|
11
|
+
}
|
|
12
|
+
get(prompt, input) {
|
|
13
|
+
const key = this.makeKey(prompt, input);
|
|
14
|
+
const entry = this.cache.get(key);
|
|
15
|
+
if (!entry)
|
|
16
|
+
return undefined;
|
|
17
|
+
if (this.ttlMs > 0 && Date.now() - entry.timestamp > this.ttlMs) {
|
|
18
|
+
this.cache.delete(key);
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return entry.value;
|
|
22
|
+
}
|
|
23
|
+
set(prompt, input, value) {
|
|
24
|
+
const key = this.makeKey(prompt, input);
|
|
25
|
+
if (this.cache.size >= this.maxSize) {
|
|
26
|
+
const firstKey = this.cache.keys().next().value;
|
|
27
|
+
if (firstKey)
|
|
28
|
+
this.cache.delete(firstKey);
|
|
29
|
+
}
|
|
30
|
+
this.cache.set(key, { value, timestamp: Date.now() });
|
|
31
|
+
}
|
|
32
|
+
has(prompt, input) {
|
|
33
|
+
return this.get(prompt, input) !== undefined;
|
|
34
|
+
}
|
|
35
|
+
clear() {
|
|
36
|
+
this.cache.clear();
|
|
37
|
+
}
|
|
38
|
+
get size() {
|
|
39
|
+
return this.cache.size;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function createCache(options = {}) {
|
|
43
|
+
return new PromptCache(options);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/runtime/cache.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,WAAW;IACd,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IACzC,OAAO,CAAS;IAChB,KAAK,CAAS;IAEtB,YAAY,UAAwB,EAAE;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IAClC,CAAC;IAEO,OAAO,CAAC,MAAc,EAAE,KAAc;QAC5C,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,KAAc;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,KAAc,EAAE,KAAQ;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,QAAQ;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,KAAc;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAI,UAAwB,EAAE;IACvD,OAAO,IAAI,WAAW,CAAI,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../../src/runtime/concurrency.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,OAAO,IAAI,MAAM,CAAC;IACtB,IAAI,MAAM,IAAI,MAAM,CAAC;CACtB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAY1E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import pLimit from "p-limit";
|
|
2
|
+
export function createConcurrencyManager(limit) {
|
|
3
|
+
const limiter = pLimit(limit);
|
|
4
|
+
return {
|
|
5
|
+
run: (fn) => limiter(fn),
|
|
6
|
+
get pending() {
|
|
7
|
+
return limiter.pendingCount;
|
|
8
|
+
},
|
|
9
|
+
get active() {
|
|
10
|
+
return limiter.activeCount;
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=concurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../../src/runtime/concurrency.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAQ7B,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9B,OAAO;QACL,GAAG,EAAE,CAAI,EAAoB,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,OAAO;YACT,OAAO,OAAO,CAAC,YAAY,CAAC;QAC9B,CAAC;QACD,IAAI,MAAM;YACR,OAAO,OAAO,CAAC,WAAW,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface TokenUsage {
|
|
2
|
+
inputTokens: number;
|
|
3
|
+
outputTokens: number;
|
|
4
|
+
}
|
|
5
|
+
export interface CostEstimate {
|
|
6
|
+
inputTokens: number;
|
|
7
|
+
outputTokens: number;
|
|
8
|
+
totalTokens: number;
|
|
9
|
+
estimatedCalls: number;
|
|
10
|
+
}
|
|
11
|
+
export declare class CostTracker {
|
|
12
|
+
private totalInputTokens;
|
|
13
|
+
private totalOutputTokens;
|
|
14
|
+
private callCount;
|
|
15
|
+
record(usage: TokenUsage): void;
|
|
16
|
+
get total(): TokenUsage & {
|
|
17
|
+
totalTokens: number;
|
|
18
|
+
calls: number;
|
|
19
|
+
};
|
|
20
|
+
exceedsBudget(maxTokens: number): boolean;
|
|
21
|
+
reset(): void;
|
|
22
|
+
}
|
|
23
|
+
export declare function estimateCost(candidateCount: number, testCaseCount: number, avgTokensPerCall?: number): CostEstimate;
|
|
24
|
+
//# sourceMappingURL=costTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costTracker.d.ts","sourceRoot":"","sources":["../../../src/runtime/costTracker.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,SAAS,CAAK;IAEtB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAM/B,IAAI,KAAK,IAAI,UAAU,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAO/D;IAED,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIzC,KAAK,IAAI,IAAI;CAKd;AAED,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,gBAAgB,GAAE,MAAY,GAC7B,YAAY,CAUd"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class CostTracker {
|
|
2
|
+
totalInputTokens = 0;
|
|
3
|
+
totalOutputTokens = 0;
|
|
4
|
+
callCount = 0;
|
|
5
|
+
record(usage) {
|
|
6
|
+
this.totalInputTokens += usage.inputTokens;
|
|
7
|
+
this.totalOutputTokens += usage.outputTokens;
|
|
8
|
+
this.callCount++;
|
|
9
|
+
}
|
|
10
|
+
get total() {
|
|
11
|
+
return {
|
|
12
|
+
inputTokens: this.totalInputTokens,
|
|
13
|
+
outputTokens: this.totalOutputTokens,
|
|
14
|
+
totalTokens: this.totalInputTokens + this.totalOutputTokens,
|
|
15
|
+
calls: this.callCount,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
exceedsBudget(maxTokens) {
|
|
19
|
+
return this.totalInputTokens + this.totalOutputTokens > maxTokens;
|
|
20
|
+
}
|
|
21
|
+
reset() {
|
|
22
|
+
this.totalInputTokens = 0;
|
|
23
|
+
this.totalOutputTokens = 0;
|
|
24
|
+
this.callCount = 0;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function estimateCost(candidateCount, testCaseCount, avgTokensPerCall = 500) {
|
|
28
|
+
const estimatedCalls = candidateCount * testCaseCount;
|
|
29
|
+
const totalTokens = estimatedCalls * avgTokensPerCall;
|
|
30
|
+
return {
|
|
31
|
+
inputTokens: Math.round(totalTokens * 0.7),
|
|
32
|
+
outputTokens: Math.round(totalTokens * 0.3),
|
|
33
|
+
totalTokens,
|
|
34
|
+
estimatedCalls,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=costTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costTracker.js","sourceRoot":"","sources":["../../../src/runtime/costTracker.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,WAAW;IACd,gBAAgB,GAAG,CAAC,CAAC;IACrB,iBAAiB,GAAG,CAAC,CAAC;IACtB,SAAS,GAAG,CAAC,CAAC;IAEtB,MAAM,CAAC,KAAiB;QACtB,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,KAAK;QACP,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,YAAY,EAAE,IAAI,CAAC,iBAAiB;YACpC,WAAW,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB;YAC3D,KAAK,EAAE,IAAI,CAAC,SAAS;SACtB,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACpE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,cAAsB,EACtB,aAAqB,EACrB,mBAA2B,GAAG;IAE9B,MAAM,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC;IACtD,MAAM,WAAW,GAAG,cAAc,GAAG,gBAAgB,CAAC;IAEtD,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC1C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC3C,WAAW;QACX,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { createConcurrencyManager } from "./concurrency.js";
|
|
2
|
+
export type { ConcurrencyManager } from "./concurrency.js";
|
|
3
|
+
export { CostTracker, estimateCost } from "./costTracker.js";
|
|
4
|
+
export type { TokenUsage, CostEstimate } from "./costTracker.js";
|
|
5
|
+
export { withRetry, createRetryWrapper } from "./retry.js";
|
|
6
|
+
export type { RetryOptions } from "./retry.js";
|
|
7
|
+
export { PromptCache, createCache } from "./cache.js";
|
|
8
|
+
export type { CacheOptions } from "./cache.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createConcurrencyManager } from "./concurrency.js";
|
|
2
|
+
export { CostTracker, estimateCost } from "./costTracker.js";
|
|
3
|
+
export { withRetry, createRetryWrapper } from "./retry.js";
|
|
4
|
+
export { PromptCache, createCache } from "./cache.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface RetryOptions {
|
|
2
|
+
maxRetries?: number;
|
|
3
|
+
initialDelayMs?: number;
|
|
4
|
+
maxDelayMs?: number;
|
|
5
|
+
backoffMultiplier?: number;
|
|
6
|
+
retryOn?: (error: Error) => boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function withRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
9
|
+
export declare function createRetryWrapper(options?: RetryOptions): <T>(fn: () => Promise<T>) => Promise<T>;
|
|
10
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/runtime/retry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CACrC;AAsBD,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CAqBZ;AAED,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,YAAiB,GACzB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAEzC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const defaultRetryOptions = {
|
|
2
|
+
maxRetries: 3,
|
|
3
|
+
initialDelayMs: 1000,
|
|
4
|
+
maxDelayMs: 30000,
|
|
5
|
+
backoffMultiplier: 2,
|
|
6
|
+
retryOn: (error) => {
|
|
7
|
+
const message = error.message.toLowerCase();
|
|
8
|
+
return (message.includes("rate limit") ||
|
|
9
|
+
message.includes("429") ||
|
|
10
|
+
message.includes("503") ||
|
|
11
|
+
message.includes("timeout"));
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
function sleep(ms) {
|
|
15
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
16
|
+
}
|
|
17
|
+
export async function withRetry(fn, options = {}) {
|
|
18
|
+
const opts = { ...defaultRetryOptions, ...options };
|
|
19
|
+
let lastError = null;
|
|
20
|
+
let delay = opts.initialDelayMs;
|
|
21
|
+
for (let attempt = 0; attempt <= opts.maxRetries; attempt++) {
|
|
22
|
+
try {
|
|
23
|
+
return await fn();
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
27
|
+
if (attempt === opts.maxRetries || !opts.retryOn(lastError)) {
|
|
28
|
+
throw lastError;
|
|
29
|
+
}
|
|
30
|
+
await sleep(delay);
|
|
31
|
+
delay = Math.min(delay * opts.backoffMultiplier, opts.maxDelayMs);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
throw lastError;
|
|
35
|
+
}
|
|
36
|
+
export function createRetryWrapper(options = {}) {
|
|
37
|
+
return (fn) => withRetry(fn, options);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/runtime/retry.ts"],"names":[],"mappings":"AAQA,MAAM,mBAAmB,GAA2B;IAClD,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,KAAK;IACjB,iBAAiB,EAAE,CAAC;IACpB,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC5B,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAoB,EACpB,UAAwB,EAAE;IAE1B,MAAM,IAAI,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,OAAO,EAAE,CAAC;IACpD,IAAI,SAAS,GAAiB,IAAI,CAAC;IACnC,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;IAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtE,IAAI,OAAO,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5D,MAAM,SAAS,CAAC;YAClB,CAAC;YAED,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,UAAwB,EAAE;IAE1B,OAAO,CAAI,EAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z, ZodObject, ZodRawShape } from "zod";
|
|
2
|
+
export interface SchemaDefinition<I extends ZodRawShape, O extends ZodRawShape> {
|
|
3
|
+
description: string;
|
|
4
|
+
inputs: I;
|
|
5
|
+
outputs: O;
|
|
6
|
+
}
|
|
7
|
+
export declare class Schema<I extends ZodRawShape, O extends ZodRawShape> {
|
|
8
|
+
readonly inputSchema: ZodObject<I>;
|
|
9
|
+
readonly outputSchema: ZodObject<O>;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
constructor(definition: SchemaDefinition<I, O>);
|
|
12
|
+
validateInput(input: unknown): z.infer<ZodObject<I>>;
|
|
13
|
+
validateOutput(output: unknown): z.infer<ZodObject<O>>;
|
|
14
|
+
getInputKeys(): string[];
|
|
15
|
+
getOutputKeys(): string[];
|
|
16
|
+
}
|
|
17
|
+
export declare function defineSchema<I extends ZodRawShape, O extends ZodRawShape>(definition: SchemaDefinition<I, O>): Schema<I, O>;
|
|
18
|
+
//# sourceMappingURL=defineSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineSchema.d.ts","sourceRoot":"","sources":["../../../src/schema/defineSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAEhD,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,WAAW,EACrB,CAAC,SAAS,WAAW;IAErB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,qBAAa,MAAM,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,WAAW;IAC9D,SAAgB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1C,SAAgB,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3C,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,UAAU,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;IAM9C,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAIpD,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAItD,YAAY,IAAI,MAAM,EAAE;IAIxB,aAAa,IAAI,MAAM,EAAE;CAG1B;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,WAAW,EACvE,UAAU,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAEd"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export class Schema {
|
|
3
|
+
inputSchema;
|
|
4
|
+
outputSchema;
|
|
5
|
+
description;
|
|
6
|
+
constructor(definition) {
|
|
7
|
+
this.description = definition.description;
|
|
8
|
+
this.inputSchema = z.object(definition.inputs);
|
|
9
|
+
this.outputSchema = z.object(definition.outputs);
|
|
10
|
+
}
|
|
11
|
+
validateInput(input) {
|
|
12
|
+
return this.inputSchema.parse(input);
|
|
13
|
+
}
|
|
14
|
+
validateOutput(output) {
|
|
15
|
+
return this.outputSchema.parse(output);
|
|
16
|
+
}
|
|
17
|
+
getInputKeys() {
|
|
18
|
+
return Object.keys(this.inputSchema.shape);
|
|
19
|
+
}
|
|
20
|
+
getOutputKeys() {
|
|
21
|
+
return Object.keys(this.outputSchema.shape);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function defineSchema(definition) {
|
|
25
|
+
return new Schema(definition);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=defineSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineSchema.js","sourceRoot":"","sources":["../../../src/schema/defineSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAA0B,MAAM,KAAK,CAAC;AAWhD,MAAM,OAAO,MAAM;IACD,WAAW,CAAe;IAC1B,YAAY,CAAe;IAC3B,WAAW,CAAS;IAEpC,YAAY,UAAkC;QAC5C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,aAAa,CAAC,KAAc;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,cAAc,CAAC,MAAe;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,YAAY;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,UAAkC;IAElC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
package/examples/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mzhub/promptc",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Compile and optimize LLM prompts in JavaScript using type-safe schemas and examples.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"anthropic",
|
|
29
29
|
"ai"
|
|
30
30
|
],
|
|
31
|
-
"author": "
|
|
31
|
+
"author": "MZ Hub",
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"zod": "^3.24.0",
|
package/src/cli.ts
CHANGED
|
@@ -98,7 +98,7 @@ Note: The 'compile' command requires a custom config file that defines:
|
|
|
98
98
|
|
|
99
99
|
Example config file (promptc.config.ts):
|
|
100
100
|
|
|
101
|
-
import { defineSchema, ChainOfThought, createProvider, exactMatch, z } from 'promptc';
|
|
101
|
+
import { defineSchema, ChainOfThought, createProvider, exactMatch, z } from '@mzhub/promptc';
|
|
102
102
|
|
|
103
103
|
export const schema = defineSchema({...});
|
|
104
104
|
export const provider = createProvider('openai', { apiKey: process.env.OPENAI_API_KEY });
|