@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,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* nx-content / ai-gateway treat strings with **no whitespace** as registry keys.
|
|
3
|
+
* Ensure DB-sourced templates are always parsed as literal template text.
|
|
4
|
+
*/
|
|
5
|
+
export function ensureGatewayTreatsAsTemplateText(text) {
|
|
6
|
+
if (typeof text !== "string")
|
|
7
|
+
return text;
|
|
8
|
+
const t = text.trim();
|
|
9
|
+
if (t.length === 0)
|
|
10
|
+
return text;
|
|
11
|
+
if (/\s/.test(t))
|
|
12
|
+
return text;
|
|
13
|
+
return `${text}\n`;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=gateway-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-template.js","sourceRoot":"","sources":["../../src/catalog/gateway-template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAAC,IAAY;IAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,GAAG,IAAI,IAAI,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/catalog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/catalog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SkillCatalog } from "./skill-catalog.js";
|
|
2
|
+
/** Canonical Mongo / xillix keys for skills that ship template seeds (subset of the Catalox catalog). */
|
|
3
|
+
export declare const SEED_CANONICAL_SKILL_KEYS: `skills/${string}`[];
|
|
4
|
+
export interface SeedXillixCatalogOptions {
|
|
5
|
+
/** Root folder containing `<id>.instructions.md` and `<id>.prompt.md` (default: `.metadata/skills`). */
|
|
6
|
+
templatesRoot?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Idempotent upsert of built-in skills; loads template bodies from disk when present.
|
|
10
|
+
*/
|
|
11
|
+
export declare function seedXillixCatalog(catalog: SkillCatalog, options?: SeedXillixCatalogOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/catalog/seed.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,yGAAyG;AACzG,eAAO,MAAM,yBAAyB,sBAA+D,CAAC;AAEtG,MAAM,WAAW,wBAAwB;IACrC,wGAAwG;IACxG,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAUD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BpH"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { AI_SKILLS_CATALOG_ITEMS, AI_SKILLS_MONGO_SEED_KEYS } from "../catalox/ai-skills-catalog.js";
|
|
4
|
+
/** Canonical Mongo / xillix keys for skills that ship template seeds (subset of the Catalox catalog). */
|
|
5
|
+
export const SEED_CANONICAL_SKILL_KEYS = AI_SKILLS_MONGO_SEED_KEYS.map((k) => `skills/${k}`);
|
|
6
|
+
function readOptionalUtf8(filePath) {
|
|
7
|
+
try {
|
|
8
|
+
return fs.readFileSync(filePath, "utf8");
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Idempotent upsert of built-in skills; loads template bodies from disk when present.
|
|
16
|
+
*/
|
|
17
|
+
export async function seedXillixCatalog(catalog, options = {}) {
|
|
18
|
+
const root = options.templatesRoot ?? path.join(process.cwd(), ".metadata", "skills");
|
|
19
|
+
for (const spec of AI_SKILLS_CATALOG_ITEMS) {
|
|
20
|
+
if (!spec.xillixSeed)
|
|
21
|
+
continue;
|
|
22
|
+
const skillKey = `skills/${spec.skillKey}`;
|
|
23
|
+
const xs = spec.xillixSeed;
|
|
24
|
+
const id = spec.skillKey;
|
|
25
|
+
const instructionsText = readOptionalUtf8(path.join(root, `${id}.instructions.md`));
|
|
26
|
+
const promptText = readOptionalUtf8(path.join(root, `${id}.prompt.md`));
|
|
27
|
+
await catalog.upsert({
|
|
28
|
+
skillKey,
|
|
29
|
+
displayName: spec.title,
|
|
30
|
+
description: spec.description,
|
|
31
|
+
lifecycle: "active",
|
|
32
|
+
tags: ["xeonox", "seed"],
|
|
33
|
+
deletedAt: null,
|
|
34
|
+
outputFrame: xs.outputFrame,
|
|
35
|
+
requiredVariables: xs.requiredVariables,
|
|
36
|
+
optionalVariables: xs.optionalVariables,
|
|
37
|
+
outputSchema: xs.outputSchema,
|
|
38
|
+
inputHints: { variables: { required: xs.requiredVariables, optional: xs.optionalVariables } },
|
|
39
|
+
outputHints: { frame: xs.outputFrame },
|
|
40
|
+
...(instructionsText !== undefined ? { instructionsText } : {}),
|
|
41
|
+
...(promptText !== undefined ? { promptText } : {}),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/catalog/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAGrG,yGAAyG;AACzG,MAAM,CAAC,MAAM,yBAAyB,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAW,CAAC,CAAC;AAOtG,SAAS,gBAAgB,CAAC,QAAgB;IACtC,IAAI,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAqB,EAAE,UAAoC,EAAE;IACjG,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEtF,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,SAAS;QAC/B,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACpF,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;QACxE,MAAM,OAAO,CAAC,MAAM,CAAC;YACjB,QAAQ;YACR,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YACxB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,EAAE,CAAC,WAAW;YAC3B,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;YACvC,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;YACvC,YAAY,EAAE,EAAE,CAAC,YAAY;YAC7B,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAAC,iBAAiB,EAAE,EAAE;YAC7F,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE;YACtC,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { XronoxStore } from "@xronoces/xronox-store";
|
|
2
|
+
import type { AiSkillCatalogDocument, SkillCatalogListOptions, SkillCatalogPatchOptions } from "./types.js";
|
|
3
|
+
export declare class SkillCatalog {
|
|
4
|
+
private readonly store;
|
|
5
|
+
constructor(store: XronoxStore);
|
|
6
|
+
private col;
|
|
7
|
+
create(doc: Omit<AiSkillCatalogDocument, "catalogVersion" | "createdAt" | "updatedAt" | "deletedAt"> & {
|
|
8
|
+
deletedAt?: null;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
get(skillKey: string, opts?: {
|
|
11
|
+
includeHidden?: boolean;
|
|
12
|
+
}): Promise<AiSkillCatalogDocument | null>;
|
|
13
|
+
patch(skillKey: string, fields: Partial<AiSkillCatalogDocument>, opts?: SkillCatalogPatchOptions): Promise<void>;
|
|
14
|
+
/** Soft-delete: sets `deletedAt` and optional lifecycle. */
|
|
15
|
+
archive(skillKey: string, opts?: SkillCatalogPatchOptions & {
|
|
16
|
+
lifecycle?: "deprecated";
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Hard-remove catalog row. Only when not production and `XILLIX_ALLOW_HARD_DELETE=true`.
|
|
20
|
+
*/
|
|
21
|
+
hardDelete(skillKey: string): Promise<void>;
|
|
22
|
+
list(options?: SkillCatalogListOptions): Promise<AiSkillCatalogDocument[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Insert or full replace by `skillKey` (upsert). Used by seeds and migrations.
|
|
25
|
+
*/
|
|
26
|
+
upsert(doc: Omit<AiSkillCatalogDocument, "catalogVersion" | "createdAt" | "updatedAt"> & Partial<Pick<AiSkillCatalogDocument, "catalogVersion" | "createdAt" | "updatedAt">>): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=skill-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-catalog.d.ts","sourceRoot":"","sources":["../../src/catalog/skill-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAsB5G,qBAAa,YAAY;IACT,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,WAAW;IAE/C,OAAO,CAAC,GAAG;IAIL,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3I,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IASjG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtH,4DAA4D;IACtD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,wBAAwB,GAAG;QAAE,SAAS,CAAC,EAAE,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9G;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C,IAAI,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAiCpF;;OAEG;IACG,MAAM,CACR,GAAG,EAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,GAAG,WAAW,GAAG,WAAW,CAAC,GAC3E,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,GACxF,OAAO,CAAC,IAAI,CAAC;CAmBnB"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { AI_SKILL_CATALOG_COLLECTION } from "./constants.js";
|
|
2
|
+
import { isXillixHardDeleteAllowed } from "./env.js";
|
|
3
|
+
import { SkillCatalogDuplicateKeyError, SkillCatalogNotFoundError, SkillCatalogVersionConflictError, } from "./types.js";
|
|
4
|
+
function isDuplicateKeyError(err) {
|
|
5
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
6
|
+
if (msg.includes("E11000") || msg.includes("11000"))
|
|
7
|
+
return true;
|
|
8
|
+
const code = err?.code;
|
|
9
|
+
return code === 11000;
|
|
10
|
+
}
|
|
11
|
+
function stripUndefined(o) {
|
|
12
|
+
const out = { ...o };
|
|
13
|
+
for (const k of Object.keys(out)) {
|
|
14
|
+
if (out[k] === undefined)
|
|
15
|
+
delete out[k];
|
|
16
|
+
}
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
export class SkillCatalog {
|
|
20
|
+
store;
|
|
21
|
+
constructor(store) {
|
|
22
|
+
this.store = store;
|
|
23
|
+
}
|
|
24
|
+
col() {
|
|
25
|
+
return this.store.collection(AI_SKILL_CATALOG_COLLECTION);
|
|
26
|
+
}
|
|
27
|
+
async create(doc) {
|
|
28
|
+
const now = new Date().toISOString();
|
|
29
|
+
const row = {
|
|
30
|
+
...doc,
|
|
31
|
+
catalogVersion: 1,
|
|
32
|
+
createdAt: now,
|
|
33
|
+
updatedAt: now,
|
|
34
|
+
deletedAt: doc.deletedAt ?? null,
|
|
35
|
+
};
|
|
36
|
+
try {
|
|
37
|
+
await this.col().insert(stripUndefined(row));
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
if (isDuplicateKeyError(err)) {
|
|
41
|
+
throw new SkillCatalogDuplicateKeyError(doc.skillKey);
|
|
42
|
+
}
|
|
43
|
+
throw err;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async get(skillKey, opts) {
|
|
47
|
+
if (opts?.includeHidden) {
|
|
48
|
+
const r = await this.col().readMany({ skillKey }, { includeHidden: true, limit: 1 });
|
|
49
|
+
return r[0] ?? null;
|
|
50
|
+
}
|
|
51
|
+
const row = await this.col().getByKey(skillKey);
|
|
52
|
+
return row;
|
|
53
|
+
}
|
|
54
|
+
async patch(skillKey, fields, opts) {
|
|
55
|
+
const cur = await this.get(skillKey, { includeHidden: true });
|
|
56
|
+
if (!cur)
|
|
57
|
+
throw new SkillCatalogNotFoundError(skillKey);
|
|
58
|
+
if (opts?.expectedVersion !== undefined && cur.catalogVersion !== opts.expectedVersion) {
|
|
59
|
+
throw new SkillCatalogVersionConflictError(skillKey);
|
|
60
|
+
}
|
|
61
|
+
const nextVersion = (cur.catalogVersion ?? 0) + 1;
|
|
62
|
+
const { skillKey: _sk, catalogVersion: _cv, createdAt: _ca, ...rest } = fields;
|
|
63
|
+
const patch = stripUndefined({
|
|
64
|
+
...rest,
|
|
65
|
+
catalogVersion: nextVersion,
|
|
66
|
+
updatedAt: new Date().toISOString(),
|
|
67
|
+
});
|
|
68
|
+
await this.col().patchByKey(skillKey, patch);
|
|
69
|
+
}
|
|
70
|
+
/** Soft-delete: sets `deletedAt` and optional lifecycle. */
|
|
71
|
+
async archive(skillKey, opts) {
|
|
72
|
+
await this.patch(skillKey, {
|
|
73
|
+
deletedAt: new Date().toISOString(),
|
|
74
|
+
lifecycle: opts?.lifecycle ?? "deprecated",
|
|
75
|
+
}, opts);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Hard-remove catalog row. Only when not production and `XILLIX_ALLOW_HARD_DELETE=true`.
|
|
79
|
+
*/
|
|
80
|
+
async hardDelete(skillKey) {
|
|
81
|
+
if (!isXillixHardDeleteAllowed()) {
|
|
82
|
+
throw new Error("[AI-SKILLS] hardDelete is only allowed when NODE_ENV !== 'production' and XILLIX_ALLOW_HARD_DELETE=true");
|
|
83
|
+
}
|
|
84
|
+
const n = await this.col().deleteMany({ skillKey }, { includeHidden: true, clearCache: "all" });
|
|
85
|
+
if (n < 1)
|
|
86
|
+
throw new SkillCatalogNotFoundError(skillKey);
|
|
87
|
+
}
|
|
88
|
+
async list(options = {}) {
|
|
89
|
+
const scanLimit = options.scanLimit ?? 10_000;
|
|
90
|
+
const rows = await this.col().readMany({}, { includeHidden: options.includeHidden === true, limit: scanLimit, sort: { skillKey: 1 } });
|
|
91
|
+
let out = rows;
|
|
92
|
+
if (options.activeOnly) {
|
|
93
|
+
out = out.filter((r) => r.lifecycle === "active" && (r.deletedAt === null || r.deletedAt === undefined));
|
|
94
|
+
}
|
|
95
|
+
if (options.tag) {
|
|
96
|
+
out = out.filter((r) => Array.isArray(r.tags) && r.tags.includes(options.tag));
|
|
97
|
+
}
|
|
98
|
+
if (options.skillKeyPrefix) {
|
|
99
|
+
const p = options.skillKeyPrefix;
|
|
100
|
+
out = out.filter((r) => typeof r.skillKey === "string" && r.skillKey.startsWith(p));
|
|
101
|
+
}
|
|
102
|
+
if (options.updatedAfter) {
|
|
103
|
+
const after = new Date(options.updatedAfter).getTime();
|
|
104
|
+
out = out.filter((r) => {
|
|
105
|
+
const t = Date.parse(r.updatedAt);
|
|
106
|
+
return !Number.isNaN(t) && t > after;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
const offset = options.offset ?? 0;
|
|
110
|
+
const limit = options.limit;
|
|
111
|
+
if (offset > 0 || limit !== undefined) {
|
|
112
|
+
const end = limit === undefined ? undefined : offset + limit;
|
|
113
|
+
out = out.slice(offset, end);
|
|
114
|
+
}
|
|
115
|
+
return out;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Insert or full replace by `skillKey` (upsert). Used by seeds and migrations.
|
|
119
|
+
*/
|
|
120
|
+
async upsert(doc) {
|
|
121
|
+
const existing = await this.get(doc.skillKey, { includeHidden: true });
|
|
122
|
+
const now = new Date().toISOString();
|
|
123
|
+
if (!existing) {
|
|
124
|
+
const { catalogVersion: _cv, createdAt: _c, updatedAt: _u, ...forCreate } = doc;
|
|
125
|
+
await this.create(forCreate);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const nextVersion = doc.catalogVersion !== undefined ? doc.catalogVersion : (existing.catalogVersion ?? 0) + 1;
|
|
129
|
+
const merged = {
|
|
130
|
+
...existing,
|
|
131
|
+
...doc,
|
|
132
|
+
catalogVersion: nextVersion,
|
|
133
|
+
updatedAt: doc.updatedAt ?? now,
|
|
134
|
+
createdAt: existing.createdAt,
|
|
135
|
+
};
|
|
136
|
+
await this.col().update(doc.skillKey, stripUndefined(merged));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=skill-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-catalog.js","sourceRoot":"","sources":["../../src/catalog/skill-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { XronoxStore } from "@xronoces/xronox-store";
|
|
2
|
+
import { SkillCatalog } from "./skill-catalog.js";
|
|
3
|
+
export interface CreateSkillCatalogStoreOptions {
|
|
4
|
+
mongoUri?: string;
|
|
5
|
+
mongoDb?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SkillCatalogStoreBundle {
|
|
8
|
+
store: XronoxStore;
|
|
9
|
+
catalog: SkillCatalog;
|
|
10
|
+
init: () => Promise<void>;
|
|
11
|
+
close: () => Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Creates an `XronoxStore` scoped to `XILLIX_META_DB` (or `mongoDb`) and a {@link SkillCatalog} facade.
|
|
15
|
+
* Call `init()` before CRUD; call `close()` when finished.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createSkillCatalogStore(options?: CreateSkillCatalogStoreOptions): SkillCatalogStoreBundle;
|
|
18
|
+
//# sourceMappingURL=store-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-factory.d.ts","sourceRoot":"","sources":["../../src/catalog/store-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAIrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,MAAM,WAAW,8BAA8B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACpC,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,8BAAmC,GAAG,uBAAuB,CAoB7G"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { XronoxStore } from "@xronoces/xronox-store";
|
|
2
|
+
import { AI_SKILL_CATALOG_COLLECTION } from "./constants.js";
|
|
3
|
+
import { getXillixMetaDbName } from "./env.js";
|
|
4
|
+
import { SkillCatalog } from "./skill-catalog.js";
|
|
5
|
+
const catalogCollectionDefinition = {
|
|
6
|
+
name: AI_SKILL_CATALOG_COLLECTION,
|
|
7
|
+
primaryKey: "skillKey",
|
|
8
|
+
indexes: [{ keys: { skillKey: 1 }, options: { unique: true, name: "uniq_skillKey" } }],
|
|
9
|
+
visibility: { field: "deletedAt", mode: "hiddenIfNonNull" },
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Creates an `XronoxStore` scoped to `XILLIX_META_DB` (or `mongoDb`) and a {@link SkillCatalog} facade.
|
|
13
|
+
* Call `init()` before CRUD; call `close()` when finished.
|
|
14
|
+
*/
|
|
15
|
+
export function createSkillCatalogStore(options = {}) {
|
|
16
|
+
const mongoUri = options.mongoUri ?? process.env.MONGO_URI?.trim();
|
|
17
|
+
if (!mongoUri) {
|
|
18
|
+
throw new Error("[AI-SKILLS] createSkillCatalogStore: MONGO_URI is required (or pass mongoUri).");
|
|
19
|
+
}
|
|
20
|
+
const mongoDb = options.mongoDb ?? getXillixMetaDbName();
|
|
21
|
+
const store = new XronoxStore({
|
|
22
|
+
mongoUri,
|
|
23
|
+
mongoDb,
|
|
24
|
+
collections: [catalogCollectionDefinition],
|
|
25
|
+
// Surface duplicate key and other persist errors to callers (catalog API maps E11000).
|
|
26
|
+
errorHandling: { onPersistError: "throw" },
|
|
27
|
+
});
|
|
28
|
+
const catalog = new SkillCatalog(store);
|
|
29
|
+
return {
|
|
30
|
+
store,
|
|
31
|
+
catalog,
|
|
32
|
+
init: () => store.init(),
|
|
33
|
+
close: () => store.close(),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=store-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-factory.js","sourceRoot":"","sources":["../../src/catalog/store-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,2BAA2B,GAAyB;IACtD,IAAI,EAAE,2BAA2B;IACjC,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,CAAC;IACtF,UAAU,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE;CAC9D,CAAC;AAcF;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAA0C,EAAE;IAChF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,mBAAmB,EAAE,CAAC;IACzD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;QAC1B,QAAQ;QACR,OAAO;QACP,WAAW,EAAE,CAAC,2BAA2B,CAAC;QAC1C,uFAAuF;QACvF,aAAa,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE;KAC7C,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO;QACH,KAAK;QACL,OAAO;QACP,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;QACxB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;KAC7B,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export type SkillLifecycle = "active" | "deprecated";
|
|
2
|
+
/**
|
|
3
|
+
* Authoritative catalog row for a remote AI task skill (`skills/...` key).
|
|
4
|
+
* Template fields back optional xillix content mode (inline gateway templates).
|
|
5
|
+
*/
|
|
6
|
+
export interface AiSkillCatalogDocument {
|
|
7
|
+
skillKey: string;
|
|
8
|
+
displayName?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
inputHints?: Record<string, unknown>;
|
|
11
|
+
outputHints?: Record<string, unknown>;
|
|
12
|
+
/** System / instruction template body (FlexMD + tokens). */
|
|
13
|
+
instructionsText?: string;
|
|
14
|
+
/** User prompt template body (typically contains `{{input}}`). */
|
|
15
|
+
promptText?: string;
|
|
16
|
+
lifecycle: SkillLifecycle;
|
|
17
|
+
tags?: string[];
|
|
18
|
+
/** Monotonic document version for optimistic concurrency. */
|
|
19
|
+
catalogVersion: number;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
updatedAt: string;
|
|
22
|
+
deletedAt?: string | null;
|
|
23
|
+
/** FlexMD frame name after successful run (e.g. professional-answer). */
|
|
24
|
+
outputFrame?: string;
|
|
25
|
+
/** Optional JSON-schema-shaped hint for parsed output. */
|
|
26
|
+
outputSchema?: Record<string, unknown>;
|
|
27
|
+
requiredVariables?: string[];
|
|
28
|
+
optionalVariables?: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface SkillCatalogListOptions {
|
|
31
|
+
/** Only `lifecycle === 'active'` and not soft-deleted. */
|
|
32
|
+
activeOnly?: boolean;
|
|
33
|
+
/** Match any catalog whose `tags` contains this string. */
|
|
34
|
+
tag?: string;
|
|
35
|
+
/** `skillKey.startsWith(prefix)` */
|
|
36
|
+
skillKeyPrefix?: string;
|
|
37
|
+
/** ISO date string — keep rows with `updatedAt` strictly after this instant. */
|
|
38
|
+
updatedAfter?: string;
|
|
39
|
+
/** Include soft-deleted rows (admin). */
|
|
40
|
+
includeHidden?: boolean;
|
|
41
|
+
/** Max rows to scan from store before in-memory filtering (catalog-sized). */
|
|
42
|
+
scanLimit?: number;
|
|
43
|
+
offset?: number;
|
|
44
|
+
limit?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface SkillCatalogPatchOptions {
|
|
47
|
+
expectedVersion?: number;
|
|
48
|
+
}
|
|
49
|
+
export declare class SkillCatalogDuplicateKeyError extends Error {
|
|
50
|
+
readonly code: "SKILL_CATALOG_DUPLICATE_KEY";
|
|
51
|
+
constructor(skillKey: string);
|
|
52
|
+
}
|
|
53
|
+
export declare class SkillCatalogVersionConflictError extends Error {
|
|
54
|
+
readonly code: "SKILL_CATALOG_VERSION_CONFLICT";
|
|
55
|
+
constructor(skillKey: string);
|
|
56
|
+
}
|
|
57
|
+
export declare class SkillCatalogNotFoundError extends Error {
|
|
58
|
+
readonly code: "SKILL_CATALOG_NOT_FOUND";
|
|
59
|
+
constructor(skillKey: string);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalog/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,YAAY,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACpC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IACpD,QAAQ,CAAC,IAAI,EAAG,6BAA6B,CAAU;gBAC3C,QAAQ,EAAE,MAAM;CAI/B;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACvD,QAAQ,CAAC,IAAI,EAAG,gCAAgC,CAAU;gBAC9C,QAAQ,EAAE,MAAM;CAI/B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAG,yBAAyB,CAAU;gBACvC,QAAQ,EAAE,MAAM;CAI/B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export class SkillCatalogDuplicateKeyError extends Error {
|
|
2
|
+
code = "SKILL_CATALOG_DUPLICATE_KEY";
|
|
3
|
+
constructor(skillKey) {
|
|
4
|
+
super(`Skill catalog already has an entry for skillKey: ${skillKey}`);
|
|
5
|
+
this.name = "SkillCatalogDuplicateKeyError";
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class SkillCatalogVersionConflictError extends Error {
|
|
9
|
+
code = "SKILL_CATALOG_VERSION_CONFLICT";
|
|
10
|
+
constructor(skillKey) {
|
|
11
|
+
super(`Skill catalog version conflict for skillKey: ${skillKey}`);
|
|
12
|
+
this.name = "SkillCatalogVersionConflictError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class SkillCatalogNotFoundError extends Error {
|
|
16
|
+
code = "SKILL_CATALOG_NOT_FOUND";
|
|
17
|
+
constructor(skillKey) {
|
|
18
|
+
super(`Skill catalog entry not found: ${skillKey}`);
|
|
19
|
+
this.name = "SkillCatalogNotFoundError";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/catalog/types.ts"],"names":[],"mappings":"AAoDA,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAC3C,IAAI,GAAG,6BAAsC,CAAC;IACvD,YAAY,QAAgB;QACxB,KAAK,CAAC,oDAAoD,QAAQ,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAChD,CAAC;CACJ;AAED,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IAC9C,IAAI,GAAG,gCAAyC,CAAC;IAC1D,YAAY,QAAgB;QACxB,KAAK,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACnD,CAAC;CACJ;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACvC,IAAI,GAAG,yBAAkC,CAAC;IACnD,YAAY,QAAgB;QACxB,KAAK,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC5C,CAAC;CACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CatalogDescriptor } from "@x12i/catalox";
|
|
2
|
+
/** Catalox native catalog id for AI execution engines routable from {@link RunSkillRequest}. */
|
|
3
|
+
export declare const AI_ENGINES_CATALOG_ID: "ai-engines";
|
|
4
|
+
/**
|
|
5
|
+
* Default app binding for {@link AI_ENGINES_CATALOG_ID} (same app as `ai-skills` so one provision flow can attach both).
|
|
6
|
+
*/
|
|
7
|
+
export declare const AI_ENGINES_APP_ID: "ai-skills";
|
|
8
|
+
/** Descriptor version written by {@link scripts/provision-ai-engines-catalog}. */
|
|
9
|
+
export declare const AI_ENGINES_DESCRIPTOR_VERSION: "1";
|
|
10
|
+
export declare const DEFAULT_AI_ENGINE_CATALOG_ITEM_ID: "ai-gateway";
|
|
11
|
+
/** Single supported runtime engine; catalog still lists it for discovery / UIs (`npm run catalox:provision-ai-engines`). */
|
|
12
|
+
export declare const AI_ENGINE_CATALOG_ITEM_IDS: readonly ["ai-gateway"];
|
|
13
|
+
export type AiEngineCatalogItemId = (typeof AI_ENGINE_CATALOG_ITEM_IDS)[number];
|
|
14
|
+
export type AiEnginesCatalogItemSpec = {
|
|
15
|
+
engineId: AiEngineCatalogItemId;
|
|
16
|
+
title: string;
|
|
17
|
+
description: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Authoritative in-repo list for Catalox provisioning. Live discovery uses Catalox `listCatalogItems`.
|
|
21
|
+
*/
|
|
22
|
+
export declare const AI_ENGINES_CATALOG_ITEMS: readonly AiEnginesCatalogItemSpec[];
|
|
23
|
+
export declare function buildAiEnginesCatalogDescriptor(): CatalogDescriptor;
|
|
24
|
+
//# sourceMappingURL=ai-engines-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-engines-catalog.d.ts","sourceRoot":"","sources":["../../src/catalox/ai-engines-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAIvD,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,EAAG,YAAqB,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,iBAAiB,aAAmB,CAAC;AAElD,kFAAkF;AAClF,eAAO,MAAM,6BAA6B,EAAG,GAAY,CAAC;AAE1D,eAAO,MAAM,iCAAiC,EAAG,YAAqB,CAAC;AAEvE,4HAA4H;AAC5H,eAAO,MAAM,0BAA0B,yBAA0B,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,wBAAwB,EAM9D,CAAC;AAEX,wBAAgB,+BAA+B,IAAI,iBAAiB,CAiEnE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { AI_SKILLS_APP_ID } from "./ai-skills-catalog.js";
|
|
2
|
+
/** Catalox native catalog id for AI execution engines routable from {@link RunSkillRequest}. */
|
|
3
|
+
export const AI_ENGINES_CATALOG_ID = "ai-engines";
|
|
4
|
+
/**
|
|
5
|
+
* Default app binding for {@link AI_ENGINES_CATALOG_ID} (same app as `ai-skills` so one provision flow can attach both).
|
|
6
|
+
*/
|
|
7
|
+
export const AI_ENGINES_APP_ID = AI_SKILLS_APP_ID;
|
|
8
|
+
/** Descriptor version written by {@link scripts/provision-ai-engines-catalog}. */
|
|
9
|
+
export const AI_ENGINES_DESCRIPTOR_VERSION = "1";
|
|
10
|
+
export const DEFAULT_AI_ENGINE_CATALOG_ITEM_ID = "ai-gateway";
|
|
11
|
+
/** Single supported runtime engine; catalog still lists it for discovery / UIs (`npm run catalox:provision-ai-engines`). */
|
|
12
|
+
export const AI_ENGINE_CATALOG_ITEM_IDS = ["ai-gateway"];
|
|
13
|
+
/**
|
|
14
|
+
* Authoritative in-repo list for Catalox provisioning. Live discovery uses Catalox `listCatalogItems`.
|
|
15
|
+
*/
|
|
16
|
+
export const AI_ENGINES_CATALOG_ITEMS = [
|
|
17
|
+
{
|
|
18
|
+
engineId: "ai-gateway",
|
|
19
|
+
title: "AI Gateway",
|
|
20
|
+
description: "LLM execution via @x12i/ai-gateway (inline Catalox templates on invoke).",
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
export function buildAiEnginesCatalogDescriptor() {
|
|
24
|
+
return {
|
|
25
|
+
catalogId: AI_ENGINES_CATALOG_ID,
|
|
26
|
+
label: "AI engines",
|
|
27
|
+
description: "Execution engines for @exellix/ai-skills (Catalox native).",
|
|
28
|
+
itemLabel: "Engine",
|
|
29
|
+
sourceMode: "native",
|
|
30
|
+
status: "active",
|
|
31
|
+
visibility: "visible",
|
|
32
|
+
defaultSort: { field: "engineId", direction: "asc" },
|
|
33
|
+
capabilities: {
|
|
34
|
+
canList: true,
|
|
35
|
+
canGet: true,
|
|
36
|
+
canCreate: true,
|
|
37
|
+
canEdit: true,
|
|
38
|
+
canDelete: true,
|
|
39
|
+
canImport: true,
|
|
40
|
+
canExport: true,
|
|
41
|
+
canValidate: true,
|
|
42
|
+
canViewReferences: true,
|
|
43
|
+
},
|
|
44
|
+
queryableFields: [
|
|
45
|
+
{
|
|
46
|
+
key: "engineId",
|
|
47
|
+
label: "Engine id",
|
|
48
|
+
type: "string",
|
|
49
|
+
path: "engineId",
|
|
50
|
+
indexed: true,
|
|
51
|
+
filterable: true,
|
|
52
|
+
sortable: true,
|
|
53
|
+
listVisible: true,
|
|
54
|
+
detailVisible: true,
|
|
55
|
+
required: true,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
key: "title",
|
|
59
|
+
label: "Title",
|
|
60
|
+
type: "string",
|
|
61
|
+
path: "title",
|
|
62
|
+
indexed: false,
|
|
63
|
+
filterable: false,
|
|
64
|
+
sortable: true,
|
|
65
|
+
listVisible: true,
|
|
66
|
+
detailVisible: true,
|
|
67
|
+
required: true,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
key: "description",
|
|
71
|
+
label: "Description",
|
|
72
|
+
type: "string",
|
|
73
|
+
path: "description",
|
|
74
|
+
indexed: false,
|
|
75
|
+
filterable: false,
|
|
76
|
+
sortable: false,
|
|
77
|
+
listVisible: true,
|
|
78
|
+
detailVisible: true,
|
|
79
|
+
required: true,
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
identity: {
|
|
83
|
+
itemIdStrategy: "natural",
|
|
84
|
+
itemIdField: "engineId",
|
|
85
|
+
titleField: "title",
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=ai-engines-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-engines-catalog.js","sourceRoot":"","sources":["../../src/catalox/ai-engines-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAqB,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAElD,kFAAkF;AAClF,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAY,CAAC;AAE1D,MAAM,CAAC,MAAM,iCAAiC,GAAG,YAAqB,CAAC;AAEvE,4HAA4H;AAC5H,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,YAAY,CAAU,CAAC;AAUlE;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAwC;IACzE;QACI,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,0EAA0E;KAC1F;CACK,CAAC;AAEX,MAAM,UAAU,+BAA+B;IAC3C,OAAO;QACH,SAAS,EAAE,qBAAqB;QAChC,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,4DAA4D;QACzE,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;QACpD,YAAY,EAAE;YACV,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;YACjB,iBAAiB,EAAE,IAAI;SAC1B;QACD,eAAe,EAAE;YACb;gBACI,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI;gBACjB,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,IAAI;aACjB;YACD;gBACI,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI;gBACjB,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,IAAI;aACjB;YACD;gBACI,GAAG,EAAE,aAAa;gBAClB,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,IAAI;gBACjB,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,IAAI;aACjB;SACJ;QACD,QAAQ,EAAE;YACN,cAAc,EAAE,SAAS;YACzB,WAAW,EAAE,UAAU;YACvB,UAAU,EAAE,OAAO;SACtB;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CatalogDescriptor } from "@x12i/catalox";
|
|
2
|
+
/** Catalox `catalogId` and default `appId` for published skill discovery. */
|
|
3
|
+
export declare const AI_SKILLS_CATALOG_ID: "ai-skills";
|
|
4
|
+
export declare const AI_SKILLS_APP_ID: "ai-skills";
|
|
5
|
+
/** Descriptor version written by {@link scripts/provision-ai-skills-catalog}. */
|
|
6
|
+
export declare const AI_SKILLS_DESCRIPTOR_VERSION: "1";
|
|
7
|
+
export type CatalogReleaseStatus = "draft" | "published";
|
|
8
|
+
/**
|
|
9
|
+
* One skill row definition in-repo (provision writes native Catalox `data` + templates from disk when present).
|
|
10
|
+
*/
|
|
11
|
+
export type AiSkillsCatalogItemSpec = {
|
|
12
|
+
skillKey: string;
|
|
13
|
+
title: string;
|
|
14
|
+
description: string;
|
|
15
|
+
isLocal: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* When both `instructionsText` and `promptText` exist after provision, this becomes Catalox `data.status`
|
|
18
|
+
* (`draft` or `published`). If omitted and bodies are complete, provision defaults to `draft`.
|
|
19
|
+
*/
|
|
20
|
+
catalogReleaseStatus?: CatalogReleaseStatus;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Authoritative in-repo list for Catalox provisioning and package docs.
|
|
24
|
+
* Downstream consumers should call Catalox `listCatalogItems` for the live list.
|
|
25
|
+
*/
|
|
26
|
+
export declare const AI_SKILLS_CATALOG_ITEMS: readonly AiSkillsCatalogItemSpec[];
|
|
27
|
+
export declare function buildAiSkillsCatalogDescriptor(): CatalogDescriptor;
|
|
28
|
+
/**
|
|
29
|
+
* Computes Catalox `data.status` after template bodies are merged.
|
|
30
|
+
*/
|
|
31
|
+
export declare function computeSkillRowStatus(instructionsText: string | undefined, promptText: string | undefined, catalogReleaseStatus: CatalogReleaseStatus | undefined): "planned" | "draft" | "published";
|
|
32
|
+
//# sourceMappingURL=ai-skills-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-skills-catalog.d.ts","sourceRoot":"","sources":["../../src/catalox/ai-skills-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,EAAG,WAAoB,CAAC;AACzD,eAAO,MAAM,gBAAgB,EAAG,WAAoB,CAAC;AAErD,iFAAiF;AACjF,eAAO,MAAM,4BAA4B,EAAG,GAAY,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,WAAW,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,uBAAuB,EAwC5D,CAAC;AAEX,wBAAgB,8BAA8B,IAAI,iBAAiB,CA2IlE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,GACvD,SAAS,GAAG,OAAO,GAAG,WAAW,CAMnC"}
|