@framers/agentos 0.1.93 → 0.1.95

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.
Files changed (81) hide show
  1. package/README.md +10 -0
  2. package/dist/api/AgentOS.d.ts +13 -0
  3. package/dist/api/AgentOS.d.ts.map +1 -1
  4. package/dist/api/AgentOS.js +36 -1
  5. package/dist/api/AgentOS.js.map +1 -1
  6. package/dist/api/agent.d.ts +7 -0
  7. package/dist/api/agent.d.ts.map +1 -1
  8. package/dist/api/agent.js +34 -2
  9. package/dist/api/agent.js.map +1 -1
  10. package/dist/api/generateImage.d.ts +3 -0
  11. package/dist/api/generateImage.d.ts.map +1 -1
  12. package/dist/api/generateImage.js +95 -36
  13. package/dist/api/generateImage.js.map +1 -1
  14. package/dist/api/generateText.d.ts +9 -0
  15. package/dist/api/generateText.d.ts.map +1 -1
  16. package/dist/api/generateText.js +173 -101
  17. package/dist/api/generateText.js.map +1 -1
  18. package/dist/api/observability.d.ts +16 -0
  19. package/dist/api/observability.d.ts.map +1 -0
  20. package/dist/api/observability.js +46 -0
  21. package/dist/api/observability.js.map +1 -0
  22. package/dist/api/streamText.d.ts.map +1 -1
  23. package/dist/api/streamText.js +93 -22
  24. package/dist/api/streamText.js.map +1 -1
  25. package/dist/api/usageLedger.d.ts +58 -0
  26. package/dist/api/usageLedger.d.ts.map +1 -0
  27. package/dist/api/usageLedger.js +151 -0
  28. package/dist/api/usageLedger.js.map +1 -0
  29. package/dist/core/tools/IToolOrchestrator.d.ts +38 -1
  30. package/dist/core/tools/IToolOrchestrator.d.ts.map +1 -1
  31. package/dist/core/tools/ToolOrchestrator.d.ts +58 -1
  32. package/dist/core/tools/ToolOrchestrator.d.ts.map +1 -1
  33. package/dist/core/tools/ToolOrchestrator.js +116 -1
  34. package/dist/core/tools/ToolOrchestrator.js.map +1 -1
  35. package/dist/discovery/CapabilityDiscoveryEngine.d.ts +19 -0
  36. package/dist/discovery/CapabilityDiscoveryEngine.d.ts.map +1 -1
  37. package/dist/discovery/CapabilityDiscoveryEngine.js +54 -0
  38. package/dist/discovery/CapabilityDiscoveryEngine.js.map +1 -1
  39. package/dist/discovery/types.d.ts +8 -1
  40. package/dist/discovery/types.d.ts.map +1 -1
  41. package/dist/discovery/types.js.map +1 -1
  42. package/dist/emergent/ComposableToolBuilder.d.ts +125 -0
  43. package/dist/emergent/ComposableToolBuilder.d.ts.map +1 -0
  44. package/dist/emergent/ComposableToolBuilder.js +318 -0
  45. package/dist/emergent/ComposableToolBuilder.js.map +1 -0
  46. package/dist/emergent/EmergentCapabilityEngine.d.ts +168 -0
  47. package/dist/emergent/EmergentCapabilityEngine.d.ts.map +1 -0
  48. package/dist/emergent/EmergentCapabilityEngine.js +437 -0
  49. package/dist/emergent/EmergentCapabilityEngine.js.map +1 -0
  50. package/dist/emergent/EmergentJudge.d.ts +283 -0
  51. package/dist/emergent/EmergentJudge.d.ts.map +1 -0
  52. package/dist/emergent/EmergentJudge.js +463 -0
  53. package/dist/emergent/EmergentJudge.js.map +1 -0
  54. package/dist/emergent/EmergentToolRegistry.d.ts +286 -0
  55. package/dist/emergent/EmergentToolRegistry.d.ts.map +1 -0
  56. package/dist/emergent/EmergentToolRegistry.js +546 -0
  57. package/dist/emergent/EmergentToolRegistry.js.map +1 -0
  58. package/dist/emergent/ForgeToolMetaTool.d.ts +124 -0
  59. package/dist/emergent/ForgeToolMetaTool.d.ts.map +1 -0
  60. package/dist/emergent/ForgeToolMetaTool.js +170 -0
  61. package/dist/emergent/ForgeToolMetaTool.js.map +1 -0
  62. package/dist/emergent/SandboxedToolForge.d.ts +185 -0
  63. package/dist/emergent/SandboxedToolForge.d.ts.map +1 -0
  64. package/dist/emergent/SandboxedToolForge.js +383 -0
  65. package/dist/emergent/SandboxedToolForge.js.map +1 -0
  66. package/dist/emergent/index.d.ts +25 -0
  67. package/dist/emergent/index.d.ts.map +1 -0
  68. package/dist/emergent/index.js +20 -0
  69. package/dist/emergent/index.js.map +1 -0
  70. package/dist/emergent/types.d.ts +596 -0
  71. package/dist/emergent/types.d.ts.map +1 -0
  72. package/dist/emergent/types.js +36 -0
  73. package/dist/emergent/types.js.map +1 -0
  74. package/dist/index.d.ts +8 -1
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +7 -1
  77. package/dist/index.js.map +1 -1
  78. package/dist/orchestration/runtime/GraphRuntime.d.ts.map +1 -1
  79. package/dist/orchestration/runtime/GraphRuntime.js +53 -11
  80. package/dist/orchestration/runtime/GraphRuntime.js.map +1 -1
  81. package/package.json +1 -1
