@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.
- package/README.md +600 -0
- package/dist/analysis/analyze-skill-request.d.ts +12 -0
- package/dist/analysis/analyze-skill-request.d.ts.map +1 -0
- package/dist/analysis/analyze-skill-request.js +201 -0
- package/dist/analysis/analyze-skill-request.js.map +1 -0
- package/dist/analysis/build-skill-request-analysis-packet.d.ts +14 -0
- package/dist/analysis/build-skill-request-analysis-packet.d.ts.map +1 -0
- package/dist/analysis/build-skill-request-analysis-packet.js +106 -0
- package/dist/analysis/build-skill-request-analysis-packet.js.map +1 -0
- package/dist/analysis/collect-deterministic-findings.d.ts +14 -0
- package/dist/analysis/collect-deterministic-findings.d.ts.map +1 -0
- package/dist/analysis/collect-deterministic-findings.js +221 -0
- package/dist/analysis/collect-deterministic-findings.js.map +1 -0
- package/dist/analysis/constants.d.ts +5 -0
- package/dist/analysis/constants.d.ts.map +1 -0
- package/dist/analysis/constants.js +5 -0
- package/dist/analysis/constants.js.map +1 -0
- package/dist/analysis/format-skill-request-analysis-markdown.d.ts +8 -0
- package/dist/analysis/format-skill-request-analysis-markdown.d.ts.map +1 -0
- package/dist/analysis/format-skill-request-analysis-markdown.js +121 -0
- package/dist/analysis/format-skill-request-analysis-markdown.js.map +1 -0
- package/dist/analysis/path-utils.d.ts +11 -0
- package/dist/analysis/path-utils.d.ts.map +1 -0
- package/dist/analysis/path-utils.js +69 -0
- package/dist/analysis/path-utils.js.map +1 -0
- package/dist/analysis/sanitize-for-packet.d.ts +28 -0
- package/dist/analysis/sanitize-for-packet.d.ts.map +1 -0
- package/dist/analysis/sanitize-for-packet.js +107 -0
- package/dist/analysis/sanitize-for-packet.js.map +1 -0
- package/dist/analysis/types.d.ts +139 -0
- package/dist/analysis/types.d.ts.map +1 -0
- package/dist/analysis/types.js +2 -0
- package/dist/analysis/types.js.map +1 -0
- package/dist/catalog/canonical-skill-key.d.ts +5 -0
- package/dist/catalog/canonical-skill-key.d.ts.map +1 -0
- package/dist/catalog/canonical-skill-key.js +16 -0
- package/dist/catalog/canonical-skill-key.js.map +1 -0
- package/dist/catalog/constants.d.ts +7 -0
- package/dist/catalog/constants.d.ts.map +1 -0
- package/dist/catalog/constants.js +7 -0
- package/dist/catalog/constants.js.map +1 -0
- package/dist/catalog/env.d.ts +4 -0
- package/dist/catalog/env.d.ts.map +1 -0
- package/dist/catalog/env.js +15 -0
- package/dist/catalog/env.js.map +1 -0
- package/dist/catalog/gateway-template.d.ts +6 -0
- package/dist/catalog/gateway-template.d.ts.map +1 -0
- package/dist/catalog/gateway-template.js +15 -0
- package/dist/catalog/gateway-template.js.map +1 -0
- package/dist/catalog/index.d.ts +3 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +3 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/catalog/seed.d.ts +12 -0
- package/dist/catalog/seed.d.ts.map +1 -0
- package/dist/catalog/seed.js +45 -0
- package/dist/catalog/seed.js.map +1 -0
- package/dist/catalog/skill-catalog.d.ts +28 -0
- package/dist/catalog/skill-catalog.d.ts.map +1 -0
- package/dist/catalog/skill-catalog.js +139 -0
- package/dist/catalog/skill-catalog.js.map +1 -0
- package/dist/catalog/store-factory.d.ts +18 -0
- package/dist/catalog/store-factory.d.ts.map +1 -0
- package/dist/catalog/store-factory.js +36 -0
- package/dist/catalog/store-factory.js.map +1 -0
- package/dist/catalog/types.d.ts +61 -0
- package/dist/catalog/types.d.ts.map +1 -0
- package/dist/catalog/types.js +22 -0
- package/dist/catalog/types.js.map +1 -0
- package/dist/catalox/ai-engines-catalog.d.ts +24 -0
- package/dist/catalox/ai-engines-catalog.d.ts.map +1 -0
- package/dist/catalox/ai-engines-catalog.js +89 -0
- package/dist/catalox/ai-engines-catalog.js.map +1 -0
- package/dist/catalox/ai-skills-catalog.d.ts +32 -0
- package/dist/catalox/ai-skills-catalog.d.ts.map +1 -0
- package/dist/catalox/ai-skills-catalog.js +202 -0
- package/dist/catalox/ai-skills-catalog.js.map +1 -0
- package/dist/catalox/catalox-skill-errors.d.ts +15 -0
- package/dist/catalox/catalox-skill-errors.d.ts.map +1 -0
- package/dist/catalox/catalox-skill-errors.js +29 -0
- package/dist/catalox/catalox-skill-errors.js.map +1 -0
- package/dist/catalox/index.d.ts +10 -0
- package/dist/catalox/index.d.ts.map +1 -0
- package/dist/catalox/index.js +10 -0
- package/dist/catalox/index.js.map +1 -0
- package/dist/catalox/init-firebase-and-catalox.d.ts +8 -0
- package/dist/catalox/init-firebase-and-catalox.d.ts.map +1 -0
- package/dist/catalox/init-firebase-and-catalox.js +48 -0
- package/dist/catalox/init-firebase-and-catalox.js.map +1 -0
- package/dist/catalox/list-ai-skills-catalog.d.ts +24 -0
- package/dist/catalox/list-ai-skills-catalog.d.ts.map +1 -0
- package/dist/catalox/list-ai-skills-catalog.js +38 -0
- package/dist/catalox/list-ai-skills-catalog.js.map +1 -0
- package/dist/catalox/skill-gateway-template-utils.d.ts +11 -0
- package/dist/catalox/skill-gateway-template-utils.d.ts.map +1 -0
- package/dist/catalox/skill-gateway-template-utils.js +31 -0
- package/dist/catalox/skill-gateway-template-utils.js.map +1 -0
- package/dist/catalox/skill-template-catalog-mutations.d.ts +143 -0
- package/dist/catalox/skill-template-catalog-mutations.d.ts.map +1 -0
- package/dist/catalox/skill-template-catalog-mutations.js +470 -0
- package/dist/catalox/skill-template-catalog-mutations.js.map +1 -0
- package/dist/catalox/skill-template-markdown.d.ts +34 -0
- package/dist/catalox/skill-template-markdown.d.ts.map +1 -0
- package/dist/catalox/skill-template-markdown.js +106 -0
- package/dist/catalox/skill-template-markdown.js.map +1 -0
- package/dist/catalox/skill-templates.d.ts +72 -0
- package/dist/catalox/skill-templates.d.ts.map +1 -0
- package/dist/catalox/skill-templates.js +80 -0
- package/dist/catalox/skill-templates.js.map +1 -0
- package/dist/client/audit-manager.d.ts +27 -0
- package/dist/client/audit-manager.d.ts.map +1 -0
- package/dist/client/audit-manager.js +260 -0
- package/dist/client/audit-manager.js.map +1 -0
- package/dist/client/base-client.d.ts +19 -0
- package/dist/client/base-client.d.ts.map +1 -0
- package/dist/client/base-client.js +20 -0
- package/dist/client/base-client.js.map +1 -0
- package/dist/client/build-gateway-invoke-request.d.ts +32 -0
- package/dist/client/build-gateway-invoke-request.d.ts.map +1 -0
- package/dist/client/build-gateway-invoke-request.js +135 -0
- package/dist/client/build-gateway-invoke-request.js.map +1 -0
- package/dist/client/invoke-skill-via-funcx.d.ts +11 -0
- package/dist/client/invoke-skill-via-funcx.d.ts.map +1 -0
- package/dist/client/invoke-skill-via-funcx.js +51 -0
- package/dist/client/invoke-skill-via-funcx.js.map +1 -0
- package/dist/client/registry-manager.d.ts +94 -0
- package/dist/client/registry-manager.d.ts.map +1 -0
- package/dist/client/registry-manager.js +287 -0
- package/dist/client/registry-manager.js.map +1 -0
- package/dist/client/skill-executor.d.ts +35 -0
- package/dist/client/skill-executor.d.ts.map +1 -0
- package/dist/client/skill-executor.js +316 -0
- package/dist/client/skill-executor.js.map +1 -0
- package/dist/client/task-executor.d.ts +21 -0
- package/dist/client/task-executor.d.ts.map +1 -0
- package/dist/client/task-executor.js +50 -0
- package/dist/client/task-executor.js.map +1 -0
- package/dist/client.d.ts +116 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +406 -0
- package/dist/client.js.map +1 -0
- package/dist/diagnostics/gateway-usage.d.ts +3 -0
- package/dist/diagnostics/gateway-usage.d.ts.map +1 -0
- package/dist/diagnostics/gateway-usage.js +26 -0
- package/dist/diagnostics/gateway-usage.js.map +1 -0
- package/dist/diagnostics/map-gateway-trace.d.ts +43 -0
- package/dist/diagnostics/map-gateway-trace.d.ts.map +1 -0
- package/dist/diagnostics/map-gateway-trace.js +243 -0
- package/dist/diagnostics/map-gateway-trace.js.map +1 -0
- package/dist/diagnostics/trace-mode.d.ts +9 -0
- package/dist/diagnostics/trace-mode.d.ts.map +1 -0
- package/dist/diagnostics/trace-mode.js +8 -0
- package/dist/diagnostics/trace-mode.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata.d.ts +7 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +65 -0
- package/dist/metadata.js.map +1 -0
- package/dist/parsers/context-parser.d.ts +2 -0
- package/dist/parsers/context-parser.d.ts.map +1 -0
- package/dist/parsers/context-parser.js +5 -0
- package/dist/parsers/context-parser.js.map +1 -0
- package/dist/parsers/input-parser.d.ts +2 -0
- package/dist/parsers/input-parser.d.ts.map +1 -0
- package/dist/parsers/input-parser.js +5 -0
- package/dist/parsers/input-parser.js.map +1 -0
- package/dist/runtime-objects.d.ts +11 -0
- package/dist/runtime-objects.d.ts.map +1 -0
- package/dist/runtime-objects.js +21 -0
- package/dist/runtime-objects.js.map +1 -0
- package/dist/skill-execution-trace-error.d.ts +20 -0
- package/dist/skill-execution-trace-error.d.ts.map +1 -0
- package/dist/skill-execution-trace-error.js +21 -0
- package/dist/skill-execution-trace-error.js.map +1 -0
- package/dist/types.d.ts +534 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/build-activix-billing-patch.d.ts +24 -0
- package/dist/utils/build-activix-billing-patch.d.ts.map +1 -0
- package/dist/utils/build-activix-billing-patch.js +70 -0
- package/dist/utils/build-activix-billing-patch.js.map +1 -0
- package/dist/utils/enrich-activix-identity.d.ts +30 -0
- package/dist/utils/enrich-activix-identity.d.ts.map +1 -0
- package/dist/utils/enrich-activix-identity.js +34 -0
- package/dist/utils/enrich-activix-identity.js.map +1 -0
- package/dist/utils/exellix-skills-logxer-defaults.d.ts +16 -0
- package/dist/utils/exellix-skills-logxer-defaults.d.ts.map +1 -0
- package/dist/utils/exellix-skills-logxer-defaults.js +37 -0
- package/dist/utils/exellix-skills-logxer-defaults.js.map +1 -0
- package/dist/utils/flex-md-parser.d.ts +23 -0
- package/dist/utils/flex-md-parser.d.ts.map +1 -0
- package/dist/utils/flex-md-parser.js +98 -0
- package/dist/utils/flex-md-parser.js.map +1 -0
- package/dist/utils/gateway-execution-summary.d.ts +18 -0
- package/dist/utils/gateway-execution-summary.d.ts.map +1 -0
- package/dist/utils/gateway-execution-summary.js +42 -0
- package/dist/utils/gateway-execution-summary.js.map +1 -0
- package/dist/utils/gateway-invoke-rejection.d.ts +9 -0
- package/dist/utils/gateway-invoke-rejection.d.ts.map +1 -0
- package/dist/utils/gateway-invoke-rejection.js +28 -0
- package/dist/utils/gateway-invoke-rejection.js.map +1 -0
- package/dist/utils/normalize-billing-metadata.d.ts +17 -0
- package/dist/utils/normalize-billing-metadata.d.ts.map +1 -0
- package/dist/utils/normalize-billing-metadata.js +75 -0
- package/dist/utils/normalize-billing-metadata.js.map +1 -0
- package/dist/utils/normalize-output-parsed.d.ts +25 -0
- package/dist/utils/normalize-output-parsed.d.ts.map +1 -0
- package/dist/utils/normalize-output-parsed.js +128 -0
- package/dist/utils/normalize-output-parsed.js.map +1 -0
- package/dist/utils/patch-activix-activity-after-skill.d.ts +19 -0
- package/dist/utils/patch-activix-activity-after-skill.d.ts.map +1 -0
- package/dist/utils/patch-activix-activity-after-skill.js +81 -0
- package/dist/utils/patch-activix-activity-after-skill.js.map +1 -0
- package/dist/utils/rendrix-render-skill-templates.d.ts +14 -0
- package/dist/utils/rendrix-render-skill-templates.d.ts.map +1 -0
- package/dist/utils/rendrix-render-skill-templates.js +25 -0
- package/dist/utils/rendrix-render-skill-templates.js.map +1 -0
- package/dist/utils/resolve-activity-id.d.ts +9 -0
- package/dist/utils/resolve-activity-id.d.ts.map +1 -0
- package/dist/utils/resolve-activity-id.js +27 -0
- package/dist/utils/resolve-activity-id.js.map +1 -0
- package/dist/utils/resolve-gateway-job-task-ids.d.ts +19 -0
- package/dist/utils/resolve-gateway-job-task-ids.d.ts.map +1 -0
- package/dist/utils/resolve-gateway-job-task-ids.js +21 -0
- package/dist/utils/resolve-gateway-job-task-ids.js.map +1 -0
- package/dist/utils/resolve-identity.d.ts +12 -0
- package/dist/utils/resolve-identity.d.ts.map +1 -0
- package/dist/utils/resolve-identity.js +36 -0
- package/dist/utils/resolve-identity.js.map +1 -0
- package/dist/utils/resolve-run-skill-ai-engine.d.ts +8 -0
- package/dist/utils/resolve-run-skill-ai-engine.d.ts.map +1 -0
- package/dist/utils/resolve-run-skill-ai-engine.js +20 -0
- package/dist/utils/resolve-run-skill-ai-engine.js.map +1 -0
- package/dist/utils/run-skill-request.d.ts +11 -0
- package/dist/utils/run-skill-request.d.ts.map +1 -0
- package/dist/utils/run-skill-request.js +44 -0
- package/dist/utils/run-skill-request.js.map +1 -0
- package/dist/utils/validate-mandatory-activix-invoke-fields.d.ts +7 -0
- package/dist/utils/validate-mandatory-activix-invoke-fields.d.ts.map +1 -0
- package/dist/utils/validate-mandatory-activix-invoke-fields.js +16 -0
- package/dist/utils/validate-mandatory-activix-invoke-fields.js.map +1 -0
- package/dist/utils/validate-session-id.d.ts +6 -0
- package/dist/utils/validate-session-id.d.ts.map +1 -0
- package/dist/utils/validate-session-id.js +18 -0
- package/dist/utils/validate-session-id.js.map +1 -0
- package/erc-manifest.json +11 -0
- package/package.json +76 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { SkillCostStatus, SkillTraceUsage } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Nested key on gateway **`identity`** / forwarded {@link RunSkillResponse.identity} carrying the
|
|
4
|
+
* last skill invoke’s token usage and cost (mirrors {@link RunSkillResponse.metadata} and trace usage).
|
|
5
|
+
* Forward the whole `identity` to later `runSkill` calls so Activix-oriented pipelines retain billing context.
|
|
6
|
+
*/
|
|
7
|
+
export declare const AI_SKILLS_LLM_IDENTITY_KEY = "aiSkillsLlm";
|
|
8
|
+
export type AiSkillsLlmIdentitySlice = {
|
|
9
|
+
usage: SkillTraceUsage;
|
|
10
|
+
costUsd?: number;
|
|
11
|
+
costStatus?: SkillCostStatus;
|
|
12
|
+
modelUsed?: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Attach LLM billing snapshot for downstream / Activix chaining. Overwrites any prior `aiSkillsLlm` on this object.
|
|
16
|
+
*/
|
|
17
|
+
export declare function enrichIdentityWithAiSkillsLlmSnapshot(identity: Record<string, any>, snapshot: AiSkillsLlmIdentitySlice): void;
|
|
18
|
+
/**
|
|
19
|
+
* Activix identity (library boundary): `identity` here is **runtime** request data from the caller,
|
|
20
|
+
* not SDK or env config. We do not create `identity` when upstream omits it.
|
|
21
|
+
* When `identity` is present, we only add work-scope context for **this** call: set `skillId`
|
|
22
|
+
* on the envelope if it was not already supplied and the request carries a `skillId`.
|
|
23
|
+
*
|
|
24
|
+
* We do **not** mint `sessionId`, overwrite upstream ids, or add or “fix” `instance`
|
|
25
|
+
* (`instance` is optional per the identity contract; the gateway may still set it).
|
|
26
|
+
*/
|
|
27
|
+
export declare function enrichActivixIdentityForGateway(identity: Record<string, any>, options: {
|
|
28
|
+
skillId?: string | null;
|
|
29
|
+
}): void;
|
|
30
|
+
//# sourceMappingURL=enrich-activix-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrich-activix-identity.d.ts","sourceRoot":"","sources":["../../src/utils/enrich-activix-identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,gBAAgB,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,QAAQ,EAAE,wBAAwB,GACjC,IAAI,CAON;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnC,IAAI,CAQN"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nested key on gateway **`identity`** / forwarded {@link RunSkillResponse.identity} carrying the
|
|
3
|
+
* last skill invoke’s token usage and cost (mirrors {@link RunSkillResponse.metadata} and trace usage).
|
|
4
|
+
* Forward the whole `identity` to later `runSkill` calls so Activix-oriented pipelines retain billing context.
|
|
5
|
+
*/
|
|
6
|
+
export const AI_SKILLS_LLM_IDENTITY_KEY = "aiSkillsLlm";
|
|
7
|
+
/**
|
|
8
|
+
* Attach LLM billing snapshot for downstream / Activix chaining. Overwrites any prior `aiSkillsLlm` on this object.
|
|
9
|
+
*/
|
|
10
|
+
export function enrichIdentityWithAiSkillsLlmSnapshot(identity, snapshot) {
|
|
11
|
+
identity[AI_SKILLS_LLM_IDENTITY_KEY] = {
|
|
12
|
+
usage: snapshot.usage,
|
|
13
|
+
...(snapshot.costUsd !== undefined ? { costUsd: snapshot.costUsd } : {}),
|
|
14
|
+
...(snapshot.costStatus !== undefined ? { costStatus: snapshot.costStatus } : {}),
|
|
15
|
+
...(snapshot.modelUsed !== undefined ? { modelUsed: snapshot.modelUsed } : {}),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Activix identity (library boundary): `identity` here is **runtime** request data from the caller,
|
|
20
|
+
* not SDK or env config. We do not create `identity` when upstream omits it.
|
|
21
|
+
* When `identity` is present, we only add work-scope context for **this** call: set `skillId`
|
|
22
|
+
* on the envelope if it was not already supplied and the request carries a `skillId`.
|
|
23
|
+
*
|
|
24
|
+
* We do **not** mint `sessionId`, overwrite upstream ids, or add or “fix” `instance`
|
|
25
|
+
* (`instance` is optional per the identity contract; the gateway may still set it).
|
|
26
|
+
*/
|
|
27
|
+
export function enrichActivixIdentityForGateway(identity, options) {
|
|
28
|
+
if (options.skillId != null &&
|
|
29
|
+
String(options.skillId).trim() !== "" &&
|
|
30
|
+
identity.skillId == null) {
|
|
31
|
+
identity.skillId = options.skillId;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=enrich-activix-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrich-activix-identity.js","sourceRoot":"","sources":["../../src/utils/enrich-activix-identity.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAa,CAAC;AASxD;;GAEG;AACH,MAAM,UAAU,qCAAqC,CACnD,QAA6B,EAC7B,QAAkC;IAElC,QAAQ,CAAC,0BAA0B,CAAC,GAAG;QACrC,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAA6B,EAC7B,OAAoC;IAEpC,IACE,OAAO,CAAC,OAAO,IAAI,IAAI;QACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QACrC,QAAQ,CAAC,OAAO,IAAI,IAAI,EACxB,CAAC;QACD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACrC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LoggingConfig, RuntimeIdentity } from "@x12i/logxer";
|
|
2
|
+
/**
|
|
3
|
+
* Reads `@exellix/ai-skills` semver from the package root (works from `src/` or `dist/`).
|
|
4
|
+
*/
|
|
5
|
+
export declare function readAiSkillsLibraryVersion(): string | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Default {@link LoggingConfig} for `createLogxer` in this repo: structured {@link RuntimeIdentity}
|
|
8
|
+
* for Logxer 4.x envelopes and optional host overrides.
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildAiSkillsLogxerLoggingConfig(opts?: {
|
|
11
|
+
/** Becomes `RuntimeIdentity.service` (typically {@link ExellixSkillsClientOptions.packageName}). */
|
|
12
|
+
service?: string;
|
|
13
|
+
/** Shallow-merged on top of library defaults. */
|
|
14
|
+
runtimeIdentity?: Partial<RuntimeIdentity>;
|
|
15
|
+
}): LoggingConfig;
|
|
16
|
+
//# sourceMappingURL=exellix-skills-logxer-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exellix-skills-logxer-defaults.d.ts","sourceRoot":"","sources":["../../src/utils/exellix-skills-logxer-defaults.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAInE;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,SAAS,CAQ/D;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,CAAC,EAAE;IACpD,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9C,GAAG,aAAa,CAahB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { hostname } from "node:os";
|
|
5
|
+
const REPO_ROOT = join(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
6
|
+
/**
|
|
7
|
+
* Reads `@exellix/ai-skills` semver from the package root (works from `src/` or `dist/`).
|
|
8
|
+
*/
|
|
9
|
+
export function readAiSkillsLibraryVersion() {
|
|
10
|
+
try {
|
|
11
|
+
const raw = readFileSync(join(REPO_ROOT, "package.json"), "utf8");
|
|
12
|
+
const v = JSON.parse(raw)?.version;
|
|
13
|
+
return typeof v === "string" ? v : undefined;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Default {@link LoggingConfig} for `createLogxer` in this repo: structured {@link RuntimeIdentity}
|
|
21
|
+
* for Logxer 4.x envelopes and optional host overrides.
|
|
22
|
+
*/
|
|
23
|
+
export function buildAiSkillsLogxerLoggingConfig(opts) {
|
|
24
|
+
const libraryVersion = readAiSkillsLibraryVersion() ?? "unknown";
|
|
25
|
+
const runtimeIdentity = {
|
|
26
|
+
service: opts?.service ?? "@exellix/ai-skills",
|
|
27
|
+
version: libraryVersion,
|
|
28
|
+
env: process.env.NODE_ENV ?? "development",
|
|
29
|
+
host: hostname(),
|
|
30
|
+
pid: process.pid,
|
|
31
|
+
libraryPackage: "@exellix/ai-skills",
|
|
32
|
+
libraryVersion,
|
|
33
|
+
...opts?.runtimeIdentity,
|
|
34
|
+
};
|
|
35
|
+
return { runtimeIdentity };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=exellix-skills-logxer-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exellix-skills-logxer-defaults.js","sourceRoot":"","sources":["../../src/utils/exellix-skills-logxer-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACtC,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QACnC,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAC,IAKhD;IACG,MAAM,cAAc,GAAG,0BAA0B,EAAE,IAAI,SAAS,CAAC;IACjE,MAAM,eAAe,GAAoB;QACrC,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,oBAAoB;QAC9C,OAAO,EAAE,cAAc;QACvB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;QAC1C,IAAI,EAAE,QAAQ,EAAE;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,cAAc,EAAE,oBAAoB;QACpC,cAAc;QACd,GAAG,IAAI,EAAE,eAAe;KAC3B,CAAC;IACF,OAAO,EAAE,eAAe,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Flex-MD parsing for `@exellix/ai-skills` when the gateway does not supply parsed payloads.
|
|
3
|
+
*
|
|
4
|
+
* **Not the same as** `@x12i/ai-gateway`’s `extractJsonFromFlexMd` (see `docs/FLEX_MD_AND_TESTING.md`).
|
|
5
|
+
*
|
|
6
|
+
* - Loads `flex-md` only via **dynamic ESM** `import('flex-md')` (no `require`).
|
|
7
|
+
* - Falls back to a small parser for `[[frame:...]]` + `@payload:name` text if the library is unavailable or yields no structure.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
type ParsedFlexMd = {
|
|
12
|
+
frame: string;
|
|
13
|
+
payloads: Record<string, string>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Parse model output into `{ frame, payloads }`.
|
|
17
|
+
*
|
|
18
|
+
* @param text - Raw markdown / Flex-MD text from the model or gateway.
|
|
19
|
+
* @returns Frame name and string payloads (non-strings JSON-stringified).
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseFlexMd(text: string): Promise<ParsedFlexMd>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=flex-md-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flex-md-parser.d.ts","sourceRoot":"","sources":["../../src/utils/flex-md-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,KAAK,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAiFxE;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA4BrE"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Flex-MD parsing for `@exellix/ai-skills` when the gateway does not supply parsed payloads.
|
|
3
|
+
*
|
|
4
|
+
* **Not the same as** `@x12i/ai-gateway`’s `extractJsonFromFlexMd` (see `docs/FLEX_MD_AND_TESTING.md`).
|
|
5
|
+
*
|
|
6
|
+
* - Loads `flex-md` only via **dynamic ESM** `import('flex-md')` (no `require`).
|
|
7
|
+
* - Falls back to a small parser for `[[frame:...]]` + `@payload:name` text if the library is unavailable or yields no structure.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
let cachedFlexMdModule = null;
|
|
12
|
+
let cachedFlexMdLoadError = null;
|
|
13
|
+
function normalizePayloads(candidate) {
|
|
14
|
+
if (!candidate || typeof candidate !== "object" || Array.isArray(candidate)) {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
const payloads = {};
|
|
18
|
+
for (const [key, value] of Object.entries(candidate)) {
|
|
19
|
+
if (value === undefined || value === null) {
|
|
20
|
+
payloads[key] = "";
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
payloads[key] = typeof value === "string" ? value : JSON.stringify(value);
|
|
24
|
+
}
|
|
25
|
+
return payloads;
|
|
26
|
+
}
|
|
27
|
+
function fallbackMarkdownParser(text) {
|
|
28
|
+
const frameMatch = text.match(/\[\[frame:\s*([^\]]+)\]\]/);
|
|
29
|
+
const frame = frameMatch ? frameMatch[1].trim() : "unknown";
|
|
30
|
+
const payloads = {};
|
|
31
|
+
const parts = text.split(/@payload:\s*([^\n\r]+)/);
|
|
32
|
+
for (let i = 1; i < parts.length; i += 2) {
|
|
33
|
+
const name = parts[i].trim();
|
|
34
|
+
const content = parts[i + 1] ? parts[i + 1].trim() : "";
|
|
35
|
+
payloads[name] = content;
|
|
36
|
+
}
|
|
37
|
+
return { frame, payloads };
|
|
38
|
+
}
|
|
39
|
+
async function loadFlexMdModule() {
|
|
40
|
+
if (cachedFlexMdModule) {
|
|
41
|
+
return cachedFlexMdModule;
|
|
42
|
+
}
|
|
43
|
+
if (cachedFlexMdLoadError) {
|
|
44
|
+
throw cachedFlexMdLoadError;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
// Strict ESM load path for flex-md.
|
|
48
|
+
// flex-md's typings don't expose `default` on `import()`, but runtime may be CJS interop shape.
|
|
49
|
+
const importedRaw = await import("flex-md");
|
|
50
|
+
const imported = importedRaw;
|
|
51
|
+
const moduleShape = (imported.default ?? imported);
|
|
52
|
+
cachedFlexMdModule = moduleShape;
|
|
53
|
+
return moduleShape;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
57
|
+
cachedFlexMdLoadError = new Error([
|
|
58
|
+
"flex-md ES module compatibility issue:",
|
|
59
|
+
`ES import fails: ${message}`,
|
|
60
|
+
"flex-md must be imported as an ES module"
|
|
61
|
+
].join("\n"));
|
|
62
|
+
throw cachedFlexMdLoadError;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Parse model output into `{ frame, payloads }`.
|
|
67
|
+
*
|
|
68
|
+
* @param text - Raw markdown / Flex-MD text from the model or gateway.
|
|
69
|
+
* @returns Frame name and string payloads (non-strings JSON-stringified).
|
|
70
|
+
*/
|
|
71
|
+
export async function parseFlexMd(text) {
|
|
72
|
+
try {
|
|
73
|
+
const flexMd = await loadFlexMdModule();
|
|
74
|
+
if (typeof flexMd.extractFromMarkdown === "function") {
|
|
75
|
+
const extracted = flexMd.extractFromMarkdown(text);
|
|
76
|
+
const parsed = extracted?.json ?? extracted?.data ?? extracted?.result ?? extracted;
|
|
77
|
+
const payloads = normalizePayloads(parsed);
|
|
78
|
+
if (Object.keys(payloads).length > 0) {
|
|
79
|
+
return {
|
|
80
|
+
frame: typeof extracted?.frame === "string" ? extracted.frame : "unknown",
|
|
81
|
+
payloads
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (typeof flexMd.markdownToJson === "function") {
|
|
86
|
+
const parsed = flexMd.markdownToJson(text);
|
|
87
|
+
const payloads = normalizePayloads(parsed);
|
|
88
|
+
if (Object.keys(payloads).length > 0) {
|
|
89
|
+
return { frame: "unknown", payloads };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Fall back to local markdown parser when flex-md loading/parsing fails.
|
|
95
|
+
}
|
|
96
|
+
return fallbackMarkdownParser(text);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=flex-md-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flex-md-parser.js","sourceRoot":"","sources":["../../src/utils/flex-md-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { EffectiveModelConfigSlice } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Routing / generation facts exposed on gateway `invoke()` responses (from router metadata when forwarded).
|
|
4
|
+
*/
|
|
5
|
+
export type GatewayExecutionSummary = {
|
|
6
|
+
provider?: string;
|
|
7
|
+
modelUsed?: string;
|
|
8
|
+
effectiveMaxTokens?: number;
|
|
9
|
+
region?: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Reads execution summary from a gateway `invoke()` return value.
|
|
13
|
+
* Reads `@x12i/ai-gateway` ≥9.1.1 invoke **`metadata`** (routing slice always present on success when router/config supplies values). See **`docs/AI_GATEWAY_INVOKE_EXECUTION_METADATA.md`**.
|
|
14
|
+
*/
|
|
15
|
+
export declare function gatewayExecutionSummaryFromInvokeResponse(response: unknown): GatewayExecutionSummary;
|
|
16
|
+
/** Gateway ≥9.1.1 **`metadata.effectiveModelConfig`** (allowlisted slice); falls back to **`mergedModelConfig`** when present. */
|
|
17
|
+
export declare function effectiveModelConfigFromGatewayMetadata(metadata: Record<string, any> | undefined | null): EffectiveModelConfigSlice | undefined;
|
|
18
|
+
//# sourceMappingURL=gateway-execution-summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-execution-summary.d.ts","sourceRoot":"","sources":["../../src/utils/gateway-execution-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yCAAyC,CAAC,QAAQ,EAAE,OAAO,GAAG,uBAAuB,CA+BpG;AAED,kIAAkI;AAClI,wBAAgB,uCAAuC,CACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,GACjD,yBAAyB,GAAG,SAAS,CAKvC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads execution summary from a gateway `invoke()` return value.
|
|
3
|
+
* Reads `@x12i/ai-gateway` ≥9.1.1 invoke **`metadata`** (routing slice always present on success when router/config supplies values). See **`docs/AI_GATEWAY_INVOKE_EXECUTION_METADATA.md`**.
|
|
4
|
+
*/
|
|
5
|
+
export function gatewayExecutionSummaryFromInvokeResponse(response) {
|
|
6
|
+
const r = response;
|
|
7
|
+
if (!r || typeof r !== "object")
|
|
8
|
+
return {};
|
|
9
|
+
const md = r.metadata && typeof r.metadata === "object" && !Array.isArray(r.metadata) ? r.metadata : {};
|
|
10
|
+
const provider = typeof md.provider === "string" && md.provider.trim().length > 0
|
|
11
|
+
? md.provider.trim()
|
|
12
|
+
: typeof r.provider === "string" && r.provider.trim().length > 0
|
|
13
|
+
? r.provider.trim()
|
|
14
|
+
: undefined;
|
|
15
|
+
const modelUsed = (typeof md.modelUsed === "string" && md.modelUsed.trim().length > 0 ? md.modelUsed.trim() : undefined) ??
|
|
16
|
+
(typeof md.model === "string" && md.model.trim().length > 0 ? md.model.trim() : undefined) ??
|
|
17
|
+
(typeof r.model === "string" && r.model.trim().length > 0 ? r.model.trim() : undefined);
|
|
18
|
+
const effectiveMaxTokens = typeof md.maxTokensRequested === "number" && !Number.isNaN(md.maxTokensRequested)
|
|
19
|
+
? md.maxTokensRequested
|
|
20
|
+
: undefined;
|
|
21
|
+
const region = typeof md.region === "string" && md.region.trim().length > 0 ? md.region.trim() : undefined;
|
|
22
|
+
const out = {};
|
|
23
|
+
if (provider !== undefined)
|
|
24
|
+
out.provider = provider;
|
|
25
|
+
if (modelUsed !== undefined)
|
|
26
|
+
out.modelUsed = modelUsed;
|
|
27
|
+
if (effectiveMaxTokens !== undefined)
|
|
28
|
+
out.effectiveMaxTokens = effectiveMaxTokens;
|
|
29
|
+
if (region !== undefined)
|
|
30
|
+
out.region = region;
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/** Gateway ≥9.1.1 **`metadata.effectiveModelConfig`** (allowlisted slice); falls back to **`mergedModelConfig`** when present. */
|
|
34
|
+
export function effectiveModelConfigFromGatewayMetadata(metadata) {
|
|
35
|
+
if (!metadata || typeof metadata !== "object")
|
|
36
|
+
return undefined;
|
|
37
|
+
const raw = metadata.effectiveModelConfig ?? metadata.mergedModelConfig;
|
|
38
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
39
|
+
return undefined;
|
|
40
|
+
return raw;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=gateway-execution-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-execution-summary.js","sourceRoot":"","sources":["../../src/utils/gateway-execution-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { GatewayInvokeRejectionMetadata } from "@x12i/ai-gateway";
|
|
2
|
+
/**
|
|
3
|
+
* Reads `@x12i/ai-gateway` **`GatewayInvokeRejectionMetadata`** from a thrown **`invoke()`** error
|
|
4
|
+
* (`error.metadata`), walking **`cause`** a few hops (wrapped NO_PROVIDER errors preserve metadata on the wrapper).
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/x12i/ai-gateway — **`docs/AI_GATEWAY_INVOKE_EXECUTION_METADATA.md`**
|
|
7
|
+
*/
|
|
8
|
+
export declare function gatewayInvokeRejectionFromErrorChain(err: unknown): GatewayInvokeRejectionMetadata | undefined;
|
|
9
|
+
//# sourceMappingURL=gateway-invoke-rejection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-invoke-rejection.d.ts","sourceRoot":"","sources":["../../src/utils/gateway-invoke-rejection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,OAAO,GAAG,8BAA8B,GAAG,SAAS,CAW7G"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads `@x12i/ai-gateway` **`GatewayInvokeRejectionMetadata`** from a thrown **`invoke()`** error
|
|
3
|
+
* (`error.metadata`), walking **`cause`** a few hops (wrapped NO_PROVIDER errors preserve metadata on the wrapper).
|
|
4
|
+
*
|
|
5
|
+
* @see https://github.com/x12i/ai-gateway — **`docs/AI_GATEWAY_INVOKE_EXECUTION_METADATA.md`**
|
|
6
|
+
*/
|
|
7
|
+
export function gatewayInvokeRejectionFromErrorChain(err) {
|
|
8
|
+
let cur = err;
|
|
9
|
+
for (let depth = 0; depth < 8 && cur != null; depth++) {
|
|
10
|
+
const meta = readRejectionMetadataFromSingleError(cur);
|
|
11
|
+
if (meta !== undefined)
|
|
12
|
+
return meta;
|
|
13
|
+
cur =
|
|
14
|
+
typeof cur === "object" && cur !== null && "cause" in cur
|
|
15
|
+
? cur.cause
|
|
16
|
+
: undefined;
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
function readRejectionMetadataFromSingleError(err) {
|
|
21
|
+
if (!err || typeof err !== "object")
|
|
22
|
+
return undefined;
|
|
23
|
+
const m = err.metadata;
|
|
24
|
+
if (!m || typeof m !== "object" || Array.isArray(m))
|
|
25
|
+
return undefined;
|
|
26
|
+
return m;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=gateway-invoke-rejection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-invoke-rejection.js","sourceRoot":"","sources":["../../src/utils/gateway-invoke-rejection.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,oCAAoC,CAAC,GAAY;IAC7D,IAAI,GAAG,GAAY,GAAG,CAAC;IACvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,oCAAoC,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACpC,GAAG;YACC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG;gBACrD,CAAC,CAAE,GAA2B,CAAC,KAAK;gBACpC,CAAC,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,oCAAoC,CAAC,GAAY;IACtD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,CAAC,GAAI,GAA6D,CAAC,QAAQ,CAAC;IAClF,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACtE,OAAO,CAAmC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SkillCostStatus, SkillTraceUsage } from "../types.js";
|
|
2
|
+
export type { SkillCostStatus };
|
|
3
|
+
export interface NormalizedSkillBilling {
|
|
4
|
+
usage: SkillTraceUsage;
|
|
5
|
+
/** USD total when gateway/router supplied a numeric cost. */
|
|
6
|
+
costUsd?: number;
|
|
7
|
+
costStatus?: SkillCostStatus;
|
|
8
|
+
modelUsed?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function hasMeaningfulUsage(usage: SkillTraceUsage): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Canonical billing slice for {@link RunSkillResponse.metadata}, traces, and Activix patches.
|
|
13
|
+
* Mirrors `@x12i/ai-gateway` invoke metadata (`costUsd` / `cost`, `costStatus: priced|unpriced`).
|
|
14
|
+
* SDK responses use `costUsd` when priced and `costStatus: "unpriced"` (or legacy `"deferred"`) when not.
|
|
15
|
+
*/
|
|
16
|
+
export declare function normalizeSkillBillingFromGatewayMetadata(metadata: Record<string, any> | undefined | null, usageOverride?: SkillTraceUsage): NormalizedSkillBilling;
|
|
17
|
+
//# sourceMappingURL=normalize-billing-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-billing-metadata.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-billing-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGpE,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,eAAe,CAAC;IACvB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8BD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAMlE;AAED;;;;GAIG;AACH,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,EAChD,aAAa,CAAC,EAAE,eAAe,GAC9B,sBAAsB,CAyCxB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { usageFromGatewayMetadata } from "../diagnostics/gateway-usage.js";
|
|
2
|
+
/** SDK-facing cost statuses (gateway `priced` is represented only via {@link costUsd}). */
|
|
3
|
+
const SDK_COST_STATUS_VALUES = new Set(["unpriced", "deferred"]);
|
|
4
|
+
function readCostUsd(metadata) {
|
|
5
|
+
if (typeof metadata.costUsd === "number" && !Number.isNaN(metadata.costUsd)) {
|
|
6
|
+
return metadata.costUsd;
|
|
7
|
+
}
|
|
8
|
+
if (typeof metadata.cost === "number" && !Number.isNaN(metadata.cost)) {
|
|
9
|
+
return metadata.cost;
|
|
10
|
+
}
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
function readSdkCostStatus(metadata) {
|
|
14
|
+
const raw = metadata.costStatus;
|
|
15
|
+
if (typeof raw !== "string")
|
|
16
|
+
return undefined;
|
|
17
|
+
// Gateway ≥9.3: `priced` is carried as costUsd/cost — never surface `costStatus: "priced"` downstream.
|
|
18
|
+
if (raw === "priced")
|
|
19
|
+
return undefined;
|
|
20
|
+
if (SDK_COST_STATUS_VALUES.has(raw)) {
|
|
21
|
+
return raw;
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
function readGatewayUnpriced(metadata) {
|
|
26
|
+
return metadata.costStatus === "unpriced";
|
|
27
|
+
}
|
|
28
|
+
export function hasMeaningfulUsage(usage) {
|
|
29
|
+
return (usage.tokensTotal > 0 ||
|
|
30
|
+
usage.tokensPrompt > 0 ||
|
|
31
|
+
usage.tokensCompletion > 0);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Canonical billing slice for {@link RunSkillResponse.metadata}, traces, and Activix patches.
|
|
35
|
+
* Mirrors `@x12i/ai-gateway` invoke metadata (`costUsd` / `cost`, `costStatus: priced|unpriced`).
|
|
36
|
+
* SDK responses use `costUsd` when priced and `costStatus: "unpriced"` (or legacy `"deferred"`) when not.
|
|
37
|
+
*/
|
|
38
|
+
export function normalizeSkillBillingFromGatewayMetadata(metadata, usageOverride) {
|
|
39
|
+
const md = metadata ?? {};
|
|
40
|
+
const usage = usageOverride ?? usageFromGatewayMetadata(md);
|
|
41
|
+
const costUsd = readCostUsd(md);
|
|
42
|
+
const explicitStatus = readSdkCostStatus(md);
|
|
43
|
+
const gatewayMarkedUnpriced = readGatewayUnpriced(md);
|
|
44
|
+
const modelUsed = typeof md.modelUsed === "string" && md.modelUsed.trim().length > 0
|
|
45
|
+
? md.modelUsed.trim()
|
|
46
|
+
: typeof md.model === "string" && md.model.trim().length > 0
|
|
47
|
+
? md.model.trim()
|
|
48
|
+
: undefined;
|
|
49
|
+
if (costUsd !== undefined) {
|
|
50
|
+
return {
|
|
51
|
+
usage,
|
|
52
|
+
costUsd,
|
|
53
|
+
...(modelUsed !== undefined ? { modelUsed } : {}),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (explicitStatus !== undefined || gatewayMarkedUnpriced) {
|
|
57
|
+
return {
|
|
58
|
+
usage,
|
|
59
|
+
costStatus: explicitStatus ?? "unpriced",
|
|
60
|
+
...(modelUsed !== undefined ? { modelUsed } : {}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (hasMeaningfulUsage(usage)) {
|
|
64
|
+
return {
|
|
65
|
+
usage,
|
|
66
|
+
costStatus: "unpriced",
|
|
67
|
+
...(modelUsed !== undefined ? { modelUsed } : {}),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
usage,
|
|
72
|
+
...(modelUsed !== undefined ? { modelUsed } : {}),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=normalize-billing-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-billing-metadata.js","sourceRoot":"","sources":["../../src/utils/normalize-billing-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph / studio `outputContract` — keys expected on `output.parsed` (e.g. `shortAnswer`, `fullAnswer`).
|
|
3
|
+
*/
|
|
4
|
+
export type OutputContract = string[] | Record<string, unknown> | {
|
|
5
|
+
fields?: string[];
|
|
6
|
+
keys?: string[];
|
|
7
|
+
required?: string[];
|
|
8
|
+
};
|
|
9
|
+
/** Resolves contract field names from common graph-engine shapes. */
|
|
10
|
+
export declare function resolveOutputContractFields(contract: OutputContract | undefined): string[];
|
|
11
|
+
/** `### Short Answer` → `shortAnswer`. */
|
|
12
|
+
export declare function markdownHeadingToFieldKey(heading: string): string;
|
|
13
|
+
/** Parses `### Section` blocks from markdown into camelCase field keys. */
|
|
14
|
+
export declare function parseMarkdownSectionsToFields(text: string): Record<string, string>;
|
|
15
|
+
/**
|
|
16
|
+
* Fills `parsed` keys requested by `outputContract` from FlexMD payloads and markdown sections.
|
|
17
|
+
* Does not remove existing parsed keys; only adds missing satisfiable values.
|
|
18
|
+
*/
|
|
19
|
+
export declare function enrichParsedForOutputContract(args: {
|
|
20
|
+
parsed: Record<string, unknown>;
|
|
21
|
+
flexMdPayloads?: Record<string, string>;
|
|
22
|
+
rawText?: string;
|
|
23
|
+
outputContract?: OutputContract;
|
|
24
|
+
}): Record<string, unknown>;
|
|
25
|
+
//# sourceMappingURL=normalize-output-parsed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-output-parsed.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-output-parsed.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,EAAE,GACR,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB;IACE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAMN,qEAAqE;AACrE,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,EAAE,CAqB1F;AAED,0CAA0C;AAC1C,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAcjE;AAYD,2EAA2E;AAC3E,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBlF;AAQD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0C1B"}
|