@a5c-ai/agent-catalog 5.0.1-staging.cb276e93 → 5.0.1-staging.cb49e9d7a6db
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/assets.d.ts.map +1 -1
- package/dist/assets.js +8 -0
- package/dist/atlas-bridge.d.ts +5 -0
- package/dist/atlas-bridge.d.ts.map +1 -0
- package/dist/atlas-bridge.js +182 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +6 -1
- package/dist/discovery-snapshot.json +11211 -11211
- package/dist/models.d.ts +3 -0
- package/dist/models.d.ts.map +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +3 -5
- package/dist/transport-mux-cutover.d.ts.map +1 -1
- package/dist/transport-mux-cutover.js +9 -10
- package/graph/nodes/hooks-and-plugins/plugin-targets.yaml +20 -0
- package/index.d.ts +1 -0
- package/index.js +3 -0
- package/package.json +4 -1
package/dist/assets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AA8DA,wBAAgB,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAwBzE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1E;AAED,wBAAgB,+BAA+B,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7E"}
|
package/dist/assets.js
CHANGED
|
@@ -10,6 +10,7 @@ const node_fs_1 = __importDefault(require("node:fs"));
|
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
11
|
const PACKAGE_NAME = "@a5c-ai/agent-catalog";
|
|
12
12
|
const PACKAGE_ROOT = node_path_1.default.resolve(__dirname, "..");
|
|
13
|
+
const ATLAS_GRAPH_ROOT = node_path_1.default.resolve(__dirname, "..", "..", "atlas", "graph", "agent-catalog");
|
|
13
14
|
const ALLOWED_ASSET_ROOTS = new Set(["graph", "evidence", "docs"]);
|
|
14
15
|
function normalizeAssetPath(relativeAssetPath) {
|
|
15
16
|
const normalized = relativeAssetPath.replace(/\\/g, "/").replace(/^\.\/+/, "");
|
|
@@ -56,6 +57,13 @@ function resolvePackageRootCandidates() {
|
|
|
56
57
|
}
|
|
57
58
|
function resolveCatalogAssetPath(relativeAssetPath) {
|
|
58
59
|
const normalized = normalizeAssetPath(relativeAssetPath);
|
|
60
|
+
// Prefer Atlas graph directory for graph assets
|
|
61
|
+
if (normalized.startsWith("graph/")) {
|
|
62
|
+
const atlasPath = node_path_1.default.join(ATLAS_GRAPH_ROOT, normalized.slice("graph/".length));
|
|
63
|
+
if (node_fs_1.default.existsSync(atlasPath)) {
|
|
64
|
+
return atlasPath;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
59
67
|
const exportedPath = resolveExportedAssetPath(normalized);
|
|
60
68
|
if (exportedPath && node_fs_1.default.existsSync(exportedPath)) {
|
|
61
69
|
return exportedPath;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AtlasGraph } from "@a5c-ai/atlas";
|
|
2
|
+
import type { PluginTargetDescriptor } from "./models";
|
|
3
|
+
export declare function buildPluginTargetDescriptorsFromAtlas(atlas: AtlasGraph): PluginTargetDescriptor[];
|
|
4
|
+
export declare function buildHookNameMapFromAtlas(atlas: AtlasGraph): Record<string, Record<string, string>>;
|
|
5
|
+
//# sourceMappingURL=atlas-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atlas-bridge.d.ts","sourceRoot":"","sources":["../src/atlas-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EACV,sBAAsB,EAGvB,MAAM,UAAU,CAAC;AA0ElB,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,UAAU,GAChB,sBAAsB,EAAE,CA4F1B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,UAAU,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwBxC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Atlas bridge — queries @a5c-ai/atlas and transforms results into agent-catalog shapes.
|
|
3
|
+
// This module replaces the direct YAML graph reading for plugin targets and hook mappings.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.buildPluginTargetDescriptorsFromAtlas = buildPluginTargetDescriptorsFromAtlas;
|
|
6
|
+
exports.buildHookNameMapFromAtlas = buildHookNameMapFromAtlas;
|
|
7
|
+
// Agent-catalog targetIds that differ from Atlas record IDs
|
|
8
|
+
const TARGET_ID_MAP = {
|
|
9
|
+
"plugin-target:gemini-cli": "gemini",
|
|
10
|
+
"plugin-target:copilot-cli": "github-copilot",
|
|
11
|
+
"plugin-target:omp": "oh-my-pi",
|
|
12
|
+
};
|
|
13
|
+
function targetIdFromRecord(record) {
|
|
14
|
+
return TARGET_ID_MAP[record.id] ?? record.id.replace("plugin-target:", "");
|
|
15
|
+
}
|
|
16
|
+
// Derive canonical hook name from hook-surface ID
|
|
17
|
+
// Map hook-surface IDs (both canonical and target-specific) to canonical names
|
|
18
|
+
function resolveCanonicalHookName(hookId) {
|
|
19
|
+
// Canonical surfaces: hook-surface:session-start → SessionStart
|
|
20
|
+
const CANONICAL = {
|
|
21
|
+
"session-start": "SessionStart",
|
|
22
|
+
"stop": "Stop",
|
|
23
|
+
"user-prompt-submit": "UserPromptSubmit",
|
|
24
|
+
"pre-tool-use": "PreToolUse",
|
|
25
|
+
"post-tool-use": "PostToolUse",
|
|
26
|
+
"after-agent": "AfterAgent",
|
|
27
|
+
"session-end": "SessionEnd",
|
|
28
|
+
"session-idle": "SessionIdle",
|
|
29
|
+
"shell-env": "ShellEnv",
|
|
30
|
+
"before-prompt-build": "BeforePromptBuild",
|
|
31
|
+
"subagent-stop": "SubagentStop",
|
|
32
|
+
"notification": "Notification",
|
|
33
|
+
"pre-compact": "PreCompact",
|
|
34
|
+
"before-provider-request": "BeforeProviderRequest",
|
|
35
|
+
};
|
|
36
|
+
const bare = hookId.replace("hook-surface:", "");
|
|
37
|
+
if (CANONICAL[bare])
|
|
38
|
+
return CANONICAL[bare];
|
|
39
|
+
// Target-specific: hook-surface:cursor.session-start → strip prefix, lookup
|
|
40
|
+
const dotIndex = bare.indexOf(".");
|
|
41
|
+
if (dotIndex >= 0)
|
|
42
|
+
return CANONICAL[bare.slice(dotIndex + 1)];
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
function str(value) {
|
|
46
|
+
return typeof value === "string" ? value : "";
|
|
47
|
+
}
|
|
48
|
+
function strOrNull(value) {
|
|
49
|
+
if (value === null)
|
|
50
|
+
return null;
|
|
51
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
52
|
+
}
|
|
53
|
+
function strArray(value) {
|
|
54
|
+
return Array.isArray(value) ? value.filter((v) => typeof v === "string") : [];
|
|
55
|
+
}
|
|
56
|
+
function obj(value) {
|
|
57
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
58
|
+
? value
|
|
59
|
+
: null;
|
|
60
|
+
}
|
|
61
|
+
// Known babysitter plugin targets (the subset agent-catalog exposes)
|
|
62
|
+
const BABYSITTER_TARGETS = new Set([
|
|
63
|
+
"plugin-target:claude-code",
|
|
64
|
+
"plugin-target:codex",
|
|
65
|
+
"plugin-target:cursor",
|
|
66
|
+
"plugin-target:gemini-cli",
|
|
67
|
+
"plugin-target:copilot-cli",
|
|
68
|
+
"plugin-target:pi",
|
|
69
|
+
"plugin-target:omp",
|
|
70
|
+
"plugin-target:opencode",
|
|
71
|
+
"plugin-target:openclaw",
|
|
72
|
+
]);
|
|
73
|
+
function buildPluginTargetDescriptorsFromAtlas(atlas) {
|
|
74
|
+
const targets = atlas
|
|
75
|
+
.getRecordsByKind("PluginTarget")
|
|
76
|
+
.filter((r) => BABYSITTER_TARGETS.has(r.id));
|
|
77
|
+
const hookMappings = atlas.getRecordsByKind("HookMapping");
|
|
78
|
+
return targets.map((target) => {
|
|
79
|
+
const targetId = targetIdFromRecord(target);
|
|
80
|
+
const adapterName = str(target.adapterName);
|
|
81
|
+
const supportedHooks = {};
|
|
82
|
+
for (const mapping of hookMappings) {
|
|
83
|
+
if (str(mapping.adapterFamily) !== adapterName)
|
|
84
|
+
continue;
|
|
85
|
+
const hookId = str(mapping.hookId);
|
|
86
|
+
const canonicalName = resolveCanonicalHookName(hookId);
|
|
87
|
+
if (!canonicalName)
|
|
88
|
+
continue;
|
|
89
|
+
supportedHooks[canonicalName] = str(mapping.nativeName);
|
|
90
|
+
}
|
|
91
|
+
const installLayout = obj(target.installLayout);
|
|
92
|
+
const packageMetadata = obj(target.packageMetadata);
|
|
93
|
+
const componentSupport = obj(target.componentSupport);
|
|
94
|
+
// Normalize distribution: Atlas uses an array, agent-catalog uses a single string
|
|
95
|
+
const distArray = strArray(target.distribution);
|
|
96
|
+
let distribution;
|
|
97
|
+
if (distArray.includes("marketplace") && distArray.includes("npm-cli")) {
|
|
98
|
+
distribution = "both";
|
|
99
|
+
}
|
|
100
|
+
else if (distArray.includes("marketplace")) {
|
|
101
|
+
distribution = "marketplace";
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
distribution = "npm-cli";
|
|
105
|
+
}
|
|
106
|
+
// Normalize adapterFamily: Atlas uses detailed names, agent-catalog uses shell-hook/programmatic
|
|
107
|
+
const atlasFamily = str(target.adapterFamily);
|
|
108
|
+
const adapterFamily = atlasFamily === "programmatic" ||
|
|
109
|
+
["pi", "omp", "opencode", "openclaw"].includes(adapterName)
|
|
110
|
+
? "programmatic"
|
|
111
|
+
: "shell-hook";
|
|
112
|
+
return {
|
|
113
|
+
targetId,
|
|
114
|
+
displayName: str(target.displayName),
|
|
115
|
+
adapterName,
|
|
116
|
+
manifestFormat: str(target.manifestFormat),
|
|
117
|
+
commandFormat: str(target.commandFormat),
|
|
118
|
+
distributionModel: str(target.distributionModel),
|
|
119
|
+
npmPublishable: Boolean(target.npmPublishable),
|
|
120
|
+
pluginRootEnvVar: strOrNull(target.pluginRootEnvVar) ?? undefined,
|
|
121
|
+
pluginRootEnvVarForExtension: strOrNull(target.pluginRootEnvVarForExtension) ?? undefined,
|
|
122
|
+
skillHandling: str(target.skillHandling) || undefined,
|
|
123
|
+
hookRegistrationFormat: str(target.hookRegistrationFormat) || undefined,
|
|
124
|
+
hookRegistrationOutputPath: strOrNull(target.hookRegistrationOutputPath) ?? undefined,
|
|
125
|
+
hookRegistrationAliasPaths: strArray(target.hookRegistrationAliasPaths),
|
|
126
|
+
harnessManifestPath: strOrNull(target.harnessManifestPath) ?? undefined,
|
|
127
|
+
scriptVariants: strArray(target.scriptVariants),
|
|
128
|
+
adapterFamily,
|
|
129
|
+
distribution,
|
|
130
|
+
marketplacePath: str(target.marketplacePath) || undefined,
|
|
131
|
+
installLayout: installLayout
|
|
132
|
+
? {
|
|
133
|
+
harnessHomeRelative: strOrNull(installLayout.harnessHomeRelative),
|
|
134
|
+
pluginsDirRelative: strOrNull(installLayout.pluginsDirRelative),
|
|
135
|
+
marketplacePathRelative: strOrNull(installLayout.marketplacePathRelative),
|
|
136
|
+
}
|
|
137
|
+
: undefined,
|
|
138
|
+
packageMetadata: packageMetadata
|
|
139
|
+
? {
|
|
140
|
+
moduleType: str(packageMetadata.moduleType) || undefined,
|
|
141
|
+
binScriptExt: str(packageMetadata.binScriptExt) || undefined,
|
|
142
|
+
installLifecycle: str(packageMetadata.installLifecycle) || undefined,
|
|
143
|
+
activationMessage: str(packageMetadata.activationMessage) || undefined,
|
|
144
|
+
extraPackageFiles: strArray(packageMetadata.extraPackageFiles),
|
|
145
|
+
extraScripts: packageMetadata.extraScripts ?? undefined,
|
|
146
|
+
peerDependencyPackage: str(packageMetadata.peerDependencyPackage) || undefined,
|
|
147
|
+
emitCjsWrappers: Boolean(packageMetadata.emitCjsWrappers),
|
|
148
|
+
}
|
|
149
|
+
: undefined,
|
|
150
|
+
componentSupport: componentSupport
|
|
151
|
+
? {
|
|
152
|
+
agents: str(componentSupport.agents) || "unsupported",
|
|
153
|
+
context: str(componentSupport.context) || "unsupported",
|
|
154
|
+
}
|
|
155
|
+
: undefined,
|
|
156
|
+
supportedHooks,
|
|
157
|
+
evidenceIds: [],
|
|
158
|
+
};
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
function buildHookNameMapFromAtlas(atlas) {
|
|
162
|
+
const result = {};
|
|
163
|
+
const targets = atlas
|
|
164
|
+
.getRecordsByKind("PluginTarget")
|
|
165
|
+
.filter((r) => BABYSITTER_TARGETS.has(r.id));
|
|
166
|
+
for (const target of targets) {
|
|
167
|
+
const targetId = targetIdFromRecord(target);
|
|
168
|
+
const adapterName = str(target.adapterName);
|
|
169
|
+
const map = {};
|
|
170
|
+
for (const mapping of atlas.getRecordsByKind("HookMapping")) {
|
|
171
|
+
if (str(mapping.adapterFamily) !== adapterName)
|
|
172
|
+
continue;
|
|
173
|
+
const hookSurface = atlas.getRecord(str(mapping.hookId));
|
|
174
|
+
const canonicalName = hookSurface
|
|
175
|
+
? str(hookSurface.eventName).replace(/ \(canonical\)$/, "")
|
|
176
|
+
: str(mapping.hookId).replace("hook-surface:", "");
|
|
177
|
+
map[canonicalName] = str(mapping.nativeName);
|
|
178
|
+
}
|
|
179
|
+
result[targetId] = map;
|
|
180
|
+
}
|
|
181
|
+
return result;
|
|
182
|
+
}
|
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":"AAmBA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EAIpB,WAAW,EACX,cAAc,EAEd,aAAa,EAEb,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,EACb,mBAAmB,EACnB,cAAc,EACf,MAAM,UAAU,CAAC;AA+hBlB,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,CAEjD;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,6 +4,8 @@ exports.AGENT_CATALOG = exports.CAPABILITY_ASSERTIONS = exports.PLUGIN_TARGETS =
|
|
|
4
4
|
exports.clearAgentCatalogDataCache = clearAgentCatalogDataCache;
|
|
5
5
|
exports.getCatalogDataState = getCatalogDataState;
|
|
6
6
|
const graph_1 = require("./graph");
|
|
7
|
+
const atlas_1 = require("@a5c-ai/atlas");
|
|
8
|
+
const atlas_bridge_1 = require("./atlas-bridge");
|
|
7
9
|
const evidence_projection_1 = require("./evidence-projection");
|
|
8
10
|
const transport_mux_cutover_1 = require("./transport-mux-cutover");
|
|
9
11
|
const FALLBACK_SESSION_DIR = ".a5c/runs";
|
|
@@ -431,6 +433,9 @@ function buildPluginTargetDescriptors(hooks) {
|
|
|
431
433
|
: valueAsString(node.pluginRootEnvVarForExtension) || undefined,
|
|
432
434
|
skillHandling: valueAsString(node.skillHandling) || undefined,
|
|
433
435
|
hookRegistrationFormat: valueAsString(node.hookRegistrationFormat) || undefined,
|
|
436
|
+
hookRegistrationOutputPath: node.hookRegistrationOutputPath === null ? null : valueAsString(node.hookRegistrationOutputPath) || undefined,
|
|
437
|
+
hookRegistrationAliasPaths: stringArray(node.hookRegistrationAliasPaths),
|
|
438
|
+
harnessManifestPath: node.harnessManifestPath === null ? null : valueAsString(node.harnessManifestPath) || undefined,
|
|
434
439
|
scriptVariants: stringArray(node.scriptVariants),
|
|
435
440
|
adapterFamily: valueAsString(node.adapterFamily) || undefined,
|
|
436
441
|
distribution: valueAsString(node.distribution) || undefined,
|
|
@@ -501,7 +506,7 @@ function buildDataState() {
|
|
|
501
506
|
const hooksMuxDetectionRules = buildHookDetectionRules();
|
|
502
507
|
const fallbackMetadata = buildFallbackMetadata(sessionNuances, agents);
|
|
503
508
|
const harnessImages = buildHarnessImages();
|
|
504
|
-
const pluginTargets =
|
|
509
|
+
const pluginTargets = (0, atlas_bridge_1.buildPluginTargetDescriptorsFromAtlas)(atlas_1.atlas);
|
|
505
510
|
const capabilityAssertions = buildCapabilityAssertions();
|
|
506
511
|
const agentCatalog = {
|
|
507
512
|
schemaVersion: graphDocument.schemaVersion,
|