From 3ed731390f75d1cf95eaf8d68541d025428f2176 Mon Sep 17 00:00:00 2001 From: Catherine Fu Date: Wed, 15 Apr 2026 18:47:38 -0400 Subject: [PATCH 1/2] Add order_attribution_config extension specification Register the order_attribution_config extension type in the CLI so developers can generate and deploy this extension type. Follows the same pattern as channel_config with copy_files build config for SVG icons in the icons/ subdirectory. Closes https://github.com/shop/issues-multi-channel-management/issues/3127 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../models/extensions/load-specifications.ts | 2 + .../order_attribution_config.ts | 40 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 packages/app/src/cli/models/extensions/specifications/order_attribution_config.ts diff --git a/packages/app/src/cli/models/extensions/load-specifications.ts b/packages/app/src/cli/models/extensions/load-specifications.ts index b2f4c7d3a2f..85d255daff5 100644 --- a/packages/app/src/cli/models/extensions/load-specifications.ts +++ b/packages/app/src/cli/models/extensions/load-specifications.ts @@ -27,6 +27,7 @@ import uiExtensionSpec from './specifications/ui_extension.js' import webPixelSpec from './specifications/web_pixel_extension.js' import editorExtensionCollectionSpecification from './specifications/editor_extension_collection.js' import channelSpecificationSpec from './specifications/channel.js' +import orderAttributionConfigSpec from './specifications/order_attribution_config.js' import adminSpecificationSpec from './specifications/admin.js' const SORTED_CONFIGURATION_SPEC_IDENTIFIERS = [ @@ -80,6 +81,7 @@ function loadSpecifications() { webPixelSpec, editorExtensionCollectionSpecification, channelSpecificationSpec, + orderAttributionConfigSpec, ] return [...configModuleSpecs, ...moduleSpecs] as ExtensionSpecification[] diff --git a/packages/app/src/cli/models/extensions/specifications/order_attribution_config.ts b/packages/app/src/cli/models/extensions/specifications/order_attribution_config.ts new file mode 100644 index 00000000000..04732f13b0b --- /dev/null +++ b/packages/app/src/cli/models/extensions/specifications/order_attribution_config.ts @@ -0,0 +1,40 @@ +import {createContractBasedModuleSpecification} from '../specification.js' +import {joinPath} from '@shopify/cli-kit/node/path' + +const ICONS_SUBDIRECTORY = 'icons' +const FILE_EXTENSIONS = ['svg'] + +const orderAttributionConfigSpec = createContractBasedModuleSpecification({ + identifier: 'order_attribution_config', + uidStrategy: 'single', + experience: 'extension', + buildConfig: { + mode: 'copy_files', + filePatterns: FILE_EXTENSIONS.map((ext) => joinPath(ICONS_SUBDIRECTORY, '**', `*.${ext}`)), + }, + clientSteps: [ + { + lifecycle: 'deploy', + steps: [ + { + id: 'copy-files', + name: 'Copy Files', + type: 'include_assets', + config: { + inclusions: [ + { + type: 'pattern', + baseDir: ICONS_SUBDIRECTORY, + destination: ICONS_SUBDIRECTORY, + include: FILE_EXTENSIONS.map((ext) => `**/*.${ext}`), + }, + ], + }, + }, + ], + }, + ], + appModuleFeatures: () => [], +}) + +export default orderAttributionConfigSpec From 662285d3a5ef1ede0e61f7380a037b3814bdbe86 Mon Sep 17 00:00:00 2001 From: Catherine Fu Date: Thu, 16 Apr 2026 13:04:21 -0400 Subject: [PATCH 2/2] Remove buildConfig in favor of clientSteps for order_attribution_config Co-Authored-By: Claude Opus 4.6 (1M context) --- .../extensions/specifications/order_attribution_config.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/app/src/cli/models/extensions/specifications/order_attribution_config.ts b/packages/app/src/cli/models/extensions/specifications/order_attribution_config.ts index 04732f13b0b..d2af493e274 100644 --- a/packages/app/src/cli/models/extensions/specifications/order_attribution_config.ts +++ b/packages/app/src/cli/models/extensions/specifications/order_attribution_config.ts @@ -1,5 +1,4 @@ import {createContractBasedModuleSpecification} from '../specification.js' -import {joinPath} from '@shopify/cli-kit/node/path' const ICONS_SUBDIRECTORY = 'icons' const FILE_EXTENSIONS = ['svg'] @@ -8,10 +7,6 @@ const orderAttributionConfigSpec = createContractBasedModuleSpecification({ identifier: 'order_attribution_config', uidStrategy: 'single', experience: 'extension', - buildConfig: { - mode: 'copy_files', - filePatterns: FILE_EXTENSIONS.map((ext) => joinPath(ICONS_SUBDIRECTORY, '**', `*.${ext}`)), - }, clientSteps: [ { lifecycle: 'deploy',