@@ -8,6 +8,9 @@
8
8
  */
9
9
  import { createImageProvider } from '../core/images/index.js';
10
10
  import { resolveModelOption, resolveMediaProvider } from './model.js';
11
+ import { attachUsageAttributes, toTurnMetricUsage } from './observability.js';
12
+ import { recordAgentOSUsage } from './usageLedger.js';
13
+ import { recordAgentOSTurnMetrics, withAgentOSSpan } from '../core/observability/otel.js';
11
14
  /**
12
15
  * Generates one or more images using a provider-agnostic `provider:model` string.
13
16
  *
@@ -28,41 +31,97 @@ import { resolveModelOption, resolveMediaProvider } from './model.js';
28
31
  * ```
29
32
  */
30
33
  export async function generateImage(opts) {
31
- const { providerId, modelId } = resolveModelOption(opts, 'image');
32
- const resolved = resolveMediaProvider(providerId, modelId, {
33
- apiKey: opts.apiKey,
34
- baseUrl: opts.baseUrl,
35
- });
36
- const provider = createImageProvider(resolved.providerId);
37
- await provider.initialize({
38
- apiKey: resolved.apiKey,
39
- baseURL: resolved.baseUrl,
40
- defaultModelId: resolved.modelId,
41
- });
42
- const result = await provider.generateImage({
43
- modelId: resolved.modelId,
44
- prompt: opts.prompt,
45
- modalities: opts.modalities,
46
- n: opts.n,
47
- size: opts.size,
48
- aspectRatio: opts.aspectRatio,
49
- quality: opts.quality,
50
- background: opts.background,
51
- outputFormat: opts.outputFormat,
52
- outputCompression: opts.outputCompression,
53
- responseFormat: opts.responseFormat,
54
- userId: opts.userId,
55
- seed: opts.seed,
56
- negativePrompt: opts.negativePrompt,
57
- providerOptions: opts.providerOptions,
58
- });
59
- return {
60
- model: result.modelId,
61
- provider: result.providerId,
62
- created: result.created,
63
- text: result.text,
64
- images: result.images,
65
- usage: result.usage,
66
- };
34
+ const startedAt = Date.now();
35
+ let metricStatus = 'ok';
36
+ let metricUsage;
37
+ let metricProviderId;
38
+ let metricModelId;
39
+ try {
40
+ return await withAgentOSSpan('agentos.api.generate_image', async (span) => {
41
+ const { providerId, modelId } = resolveModelOption(opts, 'image');
42
+ const resolved = resolveMediaProvider(providerId, modelId, {
43
+ apiKey: opts.apiKey,
44
+ baseUrl: opts.baseUrl,
45
+ });
46
+ metricProviderId = resolved.providerId;
47
+ metricModelId = resolved.modelId;
48
+ span?.setAttribute('llm.provider', resolved.providerId);
49
+ span?.setAttribute('llm.model', resolved.modelId);
50
+ const provider = createImageProvider(resolved.providerId);
51
+ await provider.initialize({
52
+ apiKey: resolved.apiKey,
53
+ baseURL: resolved.baseUrl,
54
+ defaultModelId: resolved.modelId,
55
+ });
56
+ const result = await provider.generateImage({
57
+ modelId: resolved.modelId,
58
+ prompt: opts.prompt,
59
+ modalities: opts.modalities,
60
+ n: opts.n,
61
+ size: opts.size,
62
+ aspectRatio: opts.aspectRatio,
63
+ quality: opts.quality,
64
+ background: opts.background,
65
+ outputFormat: opts.outputFormat,
66
+ outputCompression: opts.outputCompression,
67
+ responseFormat: opts.responseFormat,
68
+ userId: opts.userId,
69
+ seed: opts.seed,
70
+ negativePrompt: opts.negativePrompt,
71
+ providerOptions: opts.providerOptions,
72
+ });
73
+ metricUsage = result.usage;
74
+ span?.setAttribute('agentos.api.images_count', result.images.length);
75
+ attachUsageAttributes(span, {
76
+ promptTokens: result.usage?.promptTokens,
77
+ completionTokens: result.usage?.completionTokens,
78
+ totalTokens: result.usage?.totalTokens,
79
+ totalCostUSD: result.usage?.totalCostUSD,
80
+ });
81
+ return {
82
+ model: result.modelId,
83
+ provider: result.providerId,
84
+ created: result.created,
85
+ text: result.text,
86
+ images: result.images,
87
+ usage: result.usage,
88
+ };
89
+ });
90
+ }
91
+ catch (error) {
92
+ metricStatus = 'error';
93
+ throw error;
94
+ }
95
+ finally {
96
+ try {
97
+ await recordAgentOSUsage({
98
+ providerId: metricProviderId,
99
+ modelId: metricModelId,
100
+ usage: metricUsage ? {
101
+ promptTokens: metricUsage.promptTokens,
102
+ completionTokens: metricUsage.completionTokens,
103
+ totalTokens: metricUsage.totalTokens,
104
+ costUSD: metricUsage.totalCostUSD,
105
+ } : undefined,
106
+ options: {
107
+ ...opts.usageLedger,
108
+ source: opts.usageLedger?.source ?? 'generateImage',
109
+ },
110
+ });
111
+ }
112
+ catch {
113
+ // Helper-level usage persistence is best-effort and should not break generation.
114
+ }
115
+ recordAgentOSTurnMetrics({
116
+ durationMs: Date.now() - startedAt,
117
+ status: metricStatus,
118
+ usage: toTurnMetricUsage(metricUsage ? {
119
+ promptTokens: metricUsage.promptTokens,
120
+ completionTokens: metricUsage.completionTokens,
121
+ totalTokens: metricUsage.totalTokens,
122
+ totalCostUSD: metricUsage.totalCostUSD,
123
+ } : undefined),
124
+ });
125
+ }
67
126
  }
