@cat-factory/app 0.153.4 → 0.154.1
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/panels/inspector/ServiceTestConfig.vue +48 -10
- package/app/components/settings/ApiTokensPanel.vue +8 -4
- package/app/components/settings/WorkspaceSettingsPanel.vue +19 -0
- package/app/composables/useRunDeepLink.spec.ts +51 -0
- package/app/composables/useRunDeepLink.ts +91 -0
- package/app/pages/index.vue +4 -0
- package/app/stores/workspaceSettings.ts +1 -0
- package/i18n/locales/de.json +8 -0
- package/i18n/locales/en.json +8 -0
- package/i18n/locales/es.json +8 -0
- package/i18n/locales/fr.json +8 -0
- package/i18n/locales/he.json +8 -0
- package/i18n/locales/it.json +8 -0
- package/i18n/locales/ja.json +8 -0
- package/i18n/locales/pl.json +8 -0
- package/i18n/locales/tr.json +8 -0
- package/i18n/locales/uk.json +8 -0
- package/package.json +2 -2
|
@@ -255,7 +255,15 @@ async function generateOrFixManifest() {
|
|
|
255
255
|
// it failed at. The returned run is tracked live (by frame id) via the workspace stream store.
|
|
256
256
|
const envTest = useEnvironmentTestStore()
|
|
257
257
|
const envTestStarting = ref(false)
|
|
258
|
-
|
|
258
|
+
// The self-test's start/stop error. Structured (not a bare string) so the not-provisionable case
|
|
259
|
+
// can render its remedy prose PLUS a one-click jump to the environment-handler config; every other
|
|
260
|
+
// case is plain text.
|
|
261
|
+
interface EnvTestError {
|
|
262
|
+
text: string
|
|
263
|
+
/** Show the "Configure infrastructure" deep-link — only the not-provisionable handler case. */
|
|
264
|
+
configurable?: boolean
|
|
265
|
+
}
|
|
266
|
+
const envTestError = ref<EnvTestError | null>(null)
|
|
259
267
|
// The newest self-test run for this frame — re-attaches after a reconnect (the run is carried in
|
|
260
268
|
// the snapshot while running), so the live stage keeps showing without a locally-held id.
|
|
261
269
|
const envTestRun = computed(() => envTest.runForBlock(props.block.id))
|
|
@@ -291,14 +299,30 @@ const ENV_TEST_CONFLICT_KEYS: Record<Extract<ConflictReason, `env_test_${string}
|
|
|
291
299
|
env_test_no_vcs: 'errors.conflict.title.env_test_no_vcs',
|
|
292
300
|
}
|
|
293
301
|
|
|
294
|
-
function
|
|
295
|
-
const
|
|
302
|
+
function buildEnvTestError(e: unknown): EnvTestError {
|
|
303
|
+
const parsed = parseConflict(e)
|
|
304
|
+
const reason = parsed?.reason
|
|
305
|
+
// No workspace handler resolves for the service's provision type. Word the SPECIFIC case —
|
|
306
|
+
// nothing configured vs. an ambiguous match (carried on `details.handlerIssue`, distinct from the
|
|
307
|
+
// `env_test_not_provisionable` code) — and offer the one-click jump to the Infrastructure →
|
|
308
|
+
// Test-environments handler config.
|
|
309
|
+
if (reason === 'env_test_not_provisionable') {
|
|
310
|
+
const ambiguous = parsed?.details.handlerIssue === 'type-mismatch'
|
|
311
|
+
return {
|
|
312
|
+
text: t(
|
|
313
|
+
ambiguous
|
|
314
|
+
? 'errors.conflict.description.env_test_not_provisionable_type_mismatch'
|
|
315
|
+
: 'errors.conflict.description.env_test_not_provisionable_no_handler',
|
|
316
|
+
),
|
|
317
|
+
configurable: true,
|
|
318
|
+
}
|
|
319
|
+
}
|
|
296
320
|
const key =
|
|
297
321
|
reason && reason in ENV_TEST_CONFLICT_KEYS
|
|
298
322
|
? ENV_TEST_CONFLICT_KEYS[reason as keyof typeof ENV_TEST_CONFLICT_KEYS]
|
|
299
323
|
: undefined
|
|
300
|
-
if (key && te(key)) return t(key)
|
|
301
|
-
return apiErrorEnvelope(e)?.message ?? (e instanceof Error ? e.message : String(e))
|
|
324
|
+
if (key && te(key)) return { text: t(key) }
|
|
325
|
+
return { text: apiErrorEnvelope(e)?.message ?? (e instanceof Error ? e.message : String(e)) }
|
|
302
326
|
}
|
|
303
327
|
|
|
304
328
|
async function startEnvTest() {
|
|
@@ -308,7 +332,7 @@ async function startEnvTest() {
|
|
|
308
332
|
try {
|
|
309
333
|
await envTest.start(props.block.id)
|
|
310
334
|
} catch (e) {
|
|
311
|
-
envTestError.value =
|
|
335
|
+
envTestError.value = buildEnvTestError(e)
|
|
312
336
|
} finally {
|
|
313
337
|
envTestStarting.value = false
|
|
314
338
|
}
|
|
@@ -320,7 +344,7 @@ async function stopEnvTest() {
|
|
|
320
344
|
try {
|
|
321
345
|
await envTest.stop(run.id)
|
|
322
346
|
} catch (e) {
|
|
323
|
-
envTestError.value =
|
|
347
|
+
envTestError.value = buildEnvTestError(e)
|
|
324
348
|
}
|
|
325
349
|
}
|
|
326
350
|
|
|
@@ -1072,9 +1096,23 @@ function setSize(value: InstanceSize) {
|
|
|
1072
1096
|
</template>
|
|
1073
1097
|
</p>
|
|
1074
1098
|
|
|
1075
|
-
<
|
|
1076
|
-
{{ envTestError }}
|
|
1077
|
-
|
|
1099
|
+
<div v-if="envTestError" class="text-[11px] text-rose-400" data-testid="env-test-error">
|
|
1100
|
+
<p>{{ envTestError.text }}</p>
|
|
1101
|
+
<!-- Only the not-provisionable handler case is one-click fixable: jump to Infrastructure →
|
|
1102
|
+
Test environments, where the workspace's per-type environment handler is registered. -->
|
|
1103
|
+
<UButton
|
|
1104
|
+
v-if="envTestError.configurable"
|
|
1105
|
+
class="mt-1.5"
|
|
1106
|
+
icon="i-lucide-settings"
|
|
1107
|
+
size="xs"
|
|
1108
|
+
color="neutral"
|
|
1109
|
+
variant="soft"
|
|
1110
|
+
data-testid="env-test-configure-handler"
|
|
1111
|
+
@click="ui.openProviderConnection('environment')"
|
|
1112
|
+
>
|
|
1113
|
+
{{ t('errors.conflict.action.configureInfrastructure') }}
|
|
1114
|
+
</UButton>
|
|
1115
|
+
</div>
|
|
1078
1116
|
</div>
|
|
1079
1117
|
</InspectorSection>
|
|
1080
1118
|
</template>
|
|
@@ -11,10 +11,12 @@ import CopyButton from '~/components/common/CopyButton.vue'
|
|
|
11
11
|
|
|
12
12
|
const { t, d } = useI18n()
|
|
13
13
|
|
|
14
|
-
// The permission ladder a minted key can carry (read ⊂ write ⊂ admin), mirroring the
|
|
15
|
-
// contract. A `read` key can only observe; `write` adds create/start/manage; `
|
|
16
|
-
//
|
|
17
|
-
|
|
14
|
+
// The permission ladder a minted key can carry (read ⊂ write ⊂ decide ⊂ admin), mirroring the
|
|
15
|
+
// backend contract. A `read` key can only observe; `write` adds create/start/manage; `decide` adds
|
|
16
|
+
// answering a run's PARKED human decisions (and, because of that, starting a headless run on a
|
|
17
|
+
// pipeline that can park at all); `admin` adds the destructive/merge-adjacent operations (e.g.
|
|
18
|
+
// deleting a task).
|
|
19
|
+
const SCOPES: PublicApiScope[] = ['read', 'write', 'decide', 'admin']
|
|
18
20
|
|
|
19
21
|
/** Localized label for a scope — an exhaustive switch, so a new scope is a compile error here. */
|
|
20
22
|
function scopeLabel(scope: PublicApiScope): string {
|
|
@@ -23,6 +25,8 @@ function scopeLabel(scope: PublicApiScope): string {
|
|
|
23
25
|
return t('settings.apiTokens.scopes.read')
|
|
24
26
|
case 'write':
|
|
25
27
|
return t('settings.apiTokens.scopes.write')
|
|
28
|
+
case 'decide':
|
|
29
|
+
return t('settings.apiTokens.scopes.decide')
|
|
26
30
|
case 'admin':
|
|
27
31
|
return t('settings.apiTokens.scopes.admin')
|
|
28
32
|
}
|
|
@@ -149,6 +149,7 @@ const draft = reactive({
|
|
|
149
149
|
taskLimitShared: 5 as number,
|
|
150
150
|
perType: {} as Record<LimitTaskType, number>,
|
|
151
151
|
storeAgentContext: true,
|
|
152
|
+
publishPrVerificationReport: true,
|
|
152
153
|
artifactRetentionDays: 14,
|
|
153
154
|
kaizenEnabled: true,
|
|
154
155
|
reviewFrictionMode: 'off' as ReviewFrictionMode,
|
|
@@ -167,6 +168,7 @@ function hydrate() {
|
|
|
167
168
|
const pt = s.taskLimitPerType ?? {}
|
|
168
169
|
for (const t of TASK_TYPES) draft.perType[t] = pt[t] ?? 3
|
|
169
170
|
draft.storeAgentContext = s.storeAgentContext
|
|
171
|
+
draft.publishPrVerificationReport = s.publishPrVerificationReport
|
|
170
172
|
draft.artifactRetentionDays = s.artifactRetentionDays
|
|
171
173
|
draft.kaizenEnabled = s.kaizenEnabled
|
|
172
174
|
draft.reviewFrictionMode = s.reviewFrictionMode
|
|
@@ -222,6 +224,7 @@ async function save() {
|
|
|
222
224
|
)
|
|
223
225
|
: null,
|
|
224
226
|
storeAgentContext: draft.storeAgentContext,
|
|
227
|
+
publishPrVerificationReport: draft.publishPrVerificationReport,
|
|
225
228
|
artifactRetentionDays: draft.artifactRetentionDays,
|
|
226
229
|
kaizenEnabled: draft.kaizenEnabled,
|
|
227
230
|
reviewFrictionMode: draft.reviewFrictionMode,
|
|
@@ -421,6 +424,22 @@ async function save() {
|
|
|
421
424
|
</label>
|
|
422
425
|
</section>
|
|
423
426
|
|
|
427
|
+
<!-- Engine-maintained PR verification report -->
|
|
428
|
+
<section class="space-y-2">
|
|
429
|
+
<h3 class="text-sm font-semibold text-slate-200">
|
|
430
|
+
{{ t('settings.workspaceSettings.prReport.heading') }}
|
|
431
|
+
</h3>
|
|
432
|
+
<p class="text-[11px] text-slate-400">
|
|
433
|
+
{{ t('settings.workspaceSettings.prReport.body') }}
|
|
434
|
+
</p>
|
|
435
|
+
<label class="flex items-center gap-2">
|
|
436
|
+
<USwitch v-model="draft.publishPrVerificationReport" size="sm" />
|
|
437
|
+
<span class="text-sm text-slate-200">{{
|
|
438
|
+
t('settings.workspaceSettings.prReport.toggle')
|
|
439
|
+
}}</span>
|
|
440
|
+
</label>
|
|
441
|
+
</section>
|
|
442
|
+
|
|
424
443
|
<!-- Visual-confirmation artifact retention -->
|
|
425
444
|
<section class="space-y-2">
|
|
426
445
|
<h3 class="text-sm font-semibold text-slate-200">
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { createPinia, setActivePinia } from 'pinia'
|
|
2
|
+
import { beforeEach, describe, expect, it } from 'vitest'
|
|
3
|
+
import { captureRunDeepLink } from './useRunDeepLink'
|
|
4
|
+
|
|
5
|
+
/** Point `window.location` + `history` at a URL the capture can read and rewrite. */
|
|
6
|
+
function setUrl(search: string): void {
|
|
7
|
+
history.replaceState(null, '', `/${search}`)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
describe('captureRunDeepLink', () => {
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
setActivePinia(createPinia())
|
|
13
|
+
setUrl('')
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
it('returns null when the URL carries no run link', () => {
|
|
17
|
+
setUrl('?other=1')
|
|
18
|
+
expect(captureRunDeepLink()).toBeNull()
|
|
19
|
+
// An unrelated param is left alone.
|
|
20
|
+
expect(window.location.search).toBe('?other=1')
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it('parses the report link the engine emits', () => {
|
|
24
|
+
setUrl('?ws=ws_1&block=blk_1&run=exec_1&view=observability')
|
|
25
|
+
expect(captureRunDeepLink()).toEqual({
|
|
26
|
+
workspaceId: 'ws_1',
|
|
27
|
+
blockId: 'blk_1',
|
|
28
|
+
runId: 'exec_1',
|
|
29
|
+
view: 'observability',
|
|
30
|
+
})
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
it('strips its own params so a reload does not re-open the panel', () => {
|
|
34
|
+
setUrl('?ws=ws_1&run=exec_1&view=observability&keep=yes')
|
|
35
|
+
captureRunDeepLink()
|
|
36
|
+
// Only the link's own params are consumed; anything else survives.
|
|
37
|
+
expect(window.location.search).toBe('?keep=yes')
|
|
38
|
+
// …and a second read finds nothing left to replay.
|
|
39
|
+
expect(captureRunDeepLink()).toBeNull()
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('tolerates a partial link (run id alone still resolves)', () => {
|
|
43
|
+
setUrl('?run=exec_1')
|
|
44
|
+
expect(captureRunDeepLink()).toEqual({
|
|
45
|
+
workspaceId: null,
|
|
46
|
+
blockId: null,
|
|
47
|
+
runId: 'exec_1',
|
|
48
|
+
view: null,
|
|
49
|
+
})
|
|
50
|
+
})
|
|
51
|
+
})
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boot-time replay of a RUN deep link — `?ws=<id>&block=<id>&run=<id>&view=observability`.
|
|
3
|
+
*
|
|
4
|
+
* The engine's PR verification report links each PR back to the run's observability panel
|
|
5
|
+
* (Model activity / Provided context), built from the deployment's public app URL. The SPA is a
|
|
6
|
+
* single canvas with no URL identity for anything, so this is the narrow consumer that makes
|
|
7
|
+
* that link resolve: pin the board before the snapshot loads, then — once the board is ready —
|
|
8
|
+
* select the task and open the panel for the run.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately narrow. The GENERAL parser (every entity, every window, plus state→URL sync) is
|
|
11
|
+
* slice 4 of `docs/initiatives/global-search-and-deep-links.md`; when it lands, this composable
|
|
12
|
+
* is deleted rather than kept alongside it.
|
|
13
|
+
*/
|
|
14
|
+
import { watch } from 'vue'
|
|
15
|
+
import { useUiStore } from '../stores/ui'
|
|
16
|
+
import { useWorkspaceStore } from '../stores/workspace'
|
|
17
|
+
|
|
18
|
+
/** The parsed link, or null when the URL carried none. */
|
|
19
|
+
interface PendingRunLink {
|
|
20
|
+
workspaceId: string | null
|
|
21
|
+
blockId: string | null
|
|
22
|
+
runId: string
|
|
23
|
+
view: string | null
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const RUN_LINK_PARAMS = ['ws', 'block', 'run', 'view'] as const
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Read (and strip) a run deep link from the current URL. Called BEFORE `workspace.init()` so
|
|
30
|
+
* the pinned board id is in place when `resolveActiveBoard` picks which board to open. The
|
|
31
|
+
* params are removed from the URL — mirroring the `?invite=` / `?infraSetup=` handling — so a
|
|
32
|
+
* reload doesn't re-open the panel and the link isn't left sitting in history.
|
|
33
|
+
*/
|
|
34
|
+
export function captureRunDeepLink(): PendingRunLink | null {
|
|
35
|
+
if (typeof window === 'undefined') return null
|
|
36
|
+
const params = new URLSearchParams(window.location.search)
|
|
37
|
+
const runId = params.get('run')
|
|
38
|
+
if (!runId) return null
|
|
39
|
+
|
|
40
|
+
const link: PendingRunLink = {
|
|
41
|
+
workspaceId: params.get('ws'),
|
|
42
|
+
blockId: params.get('block'),
|
|
43
|
+
runId,
|
|
44
|
+
view: params.get('view'),
|
|
45
|
+
}
|
|
46
|
+
for (const key of RUN_LINK_PARAMS) params.delete(key)
|
|
47
|
+
const qs = params.toString()
|
|
48
|
+
history.replaceState(null, '', window.location.pathname + (qs ? `?${qs}` : ''))
|
|
49
|
+
return link
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Capture a run deep link and, once the board has hydrated, apply it. Returns nothing; the
|
|
54
|
+
* caller mounts it once, next to `workspace.init()`.
|
|
55
|
+
*
|
|
56
|
+
* Applying WAITS for `workspace.ready`: opening the panel against a half-loaded board would
|
|
57
|
+
* read an execution the snapshot hasn't delivered yet. The watcher is one-shot — a later
|
|
58
|
+
* refresh must not re-open a panel the user closed.
|
|
59
|
+
*/
|
|
60
|
+
export function useRunDeepLink(): void {
|
|
61
|
+
const link = captureRunDeepLink()
|
|
62
|
+
if (!link) return
|
|
63
|
+
|
|
64
|
+
const workspace = useWorkspaceStore()
|
|
65
|
+
const ui = useUiStore()
|
|
66
|
+
|
|
67
|
+
// Pin the board the link names BEFORE init resolves the active one, so the run's own board
|
|
68
|
+
// opens rather than whichever one was last used on this device.
|
|
69
|
+
if (link.workspaceId) workspace.workspaceId = link.workspaceId
|
|
70
|
+
|
|
71
|
+
// Applied at most once — a later refresh must not re-open a panel the user closed. The guard
|
|
72
|
+
// is a flag rather than `{ once: true }` (which would burn the single run on the immediate
|
|
73
|
+
// not-ready tick and never navigate) and `stop` is a `let` rather than a `const` (with
|
|
74
|
+
// `immediate`, the callback runs synchronously BEFORE the binding initialises, so an
|
|
75
|
+
// already-hydrated board would hit the temporal dead zone instead of navigating).
|
|
76
|
+
let applied = false
|
|
77
|
+
let stop: (() => void) | undefined
|
|
78
|
+
stop = watch(
|
|
79
|
+
() => workspace.ready,
|
|
80
|
+
(ready) => {
|
|
81
|
+
if (!ready || applied) return
|
|
82
|
+
applied = true
|
|
83
|
+
if (link.blockId) ui.select(link.blockId)
|
|
84
|
+
// `observability` is the only view this narrow parser serves — an unknown view still
|
|
85
|
+
// lands the user on the right board and task rather than failing the navigation.
|
|
86
|
+
if (link.view === 'observability') ui.openObservability(link.runId)
|
|
87
|
+
stop?.()
|
|
88
|
+
},
|
|
89
|
+
{ immediate: true },
|
|
90
|
+
)
|
|
91
|
+
}
|
package/app/pages/index.vue
CHANGED
|
@@ -145,6 +145,10 @@ useKeyboardShortcuts()
|
|
|
145
145
|
|
|
146
146
|
// Load the board from the backend before rendering it.
|
|
147
147
|
onMounted(() => {
|
|
148
|
+
// Consume a run deep link (`?ws=…&block=…&run=…&view=observability`) BEFORE init, so the
|
|
149
|
+
// board it names is the one that opens. This is what makes the observability link on an
|
|
150
|
+
// engine-published PR verification report resolve.
|
|
151
|
+
useRunDeepLink()
|
|
148
152
|
void workspace.init()
|
|
149
153
|
// Honour a `cat-factory k3s` CLI hand-off (`?infraSetup=local-k3s&…`): open the Infrastructure
|
|
150
154
|
// window pre-seeded with the provisioned connection so the user only pastes the token + saves.
|
package/i18n/locales/de.json
CHANGED
|
@@ -550,6 +550,7 @@
|
|
|
550
550
|
"scopes": {
|
|
551
551
|
"read": "Nur Lesen",
|
|
552
552
|
"write": "Lesen und Schreiben",
|
|
553
|
+
"decide": "Antworten auf Entscheidungen",
|
|
553
554
|
"admin": "Vollzugriff"
|
|
554
555
|
},
|
|
555
556
|
"toast": {
|
|
@@ -760,6 +761,11 @@
|
|
|
760
761
|
"body": "Speichere den vollständigen Kontext, der jedem Agenten bereitgestellt wird: die zusammengesetzten Prompts, die eingefügten Best-Practice-Fragmente und den vollständigen Inhalt der in seinen Container injizierten Dateien, sodass er später in der Observability-Ansicht inspiziert werden kann. Die Inhalte werden für denselben Zeitraum wie die LLM-Telemetrie pro Aufruf aufbewahrt. Deaktivieren, um die Speicherung zu stoppen (bestehende Snapshots werden durch die Aufbewahrung bereinigt).",
|
|
761
762
|
"toggle": "Vollständigen Agentenkontext speichern"
|
|
762
763
|
},
|
|
764
|
+
"prReport": {
|
|
765
|
+
"heading": "Verifizierungsbericht im Pull Request",
|
|
766
|
+
"body": "Pflegt einen Verifizierungsbericht im Pull Request jedes Laufs: das CI-Ergebnis, den Bericht des Testers, den Lebenszyklus der kurzlebigen Umgebung und die Merge-Bewertung – als erfasste Fakten statt als Behauptungen des Agenten. Zugangsdaten werden vor dem Schreiben entfernt. Zum Beenden ausschalten; ein bereits vorhandener Bericht bleibt unverändert.",
|
|
767
|
+
"toggle": "Verifizierungsbericht in Pull Requests veröffentlichen"
|
|
768
|
+
},
|
|
763
769
|
"retention": {
|
|
764
770
|
"heading": "Screenshot-Aufbewahrung",
|
|
765
771
|
"body": "Wie lange die vom UI-Tester aufgenommenen Screenshots und die Referenz-Designbilder, gegen die sie geprüft werden (das visuelle Bestätigungs-Gate), aufbewahrt werden. Ein täglicher Cleanup-Job löscht sowohl die Bild-Bytes als auch ihre Metadaten, sobald sie älter als dieser Zeitraum sind.",
|
|
@@ -4132,6 +4138,8 @@
|
|
|
4132
4138
|
"env_test_not_a_frame": "Der Umgebungs-Selbsttest läuft pro Service und kann daher nur für einen Service gestartet werden, nicht für ein Modul oder eine Aufgabe.",
|
|
4133
4139
|
"env_test_infraless": "Für diesen Service ist keine Bereitstellung einer kurzlebigen Umgebung konfiguriert, es gibt also nichts, was der Selbsttest prüfen könnte.",
|
|
4134
4140
|
"env_test_not_provisionable": "Dieser Service hat einen Bereitstellungstyp, aber es ist noch kein Workspace-Handler dafür verfügbar, sodass die Bereitstellung nicht laufen kann. Konfiguriere einen Umgebungs-Handler.",
|
|
4141
|
+
"env_test_not_provisionable_no_handler": "Für den Bereitstellungstyp dieses Service ist kein Workspace-Umgebungs-Handler konfiguriert. Registriere in Infrastruktur → Testumgebungen einen — für einen benutzerdefinierten Anbieter einen Custom (remote-custom)-Handler, dessen akzeptierte manifest id mit der übereinstimmt, die dieser Service festlegt.",
|
|
4142
|
+
"env_test_not_provisionable_type_mismatch": "Mehr als ein Umgebungs-Handler könnte auf den Bereitstellungstyp dieses Service passen. Lege für diesen Service eine manifest id fest, sodass genau einer aufgelöst wird, oder entferne den überlappenden Handler in Infrastruktur → Testumgebungen.",
|
|
4135
4143
|
"env_test_no_vcs": "Der Selbsttest benötigt einen Git-Anbieter, um seinen Wegwerf-Branch zu erstellen und zu löschen, aber dieser Workspace ist mit keinem verbunden."
|
|
4136
4144
|
},
|
|
4137
4145
|
"action": {
|
package/i18n/locales/en.json
CHANGED
|
@@ -554,6 +554,8 @@
|
|
|
554
554
|
"env_test_not_a_frame": "The environment self-test runs per service, so it can only be started on a service, not on a module or task.",
|
|
555
555
|
"env_test_infraless": "This service has no ephemeral-environment provisioning configured, so there is nothing for the self-test to exercise.",
|
|
556
556
|
"env_test_not_provisionable": "This service has a provision type, but no workspace handler resolves for it yet, so provisioning can't run. Configure an environment handler.",
|
|
557
|
+
"env_test_not_provisionable_no_handler": "No workspace environment handler is configured for this service's provision type. In Infrastructure → Test environments, register one — for a custom provider, a Custom (remote-custom) handler whose accepted manifest id matches the one this service pins.",
|
|
558
|
+
"env_test_not_provisionable_type_mismatch": "More than one environment handler could match this service's provision type. Pin a manifest id for this service so exactly one resolves, or remove the overlapping handler in Infrastructure → Test environments.",
|
|
557
559
|
"env_test_no_vcs": "The self-test needs a git provider to create and delete its throwaway branch, but this workspace isn't connected to one."
|
|
558
560
|
},
|
|
559
561
|
"action": {
|
|
@@ -2585,6 +2587,7 @@
|
|
|
2585
2587
|
"scopes": {
|
|
2586
2588
|
"read": "Read only",
|
|
2587
2589
|
"write": "Read and write",
|
|
2590
|
+
"decide": "Answer decisions",
|
|
2588
2591
|
"admin": "Full access"
|
|
2589
2592
|
},
|
|
2590
2593
|
"toast": {
|
|
@@ -2795,6 +2798,11 @@
|
|
|
2795
2798
|
"body": "Store the complete context provided to each agent: the composed prompts, the best-practice fragments folded in, and the full content of the files injected into its container, so it can be inspected later in the observability view. The bodies are kept for the same window as the per-call LLM telemetry. Turn off to stop storing it (existing snapshots are pruned by retention).",
|
|
2796
2799
|
"toggle": "Store full agent context"
|
|
2797
2800
|
},
|
|
2801
|
+
"prReport": {
|
|
2802
|
+
"heading": "Pull request verification report",
|
|
2803
|
+
"body": "Maintain a verification report on each run's pull request: the CI verdict, the tester's report, ephemeral-environment lifecycle and the merge assessment, as captured facts rather than the agent's own claims. Credentials are scrubbed before anything is written. Turn off to stop publishing; a report already on a pull request is left as it is.",
|
|
2804
|
+
"toggle": "Publish the verification report on pull requests"
|
|
2805
|
+
},
|
|
2798
2806
|
"retention": {
|
|
2799
2807
|
"heading": "Screenshot retention",
|
|
2800
2808
|
"body": "How long to keep the UI tester's captured screenshots and the reference design images they're reviewed against (the visual-confirmation gate). A daily cleanup job deletes both the image bytes and their metadata once they age past this window.",
|
package/i18n/locales/es.json
CHANGED
|
@@ -512,6 +512,8 @@
|
|
|
512
512
|
"env_test_not_a_frame": "La autoprueba de entorno se ejecuta por servicio, así que solo puede iniciarse en un servicio, no en un módulo o una tarea.",
|
|
513
513
|
"env_test_infraless": "Este servicio no tiene configurado el aprovisionamiento de entornos efímeros, así que no hay nada que la autoprueba pueda comprobar.",
|
|
514
514
|
"env_test_not_provisionable": "Este servicio tiene un tipo de aprovisionamiento, pero aún no hay ningún gestor del espacio de trabajo para él, así que el aprovisionamiento no puede ejecutarse. Configura un gestor de entornos.",
|
|
515
|
+
"env_test_not_provisionable_no_handler": "No hay ningún gestor de entorno del espacio de trabajo configurado para el tipo de aprovisionamiento de este servicio. En Infraestructura → Entornos de prueba, registra uno; para un proveedor personalizado, un gestor Custom (remote-custom) cuyo manifest id aceptado coincida con el que fija este servicio.",
|
|
516
|
+
"env_test_not_provisionable_type_mismatch": "Más de un gestor de entorno podría coincidir con el tipo de aprovisionamiento de este servicio. Fija un manifest id para este servicio de modo que se resuelva exactamente uno, o elimina el gestor superpuesto en Infraestructura → Entornos de prueba.",
|
|
515
517
|
"env_test_no_vcs": "La autoprueba necesita un proveedor de Git para crear y eliminar su rama desechable, pero este espacio de trabajo no está conectado a ninguno."
|
|
516
518
|
},
|
|
517
519
|
"action": {
|
|
@@ -2397,6 +2399,7 @@
|
|
|
2397
2399
|
"scopes": {
|
|
2398
2400
|
"read": "Solo lectura",
|
|
2399
2401
|
"write": "Lectura y escritura",
|
|
2402
|
+
"decide": "Responder decisiones",
|
|
2400
2403
|
"admin": "Acceso completo"
|
|
2401
2404
|
},
|
|
2402
2405
|
"toast": {
|
|
@@ -2607,6 +2610,11 @@
|
|
|
2607
2610
|
"body": "Almacena el contexto completo proporcionado a cada agente: los prompts compuestos, los fragmentos de buenas prácticas incorporados y el contenido íntegro de los archivos inyectados en su contenedor, para poder inspeccionarlo después en la vista de observabilidad. Los cuerpos se conservan durante la misma ventana que la telemetría de LLM por llamada. Desactívalo para dejar de almacenarlo (las instantáneas existentes se eliminan por retención).",
|
|
2608
2611
|
"toggle": "Almacenar el contexto completo del agente"
|
|
2609
2612
|
},
|
|
2613
|
+
"prReport": {
|
|
2614
|
+
"heading": "Informe de verificación en la pull request",
|
|
2615
|
+
"body": "Mantiene un informe de verificación en la pull request de cada ejecución: el veredicto de CI, el informe del probador, el ciclo de vida del entorno efímero y la evaluación de fusión, como hechos registrados y no como afirmaciones del agente. Las credenciales se depuran antes de escribir nada. Desactívalo para dejar de publicarlo; un informe ya presente se deja tal cual.",
|
|
2616
|
+
"toggle": "Publicar el informe de verificación en las pull requests"
|
|
2617
|
+
},
|
|
2610
2618
|
"retention": {
|
|
2611
2619
|
"heading": "Retención de capturas de pantalla",
|
|
2612
2620
|
"body": "Cuánto tiempo conservar las capturas de pantalla del probador de UI y las imágenes de diseño de referencia con las que se comparan (la verificación visual). Un trabajo de limpieza diario elimina tanto los bytes de las imágenes como sus metadatos cuando superan esta ventana.",
|
package/i18n/locales/fr.json
CHANGED
|
@@ -512,6 +512,8 @@
|
|
|
512
512
|
"env_test_not_a_frame": "L'auto-test d'environnement s'exécute par service, il ne peut donc être lancé que sur un service, pas sur un module ou une tâche.",
|
|
513
513
|
"env_test_infraless": "Ce service n'a aucun provisionnement d'environnement éphémère configuré, il n'y a donc rien que l'auto-test puisse exercer.",
|
|
514
514
|
"env_test_not_provisionable": "Ce service a un type de provisionnement, mais aucun gestionnaire de l'espace de travail ne s'y applique encore, le provisionnement ne peut donc pas s'exécuter. Configurez un gestionnaire d'environnement.",
|
|
515
|
+
"env_test_not_provisionable_no_handler": "Aucun gestionnaire d'environnement de l'espace de travail n'est configuré pour le type de provisionnement de ce service. Dans Infrastructure → Environnements de test, enregistrez-en un — pour un fournisseur personnalisé, un gestionnaire Custom (remote-custom) dont le manifest id accepté correspond à celui que ce service épingle.",
|
|
516
|
+
"env_test_not_provisionable_type_mismatch": "Plusieurs gestionnaires d'environnement pourraient correspondre au type de provisionnement de ce service. Épinglez un manifest id pour ce service afin qu'un seul se résolve, ou supprimez le gestionnaire qui se chevauche dans Infrastructure → Environnements de test.",
|
|
515
517
|
"env_test_no_vcs": "L'auto-test a besoin d'un fournisseur Git pour créer et supprimer sa branche jetable, mais cet espace de travail n'est connecté à aucun."
|
|
516
518
|
},
|
|
517
519
|
"action": {
|
|
@@ -2397,6 +2399,7 @@
|
|
|
2397
2399
|
"scopes": {
|
|
2398
2400
|
"read": "Lecture seule",
|
|
2399
2401
|
"write": "Lecture et écriture",
|
|
2402
|
+
"decide": "Répondre aux décisions",
|
|
2400
2403
|
"admin": "Accès complet"
|
|
2401
2404
|
},
|
|
2402
2405
|
"toast": {
|
|
@@ -2607,6 +2610,11 @@
|
|
|
2607
2610
|
"body": "Stockez le contexte complet fourni à chaque agent : les prompts composés, les fragments de bonnes pratiques intégrés et le contenu intégral des fichiers injectés dans son conteneur, afin de pouvoir l'inspecter plus tard dans la vue d'observabilité. Les corps sont conservés pendant la même fenêtre que la télémétrie LLM par appel. Désactivez pour cesser de le stocker (les instantanés existants sont supprimés par la rétention).",
|
|
2608
2611
|
"toggle": "Stocker le contexte complet de l'agent"
|
|
2609
2612
|
},
|
|
2613
|
+
"prReport": {
|
|
2614
|
+
"heading": "Rapport de vérification sur la pull request",
|
|
2615
|
+
"body": "Maintient un rapport de vérification sur la pull request de chaque exécution : le verdict de CI, le rapport du testeur, le cycle de vie de l'environnement éphémère et l'évaluation de fusion, sous forme de faits constatés plutôt que d'affirmations de l'agent. Les identifiants sont expurgés avant toute écriture. Désactivez pour cesser de le publier ; un rapport déjà présent reste inchangé.",
|
|
2616
|
+
"toggle": "Publier le rapport de vérification sur les pull requests"
|
|
2617
|
+
},
|
|
2610
2618
|
"retention": {
|
|
2611
2619
|
"heading": "Rétention des captures d'écran",
|
|
2612
2620
|
"body": "Combien de temps conserver les captures d'écran du testeur d'UI et les images de conception de référence auxquelles elles sont comparées (la vérification visuelle). Un nettoyage quotidien supprime à la fois les octets des images et leurs métadonnées une fois qu'ils dépassent cette fenêtre.",
|
package/i18n/locales/he.json
CHANGED
|
@@ -512,6 +512,8 @@
|
|
|
512
512
|
"env_test_not_a_frame": "הבדיקה העצמית של הסביבה רצה לכל שירות בנפרד, ולכן ניתן להתחיל אותה רק על שירות, לא על מודול או משימה.",
|
|
513
513
|
"env_test_infraless": "לשירות זה לא מוגדרת הקצאת סביבה זמנית, ולכן אין מה שהבדיקה העצמית תבדוק.",
|
|
514
514
|
"env_test_not_provisionable": "לשירות זה יש סוג הקצאה, אך עדיין אין עבורו מטפל בסביבת העבודה, ולכן ההקצאה אינה יכולה לרוץ. הגדר מטפל סביבה.",
|
|
515
|
+
"env_test_not_provisionable_no_handler": "לא מוגדר מטפל סביבה של סביבת העבודה עבור סוג ההקצאה של שירות זה. בתשתית → סביבות בדיקה, רשום אחד — עבור ספק מותאם אישית, מטפל Custom (remote-custom) שה-manifest id המקובל שלו תואם לזה ששירות זה מקבע.",
|
|
516
|
+
"env_test_not_provisionable_type_mismatch": "יותר ממטפל סביבה אחד יכול להתאים לסוג ההקצאה של שירות זה. קבע manifest id עבור שירות זה כך שרק אחד ייפתר, או הסר את המטפל החופף בתשתית → סביבות בדיקה.",
|
|
515
517
|
"env_test_no_vcs": "הבדיקה העצמית זקוקה לספק Git כדי ליצור ולמחוק את הענף החד-פעמי שלה, אך סביבת עבודה זו אינה מחוברת לאף אחד."
|
|
516
518
|
},
|
|
517
519
|
"action": {
|
|
@@ -2518,6 +2520,7 @@
|
|
|
2518
2520
|
"scopes": {
|
|
2519
2521
|
"read": "קריאה בלבד",
|
|
2520
2522
|
"write": "קריאה וכתיבה",
|
|
2523
|
+
"decide": "מענה להחלטות",
|
|
2521
2524
|
"admin": "גישה מלאה"
|
|
2522
2525
|
},
|
|
2523
2526
|
"toast": {
|
|
@@ -2728,6 +2731,11 @@
|
|
|
2728
2731
|
"body": "אחסן את ההקשר המלא שניתן לכל סוכן: ההנחיות המורכבות, מקטעי שיטות העבודה המומלצות שמשולבים, והתוכן המלא של הקבצים שמוזרקים לקונטיינר שלו, כך שניתן יהיה לבדוק אותו מאוחר יותר בתצוגת התצפיתיות. הגופים נשמרים לאותו חלון כמו טלמטריית ה-LLM לכל קריאה. כבה כדי להפסיק לאחסן אותו (תצלומים קיימים נגזמים לפי תקופת השמירה).",
|
|
2729
2732
|
"toggle": "אחסן הקשר סוכן מלא"
|
|
2730
2733
|
},
|
|
2734
|
+
"prReport": {
|
|
2735
|
+
"heading": "דוח אימות בבקשת המשיכה",
|
|
2736
|
+
"body": "שמירת דוח אימות בבקשת המשיכה של כל הרצה: תוצאת ה-CI, דוח הבודק, מחזור החיים של הסביבה הזמנית והערכת המיזוג — כעובדות שנאספו ולא כטענות של הסוכן. פרטי גישה מנוקים לפני כל כתיבה. כבו כדי להפסיק לפרסם; דוח שכבר קיים נשאר כפי שהוא.",
|
|
2737
|
+
"toggle": "פרסום דוח האימות בבקשות משיכה"
|
|
2738
|
+
},
|
|
2731
2739
|
"retention": {
|
|
2732
2740
|
"heading": "שמירת צילומי מסך",
|
|
2733
2741
|
"body": "כמה זמן לשמור את צילומי המסך שצולמו על ידי בודק הממשק ואת תמונות העיצוב המקוריות שמולן הם נסקרים (שער האישור החזותי). משימת ניקוי יומית מוחקת גם את בתי התמונה וגם את המטא-נתונים שלהם ברגע שהם מתיישנים מעבר לחלון זה.",
|
package/i18n/locales/it.json
CHANGED
|
@@ -550,6 +550,7 @@
|
|
|
550
550
|
"scopes": {
|
|
551
551
|
"read": "Sola lettura",
|
|
552
552
|
"write": "Lettura e scrittura",
|
|
553
|
+
"decide": "Rispondere alle decisioni",
|
|
553
554
|
"admin": "Accesso completo"
|
|
554
555
|
},
|
|
555
556
|
"toast": {
|
|
@@ -760,6 +761,11 @@
|
|
|
760
761
|
"body": "Memorizza il contesto completo fornito a ogni agente: i prompt composti, i frammenti di best practice inclusi e il contenuto completo dei file iniettati nel suo container, cosicche possa essere ispezionato in seguito nella vista di osservabilita. I corpi vengono conservati per la stessa finestra della telemetria LLM per chiamata. Disattiva per interrompere la memorizzazione (gli snapshot esistenti vengono eliminati dalla retention).",
|
|
761
762
|
"toggle": "Memorizza il contesto completo dell'agente"
|
|
762
763
|
},
|
|
764
|
+
"prReport": {
|
|
765
|
+
"heading": "Rapporto di verifica sulla pull request",
|
|
766
|
+
"body": "Mantiene un rapporto di verifica sulla pull request di ogni esecuzione: il verdetto della CI, il rapporto del tester, il ciclo di vita dell'ambiente effimero e la valutazione di merge, come fatti rilevati e non come affermazioni dell'agente. Le credenziali vengono ripulite prima di ogni scrittura. Disattiva per smettere di pubblicarlo; un rapporto già presente resta invariato.",
|
|
767
|
+
"toggle": "Pubblica il rapporto di verifica sulle pull request"
|
|
768
|
+
},
|
|
763
769
|
"retention": {
|
|
764
770
|
"heading": "Retention degli screenshot",
|
|
765
771
|
"body": "Per quanto tempo conservare gli screenshot catturati dal tester UI e le immagini di design di riferimento con cui vengono confrontati (il gate di conferma visiva). Un job di pulizia giornaliero elimina sia i byte delle immagini sia i loro metadati una volta superata questa finestra.",
|
|
@@ -4132,6 +4138,8 @@
|
|
|
4132
4138
|
"env_test_not_a_frame": "L'autotest dell'ambiente viene eseguito per servizio, quindi può essere avviato solo su un servizio, non su un modulo o un'attività.",
|
|
4133
4139
|
"env_test_infraless": "Questo servizio non ha alcun provisioning di ambiente effimero configurato, quindi non c'è nulla che l'autotest possa verificare.",
|
|
4134
4140
|
"env_test_not_provisionable": "Questo servizio ha un tipo di provisioning, ma non è ancora disponibile alcun handler del workspace, quindi il provisioning non può essere eseguito. Configura un handler dell'ambiente.",
|
|
4141
|
+
"env_test_not_provisionable_no_handler": "Nessun handler dell'ambiente del workspace è configurato per il tipo di provisioning di questo servizio. In Infrastruttura → Ambienti di test, registrane uno — per un provider personalizzato, un handler Custom (remote-custom) il cui manifest id accettato corrisponde a quello che questo servizio fissa.",
|
|
4142
|
+
"env_test_not_provisionable_type_mismatch": "Più di un handler dell'ambiente potrebbe corrispondere al tipo di provisioning di questo servizio. Fissa un manifest id per questo servizio in modo che se ne risolva esattamente uno, oppure rimuovi l'handler sovrapposto in Infrastruttura → Ambienti di test.",
|
|
4135
4143
|
"env_test_no_vcs": "L'autotest ha bisogno di un provider Git per creare ed eliminare il suo branch usa e getta, ma questo workspace non è collegato a nessuno."
|
|
4136
4144
|
},
|
|
4137
4145
|
"action": {
|
package/i18n/locales/ja.json
CHANGED
|
@@ -512,6 +512,8 @@
|
|
|
512
512
|
"env_test_not_a_frame": "環境のセルフテストはサービスごとに実行されるため、モジュールやタスクではなくサービスでのみ開始できます。",
|
|
513
513
|
"env_test_infraless": "このサービスには一時環境のプロビジョニングが設定されていないため、セルフテストで検証するものがありません。",
|
|
514
514
|
"env_test_not_provisionable": "このサービスにはプロビジョニングタイプがありますが、対応するワークスペースハンドラーがまだ解決されないため、プロビジョニングを実行できません。環境ハンドラーを設定してください。",
|
|
515
|
+
"env_test_not_provisionable_no_handler": "このサービスのプロビジョニングタイプに対して、ワークスペースの環境ハンドラーが設定されていません。インフラストラクチャ → テスト環境 で 1 つ登録してください。カスタムプロバイダーの場合は、受け入れる manifest id がこのサービスが固定するものと一致する Custom (remote-custom) ハンドラーを登録します。",
|
|
516
|
+
"env_test_not_provisionable_type_mismatch": "複数の環境ハンドラーがこのサービスのプロビジョニングタイプに一致する可能性があります。ちょうど 1 つだけが解決されるように、このサービスに manifest id を固定するか、インフラストラクチャ → テスト環境 で重複するハンドラーを削除してください。",
|
|
515
517
|
"env_test_no_vcs": "セルフテストは使い捨てブランチの作成と削除のために Git プロバイダーを必要としますが、このワークスペースはいずれにも接続されていません。"
|
|
516
518
|
},
|
|
517
519
|
"action": {
|
|
@@ -2519,6 +2521,7 @@
|
|
|
2519
2521
|
"scopes": {
|
|
2520
2522
|
"read": "読み取り専用",
|
|
2521
2523
|
"write": "読み取りと書き込み",
|
|
2524
|
+
"decide": "判断への回答",
|
|
2522
2525
|
"admin": "フルアクセス"
|
|
2523
2526
|
},
|
|
2524
2527
|
"toast": {
|
|
@@ -2729,6 +2732,11 @@
|
|
|
2729
2732
|
"body": "各エージェントに提供された完全なコンテキストを保存します。構成されたプロンプト、折り込まれたベストプラクティスのフラグメント、コンテナに注入されたファイルの全内容を保存し、後から可観測性ビューで確認できます。本文は呼び出しごとの LLM テレメトリと同じ期間だけ保持されます。オフにすると保存を停止します (既存のスナップショットは保持期限により削除されます)。",
|
|
2730
2733
|
"toggle": "エージェントの完全なコンテキストを保存"
|
|
2731
2734
|
},
|
|
2735
|
+
"prReport": {
|
|
2736
|
+
"heading": "プルリクエストの検証レポート",
|
|
2737
|
+
"body": "各実行のプルリクエストに検証レポートを維持します。CI の判定、テスターのレポート、一時環境のライフサイクル、マージ評価を、エージェント自身の主張ではなく記録された事実として掲載します。書き込み前に認証情報は削除されます。オフにすると公開を停止します。すでに掲載されているレポートはそのまま残ります。",
|
|
2738
|
+
"toggle": "プルリクエストに検証レポートを公開する"
|
|
2739
|
+
},
|
|
2732
2740
|
"retention": {
|
|
2733
2741
|
"heading": "スクリーンショットの保持",
|
|
2734
2742
|
"body": "UI テスターがキャプチャしたスクリーンショットと、それらの照合に使われる参照デザイン画像 (視覚的確認ゲート) を保持する期間です。日次のクリーンアップジョブが、この期間を過ぎた画像データとそのメタデータの両方を削除します。",
|
package/i18n/locales/pl.json
CHANGED
|
@@ -512,6 +512,8 @@
|
|
|
512
512
|
"env_test_not_a_frame": "Autotest środowiska działa dla poszczególnych usług, więc można go uruchomić tylko dla usługi, a nie dla modułu czy zadania.",
|
|
513
513
|
"env_test_infraless": "Ta usługa nie ma skonfigurowanego udostępniania środowisk tymczasowych, więc autotest nie ma czego sprawdzić.",
|
|
514
514
|
"env_test_not_provisionable": "Ta usługa ma typ udostępniania, ale nie ma jeszcze dla niego żadnego mechanizmu obsługi w przestrzeni roboczej, więc udostępnianie nie może zostać uruchomione. Skonfiguruj mechanizm obsługi środowiska.",
|
|
515
|
+
"env_test_not_provisionable_no_handler": "Dla typu udostępniania tej usługi nie skonfigurowano żadnego mechanizmu obsługi środowiska w przestrzeni roboczej. W sekcji Infrastruktura → Środowiska testowe zarejestruj jeden — dla dostawcy niestandardowego mechanizm obsługi Custom (remote-custom), którego akceptowany manifest id odpowiada temu, który przypina ta usługa.",
|
|
516
|
+
"env_test_not_provisionable_type_mismatch": "Do typu udostępniania tej usługi może pasować więcej niż jeden mechanizm obsługi środowiska. Przypnij manifest id do tej usługi, aby rozwiązywany był dokładnie jeden, albo usuń nakładający się mechanizm obsługi w sekcji Infrastruktura → Środowiska testowe.",
|
|
515
517
|
"env_test_no_vcs": "Autotest potrzebuje dostawcy Git, aby utworzyć i usunąć swoją jednorazową gałąź, ale ta przestrzeń robocza nie jest połączona z żadnym."
|
|
516
518
|
},
|
|
517
519
|
"action": {
|
|
@@ -2397,6 +2399,7 @@
|
|
|
2397
2399
|
"scopes": {
|
|
2398
2400
|
"read": "Tylko odczyt",
|
|
2399
2401
|
"write": "Odczyt i zapis",
|
|
2402
|
+
"decide": "Odpowiadanie na decyzje",
|
|
2400
2403
|
"admin": "Pełny dostęp"
|
|
2401
2404
|
},
|
|
2402
2405
|
"toast": {
|
|
@@ -2607,6 +2610,11 @@
|
|
|
2607
2610
|
"body": "Przechowuj pełny kontekst przekazany każdemu agentowi: złożone prompty, włączone fragmenty dobrych praktyk oraz pełną treść plików wstrzykniętych do jego kontenera, aby można było je później sprawdzić w widoku obserwowalności. Treści są przechowywane przez to samo okno co telemetria LLM dla poszczególnych wywołań. Wyłącz, aby przestać je przechowywać (istniejące migawki są usuwane przez retencję).",
|
|
2608
2611
|
"toggle": "Przechowuj pełny kontekst agenta"
|
|
2609
2612
|
},
|
|
2613
|
+
"prReport": {
|
|
2614
|
+
"heading": "Raport weryfikacyjny w pull requeście",
|
|
2615
|
+
"body": "Utrzymuje raport weryfikacyjny w pull requeście każdego przebiegu: werdykt CI, raport testera, cykl życia środowiska tymczasowego i ocenę scalenia — jako zarejestrowane fakty, a nie deklaracje agenta. Poświadczenia są usuwane przed zapisem. Wyłącz, aby przestać publikować; raport już obecny pozostaje bez zmian.",
|
|
2616
|
+
"toggle": "Publikuj raport weryfikacyjny w pull requestach"
|
|
2617
|
+
},
|
|
2610
2618
|
"retention": {
|
|
2611
2619
|
"heading": "Retencja zrzutów ekranu",
|
|
2612
2620
|
"body": "Jak długo przechowywać zrzuty ekranu z testera UI oraz referencyjne obrazy projektowe, z którymi są porównywane (weryfikacja wizualna). Codzienne zadanie czyszczące usuwa zarówno bajty obrazów, jak i ich metadane, gdy przekroczą to okno.",
|
package/i18n/locales/tr.json
CHANGED
|
@@ -512,6 +512,8 @@
|
|
|
512
512
|
"env_test_not_a_frame": "Ortam öz testi hizmet başına çalışır, bu yüzden yalnızca bir hizmette başlatılabilir; bir modülde veya görevde değil.",
|
|
513
513
|
"env_test_infraless": "Bu hizmet için yapılandırılmış geçici ortam sağlama yok, bu yüzden öz testin sınayacağı bir şey yok.",
|
|
514
514
|
"env_test_not_provisionable": "Bu hizmetin bir sağlama türü var ancak henüz onun için çözümlenen bir çalışma alanı işleyicisi yok, bu yüzden sağlama çalışamaz. Bir ortam işleyicisi yapılandır.",
|
|
515
|
+
"env_test_not_provisionable_no_handler": "Bu hizmetin sağlama türü için yapılandırılmış bir çalışma alanı ortam işleyicisi yok. Altyapı → Test ortamları bölümünde bir tane kaydet — özel bir sağlayıcı için, kabul ettiği manifest id bu hizmetin sabitlediğiyle eşleşen bir Custom (remote-custom) işleyicisi.",
|
|
516
|
+
"env_test_not_provisionable_type_mismatch": "Birden fazla ortam işleyicisi bu hizmetin sağlama türüyle eşleşebilir. Tam olarak biri çözümlensin diye bu hizmet için bir manifest id sabitle ya da Altyapı → Test ortamları bölümündeki çakışan işleyiciyi kaldır.",
|
|
515
517
|
"env_test_no_vcs": "Öz test, tek kullanımlık dalını oluşturup silmek için bir Git sağlayıcısına ihtiyaç duyar ancak bu çalışma alanı hiçbirine bağlı değil."
|
|
516
518
|
},
|
|
517
519
|
"action": {
|
|
@@ -2519,6 +2521,7 @@
|
|
|
2519
2521
|
"scopes": {
|
|
2520
2522
|
"read": "Yalnızca okuma",
|
|
2521
2523
|
"write": "Okuma ve yazma",
|
|
2524
|
+
"decide": "Kararları yanıtlama",
|
|
2522
2525
|
"admin": "Tam erişim"
|
|
2523
2526
|
},
|
|
2524
2527
|
"toast": {
|
|
@@ -2729,6 +2732,11 @@
|
|
|
2729
2732
|
"body": "Her agent'a sağlanan tüm bağlamı saklayın: oluşturulan istemler, içine katlanan en iyi uygulama parçaları ve konteynerine enjekte edilen dosyaların tam içeriği; böylece daha sonra gözlemlenebilirlik görünümünde incelenebilir. Gövdeler, çağrı başına LLM telemetrisi ile aynı süre boyunca tutulur. Saklamayı durdurmak için kapatın (mevcut anlık görüntüler saklama ilkesiyle temizlenir).",
|
|
2730
2733
|
"toggle": "Tüm agent bağlamını sakla"
|
|
2731
2734
|
},
|
|
2735
|
+
"prReport": {
|
|
2736
|
+
"heading": "Pull request doğrulama raporu",
|
|
2737
|
+
"body": "Her çalıştırmanın pull request'inde bir doğrulama raporu tutar: CI sonucu, test edicinin raporu, geçici ortamın yaşam döngüsü ve birleştirme değerlendirmesi — ajanın kendi iddiaları yerine kaydedilmiş gerçekler olarak. Kimlik bilgileri yazılmadan önce temizlenir. Yayımlamayı durdurmak için kapatın; hâlihazırda yayımlanmış bir rapor olduğu gibi bırakılır.",
|
|
2738
|
+
"toggle": "Doğrulama raporunu pull request'lerde yayımla"
|
|
2739
|
+
},
|
|
2732
2740
|
"retention": {
|
|
2733
2741
|
"heading": "Ekran görüntüsü saklama",
|
|
2734
2742
|
"body": "Arayüz test aracının yakaladığı ekran görüntülerinin ve bunların karşılaştırıldığı referans tasarım görsellerinin (görsel doğrulama geçidi) ne kadar süre tutulacağı. Günlük bir temizleme işi, hem görsel baytlarını hem de meta verilerini bu süreyi aştıklarında siler.",
|
package/i18n/locales/uk.json
CHANGED
|
@@ -512,6 +512,8 @@
|
|
|
512
512
|
"env_test_not_a_frame": "Самоперевірка середовища виконується для кожної служби, тож її можна запустити лише для служби, а не для модуля чи завдання.",
|
|
513
513
|
"env_test_infraless": "Для цієї служби не налаштовано надання тимчасового середовища, тож самоперевірці нічого перевіряти.",
|
|
514
514
|
"env_test_not_provisionable": "Ця служба має тип надання, але для нього ще немає обробника робочого простору, тож надання не може виконатися. Налаштуй обробник середовища.",
|
|
515
|
+
"env_test_not_provisionable_no_handler": "Для типу надання цієї служби не налаштовано жодного обробника середовища робочого простору. У розділі Інфраструктура → Тестові середовища зареєструй один — для власного постачальника обробник Custom (remote-custom), чий прийнятний manifest id збігається з тим, який закріплює ця служба.",
|
|
516
|
+
"env_test_not_provisionable_type_mismatch": "Типу надання цієї служби може відповідати більше ніж один обробник середовища. Закріпи manifest id для цієї служби, щоб розв'язувався рівно один, або вилучи обробник, що перекривається, у розділі Інфраструктура → Тестові середовища.",
|
|
515
517
|
"env_test_no_vcs": "Самоперевірці потрібен постачальник Git, щоб створити та видалити свою тимчасову гілку, але цей робочий простір не під'єднано до жодного."
|
|
516
518
|
},
|
|
517
519
|
"action": {
|
|
@@ -2397,6 +2399,7 @@
|
|
|
2397
2399
|
"scopes": {
|
|
2398
2400
|
"read": "Лише читання",
|
|
2399
2401
|
"write": "Читання та запис",
|
|
2402
|
+
"decide": "Відповіді на рішення",
|
|
2400
2403
|
"admin": "Повний доступ"
|
|
2401
2404
|
},
|
|
2402
2405
|
"toast": {
|
|
@@ -2607,6 +2610,11 @@
|
|
|
2607
2610
|
"body": "Зберігайте повний контекст, наданий кожному агенту: складені промпти, вбудовані фрагменти найкращих практик і повний вміст файлів, впроваджених у його контейнер, щоб згодом їх можна було переглянути у вікні спостережуваності. Тіла зберігаються протягом того самого вікна, що й телеметрія LLM для кожного виклику. Вимкніть, щоб припинити зберігання (наявні знімки видаляються за політикою зберігання).",
|
|
2608
2611
|
"toggle": "Зберігати повний контекст агента"
|
|
2609
2612
|
},
|
|
2613
|
+
"prReport": {
|
|
2614
|
+
"heading": "Звіт про перевірку в пул-реквесті",
|
|
2615
|
+
"body": "Підтримує звіт про перевірку в пул-реквесті кожного запуску: вердикт CI, звіт тестувальника, життєвий цикл тимчасового середовища та оцінку злиття — як зафіксовані факти, а не твердження агента. Облікові дані вилучаються перед будь-яким записом. Вимкніть, щоб припинити публікацію; вже наявний звіт залишається без змін.",
|
|
2616
|
+
"toggle": "Публікувати звіт про перевірку в пул-реквестах"
|
|
2617
|
+
},
|
|
2610
2618
|
"retention": {
|
|
2611
2619
|
"heading": "Зберігання знімків екрана",
|
|
2612
2620
|
"body": "Як довго зберігати знімки екрана від тестувальника UI та еталонні дизайнерські зображення, з якими їх порівнюють (візуальна перевірка). Щоденне завдання очищення видаляє як байти зображень, так і їхні метадані, щойно вони виходять за межі цього вікна.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.154.1",
|
|
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",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"valibot": "^1.4.2",
|
|
41
41
|
"vue": "3.5.40",
|
|
42
42
|
"wretch": "^3.0.9",
|
|
43
|
-
"@cat-factory/contracts": "0.
|
|
43
|
+
"@cat-factory/contracts": "0.163.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@toad-contracts/testing": "0.3.2",
|