Skip to content

fix: update KB and WS connector devEx#1681

Merged
jariy17 merged 4 commits into
mainfrom
connectors-updates
Jul 7, 2026
Merged

fix: update KB and WS connector devEx#1681
jariy17 merged 4 commits into
mainfrom
connectors-updates

Conversation

@nborges-aws

@nborges-aws nborges-aws commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Description

Update CLI connector DevEx for web-search and knowledge base. This PR restructures how connector targets are stored and managed.

Web-search moves from standalone targetType to connector

  • Removed agentcore add web-search / agentcore remove web-search top-level shortcuts
  • Removed web-search from --type valid values; added to --connector
  • Canonical path: agentcore add gateway-target --type connector --connector web-search

configurations[] array replaces flat typed fields

  • Connector targets now store a configurations array matching the CFN wire format
  • Each entry: { name, parameterValues, parameterOverrides }
  • CLI bespoke flags (--exclude-domains, --knowledge-base-id) translate to the correct parameterValues shape via a connector translator module

bedrock-agentic-retrieve removed as standalone connector

  • AgenticRetrieveStream is now a configuration entry within bedrock-knowledge-bases
  • Removed auto-upsert logic (upsertAgenticRetrieveTarget)
  • Single --knowledge-base-id flag produces both Retrieve and AgenticRetrieveStream configurations

KB --gateway flag removed

  • Gateway wiring is now a separate operation via agentcore add gateway-target --connector bedrock-knowledge-bases
  • Removed gateway step from KB TUI wizard
  • Removed appendConnectorTargets dead code

--name optional for KB paths

  • agentcore add knowledge-base: defaults to kb-quick-start-xxxxx (console convention)
  • agentcore add gateway-target --connector bedrock-knowledge-bases:defaults to kb-{gateway}-{kb-id}
  • Collision-safe (checks existing names, sanitizes underscores)
  1. TUI fallback for agentcore add gateway-target
  • Bare command (no flags) now drops into the TUI wizard instead of erroring
  • Flag detection uses Object.entries(rawOptions) — no hand-maintained allowlist

Related Issue

Closes #

Documentation PR

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Other (please describe): devEx rework

Testing

How have you tested the change?

  • I ran npm run test:unit and npm run test:integ
  • I ran npm run typecheck
  • I ran npm run lint
  • If I modified src/assets/, I ran npm run test:update-snapshots and committed the updated snapshots

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the
terms of your choice.

@nborges-aws nborges-aws requested a review from a team July 2, 2026 11:46
@github-actions github-actions Bot added the size/xl PR size: XL label Jul 2, 2026
@github-actions github-actions Bot added the agentcore-harness-reviewing AgentCore Harness review in progress label Jul 2, 2026
@agentcore-devx-automation agentcore-devx-automation Bot added the claude-security-reviewing Claude Code /security-review in progress label Jul 2, 2026
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Package Tarball

aws-agentcore-0.22.0.tgz

How to install

gh release download pr-1681-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.22.0.tgz

@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automation agentcore-devx-automation Bot removed the claude-security-reviewing Claude Code /security-review in progress label Jul 2, 2026

@agentcore-cli-automation agentcore-cli-automation left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice cleanup — removing the standalone web-search command tree and folding it into --connector reads well. A few things need attention before merge:

Blocking: unrelated test files were not updated for the schema/primitive changes

The PR removes 'webSearch' from GatewayTargetTypeSchema and changes createWebSearchGatewayTarget() to persist targetType: 'connector', connectorId: 'web-search', but two existing test suites still assert the old shape and are not touched by this PR:

  • src/schema/schemas/__tests__/mcp.test.ts — the entire describe('AgentCoreGatewayTargetSchema with webSearch', …) block (11+ cases) parses targetType: 'webSearch'. Since webSearch is no longer in the enum, the "accepts a minimal webSearch target" and "accepts … with excludeDomains" cases will fail at the enum stage, and the various "rejects …" cases will now fail for the wrong reason (enum rejection rather than the targeted per-field checks).
  • src/cli/primitives/__tests__/GatewayTargetPrimitive.test.ts — the describe('GatewayTargetPrimitive — createWebSearchGatewayTarget', …) block still asserts expect(target?.targetType).toBe('webSearch'), but the primitive now writes 'connector'.

