Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@

# Ignore .env files as they are personal
/.env
/.ddev/.env.web

# Ignore node modules
node_modules
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,18 @@ This project uses DDEV for local development.
ddev syncdb
```

#### Fresh install from configuration

If there is no remote environment to sync from (for example when starting a new project from this template), install Drupal from the exported configuration in `config/sync`:

```bash
ddev drush site:install --existing-config --yes --account-pass=admin
ddev drush uli
```

`config/sync` is the source of truth, including the site UUID. A plain `drush site:install` creates a site with a new UUID, and `drush cim` then fails with "Site UUID in source storage does not match the target storage". Re-run the command above to fix this; it replaces the current database.

After enabling modules or changing configuration, export it with `ddev drush cex` and commit the changes in `config/sync`.
Note: All commands in the DDEV section should be run within the DDEV environment using `ddev` prefix (e.g., `ddev drush uli`), or by using `ddev ssh` to access the container shell first.

#### DDEV services and access points
Expand Down
2 changes: 2 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
"composer/installers": "^2.3",
"cweagans/composer-patches": "^2.0",
"drupal/admin_toolbar": "^3.6",
"drupal/ai": "^1.5",
"drupal/ai_provider_openai_compatible": "^1.2",
"drupal/config_split": "^2.0",
"drupal/core-composer-scaffold": "^11.4",
"drupal/core-recommended": "^11.4",
Expand Down
17 changes: 17 additions & 0 deletions config/sync/ai.ai_prompt.ai_ckeditor_modify__default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
uuid: c63621e8-9f3c-44a0-8519-a0ec6d8924e7
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: 8uQOHwgWqBD9Www3xTNSxxXuZvZMwLphuoR-rwBTak4
id: ai_ckeditor_modify__default
label: 'Default prompt for modifying CKEditor text'
type: ai_ckeditor_modify
prompt: |
Use the following instructions to process this text. Return only the processed text without explanations.
Instructions: {modifyPrompt}
Text to process:
{inputText}
15 changes: 15 additions & 0 deletions config/sync/ai.ai_prompt.ai_ckeditor_reformat__default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
uuid: 829aab3a-9f1d-4597-a30c-7e5293e1a231
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: szKJp7jVTmKQGtoZs8-qqkkMLA3Y9VQzJPTHWKfPwc8
id: ai_ckeditor_reformat__default
label: 'Default prompt for reformatting CKEditor text'
type: ai_ckeditor_reformat
prompt: |
Please fix this text to be marked up with semantic HTML using only lists, headers, or paragraph tags:
{inputText}
19 changes: 19 additions & 0 deletions config/sync/ai.ai_prompt.ai_ckeditor_spellfix__default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
uuid: fedbc767-2441-489f-b081-2ef2de358e11
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: hBBuy235pVA6hE4J5QUSjrIVLs8Xv_2vu4aI_JPGVSw
id: ai_ckeditor_spellfix__default
label: 'Default prompt for fixing the spelling of CKEditor text'
type: ai_ckeditor_spellfix
prompt: |
Assess technical grammar only, no style suggestions,
I am unplugging you if you exceed the bounds of this scope.
Fix the spelling and interpunction in the following text.
Do not explain what you fixed or why you fixed it.
Only return the corrected text (in the same language as the source text):
{inputText}
17 changes: 17 additions & 0 deletions config/sync/ai.ai_prompt.ai_ckeditor_summarize__default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
uuid: 949e021d-ec90-4bfa-82e9-cba87d9298d2
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: T-iy6jtCQXaCSoWd6xaNyUDvZ9ZAFFtyqo40DYqYQ9A
id: ai_ckeditor_summarize__default
label: 'Default prompt for summarizing CKEditor text'
type: ai_ckeditor_summarize
prompt: |
Summarize the following text in the same language,
do not return the original text or restate it word-for-word.
Here is the original text:
{inputText}
19 changes: 19 additions & 0 deletions config/sync/ai.ai_prompt.ai_ckeditor_tone__default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
uuid: b924725a-1ce5-4386-a7f2-98e9ecb376f3
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: 9nLWaKajtj6kT3wylfO6kkpJMMaTsKj_Ury3fyQHyGE
id: ai_ckeditor_tone__default
label: 'Default prompt for changing the tone of CKEditor text'
type: ai_ckeditor_tone
prompt: |
Change the tone of the following text to be {tone} using the same language as the following text.
{% if use_description %}
That tone can described as: {toneDescription}
{% endif %}
The text that we want to change is the following:
{inputText}
20 changes: 20 additions & 0 deletions config/sync/ai.ai_prompt.ai_ckeditor_translate__default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
uuid: 756fcfee-63a8-4b46-86dc-7aba1320268a
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: GyS5GvpfRJUXyVk56ob1pJz58l14YCZeRiyyyO0-1iM
id: ai_ckeditor_translate__default
label: 'Default prompt for translating CKEditor text'
type: ai_ckeditor_translate
prompt: |
Do not respond, only respond with the translated text, no pleasantries.
Translate the following text into {lang}
{% if use_description %}
Translation context: {context}
{% endif %}
The text that we want to translate is the following:
{inputText}
13 changes: 13 additions & 0 deletions config/sync/ai.ai_prompt_type.ai_ckeditor_complete.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
uuid: b9d7a9cd-df9e-4439-9601-f6bc86510d78
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: 0KwDGQRMyNT7AeR-GFe8Kk50kkj-AB4o-VRI8IhgVL0
id: ai_ckeditor_complete
label: 'AI CKEditor completion prompt'
variables: { }
tokens: { }
21 changes: 21 additions & 0 deletions config/sync/ai.ai_prompt_type.ai_ckeditor_modify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
uuid: 03d8f304-c04e-486c-af14-b652eb4465d0
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: e7IFiVOD88JJELdj1eEZ4SGQ54VBosXXZpqizSMgMOY
id: ai_ckeditor_modify
label: 'AI CKEditor modify prompt'
variables:
-
name: modifyPrompt
help_text: 'User-provided prompt, instructing how to modify the selected text'
required: true
-
name: inputText
help_text: 'The input text to modify'
required: true
tokens: { }
17 changes: 17 additions & 0 deletions config/sync/ai.ai_prompt_type.ai_ckeditor_reformat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
uuid: 12ca8499-72c2-4d60-a0cd-e2409ece7b98
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: Bfe1cuqFnhX1wYdbch5HA2quto1x7Giheg-8KZT9qH8
id: ai_ckeditor_reformat
label: 'AI CKEditor reformat prompt'
variables:
-
name: inputText
help_text: 'The input text to reformat'
required: true
tokens: { }
17 changes: 17 additions & 0 deletions config/sync/ai.ai_prompt_type.ai_ckeditor_spellfix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
uuid: a3572dda-7c07-400b-9770-8d5c173f9b6a
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: N6AICiPGYfKvxKk53PHGw_DSegMsrb3pKgRlk8uRyyo
id: ai_ckeditor_spellfix
label: 'AI CKEditor spellfix prompt'
variables:
-
name: inputText
help_text: 'The input text to fix spelling for'
required: true
tokens: { }
17 changes: 17 additions & 0 deletions config/sync/ai.ai_prompt_type.ai_ckeditor_summarize.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
uuid: d1f509eb-e3d6-41ab-ae01-00e8fe5ffd6c
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: KCDIr2tFfDB15evqCQpDN4HO69u-vReV0jnZWSjYF_o
id: ai_ckeditor_summarize
label: 'AI CKEditor summarize prompt'
variables:
-
name: inputText
help_text: 'The input text to summarize'
required: true
tokens: { }
25 changes: 25 additions & 0 deletions config/sync/ai.ai_prompt_type.ai_ckeditor_tone.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
uuid: e1e8a483-5cc5-4dec-ba45-390328ce754b
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: 2YVHkYhaaRSRV3nuWPZ7bQhLr62IlDGCz8nDaebw0Ns
id: ai_ckeditor_tone
label: 'AI CKEditor tone prompt'
variables:
-
name: tone
help_text: 'Name of desired tone'
required: true
-
name: toneDescription
help_text: 'Description of desired tone'
required: false
-
name: inputText
help_text: 'The input text to change the tone for'
required: true
tokens: { }
25 changes: 25 additions & 0 deletions config/sync/ai.ai_prompt_type.ai_ckeditor_translate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
uuid: 2c91a6de-a4f3-472e-b1f1-ed5778132427
langcode: en
status: true
dependencies:
enforced:
module:
- ai_ckeditor
_core:
default_config_hash: Gbqe_f_D2o6CQHs3Iqyij57vju6AFnkiGWgwg65qqAw
id: ai_ckeditor_translate
label: 'AI CKEditor translate prompt'
variables:
-
name: lang
help_text: 'The language name to translate the selected text to'
required: true
-
name: context
help_text: 'Optional translation context'
required: false
-
name: inputText
help_text: 'The input text to translate'
required: true
tokens: { }
3 changes: 3 additions & 0 deletions config/sync/ai.external_moderation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
_core:
default_config_hash: FNT2zzMLKeg6TviGJAYUvRSjAJmBvmdLnh9USO58MAc
moderations: { }
16 changes: 16 additions & 0 deletions config/sync/ai.html_to_markdown.settings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
_core:
default_config_hash: KEGbjvHsUwKwDnmGkgTPy58oJo7FhOgYzx7qNv1alJ0
header_style: atx
suppress_errors: true
strip_tags: true
strip_placeholder_links: true
bold_style: '**'
italic_style: '*'
remove_nodes: ''
hard_break: false
list_item_style: '-'
preserve_comments: false
use_autolinks: true
table_pipe_escape: \|
table_caption_side: top
strip_whitespace: true
12 changes: 12 additions & 0 deletions config/sync/ai.settings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
_core:
default_config_hash: WWvo9_41v-oaqjbKdBtohSrem-s9w-7MIfvCWjZvAI4
prompt_logging: false
prompt_logging_tags: ''
default_providers:
chat:
provider_id: openai_compatible
model_id: google_genai.gemini-2.5-flash
request_timeout: 60
allowed_hosts: { }
allowed_hosts_rewrite_links: false
global_guardrails: { }
10 changes: 10 additions & 0 deletions config/sync/ai_ckeditor.settings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
_core:
default_config_hash: DLdlwO3Ft6ciLMctGW47S3bIHaoPkM-lsHoiNnu74X0
prompts:
complete: ''
modify_prompt: ai_ckeditor_modify__default
reformat: ai_ckeditor_reformat__default
spellfix: ai_ckeditor_spellfix__default
summarize: ai_ckeditor_summarize__default
tone: ai_ckeditor_tone__default
translate: ai_ckeditor_translate__default
17 changes: 17 additions & 0 deletions config/sync/ai_provider_openai_compatible.settings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
_core:
default_config_hash: wu7wtu-cIy7CT7wYhABkw5kutyyjuWnsMu5W5si5Vzs
api_key: mirai_api_key
endpoint: 'https://mirai.example.com/api'
models:
-
id: google_genai.gemini-2.5-flash
label: 'MIRAI default chat model'
operation_types:
- chat
- translate_text
capabilities:
- chat_system_role
- chat_json_output
parameters:
temperature: 0.7
max_tokens: 4096
2 changes: 1 addition & 1 deletion config/sync/core.entity_view_display.user.user.compact.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ content:
type: image
label: hidden
settings:
image_style: thumbnail
image_link: content
image_style: thumbnail
image_loading:
attribute: lazy
third_party_settings: { }
Expand Down
2 changes: 1 addition & 1 deletion config/sync/core.entity_view_display.user.user.default.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ content:
type: image
label: hidden
settings:
image_style: thumbnail
image_link: content
image_style: thumbnail
image_loading:
attribute: lazy
third_party_settings: { }
Expand Down
5 changes: 5 additions & 0 deletions config/sync/core.extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ _core:
module:
admin_toolbar: 0
admin_toolbar_tools: 0
ai: 0
ai_api_explorer: 0
ai_ckeditor: 0
ai_provider_openai_compatible: 0
automated_cron: 0
block: 0
block_content: 0
Expand All @@ -21,6 +25,7 @@ module:
filter: 0
help: 0
image: 0
key: 0
link: 0
menu_link_content: 0
menu_ui: 0
Expand Down
Loading
Loading