managarten/scripts
Till JS fea3adf5fe feat(llm-aliases): M5 — migrate consumers to MANA_LLM aliases
Final milestone of docs/plans/llm-fallback-aliases.md. Every backend
caller now requests models via the `mana/<class>` alias system instead
of hardcoded `ollama/...` strings. mana-llm resolves aliases through
`services/mana-llm/aliases.yaml` with health-aware fallback (M3) and
emits resolved-model + fallback metrics (M4).

SSOT moved to `packages/shared-ai/src/llm-aliases.ts` so apps/api,
apps/mana/apps/web, and services/mana-ai all import the same
`MANA_LLM` constant via the existing `@mana/shared-ai` workspace
dependency. Three additional sites (memoro-server, mana-events,
mana-research) inline the alias string with a SSOT comment because
they don't pull @mana/shared-ai today.

Migrated 14 sites across 10 files:
- apps/api: writing(LONG_FORM), comic(STRUCTURED), context(FAST_TEXT),
  food(VISION), plants(VISION), research orchestrator (3 tiers
  collapsed to STRUCTURED+FAST_TEXT/LONG_FORM)
- apps/mana/apps/web: voice/parse-task + parse-habit (STRUCTURED)
- services/mana-ai: planner llm-client + tick.ts (REASONING)
- services/mana-events: website-extractor (STRUCTURED, inlined)
- services/mana-research: mana-llm client (FAST_TEXT, inlined)
- apps/memoro/apps/server: ai.ts (FAST_TEXT, inlined)

Legacy env-vars removed: WRITING_MODEL, COMIC_STORYBOARD_MODEL,
VISION_MODEL, MANA_LLM_DEFAULT_MODEL. The chain in aliases.yaml is
now the single tuning surface; SIGHUP reloads it without redeploys.

New `scripts/validate-llm-strings.mjs` regex-scans 2538 files for
hardcoded `<provider>/<model>` strings and fails the build if any
land outside the SSOT or the explicitly-allowed paths (image-gen
modules, model-inspector code, this validator itself, the registry).
Wired into `validate:all` next to the i18n + theme validators.

Verified: `pnpm validate:llm-strings` clean, `pnpm --filter @mana/api
type-check` clean, `pnpm --filter @mana/ai-service type-check`
clean. Web type-check has 2 pre-existing errors in
SettingsSidebar.svelte (i18n MessageFormatter type drift, last
touched in 988c17a67 — unrelated to this work).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 21:26:03 +02:00
..
dev chore(dev): seed real credit balance in setup-dev-user.sh 2026-04-15 18:51:39 +02:00
mac-mini chore(infra): unify prod deploy on .env.macmini + document missing keys 2026-04-23 13:01:29 +02:00
personas feat(personas): M2.a-c — persona schemas + admin endpoints + seed pipeline 2026-04-23 13:55:14 +02:00
test-data feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
test-reporting chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
audit-bundle.mjs chore(bundle): add bundle-size audit + snapshot inventory 2026-04-22 17:52:08 +02:00
audit-complexity.mjs chore(audit): module complexity reports + workbench map 2026-04-14 19:47:42 +02:00
audit-crypto-registry.mjs feat(crypto): Phase C — build-time registry ↔ Dexie audit 2026-04-20 14:36:32 +02:00
audit-encrypted-tools.ts fix(personas): exact tool_use_id pairing + CI drift audit 2026-04-23 15:34:52 +02:00
audit-i18n-coverage.mjs chore(i18n): add coverage audit + migration inventory 2026-04-22 17:16:55 +02:00
audit-icon-usage.mjs perf(invoices): lazy-load pdf-lib + swissqrbill, -516 KB on route 2026-04-22 18:03:53 +02:00
audit-module-coupling.mjs chore(audit): module complexity reports + workbench map 2026-04-14 19:47:42 +02:00
audit-modules.mjs chore(audit): module complexity reports + workbench map 2026-04-14 19:47:42 +02:00
audit-port-drift.mjs chore(services): add port-drift audit 2026-04-22 17:22:37 +02:00
audit-test-coverage.mjs chore(test + audit): add test-coverage audit + wire audit:all 2026-04-22 17:38:12 +02:00
audit-workspace-deps.mjs refactor: rename zitare -> quotes (Zitate) 2026-04-14 20:59:16 +02:00
backup-monitoring.sh feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
build-complexity-map.mjs chore(audit): module complexity reports + workbench map 2026-04-14 19:47:42 +02:00
check-status.sh feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
create-gift-codes.mjs feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
deploy-metrics.sh fix(deploy): fix image size measurement in deploy metrics 2026-03-20 21:13:03 +01:00
ecosystem-audit.mjs feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
fix-mixed-imports.mjs Fix wrong type 2025-12-04 23:25:25 +01:00
generate-dockerfiles.mjs feat(infra): extend Dockerfile validator to backends and services 2026-03-25 08:57:10 +01:00
generate-env.mjs feat(wardrobe,picture): Google Nano Banana as a Try-On option 2026-04-24 16:04:21 +02:00
generate-status-page.sh feat(mana-ai): Prometheus /metrics endpoint + status.mana.how integration 2026-04-15 01:41:40 +02:00
i18n-hardcoded-baseline.json feat(writing): print CSS + keyboard shortcuts 2026-04-25 12:10:32 +02:00
i18n-missing-baseline.json feat(calendar): M8.3 — calendar pilot for unlisted-share end-to-end 2026-04-25 11:40:53 +02:00
lighthouse-audit.sh refactor: rename zitare -> quotes (Zitate) 2026-04-14 20:59:16 +02:00
migrate-theme-tokens.mjs refactor(theming): migrate remaining 738 token violations across routes + components 2026-04-22 15:42:55 +02:00
migrate-transition-all.mjs refactor(theming): replace transition-all with specific transitions 2026-04-22 15:57:49 +02:00
run-integration-tests.sh fix(mana-auth): account lockout was structurally dead + add failure-path tests 2026-04-08 18:29:00 +02:00
run-tests-with-coverage.sh feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
setup-databases.sh chore(setup:db): surface drizzle-kit errors instead of catch-all 2026-04-23 15:36:18 +02:00
setup-secrets.mjs feat(env): persistent dev secrets via .env.secrets override 2026-04-08 17:50:37 +02:00
test-chat-auth.sh chore: tidy root files + reorganize a few stale docs 2026-04-08 12:15:27 +02:00
validate-cloudflared-config.mjs chore(infra): pre-commit validator for cloudflared-config.yml 2026-04-09 18:02:51 +02:00
validate-dockerfiles.mjs refactor: rename zitare -> quotes (Zitate) 2026-04-14 20:59:16 +02:00
validate-i18n-keys.mjs feat(calendar): M8.3 — calendar pilot for unlisted-share end-to-end 2026-04-25 11:40:53 +02:00
validate-i18n-parity.mjs feat(scripts): validate:i18n-parity — lock locale key-sets in CI 2026-04-24 16:30:35 +02:00
validate-llm-strings.mjs feat(llm-aliases): M5 — migrate consumers to MANA_LLM aliases 2026-04-26 21:26:03 +02:00
validate-monorepo.mjs refactor: rename zitare -> quotes (Zitate) 2026-04-14 20:59:16 +02:00
validate-no-hardcoded-strings.mjs feat(scripts): validate:i18n-hardcoded — ratcheting baseline check 2026-04-25 11:33:24 +02:00
validate-no-recursive-turbo.mjs chore(turbo): lint against recursive \turbo run\ calls in child packages 2026-04-20 14:39:32 +02:00
validate-pg-schema-isolation.mjs chore(db): enforce pgSchema isolation with a lint script 2026-04-20 14:45:59 +02:00
validate-theme-parity.mjs refactor(theming): migrate who semantic colours to theme tokens 2026-04-22 17:19:53 +02:00
validate-theme-utilities.mjs refactor(theming): migrate who semantic colours to theme tokens 2026-04-22 17:19:53 +02:00
validate-theme-variables.mjs refactor(theming): re-apply theme validator suite after parallel rebase 2026-04-22 17:07:48 +02:00