@a5c-ai/agent-catalog 5.0.1-staging.49991ee2 → 5.0.1-staging.49991ee2e07c

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.
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAkBA,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;AAqlBlB,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"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAkBA,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;AA8sBlB,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
@@ -415,20 +415,17 @@ function buildHarnessImages() {
415
415
  preinstalled: stringArray(node.scriptVariants).includes("preinstalled"),
416
416
  }));
417
417
  }
418
- // Derive hook families from Atlas PluginTarget.adapterName
419
- function getPluginTargetHookFamilies() {
420
- const families = {};
421
- for (const node of (0, atlas_bridge_1.listNodesByKind)("PluginTarget")) {
422
- const targetId = pluginTargetId(node.id);
423
- const adapterName = valueAsString(node.adapterName);
424
- if (targetId && adapterName) {
425
- families[targetId] = [adapterName];
426
- if (targetId !== adapterName)
427
- families[targetId].push(targetId);
428
- }
429
- }
430
- return families;
431
- }
418
+ const PLUGIN_TARGET_HOOK_FAMILIES = {
419
+ "claude-code": ["claude"],
420
+ codex: ["codex"],
421
+ cursor: ["cursor"],
422
+ gemini: ["gemini", "gemini-cli"],
423
+ "github-copilot": ["copilot", "github-copilot"],
424
+ "oh-my-pi": ["oh-my-pi", "omp"],
425
+ opencode: ["opencode"],
426
+ openclaw: ["openclaw"],
427
+ pi: ["pi"],
428
+ };
432
429
  function canonicalHookName(hookId) {
433
430
  return hookId
434
431
  .replace(/^hook-surface:/, "")
@@ -439,102 +436,232 @@ function canonicalHookName(hookId) {
439
436
  .join("");
440
437
  }
441
438
  function supportedHooksForTarget(targetId) {
442
- const hookFamilies = getPluginTargetHookFamilies();
443
- const families = new Set(hookFamilies[targetId] ?? [targetId]);
439
+ const families = new Set(PLUGIN_TARGET_HOOK_FAMILIES[targetId] ?? [targetId]);
444
440
  const supportedHooks = Object.fromEntries((0, atlas_bridge_1.listNodesByKind)("HookMapping")
445
441
  .filter((mapping) => families.has(valueAsString(mapping.adapterFamily)))
446
442
  .map((mapping) => [canonicalHookName(valueAsString(mapping.hookId)), valueAsString(mapping.nativeName)])
447
443
  .filter(([canonical, native]) => Boolean(canonical && native)));
444
+ if (targetId === "github-copilot") {
445
+ supportedHooks.SessionStart = "sessionStart";
446
+ supportedHooks.SessionEnd = "sessionEnd";
447
+ }
448
448
  return supportedHooks;
449
449
  }
450
- // Known babysitter plugin targets (subset of Atlas PluginTargets)
451
- const BABYSITTER_PLUGIN_TARGETS = new Set([
452
- "plugin-target:claude-code", "plugin-target:codex", "plugin-target:cursor",
453
- "plugin-target:gemini-cli", "plugin-target:copilot-cli", "plugin-target:pi",
454
- "plugin-target:omp", "plugin-target:opencode", "plugin-target:openclaw",
455
- ]);
456
- // Atlas uses different IDs for some targets
457
- const TARGET_ID_ALIASES = {
458
- "plugin-target:gemini-cli": "gemini",
459
- "plugin-target:copilot-cli": "github-copilot",
460
- "plugin-target:omp": "oh-my-pi",
461
- };
462
450
  function buildPluginTargetDescriptors(_hooks) {
463
- const atlasTargets = (0, atlas_bridge_1.listNodesByKind)("PluginTarget")
464
- .filter((node) => BABYSITTER_PLUGIN_TARGETS.has(node.id));
465
- if (atlasTargets.length === 0) {
466
- return [];
467
- }
468
- return atlasTargets.map((node) => {
469
- const targetId = TARGET_ID_ALIASES[node.id] ?? pluginTargetId(node.id);
470
- const installLayout = node.installLayout && typeof node.installLayout === "object"
471
- ? {
472
- harnessHomeRelative: valueAsString(node.installLayout.harnessHomeRelative) || null,
473
- pluginsDirRelative: valueAsString(node.installLayout.pluginsDirRelative) || null,
474
- marketplacePathRelative: valueAsString(node.installLayout.marketplacePathRelative) || null,
475
- }
476
- : undefined;
477
- const packageMetadata = node.packageMetadata && typeof node.packageMetadata === "object"
478
- ? {
479
- moduleType: valueAsString(node.packageMetadata.moduleType) || undefined,
480
- binScriptExt: valueAsString(node.packageMetadata.binScriptExt) || undefined,
481
- installLifecycle: valueAsString(node.packageMetadata.installLifecycle) || undefined,
482
- activationMessage: valueAsString(node.packageMetadata.activationMessage) || undefined,
483
- extraPackageFiles: stringArray(node.packageMetadata.extraPackageFiles),
484
- extraScripts: node.packageMetadata.extraScripts ?? undefined,
485
- peerDependencyPackage: valueAsString(node.packageMetadata.peerDependencyPackage) || undefined,
486
- emitCjsWrappers: Boolean(node.packageMetadata.emitCjsWrappers),
487
- }
488
- : undefined;
489
- const componentSupport = node.componentSupport && typeof node.componentSupport === "object"
490
- ? {
491
- agents: valueAsString(node.componentSupport.agents) || "unsupported",
492
- context: valueAsString(node.componentSupport.context) || "unsupported",
493
- }
494
- : undefined;
495
- // Normalize distribution: Atlas uses array, agent-catalog uses single string
496
- const distArray = stringArray(node.distribution);
497
- let distribution;
498
- if (distArray.includes("marketplace") && (distArray.includes("npm-cli") || distArray.length > 1)) {
499
- distribution = "both";
500
- }
501
- else if (distArray.includes("marketplace")) {
502
- distribution = "marketplace";
503
- }
504
- else {
505
- distribution = "npm-cli";
506
- }
507
- // Normalize adapterFamily
508
- const adapterFamily = valueAsString(node.adapterFamily) === "programmatic" ||
509
- ["pi", "omp", "opencode", "openclaw"].includes(valueAsString(node.adapterName))
510
- ? "programmatic"
511
- : "shell-hook";
512
- return {
513
- targetId,
514
- displayName: valueAsString(node.displayName),
515
- adapterName: valueAsString(node.adapterName),
516
- manifestFormat: valueAsString(node.manifestFormat),
517
- commandFormat: valueAsString(node.commandFormat),
518
- distributionModel: valueAsString(node.distributionModel),
519
- npmPublishable: Boolean(node.npmPublishable),
520
- pluginRootEnvVar: node.pluginRootEnvVar === null ? null : valueAsString(node.pluginRootEnvVar) || undefined,
521
- pluginRootEnvVarForExtension: node.pluginRootEnvVarForExtension === null ? null : valueAsString(node.pluginRootEnvVarForExtension) || undefined,
522
- skillHandling: valueAsString(node.skillHandling) || undefined,
523
- hookRegistrationFormat: valueAsString(node.hookRegistrationFormat) || undefined,
524
- hookRegistrationOutputPath: node.hookRegistrationOutputPath === null ? null : valueAsString(node.hookRegistrationOutputPath) || undefined,
525
- hookRegistrationAliasPaths: stringArray(node.hookRegistrationAliasPaths),
526
- harnessManifestPath: node.harnessManifestPath === null ? null : valueAsString(node.harnessManifestPath) || undefined,
527
- scriptVariants: stringArray(node.scriptVariants),
528
- adapterFamily,
529
- distribution,
530
- marketplacePath: valueAsString(node.marketplacePath) || undefined,
531
- installLayout,
532
- packageMetadata,
533
- componentSupport,
534
- supportedHooks: supportedHooksForTarget(targetId),
535
- evidenceIds: [],
536
- };
537
- });
451
+ const descriptors = [
452
+ {
453
+ targetId: "claude-code",
454
+ displayName: "Claude Code",
455
+ adapterName: "claude",
456
+ pluginRootEnvVar: "CLAUDE_PLUGIN_ROOT",
457
+ pluginRootEnvVarForExtension: null,
458
+ manifestFormat: "plugin.json + openclaw.plugin.json",
459
+ commandFormat: "markdown-commands",
460
+ skillHandling: "native",
461
+ hookRegistrationFormat: "claude-code",
462
+ hookRegistrationOutputPath: "hooks/hooks.json",
463
+ hookRegistrationAliasPaths: [],
464
+ harnessManifestPath: ".claude-plugin/plugin.json",
465
+ scriptVariants: ["bash"],
466
+ adapterFamily: "shell-hook",
467
+ distribution: "marketplace",
468
+ distributionModel: "workspace-generated",
469
+ marketplacePath: ".claude-plugin/marketplace.json",
470
+ npmPublishable: false,
471
+ installLayout: { harnessHomeRelative: null, pluginsDirRelative: null, marketplacePathRelative: null },
472
+ packageMetadata: { moduleType: "commonjs", binScriptExt: ".js", installLifecycle: "none", activationMessage: "restart", extraPackageFiles: [], extraScripts: {}, emitCjsWrappers: false },
473
+ componentSupport: { agents: "unsupported", context: "unsupported" },
474
+ },
475
+ {
476
+ targetId: "codex",
477
+ displayName: "Codex",
478
+ adapterName: "codex",
479
+ pluginRootEnvVar: null,
480
+ pluginRootEnvVarForExtension: null,
481
+ manifestFormat: "package.json + hooks.json",
482
+ commandFormat: "package-json commands",
483
+ skillHandling: "derived-from-commands",
484
+ hookRegistrationFormat: "codex",
485
+ hookRegistrationOutputPath: "hooks.json",
486
+ hookRegistrationAliasPaths: [],
487
+ harnessManifestPath: ".codex-plugin/plugin.json",
488
+ scriptVariants: ["bash"],
489
+ adapterFamily: "shell-hook",
490
+ distribution: "npm-cli",
491
+ distributionModel: "workspace-generated",
492
+ marketplacePath: ".agents/plugins/marketplace.json",
493
+ npmPublishable: false,
494
+ installLayout: { harnessHomeRelative: ".codex", pluginsDirRelative: ".agents/plugins", marketplacePathRelative: ".agents/plugins/marketplace.json" },
495
+ packageMetadata: { moduleType: "commonjs", binScriptExt: ".js", installLifecycle: "none", activationMessage: "codex-open-plugins", extraPackageFiles: [], extraScripts: {}, emitCjsWrappers: false },
496
+ componentSupport: { agents: "unsupported", context: "unsupported" },
497
+ },
498
+ {
499
+ targetId: "cursor",
500
+ displayName: "Cursor",
501
+ adapterName: "cursor",
502
+ pluginRootEnvVar: "CURSOR_PLUGIN_ROOT",
503
+ pluginRootEnvVarForExtension: null,
504
+ manifestFormat: "plugin.json",
505
+ commandFormat: "markdown-commands",
506
+ skillHandling: "derived-from-commands",
507
+ hookRegistrationFormat: "cursor",
508
+ hookRegistrationOutputPath: "hooks.json",
509
+ hookRegistrationAliasPaths: ["hooks/hooks-cursor.json"],
510
+ harnessManifestPath: ".cursor-plugin/plugin.json",
511
+ scriptVariants: ["bash", "powershell"],
512
+ adapterFamily: "shell-hook",
513
+ distribution: "both",
514
+ distributionModel: "workspace-generated",
515
+ marketplacePath: undefined,
516
+ npmPublishable: false,
517
+ installLayout: { harnessHomeRelative: ".cursor", pluginsDirRelative: null, marketplacePathRelative: null },
518
+ packageMetadata: { moduleType: "commonjs", binScriptExt: ".js", installLifecycle: "postinstall", activationMessage: "restart", extraPackageFiles: ["hooks.json"], extraScripts: {}, emitCjsWrappers: false },
519
+ componentSupport: { agents: "unsupported", context: "unsupported" },
520
+ },
521
+ {
522
+ targetId: "gemini",
523
+ displayName: "Gemini CLI",
524
+ adapterName: "gemini",
525
+ pluginRootEnvVar: "GEMINI_EXTENSION_PATH",
526
+ pluginRootEnvVarForExtension: null,
527
+ manifestFormat: "plugin.json + gemini-extension.json",
528
+ commandFormat: "extension-manifest",
529
+ skillHandling: "native",
530
+ hookRegistrationFormat: "gemini",
531
+ hookRegistrationOutputPath: "hooks/hooks.json",
532
+ hookRegistrationAliasPaths: [],
533
+ harnessManifestPath: null,
534
+ scriptVariants: ["bash"],
535
+ adapterFamily: "shell-hook",
536
+ distribution: "npm-cli",
537
+ distributionModel: "workspace-generated",
538
+ marketplacePath: undefined,
539
+ npmPublishable: false,
540
+ installLayout: { harnessHomeRelative: null, pluginsDirRelative: null, marketplacePathRelative: null },
541
+ packageMetadata: { moduleType: "commonjs", binScriptExt: ".js", installLifecycle: "plugin-scripts", activationMessage: "restart", extraPackageFiles: [], extraScripts: {}, emitCjsWrappers: false },
542
+ componentSupport: { agents: "unsupported", context: "native" },
543
+ },
544
+ {
545
+ targetId: "github-copilot",
546
+ displayName: "GitHub Copilot",
547
+ adapterName: "copilot",
548
+ pluginRootEnvVar: "COPILOT_PLUGIN_DIR",
549
+ pluginRootEnvVarForExtension: null,
550
+ manifestFormat: "plugin.json",
551
+ commandFormat: "markdown-commands",
552
+ skillHandling: "derived-from-commands",
553
+ hookRegistrationFormat: "github-copilot",
554
+ hookRegistrationOutputPath: "hooks.json",
555
+ hookRegistrationAliasPaths: [],
556
+ harnessManifestPath: null,
557
+ scriptVariants: ["bash", "powershell"],
558
+ adapterFamily: "shell-hook",
559
+ distribution: "both",
560
+ distributionModel: "workspace-generated",
561
+ marketplacePath: undefined,
562
+ npmPublishable: true,
563
+ installLayout: { harnessHomeRelative: ".copilot", pluginsDirRelative: null, marketplacePathRelative: null },
564
+ packageMetadata: { moduleType: "commonjs", binScriptExt: ".js", installLifecycle: "plugin-scripts", activationMessage: "restart", extraPackageFiles: ["hooks.json", "AGENTS.md"], extraScripts: {}, emitCjsWrappers: false },
565
+ componentSupport: { agents: "native", context: "native" },
566
+ },
567
+ {
568
+ targetId: "pi",
569
+ displayName: "Pi",
570
+ adapterName: "pi",
571
+ pluginRootEnvVar: null,
572
+ pluginRootEnvVarForExtension: "PI_PLUGIN_ROOT",
573
+ manifestFormat: "state-only",
574
+ commandFormat: "markdown-commands",
575
+ skillHandling: "derived-from-commands",
576
+ hookRegistrationFormat: undefined,
577
+ hookRegistrationOutputPath: null,
578
+ hookRegistrationAliasPaths: [],
579
+ harnessManifestPath: null,
580
+ scriptVariants: ["javascript"],
581
+ adapterFamily: "programmatic",
582
+ distribution: "npm-cli",
583
+ distributionModel: "workspace-generated",
584
+ marketplacePath: undefined,
585
+ npmPublishable: true,
586
+ installLayout: { harnessHomeRelative: null, pluginsDirRelative: null, marketplacePathRelative: null },
587
+ packageMetadata: { moduleType: "module", binScriptExt: ".cjs", installLifecycle: "none", activationMessage: "restart", extraPackageFiles: [], extraScripts: {}, peerDependencyPackage: "@mariozechner/pi-coding-agent", emitCjsWrappers: false },
588
+ componentSupport: { agents: "native", context: "native" },
589
+ },
590
+ {
591
+ targetId: "oh-my-pi",
592
+ displayName: "Oh-My-Pi",
593
+ adapterName: "omp",
594
+ pluginRootEnvVar: null,
595
+ pluginRootEnvVarForExtension: "OMP_PLUGIN_ROOT",
596
+ manifestFormat: "state-only",
597
+ commandFormat: "markdown-commands",
598
+ skillHandling: "derived-from-commands",
599
+ hookRegistrationFormat: undefined,
600
+ hookRegistrationOutputPath: null,
601
+ hookRegistrationAliasPaths: [],
602
+ harnessManifestPath: null,
603
+ scriptVariants: ["javascript"],
604
+ adapterFamily: "programmatic",
605
+ distribution: "npm-cli",
606
+ distributionModel: "workspace-generated",
607
+ marketplacePath: undefined,
608
+ npmPublishable: true,
609
+ installLayout: { harnessHomeRelative: null, pluginsDirRelative: null, marketplacePathRelative: null },
610
+ packageMetadata: { moduleType: "module", binScriptExt: ".cjs", installLifecycle: "none", activationMessage: "restart", extraPackageFiles: [], extraScripts: {}, peerDependencyPackage: "@oh-my-pi/pi-coding-agent", emitCjsWrappers: false },
611
+ componentSupport: { agents: "native", context: "native" },
612
+ },
613
+ {
614
+ targetId: "opencode",
615
+ displayName: "OpenCode",
616
+ adapterName: "opencode",
617
+ pluginRootEnvVar: "OPENCODE_PLUGIN_ROOT",
618
+ pluginRootEnvVarForExtension: null,
619
+ manifestFormat: "plugin.json",
620
+ commandFormat: "event-hooks",
621
+ skillHandling: "derived-from-commands",
622
+ hookRegistrationFormat: "opencode",
623
+ hookRegistrationOutputPath: "hooks/hooks.json",
624
+ hookRegistrationAliasPaths: [],
625
+ harnessManifestPath: null,
626
+ scriptVariants: ["javascript"],
627
+ adapterFamily: "programmatic",
628
+ distribution: "npm-cli",
629
+ distributionModel: "workspace-generated",
630
+ marketplacePath: undefined,
631
+ npmPublishable: false,
632
+ installLayout: { harnessHomeRelative: ".opencode", pluginsDirRelative: null, marketplacePathRelative: null },
633
+ packageMetadata: { moduleType: "commonjs", binScriptExt: ".js", installLifecycle: "postinstall", activationMessage: "restart", extraPackageFiles: [], extraScripts: { test: "node test/integration.test.js" }, emitCjsWrappers: true },
634
+ componentSupport: { agents: "unsupported", context: "unsupported" },
635
+ },
636
+ {
637
+ targetId: "openclaw",
638
+ displayName: "OpenClaw",
639
+ adapterName: "openclaw",
640
+ pluginRootEnvVar: null,
641
+ pluginRootEnvVarForExtension: null,
642
+ manifestFormat: "plugin.json",
643
+ commandFormat: "event-hooks",
644
+ skillHandling: "derived-from-commands",
645
+ hookRegistrationFormat: "openclaw",
646
+ hookRegistrationOutputPath: "hooks.json",
647
+ hookRegistrationAliasPaths: [],
648
+ harnessManifestPath: null,
649
+ scriptVariants: ["bash", "typescript"],
650
+ adapterFamily: "programmatic",
651
+ distribution: "npm-cli",
652
+ distributionModel: "workspace-generated",
653
+ marketplacePath: undefined,
654
+ npmPublishable: false,
655
+ installLayout: { harnessHomeRelative: ".openclaw", pluginsDirRelative: null, marketplacePathRelative: null },
656
+ packageMetadata: { moduleType: "module", binScriptExt: ".cjs", installLifecycle: "none", activationMessage: "restart", extraPackageFiles: [], extraScripts: {}, peerDependencyPackage: "openclaw", emitCjsWrappers: false },
657
+ componentSupport: { agents: "unsupported", context: "unsupported" },
658
+ },
659
+ ];
660
+ return descriptors.map((descriptor) => ({
661
+ ...descriptor,
662
+ supportedHooks: supportedHooksForTarget(descriptor.targetId),
663
+ evidenceIds: descriptor.evidenceIds ?? [],
664
+ }));
538
665
  }
539
666
  let cachedDataState;
540
667
  function buildDataState() {