These need to be updated (or deleted and replaced) to match the new connector + connectorId: 'web-search' shape. The PR description says test:unit passed, so I'd double-check that on a clean checkout — this looks like it would fail.

Blocking: userPassedAnyFlag for add gateway-target is under-specified

See the inline comment on GatewayTargetPrimitive.ts.

Non-blocking observations

  • The web-search connector still requires --name (the nameOptional shortcut in validate.ts:397-398 only covers the KB connectors). If the intent per the PR description was that connector attaches get a default name, web-search is inconsistent. If the intent was KB-only, ignore this — but worth stating in the description.
  • --connector web-search --knowledge-base-id … is silently accepted rather than rejected. Not blocking, but nicer to reject with "not applicable for --connector web-search".

!!cliOptions.type ||
!!cliOptions.connector ||
!!cliOptions.endpoint ||
!!cliOptions.json;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This interactive-fallback check is under-specified for this command. add gateway-target exposes many other non-interactive flags (--gateway, --knowledge-base-id, --exclude-domains, --lambda-arn, --rest-api-id, --stage, --schema, --host, --runtime, --runtime-endpoint, --passthrough-endpoint, --outbound-auth, --credential-name, --oauth-*, --tool-*, etc.) that aren't in the || chain. A user running e.g.

agentcore add gateway-target --gateway my-gw --lambda-arn arn:aws:lambda:…

will be silently dropped into the TUI wizard (ignoring the flags they passed) instead of getting the previous behavior (validation error / non-interactive execution). That's a subtle regression that will bite scripts and CI.

Options:

  1. Expand the || chain to enumerate every user-facing flag (compare with KnowledgeBasePrimitive which does this for its smaller flag set).
  2. Compute it off Object.keys(rawOptions) filtered against Commander defaults (e.g. subtract knowledgeBaseId: [] when it's still the empty default).
  3. Simply gate on "no flags at all were passed" — i.e. Object.keys(rawOptions).length === 0.

@nborges-aws nborges-aws Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

expanded || chain to avoid unintentional drop into TUI

if (!cliOptions.name) {
throw new ValidationError('A --name is required for `agentcore add knowledge-base`.');
}
const resolvedName = cliOptions.name ?? `kb-quick-start-${Math.random().toString(36).slice(2, 7)}`;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two small concerns with Math.random().toString(36).slice(2, 7) as a default-name generator:

  1. It's non-deterministic — the same command produces a different KB name each time, which makes scripting / retries awkward (a partial-failure retry creates a second KB instead of appending to the first).
  2. If a user runs agentcore add knowledge-base twice without --name, they'll silently get two distinct KBs (kb-quick-start-abc12, kb-quick-start-xyz34) rather than either an error or an append, which is probably not what they intended.

Consider either a deterministic default (e.g. kb-quick-start + collision check → fail with a helpful message) or a monotonic suffix based on existing KB names. If the random suffix is intentional to mirror console behavior, ignore — but at minimum please add a short comment explaining the choice.

@nborges-aws nborges-aws Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The randomness here is intentional. Follows console convention.

for 1) -> Producing a new KB in this case would be the expectation. If the first attempt succeeds, name is printed in the output and user can proceed. If attempt fails -- nothing is persisted from first attempt, so running again and getting a fresh resource is warranted.

for 2) -> This is the correct behavior. agentcore add knowledge-base is creating a new resource per run. If a user creates a KB, and wants to append on the next command, they can pas sin the name output from first run. Default behavior creating two disjointed KBs is the expectation.


