@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
package/dist/client.js ADDED
@@ -0,0 +1,406 @@
1
+ import { AIGateway } from "@x12i/ai-gateway";
2
+ import { createLogxer, DebugLogAbstract } from "@x12i/logxer";
3
+ import { loadDotenv } from "@x12i/env";
4
+ import { getSkillContent as getSkillContentFromCatalox, getSkillTokens as getSkillTokensFromCatalox, modifySkillContent as modifySkillContentOnCatalox, createSubSkill as createSubSkillOnCatalox, deleteSubSkill as deleteSubSkillOnCatalox, getSkillTemplatesForPresentation, updateSkillTemplatesFromPresentation, getSkillTemplateInputs, upsertSkillCatalogItem as upsertSkillCatalogItemToCatalox, softDeleteSkillCatalogItem as softDeleteSkillCatalogItemFromCatalox, } from "./catalox/skill-template-catalog-mutations.js";
5
+ import { defaultAiSkillsCataloxContext } from "./catalox/skill-templates.js";
6
+ import { buildAiSkillsLogxerLoggingConfig } from "./utils/exellix-skills-logxer-defaults.js";
7
+ import * as path from "path";
8
+ import * as fs from "fs";
9
+ import { SkillExecutor } from "./client/skill-executor.js";
10
+ import { RegistryManager } from "./client/registry-manager.js";
11
+ import { analyzeSkillRequest as analyzeSkillRequestCore } from "./analysis/analyze-skill-request.js";
12
+ import { runtimeObjects } from "./runtime-objects.js";
13
+ /**
14
+ * ExellixSkillsClient
15
+ *
16
+ * WHY: This is the main entry point for the AI Skills library. It provides
17
+ * a high-level API for running skills while automatically
18
+ * managing environment-based configuration (Env-Ready mode).
19
+ *
20
+ * DESIGN: It acts as an orchestrator, delegating specific tasks to
21
+ * specialized managers (Executor, Registry) to keep the code
22
+ * manageable and clean.
23
+ *
24
+ * **Skill keys (this package + Catalox only):** `skillKey` is normalized and
25
+ * matched to the native `ai-skills` catalog here. **`AIGateway` does not resolve
26
+ * skill keys** and is not used as a skill registry.
27
+ *
28
+ * **Gateway role:** `AIGateway` receives **literal** instruction/prompt **strings**
29
+ * (template text after Catalox load + `ensureGatewayTreatsAsTemplateText`) and
30
+ * handles **template rendering** (tokens, options you pass) and whatever
31
+ * **response parsing** the gateway exposes; this SDK may still merge FlexMD
32
+ * fallbacks when the gateway omits structured payloads.
33
+ *
34
+ * **Templates:** Instruction and prompt bodies are loaded exclusively from the
35
+ * Catalox native catalog `ai-skills` (see `npm run catalox:provision-ai-skills`).
36
+ */
37
+ export class ExellixSkillsClient {
38
+ gateway;
39
+ logger;
40
+ ownsGateway;
41
+ testMode;
42
+ isShutdown = false;
43
+ shutdownPromise = null;
44
+ executor;
45
+ registry;
46
+ catalox;
47
+ cataloxAppId;
48
+ constructor(options) {
49
+ this.testMode = options.testMode ?? process.env.NODE_ENV === "test";
50
+ this.ownsGateway = !options.gateway;
51
+ if (!options.catalox) {
52
+ throw new Error("[AI-SKILLS] options.catalox is required. Skill templates are read only from the Catalox native catalog `ai-skills`.");
53
+ }
54
+ if (options.autoLoadDotenv !== false) {
55
+ try {
56
+ const parsed = loadDotenv(".env", true, false);
57
+ const loadedCount = Object.keys(parsed).length;
58
+ if (loadedCount > 0) {
59
+ console.log(`[AI-SKILLS] Loaded ${loadedCount} environment variable(s) from .env file`);
60
+ }
61
+ else {
62
+ console.warn("[AI-SKILLS] dotenv loaded 0 variables - .env file may be empty or missing");
63
+ }
64
+ }
65
+ catch (error) {
66
+ console.warn("[AI-SKILLS] Could not load dotenv (this is OK if you set env vars another way):", error.message);
67
+ }
68
+ }
69
+ this.logger = createLogxer({
70
+ packageName: options.packageName || "AI-SKILLS",
71
+ envPrefix: "AI_SKILLS",
72
+ debugNamespace: "ai-skills",
73
+ }, buildAiSkillsLogxerLoggingConfig({
74
+ service: options.packageName,
75
+ runtimeIdentity: options.logxerRuntimeIdentity,
76
+ }));
77
+ // Expose-only runtime objects: attach package-owned clients only if they already
78
+ // implement the official queryable contract. Never fabricate adapters here.
79
+ if (runtimeObjects) {
80
+ const maybeQueryableLogxer = this.logger;
81
+ if (typeof maybeQueryableLogxer?.getJobLogs === "function") {
82
+ runtimeObjects.logxerClient = maybeQueryableLogxer;
83
+ }
84
+ }
85
+ this.logger.info("[AI-SKILLS] Initializing ExellixSkillsClient...", {
86
+ packageName: options.packageName,
87
+ hasExternalGateway: !!options.gateway,
88
+ autoLoadDotenv: options.autoLoadDotenv !== false,
89
+ testMode: this.testMode,
90
+ debugKind: DebugLogAbstract.INTENT,
91
+ });
92
+ if (options.gateway) {
93
+ this.gateway = options.gateway;
94
+ }
95
+ else {
96
+ this.validateProviderEnv();
97
+ const gatewayConfig = {
98
+ packageName: options.packageName || "EXELLIX_SKILLS",
99
+ enableActivityTracking: this.testMode
100
+ ? !(options.disableActivityTrackingInTests ?? true)
101
+ : (options.enableActivityTracking ?? true),
102
+ ...(options.forceLocal !== undefined ? { forceLocal: options.forceLocal } : {}),
103
+ ...(options.forceCreateRootDirectory !== undefined
104
+ ? { forceCreateRootDirectory: options.forceCreateRootDirectory }
105
+ : {}),
106
+ ...(options.templateRendering !== undefined ? { templateRendering: options.templateRendering } : {}),
107
+ };
108
+ this.gateway = new AIGateway(gatewayConfig);
109
+ }
110
+ if (runtimeObjects) {
111
+ const gatewayRuntimeObjects = this.gateway?.runtimeObjects;
112
+ const gatewayActivixClient = gatewayRuntimeObjects?.activixClient;
113
+ const gatewayLogxerClient = gatewayRuntimeObjects?.logxerClient;
114
+ runtimeObjects.packagesRuntimeObjects = [
115
+ {
116
+ name: "@x12i/ai-gateway",
117
+ activixClient: typeof gatewayActivixClient?.getJobActivities === "function"
118
+ ? gatewayActivixClient
119
+ : undefined,
120
+ logxerClient: typeof gatewayLogxerClient?.getJobLogs === "function" ? gatewayLogxerClient : undefined,
121
+ },
122
+ ];
123
+ }
124
+ this.catalox = options.catalox;
125
+ this.cataloxAppId = options.cataloxAppId;
126
+ const cataloxBundle = {
127
+ catalox: options.catalox,
128
+ cataloxAppId: options.cataloxAppId,
129
+ };
130
+ this.executor = new SkillExecutor(this.gateway, this.logger, cataloxBundle);
131
+ this.registry = new RegistryManager(this.gateway, this.logger, cataloxBundle);
132
+ }
133
+ cataloxContext() {
134
+ return defaultAiSkillsCataloxContext({ appId: this.cataloxAppId });
135
+ }
136
+ /**
137
+ * Skill templates as presentation markdown (Catalox read). Requires read access to the `ai-skills` catalog.
138
+ */
139
+ async getSkillTemplatesForPresentation(skillKey, opts) {
140
+ return getSkillTemplatesForPresentation(this.catalox, this.cataloxContext(), skillKey, opts);
141
+ }
142
+ /**
143
+ * Updates skill template bodies from editor markdown (lossless storage normalization + Catalox upsert).
144
+ * Requires write access (e.g. god-mode or app binding with write).
145
+ */
146
+ async updateSkillTemplatesFromPresentation(skillKey, patch, opts) {
147
+ return updateSkillTemplatesFromPresentation(this.catalox, this.cataloxContext(), skillKey, patch, opts);
148
+ }
149
+ /**
150
+ * Expected template tokens (`{{name}}`) from raw stored instructions/prompt/audit fields.
151
+ */
152
+ async getSkillTemplateInputs(skillKey) {
153
+ return getSkillTemplateInputs(this.catalox, this.cataloxContext(), skillKey);
154
+ }
155
+ /**
156
+ * Skill template bodies as `{ role, content }[]` (presentation markdown). Four entries in stable order.
157
+ */
158
+ async getSkillContent(skillKey) {
159
+ return getSkillContentFromCatalox(this.catalox, this.cataloxContext(), skillKey);
160
+ }
161
+ /**
162
+ * Unique `{{token}}` names across instructions, prompt, and audit bodies (presentation strings).
163
+ */
164
+ async getSkillTokens(skillKey) {
165
+ return getSkillTokensFromCatalox(this.catalox, this.cataloxContext(), skillKey);
166
+ }
167
+ /**
168
+ * Partial update of template bodies by role. Returns `{ success }` (errors are not thrown).
169
+ */
170
+ async modifySkillContent(skillKey, parts, opts) {
171
+ return modifySkillContentOnCatalox(this.catalox, this.cataloxContext(), skillKey, parts, opts);
172
+ }
173
+ /**
174
+ * Duplicate a skill under a new key with optional overrides; sets `parentSkillKey` on the new row.
175
+ */
176
+ async createSubSkill(input) {
177
+ return createSubSkillOnCatalox(this.catalox, this.cataloxContext(), input);
178
+ }
179
+ /**
180
+ * Remove a sub-skill row only when `parentSkillKey` is set (base catalog skills cannot be deleted here).
181
+ */
182
+ async deleteSubSkill(subSkillKey) {
183
+ return deleteSubSkillOnCatalox(this.catalox, this.cataloxContext(), subSkillKey);
184
+ }
185
+ async safeCallClose(target, name, context) {
186
+ if (!target || typeof target[name] !== "function")
187
+ return;
188
+ try {
189
+ await target[name]();
190
+ }
191
+ catch (error) {
192
+ this.logger.warn("[AI-SKILLS] Shutdown close hook failed", {
193
+ context,
194
+ method: name,
195
+ error: error?.message,
196
+ debugKind: DebugLogAbstract.ANOMALY,
197
+ });
198
+ }
199
+ }
200
+ validateProviderEnv() {
201
+ const providers = ["OPENAI_API_KEY", "GROK_API_KEY", "OPEN_ROUTER_KEY", "OPENROUTER_API_KEY"];
202
+ this.logger.info("[AI-SKILLS] Validating environment (provider keys)...", {
203
+ identity: "validateProviderEnv",
204
+ debugKind: DebugLogAbstract.INTENT,
205
+ });
206
+ if (!providers.some((key) => !!process.env[key])) {
207
+ const diagnostics = this.getEnvDiagnostics(providers);
208
+ const err = `[AI-SKILLS] ERC_VALIDATION_ERROR: Missing at least one provider key (OPENAI_API_KEY, GROK_API_KEY, OPEN_ROUTER_KEY, or OPENROUTER_API_KEY).\n${diagnostics}`;
209
+ this.logger.error(err, { debugKind: DebugLogAbstract.ANOMALY });
210
+ throw new Error(err);
211
+ }
212
+ }
213
+ getEnvDiagnostics(missingKeys) {
214
+ const keys = Array.isArray(missingKeys) ? missingKeys : [missingKeys];
215
+ const cwd = process.cwd();
216
+ const envPath = path.join(cwd, ".env");
217
+ let diagnostics = `\n[DIAGNOSTICS]\n`;
218
+ diagnostics += ` Current working directory: ${cwd}\n`;
219
+ diagnostics += ` Expected .env file path: ${envPath}\n`;
220
+ try {
221
+ if (fs.existsSync(envPath)) {
222
+ const stats = fs.statSync(envPath);
223
+ diagnostics += ` .env file exists: YES (${stats.size} bytes)\n`;
224
+ if (stats.size === 0) {
225
+ diagnostics += ` ⚠️ WARNING: .env file is EMPTY (0 bytes)!\n`;
226
+ }
227
+ else {
228
+ const content = fs.readFileSync(envPath, "utf8");
229
+ const lines = content.split("\n").filter((line) => line.trim() && !line.trim().startsWith("#"));
230
+ diagnostics += ` .env file contains ${lines.length} non-empty, non-comment line(s)\n`;
231
+ const fileContent = fs.readFileSync(envPath, "utf8");
232
+ for (const key of keys) {
233
+ if (fileContent.includes(key)) {
234
+ diagnostics += ` ✓ Found "${key}" in .env file\n`;
235
+ }
236
+ else {
237
+ diagnostics += ` ✗ "${key}" NOT found in .env file\n`;
238
+ }
239
+ }
240
+ }
241
+ }
242
+ else {
243
+ diagnostics += ` .env file exists: NO\n`;
244
+ }
245
+ }
246
+ catch (error) {
247
+ diagnostics += ` Could not check .env file: ${error.message}\n`;
248
+ }
249
+ diagnostics += `\n[CATALOX]\n`;
250
+ diagnostics += ` Skill templates require Firestore + Catalox. Run: npm run catalox:provision-ai-skills\n`;
251
+ diagnostics += ` Set FIREBASE_PROJECT_ID and GOOGLE_SERVICE_ACCOUNT_BASE64 (or initialize Firebase yourself before createCatalox).\n`;
252
+ diagnostics += `\n[TROUBLESHOOTING]\n`;
253
+ diagnostics += ` 1. Ensure .env file is in the project root directory\n`;
254
+ diagnostics += ` 2. Check .env file format: KEY=value (no spaces around =)\n`;
255
+ diagnostics += ` 3. If using dotenv manually, ensure dotenv.config() is called BEFORE creating ExellixSkillsClient\n`;
256
+ diagnostics += ` 4. Set autoLoadDotenv: false if you want to control dotenv loading yourself\n`;
257
+ return diagnostics;
258
+ }
259
+ async runSkill(input) {
260
+ return this.executor.execute(input, async (key) => {
261
+ await this.registry.diagnose(key);
262
+ });
263
+ }
264
+ /**
265
+ * Preflight / authoring analysis for a {@link RunSkillRequest}.
266
+ * Simulates the gateway invoke payload and reviews it via FuncX
267
+ * (`ai-skills/analyze-gateway-invoke-request`). **Not chained into {@link runSkill}.**
268
+ */
269
+ async analyzeSkillRequest(input, options) {
270
+ return analyzeSkillRequestCore(this.catalox, input, {
271
+ ...options,
272
+ cataloxAppId: options?.cataloxAppId ?? this.cataloxAppId,
273
+ logger: this.logger,
274
+ });
275
+ }
276
+ getContentRegistry() {
277
+ return this.registry.getRegistry();
278
+ }
279
+ async testContentRegistryConnection() {
280
+ return this.registry.testConnection();
281
+ }
282
+ async diagnoseSkillContent(skillKey) {
283
+ return this.registry.diagnose(skillKey);
284
+ }
285
+ async listAvailableContent(options) {
286
+ return this.registry.listAvailable(options);
287
+ }
288
+ async listPublishedSkills(options) {
289
+ return this.registry.listPublishedSkills(options);
290
+ }
291
+ /**
292
+ * Lists every skill row in the Catalox `ai-skills` catalog (all statuses). For published-only discovery use {@link listPublishedSkills}.
293
+ */
294
+ async listCatalogSkills(options) {
295
+ return this.registry.listCatalogSkills(options);
296
+ }
297
+ /**
298
+ * Creates or updates a catalog row (metadata + optional markdown bodies). Requires Catalox write access.
299
+ */
300
+ async upsertSkillCatalogItem(input, options) {
301
+ return upsertSkillCatalogItemToCatalox(this.catalox, this.cataloxContext(), input, options);
302
+ }
303
+ /**
304
+ * Soft-deletes a skill: clears bodies and audit fields and sets `planned`. Requires Catalox write access.
305
+ */
306
+ async softDeleteSkillCatalogItem(skillKey) {
307
+ return softDeleteSkillCatalogItemFromCatalox(this.catalox, this.cataloxContext(), skillKey);
308
+ }
309
+ async runContentRegistryDiagnostics(verbose = false) {
310
+ return this.registry.runDiagnostics(verbose);
311
+ }
312
+ getGateway() {
313
+ return this.gateway;
314
+ }
315
+ getLogger() {
316
+ return this.logger;
317
+ }
318
+ getExecutor() {
319
+ return this.executor;
320
+ }
321
+ async shutdown() {
322
+ if (this.isShutdown)
323
+ return;
324
+ if (this.shutdownPromise)
325
+ return this.shutdownPromise;
326
+ this.shutdownPromise = (async () => {
327
+ this.logger.info("[AI-SKILLS] shutdown() started", {
328
+ ownsGateway: this.ownsGateway,
329
+ testMode: this.testMode,
330
+ debugKind: DebugLogAbstract.INTENT,
331
+ });
332
+ const registryHandle = this.registry?.getRegistry?.();
333
+ await this.safeCallClose(registryHandle, "close", "contentRegistry");
334
+ await this.safeCallClose(registryHandle, "disconnect", "contentRegistry");
335
+ await this.safeCallClose(registryHandle, "destroy", "contentRegistry");
336
+ await this.safeCallClose(registryHandle, "dispose", "contentRegistry");
337
+ await this.safeCallClose(registryHandle, "shutdown", "contentRegistry");
338
+ if (this.ownsGateway) {
339
+ await this.safeCallClose(this.gateway, "close", "gateway");
340
+ await this.safeCallClose(this.gateway, "disconnect", "gateway");
341
+ await this.safeCallClose(this.gateway, "destroy", "gateway");
342
+ await this.safeCallClose(this.gateway, "dispose", "gateway");
343
+ await this.safeCallClose(this.gateway, "shutdown", "gateway");
344
+ await this.safeCallClose(this.gateway?.activityManager, "close", "gateway.activityManager");
345
+ await this.safeCallClose(this.gateway?.activityManager, "shutdown", "gateway.activityManager");
346
+ await this.safeCallClose(this.gateway?.activityTracker, "close", "gateway.activityTracker");
347
+ await this.safeCallClose(this.gateway?.activityTracker, "shutdown", "gateway.activityTracker");
348
+ await this.safeCallClose(this.gateway?.logger, "close", "gateway.logger");
349
+ await this.safeCallClose(this.gateway?.logger, "shutdown", "gateway.logger");
350
+ }
351
+ this.isShutdown = true;
352
+ this.logger.info("[AI-SKILLS] shutdown() completed", { debugKind: DebugLogAbstract.EVENT });
353
+ })();
354
+ try {
355
+ await this.shutdownPromise;
356
+ }
357
+ finally {
358
+ this.shutdownPromise = null;
359
+ }
360
+ }
361
+ static diagnoseEnvironment() {
362
+ const providers = ["OPENAI_API_KEY", "GROK_API_KEY", "OPEN_ROUTER_KEY", "OPENROUTER_API_KEY"];
363
+ const cwd = process.cwd();
364
+ const envPath = path.join(cwd, ".env");
365
+ let diagnostics = `[AI-SKILLS] Environment Variable Diagnostics\n`;
366
+ diagnostics += `==========================================\n\n`;
367
+ diagnostics += `Current working directory: ${cwd}\n`;
368
+ diagnostics += `Expected .env file path: ${envPath}\n\n`;
369
+ try {
370
+ if (fs.existsSync(envPath)) {
371
+ const stats = fs.statSync(envPath);
372
+ diagnostics += `✓ .env file exists (${stats.size} bytes)\n\n`;
373
+ }
374
+ else {
375
+ diagnostics += `✗ .env file does NOT exist\n\n`;
376
+ }
377
+ }
378
+ catch (error) {
379
+ diagnostics += `✗ Could not check .env file: ${error.message}\n\n`;
380
+ }
381
+ diagnostics += `Provider Variables (at least one required):\n`;
382
+ let hasProvider = false;
383
+ for (const key of providers) {
384
+ const value = process.env[key];
385
+ if (value) {
386
+ diagnostics += ` ✓ ${key}: SET (${value.substring(0, 10)}...)\n`;
387
+ hasProvider = true;
388
+ }
389
+ else {
390
+ diagnostics += ` ✗ ${key}: NOT SET\n`;
391
+ }
392
+ }
393
+ if (!hasProvider) {
394
+ diagnostics += ` ⚠️ WARNING: No provider keys found!\n`;
395
+ }
396
+ diagnostics += `\nCatalox / Firestore (skill templates):\n`;
397
+ diagnostics += ` Set FIREBASE_PROJECT_ID + GOOGLE_SERVICE_ACCOUNT_BASE64 (or your own Admin credential wiring).\n`;
398
+ diagnostics += ` Provision catalog: npm run catalox:provision-ai-skills\n`;
399
+ diagnostics += `\n[TROUBLESHOOTING]\n`;
400
+ diagnostics += ` 1. Ensure .env file is in the project root directory\n`;
401
+ diagnostics += ` 2. Check .env file format: KEY=value (no spaces around =)\n`;
402
+ diagnostics += ` 3. ExellixSkillsClient auto-loads .env by default (set autoLoadDotenv: false to disable)\n`;
403
+ return diagnostics;
404
+ }
405
+ }
406
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SkillTraceUsage } from "../types.js";
2
+ export declare function usageFromGatewayMetadata(metadata: Record<string, any> | undefined | null): SkillTraceUsage;
3
+ //# sourceMappingURL=gateway-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-usage.d.ts","sourceRoot":"","sources":["../../src/diagnostics/gateway-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,eAAe,CAuB1G"}
@@ -0,0 +1,26 @@
1
+ function num(x, fallback = 0) {
2
+ return typeof x === "number" && !Number.isNaN(x) ? x : fallback;
3
+ }
4
+ export function usageFromGatewayMetadata(metadata) {
5
+ const md = metadata ?? {};
6
+ const tok = md.tokens ?? {};
7
+ const prompt = num(tok.prompt ?? tok.input);
8
+ const completion = num(tok.completion ?? tok.output);
9
+ const total = num(tok.total, prompt + completion);
10
+ const usageAny = md.usage ?? {};
11
+ const cachedPrompt = typeof usageAny.cachedPromptTokens === "number"
12
+ ? usageAny.cachedPromptTokens
13
+ : typeof usageAny.cached_tokens === "number"
14
+ ? usageAny.cached_tokens
15
+ : undefined;
16
+ const cachedTotal = typeof usageAny.cachedTotalTokens === "number" ? usageAny.cachedTotalTokens : undefined;
17
+ return {
18
+ maxTokensRequested: typeof md.maxTokensRequested === "number" ? md.maxTokensRequested : undefined,
19
+ tokensPrompt: prompt,
20
+ tokensCompletion: completion,
21
+ tokensTotal: total,
22
+ ...(cachedPrompt !== undefined ? { cachedTokensPrompt: cachedPrompt } : {}),
23
+ ...(cachedTotal !== undefined ? { cachedTokensTotal: cachedTotal } : {}),
24
+ };
25
+ }
26
+ //# sourceMappingURL=gateway-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-usage.js","sourceRoot":"","sources":["../../src/diagnostics/gateway-usage.ts"],"names":[],"mappings":"AAEA,SAAS,GAAG,CAAC,CAAU,EAAE,QAAQ,GAAG,CAAC;IACnC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgD;IACvF,MAAM,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;IAChC,MAAM,YAAY,GAChB,OAAO,QAAQ,CAAC,kBAAkB,KAAK,QAAQ;QAC7C,CAAC,CAAC,QAAQ,CAAC,kBAAkB;QAC7B,CAAC,CAAC,OAAO,QAAQ,CAAC,aAAa,KAAK,QAAQ;YAC1C,CAAC,CAAC,QAAQ,CAAC,aAAa;YACxB,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,WAAW,GACf,OAAO,QAAQ,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,OAAO;QACL,kBAAkB,EAAE,OAAO,EAAE,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;QACjG,YAAY,EAAE,MAAM;QACpB,gBAAgB,EAAE,UAAU;QAC5B,WAAW,EAAE,KAAK;QAClB,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { RunSkillDiagnostics, SkillDiagnosticsInvokeRequest, SkillDiagnosticsTrace, SkillTraceUsage } from "../types.js";
2
+ import { type SkillCostStatus } from "../utils/normalize-billing-metadata.js";
3
+ export { usageFromGatewayMetadata } from "./gateway-usage.js";
4
+ export declare const TRACE_ERROR_MESSAGE_MAX_CHARS = 4096;
5
+ export declare const TRACE_RAW_PAYLOAD_MAX_CHARS = 32768;
6
+ export declare function capTraceErrorMessage(message: string, max?: number): string;
7
+ /**
8
+ * Best-effort metadata when `gateway.invoke` rejects: some gateway errors attach partial metadata
9
+ * on `metadata`, `response.metadata`, or `gatewayResponse.metadata`.
10
+ */
11
+ export declare function metadataFromInvokeError(err: unknown): Record<string, any>;
12
+ /** Same token/cost/model slice as trace top-level fields, derived from gateway `metadata`. */
13
+ export declare function billingSnapshotFromGatewayMetadata(metadata: Record<string, any> | undefined | null): {
14
+ usage: SkillTraceUsage;
15
+ costUsd?: number;
16
+ costStatus?: SkillCostStatus;
17
+ modelUsed?: string;
18
+ };
19
+ export interface MapSkillGatewayTraceArgs {
20
+ invokeStartedAtMs: number;
21
+ invokeEndedAtMs: number;
22
+ /** Gateway `invoke` return value, when available. */
23
+ gatewayResponse?: Record<string, any> | null;
24
+ /** Same value sent as `aiRequestId` on the gateway request. */
25
+ aiRequestId: string;
26
+ /** Effective max tokens requested for this invoke (merged config / modelConfig). */
27
+ maxTokensRequested?: number;
28
+ /** Echo of caller invoke args (modelConfig, timeoutMs) for trace self-containment. */
29
+ invokeRequest?: SkillDiagnosticsInvokeRequest;
30
+ includeRawProviderPayload?: boolean;
31
+ step: {
32
+ phase: string;
33
+ type: string;
34
+ stepId: string;
35
+ };
36
+ invokeError?: unknown;
37
+ }
38
+ /**
39
+ * Maps a single gateway `invoke` result (or failure) into the stable {@link SkillDiagnosticsTrace} shape.
40
+ */
41
+ export declare function mapGatewayInvokeToTrace(args: MapSkillGatewayTraceArgs): SkillDiagnosticsTrace;
42
+ export declare function traceToDiagnostics(trace: SkillDiagnosticsTrace): RunSkillDiagnostics;
43
+ //# sourceMappingURL=map-gateway-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-gateway-trace.d.ts","sourceRoot":"","sources":["../../src/diagnostics/map-gateway-trace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,6BAA6B,EAC7B,qBAAqB,EAGrB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAClD,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAgC,GAAG,MAAM,CAGjG;AAUD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAazE;AAWD,8FAA8F;AAC9F,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG;IACpG,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAQA;AAsDD,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC7C,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sFAAsF;IACtF,aAAa,CAAC,EAAE,6BAA6B,CAAC;IAC9C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA0FD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,wBAAwB,GAAG,qBAAqB,CAgF7F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,mBAAmB,CAEpF"}