@ken-jo/agent-connector 0.6.3 → 0.6.5

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 (90) hide show
  1. package/README.md +25 -12
  2. package/dist/{action-IKJ2J3X4.js → action-DFUJOXVJ.js} +9 -8
  3. package/dist/{action-IKJ2J3X4.js.map → action-DFUJOXVJ.js.map} +1 -1
  4. package/dist/{audit-5K2H7PAT.js → audit-IMNQJZ4W.js} +6 -5
  5. package/dist/{audit-5K2H7PAT.js.map → audit-IMNQJZ4W.js.map} +1 -1
  6. package/dist/{chunk-K67UJSJI.js → chunk-66TGBYSL.js} +5 -5
  7. package/dist/{chunk-QG26JEJF.js → chunk-7C3COFOD.js} +9 -9
  8. package/dist/{chunk-QG26JEJF.js.map → chunk-7C3COFOD.js.map} +1 -1
  9. package/dist/{chunk-HUL5CRF2.js → chunk-BAJL27XI.js} +4 -4
  10. package/dist/{codex-C7ERS3TW.js → chunk-BB4DFAHC.js} +21 -8
  11. package/dist/chunk-BB4DFAHC.js.map +1 -0
  12. package/dist/{chunk-STR3CRH3.js → chunk-C4NDV6GW.js} +2 -2
  13. package/dist/{chunk-LO6NIZSL.js → chunk-CG44RWYJ.js} +5 -5
  14. package/dist/chunk-D35FMUFZ.js +48 -0
  15. package/dist/chunk-D35FMUFZ.js.map +1 -0
  16. package/dist/{chunk-OXANBA4I.js → chunk-ITVST3SZ.js} +2 -2
  17. package/dist/{chunk-W4GVN3TJ.js → chunk-KQBRUI3Y.js} +3 -3
  18. package/dist/{chunk-TCJN5S4T.js → chunk-PTITNBSS.js} +22 -33
  19. package/dist/chunk-PTITNBSS.js.map +1 -0
  20. package/dist/{chunk-O7CFTOM5.js → chunk-S2TAC22E.js} +2 -2
  21. package/dist/{chunk-BD72ZF6D.js → chunk-V7GZ3AMV.js} +2 -2
  22. package/dist/{chunk-BGPVMJOG.js → chunk-ZYB2UFEN.js} +6 -2
  23. package/dist/chunk-ZYB2UFEN.js.map +1 -0
  24. package/dist/{claude-code-EIC4Q7OT.js → claude-code-JRKJARPH.js} +5 -4
  25. package/dist/{claude-code-EIC4Q7OT.js.map → claude-code-JRKJARPH.js.map} +1 -1
  26. package/dist/cli/sdk.js +5 -4
  27. package/dist/cli/sdk.js.map +1 -1
  28. package/dist/cli.js +2 -1
  29. package/dist/cli.js.map +1 -1
  30. package/dist/{cline-AJZ67XEE.js → cline-XAFNCZFQ.js} +26 -5
  31. package/dist/cline-XAFNCZFQ.js.map +1 -0
  32. package/dist/codex-X3WZZOJ4.js +22 -0
  33. package/dist/codex-X3WZZOJ4.js.map +1 -0
  34. package/dist/{define-connector-iosc34CA.d.ts → define-connector-D4UOI__e.d.ts} +1 -1
  35. package/dist/{detect-KYRQJUDY.js → detect-RT75DWQ5.js} +5 -4
  36. package/dist/{detect-KYRQJUDY.js.map → detect-RT75DWQ5.js.map} +1 -1
  37. package/dist/{doctor-BGWPZ676.js → doctor-F3RRQBQN.js} +135 -11
  38. package/dist/doctor-F3RRQBQN.js.map +1 -0
  39. package/dist/{hook-YMCFZRJE.js → hook-VYA4Q3YR.js} +9 -8
  40. package/dist/{hook-YMCFZRJE.js.map → hook-VYA4Q3YR.js.map} +1 -1
  41. package/dist/index.d.ts +3 -3
  42. package/dist/index.js +2 -2
  43. package/dist/{install-RCHVHCHO.js → install-XNTRLUZI.js} +9 -8
  44. package/dist/{install-RCHVHCHO.js.map → install-XNTRLUZI.js.map} +1 -1
  45. package/dist/{introspect-z3eKVWHN.d.ts → introspect-gaKVzg2q.d.ts} +1 -1
  46. package/dist/{leaderboard-V3DXXZNL.js → leaderboard-VF4W6PZ2.js} +3 -2
  47. package/dist/{leaderboard-V3DXXZNL.js.map → leaderboard-VF4W6PZ2.js.map} +1 -1
  48. package/dist/open-interpreter-ZHBMASXY.js +154 -0
  49. package/dist/open-interpreter-ZHBMASXY.js.map +1 -0
  50. package/dist/{package-75T46SXP.js → package-VRV5YHUJ.js} +7 -6
  51. package/dist/{package-75T46SXP.js.map → package-VRV5YHUJ.js.map} +1 -1
  52. package/dist/runtime/index.d.ts +1 -1
  53. package/dist/runtime/index.js +7 -6
  54. package/dist/sdk/index.d.ts +4 -4
  55. package/dist/sdk/index.js +3 -3
  56. package/dist/sdk/test.d.ts +2 -2
  57. package/dist/sdk/test.js +7 -6
  58. package/dist/{serve-IRMYJWFT.js → serve-EPEAGVOE.js} +9 -8
  59. package/dist/{serve-IRMYJWFT.js.map → serve-EPEAGVOE.js.map} +1 -1
  60. package/dist/{status-VJVNMWT7.js → status-3EHFFIQ7.js} +7 -6
  61. package/dist/{status-VJVNMWT7.js.map → status-3EHFFIQ7.js.map} +1 -1
  62. package/dist/{statusline-OKW44KFR.js → statusline-64IDYANK.js} +8 -7
  63. package/dist/{statusline-OKW44KFR.js.map → statusline-64IDYANK.js.map} +1 -1
  64. package/dist/{telemetry-YVMUXTDG.js → telemetry-AEE4TOFA.js} +6 -5
  65. package/dist/{telemetry-YVMUXTDG.js.map → telemetry-AEE4TOFA.js.map} +1 -1
  66. package/dist/{types-CAKApZpX.d.ts → types-htm_wrWo.d.ts} +6 -5
  67. package/dist/{uninstall-WZHO4CVL.js → uninstall-EJLQGZRN.js} +9 -8
  68. package/dist/{uninstall-WZHO4CVL.js.map → uninstall-EJLQGZRN.js.map} +1 -1
  69. package/dist/{upgrade-DZMEUPF2.js → upgrade-ZPHQELKG.js} +9 -8
  70. package/dist/{upgrade-DZMEUPF2.js.map → upgrade-ZPHQELKG.js.map} +1 -1
  71. package/dist/{usage-QSM4PP3E.js → usage-IWPGACHN.js} +3 -2
  72. package/dist/{usage-QSM4PP3E.js.map → usage-IWPGACHN.js.map} +1 -1
  73. package/dist/{usage-event-FH3X232T.js → usage-event-W5VLRA3X.js} +8 -7
  74. package/dist/{usage-event-FH3X232T.js.map → usage-event-W5VLRA3X.js.map} +1 -1
  75. package/package.json +20 -7
  76. package/dist/chunk-BGPVMJOG.js.map +0 -1
  77. package/dist/chunk-TCJN5S4T.js.map +0 -1
  78. package/dist/cline-AJZ67XEE.js.map +0 -1
  79. package/dist/codex-C7ERS3TW.js.map +0 -1
  80. package/dist/doctor-BGWPZ676.js.map +0 -1
  81. package/dist/open-interpreter-CXUCCZI3.js +0 -264
  82. package/dist/open-interpreter-CXUCCZI3.js.map +0 -1
  83. /package/dist/{chunk-K67UJSJI.js.map → chunk-66TGBYSL.js.map} +0 -0
  84. /package/dist/{chunk-HUL5CRF2.js.map → chunk-BAJL27XI.js.map} +0 -0
  85. /package/dist/{chunk-STR3CRH3.js.map → chunk-C4NDV6GW.js.map} +0 -0
  86. /package/dist/{chunk-LO6NIZSL.js.map → chunk-CG44RWYJ.js.map} +0 -0
  87. /package/dist/{chunk-OXANBA4I.js.map → chunk-ITVST3SZ.js.map} +0 -0
  88. /package/dist/{chunk-W4GVN3TJ.js.map → chunk-KQBRUI3Y.js.map} +0 -0
  89. /package/dist/{chunk-O7CFTOM5.js.map → chunk-S2TAC22E.js.map} +0 -0
  90. /package/dist/{chunk-BD72ZF6D.js.map → chunk-V7GZ3AMV.js.map} +0 -0
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  allAdapters,
4
4
  loadAdapter
