From 59400372cf24ff7da163755a5472989fcf32fefc Mon Sep 17 00:00:00 2001 From: Alfonso Noriega Date: Tue, 17 Mar 2026 11:07:54 +0100 Subject: [PATCH 1/2] Add admin hoted app local spec --- .../models/extensions/extension-instance.ts | 5 ++- .../models/extensions/load-specifications.ts | 2 ++ .../cli/models/extensions/specification.ts | 2 +- .../models/extensions/specifications/admin.ts | 36 +++++++++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 packages/app/src/cli/models/extensions/specifications/admin.ts diff --git a/packages/app/src/cli/models/extensions/extension-instance.ts b/packages/app/src/cli/models/extensions/extension-instance.ts index 898079bdf9f..ed1894fb474 100644 --- a/packages/app/src/cli/models/extensions/extension-instance.ts +++ b/packages/app/src/cli/models/extensions/extension-instance.ts @@ -11,6 +11,7 @@ import {PrivacyComplianceWebhooksSpecIdentifier} from './specifications/app_conf import {WebhooksSpecIdentifier} from './specifications/app_config_webhook.js' import {WebhookSubscriptionSpecIdentifier} from './specifications/app_config_webhook_subscription.js' import {EventsSpecIdentifier} from './specifications/app_config_events.js' +import {AdminSpecIdentifier} from './specifications/admin.js' import {ExtensionBuildOptions, bundleFunctionExtension} from '../../services/build/extension.js' import {bundleThemeExtension} from '../../services/extensions/bundle.js' import {Identifiers} from '../app/identifiers.js' @@ -41,9 +42,9 @@ export const CONFIG_EXTENSION_IDS: string[] = [ WebhookSubscriptionSpecIdentifier, WebhooksSpecIdentifier, EventsSpecIdentifier, + AdminSpecIdentifier, // Hardcoded identifiers that don't exist locally. 'data', - 'admin', ] /** @@ -541,6 +542,8 @@ export class ExtensionInstance( spec: Pick< CreateExtensionSpecType, - 'identifier' | 'appModuleFeatures' | 'buildConfig' | 'uidStrategy' + 'identifier' | 'appModuleFeatures' | 'clientSteps' | 'buildConfig' | 'uidStrategy' >, ) { return createExtensionSpecification({ diff --git a/packages/app/src/cli/models/extensions/specifications/admin.ts b/packages/app/src/cli/models/extensions/specifications/admin.ts new file mode 100644 index 00000000000..888b1fd5bc2 --- /dev/null +++ b/packages/app/src/cli/models/extensions/specifications/admin.ts @@ -0,0 +1,36 @@ +import {createContractBasedModuleSpecification} from '../specification.js' + +export const AdminSpecIdentifier = 'admin' + +const adminSpecificationSpec = createContractBasedModuleSpecification({ + identifier: 'admin', + uidStrategy: 'single', + buildConfig: { + mode: 'copy_files', + filePatterns: [], + }, + clientSteps: [ + { + lifecycle: 'deploy', + steps: [ + { + id: 'hosted_app_copy_files', + name: 'Hosted App Copy Files', + type: 'include_assets', + config: { + generateManifest: true, + inclusions: [ + { + type: 'configKey', + key: 'admin.static_root', + }, + ], + }, + }, + ], + }, + ], + appModuleFeatures: () => [], +}) + +export default adminSpecificationSpec From 0de775d9db028b047c794928349abf2dd7b68a0a Mon Sep 17 00:00:00 2001 From: Alfonso Noriega Date: Tue, 17 Mar 2026 16:51:01 +0100 Subject: [PATCH 2/2] Fix channel_config uid strategy to use single mode for consistent output folder Co-Authored-By: Claude Sonnet 4.6 --- packages/app/src/cli/models/extensions/specifications/channel.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/app/src/cli/models/extensions/specifications/channel.ts b/packages/app/src/cli/models/extensions/specifications/channel.ts index abe89c4a4e0..a52710c4f4c 100644 --- a/packages/app/src/cli/models/extensions/specifications/channel.ts +++ b/packages/app/src/cli/models/extensions/specifications/channel.ts @@ -6,6 +6,7 @@ const FILE_EXTENSIONS = ['json', 'toml', 'yaml', 'yml', 'svg'] const channelSpecificationSpec = createContractBasedModuleSpecification({ identifier: 'channel_config', + uidStrategy: 'single', buildConfig: { mode: 'copy_files', filePatterns: FILE_EXTENSIONS.map((ext) => joinPath(SUBDIRECTORY_NAME, '**', `*.${ext}`)),