@exellix/ai-skills 5.8.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.
Files changed (251) hide show
  1. package/README.md +600 -0
  2. package/dist/analysis/analyze-skill-request.d.ts +12 -0
  3. package/dist/analysis/analyze-skill-request.d.ts.map +1 -0
  4. package/dist/analysis/analyze-skill-request.js +201 -0
  5. package/dist/analysis/analyze-skill-request.js.map +1 -0
  6. package/dist/analysis/build-skill-request-analysis-packet.d.ts +14 -0
  7. package/dist/analysis/build-skill-request-analysis-packet.d.ts.map +1 -0
  8. package/dist/analysis/build-skill-request-analysis-packet.js +106 -0
  9. package/dist/analysis/build-skill-request-analysis-packet.js.map +1 -0
  10. package/dist/analysis/collect-deterministic-findings.d.ts +14 -0
  11. package/dist/analysis/collect-deterministic-findings.d.ts.map +1 -0
  12. package/dist/analysis/collect-deterministic-findings.js +221 -0
  13. package/dist/analysis/collect-deterministic-findings.js.map +1 -0
  14. package/dist/analysis/constants.d.ts +5 -0
  15. package/dist/analysis/constants.d.ts.map +1 -0
  16. package/dist/analysis/constants.js +5 -0
  17. package/dist/analysis/constants.js.map +1 -0
  18. package/dist/analysis/format-skill-request-analysis-markdown.d.ts +8 -0
  19. package/dist/analysis/format-skill-request-analysis-markdown.d.ts.map +1 -0
  20. package/dist/analysis/format-skill-request-analysis-markdown.js +121 -0
  21. package/dist/analysis/format-skill-request-analysis-markdown.js.map +1 -0
  22. package/dist/analysis/path-utils.d.ts +11 -0
  23. package/dist/analysis/path-utils.d.ts.map +1 -0
  24. package/dist/analysis/path-utils.js +69 -0
  25. package/dist/analysis/path-utils.js.map +1 -0
  26. package/dist/analysis/sanitize-for-packet.d.ts +28 -0
  27. package/dist/analysis/sanitize-for-packet.d.ts.map +1 -0
  28. package/dist/analysis/sanitize-for-packet.js +107 -0
  29. package/dist/analysis/sanitize-for-packet.js.map +1 -0
  30. package/dist/analysis/types.d.ts +139 -0
  31. package/dist/analysis/types.d.ts.map +1 -0
  32. package/dist/analysis/types.js +2 -0
  33. package/dist/analysis/types.js.map +1 -0
  34. package/dist/catalog/canonical-skill-key.d.ts +5 -0
  35. package/dist/catalog/canonical-skill-key.d.ts.map +1 -0
  36. package/dist/catalog/canonical-skill-key.js +16 -0
  37. package/dist/catalog/canonical-skill-key.js.map +1 -0
  38. package/dist/catalog/constants.d.ts +7 -0
  39. package/dist/catalog/constants.d.ts.map +1 -0
  40. package/dist/catalog/constants.js +7 -0
  41. package/dist/catalog/constants.js.map +1 -0
  42. package/dist/catalog/env.d.ts +4 -0
  43. package/dist/catalog/env.d.ts.map +1 -0
  44. package/dist/catalog/env.js +15 -0
  45. package/dist/catalog/env.js.map +1 -0
  46. package/dist/catalog/gateway-template.d.ts +6 -0
  47. package/dist/catalog/gateway-template.d.ts.map +1 -0
  48. package/dist/catalog/gateway-template.js +15 -0
  49. package/dist/catalog/gateway-template.js.map +1 -0
  50. package/dist/catalog/index.d.ts +3 -0
  51. package/dist/catalog/index.d.ts.map +1 -0
  52. package/dist/catalog/index.js +3 -0
  53. package/dist/catalog/index.js.map +1 -0
  54. package/dist/catalog/seed.d.ts +12 -0
  55. package/dist/catalog/seed.d.ts.map +1 -0
  56. package/dist/catalog/seed.js +45 -0
  57. package/dist/catalog/seed.js.map +1 -0
  58. package/dist/catalog/skill-catalog.d.ts +28 -0
  59. package/dist/catalog/skill-catalog.d.ts.map +1 -0
  60. package/dist/catalog/skill-catalog.js +139 -0
  61. package/dist/catalog/skill-catalog.js.map +1 -0
  62. package/dist/catalog/store-factory.d.ts +18 -0
  63. package/dist/catalog/store-factory.d.ts.map +1 -0
  64. package/dist/catalog/store-factory.js +36 -0
  65. package/dist/catalog/store-factory.js.map +1 -0
  66. package/dist/catalog/types.d.ts +61 -0
  67. package/dist/catalog/types.d.ts.map +1 -0
  68. package/dist/catalog/types.js +22 -0
  69. package/dist/catalog/types.js.map +1 -0
  70. package/dist/catalox/ai-engines-catalog.d.ts +24 -0
  71. package/dist/catalox/ai-engines-catalog.d.ts.map +1 -0
  72. package/dist/catalox/ai-engines-catalog.js +89 -0
  73. package/dist/catalox/ai-engines-catalog.js.map +1 -0
  74. package/dist/catalox/ai-skills-catalog.d.ts +32 -0
  75. package/dist/catalox/ai-skills-catalog.d.ts.map +1 -0
  76. package/dist/catalox/ai-skills-catalog.js +202 -0
  77. package/dist/catalox/ai-skills-catalog.js.map +1 -0
  78. package/dist/catalox/catalox-skill-errors.d.ts +15 -0
  79. package/dist/catalox/catalox-skill-errors.d.ts.map +1 -0
  80. package/dist/catalox/catalox-skill-errors.js +29 -0
  81. package/dist/catalox/catalox-skill-errors.js.map +1 -0
  82. package/dist/catalox/index.d.ts +10 -0
  83. package/dist/catalox/index.d.ts.map +1 -0
  84. package/dist/catalox/index.js +10 -0
  85. package/dist/catalox/index.js.map +1 -0
  86. package/dist/catalox/init-firebase-and-catalox.d.ts +8 -0
  87. package/dist/catalox/init-firebase-and-catalox.d.ts.map +1 -0
  88. package/dist/catalox/init-firebase-and-catalox.js +48 -0
  89. package/dist/catalox/init-firebase-and-catalox.js.map +1 -0
  90. package/dist/catalox/list-ai-skills-catalog.d.ts +24 -0
  91. package/dist/catalox/list-ai-skills-catalog.d.ts.map +1 -0
  92. package/dist/catalox/list-ai-skills-catalog.js +38 -0
  93. package/dist/catalox/list-ai-skills-catalog.js.map +1 -0
  94. package/dist/catalox/skill-gateway-template-utils.d.ts +11 -0
  95. package/dist/catalox/skill-gateway-template-utils.d.ts.map +1 -0
  96. package/dist/catalox/skill-gateway-template-utils.js +31 -0
  97. package/dist/catalox/skill-gateway-template-utils.js.map +1 -0
  98. package/dist/catalox/skill-template-catalog-mutations.d.ts +143 -0
  99. package/dist/catalox/skill-template-catalog-mutations.d.ts.map +1 -0
  100. package/dist/catalox/skill-template-catalog-mutations.js +470 -0
  101. package/dist/catalox/skill-template-catalog-mutations.js.map +1 -0
  102. package/dist/catalox/skill-template-markdown.d.ts +34 -0
  103. package/dist/catalox/skill-template-markdown.d.ts.map +1 -0
  104. package/dist/catalox/skill-template-markdown.js +106 -0
  105. package/dist/catalox/skill-template-markdown.js.map +1 -0
  106. package/dist/catalox/skill-templates.d.ts +72 -0
  107. package/dist/catalox/skill-templates.d.ts.map +1 -0
  108. package/dist/catalox/skill-templates.js +80 -0
  109. package/dist/catalox/skill-templates.js.map +1 -0
  110. package/dist/client/audit-manager.d.ts +27 -0
  111. package/dist/client/audit-manager.d.ts.map +1 -0
  112. package/dist/client/audit-manager.js +260 -0
  113. package/dist/client/audit-manager.js.map +1 -0
  114. package/dist/client/base-client.d.ts +19 -0
  115. package/dist/client/base-client.d.ts.map +1 -0
  116. package/dist/client/base-client.js +20 -0
  117. package/dist/client/base-client.js.map +1 -0
  118. package/dist/client/build-gateway-invoke-request.d.ts +32 -0
  119. package/dist/client/build-gateway-invoke-request.d.ts.map +1 -0
  120. package/dist/client/build-gateway-invoke-request.js +135 -0
  121. package/dist/client/build-gateway-invoke-request.js.map +1 -0
  122. package/dist/client/invoke-skill-via-funcx.d.ts +11 -0
  123. package/dist/client/invoke-skill-via-funcx.d.ts.map +1 -0
  124. package/dist/client/invoke-skill-via-funcx.js +51 -0
  125. package/dist/client/invoke-skill-via-funcx.js.map +1 -0
  126. package/dist/client/registry-manager.d.ts +94 -0
  127. package/dist/client/registry-manager.d.ts.map +1 -0
  128. package/dist/client/registry-manager.js +287 -0
  129. package/dist/client/registry-manager.js.map +1 -0
  130. package/dist/client/skill-executor.d.ts +35 -0
  131. package/dist/client/skill-executor.d.ts.map +1 -0
  132. package/dist/client/skill-executor.js +316 -0
  133. package/dist/client/skill-executor.js.map +1 -0
  134. package/dist/client/task-executor.d.ts +21 -0
  135. package/dist/client/task-executor.d.ts.map +1 -0
  136. package/dist/client/task-executor.js +50 -0
  137. package/dist/client/task-executor.js.map +1 -0
  138. package/dist/client.d.ts +116 -0
  139. package/dist/client.d.ts.map +1 -0
  140. package/dist/client.js +406 -0
  141. package/dist/client.js.map +1 -0
  142. package/dist/diagnostics/gateway-usage.d.ts +3 -0
  143. package/dist/diagnostics/gateway-usage.d.ts.map +1 -0
  144. package/dist/diagnostics/gateway-usage.js +26 -0
  145. package/dist/diagnostics/gateway-usage.js.map +1 -0
  146. package/dist/diagnostics/map-gateway-trace.d.ts +43 -0
  147. package/dist/diagnostics/map-gateway-trace.d.ts.map +1 -0
  148. package/dist/diagnostics/map-gateway-trace.js +243 -0
  149. package/dist/diagnostics/map-gateway-trace.js.map +1 -0
  150. package/dist/diagnostics/trace-mode.d.ts +9 -0
  151. package/dist/diagnostics/trace-mode.d.ts.map +1 -0
  152. package/dist/diagnostics/trace-mode.js +8 -0
  153. package/dist/diagnostics/trace-mode.js.map +1 -0
  154. package/dist/index.d.ts +34 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +28 -0
  157. package/dist/index.js.map +1 -0
  158. package/dist/metadata.d.ts +7 -0
  159. package/dist/metadata.d.ts.map +1 -0
  160. package/dist/metadata.js +65 -0
  161. package/dist/metadata.js.map +1 -0
  162. package/dist/parsers/context-parser.d.ts +2 -0
  163. package/dist/parsers/context-parser.d.ts.map +1 -0
  164. package/dist/parsers/context-parser.js +5 -0
  165. package/dist/parsers/context-parser.js.map +1 -0
  166. package/dist/parsers/input-parser.d.ts +2 -0
  167. package/dist/parsers/input-parser.d.ts.map +1 -0
  168. package/dist/parsers/input-parser.js +5 -0
  169. package/dist/parsers/input-parser.js.map +1 -0
  170. package/dist/runtime-objects.d.ts +11 -0
  171. package/dist/runtime-objects.d.ts.map +1 -0
  172. package/dist/runtime-objects.js +21 -0
  173. package/dist/runtime-objects.js.map +1 -0
  174. package/dist/skill-execution-trace-error.d.ts +20 -0
  175. package/dist/skill-execution-trace-error.d.ts.map +1 -0
  176. package/dist/skill-execution-trace-error.js +21 -0
  177. package/dist/skill-execution-trace-error.js.map +1 -0
  178. package/dist/types.d.ts +534 -0
  179. package/dist/types.d.ts.map +1 -0
  180. package/dist/types.js +2 -0
  181. package/dist/types.js.map +1 -0
  182. package/dist/utils/build-activix-billing-patch.d.ts +24 -0
  183. package/dist/utils/build-activix-billing-patch.d.ts.map +1 -0
  184. package/dist/utils/build-activix-billing-patch.js +70 -0
  185. package/dist/utils/build-activix-billing-patch.js.map +1 -0
  186. package/dist/utils/enrich-activix-identity.d.ts +30 -0
  187. package/dist/utils/enrich-activix-identity.d.ts.map +1 -0
  188. package/dist/utils/enrich-activix-identity.js +34 -0
  189. package/dist/utils/enrich-activix-identity.js.map +1 -0
  190. package/dist/utils/exellix-skills-logxer-defaults.d.ts +16 -0
  191. package/dist/utils/exellix-skills-logxer-defaults.d.ts.map +1 -0
  192. package/dist/utils/exellix-skills-logxer-defaults.js +37 -0
  193. package/dist/utils/exellix-skills-logxer-defaults.js.map +1 -0
  194. package/dist/utils/flex-md-parser.d.ts +23 -0
  195. package/dist/utils/flex-md-parser.d.ts.map +1 -0
  196. package/dist/utils/flex-md-parser.js +98 -0
  197. package/dist/utils/flex-md-parser.js.map +1 -0
  198. package/dist/utils/gateway-execution-summary.d.ts +18 -0
  199. package/dist/utils/gateway-execution-summary.d.ts.map +1 -0
  200. package/dist/utils/gateway-execution-summary.js +42 -0
  201. package/dist/utils/gateway-execution-summary.js.map +1 -0
  202. package/dist/utils/gateway-invoke-rejection.d.ts +9 -0
  203. package/dist/utils/gateway-invoke-rejection.d.ts.map +1 -0
  204. package/dist/utils/gateway-invoke-rejection.js +28 -0
  205. package/dist/utils/gateway-invoke-rejection.js.map +1 -0
  206. package/dist/utils/normalize-billing-metadata.d.ts +17 -0
  207. package/dist/utils/normalize-billing-metadata.d.ts.map +1 -0
  208. package/dist/utils/normalize-billing-metadata.js +75 -0
  209. package/dist/utils/normalize-billing-metadata.js.map +1 -0
  210. package/dist/utils/normalize-output-parsed.d.ts +25 -0
  211. package/dist/utils/normalize-output-parsed.d.ts.map +1 -0
  212. package/dist/utils/normalize-output-parsed.js +128 -0
  213. package/dist/utils/normalize-output-parsed.js.map +1 -0
  214. package/dist/utils/patch-activix-activity-after-skill.d.ts +19 -0
  215. package/dist/utils/patch-activix-activity-after-skill.d.ts.map +1 -0
  216. package/dist/utils/patch-activix-activity-after-skill.js +81 -0
  217. package/dist/utils/patch-activix-activity-after-skill.js.map +1 -0
  218. package/dist/utils/rendrix-render-skill-templates.d.ts +14 -0
  219. package/dist/utils/rendrix-render-skill-templates.d.ts.map +1 -0
  220. package/dist/utils/rendrix-render-skill-templates.js +25 -0
  221. package/dist/utils/rendrix-render-skill-templates.js.map +1 -0
  222. package/dist/utils/resolve-activity-id.d.ts +9 -0
  223. package/dist/utils/resolve-activity-id.d.ts.map +1 -0
  224. package/dist/utils/resolve-activity-id.js +27 -0
  225. package/dist/utils/resolve-activity-id.js.map +1 -0
  226. package/dist/utils/resolve-gateway-job-task-ids.d.ts +19 -0
  227. package/dist/utils/resolve-gateway-job-task-ids.d.ts.map +1 -0
  228. package/dist/utils/resolve-gateway-job-task-ids.js +21 -0
  229. package/dist/utils/resolve-gateway-job-task-ids.js.map +1 -0
  230. package/dist/utils/resolve-identity.d.ts +12 -0
  231. package/dist/utils/resolve-identity.d.ts.map +1 -0
  232. package/dist/utils/resolve-identity.js +36 -0
  233. package/dist/utils/resolve-identity.js.map +1 -0
  234. package/dist/utils/resolve-run-skill-ai-engine.d.ts +8 -0
  235. package/dist/utils/resolve-run-skill-ai-engine.d.ts.map +1 -0
  236. package/dist/utils/resolve-run-skill-ai-engine.js +20 -0
  237. package/dist/utils/resolve-run-skill-ai-engine.js.map +1 -0
  238. package/dist/utils/run-skill-request.d.ts +11 -0
  239. package/dist/utils/run-skill-request.d.ts.map +1 -0
  240. package/dist/utils/run-skill-request.js +44 -0
  241. package/dist/utils/run-skill-request.js.map +1 -0
  242. package/dist/utils/validate-mandatory-activix-invoke-fields.d.ts +7 -0
  243. package/dist/utils/validate-mandatory-activix-invoke-fields.d.ts.map +1 -0
  244. package/dist/utils/validate-mandatory-activix-invoke-fields.js +16 -0
  245. package/dist/utils/validate-mandatory-activix-invoke-fields.js.map +1 -0
  246. package/dist/utils/validate-session-id.d.ts +6 -0
  247. package/dist/utils/validate-session-id.d.ts.map +1 -0
  248. package/dist/utils/validate-session-id.js +18 -0
  249. package/dist/utils/validate-session-id.js.map +1 -0
  250. package/erc-manifest.json +11 -0
  251. package/package.json +76 -0