if (!options.name) {
const kbConnectors = ['bedrock-knowledge-bases', 'bedrock-agentic-retrieve'];
const nameOptional = options.type === 'connector' && kbConnectors.includes(options.connector ?? '');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nameOptional only covers the two KB connectors, so --connector web-search without --name still hits the --name is required branch even though the primitive at GatewayTargetPrimitive.ts:665-669 has default-name logic for the KB connectors only. If the PR intent is "defaults for KB, name required for web-search", that's consistent — but the PR description says "A default value is given for both KB creation, and attaching connector if none is provided", which reads as "for all connectors". Please either extend the default to web-search too (e.g. web-search or web-search-${gateway}) or clarify the description.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is intentional, I've updated PR description to clarify

valid: false,
error: `--knowledge-base-id is required for --connector ${options.connector}`,
};
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This skips the --knowledge-base-id is required check for web-search (correct), but nothing rejects --knowledge-base-id being supplied when --connector web-search. Suggest adding an explicit rejection so --connector web-search --knowledge-base-id foo fails with a clear message rather than silently ignoring the flag.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added explicit check & rejection

@github-actions github-actions Bot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Jul 2, 2026
@github-actions github-actions Bot added size/xl PR size: XL and removed size/xl PR size: XL labels Jul 2, 2026
@agentcore-devx-automation agentcore-devx-automation Bot added the claude-security-reviewing Claude Code /security-review in progress label Jul 2, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automation agentcore-devx-automation Bot removed the claude-security-reviewing Claude Code /security-review in progress label Jul 2, 2026
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 38.64% 14287 / 36967
🔵 Statements 37.94% 15231 / 40135
🔵 Functions 33.15% 2451 / 7393
🔵 Branches 32.33% 9494 / 29364
Generated in workflow #3997 for commit 64a5e96 by the Vitest Coverage Report Action

@tejaskash tejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated correctness + cleanup review (high effort). 10 findings; the first three are potential merge blockers because they cross the CLI↔L3-CDK boundary or reverse a deliberate gating decision. Inline comments below. One additional finding could not be anchored inline because its file is not in this diff:

  • e2e-tests/httpgateway-all-targets.test.ts:290 — the assertion expect(types.has('webSearch')).toBe(true) still expects a webSearch target, but the CLI now writes web-search as targetType: 'connector' (connectorId: 'web-search'). This test will fail; it wasn't updated to the new shape.

name: config.name,
targetType: 'webSearch',
targetType: 'connector',
connectorId: 'web-search',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Blocker — cross-repo contract break] This now writes web-search targets as targetType: 'connector' + connectorId: 'web-search', but the synth/deploy engine lives in the separate @aws/agentcore-cdk L3 construct (pinned ^0.1.0-alpha.19 in src/assets/cdk/package.json), which has no handler for this shape:

  • Its ConnectorIdSchema enum only allows bedrock-knowledge-bases / bedrock-agentic-retrieve, so the project fails schema validation at deploy.
  • Even past that, Gateway.ts routes every targetType === 'connector' into a branch that handles only the two KB connectors and ends in throw new Error('Unknown connectorId "web-search"').
  • The dedicated targetType === 'webSearch' synth branch (InvokeWebSearch grant + domainFilter) is now dead for CLI-authored targets.

Net: agentcore add gateway-target --connector web-search succeeds but the next agentcore deploy fails. The L3 construct must be updated in lockstep (route connectorId: 'web-search' on the connector path) and released before this ships.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updates to CDK PR #298 handles this

Comment thread src/schema/schemas/mcp.ts
'passthrough',
'webSearch',
]);
export type GatewayTargetType = z.infer<typeof GatewayTargetTypeSchema>;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Blocker — backward-compat break] Dropping 'webSearch' from GatewayTargetTypeSchema with no migration means any existing agentcore.json that already contains a targetType: 'webSearch' target (written by a prior/preview CLI) now fails AgentCoreProjectSpecSchema.parse in readProjectSpec. Every command that loads the project — status, deploy, add, remove, export — throws ConfigValidationError with no upgrade path. Consider keeping 'webSearch' accepted on read (normalize to the connector shape on load) even if the CLI no longer writes it.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Web-search was behind ENABLE_GATED_FEATURES and never released. Zero customer impact