68
127
  //# sourceMappingURL=generateImage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateImage.js","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAU9D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAwEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA0B;IAC5D,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE;QACzD,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,QAAQ,CAAC,UAAU,CAAC;QACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,cAAc,EAAE,QAAQ,CAAC,OAAO;KACjC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC;QAC1C,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,OAAO;QACrB,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"generateImage.js","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type ToolDefinitionMap } from './toolAdapter.js';
2
+ import { type AgentOSUsageLedgerOptions } from './usageLedger.js';
2
3
  /**
3
4
  * A single chat message in a conversation history.
4
5
  * Mirrors the OpenAI / Anthropic message shape accepted by provider adapters.
@@ -34,6 +35,8 @@ export interface TokenUsage {
34
35
  completionTokens: number;
35
36
  /** Sum of `promptTokens` and `completionTokens`. */
36
37
  totalTokens: number;
38
+ /** Total cost reported by the provider across all steps, when available. */
39
+ costUSD?: number;
37
40
  }
38
41
  /**
39
42
  * Options for a {@link generateText} call.
@@ -76,11 +79,17 @@ export interface GenerateTextOptions {
76
79
  apiKey?: string;
77
80
  /** Override the provider base URL (useful for local proxies or Ollama). */
78
81
  baseUrl?: string;
