@x12i/pagenti-catalox 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/catalog-query.d.ts +12 -0
  2. package/dist/catalog-query.d.ts.map +1 -0
  3. package/dist/catalog-query.js +51 -0
  4. package/dist/catalog-query.js.map +1 -0
  5. package/dist/catalogs.d.ts +10 -0
  6. package/dist/catalogs.d.ts.map +1 -0
  7. package/dist/catalogs.js +149 -0
  8. package/dist/catalogs.js.map +1 -0
  9. package/dist/client.d.ts +20 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/client.js +32 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/descriptors.d.ts +34 -0
  14. package/dist/descriptors.d.ts.map +1 -0
  15. package/dist/descriptors.js +58 -0
  16. package/dist/descriptors.js.map +1 -0
  17. package/dist/index.d.ts +12 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +12 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/install-deps.d.ts +18 -0
  22. package/dist/install-deps.d.ts.map +1 -0
  23. package/dist/install-deps.js +68 -0
  24. package/dist/install-deps.js.map +1 -0
  25. package/dist/install.d.ts +14 -0
  26. package/dist/install.d.ts.map +1 -0
  27. package/dist/install.js +43 -0
  28. package/dist/install.js.map +1 -0
  29. package/dist/publish.d.ts +11 -0
  30. package/dist/publish.d.ts.map +1 -0
  31. package/dist/publish.js +87 -0
  32. package/dist/publish.js.map +1 -0
  33. package/dist/registry.d.ts +8 -0
  34. package/dist/registry.d.ts.map +1 -0
  35. package/dist/registry.js +85 -0
  36. package/dist/registry.js.map +1 -0
  37. package/dist/require-catalox.d.ts +8 -0
  38. package/dist/require-catalox.d.ts.map +1 -0
  39. package/dist/require-catalox.js +45 -0
  40. package/dist/require-catalox.js.map +1 -0
  41. package/dist/seed.d.ts +17 -0
  42. package/dist/seed.d.ts.map +1 -0
  43. package/dist/seed.js +183 -0
  44. package/dist/seed.js.map +1 -0
  45. package/dist/uninstall-deps.d.ts +14 -0
  46. package/dist/uninstall-deps.d.ts.map +1 -0
  47. package/dist/uninstall-deps.js +34 -0
  48. package/dist/uninstall-deps.js.map +1 -0
  49. package/package.json +42 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAgB7D,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CAmHxB"}
