@a5c-ai/agent-catalog 5.0.1-staging.c9bb2c61

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 (135) hide show
  1. package/README.md +117 -0
  2. package/dist/assets.d.ts +4 -0
  3. package/dist/assets.d.ts.map +1 -0
  4. package/dist/assets.js +76 -0
  5. package/dist/cli.d.ts +168 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +336 -0
  8. package/dist/data.d.ts +54 -0
  9. package/dist/data.d.ts.map +1 -0
  10. package/dist/data.js +636 -0
  11. package/dist/discovery-snapshot.json +319345 -0
  12. package/dist/discovery.d.ts +143 -0
  13. package/dist/discovery.d.ts.map +1 -0
  14. package/dist/discovery.js +728 -0
  15. package/dist/evidence-projection.d.ts +4 -0
  16. package/dist/evidence-projection.d.ts.map +1 -0
  17. package/dist/evidence-projection.js +34 -0
  18. package/dist/evidence.d.ts +13 -0
  19. package/dist/evidence.d.ts.map +1 -0
  20. package/dist/evidence.js +227 -0
  21. package/dist/graph.d.ts +20 -0
  22. package/dist/graph.d.ts.map +1 -0
  23. package/dist/graph.js +194 -0
  24. package/dist/index.d.ts +11 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +28 -0
  27. package/dist/models.d.ts +559 -0
  28. package/dist/models.d.ts.map +1 -0
  29. package/dist/models.js +2 -0
  30. package/dist/sdk.d.ts +48 -0
  31. package/dist/sdk.d.ts.map +1 -0
  32. package/dist/sdk.js +902 -0
  33. package/dist/transport-mux-cutover.d.ts +9 -0
  34. package/dist/transport-mux-cutover.d.ts.map +1 -0
  35. package/dist/transport-mux-cutover.js +158 -0
  36. package/dist/ui.d.ts +2 -0
  37. package/dist/ui.d.ts.map +1 -0
  38. package/dist/ui.js +8 -0
  39. package/docs/ontology-evidence.md +82 -0
  40. package/evidence/ontology-evidence/claims/catalog-processes-and-packaging.json +89 -0
  41. package/evidence/ontology-evidence/claims/plugins-hooks-discovery.json +136 -0
  42. package/evidence/ontology-evidence/claims/runtime-core.json +113 -0
  43. package/evidence/ontology-evidence/claims/vendor-web.json +977 -0
  44. package/evidence/ontology-evidence/evidence-sources/catalog-processes-and-packaging.json +48 -0
  45. package/evidence/ontology-evidence/evidence-sources/plugins-hooks-discovery.json +88 -0
  46. package/evidence/ontology-evidence/evidence-sources/runtime-core.json +78 -0
  47. package/evidence/ontology-evidence/evidence-sources/vendor-web.json +918 -0
  48. package/evidence/ontology-evidence/manifest.json +56 -0
  49. package/graph/agent-catalog.graph.yaml +43 -0
  50. package/graph/edges/relations/agent-runtime/babysitter-agent.yaml +31 -0
  51. package/graph/edges/relations/agent-runtime/discovery-and-paths.yaml +433 -0
  52. package/graph/edges/relations/agent-runtime/session-and-lifecycle.yaml +137 -0
  53. package/graph/edges/relations/agent-runtime/transports-and-modalities.yaml +387 -0
  54. package/graph/edges/relations/capabilities/babysitter-agent-links.yaml +46 -0
  55. package/graph/edges/relations/capabilities/capability-vocabulary-links-agents.yaml +478 -0
  56. package/graph/edges/relations/capabilities/capability-vocabulary-links-providers.yaml +40 -0
  57. package/graph/edges/relations/capabilities/capability-vocabulary-links-transports.yaml +70 -0
  58. package/graph/edges/relations/capabilities/support-record-links-agents.yaml +478 -0
  59. package/graph/edges/relations/capabilities/support-record-links-providers.yaml +40 -0
  60. package/graph/edges/relations/capabilities/support-record-links-transports.yaml +70 -0
  61. package/graph/edges/relations/evolution.yaml +16 -0
  62. package/graph/edges/relations/hooks-and-plugins.yaml +462 -0
  63. package/graph/edges/relations/identity-babysitter-agent.yaml +11 -0
  64. package/graph/edges/relations/identity.yaml +218 -0
  65. package/graph/edges/relations/processes-and-packages.yaml +71 -0
  66. package/graph/edges/relations/provenance/babysitter-agent-and-claude-web.yaml +102 -0
  67. package/graph/edges/relations/provenance/catalog-core-agents.yaml +370 -0
  68. package/graph/edges/relations/provenance/catalog-core-models.yaml +88 -0
  69. package/graph/edges/relations/provenance/catalog-core-providers.yaml +220 -0
  70. package/graph/edges/relations/provenance/evidence-sources.yaml +136 -0
  71. package/graph/edges/relations/provenance/hooks-plugins-and-discovery-discovery.yaml +124 -0
  72. package/graph/edges/relations/provenance/hooks-plugins-and-discovery-hooks.yaml +244 -0
  73. package/graph/edges/relations/provenance/hooks-plugins-and-discovery-plugins.yaml +166 -0
  74. package/graph/edges/relations/provenance/processes-packages-and-paths.yaml +490 -0
  75. package/graph/edges/relations/provenance/runtime-and-capabilities-capability.yaml +202 -0
  76. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-agents-claude.yaml +210 -0
  77. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-agents-codex.yaml +302 -0
  78. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-agents-copilot.yaml +170 -0
  79. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-agents-cursor.yaml +146 -0
  80. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-agents-gemini.yaml +143 -0
  81. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-agents-omp.yaml +76 -0
  82. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-agents-openclaw.yaml +112 -0
  83. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-agents-opencode.yaml +139 -0
  84. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-agents-pi.yaml +40 -0
  85. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-providers.yaml +112 -0
  86. package/graph/edges/relations/provenance/runtime-and-capabilities-capabilitySupport-transports.yaml +190 -0
  87. package/graph/edges/relations/provenance/runtime-and-capabilities-modality.yaml +88 -0
  88. package/graph/edges/relations/provenance/runtime-and-capabilities-transport.yaml +172 -0
  89. package/graph/nodes/agents/babysitter-agent.yaml +43 -0
  90. package/graph/nodes/agents/products.yaml +163 -0
  91. package/graph/nodes/agents/versions.yaml +282 -0
  92. package/graph/nodes/capabilities/capabilities.yaml +234 -0
  93. package/graph/nodes/capabilities/modalities.yaml +74 -0
  94. package/graph/nodes/capabilities/supports/agents/babysitter-agent.yaml +46 -0
  95. package/graph/nodes/capabilities/supports/agents/claude.yaml +166 -0
  96. package/graph/nodes/capabilities/supports/agents/codex.yaml +190 -0
  97. package/graph/nodes/capabilities/supports/agents/copilot.yaml +121 -0
  98. package/graph/nodes/capabilities/supports/agents/cursor.yaml +104 -0
  99. package/graph/nodes/capabilities/supports/agents/gemini.yaml +104 -0
  100. package/graph/nodes/capabilities/supports/agents/omp.yaml +74 -0
  101. package/graph/nodes/capabilities/supports/agents/openclaw.yaml +67 -0
  102. package/graph/nodes/capabilities/supports/agents/opencode.yaml +103 -0
  103. package/graph/nodes/capabilities/supports/agents/pi.yaml +65 -0
  104. package/graph/nodes/capabilities/supports/provider-versions.yaml +73 -0
  105. package/graph/nodes/capabilities/supports/transport-runtimes.yaml +122 -0
  106. package/graph/nodes/evidence/babysitter-agent-and-claude-web.yaml +83 -0
  107. package/graph/nodes/evidence/claims.yaml +315 -0
  108. package/graph/nodes/evidence/claude-code-capability-claims.yaml +170 -0
  109. package/graph/nodes/evidence/claude-code-docs-core.yaml +103 -0
  110. package/graph/nodes/evidence/claude-code-docs-extensions.yaml +114 -0
  111. package/graph/nodes/evidence/codex-web.yaml +155 -0
  112. package/graph/nodes/evidence/copilot-web.yaml +213 -0
  113. package/graph/nodes/evidence/cursor-web.yaml +191 -0
  114. package/graph/nodes/evidence/evidence-sources.yaml +206 -0
  115. package/graph/nodes/evidence/gemini-cli-web.yaml +177 -0
  116. package/graph/nodes/evidence/omp-web.yaml +129 -0
  117. package/graph/nodes/evidence/opencode-web.yaml +144 -0
  118. package/graph/nodes/hooks-and-plugins/hook-mappings.yaml +399 -0
  119. package/graph/nodes/hooks-and-plugins/hook-surfaces.yaml +160 -0
  120. package/graph/nodes/hooks-and-plugins/plugin-artifacts.yaml +229 -0
  121. package/graph/nodes/hooks-and-plugins/plugin-targets.yaml +330 -0
  122. package/graph/nodes/models.yaml +103 -0
  123. package/graph/nodes/processes-and-packages/ci-surfaces.yaml +45 -0
  124. package/graph/nodes/processes-and-packages/packages.yaml +89 -0
  125. package/graph/nodes/processes-and-packages/processes.yaml +44 -0
  126. package/graph/nodes/providers/products.yaml +102 -0
  127. package/graph/nodes/providers/versions.yaml +108 -0
  128. package/graph/nodes/runtime-semantics/discovery-signals-hooks.yaml +185 -0
  129. package/graph/nodes/runtime-semantics/discovery-signals-host.yaml +254 -0
  130. package/graph/nodes/runtime-semantics/lifecycle-semantics.yaml +151 -0
  131. package/graph/nodes/runtime-semantics/paths.yaml +289 -0
  132. package/graph/nodes/runtime-semantics/session-semantics.yaml +214 -0
  133. package/graph/nodes/transports.yaml +202 -0
  134. package/graph/schema/ontology-schema.yaml +529 -0
  135. package/package.json +65 -0