82
+ /** Optional durable usage ledger configuration for helper-level accounting. */
83
+ usageLedger?: AgentOSUsageLedgerOptions;
79
84
  }
80
85
  /**
81
86
  * The completed result returned by {@link generateText}.
82
87
  */
83
88
  export interface GenerateTextResult {
89
+ /** Provider identifier used for the final run. */
90
+ provider: string;
91
+ /** Resolved model identifier used for the run. */
92
+ model: string;
84
93
  /** Final assistant text after all agentic steps have completed. */
85
94
  text: string;
86
95
  /** Aggregated token usage across all steps. */
@@ -1 +1 @@
1
- {"version":3,"file":"generateText.d.ts","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGtE;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,kCAAkC;IAClC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,OAAO,CAAC;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+GAA+G;IAC/G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,8GAA8G;IAC9G,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyHzF"}
1
+ {"version":3,"file":"generateText.d.ts","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"AAWA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAItF;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,kCAAkC;IAClC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,OAAO,CAAC;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+GAA+G;IAC/G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,8GAA8G;IAC9G,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqMzF"}
@@ -8,7 +8,10 @@
8
8
  * model produces a plain-text reply or `maxSteps` is exhausted.
9
9
  */
10
10
  import { resolveModelOption, resolveProvider, createProviderManager } from './model.js';
11
+ import { attachUsageAttributes, toTurnMetricUsage } from './observability.js';
11
12
  import { adaptTools } from './toolAdapter.js';
13
+ import { recordAgentOSUsage } from './usageLedger.js';
14
+ import { recordAgentOSTurnMetrics, withAgentOSSpan } from '../core/observability/otel.js';
12
15
  /**
13
16
  * Stateless text generation with optional multi-step tool calling.
14
17
  *
@@ -30,113 +33,182 @@ import { adaptTools } from './toolAdapter.js';
30
33
  * ```
31
34
  */
32
35
  export async function generateText(opts) {
33
- const { providerId, modelId } = resolveModelOption(opts, 'text');
34
- const resolved = resolveProvider(providerId, modelId, { apiKey: opts.apiKey, baseUrl: opts.baseUrl });
35
- const manager = await createProviderManager(resolved);
36
- const provider = manager.getProvider(resolved.providerId);
37
- if (!provider)
38
- throw new Error(`Provider ${resolved.providerId} not available.`);
39
- // Build messages
40
- const messages = [];
41
- if (opts.system)
42
- messages.push({ role: 'system', content: opts.system });
43
- if (opts.messages) {
44
- for (const m of opts.messages)
45
- messages.push({ role: m.role, content: m.content });
46
- }
47
- if (opts.prompt)
48
- messages.push({ role: 'user', content: opts.prompt });
49
- const tools = adaptTools(opts.tools);
50
- const toolMap = new Map();
51
- for (const t of tools)
52
- toolMap.set(t.name, t);
53
- const toolSchemas = tools.length > 0
54
- ? tools.map(t => ({
55
- type: 'function',
56
- function: { name: t.name, description: t.description, parameters: t.inputSchema },
57
- }))
58
- : undefined;
59
- const allToolCalls = [];
60
- const totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
61
- const maxSteps = opts.maxSteps ?? 1;
62
- for (let step = 0; step < maxSteps; step++) {
63
- const response = await provider.generateCompletion(resolved.modelId, messages, {
64
- tools: toolSchemas,
65
- temperature: opts.temperature,
66
- maxTokens: opts.maxTokens,
67
- });
68
- // Accumulate usage
69
- if (response.usage) {
70
- totalUsage.promptTokens += response.usage.promptTokens ?? 0;
71
- totalUsage.completionTokens += response.usage.completionTokens ?? 0;
72
- totalUsage.totalTokens += response.usage.totalTokens ?? 0;
73
- }
74
- const choice = response.choices?.[0];
75
- if (!choice)
76
- break;
77
- const content = choice.message?.content;
78
- const textContent = typeof content === 'string' ? content : content?.text ?? '';
79
- const toolCallsInChoice = choice.message?.tool_calls ?? [];
80
- // If assistant returned text with no tool calls, we're done
81
- if (textContent && toolCallsInChoice.length === 0) {
36
+ const startedAt = Date.now();
37
+ let metricStatus = 'ok';
38
+ let metricUsage;
39
+ let metricProviderId;
40
+ let metricModelId;
41
+ try {
42
+ return await withAgentOSSpan('agentos.api.generate_text', async (span) => {
43
+ const { providerId, modelId } = resolveModelOption(opts, 'text');
44
+ const resolved = resolveProvider(providerId, modelId, { apiKey: opts.apiKey, baseUrl: opts.baseUrl });
45
+ const manager = await createProviderManager(resolved);
46
+ metricProviderId = resolved.providerId;
47
+ metricModelId = resolved.modelId;
48
+ const provider = manager.getProvider(resolved.providerId);
49
+ if (!provider)
50
+ throw new Error(`Provider ${resolved.providerId} not available.`);
51
+ span?.setAttribute('llm.provider', resolved.providerId);
52
+ span?.setAttribute('llm.model', resolved.modelId);
53
+ // Build messages
54
+ const messages = [];
55
+ if (opts.system)
56
+ messages.push({ role: 'system', content: opts.system });
57
+ if (opts.messages) {
58
+ for (const m of opts.messages)
59
+ messages.push({ role: m.role, content: m.content });
60
+ }
61
+ if (opts.prompt)
62
+ messages.push({ role: 'user', content: opts.prompt });
63
+ const tools = adaptTools(opts.tools);
64
+ const toolMap = new Map();
65
+ for (const t of tools)
66
+ toolMap.set(t.name, t);
67
+ span?.setAttribute('agentos.api.tool_count', tools.length);
68
+ const toolSchemas = tools.length > 0
69
+ ? tools.map(t => ({
70
+ type: 'function',
71
+ function: { name: t.name, description: t.description, parameters: t.inputSchema },
72
+ }))
73
+ : undefined;
74
+ const allToolCalls = [];
75
+ const totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
76
+ const maxSteps = opts.maxSteps ?? 1;
77
+ span?.setAttribute('agentos.api.max_steps', maxSteps);
78
+ for (let step = 0; step < maxSteps; step++) {
79
+ const response = await withAgentOSSpan('agentos.api.generate_text.step', async (stepSpan) => {
80
+ stepSpan?.setAttribute('llm.provider', resolved.providerId);
81
+ stepSpan?.setAttribute('llm.model', resolved.modelId);
82
+ stepSpan?.setAttribute('agentos.api.step', step + 1);
83
+ stepSpan?.setAttribute('agentos.api.tool_count', tools.length);
84
+ const stepResponse = await provider.generateCompletion(resolved.modelId, messages, {
85
+ tools: toolSchemas,
86
+ temperature: opts.temperature,
87
+ maxTokens: opts.maxTokens,
88
+ });
89
+ attachUsageAttributes(stepSpan, {
90
+ promptTokens: stepResponse.usage?.promptTokens,
91
+ completionTokens: stepResponse.usage?.completionTokens,
92
+ totalTokens: stepResponse.usage?.totalTokens,
93
+ costUSD: stepResponse.usage?.costUSD,
94
+ });
95
+ return stepResponse;
96
+ });
97
+ if (response.usage) {
98
+ totalUsage.promptTokens += response.usage.promptTokens ?? 0;
99
+ totalUsage.completionTokens += response.usage.completionTokens ?? 0;
100
+ totalUsage.totalTokens += response.usage.totalTokens ?? 0;
101
+ if (typeof response.usage.costUSD === 'number') {
102
+ totalUsage.costUSD = (totalUsage.costUSD ?? 0) + response.usage.costUSD;
103
+ }
104
+ }
105
+ const choice = response.choices?.[0];
106
+ if (!choice)
107
+ break;
108
+ const content = choice.message?.content;
109
+ const textContent = typeof content === 'string' ? content : content?.text ?? '';
110
+ const toolCallsInChoice = choice.message?.tool_calls ?? [];
111
+ if (textContent && toolCallsInChoice.length === 0) {
112
+ metricUsage = totalUsage;
113
+ span?.setAttribute('agentos.api.finish_reason', choice.finishReason ?? 'stop');
114
+ span?.setAttribute('agentos.api.tool_calls', allToolCalls.length);
115
+ attachUsageAttributes(span, totalUsage);
116
+ return {
117
+ provider: resolved.providerId,
118
+ model: resolved.modelId,
119
+ text: textContent,
120
+ usage: totalUsage,
121
+ toolCalls: allToolCalls,
122
+ finishReason: (choice.finishReason ?? 'stop'),
123
+ };
124
+ }
125
+ if (toolCallsInChoice.length > 0) {
126
+ messages.push({
127
+ role: 'assistant',
128
+ content: textContent || null,
129
+ tool_calls: toolCallsInChoice,
130
+ });
131
+ for (const tc of toolCallsInChoice) {
132
+ const fnName = tc.function?.name ?? tc.name ?? '';
133
+ const fnArgs = tc.function?.arguments ?? '{}';
134
+ const tcId = tc.id ?? '';
135
+ const tool = toolMap.get(fnName);
136
+ const record = {
137
+ name: fnName,
138
+ args: JSON.parse(typeof fnArgs === 'string' ? fnArgs : JSON.stringify(fnArgs)),
139
+ };
140
+ if (tool) {
141
+ try {
142
+ const result = await tool.execute(record.args, {});
143
+ record.result = result.output;
144
+ record.error = result.success ? undefined : result.error;
145
+ messages.push({
146
+ role: 'tool',
147
+ tool_call_id: tcId,
148
+ content: JSON.stringify(result.output ?? result.error ?? ''),
149
+ });
150
+ }
151
+ catch (err) {
152
+ record.error = err?.message;
153
+ messages.push({ role: 'tool', tool_call_id: tcId, content: JSON.stringify({ error: err?.message }) });
154
+ }
155
+ }
156
+ allToolCalls.push(record);
157
+ }
158
+ continue;
159
+ }
160
+ metricUsage = totalUsage;
161
+ span?.setAttribute('agentos.api.finish_reason', choice.finishReason ?? 'stop');
162
+ span?.setAttribute('agentos.api.tool_calls', allToolCalls.length);
163
+ attachUsageAttributes(span, totalUsage);
164
+ return {
165
+ provider: resolved.providerId,
166
+ model: resolved.modelId,
167
+ text: textContent,
168
+ usage: totalUsage,
169
+ toolCalls: allToolCalls,
170
+ finishReason: (choice.finishReason ?? 'stop'),
171
+ };
172
+ }
173
+ const lastAssistant = messages.filter(m => m.role === 'assistant').pop();
174
+ metricUsage = totalUsage;
175
+ span?.setAttribute('agentos.api.finish_reason', 'tool-calls');
176
+ span?.setAttribute('agentos.api.tool_calls', allToolCalls.length);
177
+ attachUsageAttributes(span, totalUsage);
82
178
  return {
83
- text: textContent,
179
+ provider: resolved.providerId,
180
+ model: resolved.modelId,
181
+ text: lastAssistant?.content ?? '',
84
182
  usage: totalUsage,
85
183
  toolCalls: allToolCalls,
86
- finishReason: (choice.finishReason ?? 'stop'),
184
+ finishReason: 'tool-calls',
87
185
  };
88
- }
89
- // Tool calls
90
- if (toolCallsInChoice.length > 0) {
91
- messages.push({
92
- role: 'assistant',
93
- content: textContent || null,
94
- tool_calls: toolCallsInChoice,
186
+ });
187
+ }
188
+ catch (error) {
189
+ metricStatus = 'error';
190
+ throw error;
191
+ }
192
+ finally {
193
+ try {
194
+ await recordAgentOSUsage({
195
+ providerId: metricProviderId,
196
+ modelId: metricModelId,
197
+ usage: metricUsage,
198
+ options: {
199
+ ...opts.usageLedger,
200
+ source: opts.usageLedger?.source ?? 'generateText',
201
+ },
95
202
  });
96
- for (const tc of toolCallsInChoice) {
97
- const fnName = tc.function?.name ?? tc.name ?? '';
98
- const fnArgs = tc.function?.arguments ?? '{}';
99
- const tcId = tc.id ?? '';
100
- const tool = toolMap.get(fnName);
101
- const record = {
102
- name: fnName,
103
- args: JSON.parse(typeof fnArgs === 'string' ? fnArgs : JSON.stringify(fnArgs)),
104
- };
105
- if (tool) {
106
- try {
107
- const result = await tool.execute(record.args, {});
108
- record.result = result.output;
109
- record.error = result.success ? undefined : result.error;
110
- messages.push({
111
- role: 'tool',
112
- tool_call_id: tcId,
113
- content: JSON.stringify(result.output ?? result.error ?? ''),
114
- });
115
- }
116
- catch (err) {
117
- record.error = err?.message;
118
- messages.push({ role: 'tool', tool_call_id: tcId, content: JSON.stringify({ error: err?.message }) });
119
- }
120
- }
121
- allToolCalls.push(record);
122
- }
123
- continue;
124
203
  }
125
- // No content and no tool calls — done
126
- return {
127
- text: textContent,
128
- usage: totalUsage,
129
- toolCalls: allToolCalls,
130
- finishReason: (choice.finishReason ?? 'stop'),
131
- };
204
+ catch {
205
+ // Helper-level usage persistence is best-effort and should not break generation.
206
+ }
207
+ recordAgentOSTurnMetrics({
208
+ durationMs: Date.now() - startedAt,
209
+ status: metricStatus,
210
+ usage: toTurnMetricUsage(metricUsage),
211
+ });
132
212
  }
133
- // Exhausted maxSteps — return last state
134
- const lastAssistant = messages.filter(m => m.role === 'assistant').pop();
135
- return {
136
- text: lastAssistant?.content ?? '',
137
- usage: totalUsage,
138
- toolCalls: allToolCalls,
139
- finishReason: 'tool-calls',
140
- };
141
213
  }
142
214
  //# sourceMappingURL=generateText.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateText.js","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateText.js","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Span } from '@opentelemetry/api';
2
+ export interface ApiUsageLike {
3
+ promptTokens?: number;
4
+ completionTokens?: number;
5
+ totalTokens?: number;
6
+ costUSD?: number;
7
+ totalCostUSD?: number;
8
+ }
9
+ export declare function attachUsageAttributes(span: Span | null, usage?: ApiUsageLike | null): void;
10
+ export declare function toTurnMetricUsage(usage?: ApiUsageLike | null): {
11
+ totalTokens?: number;
12
+ promptTokens?: number;
13
+ completionTokens?: number;
14
+ totalCostUSD?: number;
15
+ } | undefined;
16
+ //# sourceMappingURL=observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../src/api/observability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAsB1F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,SAAS,CA4BZ"}
@@ -0,0 +1,46 @@
1
+ export function attachUsageAttributes(span, usage) {
2
+ if (!span || !usage)
3
+ return;
4
+ if (typeof usage.promptTokens === 'number') {
5
+ span.setAttribute('llm.usage.prompt_tokens', usage.promptTokens);
6
+ }
7
+ if (typeof usage.completionTokens === 'number') {
8
+ span.setAttribute('llm.usage.completion_tokens', usage.completionTokens);
9
+ }
10
+ if (typeof usage.totalTokens === 'number') {
11
+ span.setAttribute('llm.usage.total_tokens', usage.totalTokens);
12
+ }
13
+ const totalCostUSD = typeof usage.totalCostUSD === 'number'
14
+ ? usage.totalCostUSD
15
+ : typeof usage.costUSD === 'number'
16
+ ? usage.costUSD
17
+ : undefined;
18
+ if (typeof totalCostUSD === 'number') {
19
+ span.setAttribute('llm.usage.cost_usd', totalCostUSD);
20
+ }
21
+ }
22
+ export function toTurnMetricUsage(usage) {
23
+ if (!usage)
24
+ return undefined;
25
+ const totalTokens = typeof usage.totalTokens === 'number' ? usage.totalTokens : undefined;
26
+ const promptTokens = typeof usage.promptTokens === 'number' ? usage.promptTokens : undefined;
27
+ const completionTokens = typeof usage.completionTokens === 'number' ? usage.completionTokens : undefined;
28
+ const totalCostUSD = typeof usage.totalCostUSD === 'number'
29
+ ? usage.totalCostUSD
30
+ : typeof usage.costUSD === 'number'
31
+ ? usage.costUSD
32
+ : undefined;
33
+ if (totalTokens === undefined
34
+ && promptTokens === undefined
35
+ && completionTokens === undefined
36
+ && totalCostUSD === undefined) {
37
+ return undefined;
38
+ }
39
+ return {
40
+ totalTokens,
41
+ promptTokens,
42
+ completionTokens,
43
+ totalCostUSD,
44
+ };
45
+ }
46
+ //# sourceMappingURL=observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../src/api/observability.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,qBAAqB,CAAC,IAAiB,EAAE,KAA2B;IAClF,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO;IAE5B,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,YAAY,GAChB,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACpC,CAAC,CAAC,KAAK,CAAC,YAAY;QACpB,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YACjC,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,SAAS,CAAC;IAClB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA2B;IAM3D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,MAAM,gBAAgB,GAAG,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,MAAM,YAAY,GAChB,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACpC,CAAC,CAAC,KAAK,CAAC,YAAY;QACpB,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YACjC,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,SAAS,CAAC;IAElB,IACE,WAAW,KAAK,SAAS;WACtB,YAAY,KAAK,SAAS;WAC1B,gBAAgB,KAAK,SAAS;WAC9B,YAAY,KAAK,SAAS,EAC7B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,WAAW;QACX,YAAY;QACZ,gBAAgB;QAChB,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"streamText.d.ts","sourceRoot":"","sources":["../../src/api/streamText.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIzF;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,yEAAyE;IACzE,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACtC,iFAAiF;IACjF,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3B,yFAAyF;IACzF,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CA2NtE"}
1
+ {"version":3,"file":"streamText.d.ts","sourceRoot":"","sources":["../../src/api/streamText.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMzF;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,yEAAyE;IACzE,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACtC,iFAAiF;IACjF,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3B,yFAAyF;IACzF,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CA4RtE"}