@redpanda-data/docs-extensions-and-macros 4.17.3 → 5.0.1

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 (31) hide show
  1. package/extension-utils/llms-utils.js +2 -5
  2. package/extensions/algolia-indexer/generate-index.js +99 -54
  3. package/extensions/collect-bloblang-samples.js +6 -6
  4. package/extensions/compute-end-of-life.js +8 -4
  5. package/extensions/conditional-home-redirect.js +90 -0
  6. package/extensions/convert-to-markdown.js +23 -1
  7. package/extensions/find-related-docs.js +3 -3
  8. package/extensions/find-related-labs.js +1 -1
  9. package/extensions/generate-fields-only-pages.js +7 -7
  10. package/extensions/generate-rp-connect-categories.js +5 -5
  11. package/extensions/generate-rp-connect-info.js +6 -6
  12. package/extensions/modify-connect-tag-playbook.js +1 -1
  13. package/extensions/unified-navigation.js +669 -0
  14. package/extensions/unlisted-pages.js +5 -1
  15. package/extensions/unpublish-pages.js +12 -0
  16. package/extensions/version-fetcher/fetch-latest-docker-tag.js +7 -2
  17. package/extensions/version-fetcher/get-latest-connect.js +6 -2
  18. package/extensions/version-fetcher/get-latest-console-version.js +13 -4
  19. package/extensions/version-fetcher/get-latest-redpanda-helm-version-from-operator.js +31 -5
  20. package/extensions/version-fetcher/get-latest-redpanda-version.js +8 -3
  21. package/extensions/version-fetcher/retry-util.js +10 -3
  22. package/extensions/version-fetcher/set-latest-version.js +9 -8
  23. package/macros/rp-connect-components.js +63 -1
  24. package/package.json +3 -1
  25. package/tools/redpanda-connect/AUTOMATION.md +5 -5
  26. package/tools/redpanda-connect/helpers/renderConnectFields.js +1 -1
  27. package/tools/redpanda-connect/pr-summary-formatter.js +4 -4
  28. package/tools/redpanda-connect/rpcn-connector-docs-handler.js +133 -83
  29. package/tools/redpanda-connect/templates/bloblang-functions-overview.hbs +1 -1
  30. package/tools/redpanda-connect/templates/bloblang-methods-overview.hbs +1 -1
  31. package/tools/redpanda-connect/templates/connector.hbs +2 -2
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  module.exports.register = function () {
4
+ const logger = this.getLogger('unpublish-pages-extension');
5
+
4
6
  this.on('documentsConverted', ({ siteCatalog, contentCatalog }) => {
5
7
  // Get all pages that have an `out` property
6
8
  const pages = contentCatalog.getPages((page) => page.out);
@@ -14,6 +16,15 @@ module.exports.register = function () {
14
16
  pageVersion = page.asciidoc?.attributes['page-component-version'];
15
17
  const component = contentCatalog.getComponent(componentName);
16
18
 
19
+ // Debug logging for ANY page with publish-only-during-beta attribute
20
+ if (page.asciidoc?.attributes['publish-only-during-beta']) {
21
+ logger.debug(`Found page with publish-only-during-beta: ${page.src?.relative || page.pub?.url}`);
22
+ logger.debug(` - publish-only-during-beta: ${page.asciidoc?.attributes['publish-only-during-beta']}`);
23
+ logger.debug(` - page-component-version-is-prerelease: ${page.asciidoc?.attributes['page-component-version-is-prerelease']}`);
24
+ logger.debug(` - page-unpublish: ${page.asciidoc?.attributes['page-unpublish']}`);
25
+ logger.debug(` - component: ${componentName}, version: ${pageVersion}`);
26
+ }
27
+
17
28
  // Check the conditions for unpublishing the page
18
29
  const shouldUnpublish = (
19
30
  page.asciidoc?.attributes['page-unpublish'] ||
@@ -24,6 +35,7 @@ module.exports.register = function () {
24
35
 
25
36
  // Unpublish the shouldUnpublish pages
26
37
  if (shouldUnpublish) {
38
+ logger.info(`Unpublishing page: ${page.src?.relative || page.pub?.url}`);
27
39
  siteCatalog.unpublishedPages.push(page.pub.url)
28
40
  delete page.out;
29
41
  }
@@ -6,9 +6,10 @@
6
6
  *
7
7
  * @param {string} dockerNamespace - The Docker Hub namespace (organization or username)
8
8
  * @param {string} dockerRepo - The repository name on Docker Hub
9
+ * @param {Object} logger - Optional Antora logger instance for logging
9
10
  * @returns {Promise<{ latestStableRelease: string|null, latestBetaRelease: string|null }>}
10
11
  */
11
- module.exports = async (dockerNamespace, dockerRepo) => {
12
+ module.exports = async (dockerNamespace, dockerRepo, logger = null) => {
12
13
  const { default: fetch } = await import('node-fetch');
13
14
 
14
15
  try {
@@ -64,7 +65,11 @@ module.exports = async (dockerNamespace, dockerRepo) => {
64
65
  };
65
66
 
66
67
  } catch (error) {
67
- console.error('Error fetching Docker tags:', error);
68
+ if (logger) {
69
+ logger.error('Error fetching Docker tags:', error);
70
+ } else {
71
+ console.error('Error fetching Docker tags:', error);
72
+ }
68
73
  return {
69
74
  latestStableRelease: null,
70
75
  latestBetaRelease: null
@@ -1,10 +1,14 @@
1
- module.exports = async (github, owner, repo) => {
1
+ module.exports = async (github, owner, repo, logger = null) => {
2
2
 
3
3
  try {
4
4
  const release = await github.rest.repos.getLatestRelease({ owner, repo });
5
5
  return release.data.tag_name
6
6
  } catch (error) {
7
- console.error(error);
7
+ if (logger) {
8
+ logger.error(error);
9
+ } else {
10
+ console.error(error);
11
+ }
8
12
  return null;
9
13
  }
10
14
  };
@@ -1,6 +1,6 @@
1
1
  const { retryWithBackoff, isRetryableGitHubError } = require('./retry-util');
2
2
 
3
- module.exports = async (github, owner, repo) => {
3
+ module.exports = async (github, owner, repo, logger = null) => {
4
4
  const semver = require('semver');
5
5
 
6
6
  return retryWithBackoff(
@@ -29,7 +29,11 @@ module.exports = async (github, owner, repo) => {
29
29
  latestBetaRelease: latestBetaReleaseVersion || null
30
30
  };
31
31
  } else {
32
- console.log("No valid semver releases found.");
32
+ if (logger) {
33
+ logger.warn("No valid semver releases found.");
34
+ } else {
35
+ console.log("No valid semver releases found.");
36
+ }
33
37
  return { latestStableRelease: null, latestBetaRelease: null };
34
38
  }
35
39
  },
@@ -38,9 +42,14 @@ module.exports = async (github, owner, repo) => {
38
42
  initialDelay: 1000,
39
43
  shouldRetry: isRetryableGitHubError,
40
44
  operationName: `Fetch Console version from ${owner}/${repo}`
41
- }
45
+ },
46
+ logger
42
47
  ).catch(error => {
43
- console.error('Failed to fetch release information after retries:', error);
48
+ if (logger) {
49
+ logger.error('Failed to fetch release information after retries:', error);
50
+ } else {
51
+ console.error('Failed to fetch release information after retries:', error);
52
+ }
44
53
  return { latestStableRelease: null, latestBetaRelease: null };
45
54
  });
46
55
  };
@@ -8,9 +8,10 @@
8
8
  * @param {string} repo - The repository name (redpanda-operator).
9
9
  * @param {string} stableDockerTag - The stable docker tag in format v<major>.<minor>.<patch>.
10
10
  * @param {string} betaDockerTag - Optional beta docker tag in format v<major>.<minor>.<patch>-beta.
11
+ * @param {Object} logger - Optional Antora logger instance for logging
11
12
  * @returns {Promise<{ latestStableRelease: string|null, latestBetaRelease: string|null }>}
12
13
  */
13
- module.exports = async (github, owner, repo, stableDockerTag, betaDockerTag) => {
14
+ module.exports = async (github, owner, repo, stableDockerTag, betaDockerTag, logger = null) => {
14
15
  const yaml = require('js-yaml');
15
16
  const path = 'charts/redpanda/chart/Chart.yaml';
16
17
 
@@ -29,7 +30,11 @@ module.exports = async (github, owner, repo, stableDockerTag, betaDockerTag) =>
29
30
  const versionMatch = dockerTag.match(/^v(\d+)\.(\d+)(?:\.(\d+))?(?:-beta.*)?$/);
30
31
 
31
32
  if (!versionMatch) {
32
- console.error(`Invalid docker tag format: ${dockerTag}`);
33
+ if (logger) {
34
+ logger.error(`Invalid docker tag format: ${dockerTag}`);
35
+ } else {
36
+ console.error(`Invalid docker tag format: ${dockerTag}`);
37
+ }
33
38
  return null;
34
39
  }
35
40
 
@@ -55,11 +60,28 @@ module.exports = async (github, owner, repo, stableDockerTag, betaDockerTag) =>
55
60
  const version = chartYaml.version || null;
56
61
  return version;
57
62
  } catch (error) {
58
- console.error(`Failed to fetch Chart.yaml for branch ${branchName}:`, error.message);
63
+ if (error.status === 404) {
64
+ // Branch doesn't exist yet - this is expected for unreleased versions
65
+ if (logger) {
66
+ logger.warn(`Fetched operator ${dockerTag} from Docker Hub but branch ${branchName} not found in GitHub (source may not be released yet)`);
67
+ } else {
68
+ console.warn(`Fetched operator ${dockerTag} from Docker Hub but branch ${branchName} not found in GitHub (source may not be released yet)`);
69
+ }
70
+ } else {
71
+ if (logger) {
72
+ logger.error(`Failed to fetch Chart.yaml for branch ${branchName}:`, error.message);
73
+ } else {
74
+ console.error(`Failed to fetch Chart.yaml for branch ${branchName}:`, error.message);
75
+ }
76
+ }
59
77
  return null;
60
78
  }
61
79
  } catch (error) {
62
- console.error(`Error processing docker tag ${dockerTag}:`, error.message);
80
+ if (logger) {
81
+ logger.error(`Error processing docker tag ${dockerTag}:`, error.message);
82
+ } else {
83
+ console.error(`Error processing docker tag ${dockerTag}:`, error.message);
84
+ }
63
85
  return null;
64
86
  }
65
87
  };
@@ -75,7 +97,11 @@ module.exports = async (github, owner, repo, stableDockerTag, betaDockerTag) =>
75
97
  latestBetaRelease: betaChartVersion
76
98
  };
77
99
  } catch (error) {
78
- console.error('Failed to fetch chart versions:', error.message);
100
+ if (logger) {
101
+ logger.error('Failed to fetch chart versions:', error.message);
102
+ } else {
103
+ console.error('Failed to fetch chart versions:', error.message);
104
+ }
79
105
  return {
80
106
  latestStableRelease: null,
81
107
  latestBetaRelease: null
@@ -1,6 +1,6 @@
1
1
  const { retryWithBackoff, isRetryableGitHubError } = require('./retry-util');
2
2
 
3
- module.exports = async (github, owner, repo) => {
3
+ module.exports = async (github, owner, repo, logger = null) => {
4
4
  const semver = require('semver');
5
5
 
6
6
  return retryWithBackoff(
@@ -67,9 +67,14 @@ module.exports = async (github, owner, repo) => {
67
67
  initialDelay: 1000,
68
68
  shouldRetry: isRetryableGitHubError,
69
69
  operationName: `Fetch Redpanda version from ${owner}/${repo}`
70
- }
70
+ },
71
+ logger
71
72
  ).catch(error => {
72
- console.error('Failed to fetch Redpanda release information after retries:', error);
73
+ if (logger) {
74
+ logger.error('Failed to fetch Redpanda release information after retries:', error);
75
+ } else {
76
+ console.error('Failed to fetch Redpanda release information after retries:', error);
77
+ }
73
78
  return { latestRedpandaRelease: null, latestRcRelease: null };
74
79
  });
75
80
  };
@@ -8,9 +8,10 @@
8
8
  * @param {number} options.maxDelay - Maximum delay in ms (default: 10000)
9
9
  * @param {Function} options.shouldRetry - Function to determine if error is retryable (default: all errors)
10
10
  * @param {string} options.operationName - Name for logging
11
+ * @param {Object} logger - Optional Antora logger instance for logging
11
12
  * @returns {Promise<*>} Result of the function
12
13
  */
13
- async function retryWithBackoff(fn, options = {}) {
14
+ async function retryWithBackoff(fn, options = {}, logger = null) {
14
15
  const {
15
16
  maxRetries = 3,
16
17
  initialDelay = 1000,
@@ -37,8 +38,14 @@ async function retryWithBackoff(fn, options = {}) {
37
38
  const jitter = Math.random() * 0.3 * baseDelay; // Add up to 30% jitter
38
39
  const delay = Math.floor(baseDelay + jitter);
39
40
 
40
- console.error(`⚠️ ${operationName} failed (attempt ${attempt + 1}/${maxRetries + 1}): ${error.message}`);
41
- console.error(` Retrying in ${delay}ms...`);
41
+ // Log retry attempt using logger if available, otherwise fall back to console
42
+ if (logger) {
43
+ logger.warn(`${operationName} failed (attempt ${attempt + 1}/${maxRetries + 1}): ${error.message}`);
44
+ logger.warn(`Retrying in ${delay}ms...`);
45
+ } else {
46
+ console.error(`⚠️ ${operationName} failed (attempt ${attempt + 1}/${maxRetries + 1}): ${error.message}`);
47
+ console.error(` Retrying in ${delay}ms...`);
48
+ }
42
49
 
43
50
  // Wait before retrying
44
51
  await new Promise(resolve => setTimeout(resolve, delay));
@@ -37,10 +37,10 @@ module.exports.register = function ({ config }) {
37
37
  latestOperatorResult,
38
38
  latestConnectResult,
39
39
  ] = await Promise.allSettled([
40
- GetLatestRedpandaVersion(github, owner, 'redpanda'),
41
- GetLatestDockerTag(dockerNamespace, 'console'),
42
- GetLatestDockerTag(dockerNamespace, 'redpanda-operator'),
43
- GetLatestConnectVersion(github, owner, 'connect'),
40
+ GetLatestRedpandaVersion(github, owner, 'redpanda', logger),
41
+ GetLatestDockerTag(dockerNamespace, 'console', logger),
42
+ GetLatestDockerTag(dockerNamespace, 'redpanda-operator', logger),
43
+ GetLatestConnectVersion(github, owner, 'connect', logger),
44
44
  ]);
45
45
 
46
46
  // Get the Helm chart version after we have the operator version (for both stable and beta)
@@ -49,11 +49,12 @@ module.exports.register = function ({ config }) {
49
49
  if (latestOperatorResult.status === 'fulfilled') {
50
50
  try {
51
51
  const helmChartVersions = await GetLatestHelmChartVersionFromOperator(
52
- github,
53
- owner,
54
- 'redpanda-operator',
52
+ github,
53
+ owner,
54
+ 'redpanda-operator',
55
55
  latestOperatorResult.value?.latestStableRelease,
56
- latestOperatorResult.value?.latestBetaRelease
56
+ latestOperatorResult.value?.latestBetaRelease,
57
+ logger
57
58
  );
58
59
 
59
60
  latestHelmChartResult = {
@@ -1,4 +1,6 @@
1
1
  'use strict';
2
+ const { posix: path } = require('path')
3
+
2
4
  /**
3
5
  * Registers macros for use in Redpanda Connect contexts in the Redpanda documentation.
4
6
  * @param {Registry} registry - The Antora registry where this block macro is registered.
@@ -1024,7 +1026,32 @@ module.exports.register = function (registry, context) {
1024
1026
  // Filter for the specific connector by name
1025
1027
  const componentRows = csvData.data.filter(row => row.connector.trim().toLowerCase() === name.trim().toLowerCase());
1026
1028
  if (componentRows.length === 0) {
1027
- console.error(`No data found for connector: ${name}`);
1029
+ console.warn(`No CSV data found for connector: ${name}. The connector may have been removed or renamed.`);
1030
+ // Build link to release notes using content catalog for proper URL resolution
1031
+ const isCloud = attributes['env-cloud'] !== undefined;
1032
+ let whatsNewUrl = isCloud
1033
+ ? '/cloud-data-platform/get-started/whats-new-cloud/'
1034
+ : '/connect/get-started/whats-new/';
1035
+
1036
+ // Try to resolve the page from the content catalog for accurate URLs
1037
+ if (context.contentCatalog && context.file) {
1038
+ const pageSpec = isCloud
1039
+ ? 'cloud-data-platform:get-started:whats-new-cloud.adoc'
1040
+ : 'connect:get-started:whats-new.adoc';
1041
+ const page = context.contentCatalog.resolvePage(pageSpec, context.file.src);
1042
+ if (page) {
1043
+ // For directory-style URLs like /a/b/c/, use the URL directly as the base
1044
+ whatsNewUrl = path.relative(context.file.pub.url, page.pub.url);
1045
+ }
1046
+ }
1047
+
1048
+ // Return a notice for removed/unknown connectors
1049
+ return self.createBlock(parent, 'pass', `
1050
+ <div class="metadata-block">
1051
+ <div class="metadata-content">
1052
+ <p><strong>Available in:</strong> <em>This connector is no longer available. Check the <a href="${whatsNewUrl}">release notes</a> for migration guidance.</em></p>
1053
+ </div>
1054
+ </div>`);
1028
1055
  }
1029
1056
  // Process types and metadata from CSV
1030
1057
  const types = componentRows.map(row => ({
@@ -1041,6 +1068,21 @@ module.exports.register = function (registry, context) {
1041
1068
  const [currentType] = sortedTypes.splice(currentTypeIndex, 1);
1042
1069
  sortedTypes.unshift(currentType);
1043
1070
  }
1071
+
1072
+ // Set context-switcher attribute for UI template to render compact dropdown in sticky bar
1073
+ if (sortedTypes.length > 1) {
1074
+ const contextSwitcherData = {};
1075
+ sortedTypes.forEach(typeObj => {
1076
+ const link = (component === 'Cloud' && typeObj.redpandaCloudUrl) || typeObj.redpandaConnectUrl;
1077
+ contextSwitcherData[typeObj.type.toLowerCase()] = {
1078
+ name: capitalize(typeObj.type),
1079
+ to: link
1080
+ };
1081
+ });
1082
+ // Set as page attribute (not document attribute) so it's accessible in UI template
1083
+ attributes['page-context-switcher'] = JSON.stringify(contextSwitcherData);
1084
+ parent.getDocument().setAttribute('page-context-switcher', JSON.stringify(contextSwitcherData));
1085
+ }
1044
1086
  // Check if the component requires an Enterprise license (based on support level)
1045
1087
  let enterpriseLicenseInfo = '';
1046
1088
  if (component !== 'Cloud') {
@@ -1051,6 +1093,26 @@ module.exports.register = function (registry, context) {
1051
1093
  }
1052
1094
  }
1053
1095
  const isCloudSupported = componentRows.some(row => row.is_cloud_supported === 'y');
1096
+
1097
+ // Set availability attributes for UI template badges with URLs
1098
+ if (isCloudSupported) {
1099
+ const cloudUrl = sortedTypes[0].redpandaCloudUrl;
1100
+ const connectUrl = sortedTypes[0].redpandaConnectUrl;
1101
+
1102
+ if (component === 'Connect' && cloudUrl) {
1103
+ // Viewing Self-Managed, but also available in Cloud - show Cloud badge with link
1104
+ parent.getDocument().setAttribute('cloud-available', 'true');
1105
+ parent.getDocument().setAttribute('cloud-available-url', cloudUrl);
1106
+ } else if (component === 'Cloud' && connectUrl) {
1107
+ // Viewing Cloud, but also available in Self-Managed - show Self-Managed badge with link
1108
+ parent.getDocument().setAttribute('self-managed-available', 'true');
1109
+ parent.getDocument().setAttribute('self-managed-available-url', connectUrl);
1110
+ }
1111
+ } else if (!isCloudSupported && component === 'Connect') {
1112
+ // Only available in Self-Managed - show "Self-Managed Only" badge (no link)
1113
+ parent.getDocument().setAttribute('self-managed-only', 'true');
1114
+ }
1115
+
1054
1116
  let availableInInfo = '';
1055
1117
 
1056
1118
  if (isCloudSupported) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redpanda-data/docs-extensions-and-macros",
3
- "version": "4.17.3",
3
+ "version": "5.0.1",
4
4
  "description": "Antora extensions and macros developed for Redpanda documentation.",
5
5
  "keywords": [
6
6
  "antora",
@@ -77,6 +77,8 @@
77
77
  "./extensions/algolia-indexer/index": "./extensions/algolia-indexer/index.js",
78
78
  "./extensions/aggregate-terms": "./extensions/aggregate-terms.js",
79
79
  "./extensions/resolve-xrefs-in-attachments": "./extensions/resolve-xrefs-in-attachments.js",
80
+ "./extensions/unified-navigation": "./extensions/unified-navigation.js",
81
+ "./extensions/conditional-home-redirect": "./extensions/conditional-home-redirect.js",
80
82
  "./macros/glossary": "./macros/glossary.js",
81
83
  "./macros/rp-connect-components": "./macros/rp-connect-components.js",
82
84
  "./macros/config-ref": "./macros/config-ref.js",
@@ -306,14 +306,14 @@ Brief summary of what this connector does.
306
306
  ====
307
307
  Common config::
308
308
  +
309
- include::redpanda-connect:components:partial$examples/inputs/connector_name.adoc[tag=common]
309
+ include::connect:components:partial$examples/inputs/connector_name.adoc[tag=common]
310
310
 
311
311
  Advanced config::
312
312
  +
313
- include::redpanda-connect:components:partial$examples/inputs/connector_name.adoc[tag=advanced]
313
+ include::connect:components:partial$examples/inputs/connector_name.adoc[tag=advanced]
314
314
  ====
315
315
 
316
- include::redpanda-connect:components:partial$fields/inputs/connector_name.adoc[]
316
+ include::connect:components:partial$fields/inputs/connector_name.adoc[]
317
317
 
318
318
  // end::single-source[]
319
319
  ```
@@ -517,12 +517,12 @@ _No changes in this release_
517
517
 
518
518
  **For connectors in pages:**
519
519
  \```asciidoc
520
- include::redpanda-connect:components:page$type/name.adoc[tag=single-source]
520
+ include::connect:components:page$type/name.adoc[tag=single-source]
521
521
  \```
522
522
 
523
523
  **For cloud-only connectors (in partials):**
524
524
  \```asciidoc
525
- include::redpanda-connect:components:partial$components/cloud-only/type/name.adoc[tag=single-source]
525
+ include::connect:components:partial$components/cloud-only/type/name.adoc[tag=single-source]
526
526
  \```
527
527
 
528
528
  ### 🔧 Cgo Requirements
@@ -79,7 +79,7 @@ module.exports = function renderConnectFields(children, prefix = '') {
79
79
  block += `${desc}\n\n`;
80
80
  }
81
81
  if (child.is_secret) {
82
- block += `include::redpanda-connect:components:partial$secret_warning.adoc[]\n\n`;
82
+ block += `include::connect:components:partial$secret_warning.adoc[]\n\n`;
83
83
  }
84
84
  if (child.version) {
85
85
  block += `ifndef::env-cloud[]\nRequires version ${child.version} or later.\nendif::[]\n\n`;
@@ -101,12 +101,12 @@ function renderBloblangChanges(data, includeVersion = false) {
101
101
  lines.push('');
102
102
  lines.push('For methods, find the appropriate category section in `methods.adoc` and add:');
103
103
  lines.push('```asciidoc');
104
- lines.push('include::redpanda-connect:partial$bloblang-methods/method_name.adoc[leveloffset=+2]');
104
+ lines.push('include::connect:partial$bloblang-methods/method_name.adoc[leveloffset=+2]');
105
105
  lines.push('```');
106
106
  lines.push('');
107
107
  lines.push('For functions, add to the Functions section in `functions.adoc`:');
108
108
  lines.push('```asciidoc');
109
- lines.push('include::redpanda-connect:partial$bloblang-functions/function_name.adoc[leveloffset=+2]');
109
+ lines.push('include::connect:partial$bloblang-functions/function_name.adoc[leveloffset=+2]');
110
110
  lines.push('```');
111
111
  lines.push('');
112
112
  lines.push('**Note:** Partials are auto-generated. Includes must be added manually in alphabetical order within their section.');
@@ -700,7 +700,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
700
700
  lines.push('```asciidoc');
701
701
  lines.push('= Connector Name');
702
702
  lines.push('');
703
- lines.push('include::redpanda-connect:components:page$type/connector-name.adoc[tag=single-source]');
703
+ lines.push('include::connect:components:page$type/connector-name.adoc[tag=single-source]');
704
704
  lines.push('```');
705
705
  lines.push('');
706
706
  }
@@ -710,7 +710,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
710
710
  lines.push('```asciidoc');
711
711
  lines.push('= Connector Name');
712
712
  lines.push('');
713
- lines.push('include::redpanda-connect:components:partial$components/cloud-only/type/connector-name.adoc[tag=single-source]');
713
+ lines.push('include::connect:components:partial$components/cloud-only/type/connector-name.adoc[tag=single-source]');
714
714
  lines.push('```');
715
715
  lines.push('');
716
716
  }