@cat-factory/app 0.100.1 → 0.100.3
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/AgentFailureCard.vue +100 -14
- package/app/components/settings/InfraHandlersConfigurator.vue +22 -0
- package/i18n/locales/en.json +7 -1
- package/i18n/locales/es.json +4 -1
- package/i18n/locales/fr.json +4 -1
- package/i18n/locales/he.json +4 -1
- package/i18n/locales/ja.json +4 -1
- package/i18n/locales/pl.json +4 -1
- package/i18n/locales/tr.json +4 -1
- package/i18n/locales/uk.json +4 -1
- package/package.json +2 -2
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// the unified retry through the agentRuns store, so every surface (board card,
|
|
5
5
|
// inspector, task panel) gets identical behaviour from one place. Replaces the
|
|
6
6
|
// three hand-rolled bootstrap banners that used to duplicate this logic.
|
|
7
|
+
import type { EnvironmentFailureReason } from '@cat-factory/contracts'
|
|
7
8
|
import type { AgentRunSummary } from '~/stores/agentRuns'
|
|
8
9
|
import FailureDetail from '~/components/board/FailureDetail.vue'
|
|
9
10
|
|
|
@@ -14,9 +15,59 @@ const props = withDefaults(
|
|
|
14
15
|
|
|
15
16
|
const { t } = useI18n()
|
|
16
17
|
const agentRuns = useAgentRunsStore()
|
|
18
|
+
const ui = useUiStore()
|
|
19
|
+
const auth = useAuthStore()
|
|
20
|
+
const board = useBoardStore()
|
|
17
21
|
|
|
18
22
|
const compact = computed(() => props.variant === 'compact')
|
|
19
23
|
const failure = computed(() => props.run.failure)
|
|
24
|
+
// An `environment` failure is a provisioning/config problem, so offer a one-click jump to the
|
|
25
|
+
// place it's configured alongside the retry — the same "Configure…" deep-link pattern the
|
|
26
|
+
// infra-setup banners use.
|
|
27
|
+
const isEnvironmentFailure = computed(() => failure.value?.kind === 'environment')
|
|
28
|
+
const DEPLOY_RUNNER_UNWIRED: EnvironmentFailureReason = 'deploy_runner_unwired'
|
|
29
|
+
|
|
30
|
+
// The provision type of the failed run's SERVICE frame (walk up to the frame, mirroring the
|
|
31
|
+
// backend's `resolveServiceProvisioning`). Drives the K8s-specific gate below.
|
|
32
|
+
const provisionType = computed(() => {
|
|
33
|
+
const block = board.getBlock(props.run.blockId)
|
|
34
|
+
return block ? board.serviceOf(block)?.provisioning?.type : undefined
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
// Where the deep-link should land. A `deploy_runner_unwired` cause is fixed by wiring the DEPLOY
|
|
38
|
+
// RUNNER, which is the same self-hosted runner pool that runs agent containers (Infrastructure →
|
|
39
|
+
// "Agent containers" / `runner-pool`) — NOT the environment-provider connection (Infrastructure →
|
|
40
|
+
// "Test environments" / `environment`), where the generic banner would otherwise dead-end. So route
|
|
41
|
+
// that cause to the runner-pool tab on a non-local deployment; local mode's fix is an env var (the
|
|
42
|
+
// hint below, not a UI tab), and every OTHER environment failure is a provider-config problem that
|
|
43
|
+
// belongs on the environment tab.
|
|
44
|
+
const routesToRunnerPool = computed(
|
|
45
|
+
() =>
|
|
46
|
+
isEnvironmentFailure.value &&
|
|
47
|
+
failure.value?.reason === DEPLOY_RUNNER_UNWIRED &&
|
|
48
|
+
auth.localMode?.enabled !== true,
|
|
49
|
+
)
|
|
50
|
+
function openFailureSetup() {
|
|
51
|
+
ui.openProviderConnection(routesToRunnerPool.value ? 'runner-pool' : 'environment')
|
|
52
|
+
}
|
|
53
|
+
const failureSetupLabel = computed(() =>
|
|
54
|
+
routesToRunnerPool.value
|
|
55
|
+
? t('board.failure.deployRunnerSetup')
|
|
56
|
+
: t('board.failure.environmentSetup'),
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
// The env-var hint is Kubernetes+local specific, so gate it precisely rather than showing it for
|
|
60
|
+
// every environment failure: only for the machine-readable `deploy_runner_unwired` cause (NOT a
|
|
61
|
+
// helm/apply error or a transient blip), only in local mode (where the deploy runtime is an env
|
|
62
|
+
// var, not a UI connection the tab could fix), and only for a `kubernetes` provision (so a future
|
|
63
|
+
// Nomad/custom provider triggering the same cause never shows kubectl/kustomize/helm guidance).
|
|
64
|
+
const showEnvironmentLocalHint = computed(
|
|
65
|
+
() =>
|
|
66
|
+
isEnvironmentFailure.value &&
|
|
67
|
+
auth.localMode?.enabled === true &&
|
|
68
|
+
failure.value?.reason === DEPLOY_RUNNER_UNWIRED &&
|
|
69
|
+
provisionType.value === 'kubernetes',
|
|
70
|
+
)
|
|
20
71
|
const title = computed(() => {
|
|
21
72
|
// A `dispatch` failure means the container/runner never accepted the job — say so
|
|
22
73
|
// explicitly rather than the generic "Run failed", and show the verbatim provider
|
|
@@ -83,6 +134,22 @@ async function retry() {
|
|
|
83
134
|
{{ failure.hint }}
|
|
84
135
|
</p>
|
|
85
136
|
|
|
137
|
+
<!-- Local mode only: the deploy runtime is configured via env vars, not a UI connection, so
|
|
138
|
+
name the concrete .env fix rather than only pointing at the (unhelpful-here) tab. -->
|
|
139
|
+
<p
|
|
140
|
+
v-if="showEnvironmentLocalHint && !compact"
|
|
141
|
+
class="mt-1 text-[11px] leading-snug text-rose-400/70"
|
|
142
|
+
data-testid="agent-failure-environment-local-hint"
|
|
143
|
+
>
|
|
144
|
+
{{
|
|
145
|
+
t('board.failure.environmentLocalHint', {
|
|
146
|
+
runtime: 'LOCAL_DEPLOY_RUNTIME',
|
|
147
|
+
native: 'LOCAL_DEPLOY_HARNESS_ENTRY',
|
|
148
|
+
container: 'LOCAL_DEPLOY_IMAGE',
|
|
149
|
+
})
|
|
150
|
+
}}
|
|
151
|
+
</p>
|
|
152
|
+
|
|
86
153
|
<FailureDetail
|
|
87
154
|
v-if="!compact && failure"
|
|
88
155
|
:detail="failure.detail"
|
|
@@ -91,19 +158,38 @@ async function retry() {
|
|
|
91
158
|
pre-class="bg-rose-950/60 text-[10px] text-rose-200/80"
|
|
92
159
|
/>
|
|
93
160
|
|
|
94
|
-
<
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
161
|
+
<div class="mt-2 flex flex-wrap items-center gap-2">
|
|
162
|
+
<button
|
|
163
|
+
type="button"
|
|
164
|
+
class="nodrag flex items-center gap-1 rounded-md bg-rose-900/40 text-rose-200 hover:bg-rose-900/70 disabled:opacity-60"
|
|
165
|
+
:class="compact ? 'px-2 py-0.5 text-[10px]' : 'px-2 py-1 text-[11px]'"
|
|
166
|
+
:disabled="retrying"
|
|
167
|
+
data-testid="agent-failure-retry"
|
|
168
|
+
@click.stop="retry"
|
|
169
|
+
>
|
|
170
|
+
<UIcon
|
|
171
|
+
:name="retrying ? 'i-lucide-loader-circle' : 'i-lucide-rotate-ccw'"
|
|
172
|
+
:class="[compact ? 'h-3 w-3' : 'h-3.5 w-3.5', { 'animate-spin': retrying }]"
|
|
173
|
+
/>
|
|
174
|
+
{{ retrying ? t('board.failure.retrying') : compact ? t('common.retry') : retryLabel }}
|
|
175
|
+
</button>
|
|
176
|
+
|
|
177
|
+
<!-- Environment provisioning failures are almost always a deploy-backend / provider-config
|
|
178
|
+
issue, so link straight to where it's set up rather than leaving the user to hunt. The
|
|
179
|
+
destination + label follow the cause: a `deploy_runner_unwired` failure needs the runner
|
|
180
|
+
pool (Agent containers tab), every other cause needs the environment provider (Test
|
|
181
|
+
environments tab) — see `routesToRunnerPool`. -->
|
|
182
|
+
<button
|
|
183
|
+
v-if="isEnvironmentFailure"
|
|
184
|
+
type="button"
|
|
185
|
+
class="nodrag flex items-center gap-1 rounded-md bg-rose-900/20 text-rose-300 hover:bg-rose-900/50"
|
|
186
|
+
:class="compact ? 'px-2 py-0.5 text-[10px]' : 'px-2 py-1 text-[11px]'"
|
|
187
|
+
data-testid="agent-failure-configure-environment"
|
|
188
|
+
@click.stop="openFailureSetup"
|
|
189
|
+
>
|
|
190
|
+
<UIcon name="i-lucide-settings" :class="compact ? 'h-3 w-3' : 'h-3.5 w-3.5'" />
|
|
191
|
+
{{ failureSetupLabel }}
|
|
192
|
+
</button>
|
|
193
|
+
</div>
|
|
108
194
|
</div>
|
|
109
195
|
</template>
|
|
@@ -137,6 +137,28 @@ async function testSavedKube() {
|
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
+
// Auto-probe a SAVED kube connection as soon as the window shows one, so the operator sees a
|
|
141
|
+
// LIVE verdict instead of a bare "connection established" card that only means a config is
|
|
142
|
+
// stored — the token can have silently expired (a `kubectl create token` token is short-lived)
|
|
143
|
+
// or the cluster been recreated, which the static card would misleadingly present as healthy.
|
|
144
|
+
// Keyed on the stored config so it re-probes after an edit, and resets when disconnected so a
|
|
145
|
+
// reconnect re-probes; the probe reuses the server-side saved token (empty secrets).
|
|
146
|
+
const autoTestedKubeKey = ref<string | null>(null)
|
|
147
|
+
watch(
|
|
148
|
+
kubeHandler,
|
|
149
|
+
(h) => {
|
|
150
|
+
if (!h) {
|
|
151
|
+
autoTestedKubeKey.value = null
|
|
152
|
+
return
|
|
153
|
+
}
|
|
154
|
+
const key = JSON.stringify(h.config)
|
|
155
|
+
if (autoTestedKubeKey.value === key) return
|
|
156
|
+
autoTestedKubeKey.value = key
|
|
157
|
+
void testSavedKube()
|
|
158
|
+
},
|
|
159
|
+
{ immediate: true },
|
|
160
|
+
)
|
|
161
|
+
|
|
140
162
|
async function testKubeOverride(payload: {
|
|
141
163
|
config: KubeHandlerConfig
|
|
142
164
|
secrets: Record<string, string>
|
package/i18n/locales/en.json
CHANGED
|
@@ -297,6 +297,12 @@
|
|
|
297
297
|
"stalled": "Run stalled",
|
|
298
298
|
"retryBootstrap": "Retry bootstrap",
|
|
299
299
|
"retryRun": "Retry run",
|
|
300
|
+
"environmentSetup": "Set up environments",
|
|
301
|
+
"deployRunnerSetup": "Set up runner pool",
|
|
302
|
+
"environmentLocalHint": "Local ephemeral environments need a deploy runtime to run kubectl/kustomize/helm. Set {runtime} in your .env: native mode runs those tools on your host ({native}), container mode runs them in the deploy image ({container}).",
|
|
303
|
+
"@environmentLocalHint": {
|
|
304
|
+
"description": "Shown only in local mode. The {runtime}/{native}/{container} placeholders are injected literal environment-variable names (LOCAL_DEPLOY_RUNTIME etc.) — keep them as placeholders, do not translate. '.env' is a filename, keep it verbatim."
|
|
305
|
+
},
|
|
300
306
|
"showDetail": "Show detail",
|
|
301
307
|
"retrying": "Retrying…",
|
|
302
308
|
"history": {
|
|
@@ -1772,7 +1778,7 @@
|
|
|
1772
1778
|
"remote-kubernetes": "Remote Kubernetes"
|
|
1773
1779
|
},
|
|
1774
1780
|
"kubernetesEngine": {
|
|
1775
|
-
"localK3sHint": "Prefilled for a local k3s/k3d/kind cluster on this machine. Bind a ServiceAccount to a role
|
|
1781
|
+
"localK3sHint": "Prefilled for a local k3s/k3d/kind cluster on this machine. Bind a ServiceAccount to a role and paste a long-lived token below. Note a plain `kubectl create token NAME -n NAMESPACE` token expires in 1 hour: add `--duration=720h` for longer, or create a non-expiring kubernetes.io/service-account-token Secret and read it back. Then choose how the environment URL is derived, and edit the API server URL if your cluster listens on a different port.",
|
|
1776
1782
|
"autoSetup": {
|
|
1777
1783
|
"title": "Auto-setup with the CLI",
|
|
1778
1784
|
"description": "Run this in your terminal to probe or provision a local cluster, mint a ServiceAccount token, and open this form pre-filled. Paste the token it prints, then Test and Save."
|
package/i18n/locales/es.json
CHANGED
|
@@ -276,6 +276,9 @@
|
|
|
276
276
|
"stalled": "La ejecución se estancó",
|
|
277
277
|
"retryBootstrap": "Reintentar arranque",
|
|
278
278
|
"retryRun": "Reintentar ejecución",
|
|
279
|
+
"environmentSetup": "Configurar entornos",
|
|
280
|
+
"deployRunnerSetup": "Configurar pool de runners",
|
|
281
|
+
"environmentLocalHint": "Los entornos efímeros locales necesitan un runtime de despliegue para ejecutar kubectl/kustomize/helm. Define {runtime} en tu .env: el modo nativo ejecuta esas herramientas en tu host ({native}), el modo contenedor las ejecuta en la imagen de despliegue ({container}).",
|
|
279
282
|
"showDetail": "Mostrar detalle",
|
|
280
283
|
"retrying": "Reintentando…",
|
|
281
284
|
"history": {
|
|
@@ -2274,7 +2277,7 @@
|
|
|
2274
2277
|
"remote-kubernetes": "Kubernetes remoto"
|
|
2275
2278
|
},
|
|
2276
2279
|
"kubernetesEngine": {
|
|
2277
|
-
"localK3sHint": "Precargado para un clúster local k3s/k3d/kind en esta máquina. Vincula una ServiceAccount a un rol
|
|
2280
|
+
"localK3sHint": "Precargado para un clúster local k3s/k3d/kind en esta máquina. Vincula una ServiceAccount a un rol y pega abajo un token de larga duración. Ten en cuenta que un token de `kubectl create token NAME -n NAMESPACE` simple caduca en 1 hora: añade `--duration=720h` para que dure más, o crea un Secret kubernetes.io/service-account-token que no caduca y léelo. Luego elige cómo se deriva la URL del entorno y edita la URL del API server si tu clúster escucha en otro puerto.",
|
|
2278
2281
|
"autoSetup": {
|
|
2279
2282
|
"title": "Configuración automática con la CLI",
|
|
2280
2283
|
"description": "Ejecútalo en tu terminal para detectar o aprovisionar un clúster local, generar un token de ServiceAccount y abrir este formulario ya rellenado. Pega el token que muestra y luego pulsa Probar y Guardar."
|
package/i18n/locales/fr.json
CHANGED
|
@@ -276,6 +276,9 @@
|
|
|
276
276
|
"stalled": "L’exécution est bloquée",
|
|
277
277
|
"retryBootstrap": "Relancer l’initialisation",
|
|
278
278
|
"retryRun": "Relancer l’exécution",
|
|
279
|
+
"environmentSetup": "Configurer les environnements",
|
|
280
|
+
"deployRunnerSetup": "Configurer le pool de runners",
|
|
281
|
+
"environmentLocalHint": "Les environnements éphémères locaux nécessitent un runtime de déploiement pour exécuter kubectl/kustomize/helm. Définissez {runtime} dans votre .env : le mode natif exécute ces outils sur votre hôte ({native}), le mode conteneur les exécute dans l'image de déploiement ({container}).",
|
|
279
282
|
"showDetail": "Afficher le détail",
|
|
280
283
|
"retrying": "Nouvelle tentative…",
|
|
281
284
|
"history": {
|
|
@@ -2274,7 +2277,7 @@
|
|
|
2274
2277
|
"remote-kubernetes": "Kubernetes distant"
|
|
2275
2278
|
},
|
|
2276
2279
|
"kubernetesEngine": {
|
|
2277
|
-
"localK3sHint": "Prérempli pour un cluster local k3s/k3d/kind sur cette machine. Liez un ServiceAccount à un rôle
|
|
2280
|
+
"localK3sHint": "Prérempli pour un cluster local k3s/k3d/kind sur cette machine. Liez un ServiceAccount à un rôle et collez ci-dessous un token de longue durée. Notez qu'un token `kubectl create token NAME -n NAMESPACE` simple expire au bout d'1 heure : ajoutez `--duration=720h` pour prolonger sa durée, ou créez un Secret kubernetes.io/service-account-token qui n'expire pas et relisez-le. Choisissez ensuite comment l'URL de l'environnement est dérivée, et modifiez l'URL de l'API server si votre cluster écoute sur un autre port.",
|
|
2278
2281
|
"autoSetup": {
|
|
2279
2282
|
"title": "Configuration automatique avec la CLI",
|
|
2280
2283
|
"description": "Exécutez-le dans votre terminal pour détecter ou provisionner un cluster local, générer un jeton de ServiceAccount et ouvrir ce formulaire prérempli. Collez le jeton affiché, puis cliquez sur Tester et Enregistrer."
|
package/i18n/locales/he.json
CHANGED
|
@@ -276,6 +276,9 @@
|
|
|
276
276
|
"stalled": "הריצה נתקעה",
|
|
277
277
|
"retryBootstrap": "נסה שוב לאתחל",
|
|
278
278
|
"retryRun": "נסה שוב להריץ",
|
|
279
|
+
"environmentSetup": "הגדרת סביבות",
|
|
280
|
+
"deployRunnerSetup": "הגדרת מאגר ראנרים",
|
|
281
|
+
"environmentLocalHint": "סביבות זמניות מקומיות זקוקות לזמן ריצה לפריסה כדי להריץ את kubectl/kustomize/helm. הגדירו את {runtime} בקובץ ה-.env שלכם: מצב מקורי מריץ את הכלים האלה על המארח שלכם ({native}), מצב מכולה מריץ אותם בתוך תמונת הפריסה ({container}).",
|
|
279
282
|
"showDetail": "הצג פרטים",
|
|
280
283
|
"retrying": "מנסה שוב…",
|
|
281
284
|
"history": {
|
|
@@ -1725,7 +1728,7 @@
|
|
|
1725
1728
|
"remote-kubernetes": "Kubernetes מרוחק"
|
|
1726
1729
|
},
|
|
1727
1730
|
"kubernetesEngine": {
|
|
1728
|
-
"localK3sHint": "מולא מראש עבור אשכול k3s/k3d/kind מקומי במחשב הזה. קשרו ServiceAccount
|
|
1731
|
+
"localK3sHint": "מולא מראש עבור אשכול k3s/k3d/kind מקומי במחשב הזה. קשרו ServiceAccount לתפקיד והדביקו למטה token בעל תוקף ארוך. שימו לב ש-token רגיל מ-`kubectl create token NAME -n NAMESPACE` פג תוקף לאחר שעה אחת: הוסיפו `--duration=720h` לתוקף ארוך יותר, או צרו Secret מסוג kubernetes.io/service-account-token שאינו פג וקראו אותו. לאחר מכן בחרו כיצד נגזרת כתובת ה-URL של הסביבה, וערכו את כתובת ה-API server אם האשכול שלכם מאזין ביציאה אחרת.",
|
|
1729
1732
|
"autoSetup": {
|
|
1730
1733
|
"title": "הגדרה אוטומטית באמצעות ה-CLI",
|
|
1731
1734
|
"description": "הרץ זאת בטרמינל כדי לזהות או להקצות אשכול מקומי, ליצור אסימון ServiceAccount ולפתוח טופס זה כשהוא ממולא מראש. הדבק את האסימון המוצג, ולאחר מכן בצע בדיקה ושמירה."
|
package/i18n/locales/ja.json
CHANGED
|
@@ -276,6 +276,9 @@
|
|
|
276
276
|
"stalled": "実行が停止しました",
|
|
277
277
|
"retryBootstrap": "ブートストラップを再試行",
|
|
278
278
|
"retryRun": "実行を再試行",
|
|
279
|
+
"environmentSetup": "環境をセットアップ",
|
|
280
|
+
"deployRunnerSetup": "ランナープールをセットアップ",
|
|
281
|
+
"environmentLocalHint": "ローカルの一時環境では、kubectl/kustomize/helm を実行するためにデプロイランタイムが必要です。.env に {runtime} を設定してください。ネイティブモードはこれらのツールをホスト上で実行し({native})、コンテナモードはデプロイイメージ内で実行します({container})。",
|
|
279
282
|
"showDetail": "詳細を表示",
|
|
280
283
|
"retrying": "再試行中…",
|
|
281
284
|
"history": {
|
|
@@ -1726,7 +1729,7 @@
|
|
|
1726
1729
|
"remote-kubernetes": "リモート Kubernetes"
|
|
1727
1730
|
},
|
|
1728
1731
|
"kubernetesEngine": {
|
|
1729
|
-
"localK3sHint": "このマシン上のローカル k3s/k3d/kind クラスター向けにあらかじめ入力されています。ServiceAccount
|
|
1732
|
+
"localK3sHint": "このマシン上のローカル k3s/k3d/kind クラスター向けにあらかじめ入力されています。ServiceAccount をロールにバインドし、長期間有効なトークンを下記に貼り付けてください。通常の `kubectl create token NAME -n NAMESPACE` のトークンは1時間で失効する点に注意してください。より長くするには `--duration=720h` を付け、失効しないトークンが必要な場合は kubernetes.io/service-account-token の Secret を作成して読み取ってください。その後、環境 URL の導出方法を選択し、クラスターが別のポートで待ち受けている場合は API サーバー URL を編集してください。",
|
|
1730
1733
|
"autoSetup": {
|
|
1731
1734
|
"title": "CLI による自動セットアップ",
|
|
1732
1735
|
"description": "これをターミナルで実行すると、ローカルクラスターを検出またはプロビジョニングし、ServiceAccount トークンを生成して、このフォームを事前入力した状態で開きます。表示されたトークンを貼り付けてから、テストして保存してください。"
|
package/i18n/locales/pl.json
CHANGED
|
@@ -276,6 +276,9 @@
|
|
|
276
276
|
"stalled": "Uruchomienie utknęło",
|
|
277
277
|
"retryBootstrap": "Ponów inicjalizację",
|
|
278
278
|
"retryRun": "Ponów uruchomienie",
|
|
279
|
+
"environmentSetup": "Skonfiguruj środowiska",
|
|
280
|
+
"deployRunnerSetup": "Skonfiguruj pulę runnerów",
|
|
281
|
+
"environmentLocalHint": "Lokalne środowiska tymczasowe wymagają środowiska uruchomieniowego wdrożenia do uruchomienia kubectl/kustomize/helm. Ustaw {runtime} w pliku .env: tryb natywny uruchamia te narzędzia na twoim hoście ({native}), tryb kontenerowy uruchamia je w obrazie wdrożeniowym ({container}).",
|
|
279
282
|
"showDetail": "Pokaż szczegóły",
|
|
280
283
|
"retrying": "Ponawianie…",
|
|
281
284
|
"history": {
|
|
@@ -2274,7 +2277,7 @@
|
|
|
2274
2277
|
"remote-kubernetes": "Zdalny Kubernetes"
|
|
2275
2278
|
},
|
|
2276
2279
|
"kubernetesEngine": {
|
|
2277
|
-
"localK3sHint": "Wstępnie wypełnione dla lokalnego klastra k3s/k3d/kind na tym komputerze. Powiąż ServiceAccount z
|
|
2280
|
+
"localK3sHint": "Wstępnie wypełnione dla lokalnego klastra k3s/k3d/kind na tym komputerze. Powiąż ServiceAccount z rolą i wklej poniżej token o długim czasie ważności. Pamiętaj, że zwykły token z `kubectl create token NAME -n NAMESPACE` wygasa po 1 godzinie: dodaj `--duration=720h`, aby wydłużyć jego ważność, albo utwórz niewygasający Secret kubernetes.io/service-account-token i odczytaj go. Następnie wybierz sposób ustalania adresu URL środowiska i zmień URL serwera API, jeśli Twój klaster nasłuchuje na innym porcie.",
|
|
2278
2281
|
"autoSetup": {
|
|
2279
2282
|
"title": "Automatyczna konfiguracja przez CLI",
|
|
2280
2283
|
"description": "Uruchom to w terminalu, aby wykryć lub udostępnić lokalny klaster, wygenerować token ServiceAccount i otworzyć ten formularz wstępnie wypełniony. Wklej wyświetlony token, a następnie kliknij Przetestuj i Zapisz."
|
package/i18n/locales/tr.json
CHANGED
|
@@ -276,6 +276,9 @@
|
|
|
276
276
|
"stalled": "Çalıştırma askıda kaldı",
|
|
277
277
|
"retryBootstrap": "Bootstrap'ı yeniden dene",
|
|
278
278
|
"retryRun": "Çalıştırmayı yeniden dene",
|
|
279
|
+
"environmentSetup": "Ortamları yapılandır",
|
|
280
|
+
"deployRunnerSetup": "Runner havuzunu yapılandır",
|
|
281
|
+
"environmentLocalHint": "Yerel geçici ortamlar, kubectl/kustomize/helm çalıştırmak için bir dağıtım çalışma zamanı gerektirir. .env dosyanızda {runtime} değerini ayarlayın: yerel mod bu araçları ana makinenizde çalıştırır ({native}), konteyner modu bunları dağıtım imajında çalıştırır ({container}).",
|
|
279
282
|
"showDetail": "Ayrıntıyı göster",
|
|
280
283
|
"retrying": "Yeniden deneniyor…",
|
|
281
284
|
"history": {
|
|
@@ -1726,7 +1729,7 @@
|
|
|
1726
1729
|
"remote-kubernetes": "Uzak Kubernetes"
|
|
1727
1730
|
},
|
|
1728
1731
|
"kubernetesEngine": {
|
|
1729
|
-
"localK3sHint": "Bu makinedeki yerel bir k3s/k3d/kind kümesi için önceden dolduruldu. Bir ServiceAccount'u bir role bağlayın
|
|
1732
|
+
"localK3sHint": "Bu makinedeki yerel bir k3s/k3d/kind kümesi için önceden dolduruldu. Bir ServiceAccount'u bir role bağlayın ve aşağıya uzun ömürlü bir token yapıştırın. Düz bir `kubectl create token NAME -n NAMESPACE` token'ının 1 saatte sona erdiğini unutmayın: daha uzun ömür için `--duration=720h` ekleyin veya süresi dolmayan bir kubernetes.io/service-account-token Secret oluşturup okuyun. Ardından ortam URL'sinin nasıl türetileceğini seçin ve kümeniz farklı bir bağlantı noktasını dinliyorsa API sunucu URL'sini düzenleyin.",
|
|
1730
1733
|
"autoSetup": {
|
|
1731
1734
|
"title": "CLI ile otomatik kurulum",
|
|
1732
1735
|
"description": "Yerel bir kümeyi algılamak veya sağlamak, bir ServiceAccount belirteci oluşturmak ve bu formu önceden doldurulmuş olarak açmak için bunu terminalinizde çalıştırın. Yazdırdığı belirteci yapıştırın, ardından Test edin ve Kaydedin."
|
package/i18n/locales/uk.json
CHANGED
|
@@ -276,6 +276,9 @@
|
|
|
276
276
|
"stalled": "Запуск завис",
|
|
277
277
|
"retryBootstrap": "Повторити ініціалізацію",
|
|
278
278
|
"retryRun": "Повторити запуск",
|
|
279
|
+
"environmentSetup": "Налаштувати середовища",
|
|
280
|
+
"deployRunnerSetup": "Налаштувати пул раннерів",
|
|
281
|
+
"environmentLocalHint": "Локальні тимчасові середовища потребують середовища виконання розгортання для запуску kubectl/kustomize/helm. Встановіть {runtime} у вашому .env: нативний режим запускає ці інструменти на вашому хості ({native}), режим контейнера запускає їх в образі розгортання ({container}).",
|
|
279
282
|
"showDetail": "Показати деталі",
|
|
280
283
|
"retrying": "Повторення…",
|
|
281
284
|
"history": {
|
|
@@ -2274,7 +2277,7 @@
|
|
|
2274
2277
|
"remote-kubernetes": "Віддалений Kubernetes"
|
|
2275
2278
|
},
|
|
2276
2279
|
"kubernetesEngine": {
|
|
2277
|
-
"localK3sHint": "Попередньо заповнено для локального кластера k3s/k3d/kind на цьому комп'ютері. Прив'яжіть ServiceAccount до
|
|
2280
|
+
"localK3sHint": "Попередньо заповнено для локального кластера k3s/k3d/kind на цьому комп'ютері. Прив'яжіть ServiceAccount до ролі та вставте нижче токен із тривалим терміном дії. Зверніть увагу, що звичайний токен від `kubectl create token NAME -n NAMESPACE` втрачає чинність через 1 годину: додайте `--duration=720h`, щоб подовжити термін, або створіть Secret типу kubernetes.io/service-account-token, який не має терміну дії, і прочитайте його. Потім виберіть, як визначається URL середовища, і змініть URL сервера API, якщо ваш кластер слухає на іншому порту.",
|
|
2278
2281
|
"autoSetup": {
|
|
2279
2282
|
"title": "Автоматичне налаштування через CLI",
|
|
2280
2283
|
"description": "Запустіть це в терміналі, щоб виявити або підготувати локальний кластер, згенерувати токен ServiceAccount і відкрити цю форму заздалегідь заповненою. Вставте показаний токен, потім натисніть «Перевірити» та «Зберегти»."
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.100.
|
|
3
|
+
"version": "0.100.3",
|
|
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.110.
|
|
37
|
+
"@cat-factory/contracts": "0.110.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@toad-contracts/testing": "0.3.2",
|