@@ -0,0 +1,534 @@
1
+ import type { AIGateway, GatewayInvokeRejectionMetadata, SmartInputConfig, SmartInputRenderOptions, TemplateRenderOptions } from "@x12i/ai-gateway";
2
+ import { JobHistory, TaskHistory } from "@x12i/execution-memory-manager";
3
+ import type { Catalox } from "@x12i/catalox";
4
+ import type { RuntimeIdentity } from "@x12i/logxer";
5
+ import type { AiEngineCatalogItemId } from "./catalox/ai-engines-catalog.js";
6
+ import type { OutputContract } from "./utils/normalize-output-parsed.js";
7
+ export type { AiEngineCatalogItemId };
8
+ export type { SmartInputConfig, SmartInputRenderOptions, TemplateRenderOptions } from "@x12i/ai-gateway";
9
+ /**
10
+ * Graph-engine / ai-tasks execution-scoped template buckets (graph-engine 5.13+ compile contract).
11
+ * Job scope: {@link SkillExecutionMemory.jobVariables} (also mirrored in {@link RunSkillRequest.variables}).
12
+ * Node scope: {@link SkillExecutionMemory.taskVariables} only — never folded into `variables`.
13
+ */
14
+ export interface SkillExecutionMemory {
15
+ jobVariables?: Record<string, unknown>;
16
+ taskVariables?: Record<string, unknown>;
17
+ }
18
+ /**
19
+ * Mirrors `@x12i/ai-gateway` invoke `diagnostics` shape (the gateway tarball types include it but the package root does not re-export it).
20
+ */
21
+ export type GatewayInvokeDiagnosticsMode = "none" | "trace";
22
+ export interface GatewayInvokeDiagnosticsOptions {
23
+ mode?: GatewayInvokeDiagnosticsMode;
24
+ /** When true, implementations must size-cap any raw payload included. */
25
+ includeRawProviderPayload?: boolean;
26
+ /** When false, Activix activity completion may omit large provider blobs. */
27
+ includeFullProviderResponseInActivity?: boolean;
28
+ /** Max serialized length for `fullResponse` on activity records when included. */
29
+ activityFullResponseMaxChars?: number;
30
+ }
31
+ export type { RuntimeIdentity };
32
+ /**
33
+ * Matches gateway `templateTokens`: highest-priority values merged into short-term memory before render.
34
+ */
35
+ export type GatewayTemplateTokens = {
36
+ [key: string]: string | number | boolean | object | object[];
37
+ };
38
+ /**
39
+ * Short skill id matching Catalox native catalog `data.skillKey` for app `ai-skills`.
40
+ * Prefer {@link listAiSkillsCatalogItems} (or your own Catalox query) for the authoritative list.
41
+ */
42
+ export type CatalogSkillKey = string;
43
+ export interface SkillMetadata {
44
+ id: CatalogSkillKey;
45
+ version: string;
46
+ type: "primary";
47
+ outputType: string;
48
+ requiredVariables: string[];
49
+ optionalVariables: string[];
50
+ outputSchema: Record<string, any>;
51
+ }
52
+ /**
53
+ * Model configuration for skill execution.
54
+ *
55
+ * Controls which model is used and how it generates responses.
56
+ * This configuration is passed through to the gateway for model selection and parameter control.
57
+ */
58
+ export interface ModelConfig {
59
+ /**
60
+ * Model identifier (e.g., "gpt-4-turbo", "claude-3-opus", "gpt-3.5-turbo")
61
+ * If not specified, uses gateway/router default
62
+ */
63
+ model?: string;
64
+ /**
65
+ * Model ID (alternative to model name, for provider-specific model IDs)
66
+ */
67
+ modelId?: string;
68
+ /**
69
+ * Provider name (e.g., "openai", "anthropic")
70
+ * If not specified, uses client default provider
71
+ */
72
+ provider?: string;
73
+ /**
74
+ * Temperature for generation (0.0 to 2.0)
75
+ * Controls randomness in responses
76
+ */
77
+ temperature?: number;
78
+ /**
79
+ * Maximum tokens to generate
80
+ */
81
+ maxTokens?: number;
82
+ /**
83
+ * Top-p (nucleus) sampling parameter (0.0 to 1.0)
84
+ */
85
+ topP?: number;
86
+ /**
87
+ * Frequency penalty (-2.0 to 2.0)
88
+ */
89
+ frequencyPenalty?: number;
90
+ /**
91
+ * Presence penalty (-2.0 to 2.0)
92
+ */
93
+ presencePenalty?: number;
94
+ /**
95
+ * Stop sequences (array of strings)
96
+ * Generation stops when any stop sequence is encountered
97
+ */
98
+ stop?: string[];
99
+ /**
100
+ * Additional provider-specific parameters
101
+ */
102
+ [key: string]: any;
103
+ }
104
+ /**
105
+ * Allowlisted slice from `@x12i/ai-gateway` **`metadata.effectiveModelConfig`** (≥9.1.1), produced by
106
+ * **`pickEffectiveModelConfigForMetadata(mergedConfig)`** — not a full merged config dump.
107
+ */
108
+ export type EffectiveModelConfigSlice = Partial<Pick<ModelConfig, "model" | "modelId" | "provider" | "temperature" | "maxTokens" | "topP">>;
109
+ /** Skill invocation diagnostics: default = no trace payload. */
110
+ export type ExecutionMode = "default" | "trace";
111
+ /**
112
+ * Per-request diagnostics switches. Trace payloads are only built when
113
+ * {@link RunSkillRequest.executionMode} is `"trace"` or {@link SkillDiagnosticsInputOptions.includeDebugTrace} is true.
114
+ */
115
+ export interface SkillDiagnosticsInputOptions {
116
+ /**
117
+ * Alternative to `executionMode: "trace"` (orchestrators may send either).
118
+ * When true, same effect as `executionMode: "trace"`.
119
+ */
120
+ includeDebugTrace?: boolean;
121
+ /**
122
+ * Separate opt-in for a small, size-capped raw provider payload snippet on the trace object.
123
+ * Default: no raw payload.
124
+ */
125
+ includeRawProviderPayload?: boolean;
126
+ }
127
+ /** Stable routing slice for a gateway/provider LLM call. */
128
+ export interface SkillTraceRouting {
129
+ provider: string;
130
+ region?: string;
131
+ retryCount: number;
132
+ fallbackCount?: number;
133
+ /** Stable keys for correlation (gateway vs provider request ids when available). */
134
+ requestIds: {
135
+ gatewayAiRequestId?: string;
136
+ routerRequestId?: string;
137
+ providerActivityRequestId?: string;
138
+ [key: string]: string | undefined;
139
+ };
140
+ }
141
+ /**
142
+ * Why USD `costUsd` is absent on {@link RunSkillResponse.metadata} when usage exists.
143
+ * Gateway ≥9.3 uses `metadata.costStatus: "priced" | "unpriced"`; this SDK maps `priced` → `costUsd` only.
144
+ */
145
+ export type SkillCostStatus = "unpriced" | "deferred";
146
+ /** Normalized usage for an LLM call. */
147
+ export interface SkillTraceUsage {
148
+ maxTokensRequested?: number;
149
+ tokensPrompt: number;
150
+ tokensCompletion: number;
151
+ tokensTotal: number;
152
+ cachedTokensPrompt?: number;
153
+ cachedTokensTotal?: number;
154
+ }
155
+ export interface SkillTraceStepIdentity {
156
+ /** e.g. `"main"` for the skill gateway call. */
157
+ phase: string;
158
+ /** e.g. `"runSkill"`, `"gatewayExecute"`. */
159
+ type: string;
160
+ /** Stable id, e.g. `skills:gateway`. */
161
+ stepId: string;
162
+ }
163
+ /** One ordered unit of work (retry, fallback chain hop, or single successful call). */
164
+ export interface SkillTraceAttempt {
165
+ step: SkillTraceStepIdentity;
166
+ timing: {
167
+ startedAt: string;
168
+ endedAt: string;
169
+ durationMs: number;
170
+ };
171
+ routing: SkillTraceRouting;
172
+ usage: SkillTraceUsage;
173
+ costUsd?: number;
174
+ /** Present when {@link costUsd} is absent but usage exists or gateway marked async pricing. */
175
+ costStatus?: SkillCostStatus;
176
+ /** Effective model after routing/defaults (empty string if unknown). */
177
+ modelUsed: string;
178
+ ok: boolean;
179
+ error?: {
180
+ name: string;
181
+ message: string;
182
+ };
183
+ }
184
+ /**
185
+ * Caller-supplied slice of the gateway `invoke` request reflected into traces (trace mode only).
186
+ * Lets operators see exactly what was forwarded (e.g. `modelConfig.maxTokens`, `temperature`) without the original request object.
187
+ */
188
+ export interface SkillDiagnosticsInvokeRequest {
189
+ /** Verbatim {@link RunSkillRequest.modelConfig} when set on the request. */
190
+ modelConfig?: ModelConfig;
191
+ /** Same as {@link RunSkillRequest.timeoutMs} when set (gateway `exec.timeoutMs`). */
192
+ timeoutMs?: number;
193
+ /** Gateway `invoke` classification (this SDK uses `skill` for {@link RunSkillRequest}). */
194
+ actionType?: "skill" | "preSkill" | "postSkill";
195
+ /** Same as {@link RunSkillRequest.skillKey} on `actionRef` for this client path. */
196
+ actionRef?: string;
197
+ /** Resolved {@link RunSkillRequest.aiEngineId} (always **`ai-gateway`** in this package). */
198
+ aiEngineId?: AiEngineCatalogItemId;
199
+ /** Echo {@link RunSkillRequest.smartInput} when set (gateway Rendrix shorthand). */
200
+ smartInput?: SmartInputConfig;
201
+ /** Echo {@link RunSkillRequest.smartInputRenderOptions} when set. */
202
+ smartInputRenderOptions?: SmartInputRenderOptions;
203
+ }
204
+ /**
205
+ * Structured trace for one gateway-backed skill execution.
206
+ * Present only when trace mode is enabled on the request.
207
+ */
208
+ export interface SkillDiagnosticsTrace {
209
+ step: SkillTraceStepIdentity;
210
+ timing: {
211
+ startedAt: string;
212
+ endedAt: string;
213
+ durationMs: number;
214
+ };
215
+ routing: SkillTraceRouting;
216
+ usage: SkillTraceUsage;
217
+ costUsd?: number;
218
+ costStatus?: SkillCostStatus;
219
+ modelUsed: string;
220
+ ok: boolean;
221
+ error?: {
222
+ name: string;
223
+ message: string;
224
+ };
225
+ /** Ordered attempts (retries, fallbacks); includes the successful unit last when applicable. */
226
+ attempts: SkillTraceAttempt[];
227
+ /**
228
+ * Alias of {@link SkillDiagnosticsTrace.attempts} for orchestrators mapping `debugTrace.tasks`.
229
+ * Same array reference as `attempts`.
230
+ */
231
+ tasks: SkillTraceAttempt[];
232
+ /** Present only when {@link SkillDiagnosticsInputOptions.includeRawProviderPayload} is true. */
233
+ rawProviderPayload?: string;
234
+ /** Echo of invoke-time args this SDK sent toward the gateway (when any are present). */
235
+ invokeRequest?: SkillDiagnosticsInvokeRequest;
236
+ /**
237
+ * When **`ok === false`**, normalized **`GatewayInvokeRejectionMetadata`** from the thrown gateway error
238
+ * (`@x12i/ai-gateway` ≥9.1.2), if present — same contract as **`(error as Error & { metadata?: ... }).metadata`**.
239
+ */
240
+ invokeRejection?: GatewayInvokeRejectionMetadata;
241
+ }
242
+ export interface RunSkillDiagnostics {
243
+ trace: SkillDiagnosticsTrace;
244
+ }
245
+ export interface RunSkillRequest {
246
+ /**
247
+ * Catalox **`ai-skills`** catalog path (e.g. `skills/professional-answer`). Used **only** in this SDK to
248
+ * load template bodies from Firestore and for logging / correlation. It is **not** sent to
249
+ * `gateway.invoke()` as `instructions` or `prompt`; those fields receive **full template text** from Catalox
250
+ * (after `ensureGatewayTreatsAsTemplateText`), never the skill key as a registry lookup token.
251
+ * **`AIGateway` does not and must not resolve skill keys** for this client; key handling stays here + Catalox.
252
+ */
253
+ skillKey: string;
254
+ /**
255
+ * Catalox **`ai-engines`** catalog item id (listed for discovery; only **`ai-gateway`** is supported).
256
+ * Omitted, blank, or **`ai-gateway`** → **`@x12i/ai-gateway`** `invoke` with inline Catalox templates (Rendrix in the gateway).
257
+ */
258
+ aiEngineId?: AiEngineCatalogItemId;
259
+ input: Record<string, any> | string;
260
+ /**
261
+ * **Runtime** correlation envelope for this invoke only (from your app / upstream at request time).
262
+ * This is **not** {@link ExellixSkillsClientOptions client constructor configuration}, not static
263
+ * package or deployment metadata, and not derived from `.env` unless **you** put those values here.
264
+ *
265
+ * **Naming vs Activix:** On `gateway.invoke()` the field is **`identity`** (see `@x12i/ai-gateway` `ActivityIdentity`).
266
+ * When activities are persisted, Activix v5+ stores the **same** envelope under BSON **`runContext`** — the gateway
267
+ * performs that mapping. Do **not** rename this property to `runContext` here; pass **`identity`** on requests and
268
+ * read **`identity`** (or resolved metadata) on responses unless downstream explicitly documents otherwise.
269
+ *
270
+ * **`{@link RunSkillRequest.agentId}`**, **`{@link RunSkillRequest.jobTypeId}`**, and **`{@link RunSkillRequest.taskTypeId}`**
271
+ * are mandatory on every {@link RunSkillRequest}; this SDK forwards them on `gateway.invoke` and merges them into `identity` for Activix.
272
+ * Activix-oriented: receive from upstream and forward; flat work-scope fields
273
+ * (`jobId`, `taskId`, `skillId`, graph ids, …) should accumulate and stay stable.
274
+ * **Correlation:** {@link jobId} and {@link taskId} are required on every {@link RunSkillRequest}; they are
275
+ * sent on the gateway invoke payload as top-level fields and **always** merged into `identity` so
276
+ * `@x12i/ai-gateway` v9+ can validate Activix linkage (`identity.jobId` / `identity.taskId` are authoritative there)
277
+ * and classifies each `invoke()` with mandatory **`actionType`** / **`actionRef`** (this SDK sends `skill` + {@link RunSkillRequest.skillKey}).
278
+ * Baseline for correlation is typically `sessionId` (see session-id contract); `instance`
279
+ * is optional. When you omit `identity`, this SDK still sends at least `{ jobId, taskId, agentId, jobTypeId, taskTypeId }`
280
+ * (plus gateway enrichment) to the gateway; when you pass `identity`, fields are shallow-merged with resolved
281
+ * `jobId` / `taskId` and mandatory linkage ids from the request winning. It may set
282
+ * `skillId` on the clone if absent—never mints `sessionId` or overwrites ids you supplied.
283
+ * Top-level {@link sessionId} must match `identity.sessionId` when both are set.
284
+ */
285
+ identity?: Record<string, any>;
286
+ /**
287
+ * **Runtime** logical run / session id for Activix and related correlation (upstream-owned).
288
+ * Forwarded as a top-level gateway field when set; never generated by this SDK.
289
+ * If `identity.sessionId` is also set, both values must agree.
290
+ */
291
+ sessionId?: string;
292
+ /**
293
+ * Job / graph-scope template variables from upstream compile (`RunTaskRequest.variables` passthrough).
294
+ * Rendrix paths `variables.*` resolve here only. Node-scope values belong in
295
+ * {@link executionMemory.taskVariables}, not this bag.
296
+ */
297
+ variables?: Record<string, any>;
298
+ /**
299
+ * Execution-scoped template buckets from graph-engine 5.13+ / ai-tasks `RunTaskRequest.executionMemory`.
300
+ * Merged into gateway `workingMemory` as a non-flattened root `{ executionMemory: … }`. Template paths
301
+ * `executionMemory.jobVariables.*` and `executionMemory.taskVariables.*` resolve here.
302
+ */
303
+ executionMemory?: SkillExecutionMemory;
304
+ context?: Record<string, any> | string;
305
+ knowledge?: Record<string, any>;
306
+ jobMemory?: JobHistory;
307
+ taskMemory?: TaskHistory;
308
+ /**
309
+ * Upstream job correlation id. Required on every invoke; forwarded as gateway top-level `jobId`
310
+ * for Activix (this SDK never generates a value when omitted or blank — use {@link identity} only
311
+ * if your pipeline already stores ids there; resolution for the gateway prefers these top-level fields).
312
+ */
313
+ jobId: string;
314
+ /**
315
+ * Upstream task correlation id within the job. Required on every invoke; forwarded as gateway
316
+ * top-level `taskId` for Activix. Never auto-generated here.
317
+ */
318
+ taskId: string;
319
+ /**
320
+ * Agent identifier for Activix / gateway top-level `agentId` (and gateway defaults for `identity.instance`).
321
+ * Mandatory on every invoke; forwarded verbatim from the upstream skills request — this SDK does **not**
322
+ * substitute a package or deployment id when omitted.
323
+ */
324
+ agentId: string;
325
+ skillId?: string;
326
+ masterSkillId?: string;
327
+ masterSkillActivityId?: string;
328
+ /**
329
+ * Graph execution context: Identifier for the graph execution context.
330
+ * Automatically mapped to identity.graphId in activity tracking.
331
+ * Alternative to masterSkillId for graph-based workflows.
332
+ */
333
+ graphId?: string;
334
+ /**
335
+ * Graph execution context: Identifier for the specific node being executed.
336
+ * Automatically mapped to identity.nodeId in activity tracking.
337
+ * Alternative to skillId or coreSkillId for graph-based workflows.
338
+ */
339
+ nodeId?: string;
340
+ /**
341
+ * Graph execution context: Alternative node identifier for graph execution.
342
+ * Automatically mapped to identity.nodeId in activity tracking.
343
+ * Priority: skillId > coreSkillId > nodeId
344
+ */
345
+ coreSkillId?: string;
346
+ /**
347
+ * Graph execution context: Previous node identifier for flow tracking.
348
+ * Automatically mapped to identity.prevNodeId in activity tracking.
349
+ * Used to track the execution flow between nodes in a graph.
350
+ */
351
+ prevNodeId?: string;
352
+ /**
353
+ * Graph execution context: Alternative field name for previous node identifier.
354
+ * Automatically mapped to identity.prevNodeId in activity tracking.
355
+ * Alias for {@link RunSkillRequest.prevNodeId}.
356
+ */
357
+ previousNodeId?: string;
358
+ timeoutMs?: number;
359
+ /**
360
+ * Forwarded **verbatim** on `gateway.invoke({ modelConfig })` when set (single object assignment—no field stripping).
361
+ * Use per call for dynamic values (e.g. `maxTokens`, `temperature`, `model`). Omitted fields are left to `@x12i/ai-gateway` / provider defaults.
362
+ */
363
+ modelConfig?: ModelConfig;
364
+ /**
365
+ * Per-invocation overrides for `@x12i/rendrix` (merged on gateway defaults). See {@link TemplateRenderOptions}.
366
+ */
367
+ templateRenderOptions?: TemplateRenderOptions;
368
+ /**
369
+ * Smart Input paths for Rendrix `{{smartInput}}` (gateway request shorthand).
370
+ * Merged after gateway `templateRendering` and before {@link RunSkillRequest.templateRenderOptions}; nested
371
+ * `templateRenderOptions.smartInput` wins when both are set (same as `@x12i/ai-gateway`).
372
+ */
373
+ smartInput?: SmartInputConfig;
374
+ /**
375
+ * Rendering controls for Smart Input markdown (gateway request shorthand).
376
+ * Merged the same way as {@link smartInput}; nested `templateRenderOptions.smartInputRenderOptions` wins when both are set.
377
+ */
378
+ smartInputRenderOptions?: SmartInputRenderOptions;
379
+ /**
380
+ * Optional tokens with highest overlay priority during template render (gateway merges into short-term memory).
381
+ */
382
+ templateTokens?: GatewayTemplateTokens;
383
+ /**
384
+ * When `"trace"`, the client may attach {@link RunSkillResponse.diagnostics} with structured LLM diagnostics.
385
+ * Default / omitted: same behavior and payload size as non-trace invokes (no trace object).
386
+ */
387
+ executionMode?: ExecutionMode;
388
+ /**
389
+ * Optional diagnostics flags (trace mode). See {@link SkillDiagnosticsInputOptions}.
390
+ * Controls **this SDK’s** structured {@link RunSkillResponse.diagnostics} / `debugTrace` payloads only.
391
+ */
392
+ diagnostics?: SkillDiagnosticsInputOptions;
393
+ /**
394
+ * Recurring job type id (gateway top-level `jobTypeId` and Activix `identity.jobTypeId` / runContext).
395
+ * Mandatory on every invoke; forwarded verbatim on `gateway.invoke`.
396
+ */
397
+ jobTypeId: string;
398
+ /**
399
+ * Recurring task type id (gateway top-level `taskTypeId` and Activix `identity.taskTypeId` / runContext).
400
+ * Mandatory on every invoke; forwarded verbatim on `gateway.invoke`.
401
+ */
402
+ taskTypeId: string;
403
+ /**
404
+ * Gateway agent classification (`agentType` on invoke); optional passthrough to `@x12i/ai-gateway`.
405
+ */
406
+ agentType?: "chat" | "ai-reasoner" | "ai-auditor" | "ai-scoper" | "ai-discovery" | "ai-planner" | "ai-executor";
407
+ /**
408
+ * Gateway-native diagnostics (storage / provider payload gates on the gateway).
409
+ * Distinct from {@link diagnostics}: when trace mode is on, this SDK merges defaults
410
+ * (`mode: 'trace'`, raw payload flag aligned with {@link SkillDiagnosticsInputOptions.includeRawProviderPayload})
411
+ * unless you override them here.
412
+ */
413
+ gatewayDiagnostics?: GatewayInvokeDiagnosticsOptions;
414
+ /**
415
+ * Graph / studio output contract: keys expected on `parsed` / `outer.output.parsed`
416
+ * (e.g. `shortAnswer`, `fullAnswer`). When set, this SDK fills missing keys from FlexMD payloads
417
+ * and markdown section headings before returning and patching the Activix activity row.
418
+ */
419
+ outputContract?: OutputContract;
420
+ }
421
+ export interface RunSkillResponse<TParsed = any> {
422
+ /** Same catalog path as the request’s {@link RunSkillRequest.skillKey}; for app correlation, not gateway template payload. */
423
+ skillKey: string;
424
+ rawText: string;
425
+ flexMd: {
426
+ frame: string;
427
+ payloads: Record<string, string>;
428
+ };
429
+ parsed: TParsed;
430
+ /**
431
+ * **Runtime** gateway/downstream correlation envelope after this invoke (if any)—the live
432
+ * **`identity`** object for chaining (Activix-persisted twin is **`runContext`** in stored records only).
433
+ * Prefer forwarding this whole object to later steps so `sessionId`, `instance`, and extensions stay aligned.
434
+ * Omitted when downstream does not supply it.
435
+ */
436
+ identity?: Record<string, any>;
437
+ metadata: {
438
+ /** Gateway / activity metadata when present—not the Catalox skill key used as `instructions`. */
439
+ instructionVersion?: string;
440
+ activityId?: string;
441
+ /** USD total when gateway metadata includes `cost` (same source as {@link SkillDiagnosticsTrace.costUsd}). */
442
+ costUsd?: number;
443
+ /**
444
+ * When usage exists but no price is available, `"unpriced"` (from gateway metadata or SDK fallback).
445
+ * Legacy/async: `"deferred"`. Gateway `costStatus: "priced"` is never echoed — use {@link costUsd} instead.
446
+ */
447
+ costStatus?: SkillCostStatus;
448
+ /** Token counts from gateway metadata (same normalization as {@link SkillDiagnosticsTrace.usage}). */
449
+ usage?: SkillTraceUsage;
450
+ /**
451
+ * Model id that served the response when router/gateway expose it (`metadata.modelUsed` preferred over `metadata.model`).
452
+ */
453
+ modelUsed?: string;
454
+ /** LLM provider/engine when router/gateway expose `metadata.provider`. */
455
+ provider?: string;
456
+ /** Effective max-token cap applied for this invoke when router/gateway expose `metadata.maxTokensRequested`. */
457
+ effectiveMaxTokens?: number;
458
+ /** Provider region hint when present on gateway metadata. */
459
+ region?: string;
460
+ /** Echo of {@link RunSkillRequest.modelConfig} when the caller supplied it (requested overlay, not merged defaults). */
461
+ requestedModelConfig?: ModelConfig;
462
+ /**
463
+ * Merged generation parameters applied by the gateway (`metadata.effectiveModelConfig`, ≥9.1.1).
464
+ * Same allowlist as upstream **`pickEffectiveModelConfigForMetadata`**. Older gateway metadata may expose **`mergedModelConfig`**; it is considered when populating this slice.
465
+ */
466
+ effectiveModelConfig?: EffectiveModelConfigSlice;
467
+ /** Echo of gateway `exec.timeoutMs` from {@link RunSkillRequest.timeoutMs} when set. */
468
+ invokeExec?: {
469
+ timeoutMs?: number;
470
+ };
471
+ };
472
+ /**
473
+ * Structured trace for the gateway LLM call. Omitted unless the request used trace mode.
474
+ */
475
+ diagnostics?: RunSkillDiagnostics;
476
+ /**
477
+ * Alias of `diagnostics.trace` for orchestrators (same object reference).
478
+ */
479
+ debugTrace?: SkillDiagnosticsTrace;
480
+ }
481
+ export interface ExellixSkillsClientOptions {
482
+ /**
483
+ * Catalox client used to load `instructionsText` / `promptText` from the native `ai-skills` catalog.
484
+ * Required for every construction path (including when passing an external `gateway`).
485
+ */
486
+ catalox: Catalox;
487
+ /** Overrides `appId` passed into Catalox for skill discovery (default: `ai-skills`). */
488
+ cataloxAppId?: string;
489
+ packageName?: string;
490
+ enableActivityTracking?: boolean;
491
+ gateway?: AIGateway;
492
+ /** Passed through to the gateway when you inject a custom `gateway` (not used for Catalox template loading). */
493
+ forceLocal?: boolean;
494
+ /** Force creation of root directory structure for local development */
495
+ forceCreateRootDirectory?: boolean;
496
+ /**
497
+ * Auto-load `.env` from the working directory via **`@x12i/env`** `loadDotenv` (default: true).
498
+ * Set to false if you want to control environment loading yourself.
499
+ */
500
+ autoLoadDotenv?: boolean;
501
+ /**
502
+ * Default `TemplateRenderOptions` for every `gateway.invoke()` from this client (merged with gateway packaged defaults).
503
+ * Per-request {@link RunSkillRequest.templateRenderOptions} merges on top.
504
+ */
505
+ templateRendering?: TemplateRenderOptions;
506
+ /**
507
+ * Test-mode lifecycle guardrails.
508
+ * When enabled, the client avoids starting long-lived infrastructure unless explicitly requested.
509
+ * Defaults to `true` when `NODE_ENV === "test"` and to `false` otherwise.
510
+ */
511
+ testMode?: boolean;
512
+ /**
513
+ * In test mode, disable gateway activity tracking by default to reduce open handles.
514
+ * Defaults to `true` in test mode.
515
+ */
516
+ disableActivityTrackingInTests?: boolean;
517
+ /**
518
+ * Shallow-merged into `@x12i/logxer` {@link LoggingConfig.runtimeIdentity} after library defaults
519
+ * (`service` from {@link packageName}, semver from this package, `env`, `host`, `pid`).
520
+ */
521
+ logxerRuntimeIdentity?: Partial<RuntimeIdentity>;
522
+ }
523
+ export type ExellixSkillsErrorCode = 'SKILL_NOT_FOUND' | 'MISSING_REQUIRED_VARIABLES' | 'GATEWAY_INVOKE_FAILED' | 'FLEXMD_PARSE_FAILED' | 'OUTPUT_SCHEMA_VALIDATION_FAILED' | 'CONFIG_ERROR';
524
+ /**
525
+ * Runtime Objects Observability Contract (expose-only)
526
+ *
527
+ * Packages may expose official, queryable Activix/Logxer clients for debug tooling.
528
+ * If a client does not implement the official query methods, the package must leave
529
+ * the field undefined (no local adapters).
530
+ *
531
+ * Shapes match `@x12i/ai-gateway` `runtime-objects` (re-exported here for a single import surface).
532
+ */
533
+ export type { ActivixQueryableClient, LogxerQueryableClient, PackageRuntimeObjects, RuntimeObjects, } from "@x12i/ai-gateway";
534
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import type { NormalizedSkillBilling } from "./normalize-billing-metadata.js";
2
+ /** Activix / gateway activity row billing status (distinct from SDK {@link SkillCostStatus}). */
3
+ export type ActivixRecordCostStatus = "priced" | "unpriced" | "deferred";
4
+ export type ActivixBillingPatchContext = {
5
+ provider?: string;
6
+ region?: string;
7
+ effectiveModelConfig?: Record<string, unknown>;
8
+ };
9
+ export type ActivixBillingPatch = {
10
+ /** Top-level Activix fields (`completeRecord` / `patchRecord`). */
11
+ topLevel: Record<string, unknown>;
12
+ /** Merged into `outer.metadata` (same slice as gateway `pickActivixCompletionRoutingMetadata`). */
13
+ outerMetadata: Record<string, unknown>;
14
+ /** Activix v7 `outer.cost` shape when priced. */
15
+ outerCost?: Record<string, unknown>;
16
+ /** Merged into `response.metadata` when a response object exists. */
17
+ responseMetadata: Record<string, unknown>;
18
+ };
19
+ /**
20
+ * Builds Activix patch fields for billing so persisted rows match gateway `logSuccess` / invoke metadata.
21
+ * SDK {@link RunSkillResponse.metadata} omits `costStatus: "priced"`; Activix records use gateway vocabulary.
22
+ */
23
+ export declare function buildActivixBillingPatch(billing: NormalizedSkillBilling, ctx?: ActivixBillingPatchContext): ActivixBillingPatch;
24
+ //# sourceMappingURL=build-activix-billing-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-activix-billing-patch.d.ts","sourceRoot":"","sources":["../../src/utils/build-activix-billing-patch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAG9E,iGAAiG;AACjG,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAEzE,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,mGAAmG;IACnG,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AA4BF;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,sBAAsB,EAC/B,GAAG,CAAC,EAAE,0BAA0B,GAC/B,mBAAmB,CA+CrB"}
@@ -0,0 +1,70 @@
1
+ function usageTokensMetadata(usage) {
2
+ const tokens = {
3
+ prompt: usage.tokensPrompt,
4
+ completion: usage.tokensCompletion,
5
+ total: usage.tokensTotal,
6
+ };
7
+ return {
8
+ tokens,
9
+ usage,
10
+ ...(usage.maxTokensRequested !== undefined ? { maxTokensRequested: usage.maxTokensRequested } : {}),
11
+ };
12
+ }
13
+ function routingMetadataSlice(billing, ctx) {
14
+ return {
15
+ ...usageTokensMetadata(billing.usage),
16
+ ...(billing.modelUsed !== undefined ? { modelUsed: billing.modelUsed, model: billing.modelUsed } : {}),
17
+ ...(ctx?.provider !== undefined ? { provider: ctx.provider } : {}),
18
+ ...(ctx?.region !== undefined ? { region: ctx.region } : {}),
19
+ ...(ctx?.effectiveModelConfig !== undefined ? { effectiveModelConfig: ctx.effectiveModelConfig } : {}),
20
+ };
21
+ }
22
+ /**
23
+ * Builds Activix patch fields for billing so persisted rows match gateway `logSuccess` / invoke metadata.
24
+ * SDK {@link RunSkillResponse.metadata} omits `costStatus: "priced"`; Activix records use gateway vocabulary.
25
+ */
26
+ export function buildActivixBillingPatch(billing, ctx) {
27
+ const routing = routingMetadataSlice(billing, ctx);
28
+ if (billing.costUsd !== undefined) {
29
+ const cost = billing.costUsd;
30
+ return {
31
+ topLevel: { cost, costStatus: "priced" },
32
+ outerMetadata: {
33
+ ...routing,
34
+ cost,
35
+ costUsd: cost,
36
+ costStatus: "priced",
37
+ },
38
+ outerCost: {
39
+ usd: cost,
40
+ unit: "USD",
41
+ tokens: {
42
+ input: billing.usage.tokensPrompt,
43
+ output: billing.usage.tokensCompletion,
44
+ total: billing.usage.tokensTotal,
45
+ },
46
+ ...(billing.modelUsed !== undefined ? { model: billing.modelUsed } : {}),
47
+ ...(ctx?.provider !== undefined ? { provider: ctx.provider } : {}),
48
+ },
49
+ responseMetadata: {
50
+ ...routing,
51
+ cost,
52
+ costUsd: cost,
53
+ costStatus: "priced",
54
+ },
55
+ };
56
+ }
57
+ const activixStatus = billing.costStatus === "deferred" ? "deferred" : "unpriced";
58
+ return {
59
+ topLevel: { costStatus: activixStatus },
60
+ outerMetadata: {
61
+ ...routing,
62
+ costStatus: activixStatus,
63
+ },
64
+ responseMetadata: {
65
+ ...routing,
66
+ costStatus: activixStatus,
67
+ },
68
+ };
69
+ }
70
+ //# sourceMappingURL=build-activix-billing-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-activix-billing-patch.js","sourceRoot":"","sources":["../../src/utils/build-activix-billing-patch.ts"],"names":[],"mappings":"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"}