@pluslabs/utils 0.3.1 → 0.4.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/dist/module/cache/index.d.ts +4 -4
- package/dist/module/cache/index.d.ts.map +1 -1
- package/dist/module/cache/index.js.map +1 -1
- package/dist/module/index.d.ts +4 -4
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +4 -4
- package/dist/module/index.js.map +1 -1
- package/dist/module/langfuse-prompt-service/index.d.ts +103 -0
- package/dist/module/langfuse-prompt-service/index.d.ts.map +1 -0
- package/dist/module/langfuse-prompt-service/index.js +297 -0
- package/dist/module/langfuse-prompt-service/index.js.map +1 -0
- package/dist/module/logger/index.d.ts +12 -0
- package/dist/module/logger/index.d.ts.map +1 -0
- package/dist/module/logger/index.js +29 -0
- package/dist/module/logger/index.js.map +1 -0
- package/dist/module/stamp/index.d.ts.map +1 -1
- package/dist/module/stamp/index.js.map +1 -1
- package/package.json +53 -25
- package/src/index.ts +4 -4
- package/src/langfuse-prompt-service/index.ts +469 -0
- package/src/logger/index.ts +29 -0
- package/dist/main/cache/index.d.ts +0 -42
- package/dist/main/cache/index.d.ts.map +0 -1
- package/dist/main/cache/index.js +0 -118
- package/dist/main/cache/index.js.map +0 -1
- package/dist/main/gpt/index.d.ts +0 -18
- package/dist/main/gpt/index.d.ts.map +0 -1
- package/dist/main/gpt/index.js +0 -27
- package/dist/main/gpt/index.js.map +0 -1
- package/dist/main/index.d.ts +0 -6
- package/dist/main/index.d.ts.map +0 -1
- package/dist/main/index.js +0 -39
- package/dist/main/index.js.map +0 -1
- package/dist/main/stamp/index.d.ts +0 -23
- package/dist/main/stamp/index.d.ts.map +0 -1
- package/dist/main/stamp/index.js +0 -47
- package/dist/main/stamp/index.js.map +0 -1
|
@@ -31,11 +31,11 @@ type CacheKeysManagerOptions<R extends Record<string, readonly string[]>> = {
|
|
|
31
31
|
*/
|
|
32
32
|
declare function createCacheKeysManager<R extends Record<string, readonly string[]>>(options: CacheKeysManagerOptions<R>): {
|
|
33
33
|
getCacheKey: <K extends keyof R, V extends R[K][number], Args extends (string | number | boolean)[]>(root: K, node: V, ...identifiers: Args) => CacheKey;
|
|
34
|
-
invalidateCacheKey: <
|
|
35
|
-
getCachedData: <T,
|
|
36
|
-
cacheKey: string | (() => [
|
|
34
|
+
invalidateCacheKey: <K extends keyof R, V extends R[K][number], Args extends (string | number | boolean)[]>(root: K, key: V, ...identifiers: Args) => Promise<void>;
|
|
35
|
+
getCachedData: <T, K extends keyof R, V extends R[K][number]>(options: {
|
|
36
|
+
cacheKey: string | (() => [K, V, ...(string | number | boolean)[]]);
|
|
37
37
|
queryFn: () => Promise<T | null>;
|
|
38
|
-
ttl?: number
|
|
38
|
+
ttl?: number;
|
|
39
39
|
}) => Promise<T | null>;
|
|
40
40
|
};
|
|
41
41
|
export default createCacheKeysManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAEA,cAAM,QAAQ;IACV,OAAO,CAAC,GAAG,CAAW;IAEtB;;OAEG;IACI,GAAG,EAAE,MAAM,CAAe;gBAErB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE;IAI7C,MAAM,CAAC,GAAG,EAAE,MAAM;IAKlB,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAK5C,GAAG;CAGN;AAED,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,IAAI;IACxE,QAAQ,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QACV,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAChD,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,CAAC;CACL,CAAC;AAEF;;;;;;;GAOG;AACH,iBAAS,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EACvE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAEA,cAAM,QAAQ;IACV,OAAO,CAAC,GAAG,CAAW;IAEtB;;OAEG;IACI,GAAG,EAAE,MAAM,CAAe;gBAErB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE;IAI7C,MAAM,CAAC,GAAG,EAAE,MAAM;IAKlB,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAK5C,GAAG;CAGN;AAED,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,IAAI;IACxE,QAAQ,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QACV,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAChD,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,CAAC;CACL,CAAC;AAEF;;;;;;;GAOG;AACH,iBAAS,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EACvE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC;kBAK/B,CAAC,SAAS,MAAM,CAAC,EACjB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EACtB,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,QACtC,CAAC,QAAQ,CAAC,kBAAkB,IAAI;yBAUpC,CAAC,SAAS,MAAM,CAAC,EACjB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EACtB,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,QACtC,CAAC,OAAO,CAAC,kBAAkB,IAAI,KAAG,OAAO,CAAC,IAAI,CAAC;oBAmB1B,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;QAChF,QAAQ,EAAE,MAAM,GAAG,CAAC,8CAAyB,CAAC,CAAC;QAC/C,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACjC,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;EAmExB;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa;AAE1C,MAAM,QAAQ;IAQV,YAAY,MAAc,EAAE,GAAG,IAAc;;QAL7C;;WAEG;QACI,QAAG,GAAW,WAAW,CAAC;QAG7B,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAA,MAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,0CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAI,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,CAAC,GAAW;QACd,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,GAAG,MAAqC;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE,mCAAI,KAAK,CAAA,EAAA,CAAC,KAAI,EAAE,CAAC,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG;QACC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;CACJ;AAaD;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAC3B,OAAmC;IAEnC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAErD,SAAS,WAAW,CAIlB,IAAO,EAAE,IAAO,EAAE,GAAG,WAAiB;QACpC,OAAO,IAAI,QAAQ,CACf,SAAS,EACT,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,EACJ,GAAG,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAC,OAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAE,mCAAI,GAAG,CAAA,EAAA,CAAC,KAAI,EAAE,CAAC,CAC/D,CAAC;IACN,CAAC;IAED,SAAe,kBAAkB,CAI/B,IAAO,EAAE,GAAM,EAAE,GAAG,WAAiB;;YACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC;YAExD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"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"}
|
package/dist/module/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as gpt from './gpt';
|
|
2
|
-
import createCacheKeysManager from './cache';
|
|
3
|
-
export * from './stamp';
|
|
4
|
-
export * from './cache';
|
|
1
|
+
import * as gpt from './gpt/index.js';
|
|
2
|
+
import createCacheKeysManager from './cache/index.js';
|
|
3
|
+
export * from './stamp/index.js';
|
|
4
|
+
export * from './cache/index.js';
|
|
5
5
|
export { gpt, createCacheKeysManager };
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,sBAAsB,MAAM,kBAAkB,CAAC;AAEtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC"}
|
package/dist/module/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as gpt from './gpt';
|
|
2
|
-
import createCacheKeysManager from './cache';
|
|
3
|
-
export * from './stamp';
|
|
4
|
-
export * from './cache';
|
|
1
|
+
import * as gpt from './gpt/index.js';
|
|
2
|
+
import createCacheKeysManager from './cache/index.js';
|
|
3
|
+
export * from './stamp/index.js';
|
|
4
|
+
export * from './cache/index.js';
|
|
5
5
|
export { gpt, createCacheKeysManager };
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,sBAAsB,MAAM,kBAAkB,CAAC;AAEtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { LangfuseClient, TextPromptClient, ChatPromptClient } from '@langfuse/client';
|
|
2
|
+
import { Redis } from '@upstash/redis';
|
|
3
|
+
export type LangfusePromptClient = TextPromptClient | ChatPromptClient;
|
|
4
|
+
export type TPrompt = {
|
|
5
|
+
id: string;
|
|
6
|
+
prompt: string;
|
|
7
|
+
version: string;
|
|
8
|
+
version_label?: string;
|
|
9
|
+
};
|
|
10
|
+
export type ToolPromptWithClient = TPrompt & {
|
|
11
|
+
langfusePrompt: LangfusePromptClient;
|
|
12
|
+
};
|
|
13
|
+
export type PromptVersionInfo = {
|
|
14
|
+
id: string;
|
|
15
|
+
version: number;
|
|
16
|
+
version_label: string | null;
|
|
17
|
+
labels: string[];
|
|
18
|
+
config: LangfusePromptConfig | null;
|
|
19
|
+
};
|
|
20
|
+
export type PromptVersionsResult = {
|
|
21
|
+
name: string;
|
|
22
|
+
activePrompt: PromptVersionInfo | null;
|
|
23
|
+
versions: PromptVersionInfo[];
|
|
24
|
+
};
|
|
25
|
+
export type LangfusePromptConfig = {
|
|
26
|
+
model?: string;
|
|
27
|
+
model_parameters?: {
|
|
28
|
+
reasoning_effort?: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export type LangfusePromptServiceOptions = {
|
|
32
|
+
/**
|
|
33
|
+
* Optional Langfuse client instance. If omitted, a new client is created.
|
|
34
|
+
*/
|
|
35
|
+
client?: LangfuseClient;
|
|
36
|
+
/**
|
|
37
|
+
* Optional Redis client for caching. If omitted, tries to auto-configure Upstash Redis from env.
|
|
38
|
+
* If env vars are missing, caching is disabled.
|
|
39
|
+
*/
|
|
40
|
+
redis?: Redis;
|
|
41
|
+
/**
|
|
42
|
+
* Default cache TTL (seconds) for prompt caching.
|
|
43
|
+
*/
|
|
44
|
+
cacheTtlSeconds?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Optional tool prompt mapping (toolId -> promptName).
|
|
47
|
+
* If omitted, tool prompt names fall back to `tools/${toolId}`.
|
|
48
|
+
*/
|
|
49
|
+
toolPromptMap?: Record<string, string>;
|
|
50
|
+
};
|
|
51
|
+
export declare class LangfusePromptService {
|
|
52
|
+
private client;
|
|
53
|
+
private redis;
|
|
54
|
+
private cacheTtlSeconds;
|
|
55
|
+
private toolPromptMap?;
|
|
56
|
+
constructor(options?: LangfusePromptServiceOptions);
|
|
57
|
+
/**
|
|
58
|
+
* Get tool prompt name for a given tool ID.
|
|
59
|
+
*/
|
|
60
|
+
private getToolPromptName;
|
|
61
|
+
/**
|
|
62
|
+
* Fetch a prompt by Langfuse prompt name with optional version.
|
|
63
|
+
* Uses Redis cache (when configured) to avoid repeated Langfuse API calls.
|
|
64
|
+
*/
|
|
65
|
+
getPrompt({ promptName, version }: {
|
|
66
|
+
promptName: string;
|
|
67
|
+
version?: string;
|
|
68
|
+
}): Promise<TextPromptClient>;
|
|
69
|
+
/**
|
|
70
|
+
* Fetch a tool prompt by tool ID with optional version override.
|
|
71
|
+
*/
|
|
72
|
+
getToolPrompt({ toolId, version }: {
|
|
73
|
+
toolId: string;
|
|
74
|
+
version?: number;
|
|
75
|
+
}): Promise<TextPromptClient | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Fetch multiple tool prompts with optional overrides.
|
|
78
|
+
* Uses a single composite Redis cache key for the entire tool set (when Redis configured).
|
|
79
|
+
*/
|
|
80
|
+
getToolPrompts({ toolIds, toolOverrides }: {
|
|
81
|
+
toolIds: string[];
|
|
82
|
+
toolOverrides?: Record<string, number>;
|
|
83
|
+
}): Promise<LangfusePromptClient[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Fetch tool prompts and convert to ToolPromptWithClient format.
|
|
86
|
+
*/
|
|
87
|
+
getToolPromptsWithClients({ toolIds, toolOverrides }: {
|
|
88
|
+
toolIds: string[];
|
|
89
|
+
toolOverrides?: Record<string, number>;
|
|
90
|
+
}): Promise<ToolPromptWithClient[]>;
|
|
91
|
+
/**
|
|
92
|
+
* Return every version for each prompt, including per-version labels and configs.
|
|
93
|
+
* Missing prompt names are simply omitted.
|
|
94
|
+
*/
|
|
95
|
+
listPromptVersionsWithConfigs(promptNames: string[], concurrency?: number): Promise<Record<string, PromptVersionsResult>>;
|
|
96
|
+
/**
|
|
97
|
+
* Cached wrapper around listPromptVersionsWithConfigs.
|
|
98
|
+
* Uses Redis with a short TTL to avoid repeated Langfuse list/get bursts.
|
|
99
|
+
*/
|
|
100
|
+
listPromptVersionsWithConfigsCached(promptNames: string[], concurrency?: number, ttlSeconds?: number, forceRefresh?: boolean): Promise<Record<string, PromptVersionsResult>>;
|
|
101
|
+
}
|
|
102
|
+
export declare const langfusePromptService: LangfusePromptService;
|
|
103
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/langfuse-prompt-service/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { LangfuseClient, TextPromptClient, ChatPromptClient } from '@langfuse/client';
|
|
11
|
+
import { Redis } from '@upstash/redis';
|
|
12
|
+
// ESM best-practice: keep relative imports but use `.js` specifiers.
|
|
13
|
+
// With `moduleResolution: "NodeNext"`, TS resolves this to the TS sources and
|
|
14
|
+
// preserves `.js` in emitted output (required by Node ESM / Turbopack).
|
|
15
|
+
import { createStamp } from '../stamp/index.js';
|
|
16
|
+
import { logger } from '../logger/index.js';
|
|
17
|
+
const DEFAULT_CACHE_TTL_SECONDS = 60 * 1; // 1 minute
|
|
18
|
+
const createRedisFromEnv = () => new Redis({
|
|
19
|
+
url: process.env.REDIS_UPSTASH_KV_REST_API_URL,
|
|
20
|
+
token: process.env.REDIS_UPSTASH_KV_REST_API_TOKEN
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Generic Redis cache wrapper with custom serialization/hydration.
|
|
24
|
+
* If Redis is not configured, this is a passthrough that simply calls the fetcher.
|
|
25
|
+
*/
|
|
26
|
+
function withRedisCache(redis_1, _a) {
|
|
27
|
+
return __awaiter(this, arguments, void 0, function* (redis, { cacheKey, fetcher, ttlSeconds = DEFAULT_CACHE_TTL_SECONDS, serialize, hydrate, logContext }) {
|
|
28
|
+
try {
|
|
29
|
+
const cached = yield redis.get(cacheKey);
|
|
30
|
+
if (cached) {
|
|
31
|
+
const parsed = typeof cached === 'string' ? JSON.parse(cached) : cached;
|
|
32
|
+
logger.log(`[langfuse-prompt-service] [${logContext}] [cache-hit]`, cacheKey);
|
|
33
|
+
return hydrate(parsed);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (cacheError) {
|
|
37
|
+
logger.warn(`[langfuse-prompt-service] [${logContext}] [cache-get-error]`, cacheError);
|
|
38
|
+
}
|
|
39
|
+
const result = yield fetcher();
|
|
40
|
+
logger.log(`[langfuse-prompt-service] [${logContext}] [cache-miss]`, cacheKey);
|
|
41
|
+
try {
|
|
42
|
+
yield redis.setex(cacheKey, ttlSeconds, JSON.stringify(serialize(result)));
|
|
43
|
+
logger.log(`[langfuse-prompt-service] [${logContext}] [cache-set]`, cacheKey);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
logger.warn(`[langfuse-prompt-service] [${logContext}] [cache-set-error]`, err);
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Build a stable Redis cache key for a Langfuse prompt.
|
|
53
|
+
*/
|
|
54
|
+
const buildPromptCacheKey = (promptName, version) => {
|
|
55
|
+
const versionPart = version !== undefined ? `v${version}` : 'production';
|
|
56
|
+
return `langfuse:prompt:${promptName}:${versionPart}`;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Serialize a Langfuse prompt client to a plain object for Redis storage.
|
|
60
|
+
*/
|
|
61
|
+
const serializePromptClient = (client) => {
|
|
62
|
+
const isText = client instanceof TextPromptClient;
|
|
63
|
+
return {
|
|
64
|
+
type: isText ? 'text' : 'chat',
|
|
65
|
+
promptResponse: client
|
|
66
|
+
.promptResponse,
|
|
67
|
+
isFallback: client.isFallback
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Hydrate a serialized prompt back into a Langfuse prompt client instance.
|
|
72
|
+
*/
|
|
73
|
+
const hydratePromptClient = (serialized) => {
|
|
74
|
+
if (serialized.type === 'text') {
|
|
75
|
+
return new TextPromptClient(serialized.promptResponse, serialized.isFallback);
|
|
76
|
+
}
|
|
77
|
+
return new ChatPromptClient(serialized.promptResponse, serialized.isFallback);
|
|
78
|
+
};
|
|
79
|
+
export class LangfusePromptService {
|
|
80
|
+
constructor(options = {}) {
|
|
81
|
+
var _a, _b, _c;
|
|
82
|
+
this.client = (_a = options.client) !== null && _a !== void 0 ? _a : new LangfuseClient();
|
|
83
|
+
this.redis = (_b = options.redis) !== null && _b !== void 0 ? _b : createRedisFromEnv();
|
|
84
|
+
this.cacheTtlSeconds = (_c = options.cacheTtlSeconds) !== null && _c !== void 0 ? _c : DEFAULT_CACHE_TTL_SECONDS;
|
|
85
|
+
this.toolPromptMap = options.toolPromptMap;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get tool prompt name for a given tool ID.
|
|
89
|
+
*/
|
|
90
|
+
getToolPromptName(toolId) {
|
|
91
|
+
if (this.toolPromptMap && toolId in this.toolPromptMap) {
|
|
92
|
+
return this.toolPromptMap[toolId];
|
|
93
|
+
}
|
|
94
|
+
// Default: tool prompts are stored under `tools/<toolId>`
|
|
95
|
+
return `tools/${toolId}`;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Fetch a prompt by Langfuse prompt name with optional version.
|
|
99
|
+
* Uses Redis cache (when configured) to avoid repeated Langfuse API calls.
|
|
100
|
+
*/
|
|
101
|
+
getPrompt(_a) {
|
|
102
|
+
return __awaiter(this, arguments, void 0, function* ({ promptName, version }) {
|
|
103
|
+
const { stamp } = createStamp(`langfuse.getPrompt[${promptName}]`);
|
|
104
|
+
try {
|
|
105
|
+
const result = yield withRedisCache(this.redis, {
|
|
106
|
+
cacheKey: buildPromptCacheKey(promptName, version),
|
|
107
|
+
fetcher: () => __awaiter(this, void 0, void 0, function* () {
|
|
108
|
+
// When version is specified, fetch by version number
|
|
109
|
+
// Otherwise, fetch by 'production' label to ensure we get the correct promoted version
|
|
110
|
+
const prompt = yield this.client.prompt.get(promptName, Object.assign({}, (version
|
|
111
|
+
? { version: parseInt(version, 10) }
|
|
112
|
+
: { label: 'production' })));
|
|
113
|
+
stamp('fetched');
|
|
114
|
+
return prompt;
|
|
115
|
+
}),
|
|
116
|
+
ttlSeconds: this.cacheTtlSeconds,
|
|
117
|
+
serialize: serializePromptClient,
|
|
118
|
+
hydrate: hydratePromptClient,
|
|
119
|
+
logContext: 'getPrompt'
|
|
120
|
+
});
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
logger.error('[langfuse-prompt-service] [getPrompt]', `[promptName=${promptName}]`, `[error=${JSON.stringify(error)}]`);
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
stamp('end').end();
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Fetch a tool prompt by tool ID with optional version override.
|
|
134
|
+
*/
|
|
135
|
+
getToolPrompt(_a) {
|
|
136
|
+
return __awaiter(this, arguments, void 0, function* ({ toolId, version }) {
|
|
137
|
+
try {
|
|
138
|
+
const promptName = this.getToolPromptName(toolId);
|
|
139
|
+
const langfusePrompt = yield this.getPrompt({
|
|
140
|
+
promptName,
|
|
141
|
+
version: version === null || version === void 0 ? void 0 : version.toString()
|
|
142
|
+
});
|
|
143
|
+
return langfusePrompt;
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
logger.warn('[langfuse-prompt-service] [getToolPrompt]', `[toolId=${toolId}]`, `[error=${JSON.stringify(error)}]`);
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Fetch multiple tool prompts with optional overrides.
|
|
153
|
+
* Uses a single composite Redis cache key for the entire tool set (when Redis configured).
|
|
154
|
+
*/
|
|
155
|
+
getToolPrompts(_a) {
|
|
156
|
+
return __awaiter(this, arguments, void 0, function* ({ toolIds, toolOverrides }) {
|
|
157
|
+
const { stamp } = createStamp(`langfuse.getToolPrompts[${toolIds.join(',')}]`);
|
|
158
|
+
// Build composite cache key from sorted tool IDs + versions
|
|
159
|
+
const keyParts = toolIds
|
|
160
|
+
.slice()
|
|
161
|
+
.sort()
|
|
162
|
+
.map((id) => {
|
|
163
|
+
const v = toolOverrides === null || toolOverrides === void 0 ? void 0 : toolOverrides[id];
|
|
164
|
+
return v !== undefined ? `${id}:v${v}` : id;
|
|
165
|
+
});
|
|
166
|
+
try {
|
|
167
|
+
return yield withRedisCache(this.redis, {
|
|
168
|
+
cacheKey: `langfuse:toolprompts:${keyParts.join('|')}`,
|
|
169
|
+
fetcher: () => __awaiter(this, void 0, void 0, function* () {
|
|
170
|
+
// `getToolPrompt` is already fail-safe (returns null on errors), so `Promise.all` is fine here.
|
|
171
|
+
const results = yield Promise.all(toolIds.map((toolId) => {
|
|
172
|
+
const version = toolOverrides === null || toolOverrides === void 0 ? void 0 : toolOverrides[toolId];
|
|
173
|
+
return this.getToolPrompt({ toolId, version });
|
|
174
|
+
}));
|
|
175
|
+
const toolPrompts = results.filter((p) => p !== null);
|
|
176
|
+
stamp('fetched');
|
|
177
|
+
return toolPrompts;
|
|
178
|
+
}),
|
|
179
|
+
ttlSeconds: this.cacheTtlSeconds,
|
|
180
|
+
serialize: (prompts) => prompts.map(serializePromptClient),
|
|
181
|
+
hydrate: (serialized) => serialized.map(hydratePromptClient),
|
|
182
|
+
logContext: 'getToolPrompts'
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
finally {
|
|
186
|
+
stamp('end').end();
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Fetch tool prompts and convert to ToolPromptWithClient format.
|
|
192
|
+
*/
|
|
193
|
+
getToolPromptsWithClients(_a) {
|
|
194
|
+
return __awaiter(this, arguments, void 0, function* ({ toolIds, toolOverrides }) {
|
|
195
|
+
const langfusePrompts = yield this.getToolPrompts({ toolIds, toolOverrides });
|
|
196
|
+
return langfusePrompts.map((lp) => ({
|
|
197
|
+
id: `langfuse-${lp.version}`,
|
|
198
|
+
prompt: lp.prompt,
|
|
199
|
+
active: true,
|
|
200
|
+
version: lp.version.toString(),
|
|
201
|
+
langfusePrompt: lp
|
|
202
|
+
}));
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Return every version for each prompt, including per-version labels and configs.
|
|
207
|
+
* Missing prompt names are simply omitted.
|
|
208
|
+
*/
|
|
209
|
+
listPromptVersionsWithConfigs(promptNames_1) {
|
|
210
|
+
return __awaiter(this, arguments, void 0, function* (promptNames, concurrency = 8) {
|
|
211
|
+
var _a, _b;
|
|
212
|
+
const targetNames = new Set(promptNames);
|
|
213
|
+
const results = {};
|
|
214
|
+
// Single page fetch with generous limit; adjust if prompt library grows beyond 200.
|
|
215
|
+
const response = yield this.client.api.prompts.list({
|
|
216
|
+
page: 1,
|
|
217
|
+
limit: 100
|
|
218
|
+
});
|
|
219
|
+
const promptMetas = (response.data || []).filter((p) => targetNames.has(p.name));
|
|
220
|
+
// Pre-allocate container for version details per prompt
|
|
221
|
+
const versionBuckets = {};
|
|
222
|
+
for (const p of promptMetas) {
|
|
223
|
+
versionBuckets[p.name] = [];
|
|
224
|
+
}
|
|
225
|
+
const work = [];
|
|
226
|
+
for (const p of promptMetas) {
|
|
227
|
+
for (const version of p.versions) {
|
|
228
|
+
work.push({
|
|
229
|
+
promptName: p.name,
|
|
230
|
+
version
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
let cursor = 0;
|
|
235
|
+
const runWorker = () => __awaiter(this, void 0, void 0, function* () {
|
|
236
|
+
while (cursor < work.length) {
|
|
237
|
+
const idx = cursor++;
|
|
238
|
+
const item = work[idx];
|
|
239
|
+
const prompt = yield this.client.prompt.get(item.promptName, {
|
|
240
|
+
version: item.version
|
|
241
|
+
});
|
|
242
|
+
versionBuckets[item.promptName].push({
|
|
243
|
+
id: `${item.promptName}-v${item.version}`,
|
|
244
|
+
version: item.version,
|
|
245
|
+
version_label: prompt.labels.find((l) => l !== 'production' && l !== 'latest') ||
|
|
246
|
+
null,
|
|
247
|
+
labels: prompt.labels,
|
|
248
|
+
config: prompt.config
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
const workers = Array.from({ length: Math.min(concurrency, work.length) }, () => runWorker());
|
|
253
|
+
yield Promise.all(workers);
|
|
254
|
+
// Build final result per prompt
|
|
255
|
+
for (const p of promptMetas) {
|
|
256
|
+
const versionDetails = versionBuckets[p.name].sort((a, b) => a.version - b.version);
|
|
257
|
+
const activePrompt = (_b = (_a = versionDetails.find((v) => v.labels.indexOf('production') !== -1)) !== null && _a !== void 0 ? _a : versionDetails[versionDetails.length - 1]) !== null && _b !== void 0 ? _b : null;
|
|
258
|
+
results[p.name] = {
|
|
259
|
+
name: p.name,
|
|
260
|
+
activePrompt,
|
|
261
|
+
versions: versionDetails
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
return results;
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Cached wrapper around listPromptVersionsWithConfigs.
|
|
269
|
+
* Uses Redis with a short TTL to avoid repeated Langfuse list/get bursts.
|
|
270
|
+
*/
|
|
271
|
+
listPromptVersionsWithConfigsCached(promptNames_1) {
|
|
272
|
+
return __awaiter(this, arguments, void 0, function* (promptNames, concurrency = 8, ttlSeconds = 60, forceRefresh = false) {
|
|
273
|
+
const cacheKey = `langfuse:prompt_versions:${promptNames
|
|
274
|
+
.slice()
|
|
275
|
+
.sort()
|
|
276
|
+
.join('|')}:c${concurrency}`;
|
|
277
|
+
// Force refresh bypasses cache read
|
|
278
|
+
if (forceRefresh) {
|
|
279
|
+
const fresh = yield this.listPromptVersionsWithConfigs(promptNames, concurrency);
|
|
280
|
+
this.redis
|
|
281
|
+
.setex(cacheKey, ttlSeconds, JSON.stringify(fresh))
|
|
282
|
+
.catch((error) => logger.warn('[langfuse-prompt-service] [listPromptVersionsWithConfigsCached] [cache-set-error]', error));
|
|
283
|
+
return fresh;
|
|
284
|
+
}
|
|
285
|
+
return withRedisCache(this.redis, {
|
|
286
|
+
cacheKey,
|
|
287
|
+
fetcher: () => this.listPromptVersionsWithConfigs(promptNames, concurrency),
|
|
288
|
+
ttlSeconds,
|
|
289
|
+
serialize: (v) => v,
|
|
290
|
+
hydrate: (v) => v,
|
|
291
|
+
logContext: 'listPromptVersionsWithConfigsCached'
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
export const langfusePromptService = new LangfusePromptService();
|
|
297
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/langfuse-prompt-service/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility for logging messages at different levels in different environments.
|
|
3
|
+
* Logging a lot of data in production adds costs to log ingestion.
|
|
4
|
+
*/
|
|
5
|
+
export declare const logger: {
|
|
6
|
+
level: number;
|
|
7
|
+
log: (...messages: unknown[]) => void;
|
|
8
|
+
info: (...messages: unknown[]) => void;
|
|
9
|
+
warn: (...messages: unknown[]) => void;
|
|
10
|
+
error: (...messages: unknown[]) => void;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logger/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,MAAM;;uBAEI,OAAO,EAAE;wBAKR,OAAO,EAAE;wBAKT,OAAO,EAAE;yBAKR,OAAO,EAAE;CAKjC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const levels = ['all', 'info', 'warn', 'error'];
|
|
2
|
+
/**
|
|
3
|
+
* Utility for logging messages at different levels in different environments.
|
|
4
|
+
* Logging a lot of data in production adds costs to log ingestion.
|
|
5
|
+
*/
|
|
6
|
+
export const logger = {
|
|
7
|
+
level: levels.indexOf(process.env.NODE_ENV !== 'development' ? 'info' : 'all'),
|
|
8
|
+
log: (...messages) => {
|
|
9
|
+
if (levels.indexOf('all') >= logger.level) {
|
|
10
|
+
console.log(...messages);
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
info: (...messages) => {
|
|
14
|
+
if (levels.indexOf('info') >= logger.level) {
|
|
15
|
+
console.log(...messages);
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
warn: (...messages) => {
|
|
19
|
+
if (levels.indexOf('warn') >= logger.level) {
|
|
20
|
+
console.warn(...messages);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
error: (...messages) => {
|
|
24
|
+
if (levels.indexOf('error') >= logger.level) {
|
|
25
|
+
console.error('\x1b[31m', ...messages, '\x1b[0m');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/logger/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9E,GAAG,EAAE,CAAC,GAAG,QAAmB,EAAE,EAAE;QAC5B,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,QAAmB,EAAE,EAAE;QAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,QAAmB,EAAE,EAAE;QAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,QAAmB,EAAE,EAAE;QAC9B,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;CACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stamp/index.ts"],"names":[],"mappings":"AAGA,KAAK,OAAO,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stamp/index.ts"],"names":[],"mappings":"AAGA,KAAK,OAAO,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,WAAO;;;CAiBlC,CAAC;AAEF,wBAAgB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAahD;yBAbe,KAAK;oBAiBF,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stamp/index.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,oDAAoD;AAUpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG;QACR,EAAE;QACF,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAChB,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;KACL,CAAC;IAEb,uCAAuC;IACvC,qBAAqB;IACrB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExB,OAAO;QACH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACtB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;KACrB,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,UAAU,KAAK,CAAgB,IAAY;IAC7C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stamp/index.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,oDAAoD;AAUpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG;QACR,EAAE;QACF,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAChB,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;KACL,CAAC;IAEb,uCAAuC;IACvC,qBAAqB;IACrB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExB,OAAO;QACH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACtB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;KACrB,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,UAAU,KAAK,CAAgB,IAAY;IAC7C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,OAAO,CAAC,GAAG,CACP,WAAW,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,SAAS,IAAI,cAAc,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAC/F,CAAC;IAEF,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AAEhB,SAAS,GAAG;IACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACb,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAEd,MAAM,GAAG,GAAG,IAAe,CAAC;IAE5B,OAAO,GAAG,CAAC;AACf,CAAC"}
|