@a5c-ai/agent-catalog 5.0.1-staging.49991ee2 → 5.0.1-staging.4ab05d2e5
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/dist/atlas-bridge.d.ts.map +1 -1
- package/dist/atlas-bridge.js +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +15 -3
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +294 -16
- package/dist/discovery-snapshot.json +87059 -22842
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -5
- package/dist/models.d.ts +75 -0
- package/dist/models.d.ts.map +1 -1
- package/dist/sdk.d.ts +33 -2
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +346 -29
- package/package.json +6 -13
- package/dist/assets.d.ts +0 -4
- package/dist/assets.d.ts.map +0 -1
- package/dist/assets.js +0 -76
- package/dist/evidence-projection.d.ts +0 -4
- package/dist/evidence-projection.d.ts.map +0 -1
- package/dist/evidence-projection.js +0 -34
- package/dist/evidence.d.ts +0 -13
- package/dist/evidence.d.ts.map +0 -1
- package/dist/evidence.js +0 -227
- package/dist/graph.d.ts +0 -20
- package/dist/graph.d.ts.map +0 -1
- package/dist/graph.js +0 -194
- package/evidence/ontology-evidence/claims/catalog-processes-and-packaging.json +0 -89
- package/evidence/ontology-evidence/claims/plugins-hooks-discovery.json +0 -136
- package/evidence/ontology-evidence/claims/runtime-core.json +0 -18944
- package/evidence/ontology-evidence/claims/vendor-web.json +0 -977
- package/evidence/ontology-evidence/evidence-sources/catalog-processes-and-packaging.json +0 -103
- package/evidence/ontology-evidence/evidence-sources/plugins-hooks-discovery.json +0 -46
- package/evidence/ontology-evidence/evidence-sources/runtime-core.json +0 -736
- package/evidence/ontology-evidence/evidence-sources/vendor-web.json +0 -3206
- package/evidence/ontology-evidence/manifest.json +0 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atlas-bridge.d.ts","sourceRoot":"","sources":["../src/atlas-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,cAAc,EACf,MAAM,UAAU,CAAC;AAuElB,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,EAC7D,MAAM,EAAE,MAAM,GACb,KAAK,GAAG,SAAS,CAGnB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,GACf,iBAAiB,EAAE,CAErB;AAED,wBAAgB,cAAc,IAAI,iBAAiB,EAAE,CAEpD;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,SAAS,EAAE,CAOb;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,SAAS,EAAE,CAOb;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAI5E;AAMD,wBAAgB,gBAAgB,IAAI,aAAa,CAYhD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,
|
|
1
|
+
{"version":3,"file":"atlas-bridge.d.ts","sourceRoot":"","sources":["../src/atlas-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,cAAc,EACf,MAAM,UAAU,CAAC;AAuElB,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,EAC7D,MAAM,EAAE,MAAM,GACb,KAAK,GAAG,SAAS,CAGnB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,GACf,iBAAiB,EAAE,CAErB;AAED,wBAAgB,cAAc,IAAI,iBAAiB,EAAE,CAEpD;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,SAAS,EAAE,CAOb;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,SAAS,EAAE,CAOb;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAI5E;AAMD,wBAAgB,gBAAgB,IAAI,aAAa,CAYhD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAmBlD;AAED,wBAAgB,eAAe,IAAI,YAAY,CAO9C;AAMD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,EAC/B,MAAM,EAAE,MAAM,GACb,SAAS,EAAE,CAIb;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,EAC/B,QAAQ,EAAE,MAAM,GACf,SAAS,EAAE,CAEb;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAMD,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C"}
|
package/dist/atlas-bridge.js
CHANGED
|
@@ -144,8 +144,12 @@ function getOntologySchema() {
|
|
|
144
144
|
return {
|
|
145
145
|
kind: "OntologySchema",
|
|
146
146
|
id: "schema:agent-catalog-ontology",
|
|
147
|
+
schemaId: "schema:agent-catalog-ontology",
|
|
148
|
+
version: "2026.04.agent-catalog-v2",
|
|
147
149
|
nodeKinds,
|
|
148
150
|
edgeKinds,
|
|
151
|
+
versionScopingRules: [],
|
|
152
|
+
deprecationRules: [],
|
|
149
153
|
};
|
|
150
154
|
}
|
|
151
155
|
function getCatalogGraph() {
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -12,6 +12,7 @@ exports.listCliCapabilitySupport = listCliCapabilitySupport;
|
|
|
12
12
|
exports.listCliAgentRelations = listCliAgentRelations;
|
|
13
13
|
exports.listCliPackageRelations = listCliPackageRelations;
|
|
14
14
|
exports.listCliProcessRelations = listCliProcessRelations;
|
|
15
|
+
const atlas_1 = require("@a5c-ai/atlas");
|
|
15
16
|
const data_1 = require("./data");
|
|
16
17
|
const atlas_bridge_1 = require("./atlas-bridge");
|
|
17
18
|
const transport_mux_cutover_1 = require("./transport-mux-cutover");
|
|
@@ -87,7 +88,18 @@ function toCliGraphEdgeRow(edge) {
|
|
|
87
88
|
};
|
|
88
89
|
}
|
|
89
90
|
function claimNodesFor(nodeId) {
|
|
90
|
-
|
|
91
|
+
const edgeBased = (0, atlas_bridge_1.listOutgoingTargets)(nodeId, "supported_by_claim").filter((node) => node.kind === "Claim");
|
|
92
|
+
if (edgeBased.length > 0)
|
|
93
|
+
return edgeBased;
|
|
94
|
+
// Fallback: find Claim nodes whose evidenceIds overlap with the node's evidenceRefs
|
|
95
|
+
const node = (0, atlas_bridge_1.getNodeById)(nodeId);
|
|
96
|
+
if (!node)
|
|
97
|
+
return [];
|
|
98
|
+
const evidenceIds = stringArray(node.evidenceRefs);
|
|
99
|
+
if (evidenceIds.length === 0)
|
|
100
|
+
return [];
|
|
101
|
+
return (0, atlas_bridge_1.listGraphNodes)()
|
|
102
|
+
.filter((candidate) => candidate.kind === "Claim" && stringArray(candidate.evidenceIds).some((id) => evidenceIds.includes(id)));
|
|
91
103
|
}
|
|
92
104
|
function sourceNodesForClaim(claimNodeId) {
|
|
93
105
|
const claimNode = (0, atlas_bridge_1.getNodeById)(claimNodeId);
|
|
@@ -294,8 +306,8 @@ function listCliPackageRelations(packageId) {
|
|
|
294
306
|
const processes = (0, atlas_bridge_1.listOutgoingTargets)(node.id, "surfaces_process");
|
|
295
307
|
const paths = (0, atlas_bridge_1.listOutgoingTargets)(node.id, "references_path");
|
|
296
308
|
const ciSurfaces = (0, atlas_bridge_1.listOutgoingTargets)(node.id, "validated_by_ci");
|
|
297
|
-
const graphIds = (
|
|
298
|
-
.filter((edge) => edge.
|
|
309
|
+
const graphIds = atlas_1.atlas.getOutgoing(node.id)
|
|
310
|
+
.filter((edge) => edge.kind === "wraps_graph")
|
|
299
311
|
.map((edge) => edge.to);
|
|
300
312
|
return {
|
|
301
313
|
nodeId: node.id,
|
package/dist/data.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EAEZ,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EAIpB,WAAW,EAEX,cAAc,EAEd,aAAa,EAKb,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAGlB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EAEb,mBAAmB,EACnB,cAAc,EACf,MAAM,UAAU,CAAC;AAk1BlB,UAAU,qBAAqB;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACxD,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;IAChD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC1D,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,YAAY,EAAE,YAAY,CAAC;CAC5B;AA2FD,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD;AAED,wBAAgB,mBAAmB,IAAI,qBAAqB,CAK3D;AAoDD,eAAO,MAAM,cAAc,eAA8D,CAAC;AAC1F,eAAO,MAAM,eAAe,gBAA+D,CAAC;AAC5F,eAAO,MAAM,QAAQ,kBAAwD,CAAC;AAC9E,eAAO,MAAM,MAAM,eAAsD,CAAC;AAC1E,eAAO,MAAM,SAAS,wBAAyD,CAAC;AAChF,eAAO,MAAM,MAAM,gBAAsD,CAAC;AAC1E,eAAO,MAAM,UAAU,uBAA0D,CAAC;AAClF,eAAO,MAAM,YAAY,wBAA4D,CAAC;AACtF,eAAO,MAAM,UAAU,sBAA0D,CAAC;AAClF,eAAO,MAAM,KAAK,kBAAqD,CAAC;AACxE,eAAO,MAAM,eAAe,iBAA8D,CAAC;AAC3F,eAAO,MAAM,iBAAiB,mBAAgE,CAAC;AAC/F,eAAO,MAAM,SAAS,qBAAyD,CAAC;AAChF,eAAO,MAAM,oBAAoB,qBAAkE,CAAC;AACpG,eAAO,MAAM,MAAM,gBAAsD,CAAC;AAC1E,eAAO,MAAM,eAAe,0BAA8D,CAAC;AAC3F,eAAO,MAAM,oBAAoB,qCAAmE,CAAC;AACrG,eAAO,MAAM,yBAAyB,yBAAsE,CAAC;AAC7G,eAAO,MAAM,iBAAiB,yCAAiE,CAAC;AAChG,eAAO,MAAM,cAAc,qBAA6D,CAAC;AACzF,eAAO,MAAM,cAAc,0BAA6D,CAAC;AACzF,eAAO,MAAM,qBAAqB,uBAAoE,CAAC;AACvG,eAAO,MAAM,aAAa,cAA6D,CAAC"}
|
package/dist/data.js
CHANGED
|
@@ -4,7 +4,33 @@ exports.AGENT_CATALOG = exports.CAPABILITY_ASSERTIONS = exports.PLUGIN_TARGETS =
|
|
|
4
4
|
exports.clearAgentCatalogDataCache = clearAgentCatalogDataCache;
|
|
5
5
|
exports.getCatalogDataState = getCatalogDataState;
|
|
6
6
|
const atlas_bridge_1 = require("./atlas-bridge");
|
|
7
|
-
|
|
7
|
+
// Evidence projection — inlined from deleted evidence-projection.ts
|
|
8
|
+
function evidenceIdFromNodeId(nodeId) {
|
|
9
|
+
return nodeId.startsWith("evidence:") ? nodeId.slice("evidence:".length) : nodeId;
|
|
10
|
+
}
|
|
11
|
+
function buildClaimsByEvidence(claimNodes, evidenceNodes, relationships) {
|
|
12
|
+
const claimsByGraphId = new Map(Array.from(claimNodes, (node) => [String(node.id), node]));
|
|
13
|
+
const evidenceByGraphId = new Map(Array.from(evidenceNodes, (node) => [String(node.id), node]));
|
|
14
|
+
const claimsByEvidence = new Map();
|
|
15
|
+
for (const rel of relationships) {
|
|
16
|
+
if (rel.relation !== "sourced_from")
|
|
17
|
+
continue;
|
|
18
|
+
const claimNode = claimsByGraphId.get(rel.from);
|
|
19
|
+
const evidenceNode = evidenceByGraphId.get(rel.to);
|
|
20
|
+
if (!claimNode || !evidenceNode)
|
|
21
|
+
continue;
|
|
22
|
+
const evidenceId = valueAsString(evidenceNode.evidenceId) || evidenceIdFromNodeId(String(evidenceNode.id));
|
|
23
|
+
const bucket = claimsByEvidence.get(evidenceId);
|
|
24
|
+
if (bucket)
|
|
25
|
+
bucket.push(claimNode);
|
|
26
|
+
else
|
|
27
|
+
claimsByEvidence.set(evidenceId, [claimNode]);
|
|
28
|
+
}
|
|
29
|
+
return claimsByEvidence;
|
|
30
|
+
}
|
|
31
|
+
function getEvidenceClaimStatement(evidenceId, claimsByEvidence) {
|
|
32
|
+
return valueAsString(claimsByEvidence.get(evidenceId)?.[0]?.statement);
|
|
33
|
+
}
|
|
8
34
|
const transport_mux_cutover_1 = require("./transport-mux-cutover");
|
|
9
35
|
const FALLBACK_SESSION_DIR = ".a5c/runs";
|
|
10
36
|
function valueAsString(value) {
|
|
@@ -88,19 +114,20 @@ function toModelVersion(node) {
|
|
|
88
114
|
}
|
|
89
115
|
function toTransportDescriptor(node) {
|
|
90
116
|
return {
|
|
91
|
-
transportId:
|
|
117
|
+
transportId: transportRuntimeId(node),
|
|
92
118
|
label: valueAsString(node.label),
|
|
93
119
|
status: (0, transport_mux_cutover_1.effectiveTransportMuxClaimStatus)(valueAsString(node.status), nodeEvidenceIds(node)),
|
|
94
120
|
interactive: Boolean(node.persistentSession) || Boolean(node.stdinInjection),
|
|
95
121
|
persistentSession: Boolean(node.persistentSession),
|
|
96
122
|
stdinInjection: Boolean(node.stdinInjection),
|
|
97
123
|
blockingStopHook: Boolean(node.blockingStopHook),
|
|
124
|
+
codecCapabilities: parseCodecCapabilities(node.codecCapabilities),
|
|
98
125
|
evidenceIds: nodeEvidenceIds(node),
|
|
99
126
|
};
|
|
100
127
|
}
|
|
101
128
|
function toCapabilityDescriptor(node) {
|
|
102
129
|
return {
|
|
103
|
-
capabilityId: valueAsString(node.capabilityId),
|
|
130
|
+
capabilityId: valueAsString(node.capabilityId) || String(node.id).replace(/^capability:/, ""),
|
|
104
131
|
namespace: valueAsString(node.namespace),
|
|
105
132
|
label: valueAsString(node.label),
|
|
106
133
|
description: valueAsString(node.description),
|
|
@@ -173,19 +200,49 @@ function toProcessDescriptor(node) {
|
|
|
173
200
|
};
|
|
174
201
|
}
|
|
175
202
|
function agentCapabilityIds(agentNodeId) {
|
|
176
|
-
|
|
203
|
+
// First try graph edges
|
|
204
|
+
const edgeBased = (0, atlas_bridge_1.listOutgoingTargets)(agentNodeId, "supports_capability")
|
|
177
205
|
.map((supportNode) => valueAsString(supportNode.capabilityId) || valueAsString((0, atlas_bridge_1.listOutgoingTargets)(supportNode.id, "for_capability")[0]?.capabilityId))
|
|
178
206
|
.filter(Boolean);
|
|
207
|
+
if (edgeBased.length > 0)
|
|
208
|
+
return edgeBased;
|
|
209
|
+
// Fallback: find CapabilitySupport nodes whose subjectId matches
|
|
210
|
+
return Array.from(new Set((0, atlas_bridge_1.listNodesByKind)("CapabilitySupport")
|
|
211
|
+
.filter((node) => valueAsString(node.subjectId) === agentNodeId)
|
|
212
|
+
.map((node) => valueAsString(node.capabilityId))
|
|
213
|
+
.filter(Boolean)));
|
|
179
214
|
}
|
|
180
215
|
function agentHookIds(agentNodeId) {
|
|
181
|
-
|
|
216
|
+
const edgeBased = (0, atlas_bridge_1.listOutgoingTargets)(agentNodeId, "emits_hook")
|
|
182
217
|
.map((mapping) => valueAsString(mapping.hookId))
|
|
183
218
|
.filter(Boolean);
|
|
219
|
+
if (edgeBased.length > 0)
|
|
220
|
+
return edgeBased;
|
|
221
|
+
// Fallback: derive from agent's plugin targets and their hook mappings
|
|
222
|
+
const targetIds = agentPluginTargetIds(agentNodeId);
|
|
223
|
+
const hookFamilies = new Set();
|
|
224
|
+
for (const node of (0, atlas_bridge_1.listNodesByKind)("PluginTarget")) {
|
|
225
|
+
const targetId = pluginTargetId(node.id);
|
|
226
|
+
if (targetIds.includes(targetId)) {
|
|
227
|
+
const adapterName = valueAsString(node.adapterName);
|
|
228
|
+
if (adapterName)
|
|
229
|
+
hookFamilies.add(adapterName);
|
|
230
|
+
if (targetId !== adapterName)
|
|
231
|
+
hookFamilies.add(targetId);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return Array.from(new Set((0, atlas_bridge_1.listNodesByKind)("HookMapping")
|
|
235
|
+
.filter((mapping) => hookFamilies.has(valueAsString(mapping.adapterFamily)))
|
|
236
|
+
.map((mapping) => valueAsString(mapping.hookId))
|
|
237
|
+
.filter(Boolean)));
|
|
238
|
+
}
|
|
239
|
+
function transportRuntimeId(node) {
|
|
240
|
+
return valueAsString(node.runtimeId) || valueAsString(node.runtimeKind) || String(node.id).replace(/^transport-runtime:/, "");
|
|
184
241
|
}
|
|
185
242
|
function agentTransportIds(agentNodeId) {
|
|
186
243
|
return (0, atlas_bridge_1.listOutgoingTargets)(agentNodeId, "uses_transport")
|
|
187
244
|
.filter((node) => node.kind === "TransportRuntime")
|
|
188
|
-
.map((node) =>
|
|
245
|
+
.map((node) => transportRuntimeId(node))
|
|
189
246
|
.filter(Boolean);
|
|
190
247
|
}
|
|
191
248
|
function agentModalityIds(agentNodeId) {
|
|
@@ -209,16 +266,129 @@ function agentPluginTargetIds(agentNodeId) {
|
|
|
209
266
|
.map((node) => valueAsString(node.targetId))
|
|
210
267
|
.filter(Boolean);
|
|
211
268
|
}
|
|
269
|
+
function matchesAgentId(nodeAgentId, targetAgentId) {
|
|
270
|
+
if (nodeAgentId === targetAgentId)
|
|
271
|
+
return true;
|
|
272
|
+
// Handle "agent:codex" matching "codex"
|
|
273
|
+
if (nodeAgentId.startsWith("agent:") && nodeAgentId.slice("agent:".length) === targetAgentId)
|
|
274
|
+
return true;
|
|
275
|
+
if (targetAgentId.startsWith("agent:") && targetAgentId.slice("agent:".length) === nodeAgentId)
|
|
276
|
+
return true;
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
212
279
|
function agentSessionNuanceIds(agentNodeId) {
|
|
213
|
-
|
|
280
|
+
const edgeBased = (0, atlas_bridge_1.listOutgoingTargets)(agentNodeId, "uses_session_semantics")
|
|
281
|
+
.map((node) => valueAsString(node.sessionSemanticsId))
|
|
282
|
+
.filter(Boolean);
|
|
283
|
+
if (edgeBased.length > 0)
|
|
284
|
+
return edgeBased;
|
|
285
|
+
// Fallback: find SessionSemantics nodes whose agentId matches
|
|
286
|
+
const agentNode = (0, atlas_bridge_1.getNodeById)(agentNodeId);
|
|
287
|
+
const agentId = valueAsString(agentNode?.agentId);
|
|
288
|
+
if (!agentId)
|
|
289
|
+
return [];
|
|
290
|
+
return (0, atlas_bridge_1.listNodesByKind)("SessionSemantics")
|
|
291
|
+
.filter((node) => matchesAgentId(valueAsString(node.agentId), agentId))
|
|
214
292
|
.map((node) => valueAsString(node.sessionSemanticsId))
|
|
215
293
|
.filter(Boolean);
|
|
216
294
|
}
|
|
217
295
|
function agentLifecycleNuanceIds(agentNodeId) {
|
|
218
|
-
|
|
296
|
+
const edgeBased = (0, atlas_bridge_1.listOutgoingTargets)(agentNodeId, "uses_lifecycle_semantics")
|
|
297
|
+
.map((node) => valueAsString(node.lifecycleSemanticsId))
|
|
298
|
+
.filter(Boolean);
|
|
299
|
+
if (edgeBased.length > 0)
|
|
300
|
+
return edgeBased;
|
|
301
|
+
// Fallback: find LifecycleSemantics nodes whose agentId and versionRange match
|
|
302
|
+
const agentNode = (0, atlas_bridge_1.getNodeById)(agentNodeId);
|
|
303
|
+
const agentId = valueAsString(agentNode?.agentId);
|
|
304
|
+
const agentVersionRange = valueAsString(agentNode?.versionRange);
|
|
305
|
+
if (!agentId)
|
|
306
|
+
return [];
|
|
307
|
+
return (0, atlas_bridge_1.listNodesByKind)("LifecycleSemantics")
|
|
308
|
+
.filter((node) => {
|
|
309
|
+
if (!matchesAgentId(valueAsString(node.agentId), agentId))
|
|
310
|
+
return false;
|
|
311
|
+
// If agent has a specific version range, match lifecycle nodes with same or broader range
|
|
312
|
+
if (agentVersionRange) {
|
|
313
|
+
const lcRange = valueAsString(node.versionRange);
|
|
314
|
+
if (lcRange && lcRange !== agentVersionRange)
|
|
315
|
+
return false;
|
|
316
|
+
}
|
|
317
|
+
return true;
|
|
318
|
+
})
|
|
219
319
|
.map((node) => valueAsString(node.lifecycleSemanticsId))
|
|
220
320
|
.filter(Boolean);
|
|
221
321
|
}
|
|
322
|
+
function toHookSupportLevel(value) {
|
|
323
|
+
const normalized = valueAsString(value);
|
|
324
|
+
if (normalized === 'native' || normalized === 'emulated')
|
|
325
|
+
return normalized;
|
|
326
|
+
return 'unsupported';
|
|
327
|
+
}
|
|
328
|
+
function parseHookSupportMap(value) {
|
|
329
|
+
const obj = (value && typeof value === 'object') ? value : {};
|
|
330
|
+
return {
|
|
331
|
+
sessionStart: toHookSupportLevel(obj.sessionStart),
|
|
332
|
+
stop: toHookSupportLevel(obj.stop),
|
|
333
|
+
userPromptSubmit: toHookSupportLevel(obj.userPromptSubmit),
|
|
334
|
+
preToolUse: toHookSupportLevel(obj.preToolUse),
|
|
335
|
+
sessionEnd: toHookSupportLevel(obj.sessionEnd),
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
function parsePartialHookSupportMap(value) {
|
|
339
|
+
const obj = (value && typeof value === 'object') ? value : {};
|
|
340
|
+
const result = {};
|
|
341
|
+
if (obj.sessionStart != null)
|
|
342
|
+
result.sessionStart = toHookSupportLevel(obj.sessionStart);
|
|
343
|
+
if (obj.stop != null)
|
|
344
|
+
result.stop = toHookSupportLevel(obj.stop);
|
|
345
|
+
if (obj.userPromptSubmit != null)
|
|
346
|
+
result.userPromptSubmit = toHookSupportLevel(obj.userPromptSubmit);
|
|
347
|
+
if (obj.preToolUse != null)
|
|
348
|
+
result.preToolUse = toHookSupportLevel(obj.preToolUse);
|
|
349
|
+
if (obj.sessionEnd != null)
|
|
350
|
+
result.sessionEnd = toHookSupportLevel(obj.sessionEnd);
|
|
351
|
+
return result;
|
|
352
|
+
}
|
|
353
|
+
function parseHookSupport(value) {
|
|
354
|
+
if (!value || typeof value !== 'object')
|
|
355
|
+
return undefined;
|
|
356
|
+
const obj = value;
|
|
357
|
+
if (!obj.interactive || typeof obj.interactive !== 'object')
|
|
358
|
+
return undefined;
|
|
359
|
+
return {
|
|
360
|
+
interactive: parseHookSupportMap(obj.interactive),
|
|
361
|
+
nonInteractive: parsePartialHookSupportMap(obj.nonInteractive),
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
function parseBridgeCapabilities(value) {
|
|
365
|
+
if (!value || typeof value !== 'object')
|
|
366
|
+
return undefined;
|
|
367
|
+
const obj = value;
|
|
368
|
+
return {
|
|
369
|
+
interactiveBridge: Boolean(obj.interactiveBridge),
|
|
370
|
+
sessionResume: Boolean(obj.sessionResume),
|
|
371
|
+
positionalPrompt: Boolean(obj.positionalPrompt),
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
function parseToolSchemaFormat(value) {
|
|
375
|
+
const normalized = valueAsString(value);
|
|
376
|
+
if (normalized === "openai" || normalized === "anthropic" || normalized === "google")
|
|
377
|
+
return normalized;
|
|
378
|
+
return "none";
|
|
379
|
+
}
|
|
380
|
+
function parseCodecCapabilities(value) {
|
|
381
|
+
if (!value || typeof value !== 'object')
|
|
382
|
+
return undefined;
|
|
383
|
+
const obj = value;
|
|
384
|
+
return {
|
|
385
|
+
supportsTools: obj.supportsTools === true || obj.supportsTools === "true",
|
|
386
|
+
supportsStreaming: obj.supportsStreaming === true || obj.supportsStreaming === "true",
|
|
387
|
+
supportsTokenCounting: obj.supportsTokenCounting === true || obj.supportsTokenCounting === "true",
|
|
388
|
+
costTracking: obj.costTracking === true || obj.costTracking === "true",
|
|
389
|
+
toolSchemaFormat: parseToolSchemaFormat(obj.toolSchemaFormat),
|
|
390
|
+
};
|
|
391
|
+
}
|
|
222
392
|
function toAgentVersion(node) {
|
|
223
393
|
return {
|
|
224
394
|
agentId: valueAsString(node.agentId),
|
|
@@ -242,19 +412,34 @@ function toAgentVersion(node) {
|
|
|
242
412
|
sessionNuanceIds: agentSessionNuanceIds(node.id),
|
|
243
413
|
lifecycleNuanceIds: agentLifecycleNuanceIds(node.id),
|
|
244
414
|
evidenceIds: nodeEvidenceIds(node),
|
|
415
|
+
interactiveSignals: node.interactiveSignals != null ? {
|
|
416
|
+
turnCompletePattern: valueAsString(node.interactiveSignals?.turnCompletePattern) || undefined,
|
|
417
|
+
exitOnNonInteractive: node.interactiveSignals?.exitOnNonInteractive === true ? true : undefined,
|
|
418
|
+
nonInteractiveMode: valueAsString(node.interactiveSignals?.nonInteractiveMode) || undefined,
|
|
419
|
+
interactiveMode: valueAsString(node.interactiveSignals?.interactiveMode),
|
|
420
|
+
} : undefined,
|
|
421
|
+
hookSupport: parseHookSupport(node.hookSupport),
|
|
422
|
+
bridgeCapabilities: parseBridgeCapabilities(node.bridgeCapabilities),
|
|
245
423
|
};
|
|
246
424
|
}
|
|
425
|
+
function evidenceIdFromNode(node) {
|
|
426
|
+
const explicit = valueAsString(node.evidenceId);
|
|
427
|
+
if (explicit)
|
|
428
|
+
return explicit;
|
|
429
|
+
return evidenceIdFromNodeId(String(node.id));
|
|
430
|
+
}
|
|
247
431
|
function toEvidenceRecord(node, evidenceClaims) {
|
|
432
|
+
const evidenceId = evidenceIdFromNode(node);
|
|
248
433
|
const freshnessWindowDays = typeof node.freshnessWindowDays === "number" && Number.isFinite(node.freshnessWindowDays)
|
|
249
434
|
? node.freshnessWindowDays
|
|
250
435
|
: undefined;
|
|
251
436
|
return {
|
|
252
|
-
evidenceId
|
|
437
|
+
evidenceId,
|
|
253
438
|
kind: valueAsString(node.kindLabel) === "web" ? "web" : "repo",
|
|
254
|
-
sourcePathOrUrl: valueAsString(node.sourcePathOrUrl),
|
|
439
|
+
sourcePathOrUrl: valueAsString(node.sourcePathOrUrl) || valueAsString(node.filePath),
|
|
255
440
|
excerptLocator: valueAsString(node.locator),
|
|
256
|
-
claim:
|
|
257
|
-
capturedAt: valueAsString(node.capturedAt),
|
|
441
|
+
claim: getEvidenceClaimStatement(evidenceId, evidenceClaims),
|
|
442
|
+
capturedAt: valueAsString(node.capturedAt) || valueAsString(node.observedAt),
|
|
258
443
|
trustLevel: valueAsString(node.trustLevel),
|
|
259
444
|
reviewOwner: valueAsString(node.reviewOwner),
|
|
260
445
|
reviewedAt: valueAsString(node.reviewedAt),
|
|
@@ -276,13 +461,74 @@ function toClaimRecord(node) {
|
|
|
276
461
|
unresolvedGaps: (0, transport_mux_cutover_1.effectiveTransportMuxUnresolvedGaps)(stringArray(node.unresolvedGaps), evidenceIds),
|
|
277
462
|
};
|
|
278
463
|
}
|
|
464
|
+
function synthesizeClaimsFromEvidenceRefs(node) {
|
|
465
|
+
const evidenceIds = nodeEvidenceIds(node);
|
|
466
|
+
if (evidenceIds.length === 0)
|
|
467
|
+
return [];
|
|
468
|
+
const repoIds = evidenceIds.filter((id) => id.startsWith("repo-"));
|
|
469
|
+
const webIds = evidenceIds.filter((id) => id.startsWith("web-"));
|
|
470
|
+
const claims = [];
|
|
471
|
+
if (repoIds.length > 0) {
|
|
472
|
+
// Look for an existing Claim node matching a repo evidence ID
|
|
473
|
+
const matchedRepoClaim = (0, atlas_bridge_1.listNodesByKind)("Claim").find((claimNode) => {
|
|
474
|
+
const claimEvidenceIds = stringArray(claimNode.evidenceIds);
|
|
475
|
+
return claimEvidenceIds.some((id) => repoIds.includes(id)) && valueAsString(claimNode.provenanceKind) === "repo-observation";
|
|
476
|
+
});
|
|
477
|
+
claims.push(matchedRepoClaim ? toClaimRecord(matchedRepoClaim) : {
|
|
478
|
+
claimId: repoIds[0],
|
|
479
|
+
statement: `Repo evidence supports capability: ${valueAsString(node.capabilityId)} for ${valueAsString(node.subjectId)}`,
|
|
480
|
+
subjectKind: valueAsString(node.subjectKind),
|
|
481
|
+
subjectId: valueAsString(node.subjectId),
|
|
482
|
+
confidence: "high",
|
|
483
|
+
status: "current",
|
|
484
|
+
provenanceKind: "repo-observation",
|
|
485
|
+
evidenceStrength: repoIds.length >= 2 ? "corroborated" : "partial",
|
|
486
|
+
evidenceIds: repoIds,
|
|
487
|
+
unresolvedGaps: [],
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
if (webIds.length > 0) {
|
|
491
|
+
// Look for an existing Claim node matching a web evidence ID
|
|
492
|
+
const matchedWebClaim = (0, atlas_bridge_1.listNodesByKind)("Claim").find((claimNode) => {
|
|
493
|
+
const claimEvidenceIds = stringArray(claimNode.evidenceIds);
|
|
494
|
+
return claimEvidenceIds.some((id) => webIds.includes(id)) && valueAsString(claimNode.provenanceKind) !== "repo-observation";
|
|
495
|
+
});
|
|
496
|
+
if (matchedWebClaim) {
|
|
497
|
+
const claim = toClaimRecord(matchedWebClaim);
|
|
498
|
+
// Ensure partial vendor claims always have unresolved gaps
|
|
499
|
+
if (claim.evidenceStrength !== "corroborated" && claim.unresolvedGaps.length === 0) {
|
|
500
|
+
claim.unresolvedGaps = [`Vendor evidence for ${valueAsString(node.capabilityId)} has not been fully corroborated.`];
|
|
501
|
+
}
|
|
502
|
+
claims.push(claim);
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
claims.push({
|
|
506
|
+
claimId: webIds[0],
|
|
507
|
+
statement: `Vendor documentation supports capability: ${valueAsString(node.capabilityId)} for ${valueAsString(node.subjectId)}`,
|
|
508
|
+
subjectKind: valueAsString(node.subjectKind),
|
|
509
|
+
subjectId: valueAsString(node.subjectId),
|
|
510
|
+
confidence: webIds.length >= 2 ? "high" : "medium",
|
|
511
|
+
status: "current",
|
|
512
|
+
provenanceKind: "vendor-documentation",
|
|
513
|
+
evidenceStrength: webIds.length >= 2 ? "corroborated" : "partial",
|
|
514
|
+
evidenceIds: webIds,
|
|
515
|
+
unresolvedGaps: webIds.length >= 2 ? [] : [`Only ${webIds.length} web evidence source(s) found for this capability.`],
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return claims;
|
|
520
|
+
}
|
|
279
521
|
function buildCapabilityAssertions() {
|
|
280
522
|
return (0, atlas_bridge_1.listNodesByKind)("CapabilitySupport")
|
|
281
523
|
.filter((node) => (0, transport_mux_cutover_1.shouldSurfaceCapabilitySupport)(valueAsString(node.subjectKind), valueAsString(node.subjectId), nodeEvidenceIds(node)))
|
|
282
524
|
.map((node) => {
|
|
283
|
-
|
|
525
|
+
let supportingClaims = (0, atlas_bridge_1.listOutgoingTargets)(node.id, "supported_by_claim")
|
|
284
526
|
.filter((claim) => claim.kind === "Claim")
|
|
285
527
|
.map(toClaimRecord);
|
|
528
|
+
// Fall back to synthesized claims when no explicit claim edges exist
|
|
529
|
+
if (supportingClaims.length === 0) {
|
|
530
|
+
supportingClaims = synthesizeClaimsFromEvidenceRefs(node);
|
|
531
|
+
}
|
|
286
532
|
const vendorClaims = supportingClaims.filter((claim) => claim.provenanceKind !== "repo-observation");
|
|
287
533
|
const primaryClaims = vendorClaims.length > 0 ? vendorClaims : supportingClaims;
|
|
288
534
|
const evidenceStrength = primaryClaims.reduce((strongest, claim) => evidenceStrengthRank(claim.evidenceStrength) > evidenceStrengthRank(strongest)
|
|
@@ -452,10 +698,11 @@ const BABYSITTER_PLUGIN_TARGETS = new Set([
|
|
|
452
698
|
"plugin-target:claude-code", "plugin-target:codex", "plugin-target:cursor",
|
|
453
699
|
"plugin-target:gemini-cli", "plugin-target:copilot-cli", "plugin-target:pi",
|
|
454
700
|
"plugin-target:omp", "plugin-target:opencode", "plugin-target:openclaw",
|
|
701
|
+
"plugin-target:hermes",
|
|
455
702
|
]);
|
|
456
703
|
// Atlas uses different IDs for some targets
|
|
457
704
|
const TARGET_ID_ALIASES = {
|
|
458
|
-
"plugin-target:gemini-cli": "gemini",
|
|
705
|
+
"plugin-target:gemini-cli": "gemini-cli",
|
|
459
706
|
"plugin-target:copilot-cli": "github-copilot",
|
|
460
707
|
"plugin-target:omp": "oh-my-pi",
|
|
461
708
|
};
|
|
@@ -531,6 +778,37 @@ function buildPluginTargetDescriptors(_hooks) {
|
|
|
531
778
|
installLayout,
|
|
532
779
|
packageMetadata,
|
|
533
780
|
componentSupport,
|
|
781
|
+
cliCommand: valueAsString(node.cliCommand) || undefined,
|
|
782
|
+
callerEnvVars: stringArray(node.callerEnvVars),
|
|
783
|
+
configPaths: stringArray(node.configPaths),
|
|
784
|
+
processNames: stringArray(node.processNames),
|
|
785
|
+
harnessCapabilities: stringArray(node.capabilities),
|
|
786
|
+
externalRepo: valueAsString(node.externalRepo) || undefined,
|
|
787
|
+
externalPackageName: node.externalPackageName === null ? null : valueAsString(node.externalPackageName) || undefined,
|
|
788
|
+
generatedSourceDir: valueAsString(node.generatedSourceDir) || undefined,
|
|
789
|
+
requiredSurfaceFile: node.requiredSurfaceFile === null ? null : valueAsString(node.requiredSurfaceFile) || undefined,
|
|
790
|
+
promptCapabilities: stringArray(node.promptCapabilities),
|
|
791
|
+
loopControlTerm: valueAsString(node.loopControlTerm) || undefined,
|
|
792
|
+
hookDriven: node.hookDriven === true || node.hookDriven === "true" ? true : node.hookDriven === false || node.hookDriven === "false" ? false : undefined,
|
|
793
|
+
interactiveToolName: typeof node.interactiveToolName === "string" ? node.interactiveToolName : undefined,
|
|
794
|
+
sessionEnvVarsDescription: valueAsString(node.sessionEnvVarsDescription) || undefined,
|
|
795
|
+
hasIntentFidelityChecks: node.hasIntentFidelityChecks === true || node.hasIntentFidelityChecks === "true" ? true : false,
|
|
796
|
+
hasNonNegotiables: node.hasNonNegotiables === true || node.hasNonNegotiables === "true" ? true : false,
|
|
797
|
+
cliSetupMode: valueAsString(node.cliSetupMode) || undefined,
|
|
798
|
+
defaultStepCount: typeof node.defaultStepCount === "number" ? node.defaultStepCount : undefined,
|
|
799
|
+
skillSystemLabel: valueAsString(node.skillSystemLabel) || undefined,
|
|
800
|
+
defaultTransportId: valueAsString(node.defaultTransportId) || undefined,
|
|
801
|
+
hooksMuxFamily: valueAsString(node.hooksMuxFamily) || undefined,
|
|
802
|
+
sessionIdQuality: valueAsString(node.sessionIdQuality) || undefined,
|
|
803
|
+
supportsOrderedFanout: node.supportsOrderedFanout === true || node.supportsOrderedFanout === "true" ? true : node.supportsOrderedFanout === false || node.supportsOrderedFanout === "false" ? false : undefined,
|
|
804
|
+
supportsNativeAdditionalContext: node.supportsNativeAdditionalContext === true || node.supportsNativeAdditionalContext === "true" ? true : node.supportsNativeAdditionalContext === false || node.supportsNativeAdditionalContext === "false" ? false : undefined,
|
|
805
|
+
supportsBlock: node.supportsBlock === true || node.supportsBlock === "true" ? true : node.supportsBlock === false || node.supportsBlock === "false" ? false : undefined,
|
|
806
|
+
supportsAsk: node.supportsAsk === true || node.supportsAsk === "true" ? true : node.supportsAsk === false || node.supportsAsk === "false" ? false : undefined,
|
|
807
|
+
supportsToolInputMutation: node.supportsToolInputMutation === true || node.supportsToolInputMutation === "true" ? true : node.supportsToolInputMutation === false || node.supportsToolInputMutation === "false" ? false : undefined,
|
|
808
|
+
supportsToolResultMutation: node.supportsToolResultMutation === true || node.supportsToolResultMutation === "true" ? true : node.supportsToolResultMutation === false || node.supportsToolResultMutation === "false" ? false : undefined,
|
|
809
|
+
supportsPersistedEnv: node.supportsPersistedEnv === true || node.supportsPersistedEnv === "true" ? true : node.supportsPersistedEnv === false || node.supportsPersistedEnv === "false" ? false : undefined,
|
|
810
|
+
envPersistenceMode: valueAsString(node.envPersistenceMode) || undefined,
|
|
811
|
+
toolInterceptionScope: valueAsString(node.toolInterceptionScope) || undefined,
|
|
534
812
|
supportedHooks: supportedHooksForTarget(targetId),
|
|
535
813
|
evidenceIds: [],
|
|
536
814
|
};
|
|
@@ -543,13 +821,13 @@ function buildDataState() {
|
|
|
543
821
|
const ontologySchema = (0, atlas_bridge_1.getOntologySchema)();
|
|
544
822
|
const evidenceNodes = (0, atlas_bridge_1.listNodesByKind)("EvidenceSource");
|
|
545
823
|
const claimNodes = (0, atlas_bridge_1.listNodesByKind)("Claim");
|
|
546
|
-
const evidenceClaims =
|
|
824
|
+
const evidenceClaims = buildClaimsByEvidence(claimNodes, evidenceNodes, (0, atlas_bridge_1.listRelationshipsByRelation)("sourced_from"));
|
|
547
825
|
const evidence = evidenceNodes.map((node) => toEvidenceRecord(node, evidenceClaims));
|
|
548
826
|
const claims = claimNodes.map(toClaimRecord);
|
|
549
827
|
const providers = (0, atlas_bridge_1.listNodesByKind)("ModelProviderVersion").map(toModelProviderVersion);
|
|
550
828
|
const models = (0, atlas_bridge_1.listNodesByKind)("ModelVersion").map(toModelVersion);
|
|
551
829
|
const transports = (0, atlas_bridge_1.listNodesByKind)("TransportRuntime")
|
|
552
|
-
.filter((node) => (0, transport_mux_cutover_1.shouldSurfaceTransportRuntime)(
|
|
830
|
+
.filter((node) => (0, transport_mux_cutover_1.shouldSurfaceTransportRuntime)(transportRuntimeId(node)))
|
|
553
831
|
.map(toTransportDescriptor);
|
|
554
832
|
const capabilities = (0, atlas_bridge_1.listNodesByKind)("Capability").map(toCapabilityDescriptor);
|
|
555
833
|
const modalities = (0, atlas_bridge_1.listNodesByKind)("Modality")
|