diff --git a/.gitignore b/.gitignore index 0f2dca62..6035a54b 100644 --- a/.gitignore +++ b/.gitignore @@ -87,29 +87,29 @@ src/aipass/*/apps/integrations/** !src/aipass/*/apps/integrations/README.md # Spawn template exceptions (template files must be tracked for public repo) -!src/aipass/spawn/templates/builder/.trinity/ -!src/aipass/spawn/templates/builder/.trinity/** -!src/aipass/spawn/templates/builder/.ai_mail.local/ -!src/aipass/spawn/templates/builder/.ai_mail.local/** -!src/aipass/spawn/templates/builder/.archive/ -!src/aipass/spawn/templates/builder/.archive/** -!src/aipass/spawn/templates/builder/.spawn/ -!src/aipass/spawn/templates/builder/.spawn/** -!src/aipass/spawn/templates/builder/.claude/ -!src/aipass/spawn/templates/builder/.claude/** -!src/aipass/spawn/templates/builder/*_json/ -!src/aipass/spawn/templates/builder/*_json/** -!src/aipass/spawn/templates/builder/logs/ -!src/aipass/spawn/templates/builder/logs/** -!src/aipass/spawn/templates/builder/artifacts/ -!src/aipass/spawn/templates/builder/artifacts/** -!src/aipass/spawn/templates/builder/dropbox/ -!src/aipass/spawn/templates/builder/dropbox/** -!src/aipass/spawn/templates/builder/tools/ -!src/aipass/spawn/templates/builder/tools/** -!src/aipass/spawn/templates/builder/docs.local/ -!src/aipass/spawn/templates/builder/docs.local/** -!src/aipass/spawn/templates/builder/DASHBOARD.local.json +!src/aipass/spawn/templates/aipass_framework/.trinity/ +!src/aipass/spawn/templates/aipass_framework/.trinity/** +!src/aipass/spawn/templates/aipass_framework/.ai_mail.local/ +!src/aipass/spawn/templates/aipass_framework/.ai_mail.local/** +!src/aipass/spawn/templates/aipass_framework/.archive/ +!src/aipass/spawn/templates/aipass_framework/.archive/** +!src/aipass/spawn/templates/aipass_framework/.spawn/ +!src/aipass/spawn/templates/aipass_framework/.spawn/** +!src/aipass/spawn/templates/aipass_framework/.claude/ +!src/aipass/spawn/templates/aipass_framework/.claude/** +!src/aipass/spawn/templates/aipass_framework/*_json/ +!src/aipass/spawn/templates/aipass_framework/*_json/** +!src/aipass/spawn/templates/aipass_framework/logs/ +!src/aipass/spawn/templates/aipass_framework/logs/** +!src/aipass/spawn/templates/aipass_framework/artifacts/ +!src/aipass/spawn/templates/aipass_framework/artifacts/** +!src/aipass/spawn/templates/aipass_framework/dropbox/ +!src/aipass/spawn/templates/aipass_framework/dropbox/** +!src/aipass/spawn/templates/aipass_framework/tools/ +!src/aipass/spawn/templates/aipass_framework/tools/** +!src/aipass/spawn/templates/aipass_framework/docs.local/ +!src/aipass/spawn/templates/aipass_framework/docs.local/** +!src/aipass/spawn/templates/aipass_framework/DASHBOARD.local.json # Commons artifacts subsystem — real source code (craft/trade/capsule), NOT a # runtime dir. Collides with the blanket `artifacts/` ignore (line 49); *.py-only diff --git a/src/aipass/spawn/templates/aipass_framework/.ai_mail.local/README.md b/src/aipass/spawn/templates/aipass_framework/.ai_mail.local/README.md new file mode 100644 index 00000000..46062f53 --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/.ai_mail.local/README.md @@ -0,0 +1,5 @@ +# Sent Mail + +Sent email records for `{{BRANCHNAME}}`. + +Outgoing messages are logged here by the ai_mail system. diff --git a/src/aipass/spawn/templates/aipass_framework/.ai_mail.local/inbox.json b/src/aipass/spawn/templates/aipass_framework/.ai_mail.local/inbox.json new file mode 100644 index 00000000..6297c6fd --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/.ai_mail.local/inbox.json @@ -0,0 +1,6 @@ +{ + "mailbox": "inbox", + "total_messages": 0, + "unread_count": 0, + "messages": [] +} diff --git a/src/aipass/spawn/templates/aipass_framework/.archive/README.md b/src/aipass/spawn/templates/aipass_framework/.archive/README.md new file mode 100644 index 00000000..8ce339af --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/.archive/README.md @@ -0,0 +1,5 @@ +# Archive + +Disabled and archived files for `{{BRANCHNAME}}`. + +Files tagged `(disabled)` are moved here instead of deleted. diff --git a/src/aipass/spawn/templates/aipass_framework/.claude/settings.local.json b/src/aipass/spawn/templates/aipass_framework/.claude/settings.local.json new file mode 100644 index 00000000..376527bc --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/.claude/settings.local.json @@ -0,0 +1,28 @@ +{ + "permissions": { + "allow": [], + "deny": [ + "Bash(git reset*)", + "Bash(git rebase*)", + "Bash(git merge*)", + "Bash(git config*)", + "Bash(git push --force*)", + "Bash(git push -f *)", + "Bash(git checkout -- *)", + "Bash(git checkout .*)", + "Bash(git restore --staged*)", + "Bash(git restore .*)", + "Bash(git clean*)", + "Bash(git branch -D*)", + "Bash(git stash drop*)", + "Bash(git stash clear*)", + "Bash(rm -rf*)", + "Bash(rm -r *)", + "Bash(git checkout -b*)", + "Bash(git commit*)", + "Bash(git push*)" + ], + "ask": [] + }, + "enabledMcpjsonServers": [] +} diff --git a/src/aipass/spawn/templates/aipass_framework/.spawn/.registry_ignore.json b/src/aipass/spawn/templates/aipass_framework/.spawn/.registry_ignore.json new file mode 100644 index 00000000..a3bbaed7 --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/.spawn/.registry_ignore.json @@ -0,0 +1,43 @@ +{ + "metadata": { + "version": "1.1.0", + "description": "Files and patterns to exclude when updating branches from template", + "last_updated": "2025-11-09" + }, + "ignore_files": [ + ".template_registry.json", + ".registry_ignore.json" + ], + "ignore_patterns": [ + "__pycache__", + "*.pyc", + "#@comments.txt", + ".backup_*" + ], + "notes": { + "how_it_works": "Two types of exclusions during branch updates:", + "ignore_files": { + "description": "Exact filename matches (no wildcards)", + "purpose": "Template-internal management files that branches don't need", + "examples": [ + ".template_registry.json (template's file tracking list)", + ".registry_ignore.json (this config file)" + ] + }, + "ignore_patterns": { + "description": "Glob patterns - matches filenames AND directory names", + "purpose": "Exclude generated files, caches, and user content markers", + "examples": [ + "__pycache__ (Python cache directories)", + "*.pyc (Python compiled bytecode files)", + "#@comments.txt (user comment files)", + ".backup_* (timestamped backup files like .backup_20251109, NOT .backup directory)" + ], + "how_matching_works": [ + "Step 1: Check if filename matches pattern (e.g., file.pyc matches *.pyc)", + "Step 2: Check if any parent directory matches (e.g., files inside __pycache__/ dir)" + ] + }, + "what_gets_ignored": "These files never copy to branches during updates - they stay template-only" + } +} diff --git a/src/aipass/spawn/templates/aipass_framework/.spawn/.template_registry.json b/src/aipass/spawn/templates/aipass_framework/.spawn/.template_registry.json new file mode 100644 index 00000000..c7b3d70a --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/.spawn/.template_registry.json @@ -0,0 +1,390 @@ +{ + "directories": { + "d001": { + "has_branch_placeholder": false, + "name": ".ai_mail.local", + "path": ".ai_mail.local" + }, + "d003": { + "has_branch_placeholder": false, + "name": ".aipass", + "path": ".aipass" + }, + "d004": { + "has_branch_placeholder": false, + "name": ".archive", + "path": ".archive" + }, + "d005": { + "has_branch_placeholder": false, + "name": ".claude", + "path": ".claude" + }, + "d006": { + "has_branch_placeholder": false, + "name": ".seedgo", + "path": ".seedgo" + }, + "d007": { + "has_branch_placeholder": false, + "name": ".trinity", + "path": ".trinity" + }, + "d008": { + "has_branch_placeholder": false, + "name": "apps", + "path": "apps" + }, + "d009": { + "has_branch_placeholder": false, + "name": "handlers", + "path": "apps/handlers" + }, + "d010": { + "has_branch_placeholder": false, + "name": "modules", + "path": "apps/modules" + }, + "d011": { + "has_branch_placeholder": false, + "name": "plugins", + "path": "apps/plugins" + }, + "d012": { + "has_branch_placeholder": false, + "name": "artifacts", + "path": "artifacts" + }, + "d013": { + "has_branch_placeholder": false, + "name": "docs", + "path": "docs" + }, + "d014": { + "has_branch_placeholder": false, + "name": "docs.local", + "path": "docs.local" + }, + "d015": { + "has_branch_placeholder": false, + "name": "sub_agent_drops", + "path": "docs.local/sub_agent_drops" + }, + "d016": { + "has_branch_placeholder": false, + "name": "dropbox", + "path": "dropbox" + }, + "d017": { + "has_branch_placeholder": false, + "name": "logs", + "path": "logs" + }, + "d018": { + "has_branch_placeholder": false, + "name": "templates", + "path": "templates" + }, + "d019": { + "has_branch_placeholder": false, + "name": "tests", + "path": "tests" + }, + "d020": { + "has_branch_placeholder": false, + "name": "tools", + "path": "tools" + }, + "d021": { + "has_branch_placeholder": true, + "name": "{{BRANCH}}_json", + "path": "{{BRANCH}}_json" + }, + "d022": { + "has_branch_placeholder": false, + "name": "custom_config", + "path": "{{BRANCH}}_json/custom_config" + }, + "d023": { + "has_branch_placeholder": false, + "name": ".spawn", + "path": ".spawn" + }, + "d024": { + "has_branch_placeholder": false, + "name": "integrations", + "path": "apps/integrations" + } + }, + "files": { + "f001": { + "content_hash": "49299c242a01", + "has_branch_placeholder": false, + "name": "README.md", + "path": ".ai_mail.local/README.md" + }, + "f002": { + "content_hash": "c9702fe2cc21", + "has_branch_placeholder": false, + "name": "inbox.json", + "path": ".ai_mail.local/inbox.json" + }, + "f003": { + "content_hash": "f42d87684fdf", + "has_branch_placeholder": false, + "name": "README.md", + "path": ".aipass/README.md" + }, + "f004": { + "content_hash": "bf82b35fa7d5", + "has_branch_placeholder": false, + "name": "aipass_local_prompt.md", + "path": ".aipass/aipass_local_prompt.md" + }, + "f005": { + "content_hash": "93d3fcb74f23", + "has_branch_placeholder": false, + "name": "README.md", + "path": ".archive/README.md" + }, + "f006": { + "content_hash": "adb0ce8c53c1", + "has_branch_placeholder": false, + "name": "README.md", + "path": ".claude/README.md" + }, + "f007": { + "content_hash": "eacf065629cd", + "has_branch_placeholder": false, + "name": "settings.local.json", + "path": ".claude/settings.local.json" + }, + "f008": { + "content_hash": "2dd6758a96d5", + "has_branch_placeholder": false, + "name": ".gitignore", + "path": ".gitignore" + }, + "f009": { + "content_hash": "ea03468bbf16", + "has_branch_placeholder": false, + "name": "README.md", + "path": ".seedgo/README.md" + }, + "f010": { + "content_hash": "0ac90a35515b", + "has_branch_placeholder": false, + "name": "bypass.json", + "path": ".seedgo/bypass.json" + }, + "f011": { + "content_hash": "f461c9b16fc5", + "has_branch_placeholder": false, + "name": "README.md", + "path": ".trinity/README.md" + }, + "f012": { + "content_hash": "a68a905541ee", + "has_branch_placeholder": false, + "name": "local.json", + "path": ".trinity/local.json" + }, + "f013": { + "content_hash": "e51a865855a6", + "has_branch_placeholder": false, + "name": "observations.json", + "path": ".trinity/observations.json" + }, + "f014": { + "content_hash": "d523dee2ef39", + "has_branch_placeholder": false, + "name": "passport.json", + "path": ".trinity/passport.json" + }, + "f015": { + "content_hash": "e3b0c44298fc", + "has_branch_placeholder": false, + "name": "__init__.py", + "path": "apps/plugins/__init__.py" + }, + "f016": { + "content_hash": "f4775daf1f75", + "has_branch_placeholder": false, + "name": "DASHBOARD.local.json", + "path": "DASHBOARD.local.json" + }, + "f017": { + "content_hash": "ad99517a50f9", + "has_branch_placeholder": false, + "name": "README.md", + "path": "README.md" + }, + "f018": { + "content_hash": "e3b0c44298fc", + "has_branch_placeholder": false, + "name": "__init__.py", + "path": "apps/modules/__init__.py" + }, + "f019": { + "content_hash": "92a956009e0e", + "has_branch_placeholder": false, + "name": "README.md", + "path": "apps/README.md" + }, + "f020": { + "content_hash": "0ef6c27137dc", + "has_branch_placeholder": false, + "name": "__init__.py", + "path": "apps/__init__.py" + }, + "f021": { + "content_hash": "2e4f4a0c1b47", + "has_branch_placeholder": false, + "name": "README.md", + "path": "apps/handlers/README.md" + }, + "f022": { + "content_hash": "dbfc0e044461", + "has_branch_placeholder": false, + "name": "__init__.py", + "path": "apps/handlers/__init__.py" + }, + "f023": { + "content_hash": "a4cf0a8e3b4f", + "has_branch_placeholder": false, + "name": "README.md", + "path": "apps/modules/README.md" + }, + "f024": { + "content_hash": "34f5e7ff7e01", + "has_branch_placeholder": false, + "name": ".registry_ignore.json", + "path": ".spawn/.registry_ignore.json" + }, + "f025": { + "content_hash": "d1e4e2b98c38", + "has_branch_placeholder": false, + "name": "README.md", + "path": "apps/plugins/README.md" + }, + "f027": { + "content_hash": "024209a8c889", + "has_branch_placeholder": true, + "name": "{{BRANCH}}.py", + "path": "apps/{{BRANCH}}.py" + }, + "f028": { + "content_hash": "de20d11e5cfd", + "has_branch_placeholder": false, + "name": "README.md", + "path": "artifacts/README.md" + }, + "f029": { + "content_hash": "0b6e4319781e", + "has_branch_placeholder": false, + "name": "birth_certificate.json", + "path": "artifacts/birth_certificate.json" + }, + "f030": { + "content_hash": "2434da568727", + "has_branch_placeholder": false, + "name": "README.md", + "path": "docs/README.md" + }, + "f031": { + "content_hash": "c19d8872ea2c", + "has_branch_placeholder": false, + "name": "README.md", + "path": "docs.local/README.md" + }, + "f032": { + "content_hash": "e3e5a6b9c9c5", + "has_branch_placeholder": false, + "name": "README.md", + "path": "docs.local/sub_agent_drops/README.md" + }, + "f033": { + "content_hash": "9e1e9b71f93b", + "has_branch_placeholder": false, + "name": "README.md", + "path": "dropbox/README.md" + }, + "f034": { + "content_hash": "4ca207af6bd3", + "has_branch_placeholder": false, + "name": "README.md", + "path": "logs/README.md" + }, + "f035": { + "content_hash": "7b39ba7bca40", + "has_branch_placeholder": false, + "name": "pytest.ini", + "path": "pytest.ini" + }, + "f036": { + "content_hash": "73b020b003f9", + "has_branch_placeholder": false, + "name": "README.md", + "path": "templates/README.md" + }, + "f037": { + "content_hash": "c157895c9b27", + "has_branch_placeholder": false, + "name": "README.md", + "path": "tests/README.md" + }, + "f038": { + "content_hash": "881f06bb6574", + "has_branch_placeholder": false, + "name": "__init__.py", + "path": "tests/__init__.py" + }, + "f039": { + "content_hash": "97f220799d19", + "has_branch_placeholder": false, + "name": "conftest.py", + "path": "tests/conftest.py" + }, + "f040": { + "content_hash": "3c7eaedb16ac", + "has_branch_placeholder": false, + "name": "README.md", + "path": "tools/README.md" + }, + "f041": { + "content_hash": "e64fa555e7b8", + "has_branch_placeholder": false, + "name": "README.md", + "path": "{{BRANCH}}_json/README.md" + }, + "f042": { + "content_hash": "28e9ae373563", + "has_branch_placeholder": false, + "name": "README.md", + "path": "{{BRANCH}}_json/custom_config/README.md" + }, + "f043": { + "content_hash": "e22ad5337efd", + "has_branch_placeholder": false, + "name": "README.md", + "path": ".spawn/README.md" + }, + "f044": { + "content_hash": "31c09afe1299", + "has_branch_placeholder": false, + "name": "README.md", + "path": "apps/integrations/README.md" + }, + "f045": { + "content_hash": "1facc521802b", + "has_branch_placeholder": false, + "name": "requirements.project.txt", + "path": "requirements.project.txt" + } + }, + "metadata": { + "description": "Template file tracking registry for ID-based updates", + "last_updated": "2026-07-02", + "version": "1.0.0" + } +} diff --git a/src/aipass/spawn/templates/aipass_framework/.spawn/README.md b/src/aipass/spawn/templates/aipass_framework/.spawn/README.md new file mode 100644 index 00000000..12d3f360 --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/.spawn/README.md @@ -0,0 +1,5 @@ +# Spawn Metadata + +Branch lifecycle metadata for `{{BRANCHNAME}}`, managed by spawn. + +Contains migration tracking and branch registry information. diff --git a/src/aipass/spawn/templates/aipass_framework/DASHBOARD.local.json b/src/aipass/spawn/templates/aipass_framework/DASHBOARD.local.json new file mode 100644 index 00000000..3c524cfc --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/DASHBOARD.local.json @@ -0,0 +1,35 @@ +{ + "_warning": "AUTO-GENERATED FILE - DO NOT MANUALLY EDIT. This file is 100% automated and will be overwritten. Services update their own sections.", + "branch": "{{BRANCHNAME}}", + "last_updated": "{{DATE}}", + "quick_status": { + "new_mail": 0, + "opened_mail": 0, + "active_plans": 0, + "action_required": false, + "summary": "All clear" + }, + "sections": { + "ai_mail": { + "managed_by": "ai_mail", + "new": 0, + "opened": 0, + "total": 0, + "oldest_unread_age": null, + "last_dispatch_received": null, + "last_updated": "{{DATE}}" + }, + "flow": { + "managed_by": "flow", + "active_plans": 0, + "recently_closed": [], + "last_updated": "{{DATE}}" + }, + "memory": { + "managed_by": "memory", + "vectors_stored": 0, + "notes": {}, + "last_updated": "{{DATE}}" + } + } +} diff --git a/src/aipass/spawn/templates/aipass_framework/artifacts/README.md b/src/aipass/spawn/templates/aipass_framework/artifacts/README.md new file mode 100644 index 00000000..74b5cb2e --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/artifacts/README.md @@ -0,0 +1,5 @@ +# Artifacts + +Ownership items for `{{BRANCHNAME}}`. + +Contains the birth certificate and any other unique artifacts belonging to this branch. Artifacts represent milestones, achievements, and identity within the AIPass ecosystem. diff --git a/src/aipass/spawn/templates/aipass_framework/artifacts/birth_certificate.json b/src/aipass/spawn/templates/aipass_framework/artifacts/birth_certificate.json new file mode 100644 index 00000000..f61f1def --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/artifacts/birth_certificate.json @@ -0,0 +1,15 @@ +{ + "id": "{{CITIZEN_NUMBER}}", + "name": "{{BRANCHNAME}} Birth Certificate", + "type": "birth_certificate", + "creator": "SYSTEM", + "owner": "{{BRANCHNAME}}", + "rarity": "unique", + "description": "Official birth certificate for {{BRANCHNAME}}. Citizen #{{CITIZEN_NUMBER}}, builder class. Purpose: {{PURPOSE_BRIEF}}", + "metadata": { + "citizen_number": "{{CITIZEN_NUMBER}}", + "citizen_class": "builder", + "purpose": "{{PURPOSE_BRIEF}}" + }, + "created_at": "{{DATE}}" +} diff --git a/src/aipass/spawn/templates/aipass_framework/docs.local/README.md b/src/aipass/spawn/templates/aipass_framework/docs.local/README.md new file mode 100644 index 00000000..5879d69d --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/docs.local/README.md @@ -0,0 +1,5 @@ +# Local Docs + +Untracked working documents for `{{BRANCHNAME}}`. + +This directory is git-ignored. Use it for agent research dumps, reports, working files, and any documents that don't need to be committed. Subagents should organize their output here instead of scattering files across the branch. diff --git a/src/aipass/spawn/templates/aipass_framework/docs.local/sub_agent_drops/README.md b/src/aipass/spawn/templates/aipass_framework/docs.local/sub_agent_drops/README.md new file mode 100644 index 00000000..ceec4536 --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/docs.local/sub_agent_drops/README.md @@ -0,0 +1,5 @@ +# Sub-Agent Drops + +Output directory for subagent research and investigations. + +When agents are deployed to gather information, analyze code, or run diagnostics, their output goes here instead of being scattered across the branch. Keeps the workspace organized and makes it easy to find or clean up agent-generated content. diff --git a/src/aipass/spawn/templates/aipass_framework/dropbox/README.md b/src/aipass/spawn/templates/aipass_framework/dropbox/README.md new file mode 100644 index 00000000..12c3849d --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/dropbox/README.md @@ -0,0 +1,5 @@ +# Dropbox + +Incoming file drop zone for `{{BRANCHNAME}}`. + +Other branches deliver files here for `{{BRANCHNAME}}` to pick up. diff --git a/src/aipass/spawn/templates/aipass_framework/logs/README.md b/src/aipass/spawn/templates/aipass_framework/logs/README.md new file mode 100644 index 00000000..66e7173f --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/logs/README.md @@ -0,0 +1,5 @@ +# Logs + +Prax log output for `{{BRANCHNAME}}`. + +Operational logs written by the prax logger. Check here first when debugging unexpected behavior. diff --git a/src/aipass/spawn/templates/aipass_framework/tools/README.md b/src/aipass/spawn/templates/aipass_framework/tools/README.md new file mode 100644 index 00000000..e0fb4072 --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/tools/README.md @@ -0,0 +1,5 @@ +# Tools + +Standalone scripts for `{{BRANCHNAME}}`. + +Diagnostic tools, prototypes, and one-off utilities. Use this directory for investigations and experiments that don't belong in the main application layer. diff --git a/src/aipass/spawn/templates/aipass_framework/{{BRANCH}}_json/README.md b/src/aipass/spawn/templates/aipass_framework/{{BRANCH}}_json/README.md new file mode 100644 index 00000000..587e7cd6 --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/{{BRANCH}}_json/README.md @@ -0,0 +1,5 @@ +# {{BRANCHNAME}} JSON Logs + +JSON operation logs for the `{{BRANCHNAME}}` branch. + +Files here are written by `json_handler.log_operation()` during branch activity. diff --git a/src/aipass/spawn/templates/aipass_framework/{{BRANCH}}_json/custom_config/README.md b/src/aipass/spawn/templates/aipass_framework/{{BRANCH}}_json/custom_config/README.md new file mode 100644 index 00000000..4f7fd30a --- /dev/null +++ b/src/aipass/spawn/templates/aipass_framework/{{BRANCH}}_json/custom_config/README.md @@ -0,0 +1,5 @@ +# Custom Config + +Branch-specific configuration files for `{{BRANCHNAME}}`. + +Settings, preferences, and any custom JSON configs that don't fit the standard config/data/log pattern go here.