.option(
'--connector <id>',
'Connector id (for connector type): bedrock-knowledge-bases or bedrock-agentic-retrieve [non-interactive]'
'Connector id (for connector type): bedrock-knowledge-bases, bedrock-agentic-retrieve, or web-search [non-interactive]'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Blocker — confirm intent] This PR removes all ENABLE_GATED_FEATURES gating on web-search (the isGatedFeaturesEnabled import, the 'not yet available' throws, the hidden: !isGatedFeaturesEnabled() shortcuts, and the TUI 'Coming soon'/disabled state). Commit #1625 (chore: re-gate web search) deliberately re-gated this. Meanwhile KnowledgeBasePrimitive still gates its add command. Given finding #1 (web-search can't currently deploy), ungating it by default looks like an unintended leak rather than a coordinated launch. Please confirm this is intentional.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Intentional. Ungated web-search experience is shipping with this release

Comment thread src/schema/schemas/mcp.ts Outdated
@@ -800,10 +799,10 @@ export const AgentCoreGatewayTargetSchema = z
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Correctness — lost validation] The deleted targetType === 'webSearch' block used to reject knowledgeBaseId, knowledgeBaseIds, httpRuntime, and passthrough on a web-search target. In the new connector branch, the KB-field rejections live only inside the connectorId === BEDROCK_KNOWLEDGE_BASES / BEDROCK_AGENTIC_RETRIEVE guards, and httpRuntime/passthrough aren't rejected at all — so { targetType: 'connector', connectorId: 'web-search', knowledgeBaseId: 'ABCDE12345' } (or a passthrough/httpRuntime block) now passes validation silently and is carried into synth. Add an explicit connectorId === 'web-search' guard that rejects knowledgeBaseId/knowledgeBaseIds (and ideally the sub-configs).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added explicit rejections for passthrough and httpRuntime

const resolvedName =
cliOptions.name ??
(connectorId === 'bedrock-knowledge-bases'
? `kb-${cliOptions.gateway}-${kbRefs[0]}`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Correctness — invalid auto-name reaches deploy] kb-${cliOptions.gateway}-${kbRefs[0]} embeds the raw KB reference. KB names permit underscores (/^[a-zA-Z][a-zA-Z0-9_-]{0,47}$/), but gateway tool names forbid them (ToolNameSchema = /^[a-zA-Z][a-zA-Z0-9-]*$/). The target is written with only z.string().min(1) validation, so --knowledge-base-id my_kb yields kb-gw-my_kb, persists locally, then is rejected server-side at agentcore deploy — a confusing failure long after add succeeded. Long gateway+kb names can also exceed the 128-char limit. Validate the derived name against ToolNameSchema (and sanitize/truncate) before writing. This is newly introduced — the base code required an explicit --name.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added logic to sanitize & truncate name before writing

process.exit(1);
}

const userPassedAnyFlag =

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Correctness — incomplete flag detection] This allowlist omits several real non-interactive flags: --tool-schema-file, --credential-name, --stage, --oauth-client-id/secret/discovery-url/scopes, --tool-filter-path/methods, --schema-s3-account, --description. Invoking with only one of those sets userPassedAnyFlag = false, so in a TTY the command silently drops into the interactive AddFlow (discarding the flags), and in CI requireTTY() throws — instead of validating and erroring on the missing --type. Consider deriving "any flag passed" from the presence of any option key rather than an explicit hand-maintained OR-chain.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replaced OR-chain with a generic check as recommended

if (!cliOptions.name) {
throw new ValidationError('A --name is required for `agentcore add knowledge-base`.');
}
const resolvedName = cliOptions.name ?? `kb-quick-start-${Math.random().toString(36).slice(2, 7)}`;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Correctness — silent data merge on collision] The auto-generated name has no uniqueness check. On a collision with an existing KB, add() finds that KB and routes to appendToExisting(), silently merging the new data sources into an unrelated KB instead of creating the intended new one — with no error surfaced. generateUniqueName(base, existingNames) already exists in tui/utils and the project's KB names are available here; use it to guarantee uniqueness.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated logic to validate no collision with existing name before proceeding

