arkaos 3.47.0 → 3.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.48.0
|
|
@@ -63,6 +63,16 @@ function applyArchetype(arch: Archetype) {
|
|
|
63
63
|
mode.value = 'description'
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
// PR94b v3.48.0 — auto-apply archetype from query string (deep link
|
|
67
|
+
// from the /personas/archetypes catalog).
|
|
68
|
+
const route = useRoute()
|
|
69
|
+
watch(archetypes, (list) => {
|
|
70
|
+
const slug = String(route.query.archetype ?? '')
|
|
71
|
+
if (!slug || list.length === 0) return
|
|
72
|
+
const match = list.find((a) => a.id === slug)
|
|
73
|
+
if (match) applyArchetype(match)
|
|
74
|
+
}, { immediate: true })
|
|
75
|
+
|
|
66
76
|
// ─── Step 2 state ────────────────────────────────────────────────────────
|
|
67
77
|
const ingestJobs = ref<Array<{
|
|
68
78
|
source: string
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
// PR94b v3.48.0 — Browseable catalog of persona archetypes.
|
|
3
|
+
//
|
|
4
|
+
// Reads /api/personas/archetypes (PR93b) and renders each as a card.
|
|
5
|
+
// "Create from this" deep-links to /personas/new?archetype=<id> where
|
|
6
|
+
// the wizard auto-selects description mode and pre-fills.
|
|
7
|
+
|
|
8
|
+
interface Archetype {
|
|
9
|
+
id: string
|
|
10
|
+
name: string
|
|
11
|
+
title: string
|
|
12
|
+
tagline: string
|
|
13
|
+
mbti: string
|
|
14
|
+
disc: { primary: string, secondary: string }
|
|
15
|
+
enneagram: { type: number, wing: number }
|
|
16
|
+
description: string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const { fetchApi } = useApi()
|
|
20
|
+
const { data, status, error, refresh } = await fetchApi<{
|
|
21
|
+
archetypes: Archetype[]
|
|
22
|
+
total: number
|
|
23
|
+
}>('/api/personas/archetypes')
|
|
24
|
+
|
|
25
|
+
const archetypes = computed<Archetype[]>(() => data.value?.archetypes ?? [])
|
|
26
|
+
|
|
27
|
+
function discColor(letter: string): 'error' | 'warning' | 'success' | 'primary' | 'neutral' {
|
|
28
|
+
const m: Record<string, 'error' | 'warning' | 'success' | 'primary' | 'neutral'> = {
|
|
29
|
+
D: 'error', I: 'warning', S: 'success', C: 'primary',
|
|
30
|
+
}
|
|
31
|
+
return m[letter] ?? 'neutral'
|
|
32
|
+
}
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
<UDashboardPanel id="archetypes">
|
|
37
|
+
<template #header>
|
|
38
|
+
<UDashboardNavbar title="Persona archetypes">
|
|
39
|
+
<template #leading>
|
|
40
|
+
<UButton icon="i-lucide-arrow-left" variant="ghost" size="sm" to="/personas" aria-label="Back" />
|
|
41
|
+
</template>
|
|
42
|
+
<template #trailing>
|
|
43
|
+
<UBadge v-if="data?.total" :label="String(data.total)" variant="subtle" />
|
|
44
|
+
</template>
|
|
45
|
+
</UDashboardNavbar>
|
|
46
|
+
</template>
|
|
47
|
+
|
|
48
|
+
<template #body>
|
|
49
|
+
<DashboardState
|
|
50
|
+
:status="status"
|
|
51
|
+
:error="error"
|
|
52
|
+
:empty="!archetypes.length"
|
|
53
|
+
empty-title="No archetypes available"
|
|
54
|
+
empty-icon="i-lucide-sparkles"
|
|
55
|
+
loading-label="Loading archetypes"
|
|
56
|
+
:on-retry="() => refresh()"
|
|
57
|
+
>
|
|
58
|
+
<p class="text-sm text-muted mb-6 max-w-2xl">
|
|
59
|
+
Curated starter profiles. Each one ships a description, behavioural DNA
|
|
60
|
+
defaults, and a recommended communication style. Use them as a base
|
|
61
|
+
when you don't have indexed content yet — the wizard pre-fills the
|
|
62
|
+
description and you tweak from there.
|
|
63
|
+
</p>
|
|
64
|
+
|
|
65
|
+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
66
|
+
<div
|
|
67
|
+
v-for="arch in archetypes"
|
|
68
|
+
:key="arch.id"
|
|
69
|
+
class="rounded-xl border border-default p-5 flex flex-col gap-3 hover:border-primary/40 transition-colors"
|
|
70
|
+
>
|
|
71
|
+
<div>
|
|
72
|
+
<h3 class="text-lg font-bold">{{ arch.name }}</h3>
|
|
73
|
+
<p class="text-xs text-muted">{{ arch.title }}</p>
|
|
74
|
+
</div>
|
|
75
|
+
<p class="text-sm italic text-muted">"{{ arch.tagline }}"</p>
|
|
76
|
+
<div class="flex flex-wrap gap-1.5">
|
|
77
|
+
<UBadge :label="arch.mbti" variant="subtle" size="xs" />
|
|
78
|
+
<UBadge
|
|
79
|
+
:label="`DISC: ${arch.disc.primary}/${arch.disc.secondary}`"
|
|
80
|
+
:color="discColor(arch.disc.primary)"
|
|
81
|
+
variant="subtle"
|
|
82
|
+
size="xs"
|
|
83
|
+
/>
|
|
84
|
+
<UBadge
|
|
85
|
+
:label="`E${arch.enneagram.type}w${arch.enneagram.wing}`"
|
|
86
|
+
variant="outline"
|
|
87
|
+
size="xs"
|
|
88
|
+
/>
|
|
89
|
+
</div>
|
|
90
|
+
<p class="text-sm text-muted line-clamp-3">{{ arch.description }}</p>
|
|
91
|
+
<div class="pt-2 mt-auto">
|
|
92
|
+
<UButton
|
|
93
|
+
label="Create from this"
|
|
94
|
+
icon="i-lucide-sparkles"
|
|
95
|
+
color="primary"
|
|
96
|
+
size="sm"
|
|
97
|
+
block
|
|
98
|
+
:to="`/personas/new?archetype=${arch.id}`"
|
|
99
|
+
/>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
</DashboardState>
|
|
104
|
+
</template>
|
|
105
|
+
</UDashboardPanel>
|
|
106
|
+
</template>
|
|
@@ -423,6 +423,13 @@ async function undoTrashIds(ids: string[]) {
|
|
|
423
423
|
/>
|
|
424
424
|
</template>
|
|
425
425
|
<template #right>
|
|
426
|
+
<UButton
|
|
427
|
+
label="Archetypes"
|
|
428
|
+
icon="i-lucide-sparkles"
|
|
429
|
+
variant="ghost"
|
|
430
|
+
size="sm"
|
|
431
|
+
to="/personas/archetypes"
|
|
432
|
+
/>
|
|
426
433
|
<UButton
|
|
427
434
|
label="Export ZIP"
|
|
428
435
|
icon="i-lucide-archive"
|
package/package.json
CHANGED