Project Files
src / templates.ts
import { z } from "zod";
export const TemplateTypeEnum = z.enum([
"script_vision",
"script_spec",
"rosetta_stone",
"agent_rules",
"custom",
]);
export type TemplateType = z.infer<typeof TemplateTypeEnum>;
export const ScriptVisionDataSchema = z.object({
script_name: z.string(),
problem: z.string(),
concept: z.string(),
required_context: z.array(z.string()).optional(),
data_sources: z
.array(z.enum(["settings.yaml", ".envy", ".planCS", "other"]))
.optional(),
destination_key: z.string().optional(),
user_stories: z.array(z.string()).optional(),
});
export type ScriptVisionData = z.infer<typeof ScriptVisionDataSchema>;
export const ScriptSpecDataSchema = z.object({
script_name: z.string(),
script_path: z.string().optional(),
status: z.enum(["DRAFT", "PLANNED", "READY"]).optional(),
short_description: z.string(),
command_ps1: z.string().optional(),
command_sh: z.string().optional(),
parameters: z
.array(
z.object({
name: z.string(),
short: z.string().optional(),
required: z.boolean(),
description: z.string(),
})
)
.optional(),
features: z.array(z.string()).optional(),
output_example: z.string().optional(),
exit_codes: z
.array(
z.object({
code: z.number(),
meaning: z.string(),
action: z.string().optional(),
})
)
.optional(),
dependencies: z.array(z.string()).optional(),
acceptance_criteria: z.array(z.string()).optional(),
warnings: z.string().optional(),
tips: z.string().optional(),
});
export type ScriptSpecData = z.infer<typeof ScriptSpecDataSchema>;
export const RosettaStoneDataSchema = z.object({
document_name: z.string(),
source_file: z.string().optional(),
purpose: z.enum(["refactoring", "migration", "simplification"]),
addressing_key: z.enum(["paragraf", "tag", "uuid"]).optional(),
target_format: z
.enum(["markdown_addressable", "json", "lancedb_entry"])
.optional(),
sections: z.array(
z.object({
original_header: z.string(),
original_location: z.string().optional(),
intent: z.string(),
critique: z
.array(
z.enum([
"readable_for_agent",
"redundancies",
"tech_stack_compatible",
])
)
.optional(),
proposed_change: z.string().optional(),
})
),
});
export type RosettaStoneData = z.infer<typeof RosettaStoneDataSchema>;
export const AgentRulesDataSchema = z.object({
project_module_name: z.string(),
philosophy_items: z.array(z.string()).optional(),
rules_items: z.array(z.string()).optional(),
patterns_items: z.array(z.string()).optional(),
feedback_items: z.string().optional(),
});
export type AgentRulesData = z.infer<typeof AgentRulesDataSchema>;
export const FillTemplateParamsSchema = z.object({
template_type: TemplateTypeEnum,
data: z.record(z.any()),
frontmatter: z
.object({
id: z.string().optional(),
module: z.string().optional(),
version: z.string().optional(),
strict_mode: z.boolean().optional(),
dependencies: z.array(z.string()).optional(),
ai_behavior: z.enum(["critical_honesty", "creative", "assistive"]),
})
.optional(),
});
export type FillTemplateParams = z.infer<typeof FillTemplateParamsSchema>;
export const TEMPLATES = {
script_vision: `---
id: "{{id}}"
module: "{{module}}"
version: "1.0.0"
strict_mode: true
ai_behavior: "assistive"
---
# 💡 Wizja Skryptu: {{script_name}}
*Od pomysłu do intencji – co chcemy osiągnąć?*
---
## ❓ Jaki problem rozwiązujemy? (The Problem)
*[{{problem}}]*
---
## 🔮 Ogólna Idea i Zachowanie (The Concept)
*[{{concept}}]*
---
## 📚 Co musisz zgłębić? (Required Context)
> [!IMPORTANT]
> Agencie, zanim zaczniesz projektować technicznie, musisz zrozumieć te pliki/koncepty:
{{#each required_context}}
- **Plik/Koncept:** {{this}}
{{/each}}
---
## 📥 Źródła Prawdy (Data Sources)
*Skąd skrypt ma pobierać potrzebne mu dane konfiguracyjne?*
{{#each data_sources}}
- [ ] {{this}}
{{/each}}
---
## 📤 Miejsce Zapisu i Zgodność (Destination & Compliance)
*Gdzie skrypt ma zapisać wynik swojej pracy? Musi to być zgodne z naszą mapą placu budowy.*
- **Zgodność z .planCS:** Sekcja \`[DIRECTORIES_MAP]\` -> Klucz: {{destination_key}}
- **Ścieżka docelowa:** *[Opis logiczny lokalizacji]*
---
## 🎭 Scenariusze i Przykłady (User Stories / Mockups)
*[Podaj 1-2 przykłady tego, jak wyobrażasz sobie interakcję z tym skryptem.]*
{{#each user_stories}}
**Przykład:** {{this}}
{{/each}}
---
## 🔗 Następny Krok
Gdy powyższa wizja zostanie zaakceptowana, przejdź do wypełnienia: \`script_spec_template.md\`.`,
script_spec: `---
id: "{{id}}"
module: "{{module}}"
version: "1.0.0"
strict_mode: true
ai_behavior: "assistive"
---
# 📜 Specyfikacja Skryptu: {{script_name}}
*Status: [🧪 {{status}} / 📋 PLANNED / ✅ READY] | Lokalizacja: \`{{script_path}}\`*
> **Cel:** {{short_description}}
---
## 🚀 Wyzwalacz i Użycie (Usage & Trigger)
### Komenda:
\`\`\`bash
# Windows (PowerShell)
{{command_ps1}}
# Linux/WSL (Bash)
{{command_sh}}
\`\`\`
### Parametry:
| Parametr | Krótki | Wymagany? | Opis |
| :--- | :--- | :--- | :--- |
| \`--force\` | \`-f\` | ❌ | Wymusza operację mimo ostrzeżeń. |
{{#each parameters}}
| \`{{name}}\` | \`{{short}}\` | {{#if required}}✅{{else}}❌{{/if}} | {{description}} |
{{/each}}
---
## ⚙️ Funkcjonalność (Features)
*[Opis krok po kroku co skrypt wykonuje]*
{{#each features}}
1. **{{this}}**
{{/each}}
---
## 📊 Wyjście (Output Example)
\`\`\`text
{{output_example}}
\`\`\`
---
## 🚦 Kody Wyjścia (Exit Codes)
| Code | Znaczenie | Akcja Agenta |
| :--- | :--- | :--- |
| \`0\` | ✅ Sukces | Kontynuuj zadanie. |
| \`1\` | ❌ Błąd Krytyczny | Zatrzymaj się i sprawdź logi / popraw konfigurację. |
| \`2\` | ⚠️ Ostrzeżenie | Sprawdź wyjście, ale możesz kontynuować. |
{{#each exit_codes}}
| \`{{code}}\` | {{meaning}} | {{action}} |
{{/each}}
---
## 🔗 Integracja i Zależności (Integration)
{{#each dependencies}}
- **Źródło Danych:** {{this}}
{{/each}}
- **Powiązane Skrypty:** *[Wymień]*
- **Wymagania Systemowe:** *[Np. Python 3.11, uv, docker-compose]*
---
## ✅ Kryteria Akceptacji (Acceptance Criteria)
{{#each acceptance_criteria}}
- [ ] {{this}}
{{/each}}
---
## ⚠️ Uwagi Deweloperskie
{{#if tips}}
> [!TIP]
> {{tips}}
{{/if}}
{{#if warnings}}
> [!WARNING]
> {{warnings}}
{{/if}}
---
*Utworzono: {{date}} | Na podstawie: {{reference_doc}}*`,
rosetta_stone: `---
id: "{{id}}"
module: "{{module}}"
version: "1.0.0"
strict_mode: true
ai_behavior: "critical_honesty"
---
# 🗿 Kamień z Rosetty (Rosetta Stone): {{document_name}}
*Narzędzie transformacji dokumentacji pasywnej w ustrukturyzowaną wiedzę adresowalną.*
---
## 📋 Metadane Procesu
- **Cel:** {{purpose}}
- **Klucz Adresowania:** {{addressing_key}}
- **Docelowy Format:** {{target_format}}
---
## 🔍 Analiza i Dekonstrukcja (Sectional Analysis)
{{#each sections}}
### [ID: {{@index}}] — Nazwa Sekcji Oryginalnej: \`{{original_header}}\`
- **Oryginalna Lokalizacja:** {{original_location}}
- **Istota i Cel (Intent):**
> {{intent}}
{{#if critique}}
- **Krytyka Wydajności (Critique):**
{{#each critique}}
- [ ] {{this}}
{{/each}}
{{/if}}
{{#if proposed_change}}
- **Proponowana Zmiana (Proposed Refactoring):**
> {{proposed_change}}
{{/if}}
---
{{/each}}
## 🛠️ Nowa Struktura Adresowalna (Refactored Output)
> Agencie, tutaj złóż wszystkie przeformułowane sekcje w jeden, spójny dokument.
### §1. {{new_header}}
{{refactored_content}}
---
## 📦 Mapowanie do Bazy Wiedzy (Database Mapping)
*Dane przygotowane do wstrzyknięcia do systemu RAG.*
| Adres (ID) | Główne Słowa Kluczowe | Powiązane Moduły | Status Ingestu |
| :--- | :--- | :--- | :--- |
{{#each mapping}}
| \`{{id}}\` | \`{{keywords}}\` | \`{{module}}\` | [ ] |
{{/each}}
---
## 🏁 Podsumowanie Transformacji
- **Usunięte redundancje:** [Tak/Nie]
- **Poprawa czytelności dla AI [%]:** [Szacunkowo]
- **Weryfikacja intencji:** [Czy nowa wersja spełnia cel oryginału?]`,
};