@@ -0,0 +1,87 @@
1
+ import { compositeItemId, filePathHash, packPackage, prepareDependencies, prepareExecutionRecords, prepareExports, prepareKnowledgeRecords, preparePackageFiles, preparePackageRecord, prepareVersionRecord, readManifest, normalizeManifest, validateManifest, } from "@x12i/pagenti-core";
2
+ import { CONTENT_CATALOGS, PACKAGE_CATALOGS, } from "@x12i/pagenti-types";
3
+ export async function publishPackage(catalox, context, options) {
4
+ const { manifest: raw } = await readManifest(options.packageDir);
5
+ const manifest = normalizeManifest(raw);
6
+ const validation = validateManifest(manifest, options.packageDir);
7
+ if (!validation.valid) {
8
+ const messages = validation.issues
9
+ .map((i) => `${i.path}: ${i.message}`)
10
+ .join("\n");
11
+ throw new Error(`Package validation failed:\n${messages}`);
12
+ }
13
+ const pack = await packPackage(options.packageDir, manifest);
14
+ const knowledge = await prepareKnowledgeRecords(manifest, options.packageDir);
15
+ const execution = await prepareExecutionRecords(manifest, options.packageDir);
16
+ const files = await preparePackageFiles(manifest, options.packageDir);
17
+ const exports = prepareExports(manifest);
18
+ const dependencies = prepareDependencies(manifest);
19
+ const objectKey = options.gcsBucket != null
20
+ ? `${options.gcsPrefix ?? "packages/"}${manifest.name}/${manifest.version}/package.tgz`
21
+ : undefined;
22
+ const versionRecord = prepareVersionRecord(manifest, {
23
+ sha256: pack.sha256,
24
+ storageProvider: options.gcsBucket ? "gcs" : "local",
25
+ bucket: options.gcsBucket,
26
+ objectKey,
27
+ localPath: pack.artifactPath,
28
+ }, {
29
+ knowledgeCount: knowledge.length,
30
+ executionCount: execution.length,
31
+ fileCount: files.length,
32
+ dependencyCount: dependencies.length,
33
+ });
34
+ await catalox.upsertNativeCatalogItem(context, PACKAGE_CATALOGS.PACKAGES, preparePackageRecord(manifest));
35
+ await catalox.upsertNativeCatalogItem(context, PACKAGE_CATALOGS.VERSIONS, versionRecord);
36
+ for (const file of files) {
37
+ await catalox.upsertNativeCatalogItem(context, PACKAGE_CATALOGS.FILES, {
38
+ ...file,
39
+ filePathHash: filePathHash(file.path),
40
+ });
41
+ }
42
+ for (const item of knowledge) {
43
+ const itemId = compositeItemId(item.skillCode, item.code);
44
+ await catalox.upsertNativeCatalogItem(context, CONTENT_CATALOGS.KNOWLEDGE, item);
45
+ for (const relation of item.relations) {
46
+ await catalox.upsertCatalogItemRelation(context, {
47
+ fromCatalogId: CONTENT_CATALOGS.KNOWLEDGE,
48
+ fromItemId: itemId,
49
+ relationType: relation.relationType,
50
+ toCatalogId: relation.toCatalogId,
51
+ toItemId: relation.toItemId,
52
+ });
53
+ }
54
+ }
55
+ for (const item of execution) {
56
+ const itemId = compositeItemId(item.skillCode, item.code);
57
+ await catalox.upsertNativeCatalogItem(context, CONTENT_CATALOGS.EXECUTION, item);
58
+ for (const relation of item.relations ?? []) {
59
+ await catalox.upsertCatalogItemRelation(context, {
60
+ fromCatalogId: CONTENT_CATALOGS.EXECUTION,
61
+ fromItemId: itemId,
62
+ relationType: relation.relationType,
63
+ toCatalogId: relation.toCatalogId,
64
+ toItemId: relation.toItemId,
65
+ });
66
+ }
67
+ }
68
+ for (const exp of exports) {
69
+ await catalox.upsertNativeCatalogItem(context, PACKAGE_CATALOGS.EXPORTS, exp);
70
+ }
71
+ for (const dep of dependencies) {
72
+ await catalox.upsertNativeCatalogItem(context, PACKAGE_CATALOGS.DEPENDENCIES, dep);
73
+ }
74
+ await catalox.upsertNativeCatalogItem(context, PACKAGE_CATALOGS.PACKAGES, {
75
+ ...preparePackageRecord(manifest),
76
+ latestVersion: manifest.version,
77
+ });
78
+ return {
79
+ packageName: manifest.name,
80
+ version: manifest.version,
81
+ versionKey: versionRecord.versionKey,
82
+ artifact: versionRecord.artifact,
83
+ knowledgeCount: knowledge.length,
84
+ executionCount: execution.length,
85
+ };
86
+ }
87
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Catalox, CataloxContext } from "@x12i/catalox";
2
+ import { type PackageSearchResult, type PagentiPackage } from "@x12i/pagenti-types";
3
+ export declare function listPackageVersions(catalox: Catalox, context: CataloxContext, packageName: string): Promise<string[]>;
4
+ export declare function getPackageRecord(catalox: Catalox, context: CataloxContext, packageName: string): Promise<PagentiPackage | null>;
5
+ export declare function resolvePackageVersion(catalox: Catalox, context: CataloxContext, packageName: string, requested: string): Promise<string>;
6
+ export declare function searchPackages(catalox: Catalox, context: CataloxContext, searchTerms?: string[]): Promise<PackageSearchResult[]>;
7
+ export declare function viewPackage(catalox: Catalox, context: CataloxContext, packageName: string, version?: string): Promise<Record<string, unknown>>;
8
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAE7B,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAanB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAoBD,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,EACvB,WAAW,GAAE,MAAM,EAAO,GACzB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAkBhC;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA+BlC"}
@@ -0,0 +1,85 @@
1
+ import { pickResolvedVersion } from "@x12i/pagenti-core";
2
+ import { PACKAGE_CATALOGS, } from "@x12i/pagenti-types";
3
+ export async function listPackageVersions(catalox, context, packageName) {
4
+ const result = await catalox.listCatalogItems(context, PACKAGE_CATALOGS.VERSIONS, {
5
+ filter: { packageName },
6
+ limit: 500,
7
+ });
8
+ return result.items
9
+ .map((item) => item.data?.version)
10
+ .filter((version) => typeof version === "string");
11
+ }
12
+ export async function getPackageRecord(catalox, context, packageName) {
13
+ const result = await catalox.getCatalogItem(context, PACKAGE_CATALOGS.PACKAGES, packageName);
14
+ if (result.outcome !== "found")
15
+ return null;
16
+ return result.item.data;
17
+ }
18
+ export async function resolvePackageVersion(catalox, context, packageName, requested) {
19
+ const pkg = await getPackageRecord(catalox, context, packageName);
20
+ if (!pkg) {
21
+ throw new Error(`Package not found: ${packageName}`);
22
+ }
23
+ if (requested === "latest") {
24
+ if (typeof pkg.latestVersion === "string" && pkg.latestVersion) {
25
+ return pkg.latestVersion;
26
+ }
27
+ throw new Error(`No published version for ${packageName}`);
28
+ }
29
+ const versions = await listPackageVersions(catalox, context, packageName);
30
+ const resolved = pickResolvedVersion(requested, versions);
31
+ if (!resolved) {
32
+ throw new Error(`No matching version for ${packageName}@${requested}. Available: ${versions.join(", ") || "none"}`);
33
+ }
34
+ return resolved;
35
+ }
36
+ function matchesSearchTerms(pkg, terms) {
37
+ if (terms.length === 0)
38
+ return true;
39
+ const haystack = [
40
+ pkg.packageName,
41
+ pkg.title,
42
+ pkg.description ?? "",
43
+ ...(pkg.keywords ?? []),
44
+ ]
45
+ .join(" ")
46
+ .toLowerCase();
47
+ return terms.every((term) => haystack.includes(term.toLowerCase()));
48
+ }
49
+ export async function searchPackages(catalox, context, searchTerms = []) {
50
+ const result = await catalox.listCatalogItems(context, PACKAGE_CATALOGS.PACKAGES, { limit: 500 });
51
+ return result.items
52
+ .map((item) => item.data)
53
+ .filter((pkg) => pkg?.packageName)
54
+ .filter((pkg) => matchesSearchTerms(pkg, searchTerms))
55
+ .map((pkg) => ({
56
+ packageName: pkg.packageName,
57
+ title: pkg.title,
58
+ description: pkg.description,
59
+ latestVersion: pkg.latestVersion,
60
+ keywords: pkg.keywords,
61
+ }));
62
+ }
63
+ export async function viewPackage(catalox, context, packageName, version) {
64
+ const pkg = await getPackageRecord(catalox, context, packageName);
65
+ if (!pkg) {
66
+ throw new Error(`Package not found: ${packageName}`);
67
+ }
68
+ const versions = await listPackageVersions(catalox, context, packageName);
69
+ const resolvedVersion = version != null
70
+ ? await resolvePackageVersion(catalox, context, packageName, version)
71
+ : pkg.latestVersion;
72
+ const versionRecord = resolvedVersion != null
73
+ ? await catalox.getCatalogItem(context, PACKAGE_CATALOGS.VERSIONS, `${packageName}:${resolvedVersion}`)
74
+ : null;
75
+ return {
76
+ ...pkg,
77
+ versions,
78
+ "dist-tags": {
79
+ latest: pkg.latestVersion,
80
+ },
81
+ version: resolvedVersion,
82
+ versionRecord: versionRecord?.outcome === "found" ? versionRecord.item.data : undefined,
83
+ };
84
+ }
85
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { CATALOX_VERSION } from "@x12i/pagenti-types";
2
+ /**
3
+ * Fail fast unless the installed @x12i/catalox matches the required data-tier version.
4
+ * Pagenti does not support alternate catalog backends or Catalox version drift.
5
+ */
6
+ export declare function assertCataloxDataTier(): void;
7
+ export { CATALOX_VERSION };
8
+ //# sourceMappingURL=require-catalox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-catalox.d.ts","sourceRoot":"","sources":["../src/require-catalox.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2BtD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAkB5C;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { createRequire } from "node:module";
4
+ import { CATALOX_VERSION } from "@x12i/pagenti-types";
5
+ function readInstalledCataloxVersion() {
6
+ const require = createRequire(import.meta.url);
7
+ let dir = dirname(require.resolve("@x12i/catalox"));
8
+ for (let depth = 0; depth < 8; depth++) {
9
+ try {
10
+ const pkgPath = join(dir, "package.json");
11
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
12
+ if (pkg.name === "@x12i/catalox" && pkg.version) {
13
+ return pkg.version;
14
+ }
15
+ }
16
+ catch {
17
+ // walk up
18
+ }
19
+ const parent = dirname(dir);
20
+ if (parent === dir)
21
+ break;
22
+ dir = parent;
23
+ }
24
+ throw new Error("not installed");
25
+ }
26
+ /**
27
+ * Fail fast unless the installed @x12i/catalox matches the required data-tier version.
28
+ * Pagenti does not support alternate catalog backends or Catalox version drift.
29
+ */
30
+ export function assertCataloxDataTier() {
31
+ let installed;
32
+ try {
33
+ installed = readInstalledCataloxVersion();
34
+ }
35
+ catch {
36
+ throw new Error(`@x12i/catalox@${CATALOX_VERSION} is required as the Pagenti data tier but is not installed. ` +
37
+ `Run: npm install @x12i/catalox@${CATALOX_VERSION}`);
38
+ }
39
+ if (installed !== CATALOX_VERSION) {
40
+ throw new Error(`Pagenti requires @x12i/catalox@${CATALOX_VERSION} as the data tier (found ${installed}). ` +
41
+ `Run: npm install @x12i/catalox@${CATALOX_VERSION}`);
42
+ }
43
+ }
44
+ export { CATALOX_VERSION };
45
+ //# sourceMappingURL=require-catalox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-catalox.js","sourceRoot":"","sources":["../src/require-catalox.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,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,SAAS,2BAA2B;IAClC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAEpD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAGnD,CAAC;YACF,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChD,OAAO,GAAG,CAAC,OAAO,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,UAAU;QACZ,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,SAAiB,CAAC;IAEtB,IAAI,CAAC;QACH,SAAS,GAAG,2BAA2B,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,iBAAiB,eAAe,8DAA8D;YAC5F,kCAAkC,eAAe,EAAE,CACtD,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,kCAAkC,eAAe,4BAA4B,SAAS,KAAK;YACzF,kCAAkC,eAAe,EAAE,CACtD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
package/dist/seed.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import type { Catalox } from "@x12i/catalox";
2
+ export type SeedPagentiOptions = {
3
+ /** Bind all catalogs to this app. Default: pagenti */
4
+ appId?: string;
5
+ /** Upsert 20 SME skill codes into pagenti_target_skill and pagenti_skills */
6
+ seedSkills?: boolean;
7
+ /** Create knowledge_categories/pagenti app bucket item */
8
+ seedCategory?: boolean;
9
+ };
10
+ export type SeedPagentiResult = {
11
+ catalogsEnsured: number;
12
+ descriptorsUpserted: number;
13
+ bindingsEnsured: number;
14
+ skillsSeeded: number;
15
+ };
16
+ export declare function seedPagentiCatalogs(catalox: Catalox, options?: SeedPagentiOptions): Promise<SeedPagentiResult>;
17
+ //# sourceMappingURL=seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,eAAe,CAAC;AA2I7D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAMF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAkE5B"}
package/dist/seed.js ADDED
@@ -0,0 +1,183 @@
1
+ import { CONTENT_CATALOGS, PAGENTI_APP_ID, PAGENTI_CATEGORY_ID, SME_SKILL_CODES, } from "@x12i/pagenti-types";
2
+ import { PAGENTI_CATALOG_DEFINITIONS } from "./catalogs.js";
3
+ const SKILL_DEFINITIONS = [
4
+ {
5
+ code: "riskKnowledge",
6
+ title: "Risk Knowledge",
7
+ content: "Expertise about identifying, evaluating, prioritizing, and mitigating risks.",
8
+ ordinal: 1,
9
+ },
10
+ {
11
+ code: "domainKnowledge",
12
+ title: "Domain Knowledge",
13
+ content: "Deep subject-matter expertise within a business or technical domain.",
14
+ ordinal: 2,
15
+ },
16
+ {
17
+ code: "proceduralKnowledge",
18
+ title: "Procedural Knowledge",
19
+ content: "Step-by-step operational procedures and execution playbooks.",
20
+ ordinal: 3,
21
+ },
22
+ {
23
+ code: "diagnosticKnowledge",
24
+ title: "Diagnostic Knowledge",
25
+ content: "Expertise in analyzing symptoms, root causes, and failure modes.",
26
+ ordinal: 4,
27
+ },
28
+ {
29
+ code: "regulatoryKnowledge",
30
+ title: "Regulatory Knowledge",
31
+ content: "Knowledge of laws, regulations, and compliance obligations.",
32
+ ordinal: 5,
33
+ },
34
+ {
35
+ code: "complianceKnowledge",
36
+ title: "Compliance Knowledge",
37
+ content: "Expertise in meeting internal and external compliance requirements.",
38
+ ordinal: 6,
39
+ },
40
+ {
41
+ code: "technicalKnowledge",
42
+ title: "Technical Knowledge",
43
+ content: "Technical systems, architecture, and implementation expertise.",
44
+ ordinal: 7,
45
+ },
46
+ {
47
+ code: "operationalKnowledge",
48
+ title: "Operational Knowledge",
49
+ content: "Day-to-day operations, runbooks, and service management expertise.",
50
+ ordinal: 8,
51
+ },
52
+ {
53
+ code: "strategicKnowledge",
54
+ title: "Strategic Knowledge",
55
+ content: "Long-term planning, priorities, and organizational direction.",
56
+ ordinal: 9,
57
+ },
58
+ {
59
+ code: "analyticalKnowledge",
60
+ title: "Analytical Knowledge",
61
+ content: "Data analysis, metrics interpretation, and evidence-based reasoning.",
62
+ ordinal: 10,
63
+ },
64
+ {
65
+ code: "contextualKnowledge",
66
+ title: "Contextual Knowledge",
67
+ content: "Situational awareness and environment-specific understanding.",
68
+ ordinal: 11,
69
+ },
70
+ {
71
+ code: "bestPracticeKnowledge",
72
+ title: "Best Practice Knowledge",
73
+ content: "Established industry and organizational best practices.",
74
+ ordinal: 12,
75
+ },
76
+ {
77
+ code: "referenceKnowledge",
78
+ title: "Reference Knowledge",
79
+ content: "Lookup facts, definitions, and authoritative reference material.",
80
+ ordinal: 13,
81
+ },
82
+ {
83
+ code: "conceptualKnowledge",
84
+ title: "Conceptual Knowledge",
85
+ content: "Concepts, models, frameworks, and mental models.",
86
+ ordinal: 14,
87
+ },
88
+ {
89
+ code: "factualKnowledge",
90
+ title: "Factual Knowledge",
91
+ content: "Verifiable facts and documented information.",
92
+ ordinal: 15,
93
+ },
94
+ {
95
+ code: "experientialKnowledge",
96
+ title: "Experiential Knowledge",
97
+ content: "Lessons learned from real-world experience and incidents.",
98
+ ordinal: 16,
99
+ },
100
+ {
101
+ code: "troubleshootingKnowledge",
102
+ title: "Troubleshooting Knowledge",
103
+ content: "Systematic problem isolation and resolution techniques.",
104
+ ordinal: 17,
105
+ },
106
+ {
107
+ code: "decisionKnowledge",
108
+ title: "Decision Knowledge",
109
+ content: "Decision criteria, tradeoffs, and escalation guidance.",
110
+ ordinal: 18,
111
+ },
112
+ {
113
+ code: "communicationKnowledge",
114
+ title: "Communication Knowledge",
115
+ content: "Effective communication patterns for stakeholders and teams.",
116
+ ordinal: 19,
117
+ },
118
+ {
119
+ code: "governanceKnowledge",
120
+ title: "Governance Knowledge",
121
+ content: "Policies, controls, ownership, and accountability frameworks.",
122
+ ordinal: 20,
123
+ },
124
+ ];
125
+ function adminContext(appId) {
126
+ return { appId, superAdmin: true };
127
+ }
128
+ export async function seedPagentiCatalogs(catalox, options = {}) {
129
+ const appId = options.appId ?? PAGENTI_APP_ID;
130
+ const ctx = adminContext(appId);
131
+ let catalogsEnsured = 0;
132
+ let descriptorsUpserted = 0;
133
+ let bindingsEnsured = 0;
134
+ for (const def of PAGENTI_CATALOG_DEFINITIONS) {
135
+ await catalox.ensureCatalog(ctx, {
136
+ catalogId: def.catalogId,
137
+ name: def.name,
138
+ status: "active",
139
+ });
140
+ catalogsEnsured += 1;
141
+ if (def.descriptor) {
142
+ await catalox.upsertCatalogDescriptor(ctx, def.catalogId, def.descriptor);
143
+ descriptorsUpserted += 1;
144
+ }
145
+ await catalox.ensureBinding(ctx, {
146
+ appId,
147
+ catalogId: def.catalogId,
148
+ access: { canRead: true, canWrite: true, canAdmin: true },
149
+ });
150
+ bindingsEnsured += 1;
151
+ }
152
+ let skillsSeeded = 0;
153
+ if (options.seedCategory !== false) {
154
+ await catalox.upsertNativeCatalogItem(ctx, CONTENT_CATALOGS.KNOWLEDGE_CATEGORIES, {
155
+ code: PAGENTI_CATEGORY_ID,
156
+ title: "Pagenti",
157
+ description: "App bucket for Pagenti knowledge, execution, and agent content packages.",
158
+ });
159
+ }
160
+ if (options.seedSkills !== false) {
161
+ for (const skill of SKILL_DEFINITIONS) {
162
+ if (!SME_SKILL_CODES.includes(skill.code))
163
+ continue;
164
+ const targetRow = { code: skill.code, title: skill.title };
165
+ await catalox.upsertNativeCatalogItem(ctx, CONTENT_CATALOGS.TARGET_SKILL, targetRow);
166
+ const skillRow = {
167
+ code: skill.code,
168
+ title: skill.title,
169
+ content: skill.content,
170
+ ordinal: skill.ordinal,
171
+ };
172
+ await catalox.upsertNativeCatalogItem(ctx, CONTENT_CATALOGS.SKILLS, skillRow);
173
+ skillsSeeded += 1;
174
+ }
175
+ }
176
+ return {
177
+ catalogsEnsured,
178
+ descriptorsUpserted,
179
+ bindingsEnsured,
180
+ skillsSeeded,
181
+ };
182
+ }
183
+ //# sourceMappingURL=seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Catalox, CataloxContext } from "@x12i/catalox";
2
+ import type { InstallTarget, PagentiLockfile } from "@x12i/pagenti-types";
3
+ export type UninstallDependenciesOptions = {
4
+ packageDir: string;
5
+ target: InstallTarget;
6
+ packageSpecs: string[];
7
+ save?: boolean;
8
+ };
9
+ export type UninstallDependenciesResult = {
10
+ removed: string[];
11
+ lockfile: PagentiLockfile;
12
+ };
13
+ export declare function uninstallDependencies(catalox: Catalox, context: CataloxContext, options: UninstallDependenciesOptions): Promise<UninstallDependenciesResult>;
14
+ //# sourceMappingURL=uninstall-deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall-deps.d.ts","sourceRoot":"","sources":["../src/uninstall-deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAU7D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG1E,MAAM,MAAM,4BAA4B,GAAG;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,2BAA2B,CAAC,CAsCtC"}
@@ -0,0 +1,34 @@
1
+ import { normalizeManifest, parsePackageSpec, readLockfile, readManifest, removeLockEntry, writeLockfile, writeManifest, } from "@x12i/pagenti-core";
2
+ import { uninstallPackage } from "./install.js";
3
+ export async function uninstallDependencies(catalox, context, options) {
4
+ const { manifest: raw } = await readManifest(options.packageDir);
5
+ const manifest = normalizeManifest(raw);
6
+ const lockfile = (await readLockfile(options.packageDir)) ?? {
7
+ lockfileVersion: 1,
8
+ dependencies: {},
9
+ };
10
+ const packageNames = options.packageSpecs.map((spec) => parsePackageSpec(spec).packageName);
11
+ for (const packageName of packageNames) {
12
+ await uninstallPackage(catalox, context, {
13
+ packageName,
14
+ target: options.target,
15
+ });
16
+ }
17
+ let nextLockfile = lockfile;
18
+ for (const packageName of packageNames) {
19
+ nextLockfile = removeLockEntry(nextLockfile, packageName);
20
+ }
21
+ await writeLockfile(options.packageDir, nextLockfile);
22
+ if (options.save) {
23
+ const dependencies = { ...manifest.dependencies };
24
+ for (const packageName of packageNames) {
25
+ delete dependencies[packageName];
26
+ }
27
+ await writeManifest(options.packageDir, { ...manifest, dependencies });
28
+ }
29
+ return {
30
+ removed: packageNames,
31
+ lockfile: nextLockfile,
32
+ };
33
+ }
34
+ //# sourceMappingURL=uninstall-deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall-deps.js","sourceRoot":"","sources":["../src/uninstall-deps.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAchD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAgB,EAChB,OAAuB,EACvB,OAAqC;IAErC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GACZ,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI;QAC1C,eAAe,EAAE,CAAC;QAClB,YAAY,EAAE,EAAE;KACjB,CAAC;IAEJ,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAC3C,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,CAC7C,CAAC;IAEF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE;YACvC,WAAW;YACX,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,GAAG,QAAQ,CAAC;IAC5B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,YAAY,GAAG,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;QAClD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,YAAY;KACvB,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@x12i/pagenti-catalox",
3
+ "version": "0.1.0",
4
+ "description": "Pagenti Catalox adapter — registry, publish, install, and catalog query for knowledge and execution",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/x12i/pagenti.git",
10
+ "directory": "packages/pagenti-catalox"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "engines": {
16
+ "node": ">=20"
17
+ },
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "default": "./dist/index.js"
22
+ }
23
+ },
24
+ "main": "./dist/index.js",
25
+ "types": "./dist/index.d.ts",
26
+ "files": ["dist"],
27
+ "scripts": {
28
+ "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
29
+ "build": "npm run clean && tsc -p tsconfig.json",
30
+ "typecheck": "tsc -p tsconfig.json --noEmit",
31
+ "test": "node --import tsx --test \"test/**/*.test.ts\"",
32
+ "prepublishOnly": "npm run build"
33
+ },
34
+ "dependencies": {
35
+ "@x12i/catalox": "5.1.0",
36
+ "@x12i/pagenti-core": "^0.1.0",
37
+ "@x12i/pagenti-types": "^0.1.0"
38
+ },
39
+ "peerDependencies": {
40
+ "@x12i/catalox": "5.1.0"
41
+ }
42
+ }