@resolveio/server-lib 22.3.148 → 22.3.149
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.
|
@@ -73,7 +73,7 @@ var cleanMetadata = function (value) {
|
|
|
73
73
|
};
|
|
74
74
|
function recordOpenAIUsage(input) {
|
|
75
75
|
return __awaiter(this, void 0, void 0, function () {
|
|
76
|
-
var idClient, inputTokens, cachedInputTokens, outputTokens, totalTokens,
|
|
76
|
+
var idClient, inputTokens, cachedInputTokens, outputTokens, totalTokens, normalizedInputCostEstimate, model, costEstimate;
|
|
77
77
|
return __generator(this, function (_a) {
|
|
78
78
|
switch (_a.label) {
|
|
79
79
|
case 0:
|
|
@@ -85,11 +85,11 @@ function recordOpenAIUsage(input) {
|
|
|
85
85
|
cachedInputTokens = toNumber(input.cached_input_tokens);
|
|
86
86
|
outputTokens = toNumber(input.output_tokens);
|
|
87
87
|
totalTokens = toNumber(input.total_tokens);
|
|
88
|
-
|
|
88
|
+
normalizedInputCostEstimate = toNumber(input.cost_estimate);
|
|
89
|
+
if (!totalTokens && (!inputTokens && !outputTokens) && normalizedInputCostEstimate <= 0) {
|
|
89
90
|
return [2 /*return*/];
|
|
90
91
|
}
|
|
91
92
|
model = String(input.model || '').trim() || 'unknown';
|
|
92
|
-
normalizedInputCostEstimate = toNumber(input.cost_estimate);
|
|
93
93
|
costEstimate = normalizedInputCostEstimate > 0
|
|
94
94
|
? normalizedInputCostEstimate
|
|
95
95
|
: (0, openai_usage_cost_1.estimateOpenAIUsageCost)(model, inputTokens, outputTokens, cachedInputTokens);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/openai-usage-ledger.manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,8CA4CC;AAED,wEAUC;AA/GD,gGAAkF;AAMlF,+DAAoE;AACpE,+DAA8F;AAArF,4HAAA,uBAAuB,OAAA;AA6BhC,IAAM,QAAQ,GAAG,UAAC,KAAU;IAC3B,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,IAAM,SAAS,GAAG,UAAC,KAAU,EAAE,GAAS;IAAT,oBAAA,EAAA,SAAS;IACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,IAAM,aAAa,GAAG,UAAC,KAAU;IAChC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,oBAAY,KAAK,EAAG;AACrB,CAAC,CAAC;AAEF,SAAsB,iBAAiB,CAAC,KAA6B;;;;;;oBACpE,IAAI,CAAC,KAAK,EAAE,CAAC;wBACZ,sBAAO;oBACR,CAAC;oBACK,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChD,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC3C,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;oBACxD,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBAC7C,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"sources":["../../src/managers/openai-usage-ledger.manager.ts"],"names":[],"mappings":"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","file":"openai-usage-ledger.manager.js","sourcesContent":["import { OpenAIUsageLedger } from '../collections/openai-usage-ledger.collection';\nimport {\n\tOpenAIUsageCostBasis,\n\tOpenAIUsageSource,\n\tOpenAIUsageSurface\n} from '../models/openai-usage-ledger.model';\nimport { estimateOpenAIUsageCost } from '../util/openai-usage-cost';\nexport { estimateOpenAIUsageCost, OpenAIUsagePricingConfig } from '../util/openai-usage-cost';\n\nexport interface OpenAIUsageRecordInput {\n\tid_client?: string;\n\tmodel: string;\n\tinput_tokens: number;\n\tcached_input_tokens?: number;\n\toutput_tokens: number;\n\ttotal_tokens: number;\n\tbillable?: boolean;\n\tcategory?: string;\n\tid_request?: string;\n\tid_conversation?: string;\n\ttimestamp?: Date;\n\tcost_estimate?: number;\n\tusage_source?: OpenAIUsageSource | string;\n\tusage_surface?: OpenAIUsageSurface | string;\n\tusage_phase?: string;\n\tcost_basis?: OpenAIUsageCostBasis | string;\n\tid_run?: string;\n\tid_job?: string;\n\tid_app?: string;\n\tid_ticket?: string;\n\tis_manual?: boolean;\n\tis_untracked?: boolean;\n\tuntracked_reason?: string;\n\tmetadata?: Record<string, any>;\n}\n\nconst toNumber = (value: any): number => {\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) ? parsed : 0;\n};\n\nconst cleanText = (value: any, max = 240): string => {\n\tif (value === undefined || value === null) {\n\t\treturn '';\n\t}\n\treturn String(value).trim().slice(0, max);\n};\n\nconst cleanMetadata = (value: any): Record<string, any> | undefined => {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn undefined;\n\t}\n\treturn { ...value };\n};\n\nexport async function recordOpenAIUsage(input: OpenAIUsageRecordInput): Promise<void> {\n\tif (!input) {\n\t\treturn;\n\t}\n\tconst idClient = String(input.id_client || '').trim();\n\tconst inputTokens = toNumber(input.input_tokens);\n\tconst cachedInputTokens = toNumber(input.cached_input_tokens);\n\tconst outputTokens = toNumber(input.output_tokens);\n\tconst totalTokens = toNumber(input.total_tokens);\n\tconst normalizedInputCostEstimate = toNumber(input.cost_estimate);\n\tif (!totalTokens && (!inputTokens && !outputTokens) && normalizedInputCostEstimate <= 0) {\n\t\treturn;\n\t}\n\tconst model = String(input.model || '').trim() || 'unknown';\n\tconst costEstimate = normalizedInputCostEstimate > 0\n\t\t? normalizedInputCostEstimate\n\t\t: estimateOpenAIUsageCost(model, inputTokens, outputTokens, cachedInputTokens);\n\n\tawait OpenAIUsageLedger.insertOne({\n\t\tid_client: idClient,\n\t\ttimestamp: input.timestamp || new Date(),\n\t\tmodel,\n\t\tinput_tokens: inputTokens,\n\t\tcached_input_tokens: cachedInputTokens,\n\t\toutput_tokens: outputTokens,\n\t\ttotal_tokens: totalTokens || (inputTokens + outputTokens),\n\t\tcost_estimate: costEstimate,\n\t\tbillable: input.billable !== false,\n\t\tcategory: cleanText(input.category, 160),\n\t\tid_request: cleanText(input.id_request, 240),\n\t\tid_conversation: cleanText(input.id_conversation, 240),\n\t\tusage_source: cleanText(input.usage_source, 80) || 'unknown',\n\t\tusage_surface: cleanText(input.usage_surface, 80) || 'unknown',\n\t\tusage_phase: cleanText(input.usage_phase, 120),\n\t\tcost_basis: cleanText(input.cost_basis, 80) || (normalizedInputCostEstimate > 0 ? 'provider_usage' : 'estimated_tokens'),\n\t\tid_run: cleanText(input.id_run, 240),\n\t\tid_job: cleanText(input.id_job, 240),\n\t\tid_app: cleanText(input.id_app, 240),\n\t\tid_ticket: cleanText(input.id_ticket, 240),\n\t\tis_manual: input.is_manual === true || cleanText(input.usage_source, 80) === 'manual_codex',\n\t\tis_untracked: input.is_untracked === true,\n\t\tuntracked_reason: cleanText(input.untracked_reason, 500),\n\t\tmetadata: cleanMetadata(input.metadata)\n\t});\n}\n\nexport async function recordManualCodexUsageEstimate(input: Omit<OpenAIUsageRecordInput, 'usage_source' | 'is_manual'>): Promise<void> {\n\tawait recordOpenAIUsage({\n\t\t...input,\n\t\tusage_source: 'manual_codex',\n\t\tusage_surface: input.usage_surface || 'manual',\n\t\tcost_basis: input.cost_basis || 'manual_estimate',\n\t\tis_manual: true,\n\t\tis_untracked: input.is_untracked !== false,\n\t\tuntracked_reason: input.untracked_reason || 'Manual Codex session was outside the managed runner telemetry path.'\n\t});\n}\n"]}
|