5
- } from "./chunk-QG26JEJF.js";
5
+ } from "./chunk-7C3COFOD.js";
6
6
 
7
7
  // src/sdk/introspect.ts
8
8
  function hostCanFireEvent(c, event) {
@@ -87,4 +87,4 @@ export {
87
87
  hostsSupporting,
88
88
  surfaceSupport
89
89
  };
90
- //# sourceMappingURL=chunk-BD72ZF6D.js.map
90
+ //# sourceMappingURL=chunk-V7GZ3AMV.js.map
@@ -1,9 +1,12 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ resolveOwnVersion
4
+ } from "./chunk-D35FMUFZ.js";
2
5
  import {
3
6
  defineConnector,
4
7
  readConnectorPackageMetadataNearFile,
5
8
  withConnectorPackageMetadata
6
- } from "./chunk-O7CFTOM5.js";
9
+ } from "./chunk-S2TAC22E.js";
7
10
  import {
8
11
  assertNoSymlinkInPath,
9
12
  connectorDir,
@@ -93,6 +96,7 @@ function registerConnector(connector, modulePath, scope) {
93
96
  id: connector.id,
94
97
  displayName: connector.displayName,
95
98
  version: connector.version,
99
+ frameworkVersion: resolveOwnVersion(),
96
100
  ...connector.mcp ? { mcp: connector.mcp } : {},
97
101
  modulePath: resolve(modulePath),
98
102
  telemetry: connector.telemetry,
@@ -193,4 +197,4 @@ export {
193
197
  connectorFromMeta,
194
198
  listRegisteredConnectors
195
199
  };
196
- //# sourceMappingURL=chunk-BGPVMJOG.js.map
200
+ //# sourceMappingURL=chunk-ZYB2UFEN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/load-connector.ts"],"sourcesContent":["/**\n * core/load-connector — discover, load, and register connector definitions.\n *\n * Responsibilities:\n * 1. Locate the developer's `agent-connector.config.{mjs,js,json}` by walking\n * upward from a start directory (the project root convention).\n * 2. Load a config from a path into a LIVE ResolvedConnector (with handlers).\n * 3. Register a connector by persisting SERIALIZABLE metadata (no functions)\n * to `connectorDir(id)/connector.json`, pointing at the source module so\n * live handlers can be re-imported at runtime from a stable record.\n *\n * Why split live vs. serialized? Hook handlers are functions and cannot survive\n * JSON. The registry stores only what JSON can hold plus an absolute\n * `modulePath`; the runtime re-imports that module to recover the live handlers.\n */\n\nimport { existsSync, readdirSync, readFileSync, realpathSync, rmSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type {\n CommandDef,\n HookEventName,\n InstallScope,\n MemoryDef,\n PlatformId,\n PlatformOverride,\n ResolvedConnector,\n ServerDef,\n SkillDef,\n SubagentDef,\n} from \"./types.js\";\nimport { defineConnector } from \"./define-connector.js\";\nimport { assertNoSymlinkInPath, connectorDir, connectorsDir, ensureDir } from \"./paths.js\";\nimport { resolveOwnVersion } from \"./version.js\";\nimport {\n readConnectorPackageMetadataNearFile,\n withConnectorPackageMetadata,\n} from \"./package-metadata.js\";\n\n/** Candidate config filenames, in resolution-precedence order. */\nconst CONFIG_FILENAMES = [\n \"agent-connector.config.mjs\",\n \"agent-connector.config.js\",\n \"agent-connector.config.json\",\n] as const;\n\n/**\n * The serializable subset of a connector persisted to `connector.json`.\n * Hook handler functions are intentionally absent — only the absolute\n * `modulePath` is stored so the live ResolvedConnector can be re-imported.\n */\nexport interface RegisteredMeta {\n id: string;\n displayName: string;\n version: string;\n /** Package-derived identity, when available from config or package.json. */\n mcp?: ResolvedConnector[\"mcp\"];\n /** Absolute path to the source module that produced this connector. */\n modulePath: string;\n telemetry: ResolvedConnector[\"telemetry\"];\n /** Canonical event names the connector handles (handlers themselves stripped). */\n hookEvents: HookEventName[];\n hasServer: boolean;\n server: ServerDef | null;\n /**\n * The agent-connector package version that rendered this install (added in\n * 0.6.5). doctor compares it with the running CLI and warns when an older\n * release produced the host config; `upgrade` re-renders and re-stamps it.\n * OPTIONAL: absent on records written by releases before 0.6.5.\n */\n frameworkVersion?: string;\n /**\n * Content surfaces (commands/skills/subagents). These are JSON-serializable\n * (no functions) so they persist cleanly and let uninstall locate the files\n * to remove even when the source module is gone.\n */\n commands: CommandDef[];\n skills: SkillDef[];\n subagents: SubagentDef[];\n /**\n * Memory entries (managed-block content surface). Plain content, persisted\n * whole so uninstall normally has the full entry list even when the source\n * module is gone (the marker prefix-scan is the fallback beyond that).\n */\n memory: MemoryDef[];\n targets: ResolvedConnector[\"targets\"];\n /** Per-platform overrides with any hook handler functions stripped. */\n platforms: Partial<Record<PlatformId, PlatformOverride>>;\n /**\n * The install scope this connector was registered under, persisted so the\n * runtime entrypoints (hook/statusline/action) can recover it cheaply (sync)\n * and stamp it onto the HostCtx/event — scope is an install-time property the\n * runtime otherwise has no access to. OPTIONAL: absent for an ad-hoc register\n * that passed no scope, or a record written before this field existed.\n * This is the install's RUN-WIDE DEFAULT scope; it can differ from the\n * effective per-host scope when a `platforms[host].scope` override is set (the\n * record is keyed by connector id only and holds no per-host scope map).\n */\n scope?: InstallScope;\n}\n\n/**\n * Search `startDir` and each ancestor for a connector config file. Returns the\n * absolute path to the first match (filesystem-root-stopping), or null.\n */\nexport function findConnectorConfig(startDir: string): string | null {\n let dir = resolve(startDir);\n // Walk upward until `dirname(dir) === dir` (filesystem root).\n for (;;) {\n for (const name of CONFIG_FILENAMES) {\n const candidate = join(dir, name);\n if (existsSync(candidate)) return candidate;\n }\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/** True if a value already looks like a ResolvedConnector (vs. a raw config). */\nfunction isResolvedConnector(value: unknown): value is ResolvedConnector {\n return (\n typeof value === \"object\" &&\n value !== null &&\n Array.isArray((value as { hookEvents?: unknown }).hookEvents)\n );\n}\n\n/**\n * Load a connector from an absolute or relative path.\n * - `.json` → JSON.parse, then defineConnector().\n * - `.mjs` / `.js` → dynamic import (via pathToFileURL, Windows-safe),\n * take the default export. If it already looks like a\n * ResolvedConnector use it as-is; otherwise treat it as\n * a ConnectorConfig and run it through defineConnector().\n * Returns the live connector plus the absolute module path it came from.\n */\nexport async function loadConnectorFromPath(\n path: string,\n): Promise<{ connector: ResolvedConnector; modulePath: string }> {\n let modulePath = isAbsolute(path) ? path : resolve(path);\n // Canonicalize before building the file:// URL for dynamic import. On Windows a\n // short (8.3) temp path like C:\\Users\\RUNNER~1\\...\\x.mjs round-trips the \"~\" as\n // %7E and fails to load; realpathSync.native expands it to the real long path.\n // It also resolves symlinked temp roots (e.g. macOS /var -> /private/var).\n // If the file does not exist yet, fall through with the resolve()'d path so the\n // subsequent read/import throws the real not-found error.\n try {\n modulePath = realpathSync.native(modulePath);\n } catch {\n /* keep the resolve()'d path */\n }\n\n if (modulePath.endsWith(\".json\")) {\n const text = readFileSync(modulePath, \"utf8\");\n const config = JSON.parse(text) as unknown;\n const connector = await withConnectorPackageMetadata(\n readConnectorPackageMetadataNearFile(modulePath),\n async () => defineConnector(config as Parameters<typeof defineConnector>[0]),\n );\n return { connector, modulePath };\n }\n\n // .mjs / .js — dynamic ESM import. pathToFileURL keeps Windows paths valid.\n const moduleUrl = pathToFileURL(modulePath).href;\n const connector = await withConnectorPackageMetadata(\n readConnectorPackageMetadataNearFile(modulePath),\n async () => {\n const mod = (await import(/* @vite-ignore */ moduleUrl)) as {\n default?: unknown;\n };\n const exported = mod.default;\n if (exported == null) {\n throw new Error(\n `Connector module has no default export: ${modulePath}`,\n );\n }\n return isResolvedConnector(exported)\n ? exported\n : defineConnector(exported as Parameters<typeof defineConnector>[0]);\n },\n );\n return { connector, modulePath };\n}\n\n/**\n * Strip any function-valued `hooks` from per-platform overrides so the result\n * is JSON-serializable. A boolean `hooks` override is preserved; an object\n * override is dropped (it can only carry handler functions, which are not\n * serializable). `nativeHooks` declarations are persisted HANDLER-LESS (event\n * name + matcher only) so meta-based inspection (doctor / health checks / the\n * hook CLI) can still see WHICH native events were declared — the live handlers\n * are re-imported from `modulePath` at runtime, exactly like normalized hooks.\n * Everything else on the override is kept verbatim — notably `configPatch`\n * declarations, which are pure JSON (key/value/reason/docsUrl, no functions)\n * and persist WHOLE so uninstall/doctor can reason about them even when the\n * source module is gone.\n */\nfunction serializablePlatforms(\n platforms: Partial<Record<PlatformId, PlatformOverride>>,\n): Partial<Record<PlatformId, PlatformOverride>> {\n const out: Partial<Record<PlatformId, PlatformOverride>> = {};\n for (const [id, override] of Object.entries(platforms) as [\n PlatformId,\n PlatformOverride | undefined,\n ][]) {\n if (!override) continue;\n const { hooks, nativeHooks, ...rest } = override;\n const clean: PlatformOverride = { ...rest };\n // Keep only a boolean hooks flag; object hooks carry handler functions.\n if (typeof hooks === \"boolean\") clean.hooks = hooks;\n if (nativeHooks && typeof nativeHooks === \"object\") {\n const stripped: Record<string, { matcher?: string }> = {};\n for (const [event, def] of Object.entries(nativeHooks)) {\n stripped[event] =\n typeof def?.matcher === \"string\" ? { matcher: def.matcher } : {};\n }\n // Cast: the persisted record deliberately omits the (non-serializable)\n // handler; consumers of meta-derived connectors never dispatch handlers.\n clean.nativeHooks = stripped as PlatformOverride[\"nativeHooks\"];\n }\n out[id] = clean;\n }\n return out;\n}\n\n/**\n * Persist a connector's serializable metadata to `connectorDir(id)/connector.json`.\n * Handlers are NOT serialized — they are re-imported from `modulePath` at runtime.\n * The optional `scope` (the install scope the caller deployed under) is persisted\n * so the runtime entrypoints can recover it and stamp it onto the HostCtx/event.\n * Returns the absolute path of the written record.\n */\nexport function registerConnector(\n connector: ResolvedConnector,\n modulePath: string,\n scope?: InstallScope,\n): string {\n const meta: RegisteredMeta = {\n id: connector.id,\n displayName: connector.displayName,\n version: connector.version,\n frameworkVersion: resolveOwnVersion(),\n ...(connector.mcp ? { mcp: connector.mcp } : {}),\n modulePath: resolve(modulePath),\n telemetry: connector.telemetry,\n hookEvents: connector.hookEvents,\n hasServer: !!connector.server,\n server: connector.server ?? null,\n commands: connector.commands,\n skills: connector.skills,\n subagents: connector.subagents,\n memory: connector.memory,\n targets: connector.targets,\n platforms: serializablePlatforms(connector.platforms),\n // Persist the install scope when the caller supplied one (the installer\n // passes its install scope). Omitted from the record when undefined so an\n // ad-hoc register stays minimal and round-trips as \"no scope known\".\n ...(scope !== undefined ? { scope } : {}),\n };\n\n const dir = connectorDir(connector.id);\n const outPath = join(dir, \"connector.json\");\n assertNoSymlinkInPath(outPath);\n ensureDir(dir);\n writeFileSync(outPath, `${JSON.stringify(meta, null, 2)}\\n`, \"utf8\");\n return outPath;\n}\n\n/**\n * Deregister a connector by removing its DATA-dir record directory\n * (`connectorDir(id)`) recursively. This is the inverse of {@link registerConnector}:\n * registerConnector writes `connectorDir(id)/connector.json`, but per-target\n * uninstall only strips host-native registrations — it never removes this record,\n * leaving an orphan behind. Best-effort + guarded: returns the directory path and\n * whether it existed before removal.\n */\nexport function deregisterConnector(id: string): {\n removed: boolean;\n path: string;\n} {\n const dir = connectorDir(id);\n assertNoSymlinkInPath(dir);\n const existed = existsSync(dir);\n if (existed) rmSync(dir, { recursive: true, force: true });\n return { removed: existed, path: dir };\n}\n\n/**\n * Read the registered metadata record for `id`, or null if not registered or\n * the record is unreadable/corrupt.\n */\nexport function readRegisteredMeta(id: string): RegisteredMeta | null {\n const recordPath = join(connectorDir(id), \"connector.json\");\n if (!existsSync(recordPath)) return null;\n try {\n return JSON.parse(readFileSync(recordPath, \"utf8\")) as RegisteredMeta;\n } catch {\n return null;\n }\n}\n\n/**\n * Load the LIVE ResolvedConnector (with hook handlers) for a registered id by\n * re-importing its source module. Throws a clear error when the connector is\n * not registered or its source module no longer resolves to it.\n */\nexport async function loadRegisteredConnector(\n id: string,\n): Promise<ResolvedConnector> {\n const meta = readRegisteredMeta(id);\n if (!meta) {\n throw new Error(\n `Connector \"${id}\" is not registered (no record at ${join(connectorDir(id), \"connector.json\")}). ` +\n `Run an install/register step first.`,\n );\n }\n if (!meta.modulePath || !existsSync(meta.modulePath)) {\n throw new Error(\n `Connector \"${id}\" record points at a missing module: ${meta.modulePath}`,\n );\n }\n const { connector } = await loadConnectorFromPath(meta.modulePath);\n return connector;\n}\n\n/**\n * Build a handler-less ResolvedConnector from stored metadata. Suitable for\n * inspection/doctor where live hook handlers are not needed (and where the\n * source module may even be gone). `hooks` is empty; `hookEvents` is preserved.\n */\nexport function connectorFromMeta(meta: RegisteredMeta): ResolvedConnector {\n return {\n id: meta.id,\n displayName: meta.displayName,\n version: meta.version,\n ...(meta.mcp ? { mcp: meta.mcp } : {}),\n ...(meta.server ? { server: meta.server } : {}),\n hooks: {},\n hookEvents: meta.hookEvents ?? [],\n telemetry: meta.telemetry,\n commands: meta.commands ?? [],\n skills: meta.skills ?? [],\n subagents: meta.subagents ?? [],\n memory: meta.memory ?? [],\n // Actions carry live `run` handlers, so they are NOT serialized into the\n // record (like the statusline render). A handler-less meta-derived connector\n // gets [] — inspection/uninstall never dispatch action handlers, and the\n // BaseAdapter action default already tolerates an empty list.\n actions: [],\n platforms: meta.platforms ?? {},\n targets: meta.targets,\n };\n}\n\n/**\n * List every registered connector as a handler-less ResolvedConnector (read\n * from `connectorsDir()`). Used by doctor to health-check what is actually\n * installed, rather than guessing from the local working directory.\n */\nexport function listRegisteredConnectors(): ResolvedConnector[] {\n const dir = connectorsDir();\n if (!existsSync(dir)) return [];\n const out: ResolvedConnector[] = [];\n for (const entry of readdirSync(dir)) {\n const meta = readRegisteredMeta(entry);\n if (meta) out.push(connectorFromMeta(meta));\n }\n return out;\n}\n"],"mappings":"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","names":["connector"]}
@@ -5,9 +5,10 @@ import {
5
5
  } from "./chunk-4NFDNY3C.js";
6
6
  import {
7
7
  readRegisteredMeta
8
- } from "./chunk-BGPVMJOG.js";
9
- import "./chunk-O7CFTOM5.js";
10
- import "./chunk-QG26JEJF.js";
8
+ } from "./chunk-ZYB2UFEN.js";
9
+ import "./chunk-D35FMUFZ.js";
10
+ import "./chunk-S2TAC22E.js";
11
+ import "./chunk-7C3COFOD.js";
11
12
  import {
12
13
  addLedgerOwner,
13
14
  configPatchManualEdit,
@@ -1503,4 +1504,4 @@ export {
1503
1504
  claudeSensitiveKeyViolation,
1504
1505
  claude_code_default as default
1505
1506
  };
1506
- //# sourceMappingURL=claude-code-EIC4Q7OT.js.map
1507
+ //# sourceMappingURL=claude-code-JRKJARPH.js.map