error: '--knowledge-base-id is not applicable for --connector web-search',
};
}
if (options.connector !== 'web-search' && (!options.knowledgeBaseId || options.knowledgeBaseId.length === 0)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Correctness — lost early error] The connector irrelevant list (just below) dropped ['schema','--schema'] and ['schemaS3Account','--schema-s3-account'], both of which were in the deleted WEB_SEARCH_DISALLOWED_OPTIONS. So --connector web-search --schema s3://... no longer gets the clean early CLI error '--schema is not applicable', and a bare --schema-s3-account (no --schema) slips past the CLI entirely. Lower severity since a materialized schemaSource may still trip the schema layer, but the early feedback is gone.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added --schema/--schema-s3-account to the connector irrelevant list


await this.writeProjectSpec(project);

if (!options.json) for (const w of warnings) console.warn(w);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Cleanup — dead code + defunct field] Removing the --gateway wiring here leaves appendConnectorTargets and its only callee upsertRetrieveTarget (~lines 238–278) with no callers (git grep appendConnectorTargets returns only the definition), and the kb.gateway schema field (primitives/knowledge-base.ts) is now write-dead — only read in remove/preview branches that are unreachable for CLI-created projects. noUnusedLocals is false, so nothing flags this. Also: an existing project whose KB already has gateway set no longer gets its connector target re-ensured on a subsequent add (that if (existing.gateway) appendConnectorTargets(...) block was deleted). Delete the dead cluster + field, or confirm the legacy remove-cascade still matters.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

valid. deleted dead code in latest commit

@nborges-aws nborges-aws force-pushed the connectors-updates branch from 7f61b21 to 813f6e0 Compare July 6, 2026 23:31
@github-actions github-actions Bot added size/xl PR size: XL and removed size/xl PR size: XL labels Jul 6, 2026
@agentcore-devx-automation agentcore-devx-automation Bot added the claude-security-reviewing Claude Code /security-review in progress label Jul 6, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automation agentcore-devx-automation Bot removed the claude-security-reviewing Claude Code /security-review in progress label Jul 6, 2026
@nborges-aws nborges-aws force-pushed the connectors-updates branch from 813f6e0 to 64a5e96 Compare July 7, 2026 17:21
@github-actions github-actions Bot added size/xl PR size: XL and removed size/xl PR size: XL labels Jul 7, 2026
@agentcore-devx-automation agentcore-devx-automation Bot added the claude-security-reviewing Claude Code /security-review in progress label Jul 7, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automation agentcore-devx-automation Bot removed the claude-security-reviewing Claude Code /security-review in progress label Jul 7, 2026

@jariy17 jariy17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM just small nits:
▎ few low-pri cleanups from the #1681 review, none are blockers:
▎ - parameterValues/parameterOverrides are optional in the zod schema (mcp.ts:473) but
▎ required in the ConfigurationEntry type — should reconcile those
▎ - no tests for the kb-{gateway}-{kb-id} auto-name path or the bare-command TUI fallback
▎ detection
▎ - the reverse-index KB-walk in status/action.ts is duplicated (~L265 and ~L563), might be
▎ worth extracting

options.type = mappedType;

// --exclude-domains is webSearch-target-only. Reject it on every other target type.
if (mappedType !== 'webSearch' && options.excludeDomains) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: We should consider a cleaner way to do flag validation in our rf.

try {
requireTTY();
const [{ render }, { default: React }, { AddFlow }] = await Promise.all([
import('ink'),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: why are you import within a function?

@jariy17 jariy17 merged commit 694eedc into main Jul 7, 2026
34 checks passed
@jariy17 jariy17 deleted the connectors-updates branch July 7, 2026 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xl PR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants