mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-26 17:57:44 +02:00
First pass of the workbench-templates plan (docs/plans/workbench-
templates.md) — templates are no longer agent-centric but a general
"starter kit" bundle: optional agent + optional scene + optional
missions + optional per-module seeds. Pilot non-AI template "Calmness"
ships alongside.
Shape generalisation (packages/shared-ai/src/agents/templates/types.ts):
- AgentTemplate renamed to WorkbenchTemplate; all fields now optional
(agent, scene, missions, seeds). Back-compat AgentTemplate alias
kept so research/context/today keep compiling.
- Added `category: 'ai'|'wellness'|'work'|'lifeEvent'|'delight'` +
`icon` (for non-agent templates that have no avatar) + `version`
field (for future update-detection).
- New WorkbenchTemplateSeedItem shape: `{stableId?, data: unknown}`.
Module-specific seed payloads are typed at the handler side.
- Existing three AI templates nachgezogen: category='ai' (or
'delight' for today-agent), icon, version='1'.
Seed infrastructure:
- apps/mana/apps/web/src/lib/data/ai/agents/seed-registry.ts — in-
memory handler map keyed by module name; module-local seed.ts files
register themselves at import time.
- apps/mana/apps/web/src/lib/modules/meditate/seed.ts — first handler:
createPreset-based, idempotent via stableId embedded as HTML
comment in the preset description (T1 pragmatism; T2 adds a proper
column on the preset schema).
- data/ai/missions/setup.ts pulls `import '$lib/modules/meditate/seed'`
so the handler is registered before any template is applied.
Applicator upgrades (data/ai/agents/apply-template.ts):
- Agent step now optional — skipped cleanly when template has no
agent part.
- New step 4: seeds. Walks template.seeds, looks up the handler for
each module, aggregates per-item outcomes (created/skipped-exists/
failed) into result.seedOutcomes. Missing handler = warning, not
fatal. Crypto/encryption unchanged — seeds go through the same
module stores that module code already uses.
- Result shape gains `seedOutcomes: Record<string, SeedOutcome[]>`
so the gallery can show "3 new, 1 already there".
Calmness pilot (packages/shared-ai/src/agents/templates/calmness.ts):
- category='wellness', NO agent, scene with meditate/mood/journal/
sleep apps, two meditate preset seeds:
* 4-7-8 Atmung (breathing preset)
* Body-Scan 10min (bodyscan preset with 9 scan steps)
- Each seed has a stableId so re-apply is idempotent.
Gallery updates (routes/(app)/agents/templates/+page.svelte):
- Card avatar falls back to t.icon when no agent. "Agent" chip shows
only for agent-templates; "N Seeds" chip shows for templates with
seeds.
- Detail header shows "Workbench-Setup ohne AI-Agent" when no agent.
- New "Seeds" preview section: lists per-module counts + item names.
- Options section gains a "Seed-Daten in Module einpflegen" checkbox.
- Success panel shows seed summary: "3 Seeds neu, 1 bereits
vorhanden".
Tests: shared-ai 26/26, webapp svelte-check 0 errors, 0 warnings.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
2.2 KiB
TypeScript
72 lines
2.2 KiB
TypeScript
import type { WorkbenchTemplate } from './types';
|
|
|
|
/**
|
|
* Calmness — first non-AI workbench template.
|
|
*
|
|
* Legt eine Scene fürs Runterkommen an und seed-ed zwei Einstiegs-
|
|
* Meditationen ins Meditate-Modul. Kein Agent, keine Mission — dieses
|
|
* Template ist "Infrastruktur für Ruhe", keine Automation.
|
|
*
|
|
* Dient in Phase T1 des Workbench-Templates-Plans auch als Pilot-
|
|
* Template dafür wie nicht-AI-Templates aussehen. Folgende Templates
|
|
* (Fitness, Deep Work, …) nutzen denselben Shape.
|
|
*/
|
|
|
|
export const calmnessTemplate: WorkbenchTemplate = {
|
|
id: 'calmness',
|
|
version: '1',
|
|
label: 'Calmness',
|
|
icon: '🧘',
|
|
tagline: 'Atem, Stille, ruhige Momente',
|
|
description: `Ein Workbench-Setup für Stille-Momente. Legt dir eine Scene mit den Modulen Meditate, Mood, Journal und Sleep an und seed-et zwei Einstiegs-Meditationen — mehr brauchst du nicht um anzufangen.
|
|
|
|
Kein AI-Agent. Du meditierst, nicht dein Computer.`,
|
|
category: 'wellness',
|
|
color: '#8B5CF6',
|
|
scene: {
|
|
name: 'Calmness',
|
|
description: 'Ruhe, Atem, Stille',
|
|
openApps: [
|
|
{ appId: 'meditate', widthPx: 540 },
|
|
{ appId: 'mood', widthPx: 340 },
|
|
{ appId: 'journal', widthPx: 440 },
|
|
{ appId: 'sleep', widthPx: 340 },
|
|
],
|
|
},
|
|
seeds: {
|
|
meditate: [
|
|
{
|
|
stableId: 'template-calmness:preset:4-7-8',
|
|
data: {
|
|
name: '4-7-8 Atmung',
|
|
description:
|
|
'Beruhigende Atemtechnik. Einatmen 4 Sekunden, halten 7 Sekunden, ausatmen 8 Sekunden. Gut für abends oder bei Unruhe.',
|
|
category: 'breathing',
|
|
breathPattern: { inhale: 4, hold: 7, exhale: 8, rest: 0 },
|
|
defaultDurationSec: 300,
|
|
},
|
|
},
|
|
{
|
|
stableId: 'template-calmness:preset:bodyscan-10',
|
|
data: {
|
|
name: 'Body-Scan 10min',
|
|
description:
|
|
'Sanfte Aufmerksamkeits-Wanderung durch den Körper — von den Füßen bis zum Scheitel.',
|
|
category: 'bodyscan',
|
|
bodyScanSteps: [
|
|
'Spüre deine Füße',
|
|
'Spüre deine Beine',
|
|
'Spüre dein Becken',
|
|
'Spüre deinen Bauch',
|
|
'Spüre deine Brust',
|
|
'Spüre deine Arme',
|
|
'Spüre deinen Nacken',
|
|
'Spüre deinen Kopf',
|
|
'Spüre deinen ganzen Körper',
|
|
],
|
|
defaultDurationSec: 600,
|
|
},
|
|
},
|
|
],
|
|
},
|
|
};
|