@cat-factory/app 0.88.0 → 0.89.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/app/components/board/AddTaskModal.vue +70 -2
- package/app/types/domain.ts +6 -3
- package/i18n/locales/en.json +43 -0
- package/i18n/locales/es.json +46 -0
- package/i18n/locales/fr.json +46 -0
- package/i18n/locales/he.json +40 -0
- package/i18n/locales/ja.json +43 -0
- package/i18n/locales/pl.json +46 -0
- package/i18n/locales/tr.json +43 -0
- package/i18n/locales/uk.json +46 -0
- package/package.json +2 -2
|
@@ -11,8 +11,14 @@
|
|
|
11
11
|
// button is disabled with a hint. Linking needs the block id,
|
|
12
12
|
// so chosen items are staged locally and import-and-linked once the task is created
|
|
13
13
|
// (see useContextLinking) — the same context the agents see for every step of the run.
|
|
14
|
-
import type {
|
|
15
|
-
|
|
14
|
+
import type {
|
|
15
|
+
CreateTaskType,
|
|
16
|
+
DocKind,
|
|
17
|
+
DocKindFieldKey,
|
|
18
|
+
TaskSourceKind,
|
|
19
|
+
TaskTypeFields,
|
|
20
|
+
} from '~/types/domain'
|
|
21
|
+
import { DOC_KINDS, DOC_KIND_FIELDS } from '~/types/domain'
|
|
16
22
|
import ContextDocumentPicker from '~/components/documents/ContextDocumentPicker.vue'
|
|
17
23
|
import ContextIssuePicker from '~/components/tasks/ContextIssuePicker.vue'
|
|
18
24
|
import { mergePresetOptionLabel, mergePresetThresholds } from '~/utils/mergePreset'
|
|
@@ -97,6 +103,40 @@ const docKind = ref<DocKind | ''>('')
|
|
|
97
103
|
const docAudience = ref('')
|
|
98
104
|
const docTargetPath = ref('')
|
|
99
105
|
const docOutlineHints = ref('')
|
|
106
|
+
// Per-kind specific fields (see DOC_KIND_FIELDS). Held in one keyed record; only the fields
|
|
107
|
+
// for the selected kind are shown and submitted, so a value from a previously-selected kind is
|
|
108
|
+
// never sent. The catalog keys below keep the labels/placeholders i18n and drift-guarded.
|
|
109
|
+
const docKindFieldValues = reactive<Partial<Record<DocKindFieldKey, string>>>({})
|
|
110
|
+
const docKindFields = computed(() => (docKind.value ? (DOC_KIND_FIELDS[docKind.value] ?? []) : []))
|
|
111
|
+
// Exhaustive Record<DocKindFieldKey, key> of catalog keys — the initiative's drift guard for a
|
|
112
|
+
// dynamic enum→key lookup (a missing enum member is a compile error here; a locale that omits a
|
|
113
|
+
// key falls back via `te()` rather than leaking a raw key). Do NOT inline as bare template keys.
|
|
114
|
+
const DOC_FIELD_LABEL_KEYS: Record<DocKindFieldKey, string> = {
|
|
115
|
+
targetUsers: 'board.addTask.docFields.targetUsers.label',
|
|
116
|
+
successMetrics: 'board.addTask.docFields.successMetrics.label',
|
|
117
|
+
alternativesConsidered: 'board.addTask.docFields.alternativesConsidered.label',
|
|
118
|
+
rolloutConcerns: 'board.addTask.docFields.rolloutConcerns.label',
|
|
119
|
+
decisionDrivers: 'board.addTask.docFields.decisionDrivers.label',
|
|
120
|
+
consideredOptions: 'board.addTask.docFields.consideredOptions.label',
|
|
121
|
+
whenToUse: 'board.addTask.docFields.whenToUse.label',
|
|
122
|
+
escalationPath: 'board.addTask.docFields.escalationPath.label',
|
|
123
|
+
researchQuestion: 'board.addTask.docFields.researchQuestion.label',
|
|
124
|
+
optionsToCompare: 'board.addTask.docFields.optionsToCompare.label',
|
|
125
|
+
apiSurface: 'board.addTask.docFields.apiSurface.label',
|
|
126
|
+
}
|
|
127
|
+
const DOC_FIELD_PLACEHOLDER_KEYS: Record<DocKindFieldKey, string> = {
|
|
128
|
+
targetUsers: 'board.addTask.docFields.targetUsers.placeholder',
|
|
129
|
+
successMetrics: 'board.addTask.docFields.successMetrics.placeholder',
|
|
130
|
+
alternativesConsidered: 'board.addTask.docFields.alternativesConsidered.placeholder',
|
|
131
|
+
rolloutConcerns: 'board.addTask.docFields.rolloutConcerns.placeholder',
|
|
132
|
+
decisionDrivers: 'board.addTask.docFields.decisionDrivers.placeholder',
|
|
133
|
+
consideredOptions: 'board.addTask.docFields.consideredOptions.placeholder',
|
|
134
|
+
whenToUse: 'board.addTask.docFields.whenToUse.placeholder',
|
|
135
|
+
escalationPath: 'board.addTask.docFields.escalationPath.placeholder',
|
|
136
|
+
researchQuestion: 'board.addTask.docFields.researchQuestion.placeholder',
|
|
137
|
+
optionsToCompare: 'board.addTask.docFields.optionsToCompare.placeholder',
|
|
138
|
+
apiSurface: 'board.addTask.docFields.apiSurface.placeholder',
|
|
139
|
+
}
|
|
100
140
|
const SEVERITIES = ['low', 'medium', 'high', 'critical'] as const
|
|
101
141
|
|
|
102
142
|
function buildTypeFields(): TaskTypeFields | undefined {
|
|
@@ -121,6 +161,11 @@ function buildTypeFields(): TaskTypeFields | undefined {
|
|
|
121
161
|
if (docAudience.value.trim()) f.audience = docAudience.value.trim()
|
|
122
162
|
if (docTargetPath.value.trim()) f.targetPath = docTargetPath.value.trim()
|
|
123
163
|
if (docOutlineHints.value.trim()) f.outlineHints = docOutlineHints.value.trim()
|
|
164
|
+
// Only the selected kind's fields are read, so a stale value for another kind is dropped.
|
|
165
|
+
for (const spec of docKindFields.value) {
|
|
166
|
+
const value = docKindFieldValues[spec.key]?.trim()
|
|
167
|
+
if (value) f[spec.key] = value
|
|
168
|
+
}
|
|
124
169
|
return Object.keys(f).length ? f : undefined
|
|
125
170
|
}
|
|
126
171
|
return undefined
|
|
@@ -336,6 +381,8 @@ watch(open, (isOpen) => {
|
|
|
336
381
|
docAudience.value = ''
|
|
337
382
|
docTargetPath.value = ''
|
|
338
383
|
docOutlineHints.value = ''
|
|
384
|
+
for (const key of Object.keys(docKindFieldValues) as DocKindFieldKey[])
|
|
385
|
+
delete docKindFieldValues[key]
|
|
339
386
|
mergePresetId.value = ''
|
|
340
387
|
modelPresetId.value = ''
|
|
341
388
|
pipelineId.value = ''
|
|
@@ -610,6 +657,27 @@ async function add() {
|
|
|
610
657
|
class="w-full"
|
|
611
658
|
/>
|
|
612
659
|
</UFormField>
|
|
660
|
+
<!-- Kind-specific fields — only those relevant to the selected docKind are shown. -->
|
|
661
|
+
<UFormField
|
|
662
|
+
v-for="spec in docKindFields"
|
|
663
|
+
:key="spec.key"
|
|
664
|
+
:label="t(DOC_FIELD_LABEL_KEYS[spec.key])"
|
|
665
|
+
:hint="t('board.addTask.optional')"
|
|
666
|
+
>
|
|
667
|
+
<UTextarea
|
|
668
|
+
v-if="spec.multiline"
|
|
669
|
+
v-model="docKindFieldValues[spec.key]"
|
|
670
|
+
:rows="2"
|
|
671
|
+
:placeholder="t(DOC_FIELD_PLACEHOLDER_KEYS[spec.key])"
|
|
672
|
+
class="w-full"
|
|
673
|
+
/>
|
|
674
|
+
<UInput
|
|
675
|
+
v-else
|
|
676
|
+
v-model="docKindFieldValues[spec.key]"
|
|
677
|
+
:placeholder="t(DOC_FIELD_PLACEHOLDER_KEYS[spec.key])"
|
|
678
|
+
class="w-full"
|
|
679
|
+
/>
|
|
680
|
+
</UFormField>
|
|
613
681
|
</div>
|
|
614
682
|
|
|
615
683
|
<div class="grid grid-cols-2 gap-3">
|
package/app/types/domain.ts
CHANGED
|
@@ -24,6 +24,8 @@ export type {
|
|
|
24
24
|
CreateTaskType,
|
|
25
25
|
TaskTypeFields,
|
|
26
26
|
DocKind,
|
|
27
|
+
DocKindFieldKey,
|
|
28
|
+
DocKindFieldSpec,
|
|
27
29
|
Block,
|
|
28
30
|
PullRequestRef,
|
|
29
31
|
CloudProvider,
|
|
@@ -74,9 +76,10 @@ export type {
|
|
|
74
76
|
|
|
75
77
|
import type { AgentCategory, AgentKind } from '@cat-factory/contracts'
|
|
76
78
|
|
|
77
|
-
// The document-kind list
|
|
78
|
-
//
|
|
79
|
-
|
|
79
|
+
// The document-kind list + the per-kind field descriptors are runtime values (used to render
|
|
80
|
+
// the picker and the conditional per-kind inputs), so they are re-exported as values — the
|
|
81
|
+
// single source of truth lives in the contracts package.
|
|
82
|
+
export { DOC_KINDS, DOC_KIND_FIELDS } from '@cat-factory/contracts'
|
|
80
83
|
|
|
81
84
|
/** A draggable agent definition shown in the agent palette. Frontend-only. */
|
|
82
85
|
export interface AgentArchetype {
|
package/i18n/locales/en.json
CHANGED
|
@@ -169,6 +169,49 @@
|
|
|
169
169
|
"targetPathPlaceholder": "e.g. docs/rfcs/0001-foo.md",
|
|
170
170
|
"outlineHints": "Outline hints",
|
|
171
171
|
"outlineHintsPlaceholder": "Sections or points the document should cover",
|
|
172
|
+
"docFields": {
|
|
173
|
+
"targetUsers": {
|
|
174
|
+
"label": "Target users",
|
|
175
|
+
"placeholder": "Who the document is for and the jobs they're doing"
|
|
176
|
+
},
|
|
177
|
+
"successMetrics": {
|
|
178
|
+
"label": "Success metrics",
|
|
179
|
+
"placeholder": "Measurable outcomes that show it's working"
|
|
180
|
+
},
|
|
181
|
+
"alternativesConsidered": {
|
|
182
|
+
"label": "Alternatives considered",
|
|
183
|
+
"placeholder": "Other approaches weighed and why they were ruled out"
|
|
184
|
+
},
|
|
185
|
+
"rolloutConcerns": {
|
|
186
|
+
"label": "Rollout concerns",
|
|
187
|
+
"placeholder": "Migration and rollout risks to address"
|
|
188
|
+
},
|
|
189
|
+
"decisionDrivers": {
|
|
190
|
+
"label": "Decision drivers",
|
|
191
|
+
"placeholder": "The forces and constraints driving the decision"
|
|
192
|
+
},
|
|
193
|
+
"consideredOptions": {
|
|
194
|
+
"label": "Considered options",
|
|
195
|
+
"placeholder": "The options evaluated, each with its trade-offs"
|
|
196
|
+
},
|
|
197
|
+
"whenToUse": {
|
|
198
|
+
"label": "When to use",
|
|
199
|
+
"placeholder": "The trigger or situation this runbook applies to"
|
|
200
|
+
},
|
|
201
|
+
"escalationPath": {
|
|
202
|
+
"label": "Escalation path",
|
|
203
|
+
"placeholder": "Who to contact and how to escalate on failure"
|
|
204
|
+
},
|
|
205
|
+
"researchQuestion": {
|
|
206
|
+
"label": "Research question",
|
|
207
|
+
"placeholder": "The question or hypothesis to answer"
|
|
208
|
+
},
|
|
209
|
+
"optionsToCompare": {
|
|
210
|
+
"label": "Options to compare",
|
|
211
|
+
"placeholder": "The options to weigh against each other"
|
|
212
|
+
},
|
|
213
|
+
"apiSurface": { "label": "API surface", "placeholder": "The endpoints or surface in scope" }
|
|
214
|
+
},
|
|
172
215
|
"optional": "optional",
|
|
173
216
|
"pipeline": "Pipeline",
|
|
174
217
|
"chooseAtRunTime": "Choose at run time",
|
package/i18n/locales/es.json
CHANGED
|
@@ -151,6 +151,52 @@
|
|
|
151
151
|
"targetPathPlaceholder": "p. ej. docs/rfcs/0001-foo.md",
|
|
152
152
|
"outlineHints": "Sugerencias de esquema",
|
|
153
153
|
"outlineHintsPlaceholder": "Secciones o puntos que el documento debería cubrir",
|
|
154
|
+
"docFields": {
|
|
155
|
+
"targetUsers": {
|
|
156
|
+
"label": "Usuarios objetivo",
|
|
157
|
+
"placeholder": "Para quién es el documento y las tareas que realizan"
|
|
158
|
+
},
|
|
159
|
+
"successMetrics": {
|
|
160
|
+
"label": "Métricas de éxito",
|
|
161
|
+
"placeholder": "Resultados medibles que indican que funciona"
|
|
162
|
+
},
|
|
163
|
+
"alternativesConsidered": {
|
|
164
|
+
"label": "Alternativas consideradas",
|
|
165
|
+
"placeholder": "Otros enfoques evaluados y por qué se descartaron"
|
|
166
|
+
},
|
|
167
|
+
"rolloutConcerns": {
|
|
168
|
+
"label": "Consideraciones de despliegue",
|
|
169
|
+
"placeholder": "Riesgos de migración y despliegue a tener en cuenta"
|
|
170
|
+
},
|
|
171
|
+
"decisionDrivers": {
|
|
172
|
+
"label": "Factores de decisión",
|
|
173
|
+
"placeholder": "Las fuerzas y restricciones que motivan la decisión"
|
|
174
|
+
},
|
|
175
|
+
"consideredOptions": {
|
|
176
|
+
"label": "Opciones consideradas",
|
|
177
|
+
"placeholder": "Las opciones evaluadas, cada una con sus ventajas y desventajas"
|
|
178
|
+
},
|
|
179
|
+
"whenToUse": {
|
|
180
|
+
"label": "Cuándo usarlo",
|
|
181
|
+
"placeholder": "El desencadenante o la situación en que aplica este runbook"
|
|
182
|
+
},
|
|
183
|
+
"escalationPath": {
|
|
184
|
+
"label": "Ruta de escalado",
|
|
185
|
+
"placeholder": "A quién contactar y cómo escalar si falla"
|
|
186
|
+
},
|
|
187
|
+
"researchQuestion": {
|
|
188
|
+
"label": "Pregunta de investigación",
|
|
189
|
+
"placeholder": "La pregunta o hipótesis a responder"
|
|
190
|
+
},
|
|
191
|
+
"optionsToCompare": {
|
|
192
|
+
"label": "Opciones a comparar",
|
|
193
|
+
"placeholder": "Las opciones a sopesar entre sí"
|
|
194
|
+
},
|
|
195
|
+
"apiSurface": {
|
|
196
|
+
"label": "Superficie de API",
|
|
197
|
+
"placeholder": "Los endpoints o la superficie dentro del alcance"
|
|
198
|
+
}
|
|
199
|
+
},
|
|
154
200
|
"optional": "opcional",
|
|
155
201
|
"pipeline": "Pipeline",
|
|
156
202
|
"chooseAtRunTime": "Elegir al ejecutar",
|
package/i18n/locales/fr.json
CHANGED
|
@@ -151,6 +151,52 @@
|
|
|
151
151
|
"targetPathPlaceholder": "ex. docs/rfcs/0001-foo.md",
|
|
152
152
|
"outlineHints": "Indications de plan",
|
|
153
153
|
"outlineHintsPlaceholder": "Sections ou points que le document devrait couvrir",
|
|
154
|
+
"docFields": {
|
|
155
|
+
"targetUsers": {
|
|
156
|
+
"label": "Utilisateurs cibles",
|
|
157
|
+
"placeholder": "À qui s'adresse le document et les tâches qu'ils accomplissent"
|
|
158
|
+
},
|
|
159
|
+
"successMetrics": {
|
|
160
|
+
"label": "Indicateurs de réussite",
|
|
161
|
+
"placeholder": "Résultats mesurables qui montrent que ça fonctionne"
|
|
162
|
+
},
|
|
163
|
+
"alternativesConsidered": {
|
|
164
|
+
"label": "Alternatives envisagées",
|
|
165
|
+
"placeholder": "Les autres approches évaluées et pourquoi elles ont été écartées"
|
|
166
|
+
},
|
|
167
|
+
"rolloutConcerns": {
|
|
168
|
+
"label": "Points de déploiement",
|
|
169
|
+
"placeholder": "Risques de migration et de déploiement à traiter"
|
|
170
|
+
},
|
|
171
|
+
"decisionDrivers": {
|
|
172
|
+
"label": "Facteurs de décision",
|
|
173
|
+
"placeholder": "Les forces et contraintes qui motivent la décision"
|
|
174
|
+
},
|
|
175
|
+
"consideredOptions": {
|
|
176
|
+
"label": "Options envisagées",
|
|
177
|
+
"placeholder": "Les options évaluées, chacune avec ses compromis"
|
|
178
|
+
},
|
|
179
|
+
"whenToUse": {
|
|
180
|
+
"label": "Quand l'utiliser",
|
|
181
|
+
"placeholder": "Le déclencheur ou la situation à laquelle ce runbook s'applique"
|
|
182
|
+
},
|
|
183
|
+
"escalationPath": {
|
|
184
|
+
"label": "Chemin d'escalade",
|
|
185
|
+
"placeholder": "Qui contacter et comment escalader en cas d'échec"
|
|
186
|
+
},
|
|
187
|
+
"researchQuestion": {
|
|
188
|
+
"label": "Question de recherche",
|
|
189
|
+
"placeholder": "La question ou l'hypothèse à laquelle répondre"
|
|
190
|
+
},
|
|
191
|
+
"optionsToCompare": {
|
|
192
|
+
"label": "Options à comparer",
|
|
193
|
+
"placeholder": "Les options à mettre en balance"
|
|
194
|
+
},
|
|
195
|
+
"apiSurface": {
|
|
196
|
+
"label": "Surface d'API",
|
|
197
|
+
"placeholder": "Les endpoints ou la surface concernés"
|
|
198
|
+
}
|
|
199
|
+
},
|
|
154
200
|
"optional": "optionnel",
|
|
155
201
|
"pipeline": "Pipeline",
|
|
156
202
|
"chooseAtRunTime": "Choisir au lancement",
|
package/i18n/locales/he.json
CHANGED
|
@@ -151,6 +151,46 @@
|
|
|
151
151
|
"targetPathPlaceholder": "למשל docs/rfcs/0001-foo.md",
|
|
152
152
|
"outlineHints": "רמזים למתווה",
|
|
153
153
|
"outlineHintsPlaceholder": "סעיפים או נקודות שהמסמך צריך לכסות",
|
|
154
|
+
"docFields": {
|
|
155
|
+
"targetUsers": {
|
|
156
|
+
"label": "משתמשי היעד",
|
|
157
|
+
"placeholder": "למי מיועד המסמך ואילו משימות הם מבצעים"
|
|
158
|
+
},
|
|
159
|
+
"successMetrics": { "label": "מדדי הצלחה", "placeholder": "תוצאות מדידות שמראות שזה עובד" },
|
|
160
|
+
"alternativesConsidered": {
|
|
161
|
+
"label": "חלופות שנשקלו",
|
|
162
|
+
"placeholder": "גישות אחרות שנשקלו ומדוע נפסלו"
|
|
163
|
+
},
|
|
164
|
+
"rolloutConcerns": {
|
|
165
|
+
"label": "שיקולי הטמעה",
|
|
166
|
+
"placeholder": "סיכוני מיגרציה והשקה שיש לטפל בהם"
|
|
167
|
+
},
|
|
168
|
+
"decisionDrivers": {
|
|
169
|
+
"label": "גורמי ההחלטה",
|
|
170
|
+
"placeholder": "הכוחות והאילוצים שמניעים את ההחלטה"
|
|
171
|
+
},
|
|
172
|
+
"consideredOptions": {
|
|
173
|
+
"label": "אפשרויות שנשקלו",
|
|
174
|
+
"placeholder": "האפשרויות שהוערכו, כל אחת עם היתרונות והחסרונות שלה"
|
|
175
|
+
},
|
|
176
|
+
"whenToUse": {
|
|
177
|
+
"label": "מתי להשתמש",
|
|
178
|
+
"placeholder": "הטריגר או המצב שאליו חל ה-runbook הזה"
|
|
179
|
+
},
|
|
180
|
+
"escalationPath": {
|
|
181
|
+
"label": "נתיב הסלמה",
|
|
182
|
+
"placeholder": "למי לפנות וכיצד להסלים במקרה של כשל"
|
|
183
|
+
},
|
|
184
|
+
"researchQuestion": {
|
|
185
|
+
"label": "שאלת המחקר",
|
|
186
|
+
"placeholder": "השאלה או ההשערה שיש לענות עליה"
|
|
187
|
+
},
|
|
188
|
+
"optionsToCompare": {
|
|
189
|
+
"label": "אפשרויות להשוואה",
|
|
190
|
+
"placeholder": "האפשרויות שיש לשקול זו מול זו"
|
|
191
|
+
},
|
|
192
|
+
"apiSurface": { "label": "משטח ה-API", "placeholder": "נקודות הקצה או המשטח שבתחום" }
|
|
193
|
+
},
|
|
154
194
|
"optional": "אופציונלי",
|
|
155
195
|
"pipeline": "צינור",
|
|
156
196
|
"chooseAtRunTime": "בחר בזמן הריצה",
|
package/i18n/locales/ja.json
CHANGED
|
@@ -151,6 +151,49 @@
|
|
|
151
151
|
"targetPathPlaceholder": "例: docs/rfcs/0001-foo.md",
|
|
152
152
|
"outlineHints": "アウトラインのヒント",
|
|
153
153
|
"outlineHintsPlaceholder": "ドキュメントがカバーすべきセクションや要点",
|
|
154
|
+
"docFields": {
|
|
155
|
+
"targetUsers": {
|
|
156
|
+
"label": "対象ユーザー",
|
|
157
|
+
"placeholder": "ドキュメントの対象者と、その人が行うタスク"
|
|
158
|
+
},
|
|
159
|
+
"successMetrics": {
|
|
160
|
+
"label": "成功指標",
|
|
161
|
+
"placeholder": "機能していることを示す測定可能な成果"
|
|
162
|
+
},
|
|
163
|
+
"alternativesConsidered": {
|
|
164
|
+
"label": "検討した代替案",
|
|
165
|
+
"placeholder": "検討した他のアプローチと却下した理由"
|
|
166
|
+
},
|
|
167
|
+
"rolloutConcerns": {
|
|
168
|
+
"label": "展開時の懸念",
|
|
169
|
+
"placeholder": "対処すべき移行・展開のリスク"
|
|
170
|
+
},
|
|
171
|
+
"decisionDrivers": {
|
|
172
|
+
"label": "意思決定の要因",
|
|
173
|
+
"placeholder": "意思決定を左右する要因と制約"
|
|
174
|
+
},
|
|
175
|
+
"consideredOptions": {
|
|
176
|
+
"label": "検討した選択肢",
|
|
177
|
+
"placeholder": "評価した各選択肢とそのトレードオフ"
|
|
178
|
+
},
|
|
179
|
+
"whenToUse": {
|
|
180
|
+
"label": "使用するタイミング",
|
|
181
|
+
"placeholder": "このランブックが適用されるトリガーや状況"
|
|
182
|
+
},
|
|
183
|
+
"escalationPath": {
|
|
184
|
+
"label": "エスカレーション経路",
|
|
185
|
+
"placeholder": "失敗時の連絡先とエスカレーション方法"
|
|
186
|
+
},
|
|
187
|
+
"researchQuestion": { "label": "リサーチの問い", "placeholder": "答えるべき問いや仮説" },
|
|
188
|
+
"optionsToCompare": {
|
|
189
|
+
"label": "比較する選択肢",
|
|
190
|
+
"placeholder": "互いに比較検討する選択肢"
|
|
191
|
+
},
|
|
192
|
+
"apiSurface": {
|
|
193
|
+
"label": "API のサーフェス",
|
|
194
|
+
"placeholder": "対象となるエンドポイントや範囲"
|
|
195
|
+
}
|
|
196
|
+
},
|
|
154
197
|
"optional": "任意",
|
|
155
198
|
"pipeline": "パイプライン",
|
|
156
199
|
"chooseAtRunTime": "実行時に選択",
|
package/i18n/locales/pl.json
CHANGED
|
@@ -151,6 +151,52 @@
|
|
|
151
151
|
"targetPathPlaceholder": "np. docs/rfcs/0001-foo.md",
|
|
152
152
|
"outlineHints": "Wskazówki do konspektu",
|
|
153
153
|
"outlineHintsPlaceholder": "Sekcje lub punkty, które dokument powinien obejmować",
|
|
154
|
+
"docFields": {
|
|
155
|
+
"targetUsers": {
|
|
156
|
+
"label": "Użytkownicy docelowi",
|
|
157
|
+
"placeholder": "Dla kogo jest dokument i jakie zadania wykonują"
|
|
158
|
+
},
|
|
159
|
+
"successMetrics": {
|
|
160
|
+
"label": "Metryki sukcesu",
|
|
161
|
+
"placeholder": "Mierzalne wyniki potwierdzające, że to działa"
|
|
162
|
+
},
|
|
163
|
+
"alternativesConsidered": {
|
|
164
|
+
"label": "Rozważane alternatywy",
|
|
165
|
+
"placeholder": "Inne podejścia i powody ich odrzucenia"
|
|
166
|
+
},
|
|
167
|
+
"rolloutConcerns": {
|
|
168
|
+
"label": "Kwestie wdrożenia",
|
|
169
|
+
"placeholder": "Ryzyka migracji i wdrożenia do rozważenia"
|
|
170
|
+
},
|
|
171
|
+
"decisionDrivers": {
|
|
172
|
+
"label": "Czynniki decyzji",
|
|
173
|
+
"placeholder": "Siły i ograniczenia kształtujące decyzję"
|
|
174
|
+
},
|
|
175
|
+
"consideredOptions": {
|
|
176
|
+
"label": "Rozważane opcje",
|
|
177
|
+
"placeholder": "Ocenione opcje wraz z ich kompromisami"
|
|
178
|
+
},
|
|
179
|
+
"whenToUse": {
|
|
180
|
+
"label": "Kiedy stosować",
|
|
181
|
+
"placeholder": "Wyzwalacz lub sytuacja, w której obowiązuje ten runbook"
|
|
182
|
+
},
|
|
183
|
+
"escalationPath": {
|
|
184
|
+
"label": "Ścieżka eskalacji",
|
|
185
|
+
"placeholder": "Z kim się kontaktować i jak eskalować w razie awarii"
|
|
186
|
+
},
|
|
187
|
+
"researchQuestion": {
|
|
188
|
+
"label": "Pytanie badawcze",
|
|
189
|
+
"placeholder": "Pytanie lub hipoteza do rozstrzygnięcia"
|
|
190
|
+
},
|
|
191
|
+
"optionsToCompare": {
|
|
192
|
+
"label": "Opcje do porównania",
|
|
193
|
+
"placeholder": "Opcje do porównania między sobą"
|
|
194
|
+
},
|
|
195
|
+
"apiSurface": {
|
|
196
|
+
"label": "Powierzchnia API",
|
|
197
|
+
"placeholder": "Endpointy lub zakres objęty dokumentem"
|
|
198
|
+
}
|
|
199
|
+
},
|
|
154
200
|
"optional": "opcjonalne",
|
|
155
201
|
"pipeline": "Pipeline",
|
|
156
202
|
"chooseAtRunTime": "Wybierz przy uruchomieniu",
|
package/i18n/locales/tr.json
CHANGED
|
@@ -151,6 +151,49 @@
|
|
|
151
151
|
"targetPathPlaceholder": "ör. docs/rfcs/0001-foo.md",
|
|
152
152
|
"outlineHints": "Ana hat ipuçları",
|
|
153
153
|
"outlineHintsPlaceholder": "Belgenin kapsaması gereken bölümler veya noktalar",
|
|
154
|
+
"docFields": {
|
|
155
|
+
"targetUsers": {
|
|
156
|
+
"label": "Hedef kullanıcılar",
|
|
157
|
+
"placeholder": "Belgenin kime yönelik olduğu ve yaptıkları işler"
|
|
158
|
+
},
|
|
159
|
+
"successMetrics": {
|
|
160
|
+
"label": "Başarı ölçütleri",
|
|
161
|
+
"placeholder": "İşe yaradığını gösteren ölçülebilir sonuçlar"
|
|
162
|
+
},
|
|
163
|
+
"alternativesConsidered": {
|
|
164
|
+
"label": "Değerlendirilen alternatifler",
|
|
165
|
+
"placeholder": "Tartılan diğer yaklaşımlar ve neden elendikleri"
|
|
166
|
+
},
|
|
167
|
+
"rolloutConcerns": {
|
|
168
|
+
"label": "Dağıtım kaygıları",
|
|
169
|
+
"placeholder": "Ele alınacak geçiş ve dağıtım riskleri"
|
|
170
|
+
},
|
|
171
|
+
"decisionDrivers": {
|
|
172
|
+
"label": "Karar etkenleri",
|
|
173
|
+
"placeholder": "Kararı yönlendiren güçler ve kısıtlar"
|
|
174
|
+
},
|
|
175
|
+
"consideredOptions": {
|
|
176
|
+
"label": "Değerlendirilen seçenekler",
|
|
177
|
+
"placeholder": "Değerlendirilen seçenekler ve ödünleşimleri"
|
|
178
|
+
},
|
|
179
|
+
"whenToUse": {
|
|
180
|
+
"label": "Ne zaman kullanılır",
|
|
181
|
+
"placeholder": "Bu runbook'un geçerli olduğu tetikleyici veya durum"
|
|
182
|
+
},
|
|
183
|
+
"escalationPath": {
|
|
184
|
+
"label": "Yükseltme yolu",
|
|
185
|
+
"placeholder": "Kiminle iletişime geçileceği ve arıza durumunda nasıl yükseltileceği"
|
|
186
|
+
},
|
|
187
|
+
"researchQuestion": {
|
|
188
|
+
"label": "Araştırma sorusu",
|
|
189
|
+
"placeholder": "Yanıtlanacak soru veya hipotez"
|
|
190
|
+
},
|
|
191
|
+
"optionsToCompare": {
|
|
192
|
+
"label": "Karşılaştırılacak seçenekler",
|
|
193
|
+
"placeholder": "Birbirine karşı tartılacak seçenekler"
|
|
194
|
+
},
|
|
195
|
+
"apiSurface": { "label": "API yüzeyi", "placeholder": "Kapsamdaki uç noktalar veya yüzey" }
|
|
196
|
+
},
|
|
154
197
|
"optional": "isteğe bağlı",
|
|
155
198
|
"pipeline": "İşlem hattı",
|
|
156
199
|
"chooseAtRunTime": "Çalıştırma sırasında seç",
|
package/i18n/locales/uk.json
CHANGED
|
@@ -151,6 +151,52 @@
|
|
|
151
151
|
"targetPathPlaceholder": "напр. docs/rfcs/0001-foo.md",
|
|
152
152
|
"outlineHints": "Підказки для плану",
|
|
153
153
|
"outlineHintsPlaceholder": "Розділи або пункти, які має охопити документ",
|
|
154
|
+
"docFields": {
|
|
155
|
+
"targetUsers": {
|
|
156
|
+
"label": "Цільові користувачі",
|
|
157
|
+
"placeholder": "Для кого документ і які завдання вони виконують"
|
|
158
|
+
},
|
|
159
|
+
"successMetrics": {
|
|
160
|
+
"label": "Метрики успіху",
|
|
161
|
+
"placeholder": "Вимірювані результати, що підтверджують працездатність"
|
|
162
|
+
},
|
|
163
|
+
"alternativesConsidered": {
|
|
164
|
+
"label": "Розглянуті альтернативи",
|
|
165
|
+
"placeholder": "Інші підходи та причини їх відхилення"
|
|
166
|
+
},
|
|
167
|
+
"rolloutConcerns": {
|
|
168
|
+
"label": "Питання розгортання",
|
|
169
|
+
"placeholder": "Ризики міграції та розгортання, які слід врахувати"
|
|
170
|
+
},
|
|
171
|
+
"decisionDrivers": {
|
|
172
|
+
"label": "Чинники рішення",
|
|
173
|
+
"placeholder": "Сили та обмеження, що визначають рішення"
|
|
174
|
+
},
|
|
175
|
+
"consideredOptions": {
|
|
176
|
+
"label": "Розглянуті варіанти",
|
|
177
|
+
"placeholder": "Оцінені варіанти з їхніми компромісами"
|
|
178
|
+
},
|
|
179
|
+
"whenToUse": {
|
|
180
|
+
"label": "Коли застосовувати",
|
|
181
|
+
"placeholder": "Тригер або ситуація, до якої застосовний цей runbook"
|
|
182
|
+
},
|
|
183
|
+
"escalationPath": {
|
|
184
|
+
"label": "Шлях ескалації",
|
|
185
|
+
"placeholder": "До кого звертатися та як ескалювати в разі збою"
|
|
186
|
+
},
|
|
187
|
+
"researchQuestion": {
|
|
188
|
+
"label": "Дослідницьке питання",
|
|
189
|
+
"placeholder": "Питання або гіпотеза, на яку слід відповісти"
|
|
190
|
+
},
|
|
191
|
+
"optionsToCompare": {
|
|
192
|
+
"label": "Варіанти для порівняння",
|
|
193
|
+
"placeholder": "Варіанти для зважування між собою"
|
|
194
|
+
},
|
|
195
|
+
"apiSurface": {
|
|
196
|
+
"label": "Поверхня API",
|
|
197
|
+
"placeholder": "Кінцеві точки або поверхня в межах обсягу"
|
|
198
|
+
}
|
|
199
|
+
},
|
|
154
200
|
"optional": "необов’язково",
|
|
155
201
|
"pipeline": "Конвеєр",
|
|
156
202
|
"chooseAtRunTime": "Обрати під час запуску",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.89.0",
|
|
4
4
|
"description": "Reusable Nuxt layer for the Agent Architecture Board SPA (components, stores, composables, pages). Consume it from a thin deployment app via `extends: ['@cat-factory/app']` and point it at your backend with NUXT_PUBLIC_API_BASE. See deploy/frontend for an example.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"valibot": "^1.4.2",
|
|
35
35
|
"vue": "^3.5.39",
|
|
36
36
|
"wretch": "^3.0.9",
|
|
37
|
-
"@cat-factory/contracts": "0.
|
|
37
|
+
"@cat-factory/contracts": "0.97.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@toad-contracts/testing": "0.3.2",
|