@@ -0,0 +1,4 @@
1
+ import type { GraphNode, GraphRelationship } from "./models";
2
+ export declare function buildClaimsByEvidence(claimNodes: Iterable<GraphNode>, evidenceNodes: Iterable<GraphNode>, relationships: Iterable<Pick<GraphRelationship, "from" | "to" | "relation">>): Map<string, GraphNode[]>;
3
+ export declare function getEvidenceClaimStatement(evidenceId: string, claimsByEvidence: ReadonlyMap<string, GraphNode[]>): string;
4
+ //# sourceMappingURL=evidence-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-projection.d.ts","sourceRoot":"","sources":["../src/evidence-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAM7D,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC/B,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,EAClC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,GAC3E,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CA0B1B;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GACjD,MAAM,CAER"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildClaimsByEvidence = buildClaimsByEvidence;
4
+ exports.getEvidenceClaimStatement = getEvidenceClaimStatement;
5
+ function valueAsString(value) {
6
+ return typeof value === "string" ? value : "";
7
+ }
8
+ function buildClaimsByEvidence(claimNodes, evidenceNodes, relationships) {
9
+ const claimsByGraphId = new Map(Array.from(claimNodes, (node) => [valueAsString(node.id), node]));
10
+ const evidenceByGraphId = new Map(Array.from(evidenceNodes, (node) => [valueAsString(node.id), node]));
11
+ const claimsByEvidence = new Map();
12
+ for (const relationship of relationships) {
13
+ if (relationship.relation !== "sourced_from") {
14
+ continue;
15
+ }
16
+ const claimNode = claimsByGraphId.get(relationship.from);
17
+ const evidenceNode = evidenceByGraphId.get(relationship.to);
18
+ if (!claimNode || !evidenceNode) {
19
+ continue;
20
+ }
21
+ const evidenceId = valueAsString(evidenceNode.evidenceId);
22
+ const evidenceClaims = claimsByEvidence.get(evidenceId);
23
+ if (evidenceClaims) {
24
+ evidenceClaims.push(claimNode);
25
+ }
26
+ else {
27
+ claimsByEvidence.set(evidenceId, [claimNode]);
28
+ }
29
+ }
30
+ return claimsByEvidence;
31
+ }
32
+ function getEvidenceClaimStatement(evidenceId, claimsByEvidence) {
33
+ return valueAsString(claimsByEvidence.get(evidenceId)?.[0]?.statement);
34
+ }
@@ -0,0 +1,13 @@
1
+ import type { ClaimRecord, EvidenceRecord, OntologyEvidenceExport, OntologyEvidenceManifest, OntologyEvidenceSearchResult, SubjectProvenance } from "./models";
2
+ export declare function getOntologyEvidenceManifest(): OntologyEvidenceManifest;
3
+ export declare function getOntologyEvidenceSnapshot(): OntologyEvidenceExport;
4
+ export declare function listOntologyEvidenceSources(): EvidenceRecord[];
5
+ export declare function getOntologyEvidenceSource(evidenceId: string): EvidenceRecord | undefined;
6
+ export declare function listOntologyClaims(): ClaimRecord[];
7
+ export declare function getOntologyClaim(claimId: string): ClaimRecord | undefined;
8
+ export declare function listClaimsForSubject(subjectId: string): ClaimRecord[];
9
+ export declare function listClaimsForEvidence(evidenceId: string): ClaimRecord[];
10
+ export declare function listEvidenceForSubject(subjectId: string): EvidenceRecord[];
11
+ export declare function getSubjectProvenance(subjectId: string): SubjectProvenance;
12
+ export declare function searchOntologyEvidence(query: string): OntologyEvidenceSearchResult;
13
+ //# sourceMappingURL=evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAIV,WAAW,EACX,cAAc,EAEd,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAG5B,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAiLlB,wBAAgB,2BAA2B,IAAI,wBAAwB,CAEtE;AAED,wBAAgB,2BAA2B,IAAI,sBAAsB,CAQpE;AAED,wBAAgB,2BAA2B,IAAI,cAAc,EAAE,CAE9D;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAGxF;AAED,wBAAgB,kBAAkB,IAAI,WAAW,EAAE,CAElD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAGzE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAErE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE,CAEvE;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE,CAK1E;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAMzE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,4BAA4B,CAoBlF"}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getOntologyEvidenceManifest = getOntologyEvidenceManifest;
7
+ exports.getOntologyEvidenceSnapshot = getOntologyEvidenceSnapshot;
8
+ exports.listOntologyEvidenceSources = listOntologyEvidenceSources;
9
+ exports.getOntologyEvidenceSource = getOntologyEvidenceSource;
10
+ exports.listOntologyClaims = listOntologyClaims;
11
+ exports.getOntologyClaim = getOntologyClaim;
12
+ exports.listClaimsForSubject = listClaimsForSubject;
13
+ exports.listClaimsForEvidence = listClaimsForEvidence;
14
+ exports.listEvidenceForSubject = listEvidenceForSubject;
15
+ exports.getSubjectProvenance = getSubjectProvenance;
16
+ exports.searchOntologyEvidence = searchOntologyEvidence;
17
+ const node_fs_1 = __importDefault(require("node:fs"));
18
+ const node_path_1 = __importDefault(require("node:path"));
19
+ const assets_1 = require("./assets");
20
+ const evidence_projection_1 = require("./evidence-projection");
21
+ const graph_1 = require("./graph");
22
+ const transport_mux_cutover_1 = require("./transport-mux-cutover");
23
+ function clone(value) {
24
+ return JSON.parse(JSON.stringify(value));
25
+ }
26
+ function evidenceRoot() {
27
+ return node_path_1.default.dirname((0, assets_1.resolveCatalogEvidenceAssetPath)("ontology-evidence", "manifest.json"));
28
+ }
29
+ function readJson(filePath) {
30
+ try {
31
+ return JSON.parse(node_fs_1.default.readFileSync(filePath, "utf8"));
32
+ }
33
+ catch (error) {
34
+ const reason = error instanceof Error ? error.message : String(error);
35
+ throw new Error(`Failed to read JSON asset ${filePath}: ${reason}`);
36
+ }
37
+ }
38
+ function manifestPath() {
39
+ return node_path_1.default.join(evidenceRoot(), "manifest.json");
40
+ }
41
+ function valueAsString(value) {
42
+ return typeof value === "string" ? value : "";
43
+ }
44
+ function stringArray(value) {
45
+ return Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : [];
46
+ }
47
+ function claimConfidence(value) {
48
+ const normalized = valueAsString(value);
49
+ return normalized === "high" || normalized === "medium" ? normalized : "low";
50
+ }
51
+ function claimProvenanceKind(value) {
52
+ const normalized = valueAsString(value);
53
+ if (normalized === "repo-observation" || normalized === "vendor-documentation") {
54
+ return normalized;
55
+ }
56
+ return "vendor-inference";
57
+ }
58
+ function claimEvidenceStrength(value) {
59
+ const normalized = valueAsString(value);
60
+ if (normalized === "corroborated" || normalized === "partial") {
61
+ return normalized;
62
+ }
63
+ return "inferred";
64
+ }
65
+ function loadManifest() {
66
+ return readJson(manifestPath());
67
+ }
68
+ function loadShard(descriptor) {
69
+ return readJson(node_path_1.default.join(evidenceRoot(), descriptor.relativePath));
70
+ }
71
+ function loadEvidenceNodes(manifest) {
72
+ return manifest.shards
73
+ .filter((descriptor) => descriptor.entryKind === "evidence-sources")
74
+ .flatMap((descriptor) => loadShard(descriptor).entries);
75
+ }
76
+ function loadClaimNodes(manifest) {
77
+ return manifest.shards
78
+ .filter((descriptor) => descriptor.entryKind === "claims")
79
+ .flatMap((descriptor) => loadShard(descriptor).entries);
80
+ }
81
+ let cachedEvidenceState;
82
+ function buildEvidenceState() {
83
+ try {
84
+ const manifest = loadManifest();
85
+ const evidenceSourceNodes = loadEvidenceNodes(manifest);
86
+ const claimNodes = loadClaimNodes(manifest);
87
+ const graph = (0, graph_1.getCatalogGraph)();
88
+ const claimsById = new Map(claimNodes.map((node) => [valueAsString(node.claimId), node]));
89
+ const evidenceById = new Map(evidenceSourceNodes.map((node) => [valueAsString(node.evidenceId), node]));
90
+ const claimNodeByGraphId = new Map(claimNodes.map((node) => [valueAsString(node.id), node]));
91
+ const claimsBySubject = new Map();
92
+ const claimsByEvidence = (0, evidence_projection_1.buildClaimsByEvidence)(claimNodes, evidenceSourceNodes, graph.edges);
93
+ for (const edge of graph.edges) {
94
+ if (edge.relation !== "supported_by_claim") {
95
+ continue;
96
+ }
97
+ const claimNode = claimNodeByGraphId.get(edge.to);
98
+ if (!claimNode) {
99
+ continue;
100
+ }
101
+ const subjectBucket = claimsBySubject.get(edge.from);
102
+ if (subjectBucket) {
103
+ subjectBucket.push(claimNode);
104
+ }
105
+ else {
106
+ claimsBySubject.set(edge.from, [claimNode]);
107
+ }
108
+ }
109
+ return {
110
+ manifest,
111
+ evidenceSourceNodes,
112
+ claimNodes,
113
+ claimsById,
114
+ evidenceById,
115
+ claimsBySubject,
116
+ claimsByEvidence,
117
+ };
118
+ }
119
+ catch (error) {
120
+ const reason = error instanceof Error ? error.message : String(error);
121
+ throw new Error(`Failed to load ontology evidence assets for @a5c-ai/agent-catalog. Ensure evidence/ontology-evidence/manifest.json and referenced shards are packaged and valid JSON. Cause: ${reason}`);
122
+ }
123
+ }
124
+ function getEvidenceState() {
125
+ if (!cachedEvidenceState) {
126
+ cachedEvidenceState = buildEvidenceState();
127
+ }
128
+ return cachedEvidenceState;
129
+ }
130
+ function toClaimRecord(node) {
131
+ const evidenceIds = stringArray(node.evidenceIds);
132
+ return {
133
+ claimId: valueAsString(node.claimId),
134
+ statement: valueAsString(node.statement),
135
+ subjectKind: valueAsString(node.subjectKind),
136
+ subjectId: valueAsString(node.subjectId),
137
+ confidence: claimConfidence(node.confidence),
138
+ status: (0, transport_mux_cutover_1.effectiveTransportMuxClaimStatus)(valueAsString(node.status), evidenceIds),
139
+ provenanceKind: claimProvenanceKind(node.provenanceKind),
140
+ evidenceStrength: claimEvidenceStrength(node.evidenceStrength),
141
+ evidenceIds,
142
+ unresolvedGaps: (0, transport_mux_cutover_1.effectiveTransportMuxUnresolvedGaps)(stringArray(node.unresolvedGaps), evidenceIds),
143
+ };
144
+ }
145
+ function toEvidenceRecord(node) {
146
+ const evidenceState = getEvidenceState();
147
+ const evidenceId = valueAsString(node.evidenceId);
148
+ const freshnessWindowDays = typeof node.freshnessWindowDays === "number" && Number.isFinite(node.freshnessWindowDays)
149
+ ? node.freshnessWindowDays
150
+ : undefined;
151
+ return {
152
+ evidenceId,
153
+ kind: valueAsString(node.kindLabel) === "web" ? "web" : "repo",
154
+ sourcePathOrUrl: valueAsString(node.sourcePathOrUrl),
155
+ excerptLocator: valueAsString(node.locator),
156
+ claim: (0, evidence_projection_1.getEvidenceClaimStatement)(evidenceId, evidenceState.claimsByEvidence),
157
+ capturedAt: valueAsString(node.capturedAt),
158
+ trustLevel: valueAsString(node.trustLevel),
159
+ reviewOwner: valueAsString(node.reviewOwner),
160
+ reviewedAt: valueAsString(node.reviewedAt),
161
+ freshnessWindowDays,
162
+ };
163
+ }
164
+ function searchTextMatches(node, normalizedQuery, fields) {
165
+ return fields.some((field) => valueAsString(node[field]).toLowerCase().includes(normalizedQuery));
166
+ }
167
+ function getOntologyEvidenceManifest() {
168
+ return clone(getEvidenceState().manifest);
169
+ }
170
+ function getOntologyEvidenceSnapshot() {
171
+ const evidenceState = getEvidenceState();
172
+ return {
173
+ generatedAt: evidenceState.manifest.generatedAt,
174
+ manifest: clone(evidenceState.manifest),
175
+ evidenceSources: clone(evidenceState.evidenceSourceNodes),
176
+ claims: clone(evidenceState.claimNodes),
177
+ };
178
+ }
179
+ function listOntologyEvidenceSources() {
180
+ return getEvidenceState().evidenceSourceNodes.map(toEvidenceRecord).map(clone);
181
+ }
182
+ function getOntologyEvidenceSource(evidenceId) {
183
+ const node = getEvidenceState().evidenceById.get(evidenceId);
184
+ return node ? clone(toEvidenceRecord(node)) : undefined;
185
+ }
186
+ function listOntologyClaims() {
187
+ return getEvidenceState().claimNodes.map(toClaimRecord).map(clone);
188
+ }
189
+ function getOntologyClaim(claimId) {
190
+ const node = getEvidenceState().claimsById.get(claimId);
191
+ return node ? clone(toClaimRecord(node)) : undefined;
192
+ }
193
+ function listClaimsForSubject(subjectId) {
194
+ return (getEvidenceState().claimsBySubject.get(subjectId) ?? []).map(toClaimRecord).map(clone);
195
+ }
196
+ function listClaimsForEvidence(evidenceId) {
197
+ return (getEvidenceState().claimsByEvidence.get(evidenceId) ?? []).map(toClaimRecord).map(clone);
198
+ }
199
+ function listEvidenceForSubject(subjectId) {
200
+ const evidenceIds = new Set(listClaimsForSubject(subjectId).flatMap((claim) => claim.evidenceIds));
201
+ return [...evidenceIds]
202
+ .map((evidenceId) => getOntologyEvidenceSource(evidenceId))
203
+ .filter((record) => Boolean(record));
204
+ }
205
+ function getSubjectProvenance(subjectId) {
206
+ return {
207
+ subjectId,
208
+ claims: listClaimsForSubject(subjectId),
209
+ evidence: listEvidenceForSubject(subjectId),
210
+ };
211
+ }
212
+ function searchOntologyEvidence(query) {
213
+ const evidenceState = getEvidenceState();
214
+ const normalizedQuery = query.trim().toLowerCase();
215
+ if (!normalizedQuery) {
216
+ return { query, evidence: [], claims: [] };
217
+ }
218
+ return {
219
+ query,
220
+ evidence: evidenceState.evidenceSourceNodes.filter((node) => searchTextMatches(node, normalizedQuery, ["evidenceId", "sourcePathOrUrl", "locator", "kindLabel"]))
221
+ .map(toEvidenceRecord)
222
+ .map(clone),
223
+ claims: evidenceState.claimNodes.filter((node) => searchTextMatches(node, normalizedQuery, ["claimId", "statement", "subjectId", "subjectKind", "confidence", "status"]))
224
+ .map(toClaimRecord)
225
+ .map(clone),
226
+ };
227
+ }
@@ -0,0 +1,20 @@
1
+ import type { CatalogGraph, GraphDocument, GraphEdge, GraphNode, GraphRelationship, OntologySchema } from "./models";
2
+ export declare function getCatalogGraph(): CatalogGraph;
3
+ export declare function getGraphDocument(): GraphDocument;
4
+ export declare function getOntologySchema(): OntologySchema;
5
+ export declare function listGraphNodes(): GraphNode[];
6
+ export declare function listNodesByKind(kind: GraphNode["kind"]): GraphNode[];
7
+ export declare function getNodeById<TNode extends GraphNode = GraphNode>(nodeId: string): TNode | undefined;
8
+ export declare function listGraphEdges(): GraphRelationship[];
9
+ export declare function listRelationshipsForNode(nodeId: string): GraphRelationship[];
10
+ export declare function listRelationshipsByRelation(relation: string): GraphRelationship[];
11
+ export declare function listOutgoingTargets(nodeId: string, relation: string): GraphNode[];
12
+ export declare function listIncomingSources(nodeId: string, relation: string): GraphNode[];
13
+ export declare function listEdgesForNode(catalog: {
14
+ graph: GraphEdge[];
15
+ }, nodeId: string): GraphEdge[];
16
+ export declare function listEdgesByRelation(catalog: {
17
+ graph: GraphEdge[];
18
+ }, relation: string): GraphEdge[];
19
+ export declare function assertGraphFileCoverage(): void;
20
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,cAAc,EACf,MAAM,UAAU,CAAC;AAuJlB,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAE5C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,CAEpE;AAED,wBAAgB,WAAW,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAElG;AAED,wBAAgB,cAAc,IAAI,iBAAiB,EAAE,CAEpD;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAE5E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAEjF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAIjF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAIjF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAE7F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAElG;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAY9C"}
package/dist/graph.js ADDED
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getCatalogGraph = getCatalogGraph;
7
+ exports.getGraphDocument = getGraphDocument;
8
+ exports.getOntologySchema = getOntologySchema;
9
+ exports.listGraphNodes = listGraphNodes;
10
+ exports.listNodesByKind = listNodesByKind;
11
+ exports.getNodeById = getNodeById;
12
+ exports.listGraphEdges = listGraphEdges;
13
+ exports.listRelationshipsForNode = listRelationshipsForNode;
14
+ exports.listRelationshipsByRelation = listRelationshipsByRelation;
15
+ exports.listOutgoingTargets = listOutgoingTargets;
16
+ exports.listIncomingSources = listIncomingSources;
17
+ exports.listEdgesForNode = listEdgesForNode;
18
+ exports.listEdgesByRelation = listEdgesByRelation;
19
+ exports.assertGraphFileCoverage = assertGraphFileCoverage;
20
+ const node_fs_1 = __importDefault(require("node:fs"));
21
+ const node_path_1 = __importDefault(require("node:path"));
22
+ const yaml_1 = require("yaml");
23
+ const assets_1 = require("./assets");
24
+ function listYamlFilesRecursively(targetPath) {
25
+ const stat = node_fs_1.default.statSync(targetPath);
26
+ if (stat.isFile()) {
27
+ return targetPath.endsWith(".yaml") ? [targetPath] : [];
28
+ }
29
+ return node_fs_1.default
30
+ .readdirSync(targetPath, { withFileTypes: true })
31
+ .flatMap((entry) => listYamlFilesRecursively(node_path_1.default.join(targetPath, entry.name)))
32
+ .sort((left, right) => left.localeCompare(right));
33
+ }
34
+ let cachedGraph;
35
+ function graphRoot() {
36
+ return node_path_1.default.dirname((0, assets_1.resolveCatalogGraphAssetPath)("agent-catalog.graph.yaml"));
37
+ }
38
+ function readYamlFile(filePath) {
39
+ try {
40
+ return (0, yaml_1.parse)(node_fs_1.default.readFileSync(filePath, "utf8"));
41
+ }
42
+ catch (error) {
43
+ const reason = error instanceof Error ? error.message : String(error);
44
+ throw new Error(`Failed to read YAML asset ${filePath}: ${reason}`);
45
+ }
46
+ }
47
+ function ensureArray(value, label) {
48
+ if (!Array.isArray(value)) {
49
+ throw new Error(`Expected ${label} to be an array.`);
50
+ }
51
+ return value;
52
+ }
53
+ function ensureString(value, label) {
54
+ if (typeof value !== "string" || value.length === 0) {
55
+ throw new Error(`Expected ${label} to be a non-empty string.`);
56
+ }
57
+ return value;
58
+ }
59
+ function validateRequiredAttributes(subject, required, label) {
60
+ for (const attribute of required) {
61
+ if (!(attribute in subject)) {
62
+ throw new Error(`Missing required ${label} attribute "${attribute}".`);
63
+ }
64
+ }
65
+ }
66
+ function loadCatalogGraph() {
67
+ if (cachedGraph) {
68
+ return cachedGraph;
69
+ }
70
+ try {
71
+ const rootDir = graphRoot();
72
+ const document = readYamlFile(node_path_1.default.join(rootDir, "agent-catalog.graph.yaml"));
73
+ const schema = readYamlFile(node_path_1.default.join(rootDir, document.schemaPath));
74
+ validateRequiredAttributes(document, schema.nodeKinds.GraphDocument.requiredAttributes, "GraphDocument");
75
+ validateRequiredAttributes(schema, schema.nodeKinds.OntologySchema.requiredAttributes, "OntologySchema");
76
+ const nodes = [];
77
+ const edges = [];
78
+ for (const importPath of document.imports) {
79
+ for (const resolvedPath of listYamlFilesRecursively(node_path_1.default.join(rootDir, importPath))) {
80
+ const parsed = readYamlFile(resolvedPath);
81
+ if (parsed.kind === "NodeDocument") {
82
+ nodes.push(...parsed.nodes);
83
+ continue;
84
+ }
85
+ if (parsed.kind === "EdgeDocument") {
86
+ edges.push(...parsed.edges);
87
+ continue;
88
+ }
89
+ throw new Error(`Unsupported graph document kind in ${resolvedPath}.`);
90
+ }
91
+ }
92
+ const nodeIds = new Set([document.id, schema.id]);
93
+ const nodeKinds = new Map([
94
+ [document.id, "GraphDocument"],
95
+ [schema.id, "OntologySchema"],
96
+ ]);
97
+ for (const node of nodes) {
98
+ ensureString(node.id, "node.id");
99
+ ensureString(node.kind, `node.kind for ${node.id}`);
100
+ const definition = schema.nodeKinds[node.kind];
101
+ if (!definition) {
102
+ throw new Error(`Unknown node kind "${node.kind}" for ${node.id}.`);
103
+ }
104
+ validateRequiredAttributes(node, definition.requiredAttributes, `node ${node.id}`);
105
+ nodeIds.add(node.id);
106
+ nodeKinds.set(node.id, node.kind);
107
+ }
108
+ for (const edge of edges) {
109
+ ensureString(edge.id, "edge.id");
110
+ ensureString(edge.relation, `edge.relation for ${edge.id}`);
111
+ ensureString(edge.from, `edge.from for ${edge.id}`);
112
+ ensureString(edge.to, `edge.to for ${edge.id}`);
113
+ const definition = schema.edgeKinds[edge.relation];
114
+ if (!definition) {
115
+ throw new Error(`Unknown edge relation "${edge.relation}" for ${edge.id}.`);
116
+ }
117
+ validateRequiredAttributes(edge, definition.requiredAttributes, `edge ${edge.id}`);
118
+ if (!nodeIds.has(edge.from)) {
119
+ throw new Error(`Edge ${edge.id} references unknown source node ${edge.from}.`);
120
+ }
121
+ if (!nodeIds.has(edge.to)) {
122
+ throw new Error(`Edge ${edge.id} references unknown target node ${edge.to}.`);
123
+ }
124
+ if (definition.from && !definition.from.includes(nodeKinds.get(edge.from) ?? "")) {
125
+ throw new Error(`Edge ${edge.id} has invalid source kind ${nodeKinds.get(edge.from)} for relation ${edge.relation}.`);
126
+ }
127
+ if (definition.to && !definition.to.includes(nodeKinds.get(edge.to) ?? "")) {
128
+ throw new Error(`Edge ${edge.id} has invalid target kind ${nodeKinds.get(edge.to)} for relation ${edge.relation}.`);
129
+ }
130
+ }
131
+ cachedGraph = { document, schema, nodes, edges };
132
+ return cachedGraph;
133
+ }
134
+ catch (error) {
135
+ const reason = error instanceof Error ? error.message : String(error);
136
+ throw new Error(`Failed to load graph assets for @a5c-ai/agent-catalog. Ensure graph/agent-catalog.graph.yaml and imported YAML files are packaged and valid YAML. Cause: ${reason}`);
137
+ }
138
+ }
139
+ function getCatalogGraph() {
140
+ return loadCatalogGraph();
141
+ }
142
+ function getGraphDocument() {
143
+ return loadCatalogGraph().document;
144
+ }
145
+ function getOntologySchema() {
146
+ return loadCatalogGraph().schema;
147
+ }
148
+ function listGraphNodes() {
149
+ return [...loadCatalogGraph().nodes];
150
+ }
151
+ function listNodesByKind(kind) {
152
+ return loadCatalogGraph().nodes.filter((node) => node.kind === kind);
153
+ }
154
+ function getNodeById(nodeId) {
155
+ return loadCatalogGraph().nodes.find((node) => node.id === nodeId);
156
+ }
157
+ function listGraphEdges() {
158
+ return [...loadCatalogGraph().edges];
159
+ }
160
+ function listRelationshipsForNode(nodeId) {
161
+ return loadCatalogGraph().edges.filter((edge) => edge.from === nodeId || edge.to === nodeId);
162
+ }
163
+ function listRelationshipsByRelation(relation) {
164
+ return loadCatalogGraph().edges.filter((edge) => edge.relation === relation);
165
+ }
166
+ function listOutgoingTargets(nodeId, relation) {
167
+ const graph = loadCatalogGraph();
168
+ const targetIds = graph.edges.filter((edge) => edge.from === nodeId && edge.relation === relation).map((edge) => edge.to);
169
+ return graph.nodes.filter((node) => targetIds.includes(node.id));
170
+ }
171
+ function listIncomingSources(nodeId, relation) {
172
+ const graph = loadCatalogGraph();
173
+ const sourceIds = graph.edges.filter((edge) => edge.to === nodeId && edge.relation === relation).map((edge) => edge.from);
174
+ return graph.nodes.filter((node) => sourceIds.includes(node.id));
175
+ }
176
+ function listEdgesForNode(catalog, nodeId) {
177
+ return catalog.graph.filter((edge) => edge.from === nodeId || edge.to === nodeId);
178
+ }
179
+ function listEdgesByRelation(catalog, relation) {
180
+ return catalog.graph.filter((edge) => edge.relation === relation);
181
+ }
182
+ function assertGraphFileCoverage() {
183
+ const document = getGraphDocument();
184
+ ensureArray(document.imports, "GraphDocument.imports");
185
+ for (const importPath of document.imports) {
186
+ const absolutePath = node_path_1.default.join(graphRoot(), ensureString(importPath, "GraphDocument.imports[]"));
187
+ if (!node_fs_1.default.existsSync(absolutePath)) {
188
+ throw new Error(`Graph import is missing: ${importPath}`);
189
+ }
190
+ if (listYamlFilesRecursively(absolutePath).length === 0) {
191
+ throw new Error(`Graph import has no YAML files: ${importPath}`);
192
+ }
193
+ }
194
+ }
@@ -0,0 +1,11 @@
1
+ export * from "./models";
2
+ export * from "./assets";
3
+ export * from "./data";
4
+ export * from "./evidence";
5
+ export { listOntologyClaims } from "./evidence";
6
+ export * from "./graph";
7
+ export * from "./sdk";
8
+ export * from "./cli";
9
+ export * from "./ui";
10
+ export * from "./discovery";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,MAAM,CAAC;AACrB,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.listOntologyClaims = void 0;
18
+ __exportStar(require("./models"), exports);
19
+ __exportStar(require("./assets"), exports);
20
+ __exportStar(require("./data"), exports);
21
+ __exportStar(require("./evidence"), exports);
22
+ var evidence_1 = require("./evidence");
23
+ Object.defineProperty(exports, "listOntologyClaims", { enumerable: true, get: function () { return evidence_1.listOntologyClaims; } });
24
+ __exportStar(require("./graph"), exports);
25
+ __exportStar(require("./sdk"), exports);
26
+ __exportStar(require("./cli"), exports);
27
+ __exportStar(require("./ui"), exports);
28
+ __exportStar(require("./discovery"), exports);